diff --git a/.editorconfig b/.editorconfig index 6934e6b8e1..4aeb5fc8c2 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,3 +16,7 @@ indent_size = 2 [*.toml] indent_style = tab indent_size = 4 + +[*.html] +indent_style = tab +indent_size = 4 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0e859565b5..0a8ad5a3fb 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -41,9 +41,14 @@ docs/issue_template.md @endlessm/community scenes/quests/template_quests/ @endlessm/games @endlessm/learning # StoryQuest maintainers -scenes/quests/story_quests/stella @endlessm/games @endlessm/learning +scenes/quests/story_quests/stella @endlessm/games @endlessm/learning -scenes/quests/story_quests/champ @endlessm/games @endlessm/verso -scenes/quests/story_quests/el_juguete_perdido @endlessm/games @endlessm/el-juguete-perdido -scenes/quests/story_quests/shjourney @endlessm/games @endlessm/suenos-nocturnos -scenes/quests/story_quests/verso @endlessm/games @endlessm/verso +scenes/quests/story_quests/after_the_tremor @endlessm/games @endlessm/after-the-tremor +scenes/quests/story_quests/champ @endlessm/games @endlessm/verso +scenes/quests/story_quests/el_abrigo @endlessm/games @endlessm/el-abrigo +scenes/quests/story_quests/el_juguete_perdido @endlessm/games @endlessm/el-juguete-perdido +scenes/quests/story_quests/el_ojo_revelador @endlessm/games @endlessm/el-ojo-revelador +scenes/quests/story_quests/eldrune @endlessm/games @endlessm/eldrune +scenes/quests/story_quests/renya_beyond_sorrow @endlessm/games @endlessm/renya-beyond-sorrow +scenes/quests/story_quests/shjourney @endlessm/games @endlessm/suenos-nocturnos +scenes/quests/story_quests/verso @endlessm/games @endlessm/verso diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 90202bef89..88ca056a93 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -10,6 +10,31 @@ body: Thanks for taking the time to file an issue! **Please provide as much detail as you can** so we can properly confirm, triage, and fix your bug. + - type: input + id: version + attributes: + label: Threadbare version + placeholder: e.g. v0.1.11 + description: > + This is shown on the title screen. If you're not sure, leave it blank. + validations: + required: false + + - type: input + id: scene + attributes: + label: Affected scene + placeholder: e.g. Fray's End, quests/lore_quests/quest_002/3_void_grappling/void_grappling_round_2.tscn + description: > + Give an example of a scene in the game where you see this problem. If + you're not sure, describe the scene visually, or leave this blank. + + If you report a problem from within the game, this will have been filled + automatically with the current scene. You can change this if you are + reporting a problem you saw in a different scene. + validations: + required: false + - type: textarea id: about attributes: diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index a8e53a9dca..8e38489094 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -28,7 +28,7 @@ jobs: steps: - uses: actions/checkout@v6 - name: Install the latest version of uv - uses: astral-sh/setup-uv@v7 + uses: astral-sh/setup-uv@v8.1.0 with: cache-dependency-glob: ".github/workflows/checks.yaml" - name: Check REUSE compliance diff --git a/.github/workflows/export.yml b/.github/workflows/export.yml index 9c60e97392..7ba780a7d3 100644 --- a/.github/workflows/export.yml +++ b/.github/workflows/export.yml @@ -56,7 +56,7 @@ jobs: run: git lfs checkout - id: changes - uses: dorny/paths-filter@v3 + uses: dorny/paths-filter@v4 with: filters: | linux: @@ -66,27 +66,19 @@ jobs: - name: Export web build uses: endlessm/godot-export-action@v1 with: - godot_version: "4.6.1" + godot_version: "4.6.2" - # PCK files are the same across export presets/platforms; prep the one - # just exported for web to be used separately, i.e. for Flatpak builds - - name: Copy PCK file + - name: Check GDScript diagnostics run: | - cd build - cp web/index.pck '${{ env.PCK_NAME }}.pck' + python tools/check-gdscript-lsp-diagnostics.py --godot build/godot || \ + echo "::warning::GDScript diagnostics check failed (exit code $?)" - name: Upload web artifact - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: web path: build/web - - name: Upload PCK artifact - uses: actions/upload-artifact@v6 - with: - name: pck - path: build/${{ env.PCK_NAME }}.pck - flatpak: name: Build Flatpak needs: build @@ -103,12 +95,16 @@ jobs: linux - name: Download Artifact - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} - name: pck + name: web path: build + - name: Rename pck file + run: | + mv build/index.pck build/threadbare.pck + - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: threadbare.flatpak @@ -124,65 +120,47 @@ jobs: linux/* - name: Upload Linux metadata bundle - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: - name: threadbare-linux-metadata path: threadbare-linux-metadata.tar.gz + archive: false release: name: Attach to release needs: [build, flatpak] if: ${{ github.event_name == 'release' }} runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ github.token }} steps: - - name: Download PCK - uses: actions/download-artifact@v7 + - name: Download web bundle + uses: actions/download-artifact@v8 with: - name: pck - - - name: Attach PCK - env: - GITHUB_TOKEN: ${{ github.token }} - run: | - mv '${{ env.PCK_NAME }}.pck' '${{ env.PCK_NAME }}-${{ github.ref_name }}.pck' - gh release upload '${{ github.ref_name }}' '${{ env.PCK_NAME }}-${{ github.ref_name }}.pck' --repo '${{ github.repository }}' + name: web + skip-decompress: true - name: Download Flatpak bundle - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: name: threadbare-x86_64.flatpak - - name: Attach Flatpak bundle to release - env: - GITHUB_TOKEN: ${{ github.token }} - run: | - mv threadbare.flatpak 'threadbare-${{ github.ref_name }}-x86_64.flatpak' - gh release upload '${{ github.ref_name }}' 'threadbare-${{ github.ref_name }}-x86_64.flatpak' --repo '${{ github.repository }}' - - - name: Download web bundle - uses: actions/download-artifact@v7 + - name: Download Linux metadata bundle + uses: actions/download-artifact@v8 with: - name: web - path: web + name: threadbare-linux-metadata.tar.gz - - name: Attach web bundle to release - env: - GITHUB_TOKEN: ${{ github.token }} + - name: Attach assets to release + shell: bash run: | - pushd web - zip -r "../threadbare-${{ github.ref_name }}-web.zip" . - popd - - gh release upload '${{ github.ref_name }}' 'threadbare-${{ github.ref_name }}-web.zip' --repo '${{ github.repository }}' + set -ex + unzip web.zip index.pck + mv index.pck 'threadbare-${{ github.ref_name }}.pck' - - name: Download Linux metadata bundle - uses: actions/download-artifact@v7 - with: - name: threadbare-linux-metadata + mv web.zip 'threadbare-${{ github.ref_name }}-web.zip' - - name: Attach Linux metadata bundle to release - env: - GITHUB_TOKEN: ${{ github.token }} - run: | + mv threadbare.flatpak 'threadbare-${{ github.ref_name }}-x86_64.flatpak' mv threadbare-linux-metadata.tar.gz 'threadbare-${{ github.ref_name }}-linux-metadata.tar.gz' - gh release upload '${{ github.ref_name }}' 'threadbare-${{ github.ref_name }}-linux-metadata.tar.gz' --repo '${{ github.repository }}' + + for file in threadbare-${{ github.ref_name }}*; do + gh release upload '${{ github.ref_name }}' "$file" --repo '${{ github.repository }}' + done diff --git a/.gitignore b/.gitignore index 1927da248b..86f94c6f7a 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,11 @@ __MACOSX # LibreOffice lock files, created while editing credits CSV files .~lock.*# + +# Godot Backstitch addon, bundled editor build, and config/state files, from +# https://github.com/inkandswitch/backstitch-launcher/blob/main/.gitignore.template +/addons/backstitch/ +/godot_editor/ +.backstitch_version +/.backstitch/ +backstitch.cfg diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 56537673f2..ddb210f50f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -40,7 +40,7 @@ repos: ) - repo: https://github.com/Scony/godot-gdscript-toolkit - rev: 4.3.4 + rev: 4.5.0 hooks: - id: gdformat exclude: | diff --git a/addons/dialogue_manager/DialogueManager.cs b/addons/dialogue_manager/DialogueManager.cs index 04e2944016..6de965712c 100644 --- a/addons/dialogue_manager/DialogueManager.cs +++ b/addons/dialogue_manager/DialogueManager.cs @@ -9,6 +9,14 @@ namespace DialogueManagerRuntime { + + public enum MutationBehaviour + { + Wait, + DoNotWait, + Skip + } + public enum TranslationSource { None, @@ -33,6 +41,8 @@ public partial class DialogueManager : RefCounted [Signal] public delegate void ResolvedEventHandler(Variant value); + private static Random random = new Random(); + private static GodotObject? instance; public static GodotObject Instance { @@ -41,7 +51,11 @@ public static GodotObject Instance if (instance == null) { instance = Engine.GetSingleton("DialogueManager"); - instance.Connect("bridge_dialogue_started", Callable.From((Resource dialogueResource) => DialogueStarted?.Invoke(dialogueResource))); + instance.Connect("dialogue_started", Callable.From((Resource dialogueResource) => DialogueStarted?.Invoke(dialogueResource))); + instance.Connect("passed_title", Callable.From((string title) => PassedTitle?.Invoke(title))); + instance.Connect("got_dialogue", Callable.From((RefCounted line) => GotDialogue?.Invoke(new DialogueLine(line)))); + instance.Connect("mutated", Callable.From((Dictionary mutation) => Mutated?.Invoke(mutation))); + instance.Connect("dialogue_ended", Callable.From((Resource dialogueResource) => DialogueEnded?.Invoke(dialogueResource))); } return instance; } @@ -81,56 +95,37 @@ public static Func GetCurrentScene set => Instance.Set("get_current_scene", Callable.From(value)); } - - public static void Prepare(GodotObject instance) + public static Resource CreateResourceFromText(string text) { - instance.Connect("passed_title", Callable.From((string title) => PassedTitle?.Invoke(title))); - instance.Connect("got_dialogue", Callable.From((RefCounted line) => GotDialogue?.Invoke(new DialogueLine(line)))); - instance.Connect("mutated", Callable.From((Dictionary mutation) => Mutated?.Invoke(mutation))); - instance.Connect("dialogue_ended", Callable.From((Resource dialogueResource) => DialogueEnded?.Invoke(dialogueResource))); + return (Resource)Instance.Call("create_resource_from_text", text); } - - public static async Task GetSingleton() + public static async Task GetNextDialogueLine(Resource dialogueResource, string key = "", Array? extraGameStates = null, MutationBehaviour mutation_behaviour = MutationBehaviour.Wait) { - if (instance != null) return instance; - - var tree = Engine.GetMainLoop(); - int x = 0; - - // Try and find the singleton for a few seconds - while (!Engine.HasSingleton("DialogueManager") && x < 300) + int id = random.Next(); + Instance.Call("_bridge_get_next_dialogue_line", id, dialogueResource, key, extraGameStates ?? new Array(), (int)mutation_behaviour); + while (true) { - await tree.ToSignal(tree, SceneTree.SignalName.ProcessFrame); - x++; - } - - // If it times out something is wrong - if (x >= 300) - { - throw new Exception("The DialogueManager singleton is missing."); + var result = await Instance.ToSignal(Instance, "bridge_get_next_dialogue_line_completed"); + if ((int)result[0] == id) + { + return ((RefCounted)result[1] == null) ? null : new DialogueLine((RefCounted)result[1]); + } } - - instance = Engine.GetSingleton("DialogueManager"); - return instance; - } - - public static Resource CreateResourceFromText(string text) - { - return (Resource)Instance.Call("create_resource_from_text", text); } - public static async Task GetNextDialogueLine(Resource dialogueResource, string key = "", Array? extraGameStates = null) + public static async Task GetLine(Resource dialogueResource, string key = "", Array? extraGameStates = null) { - var instance = (Node)Instance.Call("_bridge_get_new_instance"); - Prepare(instance); - instance.Call("_bridge_get_next_dialogue_line", dialogueResource, key, extraGameStates ?? new Array()); - var result = await instance.ToSignal(instance, "bridge_get_next_dialogue_line_completed"); - instance.QueueFree(); - - if ((RefCounted)result[0] == null) return null; - - return new DialogueLine((RefCounted)result[0]); + int id = random.Next(); + Instance.Call("_bridge_get_line", id, dialogueResource, key, extraGameStates ?? new Array()); + while (true) + { + var result = await Instance.ToSignal(Instance, "bridge_get_line_completed"); + if ((int)result[0] == id) + { + return ((RefCounted)result[0] == null) ? null : new DialogueLine((RefCounted)result[0]); + } + } } @@ -176,12 +171,20 @@ public static string StaticIdToLineId(Resource dialogueResource, string staticId public static async void Mutate(Dictionary mutation, Array? extraGameStates = null, bool isInlineMutation = false) { - Instance.Call("_bridge_mutate", mutation, extraGameStates ?? new Array(), isInlineMutation); - await Instance.ToSignal(Instance, "bridge_mutated"); + int id = random.Next(); + Instance.Call("_bridge_mutate", id, mutation, extraGameStates ?? new Array(), isInlineMutation); + while (true) + { + var result = await Instance.ToSignal(Instance, "bridge_mutated"); + if ((int)result[0] == id) + { + return; + } + } } - public static Array GetMembersForAutoload(Script script) + public static Array GetMembersForScript(Script script) { Array members = new Array(); @@ -215,6 +218,10 @@ public static Array GetMembersForAutoload(Script script) type = "method"; break; + case MemberTypes.NestedType: + type = "constant"; + break; + default: continue; } @@ -232,40 +239,43 @@ public static Array GetMembersForAutoload(Script script) public bool ThingHasConstant(GodotObject thing, string property) { - var fieldInfos = thing.GetType().GetFields(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); - foreach (var fieldInfo in fieldInfos) - { - if (fieldInfo.Name == property && fieldInfo.IsLiteral) - { - return true; - } - } - - return false; + var memberInfos = thing.GetType().GetMember(property, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); + return memberInfos.Length > 0; } public Variant ResolveThingConstant(GodotObject thing, string property) { - var fieldInfos = thing.GetType().GetFields(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); - foreach (var fieldInfo in fieldInfos) + var memberInfos = thing.GetType().GetMember(property, BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); + foreach (var memberInfo in memberInfos) { - if (fieldInfo.Name == property && fieldInfo.IsLiteral) + if (memberInfo != null) { try { - Variant value = fieldInfo.GetValue(thing) switch + switch (memberInfo.MemberType) { - int v => Variant.From((long)v), - float v => Variant.From((double)v), - System.String v => Variant.From((string)v), - _ => Variant.From(fieldInfo.GetValue(thing)) - }; - return value; + case MemberTypes.Field: + return ConvertValueToVariant((memberInfo as FieldInfo).GetValue(thing)); + + case MemberTypes.Property: + return ConvertValueToVariant((memberInfo as PropertyInfo).GetValue(thing)); + + case MemberTypes.NestedType: + var type = thing.GetType().GetNestedType(property); + if (type.IsEnum) + { + return GetEnumAsDictionary(type); + } + break; + + default: + continue; + } } - catch (Exception) + catch (Exception e) { - throw new Exception($"Constant {property} of type ${fieldInfo.GetValue(thing).GetType()} is not supported by Variant."); + throw new Exception($"{property} is not supported by Variant."); } } } @@ -274,6 +284,53 @@ public Variant ResolveThingConstant(GodotObject thing, string property) } + Dictionary GetEnumAsDictionary(Type enumType) + { + Dictionary dictionary = new Dictionary(); + foreach (var value in enumType.GetEnumValuesAsUnderlyingType()) + { + var key = enumType.GetEnumName(value); + if (key != null) + { + dictionary.Add(key, ConvertValueToVariant(value)); + } + } + return dictionary; + } + + + Variant ConvertValueToVariant(object value) + { + if (value == null) return default; + + Type rawType = value.GetType(); + if (rawType.IsEnum) + { + var values = GetEnumAsDictionary(rawType); + value = values[value.ToString()]; + } + + return value switch + { + Variant v => v, + bool v => Variant.From(v), + byte v => Variant.From((long)v), + sbyte v => Variant.From((long)v), + short v => Variant.From((long)v), + ushort v => Variant.From((long)v), + int v => Variant.From((long)v), + uint v => Variant.From((long)v), + long v => Variant.From(v), + ulong v => Variant.From((long)v), + float v => Variant.From((double)v), + double v => Variant.From(v), + string v => Variant.From(v), + GodotObject godotObj => Variant.From(godotObj), + _ => default + }; + } + + public bool ThingHasMethod(GodotObject thing, string method, Array args) { var methodInfos = thing.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); @@ -289,19 +346,22 @@ public bool ThingHasMethod(GodotObject thing, string method, Array args } - public async void ResolveThingMethod(GodotObject thing, string method, Array args) + public async void ResolveThingMethod(float id, GodotObject thing, string method, Array args) { MethodInfo? info = null; var methodInfos = thing.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly); foreach (var methodInfo in methodInfos) { - if (methodInfo.Name == method && args.Count >= methodInfo.GetParameters().Where(p => !p.HasDefaultValue).Count()) + if (methodInfo.Name == method && args.Count >= methodInfo.GetParameters().Count(p => !p.HasDefaultValue)) { info = methodInfo; } } - if (info == null) return; + if (info == null) { + EmitSignal(SignalName.Resolved, id); + return; + } #nullable disable // Convert the method args to something reflection can handle @@ -339,20 +399,26 @@ public async void ResolveThingMethod(GodotObject thing, string method, Array time; } - private Dictionary pauses = new Dictionary(); - public Dictionary Pauses - { - get => pauses; - } - private Dictionary speeds = new Dictionary(); public Dictionary Speeds { @@ -456,7 +516,6 @@ public DialogueLine(RefCounted data) character = (string)data.Get("character"); text = (string)data.Get("text"); translation_key = (string)data.Get("translation_key"); - pauses = (Dictionary)data.Get("pauses"); speeds = (Dictionary)data.Get("speeds"); inline_mutations = (Array)data.Get("inline_mutations"); time = (string)data.Get("time"); @@ -474,6 +533,20 @@ public DialogueLine(RefCounted data) } + public bool HasTag(string tagName) + { + string wrapped = $"{tagName}="; + foreach (var tag in tags) + { + if (tag.StartsWith(wrapped)) + { + return true; + } + } + return false; + } + + public string GetTagValue(string tagName) { string wrapped = $"{tagName}="; diff --git a/addons/dialogue_manager/compiler/compilation.gd b/addons/dialogue_manager/compiler/compilation.gd index 020dd274b8..564432e528 100644 --- a/addons/dialogue_manager/compiler/compilation.gd +++ b/addons/dialogue_manager/compiler/compilation.gd @@ -5,6 +5,9 @@ class_name DMCompilation extends RefCounted #region Compilation locals +## The current file path +var file_path: String + ## A list of file paths that were imported by this file. var imported_paths: PackedStringArray = [] ## A list of state names from "using" clauses. @@ -23,6 +26,14 @@ var lines: Dictionary = {} var data: Dictionary = {} +#endregion + +#region External processing + + +var processor: DMDialogueProcessor = null + + #endregion #region Internal variables @@ -33,14 +44,6 @@ var regex: DMCompilerRegEx = DMCompilerRegEx.new() # For parsing condition/mutation expressions var expression_parser: DMExpressionParser = DMExpressionParser.new() -# A map of titles that came from imported files. -var _imported_titles: Dictionary = {} -# Used to keep track of circular imports. -var _imported_line_map: Dictionary = {} -# The number of imported lines. -var _imported_line_count: int = 0 -# A list of already encountered static line IDs. -var _known_translation_keys: Dictionary = {} # A noop for retrieving the next line without conditions. var _first: Callable = func(_s): return true @@ -55,13 +58,22 @@ var _goto_lines: Dictionary = {} ## Compile some text. func compile(text: String, path: String = ".") -> Error: + file_path = path titles = {} character_names = [] - parse_line_tree(build_line_tree(inject_imported_files(text + "\n=> END", path))) + text += "\n=> END" + + # Remove any known static IDs for this file + for key: String in DMCache.known_static_ids.keys(): + if DMCache.known_static_ids.get(key) == file_path: + DMCache.known_static_ids.erase(key) + + find_imported_titles(text, file_path) + parse_line_tree(build_line_tree(text.split("\n"))) # Convert the compiles lines to a Dictionary so they can be stored. - for id in lines: + for id: String in lines: var line: DMCompiledLine = lines[id] data[id] = line.to_data() @@ -72,141 +84,48 @@ func compile(text: String, path: String = ".") -> Error: ## Inject any imported files -func inject_imported_files(text: String, path: String) -> PackedStringArray: +func find_imported_titles(text: String, path: String) -> void: # Work out imports var known_imports: Dictionary = {} # Include the base file path so that we can get around circular dependencies - known_imports[path.hash()] = "." + known_imports[path] = "." var raw_lines: PackedStringArray = text.split("\n") - for id in range(0, raw_lines.size()): - var line = raw_lines[id] - if is_import_line(line): - var import_data: Dictionary = extract_import_path_and_name(line) - - if not import_data.has("path"): continue - - var import_hash: int = import_data.path.hash() - if import_data.size() > 0: - # Keep track of titles so we can add imported ones later - if str(import_hash) in _imported_titles.keys(): - add_error(id, 0, DMConstants.ERR_FILE_ALREADY_IMPORTED) - if import_data.prefix in _imported_titles.values(): - add_error(id, 0, DMConstants.ERR_DUPLICATE_IMPORT_NAME) - _imported_titles[str(import_hash)] = import_data.prefix - - # Import the file content - if not known_imports.has(import_hash): - var error: Error = import_content(import_data.path, import_data.prefix, _imported_line_map, known_imports) - if error != OK: - add_error(id, 0, error) - - # Make a map so we can refer compiled lines to where they were imported from - if not _imported_line_map.has(import_hash): - _imported_line_map[import_hash] = { - hash = import_hash, - imported_on_line_number = id, - from_line = 0, - to_line = 0 - } - - var imported_content: String = "" - var cummulative_line_number: int = 0 - for item in _imported_line_map.values(): - item["from_line"] = cummulative_line_number - if known_imports.has(item.hash): - cummulative_line_number += known_imports[item.hash].split("\n").size() - item["to_line"] = cummulative_line_number - if known_imports.has(item.hash): - imported_content += known_imports[item.hash] + "\n" - - if imported_content == "": - _imported_line_count = 0 - return text.split("\n") - else: - _imported_line_count = cummulative_line_number + 1 - # Combine imported lines with the original lines - return (imported_content + "\n" + text).split("\n") - - -## Import content from another dialogue file or return an ERR -func import_content(path: String, prefix: String, imported_line_map: Dictionary, known_imports: Dictionary) -> Error: - if FileAccess.file_exists(path): - var file = FileAccess.open(path, FileAccess.READ) - var content: PackedStringArray = file.get_as_text().strip_edges().split("\n") - - for index in range(0, content.size()): - var line = content[index] - if is_import_line(line): - var import = extract_import_path_and_name(line) - if import.size() > 0: - if not known_imports.has(import.path.hash()): - # Add an empty record into the keys just so we don't end up with cyclic dependencies - known_imports[import.path.hash()] = "" - if import_content(import.path, import.prefix, imported_line_map, known_imports) != OK: - return ERR_LINK_FAILED - - if not imported_line_map.has(import.path.hash()): - # Make a map so we can refer compiled lines to where they were imported from - imported_line_map[import.path.hash()] = { - hash = import.path.hash(), - imported_on_line_number = index, - from_line = 0, - to_line = 0 - } - - _imported_titles[import.prefix] = import.path.hash() - - var origin_hash: int = -1 - for hash_value in known_imports.keys(): - if known_imports[hash_value] == ".": - origin_hash = hash_value - - # Replace any titles or jump points with references to the files they point to (event if they point to their own file) - for i in range(0, content.size()): - var line = content[i] - if line.strip_edges().begins_with("~ "): - var indent: String = "\t".repeat(get_indent(line)) - var title = line.strip_edges().substr(2) - if "/" in line: - var bits = title.split("/") - content[i] = "%s~ %s/%s" % [indent, _imported_titles[bits[0]], bits[1]] - else: - content[i] = "%s~ %s/%s" % [indent, str(path.hash()), title] - - elif "=>< " in line: - var jump: String = line.substr(line.find("=>< ") + "=>< ".length()).strip_edges() - if "/" in jump: - var bits: PackedStringArray = jump.split("/") - var title_hash: int = _imported_titles[bits[0]] - if title_hash == origin_hash: - content[i] = "%s=>< %s" % [line.split("=>< ")[0], bits[1]] - else: - content[i] = "%s=>< %s/%s" % [line.split("=>< ")[0], title_hash, bits[1]] - - elif not jump in ["END", "END!"] and not jump.begins_with("{{"): - content[i] = "%s=>< %s/%s" % [line.split("=>< ")[0], str(path.hash()), jump] - - elif "=> " in line: - var jump: String = line.substr(line.find("=> ") + "=> ".length()).strip_edges() - if "/" in jump: - var bits: PackedStringArray = jump.split("/") - var title_hash: int = _imported_titles[bits[0]] - if title_hash == origin_hash: - content[i] = "%s=> %s" % [line.split("=> ")[0], bits[1]] - else: - content[i] = "%s=> %s/%s" % [line.split("=> ")[0], title_hash, bits[1]] - - elif not jump in ["END", "END!"] and not jump.begins_with("{{"): - content[i] = "%s=> %s/%s" % [line.split("=> ")[0], str(path.hash()), jump] - - imported_paths.append(path) - known_imports[path.hash()] = "\n".join(content) + "\n=> END\n" - return OK - else: - return ERR_FILE_NOT_FOUND + for id: int in range(0, raw_lines.size()): + var line: String = raw_lines[id] + + if not is_import_line(line): continue + + var import_data: Dictionary = extract_import_path_and_name(line) + + if import_data.size() == 0 or not import_data.has("path"): continue + + if known_imports.has(import_data.path): + add_error(id, 0, DMConstants.ERR_FILE_ALREADY_IMPORTED) + elif known_imports.values().has(import_data.prefix): + add_error(id, 0, DMConstants.ERR_DUPLICATE_IMPORT_NAME) + else: + # Get titles from other file and map them to the known list of titles. + var imported_resource: DialogueResource = ResourceLoader.load(import_data.path, "", ResourceLoader.CACHE_MODE_REPLACE) + + # Guard against failed loads -- namely during reimport cascade. + if imported_resource == null: + # Might be worth investigating a better constant here. + add_error(id, 0, DMConstants.ERR_ERRORS_IN_IMPORTED_FILE) + continue + + var uid: String = ResourceUID.id_to_text(ResourceLoader.get_resource_uid(import_data.path)).replace("uid://", "") + for title_key: String in imported_resource.titles: + # Ignore any titles that are already a reference + if "/" in title_key: continue + # Create "alias/title" to "uid@id" mappig + var title_reference: String = "%s/%s" % [import_data.prefix, title_key] + titles[title_reference] = "%s@%s" % [uid, imported_resource.titles.get(title_key)] + + imported_paths.append(import_data.path) + known_imports[import_data.path] = import_data.prefix ## Build a tree of parent/child relationships @@ -219,17 +138,18 @@ func build_line_tree(raw_lines: PackedStringArray) -> DMTreeLine: # Get list of known autoloads var autoload_names: PackedStringArray = get_autoload_names() - for i in range(0, raw_lines.size()): - var raw_line: String = raw_lines[i] - var tree_line: DMTreeLine = DMTreeLine.new(str(i - _imported_line_count)) + for i: int in range(0, raw_lines.size()): + var raw_line: String = get_processor()._preprocess_line(raw_lines[i]) + var tree_line: DMTreeLine = DMTreeLine.new(str(i)) + var line_without_indent: String = strip_indent(raw_line) tree_line.line_number = i + 1 tree_line.type = get_line_type(raw_line) - tree_line.text = raw_line.strip_edges() + tree_line.text = line_without_indent.strip_edges() # Handle any "using" directives. if tree_line.type == DMConstants.TYPE_USING: - var using_match: RegExMatch = regex.USING_REGEX.search(raw_line) + var using_match: RegExMatch = regex.USING_REGEX.search(line_without_indent) if "state" in using_match.names: var using_state: String = using_match.strings[using_match.names.state].strip_edges() if not using_state in autoload_names: @@ -238,15 +158,15 @@ func build_line_tree(raw_lines: PackedStringArray) -> DMTreeLine: using_states.append(using_state) continue # Ignore import lines because they've already been processed. - elif is_import_line(raw_line): + elif is_import_line(line_without_indent): continue tree_line.indent = get_indent(raw_line) # Attach doc comments - if raw_line.strip_edges().begins_with("##"): - doc_comments.append(raw_line.replace("##", "").strip_edges()) - elif tree_line.type == DMConstants.TYPE_DIALOGUE: + if tree_line.text.begins_with("##"): + doc_comments.append(tree_line.text.replace("##", "").strip_edges()) + elif tree_line.type == DMConstants.TYPE_DIALOGUE or tree_line.type == DMConstants.TYPE_RESPONSE: tree_line.notes = "\n".join(doc_comments) doc_comments.clear() @@ -255,7 +175,7 @@ func build_line_tree(raw_lines: PackedStringArray) -> DMTreeLine: # are multiple. The indent of an empty line is assumed to be the same as the non-empty line # following it. That way, grouping calculations should work. if tree_line.type in [DMConstants.TYPE_UNKNOWN, DMConstants.TYPE_COMMENT] and raw_lines.size() > i + 1: - var next_line = raw_lines[i + 1] + var next_line: String = raw_lines[i + 1] if get_line_type(next_line) in [DMConstants.TYPE_UNKNOWN, DMConstants.TYPE_COMMENT]: continue else: @@ -278,16 +198,10 @@ func build_line_tree(raw_lines: PackedStringArray) -> DMTreeLine: if title == "": add_error(i, 2, DMConstants.ERR_EMPTY_TITLE) elif titles.has(title): - add_error(i, 2, DMConstants.ERR_DUPLICATE_TITLE) + add_error(i + 1, 2, DMConstants.ERR_DUPLICATE_TITLE) else: titles[title] = tree_line.id - if "/" in title: - # Replace the hash title with something human readable. - var bits: PackedStringArray = title.split("/") - if _imported_titles.has(bits[0]): - title = _imported_titles[bits[0]] + "/" + bits[1] - titles[title] = tree_line.id - elif first_title == "" and i >= _imported_line_count: + if first_title == "": first_title = tree_line.id # Append the current line to the current parent (note: the root is the most basic parent). @@ -308,7 +222,7 @@ func build_line_tree(raw_lines: PackedStringArray) -> DMTreeLine: func parse_line_tree(root: DMTreeLine, parent: DMCompiledLine = null) -> Array[DMCompiledLine]: var compiled_lines: Array[DMCompiledLine] = [] - for i in range(0, root.children.size()): + for i: int in range(0, root.children.size()): var tree_line: DMTreeLine = root.children[i] var line: DMCompiledLine = DMCompiledLine.new(tree_line.id, tree_line.type) @@ -355,6 +269,9 @@ func parse_line_tree(root: DMTreeLine, parent: DMCompiledLine = null) -> Array[D # Main line map is keyed by ID lines[line.id] = line + # Apply any post-processing. + get_processor()._process_line(line) + # Returned lines order is preserved so that it can be used for compiling children compiled_lines.append(line) @@ -367,12 +284,12 @@ func parse_title_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Arr line.text = tree_line.text.substr(tree_line.text.find("~ ") + 2).strip_edges() - # Titles can't have numbers as the first letter (unless they are external titles which get replaced with hashes) - if tree_line.line_number >= _imported_line_count and regex.BEGINS_WITH_NUMBER_REGEX.search(line.text): + # Titles can't have numbers as the first letter + if regex.BEGINS_WITH_NUMBER_REGEX.search(line.text): result = add_error(tree_line.line_number, 2, DMConstants.ERR_TITLE_BEGINS_WITH_NUMBER) # Only import titles are allowed to have "/" in them - var valid_title = regex.VALID_TITLE_REGEX.search(line.text.replace("/", "")) + var valid_title: RegExMatch = regex.VALID_TITLE_REGEX.search(line.text.replace("/", "")) if not valid_title: result = add_error(tree_line.line_number, 2, DMConstants.ERR_TITLE_INVALID_CHARACTERS) @@ -383,7 +300,7 @@ func parse_title_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Arr ## Update any lines that point to this title if _goto_lines.has(line.text): - for goto_line in _goto_lines[line.text]: + for goto_line: DMCompiledLine in _goto_lines[line.text]: goto_line.next_id = line.next_id return result @@ -393,6 +310,7 @@ func parse_title_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Arr func parse_goto_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: # Work out where this line is jumping to. var goto_data: DMResolvedGotoData = DMResolvedGotoData.new(tree_line.text, titles) + if goto_data.error: return add_error(tree_line.line_number, tree_line.indent + 2, goto_data.error) if goto_data.next_id or goto_data.expression: @@ -484,7 +402,7 @@ func parse_match_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Arr result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_INVALID_CONDITION_INDENTATION) # Check that all children are when or else. - for child in tree_line.children: + for child: DMTreeLine in tree_line.children: if child.type == DMConstants.TYPE_WHEN: continue if child.type == DMConstants.TYPE_UNKNOWN: continue if child.type == DMConstants.TYPE_CONDITION and child.text.begins_with("else"): continue @@ -562,15 +480,22 @@ func parse_response_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: # Remove the "- " tree_line.text = tree_line.text.substr(2) + # Attach any doc comments. + line.notes = tree_line.notes + # Extract the static line ID var static_line_id: String = extract_static_line_id(tree_line.text) if static_line_id: + if DMCache.known_static_ids.has(static_line_id): + result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_DUPLICATE_ID) + else: + DMCache.known_static_ids[static_line_id] = file_path tree_line.text = tree_line.text.replace("[ID:%s]" % [static_line_id], "") line.translation_key = static_line_id # Handle conditional responses and remove them from the prompt text. if " [if " in tree_line.text: - var condition = extract_condition(tree_line.text, true, tree_line.indent) + var condition: Dictionary = extract_condition(tree_line.text, true, tree_line.indent) if condition.has("error"): result = add_error(tree_line.line_number, condition.index, condition.error) else: @@ -583,7 +508,7 @@ func parse_response_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: # Find the original response in this group of responses. var original_response: DMTreeLine = tree_line - for i in range(sibling_index - 1, -1, -1): + for i: int in range(sibling_index - 1, -1, -1): if siblings[i].type == DMConstants.TYPE_RESPONSE: original_response = siblings[i] elif siblings[i].type != DMConstants.TYPE_UNKNOWN: @@ -624,7 +549,7 @@ func parse_response_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: func parse_random_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Array[DMTreeLine], sibling_index: int, parent: DMCompiledLine) -> Error: # Find the weight var weight: float = 1 - var found = regex.WEIGHTED_RANDOM_SIBLINGS_REGEX.search(tree_line.text + " ") + var found: RegExMatch = regex.WEIGHTED_RANDOM_SIBLINGS_REGEX.search(tree_line.text + " ") var condition: Dictionary = {} if found: if found.names.has("weight"): @@ -634,7 +559,7 @@ func parse_random_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: Ar # Find the original random sibling. It will be the jump off point. var original_sibling: DMTreeLine = tree_line - for i in range(sibling_index - 1, -1, -1): + for i: int in range(sibling_index - 1, -1, -1): if siblings[i] and siblings[i].is_random: original_sibling = siblings[i] else: @@ -697,7 +622,7 @@ func parse_dialogue_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: if tree_line.text.begins_with("\\%"): tree_line.text = tree_line.text.substr(1) # Append any further dialogue - for i in range(0, tree_line.children.size()): + for i: int in range(0, tree_line.children.size()): var child: DMTreeLine = tree_line.children[i] if child.type == DMConstants.TYPE_DIALOGUE: # Nested dialogue lines cannot have further nested dialogue. @@ -705,7 +630,7 @@ func parse_dialogue_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: add_error(child.children[0].line_number, child.children[0].indent, DMConstants.ERR_INVALID_INDENTATION) # Mark this as a dialogue child of another dialogue line. child.is_nested_dialogue = true - var child_line = DMCompiledLine.new("", DMConstants.TYPE_DIALOGUE) + var child_line: DMCompiledLine = DMCompiledLine.new("", DMConstants.TYPE_DIALOGUE) parse_character_and_dialogue(child, child_line, [], 0, parent) var child_static_line_id: String = extract_static_line_id(child.text) if child_line.character != "" or child_static_line_id != "": @@ -725,6 +650,11 @@ func parse_dialogue_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: # Extract the static line ID var static_line_id: String = extract_static_line_id(tree_line.text) if static_line_id: + if DMCache.known_static_ids.has(static_line_id): + result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_DUPLICATE_ID) + else: + DMCache.known_static_ids[static_line_id] = file_path + tree_line.text = tree_line.text.replace(" [ID:", "[ID:").replace("[ID:%s]" % [static_line_id], "") line.translation_key = static_line_id @@ -753,7 +683,7 @@ func parse_dialogue_line(tree_line: DMTreeLine, line: DMCompiledLine, siblings: for bbcode: Dictionary in bbcodes: var tag: String = bbcode.code var code: String = bbcode.raw_args - if tag.begins_with("do") or tag.begins_with("set") or tag.begins_with("if"): + if tag.begins_with("$>") or tag.begins_with("do") or tag.begins_with("set") or tag.begins_with("if"): var expression: Array = expression_parser.tokenise(code, DMConstants.TYPE_MUTATION, bbcode.start + bbcode.code.length()) if expression.size() == 0: add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_INVALID_EXPRESSION) @@ -822,13 +752,13 @@ func parse_character_and_dialogue(tree_line: DMTreeLine, line: DMCompiledLine, s text = text.replace("\\:", "!ESCAPED_COLON!") if ": " in text: # If a character was given then split it out. - var bits = Array(text.strip_edges().split(": ")) - line.character = bits.pop_front().strip_edges() + var bits: Array = Array(text.strip_edges().split(": ")) + line.character = bits.pop_front().strip_edges().replace("!ESCAPED_COLON!", ":") if not line.character in character_names: character_names.append(line["character"]) # Character names can have expressions in them. line.character_replacements = expression_parser.extract_replacements(line.character, tree_line.indent) - for replacement in line.character_replacements: + for replacement: Dictionary in line.character_replacements: if replacement.has("error"): result = add_error(tree_line.line_number, replacement.index, replacement.error) text = ": ".join(bits).replace("!ESCAPED_COLON!", ":") @@ -838,7 +768,7 @@ func parse_character_and_dialogue(tree_line: DMTreeLine, line: DMCompiledLine, s # Extract any expressions in the dialogue. line.text_replacements = expression_parser.extract_replacements(text, line.character.length() + 2 + tree_line.indent) - for replacement in line.text_replacements: + for replacement: Dictionary in line.text_replacements: if replacement.has("error"): result = add_error(tree_line.line_number, replacement.index, replacement.error) @@ -856,13 +786,6 @@ func parse_character_and_dialogue(tree_line: DMTreeLine, line: DMCompiledLine, s line.text = text - # IDs can't be duplicated for text that doesn't match. - if line.translation_key != "": - if _known_translation_keys.has(line.translation_key) and _known_translation_keys.get(line.translation_key) != line.text: - result = add_error(tree_line.line_number, tree_line.indent, DMConstants.ERR_DUPLICATE_ID) - else: - _known_translation_keys[line.translation_key] = line.text - return result @@ -873,25 +796,11 @@ func parse_character_and_dialogue(tree_line: DMTreeLine, line: DMCompiledLine, s ## Add a compilation error to the list. Returns the given error code. func add_error(line_number: int, column_number: int, error: int) -> Error: - # See if the error was in an imported file - for item in _imported_line_map.values(): - if line_number < item.to_line: - errors.append({ - line_number = item.imported_on_line_number, - column_number = 0, - error = DMConstants.ERR_ERRORS_IN_IMPORTED_FILE, - external_error = error, - external_line_number = line_number - }) - return error - - # Otherwise, it's in this file errors.append({ - line_number = line_number - _imported_line_count, + line_number = line_number, column_number = column_number, error = error }) - return error @@ -904,7 +813,7 @@ func add_error(line_number: int, column_number: int, error: int) -> Error: func get_autoload_names() -> PackedStringArray: var autoloads: PackedStringArray = [] - var project = ConfigFile.new() + var project: ConfigFile = ConfigFile.new() project.load("res://project.godot") if project.has_section("autoload"): return Array(project.get_section_keys("autoload")).filter(func(key): return key != "DialogueManager") @@ -929,18 +838,52 @@ func extract_import_path_and_name(line: String) -> Dictionary: return {} +## Load the configured processor (or the default one is none configured). +func get_processor() -> DMDialogueProcessor: + if processor == null: + var processor_path: String = DMSettings.get_setting(DMSettings.DIALOGUE_PROCESSOR_PATH, "") + processor = DMDialogueProcessor.new() if processor_path.is_empty() else load(processor_path).new() + return processor + + ## Get the indent of a raw line func get_indent(raw_line: String) -> int: - var tabs: RegExMatch = regex.INDENT_REGEX.search(raw_line) - if tabs: - return tabs.get_string().length() - else: - return 0 + var indent_token: String = get_line_indent_token(raw_line) + + if indent_token.is_empty(): return 0 + + var indent: int = 0 + var remaining: String = raw_line + while remaining.begins_with(indent_token): + indent += 1 + remaining = remaining.substr(indent_token.length()) + + return indent + + +## Remove any leading indentation token from a raw line. +func strip_indent(raw_line: String) -> String: + var indent_token: String = get_line_indent_token(raw_line) + + if indent_token.is_empty(): return raw_line + + while raw_line.begins_with(indent_token): + raw_line = raw_line.substr(indent_token.length()) + + return raw_line + + +## Get the indentation token used by a line. +func get_line_indent_token(raw_line: String) -> String: + for prefix: String in ["\t", "\\t", " ", " "]: + if raw_line.begins_with(prefix): + return prefix + return "" ## Get the type of a raw line func get_line_type(raw_line: String) -> String: - raw_line = raw_line.strip_edges() + raw_line = strip_indent(raw_line).strip_edges() var text: String = regex.WEIGHTED_RANDOM_SIBLINGS_REGEX.sub(raw_line + " ", "").strip_edges() if text.begins_with("import "): @@ -967,7 +910,7 @@ func get_line_type(raw_line: String) -> String: if text.begins_with("when "): return DMConstants.TYPE_WHEN - if text.begins_with("do ") or text.begins_with("do! ") or text.begins_with("set "): + if text.begins_with("do ") or text.begins_with("do! ") or text.begins_with("set ") or text.begins_with("$> ") or text.begins_with("$>> "): return DMConstants.TYPE_MUTATION if text.begins_with("=> ") or text.begins_with("=>< "): @@ -987,7 +930,7 @@ func get_line_type(raw_line: String) -> String: ## Get the next sibling that passes a [Callable] matcher. func get_next_matching_sibling_id(siblings: Array[DMTreeLine], from_index: int, parent: DMCompiledLine, matcher: Callable, with_empty_lines: bool = false) -> String: - for i in range(from_index + 1, siblings.size()): + for i: int in range(from_index + 1, siblings.size()): var next_sibling: DMTreeLine = siblings[i] if not with_empty_lines: @@ -1073,7 +1016,7 @@ func extract_mutation(text: String) -> Dictionary: else: return { expression = expression, - is_blocking = not "!" in found.strings[found.names.keyword] + is_blocking = not "!" in found.strings[found.names.keyword] and found.strings[found.names.keyword] != "$>>" } else: @@ -1102,7 +1045,7 @@ func parse_children(tree_line: DMTreeLine, line: DMCompiledLine) -> Array[DMComp if last_child.next_id == DMConstants.ID_NULL: last_child.next_id = line.next_id_after if last_child.siblings.size() > 0: - for sibling in last_child.siblings: + for sibling: Dictionary in last_child.siblings: lines.get(sibling.id).next_id = last_child.next_id return children diff --git a/addons/dialogue_manager/compiler/compiler.gd b/addons/dialogue_manager/compiler/compiler.gd index a370ef6a8a..b4bb2754e5 100644 --- a/addons/dialogue_manager/compiler/compiler.gd +++ b/addons/dialogue_manager/compiler/compiler.gd @@ -44,8 +44,15 @@ static func extract_translatable_string(text: String) -> String: return line.text +## Extract a mutation from a string. +static func extract_mutation(text: String) -> Dictionary: + var compilation: DMCompilation = DMCompilation.new() + return compilation.extract_mutation(text) + + ## Get the known titles in a dialogue script. static func get_titles_in_text(text: String, path: String) -> Dictionary: var compilation: DMCompilation = DMCompilation.new() - compilation.build_line_tree(compilation.inject_imported_files(text, path)) + compilation.find_imported_titles(text, path) + compilation.build_line_tree(text.split("\n")) return compilation.titles diff --git a/addons/dialogue_manager/compiler/compiler_regex.gd b/addons/dialogue_manager/compiler/compiler_regex.gd index ca104135b1..cc891e26cf 100644 --- a/addons/dialogue_manager/compiler/compiler_regex.gd +++ b/addons/dialogue_manager/compiler/compiler_regex.gd @@ -9,7 +9,7 @@ var VALID_TITLE_REGEX: RegEx = RegEx.create_from_string("^[a-zA-Z_0-9\\p{Emoji_P var BEGINS_WITH_NUMBER_REGEX: RegEx = RegEx.create_from_string("^\\d") var CONDITION_REGEX: RegEx = RegEx.create_from_string("(if|elif|while|else if|match|when) (?.*)\\:?") var WRAPPED_CONDITION_REGEX: RegEx = RegEx.create_from_string("\\[if (?.*)\\]") -var MUTATION_REGEX: RegEx = RegEx.create_from_string("(?do|do!|set) (?.*)") +var MUTATION_REGEX: RegEx = RegEx.create_from_string("(?\\$\\>|\\$\\>\\>|do|do!|set) (?.*)") var STATIC_LINE_ID_REGEX: RegEx = RegEx.create_from_string("\\[ID:(?.*?)\\]") var WEIGHTED_RANDOM_SIBLINGS_REGEX: RegEx = RegEx.create_from_string("^\\%(?[\\d.]+)?( \\[if (?.+?)\\])? ") var GOTO_REGEX: RegEx = RegEx.create_from_string("=>.*)") @@ -17,12 +17,12 @@ var GOTO_REGEX: RegEx = RegEx.create_from_string("=>.*)") var INLINE_RANDOM_REGEX: RegEx = RegEx.create_from_string("\\[\\[(?.*?)\\]\\]") var INLINE_CONDITIONALS_REGEX: RegEx = RegEx.create_from_string("\\[if (?.+?)\\](?.*?)\\[\\/if\\]") +var IMAGE_TAGS_REGEX: RegEx = RegEx.create_from_string("\\[img.*?\\](?.+?)\\[\\/img\\]") + var TAGS_REGEX: RegEx = RegEx.create_from_string("\\[#(?.*?)\\]") var REPLACEMENTS_REGEX: RegEx = RegEx.create_from_string("{{(.*?)}}") -var ALPHA_NUMERIC: RegEx = RegEx.create_from_string("[^a-zA-Z0-9\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}]+") - var TOKEN_DEFINITIONS: Dictionary = { DMConstants.TOKEN_FUNCTION: RegEx.create_from_string("^[a-zA-Z_\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}][a-zA-Z_0-9\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}]*\\("), DMConstants.TOKEN_DICTIONARY_REFERENCE: RegEx.create_from_string("^[a-zA-Z_\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}][a-zA-Z_0-9\\p{Emoji_Presentation}\\p{Han}\\p{Katakana}\\p{Hiragana}\\p{Cyrillic}]*\\["), diff --git a/addons/dialogue_manager/compiler/resolved_goto_data.gd b/addons/dialogue_manager/compiler/resolved_goto_data.gd index 16bca6f51d..274f324d87 100644 --- a/addons/dialogue_manager/compiler/resolved_goto_data.gd +++ b/addons/dialogue_manager/compiler/resolved_goto_data.gd @@ -55,7 +55,9 @@ func _init(text: String, titles: Dictionary) -> void: elif title.begins_with("{{"): var expression_parser: DMExpressionParser = DMExpressionParser.new() var title_expression: Array[Dictionary] = expression_parser.extract_replacements(title, 0) - if title_expression[0].has("error"): + if title_expression.size() == 0: + error = DMConstants.ERR_INCOMPLETE_EXPRESSION + elif title_expression[0].has("error"): error = title_expression[0].error else: expression = title_expression[0].expression diff --git a/addons/dialogue_manager/compiler/resolved_line_data.gd b/addons/dialogue_manager/compiler/resolved_line_data.gd index 1d1a716748..31e9b212c3 100644 --- a/addons/dialogue_manager/compiler/resolved_line_data.gd +++ b/addons/dialogue_manager/compiler/resolved_line_data.gd @@ -3,8 +3,6 @@ class_name DMResolvedLineData extends RefCounted ## The line's text var text: String = "" -## A map of pauses against where they are found in the text. -var pauses: Dictionary = {} ## A map of speed changes against where they are found in the text. var speeds: Dictionary = {} ## A list of any mutations to run and where they are found in the text. @@ -15,7 +13,6 @@ var time: String = "" func _init(line: String) -> void: text = line - pauses = {} speeds = {} mutations = [] time = "" @@ -39,7 +36,7 @@ func _init(line: String) -> void: var accumulaive_length_offset = 0 for position in bbcode_positions: # Ignore our own markers - if position.code in ["wait", "speed", "/speed", "do", "do!", "set", "next", "if", "else", "/if"]: + if position.code in ["wait", "speed", "/speed", "$>", "$>>", "do", "do!", "set", "next", "if", "else", "/if"]: continue bbcodes.append({ @@ -59,14 +56,12 @@ func _init(line: String) -> void: limit += 1 var bbcode = next_bbcode_position[0] - var index = bbcode.start var code = bbcode.code var raw_args = bbcode.raw_args var args = {} - if code in ["do", "do!", "set"]: - var compilation: DMCompilation = DMCompilation.new() - args["value"] = compilation.extract_mutation("%s %s" % [code, raw_args]) + if code in ["$>", "$>>", "do", "do!", "set"]: + args["value"] = DMCompiler.extract_mutation("%s %s" % [code, raw_args]) else: # Could be something like: # "=1.0" @@ -80,15 +75,13 @@ func _init(line: String) -> void: match code: "wait": - if pauses.has(index): - pauses[index] += args.get("value").to_float() - else: - pauses[index] = args.get("value").to_float() + var wait: Dictionary = DMCompiler.extract_mutation("do wait(%s)" % [args.get("value", "null")]) + mutations.append([index, wait]) "speed": speeds[index] = args.get("value").to_float() "/speed": speeds[index] = 1.0 - "do", "do!", "set": + "$>", "$>>", "do", "do!", "set": mutations.append([index, args.get("value")]) "next": time = args.get("value") if args.has("value") else "0" @@ -142,7 +135,7 @@ func find_bbcode_positions_in_string(string: String, find_all: bool = true, incl open_brace_count += 1 else: - if not is_finished_code and (string[i].to_upper() != string[i] or string[i] == "/" or string[i] == "!"): + if not is_finished_code and (string[i].to_upper() != string[i] or ["/", "!", "$", ">"].has(string[i])): code += string[i] else: is_finished_code = true diff --git a/addons/dialogue_manager/components/code_edit.gd b/addons/dialogue_manager/components/code_edit.gd index df9a3738f8..a050fef7ed 100644 --- a/addons/dialogue_manager/components/code_edit.gd +++ b/addons/dialogue_manager/components/code_edit.gd @@ -7,8 +7,11 @@ signal error_clicked(line_number: int) signal external_file_requested(path: String, title: String) +const MUTATION_PREFIXES: PackedStringArray = ["$>", "$>>", "do ", "do! ", "set ", "if ", "elif ", "else if ", "match ", "when "] +const INLINE_MUTATION_PREFIXES: PackedStringArray = ["$> ", "$>> ", "do ", "do! ", "set ", "if ", "elif "] + # A link back to the owner `MainView` -var main_view +var main_view: Control # Theme overrides for syntax highlighting, etc var theme_overrides: Dictionary: @@ -52,6 +55,8 @@ var font_size: int: return font_size var WEIGHTED_RANDOM_PREFIX: RegEx = RegEx.create_from_string("^\\%[\\d.]+\\s") +var STATIC_REGEX: RegEx = RegEx.create_from_string("^static var (?[a-zA-Z_0-9]+)(:\\s?(?[a-zA-Z_0-9]+))?") +var STATIC_CONTENT_REGEX: RegEx = RegEx.create_from_string("static (var|func)") var compiler_regex: DMCompilerRegEx = DMCompilerRegEx.new() var _autoloads: Dictionary[String, String] = {} @@ -77,7 +82,7 @@ func _ready() -> void: func _gui_input(event: InputEvent) -> void: # Handle shortcuts that come from the editor if event is InputEventKey and event.is_pressed(): - var shortcut: String = Engine.get_meta("DialogueManagerPlugin").get_editor_shortcut(event) + var shortcut: String = DMPlugin.get_editor_shortcut(event) match shortcut: "toggle_comment": toggle_comment() @@ -100,6 +105,12 @@ func _gui_input(event: InputEvent) -> void: "text_size_reset": self.font_size = theme_overrides.font_size get_viewport().set_input_as_handled() + "make_bold": + insert_bbcode("[b]", "[/b]") + get_viewport().set_input_as_handled() + "make_italic": + insert_bbcode("[i]", "[/i]") + get_viewport().set_input_as_handled() elif event is InputEventMouse: match event.as_text(): @@ -119,21 +130,35 @@ func _can_drop_data(at_position: Vector2, data) -> bool: return files.size() > 0 -func _drop_data(at_position: Vector2, data) -> void: +func _drop_data(at_position: Vector2, data: Variant) -> void: var replace_regex: RegEx = RegEx.create_from_string("[^a-zA-Z_0-9]+") + if typeof(data) == TYPE_STRING: return + var files: PackedStringArray = Array(data.files) - for file in files: + for file: String in files: # Don't import the file into itself if file == main_view.current_file_path: continue if file.get_extension() == "dialogue": - var path = file.replace("res://", "").replace(".dialogue", "") + var known_aliases: PackedStringArray = [] + var path: String = file.replace("res://", "").replace(".dialogue", "") # Find the first non-import line in the file to add our import - var lines = text.split("\n") - for i in range(0, lines.size()): - if not lines[i].begins_with("import "): - insert_line_at(i, "import \"%s\" as %s\n" % [file, replace_regex.sub(path, "_", true)]) + var lines: PackedStringArray = text.split("\n") + for i: int in range(0, lines.size()): + if lines[i].begins_with("import "): + var found: RegExMatch = compiler_regex.IMPORT_REGEX.search(lines[i]) + if found: + known_aliases.append(found.strings[found.names.prefix]) + else: + var alias: String = "" + var bits: PackedStringArray = replace_regex.sub(path, "|", true).split("|") + bits.reverse() + for end: int in range(1, bits.size() + 1): + alias = "_".join(bits.slice(0, end)) + if not alias in known_aliases: + break + insert_line_at(i, "import \"%s\" as %s\n" % [file, alias]) set_caret_line(i) break else: @@ -141,7 +166,20 @@ func _drop_data(at_position: Vector2, data) -> void: if cursor.x > -1 and cursor.y > -1: set_cursor(cursor) remove_secondary_carets() - insert_text("\"%s\"" % file, cursor.y, cursor.x) + var resource: Resource = load(file) + # If the dropped file is an audio stream then assume it's a voice reference + if is_instance_of(resource, AudioStream): + var current_voice_regex: RegEx = RegEx.create_from_string("\\[#voice=.+\\]") + var path: String = ResourceUID.call("path_to_uid", file) if ResourceUID.has_method("path_to_uid") else file + var line_text: String = get_line(cursor.y) + var voice_text: String = "[#voice=%s]" % [path] + if current_voice_regex.search(line_text): + set_line(cursor.y, current_voice_regex.replace(get_line(cursor.y), voice_text)) + else: + insert_text(" " + voice_text, cursor.y, line_text.length()) + # Other wise it's just a file reference + else: + insert_text("\"%s\"" % file, cursor.y, cursor.x) grab_focus() @@ -149,103 +187,9 @@ func _request_code_completion(force: bool) -> void: var cursor: Vector2 = get_cursor() var current_line: String = get_line(cursor.y) - # Match jumps - if ("=> " in current_line or "=>< " in current_line) and (cursor.x > current_line.find("=>")): - var prompt: String = current_line.split("=>")[1] - if prompt.begins_with("< "): - prompt = prompt.substr(2) - else: - prompt = prompt.substr(1) - - if "=> " in current_line: - if matches_prompt(prompt, "end"): - add_code_completion_option(CodeEdit.KIND_CLASS, "END", "END".substr(prompt.length()), theme_overrides.text_color, get_theme_icon("Stop", "EditorIcons")) - if matches_prompt(prompt, "end!"): - add_code_completion_option(CodeEdit.KIND_CLASS, "END!", "END!".substr(prompt.length()), theme_overrides.text_color, get_theme_icon("Stop", "EditorIcons")) - - # Get all titles, including those in imports - for title: String in DMCompiler.get_titles_in_text(text, main_view.current_file_path): - # Ignore any imported titles that aren't resolved to human readable. - if title.to_int() > 0: - continue - - elif "/" in title: - var bits = title.split("/") - if matches_prompt(prompt, bits[0]) or matches_prompt(prompt, bits[1]): - add_code_completion_option(CodeEdit.KIND_CLASS, title, title.substr(prompt.length()), theme_overrides.text_color, get_theme_icon("CombineLines", "EditorIcons")) - elif matches_prompt(prompt, title): - add_code_completion_option(CodeEdit.KIND_CLASS, title, title.substr(prompt.length()), theme_overrides.text_color, get_theme_icon("ArrowRight", "EditorIcons")) - - # Match character names - var name_so_far: String = WEIGHTED_RANDOM_PREFIX.sub(current_line.strip_edges(), "") - if name_so_far != "" and name_so_far[0].to_upper() == name_so_far[0]: - # Only show names starting with that character - var names: PackedStringArray = get_character_names(name_so_far) - if names.size() > 0: - for name in names: - add_code_completion_option(CodeEdit.KIND_CLASS, name + ": ", name.substr(name_so_far.length()) + ": ", theme_overrides.text_color, get_theme_icon("Sprite2D", "EditorIcons")) - - # Match autoloads on mutation lines - for prefix in ["do ", "do! ", "set ", "if ", "elif ", "else if ", "match ", "when ", "using "]: - if (current_line.strip_edges().begins_with(prefix) and (cursor.x > current_line.find(prefix))): - var expression: String = current_line.substr(0, cursor.x).strip_edges().substr(3) - # Find the last couple of tokens - var possible_prompt: String = expression.reverse() - possible_prompt = possible_prompt.substr(0, possible_prompt.find(" ")) - possible_prompt = possible_prompt.substr(0, possible_prompt.find("(")) - possible_prompt = possible_prompt.reverse() - var segments: PackedStringArray = possible_prompt.split(".").slice(-2) - var auto_completes: Array[Dictionary] = [] - - # Autoloads and state shortcuts - if segments.size() == 1: - var prompt: String = segments[0] - for autoload in _autoloads.keys(): - if matches_prompt(prompt, autoload): - auto_completes.append({ - prompt = prompt, - text = autoload, - type = "script" - }) - for autoload in get_state_shortcuts(): - for member: Dictionary in get_members_for_autoload(autoload): - if matches_prompt(prompt, member.name): - auto_completes.append({ - prompt = prompt, - text = member.name, - type = member.type - }) - - # Members of an autoload - elif segments[0] in _autoloads.keys() and not current_line.strip_edges().begins_with("using "): - var prompt: String = segments[1] - for member: Dictionary in get_members_for_autoload(segments[0]): - if matches_prompt(prompt, member.name): - auto_completes.append({ - prompt = prompt, - text = member.name, - type = member.type - }) - - auto_completes.sort_custom(func(a, b): return a.text < b.text) - - for auto_complete in auto_completes: - var icon: Texture2D - var text: String = auto_complete.text - match auto_complete.type: - "script": - icon = get_theme_icon("Script", "EditorIcons") - "property": - icon = get_theme_icon("MemberProperty", "EditorIcons") - "method": - icon = get_theme_icon("MemberMethod", "EditorIcons") - text += "()" - "signal": - icon = get_theme_icon("MemberSignal", "EditorIcons") - "constant": - icon = get_theme_icon("MemberConstant", "EditorIcons") - var insert: String = text.substr(auto_complete.prompt.length()) - add_code_completion_option(CodeEdit.KIND_CLASS, text, insert, theme_overrides.text_color, icon) + _add_jump_completions(current_line, cursor) + _add_character_name_completions(current_line) + _add_mutation_completions(current_line, cursor) update_code_completion_options(true) if get_code_completion_options().size() == 0: @@ -258,12 +202,11 @@ func _filter_code_completion_candidates(candidates: Array) -> Array: func _confirm_code_completion(replace: bool) -> void: - var completion = get_code_completion_option(get_code_completion_selected_index()) + var completion: Dictionary = get_code_completion_option(get_code_completion_selected_index()) begin_complex_operation() # Delete any part of the text that we've already typed - if completion.insert_text.length() > 0: - for i in range(0, completion.display_text.length() - completion.insert_text.length()): - backspace() + for i: int in range(0, completion.display_text.length() - completion.insert_text.length()): + backspace() # Insert the whole match insert_text_at_caret(completion.display_text) end_complex_operation() @@ -275,26 +218,221 @@ func _confirm_code_completion(replace: bool) -> void: call_deferred("cancel_code_completion") -#region Helpers +#region Completion Helpers + + +# Add completions for jump targets (=> and =><). +func _add_jump_completions(current_line: String, cursor: Vector2) -> void: + if not ("=> " in current_line or "=>< " in current_line): return + if cursor.x <= current_line.find("=>"): return + var prompt: String = current_line.split("=>")[1] + if prompt.begins_with("< "): + prompt = prompt.substr(2) + else: + prompt = prompt.substr(1) + + if "=> " in current_line: + if _matches_prompt(prompt, "end"): + add_code_completion_option(CodeEdit.KIND_CLASS, "END", "END".substr(prompt.length()), theme_overrides.text_color, get_theme_icon("Stop", "EditorIcons")) + if _matches_prompt(prompt, "end!"): + add_code_completion_option(CodeEdit.KIND_CLASS, "END!", "END!".substr(prompt.length()), theme_overrides.text_color, get_theme_icon("Stop", "EditorIcons")) + + # Get all titles, including those in imports + for title: String in DMCompiler.get_titles_in_text(text, main_view.current_file_path): + # Ignore any imported titles that aren't resolved to human readable. + if title.to_int() > 0: + continue + elif "/" in title: + var bits: PackedStringArray = title.split("/") + if _matches_prompt(prompt, bits[0]) or _matches_prompt(prompt, bits[1]): + add_code_completion_option(CodeEdit.KIND_CLASS, title, title.substr(prompt.length()), theme_overrides.text_color, get_theme_icon("CombineLines", "EditorIcons")) + elif _matches_prompt(prompt, title): + add_code_completion_option(CodeEdit.KIND_CLASS, title, title.substr(prompt.length()), theme_overrides.text_color, get_theme_icon("ArrowRight", "EditorIcons")) + + +# Add completions for character names at the start of dialogue lines. +func _add_character_name_completions(current_line: String) -> void: + # Ignore names on mutation lines + for prefix: String in MUTATION_PREFIXES: + if current_line.strip_edges().begins_with(prefix): + return + + var name_so_far: String = WEIGHTED_RANDOM_PREFIX.sub(current_line.strip_edges(), "") + if name_so_far == "" or name_so_far[0].to_upper() != name_so_far[0]: + return + + var names: PackedStringArray = get_character_names(name_so_far) + for character_name: String in names: + add_code_completion_option(CodeEdit.KIND_CLASS, character_name + ": ", character_name.substr(name_so_far.length()) + ": ", theme_overrides.text_color, get_theme_icon("Sprite2D", "EditorIcons")) + + +# Add state/mutation completions. +func _add_mutation_completions(current_line: String, cursor: Vector2) -> void: + # Check for inline mutation context first (e.g., "Nathan: Hello [$> SomeGlobal.") + var inline_context: Dictionary = _get_inline_mutation_context(current_line, cursor.x) + var mutation_expression: String = "" + var is_inline_mutation: bool = not inline_context.is_empty() + var is_using_line: bool = false + + if is_inline_mutation: + mutation_expression = inline_context.get("expression", "") + else: + # Match autoloads on full mutation lines (MUTATION_PREFIXES + "using ") + for prefix in MUTATION_PREFIXES + PackedStringArray(["using "]): + if current_line.strip_edges().begins_with(prefix) and cursor.x > current_line.find(prefix): + mutation_expression = current_line.substr(0, cursor.x).strip_edges().substr(3) + is_using_line = current_line.strip_edges().begins_with("using ") + break + + if mutation_expression == "" and not is_inline_mutation: + return -# Get the current caret as a Vector2 + # Find the last token (the part being typed) + var possible_prompt: String = mutation_expression.reverse() + possible_prompt = possible_prompt.substr(0, possible_prompt.find(" ")) + possible_prompt = possible_prompt.substr(0, possible_prompt.find("(")) + possible_prompt = possible_prompt.reverse() + var segments: PackedStringArray = possible_prompt.split(".") + var auto_completes: Array[Dictionary] = [] + + if segments.size() == 1: + # Suggest autoloads and state shortcuts + auto_completes = _get_autoload_completions(segments[0]) + elif not is_using_line: + if not segments[0] in _autoloads.keys(): + # See if the first segment is a property of a shortcut + var shortcut: String = _find_shortcut_with_member(segments[0]) + if not shortcut.is_empty(): + segments.insert(0, shortcut) + # Suggest members of an autoload or nested property + auto_completes = _get_member_completions(segments) + + var prompt: String = segments[-1].to_lower() + + # Add true/false + if prompt.length() > 1: + var icon: Texture2D = _get_icon_for_type("keyword") + var color: Color = theme_overrides.conditions_color + if "true".contains(prompt): + add_code_completion_option(CodeEdit.KIND_CONSTANT, "true", "true".substr(prompt.length()), color, icon) + if "false".contains(prompt): + add_code_completion_option(CodeEdit.KIND_CONSTANT, "false", "false".substr(prompt.length()), color, icon) + + auto_completes.sort_custom(func(a, b): + return a.text.to_lower().similarity(prompt) > b.text.to_lower().similarity(prompt) + ) + for auto_complete: Dictionary in auto_completes: + var icon: Texture2D = _get_icon_for_type(auto_complete.type) + var display_text: String = auto_complete.text + if auto_complete.type == "method": + display_text += "()" + var insert: String = display_text.substr(auto_complete.prompt.length()) + add_code_completion_option(CodeEdit.KIND_CLASS, display_text, insert, theme_overrides.text_color, icon) + + +# Find the shortcut that a member name belongs to. +func _find_shortcut_with_member(member_name: String) -> String: + for autoload: String in _get_state_shortcuts(): + for member: Dictionary in _get_members_for_base_script(autoload): + if member.name == member_name: + return autoload + return "" + + +# Get completions for autoload names and state shortcut members. +func _get_autoload_completions(prompt: String) -> Array[Dictionary]: + var completions: Array[Dictionary] = [] + for autoload: String in _autoloads.keys(): + if _matches_prompt(prompt, autoload): + completions.append({ prompt = prompt, text = autoload, type = "script" }) + for autoload: String in _get_state_shortcuts(): + for member: Dictionary in _get_members_for_base_script(autoload): + if _matches_prompt(prompt, member.name): + completions.append({ prompt = prompt, text = member.name, type = member.type }) + return completions + + +# Get completions for members of an autoload or nested property chain. +func _get_member_completions(segments: PackedStringArray) -> Array[Dictionary]: + var completions: Array[Dictionary] = [] + var prompt: String = segments[-1] + var members: Array[Dictionary] = [] + + if segments.size() == 2: + # Direct autoload property access (e.g., "SomeGlobal.property") + members = _get_members_for_base_script(segments[0]) + else: + # Nested property access (e.g., "SomeGlobal.a_class_property.nested") + var chain_segments: PackedStringArray = segments.slice(0, segments.size() - 1) + var resolved_script: Variant = _resolve_script_for_property_chain(chain_segments) + if resolved_script != null: + members = _get_members_for_script(resolved_script) + + for member: Dictionary in members: + if _matches_prompt(prompt, member.name): + completions.append({ prompt = prompt, text = member.name, type = member.type }) + return completions + + +# Get the appropriate icon for a member type. +func _get_icon_for_type(type: String) -> Texture2D: + match type: + "keyword": + return get_theme_icon("CodeHighlighter", "EditorIcons") + "script": + return get_theme_icon("Script", "EditorIcons") + "property": + return get_theme_icon("MemberProperty", "EditorIcons") + "method": + return get_theme_icon("MemberMethod", "EditorIcons") + "signal": + return get_theme_icon("MemberSignal", "EditorIcons") + "constant": + return get_theme_icon("MemberConstant", "EditorIcons") + "enum": + return get_theme_icon("Enum", "EditorIcons") + return null + + +#endregion + +#region Cursor Helpers + + +## Get the current caret position as a Vector2 (x=column, y=line). func get_cursor() -> Vector2: return Vector2(get_caret_column(), get_caret_line()) -# Set the caret from a Vector2 +## Set the caret position from a Vector2 (x=column, y=line). func set_cursor(from_cursor: Vector2) -> void: set_caret_line(from_cursor.y, false) set_caret_column(from_cursor.x, false) -# Check if a prompt is the start of a string without actually being that string -func matches_prompt(prompt: String, matcher: String) -> bool: - return prompt.length() < matcher.length() and matcher.to_lower().begins_with(prompt.to_lower()) +# Check if a prompt fuzzy-matches a candidate. +func _matches_prompt(prompt: String, candidate: String) -> bool: + if prompt.length() > candidate.length(): return false + if prompt.is_empty(): return true + # Fuzzy match characters in order + candidate = candidate.to_lower() + var next_index: int = 0 + for char: String in prompt.to_lower(): + next_index = candidate.find(char, next_index) + 1 + if next_index == 0: + return false + return true -func get_state_shortcuts() -> PackedStringArray: + +#endregion + +#region Autoload and Script Helpers + + +# Get autoload shortcuts from settings and "using" clauses. +func _get_state_shortcuts() -> PackedStringArray: # Get any shortcuts defined in settings var shortcuts: PackedStringArray = DMSettings.get_setting(DMSettings.STATE_AUTOLOAD_SHORTCUTS, []) # Check for "using" clauses @@ -303,26 +441,64 @@ func get_state_shortcuts() -> PackedStringArray: if found: shortcuts.append(found.strings[found.names.state]) # Check for any other script sources - for extra_script_source in DMSettings.get_setting(DMSettings.EXTRA_AUTO_COMPLETE_SCRIPT_SOURCES, []): - shortcuts.append(extra_script_source) + for extra_script_source: String in DMSettings.get_setting(DMSettings.EXTRA_AUTO_COMPLETE_SCRIPT_SOURCES, []): + if extra_script_source: + shortcuts.append(extra_script_source) return shortcuts -func get_members_for_autoload(autoload_name: String) -> Array[Dictionary]: +# Get all members (methods, properties, signals, constants) for an autoload. +func _get_members_for_base_script(base_script_name: String) -> Array[Dictionary]: # Debounce method list lookups - if _autoload_member_cache.has(autoload_name) and _autoload_member_cache.get(autoload_name).get("at") > Time.get_ticks_msec() - 5000: - return _autoload_member_cache.get(autoload_name).get("members") + if _autoload_member_cache.has(base_script_name) \ + and _autoload_member_cache.get(base_script_name).get("at") > Time.get_ticks_msec() - 10000: + return _autoload_member_cache.get(base_script_name).get("members") - if not _autoloads.has(autoload_name) and not autoload_name.begins_with("res://") and not autoload_name.begins_with("uid://"): return [] + if not _autoloads.has(base_script_name) \ + and not base_script_name.begins_with("res://") \ + and not base_script_name.begins_with("uid://"): + return [] + + var autoload: Variant = load(_autoloads.get(base_script_name, base_script_name)) + if autoload is PackedScene: + var node: Node = autoload.instantiate() + autoload = node.get_script() + node.free() + + if autoload == null: return [] - var autoload = load(_autoloads.get(autoload_name, autoload_name)) var script: Script = autoload if autoload is Script else autoload.get_script() if not is_instance_valid(script): return [] + var members: Array[Dictionary] = _get_members_for_script(script) + + _autoload_member_cache[base_script_name] = { + at = Time.get_ticks_msec(), + members = members + } + + return members + + +# Get all members (methods, properties, signals, constants) for a Script. +func _get_members_for_script(script: Variant) -> Array[Dictionary]: var members: Array[Dictionary] = [] - if script.resource_path.ends_with(".gd"): + + # Its an enum: + if script is Dictionary: + for key: String in script.keys(): + members.append({ + name = key, + type = "enum" + }) + return members + + # Otherwise its a script + if not is_instance_valid(script): return [] + + if script.resource_path.is_empty() or script.resource_path.ends_with(".gd"): for m: Dictionary in script.get_script_method_list(): if not m.name.begins_with("@"): members.append({ @@ -330,10 +506,12 @@ func get_members_for_autoload(autoload_name: String) -> Array[Dictionary]: type = "method" }) for m: Dictionary in script.get_script_property_list(): - members.append({ - name = m.name, - type = "property" - }) + if not m.name.ends_with(".gd") and not m.name.contains("Built-in"): + members.append({ + name = m.name, + type = "property", + "class_name" = m.get("class_name", "") + }) for m: Dictionary in script.get_script_signal_list(): members.append({ name = m.name, @@ -344,24 +522,420 @@ func get_members_for_autoload(autoload_name: String) -> Array[Dictionary]: name = c, type = "constant" }) + + # Check for static properties + for line: String in script.source_code.split("\n"): + var matching: RegExMatch = STATIC_REGEX.search(line) + if matching: + members.append({ + name = matching.strings[matching.names.property], + type = "property" + }) elif script.resource_path.ends_with(".cs"): - var dotnet = load(Engine.get_meta("DialogueManagerPlugin").get_plugin_path() + "/DialogueManager.cs").new() - for m: Dictionary in dotnet.GetMembersForAutoload(script): + var dotnet: RefCounted = load(DMPlugin.get_plugin_path() + "/DialogueManager.cs").new() + for m: Dictionary in dotnet.GetMembersForScript(script): members.append(m) - _autoload_member_cache[autoload_name] = { - at = Time.get_ticks_msec(), - members = members + return members + + +# Get the Script for a given class name. +func _get_script_for_class_name(class_name_to_find: String) -> Script: + if class_name_to_find == "": return null + + for class_data: Dictionary in ProjectSettings.get_global_class_list(): + if class_data.get(&"class") == class_name_to_find: + return load(class_data.path) + + return null + + +# Get method info (args, return type) for a method in a Script. +func _get_method_info_from_script(script: Script, method_name: String) -> Dictionary: + if not is_instance_valid(script): return {} + + if script.resource_path.ends_with(".gd"): + for m: Dictionary in script.get_script_method_list(): + if m.name == method_name: + return m + elif script.resource_path.ends_with(".cs"): + var dotnet: RefCounted = load(DMPlugin.get_plugin_path() + "/DialogueManager.cs").new() + for m: Dictionary in dotnet.GetMembersForScript(script): + if m.get("name") == method_name and m.get("type") == "method": + return m + + return {} + + +# Format method arguments into a hint string for display. +func _format_method_hint(method_info: Dictionary) -> String: + if method_info.is_empty(): return "" + + var args: Array = method_info.get("args", []) + if args.size() == 0: return "" + + var hint_parts: PackedStringArray = [] + for arg: Dictionary in args: + var arg_name: String = arg.get("name", "") + var arg_type: int = arg.get("type", TYPE_NIL) + var arg_class_name: String = arg.get("class_name", "") + + var type_name: String = "" + if arg_class_name != "": + type_name = arg_class_name + elif arg_type != TYPE_NIL: + type_name = type_string(arg_type) + + if type_name != "": + hint_parts.append("%s: %s" % [arg_name, type_name]) + else: + hint_parts.append(arg_name) + + return ", ".join(hint_parts) + + +#endregion + +#region Symbol Resolution Helpers + + +# Find the line number where a member is defined in a script's source code. +func _find_definition_in_script(script: Script, member_name: String) -> int: + if not is_instance_valid(script): return -1 + + var lines: PackedStringArray = script.source_code.split("\n") + + var method_regex: RegEx = RegEx.create_from_string("^\\s*func\\s+" + member_name + "\\s*\\(") + var property_regex: RegEx = RegEx.create_from_string("^\\s*var\\s+" + member_name + "\\s*[:\\s=]") + var signal_regex: RegEx = RegEx.create_from_string("^\\s*signal\\s+" + member_name + "\\s*[\\(\\s]") + var const_regex: RegEx = RegEx.create_from_string("^\\s*const\\s+" + member_name + "\\s*[:\\s=]") + var enum_regex: RegEx = RegEx.create_from_string("^\\s*enum\\s+" + member_name + "[\\s$]") + var inner_class_regex: RegEx = RegEx.create_from_string("^\\s*class\\s+" + member_name + ":") + + for i: int in range(lines.size()): + var line: String = lines[i] + if method_regex.search(line) \ + or property_regex.search(line) \ + or signal_regex.search(line) \ + or const_regex.search(line) \ + or enum_regex.search(line) \ + or inner_class_regex.search(line): + # Editor line numbers start at 1 + return i + 1 + + return -1 + + +# Resolve the symbol at a given position in a mutation line for definition lookup. +func _resolve_mutation_symbol_at_position(line_text: String, column: int) -> Dictionary: + if not _is_in_mutation_context(line_text, column): + return {} + + var symbol: String = get_word_at_pos(get_local_mouse_pos()) + if symbol.is_empty(): return {} + + # Find the full chain by looking backwards from the token start for dots and identifiers + var token_start: int = column + while token_start > 0 and line_text[token_start - 1].is_valid_ascii_identifier(): + token_start -= 1 + + var chain_start: int = token_start + while chain_start > 0: + var prev_char: String = line_text[chain_start - 1] + if prev_char == ".": + chain_start -= 1 + # Continue backwards to get the identifier before the dot + while chain_start > 0 and line_text[chain_start - 1].is_valid_ascii_identifier(): + chain_start -= 1 + else: + break + + var full_chain: String = line_text.substr(chain_start, token_start + symbol.length() - chain_start) + # Remove any trailing parentheses content + if "(" in full_chain: + full_chain = full_chain.substr(0, full_chain.find("(")) + + var segments: PackedStringArray = full_chain.split(".") + + # Check if it starts with an autoload + if not segments[0] in _autoloads.keys(): + var shortcut: String = _find_shortcut_with_member(segments[0]) + if shortcut.is_empty(): + return {} + else: + segments.insert(0, shortcut) + + # The symbol we clicked on is the last segment + var member_name: String = segments[-1] + + # Resolve the script that contains this member + var target_script: Variant = null + if segments.size() == 1 and segments[0] in _autoloads.keys(): + member_name = "class_name" + var target: Variant = load(_autoloads.get(segments[0])) + if target is PackedScene: + var node: Node = target.instantiate() + target = node.get_script() + node.free() + target_script = target if target is Script else target.get_script() + else: + var object_segments: PackedStringArray = segments.slice(0, segments.size() - 1) + target_script = _resolve_script_for_property_chain(object_segments) + + if target_script == null: + return {} + elif target_script is Dictionary: + return { + "script": _resolve_script_for_property_chain(segments.slice(0, -2)), + "member_name": segments.slice(0, -1)[segments.size() - 2], + "symbol": symbol + } + # C# symbol lookups aren't supported + if target_script is Script and target_script.resource_path.ends_with(".cs"): + return {} + + return { + "script": target_script, + "member_name": member_name, + "symbol": symbol } - return members +# Update the code hint to show method parameter information. +func _update_code_hint() -> void: + var cursor: Vector2 = get_cursor() + var current_line: String = get_line(cursor.y) + var text_before_cursor: String = current_line.substr(0, cursor.x) + + # Check if we're in a mutation context (inline or full line) + var inline_context: Dictionary = _get_inline_mutation_context(current_line, cursor.x) + if not _is_in_mutation_context(current_line, cursor.x): + set_code_hint("") + return + + # For inline mutations, scope to the bracket content + var expression_text: String = text_before_cursor + if not inline_context.is_empty(): + var bracket_start: int = inline_context.get("bracket_start", 0) + expression_text = current_line.substr(bracket_start + 1, cursor.x - bracket_start - 1) + + # Check if cursor is inside parentheses by counting unmatched opening parens + var paren_depth: int = 0 + var last_open_parenthesis_pos: int = -1 + for i: int in range(expression_text.length()): + if expression_text[i] == "(": + paren_depth += 1 + last_open_parenthesis_pos = i + elif expression_text[i] == ")": + paren_depth -= 1 + + if paren_depth <= 0 or last_open_parenthesis_pos == -1: + set_code_hint("") + return + + # Extract the expression before the opening parenthesis + var expression_before_parenthesis: String = expression_text.substr(0, last_open_parenthesis_pos).strip_edges() + + # Find the method chain (last token before the paren) + var method_chain: String = "" + for i: int in range(expression_before_parenthesis.length() - 1, -1, -1): + var c: String = expression_before_parenthesis[i] + if c == " " or c == "(" or c == "," or c == "=" or c == ">" or c == "!": + method_chain = expression_before_parenthesis.substr(i + 1) + break + if i == 0: + method_chain = expression_before_parenthesis + + if method_chain == "": + set_code_hint("") + return + + # Parse the method chain into segments + var segments: PackedStringArray = method_chain.split(".") + if segments.is_empty(): + set_code_hint("") + return + + # The last segment is the method name + var method_name: String = segments[-1] + + # Check if it starts with an autoload + if not segments[0] in _autoloads.keys(): + var shortcut: String = _find_shortcut_with_member(segments[0]) + if shortcut.is_empty(): + set_code_hint("") + return + else: + segments.insert(0, shortcut) + + # Resolve the script for the object the method is called on + var object_segments: PackedStringArray = segments.slice(0, segments.size() - 1) + var target_script: Variant = _resolve_script_for_property_chain(object_segments) + + if target_script == null or not target_script is Script: + set_code_hint("") + return + + # Get the method info and format the hint + var method_info: Dictionary = _get_method_info_from_script(target_script, method_name) + var hint: String = _format_method_hint(method_info) -## Get a list of titles from the current text + set_code_hint(hint) + + +#endregion + +#region Mutation Context Helpers + + +# Get the inline mutation context if the cursor is inside an inline mutation bracket. +# Returns a dictionary with "expression" key containing the text to autocomplete, +# or an empty dictionary if not in an inline mutation context. +func _get_inline_mutation_context(line: String, cursor_x: int) -> Dictionary: + # Find all bracket positions and determine if cursor is inside one + var bracket_depth: int = 0 + var bracket_start: int = -1 + var bracket_content_start: int = -1 + + for i: int in range(line.length()): + if i >= cursor_x: + break + + if line[i] == "[": + bracket_depth += 1 + if bracket_depth == 1: + bracket_start = i + bracket_content_start = i + 1 + elif line[i] == "]": + bracket_depth -= 1 + if bracket_depth == 0: + bracket_start = -1 + bracket_content_start = -1 + + # Not inside brackets + if bracket_start == -1 or bracket_content_start == -1: + return {} + + # Get the content inside the brackets up to cursor + var bracket_content: String = line.substr(bracket_content_start, cursor_x - bracket_content_start) + + # Check if this is a mutation tag + for prefix: String in INLINE_MUTATION_PREFIXES: + if bracket_content.begins_with(prefix): + # Return the expression part (after the tag) + var expression: String = bracket_content.substr(prefix.length()) + return { "expression": expression, "bracket_start": bracket_start } + + return {} + + +# Check if the cursor is in a mutation context (either inline or full mutation line). +func _is_in_mutation_context(line: String, cursor_x: int) -> bool: + if not _get_inline_mutation_context(line, cursor_x).is_empty(): + return true + for prefix: String in MUTATION_PREFIXES: + if line.strip_edges().begins_with(prefix): + return true + return false + + +# Resolve the Script for a chain of property accesses (e.g., "Autoload.prop1.prop2"). +func _resolve_script_for_property_chain(segments: PackedStringArray) -> Variant: + if segments.size() == 0: return null + + var autoload: Variant = null + + if segments[0].begins_with("uid://") or segments[0].begins_with("res://"): + autoload = load(segments[0]) + elif _autoloads.has(segments[0]): + autoload = load(_autoloads.get(segments[0])) + else: + return null + + if autoload is PackedScene: + var node: Node = autoload.instantiate() + autoload = node.get_script() + node.free() + elif autoload == null: + return null + elif not autoload is Script: + autoload = autoload.get_script() + + var current_script: Variant = autoload + + if not is_instance_valid(current_script): return null + if (segments.size() == 1): return current_script + + # Walk through each property in the chain (except the last one which is what we're completing) + for i: int in range(1, segments.size()): + var property_name: String = segments[i] + var found_property: bool = false + + # Regular properties + for property_info: Dictionary in current_script.get_script_property_list(): + if property_info.name == property_name: + var prop_class_name: String = property_info.get("class_name", "") + if prop_class_name != "": + current_script = _get_script_for_class_name(prop_class_name) + if current_script == null: + return null + found_property = true + break + else: + # Property doesn't have a class type, can't go deeper + return null + + # Check for inner classes and enums + if not found_property: + for constant: String in current_script.get_script_constant_map(): + if constant == property_name: + var constant_value: Variant = current_script.get_script_constant_map().get(constant) + # Inner class + if constant_value is Script: + current_script = constant_value + found_property = true + break + # Enum + if constant_value is Dictionary: + current_script = constant_value + found_property = true + break + else: + # Constant isn't an enum or an inner class + return null + + # Static properties. NOTE: Godot doesn't programatically find static properties + # so we have to manually find them. + if not found_property and current_script is Script and current_script.source_code.contains("static var"): + for line: String in current_script.source_code.split("\n"): + var matched: RegExMatch = STATIC_REGEX.search(line) + if matched and matched.strings[matched.names.property] == property_name: + if matched.names.has("type"): + var type: String = matched.strings[matched.names.type] + current_script = _get_script_for_class_name(type) + if current_script == null: + return null + found_property = true + break + else: + return null + + if not found_property: + return null + + return current_script + + +#endregion + +#region Title and Character Helpers + + +## Get a list of titles from the current text. func get_titles() -> PackedStringArray: - var titles = PackedStringArray([]) - var lines = text.split("\n") - for line in lines: + var titles: PackedStringArray = PackedStringArray([]) + var lines: PackedStringArray = text.split("\n") + for line: String in lines: if line.strip_edges().begins_with("~ "): titles.append(line.strip_edges().substr(2)) @@ -370,10 +944,10 @@ func get_titles() -> PackedStringArray: ## Work out what the next title above the current line is func check_active_title() -> void: - var line_number = get_caret_line() - var lines = text.split("\n") + var line_number: int = get_caret_line() + var lines: PackedStringArray = text.split("\n") # Look at each line above this one to find the next title line - for i in range(line_number, -1, -1): + for i: int in range(line_number, -1, -1): if lines[i].begins_with("~ "): active_title_change.emit(lines[i].replace("~ ", "")) return @@ -381,27 +955,42 @@ func check_active_title() -> void: active_title_change.emit("") -# Move the caret line to match a given title -func go_to_title(title: String) -> void: +## Move the caret line to match a given title. +func go_to_title(title: String, create_if_none: bool = false) -> void: + var found_title: bool = false + var lines = text.split("\n") - for i in range(0, lines.size()): + for i: int in range(0, lines.size()): if lines[i].strip_edges() == "~ " + title: + found_title = true set_caret_line(i) center_viewport_to_caret() + if create_if_none and not found_title: + text += "\n\n\n~ %s\n\n=> END" % [title] + set_caret_line(text.split("\n").size() - 2) + center_viewport_to_caret() + +## Get all character names from the dialogue that match the given prefix. func get_character_names(beginning_with: String) -> PackedStringArray: var names: PackedStringArray = [] var lines = text.split("\n") - for line in lines: + for line: String in lines: + if line.strip_edges().begins_with("#"): continue # skip comments if ": " in line: - var name: String = WEIGHTED_RANDOM_PREFIX.sub(line.split(": ")[0].strip_edges(), "") - if not name in names and matches_prompt(beginning_with, name): - names.append(name) + var character_name: String = WEIGHTED_RANDOM_PREFIX.sub(line.split(": ")[0].strip_edges(), "") + if not character_name in names and _matches_prompt(beginning_with, character_name): + names.append(character_name) return names -# Mark a line as an error or not +#endregion + +#region Text Editing Helpers + + +## Mark a line as an error or not. func mark_line_as_error(line_number: int, is_error: bool) -> void: # Lines display counting from 1 but are actually indexed from 0 line_number -= 1 @@ -412,33 +1001,33 @@ func mark_line_as_error(line_number: int, is_error: bool) -> void: set_line_background_color(line_number, theme_overrides.error_line_color) set_line_gutter_icon(line_number, 0, get_theme_icon("StatusError", "EditorIcons")) else: - set_line_background_color(line_number, theme_overrides.background_color) + set_line_background_color(line_number, Color(0, 0, 0, 0)) set_line_gutter_icon(line_number, 0, null) -# Insert or wrap some bbcode at the caret/selection +## Insert or wrap some bbcode at the caret/selection. func insert_bbcode(open_tag: String, close_tag: String = "") -> void: if close_tag == "": insert_text_at_caret(open_tag) grab_focus() else: - var selected_text = get_selected_text() + var selected_text: String = get_selected_text() insert_text_at_caret("%s%s%s" % [open_tag, selected_text, close_tag]) grab_focus() set_caret_column(get_caret_column() - close_tag.length()) -# Insert text at current caret position -# Move Caret down 1 line if not => END -func insert_text_at_cursor(text: String) -> void: - if text != "=> END": - insert_text_at_caret(text+"\n") - set_caret_line(get_caret_line()+1) + +## Insert text at current caret position. Moves caret down 1 line if not "=> END". +func insert_text_at_cursor(text_to_insert: String) -> void: + if text_to_insert != "=> END": + insert_text_at_caret(text_to_insert + "\n") + set_caret_line(get_caret_line() + 1) else: - insert_text_at_caret(text) + insert_text_at_caret(text_to_insert) grab_focus() -# Toggle the selected lines as comments +## Toggle the selected lines as comments. func toggle_comment() -> void: begin_complex_operation() @@ -467,7 +1056,7 @@ func toggle_comment() -> void: to_column = to_column }) - for line_number in range(from_line, to_line + 1): + for line_number: int in range(from_line, to_line + 1): if line_offsets.has(line_number): continue var line_text: String = get_line(line_number) @@ -504,9 +1093,9 @@ func toggle_comment() -> void: text_changed.emit() -# Remove the current line +## Remove the current line. func delete_current_line() -> void: - var cursor = get_cursor() + var cursor: Vector2 = get_cursor() if get_line_count() == 1: select_all() elif cursor.y == 0: @@ -517,12 +1106,12 @@ func delete_current_line() -> void: text_changed.emit() -# Move the selected lines up or down +## Move the selected lines up or down. func move_line(offset: int) -> void: offset = clamp(offset, -1, 1) - var starting_scroll := scroll_vertical - var cursor = get_cursor() + var starting_scroll: float = scroll_vertical + var cursor: Vector2 = get_cursor() var reselect: bool = false var from: int = cursor.y var to: int = cursor.y @@ -531,14 +1120,14 @@ func move_line(offset: int) -> void: from = get_selection_from_line() to = get_selection_to_line() - var lines := text.split("\n") + var lines: PackedStringArray = text.split("\n") # Prevent the lines from being out of bounds if from + offset < 0 or to + offset >= lines.size(): return - var target_from_index = from - 1 if offset == -1 else to + 1 - var target_to_index = to if offset == -1 else from - var line_to_move = lines[target_from_index] + var target_from_index: int = from - 1 if offset == -1 else to + 1 + var target_to_index: int = to if offset == -1 else from + var line_to_move: String = lines[target_from_index] lines.remove_at(target_from_index) lines.insert(target_to_index, line_to_move) @@ -562,11 +1151,24 @@ func move_line(offset: int) -> void: func _on_project_settings_changed() -> void: _autoloads = {} + + # Add any actual autoloads var project = ConfigFile.new() project.load("res://project.godot") - for autoload in project.get_section_keys("autoload"): - if autoload != "DialogueManager": - _autoloads[autoload] = project.get_value("autoload", autoload).substr(1) + if project.has_section("autoload"): + for autoload: String in project.get_section_keys("autoload"): + if autoload != "DialogueManager": + _autoloads[autoload] = project.get_value("autoload", autoload).substr(1) + + # Add project-defined classes if they contain static properties or methods + var plugin_path: String = DMPlugin.get_plugin_path() + if not plugin_path.is_empty(): + for script_info: Dictionary in ProjectSettings.get_global_class_list(): + if not script_info.path.begins_with(plugin_path): + var script: Script = load(script_info.path) + var static_match: RegExMatch = STATIC_CONTENT_REGEX.search(script.source_code) + if static_match: + _autoloads[script_info.class] = script_info.path func _on_code_edit_symbol_validate(symbol: String) -> void: @@ -574,22 +1176,62 @@ func _on_code_edit_symbol_validate(symbol: String) -> void: set_symbol_lookup_word_as_valid(true) return - for title in get_titles(): + for title: String in get_titles(): if symbol == title: set_symbol_lookup_word_as_valid(true) return + + # Check if it's a mutation line symbol + var cursor: Vector2 = get_line_column_at_pos(get_local_mouse_pos()) + var line_text: String = get_line(cursor.y) + var symbol_info: Dictionary = _resolve_mutation_symbol_at_position(line_text, cursor.x) + if not symbol_info.is_empty() and symbol_info.get("symbol") == symbol: + var script: Script = symbol_info.get("script") + var member_name: String = symbol_info.get("member_name") + if member_name == "class_name": + set_symbol_lookup_word_as_valid(true) + return + else: + var line_number: int = _find_definition_in_script(script, member_name) + if line_number > 0: + set_symbol_lookup_word_as_valid(true) + return + set_symbol_lookup_word_as_valid(false) func _on_code_edit_symbol_lookup(symbol: String, line: int, column: int) -> void: if symbol.begins_with("res://") and symbol.ends_with(".dialogue"): external_file_requested.emit(symbol, "") - else: - go_to_title(symbol) + return + + # Check if it's a title + for title: String in get_titles(): + if symbol == title: + go_to_title(symbol) + return + + # Check if it's a mutation line symbol + var line_text: String = get_line(line) + var symbol_info: Dictionary = _resolve_mutation_symbol_at_position(line_text, column) + if not symbol_info.is_empty() and symbol_info.get("symbol") == symbol: + var script: Script = symbol_info.get("script") + var member_name: String = symbol_info.get("member_name") + if member_name == "class_name": + EditorInterface.edit_script(script, 1, 0, true) + EditorInterface.set_main_screen_editor.call_deferred("Script") + else: + var line_number: int = _find_definition_in_script(script, member_name) + if line_number > 0: + # Open the script in the editor + EditorInterface.edit_script(script, line_number, 0, true) + EditorInterface.set_main_screen_editor.call_deferred("Script") + return func _on_code_edit_text_changed() -> void: request_code_completion(true) + _update_code_hint() func _on_code_edit_text_set() -> void: @@ -599,6 +1241,7 @@ func _on_code_edit_text_set() -> void: func _on_code_edit_caret_changed() -> void: check_active_title() last_selected_text = get_selected_text() + _update_code_hint() func _on_code_edit_gutter_clicked(line: int, gutter: int) -> void: diff --git a/addons/dialogue_manager/components/code_edit.tscn b/addons/dialogue_manager/components/code_edit.tscn index 0c25707bfc..2e0c55649c 100644 --- a/addons/dialogue_manager/components/code_edit.tscn +++ b/addons/dialogue_manager/components/code_edit.tscn @@ -1,12 +1,12 @@ -[gd_scene load_steps=4 format=3 uid="uid://civ6shmka5e8u"] +[gd_scene format=3 uid="uid://civ6shmka5e8u"] [ext_resource type="Script" uid="uid://klpiq4tk3t7a" path="res://addons/dialogue_manager/components/code_edit_syntax_highlighter.gd" id="1_58cfo"] [ext_resource type="Script" uid="uid://djeybvlb332mp" path="res://addons/dialogue_manager/components/code_edit.gd" id="1_g324i"] -[sub_resource type="SyntaxHighlighter" id="SyntaxHighlighter_cobxx"] +[sub_resource type="SyntaxHighlighter" id="SyntaxHighlighter_crbvo"] script = ExtResource("1_58cfo") -[node name="CodeEdit" type="CodeEdit"] +[node name="CodeEdit" type="CodeEdit" unique_id=236286673] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -23,12 +23,12 @@ Nathan: Something set has_something = true => END" +scroll_past_end_of_file = true +minimap_draw = true +syntax_highlighter = SubResource("SyntaxHighlighter_crbvo") highlight_all_occurrences = true highlight_current_line = true draw_tabs = true -syntax_highlighter = SubResource("SyntaxHighlighter_cobxx") -scroll_past_end_of_file = true -minimap_draw = true symbol_lookup_on_click = true line_folding = true gutters_draw_line_numbers = true diff --git a/addons/dialogue_manager/components/code_edit_syntax_highlighter.gd b/addons/dialogue_manager/components/code_edit_syntax_highlighter.gd index 3f4e0d9323..666a2ceaa0 100644 --- a/addons/dialogue_manager/components/code_edit_syntax_highlighter.gd +++ b/addons/dialogue_manager/components/code_edit_syntax_highlighter.gd @@ -62,7 +62,7 @@ func _get_line_syntax_highlighting(line: int) -> Dictionary: _highlight_expression(expression, colors, index) DMConstants.TYPE_MUTATION: - colors[0] = { color = theme.mutations_color } + colors[0] = { color = theme.mutations_line_color } index = text.find(" ") var expression: Array = expression_parser.tokenise(text.substr(index), DMConstants.TYPE_MUTATION, 0) if expression.size() == 0: @@ -126,11 +126,11 @@ func _get_line_syntax_highlighting(line: int) -> Dictionary: colors[index + bbcode.end + 1] = { color = theme.text_color } else: colors[index + bbcode.start] = { color = theme.symbols_color } - if tag.begins_with("do") or tag.begins_with("set") or tag.begins_with("if"): + if tag.begins_with("$>") or tag.begins_with("do") or tag.begins_with("set") or tag.begins_with("if"): if tag.begins_with("if"): colors[index + bbcode.start + 1] = { color = theme.conditions_color } else: - colors[index + bbcode.start + 1] = { color = theme.mutations_color } + colors[index + bbcode.start + 1] = { color = theme.mutations_line_color } var expression: Array = expression_parser.tokenise(code, DMConstants.TYPE_MUTATION, bbcode.start + bbcode.code.length()) if expression.size() == 0 or expression[0].type == DMConstants.TYPE_ERROR: colors[index + bbcode.start + tag.length() + 1] = { color = theme.critical_color } @@ -165,7 +165,7 @@ func _highlight_expression(tokens: Array, colors: Dictionary, index: int) -> int DMConstants.TOKEN_COMMENT: colors[index + token.i] = { color = theme.comments_color } - DMConstants.TOKEN_CONDITION, DMConstants.TOKEN_AND_OR: + DMConstants.TOKEN_CONDITION, DMConstants.TOKEN_AND_OR, DMConstants.TOKEN_NOT: colors[index + token.i] = { color = theme.conditions_color } DMConstants.TOKEN_VARIABLE: @@ -176,8 +176,14 @@ func _highlight_expression(tokens: Array, colors: Dictionary, index: int) -> int DMConstants.TOKEN_OPERATOR, DMConstants.TOKEN_COLON, \ DMConstants.TOKEN_COMMA, DMConstants.TOKEN_DOT, DMConstants.TOKEN_NULL_COALESCE, \ - DMConstants.TOKEN_NUMBER, DMConstants.TOKEN_ASSIGNMENT: - colors[index + token.i] = { color = theme.symbols_color } + DMConstants.TOKEN_ASSIGNMENT, DMConstants.TOKEN_COMPARISON: + if token.get("value", null) == "in": + colors[index + token.i] = { color = theme.conditions_color } + else: + colors[index + token.i] = { color = theme.symbols_color } + + DMConstants.TOKEN_NUMBER: + colors[index + token.i] = { color = theme.numbers_color } DMConstants.TOKEN_STRING: colors[index + token.i] = { color = theme.strings_color } diff --git a/addons/dialogue_manager/components/editor_property/editor_property.gd b/addons/dialogue_manager/components/editor_property/editor_property.gd index 5deef65981..9f74fe48c2 100644 --- a/addons/dialogue_manager/components/editor_property/editor_property.gd +++ b/addons/dialogue_manager/components/editor_property/editor_property.gd @@ -1,14 +1,13 @@ @tool -extends EditorProperty +class_name DMDialogueEditorProperty extends EditorProperty -const DialoguePropertyEditorControl = preload("./editor_property_control.tscn") +const DialoguePropertyEditorControl: PackedScene = preload("./editor_property_control.tscn") -var editor_plugin: EditorPlugin var control = DialoguePropertyEditorControl.instantiate() -var current_value: Resource +var current_value: DialogueResource var is_updating: bool = false @@ -17,12 +16,11 @@ func _init() -> void: control.resource = current_value - control.pressed.connect(_on_button_pressed) control.resource_changed.connect(_on_resource_changed) func _update_property() -> void: - var next_value = get_edited_object()[get_edited_property()] + var next_value: DialogueResource = get_edited_object()[get_edited_property()] # The resource might have been deleted elsewhere so check that it's not in a weird state if is_instance_valid(next_value) and not next_value.resource_path.ends_with(".dialogue"): @@ -37,12 +35,11 @@ func _update_property() -> void: is_updating = false -### Signals +#region Signals -func _on_button_pressed() -> void: - editor_plugin.edit(current_value) +func _on_resource_changed(next_resource: DialogueResource) -> void: + emit_changed(get_edited_property(), next_resource) -func _on_resource_changed(next_resource: Resource) -> void: - emit_changed(get_edited_property(), next_resource) +#endregion diff --git a/addons/dialogue_manager/components/editor_property/editor_property_control.gd b/addons/dialogue_manager/components/editor_property/editor_property_control.gd index d063d0ea03..5d30ed0e27 100644 --- a/addons/dialogue_manager/components/editor_property/editor_property_control.gd +++ b/addons/dialogue_manager/components/editor_property/editor_property_control.gd @@ -1,17 +1,18 @@ @tool + extends HBoxContainer signal pressed() -signal resource_changed(next_resource: Resource) +signal resource_changed(next_resource: DialogueResource) -const ITEM_NEW = 100 -const ITEM_QUICK_LOAD = 200 -const ITEM_LOAD = 201 -const ITEM_EDIT = 300 -const ITEM_CLEAR = 301 -const ITEM_FILESYSTEM = 400 +const ITEM_NEW: int = 100 +const ITEM_QUICK_LOAD: int = 200 +const ITEM_LOAD: int = 201 +const ITEM_EDIT: int = 300 +const ITEM_CLEAR: int = 301 +const ITEM_FILESYSTEM: int = 400 @onready var button: Button = $ResourceButton @@ -22,8 +23,6 @@ const ITEM_FILESYSTEM = 400 @onready var new_dialog: FileDialog = $NewDialog @onready var open_dialog: FileDialog = $OpenDialog -var editor_plugin: EditorPlugin - var resource: Resource: set(next_resource): resource = next_resource @@ -38,13 +37,12 @@ var quick_selected_file: String = "" func _ready() -> void: menu_button.icon = get_theme_icon("GuiDropdown", "EditorIcons") - editor_plugin = Engine.get_meta("DialogueManagerPlugin") func build_menu() -> void: menu.clear() - menu.add_icon_item(editor_plugin._get_plugin_icon(), "New Dialogue", ITEM_NEW) + menu.add_icon_item(DMPlugin.instance._get_plugin_icon(), "New Dialogue", ITEM_NEW) menu.add_separator() menu.add_icon_item(get_theme_icon("Load", "EditorIcons"), "Quick Load", ITEM_QUICK_LOAD) menu.add_icon_item(get_theme_icon("Load", "EditorIcons"), "Load", ITEM_LOAD) @@ -57,16 +55,16 @@ func build_menu() -> void: menu.size = Vector2.ZERO -### Signals +#region Signals func _on_new_dialog_file_selected(path: String) -> void: - editor_plugin.main_view.new_file(path) + DMPlugin.instance.main_view.new_file(path) is_waiting_for_file = false - if Engine.get_meta("DMCache").has_file(path): + if DMCache.has_file(path): resource_changed.emit(load(path)) else: - var next_resource: Resource = await editor_plugin.import_plugin.compiled_resource + var next_resource: DialogueResource = await DMPlugin.instance.import_plugin.compiled_resource next_resource.resource_path = path resource_changed.emit(next_resource) @@ -82,6 +80,9 @@ func _on_file_dialog_canceled() -> void: func _on_resource_button_pressed() -> void: if is_instance_valid(resource): EditorInterface.call_deferred("edit_resource", resource) + + elif menu.visible: + menu.hide() else: build_menu() menu.position = get_viewport().position + Vector2i( @@ -96,12 +97,15 @@ func _on_resource_button_resource_dropped(next_resource: Resource) -> void: func _on_menu_button_pressed() -> void: - build_menu() - menu.position = get_viewport().position + Vector2i( - menu_button.global_position.x + menu_button.size.x - menu.size.x, - 2 + menu_button.global_position.y + menu_button.size.y - ) - menu.popup() + if menu.visible: + menu.hide() + else: + build_menu() + menu.position = get_viewport().position + Vector2i( + menu_button.global_position.x + menu_button.size.x - menu.size.x, + 2 + menu_button.global_position.y + menu_button.size.y + ) + menu.popup() func _on_menu_id_pressed(id: int) -> void: @@ -112,7 +116,7 @@ func _on_menu_id_pressed(id: int) -> void: ITEM_QUICK_LOAD: quick_selected_file = "" - files_list.files = Engine.get_meta("DMCache").get_files() + files_list.files = DMCache.get_files() if resource: files_list.select_file(resource.resource_path) quick_open_dialog.popup_centered() @@ -129,8 +133,7 @@ func _on_menu_id_pressed(id: int) -> void: resource_changed.emit(null) ITEM_FILESYSTEM: - var file_system = EditorInterface.get_file_system_dock() - file_system.navigate_to_path(resource.resource_path) + EditorInterface.get_file_system_dock().navigate_to_path(resource.resource_path) func _on_files_list_file_double_clicked(file_path: String) -> void: @@ -145,3 +148,6 @@ func _on_files_list_file_selected(file_path: String) -> void: func _on_quick_open_dialog_confirmed() -> void: if quick_selected_file != "": resource_changed.emit(load(quick_selected_file)) + + +#endregion diff --git a/addons/dialogue_manager/components/editor_property/resource_button.gd b/addons/dialogue_manager/components/editor_property/resource_button.gd index 5ba33dc65d..4529886427 100644 --- a/addons/dialogue_manager/components/editor_property/resource_button.gd +++ b/addons/dialogue_manager/components/editor_property/resource_button.gd @@ -9,7 +9,7 @@ var resource: Resource: set(next_resource): resource = next_resource if resource: - icon = Engine.get_meta("DialogueManagerPlugin")._get_plugin_icon() + icon = DMPlugin.instance._get_plugin_icon() text = resource.resource_path.get_file().replace(".dialogue", "") else: icon = null diff --git a/addons/dialogue_manager/components/search_and_replace.gd b/addons/dialogue_manager/components/search_and_replace.gd index ceb40280df..756bcb2df2 100644 --- a/addons/dialogue_manager/components/search_and_replace.gd +++ b/addons/dialogue_manager/components/search_and_replace.gd @@ -37,6 +37,7 @@ var result_index: int = -1: var r = results[result_index] code_edit.set_caret_line(r[0]) code_edit.select(r[0], r[1], r[0], r[1] + r[2]) + code_edit.center_viewport_to_caret() else: result_index = -1 if is_instance_valid(code_edit): @@ -71,6 +72,7 @@ func _ready() -> void: func focus_line_edit() -> void: input.grab_focus() input.select_all() + search() func apply_theme() -> void: @@ -167,7 +169,9 @@ func _on_input_gui_input(event: InputEvent) -> void: if event is InputEventKey and event.is_pressed(): match event.as_text(): "Enter": - search(input.text) + if results.size() == 0: + search(input.text) + self.result_index = wrapi(result_index + 1, 0, results.size()) "Escape": emit_signal("close_requested") diff --git a/addons/dialogue_manager/components/title_list.tscn b/addons/dialogue_manager/components/title_list.tscn index ac2b983332..8527ca9e19 100644 --- a/addons/dialogue_manager/components/title_list.tscn +++ b/addons/dialogue_manager/components/title_list.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=2 format=3 uid="uid://ctns6ouwwd68i"] +[gd_scene format=3 uid="uid://ctns6ouwwd68i"] [ext_resource type="Script" uid="uid://d0k2wndjj0ifm" path="res://addons/dialogue_manager/components/title_list.gd" id="1_5qqmd"] diff --git a/addons/dialogue_manager/components/update_button.gd b/addons/dialogue_manager/components/update_button.gd index cf3f1b9425..29fd6cbb4b 100644 --- a/addons/dialogue_manager/components/update_button.gd +++ b/addons/dialogue_manager/components/update_button.gd @@ -63,7 +63,7 @@ func check_for_update() -> void: func _on_http_request_request_completed(result: int, response_code: int, headers: PackedStringArray, body: PackedByteArray) -> void: if result != HTTPRequest.RESULT_SUCCESS: return - var current_version: String = Engine.get_meta("DialogueManagerPlugin").get_version() + var current_version: String = DMPlugin.get_version() # Work out the next version from the releases information on GitHub var response = JSON.parse_string(body.get_string_from_utf8()) diff --git a/addons/dialogue_manager/constants.gd b/addons/dialogue_manager/constants.gd index 56b5f02e13..aec6f12cbf 100644 --- a/addons/dialogue_manager/constants.gd +++ b/addons/dialogue_manager/constants.gd @@ -122,6 +122,7 @@ const ERR_CONCURRENT_LINE_WITHOUT_ORIGIN = 139 const ERR_GOTO_NOT_ALLOWED_ON_CONCURRECT_LINES = 140 const ERR_UNEXPECTED_SYNTAX_ON_NESTED_DIALOGUE_LINE = 141 const ERR_NESTED_DIALOGUE_INVALID_JUMP = 142 +const ERR_MISSING_RESOURCE_FOR_AUTOSTART = 143 static var _current_locale: String = "" @@ -215,6 +216,8 @@ static func get_error_message(error: int) -> String: return translate(&"errors.unexpected_syntax_on_nested_dialogue_line") ERR_NESTED_DIALOGUE_INVALID_JUMP: return translate(&"errors.err_nested_dialogue_invalid_jump") + ERR_MISSING_RESOURCE_FOR_AUTOSTART: + return translate(&"errors.missing_resource_for_autostart") return translate(&"errors.unknown") diff --git a/addons/dialogue_manager/dialogue_label.gd b/addons/dialogue_manager/dialogue_label.gd index da07b45b8a..eb639b3468 100644 --- a/addons/dialogue_manager/dialogue_label.gd +++ b/addons/dialogue_manager/dialogue_label.gd @@ -9,17 +9,20 @@ class_name DialogueLabel extends RichTextLabel ## Emitted for each letter typed out. signal spoke(letter: String, letter_index: int, speed: float) -## Emitted when typing paused for a `[wait]` -signal paused_typing(duration: float) - ## Emitted when the player skips the typing of dialogue. signal skipped_typing() +## Emitted when typing starts +signal started_typing() + ## Emitted when typing finishes. signal finished_typing() +## [Deprecated] No longer emitted. +signal paused_typing(duration: float) + -# The action to press to skip typing. +## The action to press to skip typing. @export var skip_action: StringName = &"ui_cancel" ## The speed with which the text types out. @@ -44,23 +47,23 @@ var _already_mutated_indices: PackedInt32Array = [] ## The current line of dialogue. var dialogue_line: - set(next_dialogue_line): - dialogue_line = next_dialogue_line - custom_minimum_size = Vector2.ZERO - text = "" - text = dialogue_line.text + set(value): + if value != dialogue_line: + dialogue_line = value + _update_text() get: return dialogue_line ## Whether the label is currently typing itself out. var is_typing: bool = false: set(value): - var is_finished: bool = is_typing != value and value == false - is_typing = value + var is_finished: bool = _is_typing != value and value == false and visible_characters == get_total_character_count() + _is_typing = value if is_finished: finished_typing.emit() get: - return is_typing + return _is_typing and not _is_awaiting_mutation +var _is_typing: bool = false var _last_wait_index: int = -1 var _last_mutation_index: int = -1 @@ -69,7 +72,7 @@ var _is_awaiting_mutation: bool = false func _process(delta: float) -> void: - if self.is_typing: + if _is_typing: # Type out text if visible_ratio < 1: # See if we are waiting @@ -81,21 +84,18 @@ func _process(delta: float) -> void: else: # Make sure any mutations at the end of the line get run _mutate_inline_mutations(get_total_character_count()) - self.is_typing = false + is_typing = false -func _unhandled_input(event: InputEvent) -> void: - # Note: this will no longer be reached if using Dialogue Manager > 2.32.2. To make skip handling - # simpler (so all of mouse/keyboard/joypad are together) it is now the responsibility of the - # dialogue balloon. - if self.is_typing and visible_ratio < 1 and InputMap.has_action(skip_action) and event.is_action_pressed(skip_action): - get_viewport().set_input_as_handled() - skip_typing() +## Sets the label's text from the current dialogue line. Override if you want +## to do something more interesting in your subclass. +func _update_text() -> void: + text = dialogue_line.text ## Start typing out the text func type_out() -> void: - text = dialogue_line.text + _update_text() visible_characters = 0 visible_ratio = 0 _waiting_seconds = 0 @@ -103,24 +103,25 @@ func type_out() -> void: _last_mutation_index = -1 _already_mutated_indices.clear() - self.is_typing = true + is_typing = true + started_typing.emit() # Allow typing listeners a chance to connect await get_tree().process_frame if get_total_character_count() == 0: - self.is_typing = false + is_typing = false elif seconds_per_step == 0: _mutate_remaining_mutations() visible_characters = get_total_character_count() - self.is_typing = false + is_typing = false ## Stop typing out the text and jump right to the end func skip_typing() -> void: _mutate_remaining_mutations() visible_characters = get_total_character_count() - self.is_typing = false + is_typing = false skipped_typing.emit() @@ -136,17 +137,11 @@ func _type_next(delta: float, seconds_needed: float) -> void: _mutate_inline_mutations(visible_characters) if _is_awaiting_mutation: return - var additional_waiting_seconds: float = _get_pause(visible_characters) - # Pause on characters like "." - if _should_auto_pause(): - additional_waiting_seconds += seconds_per_pause_step - - # Pause at literal [wait] directives - if _last_wait_index != visible_characters and additional_waiting_seconds > 0: + var waiting_seconds: float = seconds_per_pause_step if _should_auto_pause() else 0 + if _last_wait_index != visible_characters and waiting_seconds > 0: _last_wait_index = visible_characters - _waiting_seconds += additional_waiting_seconds - paused_typing.emit(_get_pause(visible_characters)) + _waiting_seconds += waiting_seconds else: visible_characters += 1 if visible_characters <= get_total_character_count(): @@ -159,11 +154,6 @@ func _type_next(delta: float, seconds_needed: float) -> void: _type_next(delta, seconds_needed) -# Get the pause for the current typing position if there is one -func _get_pause(at_index: int) -> float: - return dialogue_line.pauses.get(at_index, 0) - - # Get the speed for the current typing position func _get_speed(at_index: int) -> float: var speed: float = 1 diff --git a/addons/dialogue_manager/dialogue_line.gd b/addons/dialogue_manager/dialogue_line.gd index 7213854c45..ac90fb12a9 100644 --- a/addons/dialogue_manager/dialogue_line.gd +++ b/addons/dialogue_manager/dialogue_line.gd @@ -26,9 +26,6 @@ var text_replacements: Array[Dictionary] = [] ## The key to use for translating this line. var translation_key: String = "" -## A map for when and for how long to pause while typing out the dialogue text. -var pauses: Dictionary = {} - ## A map for speed changes when typing out the dialogue text. var speeds: Dictionary = {} @@ -71,7 +68,6 @@ func _init(data: Dictionary = {}) -> void: text = data.text text_replacements = data.get("text_replacements", [] as Array[Dictionary]) translation_key = data.get("translation_key", data.text) - pauses = data.get("pauses", {}) speeds = data.get("speeds", {}) inline_mutations = data.get("inline_mutations", [] as Array[Array]) time = data.get("time", "") @@ -91,8 +87,18 @@ func _to_string() -> String: return "" +## Check if a dialogue line has a given tag. +func has_tag(tag_name: String) -> bool: + var wrapped: String = "%s=" % tag_name + for t in tags: + if t.begins_with(wrapped): + return true + return false + + +## Get the value of a tag if the tag is in the form of [code]tag=value[/code] func get_tag_value(tag_name: String) -> String: - var wrapped := "%s=" % tag_name + var wrapped: String = "%s=" % tag_name for t in tags: if t.begins_with(wrapped): return t.replace(wrapped, "").strip_edges() diff --git a/addons/dialogue_manager/dialogue_manager.gd b/addons/dialogue_manager/dialogue_manager.gd index e073107e46..7d48e11711 100644 --- a/addons/dialogue_manager/dialogue_manager.gd +++ b/addons/dialogue_manager/dialogue_manager.gd @@ -29,13 +29,13 @@ signal mutated(mutation: Dictionary) signal dialogue_ended(resource: DialogueResource) ## Used internally. -signal bridge_get_next_dialogue_line_completed(line: DialogueLine) +signal bridge_get_next_dialogue_line_completed(call_index: int, line: DialogueLine) -## Used internally -signal bridge_dialogue_started(resource: DialogueResource) +## Used internally. +signal bridge_get_line_completed(call_index: int, line: DialogueLine) -## Used inernally -signal bridge_mutated() +## Used internally +signal bridge_mutated(call_index: int) ## The list of globals that dialogue can query @@ -83,6 +83,15 @@ func _ready() -> void: ## Step through lines and run any mutations until we either hit some dialogue or the end of the conversation func get_next_dialogue_line(resource: DialogueResource, key: String = "", extra_game_states: Array = [], mutation_behaviour: DMConstants.MutationBehaviour = DMConstants.MutationBehaviour.Wait) -> DialogueLine: + var line = await _get_next_dialogue_line(resource, key, extra_game_states, mutation_behaviour) + if line == null: + # End the conversation + dialogue_ended.emit(resource) + return line + + +# Internal line getter. +func _get_next_dialogue_line(resource: DialogueResource, key: String = "", extra_game_states: Array = [], mutation_behaviour: DMConstants.MutationBehaviour = DMConstants.MutationBehaviour.Wait) -> DialogueLine: # You have to provide a valid dialogue resource if resource == null: assert(false, DMConstants.translate(&"runtime.no_resource")) @@ -105,7 +114,6 @@ func get_next_dialogue_line(resource: DialogueResource, key: String = "", extra_ # If our dialogue is nothing then we hit the end if not _is_valid(dialogue): - dialogue_ended.emit.call_deferred(resource) return null # Run the mutation if it is one @@ -119,11 +127,9 @@ func get_next_dialogue_line(resource: DialogueResource, key: String = "", extra_ DMConstants.MutationBehaviour.Skip: pass if actual_next_id in [DMConstants.ID_END_CONVERSATION, DMConstants.ID_NULL, null]: - # End the conversation - dialogue_ended.emit.call_deferred(resource) return null else: - return await get_next_dialogue_line(resource, dialogue.next_id, extra_game_states, mutation_behaviour) + return await _get_next_dialogue_line(resource, dialogue.next_id, extra_game_states, mutation_behaviour) else: got_dialogue.emit(dialogue) return dialogue @@ -138,6 +144,14 @@ func get_line(resource: DialogueResource, key: String, extra_game_states: Array) key = stack.pop_front() var id_trail: String = "" if stack.size() == 0 else "|" + "|".join(stack) + # Resolve this line reference to use the correct resource + var previous_resource: DialogueResource = resource + if "@" in key: + var bits: PackedStringArray = key.split("@") + if bits[0] != _get_resource_uid(resource): + resource = load("uid://" + bits[0]) + key = bits[1] + # Key is blank so just use the first title (or start of file) if key == null or key == "": if resource.first_title.is_empty(): @@ -159,6 +173,12 @@ func get_line(resource: DialogueResource, key: String, extra_game_states: Array) key = key.substr(2) if resource.titles.has(key): key = resource.titles.get(key) + # Handle the resource reference if the title had one + if "@" in key: + var bits: PackedStringArray = key.split("@") + if bits[0] != _get_resource_uid(resource): + resource = load("uid://" + bits[0]) + key = bits[1] if key in resource.titles.values(): passed_title.emit(resource.titles.find_key(key)) @@ -200,6 +220,10 @@ func get_line(resource: DialogueResource, key: String, extra_game_states: Array) if data.has(&"siblings"): # Only count siblings that pass their condition (if they have one). var successful_siblings: Array = data.siblings.filter(func(sibling): return not sibling.has("condition") or await _check_condition(sibling, extra_game_states)) + # If there are no siblings that pass their conditions then just skip over them all. + if successful_siblings.size() == 0: + return await get_line(resource, data.next_id + id_trail, extra_game_states) + # Otherwise, pick a random one. var target_weight: float = randf_range(0, successful_siblings.reduce(func(total, sibling): return total + sibling.weight, 0)) var cummulative_weight: float = 0 for sibling in successful_siblings: @@ -221,7 +245,7 @@ func get_line(resource: DialogueResource, key: String, extra_game_states: Array) # If the line is a random block then go to the start of the block. elif data.type == DMConstants.TYPE_RANDOM: - data = resource.lines.get(data.next_id) + return await get_line(resource, data.next_id + id_trail, extra_game_states) # Check conditions. elif data.type in [DMConstants.TYPE_CONDITION, DMConstants.TYPE_WHILE]: @@ -235,9 +259,24 @@ func get_line(resource: DialogueResource, key: String, extra_game_states: Array) # Evaluate jumps. elif data.type == DMConstants.TYPE_GOTO: - if data.is_snippet and not id_trail.begins_with("|" + data.next_id_after): - id_trail = "|" + data.next_id_after + id_trail - return await get_line(resource, data.next_id + id_trail, extra_game_states) + if data.is_snippet: + # Point the return address at this resource + var next_id_after: String = _get_id_with_resource(resource, data.next_id_after) + if not id_trail.begins_with("|" + next_id_after): + id_trail = "|" + next_id_after + id_trail + + # If next_id has a UID reference then split it to find where to actually go next + var next_id: String = data.next_id + if "@" in next_id: + var bits: PackedStringArray = data.next_id.split("@") + resource = load("uid://" + bits[0]) + next_id = bits[1] + + # If the title isn't in this resource it might be back in the original one + if not resource.lines.has(next_id) and not resource.titles.has(next_id): + resource = previous_resource + + return await get_line(resource, next_id + id_trail, extra_game_states) elif data.type == DMConstants.TYPE_DIALOGUE: if not data.has(&"id"): @@ -268,13 +307,26 @@ func get_line(resource: DialogueResource, key: String, extra_game_states: Array) if resource.lines.has(line.next_id): var next_line: Dictionary = resource.lines.get(line.next_id) + # If the next line is an end and we have an ID trail then see if it points to responses + var peeked_at_stack: bool = false + if next_line.next_id == DMConstants.ID_END and stack.size() > 0: + peeked_at_stack = true + var return_to_resource = resource + var return_to_id: String = stack.front() + if "@" in return_to_id: + var bits: PackedStringArray = return_to_id.split("@") + if bits[0] != _get_resource_uid(resource): + return_to_resource = load("uid://" + bits[0]) + return_to_id = bits[1] + next_line = return_to_resource.lines.get(return_to_id) + # If the response line is marked as a title then make sure to emit the passed_title signal. if line.next_id in resource.titles.values(): passed_title.emit(resource.titles.find_key(line.next_id)) # If the responses come from a snippet then we need to come back here afterwards. - if next_line.type == DMConstants.TYPE_GOTO and next_line.is_snippet and not id_trail.begins_with("|" + next_line.next_id_after): - id_trail = "|" + next_line.next_id_after + id_trail + if not peeked_at_stack and next_line.type == DMConstants.TYPE_GOTO and next_line.is_snippet and not id_trail.begins_with("|" + _get_id_with_resource(resource, next_line.next_id_after)): + id_trail = "|" + _get_id_with_resource(resource, next_line.next_id_after) + id_trail # If the next line is a title then check where it points to see if that is a set of responses. while [DMConstants.TYPE_TITLE, DMConstants.TYPE_GOTO].has(next_line.type) and resource.lines.has(next_line.next_id): @@ -285,9 +337,10 @@ func get_line(resource: DialogueResource, key: String, extra_game_states: Array) # so instead we use set and get here. line.set(&"responses", await _get_responses(next_line.get(&"responses", []), resource, id_trail, extra_game_states)) - line.next_id = "|".join(stack) if line.next_id == DMConstants.ID_NULL else line.next_id + id_trail + line.next_id = "|".join(stack) if line.next_id == DMConstants.ID_NULL else _get_id_with_resource(resource, line.next_id) + id_trail return line + ## Replace any variables, etc in the text. func get_resolved_line_data(data: Dictionary, extra_game_states: Array = []) -> DMResolvedLineData: var text: String = translate(data) @@ -322,7 +375,7 @@ func get_resolved_line_data(data: Dictionary, extra_game_states: Array = []) -> var markers: DMResolvedLineData = DMResolvedLineData.new(text) # Resolve any conditionals and update marker positions as needed - if data.type == DMConstants.TYPE_DIALOGUE: + if data.type in [DMConstants.TYPE_DIALOGUE, DMConstants.TYPE_RESPONSE]: var resolved_text: String = markers.text var conditionals: Array[RegExMatch] = compilation.regex.INLINE_CONDITIONALS_REGEX.search_all(resolved_text) var replacements: Array = [] @@ -335,46 +388,76 @@ func get_resolved_line_data(data: Dictionary, extra_game_states: Array = []) -> body = bits[0] body_else = bits[1] var condition: Dictionary = compilation.extract_condition("if " + condition_raw, false, 0) + var condition_passed: bool = await _check_condition({ condition = condition }, extra_game_states) # If the condition fails then use the else of "" - if not await _check_condition({ condition = condition }, extra_game_states): + if not condition_passed: body = body_else replacements.append({ start = conditional.get_start(), end = conditional.get_end(), string = conditional.get_string(), - body = body + body = body, + condition_passed = condition_passed }) for i in range(replacements.size() - 1, -1, -1): var r: Dictionary = replacements[i] resolved_text = resolved_text.substr(0, r.start) + r.body + resolved_text.substr(r.end, 9999) # Move any other markers now that the text has changed - var offset: int = r.end - r.start - r.body.length() - for key in [&"pauses", &"speeds", &"time"]: - if markers.get(key) == null: continue - var marker = markers.get(key) - var next_marker: Dictionary = {} - for index in marker: - if index < r.start: - next_marker[index] = marker[index] - elif index > r.start: - next_marker[index - offset] = marker[index] - markers.set(key, next_marker) - var mutations: Array[Array] = markers.mutations - var next_mutations: Array[Array] = [] - for mutation in mutations: - var index = mutation[0] - if index < r.start: - next_mutations.append(mutation) - elif index > r.start: - next_mutations.append([index - offset, mutation[1]]) - markers.mutations = next_mutations + _shift_markers(markers, r.start, r.end, r.body.length(), r.condition_passed) + + var image_tags: Array[RegExMatch] = compilation.regex.IMAGE_TAGS_REGEX.search_all(resolved_text) + for image_tag: RegExMatch in image_tags: + # The [img] and [/img] tags have already been accounted for so now we just need to + # adjust for the path length. + var path_length: int = image_tag.get_string(image_tag.names.path).length() + _shift_markers(markers, image_tag.get_start(), image_tag.get_start() + path_length, 0) markers.text = resolved_text return markers +func _shift_markers(markers: DMResolvedLineData, removed_start: int, removed_end: int, body_length: int, keep_inner: bool = true) -> void: + # Calculate the offset for markers after the removed range + var after_offset: int = removed_end - removed_start - body_length + + for key in [&"speeds", &"time"]: + if markers.get(key) == null: continue + var marker = markers.get(key) + var next_marker: Dictionary = {} + for index in marker: + if index < removed_start: + next_marker[index] = marker[index] + elif index >= removed_end: + next_marker[index - after_offset] = marker[index] + elif keep_inner: + # Marker is inside the conditional range and should be kept + # Shift it to account for the [if] tag being removed + next_marker[removed_start] = marker[index] + else: + # marker is inside a failed conditional, remove it + continue + markers.set(key, next_marker) + + var mutations: Array[Array] = markers.mutations + var next_mutations: Array[Array] = [] + for mutation in mutations: + var index = mutation[0] + if index < removed_start: + next_mutations.append(mutation) + elif index >= removed_end: + next_mutations.append([index - after_offset, mutation[1]]) + elif keep_inner: + # Mutation is inside the conditional range and should be kept + # Shift it to account for the [if] tag being removed + next_mutations.append([removed_start, mutation[1]]) + else: + # mutation is inside a failed conditional, remove it + continue + markers.mutations = next_mutations + + ## Replace any variables, etc in the character name func get_resolved_character(data: Dictionary, extra_game_states: Array = []) -> String: var character: String = data.get(&"character", "") @@ -464,6 +547,8 @@ func static_id_to_line_ids(resource: DialogueResource, static_id: String) -> Pac # Call "start" on the given balloon. func _start_balloon(balloon: Node, resource: DialogueResource, title: String, extra_game_states: Array) -> void: + dialogue_started.emit(resource) + get_current_scene.call().add_child(balloon) if balloon.has_method(&"start"): @@ -473,9 +558,6 @@ func _start_balloon(balloon: Node, resource: DialogueResource, title: String, ex else: assert(false, DMConstants.translate(&"runtime.dialogue_balloon_missing_start_method")) - dialogue_started.emit(resource) - bridge_dialogue_started.emit(resource) - # Get the path to the example balloon func _get_example_balloon_path() -> String: @@ -495,34 +577,30 @@ func _get_dotnet_dialogue_manager() -> RefCounted: return _dotnet_dialogue_manager -func _bridge_get_new_instance() -> Node: - # For some reason duplicating the node with its signals doesn't work so we have to copy them over manually - var instance = new() - for s: Dictionary in dialogue_started.get_connections(): - instance.dialogue_started.connect(s.callable) - for s: Dictionary in passed_title.get_connections(): - instance.passed_title.connect(s.callable) - for s: Dictionary in got_dialogue.get_connections(): - instance.got_dialogue.connect(s.callable) - for s: Dictionary in mutated.get_connections(): - instance.mutated.connect(s.callable) - for s: Dictionary in dialogue_ended.get_connections(): - instance.dialogue_ended.connect(s.callable) - instance.get_current_scene = get_current_scene - return instance - - -func _bridge_get_next_dialogue_line(resource: DialogueResource, key: String, extra_game_states: Array = []) -> void: +func _bridge_get_next_dialogue_line(call_id: int, resource: DialogueResource, key: String, extra_game_states: Array = [], mutation_behaviour: int = DMConstants.MutationBehaviour.Wait) -> void: # dotnet needs at least one await tick of the signal gets called too quickly await Engine.get_main_loop().process_frame + var line = await _get_next_dialogue_line(resource, key, extra_game_states, mutation_behaviour) + bridge_get_next_dialogue_line_completed.emit(call_id, line) + if line == null: + # End the conversation + dialogue_ended.emit(resource) + - var line = await get_next_dialogue_line(resource, key, extra_game_states) - bridge_get_next_dialogue_line_completed.emit(line) +func _bridge_get_line(call_id: int, resource: DialogueResource, key: String, extra_game_states: Array = []) -> void: + # dotnet needs at least one await tick of the signal gets called too quickly + await Engine.get_main_loop().process_frame + var line = await get_line(resource, key, extra_game_states) + bridge_get_line_completed.emit(call_id, line) -func _bridge_mutate(mutation: Dictionary, extra_game_states: Array, is_inline_mutation: bool = false) -> void: +func _bridge_mutate(call_id: int, mutation: Dictionary, extra_game_states: Array, is_inline_mutation: bool = false) -> void: await _mutate(mutation, extra_game_states, is_inline_mutation) - bridge_mutated.emit() + bridge_mutated.emit(call_id) + + +func _bridge_get_error_message(error: int) -> String: + return DMConstants.get_error_message(error) #endregion @@ -588,7 +666,6 @@ func create_dialogue_line(data: Dictionary, extra_game_states: Array) -> Dialogu text = resolved_data.text, text_replacements = data.get(&"text_replacements", [] as Array[Dictionary]), translation_key = data.get(&"translation_key", data.text), - pauses = resolved_data.pauses, speeds = resolved_data.speeds, inline_mutations = resolved_data.mutations, time = resolved_data.time, @@ -664,7 +741,21 @@ func _get_game_states(extra_game_states: Array) -> Array: # Check if a condition is met func _check_condition(data: Dictionary, extra_game_states: Array) -> bool: - return bool(await _resolve_condition_value(data, extra_game_states)) + var result: Variant = await _resolve_condition_value(data, extra_game_states) + if typeof(result) in [ + TYPE_STRING, TYPE_STRING_NAME, \ + TYPE_DICTIONARY, \ + TYPE_ARRAY, TYPE_PACKED_BYTE_ARRAY, TYPE_PACKED_COLOR_ARRAY, \ + TYPE_PACKED_FLOAT32_ARRAY, TYPE_PACKED_FLOAT64_ARRAY, \ + TYPE_PACKED_INT32_ARRAY, TYPE_PACKED_INT64_ARRAY, \ + TYPE_PACKED_STRING_ARRAY, \ + TYPE_PACKED_VECTOR2_ARRAY, TYPE_PACKED_VECTOR3_ARRAY, TYPE_PACKED_VECTOR4_ARRAY]: + return not (result as String).is_empty() + + if result is Node or result is Resource: + return is_instance_valid(result) + + return true if result else false # Resolve a condition's expression value @@ -703,8 +794,12 @@ func _check_case_value(match_value: Variant, data: Dictionary, extra_game_states already_compared = true var resolved_value = await _resolve(expression_to_check, extra_game_states) - if (already_compared and resolved_value) or match_value == resolved_value: - return true + if already_compared: + if resolved_value: + return true + else: + if match_value == resolved_value: + return true return false @@ -720,7 +815,11 @@ func _mutate(mutation: Dictionary, extra_game_states: Array, is_inline_mutation: match expression[0].function: &"wait", &"Wait": mutated.emit(mutation.merged({ is_inline = is_inline_mutation })) - await Engine.get_main_loop().create_timer(float(args[0])).timeout + if [TYPE_FLOAT, TYPE_INT].has(typeof(args[0])): + await Engine.get_main_loop().create_timer(float(args[0])).timeout + else: + var actions: PackedStringArray = PackedStringArray(args[0] if typeof(args[0]) == TYPE_ARRAY else [args[0]]) + await _wait_for(actions) return &"debug", &"Debug": @@ -729,7 +828,7 @@ func _mutate(mutation: Dictionary, extra_game_states: Array, is_inline_mutation: # Or pass through to the resolver else: - if not _mutation_contains_assignment(mutation.expression) and not is_inline_mutation: + if not _mutation_contains_assignment(mutation.expression): mutated.emit(mutation.merged({ is_inline = is_inline_mutation })) if mutation.get("is_blocking", true): @@ -742,6 +841,14 @@ func _mutate(mutation: Dictionary, extra_game_states: Array, is_inline_mutation: await Engine.get_main_loop().process_frame +# Wait for a given action +func _wait_for(actions: PackedStringArray) -> void: + var waiter = DMWaiter.new(actions) + add_child(waiter) + await waiter.waited + waiter.queue_free() + + # Check if a mutation contains an assignment token. func _mutation_contains_assignment(mutation: Array) -> bool: for token in mutation: @@ -757,7 +864,7 @@ func _get_responses(ids: Array, resource: DialogueResource, id_trail: String, ex var data: Dictionary = resource.lines.get(id).duplicate(true) data.is_allowed = await _check_condition(data, extra_game_states) var response: DialogueResponse = await create_response(data, extra_game_states) - response.next_id += id_trail + response.next_id = _get_id_with_resource(resource, response.next_id) + id_trail responses.append(response) return responses @@ -806,7 +913,7 @@ func _get_state_value(property: String, extra_game_states: Array): if include_classes: for class_data in ProjectSettings.get_global_class_list(): if class_data.get(&"class") == property: - return load(class_data.path).new() + return load(class_data.path) show_error_for_missing_state_value(DMConstants.translate(&"runtime.property_not_found").format({ property = property, states = _get_state_shortcut_names(extra_game_states) })) @@ -926,7 +1033,7 @@ func _resolve(tokens: Array, extra_game_states: Array): var caller: Dictionary = tokens[i - 2] if Builtins.is_supported(caller.value): caller.type = DMConstants.TOKEN_VALUE - caller.value = Builtins.resolve_method(caller.value, function_name, args) + caller.value = await Builtins.resolve_method(caller.value, function_name, args) tokens.remove_at(i) tokens.remove_at(i - 1) i -= 2 @@ -1051,7 +1158,7 @@ func _resolve(tokens: Array, extra_game_states: Array): token.value = value[index] else: show_error_for_missing_state_value(DMConstants.translate(&"runtime.key_not_found").format({ key = str(index), dictionary = token.variable })) - elif typeof(value) == TYPE_ARRAY: + elif typeof(value) in [TYPE_ARRAY, TYPE_PACKED_STRING_ARRAY, TYPE_PACKED_INT32_ARRAY, TYPE_PACKED_INT64_ARRAY, TYPE_PACKED_BYTE_ARRAY, TYPE_PACKED_COLOR_ARRAY, TYPE_PACKED_FLOAT32_ARRAY, TYPE_PACKED_FLOAT64_ARRAY]: if tokens.size() > i + 1 and tokens[i + 1].type == DMConstants.TOKEN_ASSIGNMENT: # If the next token is an assignment then we need to leave this as a reference # so that it can be resolved once everything ahead of it has been resolved @@ -1140,7 +1247,7 @@ func _resolve(tokens: Array, extra_game_states: Array): if Builtins.is_supported(caller.value): caller.value = Builtins.resolve_property(caller.value, property) else: - caller.value = caller.value.get(property) + caller.value = _resolve_thing_property(caller.value, property) tokens.remove_at(i) tokens.remove_at(i - 1) i -= 2 @@ -1397,6 +1504,8 @@ func _thing_has_method(thing, method: String, args: Array) -> bool: if thing.has_method(method): return true + if thing is Script: + thing = thing.new() if thing.get_script() and thing.get_script().resource_path.ends_with(".cs"): # If we get this far then the method might be a C# method with a Task return type return _get_dotnet_dialogue_manager().ThingHasMethod(thing, method, args) @@ -1438,13 +1547,15 @@ func _get_method_info_for(thing: Variant, method: String, args: Array) -> Dictio var method_key: String = "%s:%d" % [method, args.size()] if methods.has(method_key): return methods.get(method_key) - else: + elif methods.has(method): return methods.get(method) + else: + return _get_method_info_for(thing.new(), method, args) func _resolve_thing_method(thing, method: String, args: Array): if Builtins.is_supported(thing): - var result = Builtins.resolve_method(thing, method, args) + var result = await Builtins.resolve_method(thing, method, args) if not Builtins.has_resolve_method_failed(): return result @@ -1478,6 +1589,33 @@ func _resolve_thing_method(thing, method: String, args: Array): return await thing.callv(method, args) # If we get here then it's probably a C# method with a Task return type + if thing is Script: + thing = thing.new() var dotnet_dialogue_manager = _get_dotnet_dialogue_manager() - dotnet_dialogue_manager.ResolveThingMethod(thing, method, args) - return await dotnet_dialogue_manager.Resolved + var id: float = randf() + dotnet_dialogue_manager.ResolveThingMethod(id, thing, method, args) + var x: int = 0 + while x < 1000: + var result = await dotnet_dialogue_manager.Resolved + if result[0] == id: + return result[1] + x += 1 + + +func _resolve_thing_property(thing: Object, property: String) -> Variant: + if thing == null: + return false + + if thing.get_script() and thing.get_script().resource_path.ends_with(".cs"): + # If we get this far then the property might be a C# constant. + return _get_dotnet_dialogue_manager().ResolveThingConstant(thing, property) + + return thing.get(property) + + +func _get_resource_uid(resource: DialogueResource) -> String: + return ResourceUID.id_to_text(ResourceLoader.get_resource_uid(resource.resource_path)).replace("uid://", "") + + +func _get_id_with_resource(resource: DialogueResource, id: String) -> String: + return id if "@" in id else "%s@%s" % [_get_resource_uid(resource), id] diff --git a/addons/dialogue_manager/dialogue_processor.gd b/addons/dialogue_manager/dialogue_processor.gd new file mode 100644 index 0000000000..5de3e9c0e6 --- /dev/null +++ b/addons/dialogue_manager/dialogue_processor.gd @@ -0,0 +1,11 @@ +class_name DMDialogueProcessor extends RefCounted + + +## Override to modify the incoming raw string. +func _preprocess_line(raw_line: String) -> String: + return raw_line + + +## Override to modify the outgoing dialogue line. +func _process_line(line: DMCompiledLine) -> void: + pass diff --git a/addons/dialogue_manager/dialogue_processor.gd.uid b/addons/dialogue_manager/dialogue_processor.gd.uid new file mode 100644 index 0000000000..a96cc199a0 --- /dev/null +++ b/addons/dialogue_manager/dialogue_processor.gd.uid @@ -0,0 +1 @@ +uid://m3b28rmso14t diff --git a/addons/dialogue_manager/dialogue_resource.gd b/addons/dialogue_manager/dialogue_resource.gd index 29ade7b1d2..8bf2ca5854 100644 --- a/addons/dialogue_manager/dialogue_resource.gd +++ b/addons/dialogue_manager/dialogue_resource.gd @@ -39,4 +39,7 @@ func get_titles() -> PackedStringArray: func _to_string() -> String: - return "" % [",".join(titles.keys())] + if resource_path: + return "" % [resource_path] + else: + return "" diff --git a/addons/dialogue_manager/dialogue_responses_menu.gd b/addons/dialogue_manager/dialogue_responses_menu.gd index 0ae2c50d58..db36edb81b 100644 --- a/addons/dialogue_manager/dialogue_responses_menu.gd +++ b/addons/dialogue_manager/dialogue_responses_menu.gd @@ -4,8 +4,11 @@ class_name DialogueResponsesMenu extends Container +## Emitted when a response is focused. +signal response_focused(response: Control) + ## Emitted when a response is selected. -signal response_selected(response) +signal response_selected(response: Control) ## Optionally specify a control to duplicate for each response @@ -14,56 +17,30 @@ signal response_selected(response) ## The action for accepting a response (is possibly overridden by parent dialogue balloon). @export var next_action: StringName = &"" +## Automatically set up focus neighbours when the responses list changes. +@export var auto_configure_focus: bool = true + +## Automatically focus the first item when showing. +@export var auto_focus_first_item: bool = true + ## Hide any responses where [code]is_allowed[/code] is false @export var hide_failed_responses: bool = false ## The list of dialogue responses. var responses: Array = []: - get: - return responses set(value): responses = value + _apply_responses() + get: + return responses - # Remove any current items - for item in get_children(): - if item == response_template: continue - - remove_child(item) - item.queue_free() - - # Add new items - if responses.size() > 0: - for response in responses: - if hide_failed_responses and not response.is_allowed: continue - - var item: Control - if is_instance_valid(response_template): - item = response_template.duplicate(DUPLICATE_GROUPS | DUPLICATE_SCRIPTS | DUPLICATE_SIGNALS) - item.show() - else: - item = Button.new() - item.name = "Response%d" % get_child_count() - if not response.is_allowed: - item.name = item.name + &"Disallowed" - item.disabled = true - - # If the item has a response property then use that - if "response" in item: - item.response = response - # Otherwise assume we can just set the text - else: - item.text = response.text - - item.set_meta("response", response) - - add_child(item) - - _configure_focus() +# The previously focused item in this menu. +var _previously_focused_item: Control = null func _ready() -> void: visibility_changed.connect(func(): - if visible and get_menu_items().size() > 0: + if auto_focus_first_item and visible and get_menu_items().size() > 0: var first_item: Control = get_menu_items()[0] if first_item.is_inside_tree(): first_item.grab_focus() @@ -72,6 +49,8 @@ func _ready() -> void: if is_instance_valid(response_template): response_template.hide() + get_viewport().gui_focus_changed.connect(_on_focus_changed) + ## Get the selectable items in the menu. func get_menu_items() -> Array: @@ -84,11 +63,8 @@ func get_menu_items() -> Array: return items -#region Internal - - -# Prepare the menu for keyboard and mouse navigation. -func _configure_focus() -> void: +## Prepare the menu for keyboard and mouse navigation. +func configure_focus() -> void: var items = get_menu_items() for i in items.size(): var item: Control = items[i] @@ -119,7 +95,53 @@ func _configure_focus() -> void: item.mouse_entered.connect(_on_response_mouse_entered.bind(item)) item.gui_input.connect(_on_response_gui_input.bind(item, item.get_meta("response"))) - items[0].grab_focus() + _previously_focused_item = items[0] + + if auto_focus_first_item: + items[0].grab_focus() + + +#region Internal + + +# Set up the visual side of things. +func _apply_responses() -> void: + # Remove any current items + for item in get_children(): + if item == response_template: continue + + remove_child(item) + item.queue_free() + + # Add new items + if responses.size() > 0: + for response in responses: + if hide_failed_responses and not response.is_allowed: continue + + var item: Control + if is_instance_valid(response_template): + item = response_template.duplicate(DUPLICATE_GROUPS | DUPLICATE_SCRIPTS | DUPLICATE_SIGNALS) + item.show() + else: + item = Button.new() + item.name = "Response%d" % get_child_count() + if not response.is_allowed: + item.name = item.name + &"Disallowed" + item.disabled = true + + # If the item has a response property then use that + if "response" in item: + item.response = response + # Otherwise assume we can just set the text + else: + item.text = response.text + + item.set_meta("response", response) + + add_child(item) + + if auto_configure_focus: + configure_focus() #endregion @@ -127,6 +149,15 @@ func _configure_focus() -> void: #region Signals +func _on_focus_changed(control: Control) -> void: + if "Disallowed" in control.name: return + if not control in get_menu_items(): return + + if _previously_focused_item != control: + _previously_focused_item = control + response_focused.emit(control) + + func _on_response_mouse_entered(item: Control) -> void: if "Disallowed" in item.name: return diff --git a/addons/dialogue_manager/example_balloon/ExampleBalloon.cs b/addons/dialogue_manager/example_balloon/ExampleBalloon.cs index 980f0679a1..15fba6595e 100644 --- a/addons/dialogue_manager/example_balloon/ExampleBalloon.cs +++ b/addons/dialogue_manager/example_balloon/ExampleBalloon.cs @@ -5,6 +5,9 @@ namespace DialogueManagerRuntime { public partial class ExampleBalloon : CanvasLayer { + [Export] public Resource DialogueResource; + [Export] public string StartFromTitle = ""; + [Export] public bool AutoStart = false; [Export] public string NextAction = "ui_accept"; [Export] public string SkipAction = "ui_cancel"; @@ -13,8 +16,8 @@ public partial class ExampleBalloon : CanvasLayer RichTextLabel characterLabel; RichTextLabel dialogueLabel; VBoxContainer responsesMenu; + Polygon2D progress; - Resource resource; Array temporaryGameStates = new Array(); bool isWaitingForInput = false; bool willHideBalloon = false; @@ -25,9 +28,17 @@ DialogueLine DialogueLine get => dialogueLine; set { + // Dialogue has finished so close the balloon if (value == null) { - QueueFree(); + if (Owner == null) + { + QueueFree(); + } + else + { + Hide(); + } return; } @@ -45,6 +56,7 @@ public override void _Ready() characterLabel = GetNode("%CharacterLabel"); dialogueLabel = GetNode("%DialogueLabel"); responsesMenu = GetNode("%ResponsesMenu"); + progress = GetNode("%Progress"); balloon.Hide(); @@ -99,6 +111,15 @@ public override void _Ready() AddChild(MutationCooldown); DialogueManager.Mutated += OnMutated; + + if (AutoStart) + { + if (!IsInstanceValid(DialogueResource)) + { + throw new System.Exception(DialogueManager.GetErrorMessage(143)); + } + Start(); + } } @@ -121,7 +142,7 @@ public override async void _Notification(int what) if (what == NotificationTranslationChanged && IsInstanceValid(dialogueLabel)) { float visibleRatio = dialogueLabel.VisibleRatio; - DialogueLine = await DialogueManager.GetNextDialogueLine(resource, DialogueLine.Id, temporaryGameStates); + DialogueLine = await DialogueManager.GetNextDialogueLine(DialogueResource, DialogueLine.Id, temporaryGameStates); if (visibleRatio < 1.0f) { dialogueLabel.Call("skip_typing"); @@ -130,19 +151,39 @@ public override async void _Notification(int what) } - public async void Start(Resource dialogueResource, string title, Array extraGameStates = null) + public override void _Process(double delta) + { + base._Process(delta); + + if (IsInstanceValid(dialogueLine)) + { + progress.Visible = !(bool)dialogueLabel.Get("is_typing") && dialogueLine.Responses.Count == 0 && !dialogueLine.HasTag("voice"); + } + } + + + public async void Start(Resource dialogueResource = null, string title = "", Array extraGameStates = null) { temporaryGameStates = new Array { this } + (extraGameStates ?? new Array()); isWaitingForInput = false; - resource = dialogueResource; - DialogueLine = await DialogueManager.GetNextDialogueLine(resource, title, temporaryGameStates); + if (IsInstanceValid(dialogueResource)) + { + DialogueResource = dialogueResource; + } + if (title != "") + { + StartFromTitle = title; + } + + DialogueLine = await DialogueManager.GetNextDialogueLine(DialogueResource, StartFromTitle, temporaryGameStates); + Show(); } public async void Next(string nextId) { - DialogueLine = await DialogueManager.GetNextDialogueLine(resource, nextId, temporaryGameStates); + DialogueLine = await DialogueManager.GetNextDialogueLine(DialogueResource, nextId, temporaryGameStates); } @@ -210,11 +251,14 @@ private async void ApplyDialogueLine() #region signals - private void OnMutated(Dictionary _mutation) + private void OnMutated(Dictionary mutation) { - isWaitingForInput = false; - willHideBalloon = true; - MutationCooldown.Start(0.1f); + if (!(bool)mutation["is_inline"]) + { + isWaitingForInput = false; + willHideBalloon = true; + MutationCooldown.Start(0.1f); + } } diff --git a/addons/dialogue_manager/example_balloon/example_balloon.gd b/addons/dialogue_manager/example_balloon/example_balloon.gd index c7e6d9a06a..39cc6c0f6e 100644 --- a/addons/dialogue_manager/example_balloon/example_balloon.gd +++ b/addons/dialogue_manager/example_balloon/example_balloon.gd @@ -1,14 +1,27 @@ class_name DialogueManagerExampleBalloon extends CanvasLayer ## A basic dialogue balloon for use with Dialogue Manager. + +## The dialogue resource +@export var dialogue_resource: DialogueResource + +## Start from a given title when using balloon as a [Node] in a scene. +@export var start_from_title: String = "" + +## If running as a [Node] in a scene then auto start the dialogue. +@export var auto_start: bool = false + +## If all other input is blocked as long as dialogue is shown. +@export var will_block_other_input: bool = true + ## The action to use for advancing the dialogue @export var next_action: StringName = &"ui_accept" ## The action to use to skip typing the dialogue @export var skip_action: StringName = &"ui_cancel" -## The dialogue resource -var resource: DialogueResource +## A sound player for voice lines (if they exist). +@onready var audio_stream_player: AudioStreamPlayer = %AudioStreamPlayer ## Temporary game states var temporary_game_states: Array = [] @@ -32,7 +45,10 @@ var dialogue_line: DialogueLine: apply_dialogue_line() else: # The dialogue has finished so close the balloon - queue_free() + if owner == null: + queue_free() + else: + hide() get: return dialogue_line @@ -51,6 +67,9 @@ var mutation_cooldown: Timer = Timer.new() ## The menu of responses @onready var responses_menu: DialogueResponsesMenu = %ResponsesMenu +## Indicator to show that player can progress dialogue. +@onready var progress: Polygon2D = %Progress + func _ready() -> void: balloon.hide() @@ -63,34 +82,50 @@ func _ready() -> void: mutation_cooldown.timeout.connect(_on_mutation_cooldown_timeout) add_child(mutation_cooldown) + if auto_start: + if not is_instance_valid(dialogue_resource): + assert(false, DMConstants.get_error_message(DMConstants.ERR_MISSING_RESOURCE_FOR_AUTOSTART)) + start() + + +func _process(delta: float) -> void: + if is_instance_valid(dialogue_line): + progress.visible = not dialogue_label.is_typing and dialogue_line.responses.size() == 0 and not dialogue_line.has_tag("voice") + func _unhandled_input(_event: InputEvent) -> void: # Only the balloon is allowed to handle input while it's showing - get_viewport().set_input_as_handled() + if will_block_other_input: + get_viewport().set_input_as_handled() func _notification(what: int) -> void: ## Detect a change of locale and update the current dialogue line to show the new language if what == NOTIFICATION_TRANSLATION_CHANGED and _locale != TranslationServer.get_locale() and is_instance_valid(dialogue_label): _locale = TranslationServer.get_locale() - var visible_ratio = dialogue_label.visible_ratio - self.dialogue_line = await resource.get_next_dialogue_line(dialogue_line.id) + var visible_ratio: float = dialogue_label.visible_ratio + dialogue_line = await dialogue_resource.get_next_dialogue_line(dialogue_line.id) if visible_ratio < 1: dialogue_label.skip_typing() ## Start some dialogue -func start(dialogue_resource: DialogueResource, title: String, extra_game_states: Array = []) -> void: +func start(with_dialogue_resource: DialogueResource = null, title: String = "", extra_game_states: Array = []) -> void: temporary_game_states = [self] + extra_game_states is_waiting_for_input = false - resource = dialogue_resource - self.dialogue_line = await resource.get_next_dialogue_line(title, temporary_game_states) + if is_instance_valid(with_dialogue_resource): + dialogue_resource = with_dialogue_resource + if not title.is_empty(): + start_from_title = title + dialogue_line = await dialogue_resource.get_next_dialogue_line(start_from_title, temporary_game_states) + show() ## Apply any changes to the balloon given a new [DialogueLine]. func apply_dialogue_line() -> void: mutation_cooldown.stop() + progress.hide() is_waiting_for_input = false balloon.focus_mode = Control.FOCUS_ALL balloon.grab_focus() @@ -113,12 +148,17 @@ func apply_dialogue_line() -> void: dialogue_label.type_out() await dialogue_label.finished_typing - # Wait for input - if dialogue_line.responses.size() > 0: + # Wait for next line + if dialogue_line.has_tag("voice"): + audio_stream_player.stream = load(dialogue_line.get_tag_value("voice")) + audio_stream_player.play() + await audio_stream_player.finished + next(dialogue_line.next_id) + elif dialogue_line.responses.size() > 0: balloon.focus_mode = Control.FOCUS_NONE responses_menu.show() elif dialogue_line.time != "": - var time = dialogue_line.text.length() * 0.02 if dialogue_line.time == "auto" else dialogue_line.time.to_float() + var time: float = dialogue_line.text.length() * 0.02 if dialogue_line.time == "auto" else dialogue_line.time.to_float() await get_tree().create_timer(time).timeout next(dialogue_line.next_id) else: @@ -129,7 +169,7 @@ func apply_dialogue_line() -> void: ## Go to the next line func next(next_id: String) -> void: - self.dialogue_line = await resource.get_next_dialogue_line(next_id, temporary_game_states) + dialogue_line = await dialogue_resource.get_next_dialogue_line(next_id, temporary_game_states) #region Signals @@ -141,10 +181,11 @@ func _on_mutation_cooldown_timeout() -> void: balloon.hide() -func _on_mutated(_mutation: Dictionary) -> void: - is_waiting_for_input = false - will_hide_balloon = true - mutation_cooldown.start(0.1) +func _on_mutated(mutation: Dictionary) -> void: + if not mutation.is_inline: + is_waiting_for_input = false + will_hide_balloon = true + mutation_cooldown.start(0.1) func _on_balloon_gui_input(event: InputEvent) -> void: diff --git a/addons/dialogue_manager/example_balloon/example_balloon.tscn b/addons/dialogue_manager/example_balloon/example_balloon.tscn index d990dd9d10..ebf03632b5 100644 --- a/addons/dialogue_manager/example_balloon/example_balloon.tscn +++ b/addons/dialogue_manager/example_balloon/example_balloon.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://73jm5qjy52vq"] +[gd_scene format=3 uid="uid://73jm5qjy52vq"] [ext_resource type="Script" uid="uid://d1wt4ma6055l8" path="res://addons/dialogue_manager/example_balloon/example_balloon.gd" id="1_36de5"] [ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_a8ve6"] @@ -63,11 +63,47 @@ MarginContainer/constants/margin_right = 30 MarginContainer/constants/margin_top = 15 PanelContainer/styles/panel = SubResource("StyleBoxFlat_qkmqt") -[node name="ExampleBalloon" type="CanvasLayer"] +[sub_resource type="Animation" id="Animation_nlsx6"] +length = 0.001 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Progress:position:y") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} + +[sub_resource type="Animation" id="Animation_qkmqt"] +resource_name = "progress" +loop_mode = 1 +step = 0.1 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Progress:position:y") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0, 0, 0, 0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.2, -0.0157438, -4, -0.2, 0.0112069, 0.25, 0, -4, -0.25, 0, 0.25, 0, 0, -0.2, 0.00299701, 0.25, 0), +"times": PackedFloat32Array(0, 0.1, 0.5, 0.6, 1) +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_1337t"] +_data = { +&"RESET": SubResource("Animation_nlsx6"), +&"progress": SubResource("Animation_qkmqt") +} + +[node name="ExampleBalloon" type="CanvasLayer" unique_id=968164380] layer = 100 script = ExtResource("1_36de5") -[node name="Balloon" type="Control" parent="."] +[node name="Balloon" type="Control" parent="." unique_id=600943638] unique_name_in_owner = true layout_mode = 3 anchors_preset = 15 @@ -77,7 +113,7 @@ grow_horizontal = 2 grow_vertical = 2 theme = SubResource("Theme_qq3yp") -[node name="MarginContainer" type="MarginContainer" parent="Balloon"] +[node name="MarginContainer" type="MarginContainer" parent="Balloon" unique_id=2030962967] layout_mode = 1 anchors_preset = 12 anchor_top = 1.0 @@ -87,18 +123,22 @@ offset_top = -219.0 grow_horizontal = 2 grow_vertical = 0 -[node name="PanelContainer" type="PanelContainer" parent="Balloon/MarginContainer"] +[node name="PanelContainer" type="PanelContainer" parent="Balloon/MarginContainer" unique_id=1028240721] clip_children = 2 layout_mode = 2 mouse_filter = 1 -[node name="MarginContainer" type="MarginContainer" parent="Balloon/MarginContainer/PanelContainer"] +[node name="MarginContainer" type="MarginContainer" parent="Balloon/MarginContainer/PanelContainer" unique_id=1418101713] layout_mode = 2 -[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer"] +[node name="HBoxContainer" type="HBoxContainer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer" unique_id=1221914471] layout_mode = 2 -[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/VBoxContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer" unique_id=368414170] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/VBoxContainer" unique_id=777767437] unique_name_in_owner = true modulate = Color(1, 1, 1, 0.501961) layout_mode = 2 @@ -108,13 +148,26 @@ text = "Character" fit_content = true scroll_active = false -[node name="DialogueLabel" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/VBoxContainer" instance=ExtResource("2_a8ve6")] +[node name="DialogueLabel" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/VBoxContainer" unique_id=452040146 instance=ExtResource("2_a8ve6")] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 3 text = "Dialogue..." -[node name="ResponsesMenu" type="VBoxContainer" parent="Balloon" node_paths=PackedStringArray("response_template")] +[node name="Control" type="Control" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer" unique_id=1950468637] +custom_minimum_size = Vector2(20, 10) +layout_mode = 2 +size_flags_vertical = 8 + +[node name="Progress" type="Polygon2D" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/Control" unique_id=1670736474] +unique_name_in_owner = true +polygon = PackedVector2Array(0, 0, 10, 10, 20, 0) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/Control" unique_id=1662560142] +libraries/ = SubResource("AnimationLibrary_1337t") +autoplay = &"progress" + +[node name="ResponsesMenu" type="VBoxContainer" parent="Balloon" unique_id=2067757934 node_paths=PackedStringArray("response_template")] unique_name_in_owner = true layout_mode = 1 anchors_preset = 8 @@ -134,9 +187,12 @@ alignment = 1 script = ExtResource("3_72ixx") response_template = NodePath("ResponseExample") -[node name="ResponseExample" type="Button" parent="Balloon/ResponsesMenu"] +[node name="ResponseExample" type="Button" parent="Balloon/ResponsesMenu" unique_id=151186146] layout_mode = 2 text = "Response example" +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=1876065339] +unique_name_in_owner = true + [connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"] [connection signal="response_selected" from="Balloon/ResponsesMenu" to="." method="_on_responses_menu_response_selected"] diff --git a/addons/dialogue_manager/example_balloon/small_example_balloon.tscn b/addons/dialogue_manager/example_balloon/small_example_balloon.tscn index 03b4773cf5..0aab50b274 100644 --- a/addons/dialogue_manager/example_balloon/small_example_balloon.tscn +++ b/addons/dialogue_manager/example_balloon/small_example_balloon.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://13s5spsk34qu"] +[gd_scene load_steps=12 format=3 uid="uid://13s5spsk34qu"] [ext_resource type="Script" uid="uid://d1wt4ma6055l8" path="res://addons/dialogue_manager/example_balloon/example_balloon.gd" id="1_s2gbs"] [ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_hfvdi"] @@ -89,6 +89,27 @@ MarginContainer/constants/margin_right = 8 MarginContainer/constants/margin_top = 4 PanelContainer/styles/panel = SubResource("StyleBoxFlat_i6nbm") +[sub_resource type="Animation" id="Animation_i6nbm"] +resource_name = "progress" +loop_mode = 1 +step = 0.1 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Progress:position:y") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0, 0, 0, 0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.2, -0.0157438, -1, -0.2, 0.0112069, 0.25, 0, -1, -0.25, 0, 0.25, 0, 0, -0.2, 0.00299701, 0.25, 0), +"times": PackedFloat32Array(0, 0.1, 0.5, 0.6, 1) +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_6b6c8"] +_data = { +&"progress": SubResource("Animation_i6nbm") +} + [node name="ExampleBalloon" type="CanvasLayer"] layer = 100 script = ExtResource("1_s2gbs") @@ -121,10 +142,14 @@ mouse_filter = 1 [node name="MarginContainer" type="MarginContainer" parent="Balloon/MarginContainer/PanelContainer"] layout_mode = 2 -[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer"] +[node name="HBoxContainer" type="HBoxContainer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer"] layout_mode = 2 +size_flags_horizontal = 3 -[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/VBoxContainer"] +[node name="CharacterLabel" type="RichTextLabel" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/VBoxContainer"] unique_name_in_owner = true modulate = Color(1, 1, 1, 0.501961) layout_mode = 2 @@ -134,12 +159,28 @@ text = "Character" fit_content = true scroll_active = false -[node name="DialogueLabel" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/VBoxContainer" instance=ExtResource("2_hfvdi")] +[node name="DialogueLabel" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/VBoxContainer" instance=ExtResource("2_hfvdi")] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 3 text = "Dialogue..." +[node name="Control" type="Control" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer"] +custom_minimum_size = Vector2(5, 3) +layout_mode = 2 +size_flags_vertical = 8 + +[node name="Progress" type="Polygon2D" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/Control"] +unique_name_in_owner = true +position = Vector2(0, -0.455998) +polygon = PackedVector2Array(0, 0, 2.5, 3, 5, 0) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Balloon/MarginContainer/PanelContainer/MarginContainer/HBoxContainer/Control"] +libraries = { +&"": SubResource("AnimationLibrary_6b6c8") +} +autoplay = "progress" + [node name="ResponsesMenu" type="VBoxContainer" parent="Balloon"] unique_name_in_owner = true layout_mode = 1 @@ -162,5 +203,8 @@ script = ExtResource("3_1j1j0") layout_mode = 2 text = "Response Example" +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true + [connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"] [connection signal="response_selected" from="Balloon/ResponsesMenu" to="." method="_on_responses_menu_response_selected"] diff --git a/addons/dialogue_manager/export_plugin.gd b/addons/dialogue_manager/export_plugin.gd index ef65500a1b..b9872452b0 100644 --- a/addons/dialogue_manager/export_plugin.gd +++ b/addons/dialogue_manager/export_plugin.gd @@ -14,7 +14,7 @@ func _get_name() -> String: func _export_file(path: String, type: String, features: PackedStringArray) -> void: - var plugin_path: String = Engine.get_meta("DialogueManagerPlugin").get_plugin_path() + var plugin_path: String = DMPlugin.get_plugin_path() # Ignore any editor stuff for ignored_path: String in IGNORED_PATHS: diff --git a/addons/dialogue_manager/import_plugin.gd b/addons/dialogue_manager/import_plugin.gd index 9c4ad78bca..8759334694 100644 --- a/addons/dialogue_manager/import_plugin.gd +++ b/addons/dialogue_manager/import_plugin.gd @@ -62,21 +62,19 @@ func _get_option_visibility(path: String, option_name: StringName, options: Dict func _import(source_file: String, save_path: String, options: Dictionary, platform_variants: Array[String], gen_files: Array[String]) -> Error: - var cache = Engine.get_meta("DMCache") - # Get the raw file contents if not FileAccess.file_exists(source_file): return ERR_FILE_NOT_FOUND var file: FileAccess = FileAccess.open(source_file, FileAccess.READ) var raw_text: String = file.get_as_text() - cache.file_content_changed.emit(source_file, raw_text) + DMPlugin.instance.cache_file_content_changed.emit(source_file, raw_text) # Compile the text var result: DMCompilerResult = DMCompiler.compile_string(raw_text, source_file) if result.errors.size() > 0: printerr("%d errors found in %s" % [result.errors.size(), source_file]) - cache.add_errors_to_file(source_file, result.errors) + DMCache.add_errors_to_file(source_file, result.errors) return OK # Get the current addon version @@ -96,14 +94,14 @@ func _import(source_file: String, save_path: String, options: Dictionary, platfo resource.raw_text = result.raw_text # Clear errors and possibly trigger any cascade recompiles - cache.add_file(source_file, result) + DMCache.add_file(source_file, result) var err: Error = ResourceSaver.save(resource, "%s.%s" % [save_path, _get_save_extension()]) compiled_resource.emit(resource) # Recompile any dependencies - var dependent_paths: PackedStringArray = cache.get_dependent_paths_for_reimport(source_file) + var dependent_paths: PackedStringArray = DMCache.get_dependent_paths_for_reimport(source_file) for path in dependent_paths: append_import_external_resource(path) diff --git a/addons/dialogue_manager/inspector_plugin.gd b/addons/dialogue_manager/inspector_plugin.gd index 366c1f3a5a..866f053dd6 100644 --- a/addons/dialogue_manager/inspector_plugin.gd +++ b/addons/dialogue_manager/inspector_plugin.gd @@ -2,20 +2,16 @@ class_name DMInspectorPlugin extends EditorInspectorPlugin -const DialogueEditorProperty = preload("./components/editor_property/editor_property.gd") - - -func _can_handle(object) -> bool: +func _can_handle(object: Object) -> bool: if object is GDScript: return false - if not object is Node: return false + if not object is Node and not object is Resource: return false if "name" in object and object.name == "Dialogue Manager": return false return true -func _parse_property(object: Object, type, name: String, hint_type, hint_string: String, usage_flags: int, wide: bool) -> bool: +func _parse_property(object: Object, type, name: String, hint_type: PropertyHint, hint_string: String, usage_flags: int, wide: bool) -> bool: if hint_string == "DialogueResource" or ("dialogue" in name.to_lower() and hint_string == "Resource"): - var property_editor = DialogueEditorProperty.new() - add_property_editor(name, property_editor) + add_property_editor(name, DMDialogueEditorProperty.new()) return true return false diff --git a/addons/dialogue_manager/l10n/en.mo b/addons/dialogue_manager/l10n/en.mo deleted file mode 100644 index 2ab4fdfdac..0000000000 Binary files a/addons/dialogue_manager/l10n/en.mo and /dev/null differ diff --git a/addons/dialogue_manager/l10n/en.po b/addons/dialogue_manager/l10n/en.po index 132bff33c1..94f20656b1 100644 --- a/addons/dialogue_manager/l10n/en.po +++ b/addons/dialogue_manager/l10n/en.po @@ -37,7 +37,7 @@ msgid "all" msgstr "All" msgid "find_in_files" -msgstr "Find in files..." +msgstr "Find in Dialogue..." msgid "test_dialogue" msgstr "Test dialogue from start of file" @@ -105,8 +105,20 @@ msgstr "Jump to title" msgid "insert.end_dialogue" msgstr "End dialogue" -msgid "generate_line_ids" -msgstr "Generate line IDs" +msgid "generate_line_ids_for_project" +msgstr "Generate line IDs for project" + +msgid "generate_line_ids_for_file" +msgstr "Generate line IDs for file" + +msgid "generate_ids.warning_title" +msgstr "Generate line IDs?" + +msgid "generate_ids.warning_text" +msgstr "Generate line IDs for all lines in all dialogue files?\n\n**Make sure to commit any changes to source control BEFORE running this because it cannot be undone.**" + +msgid "generate_ids.ok_button" +msgstr "Generate IDs" msgid "use_uuid_only_for_ids" msgstr "Use UUID only for IDs" @@ -135,6 +147,9 @@ msgstr "Save changes" msgid "confirm_close.discard" msgstr "Discard" +msgid "confirm_n_unsaved_files" +msgstr "You have {count} unsaved dialogue files." + msgid "buffer.save" msgstr "Save" @@ -159,6 +174,9 @@ msgstr "Show in FileSystem" msgid "n_of_n" msgstr "{index} of {total}" +msgid "search.find_in_dialogue" +msgstr "Find in Dialogue" + msgid "search.find" msgstr "Find:" @@ -253,7 +271,7 @@ msgid "errors.unexpected_condition" msgstr "Unexpected condition." msgid "errors.duplicate_id" -msgstr "This ID is already on another line." +msgstr "This ID is already in use." msgid "errors.missing_id" msgstr "This line is missing an ID." @@ -339,6 +357,9 @@ msgstr "Nested dialogue lines may only contain dialogue." msgid "errors.err_nested_dialogue_invalid_jump" msgstr "Only the last line of nested dialogue is allowed to include a jump." +msgid "errors.missing_resource_for_autostart" +msgstr "You need to specify a dialogue resource when using auto-start." + msgid "errors.unknown" msgstr "Unknown syntax." diff --git a/addons/dialogue_manager/l10n/translations.pot b/addons/dialogue_manager/l10n/translations.pot index ad06ac7ea9..db420ce12b 100644 --- a/addons/dialogue_manager/l10n/translations.pot +++ b/addons/dialogue_manager/l10n/translations.pot @@ -98,7 +98,19 @@ msgstr "" msgid "insert.end_dialogue" msgstr "" -msgid "generate_line_ids" +msgid "generate_line_ids_for_project" +msgstr "" + +msgid "generate_line_ids_for_file" +msgstr "" + +msgid "generate_ids.warning_title" +msgstr "" + +msgid "generate_ids.warning_text" +msgstr "" + +msgid "generate_ids.ok_button" msgstr "" msgid "use_uuid_only_for_ids" @@ -125,6 +137,9 @@ msgstr "" msgid "confirm_close.discard" msgstr "" +msgid "confirm_n_unsaved_files" +msgstr "" + msgid "buffer.save" msgstr "" @@ -149,6 +164,9 @@ msgstr "" msgid "n_of_n" msgstr "" +msgid "search.find_in_dialogue" +msgstr "" + msgid "search.find" msgstr "" @@ -329,6 +347,9 @@ msgstr "" msgid "errors.err_nested_dialogue_invalid_jump" msgstr "" +msgid "errors.missing_resource_for_autostart" +msgstr "" + msgid "errors.unknown" msgstr "" diff --git a/addons/dialogue_manager/plugin.cfg b/addons/dialogue_manager/plugin.cfg index c8fa08f110..d7621d5970 100644 --- a/addons/dialogue_manager/plugin.cfg +++ b/addons/dialogue_manager/plugin.cfg @@ -3,5 +3,5 @@ name="Dialogue Manager" description="A powerful nonlinear dialogue system" author="Nathan Hoad" -version="3.7.1" +version="3.10.2" script="plugin.gd" diff --git a/addons/dialogue_manager/plugin.gd b/addons/dialogue_manager/plugin.gd index a5d607fa7e..a045b5abcb 100644 --- a/addons/dialogue_manager/plugin.gd +++ b/addons/dialogue_manager/plugin.gd @@ -1,20 +1,31 @@ @tool -extends EditorPlugin +class_name DMPlugin extends EditorPlugin -const MainView = preload("./views/main_view.tscn") +signal cache_file_content_changed(path: String, new_content: String) +const MainView: PackedScene = preload("./views/main_view.tscn") +const FindInDialogueView: PackedScene = preload("./views/find_in_dialogue_view.tscn") + + +static var instance: DMPlugin + var import_plugin: DMImportPlugin var export_plugin: DMExportPlugin var inspector_plugin: DMInspectorPlugin var translation_parser_plugin: DMTranslationParserPlugin -var main_view -var dialogue_cache: DMCache +var main_view: Control +var find_in_dialogue_view: Control + + +func _init() -> void: + instance = self func _enable_plugin() -> void: add_autoload_singleton("DialogueManager", get_plugin_path() + "/dialogue_manager.gd") + _housekeeping() func _disable_plugin() -> void: @@ -23,12 +34,8 @@ func _disable_plugin() -> void: func _enter_tree() -> void: if Engine.is_editor_hint(): - Engine.set_meta("DialogueManagerPlugin", self) - DMSettings.prepare() - - dialogue_cache = DMCache.new() - Engine.set_meta("DMCache", dialogue_cache) + DMCache.prepare() import_plugin = DMImportPlugin.new() add_import_plugin(import_plugin) @@ -45,7 +52,6 @@ func _enter_tree() -> void: main_view = MainView.instantiate() EditorInterface.get_editor_main_screen().add_child(main_view) _make_visible(false) - main_view.add_child(dialogue_cache) _update_localization() @@ -54,61 +60,6 @@ func _enter_tree() -> void: add_tool_menu_item("Create copy of dialogue example balloon...", _copy_dialogue_balloon) - # Automatically swap the script on the example balloon depending on if dotnet is being used. - if not FileAccess.file_exists("res://tests/test_basic_dialogue.gd"): - var plugin_path: String = get_plugin_path() - var balloon_file_names: PackedStringArray = ["example_balloon.tscn", "small_example_balloon.tscn"] - for balloon_file_name: String in balloon_file_names: - var balloon_path: String = plugin_path + "/example_balloon/" + balloon_file_name - var balloon_content: String = FileAccess.get_file_as_string(balloon_path) - if "example_balloon.gd" in balloon_content and DMSettings.check_for_dotnet_solution(): - balloon_content = balloon_content \ - # Replace script path with the C# one - .replace("example_balloon.gd", "ExampleBalloon.cs") \ - # Replace script UID with the C# one - .replace(ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/example_balloon.gd")), ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/ExampleBalloon.cs"))) - var balloon_file: FileAccess = FileAccess.open(balloon_path, FileAccess.WRITE) - balloon_file.store_string(balloon_content) - balloon_file.close() - elif "ExampleBalloon.cs" in balloon_content and not DMSettings.check_for_dotnet_solution(): - balloon_content = balloon_content \ - # Replace script path with the GDScript one - .replace("ExampleBalloon.cs", "example_balloon.gd") \ - # Replace script UID with the GDScript one - .replace(ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/ExampleBalloon.cs")), ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/example_balloon.gd"))) - var balloon_file: FileAccess = FileAccess.open(balloon_path, FileAccess.WRITE) - balloon_file.store_string(balloon_content) - balloon_file.close() - - # Automatically make any changes to the known custom balloon if there is one. - var balloon_path: String = DMSettings.get_setting(DMSettings.BALLOON_PATH, "") - if balloon_path != "" and FileAccess.file_exists(balloon_path): - var is_small_window: bool = ProjectSettings.get_setting("display/window/size/viewport_width") < 400 - var example_balloon_file_name: String = "small_example_balloon.tscn" if is_small_window else "example_balloon.tscn" - var example_balloon_path: String = get_plugin_path() + "/example_balloon/" + example_balloon_file_name - - var contents: String = FileAccess.get_file_as_string(balloon_path) - var has_changed: bool = false - - # Make sure the current balloon has a UID unique from the example balloon's - var example_balloon_uid: String = ResourceUID.id_to_text(ResourceLoader.get_resource_uid(example_balloon_path)) - var balloon_uid: String = ResourceUID.id_to_text(ResourceLoader.get_resource_uid(balloon_path)) - if example_balloon_uid == balloon_uid: - var new_balloon_uid: String = ResourceUID.id_to_text(ResourceUID.create_id()) - contents = contents.replace(example_balloon_uid, new_balloon_uid) - has_changed = true - - # Make sure the example balloon copy has the correct renaming of the responses menu - if "reponses" in contents: - contents = contents.replace("reponses", "responses") - has_changed = true - - # Save any changes - if has_changed: - var balloon_file: FileAccess = FileAccess.open(balloon_path, FileAccess.WRITE) - balloon_file.store_string(contents) - balloon_file.close() - func _exit_tree() -> void: remove_import_plugin(import_plugin) @@ -126,14 +77,15 @@ func _exit_tree() -> void: if is_instance_valid(main_view): main_view.queue_free() - Engine.remove_meta("DialogueManagerPlugin") - Engine.remove_meta("DMCache") + _hide_find_in_dialogue() EditorInterface.get_file_system_dock().files_moved.disconnect(_on_files_moved) EditorInterface.get_file_system_dock().file_removed.disconnect(_on_file_removed) remove_tool_menu_item("Create copy of dialogue example balloon...") + instance = null + func _has_main_screen() -> bool: return true @@ -176,9 +128,23 @@ func _apply_changes() -> void: _update_localization() +func _get_unsaved_status(for_scene: String) -> String: + if not for_scene.is_empty(): return "" + if not is_instance_valid(main_view): return "" + + var unsaved_count: int = main_view.count_unsaved_files() + if unsaved_count > 0: + return DMConstants.translate(&"confirm_n_unsaved_files").format({ count = unsaved_count }) + else: + return "" + + func _save_external_data() -> void: - if dialogue_cache != null: - dialogue_cache.reimport_files() + if is_instance_valid(main_view) and EditorInterface.get_editor_settings().get_setting("run/auto_save/save_before_running"): + main_view.apply_changes() + _update_localization() + + DMCache.reimport_files() func _build() -> bool: @@ -188,22 +154,48 @@ func _build() -> bool: # Ignore errors in other files if we are just running the test scene if DMSettings.get_user_value("is_running_test_scene", true): return true - if dialogue_cache != null: - dialogue_cache.reimport_files() + DMCache.reimport_files() - var files_with_errors = dialogue_cache.get_files_with_errors() - if files_with_errors.size() > 0: - for dialogue_file in files_with_errors: - push_error("You have %d error(s) in %s" % [dialogue_file.errors.size(), dialogue_file.path]) - EditorInterface.edit_resource(load(files_with_errors[0].path)) - main_view.show_build_error_dialog() - return false + var files_with_errors: Array[Dictionary] = DMCache.get_files_with_errors() + if files_with_errors.size() > 0: + for dialogue_file: Dictionary in files_with_errors: + push_error("You have %d error(s) in %s" % [dialogue_file.errors.size(), dialogue_file.path]) + EditorInterface.edit_resource(load(files_with_errors[0].path)) + main_view.show_build_error_dialog() + return false return true +## Open a [Dialogue Resource] and jump to a given title. +static func open_file_at_title(resource_or_path: Variant, title: String, create_if_none: bool = false) -> void: + var resource: DialogueResource = resource_or_path if resource_or_path is DialogueResource else load(resource_or_path) + EditorInterface.edit_resource(resource) + instance.main_view.go_to_title(title, create_if_none) + + +static func show_find_in_dialogue() -> void: + instance._show_find_in_dialogue() + + +func _show_find_in_dialogue() -> void: + if not is_instance_valid(find_in_dialogue_view): + find_in_dialogue_view = FindInDialogueView.instantiate() + find_in_dialogue_view.main_view = main_view + find_in_dialogue_view.result_selected.connect(main_view._on_find_in_files_result_selected) + add_control_to_bottom_panel(find_in_dialogue_view, DMConstants.translate(&"search.find_in_dialogue")) + make_bottom_panel_item_visible(find_in_dialogue_view) + find_in_dialogue_view.prepare() + + +func _hide_find_in_dialogue() -> void: + if is_instance_valid(find_in_dialogue_view): + remove_control_from_bottom_panel(find_in_dialogue_view) + find_in_dialogue_view.queue_free() + + ## Get the shortcuts used by the plugin -func get_editor_shortcuts() -> Dictionary: +static func get_editor_shortcuts() -> Dictionary: var shortcuts: Dictionary = { toggle_comment = [ _create_event("Ctrl+K"), @@ -239,30 +231,38 @@ func get_editor_shortcuts() -> Dictionary: ], text_size_reset = [ _create_event("Ctrl+0") + ], + + make_bold = [ + _create_event("Ctrl+Shift+b") + ], + make_italic = [ + _create_event("Ctrl+Shift+i") ] } var paths = EditorInterface.get_editor_paths() - var settings - if FileAccess.file_exists(paths.get_config_dir() + "/editor_settings-4.3.tres"): - settings = load(paths.get_config_dir() + "/editor_settings-4.3.tres") - elif FileAccess.file_exists(paths.get_config_dir() + "/editor_settings-4.tres"): - settings = load(paths.get_config_dir() + "/editor_settings-4.tres") - else: - return shortcuts + var settings: Resource = null + for version: String in ["4.5", "4.4", "4.3", "4"]: + var path: String = paths.get_config_dir() + "/editor_settings-" + version + ".tres" + if FileAccess.file_exists(path): + settings = load(path) + break + + if settings == null: return shortcuts - for s in settings.get("shortcuts"): - for key in shortcuts: + for s: Dictionary in settings.get("shortcuts"): + for key: String in shortcuts: if s.name == "script_text_editor/%s" % key or s.name == "script_editor/%s" % key: shortcuts[key] = [] - for event in s.shortcuts: + for event: InputEvent in s.shortcuts: if event is InputEventKey: shortcuts[key].append(event) return shortcuts -func _create_event(string: String) -> InputEventKey: +static func _create_event(string: String) -> InputEventKey: var event: InputEventKey = InputEventKey.new() var bits = string.split("+") event.keycode = OS.find_keycode_from_string(bits[bits.size() - 1]) @@ -274,30 +274,32 @@ func _create_event(string: String) -> InputEventKey: ## Get the editor shortcut that matches an event -func get_editor_shortcut(event: InputEventKey) -> String: +static func get_editor_shortcut(event: InputEventKey) -> String: var shortcuts: Dictionary = get_editor_shortcuts() - for key in shortcuts: - for shortcut in shortcuts.get(key, []): + for key: String in shortcuts: + for shortcut: InputEvent in shortcuts.get(key, []): if event.as_text().split(" ")[0] == shortcut.as_text().split(" ")[0]: return key return "" ## Get the current version -func get_version() -> String: +static func get_version() -> String: var config: ConfigFile = ConfigFile.new() config.load(get_plugin_path() + "/plugin.cfg") return config.get_value("plugin", "version") ## Get the current path of the plugin -func get_plugin_path() -> String: - return get_script().resource_path.get_base_dir() +static func get_plugin_path() -> String: + if not is_instance_valid(instance): + return "" + return instance.get_script().resource_path.get_base_dir() ## Update references to a moved file -func update_import_paths(from_path: String, to_path: String) -> void: - dialogue_cache.move_file_path(from_path, to_path) +func _update_import_paths(from_path: String, to_path: String) -> void: + DMCache.move_file_path(from_path, to_path) # Reopen the file if it's already open if main_view.current_file_path == from_path: @@ -308,8 +310,8 @@ func update_import_paths(from_path: String, to_path: String) -> void: main_view.open_file(to_path) # Update any other files that import the moved file - var dependents = dialogue_cache.get_files_with_dependency(from_path) - for dependent in dependents: + var dependents: Array = DMCache.get_files_with_dependency(from_path) + for dependent: Dictionary in dependents: dependent.dependencies.remove_at(dependent.dependencies.find(from_path)) dependent.dependencies.append(to_path) @@ -320,7 +322,7 @@ func update_import_paths(from_path: String, to_path: String) -> void: # Open the file and update the path var file: FileAccess = FileAccess.open(dependent.path, FileAccess.READ) - var text = file.get_as_text().replace(from_path, to_path) + var text: String = file.get_as_text().replace(from_path, to_path) file.close() file = FileAccess.open(dependent.path, FileAccess.WRITE) @@ -332,18 +334,18 @@ func _update_localization() -> void: if not DMSettings.get_setting(DMSettings.UPDATE_POT_FILES_AUTOMATICALLY, true): return - var dialogue_files = dialogue_cache.get_files() + var dialogue_files: PackedStringArray = DMCache.get_files() # Add any new files to POT generation var files_for_pot: PackedStringArray = ProjectSettings.get_setting("internationalization/locale/translations_pot_files", []) var files_for_pot_changed: bool = false - for path in dialogue_files: + for path: String in dialogue_files: if not files_for_pot.has(path): files_for_pot.append(path) files_for_pot_changed = true # Remove any POT references that don't exist any more - for i in range(files_for_pot.size() - 1, -1, -1): + for i: int in range(files_for_pot.size() - 1, -1, -1): var file_for_pot: String = files_for_pot[i] if file_for_pot.get_extension() == "dialogue" and not dialogue_files.has(file_for_pot): files_for_pot.remove_at(i) @@ -418,16 +420,75 @@ func _copy_dialogue_balloon() -> void: directory_dialog.popup_centered() +# Tidy up some things that may have gotten messy between versions. +func _housekeeping() -> void: + # Automatically swap the script on the example balloon depending on if dotnet is being used. + if not FileAccess.file_exists("res://tests/test_basic_dialogue.gd"): + var plugin_path: String = get_plugin_path() + var balloon_file_names: PackedStringArray = ["example_balloon.tscn", "small_example_balloon.tscn"] + for balloon_file_name: String in balloon_file_names: + var balloon_path: String = plugin_path + "/example_balloon/" + balloon_file_name + var balloon_content: String = FileAccess.get_file_as_string(balloon_path) + if "example_balloon.gd" in balloon_content and DMSettings.check_for_dotnet_solution(): + balloon_content = balloon_content \ + # Replace script path with the C# one + .replace("example_balloon.gd", "ExampleBalloon.cs") \ + # Replace script UID with the C# one + .replace(ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/example_balloon.gd")), ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/ExampleBalloon.cs"))) + var balloon_file: FileAccess = FileAccess.open(balloon_path, FileAccess.WRITE) + balloon_file.store_string(balloon_content) + balloon_file.close() + elif "ExampleBalloon.cs" in balloon_content and not DMSettings.check_for_dotnet_solution(): + balloon_content = balloon_content \ + # Replace script path with the GDScript one + .replace("ExampleBalloon.cs", "example_balloon.gd") \ + # Replace script UID with the GDScript one + .replace(ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/ExampleBalloon.cs")), ResourceUID.id_to_text(ResourceLoader.get_resource_uid(plugin_path + "/example_balloon/example_balloon.gd"))) + var balloon_file: FileAccess = FileAccess.open(balloon_path, FileAccess.WRITE) + balloon_file.store_string(balloon_content) + balloon_file.close() + + # Automatically make any changes to the known custom balloon if there is one. + var balloon_path: String = DMSettings.get_setting(DMSettings.BALLOON_PATH, "") + if balloon_path != "" and FileAccess.file_exists(balloon_path): + var is_small_window: bool = ProjectSettings.get_setting("display/window/size/viewport_width") < 400 + var example_balloon_file_name: String = "small_example_balloon.tscn" if is_small_window else "example_balloon.tscn" + var example_balloon_path: String = get_plugin_path() + "/example_balloon/" + example_balloon_file_name + + var contents: String = FileAccess.get_file_as_string(balloon_path) + var has_changed: bool = false + + # Make sure the current balloon has a UID unique from the example balloon's + var example_balloon_uid: String = ResourceUID.id_to_text(ResourceLoader.get_resource_uid(example_balloon_path)) + var balloon_uid: String = ResourceUID.id_to_text(ResourceLoader.get_resource_uid(balloon_path)) + if example_balloon_uid == balloon_uid: + var new_balloon_uid: String = ResourceUID.id_to_text(ResourceUID.create_id()) + contents = contents.replace(example_balloon_uid, new_balloon_uid) + has_changed = true + + # Make sure the example balloon copy has the correct renaming of the responses menu + if "reponses" in contents: + contents = contents.replace("reponses", "responses") + has_changed = true + + # Save any changes + if has_changed: + var balloon_file: FileAccess = FileAccess.open(balloon_path, FileAccess.WRITE) + balloon_file.store_string(contents) + balloon_file.close() + + + ### Signals func _on_files_moved(old_file: String, new_file: String) -> void: - update_import_paths(old_file, new_file) + _update_import_paths(old_file, new_file) DMSettings.move_recent_file(old_file, new_file) func _on_file_removed(file: String) -> void: - update_import_paths(file, "") + _update_import_paths(file, "") if is_instance_valid(main_view): main_view.close_file(file) _update_localization() diff --git a/addons/dialogue_manager/settings.gd b/addons/dialogue_manager/settings.gd index 01ed408957..06704a1ad0 100644 --- a/addons/dialogue_manager/settings.gd +++ b/addons/dialogue_manager/settings.gd @@ -15,6 +15,8 @@ const NEW_FILE_TEMPLATE = "editor/new_file_template" const MISSING_TRANSLATIONS_ARE_ERRORS = "editor/translations/missing_translations_are_errors" ## Include character names in the list of translatable strings. const INCLUDE_CHARACTERS_IN_TRANSLATABLE_STRINGS_LIST = "editor/translations/include_characters_in_translatable_strings_list" +## The default delimiter to use when exporting CSVs +const DEFAULT_CSV_DELIMITER = "editor/translations/default_csv_delimiter" ## The default locale to use when exporting CSVs const DEFAULT_CSV_LOCALE = "editor/translations/default_csv_locale" ## Any extra CSV locales to append to the exported translation CSV @@ -26,6 +28,9 @@ const INCLUDE_NOTES_IN_TRANSLATION_EXPORTS = "editor/translations/include_notes_ ## Automatically update the project's list of translatable files when dialogue files are added or removed const UPDATE_POT_FILES_AUTOMATICALLY = "editor/translations/update_pot_files_automatically" +## A processor handling special case compilation. +const DIALOGUE_PROCESSOR_PATH = "editor/advanced/dialogue_processor_path" + ## A custom test scene to use when testing dialogue. const CUSTOM_TEST_SCENE_PATH = "editor/advanced/custom_test_scene_path" ## Extra script files to include in the auto-complete-able list @@ -42,10 +47,7 @@ const WARN_ABOUT_METHOD_PROPERTY_OR_SIGNAL_NAME_CONFLICTS = "runtime/warn_about_ const IGNORE_MISSING_STATE_VALUES = "runtime/advanced/ignore_missing_state_values" ## Whether or not the project is utilising dotnet. const USES_DOTNET = "runtime/advanced/uses_dotnet" -## Maximum length of text prefix in auto-generated IDs -const AUTO_GENERATED_ID_PREFIX_LENGTH = "editor/translations/auto_generated_id_prefix_length" -## Use only UUID for auto-generated IDs without text prefix -const USE_UUID_ONLY_FOR_IDS = "editor/translations/use_uuid_only_for_ids" + static var SETTINGS_CONFIGURATION = { WRAP_LONG_LINES: { @@ -67,6 +69,12 @@ static var SETTINGS_CONFIGURATION = { value = true, type = TYPE_BOOL, }, + DEFAULT_CSV_DELIMITER: { + value = "Comma", + type = TYPE_STRING, + hint = PROPERTY_HINT_ENUM, + hint_string = "Comma,Semicolon,Tab" + }, DEFAULT_CSV_LOCALE: { value = "en", type = TYPE_STRING, @@ -95,6 +103,14 @@ static var SETTINGS_CONFIGURATION = { is_advanced = true }, + DIALOGUE_PROCESSOR_PATH: { + value = "", + type = TYPE_STRING, + hint = PROPERTY_HINT_FILE, + hint_string = "*.gd,*.cs", + is_advanced = true + }, + CUSTOM_TEST_SCENE_PATH: { value = preload("./test_scene.tscn").resource_path, type = TYPE_STRING, @@ -135,19 +151,7 @@ static var SETTINGS_CONFIGURATION = { value = false, type = TYPE_BOOL, is_hidden = true - }, - AUTO_GENERATED_ID_PREFIX_LENGTH: { - value = 30, - type = TYPE_INT, - hint = PROPERTY_HINT_RANGE, - hint_string = "0,100,1", - is_advanced = true - }, - USE_UUID_ONLY_FOR_IDS: { - value = false, - type = TYPE_BOOL, - is_advanced = true - }, + } } diff --git a/addons/dialogue_manager/utilities/builtins.gd b/addons/dialogue_manager/utilities/builtins.gd index 1f8f8ba3ac..c73adf9b1d 100644 --- a/addons/dialogue_manager/utilities/builtins.gd +++ b/addons/dialogue_manager/utilities/builtins.gd @@ -52,7 +52,9 @@ static func is_supported(thing, with_method: String = "") -> bool: static func resolve_property(builtin, property: String): match typeof(builtin): - TYPE_ARRAY, TYPE_PACKED_STRING_ARRAY, TYPE_DICTIONARY, TYPE_QUATERNION, TYPE_STRING, TYPE_STRING_NAME: + TYPE_DICTIONARY: + return builtin.get(property) + TYPE_ARRAY, TYPE_PACKED_STRING_ARRAY, TYPE_QUATERNION, TYPE_STRING, TYPE_STRING_NAME: return builtin[property] # Some types have constants that we need to manually resolve @@ -100,7 +102,7 @@ static func resolve_method(thing, method_name: String, args: Array): var expression = Expression.new() if expression.parse("thing.%s(%s)" % [method_name, ",".join(references.slice(1))], references) != OK: assert(false, expression.get_error_text()) - var result = expression.execute([thing] + args, null, false) + var result = await expression.execute([thing] + args, null, false) if expression.has_execute_failed(): resolve_method_error = ERR_CANT_RESOLVE return null diff --git a/addons/dialogue_manager/utilities/dialogue_cache.gd b/addons/dialogue_manager/utilities/dialogue_cache.gd index 33fc5ac2dd..7d4195d567 100644 --- a/addons/dialogue_manager/utilities/dialogue_cache.gd +++ b/addons/dialogue_manager/utilities/dialogue_cache.gd @@ -1,7 +1,4 @@ -class_name DMCache extends Node - - -signal file_content_changed(path: String, new_content: String) +class_name DMCache extends RefCounted # Keep track of errors and dependencies @@ -12,40 +9,87 @@ signal file_content_changed(path: String, new_content: String) # errors = [, ] # } # } -var _cache: Dictionary = {} +static var _cache: Dictionary = {} + +static var _update_dependency_timer: Timer +static var _update_dependency_paths: PackedStringArray = [] -var _update_dependency_timer: Timer = Timer.new() -var _update_dependency_paths: PackedStringArray = [] +static var _files_marked_for_reimport: PackedStringArray = [] + +# Keep track of used static IDs +# { +# = +# } +# Before compiling a file, remove any static IDs with a file path that matches +# the file +static var known_static_ids: Dictionary = {} -var _files_marked_for_reimport: PackedStringArray = [] +# Build the initial cache for dialogue files +static func prepare() -> void: + _update_dependency_timer = Timer.new() + _update_dependency_timer.timeout.connect(_on_dependency_timer_timeout) + (Engine.get_main_loop() as SceneTree).root.add_child(_update_dependency_timer) -func _ready() -> void: - add_child(_update_dependency_timer) - _update_dependency_timer.timeout.connect(_on_update_dependency_timeout) + var current_files: PackedStringArray = _get_dialogue_files_in_filesystem() + for file: String in current_files: + add_file(file) - _build_cache() + # Find any static IDs + var key_regex: RegEx = RegEx.create_from_string("\\[ID:(?.*?)\\]") + for file_path: String in get_files(): + var text: String = FileAccess.get_file_as_string(file_path) + var lines: PackedStringArray = text.split("\n") + for i: int in range(0, lines.size()): + var line = lines[i] + var found = key_regex.search(line) + if found: + known_static_ids[found.strings[found.names.get("key")]] = file_path -func mark_files_for_reimport(files: PackedStringArray) -> void: - for file in files: +static func mark_files_for_reimport(files: PackedStringArray) -> void: + for file: String in files: if not _files_marked_for_reimport.has(file): _files_marked_for_reimport.append(file) -func reimport_files(and_files: PackedStringArray = []) -> void: - for file in and_files: +static func reimport_files(and_files: PackedStringArray = []) -> void: + for file: String in and_files: if not _files_marked_for_reimport.has(file): _files_marked_for_reimport.append(file) - + if _files_marked_for_reimport.is_empty(): return - EditorInterface.get_resource_filesystem().reimport_files(_files_marked_for_reimport) + # Guard against recursive reimport calls. Don't mark for reimport unless attempted once. + var filesystem: Object = Engine.get_singleton("EditorInterface").get_resource_filesystem() + if filesystem.is_scanning(): + # Defer the reimport to the next idle frame. + _schedule_deferred_reimport.call_deferred() + return + + # Attempt reimport immediately if not busy. + Engine.get_singleton("EditorInterface").get_resource_filesystem().reimport_files(_files_marked_for_reimport) + _files_marked_for_reimport.clear() + + +## Helper to try and resolve recursive import crashes while importer is busy. +static func _schedule_deferred_reimport() -> void: + # Wait before trying again. + if _files_marked_for_reimport.is_empty(): return + + var filesystem: Object = Engine.get_singleton("EditorInterface").get_resource_filesystem() + if filesystem.is_scanning(): + # Still working on it. Try again later. + await Engine.get_main_loop().create_timer(0.1).timeout + _schedule_deferred_reimport() + return + + filesystem.reimport_files(_files_marked_for_reimport) _files_marked_for_reimport.clear() ## Add a dialogue file to the cache. -func add_file(path: String, compile_result: DMCompilerResult = null) -> void: +static func add_file(path: String, compile_result: DMCompilerResult = null) -> void: _cache[path] = { path = path, dependencies = [], @@ -56,23 +100,21 @@ func add_file(path: String, compile_result: DMCompilerResult = null) -> void: _cache[path].dependencies = Array(compile_result.imported_paths).filter(func(d): return d != path) _cache[path].compiled_at = Time.get_ticks_msec() - # If this is a fresh cache entry, check for dependencies - if compile_result == null and not _update_dependency_paths.has(path): - queue_updating_dependencies(path) + queue_updating_dependencies(path) ## Get the file paths in the cache -func get_files() -> PackedStringArray: +static func get_files() -> PackedStringArray: return _cache.keys() ## Check if a file is known to the cache -func has_file(path: String) -> bool: +static func has_file(path: String) -> bool: return _cache.has(path) ## Remember any errors in a dialogue file -func add_errors_to_file(path: String, errors: Array[Dictionary]) -> void: +static func add_errors_to_file(path: String, errors: Array[Dictionary]) -> void: if _cache.has(path): _cache[path].errors = errors else: @@ -85,7 +127,7 @@ func add_errors_to_file(path: String, errors: Array[Dictionary]) -> void: ## Get a list of files that have errors -func get_files_with_errors() -> Array[Dictionary]: +static func get_files_with_errors() -> Array[Dictionary]: var files_with_errors: Array[Dictionary] = [] for dialogue_file in _cache.values(): if dialogue_file and dialogue_file.errors.size() > 0: @@ -94,7 +136,9 @@ func get_files_with_errors() -> Array[Dictionary]: ## Queue a file to have its dependencies checked -func queue_updating_dependencies(of_path: String) -> void: +static func queue_updating_dependencies(of_path: String) -> void: + if _update_dependency_paths.has(of_path): return + _update_dependency_timer.stop() if not _update_dependency_paths.has(of_path): _update_dependency_paths.append(of_path) @@ -102,7 +146,7 @@ func queue_updating_dependencies(of_path: String) -> void: ## Update any references to a file path that has moved -func move_file_path(from_path: String, to_path: String) -> void: +static func move_file_path(from_path: String, to_path: String) -> void: if not _cache.has(from_path): return if to_path != "": @@ -111,32 +155,25 @@ func move_file_path(from_path: String, to_path: String) -> void: ## Get every dialogue file that imports on a file of a given path -func get_files_with_dependency(imported_path: String) -> Array: +static func get_files_with_dependency(imported_path: String) -> Array: return _cache.values().filter(func(d): return d.dependencies.has(imported_path)) ## Get any paths that are dependent on a given path -func get_dependent_paths_for_reimport(on_path: String) -> PackedStringArray: +static func get_dependent_paths_for_reimport(on_path: String) -> PackedStringArray: return get_files_with_dependency(on_path) \ .filter(func(d): return Time.get_ticks_msec() - d.get("compiled_at", 0) > 3000) \ .map(func(d): return d.path) -# Build the initial cache for dialogue files -func _build_cache() -> void: - var current_files: PackedStringArray = _get_dialogue_files_in_filesystem() - for file in current_files: - add_file(file) - - # Recursively find any dialogue files in a directory -func _get_dialogue_files_in_filesystem(path: String = "res://") -> PackedStringArray: +static func _get_dialogue_files_in_filesystem(path: String = "res://") -> PackedStringArray: var files: PackedStringArray = [] if DirAccess.dir_exists_absolute(path): - var dir = DirAccess.open(path) + var dir: DirAccess = DirAccess.open(path) dir.list_dir_begin() - var file_name = dir.get_next() + var file_name: String = dir.get_next() while file_name != "": var file_path: String = (path + "/" + file_name).simplify_path() if dir.current_is_dir(): @@ -152,7 +189,7 @@ func _get_dialogue_files_in_filesystem(path: String = "res://") -> PackedStringA #region Signals -func _on_update_dependency_timeout() -> void: +static func _on_dependency_timer_timeout() -> void: _update_dependency_timer.stop() var import_regex: RegEx = RegEx.create_from_string("import \"(?.*?)\"") var file: FileAccess diff --git a/addons/dialogue_manager/utilities/translations.gd b/addons/dialogue_manager/utilities/translations.gd new file mode 100644 index 0000000000..a3e9852cd4 --- /dev/null +++ b/addons/dialogue_manager/utilities/translations.gd @@ -0,0 +1,288 @@ +## A collection of utility functions for working with dialogue translations. +class_name DMTranslationUtilities extends RefCounted + + +## Generate translation keys from some text. +static func generate_static_line_ids_for_project() -> void: + var rng: RandomNumberGenerator = RandomNumberGenerator.new() + rng.randomize() + + for file_path: String in DMCache.get_files(): + var text: String = FileAccess.get_file_as_string(file_path) + + text = generate_static_line_ids_for_text(text, file_path) + + var file: FileAccess = FileAccess.open(file_path, FileAccess.WRITE) + file.store_string(text) + file.close() + + +## Generate static line IDs for some text. +static func generate_static_line_ids_for_text(text: String, file_path: String) -> String: + var lines: PackedStringArray = text.split("\n") + var compiled_lines: Dictionary = DMCompiler.compile_string(text, "").lines + + # Add in any that are missing + for i: int in lines.size(): + var line: String = lines[i] + var l: String = line.strip_edges() + + if not [DMConstants.TYPE_DIALOGUE, DMConstants.TYPE_RESPONSE].has(DMCompiler.get_line_type(l)): continue + if not compiled_lines.has(str(i)): continue + + if "[ID:" in line: continue + + var translatable_text: String = "" + if l.begins_with("- "): + translatable_text = DMCompiler.extract_translatable_string(l) + else: + translatable_text = l.substr(l.find(":") + 1) + + var key: String = _generate_id(file_path) + while key in DMCache.known_static_ids: + key = _generate_id(file_path) + line = line.replace("\\n", "!NEWLINE!") + translatable_text = translatable_text.replace("\n", "!NEWLINE!") + lines[i] = line.replace(translatable_text, translatable_text + " [ID:%s]" % [key]).replace("!NEWLINE!", "\\n") + + DMCache.known_static_ids[key] = file_path + + return "\n".join(lines) + + +## Get a random-ish ID for a line. +static func _generate_id(file_path: String) -> String: + return (file_path.sha1_text().substr(0, 6) + "_" + str(randi() % 1000000).sha1_text().substr(0, 6)).to_upper() + + +## Export dialogue and responses to CSV. +static func export_translations_to_csv(to_path: String, text: String, dialogue_path: String) -> void: + var default_locale: String = DMSettings.get_setting(DMSettings.DEFAULT_CSV_LOCALE, "en") + + var file: FileAccess + + # If the file exists, open it first and work out which keys are already in it + var existing_csv: Dictionary = {} + var delimiter: String = get_delimiter_for_csv(to_path) + var column_count: int = 2 + var default_locale_column: int = 1 + var character_column: int = -1 + var notes_column: int = -1 + if FileAccess.file_exists(to_path): + file = FileAccess.open(to_path, FileAccess.READ) + var is_first_line = true + var line: Array + while !file.eof_reached(): + line = file.get_csv_line(delimiter) + if is_first_line: + is_first_line = false + column_count = line.size() + for i in range(1, line.size()): + if line[i] == default_locale: + default_locale_column = i + elif line[i] == "_character": + character_column = i + elif line[i] == "_notes": + notes_column = i + + # Make sure the line isn't empty before adding it + if line.size() > 0 and line[0].strip_edges() != "": + existing_csv[line[0]] = line + + # The character column wasn't found in the existing file but the setting is turned on + if character_column == -1 and DMSettings.get_setting(DMSettings.INCLUDE_CHARACTER_IN_TRANSLATION_EXPORTS, false): + character_column = column_count + column_count += 1 + existing_csv["keys"].append("_character") + + # The notes column wasn't found in the existing file but the setting is turned on + if notes_column == -1 and DMSettings.get_setting(DMSettings.INCLUDE_NOTES_IN_TRANSLATION_EXPORTS, false): + notes_column = column_count + column_count += 1 + existing_csv["keys"].append("_notes") + + # Start a new file + file = FileAccess.open(to_path, FileAccess.WRITE) + + if not FileAccess.file_exists(to_path): + var headings: PackedStringArray = ["keys", default_locale] + DMSettings.get_setting(DMSettings.EXTRA_CSV_LOCALES, []) + if DMSettings.get_setting(DMSettings.INCLUDE_CHARACTER_IN_TRANSLATION_EXPORTS, false): + character_column = headings.size() + headings.append("_character") + if DMSettings.get_setting(DMSettings.INCLUDE_NOTES_IN_TRANSLATION_EXPORTS, false): + notes_column = headings.size() + headings.append("_notes") + + file.store_csv_line(headings, delimiter) + column_count = headings.size() + + # Write our translations to file + var known_keys: PackedStringArray = [] + + var dialogue = DMCompiler.compile_string(text, dialogue_path).lines + + # Make a list of stuff that needs to go into the file + var lines_to_save = [] + for key in dialogue.keys(): + var line: Dictionary = dialogue.get(key) + + if not line.type in [DMConstants.TYPE_DIALOGUE, DMConstants.TYPE_RESPONSE]: continue + + var translation_key: String = line.get(&"translation_key", line.text) + + if translation_key in known_keys: continue + + known_keys.append(translation_key) + + var line_to_save: PackedStringArray = [] + if existing_csv.has(translation_key): + line_to_save = existing_csv.get(translation_key) + line_to_save.resize(column_count) + existing_csv.erase(translation_key) + else: + line_to_save.resize(column_count) + line_to_save[0] = translation_key + + line_to_save[default_locale_column] = line.text + if character_column > -1: + line_to_save[character_column] = "(response)" if line.type == DMConstants.TYPE_RESPONSE else line.character + if notes_column > -1: + line_to_save[notes_column] = line.get("notes", "") + + lines_to_save.append(line_to_save) + + # Store lines in the file, starting with anything that already exists that hasn't been touched + for line in existing_csv.values(): + file.store_csv_line(line, delimiter) + for line in lines_to_save: + file.store_csv_line(line, delimiter) + + file.close() + + +## Get the delimier used for an existing CSV +static func get_delimiter_for_csv(path: String) -> String: + if FileAccess.file_exists(path): + var import_path: String = "%s.%s" % [path, "import"] + var import_file: ConfigFile = ConfigFile.new() + if import_file.load(import_path) == OK: + match import_file.get_value("params", "delimier", 0): + 0: + return "," + 1: + return ";" + 2: + return "\t" + + match DMSettings.get_setting(DMSettings.DEFAULT_CSV_DELIMITER, "Comma"): + "Comma": + return "," + "Semicolon": + return ";" + "Tab": + return "\t" + + return "," + + +## Save any character names in a file to CSV. +static func export_character_names_to_csv(to_path: String, text: String, dialogue_path: String) -> void: + var file: FileAccess + + # If the file exists, open it first and work out which keys are already in it + var existing_csv = {} + var delimiter: String = get_delimiter_for_csv(to_path) + var commas = [] + if FileAccess.file_exists(to_path): + file = FileAccess.open(to_path, FileAccess.READ) + var is_first_line = true + var line: Array + while !file.eof_reached(): + line = file.get_csv_line(delimiter) + if is_first_line: + is_first_line = false + for i in range(2, line.size()): + commas.append("") + # Make sure the line isn't empty before adding it + if line.size() > 0 and line[0].strip_edges() != "": + existing_csv[line[0]] = line + + # Start a new file + file = FileAccess.open(to_path, FileAccess.WRITE) + + if not file.file_exists(to_path): + file.store_csv_line(["keys", DMSettings.get_setting(DMSettings.DEFAULT_CSV_LOCALE, "en")], delimiter) + + # Write our translations to file + var known_keys: PackedStringArray = [] + + var character_names: PackedStringArray = DMCompiler.compile_string(text, dialogue_path).character_names + + # Make a list of stuff that needs to go into the file + var lines_to_save = [] + for character_name in character_names: + if character_name in known_keys: continue + + known_keys.append(character_name) + + if existing_csv.has(character_name): + var existing_line = existing_csv.get(character_name) + existing_line[1] = character_name + lines_to_save.append(existing_line) + existing_csv.erase(character_name) + else: + lines_to_save.append(PackedStringArray([character_name, character_name] + commas)) + + # Store lines in the file, starting with anything that already exists that hasn't been touched + for line in existing_csv.values(): + file.store_csv_line(line, delimiter) + for line in lines_to_save: + file.store_csv_line(line, delimiter) + + file.close() + + +## Replace translatable lines in some text using an existing CSV. +static func import_translations_from_csv(from_path: String, text: String) -> String: + if not FileAccess.file_exists(from_path): return text + + # Open the CSV file and build a dictionary of the known keys + var delimiter: String = get_delimiter_for_csv(from_path) + var keys: Dictionary = {} + var file: FileAccess = FileAccess.open(from_path, FileAccess.READ) + var csv_line: Array + while !file.eof_reached(): + csv_line = file.get_csv_line(delimiter) + if csv_line.size() > 1: + keys[csv_line[0]] = csv_line[1] + + # Now look over each line in the dialogue and replace the content for matched keys + var lines: PackedStringArray = text.split("\n") + var start_index: int = 0 + var end_index: int = 0 + for i in range(0, lines.size()): + var line: String = lines[i] + var translation_key: String = DMCompiler.get_static_line_id(line) + if keys.has(translation_key): + if DMCompiler.get_line_type(line) == DMConstants.TYPE_DIALOGUE: + start_index = 0 + # See if we need to skip over a character name + line = line.replace("\\:", "!ESCAPED_COLON!") + if ": " in line: + start_index = line.find(": ") + 2 + lines[i] = (line.substr(0, start_index) + keys.get(translation_key) + " [ID:" + translation_key + "]").replace("!ESCAPED_COLON!", ":") + + elif DMCompiler.get_line_type(line) == DMConstants.TYPE_RESPONSE: + start_index = line.find("- ") + 2 + # See if we need to skip over a character name + line = line.replace("\\:", "!ESCAPED_COLON!") + if ": " in line: + start_index = line.find(": ") + 2 + end_index = line.length() + if " =>" in line: + end_index = line.find(" =>") + if " [if " in line: + end_index = line.find(" [if ") + lines[i] = (line.substr(0, start_index) + keys.get(translation_key) + " [ID:" + translation_key + "]" + line.substr(end_index)).replace("!ESCAPED_COLON!", ":") + + return "\n".join(lines) diff --git a/addons/dialogue_manager/utilities/translations.gd.uid b/addons/dialogue_manager/utilities/translations.gd.uid new file mode 100644 index 0000000000..4c30f49594 --- /dev/null +++ b/addons/dialogue_manager/utilities/translations.gd.uid @@ -0,0 +1 @@ +uid://c74q663mmfyk1 diff --git a/addons/dialogue_manager/utilities/waiter.gd b/addons/dialogue_manager/utilities/waiter.gd new file mode 100644 index 0000000000..0724561c9c --- /dev/null +++ b/addons/dialogue_manager/utilities/waiter.gd @@ -0,0 +1,20 @@ +class_name DMWaiter extends Node + + +signal waited() + + +var _actions: PackedStringArray +var _null: String = str(null) + + +func _init(target_actions: PackedStringArray) -> void: + _actions = target_actions + + +func _input(event: InputEvent) -> void: + for action: String in _actions: + if event.is_pressed(): + if action == _null or (InputMap.has_action(action) and event.is_action(action)): + get_viewport().set_input_as_handled() + waited.emit() diff --git a/addons/dialogue_manager/utilities/waiter.gd.uid b/addons/dialogue_manager/utilities/waiter.gd.uid new file mode 100644 index 0000000000..95646ea480 --- /dev/null +++ b/addons/dialogue_manager/utilities/waiter.gd.uid @@ -0,0 +1 @@ +uid://bx7dtro7ywali diff --git a/addons/dialogue_manager/components/find_in_files.gd b/addons/dialogue_manager/views/find_in_dialogue_view.gd similarity index 83% rename from addons/dialogue_manager/components/find_in_files.gd rename to addons/dialogue_manager/views/find_in_dialogue_view.gd index de64b71785..9634eedf5e 100644 --- a/addons/dialogue_manager/components/find_in_files.gd +++ b/addons/dialogue_manager/views/find_in_dialogue_view.gd @@ -1,5 +1,5 @@ @tool -extends Control +extends PanelContainer signal result_selected(path: String, cursor: Vector2, length: int) @@ -7,8 +7,7 @@ signal result_selected(path: String, cursor: Vector2, length: int) const DialogueConstants = preload("../constants.gd") -@export var main_view: Control -@export var code_edit: CodeEdit +var main_view: Control @onready var input: LineEdit = %Input @onready var search_button: Button = %SearchButton @@ -37,12 +36,23 @@ var current_results: Dictionary = {}: var selections: PackedStringArray = [] +func _ready() -> void: + remove_child(result_template) + + +func _exit_tree() -> void: + result_template.queue_free() + + func prepare() -> void: + if not is_node_ready(): + await ready + input.grab_focus() var template_label = result_template.get_node("Label") - template_label.get_theme_stylebox(&"focus").bg_color = code_edit.theme_overrides.current_line_color - template_label.add_theme_font_override(&"normal_font", code_edit.get_theme_font(&"font")) + template_label.get_theme_stylebox(&"focus").bg_color = main_view.code_edit.theme_overrides.current_line_color + template_label.add_theme_font_override(&"normal_font", main_view.code_edit.get_theme_font(&"font")) replace_toggle.set_pressed_no_signal(false) replace_container.hide() @@ -60,7 +70,8 @@ func prepare() -> void: replace_selected_button.text = DialogueConstants.translate(&"search.replace_selected") selections.clear() - self.current_results = {} + current_results = {} + #region helpers @@ -93,15 +104,15 @@ func update_results_view() -> void: checkbox.visible = replace_toggle.button_pressed var result_label: RichTextLabel = result_item.get_node("Label") as RichTextLabel - var colors: Dictionary = code_edit.theme_overrides + var colors: Dictionary = main_view.code_edit.theme_overrides var highlight: String = "" if replace_toggle.button_pressed: - var matched_word: String = "[bgcolor=" + colors.critical_color.to_html() + "][color=" + colors.text_color.to_html() + "]" + path_result.matched_text + "[/color][/bgcolor]" - highlight = "[s]" + matched_word + "[/s][bgcolor=" + colors.notice_color.to_html() + "][color=" + colors.text_color.to_html() + "]" + replace_input.text + "[/color][/bgcolor]" + var matched_word: String = "[bgcolor=" + Color(colors.critical_color, 0.5).to_html() + "][color=" + colors.text_color.to_html() + "]" + path_result.matched_text + "[/color][/bgcolor]" + highlight = "[s]" + matched_word + "[/s][bgcolor=" + Color(colors.notice_color, 0.5).to_html() + "][color=" + colors.text_color.to_html() + "]" + replace_input.text + "[/color][/bgcolor]" else: - highlight = "[bgcolor=" + colors.notice_color.to_html() + "][color=" + colors.text_color.to_html() + "]" + path_result.matched_text + "[/color][/bgcolor]" + highlight = "[bgcolor=" + Color(colors.notice_color, 0.5).to_html() + "][color=" + colors.text_color.to_html() + "]" + path_result.matched_text + "[/color][/bgcolor]" var text: String = path_result.text.substr(0, path_result.index) + highlight + path_result.text.substr(path_result.index + path_result.query.length()) - result_label.text = "%s: %s" % [str(path_result.line).lpad(4), text] + result_label.text = "%s: %s" % [str(path_result.line + 1).lpad(4), text] result_label.gui_input.connect(func(event): if event is InputEventMouseButton and (event as InputEventMouseButton).button_index == MOUSE_BUTTON_LEFT and (event as InputEventMouseButton).double_click: result_selected.emit(path, Vector2(path_result.index, path_result.line), path_result.query.length()) @@ -114,9 +125,8 @@ func find_in_files() -> Dictionary: var results: Dictionary = {} var q: String = input.text - var cache = Engine.get_meta("DMCache") var file: FileAccess - for path in cache.get_files(): + for path in DMCache.get_files(): var path_results: Array = [] var lines: PackedStringArray = [] @@ -165,7 +175,7 @@ func replace_results(only_selected: bool) -> void: if main_view.open_buffers.has(path): lines = main_view.open_buffers.get(path).text.split("\n") else: - file = FileAccess.open(path, FileAccess.READ_WRITE) + file = FileAccess.open(path, FileAccess.READ) lines = file.get_as_text().split("\n") # Read the results in reverse because we're going to be modifying them as we go @@ -178,13 +188,14 @@ func replace_results(only_selected: bool) -> void: var replaced_text: String = "\n".join(lines) if file != null and file.is_open(): - file.seek(0) + file.close() + file = FileAccess.open(path, FileAccess.WRITE) file.store_string(replaced_text) file.close() else: main_view.open_buffers.get(path).text = replaced_text if main_view.current_file_path == path: - code_edit.text = replaced_text + main_view.code_edit.text = replaced_text current_results = find_in_files() diff --git a/addons/dialogue_manager/components/find_in_files.gd.uid b/addons/dialogue_manager/views/find_in_dialogue_view.gd.uid similarity index 100% rename from addons/dialogue_manager/components/find_in_files.gd.uid rename to addons/dialogue_manager/views/find_in_dialogue_view.gd.uid diff --git a/addons/dialogue_manager/components/find_in_files.tscn b/addons/dialogue_manager/views/find_in_dialogue_view.tscn similarity index 72% rename from addons/dialogue_manager/components/find_in_files.tscn rename to addons/dialogue_manager/views/find_in_dialogue_view.tscn index 97fca24810..356e66ad65 100644 --- a/addons/dialogue_manager/components/find_in_files.tscn +++ b/addons/dialogue_manager/views/find_in_dialogue_view.tscn @@ -1,13 +1,12 @@ -[gd_scene load_steps=3 format=3 uid="uid://0n7hwviyyly4"] +[gd_scene format=3 uid="uid://0n7hwviyyly4"] -[ext_resource type="Script" uid="uid://q368fmxxa8sd" path="res://addons/dialogue_manager/components/find_in_files.gd" id="1_3xicy"] +[ext_resource type="Script" uid="uid://q368fmxxa8sd" path="res://addons/dialogue_manager/views/find_in_dialogue_view.gd" id="1_3xicy"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_owohg"] bg_color = Color(0.266667, 0.278431, 0.352941, 0.243137) corner_detail = 1 -[node name="FindInFiles" type="Control"] -layout_mode = 3 +[node name="FindInFiles" type="PanelContainer" unique_id=705304810] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -17,110 +16,101 @@ size_flags_horizontal = 3 size_flags_vertical = 3 script = ExtResource("1_3xicy") -[node name="VBoxContainer" type="VBoxContainer" parent="."] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 +[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=588637275] +layout_mode = 2 -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer" unique_id=789222873] layout_mode = 2 -[node name="FindContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"] +[node name="FindContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer" unique_id=1106456190] layout_mode = 2 size_flags_horizontal = 3 -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer/FindContainer"] +[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer/FindContainer" unique_id=644125253] layout_mode = 2 text = "Find:" -[node name="Input" type="LineEdit" parent="VBoxContainer/HBoxContainer/FindContainer"] +[node name="Input" type="LineEdit" parent="VBoxContainer/HBoxContainer/FindContainer" unique_id=1946262801] unique_name_in_owner = true layout_mode = 2 clear_button_enabled = true -[node name="FindToolbar" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/FindContainer"] +[node name="FindToolbar" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/FindContainer" unique_id=872227533] layout_mode = 2 -[node name="SearchButton" type="Button" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar"] +[node name="SearchButton" type="Button" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar" unique_id=667930226] unique_name_in_owner = true layout_mode = 2 text = "Find all..." -[node name="MatchCaseButton" type="CheckBox" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar"] +[node name="MatchCaseButton" type="CheckBox" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar" unique_id=152832269] unique_name_in_owner = true layout_mode = 2 text = "Match case" -[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar"] +[node name="Control" type="Control" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar" unique_id=1072708585] layout_mode = 2 size_flags_horizontal = 3 -[node name="ReplaceToggle" type="CheckButton" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar"] +[node name="ReplaceToggle" type="CheckButton" parent="VBoxContainer/HBoxContainer/FindContainer/FindToolbar" unique_id=1636801863] unique_name_in_owner = true layout_mode = 2 text = "Replace" -[node name="ReplaceContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"] +[node name="ReplaceContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer" unique_id=960698141] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 -[node name="ReplaceLabel" type="Label" parent="VBoxContainer/HBoxContainer/ReplaceContainer"] +[node name="ReplaceLabel" type="Label" parent="VBoxContainer/HBoxContainer/ReplaceContainer" unique_id=1808438777] layout_mode = 2 text = "Replace with:" -[node name="ReplaceInput" type="LineEdit" parent="VBoxContainer/HBoxContainer/ReplaceContainer"] +[node name="ReplaceInput" type="LineEdit" parent="VBoxContainer/HBoxContainer/ReplaceContainer" unique_id=621715286] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 clear_button_enabled = true -[node name="ReplaceToolbar" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/ReplaceContainer"] +[node name="ReplaceToolbar" type="HBoxContainer" parent="VBoxContainer/HBoxContainer/ReplaceContainer" unique_id=1014505700] layout_mode = 2 -[node name="ReplaceSelectedButton" type="Button" parent="VBoxContainer/HBoxContainer/ReplaceContainer/ReplaceToolbar"] +[node name="ReplaceSelectedButton" type="Button" parent="VBoxContainer/HBoxContainer/ReplaceContainer/ReplaceToolbar" unique_id=1137093995] unique_name_in_owner = true layout_mode = 2 text = "Replace selected" -[node name="ReplaceAllButton" type="Button" parent="VBoxContainer/HBoxContainer/ReplaceContainer/ReplaceToolbar"] +[node name="ReplaceAllButton" type="Button" parent="VBoxContainer/HBoxContainer/ReplaceContainer/ReplaceToolbar" unique_id=1540770339] unique_name_in_owner = true layout_mode = 2 text = "Replace all" -[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer" unique_id=605451224] layout_mode = 2 -[node name="ReplaceToolbar" type="HBoxContainer" parent="VBoxContainer/VBoxContainer"] +[node name="ReplaceToolbar" type="HBoxContainer" parent="VBoxContainer/VBoxContainer" unique_id=387078090] layout_mode = 2 -[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"] +[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer" unique_id=1407099062] layout_mode = 2 size_flags_vertical = 3 follow_focus = true -[node name="ResultsContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer"] +[node name="ResultsContainer" type="VBoxContainer" parent="VBoxContainer/ScrollContainer" unique_id=323245871] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 theme_override_constants/separation = 0 -[node name="ResultTemplate" type="HBoxContainer" parent="."] +[node name="ResultTemplate" type="HBoxContainer" parent="." unique_id=1576110409] unique_name_in_owner = true -layout_mode = 0 -offset_left = 155.0 -offset_top = -74.0 -offset_right = 838.0 -offset_bottom = -51.0 +layout_mode = 2 -[node name="CheckBox" type="CheckBox" parent="ResultTemplate"] +[node name="CheckBox" type="CheckBox" parent="ResultTemplate" unique_id=2062125934] layout_mode = 2 -[node name="Label" type="RichTextLabel" parent="ResultTemplate"] +[node name="Label" type="RichTextLabel" parent="ResultTemplate" unique_id=81253408] layout_mode = 2 size_flags_horizontal = 3 focus_mode = 2 diff --git a/addons/dialogue_manager/views/main_view.gd b/addons/dialogue_manager/views/main_view.gd index 5ef46947c4..2b9c2038ac 100644 --- a/addons/dialogue_manager/views/main_view.gd +++ b/addons/dialogue_manager/views/main_view.gd @@ -6,7 +6,8 @@ const OPEN_OPEN = 100 const OPEN_QUICK = 101 const OPEN_CLEAR = 102 -const TRANSLATIONS_GENERATE_LINE_IDS = 100 +const TRANSLATIONS_GENERATE_LINE_IDS_FOR_PROJECT = 100 +const TRANSLATIONS_GENERATE_LINE_IDS_FOR_FILE = 101 const TRANSLATIONS_SAVE_CHARACTERS_TO_CSV = 201 const TRANSLATIONS_SAVE_TO_CSV = 202 const TRANSLATIONS_IMPORT_FROM_CSV = 203 @@ -48,8 +49,8 @@ signal confirmation_closed() @onready var build_error_dialog: AcceptDialog = $BuildErrorDialog @onready var close_confirmation_dialog: ConfirmationDialog = $CloseConfirmationDialog @onready var updated_dialog: AcceptDialog = $UpdatedDialog -@onready var find_in_files_dialog: AcceptDialog = $FindInFilesDialog -@onready var find_in_files: Control = $FindInFilesDialog/FindInFiles +@onready var generate_static_ids_confirmation_dialog: ConfirmationDialog = $GenerateStaticIdsConfirmationDialog + # Toolbar @onready var new_button: Button = %NewButton @@ -93,6 +94,7 @@ var current_file_path: String = "": title_list.hide() code_edit.hide() errors_panel.hide() + search_and_replace.hide() banner.show() else: test_button.disabled = false @@ -132,19 +134,15 @@ var open_buffers: Dictionary = {} # Which thing are we exporting translations for? var translation_source: TranslationSource = TranslationSource.Lines -var plugin: EditorPlugin - func _ready() -> void: - plugin = Engine.get_meta("DialogueManagerPlugin") - apply_theme() # Start with nothing open self.current_file_path = "" # Set up the update checker - version_label.text = "v%s" % plugin.get_version() + version_label.text = "v%s" % DMPlugin.get_version() update_button.on_before_refresh = func on_before_refresh(): # Save everything DMSettings.set_user_value("just_refreshed", { @@ -167,11 +165,13 @@ func _ready() -> void: translations_button.get_popup().id_pressed.connect(_on_translations_button_menu_id_pressed) code_edit.main_view = self - code_edit.wrap_mode = TextEdit.LINE_WRAPPING_BOUNDARY if DMSettings.get_setting(DMSettings.WRAP_LONG_LINES, false) else TextEdit.LINE_WRAPPING_NONE var editor_settings: EditorSettings = EditorInterface.get_editor_settings() editor_settings.settings_changed.connect(_on_editor_settings_changed) _on_editor_settings_changed() + ProjectSettings.settings_changed.connect(_on_project_settings_changed) + _on_project_settings_changed() + # Reopen any files that were open when Godot was closed if editor_settings.get_setting("text_editor/behavior/files/restore_scripts_on_load"): var reopen_files: Array = DMSettings.get_user_value("reopen_files", []) @@ -188,7 +188,7 @@ func _ready() -> void: errors_dialog.dialog_text = DMConstants.translate(&"errors_in_script") # Update the buffer if a file was modified externally (retains undo step) - Engine.get_meta("DMCache").file_content_changed.connect(_on_cache_file_content_changed) + DMPlugin.instance.cache_file_content_changed.connect(_on_cache_file_content_changed) EditorInterface.get_file_system_dock().files_moved.connect(_on_files_moved) @@ -204,7 +204,7 @@ func _unhandled_input(event: InputEvent) -> void: if not visible: return if event is InputEventKey and event.is_pressed(): - var shortcut: String = plugin.get_editor_shortcut(event) + var shortcut: String = DMPlugin.get_editor_shortcut(event) match shortcut: "close_file": get_viewport().set_input_as_handled() @@ -224,6 +224,15 @@ func apply_changes() -> void: save_files() +# Check if any open files have unsaved changes. +func count_unsaved_files() -> int: + var count: int = 0 + for buffer in open_buffers.values(): + if buffer.text != buffer.pristine_text: + count += 1 + return count + + # Load back to the previous buffer regardless of if it was actually saved func load_from_version_refresh(just_refreshed: Dictionary) -> void: if just_refreshed.has("current_file_content"): @@ -287,7 +296,7 @@ func open_file(path: String) -> void: func quick_open() -> void: - quick_open_files_list.files = Engine.get_meta("DMCache").get_files() + quick_open_files_list.files = DMCache.get_files() quick_open_dialog.popup_centered() quick_open_files_list.focus_filter() @@ -307,7 +316,7 @@ func save_files() -> void: save_file(path, false) if saved_files.size() > 0: - Engine.get_meta("DMCache").mark_files_for_reimport(saved_files) + DMCache.mark_files_for_reimport(saved_files) # Save a file @@ -363,13 +372,13 @@ func remove_file_from_open_buffers(path: String) -> void: # Apply theme colors and icons to the UI func apply_theme() -> void: - if is_instance_valid(plugin) and is_instance_valid(code_edit): + if is_instance_valid(code_edit): var scale: float = EditorInterface.get_editor_scale() var editor_settings = EditorInterface.get_editor_settings() code_edit.theme_overrides = { scale = scale, - background_color = editor_settings.get_setting("text_editor/theme/highlighting/background_color"), + background_color = Color(editor_settings.get_setting("interface/theme/base_color").blend(editor_settings.get_setting("text_editor/theme/highlighting/background_color")), 1), current_line_color = editor_settings.get_setting("text_editor/theme/highlighting/current_line_color"), error_line_color = editor_settings.get_setting("text_editor/theme/highlighting/mark_color"), @@ -380,12 +389,13 @@ func apply_theme() -> void: text_color = editor_settings.get_setting("text_editor/theme/highlighting/text_color"), conditions_color = editor_settings.get_setting("text_editor/theme/highlighting/keyword_color"), mutations_color = editor_settings.get_setting("text_editor/theme/highlighting/function_color"), + mutations_line_color = Color(editor_settings.get_setting("text_editor/theme/highlighting/function_color"), 0.6), members_color = editor_settings.get_setting("text_editor/theme/highlighting/member_variable_color"), strings_color = editor_settings.get_setting("text_editor/theme/highlighting/string_color"), numbers_color = editor_settings.get_setting("text_editor/theme/highlighting/number_color"), symbols_color = editor_settings.get_setting("text_editor/theme/highlighting/symbol_color"), comments_color = editor_settings.get_setting("text_editor/theme/highlighting/comment_color"), - jumps_color = Color(editor_settings.get_setting("text_editor/theme/highlighting/control_flow_keyword_color"), 0.7), + jumps_color = Color(editor_settings.get_setting("text_editor/theme/highlighting/control_flow_keyword_color"), 0.6), font_size = editor_settings.get_setting("interface/editor/code_font_size") } @@ -452,7 +462,8 @@ func apply_theme() -> void: # Set up the translations menu popup = translations_button.get_popup() popup.clear() - popup.add_icon_item(get_theme_icon("Translation", "EditorIcons"), DMConstants.translate(&"generate_line_ids"), TRANSLATIONS_GENERATE_LINE_IDS) + popup.add_icon_item(get_theme_icon("Translation", "EditorIcons"), DMConstants.translate(&"generate_line_ids_for_file"), TRANSLATIONS_GENERATE_LINE_IDS_FOR_FILE) + popup.add_icon_item(get_theme_icon("Translation", "EditorIcons"), DMConstants.translate(&"generate_line_ids_for_project"), TRANSLATIONS_GENERATE_LINE_IDS_FOR_PROJECT) popup.add_separator() popup.add_icon_item(get_theme_icon("FileList", "EditorIcons"), DMConstants.translate(&"save_characters_to_csv"), TRANSLATIONS_SAVE_CHARACTERS_TO_CSV) popup.add_icon_item(get_theme_icon("FileList", "EditorIcons"), DMConstants.translate(&"save_to_csv"), TRANSLATIONS_SAVE_TO_CSV) @@ -465,10 +476,15 @@ func apply_theme() -> void: quick_open_dialog.min_size = Vector2(400, 600) * scale export_dialog.min_size = Vector2(600, 500) * scale import_dialog.min_size = Vector2(600, 500) * scale - find_in_files_dialog.min_size = Vector2(800, 600) * scale -### Helpers +#region Helpers + + +# Move the cursor to a given title in the dialogue editor +func go_to_title(title: String, create_if_none: bool = false) -> void: + code_edit.go_to_title(title, create_if_none) + code_edit.grab_focus() # Refresh the open menu with the latest files @@ -519,82 +535,10 @@ func show_build_error_dialog() -> void: # Generate translation line IDs for any line that doesn't already have one func generate_translations_keys() -> void: - var rng: RandomNumberGenerator = RandomNumberGenerator.new() - rng.randomize() - - var cursor: Vector2 = code_edit.get_cursor() - var lines: PackedStringArray = code_edit.text.split("\n") - - var key_regex = RegEx.new() - key_regex.compile("\\[ID:(?.*?)\\]") - - var compiled_lines: Dictionary = DMCompiler.compile_string(code_edit.text, "").lines - - # Make list of known keys - var known_keys = {} - for i in range(0, lines.size()): - var line = lines[i] - var found = key_regex.search(line) - if found: - var text = "" - var l = line.replace(found.strings[0], "").strip_edges().strip_edges() - if l.begins_with("- "): - text = DMCompiler.extract_translatable_string(l) - elif ":" in l: - text = l.split(":")[1] - else: - text = l - known_keys[found.strings[found.names.get("key")]] = text - - # Add in any that are missing - for i in lines.size(): - var line = lines[i] - var l = line.strip_edges() - - if not [DMConstants.TYPE_DIALOGUE, DMConstants.TYPE_RESPONSE].has(DMCompiler.get_line_type(l)): continue - if not compiled_lines.has(str(i)): continue - - if "[ID:" in line: continue - - var text = "" - if l.begins_with("- "): - text = DMCompiler.extract_translatable_string(l) - else: - text = l.substr(l.find(":") + 1) - - var key: String = "" - if known_keys.values().has(text): - key = known_keys.find_key(text) - else: - var regex: DMCompilerRegEx = DMCompilerRegEx.new() - if DMSettings.get_setting(DMSettings.USE_UUID_ONLY_FOR_IDS, false): - # Generate UUID only - var uuid = str(randi() % 1000000).sha1_text().substr(0, 12) - key = uuid.to_upper() - else: - # Generate text prefix + hash - var prefix_length = DMSettings.get_setting(DMSettings.AUTO_GENERATED_ID_PREFIX_LENGTH, 30) - key = regex.ALPHA_NUMERIC.sub(text.strip_edges(), "_", true).substr(0, prefix_length) - if key.begins_with("_"): - key = key.substr(1) - if key.ends_with("_"): - key = key.substr(0, key.length() - 1) - - # Make sure key is unique - var hashed_key: String = key + "_" + str(randi() % 1000000).sha1_text().substr(0, 6) - while hashed_key in known_keys and text != known_keys.get(hashed_key): - hashed_key = key + "_" + str(randi() % 1000000).sha1_text().substr(0, 6) - key = hashed_key.to_upper() - - line = line.replace("\\n", "!NEWLINE!") - text = text.replace("\n", "!NEWLINE!") - lines[i] = line.replace(text, text + " [ID:%s]" % [key]).replace("!NEWLINE!", "\\n") - - known_keys[key] = text - - code_edit.text = "\n".join(lines) - code_edit.set_cursor(cursor) - _on_code_edit_text_changed() + generate_static_ids_confirmation_dialog.title = DMConstants.translate("generate_ids.warning_title") + generate_static_ids_confirmation_dialog.dialog_text = DMConstants.translate("generate_ids.warning_text") + generate_static_ids_confirmation_dialog.ok_button_text = DMConstants.translate("generate_ids.ok_button") + generate_static_ids_confirmation_dialog.popup_centered() # Add a translation file to the project settings @@ -607,168 +551,20 @@ func add_path_to_project_translations(path: String) -> void: # Export dialogue and responses to CSV func export_translations_to_csv(path: String) -> void: - var default_locale: String = DMSettings.get_setting(DMSettings.DEFAULT_CSV_LOCALE, "en") - - var file: FileAccess - - # If the file exists, open it first and work out which keys are already in it - var existing_csv: Dictionary = {} - var column_count: int = 2 - var default_locale_column: int = 1 - var character_column: int = -1 - var notes_column: int = -1 - if FileAccess.file_exists(path): - file = FileAccess.open(path, FileAccess.READ) - var is_first_line = true - var line: Array - while !file.eof_reached(): - line = file.get_csv_line() - if is_first_line: - is_first_line = false - column_count = line.size() - for i in range(1, line.size()): - if line[i] == default_locale: - default_locale_column = i - elif line[i] == "_character": - character_column = i - elif line[i] == "_notes": - notes_column = i - - # Make sure the line isn't empty before adding it - if line.size() > 0 and line[0].strip_edges() != "": - existing_csv[line[0]] = line - - # The character column wasn't found in the existing file but the setting is turned on - if character_column == -1 and DMSettings.get_setting(DMSettings.INCLUDE_CHARACTER_IN_TRANSLATION_EXPORTS, false): - character_column = column_count - column_count += 1 - existing_csv["keys"].append("_character") - - # The notes column wasn't found in the existing file but the setting is turned on - if notes_column == -1 and DMSettings.get_setting(DMSettings.INCLUDE_NOTES_IN_TRANSLATION_EXPORTS, false): - notes_column = column_count - column_count += 1 - existing_csv["keys"].append("_notes") - - # Start a new file - file = FileAccess.open(path, FileAccess.WRITE) - - if not FileAccess.file_exists(path): - var headings: PackedStringArray = ["keys", default_locale] + DMSettings.get_setting(DMSettings.EXTRA_CSV_LOCALES, []) - if DMSettings.get_setting(DMSettings.INCLUDE_CHARACTER_IN_TRANSLATION_EXPORTS, false): - character_column = headings.size() - headings.append("_character") - if DMSettings.get_setting(DMSettings.INCLUDE_NOTES_IN_TRANSLATION_EXPORTS, false): - notes_column = headings.size() - headings.append("_notes") - file.store_csv_line(headings) - column_count = headings.size() - - # Write our translations to file - var known_keys: PackedStringArray = [] - - var dialogue = DMCompiler.compile_string(code_edit.text, current_file_path).lines - - # Make a list of stuff that needs to go into the file - var lines_to_save = [] - for key in dialogue.keys(): - var line: Dictionary = dialogue.get(key) - - if not line.type in [DMConstants.TYPE_DIALOGUE, DMConstants.TYPE_RESPONSE]: continue - - var translation_key: String = line.get(&"translation_key", line.text) - - if translation_key in known_keys: continue - - known_keys.append(translation_key) - - var line_to_save: PackedStringArray = [] - if existing_csv.has(translation_key): - line_to_save = existing_csv.get(translation_key) - line_to_save.resize(column_count) - existing_csv.erase(translation_key) - else: - line_to_save.resize(column_count) - line_to_save[0] = translation_key - - line_to_save[default_locale_column] = line.text - if character_column > -1: - line_to_save[character_column] = "(response)" if line.type == DMConstants.TYPE_RESPONSE else line.character - if notes_column > -1: - line_to_save[notes_column] = line.notes - - lines_to_save.append(line_to_save) - - # Store lines in the file, starting with anything that already exists that hasn't been touched - for line in existing_csv.values(): - file.store_csv_line(line) - for line in lines_to_save: - file.store_csv_line(line) - - file.close() + DMTranslationUtilities.export_translations_to_csv(path, code_edit.text, current_file_path) EditorInterface.get_resource_filesystem().scan() EditorInterface.get_file_system_dock().call_deferred("navigate_to_path", path) # Add it to the project l10n settings if it's not already there + var default_locale: String = DMSettings.get_setting(DMSettings.DEFAULT_CSV_LOCALE, "en") var language_code: RegExMatch = RegEx.create_from_string("^[a-z]{2,3}").search(default_locale) var translation_path: String = path.replace(".csv", ".%s.translation" % language_code.get_string()) call_deferred("add_path_to_project_translations", translation_path) func export_character_names_to_csv(path: String) -> void: - var file: FileAccess - - # If the file exists, open it first and work out which keys are already in it - var existing_csv = {} - var commas = [] - if FileAccess.file_exists(path): - file = FileAccess.open(path, FileAccess.READ) - var is_first_line = true - var line: Array - while !file.eof_reached(): - line = file.get_csv_line() - if is_first_line: - is_first_line = false - for i in range(2, line.size()): - commas.append("") - # Make sure the line isn't empty before adding it - if line.size() > 0 and line[0].strip_edges() != "": - existing_csv[line[0]] = line - - # Start a new file - file = FileAccess.open(path, FileAccess.WRITE) - - if not file.file_exists(path): - file.store_csv_line(["keys", DMSettings.get_setting(DMSettings.DEFAULT_CSV_LOCALE, "en")]) - - # Write our translations to file - var known_keys: PackedStringArray = [] - - var character_names: PackedStringArray = DMCompiler.compile_string(code_edit.text, current_file_path).character_names - - # Make a list of stuff that needs to go into the file - var lines_to_save = [] - for character_name in character_names: - if character_name in known_keys: continue - - known_keys.append(character_name) - - if existing_csv.has(character_name): - var existing_line = existing_csv.get(character_name) - existing_line[1] = character_name - lines_to_save.append(existing_line) - existing_csv.erase(character_name) - else: - lines_to_save.append(PackedStringArray([character_name, character_name] + commas)) - - # Store lines in the file, starting with anything that already exists that hasn't been touched - for line in existing_csv.values(): - file.store_csv_line(line) - for line in lines_to_save: - file.store_csv_line(line) - - file.close() + DMTranslationUtilities.export_character_names_to_csv(path, code_edit.text, current_file_path) EditorInterface.get_resource_filesystem().scan() EditorInterface.get_file_system_dock().call_deferred("navigate_to_path", path) @@ -781,48 +577,7 @@ func export_character_names_to_csv(path: String) -> void: # Import changes back from an exported CSV by matching translation keys func import_translations_from_csv(path: String) -> void: var cursor: Vector2 = code_edit.get_cursor() - - if not FileAccess.file_exists(path): return - - # Open the CSV file and build a dictionary of the known keys - var keys: Dictionary = {} - var file: FileAccess = FileAccess.open(path, FileAccess.READ) - var csv_line: Array - while !file.eof_reached(): - csv_line = file.get_csv_line() - if csv_line.size() > 1: - keys[csv_line[0]] = csv_line[1] - - # Now look over each line in the dialogue and replace the content for matched keys - var lines: PackedStringArray = code_edit.text.split("\n") - var start_index: int = 0 - var end_index: int = 0 - for i in range(0, lines.size()): - var line: String = lines[i] - var translation_key: String = DMCompiler.get_static_line_id(line) - if keys.has(translation_key): - if DMCompiler.get_line_type(line) == DMConstants.TYPE_DIALOGUE: - start_index = 0 - # See if we need to skip over a character name - line = line.replace("\\:", "!ESCAPED_COLON!") - if ": " in line: - start_index = line.find(": ") + 2 - lines[i] = (line.substr(0, start_index) + keys.get(translation_key) + " [ID:" + translation_key + "]").replace("!ESCAPED_COLON!", ":") - - elif DMCompiler.get_line_type(line) == DMConstants.TYPE_RESPONSE: - start_index = line.find("- ") + 2 - # See if we need to skip over a character name - line = line.replace("\\:", "!ESCAPED_COLON!") - if ": " in line: - start_index = line.find(": ") + 2 - end_index = line.length() - if " =>" in line: - end_index = line.find(" =>") - if " [if " in line: - end_index = line.find(" [if ") - lines[i] = (line.substr(0, start_index) + keys.get(translation_key) + " [ID:" + translation_key + "]" + line.substr(end_index)).replace("!ESCAPED_COLON!", ":") - - code_edit.text = "\n".join(lines) + code_edit.text = DMTranslationUtilities.import_translations_from_csv(path, code_edit.text) code_edit.set_cursor(cursor) @@ -845,7 +600,9 @@ func run_test_scene(from_key: String) -> void: EditorInterface.play_custom_scene(test_scene_path) -### Signals +#endregion + +#region Signals func _on_files_moved(old_file: String, new_file: String) -> void: @@ -872,6 +629,10 @@ func _on_editor_settings_changed() -> void: code_edit.scroll_smooth = editor_settings.get_setting("text_editor/behavior/navigation/smooth_scrolling") +func _on_project_settings_changed() -> void: + code_edit.wrap_mode = TextEdit.LINE_WRAPPING_BOUNDARY if DMSettings.get_setting(DMSettings.WRAP_LONG_LINES, false) else TextEdit.LINE_WRAPPING_NONE + + func _on_open_menu_id_pressed(id: int) -> void: match id: OPEN_OPEN: @@ -921,7 +682,10 @@ func _on_insert_button_menu_id_pressed(id: int) -> void: func _on_translations_button_menu_id_pressed(id: int) -> void: match id: - TRANSLATIONS_GENERATE_LINE_IDS: + TRANSLATIONS_GENERATE_LINE_IDS_FOR_FILE: + code_edit.text = DMTranslationUtilities.generate_static_line_ids_for_text(code_edit.text, current_file_path) + + TRANSLATIONS_GENERATE_LINE_IDS_FOR_PROJECT: generate_translations_keys() TRANSLATIONS_SAVE_CHARACTERS_TO_CSV: @@ -1014,8 +778,7 @@ func _on_save_all_button_pressed() -> void: func _on_find_in_files_button_pressed() -> void: - find_in_files_dialog.popup_centered() - find_in_files.prepare() + DMPlugin.show_find_in_dialogue() func _on_code_edit_text_changed() -> void: @@ -1045,8 +808,7 @@ func _on_code_edit_error_clicked(line_number: int) -> void: func _on_title_list_title_selected(title: String) -> void: - code_edit.go_to_title(title) - code_edit.grab_focus() + go_to_title(title) func _on_parse_timer_timeout() -> void: @@ -1076,7 +838,7 @@ func _on_search_and_replace_close_requested() -> void: func _on_test_button_pressed() -> void: save_file(current_file_path, false) - Engine.get_meta("DMCache").reimport_files([current_file_path]) + DMCache.reimport_files([current_file_path]) if errors_panel.errors.size() > 0: errors_dialog.popup_centered() @@ -1107,7 +869,7 @@ func _on_support_button_pressed() -> void: func _on_docs_button_pressed() -> void: - OS.shell_open("https://github.com/nathanhoad/godot_dialogue_manager") + OS.shell_open("https://github.com/nathanhoad/godot_dialogue_manager/tree/v3.x") func _on_files_list_file_popup_menu_requested(at_position: Vector2) -> void: @@ -1122,7 +884,7 @@ func _on_files_list_file_middle_clicked(path: String): func _on_files_popup_menu_about_to_popup() -> void: files_popup_menu.clear() - var shortcuts: Dictionary = plugin.get_editor_shortcuts() + var shortcuts: Dictionary = DMPlugin.get_editor_shortcuts() files_popup_menu.add_item(DMConstants.translate(&"buffer.save"), ITEM_SAVE, OS.find_keycode_from_string(shortcuts.get("save")[0].as_text_keycode())) files_popup_menu.add_item(DMConstants.translate(&"buffer.save_as"), ITEM_SAVE_AS) @@ -1200,3 +962,24 @@ func _on_banner_quick_open_pressed() -> void: func _on_banner_examples_pressed() -> void: OS.shell_open("https://itch.io/c/5226650/godot-dialogue-manager-example-projects") + + +func _on_generate_static_ids_confirmation_dialog_confirmed() -> void: + save_files() + + var cursor: Vector2 = code_edit.get_cursor() + var scroll_vertical = code_edit.scroll_vertical + DMTranslationUtilities.generate_static_line_ids_for_project() + for file_path: String in open_buffers: + var buffer: Dictionary = open_buffers.get(file_path) + buffer.text = FileAccess.get_file_as_string(file_path) + buffer.pristine_text = buffer.text + + if file_path == current_file_path: + code_edit.text = buffer.text + code_edit.set_cursor(cursor) + code_edit.scroll_vertical = scroll_vertical + _on_code_edit_text_changed() + + +#endregion diff --git a/addons/dialogue_manager/views/main_view.tscn b/addons/dialogue_manager/views/main_view.tscn index b21f7084e5..4ac836f688 100644 --- a/addons/dialogue_manager/views/main_view.tscn +++ b/addons/dialogue_manager/views/main_view.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=16 format=3 uid="uid://cbuf1q3xsse3q"] +[gd_scene format=3 uid="uid://cbuf1q3xsse3q"] [ext_resource type="Script" uid="uid://cipjcc7bkh1pc" path="res://addons/dialogue_manager/views/main_view.gd" id="1_h6qfq"] [ext_resource type="PackedScene" uid="uid://civ6shmka5e8u" path="res://addons/dialogue_manager/components/code_edit.tscn" id="2_f73fm"] @@ -9,9 +9,8 @@ [ext_resource type="PackedScene" uid="uid://cs8pwrxr5vxix" path="res://addons/dialogue_manager/components/errors_panel.tscn" id="7_5cvl4"] [ext_resource type="Script" uid="uid://klpiq4tk3t7a" path="res://addons/dialogue_manager/components/code_edit_syntax_highlighter.gd" id="7_necsa"] [ext_resource type="Texture2D" uid="uid://cnm67htuohhlo" path="res://addons/dialogue_manager/assets/banner.png" id="9_y6rqu"] -[ext_resource type="PackedScene" uid="uid://0n7hwviyyly4" path="res://addons/dialogue_manager/components/find_in_files.tscn" id="10_yold3"] -[sub_resource type="Image" id="Image_y6rqu"] +[sub_resource type="Image" id="Image_faxki"] data = { "data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), "format": "RGBA8", @@ -21,9 +20,9 @@ data = { } [sub_resource type="ImageTexture" id="ImageTexture_ka3gk"] -image = SubResource("Image_y6rqu") +image = SubResource("Image_faxki") -[sub_resource type="Image" id="Image_mpdoc"] +[sub_resource type="Image" id="Image_y6rqu"] data = { "data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0), "format": "RGBA8", @@ -33,12 +32,13 @@ data = { } [sub_resource type="ImageTexture" id="ImageTexture_57eek"] -image = SubResource("Image_mpdoc") +image = SubResource("Image_y6rqu") -[sub_resource type="SyntaxHighlighter" id="SyntaxHighlighter_xv2j4"] +[sub_resource type="SyntaxHighlighter" id="SyntaxHighlighter_mpdoc"] script = ExtResource("7_necsa") -[node name="MainView" type="Control"] +[node name="MainView" type="Control" unique_id=1975859718] +clip_contents = true layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -49,9 +49,9 @@ size_flags_horizontal = 3 size_flags_vertical = 3 script = ExtResource("1_h6qfq") -[node name="ParseTimer" type="Timer" parent="."] +[node name="ParseTimer" type="Timer" parent="." unique_id=1210958138] -[node name="Margin" type="MarginContainer" parent="."] +[node name="Margin" type="MarginContainer" parent="." unique_id=424731994] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -64,27 +64,27 @@ theme_override_constants/margin_right = 5 theme_override_constants/margin_bottom = 5 metadata/_edit_layout_mode = 1 -[node name="Content" type="HSplitContainer" parent="Margin"] +[node name="Content" type="HSplitContainer" parent="Margin" unique_id=267962742] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 3 dragger_visibility = 1 -[node name="SidePanel" type="VBoxContainer" parent="Margin/Content"] +[node name="SidePanel" type="VBoxContainer" parent="Margin/Content" unique_id=408822052] custom_minimum_size = Vector2(150, 0) layout_mode = 2 size_flags_horizontal = 3 -[node name="Toolbar" type="HBoxContainer" parent="Margin/Content/SidePanel"] +[node name="Toolbar" type="HBoxContainer" parent="Margin/Content/SidePanel" unique_id=1890446441] layout_mode = 2 -[node name="NewButton" type="Button" parent="Margin/Content/SidePanel/Toolbar"] +[node name="NewButton" type="Button" parent="Margin/Content/SidePanel/Toolbar" unique_id=916776070] unique_name_in_owner = true layout_mode = 2 tooltip_text = "Start a new file" flat = true -[node name="OpenButton" type="MenuButton" parent="Margin/Content/SidePanel/Toolbar"] +[node name="OpenButton" type="MenuButton" parent="Margin/Content/SidePanel/Toolbar" unique_id=880106178] unique_name_in_owner = true layout_mode = 2 tooltip_text = "Open a file" @@ -113,44 +113,44 @@ popup/item_7/separator = true popup/item_8/text = "Clear recent files" popup/item_8/id = 102 -[node name="SaveAllButton" type="Button" parent="Margin/Content/SidePanel/Toolbar"] +[node name="SaveAllButton" type="Button" parent="Margin/Content/SidePanel/Toolbar" unique_id=940841574] unique_name_in_owner = true layout_mode = 2 disabled = true flat = true -[node name="FindInFilesButton" type="Button" parent="Margin/Content/SidePanel/Toolbar"] +[node name="FindInFilesButton" type="Button" parent="Margin/Content/SidePanel/Toolbar" unique_id=213493052] unique_name_in_owner = true layout_mode = 2 tooltip_text = "Find in files..." flat = true -[node name="Bookmarks" type="VSplitContainer" parent="Margin/Content/SidePanel"] +[node name="Bookmarks" type="VSplitContainer" parent="Margin/Content/SidePanel" unique_id=1966503844] layout_mode = 2 size_flags_vertical = 3 -[node name="FilesList" parent="Margin/Content/SidePanel/Bookmarks" instance=ExtResource("2_npj2k")] +[node name="FilesList" parent="Margin/Content/SidePanel/Bookmarks" unique_id=1460458494 instance=ExtResource("2_npj2k")] unique_name_in_owner = true visible = false layout_mode = 2 -[node name="FilesPopupMenu" type="PopupMenu" parent="Margin/Content/SidePanel/Bookmarks/FilesList"] +[node name="FilesPopupMenu" type="PopupMenu" parent="Margin/Content/SidePanel/Bookmarks/FilesList" unique_id=253084069] unique_name_in_owner = true -[node name="TitleList" parent="Margin/Content/SidePanel/Bookmarks" instance=ExtResource("2_onb4i")] +[node name="TitleList" parent="Margin/Content/SidePanel/Bookmarks" unique_id=2063152064 instance=ExtResource("2_onb4i")] unique_name_in_owner = true visible = false layout_mode = 2 -[node name="CodePanel" type="VBoxContainer" parent="Margin/Content"] +[node name="CodePanel" type="VBoxContainer" parent="Margin/Content" unique_id=2013417278] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 4.0 -[node name="Toolbar" type="HBoxContainer" parent="Margin/Content/CodePanel"] +[node name="Toolbar" type="HBoxContainer" parent="Margin/Content/CodePanel" unique_id=177899511] layout_mode = 2 -[node name="InsertButton" type="MenuButton" parent="Margin/Content/CodePanel/Toolbar"] +[node name="InsertButton" type="MenuButton" parent="Margin/Content/CodePanel/Toolbar" unique_id=1765432833] unique_name_in_owner = true layout_mode = 2 disabled = true @@ -201,7 +201,7 @@ popup/item_14/text = "End dialogue" popup/item_14/icon = SubResource("ImageTexture_57eek") popup/item_14/id = 12 -[node name="TranslationsButton" type="MenuButton" parent="Margin/Content/CodePanel/Toolbar"] +[node name="TranslationsButton" type="MenuButton" parent="Margin/Content/CodePanel/Toolbar" unique_id=2010201295] unique_name_in_owner = true layout_mode = 2 disabled = true @@ -222,10 +222,10 @@ popup/item_4/text = "Import line changes from CSV..." popup/item_4/icon = SubResource("ImageTexture_57eek") popup/item_4/id = 203 -[node name="Separator" type="VSeparator" parent="Margin/Content/CodePanel/Toolbar"] +[node name="Separator" type="VSeparator" parent="Margin/Content/CodePanel/Toolbar" unique_id=821562382] layout_mode = 2 -[node name="SearchButton" type="Button" parent="Margin/Content/CodePanel/Toolbar"] +[node name="SearchButton" type="Button" parent="Margin/Content/CodePanel/Toolbar" unique_id=121689358] unique_name_in_owner = true layout_mode = 2 tooltip_text = "Search for text" @@ -233,60 +233,60 @@ disabled = true toggle_mode = true flat = true -[node name="Separator2" type="VSeparator" parent="Margin/Content/CodePanel/Toolbar"] +[node name="Separator2" type="VSeparator" parent="Margin/Content/CodePanel/Toolbar" unique_id=175043853] layout_mode = 2 -[node name="TestButton" type="Button" parent="Margin/Content/CodePanel/Toolbar"] +[node name="TestButton" type="Button" parent="Margin/Content/CodePanel/Toolbar" unique_id=1610822770] unique_name_in_owner = true layout_mode = 2 tooltip_text = "Test dialogue" disabled = true flat = true -[node name="TestLineButton" type="Button" parent="Margin/Content/CodePanel/Toolbar"] +[node name="TestLineButton" type="Button" parent="Margin/Content/CodePanel/Toolbar" unique_id=1575726308] unique_name_in_owner = true layout_mode = 2 tooltip_text = "Test dialogue" disabled = true flat = true -[node name="Spacer2" type="Control" parent="Margin/Content/CodePanel/Toolbar"] +[node name="Spacer2" type="Control" parent="Margin/Content/CodePanel/Toolbar" unique_id=249482575] layout_mode = 2 size_flags_horizontal = 3 -[node name="SupportButton" type="Button" parent="Margin/Content/CodePanel/Toolbar"] +[node name="SupportButton" type="Button" parent="Margin/Content/CodePanel/Toolbar" unique_id=1042093313] unique_name_in_owner = true layout_mode = 2 tooltip_text = "Support Dialogue Manager" text = "Sponsor" flat = true -[node name="Separator4" type="VSeparator" parent="Margin/Content/CodePanel/Toolbar"] +[node name="Separator4" type="VSeparator" parent="Margin/Content/CodePanel/Toolbar" unique_id=321395257] layout_mode = 2 -[node name="DocsButton" type="Button" parent="Margin/Content/CodePanel/Toolbar"] +[node name="DocsButton" type="Button" parent="Margin/Content/CodePanel/Toolbar" unique_id=1404920471] unique_name_in_owner = true layout_mode = 2 text = "Docs" flat = true -[node name="VersionLabel" type="Label" parent="Margin/Content/CodePanel/Toolbar"] +[node name="VersionLabel" type="Label" parent="Margin/Content/CodePanel/Toolbar" unique_id=630990714] unique_name_in_owner = true modulate = Color(1, 1, 1, 0.490196) layout_mode = 2 text = "v2.42.2" vertical_alignment = 1 -[node name="UpdateButton" parent="Margin/Content/CodePanel/Toolbar" instance=ExtResource("2_ph3vs")] +[node name="UpdateButton" parent="Margin/Content/CodePanel/Toolbar" unique_id=1595256128 instance=ExtResource("2_ph3vs")] unique_name_in_owner = true layout_mode = 2 text = "v2.44.1 available" -[node name="SearchAndReplace" parent="Margin/Content/CodePanel" instance=ExtResource("6_ylh0t")] +[node name="SearchAndReplace" parent="Margin/Content/CodePanel" unique_id=2132004091 instance=ExtResource("6_ylh0t")] unique_name_in_owner = true layout_mode = 2 -[node name="CodeEdit" parent="Margin/Content/CodePanel" instance=ExtResource("2_f73fm")] +[node name="CodeEdit" parent="Margin/Content/CodePanel" unique_id=302141693 instance=ExtResource("2_f73fm")] unique_name_in_owner = true visible = false layout_mode = 2 @@ -313,13 +313,13 @@ Coco: Meow. => END" scroll_smooth = true -syntax_highlighter = SubResource("SyntaxHighlighter_xv2j4") +syntax_highlighter = SubResource("SyntaxHighlighter_mpdoc") -[node name="ErrorsPanel" parent="Margin/Content/CodePanel" instance=ExtResource("7_5cvl4")] +[node name="ErrorsPanel" parent="Margin/Content/CodePanel" unique_id=1975824789 instance=ExtResource("7_5cvl4")] unique_name_in_owner = true layout_mode = 2 -[node name="Banner" type="CenterContainer" parent="."] +[node name="Banner" type="CenterContainer" parent="." unique_id=1848328987] unique_name_in_owner = true layout_mode = 1 anchors_preset = 15 @@ -330,11 +330,11 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -[node name="PanelContainer" type="VBoxContainer" parent="Banner"] +[node name="PanelContainer" type="VBoxContainer" parent="Banner" unique_id=1211498578] layout_mode = 2 theme_override_constants/separation = 5 -[node name="BannerImage" type="TextureRect" parent="Banner/PanelContainer"] +[node name="BannerImage" type="TextureRect" parent="Banner/PanelContainer" unique_id=899616034] custom_minimum_size = Vector2(600, 200) layout_mode = 2 mouse_filter = 0 @@ -342,41 +342,41 @@ mouse_default_cursor_shape = 2 texture = ExtResource("9_y6rqu") expand_mode = 3 -[node name="HBoxContainer" type="HBoxContainer" parent="Banner/PanelContainer"] +[node name="HBoxContainer" type="HBoxContainer" parent="Banner/PanelContainer" unique_id=874356896] layout_mode = 2 theme_override_constants/separation = 5 -[node name="BannerNewButton" type="Button" parent="Banner/PanelContainer/HBoxContainer"] +[node name="BannerNewButton" type="Button" parent="Banner/PanelContainer/HBoxContainer" unique_id=1034773049] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 text = "New Dialogue..." -[node name="BannerQuickOpen" type="Button" parent="Banner/PanelContainer/HBoxContainer"] +[node name="BannerQuickOpen" type="Button" parent="Banner/PanelContainer/HBoxContainer" unique_id=1614953837] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 text = "Quick open..." -[node name="BannerExamples" type="Button" parent="Banner/PanelContainer/HBoxContainer"] +[node name="BannerExamples" type="Button" parent="Banner/PanelContainer/HBoxContainer" unique_id=1066745213] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 text = "Example projects..." -[node name="NewDialog" type="FileDialog" parent="."] +[node name="NewDialog" type="FileDialog" parent="." unique_id=458925087] size = Vector2i(900, 750) min_size = Vector2i(600, 500) dialog_hide_on_ok = true filters = PackedStringArray("*.dialogue ; Dialogue") -[node name="SaveDialog" type="FileDialog" parent="."] +[node name="SaveDialog" type="FileDialog" parent="." unique_id=325906832] size = Vector2i(900, 750) min_size = Vector2i(600, 500) dialog_hide_on_ok = true filters = PackedStringArray("*.dialogue ; Dialogue") -[node name="OpenDialog" type="FileDialog" parent="."] +[node name="OpenDialog" type="FileDialog" parent="." unique_id=1252768767] title = "Open a File" size = Vector2i(900, 750) min_size = Vector2i(600, 500) @@ -385,19 +385,19 @@ dialog_hide_on_ok = true file_mode = 0 filters = PackedStringArray("*.dialogue ; Dialogue") -[node name="QuickOpenDialog" type="ConfirmationDialog" parent="."] +[node name="QuickOpenDialog" type="ConfirmationDialog" parent="." unique_id=254740052] title = "Quick open" size = Vector2i(600, 900) min_size = Vector2i(400, 600) ok_button_text = "Open" -[node name="QuickOpenFilesList" parent="QuickOpenDialog" instance=ExtResource("2_npj2k")] +[node name="QuickOpenFilesList" parent="QuickOpenDialog" unique_id=1813408245 instance=ExtResource("2_npj2k")] -[node name="ExportDialog" type="FileDialog" parent="."] +[node name="ExportDialog" type="FileDialog" parent="." unique_id=2035775999] size = Vector2i(900, 750) min_size = Vector2i(600, 500) -[node name="ImportDialog" type="FileDialog" parent="."] +[node name="ImportDialog" type="FileDialog" parent="." unique_id=1326083376] title = "Open a File" size = Vector2i(900, 750) min_size = Vector2i(600, 500) @@ -405,37 +405,24 @@ ok_button_text = "Open" file_mode = 0 filters = PackedStringArray("*.csv ; Translation CSV") -[node name="ErrorsDialog" type="AcceptDialog" parent="."] +[node name="ErrorsDialog" type="AcceptDialog" parent="." unique_id=2100629189] title = "Error" dialog_text = "You have errors in your script. Fix them and then try again." -[node name="BuildErrorDialog" type="AcceptDialog" parent="."] +[node name="BuildErrorDialog" type="AcceptDialog" parent="." unique_id=1879686579] title = "Errors" dialog_text = "You need to fix dialogue errors before you can run your game." -[node name="CloseConfirmationDialog" type="ConfirmationDialog" parent="."] +[node name="CloseConfirmationDialog" type="ConfirmationDialog" parent="." unique_id=1048140490] title = "Unsaved changes" ok_button_text = "Save changes" -[node name="UpdatedDialog" type="AcceptDialog" parent="."] +[node name="UpdatedDialog" type="AcceptDialog" parent="." unique_id=955879802] title = "Updated" size = Vector2i(191, 100) dialog_text = "You're now up to date!" -[node name="FindInFilesDialog" type="AcceptDialog" parent="."] -title = "Find in files" -size = Vector2i(1200, 900) -min_size = Vector2i(800, 600) -ok_button_text = "Done" - -[node name="FindInFiles" parent="FindInFilesDialog" node_paths=PackedStringArray("main_view", "code_edit") instance=ExtResource("10_yold3")] -custom_minimum_size = Vector2(400, 400) -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -49.0 -main_view = NodePath("../..") -code_edit = NodePath("../../Margin/Content/CodePanel/CodeEdit") +[node name="GenerateStaticIdsConfirmationDialog" type="ConfirmationDialog" parent="." unique_id=1311101975] [connection signal="theme_changed" from="." to="." method="_on_main_view_theme_changed"] [connection signal="visibility_changed" from="." to="." method="_on_main_view_visibility_changed"] @@ -477,4 +464,4 @@ code_edit = NodePath("../../Margin/Content/CodePanel/CodeEdit") [connection signal="file_selected" from="ImportDialog" to="." method="_on_import_dialog_file_selected"] [connection signal="confirmed" from="CloseConfirmationDialog" to="." method="_on_close_confirmation_dialog_confirmed"] [connection signal="custom_action" from="CloseConfirmationDialog" to="." method="_on_close_confirmation_dialog_custom_action"] -[connection signal="result_selected" from="FindInFilesDialog/FindInFiles" to="." method="_on_find_in_files_result_selected"] +[connection signal="confirmed" from="GenerateStaticIdsConfirmationDialog" to="." method="_on_generate_static_ids_confirmation_dialog_confirmed"] diff --git a/addons/threadbare_git_describe/export.gd b/addons/threadbare_git_describe/export.gd index 78194b19ab..89e6057156 100644 --- a/addons/threadbare_git_describe/export.gd +++ b/addons/threadbare_git_describe/export.gd @@ -2,29 +2,27 @@ # SPDX-License-Identifier: MPL-2.0 extends EditorExportPlugin +const Version = preload("./version.gd") + func _get_name() -> String: return "threadbare_git_describe_exporter" -func set_version(version: Variant) -> void: - ProjectSettings.set_setting("application/config/version", version) - var err := ProjectSettings.save() - if err != OK: - printerr("Failed to save project settings: %s" % error_string(err)) - - func _export_begin( _features: PackedStringArray, _is_debug: bool, _path: String, _flags: int ) -> void: - var output: Array[String] = [] - var ret := OS.execute("git", ["describe", "--tags"], output) - if ret != 0: - printerr("git describe --tags failed: %d" % ret) - else: - var version := output[0].strip_edges() - set_version(version) + var describe := Version.git_describe(true) + ProjectSettings.set_setting(Version.FULL_VERSION_KEY, describe) + ProjectSettings.set_setting(Version.VERSION_KEY, Version.simplify(describe)) + var err := ProjectSettings.save() + if err != OK: + printerr("Failed to save project settings: %s" % error_string(err)) func _export_end() -> void: - set_version(null) + ProjectSettings.set_setting(Version.FULL_VERSION_KEY, null) + ProjectSettings.set_setting(Version.VERSION_KEY, null) + var err := ProjectSettings.save() + if err != OK: + printerr("Failed to save project settings: %s" % error_string(err)) diff --git a/addons/threadbare_git_describe/version.gd b/addons/threadbare_git_describe/version.gd new file mode 100644 index 0000000000..871db83ca6 --- /dev/null +++ b/addons/threadbare_git_describe/version.gd @@ -0,0 +1,56 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Object +## Functions to determine the game version + +const FULL_VERSION_KEY := &"application/config/full_version" +const VERSION_KEY := &"application/config/version" + +static var _initialized := false +static var _full_version: String +static var _version: String + + +## Gets the project version based on [code]git describe[/code], +## or [code]"v0.0.0"[/code] if this fails. +static func git_describe(warn_on_error: bool) -> String: + var output: Array[String] = [] + var ret := OS.execute("git", ["describe", "--tags"], output) + if ret != 0: + if warn_on_error: + printerr("git describe --tags failed: %d" % ret) + return "v0.0.0" + + var version := output[0].strip_edges() + return version + + +static func simplify(full_version: String) -> String: + var regex := RegEx.new() + regex.compile("^v(?\\d+(?:\\.\\d+)+)(?:-(?\\d+).*)?$") + var result := regex.search(full_version) + if not result: + return "0.0.0" + return ".".join(result.strings.slice(1)) + + +## Gets the full `git describe`-style version +static func get_full_version() -> String: + if not _full_version: + _full_version = ProjectSettings.get_setting(FULL_VERSION_KEY, "") + + if not _full_version: + _full_version = git_describe(false) + + return _full_version + + +## Gets the game version in a Windows .exe-friendly x.y.z.w format +static func get_version() -> String: + if not _version: + _version = ProjectSettings.get_setting(VERSION_KEY, "") + + if not _version: + _version = simplify(get_full_version()) + + return _version diff --git a/addons/threadbare_git_describe/version.gd.uid b/addons/threadbare_git_describe/version.gd.uid new file mode 100644 index 0000000000..443ba37785 --- /dev/null +++ b/addons/threadbare_git_describe/version.gd.uid @@ -0,0 +1 @@ +uid://c76eh40rjua1l diff --git a/addons/threadbare_git_describe/version_label.gd b/addons/threadbare_git_describe/version_label.gd new file mode 100644 index 0000000000..4c5219b84e --- /dev/null +++ b/addons/threadbare_git_describe/version_label.gd @@ -0,0 +1,11 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Label +## A label which shows the project version +## +## The version is determined from the project configuration, falling back to +## [code]git describe[/code] if necessary. + + +func _ready() -> void: + text = preload("./version.gd").get_full_version() diff --git a/scenes/menus/title/components/version_label.gd.uid b/addons/threadbare_git_describe/version_label.gd.uid similarity index 100% rename from scenes/menus/title/components/version_label.gd.uid rename to addons/threadbare_git_describe/version_label.gd.uid diff --git a/addons/threadbare_project_settings/plugin.cfg b/addons/threadbare_project_settings/plugin.cfg index b26adb21d6..7135e4fdf4 100644 --- a/addons/threadbare_project_settings/plugin.cfg +++ b/addons/threadbare_project_settings/plugin.cfg @@ -4,4 +4,4 @@ name="Threadbare Project Settings" description="Add project settings specific for Threadbare." author="The Threadbare Authors" version="" -script="threadbare_project_settings.gd" +script="plugin.gd" diff --git a/addons/threadbare_project_settings/plugin.gd b/addons/threadbare_project_settings/plugin.gd new file mode 100644 index 0000000000..83b36022e4 --- /dev/null +++ b/addons/threadbare_project_settings/plugin.gd @@ -0,0 +1,8 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +extends EditorPlugin + + +func _enter_tree() -> void: + ThreadbareProjectSettings.setup_threadbare_settings() diff --git a/addons/threadbare_project_settings/plugin.gd.uid b/addons/threadbare_project_settings/plugin.gd.uid new file mode 100644 index 0000000000..da13d886fd --- /dev/null +++ b/addons/threadbare_project_settings/plugin.gd.uid @@ -0,0 +1 @@ +uid://b706ajnflt5fk diff --git a/addons/threadbare_project_settings/threadbare_project_settings.gd b/addons/threadbare_project_settings/threadbare_project_settings.gd index 34f9b83ac5..d2038bbe5d 100644 --- a/addons/threadbare_project_settings/threadbare_project_settings.gd +++ b/addons/threadbare_project_settings/threadbare_project_settings.gd @@ -1,28 +1,40 @@ # SPDX-FileCopyrightText: The Threadbare Authors # SPDX-License-Identifier: MPL-2.0 @tool -extends EditorPlugin +class_name ThreadbareProjectSettings +extends Node -## Debug aspect ratio while playing the game. -const DEBUG_ASPECT_RATIO = "debugging/debug_aspect_ratio" +const DEBUG_ASPECT_RATIO = "threadbare/debugging/debug_aspect_ratio" +const SKIP_SOKOBANS = "threadbare/debugging/skip_sokobans" +const SKIP_SPLASH = "threadbare/debugging/skip_splash" -static var setttings_configuration = { +static var settings_configuration = { DEBUG_ASPECT_RATIO: { value = false, type = TYPE_BOOL, + hint_string = "Display a letterbox overlay in the game, to debug aspect ratio issues.", + }, + SKIP_SOKOBANS: + { + value = false, + type = TYPE_BOOL, + hint_string = "Skip the sokobans from the core game loop, and complete the quest directly.", + }, + SKIP_SPLASH: + { + value = false, + type = TYPE_BOOL, + hint_string = + "Skip the splash screen and title menu, and resume the game state. Like when clicking Continue.", }, } -func _enter_tree() -> void: - setup_threadbare_settings() - - static func setup_threadbare_settings() -> void: - for key: String in setttings_configuration: - var setting_config: Dictionary = setttings_configuration[key] - var setting_name: String = "threadbare/%s" % key + for setting_name: String in settings_configuration: + var setting_config: Dictionary = settings_configuration[setting_name] + assert(setting_name.begins_with("threadbare")) if not ProjectSettings.has_setting(setting_name): ProjectSettings.set_setting(setting_name, setting_config.value) diff --git a/assets/first_party/logo/threadbare-logo-animation.png b/assets/first_party/logo/threadbare-logo-animation.png index 751ec00f0a..2fba6a925d 100644 --- a/assets/first_party/logo/threadbare-logo-animation.png +++ b/assets/first_party/logo/threadbare-logo-animation.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2374de48d38f3124413c32a0149a1c0967ccc74c037229428de0051b76b9f3a -size 388499 +oid sha256:175d99e6af50a08c6f3a8f2f86b0daa65820f1fa54411aa1ea79756a06b5bb61 +size 320486 diff --git a/assets/first_party/music/The_Void_Bloom.ogg b/assets/first_party/music/The_Void_Bloom.ogg new file mode 100644 index 0000000000..1d7e2bfbd8 --- /dev/null +++ b/assets/first_party/music/The_Void_Bloom.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f14d800ca3ee91a1ca69eb2af1b566fdb3e319a36ffa557fb35ad8f26cccadff +size 1437069 diff --git a/assets/first_party/music/The_Void_Bloom.ogg.import b/assets/first_party/music/The_Void_Bloom.ogg.import new file mode 100644 index 0000000000..cdc0674eaf --- /dev/null +++ b/assets/first_party/music/The_Void_Bloom.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://m1bbwocr2phc" +path="res://.godot/imported/The_Void_Bloom.ogg-7c3cc8ff8fcddf1ddccf3364d0ffc57f.oggvorbisstr" + +[deps] + +source_file="res://assets/first_party/music/The_Void_Bloom.ogg" +dest_files=["res://.godot/imported/The_Void_Bloom.ogg-7c3cc8ff8fcddf1ddccf3364d0ffc57f.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=140.0 +beat_count=0 +bar_beats=4 diff --git a/assets/first_party/music/The_Void_Creep_Intro.ogg b/assets/first_party/music/The_Void_Creep_Intro.ogg new file mode 100644 index 0000000000..89137c2080 --- /dev/null +++ b/assets/first_party/music/The_Void_Creep_Intro.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86cab1e5247fadb0af6b52fa4dc67d950030ffb6b21cfbb2ca2dc50849c0889e +size 167814 diff --git a/assets/first_party/music/The_Void_Creep_Intro.ogg.import b/assets/first_party/music/The_Void_Creep_Intro.ogg.import new file mode 100644 index 0000000000..1e07146f8d --- /dev/null +++ b/assets/first_party/music/The_Void_Creep_Intro.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dusykyrco7i2h" +path="res://.godot/imported/The_Void_Creep_Intro.ogg-44a83344289a44ebcd00572cb55d34dd.oggvorbisstr" + +[deps] + +source_file="res://assets/first_party/music/The_Void_Creep_Intro.ogg" +dest_files=["res://.godot/imported/The_Void_Creep_Intro.ogg-44a83344289a44ebcd00572cb55d34dd.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=88.0 +beat_count=0 +bar_beats=4 diff --git a/assets/first_party/music/The_Void_Creep_Loop.ogg b/assets/first_party/music/The_Void_Creep_Loop.ogg new file mode 100644 index 0000000000..e748d88668 --- /dev/null +++ b/assets/first_party/music/The_Void_Creep_Loop.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf6f2ed20f46343bf593ea4fe5d0bc37f74c8f5920fb8682fd3d1acfc6c50fb8 +size 1643310 diff --git a/assets/first_party/music/The_Void_Creep_Loop.ogg.import b/assets/first_party/music/The_Void_Creep_Loop.ogg.import new file mode 100644 index 0000000000..b316f191ef --- /dev/null +++ b/assets/first_party/music/The_Void_Creep_Loop.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://b376v2gafacfd" +path="res://.godot/imported/The_Void_Creep_Loop.ogg-5c84a8d0526d147e572e8b6c6681d47d.oggvorbisstr" + +[deps] + +source_file="res://assets/first_party/music/The_Void_Creep_Loop.ogg" +dest_files=["res://.godot/imported/The_Void_Creep_Loop.ogg-5c84a8d0526d147e572e8b6c6681d47d.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0 +bpm=88 +beat_count=0 +bar_beats=4 diff --git a/assets/first_party/music/The_Void_Creep_Outro.ogg b/assets/first_party/music/The_Void_Creep_Outro.ogg new file mode 100644 index 0000000000..50868a1d54 --- /dev/null +++ b/assets/first_party/music/The_Void_Creep_Outro.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c51a4e26731bd74fd00a75d4afdd6b26a63b911375b34338791800660828b98 +size 164573 diff --git a/assets/first_party/music/The_Void_Creep_Outro.ogg.import b/assets/first_party/music/The_Void_Creep_Outro.ogg.import new file mode 100644 index 0000000000..6d66feb46d --- /dev/null +++ b/assets/first_party/music/The_Void_Creep_Outro.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://ddh4fb6qd6f5d" +path="res://.godot/imported/The_Void_Creep_Outro.ogg-a9e0befab84de604171c86bd01ab52e0.oggvorbisstr" + +[deps] + +source_file="res://assets/first_party/music/The_Void_Creep_Outro.ogg" +dest_files=["res://.godot/imported/The_Void_Creep_Outro.ogg-a9e0befab84de604171c86bd01ab52e0.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=88 +beat_count=0 +bar_beats=4 diff --git a/assets/first_party/music/The_Void_Still.ogg b/assets/first_party/music/The_Void_Still.ogg new file mode 100644 index 0000000000..bdd95527c3 --- /dev/null +++ b/assets/first_party/music/The_Void_Still.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7481b09d20851f60445aa08ffcc4a5475738f34d63c24078ebdb526fdc4a521 +size 1832572 diff --git a/assets/first_party/music/The_Void_Still.ogg.import b/assets/first_party/music/The_Void_Still.ogg.import new file mode 100644 index 0000000000..2e4917ec21 --- /dev/null +++ b/assets/first_party/music/The_Void_Still.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://1pww50a3f6md" +path="res://.godot/imported/The_Void_Still.ogg-7e65310155f40ce2f414bd20a7e726cd.oggvorbisstr" + +[deps] + +source_file="res://assets/first_party/music/The_Void_Still.ogg" +dest_files=["res://.godot/imported/The_Void_Still.ogg-7e65310155f40ce2f414bd20a7e726cd.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=52.0 +beat_count=0 +bar_beats=4 diff --git a/assets/first_party/music/Threadbare Loop_Main_Bridge_01.ogg.import b/assets/first_party/music/Threadbare Loop_Main_Bridge_01.ogg.import index aab1accf93..c3737382a1 100644 --- a/assets/first_party/music/Threadbare Loop_Main_Bridge_01.ogg.import +++ b/assets/first_party/music/Threadbare Loop_Main_Bridge_01.ogg.import @@ -14,6 +14,6 @@ dest_files=["res://.godot/imported/Threadbare Loop_Main_Bridge_01.ogg-7b041b425c loop=true loop_offset=0 -bpm=0 +bpm=96 beat_count=0 bar_beats=4 diff --git a/assets/first_party/music/Threadbare Loop_Main_Bridge_02.ogg.import b/assets/first_party/music/Threadbare Loop_Main_Bridge_02.ogg.import index 0aefcd4122..15a91ee990 100644 --- a/assets/first_party/music/Threadbare Loop_Main_Bridge_02.ogg.import +++ b/assets/first_party/music/Threadbare Loop_Main_Bridge_02.ogg.import @@ -14,6 +14,6 @@ dest_files=["res://.godot/imported/Threadbare Loop_Main_Bridge_02.ogg-d33e31f7d7 loop=true loop_offset=0 -bpm=0 +bpm=96 beat_count=0 bar_beats=4 diff --git a/assets/first_party/music/Threadbare Loop_Main_Cresendo_01.ogg.import b/assets/first_party/music/Threadbare Loop_Main_Cresendo_01.ogg.import index 77d568ba1e..cfea5b0e28 100644 --- a/assets/first_party/music/Threadbare Loop_Main_Cresendo_01.ogg.import +++ b/assets/first_party/music/Threadbare Loop_Main_Cresendo_01.ogg.import @@ -14,6 +14,6 @@ dest_files=["res://.godot/imported/Threadbare Loop_Main_Cresendo_01.ogg-3a3ec687 loop=true loop_offset=0 -bpm=0 +bpm=96 beat_count=0 bar_beats=4 diff --git a/assets/first_party/music/Threadbare Loop_Main_Intro_01.ogg.import b/assets/first_party/music/Threadbare Loop_Main_Intro_01.ogg.import index 26499b27cf..7a33347bc0 100644 --- a/assets/first_party/music/Threadbare Loop_Main_Intro_01.ogg.import +++ b/assets/first_party/music/Threadbare Loop_Main_Intro_01.ogg.import @@ -14,6 +14,6 @@ dest_files=["res://.godot/imported/Threadbare Loop_Main_Intro_01.ogg-51f13fc220c loop=true loop_offset=0 -bpm=0 +bpm=96 beat_count=0 bar_beats=4 diff --git a/assets/first_party/music/Threadbare_Bed.ogg.import b/assets/first_party/music/Threadbare_Bed.ogg.import index 48efb38483..3cead8dee7 100644 --- a/assets/first_party/music/Threadbare_Bed.ogg.import +++ b/assets/first_party/music/Threadbare_Bed.ogg.import @@ -14,6 +14,6 @@ dest_files=["res://.godot/imported/Threadbare_Bed.ogg-7f8126e919e975b9230b53f13f loop=true loop_offset=0 -bpm=0 +bpm=88.0 beat_count=0 bar_beats=4 diff --git a/assets/first_party/music/Threadbare_Combat.ogg.import b/assets/first_party/music/Threadbare_Combat.ogg.import index d67e756c23..674a664087 100644 --- a/assets/first_party/music/Threadbare_Combat.ogg.import +++ b/assets/first_party/music/Threadbare_Combat.ogg.import @@ -14,6 +14,6 @@ dest_files=["res://.godot/imported/Threadbare_Combat.ogg-bdb792247e421edd9da8f4c loop=true loop_offset=0 -bpm=0 +bpm=96.0 beat_count=0 -bar_beats=4 +bar_beats=7 diff --git a/assets/first_party/music/Threadbare_Main_Loud.ogg.import b/assets/first_party/music/Threadbare_Main_Loud.ogg.import index a6f1837417..0c9fde18e9 100644 --- a/assets/first_party/music/Threadbare_Main_Loud.ogg.import +++ b/assets/first_party/music/Threadbare_Main_Loud.ogg.import @@ -14,6 +14,6 @@ dest_files=["res://.godot/imported/Threadbare_Main_Loud.ogg-369a1cbc2c52cb911a4c loop=true loop_offset=0 -bpm=0 +bpm=96 beat_count=0 bar_beats=4 diff --git a/assets/first_party/music/Threadbare_Main_Quiet.ogg.import b/assets/first_party/music/Threadbare_Main_Quiet.ogg.import index e7d8737a4c..48f5df1d34 100644 --- a/assets/first_party/music/Threadbare_Main_Quiet.ogg.import +++ b/assets/first_party/music/Threadbare_Main_Quiet.ogg.import @@ -13,7 +13,7 @@ dest_files=["res://.godot/imported/Threadbare_Main_Quiet.ogg-19396a260907363581b [params] loop=true -loop_offset=0 -bpm=0 +loop_offset=0.0 +bpm=96.0 beat_count=0 bar_beats=4 diff --git a/assets/first_party/rocks/Rock_Greyscale_Idle.png b/assets/first_party/rocks/Rock_Greyscale_Idle.png new file mode 100644 index 0000000000..2d91e7991b --- /dev/null +++ b/assets/first_party/rocks/Rock_Greyscale_Idle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a992a1cc3f654842080c40d5ff00aee83aabbdc8701967eddc734c13ba831b01 +size 1103 diff --git a/assets/first_party/rocks/Rock_Greyscale_Idle.png.import b/assets/first_party/rocks/Rock_Greyscale_Idle.png.import new file mode 100644 index 0000000000..f3d84cc649 --- /dev/null +++ b/assets/first_party/rocks/Rock_Greyscale_Idle.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://u8wlv6s7l7tl" +path="res://.godot/imported/Rock_Greyscale_Idle.png-09f7b20ae1faf8c731ff93500658fe66.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/rocks/Rock_Greyscale_Idle.png" +dest_files=["res://.godot/imported/Rock_Greyscale_Idle.png-09f7b20ae1faf8c731ff93500658fe66.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/assets/first_party/rocks/Rock_Greyscale_Struck.png b/assets/first_party/rocks/Rock_Greyscale_Struck.png new file mode 100644 index 0000000000..09afcbf461 --- /dev/null +++ b/assets/first_party/rocks/Rock_Greyscale_Struck.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:359a619dd0feedc33fd16c8f3f1607bf7a32904d6ed4545a4959b905a93a30e4 +size 2481 diff --git a/assets/first_party/rocks/Rock_Greyscale_Struck.png.import b/assets/first_party/rocks/Rock_Greyscale_Struck.png.import new file mode 100644 index 0000000000..6b18b8a541 --- /dev/null +++ b/assets/first_party/rocks/Rock_Greyscale_Struck.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://diq3tokrxqo5r" +path="res://.godot/imported/Rock_Greyscale_Struck.png-de430bcca68ca2b246897ea5bffd2e7f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/rocks/Rock_Greyscale_Struck.png" +dest_files=["res://.godot/imported/Rock_Greyscale_Struck.png-de430bcca68ca2b246897ea5bffd2e7f.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/assets/first_party/sounds/throwing_enemy/Spray.wav b/assets/first_party/sounds/throwing_enemy/Spray.wav new file mode 100644 index 0000000000..77848386ab --- /dev/null +++ b/assets/first_party/sounds/throwing_enemy/Spray.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe99dfb16aa1629e9920a29feba7426fc82dadc1f44797fd63d663025f060a03 +size 178220 diff --git a/assets/first_party/sounds/throwing_enemy/Spray.wav.import b/assets/first_party/sounds/throwing_enemy/Spray.wav.import new file mode 100644 index 0000000000..2ff429a37f --- /dev/null +++ b/assets/first_party/sounds/throwing_enemy/Spray.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bbnj2fog3rdy8" +path="res://.godot/imported/Spray.wav-7800c414b4ec2c516734932fb56c52bc.sample" + +[deps] + +source_file="res://assets/first_party/sounds/throwing_enemy/Spray.wav" +dest_files=["res://.godot/imported/Spray.wav-7800c414b4ec2c516734932fb56c52bc.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/assets/first_party/tiles/fence.png b/assets/first_party/tiles/fence.png new file mode 100644 index 0000000000..438bda28d3 --- /dev/null +++ b/assets/first_party/tiles/fence.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fd9c8ec24a467ee34fbd0d57a3106ae96c5cfb6199fd2d4f3d5d4102b3ee638 +size 5186 diff --git a/scenes/game_elements/props/hook_control/components/arrow.png.import b/assets/first_party/tiles/fence.png.import similarity index 72% rename from scenes/game_elements/props/hook_control/components/arrow.png.import rename to assets/first_party/tiles/fence.png.import index aa0dcbb74b..f625761eb4 100644 --- a/scenes/game_elements/props/hook_control/components/arrow.png.import +++ b/assets/first_party/tiles/fence.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cchrnxunruf23" -path="res://.godot/imported/arrow.png-76f2bfa8cc4ff49280c3d32a329912e3.ctex" +uid="uid://sjfket0x1tvr" +path="res://.godot/imported/fence.png-3565a2552f53ee39e45f195f414894bb.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/props/hook_control/components/arrow.png" -dest_files=["res://.godot/imported/arrow.png-76f2bfa8cc4ff49280c3d32a329912e3.ctex"] +source_file="res://assets/first_party/tiles/fence.png" +dest_files=["res://.godot/imported/fence.png-3565a2552f53ee39e45f195f414894bb.ctex"] [params] diff --git a/assets/first_party/user_interface/indicator_down.png b/assets/first_party/user_interface/indicator_down.png new file mode 100644 index 0000000000..c6a2830cd9 --- /dev/null +++ b/assets/first_party/user_interface/indicator_down.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:495cc2012a99f1fad12831845d1dcea6ae427ac7a7b8a4611e3cf34f09eff93a +size 507 diff --git a/assets/first_party/user_interface/indicator_down.png.import b/assets/first_party/user_interface/indicator_down.png.import new file mode 100644 index 0000000000..f99e501975 --- /dev/null +++ b/assets/first_party/user_interface/indicator_down.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cheu0l1ap1r8y" +path="res://.godot/imported/indicator_down.png-81b27a1df0f3bd35c1109092855eabd9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/user_interface/indicator_down.png" +dest_files=["res://.godot/imported/indicator_down.png-81b27a1df0f3bd35c1109092855eabd9.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/assets/first_party/user_interface/indicator_up.png b/assets/first_party/user_interface/indicator_up.png new file mode 100644 index 0000000000..6cc7d7ac8c --- /dev/null +++ b/assets/first_party/user_interface/indicator_up.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c14323af2924dc1ccc8925c65c9dc308f32742ac82ce8952962a01d58eba869 +size 547 diff --git a/assets/first_party/user_interface/indicator_up.png.import b/assets/first_party/user_interface/indicator_up.png.import new file mode 100644 index 0000000000..14ed36930b --- /dev/null +++ b/assets/first_party/user_interface/indicator_up.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfyxgtc6bvss8" +path="res://.godot/imported/indicator_up.png-26231997b81b8961a51bd74b2a181a90.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/user_interface/indicator_up.png" +dest_files=["res://.godot/imported/indicator_up.png-26231997b81b8961a51bd74b2a181a90.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/assets/first_party/wildlife/bunny/bunny.aseprite b/assets/first_party/wildlife/bunny/bunny.aseprite new file mode 100644 index 0000000000..0f90bf25fe --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d306af10a6698f7d9cd570f922f41244cac0747cc8ead82ce34f024994384a8 +size 12240 diff --git a/assets/first_party/wildlife/bunny/bunny_idle_blue.png b/assets/first_party/wildlife/bunny/bunny_idle_blue.png new file mode 100644 index 0000000000..b427d2c65f --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny_idle_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d35439c96fd3c3918495153d69acb78e6f044c64c6bad4239efd252896c59855 +size 5017 diff --git a/assets/first_party/wildlife/bunny/bunny_idle_blue.png.import b/assets/first_party/wildlife/bunny/bunny_idle_blue.png.import new file mode 100644 index 0000000000..aed298b894 --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny_idle_blue.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c14ca1ojoyj3h" +path="res://.godot/imported/bunny_idle_blue.png-be535cefef232ce79c425e1e952baa65.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/bunny/bunny_idle_blue.png" +dest_files=["res://.godot/imported/bunny_idle_blue.png-be535cefef232ce79c425e1e952baa65.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/assets/first_party/wildlife/bunny/bunny_idle_brown.png b/assets/first_party/wildlife/bunny/bunny_idle_brown.png new file mode 100644 index 0000000000..8dfbc30c86 --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny_idle_brown.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:830b9faefca4da4a026feace932708303036fa527fd036039bdc0af99a18bf4b +size 4971 diff --git a/assets/first_party/wildlife/bunny/bunny_idle_brown.png.import b/assets/first_party/wildlife/bunny/bunny_idle_brown.png.import new file mode 100644 index 0000000000..b8bbabcda9 --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny_idle_brown.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvrl4btndkqhb" +path="res://.godot/imported/bunny_idle_brown.png-4d86d56ef77ec517b370af07778a9510.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/bunny/bunny_idle_brown.png" +dest_files=["res://.godot/imported/bunny_idle_brown.png-4d86d56ef77ec517b370af07778a9510.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/assets/first_party/wildlife/bunny/bunny_idle_green.png b/assets/first_party/wildlife/bunny/bunny_idle_green.png new file mode 100644 index 0000000000..70605d6c6d --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny_idle_green.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbf8dec2b6b99c00d2d1d97d7992d177f264107c180e46047c0fa40de49c5890 +size 5023 diff --git a/assets/first_party/wildlife/bunny/bunny_idle_green.png.import b/assets/first_party/wildlife/bunny/bunny_idle_green.png.import new file mode 100644 index 0000000000..c9ab181396 --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny_idle_green.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b3fayr1mkj2aj" +path="res://.godot/imported/bunny_idle_green.png-f12d22139f71f58985c8623fe1924980.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/bunny/bunny_idle_green.png" +dest_files=["res://.godot/imported/bunny_idle_green.png-f12d22139f71f58985c8623fe1924980.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/assets/first_party/wildlife/bunny/bunny_idle_pink.png b/assets/first_party/wildlife/bunny/bunny_idle_pink.png new file mode 100644 index 0000000000..1edd66c1e3 --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny_idle_pink.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eea40491129187b0ac9de056ba4e7c8296fa06b537b305a55afc838ad9576f86 +size 4997 diff --git a/assets/first_party/wildlife/bunny/bunny_idle_pink.png.import b/assets/first_party/wildlife/bunny/bunny_idle_pink.png.import new file mode 100644 index 0000000000..1a8aa8dee1 --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny_idle_pink.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crfkp2ujfru7j" +path="res://.godot/imported/bunny_idle_pink.png-9c7b3c820c1e31b1c5247da46fc2525e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/bunny/bunny_idle_pink.png" +dest_files=["res://.godot/imported/bunny_idle_pink.png-9c7b3c820c1e31b1c5247da46fc2525e.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/assets/first_party/wildlife/bunny/bunny_idle_yellow.png b/assets/first_party/wildlife/bunny/bunny_idle_yellow.png new file mode 100644 index 0000000000..3b2a579ed4 --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny_idle_yellow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fb8bdebfca97f73cf7b5ba9b130ae97d14ee617075b3bd43d1a31f3483efb6e +size 5011 diff --git a/assets/first_party/wildlife/bunny/bunny_idle_yellow.png.import b/assets/first_party/wildlife/bunny/bunny_idle_yellow.png.import new file mode 100644 index 0000000000..2723822557 --- /dev/null +++ b/assets/first_party/wildlife/bunny/bunny_idle_yellow.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbkxftyahyxu7" +path="res://.godot/imported/bunny_idle_yellow.png-83dbc8f21230eb5047c992d98e28cea7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/bunny/bunny_idle_yellow.png" +dest_files=["res://.godot/imported/bunny_idle_yellow.png-83dbc8f21230eb5047c992d98e28cea7.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/assets/first_party/wildlife/butterfly/butterfly.aseprite b/assets/first_party/wildlife/butterfly/butterfly.aseprite new file mode 100644 index 0000000000..b9fa1e2e06 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cac8dec25afb2c86b61daef6b2bcb9fd485fc4f8cc1cc23d26090c2bc06be97 +size 55330 diff --git a/assets/first_party/wildlife/butterfly/butterfly_air_loop_blue.png b/assets/first_party/wildlife/butterfly/butterfly_air_loop_blue.png new file mode 100644 index 0000000000..2d70bddfea --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_air_loop_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeaf8bbb57e5cec1b8653eaadc60910598a7314e3a019bffcab6d0921e7957b9 +size 41558 diff --git a/assets/first_party/wildlife/butterfly/butterfly_air_loop_blue.png.import b/assets/first_party/wildlife/butterfly/butterfly_air_loop_blue.png.import new file mode 100644 index 0000000000..bf74c7d69e --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_air_loop_blue.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mqcsfabuuix4" +path="res://.godot/imported/butterfly_air_loop_blue.png-dd0631c54626a12535bf0bb8c233de25.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_air_loop_blue.png" +dest_files=["res://.godot/imported/butterfly_air_loop_blue.png-dd0631c54626a12535bf0bb8c233de25.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/assets/first_party/wildlife/butterfly/butterfly_air_loop_green.png b/assets/first_party/wildlife/butterfly/butterfly_air_loop_green.png new file mode 100644 index 0000000000..100179868d --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_air_loop_green.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb02fa56e5fa82d9c1ff930d8aab87d3de9d1f22ffbb62dbbdbc0716fec17e68 +size 41717 diff --git a/assets/first_party/wildlife/butterfly/butterfly_air_loop_green.png.import b/assets/first_party/wildlife/butterfly/butterfly_air_loop_green.png.import new file mode 100644 index 0000000000..ed66248079 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_air_loop_green.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://oi7lk0c81w1b" +path="res://.godot/imported/butterfly_air_loop_green.png-843e8a3a1f589e3e75b547971e575ade.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_air_loop_green.png" +dest_files=["res://.godot/imported/butterfly_air_loop_green.png-843e8a3a1f589e3e75b547971e575ade.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/assets/first_party/wildlife/butterfly/butterfly_air_loop_orange.png b/assets/first_party/wildlife/butterfly/butterfly_air_loop_orange.png new file mode 100644 index 0000000000..c65f602bf3 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_air_loop_orange.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe95051a4705f144118354c2ac4083c0930d1cb5f24fdf60d58b09e40ae38214 +size 41065 diff --git a/assets/first_party/wildlife/butterfly/butterfly_air_loop_orange.png.import b/assets/first_party/wildlife/butterfly/butterfly_air_loop_orange.png.import new file mode 100644 index 0000000000..10c7fc735c --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_air_loop_orange.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cl7i0ab4qd0cu" +path="res://.godot/imported/butterfly_air_loop_orange.png-00fcf0552b1cba44f1e6414728bf1945.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_air_loop_orange.png" +dest_files=["res://.godot/imported/butterfly_air_loop_orange.png-00fcf0552b1cba44f1e6414728bf1945.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/assets/first_party/wildlife/butterfly/butterfly_air_loop_pink.png b/assets/first_party/wildlife/butterfly/butterfly_air_loop_pink.png new file mode 100644 index 0000000000..7566cef66c --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_air_loop_pink.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37a984dc10c245de28bfbaada7a0a300583d5e5543508adf4affc2daae55e964 +size 41405 diff --git a/assets/first_party/wildlife/butterfly/butterfly_air_loop_pink.png.import b/assets/first_party/wildlife/butterfly/butterfly_air_loop_pink.png.import new file mode 100644 index 0000000000..431475666a --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_air_loop_pink.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0ptm7f2eeh4" +path="res://.godot/imported/butterfly_air_loop_pink.png-03b458737e55e88322d7e6da1efdae63.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_air_loop_pink.png" +dest_files=["res://.godot/imported/butterfly_air_loop_pink.png-03b458737e55e88322d7e6da1efdae63.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/assets/first_party/wildlife/butterfly/butterfly_air_loop_red.png b/assets/first_party/wildlife/butterfly/butterfly_air_loop_red.png new file mode 100644 index 0000000000..ecc550627f --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_air_loop_red.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c91bed2cd46c2b5e85a454f9a9d3408096cebf2552afd86d6cc4a4a80352cba2 +size 41774 diff --git a/assets/first_party/wildlife/butterfly/butterfly_air_loop_red.png.import b/assets/first_party/wildlife/butterfly/butterfly_air_loop_red.png.import new file mode 100644 index 0000000000..d1e9600051 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_air_loop_red.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3spv2dmnwbgw" +path="res://.godot/imported/butterfly_air_loop_red.png-af54c49869ac95b73a1e3ebccccaaf88.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_air_loop_red.png" +dest_files=["res://.godot/imported/butterfly_air_loop_red.png-af54c49869ac95b73a1e3ebccccaaf88.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/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_blue.png b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_blue.png new file mode 100644 index 0000000000..2119ee9d1a --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70d49332187dccfeb881e3423e9f003cde0bdc15b6e67b548c45b36499a7d33f +size 1635 diff --git a/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_blue.png.import b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_blue.png.import new file mode 100644 index 0000000000..f7d496357e --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_blue.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csk7me5fhad60" +path="res://.godot/imported/butterfly_flower_loop_1_blue.png-be9d618998d5c45a17e2aa116fd9fec5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_blue.png" +dest_files=["res://.godot/imported/butterfly_flower_loop_1_blue.png-be9d618998d5c45a17e2aa116fd9fec5.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/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_green.png b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_green.png new file mode 100644 index 0000000000..9f640d2291 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_green.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed7a8f16e555e821f6daff606a57864f7149751fac38d9d4e2e5a05de5abe362 +size 1671 diff --git a/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_green.png.import b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_green.png.import new file mode 100644 index 0000000000..97308ace48 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_green.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmbnab0juxm6u" +path="res://.godot/imported/butterfly_flower_loop_1_green.png-2c06ac88165cea7bbd190de180d28487.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_green.png" +dest_files=["res://.godot/imported/butterfly_flower_loop_1_green.png-2c06ac88165cea7bbd190de180d28487.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/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_orange.png b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_orange.png new file mode 100644 index 0000000000..73d01840e2 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_orange.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30079fae4c6f8edbcce8160d06dffe95c7d71a33658193c0793f8219c7d7336c +size 1656 diff --git a/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_orange.png.import b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_orange.png.import new file mode 100644 index 0000000000..44c8333fe0 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_orange.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drsktuxx23p1y" +path="res://.godot/imported/butterfly_flower_loop_1_orange.png-834802f818b036165248134302ded4c4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_orange.png" +dest_files=["res://.godot/imported/butterfly_flower_loop_1_orange.png-834802f818b036165248134302ded4c4.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/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_pink.png b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_pink.png new file mode 100644 index 0000000000..dc5af93be1 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_pink.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:243394fc7cdc3e73caa0ace0788eb330b4822add0fa515b2bcdafe7c9a8b04b9 +size 1631 diff --git a/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_pink.png.import b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_pink.png.import new file mode 100644 index 0000000000..524c885a07 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_pink.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdgk5axv7f4lb" +path="res://.godot/imported/butterfly_flower_loop_1_pink.png-1ed96382b6d22defde7ceaed058df04e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_pink.png" +dest_files=["res://.godot/imported/butterfly_flower_loop_1_pink.png-1ed96382b6d22defde7ceaed058df04e.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/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_red.png b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_red.png new file mode 100644 index 0000000000..849067601e --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_red.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:065d320eba9bac1d19d7e0438cbb902187261db04f639e660a3e15d079688f74 +size 1672 diff --git a/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_red.png.import b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_red.png.import new file mode 100644 index 0000000000..509628b232 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_red.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ceqf01tqus1ov" +path="res://.godot/imported/butterfly_flower_loop_1_red.png-d6c76bbe378089041a94b8630e40876f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_red.png" +dest_files=["res://.godot/imported/butterfly_flower_loop_1_red.png-d6c76bbe378089041a94b8630e40876f.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/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_blue.png b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_blue.png new file mode 100644 index 0000000000..735adfeec8 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aef9bed7b3ca3ed5939550d1adc47b91d7b9cec432fb2971142a8b9a2b0f64c9 +size 21184 diff --git a/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_blue.png.import b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_blue.png.import new file mode 100644 index 0000000000..55dfc649e1 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_blue.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1dke2mbrb0tf" +path="res://.godot/imported/butterfly_flower_loop_2_blue.png-ae4f71ff9cc1f8a15e1334d9cbe637ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_blue.png" +dest_files=["res://.godot/imported/butterfly_flower_loop_2_blue.png-ae4f71ff9cc1f8a15e1334d9cbe637ad.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/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_green.png b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_green.png new file mode 100644 index 0000000000..9f81e27ad8 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_green.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9896c89bbc4fe225eafaf420ab32a22dc6eca9cb9e887ca577e932a77794f21 +size 21289 diff --git a/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_green.png.import b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_green.png.import new file mode 100644 index 0000000000..527c2ae797 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_green.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2s8fxin6o7tm" +path="res://.godot/imported/butterfly_flower_loop_2_green.png-202086446606466d02e9eefcd7c0901b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_green.png" +dest_files=["res://.godot/imported/butterfly_flower_loop_2_green.png-202086446606466d02e9eefcd7c0901b.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/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_orange.png b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_orange.png new file mode 100644 index 0000000000..2449a1472e --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_orange.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:785ff060959e0bab147674b0755dddd4dd4311527484056ef1747a565a56ef79 +size 21128 diff --git a/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_orange.png.import b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_orange.png.import new file mode 100644 index 0000000000..6567b33710 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_orange.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bj7gp2hx8mug7" +path="res://.godot/imported/butterfly_flower_loop_2_orange.png-60495ae043f6da93e14ccd3321251cd0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_orange.png" +dest_files=["res://.godot/imported/butterfly_flower_loop_2_orange.png-60495ae043f6da93e14ccd3321251cd0.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/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_pink.png b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_pink.png new file mode 100644 index 0000000000..ecfb9091f2 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_pink.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57dd7aded90b73a4af23b467c5b51382be8fbfb76025406fe2ba7def7c3c895e +size 21222 diff --git a/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_pink.png.import b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_pink.png.import new file mode 100644 index 0000000000..67d6eb4dad --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_pink.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ca2y0i2eti1bv" +path="res://.godot/imported/butterfly_flower_loop_2_pink.png-fd7b0100017077276b94d8f303fbdcfb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_pink.png" +dest_files=["res://.godot/imported/butterfly_flower_loop_2_pink.png-fd7b0100017077276b94d8f303fbdcfb.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/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_red.png b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_red.png new file mode 100644 index 0000000000..468ce6fb4b --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_red.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61a6e511c694ed9426afcfa71ef5f8853604b7a486e47db57b5b341ce3905d0d +size 21335 diff --git a/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_red.png.import b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_red.png.import new file mode 100644 index 0000000000..0e97c87fd6 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_red.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckwm0htt6yywk" +path="res://.godot/imported/butterfly_flower_loop_2_red.png-687716b89883cfa8e8800c04448cb281.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_2_red.png" +dest_files=["res://.godot/imported/butterfly_flower_loop_2_red.png-687716b89883cfa8e8800c04448cb281.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/assets/first_party/wildlife/butterfly/flower_1.png b/assets/first_party/wildlife/butterfly/flower_1.png new file mode 100644 index 0000000000..016bfcea0d --- /dev/null +++ b/assets/first_party/wildlife/butterfly/flower_1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e79e5d42daefb7c3dca1f611cf7e3c96beaa00dbc0586f8fc4c3dcd217b8c45 +size 465 diff --git a/assets/first_party/wildlife/butterfly/flower_1.png.import b/assets/first_party/wildlife/butterfly/flower_1.png.import new file mode 100644 index 0000000000..f367b25047 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/flower_1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwkasa7j5s04t" +path="res://.godot/imported/flower_1.png-c353aeb02c22f0d505f70be2f74c5566.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/flower_1.png" +dest_files=["res://.godot/imported/flower_1.png-c353aeb02c22f0d505f70be2f74c5566.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/assets/first_party/wildlife/butterfly/flower_2.png b/assets/first_party/wildlife/butterfly/flower_2.png new file mode 100644 index 0000000000..6c7be03b52 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/flower_2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ee1eb42643b3f7db9bd00fb0e4e50ea304d4b4745b203b6a027c4cd79097266 +size 440 diff --git a/assets/first_party/wildlife/butterfly/flower_2.png.import b/assets/first_party/wildlife/butterfly/flower_2.png.import new file mode 100644 index 0000000000..f62f263aae --- /dev/null +++ b/assets/first_party/wildlife/butterfly/flower_2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blp7lsvxltas7" +path="res://.godot/imported/flower_2.png-9f4ea5220606b2388457d465e921e5d0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/flower_2.png" +dest_files=["res://.godot/imported/flower_2.png-9f4ea5220606b2388457d465e921e5d0.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/assets/first_party/wildlife/butterfly/flower_3.png b/assets/first_party/wildlife/butterfly/flower_3.png new file mode 100644 index 0000000000..519309d00d --- /dev/null +++ b/assets/first_party/wildlife/butterfly/flower_3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d91df0415b1982f5f9bc2c469d41fead38b899cda54ae1a50cc003b0a821ba06 +size 429 diff --git a/assets/first_party/wildlife/butterfly/flower_3.png.import b/assets/first_party/wildlife/butterfly/flower_3.png.import new file mode 100644 index 0000000000..f971e0faa5 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/flower_3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cv0dk1gewphib" +path="res://.godot/imported/flower_3.png-dedae7449d26e0cc05e1c21e9ea852b3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/flower_3.png" +dest_files=["res://.godot/imported/flower_3.png-dedae7449d26e0cc05e1c21e9ea852b3.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/assets/first_party/wildlife/butterfly/flower_4.png b/assets/first_party/wildlife/butterfly/flower_4.png new file mode 100644 index 0000000000..a7e25cd837 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/flower_4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ded3d3ff37a3fa182465bd730d686b2f516681ef6821e7bc49e27565280ba33a +size 445 diff --git a/assets/first_party/wildlife/butterfly/flower_4.png.import b/assets/first_party/wildlife/butterfly/flower_4.png.import new file mode 100644 index 0000000000..b6e0573306 --- /dev/null +++ b/assets/first_party/wildlife/butterfly/flower_4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bicjm7kbinmhh" +path="res://.godot/imported/flower_4.png-7a94edb4eb69b2af473aa0d15bbffe56.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/butterfly/flower_4.png" +dest_files=["res://.godot/imported/flower_4.png-7a94edb4eb69b2af473aa0d15bbffe56.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/assets/first_party/wildlife/capycorn/capycorn.aseprite b/assets/first_party/wildlife/capycorn/capycorn.aseprite new file mode 100644 index 0000000000..aaa4dbdc9c --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cd2bc77b8d966bf8db545f83175541f84fb95734f955a6ffaecd4eee219d873 +size 13036 diff --git a/assets/first_party/wildlife/capycorn/capycorn_idle_dark_brown.png b/assets/first_party/wildlife/capycorn/capycorn_idle_dark_brown.png new file mode 100644 index 0000000000..ec2a12251e --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn_idle_dark_brown.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ccfe6eee2c31458e7218c4aadc9bd3eb4c433cbd649f53df999ed9bc6a266f0 +size 5464 diff --git a/assets/first_party/wildlife/capycorn/capycorn_idle_dark_brown.png.import b/assets/first_party/wildlife/capycorn/capycorn_idle_dark_brown.png.import new file mode 100644 index 0000000000..e5bd2106a9 --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn_idle_dark_brown.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cjgswqqvvybn3" +path="res://.godot/imported/capycorn_idle_dark_brown.png-b08aca423cfea4765ece0ea7f302c81f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/capycorn/capycorn_idle_dark_brown.png" +dest_files=["res://.godot/imported/capycorn_idle_dark_brown.png-b08aca423cfea4765ece0ea7f302c81f.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/assets/first_party/wildlife/capycorn/capycorn_idle_gray.png b/assets/first_party/wildlife/capycorn/capycorn_idle_gray.png new file mode 100644 index 0000000000..8efdc29a8f --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn_idle_gray.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d343292d7ea927289e30e72a942cfa8b4ed9f0cc023014d2432e9d46584a76 +size 5407 diff --git a/assets/first_party/wildlife/capycorn/capycorn_idle_gray.png.import b/assets/first_party/wildlife/capycorn/capycorn_idle_gray.png.import new file mode 100644 index 0000000000..6413db6987 --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn_idle_gray.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ernmjbyreroa" +path="res://.godot/imported/capycorn_idle_gray.png-15ec8251075fb13377c75f649813b354.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/capycorn/capycorn_idle_gray.png" +dest_files=["res://.godot/imported/capycorn_idle_gray.png-15ec8251075fb13377c75f649813b354.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/assets/first_party/wildlife/capycorn/capycorn_idle_light_brown.png b/assets/first_party/wildlife/capycorn/capycorn_idle_light_brown.png new file mode 100644 index 0000000000..71726f02d2 --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn_idle_light_brown.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de7101f562b4bf04628100b8e0eefb909ad786e8b99a485be2cd019e27bed0bf +size 5489 diff --git a/assets/first_party/wildlife/capycorn/capycorn_idle_light_brown.png.import b/assets/first_party/wildlife/capycorn/capycorn_idle_light_brown.png.import new file mode 100644 index 0000000000..17fe6c207a --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn_idle_light_brown.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qsnmu14qimst" +path="res://.godot/imported/capycorn_idle_light_brown.png-07e9d0acaffcef70fbdcac23e434ace6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/capycorn/capycorn_idle_light_brown.png" +dest_files=["res://.godot/imported/capycorn_idle_light_brown.png-07e9d0acaffcef70fbdcac23e434ace6.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/assets/first_party/wildlife/capycorn/capycorn_idle_purple.png b/assets/first_party/wildlife/capycorn/capycorn_idle_purple.png new file mode 100644 index 0000000000..2767c0455a --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn_idle_purple.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:161c8f786549075fd2eff80f921c96247a0431175df52d57082fa3ab002cf54b +size 5473 diff --git a/assets/first_party/wildlife/capycorn/capycorn_idle_purple.png.import b/assets/first_party/wildlife/capycorn/capycorn_idle_purple.png.import new file mode 100644 index 0000000000..ed02da1825 --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn_idle_purple.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b67woxixpgs6p" +path="res://.godot/imported/capycorn_idle_purple.png-9ff129470d2537d7f240a92b04cae92f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/capycorn/capycorn_idle_purple.png" +dest_files=["res://.godot/imported/capycorn_idle_purple.png-9ff129470d2537d7f240a92b04cae92f.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/assets/first_party/wildlife/capycorn/capycorn_idle_yellow.png b/assets/first_party/wildlife/capycorn/capycorn_idle_yellow.png new file mode 100644 index 0000000000..d9034940ba --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn_idle_yellow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eff615d8b6e609f1c0a3c99bf76d94570823b9a3d7e91e1d606eae82bfe1cf63 +size 5420 diff --git a/assets/first_party/wildlife/capycorn/capycorn_idle_yellow.png.import b/assets/first_party/wildlife/capycorn/capycorn_idle_yellow.png.import new file mode 100644 index 0000000000..8ad8e18a21 --- /dev/null +++ b/assets/first_party/wildlife/capycorn/capycorn_idle_yellow.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvkq4o3puliy8" +path="res://.godot/imported/capycorn_idle_yellow.png-15f3ab9462bfe0343ede173a0ce71943.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/capycorn/capycorn_idle_yellow.png" +dest_files=["res://.godot/imported/capycorn_idle_yellow.png-15f3ab9462bfe0343ede173a0ce71943.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/assets/first_party/wildlife/sheep/sheep.aseprite b/assets/first_party/wildlife/sheep/sheep.aseprite new file mode 100644 index 0000000000..4605608b90 --- /dev/null +++ b/assets/first_party/wildlife/sheep/sheep.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:309759dc2c0efbfc19f82297a7972b69aa43f394ae21e15e07b94474782968c0 +size 29278 diff --git a/assets/first_party/wildlife/sheep/sheep_idle.png b/assets/first_party/wildlife/sheep/sheep_idle.png new file mode 100644 index 0000000000..772107163d --- /dev/null +++ b/assets/first_party/wildlife/sheep/sheep_idle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51e8c156bae6a6d1714f6ab3222da9fbca9aaecf047fdef97004524d3f5b7cbe +size 11999 diff --git a/assets/first_party/wildlife/sheep/sheep_idle.png.import b/assets/first_party/wildlife/sheep/sheep_idle.png.import new file mode 100644 index 0000000000..a31a7ddbb5 --- /dev/null +++ b/assets/first_party/wildlife/sheep/sheep_idle.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cgjgqji5js05i" +path="res://.godot/imported/sheep_idle.png-4387ee4aa7fc489a13af22323ca68400.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/first_party/wildlife/sheep/sheep_idle.png" +dest_files=["res://.godot/imported/sheep_idle.png-4387ee4aa7fc489a13af22323ca68400.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/assets/third_party/inputs/atlas_kenney_input_prompts_1.4/import_spritesheets.gd b/assets/third_party/inputs/atlas_kenney_input_prompts_1.4/import_spritesheets.gd index c52e3ace62..3a6ed42d7a 100644 --- a/assets/third_party/inputs/atlas_kenney_input_prompts_1.4/import_spritesheets.gd +++ b/assets/third_party/inputs/atlas_kenney_input_prompts_1.4/import_spritesheets.gd @@ -35,14 +35,14 @@ func import(spritesheet_xml_file: String) -> void: create_atlas_textures(folder, full_image, atlas) -func create_atlas_textures(folder: String, full_image: Texture2D, atlas: Dictionary): +func create_atlas_textures(folder: String, full_image: Texture2D, atlas: Dictionary) -> bool: for sprite: Dictionary in atlas.sprites: if not create_atlas_texture(folder, full_image, sprite): return false return true -func create_atlas_texture(folder: String, full_image: Texture2D, sprite: Dictionary): +func create_atlas_texture(folder: String, full_image: Texture2D, sprite: Dictionary) -> bool: var name := "%s/%s.%s" % [folder, sprite.name, "tres"] var texture: AtlasTexture if ResourceLoader.exists(name, "AtlasTexture"): @@ -69,7 +69,7 @@ func create_atlas_texture(folder: String, full_image: Texture2D, sprite: Diction func save_resource(name: String, texture: AtlasTexture) -> bool: - var status = ResourceSaver.save(texture, name) + var status := ResourceSaver.save(texture, name) if status != OK: printerr("Failed to save resource " + name) return false @@ -81,19 +81,19 @@ func read_kenney_sprite_sheet(source_file: String) -> Dictionary: var sprites: Array[Dictionary] var parser := XMLParser.new() if OK == parser.open(source_file): - var read = parser.read() + var read := parser.read() if read == OK: atlas["sprites"] = sprites while read != ERR_FILE_EOF: if parser.get_node_type() == XMLParser.NODE_ELEMENT: - var node_name = parser.get_node_name() + var node_name := parser.get_node_name() match node_name: "TextureAtlas": atlas["imagePath"] = source_file.get_base_dir().path_join( parser.get_named_attribute_value("imagePath") ) "SubTexture": - var sprite = {} + var sprite := {} sprite["name"] = parser.get_named_attribute_value("name") sprite["x"] = float(parser.get_named_attribute_value("x")) sprite["y"] = float(parser.get_named_attribute_value("y")) diff --git a/assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard-&-mouse_sheet_default.png b/assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard-&-mouse_sheet_default.png index e88c3f871f..5c5e0ab721 100644 --- a/assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard-&-mouse_sheet_default.png +++ b/assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard-&-mouse_sheet_default.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1846ff7e8ee22c3a4fb88efc8e569e98edef5b127bd4a6fbae11e16888578c92 -size 29862 +oid sha256:e7d1d25ca8515c413d2cbb675e11a2c792f2f97f13267433df247e1398dc4d6d +size 24004 diff --git a/assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg b/assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg deleted file mode 100644 index 93c507e8f7..0000000000 --- a/assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:565941c9c8200fc7d087a4cb9fc330d7939977be5eb26b7356c99239f3bf4aee -size 32022 diff --git a/assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg.import b/assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg.import deleted file mode 100644 index 0cd9d218e4..0000000000 --- a/assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://fcmjf1srys7n" -path="res://.godot/imported/Spit.ogg-abd5ae789a13f49a3f7c82981320bf69.oggvorbisstr" - -[deps] - -source_file="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg" -dest_files=["res://.godot/imported/Spit.ogg-abd5ae789a13f49a3f7c82981320bf69.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg.license b/assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg.license deleted file mode 100644 index 0c2dd1f34b..0000000000 --- a/assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg.license +++ /dev/null @@ -1,4 +0,0 @@ -SPDX-FileCopyrightText: noahpardo -SPDX-License-Identifier: CC0-1.0 - -NPX Throat Gathering Spit.wav by noahpardo -- https://freesound.org/people/noahpardo/sounds/352400/ diff --git a/build/.gitkeep b/build/.gdignore similarity index 100% rename from build/.gitkeep rename to build/.gdignore diff --git a/build/web/.gitkeep b/build/linux-x86_64/.gdignore similarity index 100% rename from build/web/.gitkeep rename to build/linux-x86_64/.gdignore diff --git a/build/web/.gdignore b/build/web/.gdignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/build/windows-x86_64/.gdignore b/build/windows-x86_64/.gdignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/export_presets.cfg b/export_presets.cfg index f67735c799..324ec73a4a 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -3,7 +3,6 @@ name="Web" platform="Web" runnable=true -advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" @@ -11,6 +10,11 @@ include_filter="" exclude_filter="" export_path="build/web/index.html" patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" encryption_include_filters="" encryption_exclude_filters="" seed=0 @@ -59,17 +63,21 @@ threads/godot_pool_size=4 [preset.1] -name="Linux" +name="Linux x86_64" platform="Linux" runnable=true -advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="build/threadbare.x86_64" +export_path="build/linux-x86_64/threadbare.x86_64" patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" encryption_include_filters="" encryption_exclude_filters="" seed=0 @@ -99,3 +107,75 @@ unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") rm -rf \"{temp_dir}\"" + +[preset.2] + +name="Windows x86_64" +platform="Windows Desktop" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="build/windows-x86_64/threadbare.exe" +patches=PackedStringArray() +patch_delta_encoding=false +patch_delta_compression_level_zstd=19 +patch_delta_min_reduction=0.1 +patch_delta_include_filters="*" +patch_delta_exclude_filters="" +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.2.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +shader_baker/enabled=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="Endless Access" +application/product_name="Threadbare" +application/file_description="" +application/copyright="Endless Access LLC & the Threadbare Authors" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" diff --git a/linux/releases.xml b/linux/releases.xml index 0bb7e98bdf..c285d1073d 100644 --- a/linux/releases.xml +++ b/linux/releases.xml @@ -4,6 +4,12 @@ SPDX-FileCopyrightText: The Threadbare Authors SPDX-License-Identifier: CC0-1.0 --> + + https://github.com/endlessm/threadbare/releases/tag/v0.1.11 + + + https://github.com/endlessm/threadbare/releases/tag/v0.1.10 + https://github.com/endlessm/threadbare/releases/tag/v0.1.9 diff --git a/locale/es.po b/locale/es.po index 3042719a56..9b3423bbe5 100644 --- a/locale/es.po +++ b/locale/es.po @@ -1,17 +1,19 @@ # Spanish translation for Threadbare for the following files: # res://scenes/menus/title/components/main_menu.tscn +# Manuel Quiñones , 2026. # -# Manuel Quiñones 2025 msgid "" msgstr "" "Project-Id-Version: Threadbare\n" +"PO-Revision-Date: 2026-04-08 21:25-0300\n" "Last-Translator: Manuel Quiñones \n" "Language-Team: Spanish\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.8\n" +"X-Generator: Gtranslator 50.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: scenes/menus/title/components/main_menu.tscn msgid "Continue" @@ -34,7 +36,7 @@ msgstr "Créditos" msgid "Exit Game" msgstr "Salir del juego" -#: scenes/menus/options/options.tscn +#: scenes/menus/options/options.tscn scenes/menus/debug/debug_settings.tscn msgid "Back" msgstr "Volver" @@ -58,9 +60,21 @@ msgstr "Ajustes de video" msgid "Fullscreen" msgstr "Pantalla completa" +#: scenes/menus/options/components/language_settings.tscn +msgid "Language Settings" +msgstr "Ajustes de idioma" + +#: scenes/menus/debug/debug_settings.tscn +msgid "Completed Quests" +msgstr "Misiones completadas" + +#: scenes/menus/debug/debug_settings.tscn +msgid "Player Abilities" +msgstr "Habilidades del jugador" + #: scenes/globals/pause/pause_overlay.tscn msgid "PauseMenu" -msgstr "" +msgstr "PauseMenu" #: scenes/globals/pause/pause_overlay.tscn msgid "Game Paused" @@ -72,12 +86,63 @@ msgstr "Resumir" #: scenes/globals/pause/pause_overlay.tscn msgid "Abandon Quest" -msgstr "Abandonar quest" +msgstr "Abandonar misión" + +#: scenes/globals/pause/pause_overlay.tscn +msgid "Debug Settings" +msgstr "Ajustes de depuración" + +#: scenes/globals/pause/pause_overlay.tscn +msgid "Report a Problem" +msgstr "Reportar un problema" #: scenes/globals/pause/pause_overlay.tscn msgid "Exit to Title" msgstr "Salir al título" -#: scenes/menus/title/components/main_menu.gd +#: scenes/globals/pause/pause_overlay.tscn +msgid "DebugSettings" +msgstr "DebugSettings" + +#: scenes/menus/title/components/main_menu.gd:23 msgid "Restart" msgstr "Reiniciar" + +#: scenes/ui_elements/input_hints/aim_input_hint.tscn +msgid "Aim" +msgstr "Apuntar" + +#: scenes/ui_elements/input_hints/interact_input_hint.tscn +msgid "Interact" +msgstr "Interactuar" + +#: scenes/ui_elements/input_hints/movement_input_hint.tscn +msgid "Move" +msgstr "Mover" + +#: scenes/ui_elements/input_hints/repel_input_hint.tscn +msgid "Repel" +msgstr "Repeler" + +#: scenes/ui_elements/input_hints/reset_input_hint.tscn +msgid "Reset" +msgstr "Reiniciar" + +#: scenes/ui_elements/input_hints/run_input_hint.tscn +msgid "Run" +msgstr "Correr" + +#: scenes/ui_elements/input_hints/skip_input_hint.tscn +msgid "Skip" +msgstr "Omitir" + +#: scenes/ui_elements/input_hints/throw_input_hint.tscn +msgid "Throw" +msgstr "Lanzar" + +#: scenes/ui_elements/input_hints/undo_input_hint.tscn +msgid "Undo" +msgstr "Deshacer" + +msgid "Threadbare" +msgstr "Threadbare" diff --git a/locale/threadbare.pot b/locale/threadbare.pot index d59738489b..f871449adf 100644 --- a/locale/threadbare.pot +++ b/locale/threadbare.pot @@ -3,8 +3,19 @@ # res://scenes/menus/options/options.tscn # res://scenes/menus/options/components/sound_settings.tscn # res://scenes/menus/options/components/video_settings.tscn +# res://scenes/menus/options/components/language_settings.tscn +# res://scenes/menus/debug/debug_settings.tscn # res://scenes/globals/pause/pause_overlay.tscn # res://scenes/menus/title/components/main_menu.gd +# res://scenes/ui_elements/input_hints/aim_input_hint.tscn +# res://scenes/ui_elements/input_hints/interact_input_hint.tscn +# res://scenes/ui_elements/input_hints/movement_input_hint.tscn +# res://scenes/ui_elements/input_hints/repel_input_hint.tscn +# res://scenes/ui_elements/input_hints/reset_input_hint.tscn +# res://scenes/ui_elements/input_hints/run_input_hint.tscn +# res://scenes/ui_elements/input_hints/skip_input_hint.tscn +# res://scenes/ui_elements/input_hints/throw_input_hint.tscn +# res://scenes/ui_elements/input_hints/undo_input_hint.tscn # # FIRST AUTHOR , YEAR. # @@ -38,6 +49,7 @@ msgid "Exit Game" msgstr "" #: scenes/menus/options/options.tscn +#: scenes/menus/debug/debug_settings.tscn msgid "Back" msgstr "" @@ -61,6 +73,18 @@ msgstr "" msgid "Fullscreen" msgstr "" +#: scenes/menus/options/components/language_settings.tscn +msgid "Language Settings" +msgstr "" + +#: scenes/menus/debug/debug_settings.tscn +msgid "Completed Quests" +msgstr "" + +#: scenes/menus/debug/debug_settings.tscn +msgid "Player Abilities" +msgstr "" + #: scenes/globals/pause/pause_overlay.tscn msgid "PauseMenu" msgstr "" @@ -77,10 +101,61 @@ msgstr "" msgid "Abandon Quest" msgstr "" +#: scenes/globals/pause/pause_overlay.tscn +msgid "Debug Settings" +msgstr "" + +#: scenes/globals/pause/pause_overlay.tscn +msgid "Report a Problem" +msgstr "" + #: scenes/globals/pause/pause_overlay.tscn msgid "Exit to Title" msgstr "" -#: scenes/menus/title/components/main_menu.gd +#: scenes/globals/pause/pause_overlay.tscn +msgid "DebugSettings" +msgstr "" + +#: scenes/menus/title/components/main_menu.gd:23 msgid "Restart" msgstr "" + +#: scenes/ui_elements/input_hints/aim_input_hint.tscn +msgid "Aim" +msgstr "" + +#: scenes/ui_elements/input_hints/interact_input_hint.tscn +msgid "Interact" +msgstr "" + +#: scenes/ui_elements/input_hints/movement_input_hint.tscn +msgid "Move" +msgstr "" + +#: scenes/ui_elements/input_hints/repel_input_hint.tscn +msgid "Repel" +msgstr "" + +#: scenes/ui_elements/input_hints/reset_input_hint.tscn +msgid "Reset" +msgstr "" + +#: scenes/ui_elements/input_hints/run_input_hint.tscn +msgid "Run" +msgstr "" + +#: scenes/ui_elements/input_hints/skip_input_hint.tscn +msgid "Skip" +msgstr "" + +#: scenes/ui_elements/input_hints/throw_input_hint.tscn +msgid "Throw" +msgstr "" + +#: scenes/ui_elements/input_hints/undo_input_hint.tscn +msgid "Undo" +msgstr "" + +msgid "Threadbare" +msgstr "" diff --git a/project.godot b/project.godot index 0ee44379c3..e012de52b9 100644 --- a/project.godot +++ b/project.godot @@ -35,6 +35,7 @@ PauseOverlay="*res://scenes/globals/pause/pause_overlay.tscn" MusicPlayer="*res://scenes/globals/music_player/music_player.tscn" CameraShake="*res://scenes/globals/camera_shaker/camera_shake.tscn" InputHelper="*res://addons/input_helper/input_helper.gd" +InputHud="res://scenes/ui_elements/input_hints/input_hud.tscn" AspectRatioDebugger="*res://scenes/globals/aspect_ratio_debugger/aspect_ratio_debugger.tscn" MouseManager="*res://scenes/globals/mouse_manager/mouse_manager.tscn" @@ -256,13 +257,14 @@ interact={ } repel={ "deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":90,"key_label":0,"unicode":122,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null) +, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(53, 19),"global_position":Vector2(62, 67),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null) ] } throw={ "deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":88,"key_label":0,"unicode":120,"location":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":5,"axis_value":1.0,"script":null) , Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(92, 25),"global_position":Vector2(92, 54),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) ] @@ -281,7 +283,7 @@ champ_walk_on_water={ [internationalization] locale/translations=PackedStringArray("res://locale/es.po") -locale/translations_pot_files=PackedStringArray("res://scenes/menus/title/components/main_menu.tscn", "res://scenes/menus/options/options.tscn", "res://scenes/menus/options/components/sound_settings.tscn", "res://scenes/menus/options/components/video_settings.tscn", "res://scenes/globals/pause/pause_overlay.tscn", "res://scenes/menus/title/components/main_menu.gd") +locale/translations_pot_files=PackedStringArray("res://scenes/menus/title/components/main_menu.tscn", "res://scenes/menus/options/options.tscn", "res://scenes/menus/options/components/sound_settings.tscn", "res://scenes/menus/options/components/video_settings.tscn", "res://scenes/menus/options/components/language_settings.tscn", "res://scenes/menus/debug/debug_settings.tscn", "res://scenes/globals/pause/pause_overlay.tscn", "res://scenes/menus/title/components/main_menu.gd", "res://scenes/ui_elements/input_hints/aim_input_hint.tscn", "res://scenes/ui_elements/input_hints/interact_input_hint.tscn", "res://scenes/ui_elements/input_hints/movement_input_hint.tscn", "res://scenes/ui_elements/input_hints/repel_input_hint.tscn", "res://scenes/ui_elements/input_hints/reset_input_hint.tscn", "res://scenes/ui_elements/input_hints/run_input_hint.tscn", "res://scenes/ui_elements/input_hints/skip_input_hint.tscn", "res://scenes/ui_elements/input_hints/throw_input_hint.tscn", "res://scenes/ui_elements/input_hints/undo_input_hint.tscn") [layer_names] @@ -293,10 +295,14 @@ locale/translations_pot_files=PackedStringArray("res://scenes/menus/title/compon 2d_physics/layer_6="interactable" 2d_physics/layer_7="players hitbox" 2d_physics/layer_8="enemies hitbox" -2d_physics/layer_9="projectiles" +2d_physics/layer_9="repellable" 2d_physics/layer_10="non_walkable_floor" 2d_physics/layer_13="hookable" +[physics] + +2d/default_gravity=0.0 + [rendering] textures/canvas_textures/default_texture_filter=0 diff --git a/scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn b/scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn index be12347ef7..85c7d93707 100644 --- a/scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn +++ b/scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn @@ -5,7 +5,7 @@ [ext_resource type="Script" uid="uid://davuwhxg7pnmk" path="res://scenes/eternal_loom_sokoban/components/rules/rule_push.gd" id="3_la5dd"] [ext_resource type="Script" uid="uid://6pqne81m5n80" path="res://scenes/eternal_loom_sokoban/components/goals/goal_all_on.gd" id="4_krdx7"] -[node name="EternalLoomRuleset" type="Node" unique_id=179353152 node_paths=PackedStringArray("directional_input")] +[node name="EternalLoomRuleset" type="Node" unique_id=179353152 node_paths=PackedStringArray("directional_input") groups=["sokoban_ruleset"]] script = ExtResource("1_0a00n") directional_input = NodePath("DirectionalInput") tags_legend = Array[StringName]([&"controllable", &"pushable"]) diff --git a/scenes/eternal_loom_sokoban/components/hud/sokoban_hud.gd b/scenes/eternal_loom_sokoban/components/hud/sokoban_hud.gd deleted file mode 100644 index 5c9f39a24c..0000000000 --- a/scenes/eternal_loom_sokoban/components/hud/sokoban_hud.gd +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends MarginContainer - -@onready var skip_container: HBoxContainer = %SkipContainer - - -func _ready() -> void: - skip_container.visible = false - - -func display_skip() -> void: - skip_container.visible = true diff --git a/scenes/eternal_loom_sokoban/components/hud/sokoban_hud.gd.uid b/scenes/eternal_loom_sokoban/components/hud/sokoban_hud.gd.uid deleted file mode 100644 index 9c6f4c11f6..0000000000 --- a/scenes/eternal_loom_sokoban/components/hud/sokoban_hud.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d05sag63nk864 diff --git a/scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn b/scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn deleted file mode 100644 index 461a916abb..0000000000 --- a/scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn +++ /dev/null @@ -1,107 +0,0 @@ -[gd_scene format=3 uid="uid://b4d5rf6hn0x4"] - -[ext_resource type="Script" uid="uid://d05sag63nk864" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.gd" id="1_uhi48"] -[ext_resource type="Texture2D" uid="uid://cl3gxcavxrefq" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_x_outline.tres" id="2_eb163"] -[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="3_c7gdx"] -[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="3_uhi48"] -[ext_resource type="Texture2D" uid="uid://ds1gncqxuv7p7" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_color_y_outline.tres" id="4_pf0s0"] -[ext_resource type="Texture2D" uid="uid://d3rhotqp5gg7h" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_button_triangle_outline.tres" id="5_eesmi"] -[ext_resource type="Texture2D" uid="uid://cdgyk384ou7gp" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_x_outline.tres" id="6_d1bon"] -[ext_resource type="Texture2D" uid="uid://dn8vx333yunpe" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_y_outline.tres" id="7_g34a6"] -[ext_resource type="Texture2D" uid="uid://bko5l0he6rf5o" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_z_outline.tres" id="9_0dy71"] -[ext_resource type="Texture2D" uid="uid://cpafwyrjkngt3" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_b_outline.tres" id="10_80c1j"] -[ext_resource type="Texture2D" uid="uid://7qdppn7p05b1" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_button_circle_outline.tres" id="11_8qgja"] -[ext_resource type="Texture2D" uid="uid://upt0tmtsk3y2" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_a.tres" id="12_mjtj2"] -[ext_resource type="Texture2D" uid="uid://ddukicr2ko75b" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_b.tres" id="13_d2hux"] -[ext_resource type="Texture2D" uid="uid://c88qkrdjmolti" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_r_outline.tres" id="14_bpi2g"] -[ext_resource type="Texture2D" uid="uid://1sh6nf18rlha" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_color_x_outline.tres" id="15_tcshh"] -[ext_resource type="Texture2D" uid="uid://dltoru1w8ue7w" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_button_square_outline.tres" id="16_elmda"] -[ext_resource type="Texture2D" uid="uid://bkeqno6623dcj" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_y_outline.tres" id="17_hcyss"] -[ext_resource type="Texture2D" uid="uid://rrbih026ixaf" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_x_outline.tres" id="18_jq047"] - -[node name="SokobanHUD" type="MarginContainer" unique_id=1602846117] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -theme_override_constants/margin_right = 100 -theme_override_constants/margin_bottom = 100 -script = ExtResource("1_uhi48") - -[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=359969716] -layout_mode = 2 -size_flags_horizontal = 8 -size_flags_vertical = 8 - -[node name="SkipContainer" type="HBoxContainer" parent="VBoxContainer" unique_id=822397535] -unique_name_in_owner = true -visible = false -layout_mode = 2 - -[node name="InteractInput" type="TextureRect" parent="VBoxContainer/SkipContainer" unique_id=1876062003] -layout_mode = 2 -size_flags_horizontal = 8 -size_flags_vertical = 8 -texture = ExtResource("2_eb163") -script = ExtResource("3_c7gdx") -action_name = &"sokoban_skip" -keyboard_texture = ExtResource("2_eb163") -xbox_controller_texture = ExtResource("4_pf0s0") -playstation_controller_texture = ExtResource("5_eesmi") -nintendo_controller_texture = ExtResource("6_d1bon") -steam_controller_texture = ExtResource("7_g34a6") - -[node name="Label" type="Label" parent="VBoxContainer/SkipContainer" unique_id=689533537] -layout_mode = 2 -theme = ExtResource("3_uhi48") -theme_type_variation = &"HintLabel" -text = "Skip" - -[node name="UndoContainer" type="HBoxContainer" parent="VBoxContainer" unique_id=674736118] -layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 8 - -[node name="InteractInput" type="TextureRect" parent="VBoxContainer/UndoContainer" unique_id=504330616] -layout_mode = 2 -size_flags_horizontal = 0 -size_flags_vertical = 8 -texture = ExtResource("9_0dy71") -script = ExtResource("3_c7gdx") -action_name = &"sokoban_undo" -keyboard_texture = ExtResource("9_0dy71") -xbox_controller_texture = ExtResource("10_80c1j") -playstation_controller_texture = ExtResource("11_8qgja") -nintendo_controller_texture = ExtResource("12_mjtj2") -steam_controller_texture = ExtResource("13_d2hux") - -[node name="Label" type="Label" parent="VBoxContainer/UndoContainer" unique_id=412563171] -layout_mode = 2 -size_flags_horizontal = 4 -theme = ExtResource("3_uhi48") -theme_type_variation = &"HintLabel" -text = "Undo" -vertical_alignment = 1 - -[node name="ResetContainer" type="HBoxContainer" parent="VBoxContainer" unique_id=1458404391] -layout_mode = 2 - -[node name="InteractInput" type="TextureRect" parent="VBoxContainer/ResetContainer" unique_id=1814737114] -layout_mode = 2 -size_flags_horizontal = 8 -size_flags_vertical = 8 -texture = ExtResource("14_bpi2g") -script = ExtResource("3_c7gdx") -action_name = &"sokoban_reset" -keyboard_texture = ExtResource("14_bpi2g") -xbox_controller_texture = ExtResource("15_tcshh") -playstation_controller_texture = ExtResource("16_elmda") -nintendo_controller_texture = ExtResource("17_hcyss") -steam_controller_texture = ExtResource("18_jq047") - -[node name="Label" type="Label" parent="VBoxContainer/ResetContainer" unique_id=1585035155] -layout_mode = 2 -theme = ExtResource("3_uhi48") -theme_type_variation = &"HintLabel" -text = "Reset" diff --git a/scenes/eternal_loom_sokoban/levels/eternal_loom_template.tscn b/scenes/eternal_loom_sokoban/levels/eternal_loom_template.tscn index a888e41a7b..9d8ceb3af2 100644 --- a/scenes/eternal_loom_sokoban/levels/eternal_loom_template.tscn +++ b/scenes/eternal_loom_sokoban/levels/eternal_loom_template.tscn @@ -5,7 +5,6 @@ [ext_resource type="Script" uid="uid://dppvw2f8yh4vu" path="res://scenes/eternal_loom_sokoban/components/system/board/board_2d.gd" id="3_65duy"] [ext_resource type="Material" uid="uid://jpl3v3f7elq6" path="res://scenes/eternal_loom_sokoban/components/floor/tiled_mat.tres" id="4_5hoht"] [ext_resource type="TileSet" uid="uid://dand23uvn70pg" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres" id="5_mdri7"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="6_73ofi"] [ext_resource type="PackedScene" uid="uid://btpeaqx2nur3q" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn" id="6_yoiiu"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="8_5hoht"] [ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="9_mdri7"] @@ -18,10 +17,10 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = -2000.0 -offset_top = -1000.0 -offset_right = 2000.0 -offset_bottom = 1000.0 +offset_left = -1764.0 +offset_top = -924.0 +offset_right = 2236.0 +offset_bottom = 1076.0 grow_horizontal = 2 grow_vertical = 2 color = Color(0.0740935, 0.0496062, 0.0467346, 1) @@ -56,10 +55,6 @@ tile_set = ExtResource("5_mdri7") tile_map_data = PackedByteArray("AAD7//3/AAAAAAAABwD7//7/AAAAAAAABwD7////AAAAAAAABwD7/wAAAAAAAAAAAQD7/wEAAAAAAAAABwD8/wEAAAAAAAAABwD9/wEAAAAAAAAAAQD+/wEAAAAAAAAABwD//wEAAAAAAAAABwAAAAEAAAAAAAAAAQABAAEAAAAAAAAABwACAAEAAAAAAAAABwADAAEAAAAAAAAABwAEAAEAAAAAAAAABwAEAAAAAAAAAAAAAQAEAP//AAAAAAAABwAEAP7/AAAAAAAABwAEAP3/AAAAAAAABwADAP3/AAAAAAAABwACAP3/AAAAAAAAAQABAP3/AAAAAAAABwAAAP3/AAAAAAAABwD///3/AAAAAAAAAQD+//3/AAAAAAAABwD9//3/AAAAAAAABwD8//3/AAAAAAAAAQD/////AAAAAAAABgD9////AAAAAAAACAABAP//AAAAAAAACQA=") tile_set = ExtResource("5_mdri7") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=498587720] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=1797419998 instance=ExtResource("6_73ofi")] - [node name="EternalLoomRuleset" parent="." unique_id=1264941114 node_paths=PackedStringArray("board") instance=ExtResource("6_yoiiu")] board = NodePath("../Board2D") next_scene = "uid://c80o1bys5radq" diff --git a/scenes/eternal_loom_sokoban/levels/sokoban_level_1a.tscn b/scenes/eternal_loom_sokoban/levels/sokoban_level_1a.tscn index 056316c69d..71d17110c0 100644 --- a/scenes/eternal_loom_sokoban/levels/sokoban_level_1a.tscn +++ b/scenes/eternal_loom_sokoban/levels/sokoban_level_1a.tscn @@ -5,7 +5,6 @@ [ext_resource type="Script" uid="uid://dppvw2f8yh4vu" path="res://scenes/eternal_loom_sokoban/components/system/board/board_2d.gd" id="3_jabbo"] [ext_resource type="TileSet" uid="uid://dand23uvn70pg" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres" id="4_6ydvs"] [ext_resource type="Material" uid="uid://jpl3v3f7elq6" path="res://scenes/eternal_loom_sokoban/components/floor/tiled_mat.tres" id="4_pa2s2"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="6_e62tk"] [ext_resource type="PackedScene" uid="uid://btpeaqx2nur3q" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn" id="6_o38wy"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="8_pa2s2"] [ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="9_jabbo"] @@ -54,15 +53,9 @@ tile_set = ExtResource("4_6ydvs") tile_map_data = PackedByteArray("AAD+////AAAAAAAACAACAP//AAAAAAAABgD/////AAAAAAAACAABAP//AAAAAAAACQD7//3/AAAAAAAABwD7//7/AAAAAAAABwD7////AAAAAAAABwD7/wAAAAAAAAAAAQD7/wEAAAAAAAAABwD8/wEAAAAAAAAABwD9/wEAAAAAAAAAAQD+/wEAAAAAAAAABwD//wEAAAAAAAAABwAAAAEAAAAAAAAAAQABAAEAAAAAAAAABwACAAEAAAAAAAAABwADAAEAAAAAAAAABwAEAAEAAAAAAAAABwAEAAAAAAAAAAAAAQAEAP//AAAAAAAABwAEAP7/AAAAAAAABwAEAP3/AAAAAAAABwADAP3/AAAAAAAABwACAP3/AAAAAAAAAQABAP3/AAAAAAAABwAAAP3/AAAAAAAABwD///3/AAAAAAAAAQD+//3/AAAAAAAABwD9//3/AAAAAAAABwD8//3/AAAAAAAAAQD8//7/BgAAAAAAAQD8/wAABgAAAAAAAgA=") tile_set = ExtResource("4_6ydvs") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=843900103] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=1676105086 instance=ExtResource("6_e62tk")] - [node name="RuleEngine" parent="." unique_id=2131725369 node_paths=PackedStringArray("board") instance=ExtResource("6_o38wy")] board = NodePath("../Board2D") next_scene = "uid://c80o1bys5radq" [node name="BackgroundMusic" parent="." unique_id=575752160 instance=ExtResource("8_pa2s2")] stream = ExtResource("9_jabbo") - -[connection signal="skip_enabled" from="RuleEngine" to="ScreenOverlay/SokobanHUD" method="display_skip"] diff --git a/scenes/eternal_loom_sokoban/levels/sokoban_level_1b.tscn b/scenes/eternal_loom_sokoban/levels/sokoban_level_1b.tscn index 4960d013d5..30630129d8 100644 --- a/scenes/eternal_loom_sokoban/levels/sokoban_level_1b.tscn +++ b/scenes/eternal_loom_sokoban/levels/sokoban_level_1b.tscn @@ -1,7 +1,6 @@ [gd_scene format=4 uid="uid://c80o1bys5radq"] [ext_resource type="Material" uid="uid://jpl3v3f7elq6" path="res://scenes/eternal_loom_sokoban/components/floor/tiled_mat.tres" id="2_1cxqe"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="4_hd1xn"] [ext_resource type="PackedScene" uid="uid://btpeaqx2nur3q" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn" id="4_pdh5l"] [ext_resource type="Script" uid="uid://dppvw2f8yh4vu" path="res://scenes/eternal_loom_sokoban/components/system/board/board_2d.gd" id="5_644u0"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="6_1cxqe"] @@ -48,15 +47,9 @@ tile_set = ExtResource("6_fr34n") tile_map_data = PackedByteArray("AAD8/wEABgAAAAAABAD9/wEAAAAAAAAAAQD+/wEAAAAAAAAABwD///3/AAAAAAAABwD//wEAAAAAAAAABwAAAAEAAAAAAAAAAQABAAEAAAAAAAAABwACAAEAAAAAAAAABwD7/wEAAAAAAAAABwAAAP//AAAAAAAACQD6//3/AAAAAAAAAQD6//7/AAAAAAAABwD6////AAAAAAAABwD6/wAAAAAAAAAABwD+////AAAAAAAACgD9//7/AAAAAAAABwD6//z/AAAAAAAABwD7//z/BgAAAAAAAQD8//z/AAAAAAAABwD9//z/AAAAAAAABwD8//7/BgAAAAAAAwD+//z/AAAAAAAAAQD///z/AAAAAAAABwACAAAAAAAAAAAABwACAP//AAAAAAAABwACAP7/AAAAAAAABwD///7/AAAAAAAABwAAAP7/AAAAAAAABwABAP7/AAAAAAAAAQD7/wAABgAAAAAAAgD/////AAAAAAAABgD8//v/AAAAAAAABwD7//v/AAAAAAAABwD6//v/AAAAAAAABwD6/wEAAAAAAAAABwD7/wIAAAAAAAAABwD8/wIAAAAAAAAABwD9/wIAAAAAAAAABwA=") tile_set = ExtResource("6_fr34n") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1831313310] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=717386321 instance=ExtResource("4_hd1xn")] - [node name="RuleEngine" parent="." unique_id=1676328937 node_paths=PackedStringArray("board") instance=ExtResource("4_pdh5l")] board = NodePath("../Board2D") next_scene = "uid://cpv57hirgmyml" [node name="BackgroundMusic" parent="." unique_id=162178963 instance=ExtResource("6_1cxqe")] stream = ExtResource("7_aqnm5") - -[connection signal="skip_enabled" from="RuleEngine" to="ScreenOverlay/SokobanHUD" method="display_skip"] diff --git a/scenes/eternal_loom_sokoban/levels/sokoban_level_1c.tscn b/scenes/eternal_loom_sokoban/levels/sokoban_level_1c.tscn index f022342220..cab20ab0b9 100644 --- a/scenes/eternal_loom_sokoban/levels/sokoban_level_1c.tscn +++ b/scenes/eternal_loom_sokoban/levels/sokoban_level_1c.tscn @@ -1,7 +1,6 @@ [gd_scene format=4 uid="uid://cpv57hirgmyml"] [ext_resource type="Material" uid="uid://jpl3v3f7elq6" path="res://scenes/eternal_loom_sokoban/components/floor/tiled_mat.tres" id="2_x585a"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="4_0yr66"] [ext_resource type="PackedScene" uid="uid://btpeaqx2nur3q" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn" id="4_m55nv"] [ext_resource type="Script" uid="uid://dppvw2f8yh4vu" path="res://scenes/eternal_loom_sokoban/components/system/board/board_2d.gd" id="5_16ydi"] [ext_resource type="TileSet" uid="uid://dand23uvn70pg" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres" id="6_bgod2"] @@ -47,15 +46,9 @@ tile_set = ExtResource("6_bgod2") tile_map_data = PackedByteArray("AAAAAP3/AAAAAAAABwAAAP//AAAAAAAABwABAP3/AAAAAAAAAQACAP7/AAAAAAAABwADAP7/AAAAAAAABwADAP//AAAAAAAAAQADAAAAAAAAAAAABwADAAEAAAAAAAAAAQD8//3/AAAAAAAABwD8//7/AAAAAAAAAQD8////AAAAAAAABwD8/wAAAAAAAAAABwD8/wEAAAAAAAAAAQD8/wIAAAAAAAAABwD9//3/BgAAAAAABQD9/wIABgAAAAAABgD+//3/AAAAAAAABwD+////BgAAAAAAAQD+/wAAAAAAAAAABgD+/wIABgAAAAAAAgD///3/AAAAAAAABwD/////BgAAAAAAAwD//wAAAAAAAAAACwD//wIABgAAAAAABAAAAAIAAAAAAAAABwABAP//AAAAAAAACQABAAAAAAAAAAAACgABAAIAAAAAAAAAAQACAP3/AAAAAAAABwACAAIAAAAAAAAABwADAAIAAAAAAAAABwAAAAMAAAAAAAAABwD//wMAAAAAAAAABwD+/wMAAAAAAAAABwD9/wMAAAAAAAAABwD8/wMAAAAAAAAABwD8//z/AAAAAAAABwD9//z/AAAAAAAABwD+//z/AAAAAAAABwA=") tile_set = ExtResource("6_bgod2") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1659637994] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=1725053793 instance=ExtResource("4_0yr66")] - [node name="RuleEngine" parent="." unique_id=58907825 node_paths=PackedStringArray("board") instance=ExtResource("4_m55nv")] board = NodePath("../Board2D") next_scene = "uid://cufkthb25mpxy" [node name="BackgroundMusic" parent="." unique_id=690723734 instance=ExtResource("6_x585a")] stream = ExtResource("7_6gt1w") - -[connection signal="skip_enabled" from="RuleEngine" to="ScreenOverlay/SokobanHUD" method="display_skip"] diff --git a/scenes/eternal_loom_sokoban/levels/sokoban_level_2a.tscn b/scenes/eternal_loom_sokoban/levels/sokoban_level_2a.tscn index 2291d2b606..b52195e78f 100644 --- a/scenes/eternal_loom_sokoban/levels/sokoban_level_2a.tscn +++ b/scenes/eternal_loom_sokoban/levels/sokoban_level_2a.tscn @@ -5,7 +5,6 @@ [ext_resource type="Material" uid="uid://jpl3v3f7elq6" path="res://scenes/eternal_loom_sokoban/components/floor/tiled_mat.tres" id="4_2i86o"] [ext_resource type="Script" uid="uid://dppvw2f8yh4vu" path="res://scenes/eternal_loom_sokoban/components/system/board/board_2d.gd" id="5_644u0"] [ext_resource type="TileSet" uid="uid://dand23uvn70pg" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres" id="6_fr34n"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="6_q20fq"] [ext_resource type="PackedScene" uid="uid://btpeaqx2nur3q" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn" id="6_skgk4"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="8_2i86o"] [ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="9_fxqqq"] @@ -55,15 +54,9 @@ tile_set = ExtResource("6_fr34n") tile_map_data = PackedByteArray("AAABAP3/AAAAAAAAAQABAP//AAAAAAAABgABAAEAAAAAAAAAAQACAP3/AAAAAAAABwACAP//AAAAAAAACQACAAEAAAAAAAAABwADAP3/AAAAAAAABwADAAEAAAAAAAAAAQD8//7/AAAAAAAABwD8/wEABgAAAAAAAgD9//7/AAAAAAAABwD9/wEAAAAAAAAAAQD7//7/AAAAAAAABwD7////AAAAAAAAAQD7/wAAAAAAAAAABwD7/wEAAAAAAAAABwD+/wEAAAAAAAAABwD+//7/AAAAAAAAAQD///7/AAAAAAAABwD//wEAAAAAAAAABwD//wAAAAAAAAAACAAAAP3/AAAAAAAABwAAAP7/AAAAAAAAAQAAAP//AAAAAAAABwAAAAEAAAAAAAAABwAEAP3/AAAAAAAABwAEAP7/AAAAAAAAAQAEAP//AAAAAAAABwAEAAAAAAAAAAAAAQAEAAEAAAAAAAAABwD8////BgAAAAAAAQD9/wIAAAAAAAAABwD8/wIAAAAAAAAABwD7/wIAAAAAAAAABwA=") tile_set = ExtResource("6_fr34n") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1642726939] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=16615097 instance=ExtResource("6_q20fq")] - [node name="RuleEngine" parent="." unique_id=178462056 node_paths=PackedStringArray("board") instance=ExtResource("6_skgk4")] board = NodePath("../Board2D") next_scene = "uid://c6qwiy01e6jqd" [node name="BackgroundMusic" parent="." unique_id=327397104 instance=ExtResource("8_2i86o")] stream = ExtResource("9_fxqqq") - -[connection signal="skip_enabled" from="RuleEngine" to="ScreenOverlay/SokobanHUD" method="display_skip"] diff --git a/scenes/eternal_loom_sokoban/levels/sokoban_level_2b.tscn b/scenes/eternal_loom_sokoban/levels/sokoban_level_2b.tscn index 63edb528d0..74600b7951 100644 --- a/scenes/eternal_loom_sokoban/levels/sokoban_level_2b.tscn +++ b/scenes/eternal_loom_sokoban/levels/sokoban_level_2b.tscn @@ -3,7 +3,6 @@ [ext_resource type="Script" uid="uid://dppvw2f8yh4vu" path="res://scenes/eternal_loom_sokoban/components/system/board/board_2d.gd" id="1_k8gxf"] [ext_resource type="Material" uid="uid://jpl3v3f7elq6" path="res://scenes/eternal_loom_sokoban/components/floor/tiled_mat.tres" id="2_2kj74"] [ext_resource type="TileSet" uid="uid://dand23uvn70pg" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres" id="2_p3sau"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="4_0w15j"] [ext_resource type="PackedScene" uid="uid://btpeaqx2nur3q" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn" id="4_vc6vr"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="6_2kj74"] [ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="7_ymlnt"] @@ -49,15 +48,9 @@ tile_set = ExtResource("2_p3sau") tile_map_data = PackedByteArray("AAAEAAIAAAAAAAAABwD8////AAAAAAAABwD8/wAAAAAAAAAABwD8/wEAAAAAAAAAAQD8/wIAAAAAAAAABwD9//3/AAAAAAAABwD9//7/AAAAAAAABwD9////BgAAAAAAAQD9/wIABgAAAAAAAgD+//3/AAAAAAAABwD+/wIAAAAAAAAABwD///3/AAAAAAAAAQD//wAAAAAAAAAACgD//wEAAAAAAAAACAD//wIAAAAAAAAAAQAAAP3/AAAAAAAABwAAAP7/AAAAAAAABwAAAP//AAAAAAAAAQAAAAAABgAAAAAAAwAAAAIABgAAAAAABAABAP7/AAAAAAAABwABAAEAAAAAAAAABgABAAIAAAAAAAAABwACAP7/AAAAAAAAAQACAAAAAAAAAAAACQACAAIAAAAAAAAABwADAP7/AAAAAAAABwADAP//AAAAAAAABwADAAIAAAAAAAAAAQAEAP//AAAAAAAABwAEAAAAAAAAAAAAAQAEAAEAAAAAAAAABwD8/wMAAAAAAAAABwD9/wMAAAAAAAAABwD+/wMAAAAAAAAABwABAAMAAAAAAAAABwAAAAMAAAAAAAAABwD//wMAAAAAAAAABwD8//7/AAAAAAAAAQA=") tile_set = ExtResource("2_p3sau") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1535588719] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=97214791 instance=ExtResource("4_0w15j")] - [node name="RuleEngine" parent="." unique_id=274230753 node_paths=PackedStringArray("board") instance=ExtResource("4_vc6vr")] board = NodePath("../Board2D") next_scene = "uid://ckfj7qm1jgr5a" [node name="BackgroundMusic" parent="." unique_id=1157040573 instance=ExtResource("6_2kj74")] stream = ExtResource("7_ymlnt") - -[connection signal="skip_enabled" from="RuleEngine" to="ScreenOverlay/SokobanHUD" method="display_skip"] diff --git a/scenes/eternal_loom_sokoban/levels/sokoban_level_2c.tscn b/scenes/eternal_loom_sokoban/levels/sokoban_level_2c.tscn index 1bb803c359..64dd768bee 100644 --- a/scenes/eternal_loom_sokoban/levels/sokoban_level_2c.tscn +++ b/scenes/eternal_loom_sokoban/levels/sokoban_level_2c.tscn @@ -4,7 +4,6 @@ [ext_resource type="TileSet" uid="uid://dand23uvn70pg" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres" id="2_7drnn"] [ext_resource type="Material" uid="uid://jpl3v3f7elq6" path="res://scenes/eternal_loom_sokoban/components/floor/tiled_mat.tres" id="2_x2dnf"] [ext_resource type="PackedScene" uid="uid://btpeaqx2nur3q" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn" id="4_cjklm"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="4_hvy7k"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="6_x2dnf"] [ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="7_pxo7o"] @@ -50,15 +49,9 @@ tile_set = ExtResource("2_7drnn") tile_map_data = PackedByteArray("AAD7//7/AAAAAAAAAQD7////AAAAAAAABwD7/wAAAAAAAAAABwD8/wEAAAAAAAAAAQD9//3/BgAAAAAAAQD9/wEABgAAAAAAAgD//wEAAAAAAAAAAQAAAP3/AAAAAAAABwAAAP7/AAAAAAAABwAAAP//BgAAAAAAAwAAAAEABgAAAAAABAADAAEABgAAAAAABgAEAP7/AAAAAAAAAQAFAP//AAAAAAAABwAFAAAAAAAAAAAAAQAFAAEAAAAAAAAABwD7//3/AAAAAAAABwD8//3/AAAAAAAABwD8/wAAAAAAAAAABwD9//z/AAAAAAAABwD+//z/AAAAAAAABwD+////AAAAAAAACwD+/wEAAAAAAAAABwD///z/AAAAAAAAAQD///7/AAAAAAAACgD//wAAAAAAAAAACAAAAPz/AAAAAAAABwABAP3/AAAAAAAABwACAP3/AAAAAAAAAQACAAAAAAAAAAAABgADAP3/BgAAAAAABQADAP//AAAAAAAACQAEAP3/AAAAAAAABwAEAAEAAAAAAAAABwAFAP7/AAAAAAAABwABAAEAAAAAAAAABwACAAEAAAAAAAAAAQD8/wIAAAAAAAAABwD9/wIAAAAAAAAABwD+/wIAAAAAAAAAAQD//wIAAAAAAAAABwAAAAIAAAAAAAAABwABAAIAAAAAAAAABwACAAIAAAAAAAAABwADAAIAAAAAAAAAAQAEAAIAAAAAAAAABwAEAPz/AAAAAAAAAQADAPz/AAAAAAAABwACAPz/AAAAAAAABwD8//z/AAAAAAAAAQA=") tile_set = ExtResource("2_7drnn") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=130345112] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=1715895390 instance=ExtResource("4_hvy7k")] - [node name="RuleEngine" parent="." unique_id=1233393235 node_paths=PackedStringArray("board") instance=ExtResource("4_cjklm")] board = NodePath("../Board2D") next_scene = "uid://cufkthb25mpxy" [node name="BackgroundMusic" parent="." unique_id=835603079 instance=ExtResource("6_x2dnf")] stream = ExtResource("7_pxo7o") - -[connection signal="skip_enabled" from="RuleEngine" to="ScreenOverlay/SokobanHUD" method="display_skip"] diff --git a/scenes/eternal_loom_sokoban/levels/sokoban_level_3a.tscn b/scenes/eternal_loom_sokoban/levels/sokoban_level_3a.tscn index 5e9fa904fe..f4d3c43760 100644 --- a/scenes/eternal_loom_sokoban/levels/sokoban_level_3a.tscn +++ b/scenes/eternal_loom_sokoban/levels/sokoban_level_3a.tscn @@ -5,7 +5,6 @@ [ext_resource type="Material" uid="uid://jpl3v3f7elq6" path="res://scenes/eternal_loom_sokoban/components/floor/tiled_mat.tres" id="4_20ol2"] [ext_resource type="Script" uid="uid://dppvw2f8yh4vu" path="res://scenes/eternal_loom_sokoban/components/system/board/board_2d.gd" id="5_x0rcl"] [ext_resource type="TileSet" uid="uid://dand23uvn70pg" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres" id="6_nr7ak"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="6_qga2c"] [ext_resource type="PackedScene" uid="uid://btpeaqx2nur3q" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn" id="7_qga2c"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="8_20ol2"] [ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="9_wwulk"] @@ -54,15 +53,9 @@ tile_set = ExtResource("6_nr7ak") tile_map_data = PackedByteArray("AAD///r/AAAAAAAABwAAAPr/AAAAAAAABwABAPr/AAAAAAAABwABAP7/AAAAAAAAAQD+//r/AAAAAAAAAQD+//v/AAAAAAAABwD+//z/AAAAAAAAAQD+//3/AAAAAAAABwD+//7/AAAAAAAABwD/////AAAAAAAABwD//wAAAAAAAAAABwABAP//AAAAAAAABwABAAAAAAAAAAAABwD///7/AAAAAAAAAQAAAPv/BgAAAAAAAQABAPv/AAAAAAAABwABAPz/AAAAAAAAAQABAP3/AAAAAAAABwD///3/AAAAAAAABgD+/wEAAAAAAAAAAQD+/wIAAAAAAAAABwD+/wMAAAAAAAAABwD+/wQAAAAAAAAABwD+/wUAAAAAAAAABwAAAAUAAAAAAAAABwABAAEAAAAAAAAABwABAAIAAAAAAAAAAQABAAMAAAAAAAAABwABAAQAAAAAAAAABwABAAUAAAAAAAAABwD+/wAAAAAAAAAABwD//wUAAAAAAAAAAQAAAAAAAAAAAAAACQAAAAQABgAAAAAAAgA=") tile_set = ExtResource("6_nr7ak") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1713440731] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=1880330019 instance=ExtResource("6_qga2c")] - [node name="RuleEngine" parent="." unique_id=865867186 node_paths=PackedStringArray("board") instance=ExtResource("7_qga2c")] board = NodePath("../Board2D") next_scene = "uid://ughhyyuc83kk" [node name="BackgroundMusic" parent="." unique_id=350956816 instance=ExtResource("8_20ol2")] stream = ExtResource("9_wwulk") - -[connection signal="skip_enabled" from="RuleEngine" to="ScreenOverlay/SokobanHUD" method="display_skip"] diff --git a/scenes/eternal_loom_sokoban/levels/sokoban_level_3b.tscn b/scenes/eternal_loom_sokoban/levels/sokoban_level_3b.tscn index a0cf9aae88..d78ee859f6 100644 --- a/scenes/eternal_loom_sokoban/levels/sokoban_level_3b.tscn +++ b/scenes/eternal_loom_sokoban/levels/sokoban_level_3b.tscn @@ -2,7 +2,6 @@ [ext_resource type="Material" uid="uid://jpl3v3f7elq6" path="res://scenes/eternal_loom_sokoban/components/floor/tiled_mat.tres" id="2_nx7po"] [ext_resource type="PackedScene" uid="uid://btpeaqx2nur3q" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn" id="4_41qil"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="4_rkq20"] [ext_resource type="Script" uid="uid://dppvw2f8yh4vu" path="res://scenes/eternal_loom_sokoban/components/system/board/board_2d.gd" id="5_5baf1"] [ext_resource type="TileSet" uid="uid://dand23uvn70pg" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres" id="6_fj6du"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="6_nx7po"] @@ -47,15 +46,9 @@ tile_set = ExtResource("6_fj6du") tile_map_data = PackedByteArray("AAD9//3/AAAAAAAABwD9//7/AAAAAAAAAQD9////AAAAAAAABwD9/wAAAAAAAAAABwD+//z/AAAAAAAABwD+//3/AAAAAAAABwD+/wIAAAAAAAAABwD///v/AAAAAAAABwD//wMAAAAAAAAABwAAAPv/AAAAAAAABwAAAP7/BgAAAAAAAwAAAAAABgAAAAAABAABAPv/AAAAAAAABwABAP7/AAAAAAAACgACAP7/BgAAAAAAAQACAAAABgAAAAAAAgADAPz/AAAAAAAABwADAP3/AAAAAAAAAQADAP7/AAAAAAAABwADAP//AAAAAAAABwADAAAAAAAAAAAABwADAAEAAAAAAAAABwADAAIAAAAAAAAAAQACAPv/AAAAAAAAAQD///z/AAAAAAAAAQADAPv/AAAAAAAABwADAAMAAAAAAAAABwD+/wMAAAAAAAAABwABAAAAAAAAAAAACQABAP3/AAAAAAAABgD//wAAAAAAAAAACAADAAQAAAAAAAAABwACAAQAAAAAAAAAAQABAAQAAAAAAAAABwAAAAQAAAAAAAAABwD//wQAAAAAAAAAAQD+/wEAAAAAAAAAAQD9/wEAAAAAAAAABwA=") tile_set = ExtResource("6_fj6du") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1506141203] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=2126103069 instance=ExtResource("4_rkq20")] - [node name="RuleEngine" parent="." unique_id=1415539640 node_paths=PackedStringArray("board") instance=ExtResource("4_41qil")] board = NodePath("../Board2D") next_scene = "uid://ydbh5jddjnaf" [node name="BackgroundMusic" parent="." unique_id=1269579040 instance=ExtResource("6_nx7po")] stream = ExtResource("7_ir0b6") - -[connection signal="skip_enabled" from="RuleEngine" to="ScreenOverlay/SokobanHUD" method="display_skip"] diff --git a/scenes/eternal_loom_sokoban/levels/sokoban_level_3c.tscn b/scenes/eternal_loom_sokoban/levels/sokoban_level_3c.tscn index c0b24cb45f..4482ce3f6a 100644 --- a/scenes/eternal_loom_sokoban/levels/sokoban_level_3c.tscn +++ b/scenes/eternal_loom_sokoban/levels/sokoban_level_3c.tscn @@ -2,7 +2,6 @@ [ext_resource type="Material" uid="uid://jpl3v3f7elq6" path="res://scenes/eternal_loom_sokoban/components/floor/tiled_mat.tres" id="2_1s00a"] [ext_resource type="PackedScene" uid="uid://btpeaqx2nur3q" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_ruleset.tscn" id="4_3v6fr"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="4_8qqqy"] [ext_resource type="Script" uid="uid://dppvw2f8yh4vu" path="res://scenes/eternal_loom_sokoban/components/system/board/board_2d.gd" id="5_m5u3b"] [ext_resource type="TileSet" uid="uid://dand23uvn70pg" path="res://scenes/eternal_loom_sokoban/components/eternal_loom_tileset.tres" id="6_1qsr1"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="6_1s00a"] @@ -48,15 +47,9 @@ tile_set = ExtResource("6_1qsr1") tile_map_data = PackedByteArray("AAD9//3/AAAAAAAABwD9//7/AAAAAAAABwD9////AAAAAAAAAQD9/wAAAAAAAAAABwD9/wEAAAAAAAAAAQD+//z/AAAAAAAABwD+//3/AAAAAAAAAQD+/wEAAAAAAAAABwD+/wIAAAAAAAAABwD///v/AAAAAAAABwD//wMAAAAAAAAAAQAAAPv/AAAAAAAAAQAAAP7/BgAAAAAAAwAAAAAABgAAAAAABAAAAAMAAAAAAAAABwABAPv/BgAAAAAABQABAP3/AAAAAAAABgABAP7/AAAAAAAACgABAAMABgAAAAAABgACAP7/BgAAAAAAAQACAAAABgAAAAAAAgACAAMAAAAAAAAAAQADAPz/AAAAAAAAAQADAP3/AAAAAAAABwADAP7/AAAAAAAABwADAP//AAAAAAAABwADAAAAAAAAAAAABwADAAEAAAAAAAAAAQADAAIAAAAAAAAABwACAPv/AAAAAAAABwD///z/AAAAAAAABwADAPv/AAAAAAAABwADAAMAAAAAAAAABwD+/wMAAAAAAAAABwABAAEAAAAAAAAACwABAAAAAAAAAAAACQAAAAQAAAAAAAAABwABAAQAAAAAAAAABwACAAQAAAAAAAAABwAAAPr/AAAAAAAABwABAPr/AAAAAAAABwACAPr/AAAAAAAABwA=") tile_set = ExtResource("6_1qsr1") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=770909382] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=1218361994 instance=ExtResource("4_8qqqy")] - [node name="RuleEngine" parent="." unique_id=933094656 node_paths=PackedStringArray("board") instance=ExtResource("4_3v6fr")] board = NodePath("../Board2D") next_scene = "uid://cufkthb25mpxy" [node name="BackgroundMusic" parent="." unique_id=393111310 instance=ExtResource("6_1s00a")] stream = ExtResource("7_om8f1") - -[connection signal="skip_enabled" from="RuleEngine" to="ScreenOverlay/SokobanHUD" method="display_skip"] diff --git a/scenes/eternal_loom_sokoban/levels/sokoban_template.tscn b/scenes/eternal_loom_sokoban/levels/sokoban_template.tscn index 0f9d333900..7bd41b2f76 100644 --- a/scenes/eternal_loom_sokoban/levels/sokoban_template.tscn +++ b/scenes/eternal_loom_sokoban/levels/sokoban_template.tscn @@ -5,7 +5,6 @@ [ext_resource type="Script" uid="uid://dppvw2f8yh4vu" path="res://scenes/eternal_loom_sokoban/components/system/board/board_2d.gd" id="3_o2mty"] [ext_resource type="TileSet" uid="uid://dkxd0jkirs8u7" path="res://scenes/eternal_loom_sokoban/components/sokoban_tileset.tres" id="4_d3j86"] [ext_resource type="PackedScene" uid="uid://b01bv815d4yfr" path="res://scenes/eternal_loom_sokoban/components/sokoban_ruleset.tscn" id="5_d3j86"] -[ext_resource type="PackedScene" uid="uid://b4d5rf6hn0x4" path="res://scenes/eternal_loom_sokoban/components/hud/sokoban_hud.tscn" id="5_fhitk"] [node name="SokobanTemplate" type="Node2D" unique_id=1673476201] @@ -47,9 +46,5 @@ tile_set = ExtResource("4_d3j86") tile_map_data = PackedByteArray("AAD7//3/AAAAAAAABAD7//7/AAAAAAAABAD7////AAAAAAAABAD7/wAAAAAAAAAABQD7/wEAAAAAAAAABAD8//3/AAAAAAAABQD8/wEAAAAAAAAABAD9//3/AAAAAAAABAD9////AAAAAAAABgD9/wEAAAAAAAAABAD+//3/AAAAAAAABAD+/wEAAAAAAAAABQD///3/AAAAAAAABAD/////AAAAAAAAAgD//wEAAAAAAAAABAAAAP3/AAAAAAAABQAAAAEAAAAAAAAABAABAP3/AAAAAAAABAABAAEAAAAAAAAABQACAP3/AAAAAAAABQACAAEAAAAAAAAABAADAP3/AAAAAAAABAADAP7/AAAAAAAABAADAP//AAAAAAAABQADAAAAAAAAAAAABAADAAEAAAAAAAAABAA=") tile_set = ExtResource("4_d3j86") -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1680355413] - -[node name="SokobanHUD" parent="ScreenOverlay" unique_id=1214866065 instance=ExtResource("5_fhitk")] - [node name="SokobanRuleset" parent="." unique_id=2024007445 node_paths=PackedStringArray("board") instance=ExtResource("5_d3j86")] board = NodePath("../Board2D") diff --git a/scenes/game_elements/characters/components/assets/girl_with_button.aseprite b/scenes/game_elements/characters/components/assets/girl_with_button.aseprite new file mode 100644 index 0000000000..b3d4464fab --- /dev/null +++ b/scenes/game_elements/characters/components/assets/girl_with_button.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69d36a940e5c1d115977d66003bfd8fbcb733ce62d42756fdbede7bafa2e4222 +size 21132 diff --git a/scenes/game_elements/characters/components/assets/girl_with_button.png b/scenes/game_elements/characters/components/assets/girl_with_button.png new file mode 100644 index 0000000000..c755177976 --- /dev/null +++ b/scenes/game_elements/characters/components/assets/girl_with_button.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9779a3610386ae7323b6dfc0896463688b8a3e627b12ee5aad910ad0244e2df2 +size 13143 diff --git a/scenes/game_elements/characters/components/assets/girl_with_button.png.import b/scenes/game_elements/characters/components/assets/girl_with_button.png.import new file mode 100644 index 0000000000..23c9336171 --- /dev/null +++ b/scenes/game_elements/characters/components/assets/girl_with_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://6jr444x3qny" +path="res://.godot/imported/girl_with_button.png-cd5c4d189c1e9d55cf2af62376c9c28b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/components/assets/girl_with_button.png" +dest_files=["res://.godot/imported/girl_with_button.png-cd5c4d189c1e9d55cf2af62376c9c28b.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/game_elements/characters/components/assets/monk.aseprite b/scenes/game_elements/characters/components/assets/monk.aseprite new file mode 100644 index 0000000000..ab837a9e6b --- /dev/null +++ b/scenes/game_elements/characters/components/assets/monk.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0678364bece05486f6b490b506d275d464ec9afe511dca9a5da28458381393f +size 21431 diff --git a/scenes/game_elements/characters/components/assets/monk_idle.png b/scenes/game_elements/characters/components/assets/monk_idle.png new file mode 100644 index 0000000000..4a2df20c93 --- /dev/null +++ b/scenes/game_elements/characters/components/assets/monk_idle.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb3b63769504a6ac4d60841d3e1a8b9bd4837db1e3174fb6e048e954bfcf7a4c +size 12817 diff --git a/scenes/game_elements/characters/components/assets/monk_idle.png.import b/scenes/game_elements/characters/components/assets/monk_idle.png.import new file mode 100644 index 0000000000..01e0c7d0c0 --- /dev/null +++ b/scenes/game_elements/characters/components/assets/monk_idle.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bn1b8ffewbl7e" +path="res://.godot/imported/monk_idle.png-1dcc78f4533d1be7bc3f99101fd2366c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/components/assets/monk_idle.png" +dest_files=["res://.godot/imported/monk_idle.png-1dcc78f4533d1be7bc3f99101fd2366c.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/game_elements/characters/components/character_randomizer.gd b/scenes/game_elements/characters/components/character_randomizer.gd index 8a8eca8d1d..c916520653 100644 --- a/scenes/game_elements/characters/components/character_randomizer.gd +++ b/scenes/game_elements/characters/components/character_randomizer.gd @@ -1,7 +1,8 @@ # SPDX-FileCopyrightText: The Threadbare Authors # SPDX-License-Identifier: MPL-2.0 @tool -extends Node2D +class_name CharacterRandomizer +extends CharacterBody2D ## @experimental ## ## Provide a single button to randomize various aspects of a character. @@ -41,6 +42,8 @@ var random_texture_nodes: Array[RandomTextureSpriteBehavior] = [] var _undoredo: Object # EditorUndoRedoManager +var _random_number_generator := RandomNumberGenerator.new() + var _previous_look_at_side: Enums.LookAtSide = Enums.LookAtSide.UNSPECIFIED @@ -49,18 +52,18 @@ var _previous_look_at_side: Enums.LookAtSide = Enums.LookAtSide.UNSPECIFIED ## Do it in a consistent way by first seeding the default random number generator ## with the [member character_seed]. func apply_character_randomizations() -> void: - seed(character_seed) + _random_number_generator.seed = character_seed if skin_recolor_nodes: var new_skin_medium_color: Color - skin_recolor_nodes[-1].set_random_skin_color() + skin_recolor_nodes[-1].set_random_skin_color(_random_number_generator) new_skin_medium_color = skin_recolor_nodes[-1].medium_color for n in skin_recolor_nodes: n.automatic_shades = true n.medium_color = new_skin_medium_color for n in random_texture_nodes: - n.randomize_texture() + n.randomize_texture(_random_number_generator) ## Set a random seed and randomize the character. @@ -128,6 +131,7 @@ func _randomize_all_sprites_progress() -> void: var random_frame := randi_range(0, frames_length) var random_progress := randf() for sprite in animated_sprites: + sprite.play("idle") sprite.set_frame_and_progress(random_frame, random_progress) diff --git a/scenes/game_elements/characters/components/character_randomizer_test.tscn b/scenes/game_elements/characters/components/character_randomizer_test.tscn index a76d3cd213..300b78f328 100644 --- a/scenes/game_elements/characters/components/character_randomizer_test.tscn +++ b/scenes/game_elements/characters/components/character_randomizer_test.tscn @@ -2,15 +2,25 @@ [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="1_ea78s"] [ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="2_2g5xe"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_p47ir"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_p47ir"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="4_qr3fq"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="5_jsubs"] -[ext_resource type="Texture2D" uid="uid://y3xp5d8timm0" path="res://scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png" id="6_bonk8"] +[ext_resource type="Texture2D" uid="uid://y3xp5d8timm0" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.png" id="6_bonk8"] [ext_resource type="SpriteFrames" uid="uid://07di3updrwh0" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_purple.tres" id="6_hfrhi"] -[ext_resource type="Texture2D" uid="uid://0t1eptqlcb8t" path="res://scenes/game_elements/characters/npcs/components/townie-body_001.png" id="7_22pcm"] +[ext_resource type="Texture2D" uid="uid://0t1eptqlcb8t" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_001.png" id="7_22pcm"] +[ext_resource type="Texture2D" uid="uid://w2tqld60v18p" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_001.png" id="7_ny4dp"] +[ext_resource type="Texture2D" uid="uid://cuwh4nnfg4t3t" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png" id="8_e0ffc"] [ext_resource type="Resource" uid="uid://n5gf3o4mmxlu" path="res://scenes/game_elements/characters/components/character_randomizer_test.dialogue" id="8_qr3fq"] -[ext_resource type="Texture2D" uid="uid://csxn66qqmfcqu" path="res://scenes/game_elements/characters/npcs/components/townie-head_004.png" id="8_tokus"] -[ext_resource type="Texture2D" uid="uid://bucvumn3fkygf" path="res://scenes/game_elements/characters/npcs/components/townie-hair_001.png" id="9_htwo5"] +[ext_resource type="Texture2D" uid="uid://csxn66qqmfcqu" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_004.png" id="8_tokus"] +[ext_resource type="Texture2D" uid="uid://bxmhj36273qdl" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png" id="9_04pia"] +[ext_resource type="Texture2D" uid="uid://bucvumn3fkygf" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png" id="9_htwo5"] +[ext_resource type="Texture2D" uid="uid://dlvcbntsncg18" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_002.png" id="11_1uba5"] +[ext_resource type="Texture2D" uid="uid://iq21xkckyvi1" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png" id="12_n5uef"] +[ext_resource type="Texture2D" uid="uid://b5o2dw3xj2uus" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_002.png" id="14_7wp2w"] +[ext_resource type="Texture2D" uid="uid://bfothmxms5oo7" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_003.png" id="15_7qyur"] +[ext_resource type="Texture2D" uid="uid://iqvjulny3uri" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png" id="17_fe8ke"] +[ext_resource type="Texture2D" uid="uid://bjmcvluico8dg" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png" id="18_ahibj"] +[ext_resource type="Script" uid="uid://cwoclmik3db2" path="res://scenes/game_logic/walk_behaviors/follow_walk_behavior.gd" id="19_e0ffc"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_22pcm"] size = Vector2(52, 50) @@ -31,7 +41,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("6_bonk8") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_n7dtb"] +[sub_resource type="SpriteFrames" id="SpriteFrames_04pia"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -52,6 +62,158 @@ animations = [{ "speed": 10.0 }] +[sub_resource type="AtlasTexture" id="AtlasTexture_covlx"] +atlas = ExtResource("7_ny4dp") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_r7g0f"] +atlas = ExtResource("7_ny4dp") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wocpn"] +atlas = ExtResource("7_ny4dp") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xcd2m"] +atlas = ExtResource("7_ny4dp") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_282bi"] +atlas = ExtResource("8_e0ffc") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4v8h1"] +atlas = ExtResource("8_e0ffc") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_rfti1"] +atlas = ExtResource("8_e0ffc") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_esail"] +atlas = ExtResource("8_e0ffc") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6pxfc"] +atlas = ExtResource("8_e0ffc") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tpolt"] +atlas = ExtResource("8_e0ffc") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_1uba5"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_covlx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_r7g0f") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_wocpn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xcd2m") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_282bi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4v8h1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_rfti1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_esail") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6pxfc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tpolt") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_s8pun"] +atlas = ExtResource("6_bonk8") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_eloka"] +atlas = ExtResource("6_bonk8") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_64pgd"] +atlas = ExtResource("6_bonk8") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8xc61"] +atlas = ExtResource("9_04pia") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2la7u"] +atlas = ExtResource("9_04pia") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bwuq8"] +atlas = ExtResource("9_04pia") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_n5uef"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_s8pun") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_eloka") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_64pgd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_eloka") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_8xc61") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2la7u") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bwuq8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8xc61") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bwuq8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2la7u") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] + [sub_resource type="AtlasTexture" id="AtlasTexture_ny4dp"] atlas = ExtResource("7_22pcm") region = Rect2(0, 0, 96, 96) @@ -68,7 +230,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("7_22pcm") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_n5uef"] +[sub_resource type="SpriteFrames" id="SpriteFrames_7wp2w"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -89,6 +251,72 @@ animations = [{ "speed": 10.0 }] +[sub_resource type="AtlasTexture" id="AtlasTexture_kbgar"] +atlas = ExtResource("11_1uba5") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_w7k6m"] +atlas = ExtResource("11_1uba5") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6o5o0"] +atlas = ExtResource("11_1uba5") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_7qyur"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_kbgar") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_w7k6m") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_6o5o0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_w7k6m") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_j5tt8"] +atlas = ExtResource("12_n5uef") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_x6g6d"] +atlas = ExtResource("12_n5uef") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_f0hoi"] +atlas = ExtResource("12_n5uef") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_fe8ke"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_j5tt8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_x6g6d") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_f0hoi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_x6g6d") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + [sub_resource type="AtlasTexture" id="AtlasTexture_7wp2w"] atlas = ExtResource("8_tokus") region = Rect2(0, 0, 96, 96) @@ -105,7 +333,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("8_tokus") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_05rux"] +[sub_resource type="SpriteFrames" id="SpriteFrames_ahibj"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -126,6 +354,154 @@ animations = [{ "speed": 10.0 }] +[sub_resource type="AtlasTexture" id="AtlasTexture_872h8"] +atlas = ExtResource("14_7wp2w") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_apej3"] +atlas = ExtResource("14_7wp2w") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lkn5k"] +atlas = ExtResource("14_7wp2w") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_r4mdc"] +atlas = ExtResource("14_7wp2w") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_05rux"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_872h8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_apej3") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_lkn5k") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_r4mdc") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_gg1dw"] +atlas = ExtResource("15_7qyur") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tu1my"] +atlas = ExtResource("15_7qyur") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8ql8n"] +atlas = ExtResource("15_7qyur") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ig0ma"] +atlas = ExtResource("15_7qyur") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_ue7og"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_gg1dw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tu1my") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_8ql8n") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ig0ma") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_6mf2i"] +atlas = ExtResource("8_tokus") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_it16u"] +atlas = ExtResource("8_tokus") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wjc0t"] +atlas = ExtResource("8_tokus") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wvpu8"] +atlas = ExtResource("8_tokus") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_aqb5i"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_6mf2i") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_it16u") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_wjc0t") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wvpu8") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_53a43"] +atlas = ExtResource("15_7qyur") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wv2ve"] +atlas = ExtResource("15_7qyur") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cmdsg"] +atlas = ExtResource("15_7qyur") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_sh2mb"] +atlas = ExtResource("15_7qyur") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_fj012"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_53a43") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wv2ve") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_cmdsg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_sh2mb") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + [sub_resource type="AtlasTexture" id="AtlasTexture_ue7og"] atlas = ExtResource("9_htwo5") region = Rect2(0, 0, 96, 96) @@ -142,7 +518,7 @@ region = Rect2(192, 0, 96, 96) atlas = ExtResource("9_htwo5") region = Rect2(96, 0, 96, 96) -[sub_resource type="SpriteFrames" id="SpriteFrames_ft3li"] +[sub_resource type="SpriteFrames" id="SpriteFrames_3lql5"] resource_local_to_scene = true animations = [{ "frames": [{ @@ -163,6 +539,154 @@ animations = [{ "speed": 10.0 }] +[sub_resource type="AtlasTexture" id="AtlasTexture_l5io8"] +atlas = ExtResource("9_htwo5") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_aau2b"] +atlas = ExtResource("9_htwo5") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_f136i"] +atlas = ExtResource("9_htwo5") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mqc7r"] +atlas = ExtResource("9_htwo5") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_ft3li"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_l5io8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_aau2b") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_f136i") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mqc7r") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_6vcs2"] +atlas = ExtResource("17_fe8ke") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wrrba"] +atlas = ExtResource("17_fe8ke") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1x45m"] +atlas = ExtResource("17_fe8ke") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hbppq"] +atlas = ExtResource("17_fe8ke") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_txqd1"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_6vcs2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wrrba") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_1x45m") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hbppq") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_gmxsa"] +atlas = ExtResource("17_fe8ke") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jom5l"] +atlas = ExtResource("17_fe8ke") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ea5su"] +atlas = ExtResource("17_fe8ke") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cl2ru"] +atlas = ExtResource("17_fe8ke") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_7xna1"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_gmxsa") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jom5l") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_ea5su") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cl2ru") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + +[sub_resource type="AtlasTexture" id="AtlasTexture_d7rc0"] +atlas = ExtResource("18_ahibj") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_73nf8"] +atlas = ExtResource("18_ahibj") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nwhgr"] +atlas = ExtResource("18_ahibj") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3x38k"] +atlas = ExtResource("18_ahibj") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="SpriteFrames" id="SpriteFrames_y1u7u"] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_d7rc0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_73nf8") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_nwhgr") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3x38k") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] + [node name="CharacterRandomizerTest" type="Node2D" unique_id=136000252] [node name="TileMapLayers" type="Node2D" parent="." unique_id=1483527644] @@ -183,12 +707,12 @@ position = Vector2(225, 152) character_seed = 138976455 [node name="InteractArea" type="Area2D" parent="OnTheGround/Townie" unique_id=713209077] -visible = false collision_layer = 32 collision_mask = 0 script = ExtResource("3_p47ir") [node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie/InteractArea" unique_id=780074207] +visible = false position = Vector2(0, -29) shape = SubResource("RectangleShape2D_22pcm") debug_color = Color(0.600391, 0.54335, 0, 0.42) @@ -207,41 +731,53 @@ autostart = true position = Vector2(415, 233) [node name="AnimatedSprite2DLegs" parent="OnTheGround/Townie2" index="1" unique_id=385222684] -sprite_frames = SubResource("SpriteFrames_n7dtb") +sprite_frames = SubResource("SpriteFrames_04pia") + +[node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs" index="0" unique_id=471097323] +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_1uba5"), SubResource("SpriteFrames_n5uef"), SubResource("SpriteFrames_04pia")]) -[node name="AnimatedSprite2DBody" parent="OnTheGround/Townie2/AnimatedSprite2DLegs" index="1" unique_id=2098127821] -instance_shader_parameters/shade_high_new = Color(0.20000307, 0.7389693, 0.9595597, 1) -instance_shader_parameters/shade_low_new = Color(3.080368e-06, 0.53896934, 0.7595597, 1) -instance_shader_parameters/shade_medium_new = Color(3.85046e-06, 0.67371166, 0.9494496, 1) -position = Vector2(0, -6) -sprite_frames = SubResource("SpriteFrames_n5uef") +[node name="AnimatedSprite2DBody" parent="OnTheGround/Townie2/AnimatedSprite2DLegs" index="2" unique_id=2098127821] +instance_shader_parameters/shade_high_new = Color(0.21403402, 0.75751436, 0.9589514, 1) +instance_shader_parameters/shade_low_new = Color(0.014034003, 0.55751437, 0.7589514, 1) +instance_shader_parameters/shade_medium_new = Color(0.017542504, 0.6968929, 0.9486893, 1) +position = Vector2(0, 0) +sprite_frames = SubResource("SpriteFrames_7wp2w") [node name="CelShadingRecolor" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="0" unique_id=1327679537] -medium_color = Color(3.85046e-06, 0.67371166, 0.9494496, 1) -high_color = Color(0.20000307, 0.7389693, 0.9595597, 1) -low_color = Color(3.080368e-06, 0.53896934, 0.7595597, 1) +medium_color = Color(0.017542504, 0.6968929, 0.9486893, 1) +high_color = Color(0.21403402, 0.75751436, 0.9589514, 1) +low_color = Color(0.014034003, 0.55751437, 0.7589514, 1) + +[node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="1" unique_id=1733667753] +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_7wp2w"), SubResource("SpriteFrames_7qyur"), SubResource("SpriteFrames_fe8ke")]) -[node name="AnimatedSprite2DHead" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="2" unique_id=421503015] -instance_shader_parameters/shade_high_new = Color(0.20000307, 0.7389693, 0.9595597, 1) -instance_shader_parameters/shade_low_new = Color(3.080368e-06, 0.53896934, 0.7595597, 1) -instance_shader_parameters/shade_medium_new = Color(3.85046e-06, 0.67371166, 0.9494496, 1) -sprite_frames = SubResource("SpriteFrames_05rux") +[node name="AnimatedSprite2DHead" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody" index="3" unique_id=421503015] +instance_shader_parameters/shade_high_new = Color(0.21403402, 0.75751436, 0.9589514, 1) +instance_shader_parameters/shade_low_new = Color(0.014034003, 0.55751437, 0.7589514, 1) +instance_shader_parameters/shade_medium_new = Color(0.017542504, 0.6968929, 0.9486893, 1) +sprite_frames = SubResource("SpriteFrames_ahibj") [node name="CelShadingRecolor" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="0" unique_id=2000765677] -medium_color = Color(3.85046e-06, 0.67371166, 0.9494496, 1) -high_color = Color(0.20000307, 0.7389693, 0.9595597, 1) -low_color = Color(3.080368e-06, 0.53896934, 0.7595597, 1) +medium_color = Color(0.017542504, 0.6968929, 0.9486893, 1) +high_color = Color(0.21403402, 0.75751436, 0.9589514, 1) +low_color = Color(0.014034003, 0.55751437, 0.7589514, 1) -[node name="AnimatedSprite2DHair" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="2" unique_id=2123781958] -sprite_frames = SubResource("SpriteFrames_ft3li") +[node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="1" unique_id=592927150] +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_ahibj"), SubResource("SpriteFrames_05rux"), SubResource("SpriteFrames_ue7og"), SubResource("SpriteFrames_aqb5i"), SubResource("SpriteFrames_fj012")]) + +[node name="AnimatedSprite2DHair" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" index="3" unique_id=2123781958] +sprite_frames = SubResource("SpriteFrames_3lql5") + +[node name="RandomTextureSpriteBehavior" parent="OnTheGround/Townie2/AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead/AnimatedSprite2DHair" index="0" unique_id=358939124] +sprite_frames = Array[SpriteFrames]([SubResource("SpriteFrames_ft3li"), SubResource("SpriteFrames_3lql5"), SubResource("SpriteFrames_txqd1"), SubResource("SpriteFrames_7xna1"), SubResource("SpriteFrames_y1u7u")]) [node name="InteractArea" type="Area2D" parent="OnTheGround/Townie2" unique_id=1760778420] -visible = false collision_layer = 32 collision_mask = 0 script = ExtResource("3_p47ir") [node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie2/InteractArea" unique_id=1656214821] +visible = false position = Vector2(0, -29) shape = SubResource("RectangleShape2D_22pcm") debug_color = Color(0.600391, 0.54335, 0, 0.42) @@ -254,26 +790,14 @@ interact_area = NodePath("../InteractArea") [node name="Townie3" parent="OnTheGround" unique_id=1154886998 instance=ExtResource("2_2g5xe")] position = Vector2(481, 101) -scale = Vector2(-1, 1) -character_seed = 132923783 -look_at_side = 1 +character_seed = 2207560013 -[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie3" unique_id=1419890767] -visible = false -collision_layer = 32 -collision_mask = 0 -script = ExtResource("3_p47ir") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie3/InteractArea" unique_id=1138240117] -position = Vector2(0, -29) -shape = SubResource("RectangleShape2D_22pcm") -debug_color = Color(0.600391, 0.54335, 0, 0.42) - -[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie3" unique_id=2073065555 node_paths=PackedStringArray("interact_area")] -script = ExtResource("4_qr3fq") -dialogue = ExtResource("8_qr3fq") -title = "townie_3" -interact_area = NodePath("../InteractArea") +[node name="FollowWalkBehavior" type="Node2D" parent="OnTheGround/Townie3" unique_id=1949852425 node_paths=PackedStringArray("target", "character")] +script = ExtResource("19_e0ffc") +target = NodePath("../../Player") +target_reached_distance = 70.0 +character = NodePath("..") +metadata/_custom_type_script = "uid://cwoclmik3db2" [node name="Townie4" parent="OnTheGround" unique_id=1799136561 instance=ExtResource("2_2g5xe")] position = Vector2(523, 130) @@ -282,12 +806,12 @@ character_seed = 1246173203 look_at_side = 1 [node name="InteractArea" type="Area2D" parent="OnTheGround/Townie4" unique_id=785629688] -visible = false collision_layer = 32 collision_mask = 0 script = ExtResource("3_p47ir") [node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie4/InteractArea" unique_id=36122957] +visible = false position = Vector2(0, -29) shape = SubResource("RectangleShape2D_22pcm") debug_color = Color(0.600391, 0.54335, 0, 0.42) @@ -314,8 +838,6 @@ position_smoothing_enabled = true [connection signal="timeout" from="OnTheGround/Townie/Timer" to="OnTheGround/Townie" method="randomize_character"] [connection signal="interaction_ended" from="OnTheGround/Townie2/InteractArea" to="OnTheGround/Townie2" method="_on_interact_area_interaction_ended"] [connection signal="interaction_started" from="OnTheGround/Townie2/InteractArea" to="OnTheGround/Townie2" method="_on_interact_area_interaction_started"] -[connection signal="interaction_ended" from="OnTheGround/Townie3/InteractArea" to="OnTheGround/Townie3" method="_on_interact_area_interaction_ended"] -[connection signal="interaction_started" from="OnTheGround/Townie3/InteractArea" to="OnTheGround/Townie3" method="_on_interact_area_interaction_started"] [connection signal="interaction_ended" from="OnTheGround/Townie4/InteractArea" to="OnTheGround/Townie4" method="_on_interact_area_interaction_ended"] [connection signal="interaction_started" from="OnTheGround/Townie4/InteractArea" to="OnTheGround/Townie4" method="_on_interact_area_interaction_started"] diff --git a/scenes/game_elements/characters/components/sprite_frames/bunny_blue.tres b/scenes/game_elements/characters/components/sprite_frames/bunny_blue.tres new file mode 100644 index 0000000000..cdf58c75fe --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/bunny_blue.tres @@ -0,0 +1,109 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://binjhdmjhcpmw"] + +[ext_resource type="Texture2D" uid="uid://c14ca1ojoyj3h" path="res://assets/first_party/wildlife/bunny/bunny_idle_blue.png" id="1_z8rvc"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_y8oyn"] +atlas = ExtResource("1_z8rvc") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_qlrsv"] +atlas = ExtResource("1_z8rvc") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_38uai"] +atlas = ExtResource("1_z8rvc") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jgb6y"] +atlas = ExtResource("1_z8rvc") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_rzj27"] +atlas = ExtResource("1_z8rvc") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_l8zg0"] +atlas = ExtResource("1_z8rvc") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wfi53"] +atlas = ExtResource("1_z8rvc") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_9vy5g"] +atlas = ExtResource("1_z8rvc") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3in8f"] +atlas = ExtResource("1_z8rvc") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_zsao1"] +atlas = ExtResource("1_z8rvc") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n5zet"] +atlas = ExtResource("1_z8rvc") +region = Rect2(1280, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_75jjk"] +atlas = ExtResource("1_z8rvc") +region = Rect2(1408, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_d8myw"] +atlas = ExtResource("1_z8rvc") +region = Rect2(1536, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2a54f"] +atlas = ExtResource("1_z8rvc") +region = Rect2(1664, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_y8oyn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_qlrsv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_38uai") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jgb6y") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_rzj27") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_l8zg0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wfi53") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_9vy5g") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3in8f") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_zsao1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n5zet") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_75jjk") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d8myw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2a54f") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/bunny_brown.tres b/scenes/game_elements/characters/components/sprite_frames/bunny_brown.tres new file mode 100644 index 0000000000..60edaa0fe1 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/bunny_brown.tres @@ -0,0 +1,109 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://bq7qvwju02mtx"] + +[ext_resource type="Texture2D" uid="uid://dvrl4btndkqhb" path="res://assets/first_party/wildlife/bunny/bunny_idle_brown.png" id="1_fwhg1"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_21a3z"] +atlas = ExtResource("1_fwhg1") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tot1b"] +atlas = ExtResource("1_fwhg1") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ckv8n"] +atlas = ExtResource("1_fwhg1") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mofny"] +atlas = ExtResource("1_fwhg1") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ovcr4"] +atlas = ExtResource("1_fwhg1") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n0bed"] +atlas = ExtResource("1_fwhg1") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ve7gn"] +atlas = ExtResource("1_fwhg1") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kgdyc"] +atlas = ExtResource("1_fwhg1") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pq8jx"] +atlas = ExtResource("1_fwhg1") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7knk3"] +atlas = ExtResource("1_fwhg1") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cyeuv"] +atlas = ExtResource("1_fwhg1") +region = Rect2(1280, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_t1fo8"] +atlas = ExtResource("1_fwhg1") +region = Rect2(1408, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2q3kc"] +atlas = ExtResource("1_fwhg1") +region = Rect2(1536, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pts2u"] +atlas = ExtResource("1_fwhg1") +region = Rect2(1664, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_21a3z") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tot1b") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ckv8n") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mofny") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ovcr4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n0bed") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ve7gn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_kgdyc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pq8jx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7knk3") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cyeuv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_t1fo8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2q3kc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pts2u") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/bunny_green.tres b/scenes/game_elements/characters/components/sprite_frames/bunny_green.tres new file mode 100644 index 0000000000..f490c3a59b --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/bunny_green.tres @@ -0,0 +1,109 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://7nt6yuuvmfs6"] + +[ext_resource type="Texture2D" uid="uid://b3fayr1mkj2aj" path="res://assets/first_party/wildlife/bunny/bunny_idle_green.png" id="1_9f0x8"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_zgw5r"] +atlas = ExtResource("1_9f0x8") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_r81t9"] +atlas = ExtResource("1_9f0x8") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ftblr"] +atlas = ExtResource("1_9f0x8") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_u9t8k"] +atlas = ExtResource("1_9f0x8") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_c0n3c"] +atlas = ExtResource("1_9f0x8") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_sfaca"] +atlas = ExtResource("1_9f0x8") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_iuijp"] +atlas = ExtResource("1_9f0x8") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_oc9df"] +atlas = ExtResource("1_9f0x8") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_o74ze"] +atlas = ExtResource("1_9f0x8") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0fkn6"] +atlas = ExtResource("1_9f0x8") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0m7d7"] +atlas = ExtResource("1_9f0x8") +region = Rect2(1280, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_u1d1h"] +atlas = ExtResource("1_9f0x8") +region = Rect2(1408, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gzqa7"] +atlas = ExtResource("1_9f0x8") +region = Rect2(1536, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_oqz2y"] +atlas = ExtResource("1_9f0x8") +region = Rect2(1664, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_zgw5r") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_r81t9") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ftblr") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_u9t8k") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_c0n3c") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_sfaca") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_iuijp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_oc9df") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_o74ze") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0fkn6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0m7d7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_u1d1h") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gzqa7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_oqz2y") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/bunny_pink.tres b/scenes/game_elements/characters/components/sprite_frames/bunny_pink.tres new file mode 100644 index 0000000000..62b4873ec9 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/bunny_pink.tres @@ -0,0 +1,109 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://dvgkthnd2qo4y"] + +[ext_resource type="Texture2D" uid="uid://crfkp2ujfru7j" path="res://assets/first_party/wildlife/bunny/bunny_idle_pink.png" id="1_9n104"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_bp9ff"] +atlas = ExtResource("1_9n104") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_a03y4"] +atlas = ExtResource("1_9n104") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_p38i6"] +atlas = ExtResource("1_9n104") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ys3lw"] +atlas = ExtResource("1_9n104") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_j74sn"] +atlas = ExtResource("1_9n104") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hfn5s"] +atlas = ExtResource("1_9n104") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ncbbq"] +atlas = ExtResource("1_9n104") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n65rq"] +atlas = ExtResource("1_9n104") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wbij3"] +atlas = ExtResource("1_9n104") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_c8ntm"] +atlas = ExtResource("1_9n104") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8n6qb"] +atlas = ExtResource("1_9n104") +region = Rect2(1280, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n1od7"] +atlas = ExtResource("1_9n104") +region = Rect2(1408, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1j560"] +atlas = ExtResource("1_9n104") +region = Rect2(1536, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vzie2"] +atlas = ExtResource("1_9n104") +region = Rect2(1664, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_bp9ff") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_a03y4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_p38i6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ys3lw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_j74sn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hfn5s") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ncbbq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n65rq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wbij3") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_c8ntm") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8n6qb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n1od7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1j560") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_vzie2") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/bunny_yellow.tres b/scenes/game_elements/characters/components/sprite_frames/bunny_yellow.tres new file mode 100644 index 0000000000..681ca61e76 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/bunny_yellow.tres @@ -0,0 +1,109 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://bsjdohkkb776w"] + +[ext_resource type="Texture2D" uid="uid://bbkxftyahyxu7" path="res://assets/first_party/wildlife/bunny/bunny_idle_yellow.png" id="1_moyiv"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_dna78"] +atlas = ExtResource("1_moyiv") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_vegwf"] +atlas = ExtResource("1_moyiv") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pygg4"] +atlas = ExtResource("1_moyiv") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_24wzy"] +atlas = ExtResource("1_moyiv") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_q0p6v"] +atlas = ExtResource("1_moyiv") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yu90l"] +atlas = ExtResource("1_moyiv") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_22fhj"] +atlas = ExtResource("1_moyiv") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1od17"] +atlas = ExtResource("1_moyiv") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5flip"] +atlas = ExtResource("1_moyiv") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lhaiy"] +atlas = ExtResource("1_moyiv") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_w1e47"] +atlas = ExtResource("1_moyiv") +region = Rect2(1280, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3t08r"] +atlas = ExtResource("1_moyiv") +region = Rect2(1408, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_98ty2"] +atlas = ExtResource("1_moyiv") +region = Rect2(1536, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n6fth"] +atlas = ExtResource("1_moyiv") +region = Rect2(1664, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_dna78") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_vegwf") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pygg4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_24wzy") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_q0p6v") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_yu90l") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_22fhj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1od17") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_5flip") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_lhaiy") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_w1e47") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3t08r") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_98ty2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n6fth") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/capycorn_dark_brown.tres b/scenes/game_elements/characters/components/sprite_frames/capycorn_dark_brown.tres new file mode 100644 index 0000000000..557e947c3a --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/capycorn_dark_brown.tres @@ -0,0 +1,88 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://c1pp0jsgmp0vn"] + +[ext_resource type="Texture2D" uid="uid://cjgswqqvvybn3" path="res://assets/first_party/wildlife/capycorn/capycorn_idle_dark_brown.png" id="1_gn50i"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_kx8w6"] +atlas = ExtResource("1_gn50i") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_c3x6h"] +atlas = ExtResource("1_gn50i") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_49ysk"] +atlas = ExtResource("1_gn50i") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_10t51"] +atlas = ExtResource("1_gn50i") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_uv4mp"] +atlas = ExtResource("1_gn50i") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_k9u74"] +atlas = ExtResource("1_gn50i") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0e2gi"] +atlas = ExtResource("1_gn50i") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wty0o"] +atlas = ExtResource("1_gn50i") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_qwxh7"] +atlas = ExtResource("1_gn50i") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_u4tac"] +atlas = ExtResource("1_gn50i") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ia2pu"] +atlas = ExtResource("1_gn50i") +region = Rect2(1280, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_kx8w6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_c3x6h") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_49ysk") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_10t51") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_uv4mp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_k9u74") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0e2gi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wty0o") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_qwxh7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_u4tac") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ia2pu") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/capycorn_gray.tres b/scenes/game_elements/characters/components/sprite_frames/capycorn_gray.tres new file mode 100644 index 0000000000..a95c6184d0 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/capycorn_gray.tres @@ -0,0 +1,88 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://2vkjn34vfqqd"] + +[ext_resource type="Texture2D" uid="uid://ernmjbyreroa" path="res://assets/first_party/wildlife/capycorn/capycorn_idle_gray.png" id="1_5voeo"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_llv11"] +atlas = ExtResource("1_5voeo") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kkv1r"] +atlas = ExtResource("1_5voeo") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dkug2"] +atlas = ExtResource("1_5voeo") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7n6yq"] +atlas = ExtResource("1_5voeo") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4t3pb"] +atlas = ExtResource("1_5voeo") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lgnhb"] +atlas = ExtResource("1_5voeo") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_twx6x"] +atlas = ExtResource("1_5voeo") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5r9ow"] +atlas = ExtResource("1_5voeo") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lb9n2"] +atlas = ExtResource("1_5voeo") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xw1kx"] +atlas = ExtResource("1_5voeo") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cdd3n"] +atlas = ExtResource("1_5voeo") +region = Rect2(1280, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_llv11") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_kkv1r") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_dkug2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7n6yq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4t3pb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_lgnhb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_twx6x") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_5r9ow") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_lb9n2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xw1kx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cdd3n") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/capycorn_light_brown.tres b/scenes/game_elements/characters/components/sprite_frames/capycorn_light_brown.tres new file mode 100644 index 0000000000..1c71d1bb17 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/capycorn_light_brown.tres @@ -0,0 +1,88 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://d0sqoy5x0tfum"] + +[ext_resource type="Texture2D" uid="uid://qsnmu14qimst" path="res://assets/first_party/wildlife/capycorn/capycorn_idle_light_brown.png" id="1_h7os1"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_bpov3"] +atlas = ExtResource("1_h7os1") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_i4py4"] +atlas = ExtResource("1_h7os1") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n6n9x"] +atlas = ExtResource("1_h7os1") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0kibr"] +atlas = ExtResource("1_h7os1") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pfisu"] +atlas = ExtResource("1_h7os1") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5uyvp"] +atlas = ExtResource("1_h7os1") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_9o1ig"] +atlas = ExtResource("1_h7os1") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yq6jt"] +atlas = ExtResource("1_h7os1") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_le9cb"] +atlas = ExtResource("1_h7os1") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_uuy0q"] +atlas = ExtResource("1_h7os1") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mjh5n"] +atlas = ExtResource("1_h7os1") +region = Rect2(1280, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_bpov3") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_i4py4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n6n9x") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0kibr") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pfisu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_5uyvp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_9o1ig") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_yq6jt") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_le9cb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_uuy0q") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mjh5n") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/capycorn_purple.tres b/scenes/game_elements/characters/components/sprite_frames/capycorn_purple.tres new file mode 100644 index 0000000000..85d150feb6 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/capycorn_purple.tres @@ -0,0 +1,88 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://we3g65bpiba4"] + +[ext_resource type="Texture2D" uid="uid://b67woxixpgs6p" path="res://assets/first_party/wildlife/capycorn/capycorn_idle_purple.png" id="1_b4bq7"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_mg7fb"] +atlas = ExtResource("1_b4bq7") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hsjwm"] +atlas = ExtResource("1_b4bq7") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jy1h0"] +atlas = ExtResource("1_b4bq7") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hmcwl"] +atlas = ExtResource("1_b4bq7") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wzibg"] +atlas = ExtResource("1_b4bq7") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e9qzl"] +atlas = ExtResource("1_b4bq7") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_63gun"] +atlas = ExtResource("1_b4bq7") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tpwp8"] +atlas = ExtResource("1_b4bq7") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_d77l0"] +atlas = ExtResource("1_b4bq7") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3w5bz"] +atlas = ExtResource("1_b4bq7") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_m61q8"] +atlas = ExtResource("1_b4bq7") +region = Rect2(1280, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_mg7fb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hsjwm") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jy1h0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hmcwl") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wzibg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_e9qzl") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_63gun") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tpwp8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d77l0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3w5bz") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_m61q8") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/capycorn_yellow.tres b/scenes/game_elements/characters/components/sprite_frames/capycorn_yellow.tres new file mode 100644 index 0000000000..614c8218b5 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/capycorn_yellow.tres @@ -0,0 +1,88 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://cfsn4k0oof8q6"] + +[ext_resource type="Texture2D" uid="uid://dvkq4o3puliy8" path="res://assets/first_party/wildlife/capycorn/capycorn_idle_yellow.png" id="1_nbsbe"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_2i928"] +atlas = ExtResource("1_nbsbe") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bc01o"] +atlas = ExtResource("1_nbsbe") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fj3vo"] +atlas = ExtResource("1_nbsbe") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_rpyz5"] +atlas = ExtResource("1_nbsbe") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fxjnu"] +atlas = ExtResource("1_nbsbe") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_89yd9"] +atlas = ExtResource("1_nbsbe") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ee98n"] +atlas = ExtResource("1_nbsbe") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cegvg"] +atlas = ExtResource("1_nbsbe") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_amq1a"] +atlas = ExtResource("1_nbsbe") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cxt28"] +atlas = ExtResource("1_nbsbe") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_s6ttp"] +atlas = ExtResource("1_nbsbe") +region = Rect2(1280, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_2i928") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bc01o") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fj3vo") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_rpyz5") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fxjnu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_89yd9") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ee98n") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cegvg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_amq1a") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cxt28") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_s6ttp") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/girl_with_button.tres b/scenes/game_elements/characters/components/sprite_frames/girl_with_button.tres new file mode 100644 index 0000000000..c1f5b1e375 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/girl_with_button.tres @@ -0,0 +1,88 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://dr08c1mmcybvn"] + +[ext_resource type="Texture2D" uid="uid://6jr444x3qny" path="res://scenes/game_elements/characters/components/assets/girl_with_button.png" id="1_44xqe"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_bpxq8"] +atlas = ExtResource("1_44xqe") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tv1as"] +atlas = ExtResource("1_44xqe") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cqmel"] +atlas = ExtResource("1_44xqe") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lne80"] +atlas = ExtResource("1_44xqe") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7iayc"] +atlas = ExtResource("1_44xqe") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tpqbi"] +atlas = ExtResource("1_44xqe") +region = Rect2(960, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2p3ni"] +atlas = ExtResource("1_44xqe") +region = Rect2(1152, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_d4umw"] +atlas = ExtResource("1_44xqe") +region = Rect2(1344, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tu6nv"] +atlas = ExtResource("1_44xqe") +region = Rect2(1536, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mnct8"] +atlas = ExtResource("1_44xqe") +region = Rect2(1728, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e3pjo"] +atlas = ExtResource("1_44xqe") +region = Rect2(1920, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_bpxq8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tv1as") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cqmel") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_lne80") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7iayc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tpqbi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2p3ni") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d4umw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tu6nv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mnct8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_e3pjo") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/monk.tres b/scenes/game_elements/characters/components/sprite_frames/monk.tres new file mode 100644 index 0000000000..ee5e748d3d --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/monk.tres @@ -0,0 +1,95 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://bfkd5s4fn0uw0"] + +[ext_resource type="Texture2D" uid="uid://bn1b8ffewbl7e" path="res://scenes/game_elements/characters/components/assets/monk_idle.png" id="1_fpl1x"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_l8jnl"] +atlas = ExtResource("1_fpl1x") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1lm22"] +atlas = ExtResource("1_fpl1x") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jho1a"] +atlas = ExtResource("1_fpl1x") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cjjei"] +atlas = ExtResource("1_fpl1x") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jir3u"] +atlas = ExtResource("1_fpl1x") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kro8w"] +atlas = ExtResource("1_fpl1x") +region = Rect2(960, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_x0ntn"] +atlas = ExtResource("1_fpl1x") +region = Rect2(1152, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1dgnp"] +atlas = ExtResource("1_fpl1x") +region = Rect2(1344, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hbuqo"] +atlas = ExtResource("1_fpl1x") +region = Rect2(1536, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e8h0p"] +atlas = ExtResource("1_fpl1x") +region = Rect2(1728, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nyd0t"] +atlas = ExtResource("1_fpl1x") +region = Rect2(1920, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fac3t"] +atlas = ExtResource("1_fpl1x") +region = Rect2(2112, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_l8jnl") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1lm22") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jho1a") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cjjei") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jir3u") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_kro8w") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_x0ntn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1dgnp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hbuqo") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_e8h0p") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_nyd0t") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fac3t") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/sheep.tres b/scenes/game_elements/characters/components/sprite_frames/sheep.tres new file mode 100644 index 0000000000..1837944edc --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/sheep.tres @@ -0,0 +1,214 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://b0ba41utstkyk"] + +[ext_resource type="Texture2D" uid="uid://cgjgqji5js05i" path="res://assets/first_party/wildlife/sheep/sheep_idle.png" id="1_5aro1"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_9t40y"] +atlas = ExtResource("1_5aro1") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lgfpj"] +atlas = ExtResource("1_5aro1") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ijnzv"] +atlas = ExtResource("1_5aro1") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4fz5s"] +atlas = ExtResource("1_5aro1") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_u6rfp"] +atlas = ExtResource("1_5aro1") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2mm10"] +atlas = ExtResource("1_5aro1") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_zc8av"] +atlas = ExtResource("1_5aro1") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jc38o"] +atlas = ExtResource("1_5aro1") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wycuu"] +atlas = ExtResource("1_5aro1") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_i6u1c"] +atlas = ExtResource("1_5aro1") +region = Rect2(1152, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4g1zd"] +atlas = ExtResource("1_5aro1") +region = Rect2(1280, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lnm1s"] +atlas = ExtResource("1_5aro1") +region = Rect2(1408, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_948va"] +atlas = ExtResource("1_5aro1") +region = Rect2(1536, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gorm7"] +atlas = ExtResource("1_5aro1") +region = Rect2(1664, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4sdip"] +atlas = ExtResource("1_5aro1") +region = Rect2(1792, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gaoeh"] +atlas = ExtResource("1_5aro1") +region = Rect2(1920, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_t7utr"] +atlas = ExtResource("1_5aro1") +region = Rect2(2048, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ypxkd"] +atlas = ExtResource("1_5aro1") +region = Rect2(2176, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_azefx"] +atlas = ExtResource("1_5aro1") +region = Rect2(2304, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_u9tma"] +atlas = ExtResource("1_5aro1") +region = Rect2(2432, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1chvq"] +atlas = ExtResource("1_5aro1") +region = Rect2(2560, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_qe7km"] +atlas = ExtResource("1_5aro1") +region = Rect2(2688, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_z1kk9"] +atlas = ExtResource("1_5aro1") +region = Rect2(2816, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ydz55"] +atlas = ExtResource("1_5aro1") +region = Rect2(2944, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_safyp"] +atlas = ExtResource("1_5aro1") +region = Rect2(3072, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2euad"] +atlas = ExtResource("1_5aro1") +region = Rect2(3200, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7qm4z"] +atlas = ExtResource("1_5aro1") +region = Rect2(3328, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_r36cv"] +atlas = ExtResource("1_5aro1") +region = Rect2(3456, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dikix"] +atlas = ExtResource("1_5aro1") +region = Rect2(3584, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_9t40y") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_lgfpj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ijnzv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4fz5s") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_u6rfp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2mm10") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_zc8av") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jc38o") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wycuu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_i6u1c") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4g1zd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_lnm1s") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_948va") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gorm7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4sdip") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gaoeh") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_t7utr") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ypxkd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_azefx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_u9tma") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1chvq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_qe7km") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_z1kk9") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ydz55") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_safyp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2euad") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7qm4z") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_r36cv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_dikix") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-body_001.tres b/scenes/game_elements/characters/components/sprite_frames/townie-body_001.tres new file mode 100644 index 0000000000..dd89619a86 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-body_001.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://tc0nuhppfl8p"] + +[ext_resource type="Texture2D" uid="uid://0t1eptqlcb8t" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_001.png" id="1_ijnqx"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_beu7u"] +atlas = ExtResource("1_ijnqx") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_m2wva"] +atlas = ExtResource("1_ijnqx") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_u5ew7"] +atlas = ExtResource("1_ijnqx") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1in01"] +atlas = ExtResource("1_ijnqx") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_beu7u") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_m2wva") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_u5ew7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1in01") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-body_002.tres b/scenes/game_elements/characters/components/sprite_frames/townie-body_002.tres new file mode 100644 index 0000000000..51a4f83937 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-body_002.tres @@ -0,0 +1,36 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://u85wwi2wot2r"] + +[ext_resource type="Texture2D" uid="uid://dlvcbntsncg18" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_002.png" id="1_kbgar"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_kbgar"] +atlas = ExtResource("1_kbgar") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_w7k6m"] +atlas = ExtResource("1_kbgar") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6o5o0"] +atlas = ExtResource("1_kbgar") +region = Rect2(192, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_kbgar") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_w7k6m") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_6o5o0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_w7k6m") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-body_003.dx_-4.dy_-16.tres b/scenes/game_elements/characters/components/sprite_frames/townie-body_003.dx_-4.dy_-16.tres new file mode 100644 index 0000000000..3ce5f48258 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-body_003.dx_-4.dy_-16.tres @@ -0,0 +1,36 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://dll1wbldwfgbt"] + +[ext_resource type="Texture2D" uid="uid://iq21xkckyvi1" path="res://scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png" id="1_j5tt8"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_j5tt8"] +atlas = ExtResource("1_j5tt8") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_x6g6d"] +atlas = ExtResource("1_j5tt8") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_f0hoi"] +atlas = ExtResource("1_j5tt8") +region = Rect2(192, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_j5tt8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_x6g6d") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_f0hoi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_x6g6d") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-hair_001.tres b/scenes/game_elements/characters/components/sprite_frames/townie-hair_001.tres new file mode 100644 index 0000000000..38844a36b1 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-hair_001.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://x3oxp35ukm62"] + +[ext_resource type="Texture2D" uid="uid://bucvumn3fkygf" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png" id="1_2lsge"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_l5io8"] +atlas = ExtResource("1_2lsge") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_aau2b"] +atlas = ExtResource("1_2lsge") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_f136i"] +atlas = ExtResource("1_2lsge") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mqc7r"] +atlas = ExtResource("1_2lsge") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_l5io8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_aau2b") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_f136i") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mqc7r") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-hair_002.tres b/scenes/game_elements/characters/components/sprite_frames/townie-hair_002.tres new file mode 100644 index 0000000000..7850c0bea2 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-hair_002.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://c43yaqne7a2kh"] + +[ext_resource type="Texture2D" uid="uid://b4y4gg7xukeeg" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png" id="1_4yypb"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_17egh"] +atlas = ExtResource("1_4yypb") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kuuqr"] +atlas = ExtResource("1_4yypb") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_g7sa3"] +atlas = ExtResource("1_4yypb") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_klm8j"] +atlas = ExtResource("1_4yypb") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_17egh") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_kuuqr") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_g7sa3") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_klm8j") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-hair_003.tres b/scenes/game_elements/characters/components/sprite_frames/townie-hair_003.tres new file mode 100644 index 0000000000..ea6f925c62 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-hair_003.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://dh1kr2fwfwlxq"] + +[ext_resource type="Texture2D" uid="uid://iqvjulny3uri" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png" id="1_afqk5"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_6vcs2"] +atlas = ExtResource("1_afqk5") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wrrba"] +atlas = ExtResource("1_afqk5") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1x45m"] +atlas = ExtResource("1_afqk5") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hbppq"] +atlas = ExtResource("1_afqk5") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_6vcs2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wrrba") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_1x45m") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hbppq") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-hair_004.tres b/scenes/game_elements/characters/components/sprite_frames/townie-hair_004.tres new file mode 100644 index 0000000000..0150884e72 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-hair_004.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://285s7e1vheno"] + +[ext_resource type="Texture2D" uid="uid://iqvjulny3uri" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png" id="1_jom5l"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_gmxsa"] +atlas = ExtResource("1_jom5l") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jom5l"] +atlas = ExtResource("1_jom5l") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ea5su"] +atlas = ExtResource("1_jom5l") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cl2ru"] +atlas = ExtResource("1_jom5l") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_gmxsa") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jom5l") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_ea5su") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cl2ru") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-hair_005.tres b/scenes/game_elements/characters/components/sprite_frames/townie-hair_005.tres new file mode 100644 index 0000000000..a8a46365cc --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-hair_005.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://dnfyg3i87cp17"] + +[ext_resource type="Texture2D" uid="uid://bjmcvluico8dg" path="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png" id="1_d2x1o"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_d7rc0"] +atlas = ExtResource("1_d2x1o") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_73nf8"] +atlas = ExtResource("1_d2x1o") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nwhgr"] +atlas = ExtResource("1_d2x1o") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3x38k"] +atlas = ExtResource("1_d2x1o") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_d7rc0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_73nf8") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_nwhgr") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3x38k") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-head_001.tres b/scenes/game_elements/characters/components/sprite_frames/townie-head_001.tres new file mode 100644 index 0000000000..eeb0059318 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-head_001.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://crshpjwcenpa5"] + +[ext_resource type="Texture2D" uid="uid://dktchu38pxnxl" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_001.png" id="1_8swe7"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_8swe7"] +atlas = ExtResource("1_8swe7") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_l3irc"] +atlas = ExtResource("1_8swe7") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_eereg"] +atlas = ExtResource("1_8swe7") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_qc4c2"] +atlas = ExtResource("1_8swe7") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_8swe7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_l3irc") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_eereg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_qc4c2") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-head_002.tres b/scenes/game_elements/characters/components/sprite_frames/townie-head_002.tres new file mode 100644 index 0000000000..b289669729 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-head_002.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://cyy8mv2nshtaq"] + +[ext_resource type="Texture2D" uid="uid://b5o2dw3xj2uus" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_002.png" id="1_ckoar"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_872h8"] +atlas = ExtResource("1_ckoar") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_apej3"] +atlas = ExtResource("1_ckoar") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lkn5k"] +atlas = ExtResource("1_ckoar") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_r4mdc"] +atlas = ExtResource("1_ckoar") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_872h8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_apej3") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_lkn5k") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_r4mdc") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-head_003.tres b/scenes/game_elements/characters/components/sprite_frames/townie-head_003.tres new file mode 100644 index 0000000000..6243c926d9 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-head_003.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://c03umtasls62d"] + +[ext_resource type="Texture2D" uid="uid://bfothmxms5oo7" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_003.png" id="1_gg1dw"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_gg1dw"] +atlas = ExtResource("1_gg1dw") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tu1my"] +atlas = ExtResource("1_gg1dw") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8ql8n"] +atlas = ExtResource("1_gg1dw") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ig0ma"] +atlas = ExtResource("1_gg1dw") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_gg1dw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tu1my") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_8ql8n") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ig0ma") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-head_004.tres b/scenes/game_elements/characters/components/sprite_frames/townie-head_004.tres new file mode 100644 index 0000000000..87cdfb03ed --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-head_004.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://dl7xeteu0n2ia"] + +[ext_resource type="Texture2D" uid="uid://csxn66qqmfcqu" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_004.png" id="1_mpw3c"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_6mf2i"] +atlas = ExtResource("1_mpw3c") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_it16u"] +atlas = ExtResource("1_mpw3c") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wjc0t"] +atlas = ExtResource("1_mpw3c") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wvpu8"] +atlas = ExtResource("1_mpw3c") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_6mf2i") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_it16u") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_wjc0t") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wvpu8") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-head_005.tres b/scenes/game_elements/characters/components/sprite_frames/townie-head_005.tres new file mode 100644 index 0000000000..43cfac498f --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-head_005.tres @@ -0,0 +1,40 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://myvflc68qwmu"] + +[ext_resource type="Texture2D" uid="uid://bfothmxms5oo7" path="res://scenes/game_elements/characters/npcs/components/townie-idle-head_003.png" id="1_cmdsg"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_53a43"] +atlas = ExtResource("1_cmdsg") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wv2ve"] +atlas = ExtResource("1_cmdsg") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cmdsg"] +atlas = ExtResource("1_cmdsg") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_sh2mb"] +atlas = ExtResource("1_cmdsg") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_53a43") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wv2ve") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_cmdsg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_sh2mb") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-legs_001.tres b/scenes/game_elements/characters/components/sprite_frames/townie-legs_001.tres new file mode 100644 index 0000000000..00edda526a --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-legs_001.tres @@ -0,0 +1,88 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://bygxgwwtt1j6h"] + +[ext_resource type="Texture2D" uid="uid://w2tqld60v18p" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_001.png" id="1_covlx"] +[ext_resource type="Texture2D" uid="uid://cuwh4nnfg4t3t" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png" id="2_r7g0f"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_covlx"] +atlas = ExtResource("1_covlx") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_r7g0f"] +atlas = ExtResource("1_covlx") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wocpn"] +atlas = ExtResource("1_covlx") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xcd2m"] +atlas = ExtResource("1_covlx") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_282bi"] +atlas = ExtResource("2_r7g0f") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4v8h1"] +atlas = ExtResource("2_r7g0f") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_rfti1"] +atlas = ExtResource("2_r7g0f") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_esail"] +atlas = ExtResource("2_r7g0f") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6pxfc"] +atlas = ExtResource("2_r7g0f") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_tpolt"] +atlas = ExtResource("2_r7g0f") +region = Rect2(96, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_covlx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_r7g0f") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_wocpn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xcd2m") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_282bi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4v8h1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_rfti1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_esail") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6pxfc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_tpolt") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-legs_002.dy_-6.tres b/scenes/game_elements/characters/components/sprite_frames/townie-legs_002.dy_-6.tres new file mode 100644 index 0000000000..22f4019469 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-legs_002.dy_-6.tres @@ -0,0 +1,72 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://ubitgryup0jx"] + +[ext_resource type="Texture2D" uid="uid://y3xp5d8timm0" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.png" id="1_s8pun"] +[ext_resource type="Texture2D" uid="uid://bxmhj36273qdl" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png" id="2_eloka"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_s8pun"] +atlas = ExtResource("1_s8pun") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_eloka"] +atlas = ExtResource("1_s8pun") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_64pgd"] +atlas = ExtResource("1_s8pun") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8xc61"] +atlas = ExtResource("2_eloka") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2la7u"] +atlas = ExtResource("2_eloka") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_bwuq8"] +atlas = ExtResource("2_eloka") +region = Rect2(192, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_s8pun") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_eloka") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_64pgd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_eloka") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_8xc61") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2la7u") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bwuq8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8xc61") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_bwuq8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2la7u") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/components/sprite_frames/townie-legs_003.dy_-12.tres b/scenes/game_elements/characters/components/sprite_frames/townie-legs_003.dy_-12.tres new file mode 100644 index 0000000000..46c48dba06 --- /dev/null +++ b/scenes/game_elements/characters/components/sprite_frames/townie-legs_003.dy_-12.tres @@ -0,0 +1,72 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://do4waj3mgr6vw"] + +[ext_resource type="Texture2D" uid="uid://daymgmvarx2ew" path="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_003.dy_-12.png" id="1_tynsv"] +[ext_resource type="Texture2D" uid="uid://47367qxj6u04" path="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png" id="2_tynsv"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_tynsv"] +atlas = ExtResource("1_tynsv") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_mt4vo"] +atlas = ExtResource("1_tynsv") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6rb10"] +atlas = ExtResource("1_tynsv") +region = Rect2(192, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_5ek1g"] +atlas = ExtResource("2_tynsv") +region = Rect2(0, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_d3tqp"] +atlas = ExtResource("2_tynsv") +region = Rect2(96, 0, 96, 96) + +[sub_resource type="AtlasTexture" id="AtlasTexture_w6nvb"] +atlas = ExtResource("2_tynsv") +region = Rect2(192, 0, 96, 96) + +[resource] +resource_local_to_scene = true +animations = [{ +"frames": [{ +"duration": 10.0, +"texture": SubResource("AtlasTexture_tynsv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mt4vo") +}, { +"duration": 8.0, +"texture": SubResource("AtlasTexture_6rb10") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_mt4vo") +}], +"loop": true, +"name": &"idle", +"speed": 10.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_5ek1g") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d3tqp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_w6nvb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_5ek1g") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_w6nvb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d3tqp") +}], +"loop": true, +"name": &"walk", +"speed": 10.0 +}] diff --git a/scenes/game_elements/characters/enemies/guard/components/guard_sprite_frames.tres b/scenes/game_elements/characters/enemies/guard/components/guard_sprite_frames.tres deleted file mode 100644 index ac6eeecef6..0000000000 --- a/scenes/game_elements/characters/enemies/guard/components/guard_sprite_frames.tres +++ /dev/null @@ -1,133 +0,0 @@ -[gd_resource type="SpriteFrames" format=3 uid="uid://c4kqsgl2pcofo"] - -[ext_resource type="Texture2D" uid="uid://3ee7plbgf8tg" path="res://assets/third_party/tiny-swords/Factions/Goblins/Troops/Torch/Blue/Torch_Blue.png" id="1_he21e"] - -[sub_resource type="AtlasTexture" id="AtlasTexture_g173s"] -atlas = ExtResource("1_he21e") -region = Rect2(384, 768, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_pnkgp"] -atlas = ExtResource("1_he21e") -region = Rect2(576, 768, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_iqgov"] -atlas = ExtResource("1_he21e") -region = Rect2(768, 768, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_vnsq3"] -atlas = ExtResource("1_he21e") -region = Rect2(0, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_m6h06"] -atlas = ExtResource("1_he21e") -region = Rect2(192, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_x2hsm"] -atlas = ExtResource("1_he21e") -region = Rect2(384, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_frfu0"] -atlas = ExtResource("1_he21e") -region = Rect2(576, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_d2jm8"] -atlas = ExtResource("1_he21e") -region = Rect2(768, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_46hcm"] -atlas = ExtResource("1_he21e") -region = Rect2(960, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_jgsr2"] -atlas = ExtResource("1_he21e") -region = Rect2(1152, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_elbu8"] -atlas = ExtResource("1_he21e") -region = Rect2(0, 192, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_0hcfu"] -atlas = ExtResource("1_he21e") -region = Rect2(192, 192, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_0hsr3"] -atlas = ExtResource("1_he21e") -region = Rect2(384, 192, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_bibtp"] -atlas = ExtResource("1_he21e") -region = Rect2(576, 192, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_ut4jx"] -atlas = ExtResource("1_he21e") -region = Rect2(768, 192, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_5251y"] -atlas = ExtResource("1_he21e") -region = Rect2(960, 192, 192, 192) - -[resource] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_g173s") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_pnkgp") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_iqgov") -}], -"loop": true, -"name": &"alerted", -"speed": 10.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_vnsq3") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_m6h06") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_x2hsm") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_frfu0") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_d2jm8") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_46hcm") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_jgsr2") -}], -"loop": true, -"name": &"idle", -"speed": 10.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_elbu8") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_0hcfu") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_0hsr3") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_bibtp") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_ut4jx") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_5251y") -}], -"loop": true, -"name": &"walk", -"speed": 10.0 -}] diff --git a/scenes/game_elements/characters/enemies/mothsache/Mothsache_test_scene.tscn b/scenes/game_elements/characters/enemies/mothsache/Mothsache_test_scene.tscn index 720f9d9476..11c70d6930 100644 --- a/scenes/game_elements/characters/enemies/mothsache/Mothsache_test_scene.tscn +++ b/scenes/game_elements/characters/enemies/mothsache/Mothsache_test_scene.tscn @@ -10,7 +10,7 @@ [ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="8_y728v"] [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="9_gwpnv"] [ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="10_f63i0"] -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="11_3hf7k"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="11_3hf7k"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="12_7utab"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="13_om8go"] [ext_resource type="PackedScene" uid="uid://dy8ohrl7j24qy" path="res://scenes/game_elements/characters/enemies/mothsache/Mothsache.tscn" id="19_bigvs"] @@ -136,7 +136,6 @@ shape = SubResource("RectangleShape2D_l72a8") [node name="Player" parent="OnTheGround" unique_id=278993482 instance=ExtResource("12_7utab")] position = Vector2(610, 601) player_name = "StoryWeaver" -mode = 1 sprite_frames = ExtResource("13_om8go") [node name="Door Enter" parent="OnTheGround" unique_id=229533767 instance=ExtResource("10_f63i0")] diff --git a/scenes/game_elements/characters/enemies/mothsache/mothsache.gd b/scenes/game_elements/characters/enemies/mothsache/mothsache.gd index 565e3d9919..5016a9917b 100644 --- a/scenes/game_elements/characters/enemies/mothsache/mothsache.gd +++ b/scenes/game_elements/characters/enemies/mothsache/mothsache.gd @@ -339,7 +339,7 @@ func _on_attack_radius_body_entered(body: Node2D) -> void: if body.has_method("defeat"): var player: Node2D = body - player.defeat(true) + player.defeat() ## Called when the attack animation finishes. diff --git a/scenes/game_elements/characters/npcs/cat/cat.tscn b/scenes/game_elements/characters/npcs/cat/cat.tscn index eb1293e99d..7cf66c92b0 100644 --- a/scenes/game_elements/characters/npcs/cat/cat.tscn +++ b/scenes/game_elements/characters/npcs/cat/cat.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="2_t04tf"] [ext_resource type="SpriteFrames" uid="uid://caou2u7vffhei" path="res://scenes/game_elements/characters/npcs/cat/components/cat.tres" id="3_qosq0"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="4_8kxh7"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="4_8kxh7"] [ext_resource type="Script" uid="uid://djeshbrs3vwnb" path="res://scenes/game_elements/characters/npcs/cat/components/pet_interaction.gd" id="4_t04tf"] [ext_resource type="AudioStream" uid="uid://di2b2rgca1udv" path="res://scenes/game_elements/characters/npcs/cat/components/412017__skymary__cat-meow-short.wav" id="5_t04tf"] @@ -46,6 +46,7 @@ action = "Pet the cat" metadata/_custom_type_script = "uid://du8wfijr35r35" [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=1720455095] +visible = false position = Vector2(5, -28) shape = SubResource("RectangleShape2D_t04tf") debug_color = Color(0.6290859, 0.52632225, 0.15803415, 0.41960785) diff --git a/scenes/game_elements/characters/npcs/components/townie-body_001.png b/scenes/game_elements/characters/npcs/components/townie-idle-body_001.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-body_001.png rename to scenes/game_elements/characters/npcs/components/townie-idle-body_001.png diff --git a/scenes/game_elements/characters/npcs/components/townie-body_001.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-body_001.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-body_001.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-body_001.png.import index 350a9b5c12..13674f6deb 100644 --- a/scenes/game_elements/characters/npcs/components/townie-body_001.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-body_001.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://0t1eptqlcb8t" -path="res://.godot/imported/townie-body_001.png-6d35c19fc3c13c2ee878a575e835679f.ctex" +path="res://.godot/imported/townie-idle-body_001.png-bdb85017fadf78eaa3993098461b5370.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-body_001.png" -dest_files=["res://.godot/imported/townie-body_001.png-6d35c19fc3c13c2ee878a575e835679f.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-body_001.png" +dest_files=["res://.godot/imported/townie-idle-body_001.png-bdb85017fadf78eaa3993098461b5370.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png b/scenes/game_elements/characters/npcs/components/townie-idle-body_002.dy_-12.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png rename to scenes/game_elements/characters/npcs/components/townie-idle-body_002.dy_-12.png diff --git a/scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-body_002.dy_-12.png.import similarity index 76% rename from scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-body_002.dy_-12.png.import index d7e2989d63..58c863c0f5 100644 --- a/scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-body_002.dy_-12.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ccmsckg3l3iay" -path="res://.godot/imported/townie-body_002.dy_-12.png-d34bc9c1d9cf388e514fefe0c1536492.ctex" +path="res://.godot/imported/townie-idle-body_002.dy_-12.png-746c22de6087e1097be7f778260db400.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-body_002.dy_-12.png" -dest_files=["res://.godot/imported/townie-body_002.dy_-12.png-d34bc9c1d9cf388e514fefe0c1536492.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-body_002.dy_-12.png" +dest_files=["res://.godot/imported/townie-idle-body_002.dy_-12.png-746c22de6087e1097be7f778260db400.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-body_002.png b/scenes/game_elements/characters/npcs/components/townie-idle-body_002.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-body_002.png rename to scenes/game_elements/characters/npcs/components/townie-idle-body_002.png diff --git a/scenes/game_elements/characters/npcs/components/townie-body_002.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-body_002.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-body_002.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-body_002.png.import index 9664543a66..696c426916 100644 --- a/scenes/game_elements/characters/npcs/components/townie-body_002.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-body_002.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dlvcbntsncg18" -path="res://.godot/imported/townie-body_002.png-5e739254d6cd3574ade20782a3bac17c.ctex" +path="res://.godot/imported/townie-idle-body_002.png-da3c8637c7c65ec2176eff3998fdc828.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-body_002.png" -dest_files=["res://.godot/imported/townie-body_002.png-5e739254d6cd3574ade20782a3bac17c.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-body_002.png" +dest_files=["res://.godot/imported/townie-idle-body_002.png-da3c8637c7c65ec2176eff3998fdc828.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png b/scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png rename to scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png diff --git a/scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png.import similarity index 75% rename from scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png.import index 8412f6f2b1..79e1fe265e 100644 --- a/scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://iq21xkckyvi1" -path="res://.godot/imported/townie-body_003.dx_-4.dy_-16.png-acc5ab9f6e74edf02d163ad885387f15.ctex" +path="res://.godot/imported/townie-idle-body_003.dx_-4.dy_-16.png-2a68e409b4089104aa1d2f166d193f69.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png" -dest_files=["res://.godot/imported/townie-body_003.dx_-4.dy_-16.png-acc5ab9f6e74edf02d163ad885387f15.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-body_003.dx_-4.dy_-16.png" +dest_files=["res://.godot/imported/townie-idle-body_003.dx_-4.dy_-16.png-2a68e409b4089104aa1d2f166d193f69.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_001.png b/scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-hair_001.png rename to scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_001.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-hair_001.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png.import index 1171bd10f8..7271e65335 100644 --- a/scenes/game_elements/characters/npcs/components/townie-hair_001.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bucvumn3fkygf" -path="res://.godot/imported/townie-hair_001.png-e9e991e2f5bd00771621e8e9d2be37c1.ctex" +path="res://.godot/imported/townie-idle-hair_001.png-bcb4446f927ab9a8c3bd229640c3366a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-hair_001.png" -dest_files=["res://.godot/imported/townie-hair_001.png-e9e991e2f5bd00771621e8e9d2be37c1.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_001.png" +dest_files=["res://.godot/imported/townie-idle-hair_001.png-bcb4446f927ab9a8c3bd229640c3366a.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_002.png b/scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-hair_002.png rename to scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_002.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-hair_002.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png.import index 0573cdd4ab..5e9a433b55 100644 --- a/scenes/game_elements/characters/npcs/components/townie-hair_002.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b4y4gg7xukeeg" -path="res://.godot/imported/townie-hair_002.png-178b37e736111255cbe707422d00feb7.ctex" +path="res://.godot/imported/townie-idle-hair_002.png-c9c7affb024cdedaa2a6991cb2833e60.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-hair_002.png" -dest_files=["res://.godot/imported/townie-hair_002.png-178b37e736111255cbe707422d00feb7.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_002.png" +dest_files=["res://.godot/imported/townie-idle-hair_002.png-c9c7affb024cdedaa2a6991cb2833e60.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_003.png b/scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-hair_003.png rename to scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_003.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-hair_003.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png.import index edbc74add0..2c9b828f5a 100644 --- a/scenes/game_elements/characters/npcs/components/townie-hair_003.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://iqvjulny3uri" -path="res://.godot/imported/townie-hair_003.png-09fd0fff0b0c09620f05251c6e8239b0.ctex" +path="res://.godot/imported/townie-idle-hair_003.png-6821d5ad1368db9a66214a18336a280e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-hair_003.png" -dest_files=["res://.godot/imported/townie-hair_003.png-09fd0fff0b0c09620f05251c6e8239b0.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_003.png" +dest_files=["res://.godot/imported/townie-idle-hair_003.png-6821d5ad1368db9a66214a18336a280e.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_004.png b/scenes/game_elements/characters/npcs/components/townie-idle-hair_004.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-hair_004.png rename to scenes/game_elements/characters/npcs/components/townie-idle-hair_004.png diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_004.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-hair_004.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-hair_004.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-hair_004.png.import index b995b623e8..83b2ca218a 100644 --- a/scenes/game_elements/characters/npcs/components/townie-hair_004.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-hair_004.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b4nx388ax1jxg" -path="res://.godot/imported/townie-hair_004.png-65adc4c01af81a7ee9abf085fd4b9ff2.ctex" +path="res://.godot/imported/townie-idle-hair_004.png-c6530a8f965b3486187976182bbb089e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-hair_004.png" -dest_files=["res://.godot/imported/townie-hair_004.png-65adc4c01af81a7ee9abf085fd4b9ff2.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_004.png" +dest_files=["res://.godot/imported/townie-idle-hair_004.png-c6530a8f965b3486187976182bbb089e.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_005.png b/scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-hair_005.png rename to scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png diff --git a/scenes/game_elements/characters/npcs/components/townie-hair_005.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-hair_005.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png.import index 09ca48bb88..acbdce4afe 100644 --- a/scenes/game_elements/characters/npcs/components/townie-hair_005.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bjmcvluico8dg" -path="res://.godot/imported/townie-hair_005.png-472afb49e5488f88e32ef9aeb002b259.ctex" +path="res://.godot/imported/townie-idle-hair_005.png-314da42b49e91978ae5676d1f921c30b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-hair_005.png" -dest_files=["res://.godot/imported/townie-hair_005.png-472afb49e5488f88e32ef9aeb002b259.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-hair_005.png" +dest_files=["res://.godot/imported/townie-idle-hair_005.png-314da42b49e91978ae5676d1f921c30b.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-head_001.png b/scenes/game_elements/characters/npcs/components/townie-idle-head_001.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-head_001.png rename to scenes/game_elements/characters/npcs/components/townie-idle-head_001.png diff --git a/scenes/game_elements/characters/npcs/components/townie-head_001.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-head_001.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-head_001.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-head_001.png.import index 69c2dbbdc8..8f7674d91c 100644 --- a/scenes/game_elements/characters/npcs/components/townie-head_001.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-head_001.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dktchu38pxnxl" -path="res://.godot/imported/townie-head_001.png-d8d99f7cae2bc705fce4ec08a37b209c.ctex" +path="res://.godot/imported/townie-idle-head_001.png-34860459583697b7532e7a4edaabd256.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-head_001.png" -dest_files=["res://.godot/imported/townie-head_001.png-d8d99f7cae2bc705fce4ec08a37b209c.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-head_001.png" +dest_files=["res://.godot/imported/townie-idle-head_001.png-34860459583697b7532e7a4edaabd256.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-head_002.png b/scenes/game_elements/characters/npcs/components/townie-idle-head_002.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-head_002.png rename to scenes/game_elements/characters/npcs/components/townie-idle-head_002.png diff --git a/scenes/game_elements/characters/npcs/components/townie-head_002.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-head_002.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-head_002.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-head_002.png.import index 3f4d5ca7e4..ff3f19f29e 100644 --- a/scenes/game_elements/characters/npcs/components/townie-head_002.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-head_002.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b5o2dw3xj2uus" -path="res://.godot/imported/townie-head_002.png-43909111d6ccd7c81abb70bb5c986064.ctex" +path="res://.godot/imported/townie-idle-head_002.png-2d15e153a7aaad212a6d92632df87871.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-head_002.png" -dest_files=["res://.godot/imported/townie-head_002.png-43909111d6ccd7c81abb70bb5c986064.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-head_002.png" +dest_files=["res://.godot/imported/townie-idle-head_002.png-2d15e153a7aaad212a6d92632df87871.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-head_003.png b/scenes/game_elements/characters/npcs/components/townie-idle-head_003.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-head_003.png rename to scenes/game_elements/characters/npcs/components/townie-idle-head_003.png diff --git a/scenes/game_elements/characters/npcs/components/townie-head_003.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-head_003.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-head_003.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-head_003.png.import index 05a9e3f980..5c2a3eded3 100644 --- a/scenes/game_elements/characters/npcs/components/townie-head_003.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-head_003.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bfothmxms5oo7" -path="res://.godot/imported/townie-head_003.png-d21a8a6a047047161933c5f3ef9d299d.ctex" +path="res://.godot/imported/townie-idle-head_003.png-763f94f0d33d7bc6c94b5d5725111a1e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-head_003.png" -dest_files=["res://.godot/imported/townie-head_003.png-d21a8a6a047047161933c5f3ef9d299d.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-head_003.png" +dest_files=["res://.godot/imported/townie-idle-head_003.png-763f94f0d33d7bc6c94b5d5725111a1e.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-head_004.png b/scenes/game_elements/characters/npcs/components/townie-idle-head_004.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-head_004.png rename to scenes/game_elements/characters/npcs/components/townie-idle-head_004.png diff --git a/scenes/game_elements/characters/npcs/components/townie-head_004.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-head_004.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-head_004.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-head_004.png.import index 43e81f3b31..75343fcad4 100644 --- a/scenes/game_elements/characters/npcs/components/townie-head_004.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-head_004.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://csxn66qqmfcqu" -path="res://.godot/imported/townie-head_004.png-5e9cf968420c154df245d9613b9d52fa.ctex" +path="res://.godot/imported/townie-idle-head_004.png-376a97575e87fc61c6c7fd268be51be5.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-head_004.png" -dest_files=["res://.godot/imported/townie-head_004.png-5e9cf968420c154df245d9613b9d52fa.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-head_004.png" +dest_files=["res://.godot/imported/townie-idle-head_004.png-376a97575e87fc61c6c7fd268be51be5.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-head_005.png b/scenes/game_elements/characters/npcs/components/townie-idle-head_005.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-head_005.png rename to scenes/game_elements/characters/npcs/components/townie-idle-head_005.png diff --git a/scenes/game_elements/characters/npcs/components/townie-head_005.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-head_005.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-head_005.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-head_005.png.import index 4788d9fd64..8a952da94b 100644 --- a/scenes/game_elements/characters/npcs/components/townie-head_005.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-head_005.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c4va1e7cdnos2" -path="res://.godot/imported/townie-head_005.png-0463d9615e50a9e56539d86de6a5006a.ctex" +path="res://.godot/imported/townie-idle-head_005.png-e4e46dbeadcc023fc58f64e7b7eb69bf.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-head_005.png" -dest_files=["res://.godot/imported/townie-head_005.png-0463d9615e50a9e56539d86de6a5006a.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-head_005.png" +dest_files=["res://.godot/imported/townie-idle-head_005.png-e4e46dbeadcc023fc58f64e7b7eb69bf.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_001.png b/scenes/game_elements/characters/npcs/components/townie-idle-legs_001.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-legs_001.png rename to scenes/game_elements/characters/npcs/components/townie-idle-legs_001.png diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_001.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-legs_001.png.import similarity index 78% rename from scenes/game_elements/characters/npcs/components/townie-legs_001.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-legs_001.png.import index 74c8d0e17b..c5724e490c 100644 --- a/scenes/game_elements/characters/npcs/components/townie-legs_001.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-legs_001.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://w2tqld60v18p" -path="res://.godot/imported/townie-legs_001.png-ac7e63eecf061b711802d201062034ac.ctex" +path="res://.godot/imported/townie-idle-legs_001.png-2efc592abc941f1685632255118f9e4c.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-legs_001.png" -dest_files=["res://.godot/imported/townie-legs_001.png-ac7e63eecf061b711802d201062034ac.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_001.png" +dest_files=["res://.godot/imported/townie-idle-legs_001.png-2efc592abc941f1685632255118f9e4c.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png b/scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png rename to scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.png diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.png.import similarity index 76% rename from scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.png.import index 05f50a6e27..43d63a1c4f 100644 --- a/scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://y3xp5d8timm0" -path="res://.godot/imported/townie-legs_002.dy_-6.png-8b20f0fce47cb082bb6e54e9e5b79f31.ctex" +path="res://.godot/imported/townie-idle-legs_002.dy_-6.png-e98ed5570afab59054682efa8faf4049.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png" -dest_files=["res://.godot/imported/townie-legs_002.dy_-6.png-8b20f0fce47cb082bb6e54e9e5b79f31.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_002.dy_-6.png" +dest_files=["res://.godot/imported/townie-idle-legs_002.dy_-6.png-e98ed5570afab59054682efa8faf4049.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png b/scenes/game_elements/characters/npcs/components/townie-idle-legs_003.dy_-12.png similarity index 100% rename from scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png rename to scenes/game_elements/characters/npcs/components/townie-idle-legs_003.dy_-12.png diff --git a/scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png.import b/scenes/game_elements/characters/npcs/components/townie-idle-legs_003.dy_-12.png.import similarity index 76% rename from scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png.import rename to scenes/game_elements/characters/npcs/components/townie-idle-legs_003.dy_-12.png.import index 601349d9d8..3621b20fea 100644 --- a/scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png.import +++ b/scenes/game_elements/characters/npcs/components/townie-idle-legs_003.dy_-12.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://daymgmvarx2ew" -path="res://.godot/imported/townie-legs_003.dy_-12.png-081d0d4d5b8df15efee66c99bc990722.ctex" +path="res://.godot/imported/townie-idle-legs_003.dy_-12.png-14a88b580ff0f2fecea5e50df747a41e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png" -dest_files=["res://.godot/imported/townie-legs_003.dy_-12.png-081d0d4d5b8df15efee66c99bc990722.ctex"] +source_file="res://scenes/game_elements/characters/npcs/components/townie-idle-legs_003.dy_-12.png" +dest_files=["res://.godot/imported/townie-idle-legs_003.dy_-12.png-14a88b580ff0f2fecea5e50df747a41e.ctex"] [params] diff --git a/scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png b/scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png new file mode 100644 index 0000000000..46827dfc8e --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e442aa87914df70e2c9425d0ec6587efef2321a862a09c5e05ac6d9fa6180ce +size 762 diff --git a/scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png.import b/scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png.import new file mode 100644 index 0000000000..e5b04579be --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cuwh4nnfg4t3t" +path="res://.godot/imported/townie-walk-legs_001.png-1aa12dd7d81667ec8e7dfdc61cb30ff5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_001.png" +dest_files=["res://.godot/imported/townie-walk-legs_001.png-1aa12dd7d81667ec8e7dfdc61cb30ff5.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/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png b/scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png new file mode 100644 index 0000000000..47926e0fd5 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80904fbb3de534be13adf910cb349eaf1615ab1c83940291171a8a6903ab2c81 +size 1043 diff --git a/scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png.import b/scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png.import new file mode 100644 index 0000000000..c548087b1f --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxmhj36273qdl" +path="res://.godot/imported/townie-walk-legs_002.dy_-6.png-daf299809e11e9069f621b89b47aeabb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_002.dy_-6.png" +dest_files=["res://.godot/imported/townie-walk-legs_002.dy_-6.png-daf299809e11e9069f621b89b47aeabb.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/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png b/scenes/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png new file mode 100644 index 0000000000..55eaf3d009 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00aec8f99a84287d00b4fd59625d239e05ae71bf40fbd96a448427b655a5f8c4 +size 1150 diff --git a/scenes/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png.import b/scenes/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png.import new file mode 100644 index 0000000000..9829454d78 --- /dev/null +++ b/scenes/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://47367qxj6u04" +path="res://.godot/imported/townie-walk-legs_003.dy_-12.png-008bd953b8ef4d5e5916bd165202febb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/characters/npcs/components/townie-walk-legs_003.dy_-12.png" +dest_files=["res://.godot/imported/townie-walk-legs_003.dy_-12.png-008bd953b8ef4d5e5916bd165202febb.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/game_elements/characters/npcs/components/townie.aseprite b/scenes/game_elements/characters/npcs/components/townie.aseprite index 168bc51069..c7ef3484d3 100644 --- a/scenes/game_elements/characters/npcs/components/townie.aseprite +++ b/scenes/game_elements/characters/npcs/components/townie.aseprite @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:484741fe618822c667039406baf862fed53a5598096ab8cc293f4e7ee3b979b0 -size 18736 +oid sha256:4149fe91d4b0b3ef8c5abb68d90ae62f524151166782dc4b50f0aa06d56e8c0f +size 20837 diff --git a/scenes/game_elements/characters/npcs/elder/components/elder.gd b/scenes/game_elements/characters/npcs/elder/components/elder.gd index cf8de7a822..02a59f2c74 100644 --- a/scenes/game_elements/characters/npcs/elder/components/elder.gd +++ b/scenes/game_elements/characters/npcs/elder/components/elder.gd @@ -57,6 +57,10 @@ func _get_configuration_warnings() -> PackedStringArray: return warnings +func has_quests() -> bool: + return _storybook and _storybook.has_quests() + + ## Show a storybook to the player, and wait for them to select a story or close the book. func show_storybook() -> void: if not _storybook: @@ -81,6 +85,10 @@ func congratulate_player() -> void: func _before_dialogue() -> void: if eternal_loom and eternal_loom.is_item_offering_possible(): talk_behavior.title = "go_to_loom" + elif not _storybook or not _storybook.has_quests(): + talk_behavior.title = "no_quests" + else: + talk_behavior.title = "" func _on_interaction_ended() -> void: diff --git a/scenes/game_elements/characters/npcs/elder/components/lore_quest_starter.dialogue b/scenes/game_elements/characters/npcs/elder/components/lore_quest_starter.dialogue index 13b378765c..e8ac0f5098 100644 --- a/scenes/game_elements/characters/npcs/elder/components/lore_quest_starter.dialogue +++ b/scenes/game_elements/characters/npcs/elder/components/lore_quest_starter.dialogue @@ -1,6 +1,7 @@ # SPDX-FileCopyrightText: The Threadbare Authors # SPDX-License-Identifier: MPL-2.0 ~ start + LoreQuest Elder: [[Hi|Hello|Greetings]], StoryWeaver. We've been waiting for you. Our world is unraveling! LoreQuest Elder: We need you to recover the Sacred Elements: the threads of Memory, Imagination, and Spirit! Will you help us? do show_storybook() @@ -35,3 +36,6 @@ LoreQuest Elder: Go on, StoryWeaver: take the threads to the Eternal Loom. LoreQuest Elder: Thank you, StoryWeaver! The fabric of the world slowly heals! LoreQuest Elder: Go forth: our world still needs your help. => END +~ no_quests +LoreQuest Elder: I don't have any quests for you. Talk to my fellow Elders. +=> END diff --git a/scenes/game_elements/characters/npcs/elder/components/story_quest_starter.dialogue b/scenes/game_elements/characters/npcs/elder/components/story_quest_starter.dialogue index 63fab8ea69..e302176b17 100644 --- a/scenes/game_elements/characters/npcs/elder/components/story_quest_starter.dialogue +++ b/scenes/game_elements/characters/npcs/elder/components/story_quest_starter.dialogue @@ -40,3 +40,6 @@ StoryQuest Elder: Go on, StoryWeaver: take the threads to the Eternal Loom. StoryQuest Elder: Thank you, StoryWeaver! The fabric of the world slowly heals! StoryQuest Elder: Go forth: our world still needs your help. => END +~ no_quests +StoryQuest Elder: I don't have any quests for you. Talk to my fellow Elders. +=> END diff --git a/scenes/game_elements/characters/npcs/elder/components/template_quest_starter.dialogue b/scenes/game_elements/characters/npcs/elder/components/template_quest_starter.dialogue index 8c6cb6e38a..2b91e4a768 100644 --- a/scenes/game_elements/characters/npcs/elder/components/template_quest_starter.dialogue +++ b/scenes/game_elements/characters/npcs/elder/components/template_quest_starter.dialogue @@ -18,3 +18,6 @@ Template Elder: Go on, StoryWeaver: take the threads to the Eternal Loom. Template Elder: Thank you, StoryWeaver! The fabric of the world slowly heals! Template Elder: Go forth: our world still needs your help. => END +~ no_quests +Template Elder: I don't have any quests for you. Talk to my fellow Elders. +=> END diff --git a/scenes/game_elements/characters/npcs/elder/lore_quest_elder.tscn b/scenes/game_elements/characters/npcs/elder/lore_quest_elder.tscn index 65e960e5a5..219fbd4a6f 100644 --- a/scenes/game_elements/characters/npcs/elder/lore_quest_elder.tscn +++ b/scenes/game_elements/characters/npcs/elder/lore_quest_elder.tscn @@ -4,7 +4,7 @@ [ext_resource type="Resource" uid="uid://c1baepfbbcd4s" path="res://scenes/game_elements/characters/npcs/elder/components/lore_quest_starter.dialogue" id="2_4dt43"] [ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="3_4dt43"] [ext_resource type="SpriteFrames" uid="uid://bpfnbr7ig4s5g" path="res://scenes/game_elements/characters/components/sprite_frames/elder.tres" id="3_ak236"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="4_81yrg"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="4_81yrg"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="5_ak236"] [ext_resource type="AudioStream" uid="uid://dxbxx6x5h7d8p" path="res://assets/third_party/sounds/characters/npcs/elder/BookPage.ogg" id="5_kqtes"] diff --git a/scenes/game_elements/characters/npcs/elder/story_quest_elder.tscn b/scenes/game_elements/characters/npcs/elder/story_quest_elder.tscn index 78df5046bc..d8bc859531 100644 --- a/scenes/game_elements/characters/npcs/elder/story_quest_elder.tscn +++ b/scenes/game_elements/characters/npcs/elder/story_quest_elder.tscn @@ -4,7 +4,7 @@ [ext_resource type="Resource" uid="uid://ykdgo73x62wa" path="res://scenes/game_elements/characters/npcs/elder/components/story_quest_starter.dialogue" id="2_dyfur"] [ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="3_dyfur"] [ext_resource type="SpriteFrames" uid="uid://cqe47tmqq3mu4" path="res://scenes/game_elements/characters/components/sprite_frames/elder2.tres" id="3_rah8h"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="4_v03uk"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="4_v03uk"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="5_bi5h8"] [ext_resource type="AudioStream" uid="uid://dxbxx6x5h7d8p" path="res://assets/third_party/sounds/characters/npcs/elder/BookPage.ogg" id="6_h7p2j"] diff --git a/scenes/game_elements/characters/npcs/elder/template_elder.tscn b/scenes/game_elements/characters/npcs/elder/template_elder.tscn index d001bd501d..09f19e6c8f 100644 --- a/scenes/game_elements/characters/npcs/elder/template_elder.tscn +++ b/scenes/game_elements/characters/npcs/elder/template_elder.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://dedhjloxblho6" path="res://scenes/game_elements/characters/npcs/elder/components/elder.gd" id="1_l4hfl"] [ext_resource type="SpriteFrames" uid="uid://cqe47tmqq3mu4" path="res://scenes/game_elements/characters/components/sprite_frames/elder2.tres" id="2_ewone"] [ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="3_ewone"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_ftke6"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_ftke6"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="4_m4ftv"] [ext_resource type="Resource" uid="uid://dg0fe4uwdjlbd" path="res://scenes/game_elements/characters/npcs/elder/components/template_quest_starter.dialogue" id="5_l4hfl"] [ext_resource type="AudioStream" uid="uid://dxbxx6x5h7d8p" path="res://assets/third_party/sounds/characters/npcs/elder/BookPage.ogg" id="6_wjjqs"] diff --git a/scenes/game_elements/characters/npcs/talker/talker.tscn b/scenes/game_elements/characters/npcs/talker/talker.tscn index f05f7e8a05..b9709308e9 100644 --- a/scenes/game_elements/characters/npcs/talker/talker.tscn +++ b/scenes/game_elements/characters/npcs/talker/talker.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://mbfqmrnr6h06" path="res://scenes/game_elements/characters/npcs/talker/components/talker.gd" id="1_yqle0"] [ext_resource type="SpriteFrames" uid="uid://cpm5o35ede3qs" path="res://scenes/game_elements/characters/npcs/npc_prop/sprite_frames/fray_idle_purple.tres" id="2_o8ron"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_c0xhn"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_c0xhn"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="4_t2xbo"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_3vyb7"] @@ -33,7 +33,6 @@ unique_name_in_owner = true collision_layer = 32 collision_mask = 0 script = ExtResource("3_c0xhn") -interact_label_position = Vector2(0, -100) [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=792948505] position = Vector2(0, -29) diff --git a/scenes/game_elements/characters/npcs/townie.tscn b/scenes/game_elements/characters/npcs/townie.tscn index 6879df42d5..c16e9828d3 100644 --- a/scenes/game_elements/characters/npcs/townie.tscn +++ b/scenes/game_elements/characters/npcs/townie.tscn @@ -3,166 +3,27 @@ [ext_resource type="Material" uid="uid://b7kf0suo0sc7k" path="res://scenes/game_elements/components/cel_shading_recolor_material.tres" id="1_nj51j"] [ext_resource type="Script" uid="uid://c0a7xf5qx8p4y" path="res://scenes/game_elements/components/cel_shading_recolor.gd" id="2_nj51j"] [ext_resource type="Script" uid="uid://dl6rgfwdn3qp4" path="res://scenes/game_elements/characters/components/character_randomizer.gd" id="2_xf1o5"] -[ext_resource type="Texture2D" uid="uid://w2tqld60v18p" path="res://scenes/game_elements/characters/npcs/components/townie-legs_001.png" id="4_4gc0b"] +[ext_resource type="SpriteFrames" uid="uid://do4waj3mgr6vw" path="res://scenes/game_elements/characters/components/sprite_frames/townie-legs_003.dy_-12.tres" id="3_4rgc5"] [ext_resource type="Script" uid="uid://boyesrjdix688" path="res://scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd" id="5_8nfuc"] -[ext_resource type="Texture2D" uid="uid://y3xp5d8timm0" path="res://scenes/game_elements/characters/npcs/components/townie-legs_002.dy_-6.png" id="5_yd672"] -[ext_resource type="Texture2D" uid="uid://daymgmvarx2ew" path="res://scenes/game_elements/characters/npcs/components/townie-legs_003.dy_-12.png" id="6_dstmm"] -[ext_resource type="Texture2D" uid="uid://0t1eptqlcb8t" path="res://scenes/game_elements/characters/npcs/components/townie-body_001.png" id="6_u5ew7"] -[ext_resource type="Texture2D" uid="uid://dlvcbntsncg18" path="res://scenes/game_elements/characters/npcs/components/townie-body_002.png" id="6_vqjnd"] -[ext_resource type="Texture2D" uid="uid://dktchu38pxnxl" path="res://scenes/game_elements/characters/npcs/components/townie-head_001.png" id="9_82egq"] -[ext_resource type="Texture2D" uid="uid://bucvumn3fkygf" path="res://scenes/game_elements/characters/npcs/components/townie-hair_001.png" id="9_vqjnd"] -[ext_resource type="Texture2D" uid="uid://bfothmxms5oo7" path="res://scenes/game_elements/characters/npcs/components/townie-head_003.png" id="9_ynrks"] -[ext_resource type="Texture2D" uid="uid://iq21xkckyvi1" path="res://scenes/game_elements/characters/npcs/components/townie-body_003.dx_-4.dy_-16.png" id="10_tidpj"] -[ext_resource type="Texture2D" uid="uid://b5o2dw3xj2uus" path="res://scenes/game_elements/characters/npcs/components/townie-head_002.png" id="10_vqjnd"] -[ext_resource type="Texture2D" uid="uid://b4y4gg7xukeeg" path="res://scenes/game_elements/characters/npcs/components/townie-hair_002.png" id="10_ynrks"] -[ext_resource type="Texture2D" uid="uid://iqvjulny3uri" path="res://scenes/game_elements/characters/npcs/components/townie-hair_003.png" id="11_iqfub"] -[ext_resource type="Texture2D" uid="uid://b4nx388ax1jxg" path="res://scenes/game_elements/characters/npcs/components/townie-hair_004.png" id="12_4gc0b"] -[ext_resource type="Texture2D" uid="uid://csxn66qqmfcqu" path="res://scenes/game_elements/characters/npcs/components/townie-head_004.png" id="13_yd672"] -[ext_resource type="Texture2D" uid="uid://c4va1e7cdnos2" path="res://scenes/game_elements/characters/npcs/components/townie-head_005.png" id="14_rh0s3"] -[ext_resource type="Texture2D" uid="uid://bjmcvluico8dg" path="res://scenes/game_elements/characters/npcs/components/townie-hair_005.png" id="18_dstmm"] +[ext_resource type="SpriteFrames" uid="uid://bygxgwwtt1j6h" path="res://scenes/game_elements/characters/components/sprite_frames/townie-legs_001.tres" id="5_r7ycj"] +[ext_resource type="SpriteFrames" uid="uid://ubitgryup0jx" path="res://scenes/game_elements/characters/components/sprite_frames/townie-legs_002.dy_-6.tres" id="6_hbfaq"] +[ext_resource type="Script" uid="uid://dy68p7gf07pi3" path="res://scenes/game_logic/sprite_behaviors/character_sprite_behavior.gd" id="10_syy7w"] +[ext_resource type="SpriteFrames" uid="uid://u85wwi2wot2r" path="res://scenes/game_elements/characters/components/sprite_frames/townie-body_002.tres" id="11_tidpj"] +[ext_resource type="SpriteFrames" uid="uid://dll1wbldwfgbt" path="res://scenes/game_elements/characters/components/sprite_frames/townie-body_003.dx_-4.dy_-16.tres" id="12_hurny"] +[ext_resource type="SpriteFrames" uid="uid://cyy8mv2nshtaq" path="res://scenes/game_elements/characters/components/sprite_frames/townie-head_002.tres" id="15_byt3c"] +[ext_resource type="SpriteFrames" uid="uid://tc0nuhppfl8p" path="res://scenes/game_elements/characters/components/sprite_frames/townie-body_001.tres" id="16_5y6le"] +[ext_resource type="SpriteFrames" uid="uid://c03umtasls62d" path="res://scenes/game_elements/characters/components/sprite_frames/townie-head_003.tres" id="16_kccyr"] +[ext_resource type="SpriteFrames" uid="uid://dl7xeteu0n2ia" path="res://scenes/game_elements/characters/components/sprite_frames/townie-head_004.tres" id="17_syy7w"] +[ext_resource type="SpriteFrames" uid="uid://myvflc68qwmu" path="res://scenes/game_elements/characters/components/sprite_frames/townie-head_005.tres" id="18_4rgc5"] +[ext_resource type="SpriteFrames" uid="uid://x3oxp35ukm62" path="res://scenes/game_elements/characters/components/sprite_frames/townie-hair_001.tres" id="20_syy7w"] +[ext_resource type="SpriteFrames" uid="uid://dh1kr2fwfwlxq" path="res://scenes/game_elements/characters/components/sprite_frames/townie-hair_003.tres" id="22_4rgc5"] +[ext_resource type="SpriteFrames" uid="uid://crshpjwcenpa5" path="res://scenes/game_elements/characters/components/sprite_frames/townie-head_001.tres" id="22_8wbfo"] +[ext_resource type="SpriteFrames" uid="uid://285s7e1vheno" path="res://scenes/game_elements/characters/components/sprite_frames/townie-hair_004.tres" id="23_umw6f"] +[ext_resource type="SpriteFrames" uid="uid://dnfyg3i87cp17" path="res://scenes/game_elements/characters/components/sprite_frames/townie-hair_005.tres" id="24_hskxo"] +[ext_resource type="SpriteFrames" uid="uid://c43yaqne7a2kh" path="res://scenes/game_elements/characters/components/sprite_frames/townie-hair_002.tres" id="33_m1eb2"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_qs15o"] -[sub_resource type="AtlasTexture" id="AtlasTexture_4gc0b"] -atlas = ExtResource("6_dstmm") -region = Rect2(0, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_yd672"] -atlas = ExtResource("6_dstmm") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_dstmm"] -atlas = ExtResource("6_dstmm") -region = Rect2(192, 0, 96, 96) - -[sub_resource type="SpriteFrames" id="SpriteFrames_beu7u"] -resource_local_to_scene = true -animations = [{ -"frames": [{ -"duration": 10.0, -"texture": SubResource("AtlasTexture_4gc0b") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_yd672") -}, { -"duration": 8.0, -"texture": SubResource("AtlasTexture_dstmm") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_yd672") -}], -"loop": true, -"name": &"idle", -"speed": 10.0 -}] - -[sub_resource type="AtlasTexture" id="AtlasTexture_beu7u"] -atlas = ExtResource("6_u5ew7") -region = Rect2(0, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_m2wva"] -atlas = ExtResource("6_u5ew7") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_u5ew7"] -atlas = ExtResource("6_u5ew7") -region = Rect2(192, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_1in01"] -atlas = ExtResource("6_u5ew7") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="SpriteFrames" id="SpriteFrames_6q5fn"] -resource_local_to_scene = true -animations = [{ -"frames": [{ -"duration": 10.0, -"texture": SubResource("AtlasTexture_beu7u") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_m2wva") -}, { -"duration": 8.0, -"texture": SubResource("AtlasTexture_u5ew7") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_1in01") -}], -"loop": true, -"name": &"idle", -"speed": 10.0 -}] - -[sub_resource type="AtlasTexture" id="AtlasTexture_82egq"] -atlas = ExtResource("9_82egq") -region = Rect2(0, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_vqjnd"] -atlas = ExtResource("9_82egq") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_ynrks"] -atlas = ExtResource("9_82egq") -region = Rect2(192, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_iqfub"] -atlas = ExtResource("9_82egq") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="SpriteFrames" id="SpriteFrames_vq5og"] -resource_local_to_scene = true -animations = [{ -"frames": [{ -"duration": 10.0, -"texture": SubResource("AtlasTexture_82egq") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_vqjnd") -}, { -"duration": 8.0, -"texture": SubResource("AtlasTexture_ynrks") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_iqfub") -}], -"loop": true, -"name": &"idle", -"speed": 10.0 -}] - -[sub_resource type="AtlasTexture" id="AtlasTexture_tidpj"] -atlas = ExtResource("12_4gc0b") -region = Rect2(0, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_hurny"] -atlas = ExtResource("12_4gc0b") -region = Rect2(96, 0, 96, 96) - -[sub_resource type="AtlasTexture" id="AtlasTexture_byt3c"] -atlas = ExtResource("12_4gc0b") -region = Rect2(192, 0, 96, 96) - -[sub_resource type="SpriteFrames" id="SpriteFrames_m2wva"] -resource_local_to_scene = true -animations = [{ -"frames": [{ -"duration": 10.0, -"texture": SubResource("AtlasTexture_tidpj") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_hurny") -}, { -"duration": 8.0, -"texture": SubResource("AtlasTexture_byt3c") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_hurny") -}], -"loop": true, -"name": &"idle", -"speed": 10.0 -}] - [node name="Townie" type="CharacterBody2D" unique_id=1098678013] material = ExtResource("1_nj51j") instance_shader_parameters/shade_high_new = Color(0.9056, 0.7616, 0.7928, 1) @@ -178,22 +39,29 @@ shape = SubResource("CapsuleShape2D_qs15o") [node name="AnimatedSprite2DLegs" type="AnimatedSprite2D" parent="." unique_id=385222684] position = Vector2(-3, -31) -sprite_frames = SubResource("SpriteFrames_beu7u") +sprite_frames = ExtResource("3_4rgc5") animation = &"idle" -autoplay = "idle" [node name="RandomTextureSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs" unique_id=471097323 node_paths=PackedStringArray("sprite")] script = ExtResource("5_8nfuc") -textures = Array[Texture2D]([ExtResource("4_4gc0b"), ExtResource("5_yd672"), ExtResource("6_dstmm")]) +sprite_frames = Array[SpriteFrames]([ExtResource("5_r7ycj"), ExtResource("6_hbfaq"), ExtResource("3_4rgc5")]) sprite = NodePath("..") metadata/_custom_type_script = "uid://boyesrjdix688" +[node name="CharacterSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs" unique_id=1671495161 node_paths=PackedStringArray("character", "sprite")] +position = Vector2(3, 30) +script = ExtResource("10_syy7w") +character = NodePath("../..") +sprite = NodePath("..") +metadata/_custom_type_script = "uid://dy68p7gf07pi3" + [node name="AnimatedSprite2DBody" type="AnimatedSprite2D" parent="AnimatedSprite2DLegs" unique_id=2098127821] material = ExtResource("1_nj51j") instance_shader_parameters/shade_high_new = Color(0.91999996, 0.91999996, 0.2, 1) instance_shader_parameters/shade_low_new = Color(0.71999997, 0.71999997, 0, 1) instance_shader_parameters/shade_medium_new = Color(0.9, 0.9, 0, 1) -sprite_frames = SubResource("SpriteFrames_6q5fn") +position = Vector2(0, -12) +sprite_frames = ExtResource("16_5y6le") animation = &"idle" autoplay = "idle" @@ -206,15 +74,21 @@ metadata/_custom_type_script = "uid://c0a7xf5qx8p4y" [node name="RandomTextureSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody" unique_id=1733667753 node_paths=PackedStringArray("sprite")] script = ExtResource("5_8nfuc") -textures = Array[Texture2D]([ExtResource("6_u5ew7"), ExtResource("6_vqjnd"), ExtResource("10_tidpj")]) +sprite_frames = Array[SpriteFrames]([ExtResource("16_5y6le"), ExtResource("11_tidpj"), ExtResource("12_hurny")]) +sprite = NodePath("..") + +[node name="CharacterSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody" unique_id=273990310 node_paths=PackedStringArray("character", "sprite")] +script = ExtResource("10_syy7w") +character = NodePath("../../..") sprite = NodePath("..") +metadata/_custom_type_script = "uid://dy68p7gf07pi3" [node name="AnimatedSprite2DHead" type="AnimatedSprite2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody" unique_id=421503015] material = ExtResource("1_nj51j") instance_shader_parameters/shade_high_new = Color(0.91999996, 0.91999996, 0.2, 1) instance_shader_parameters/shade_low_new = Color(0.71999997, 0.71999997, 0, 1) instance_shader_parameters/shade_medium_new = Color(0.9, 0.9, 0, 1) -sprite_frames = SubResource("SpriteFrames_vq5og") +sprite_frames = ExtResource("22_8wbfo") animation = &"idle" autoplay = "idle" @@ -227,18 +101,30 @@ metadata/_custom_type_script = "uid://c0a7xf5qx8p4y" [node name="RandomTextureSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" unique_id=592927150 node_paths=PackedStringArray("sprite")] script = ExtResource("5_8nfuc") -textures = Array[Texture2D]([ExtResource("9_82egq"), ExtResource("10_vqjnd"), ExtResource("9_ynrks"), ExtResource("13_yd672"), ExtResource("14_rh0s3")]) +sprite_frames = Array[SpriteFrames]([ExtResource("22_8wbfo"), ExtResource("15_byt3c"), ExtResource("16_kccyr"), ExtResource("17_syy7w"), ExtResource("18_4rgc5")]) sprite = NodePath("..") metadata/_custom_type_script = "uid://boyesrjdix688" +[node name="CharacterSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" unique_id=1897959413 node_paths=PackedStringArray("character", "sprite")] +script = ExtResource("10_syy7w") +character = NodePath("../../../..") +sprite = NodePath("..") +metadata/_custom_type_script = "uid://dy68p7gf07pi3" + [node name="AnimatedSprite2DHair" type="AnimatedSprite2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead" unique_id=2123781958] -sprite_frames = SubResource("SpriteFrames_m2wva") +sprite_frames = ExtResource("33_m1eb2") animation = &"idle" autoplay = "idle" metadata/_edit_lock_ = true [node name="RandomTextureSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead/AnimatedSprite2DHair" unique_id=358939124 node_paths=PackedStringArray("sprite")] script = ExtResource("5_8nfuc") -textures = Array[Texture2D]([ExtResource("9_vqjnd"), ExtResource("10_ynrks"), ExtResource("11_iqfub"), ExtResource("12_4gc0b"), ExtResource("18_dstmm")]) +sprite_frames = Array[SpriteFrames]([ExtResource("20_syy7w"), ExtResource("33_m1eb2"), ExtResource("22_4rgc5"), ExtResource("23_umw6f"), ExtResource("24_hskxo")]) sprite = NodePath("..") metadata/_custom_type_script = "uid://boyesrjdix688" + +[node name="CharacterSpriteBehavior" type="Node2D" parent="AnimatedSprite2DLegs/AnimatedSprite2DBody/AnimatedSprite2DHead/AnimatedSprite2DHair" unique_id=280440134 node_paths=PackedStringArray("character", "sprite")] +script = ExtResource("10_syy7w") +character = NodePath("../../../../..") +sprite = NodePath("..") +metadata/_custom_type_script = "uid://dy68p7gf07pi3" diff --git a/scenes/game_elements/characters/player/components/animation_player.gd b/scenes/game_elements/characters/player/components/animation_player.gd index b018ff23b2..0447ece841 100644 --- a/scenes/game_elements/characters/player/components/animation_player.gd +++ b/scenes/game_elements/characters/player/components/animation_player.gd @@ -2,78 +2,75 @@ # SPDX-License-Identifier: MPL-2.0 extends AnimationPlayer -const REPEL_ANTICIPATION_TIME: float = 0.3 +var _is_player_running: bool @onready var player: Player = owner @onready var player_sprite: AnimatedSprite2D = %PlayerSprite -@onready var player_fighting: Node2D = %PlayerFighting -@onready var player_hook: Node2D = %PlayerHook +@onready var player_repel: PlayerRepel = %PlayerRepel +@onready var player_hook: PlayerHook = %PlayerHook @onready var original_speed_scale: float = speed_scale func _ready() -> void: + animation_finished.connect(_on_animation_finished) player.mode_changed.connect(_on_player_mode_changed) + player_repel.repelling_changed.connect(_on_player_repel_repelling_changed) player_hook.string_thrown.connect(_on_player_hook_string_thrown) func _process(_delta: float) -> void: - match player.mode: - Player.Mode.COZY: - _process_walk_idle(_delta) - Player.Mode.FIGHTING: - _process_fighting(_delta) - Player.Mode.HOOKING: - _process_hooking(_delta) - - var double_speed: bool = current_animation == &"walk" and player.is_running() - speed_scale = original_speed_scale * (2.0 if double_speed else 1.0) - - -func _get_repel_animation() -> StringName: - return &"repel" - + if player.mode == player.Mode.DEFEATED: + return + if current_animation in [&"repel", &"throw_string"]: + return -func _process_walk_idle(_delta: float) -> void: if player.velocity.is_zero_approx(): play(&"idle") - elif player_sprite.sprite_frames.has_animation(&"run") and player.is_running(): + elif player_sprite.sprite_frames.has_animation(&"run") and _is_player_running: play(&"run") else: play(&"walk") + var double_speed: bool = current_animation == &"walk" and _is_player_running + speed_scale = original_speed_scale * (2.0 if double_speed else 1.0) -func _process_fighting(delta: float) -> void: - var repel: StringName = _get_repel_animation() - if not player_fighting.is_fighting: - # If the current animation is repel and it has passed the anticipation - # phase, it plays until the end. - if not ( - current_animation == repel and current_animation_position > REPEL_ANTICIPATION_TIME - ): - _process_walk_idle(delta) - return - - if current_animation != repel: - # Fighting animation is being played for the first time. So skip the anticipation and go - # directly to the action. - play(repel) - seek(REPEL_ANTICIPATION_TIME, false, false) - - -func _process_hooking(delta: float) -> void: - if current_animation == &"throw_string": - return - _process_walk_idle(delta) +func _on_animation_finished(animation_name: StringName) -> void: + if animation_name == &"repel" and player_repel.repelling: + speed_scale = original_speed_scale + play(&"repel") func _on_player_mode_changed(mode: Player.Mode) -> void: match player.mode: Player.Mode.DEFEATED: + speed_scale = original_speed_scale play(&"defeated") +func _on_player_repel_repelling_changed(repelling: bool) -> void: + if not repelling: + return + + # The repel animation is already ongoing. Prevent starting it again by smashing the buttons. + if current_animation == &"repel": + return + + # Repel animation is being played for the first time. So skip the anticipation and go + # directly to the action. + speed_scale = original_speed_scale + play(&"repel") + seek(player_repel.REPEL_ANTICIPATION_TIME, false, false) + + func _on_player_hook_string_thrown() -> void: - if current_animation == &"throw_string": + # A new throw action (blading sword) interrupts the previous one. + # It also interrupts the repel action. + if current_animation in [&"repel", &"throw_string"]: stop() + speed_scale = original_speed_scale play(&"throw_string") + + +func _on_input_walk_behavior_running_changed(is_running: bool) -> void: + _is_player_running = is_running diff --git a/scenes/game_elements/characters/player/components/interact_zone.gd b/scenes/game_elements/characters/player/components/interact_zone.gd deleted file mode 100644 index 91b4b531ae..0000000000 --- a/scenes/game_elements/characters/player/components/interact_zone.gd +++ /dev/null @@ -1,39 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends Area2D - -@export var character: CharacterBody2D - -var is_looking_from_right: bool = false - - -func _ready() -> void: - if not character and owner is CharacterBody2D: - character = owner - - -func get_interact_area() -> InteractArea: - var areas := get_overlapping_areas() - var best: InteractArea = null - var best_distance: float = INF - - for area in areas: - var distance := global_position.distance_to(area.global_position) - if not best or distance < best_distance: - best_distance = distance - best = area - - return best - - -func _process(_delta: float) -> void: - if not character: - return - if not monitoring: - return - if not is_zero_approx(character.velocity.x): - if character.velocity.x < 0: - scale.x = -1 - else: - scale.x = 1 - is_looking_from_right = scale.x < 0 diff --git a/scenes/game_elements/characters/player/components/player.gd b/scenes/game_elements/characters/player/components/player.gd index ec1f133fbd..1822d18faa 100644 --- a/scenes/game_elements/characters/player/components/player.gd +++ b/scenes/game_elements/characters/player/components/player.gd @@ -6,15 +6,13 @@ extends CharacterBody2D signal mode_changed(mode: Mode) -## Controls how the player can interact with the world around them. +## The possible player states. enum Mode { - ## Player can explore the world, interact with items and NPCs, but is not - ## engaged in combat. Combat actions are not available in this mode. - COZY, - ## Player is engaged in combat. Player can use combat actions. - FIGHTING, - ## Player is using the grappling hook. - HOOKING, + ## Player is reacting to user input. + USER_CONTROLLED, + ## Player is being controlled by other means: interacting, + ## pulling the grappling hook, being put on rails, etc. + SYSTEM_CONTROLLED, ## Player can't be controlled anymore. DEFEATED, } @@ -41,27 +39,18 @@ const DEFAULT_SPRITE_FRAME: SpriteFrames = preload("uid://vwf8e1v8brdp") ## is speaking during dialogue. @export var player_name: String = "Player Name" -## Controls how the player can interact with the world around them. -@export var mode: Mode = Mode.COZY: +## The current player state. +@export var mode: Mode = Mode.USER_CONTROLLED: set = _set_mode -## The character walking speed. -@export_range(10, 100000, 10) var walk_speed: float = 300.0 - -## The character running speed. -@export_range(10, 100000, 10) var run_speed: float = 500.0 +## Parameters controlling the speed at which this player walks. If unset, the default values of +## [CharacterSpeeds] are used. +@export var speeds: CharacterSpeeds: + set = _set_speeds ## The character speed when aiming with the grappling hook. @export_range(10, 100000, 10) var aiming_speed: float = 100.0 -## How fast does the player transition from walking/running to stopped. -## A low value will make the character look as slipping on ice. -## A high value will stop the character immediately. -@export_range(10, 100000, 10) var stopping_step: float = 1500.0 - -## How fast does the player transition from stopped to walking/running. -@export_range(10, 100000, 10) var moving_step: float = 4000.0 - ## The SpriteFrames must have specific animations with a certain amount of frames. ## See [constant REQUIRED_ANIMATION_FRAMES] and [constant OPTIONAL_ANIMATION_FRAMES]. @export var sprite_frames: SpriteFrames = DEFAULT_SPRITE_FRAME: @@ -72,10 +61,11 @@ const DEFAULT_SPRITE_FRAME: SpriteFrames = preload("uid://vwf8e1v8brdp") @export var walk_sound_stream: AudioStream = preload("uid://cx6jv2cflrmqu"): set = _set_walk_sound_stream -var input_vector: Vector2 +var _initial_speeds: CharacterSpeeds +@onready var input_walk_behavior: InputWalkBehavior = %InputWalkBehavior @onready var player_interaction: PlayerInteraction = %PlayerInteraction -@onready var player_fighting: Node2D = %PlayerFighting +@onready var player_repel: Node2D = %PlayerRepel @onready var player_hook: PlayerHook = %PlayerHook @onready var player_sprite: AnimatedSprite2D = %PlayerSprite @onready var _walk_sound: AudioStreamPlayer2D = %WalkSound @@ -87,26 +77,20 @@ func _set_mode(new_mode: Mode) -> void: if not is_node_ready(): return match mode: - Mode.COZY: + Mode.USER_CONTROLLED: + _toggle_player_behavior(input_walk_behavior, true) _toggle_player_behavior(player_interaction, true) - _toggle_player_behavior(player_fighting, false) - _toggle_player_behavior(player_hook, false) - Input.set_default_cursor_shape(Input.CURSOR_ARROW) - Mode.FIGHTING: - _toggle_player_behavior(player_interaction, false) - _toggle_player_behavior(player_fighting, true) - _toggle_player_behavior(player_hook, false) - Input.set_default_cursor_shape(Input.CURSOR_ARROW) - Mode.HOOKING: - _toggle_player_behavior(player_interaction, false) - _toggle_player_behavior(player_fighting, false) - _toggle_player_behavior(player_hook, true) - Input.set_default_cursor_shape(Input.CURSOR_CROSS) + _toggle_abilities() + Mode.SYSTEM_CONTROLLED: + _toggle_player_behavior(input_walk_behavior, false) + _toggle_player_behavior(player_interaction, true) + _toggle_abilities() Mode.DEFEATED: + _toggle_player_behavior(input_walk_behavior, false) _toggle_player_behavior(player_interaction, false) - _toggle_player_behavior(player_fighting, false) + _toggle_player_behavior(player_repel, false) _toggle_player_behavior(player_hook, false) - Input.set_default_cursor_shape(Input.CURSOR_ARROW) + if mode != previous_mode: mode_changed.emit(mode) @@ -157,51 +141,18 @@ func _get_configuration_warnings() -> PackedStringArray: func _ready() -> void: + _set_speeds(speeds) _set_mode(mode) _set_sprite_frames(sprite_frames) + GameState.abilities_changed.connect(_on_abilities_changed) -func _unhandled_input(_event: InputEvent) -> void: - var axis: Vector2 = Input.get_vector(&"move_left", &"move_right", &"move_up", &"move_down") - - var speed: float - if player_hook.is_throwing_or_aiming(): - speed = aiming_speed - elif Input.is_action_pressed(&"running"): - speed = run_speed - else: - speed = walk_speed - - input_vector = axis * speed - - -## Returns [code]true[/code] if the player is running. When using an analogue joystick, this can be -## [code]false[/code] even if the player is holding the "run" button, because the joystick may be -## inclined only slightly. -func is_running() -> bool: - # While walking diagonally with an analogue joystick, the input vector can be fractionally - # greater than walk_speed, due to trigonometric/floating-point inaccuracy. - return input_vector.length_squared() > (walk_speed * walk_speed) + 1.0 - - -func _process(delta: float) -> void: - if Engine.is_editor_hint(): - return - - # While pulling the grappling hook, the movement is handled in PlayerHook._process. - if player_hook.pulling: - return - - if player_interaction.is_interacting or mode == Mode.DEFEATED: - velocity = Vector2.ZERO +func _set_speeds(new_speeds: CharacterSpeeds) -> void: + speeds = new_speeds + _initial_speeds = new_speeds.duplicate() + if not is_node_ready(): return - - var step := ( - stopping_step if velocity.length_squared() > input_vector.length_squared() else moving_step - ) - velocity = velocity.move_toward(input_vector, step * delta) - - move_and_slide() + input_walk_behavior.speeds = speeds func teleport_to( @@ -241,6 +192,9 @@ func defeat(falling: bool = false) -> void: mode = Player.Mode.DEFEATED + # Stop moving the player. + velocity = Vector2.ZERO + # Decrement lives and save the new count GameState.decrement_lives() @@ -259,6 +213,30 @@ func defeat(falling: bool = false) -> void: _handle_game_over() +func take_control(_controlled_by: Node) -> void: + mode = Mode.SYSTEM_CONTROLLED + + +func return_control(_controlled_by: Node) -> void: + mode = Mode.USER_CONTROLLED + + +func _toggle_abilities() -> void: + var can_repel := GameState.has_ability(Enums.PlayerAbilities.ABILITY_A) + var can_grapple := GameState.has_ability(Enums.PlayerAbilities.ABILITY_B) + _toggle_player_behavior(player_repel, can_repel) + _toggle_player_behavior(player_hook, can_grapple) + if can_grapple: + var has_longer_hook := GameState.has_ability(Enums.PlayerAbilities.ABILITY_B_MODIFIER_1) + player_hook.string_throw_length = 400.0 if has_longer_hook else 200.0 + player_hook.string_max_length = 450.0 if has_longer_hook else 250.0 + + +func _on_abilities_changed() -> void: + if mode != Mode.DEFEATED: + _toggle_abilities() + + ## Handles game over logic: restarts from the beginning of the current challenge ## with lives reset to 3. func _handle_game_over() -> void: @@ -278,3 +256,10 @@ func _handle_game_over() -> void: SceneSwitcher.change_to_file_with_transition( challenge_start_scene, ^"", Transition.Effect.FADE, Transition.Effect.FADE ) + + +func _on_player_hook_aiming_changed(is_aiming: bool) -> void: + input_walk_behavior.speeds.walk_speed = ( + aiming_speed if is_aiming else _initial_speeds.walk_speed + ) + input_walk_behavior.speeds.run_speed = aiming_speed if is_aiming else _initial_speeds.run_speed diff --git a/scenes/game_elements/characters/player/components/player_dust_particles.gd b/scenes/game_elements/characters/player/components/player_dust_particles.gd deleted file mode 100644 index bac34b0ef5..0000000000 --- a/scenes/game_elements/characters/player/components/player_dust_particles.gd +++ /dev/null @@ -1,15 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends GPUParticles2D - -@onready var player: Player = owner - - -func _process(_delta: float) -> void: - if not player: - return - if player.is_running() and not player.velocity.is_zero_approx(): - emitting = true - process_material.direction = Vector3(player.velocity.x, player.velocity.y, 0.0) - else: - emitting = false diff --git a/scenes/game_elements/characters/player/components/player_dust_particles.gd.uid b/scenes/game_elements/characters/player/components/player_dust_particles.gd.uid deleted file mode 100644 index 7e16784628..0000000000 --- a/scenes/game_elements/characters/player/components/player_dust_particles.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ciw2w16c38ewq diff --git a/scenes/game_elements/characters/player/components/player_fighting.gd b/scenes/game_elements/characters/player/components/player_fighting.gd deleted file mode 100644 index 8321d41306..0000000000 --- a/scenes/game_elements/characters/player/components/player_fighting.gd +++ /dev/null @@ -1,45 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends Node2D - -var is_fighting: bool = false - -@onready var hit_box: Area2D = %HitBox -@onready var got_hit_animation: AnimationPlayer = %GotHitAnimation -@onready var air_stream: Area2D = %AirStream -@onready var player_sprite: AnimatedSprite2D = %PlayerSprite - -@onready var player: Player = self.owner as Player - - -func _ready() -> void: - hit_box.body_entered.connect(_on_body_entered) - air_stream.body_entered.connect(_on_air_stream_body_entered) - - -func _unhandled_input(_event: InputEvent) -> void: - if Input.is_action_just_pressed(&"repel"): - is_fighting = true - elif Input.is_action_just_released(&"repel"): - is_fighting = false - - -func _on_body_entered(body: Node2D) -> void: - body = body as Projectile - if not body: - return - body.add_small_fx() - body.queue_free() - got_hit_animation.play(&"got_hit") - CameraShake.shake() - - -func _on_air_stream_body_entered(body: Projectile) -> void: - body.got_hit(owner) - - -func _notification(what: int) -> void: - match what: - NOTIFICATION_DISABLED: - got_hit_animation.play(&"RESET") - got_hit_animation.advance(0) diff --git a/scenes/game_elements/characters/player/components/player_harm.gd b/scenes/game_elements/characters/player/components/player_harm.gd new file mode 100644 index 0000000000..8905a9a785 --- /dev/null +++ b/scenes/game_elements/characters/player/components/player_harm.gd @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D + +## The player hitbox area. +@onready var hit_box: Area2D = %HitBox + +## Animation to play when the player gets hit. +@onready var got_hit_animation: AnimationPlayer = %GotHitAnimation + + +func _on_hit_box_body_entered(body: Node2D) -> void: + body = body as Projectile + if not body: + return + body.add_small_fx() + body.queue_free() + got_hit_animation.play(&"got_hit") + CameraShake.shake() + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_DISABLED: + got_hit_animation.play(&"RESET") + got_hit_animation.advance(0) diff --git a/scenes/game_elements/characters/player/components/player_harm.gd.uid b/scenes/game_elements/characters/player/components/player_harm.gd.uid new file mode 100644 index 0000000000..e59cad6efd --- /dev/null +++ b/scenes/game_elements/characters/player/components/player_harm.gd.uid @@ -0,0 +1 @@ +uid://dajod2qsesqte diff --git a/scenes/game_elements/characters/player/components/player_hook.gd b/scenes/game_elements/characters/player/components/player_hook.gd index e0f5277745..cbd99043c8 100644 --- a/scenes/game_elements/characters/player/components/player_hook.gd +++ b/scenes/game_elements/characters/player/components/player_hook.gd @@ -17,6 +17,12 @@ extends Node2D ## Emitted when the string is thrown from the primary control. signal string_thrown +## Emitted when character using the grappling hook starts or stops aiming. +## [br][br] +## This could be used to reduce the character movement while aiming with the same input controls +## (the case of keyboard). +signal aiming_changed(is_aiming: bool) + ## The character using the grapping hook tool. ## [br][br] ## [b]Note:[/b] If the parent node is a CharacterBody2D and character isn't set, @@ -146,8 +152,9 @@ func hooked(_new_hooked_to: HookableArea, is_loop: bool) -> void: hook_ending.global_position = p areas_hooked.append(_new_hooked_to) if not _new_hooked_to.hook_control: + # The area hooked doesn't have a control to aim from it, so start pulling: pull_string() - if is_loop: + elif is_loop: # Play a blink animation and then remove the string: var tween: Tween = create_tween() tween.tween_property(hook_string, "modulate:a", 0.0, 0.1).set_trans( @@ -160,6 +167,9 @@ func hooked(_new_hooked_to: HookableArea, is_loop: bool) -> void: tween.play() await tween.finished remove_string() + else: + # Start aiming: + aiming_changed.emit(true) ## Called when a throw has hit a wall. @@ -197,6 +207,8 @@ func remove_string() -> void: area.hook_control.state = HookControl.State.DISABLED areas_hooked.clear() + aiming_changed.emit(false) + # Wait for the string to be freed before reenabling aiming: if is_instance_valid(hook_string): await hook_string.tree_exited @@ -237,8 +249,26 @@ func shatter_string() -> void: ## While pulling, the player is allowed to go through non-walkable floor. func pull_string() -> void: pulling = true + + # While pulling, this class takes control over the player movement. + if character.has_method("take_control"): + character.take_control(self) character.set_collision_mask_value(Enums.CollisionLayers.NON_WALKABLE_FLOOR, false) + # If the entity has a got_pulled handler, call it and connect to the pull_released signal + # of the HookableArea. The entity is responsible to call it. + var ending_area := get_ending_area() + if ending_area.controlled_entity.has_method("got_pulled"): + ending_area.pull_released.connect(_on_pull_released, CONNECT_ONE_SHOT) + var direction := hook_string.points[0].direction_to(hook_string.points[1]) + ending_area.controlled_entity.got_pulled(direction) + + +func _on_pull_released(cancelled: bool) -> void: + if cancelled and hook_string: + shatter_string() + stop_pulling() + ## Stop pulling and remove the [member hook_string]. ## [br][br] @@ -247,24 +277,12 @@ func pull_string() -> void: func stop_pulling() -> void: character.set_collision_mask_value(Enums.CollisionLayers.NON_WALKABLE_FLOOR, true) pulling = false + # After pulling, return control to the user. + if character.has_method("return_control"): + character.return_control(self) remove_string() -## True if this hook's control is throwing or the hook control of the last area hooked is aiming. -## [br][br] -## Used to slow down the character movement for more precise control. -func is_throwing_or_aiming() -> bool: - var ending_area := get_ending_area() - return ( - hook_control.pressing_throw_action - or ( - ending_area - and ending_area.hook_control - and ending_area.hook_control.state == HookControl.State.AIMING - ) - ) - - ## Helper function to return the last area hooked, or ## null if nothing was hooked. func get_ending_area() -> HookableArea: @@ -273,7 +291,7 @@ func get_ending_area() -> HookableArea: return areas_hooked[-1] -func _process(delta: float) -> void: +func _physics_process(delta: float) -> void: if not is_instance_valid(hook_string): return if pulling: @@ -294,17 +312,19 @@ func _process_hook_string(delta: float) -> void: # TODO: Only updates the endings. Connections are assumed static for now. # Move last point to the player position. - hook_string.points[-1] = character.position + position + hook_string.set_point_position(hook_string.get_point_count() - 1, character.position + position) var ending_area := get_ending_area() if ending_area: # Move first point to the hooked position. - hook_string.points[0] = ending_area.get_anchor_position() + hook_string.set_point_position(0, ending_area.get_anchor_position()) else: # Not hooked, so a throw that hit air or wall. # Progressively shorten the line. - hook_string.points[0] = hook_string.points[0].lerp(hook_string.points[1], 10.0 * delta) + hook_string.set_point_position( + 0, hook_string.points[0].lerp(hook_string.points[1], 10.0 * delta) + ) # Remove the string when the line is short enough. if ( (hook_string.points[1] - hook_string.points[0]).length_squared() @@ -327,7 +347,7 @@ func _process_pulling(_delta: float) -> void: return var target := ending_area.controlled_entity - var weight := ending_area.weight if target is CharacterBody2D else 1.0 + var weight := ending_area.weight # Vector from player to first point: var player_distance: Vector2 = hook_string.points[-2] - hook_string.points[-1] diff --git a/scenes/game_elements/characters/player/components/player_hook.tscn b/scenes/game_elements/characters/player/components/player_hook.tscn new file mode 100644 index 0000000000..725878946c --- /dev/null +++ b/scenes/game_elements/characters/player/components/player_hook.tscn @@ -0,0 +1,12 @@ +[gd_scene format=3 uid="uid://b3111eergq5yg"] + +[ext_resource type="Script" uid="uid://b7704hdflt5t8" path="res://scenes/game_elements/characters/player/components/player_hook.gd" id="1_40sye"] +[ext_resource type="PackedScene" uid="uid://b0dehcnfo68j1" path="res://scenes/game_elements/props/hook_control/hook_control.tscn" id="2_5svv0"] + +[node name="PlayerHook" type="Node2D" unique_id=1972626703 groups=["hook_listener"]] +script = ExtResource("1_40sye") + +[node name="HookControl" parent="." unique_id=1022482491 instance=ExtResource("2_5svv0")] +state = 1 + +[node name="HookEnding" type="Marker2D" parent="." unique_id=123633963] diff --git a/scenes/game_elements/characters/player/components/player_interaction.gd b/scenes/game_elements/characters/player/components/player_interaction.gd index 3b26158ee4..def5098df6 100644 --- a/scenes/game_elements/characters/player/components/player_interaction.gd +++ b/scenes/game_elements/characters/player/components/player_interaction.gd @@ -3,45 +3,77 @@ class_name PlayerInteraction extends Node2D -var is_interacting: bool: - get = _get_is_interacting +## Emitted when the entity the player is able to interact with changes (possibly +## to nothing). +signal interact_action_changed -@onready var interact_zone: Area2D = %InteractZone -@onready var interact_marker: Marker2D = %InteractMarker -@onready var interact_label: FixedSizeLabel = %InteractLabel +## The character that gains interaction. +## [br][br] +## [b]Note:[/b] If the parent node is a CharacterBody2D and character isn't set, +## the parent node will be automatically assigned to this variable. +@export var character: CharacterBody2D: + set = _set_character + +@onready var character_sight: CharacterSight = %CharacterSight @onready var player: Player = self.owner as Player -func _get_is_interacting() -> bool: - return not interact_zone.monitoring +func _set_character(new_character: CharacterBody2D) -> void: + character = new_character + update_configuration_warnings() -func _process(_delta: float) -> void: - if is_interacting: - return +## Returns the human-readable text of [member character]'s current interact +## action (e.g. [code]"Talk"[/code]), or [code]""[/code] (empty string) if +## [member character] cannot currently interact with anything. Use [signal +## interact_action_changed] to monitor for changes. +func get_interact_action() -> String: + if character_sight.interact_area != null: + var action := character_sight.interact_area.action + return action if action else tr("Interact") + return "" + + +func _is_interacting() -> bool: + return not character_sight.monitoring + - var interact_area: InteractArea = interact_zone.get_interact_area() - if not interact_area: - interact_label.visible = false - else: - interact_label.visible = true - interact_label.label_text = interact_area.action - interact_marker.global_position = interact_area.get_global_interact_label_position() +func _get_configuration_warnings() -> PackedStringArray: + var warnings: PackedStringArray + if not character: + warnings.append("Character must be set.") + return warnings + + +func _ready() -> void: + character_sight.interact_area_changed.connect(_on_character_sight_interact_area_changed) + _on_character_sight_interact_area_changed() func _unhandled_input(_event: InputEvent) -> void: - if is_interacting: + if _is_interacting(): return - var interact_area: InteractArea = interact_zone.get_interact_area() + var interact_area := character_sight.interact_area if interact_area and Input.is_action_just_pressed(&"interact"): + # While interacting, this class takes control over the player movement. + if character.has_method("take_control"): + character.take_control(self) + character.velocity = Vector2.ZERO + get_viewport().set_input_as_handled() - interact_zone.monitoring = false - interact_label.visible = false + character_sight.monitoring = false interact_area.interaction_ended.connect(_on_interaction_ended, CONNECT_ONE_SHOT) - interact_area.start_interaction(player, interact_zone.is_looking_from_right) + interact_area.start_interaction(player, character_sight.is_looking_from_right) func _on_interaction_ended() -> void: - interact_zone.monitoring = true + character_sight.monitoring = true + # After interacting, return control to the user. + if character.has_method("return_control"): + character.return_control(self) + + +func _on_character_sight_interact_area_changed() -> void: + interact_action_changed.emit() diff --git a/scenes/game_elements/characters/player/components/player_repel.gd b/scenes/game_elements/characters/player/components/player_repel.gd new file mode 100644 index 0000000000..e7dc3f5d70 --- /dev/null +++ b/scenes/game_elements/characters/player/components/player_repel.gd @@ -0,0 +1,67 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +class_name PlayerRepel +extends Node2D + +## Emitted when the repel starts or stops. +signal repelling_changed(repelling: bool) + +const REPEL_ANTICIPATION_TIME: float = 0.3 + +## If false, [member repelling] should be changed by other means. +@export var player_controlled: bool = true + +## If controlled by the player, which input action triggers the repel. +@export var input_action: StringName = &"repel" + +## Current state of the repel. +@export var repelling: bool = false: + set = _set_repelling + +@onready var air_stream: Area2D = %AirStream +@onready var repel_animation: AnimationPlayer = %RepelAnimation + + +func _set_repelling(new_repelling: bool) -> void: + repelling = new_repelling + if not is_node_ready(): + return + repelling_changed.emit(repelling) + if repelling: + _animate() + + +func _unhandled_input(_event: InputEvent) -> void: + if not player_controlled: + return + if Input.is_action_just_pressed(input_action): + repelling = true + elif Input.is_action_just_released(input_action): + repelling = false + + +func repel_once() -> void: + repelling = true + repelling = false + + +func _on_air_stream_body_entered(body: Node2D) -> void: + if body.has_method("got_repelled"): + var direction := global_position.direction_to(body.global_position) + body.got_repelled(direction) + + +func _animate() -> void: + # The repel animation is already ongoing. Prevent starting it again by smashing the buttons. + if repel_animation.current_animation == &"repel": + return + + # Repel animation is being played for the first time. So skip the anticipation and go + # directly to the action. + repel_animation.play(&"repel") + repel_animation.seek(REPEL_ANTICIPATION_TIME, false, false) + + +func _on_repel_animation_animation_finished(anim_name: StringName) -> void: + if anim_name == &"repel" and repelling: + repel_animation.play(&"repel") diff --git a/scenes/game_elements/characters/player/components/player_fighting.gd.uid b/scenes/game_elements/characters/player/components/player_repel.gd.uid similarity index 100% rename from scenes/game_elements/characters/player/components/player_fighting.gd.uid rename to scenes/game_elements/characters/player/components/player_repel.gd.uid diff --git a/scenes/game_elements/characters/player/components/player_repel.tscn b/scenes/game_elements/characters/player/components/player_repel.tscn new file mode 100644 index 0000000000..690f31de5a --- /dev/null +++ b/scenes/game_elements/characters/player/components/player_repel.tscn @@ -0,0 +1,188 @@ +[gd_scene format=3 uid="uid://cl06pid826dtg"] + +[ext_resource type="Script" uid="uid://kni2yl26matc" path="res://scenes/game_elements/characters/player/components/player_repel.gd" id="1_y1fpu"] +[ext_resource type="Texture2D" uid="uid://dda0lxfswrncy" path="res://scenes/game_elements/characters/player/components/blow.png" id="2_ochor"] +[ext_resource type="AudioStream" uid="uid://crfylo055wa8e" path="res://scenes/game_elements/characters/player/components/blow.wav" id="3_bvany"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_h17s1"] +radius = 20.0 + +[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_je7p5"] +blend_mode = 1 + +[sub_resource type="Animation" id="Animation_5lbww"] +resource_name = "RESET" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("AirStream/AirStreamCollision:disabled") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("AirStream/AirStreamCollision:shape:radius") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [20.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AirStream/Sprite2D:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("AirStream/Sprite2D:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.12577, 0.12577)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("AirStream/Sprite2D:modulate") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} + +[sub_resource type="Animation" id="Animation_cvb4d"] +resource_name = "repel" +length = 0.6 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("AirStream/AirStreamCollision:disabled") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.3, 0.6), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [true, false, true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("AirStream/AirStreamCollision:shape:radius") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.3, 0.6), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [20.0, 150.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("AirStream/Sprite2D:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.3, 0.6), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 1, +"values": [false, true, false] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("AirStream/Sprite2D:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.3, 0.6), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0.12577, 0.12577), Vector2(1, 1)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("AirStream/Sprite2D:modulate") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.3, 0.5, 0.6), +"transitions": PackedFloat32Array(2, 0.5, 0.5), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.456), Color(1, 1, 1, 0)] +} +tracks/5/type = "audio" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("AirStream/AudioStreamPlayer2D") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"clips": [{ +"end_offset": 0.0, +"start_offset": 0.0, +"stream": ExtResource("3_bvany") +}], +"times": PackedFloat32Array(0.3) +} +tracks/5/use_blend = true + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ubfef"] +_data = { +&"RESET": SubResource("Animation_5lbww"), +&"repel": SubResource("Animation_cvb4d") +} + +[node name="PlayerRepel" type="Node2D" unique_id=1324972992] +script = ExtResource("1_y1fpu") + +[node name="AirStream" type="Area2D" parent="." unique_id=1185536811] +unique_name_in_owner = true +collision_layer = 0 +collision_mask = 256 + +[node name="AirStreamCollision" type="CollisionShape2D" parent="AirStream" unique_id=482921981] +unique_name_in_owner = true +shape = SubResource("CircleShape2D_h17s1") +disabled = true + +[node name="Sprite2D" type="Sprite2D" parent="AirStream" unique_id=1723853226] +visible = false +material = SubResource("CanvasItemMaterial_je7p5") +scale = Vector2(0.12577, 0.12577) +texture = ExtResource("2_ochor") + +[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="AirStream" unique_id=1428086503] +bus = &"SFX" + +[node name="RepelAnimation" type="AnimationPlayer" parent="." unique_id=2103763625] +unique_name_in_owner = true +libraries/ = SubResource("AnimationLibrary_ubfef") + +[connection signal="body_entered" from="AirStream" to="." method="_on_air_stream_body_entered"] +[connection signal="animation_finished" from="RepelAnimation" to="." method="_on_repel_animation_animation_finished"] diff --git a/scenes/game_elements/characters/player/components/unify_abilities_test.tscn b/scenes/game_elements/characters/player/components/unify_abilities_test.tscn new file mode 100644 index 0000000000..74f29f94d1 --- /dev/null +++ b/scenes/game_elements/characters/player/components/unify_abilities_test.tscn @@ -0,0 +1,119 @@ +[gd_scene format=4 uid="uid://bmn145mqfmvia"] + +[ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="2_hx14g"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="4_7v23v"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="4_rup4f"] +[ext_resource type="Script" uid="uid://d1ly6uhh500xu" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/tile_map_cover.gd" id="4_vodlh"] +[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="5_7gbyj"] +[ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="6_8xu72"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="6_g4p32"] +[ext_resource type="PackedScene" uid="uid://evb46lm6ssu2" path="res://scenes/game_elements/props/hookable_pin/hookable_pin.tscn" id="6_vodlh"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="8_iu48k"] +[ext_resource type="PackedScene" uid="uid://xbgo0b3f50mw" path="res://scenes/game_elements/characters/player/components/unify_abilities_test_projectile.tscn" id="13_g4p32"] +[ext_resource type="SpriteFrames" uid="uid://b3r84ksew5djp" path="res://scenes/game_elements/characters/enemies/throwing_enemy/components/ink_drinker_frames_purple.tres" id="13_w66m4"] +[ext_resource type="AudioStream" uid="uid://qf2d38rabx8o" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Wings.ogg" id="14_nev3j"] +[ext_resource type="AudioStream" uid="uid://bbnj2fog3rdy8" path="res://assets/first_party/sounds/throwing_enemy/Spray.wav" id="15_4vuok"] +[ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="17_b7aom"] +[ext_resource type="PackedScene" uid="uid://dmevaymmt6wco" path="res://scenes/game_elements/props/powerup/powerup.tscn" id="17_w66m4"] +[ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="18_iu48k"] +[ext_resource type="SpriteFrames" uid="uid://cfgahyntmtfgu" path="res://scenes/game_elements/props/powerup/components/powerup_thread.tres" id="18_mecxj"] +[ext_resource type="SpriteFrames" uid="uid://cni7ipc5funa7" path="res://scenes/game_elements/props/powerup/components/powerup_button.tres" id="18_nev3j"] +[ext_resource type="PackedScene" uid="uid://y8ha8abfyap2" path="res://scenes/game_elements/props/filling_barrel/filling_barrel.tscn" id="19_a36ca"] + +[node name="Testeo" type="Node2D" unique_id=80760666] + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=706364029] + +[node name="Floor" type="TileMapLayer" parent="TileMapLayers" unique_id=1306581307] +tile_map_data = PackedByteArray("AAABABMAAQABAAEAAAABABIAAQABAAEAAAABABEAAQABAAEAAAABABAAAQABAAEAAAABAA8AAQABAAEAAAABAA4AAQABAAEAAAABAA0AAQABAAEAAAABAAwAAQABAAEAAAAAABMAAQABAAEAAAAAABIAAQABAAEAAAAAABEAAQABAAEAAAAAABAAAQABAAEAAAAAAA8AAQABAAEAAAAAAA4AAQABAAEAAAAAAA0AAQABAAEAAAAAAAwAAQABAAEAAAD//xMAAQABAAEAAAD//xIAAQABAAEAAAD//xEAAQABAAEAAAD//xAAAQABAAEAAAD//w8AAQABAAEAAAD//w4AAQABAAEAAAD//w0AAQABAAEAAAD//wwAAQABAAEAAAD+/xMAAQABAAEAAAD+/xIAAQABAAEAAAD+/xEAAQABAAEAAAD+/xAAAQABAAEAAAD+/w8AAQABAAEAAAD+/w4AAQABAAEAAAD+/w0AAQABAAEAAAD+/wwAAQABAAEAAAD9/xMAAQABAAEAAAD9/xIAAQABAAEAAAD9/xEAAQABAAEAAAD9/xAAAQABAAEAAAD9/w8AAQABAAEAAAD9/w4AAQABAAEAAAD9/w0AAQABAAEAAAD9/wwAAQABAAEAAAABABwAAQABAAEAAAABABsAAQABAAEAAAABABoAAQABAAEAAAABABkAAQABAAEAAAABABgAAQABAAEAAAABABcAAQABAAEAAAABABYAAQABAAEAAAABABUAAQABAAEAAAABABQAAQABAAEAAAAAABwAAQABAAEAAAAAABsAAQABAAEAAAAAABoAAQABAAEAAAAAABkAAQABAAEAAAAAABgAAQABAAEAAAAAABcAAQABAAEAAAAAABYAAQABAAEAAAAAABUAAQABAAEAAAAAABQAAQABAAEAAAD//xwAAQABAAEAAAD//xsAAQABAAEAAAD//xoAAQABAAEAAAD//xkAAQABAAEAAAD//xgAAQABAAEAAAD//xcAAQABAAEAAAD//xYAAQABAAEAAAD//xUAAQABAAEAAAD//xQAAQABAAEAAAD+/xwAAQABAAEAAAD+/xsAAQABAAEAAAD+/xoAAQABAAEAAAD+/xkAAQABAAEAAAD+/xgAAQABAAEAAAD+/xcAAQABAAEAAAD+/xYAAQABAAEAAAD+/xUAAQABAAEAAAD+/xQAAQABAAEAAAD9/xwAAQABAAEAAAD9/xsAAQABAAEAAAD9/xoAAQABAAEAAAD9/xkAAQABAAEAAAD9/xgAAQABAAEAAAD9/xcAAQABAAEAAAD9/xYAAQABAAEAAAD9/xUAAQABAAEAAAD9/xQAAQABAAEAAAABAB4AAQABAAEAAAABAB0AAQABAAEAAAAAAB4AAQABAAEAAAAAAB0AAQABAAEAAAD//x4AAQABAAEAAAD//x0AAQABAAEAAAD+/x4AAQABAAEAAAD+/x0AAQABAAEAAAD9/x4AAQABAAEAAAD9/x0AAQABAAEAAAD8/x4AAQABAAEAAAD8/x0AAQABAAEAAAD8/xwAAQABAAEAAAD8/xsAAQABAAEAAAD8/xoAAQABAAEAAAD8/xkAAQABAAEAAAD8/xgAAQABAAEAAAD8/xcAAQABAAEAAAD8/xYAAQABAAEAAAD8/xUAAQABAAEAAAD8/xQAAQABAAEAAAD8/xMAAQABAAEAAAD7/x4AAQABAAEAAAD7/x0AAQABAAEAAAD7/xwAAQABAAEAAAD7/xsAAQABAAEAAAD7/xoAAQABAAEAAAD7/xkAAQABAAEAAAD7/xgAAQABAAEAAAD7/xcAAQABAAEAAAD7/xYAAQABAAEAAAD7/xUAAQABAAEAAAD7/xQAAQABAAEAAAD7/xMAAQABAAEAAAD6/x4AAQABAAEAAAD6/x0AAQABAAEAAAD6/xwAAQABAAEAAAD6/xsAAQABAAEAAAD6/xoAAQABAAEAAAD6/xkAAQABAAEAAAD6/xgAAQABAAEAAAD6/xcAAQABAAEAAAD5/x4AAQABAAEAAAD5/x0AAQABAAEAAAD5/xwAAQABAAEAAAD5/xsAAQABAAEAAAD5/xoAAQABAAEAAAD5/xkAAQABAAEAAAD5/xgAAQABAAEAAAD5/xcAAQABAAEAAAD4/x4AAQABAAEAAAD4/x0AAQABAAEAAAD4/xwAAQABAAEAAAD4/xsAAQABAAEAAAD4/xoAAQABAAEAAAD4/xkAAQABAAEAAAD4/xgAAQABAAEAAAD4/xcAAQABAAEAAAD3/x4AAQABAAEAAAD3/x0AAQABAAEAAAD3/xwAAQABAAEAAAD3/xsAAQABAAEAAAD3/xoAAQABAAEAAAD3/xkAAQABAAEAAAD3/xgAAQABAAEAAAD3/xcAAQABAAEAAAD2/x4AAQABAAEAAAD2/x0AAQABAAEAAAD2/xwAAQABAAEAAAD2/xsAAQABAAEAAAD2/xoAAQABAAEAAAD2/xkAAQABAAEAAAD2/xgAAQABAAEAAAD2/xcAAQABAAEAAAD1/x4AAQABAAEAAAD1/x0AAQABAAEAAAD1/xwAAQABAAEAAAD1/xsAAQABAAEAAAD1/xoAAQABAAEAAAD1/xkAAQABAAEAAAD1/xgAAQABAAEAAAD1/xcAAQABAAEAAAD0/x4AAQABAAEAAAD0/x0AAQABAAEAAAD0/xwAAQABAAEAAAD0/xsAAQABAAEAAAD0/xoAAQABAAEAAAD0/xkAAQABAAEAAAD0/xgAAQABAAEAAAD0/xcAAQABAAEAAADz/x4AAQABAAEAAADz/x0AAQABAAEAAADz/xwAAQABAAEAAADz/xsAAQABAAEAAADz/xoAAQABAAEAAADz/xkAAQABAAEAAADy/x4AAQABAAEAAADy/x0AAQABAAEAAADy/xwAAQABAAEAAADy/xsAAQABAAEAAADy/xoAAQABAAEAAADy/xkAAQABAAEAAADx/x4AAQABAAEAAADx/x0AAQABAAEAAADx/xwAAQABAAEAAADx/xsAAQABAAEAAADx/xoAAQABAAEAAADx/xkAAQABAAEAAADw/x4AAQABAAEAAADw/x0AAQABAAEAAADw/xwAAQABAAEAAADw/xsAAQABAAEAAADw/xoAAQABAAEAAADw/xkAAQABAAEAAADw/xEAAQABAAEAAADw/xAAAQABAAEAAADw/w8AAQABAAEAAADw/w4AAQABAAEAAADw/w0AAQABAAEAAADv/x4AAQABAAEAAADv/x0AAQABAAEAAADv/xwAAQABAAEAAADv/xsAAQABAAEAAADv/xoAAQABAAEAAADv/xkAAQABAAEAAADv/xEAAQABAAEAAADv/xAAAQABAAEAAADv/w8AAQABAAEAAADv/w4AAQABAAEAAADv/w0AAQABAAEAAADu/x4AAQABAAEAAADu/x0AAQABAAEAAADu/xwAAQABAAEAAADu/xsAAQABAAEAAADu/xoAAQABAAEAAADu/xkAAQABAAEAAADu/xEAAQABAAEAAADu/xAAAQABAAEAAADu/w8AAQABAAEAAADu/w4AAQABAAEAAADu/w0AAQABAAEAAADt/x4AAQABAAEAAADt/x0AAQABAAEAAADt/xwAAQABAAEAAADt/xsAAQABAAEAAADt/xoAAQABAAEAAADt/xkAAQABAAEAAADt/xEAAQABAAEAAADt/xAAAQABAAEAAADt/w8AAQABAAEAAADt/w4AAQABAAEAAADt/w0AAQABAAEAAADs/x4AAQABAAEAAADs/x0AAQABAAEAAADs/xwAAQABAAEAAADs/xsAAQABAAEAAADs/xoAAQABAAEAAADs/xkAAQABAAEAAADs/xEAAQABAAEAAADs/xAAAQABAAEAAADs/w8AAQABAAEAAADs/w4AAQABAAEAAADs/w0AAQABAAEAAADr/x4AAQABAAEAAADr/x0AAQABAAEAAADr/xwAAQABAAEAAADr/xsAAQABAAEAAADr/xoAAQABAAEAAADr/xkAAQABAAEAAADr/xEAAQABAAEAAADr/xAAAQABAAEAAADr/w8AAQABAAEAAADr/w4AAQABAAEAAADr/w0AAQABAAEAAADq/x4AAQABAAEAAADq/x0AAQABAAEAAADq/xwAAQABAAEAAADq/xsAAQABAAEAAADq/xoAAQABAAEAAADq/xkAAQABAAEAAADq/xEAAQABAAEAAADq/xAAAQABAAEAAADq/w8AAQABAAEAAADq/w4AAQABAAEAAADq/w0AAQABAAEAAADp/x4AAQABAAEAAADp/x0AAQABAAEAAADp/xwAAQABAAEAAADp/xsAAQABAAEAAADp/xoAAQABAAEAAADp/xkAAQABAAEAAADp/xgAAQABAAEAAADp/xcAAQABAAEAAADp/xYAAQABAAEAAADp/xUAAQABAAEAAADp/xQAAQABAAEAAADp/xMAAQABAAEAAADp/xIAAQABAAEAAADp/xEAAQABAAEAAADp/xAAAQABAAEAAADp/w8AAQABAAEAAADp/w4AAQABAAEAAADp/w0AAQABAAEAAADo/x4AAQABAAEAAADo/x0AAQABAAEAAADo/xwAAQABAAEAAADo/xsAAQABAAEAAADo/xoAAQABAAEAAADo/xkAAQABAAEAAADo/xgAAQABAAEAAADo/xcAAQABAAEAAADo/xYAAQABAAEAAADo/xUAAQABAAEAAADo/xQAAQABAAEAAADo/xMAAQABAAEAAADo/xIAAQABAAEAAADo/xEAAQABAAEAAADo/xAAAQABAAEAAADo/w8AAQABAAEAAADo/w4AAQABAAEAAADo/w0AAQABAAEAAADn/x4AAQABAAEAAADn/x0AAQABAAEAAADn/xwAAQABAAEAAADn/xsAAQABAAEAAADn/xoAAQABAAEAAADn/xkAAQABAAEAAADn/xgAAQABAAEAAADn/xcAAQABAAEAAADn/xYAAQABAAEAAADn/xUAAQABAAEAAADn/xQAAQABAAEAAADn/xMAAQABAAEAAADn/xIAAQABAAEAAADn/xEAAQABAAEAAADn/xAAAQABAAEAAADn/w8AAQABAAEAAADn/w4AAQABAAEAAADn/w0AAQABAAEAAADm/x4AAQABAAEAAADm/x0AAQABAAEAAADm/xwAAQABAAEAAADm/xsAAQABAAEAAADm/xoAAQABAAEAAADm/xkAAQABAAEAAADm/xgAAQABAAEAAADm/xcAAQABAAEAAADm/xYAAQABAAEAAADm/xUAAQABAAEAAADm/xQAAQABAAEAAADm/xMAAQABAAEAAADm/xIAAQABAAEAAADm/xEAAQABAAEAAADm/xAAAQABAAEAAADm/w8AAQABAAEAAADm/w4AAQABAAEAAADm/w0AAQABAAEAAADl/x4AAQABAAEAAADl/x0AAQABAAEAAADl/xwAAQABAAEAAADl/xsAAQABAAEAAADl/xoAAQABAAEAAADl/xkAAQABAAEAAADl/xgAAQABAAEAAADl/xcAAQABAAEAAADl/xYAAQABAAEAAADl/xUAAQABAAEAAADl/xQAAQABAAEAAADl/xMAAQABAAEAAADl/xIAAQABAAEAAADl/xEAAQABAAEAAADl/xAAAQABAAEAAADl/w8AAQABAAEAAADl/w4AAQABAAEAAADl/w0AAQABAAEAAADk/x4AAQABAAEAAADk/x0AAQABAAEAAADk/xwAAQABAAEAAADk/xsAAQABAAEAAADk/xoAAQABAAEAAADk/xkAAQABAAEAAADk/xgAAQABAAEAAADk/xcAAQABAAEAAADk/xYAAQABAAEAAADk/xUAAQABAAEAAADk/xQAAQABAAEAAADk/xMAAQABAAEAAADk/xIAAQABAAEAAADk/xEAAQABAAEAAADk/xAAAQABAAEAAADk/w8AAQABAAEAAADk/w4AAQABAAEAAADk/w0AAQABAAEAAADw/wwAAQABAAEAAADv/wwAAQABAAEAAADu/wwAAQABAAEAAADt/wwAAQABAAEAAADs/wwAAQABAAEAAADr/wwAAQABAAEAAADq/wwAAQABAAEAAADp/wwAAQABAAEAAADo/wwAAQABAAEAAADn/wwAAQABAAEAAADm/wwAAQABAAEAAADl/wwAAQABAAEAAADk/wwAAQABAAEAAADj/x4AAQABAAEAAADj/x0AAQABAAEAAADj/xwAAQABAAEAAADj/xsAAQABAAEAAADj/xoAAQABAAEAAADj/xkAAQABAAEAAADj/xgAAQABAAEAAADi/x4AAQABAAEAAADi/x0AAQABAAEAAADi/xwAAQABAAEAAADi/xsAAQABAAEAAADi/xoAAQABAAEAAADi/xkAAQABAAEAAADi/xgAAQABAAEAAADh/x4AAQAAAAEAAADh/x0AAQAAAAEAAADh/xwAAQAAAAEAAADh/xsAAQAAAAEAAADh/xoAAQAAAAEAAADh/xkAAQAAAAEAAADh/xgAAQAAAAEAAADj/xcAAQABAAEAAADj/xYAAQABAAEAAADj/xUAAQABAAEAAADj/xQAAQABAAEAAADj/xMAAQABAAEAAADj/xIAAQABAAEAAADj/xEAAQABAAEAAADj/xAAAQABAAEAAADj/w8AAQABAAEAAADj/w4AAQABAAEAAADj/w0AAQABAAEAAADj/wwAAQABAAEAAADi/xcAAQABAAEAAADi/xYAAQABAAEAAADi/xUAAQABAAEAAADi/xQAAQABAAEAAADi/xMAAQABAAEAAADi/xIAAQABAAEAAADi/xEAAQABAAEAAADi/xAAAQABAAEAAADi/w8AAQABAAEAAADi/w4AAQABAAEAAADi/w0AAQABAAEAAADi/wwAAQABAAEAAADh/xcAAQAAAAEAAADh/xYAAQAAAAEAAADh/xUAAQAAAAEAAADh/xQAAQAAAAEAAADh/xMAAQAAAAEAAADh/xIAAQAAAAEAAADh/xEAAQAAAAEAAADh/xAAAQAAAAEAAADh/w8AAQAAAAEAAADh/w4AAQAAAAEAAADh/w0AAQAAAAEAAADh/wwAAQAAAAEAAAD7/wwAAQABAAEAAAD7/w0AAQABAAEAAAD7/w4AAQABAAEAAAD7/w8AAQABAAEAAAD7/xAAAQABAAEAAAD7/xEAAQABAAEAAAD7/xIAAQABAAEAAAD8/wwAAQABAAEAAAD8/w0AAQABAAEAAAD8/w4AAQABAAEAAAD8/w8AAQABAAEAAAD8/xAAAQABAAEAAAD8/xEAAQABAAEAAADx/wwAAQABAAEAAADx/w0AAQABAAEAAADx/w4AAQABAAEAAADx/w8AAQABAAEAAADx/xAAAQABAAEAAADx/xEAAQABAAEAAADy/wwAAQABAAEAAADy/w0AAQABAAEAAADy/w4AAQABAAEAAADy/w8AAQABAAEAAADy/xAAAQABAAEAAADy/xEAAQABAAEAAADz/wwAAQABAAEAAADz/w0AAQABAAEAAADz/w4AAQABAAEAAADz/w8AAQABAAEAAADz/xAAAQABAAEAAADz/xEAAQABAAEAAAD0/wwAAQABAAEAAAD0/w0AAQABAAEAAAD0/w4AAQABAAEAAAD0/w8AAQABAAEAAAD0/xAAAQABAAEAAAD0/xEAAQABAAEAAAD0/xIAAQABAAEAAAD0/xMAAQABAAEAAAD0/xQAAQABAAEAAAD0/xUAAQABAAEAAAD0/xYAAQABAAEAAAD1/wwAAQABAAEAAAD1/w0AAQABAAEAAAD1/w4AAQABAAEAAAD1/w8AAQABAAEAAAD1/xAAAQABAAEAAAD1/xEAAQABAAEAAAD1/xIAAQABAAEAAAD1/xMAAQABAAEAAAD1/xQAAQABAAEAAAD1/xUAAQABAAEAAAD1/xYAAQABAAEAAAD2/wwAAQABAAEAAAD2/w0AAQABAAEAAAD2/w4AAQABAAEAAAD2/w8AAQABAAEAAAD2/xAAAQABAAEAAAD2/xEAAQABAAEAAAD2/xIAAQABAAEAAAD2/xMAAQABAAEAAAD2/xQAAQABAAEAAAD2/xUAAQABAAEAAAD2/xYAAQABAAEAAAD3/wwAAQABAAEAAAD3/w0AAQABAAEAAAD3/w4AAQABAAEAAAD3/w8AAQABAAEAAAD3/xAAAQABAAEAAAD3/xEAAQABAAEAAAD3/xIAAQABAAEAAAD3/xMAAQABAAEAAAD3/xQAAQABAAEAAAD3/xUAAQABAAEAAAD3/xYAAQABAAEAAAD4/wwAAQABAAEAAAD4/w0AAQABAAEAAAD4/w4AAQABAAEAAAD4/w8AAQABAAEAAAD4/xAAAQABAAEAAAD4/xEAAQABAAEAAAD4/xIAAQABAAEAAAD4/xMAAQABAAEAAAD4/xQAAQABAAEAAAD4/xUAAQABAAEAAAD4/xYAAQABAAEAAAD5/wwAAQABAAEAAAD5/w0AAQABAAEAAAD5/w4AAQABAAEAAAD5/w8AAQABAAEAAAD5/xAAAQABAAEAAAD5/xEAAQABAAEAAAD5/xIAAQABAAEAAAD5/xMAAQABAAEAAAD5/xQAAQABAAEAAAD5/xUAAQABAAEAAAD5/xYAAQABAAEAAAD6/wwAAQABAAEAAAD6/w0AAQABAAEAAAD6/w4AAQABAAEAAAD6/w8AAQABAAEAAAD6/xAAAQABAAEAAAD6/xEAAQABAAEAAAD6/xIAAQABAAEAAAD6/xMAAQABAAEAAAD6/xQAAQABAAEAAAD6/xUAAQABAAEAAAD6/xYAAQABAAEAAADq/xIAAQABAAEAAADq/xMAAQABAAEAAADq/xQAAQABAAEAAADq/xUAAQABAAEAAADq/xYAAQABAAEAAADq/xcAAQABAAEAAADq/xgAAQABAAEAAADr/xIAAQABAAEAAADr/xMAAQABAAEAAADr/xQAAQABAAEAAADr/xUAAQABAAEAAADr/xYAAQABAAEAAADr/xcAAQABAAEAAADr/xgAAQABAAEAAADs/xIAAQABAAEAAADs/xMAAQABAAEAAADs/xQAAQABAAEAAADs/xUAAQABAAEAAADs/xYAAQABAAEAAADs/xcAAQABAAEAAADs/xgAAQABAAEAAADt/xIAAQABAAEAAADt/xMAAQABAAEAAADt/xQAAQABAAEAAADt/xUAAQABAAEAAADt/xYAAQABAAEAAADt/xcAAQABAAEAAADt/xgAAQABAAEAAADu/xIAAQABAAEAAADu/xMAAQABAAEAAADu/xQAAQABAAEAAADu/xUAAQABAAEAAADu/xYAAQABAAEAAADu/xcAAQABAAEAAADu/xgAAQABAAEAAADv/xIAAQABAAEAAADv/xMAAQABAAEAAADv/xQAAQABAAEAAADv/xUAAQABAAEAAADv/xYAAQABAAEAAADv/xcAAQABAAEAAADv/xgAAQABAAEAAADw/xIAAQABAAEAAADw/xMAAQABAAEAAADw/xQAAQABAAEAAADw/xUAAQABAAEAAADw/xYAAQABAAEAAADw/xcAAQABAAEAAADw/xgAAQABAAEAAADx/xIAAQABAAEAAADx/xMAAQABAAEAAADx/xQAAQABAAEAAADx/xUAAQABAAEAAADx/xYAAQABAAEAAADx/xcAAQABAAEAAADx/xgAAQABAAEAAADy/xIAAQABAAEAAADy/xMAAQABAAEAAADy/xQAAQABAAEAAADy/xUAAQABAAEAAADy/xYAAQABAAEAAADy/xcAAQABAAEAAADy/xgAAQABAAEAAADz/xIAAQABAAEAAADz/xMAAQABAAEAAADz/xQAAQABAAEAAADz/xUAAQABAAEAAADz/xYAAQABAAEAAADz/xcAAQABAAEAAADz/xgAAQABAAEAAAA=") +tile_set = ExtResource("4_7v23v") + +[node name="Void" type="TileMapLayer" parent="TileMapLayers" unique_id=1056472020] +texture_filter = 1 +material = ExtResource("2_hx14g") +tile_map_data = PackedByteArray("AAABABMADQABAAEAAAABABIADQABAAEAAAABABEADQABAAEAAAABAA8ADQABAAEAAAABAA4ADQABAAEAAAABAA0ADQABAAEAAAABAAwADQABAAEAAAAAABMADQABAAEAAAAAABEADQABAAEAAAAAABAADQABAAEAAAAAAA8ADQABAAEAAAAAAA4ADQABAAEAAAAAAA0ADQABAAEAAAAAAAwADQABAAEAAAD//xMADQABAAEAAAD//xEADQABAAEAAAD//xAADQABAAEAAAD//w8ADQABAAEAAAD//w4ADQABAAEAAAD//w0ADQABAAEAAAD//wwADQABAAEAAAD+/xMADQABAAEAAAD+/xIADQABAAEAAAD+/xEADQABAAEAAAD+/xAADQABAAEAAAD+/w8ADQABAAEAAAD+/w4ADQABAAEAAAD+/w0ADQABAAEAAAD+/wwADQABAAEAAAD9/xMADQABAAEAAAD9/xIADQABAAEAAAD9/xEADQABAAEAAAD9/xAADQABAAEAAAD9/w8ADQABAAEAAAD9/w4ADQABAAEAAAD9/w0ADQABAAEAAAD9/wwADQABAAEAAAABABcADQABAAEAAAABABYADQABAAEAAAABABUADQABAAEAAAABABgADQABAAEAAAAAABgADQABAAEAAAAAABcADQABAAEAAAAAABYADQABAAEAAAD//xgADQABAAEAAAD//xcADQABAAEAAAD//xYADQABAAEAAAD+/xgADQABAAEAAAD+/xcADQABAAEAAAD+/xYADQABAAEAAAD9/xgADQABAAEAAAD9/xcADQABAAEAAAD9/xYADQABAAEAAAABABQADQABAAEAAAAAABUADQABAAEAAAAAABQADQABAAEAAAD//xUADQABAAEAAAD//xQADQABAAEAAAD+/xUADQABAAEAAAD+/xQADQABAAEAAAD9/xUADQABAAEAAAD9/xQADQABAAEAAAABAB4ADQABAAEAAAABAB0ADQABAAEAAAABABwADQABAAEAAAABABsADQABAAEAAAABABoADQABAAEAAAABABkADQABAAEAAAAAAB4ADQABAAEAAAAAAB0ADQABAAEAAAAAABwADQABAAEAAAAAABsADQABAAEAAAAAABoADQABAAEAAAAAABkADQABAAEAAAD//x4ADQABAAEAAAD//x0ADQABAAEAAAD+/x4ADQABAAEAAAD+/x0ADQABAAEAAAD9/x4ADQABAAEAAAD9/x0ADQABAAEAAAD8/xgADQABAAEAAAD8/xcADQABAAEAAAD8/xYADQABAAEAAAD8/xUADQABAAEAAAD8/xQADQABAAEAAAD8/xMADQABAAEAAAD8/xIADQABAAEAAAD8/xEADQABAAEAAAD8/xAADQABAAEAAAD8/w8ADQABAAEAAAD8/w4ADQABAAEAAAD8/w0ADQABAAEAAAD8/wwADQABAAEAAAD7/xgADQABAAIAAAD7/xcADQABAAEAAAD7/xYADQABAAEAAAD7/xUADQABAAEAAAD7/wwADQABAAEAAAD6/xgADQABAAIAAAD6/xcADQABAAEAAAD6/xYADQABAAEAAAD5/xgADQABAAIAAAD5/xcADQABAAEAAAD5/xYADQABAAEAAAD4/xgADQABAAIAAAD4/xcADQABAAEAAAD4/xYADQABAAEAAAD3/xcADQABAAEAAAD3/xYADQABAAEAAAD2/xgADQABAAIAAAD2/xcADQABAAEAAAD2/xYADQABAAEAAAD1/xgADQABAAIAAAD1/xcADQABAAEAAAD1/xYADQABAAEAAAD0/xgADQABAAIAAAD0/xcADQABAAEAAAD0/xYADQAAAAEAAAD0/xUADQAAAAEAAAD0/wwADQABAAEAAADz/xgADQABAAIAAADz/xcADQABAAAAAADz/xQADQABAAIAAADz/xMADQACAAEAAADz/xIADQACAAEAAADz/xEADQABAAAAAADz/w4ADQABAAIAAADz/w0ADQABAAEAAADz/wwADQABAAEAAADy/xgADQABAAIAAADy/xcADQABAAAAAADy/xQADQABAAIAAADy/xMADQABAAEAAADy/xIADQABAAEAAADy/xEADQABAAAAAADy/w4ADQABAAIAAADy/w0ADQABAAEAAADy/wwADQABAAEAAADx/xgADQABAAIAAADx/xcADQABAAEAAADx/xYADQACAAEAAADx/xUADQACAAEAAADx/xQADQABAAEAAADx/xMADQABAAEAAADx/xIADQABAAEAAADx/xEADQABAAEAAADx/xAADQACAAEAAADx/w8ADQACAAEAAADx/w4ADQABAAEAAADx/w0ADQABAAEAAADx/wwADQABAAEAAADw/xgADQABAAIAAADw/xcADQABAAEAAADw/xYADQABAAEAAADw/xUADQABAAEAAADw/xQADQABAAEAAADw/xMADQABAAEAAADw/xIADQAAAAEAAADw/xEADQAAAAEAAADw/xAADQAAAAEAAADw/w8ADQAAAAEAAADw/w4ADQAAAAEAAADw/w0ADQABAAEAAADw/wwADQABAAEAAADv/xgADQABAAIAAADv/xcADQABAAEAAADv/xYADQABAAEAAADv/xUADQABAAEAAADv/xQADQABAAEAAADv/xMADQABAAAAAADv/w0ADQABAAIAAADv/wwADQABAAEAAADu/xgADQABAAEAAADu/xcADQABAAEAAADu/xYADQABAAEAAADu/xUADQABAAEAAADu/xQADQABAAEAAADu/xMADQABAAAAAADu/xEADQACAAIAAADu/w0ADQABAAIAAADu/wwADQABAAEAAADt/xgADQABAAEAAADt/xcADQABAAEAAADt/xYADQABAAEAAADt/xUADQABAAEAAADt/xQADQABAAEAAADt/xMADQABAAAAAADt/xEADQABAAIAAADt/w0ADQABAAIAAADt/wwADQABAAEAAADs/xgADQABAAEAAADs/xcADQABAAEAAADs/xYADQABAAEAAADs/xUADQABAAEAAADs/xQADQABAAEAAADs/xMADQABAAAAAADs/xEADQAAAAMAAADs/w0ADQABAAIAAADs/wwADQABAAEAAADr/xgADQABAAIAAADr/xcADQABAAEAAADr/xYADQABAAEAAADr/xUADQABAAEAAADr/xQADQABAAEAAADr/xMADQABAAAAAADr/w0ADQABAAIAAADr/wwADQABAAEAAADq/xgADQABAAIAAADq/xcADQABAAEAAADq/xYADQABAAEAAADq/xUADQABAAEAAADq/xQADQABAAEAAADq/xMADQABAAEAAADq/xIADQACAAEAAADq/xEADQACAAEAAADq/xAADQACAAEAAADq/w8ADQACAAEAAADq/w4ADQACAAEAAADq/w0ADQABAAEAAADq/wwADQABAAEAAADp/xgADQABAAIAAADp/xcADQABAAEAAADp/xYADQABAAEAAADp/xUADQABAAEAAADp/xQADQABAAEAAADp/xMADQABAAEAAADp/xIADQABAAEAAADp/xEADQABAAEAAADp/xAADQABAAEAAADp/w8ADQABAAEAAADp/w4ADQABAAEAAADp/w0ADQABAAEAAADp/wwADQABAAEAAADo/xgADQABAAIAAADo/xcADQABAAEAAADo/xYADQABAAEAAADo/xUADQABAAEAAADo/xQADQABAAEAAADo/xMADQABAAEAAADo/xIADQABAAEAAADo/xEADQABAAEAAADo/xAADQABAAEAAADo/w8ADQABAAEAAADo/w4ADQABAAEAAADo/w0ADQABAAEAAADo/wwADQABAAEAAADn/xgADQABAAIAAADn/xcADQABAAEAAADn/xYADQABAAEAAADn/xUADQABAAEAAADn/xQADQABAAEAAADn/xMADQABAAEAAADn/xIADQABAAEAAADn/xEADQABAAEAAADn/xAADQABAAEAAADn/w8ADQABAAEAAADn/w4ADQABAAEAAADn/w0ADQABAAEAAADn/wwADQABAAEAAAD8/x4ADQABAAEAAAD8/x0ADQABAAEAAAD7/x4ADQABAAEAAAD7/x0ADQABAAEAAAD6/x4ADQABAAEAAAD6/x0ADQABAAEAAAD5/x4ADQABAAEAAAD5/x0ADQABAAEAAAD4/x4ADQABAAEAAAD4/x0ADQABAAEAAAD3/x4ADQABAAEAAAD3/x0ADQABAAEAAAD2/x4ADQABAAEAAAD2/x0ADQABAAEAAAD1/x4ADQABAAEAAAD1/x0ADQABAAEAAAD0/x4ADQABAAEAAAD0/x0ADQABAAEAAADz/x4ADQABAAEAAADz/x0ADQABAAEAAADy/x4ADQABAAEAAADy/x0ADQABAAEAAADx/x4ADQABAAEAAADx/x0ADQABAAEAAADw/x4ADQABAAEAAADw/x0ADQABAAEAAADv/x4ADQABAAEAAADv/x0ADQABAAEAAADu/x4ADQABAAEAAADu/x0ADQABAAEAAADt/x4ADQABAAEAAADt/x0ADQABAAEAAADs/x4ADQABAAEAAADs/x0ADQABAAEAAADr/x4ADQABAAEAAADr/x0ADQABAAEAAADq/x4ADQABAAEAAADq/x0ADQABAAEAAADp/x4ADQABAAEAAADp/x0ADQABAAEAAADo/x4ADQABAAEAAADo/x0ADQABAAEAAADn/x4ADQABAAEAAADn/x0ADQABAAEAAADu/xwADQABAAEAAADu/xsADQACAAEAAADu/xoADQACAAEAAADu/xkADQACAAEAAADt/xwADQABAAEAAADt/xsADQABAAEAAADt/xoADQABAAEAAADt/xkADQABAAEAAADs/xwADQABAAEAAADs/xsADQAAAAEAAADs/xoADQAAAAEAAADs/xkADQAAAAEAAADm/xgADQABAAIAAADm/xcADQABAAEAAADm/xYADQABAAEAAADm/xUADQABAAEAAADm/xQADQABAAEAAADm/xMADQABAAEAAADm/xIADQABAAEAAADm/xEADQABAAEAAADm/xAADQABAAEAAADm/w8ADQABAAEAAADm/w4ADQABAAEAAADl/xgADQABAAIAAADl/xcADQABAAEAAADl/xYADQABAAEAAADl/xUADQABAAEAAADl/xQADQABAAEAAADl/xMADQABAAEAAADl/xIADQABAAEAAADl/xEADQABAAEAAADl/xAADQABAAEAAADl/w8ADQABAAEAAADl/w4ADQABAAEAAADk/xgADQABAAIAAADk/xcADQABAAEAAADk/xYADQABAAEAAADk/xUADQABAAEAAADk/xQADQABAAEAAADk/xMADQABAAEAAADk/xIADQABAAEAAADk/xEADQABAAEAAADk/xAADQABAAEAAADk/w8ADQABAAEAAADk/w4ADQABAAEAAADj/xgADQABAAIAAADj/xcADQABAAEAAADj/xYADQABAAEAAADj/xUADQABAAEAAADj/xQADQABAAEAAADj/xMADQABAAEAAADj/xIADQABAAEAAADj/xEADQABAAEAAADj/xAADQABAAEAAADj/w8ADQABAAEAAADj/w4ADQABAAEAAADi/xgADQABAAIAAADi/xcADQABAAEAAADi/xYADQABAAEAAADi/xUADQABAAEAAADi/xQADQABAAEAAADi/xMADQABAAEAAADi/xIADQABAAEAAADi/xEADQABAAEAAADi/xAADQABAAEAAADi/w8ADQABAAEAAADi/w4ADQABAAEAAADh/xgADQABAAEAAADh/xcADQABAAEAAADh/xYADQABAAEAAADh/xUADQABAAEAAADh/xQADQABAAEAAADh/xMADQABAAEAAADh/xIADQABAAEAAADh/xEADQABAAEAAADh/xAADQABAAEAAADh/w8ADQABAAEAAADh/w4ADQABAAEAAADg/xgADQABAAEAAADg/xcADQABAAEAAADg/xYADQABAAEAAADg/xUADQABAAEAAADg/xQADQABAAEAAADg/xMADQABAAEAAADg/xIADQABAAEAAADg/xEADQABAAEAAADg/xAADQABAAEAAADg/w8ADQABAAEAAADg/w4ADQABAAEAAADf/xgADQAAAAEAAADf/xcADQAAAAEAAADf/xYADQAAAAEAAADf/xUADQAAAAEAAADf/xQADQAAAAEAAADf/xMADQAAAAEAAADf/xIADQAAAAEAAADf/xEADQAAAAEAAADf/xAADQAAAAEAAADf/w8ADQAAAAEAAADf/w4ADQAAAAEAAADm/x4ADQABAAEAAADm/x0ADQABAAEAAADl/x4ADQABAAEAAADl/x0ADQABAAEAAADk/x4ADQABAAEAAADk/x0ADQABAAEAAADj/x4ADQABAAEAAADj/x0ADQABAAEAAADi/x4ADQABAAEAAADi/x0ADQABAAEAAADh/x4ADQABAAEAAADh/x0ADQABAAEAAADg/x4ADQABAAEAAADg/x0ADQABAAEAAADf/x4ADQAAAAEAAADf/x0ADQAAAAEAAADm/w0ADQABAAEAAADm/wwADQABAAEAAADl/w0ADQABAAEAAADl/wwADQABAAEAAADk/w0ADQABAAEAAADk/wwADQABAAEAAADj/w0ADQABAAEAAADj/wwADQABAAEAAADi/w0ADQABAAEAAADi/wwADQABAAEAAADh/w0ADQABAAEAAADh/wwADQABAAEAAADg/w0ADQABAAEAAADg/wwADQABAAEAAADf/w0ADQAAAAEAAADf/wwADQAAAAEAAAD7/xQADQABAAEAAAD7/xMADQABAAEAAAD6/xUADQABAAEAAAD6/xQADQABAAEAAAD6/xMADQABAAEAAAD5/xUADQABAAEAAAD5/xQADQABAAEAAAD5/xMADQABAAEAAAD1/xUADQABAAEAAAD1/xQADQABAAAAAAD0/xQADQABAAAAAAD7/xIADQABAAEAAAD6/xIADQABAAEAAAD7/xEADQABAAEAAAD7/xAADQABAAEAAAD7/w8ADQABAAEAAAD7/w4ADQABAAEAAAD7/w0ADQABAAEAAAD6/wwADQABAAEAAAD3/xgADQABAAIAAAD4/xQADQABAAEAAAD3/xQADQABAAEAAAD3/xUADQABAAEAAAD2/xUADQABAAEAAAD2/xQADQABAAEAAAD4/xUADQABAAEAAAD0/w0ADQABAAEAAAD0/w4ADQABAAIAAAD0/xEADQABAAMAAAD1/wwADQABAAEAAAD1/w0ADQABAAEAAAD1/w4ADQABAAEAAAD1/w8ADQAAAAEAAAD1/xAADQAAAAEAAAD1/xEADQABAAIAAAD2/wwADQABAAEAAAD2/w0ADQABAAEAAAD2/w4ADQABAAEAAAD2/w8ADQABAAEAAAD2/xAADQABAAEAAAD2/xEADQABAAEAAAD2/xIADQAAAAEAAAD2/xMADQAAAAEAAAD3/wwADQABAAEAAAD3/w0ADQABAAEAAAD3/w4ADQABAAEAAAD3/w8ADQABAAEAAAD3/xAADQABAAEAAAD3/xEADQABAAEAAAD3/xIADQABAAEAAAD3/xMADQABAAEAAAD4/wwADQABAAEAAAD4/w0ADQABAAEAAAD4/w4ADQABAAEAAAD4/w8ADQABAAEAAAD4/xAADQABAAEAAAD4/xEADQABAAEAAAD4/xIADQABAAEAAAD4/xMADQABAAEAAAD5/wwADQABAAEAAAD5/w0ADQABAAEAAAD5/w4ADQABAAEAAAD5/w8ADQABAAEAAAD5/xAADQABAAEAAAD5/xEADQABAAEAAAD5/xIADQABAAEAAAD6/w0ADQABAAEAAAD6/w4ADQABAAEAAAD6/w8ADQABAAEAAAD6/xAADQABAAEAAAD6/xEADQABAAEAAAD//xIADQABAAEAAAAAABIADQABAAEAAAABABAADQABAAEAAAD9/xkADQABAAEAAAD9/xoADQABAAEAAAD9/xsADQABAAEAAAD9/xwADQABAAEAAAD+/xkADQABAAEAAAD+/xoADQABAAEAAAD+/xsADQABAAEAAAD+/xwADQABAAEAAAD//xoADQABAAEAAAD//xkADQABAAEAAAD//xsADQABAAEAAAD//xwADQABAAEAAADg/xkADQABAAEAAADg/xoADQABAAEAAADg/xsADQABAAEAAADg/xwADQABAAEAAADf/xoADQAAAAEAAADf/xkADQAAAAEAAADf/xsADQAAAAEAAADf/xwADQAAAAEAAADv/xwADQABAAAAAADw/xwADQABAAAAAADx/xwADQABAAAAAADy/xwADQABAAAAAADz/xwADQABAAAAAAD0/xwADQABAAAAAAD1/xwADQABAAAAAAD2/xwADQABAAAAAAD3/xwADQABAAAAAAD4/xwADQABAAAAAAD5/xwADQABAAAAAAD6/xwADQABAAAAAAD7/xwADQABAAAAAAD8/xwADQABAAEAAADh/xwADQABAAEAAADi/xwADQABAAAAAADj/xwADQABAAAAAADk/xwADQABAAAAAADl/xwADQABAAAAAADm/xwADQABAAAAAADn/xwADQABAAAAAADo/xwADQABAAAAAADr/xwADQABAAAAAADq/xwADQABAAAAAADp/xwADQABAAAAAAD8/xkADQAAAAEAAAD8/xoADQAAAAEAAAD8/xsADQAAAAEAAADh/xkADQACAAEAAADh/xoADQACAAEAAADh/xsADQACAAEAAAA=") +tile_set = ExtResource("6_8xu72") +script = ExtResource("4_vodlh") + +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=20993245] +tile_map_data = PackedByteArray("AADv/w4AAAAAAAAAAADu/w4AAAAAAAAAAADt/w4AAAAAAAAAAADs/w4AAAAAAAAAAADr/w4AAAAAAAAAAADr/w8AAAAAAAAAAADr/xAAAAAAAAAAAADr/xEAAAAAAAAAAADr/xIAAAAAAAAAAADs/xIAAAAAAAAAAADt/xIAAAAAAAAAAADu/xIAAAAAAAAAAADv/xIAAAAAAAAAAAA=") +tile_set = ExtResource("8_iu48k") + +[node name="Elevation" type="TileMapLayer" parent="TileMapLayers" unique_id=498357614] +tile_map_data = PackedByteArray("AADv/xEABAACAAQAAADu/xEABAABAAQAAADt/xEABAABAAQAAADs/xEABAABAAQAAADr/xEABAAAAAIAAADr/xAABAADAAEAAADr/w8ABAADAAEAAADr/w4ABAADAAEAAADr/w0ABAAAAAAAAADs/w0ABAABAAQAAADt/w0ABAABAAQAAADu/w0ABAABAAQAAADv/w0ABAACAAQAAAA=") +tile_set = ExtResource("6_g4p32") + +[node name="Floor2" type="TileMapLayer" parent="TileMapLayers" unique_id=672172997] +tile_set = ExtResource("4_7v23v") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=604996739] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=1336289362 instance=ExtResource("4_rup4f")] +unique_name_in_owner = true +position = Vector2(-534, 1656) +scale = Vector2(1.03448, 1) +player_name = "Storyweaver" +sprite_frames = ExtResource("5_7gbyj") + +[node name="NeedlesPinsB" type="Node2D" parent="OnTheGround" unique_id=796494585] +y_sort_enabled = true +position = Vector2(-837, 1438) + +[node name="HookablePin2" parent="OnTheGround/NeedlesPinsB" unique_id=21265584 instance=ExtResource("6_vodlh")] +position = Vector2(135, -212) + +[node name="HookablePin3" parent="OnTheGround/NeedlesPinsB" unique_id=1514121521 instance=ExtResource("6_vodlh")] +position = Vector2(11, -15) + +[node name="HookablePin5" parent="OnTheGround/NeedlesPinsB" unique_id=1690329381 instance=ExtResource("6_vodlh")] +position = Vector2(21, 262) + +[node name="HookablePin6" parent="OnTheGround/NeedlesPinsB" unique_id=1707194744 instance=ExtResource("6_vodlh")] +position = Vector2(9, -402) + +[node name="FillGameLogic" type="Node" parent="OnTheGround" unique_id=318969364] +script = ExtResource("17_b7aom") +autostart = true +metadata/_custom_type_script = "uid://cp54mgi54nywo" + +[node name="ThrowingNPC" parent="OnTheGround" unique_id=1243855514 instance=ExtResource("18_iu48k")] +position = Vector2(-1341, 1682) +autostart = true +sprite_frames = ExtResource("13_w66m4") +idle_sound_stream = ExtResource("14_nev3j") +attack_sound_stream = ExtResource("15_4vuok") +projectile_scene = ExtResource("13_g4p32") +projectile_duration = 30.0 + +[node name="Target" parent="OnTheGround" unique_id=1861594411 instance=ExtResource("19_a36ca")] +position = Vector2(-1197, 1032) +label = "Cyan" +color = Color(0, 1, 1, 1) + +[node name="RepelPowerup" parent="OnTheGround" unique_id=1795462717 instance=ExtResource("17_w66m4")] +position = Vector2(-307, 1622) +sprite_frames = ExtResource("18_nev3j") +highlight_color = Color(0, 0.4392157, 1, 1) + +[node name="GrapplePowerup" parent="OnTheGround" unique_id=1564118198 instance=ExtResource("17_w66m4")] +position = Vector2(-307, 1770) +ability = 16 +ability_name = "Grapple" +interact_action = "Collect Grapple" +sprite_frames = ExtResource("18_mecxj") +highlight_color = Color(0.8910073, 0.7227245, 0, 1) + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1976326993] + +[node name="Camera2D" type="Camera2D" parent="." unique_id=1997394979] +position = Vector2(-1111, 1490) +scale = Vector2(1.03448, 1) +offset = Vector2(20.665, -176.085) +zoom = Vector2(0.72, 0.72) +limit_left = -2304 +limit_top = 146 +limit_right = 250 +limit_bottom = 2109 +position_smoothing_enabled = true +editor_draw_limits = true diff --git a/scenes/game_elements/characters/player/components/unify_abilities_test_projectile.tscn b/scenes/game_elements/characters/player/components/unify_abilities_test_projectile.tscn new file mode 100644 index 0000000000..916b590738 --- /dev/null +++ b/scenes/game_elements/characters/player/components/unify_abilities_test_projectile.tscn @@ -0,0 +1,59 @@ +[gd_scene format=3 uid="uid://xbgo0b3f50mw"] + +[ext_resource type="Script" uid="uid://bofv3bcwj3rx2" path="res://scenes/game_elements/props/projectile/components/projectile.gd" id="1_6uc4b"] +[ext_resource type="PackedScene" uid="uid://clgisducnnh0a" path="res://scenes/game_elements/fx/liquid_small_splat/liquid_small_splat.tscn" id="2_3cevt"] +[ext_resource type="PackedScene" uid="uid://b4qu6wml5gd7a" path="res://scenes/game_elements/fx/liquid_big_splat/liquid_big_splat.tscn" id="3_vc4n7"] +[ext_resource type="PackedScene" uid="uid://bgce3qns72g3m" path="res://scenes/game_elements/fx/liquid_trail.tscn" id="4_kxf4x"] +[ext_resource type="SpriteFrames" uid="uid://bhamin2pby7tq" path="res://scenes/game_elements/props/projectile/components/inkblob_spriteframes.tres" id="5_tb5uj"] +[ext_resource type="AudioStream" uid="uid://7jlv4wqpihl7" path="res://scenes/game_elements/props/projectile/components/blob_hit.wav" id="6_lff8h"] + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_tbgi4"] +friction = 0.0 +bounce = 1.0 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_o6xl0"] +size = Vector2(44, 44) + +[node name="InkBlobProjectile" type="RigidBody2D" unique_id=1611529190 groups=["projectiles"]] +collision_layer = 256 +collision_mask = 80 +mass = 0.3 +physics_material_override = SubResource("PhysicsMaterial_tbgi4") +gravity_scale = 0.0 +lock_rotation = true +continuous_cd = 2 +contact_monitor = true +max_contacts_reported = 1 +script = ExtResource("1_6uc4b") +hit_speed = 40.0 +duration = 30.0 +small_fx_scene = ExtResource("2_3cevt") +big_fx_scene = ExtResource("3_vc4n7") +trail_fx_scene = ExtResource("4_kxf4x") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1499726276] +shape = SubResource("RectangleShape2D_o6xl0") + +[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("5_tb5uj") +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 +stream = ExtResource("6_lff8h") +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/game_elements/characters/player/player.tscn b/scenes/game_elements/characters/player/player.tscn index 7224601992..b68c39e995 100644 --- a/scenes/game_elements/characters/player/player.tscn +++ b/scenes/game_elements/characters/player/player.tscn @@ -1,23 +1,24 @@ [gd_scene format=3 uid="uid://iu2q66clupc6"] [ext_resource type="Script" uid="uid://bwllxup305eib" path="res://scenes/game_elements/characters/player/components/player.gd" id="1_g2els"] +[ext_resource type="Script" uid="uid://c8xbryhknipab" path="res://scenes/game_logic/walk_behaviors/input_walk_behavior.gd" id="2_5lbww"] +[ext_resource type="Script" uid="uid://dajod2qsesqte" path="res://scenes/game_elements/characters/player/components/player_harm.gd" id="2_8jhju"] [ext_resource type="SpriteFrames" uid="uid://vwf8e1v8brdp" path="res://scenes/quests/template_quests/NO_EDIT/NO_EDIT_player_components/NO_EDIT_player.tres" id="2_blfj0"] +[ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="3_cvb4d"] [ext_resource type="Script" uid="uid://bpu6jo4kvehlg" path="res://scenes/game_elements/characters/player/components/player_interaction.gd" id="3_dqkch"] -[ext_resource type="Script" uid="uid://ciw2w16c38ewq" path="res://scenes/game_elements/characters/player/components/player_dust_particles.gd" id="3_j0tly"] [ext_resource type="Script" uid="uid://qro4uo83ba8f" path="res://scenes/game_elements/characters/player/components/player_sprite.gd" id="3_qlg0r"] -[ext_resource type="Script" uid="uid://necvar42rnih" path="res://scenes/game_elements/characters/player/components/interact_zone.gd" id="6_3in67"] -[ext_resource type="PackedScene" uid="uid://yfpfno276rol" path="res://scenes/game_elements/props/fixed_size_label/fixed_size_label.tscn" id="6_h17s1"] +[ext_resource type="Script" uid="uid://necvar42rnih" path="res://scenes/game_elements/props/character_sight/character_sight.gd" id="6_3in67"] [ext_resource type="Script" uid="uid://e78f8iq448e1" path="res://scenes/game_elements/characters/player/components/animation_player.gd" id="7_0owmy"] -[ext_resource type="Script" uid="uid://kni2yl26matc" path="res://scenes/game_elements/characters/player/components/player_fighting.gd" id="7_5gtgg"] -[ext_resource type="Texture2D" uid="uid://dda0lxfswrncy" path="res://scenes/game_elements/characters/player/components/blow.png" id="9_je7p5"] -[ext_resource type="AudioStream" uid="uid://crfylo055wa8e" path="res://scenes/game_elements/characters/player/components/blow.wav" id="10_fm80t"] [ext_resource type="AudioStream" uid="uid://cx6jv2cflrmqu" path="res://assets/third_party/sounds/characters/player/Foot.ogg" id="11_blfj0"] -[ext_resource type="Script" uid="uid://b7704hdflt5t8" path="res://scenes/game_elements/characters/player/components/player_hook.gd" id="11_nrnyj"] [ext_resource type="Texture2D" uid="uid://dxaq5piwxqnht" path="res://scenes/game_elements/characters/player/components/dust.png" id="12_3in67"] -[ext_resource type="PackedScene" uid="uid://b0dehcnfo68j1" path="res://scenes/game_elements/props/hook_control/hook_control.tscn" id="13_ecbbk"] +[ext_resource type="PackedScene" uid="uid://cl06pid826dtg" path="res://scenes/game_elements/characters/player/components/player_repel.tscn" id="12_tnibl"] +[ext_resource type="PackedScene" uid="uid://b3111eergq5yg" path="res://scenes/game_elements/characters/player/components/player_hook.tscn" id="13_ecbbk"] +[ext_resource type="Script" uid="uid://bk52qjv58locq" path="res://scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd" id="16_ecbbk"] +[ext_resource type="Texture2D" uid="uid://b5ooaiyxdrp6a" path="res://scenes/game_elements/components/light_texture_256x256.tres" id="16_tnibl"] -[sub_resource type="RectangleShape2D" id="RectangleShape2D_je7p5"] -size = Vector2(32, 47) +[sub_resource type="Resource" id="Resource_cvb4d"] +script = ExtResource("3_cvb4d") +metadata/_custom_type_script = "uid://csev4hv57utxv" [sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_j0tly"] blend_mode = 1 @@ -55,8 +56,6 @@ particle_flag_disable_z = true emission_shape = 1 emission_sphere_radius = 25.0 spread = 0.0 -initial_velocity_min = -40.0 -initial_velocity_max = -10.0 directional_velocity_min = 1.0 directional_velocity_max = 1.0 directional_velocity_curve = SubResource("CurveXYZTexture_3in67") @@ -72,54 +71,6 @@ height = 42.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_blfj0"] size = Vector2(110, 80) -[sub_resource type="CircleShape2D" id="CircleShape2D_h17s1"] -radius = 20.0 - -[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_je7p5"] -blend_mode = 1 - -[sub_resource type="Animation" id="Animation_wvgcx"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("../PlayerSprite:modulate") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} - -[sub_resource type="Animation" id="Animation_4ypcv"] -resource_name = "got_hit" -length = 0.3 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("../PlayerSprite:modulate") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.3), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_1n58k"] -_data = { -&"RESET": SubResource("Animation_wvgcx"), -&"got_hit": SubResource("Animation_4ypcv") -} - -[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_75vfm"] -closed = false -cull_mode = 1 -polygon = PackedVector2Array(7, 7, 24, -20, 14, -49, -3, -74, -17, -61, -17, -42, -31, -42, -27, -8, 6, 7) - [sub_resource type="Animation" id="Animation_0owmy"] length = 0.001 tracks/0/type = "value" @@ -146,78 +97,6 @@ tracks/1/keys = { "update": 0, "values": [&"idle"] } -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("PlayerFighting/AirStream/AirStreamCollision:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("PlayerFighting/AirStream/AirStreamCollision:shape:radius") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [20.0] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("PlayerFighting/AirStream:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, -24)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("PlayerFighting/AirStream/Sprite2D:visible") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("PlayerFighting/AirStream/Sprite2D:scale") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0.12577, 0.12577)] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("PlayerFighting/AirStream/Sprite2D:modulate") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} [sub_resource type="Animation" id="Animation_blfj0"] resource_name = "defeated" @@ -280,119 +159,31 @@ tracks/1/keys = { [sub_resource type="Animation" id="Animation_u5klv"] resource_name = "repel" length = 0.6 -loop_mode = 1 step = 0.1 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("PlayerFighting/AirStream/AirStreamCollision:disabled") +tracks/0/path = NodePath("PlayerSprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 0.3, 0.6), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 1, -"values": [true, false, true] +"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), +"update": 0, +"values": [0, 0, 0, 1, 2, 3, 3] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("PlayerSprite:frame") +tracks/1/path = NodePath("PlayerSprite:animation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { -"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1), -"update": 0, -"values": [0, 0, 0, 1, 2, 3, 3] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("PlayerSprite:animation") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [&"attack_02"] } -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("PlayerFighting/AirStream/AirStreamCollision:shape:radius") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0.3, 0.6), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [20.0, 150.0] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("PlayerFighting/AirStream:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, -24)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("PlayerFighting/AirStream/Sprite2D:visible") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0, 0.3, 0.6), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 1, -"values": [false, true, false] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("PlayerFighting/AirStream/Sprite2D:scale") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0.3, 0.6), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Vector2(0.12577, 0.12577), Vector2(1, 1)] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("PlayerFighting/AirStream/Sprite2D:modulate") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0.3, 0.5, 0.6), -"transitions": PackedFloat32Array(2, 0.5, 0.5), -"update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0.456), Color(1, 1, 1, 0)] -} -tracks/8/type = "audio" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("PlayerFighting/AirStream/AudioStreamPlayer2D") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"clips": [{ -"end_offset": 0.0, -"start_offset": 0.0, -"stream": ExtResource("10_fm80t") -}], -"times": PackedFloat32Array(0.3) -} -tracks/8/use_blend = true [sub_resource type="Animation" id="Animation_nrnyj"] resource_name = "run" @@ -518,35 +309,73 @@ _data = { &"walk": SubResource("Animation_qek5x") } +[sub_resource type="RectangleShape2D" id="RectangleShape2D_je7p5"] +size = Vector2(32, 47) + +[sub_resource type="Animation" id="Animation_wvgcx"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("../PlayerSprite:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} + +[sub_resource type="Animation" id="Animation_4ypcv"] +resource_name = "got_hit" +length = 0.3 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("../PlayerSprite:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_1n58k"] +_data = { +&"RESET": SubResource("Animation_wvgcx"), +&"got_hit": SubResource("Animation_4ypcv") +} + [node name="Player" type="CharacterBody2D" unique_id=296354958 groups=["player"]] collision_mask = 531 motion_mode = 1 wall_min_slide_angle = 0.017453292 safe_margin = 1.0 script = ExtResource("1_g2els") +speeds = SubResource("Resource_cvb4d") -[node name="HitBox" type="Area2D" parent="." unique_id=1910507610] +[node name="InputWalkBehavior" type="Node2D" parent="." unique_id=1817340985 node_paths=PackedStringArray("character")] unique_name_in_owner = true -collision_layer = 64 -collision_mask = 256 - -[node name="CollisionShape2D" type="CollisionShape2D" parent="HitBox" unique_id=1807630823] -position = Vector2(0, -28.5) -shape = SubResource("RectangleShape2D_je7p5") -debug_color = Color(0.94902, 0.231373, 0, 0.419608) +script = ExtResource("2_5lbww") +speeds = SubResource("Resource_cvb4d") +character = NodePath("..") +metadata/_custom_type_script = "uid://c8xbryhknipab" [node name="PlayerDustParticles" type="GPUParticles2D" parent="." unique_id=785276606] unique_name_in_owner = true modulate = Color(1, 1, 1, 0.498039) material = SubResource("CanvasItemMaterial_j0tly") position = Vector2(0, -6) +emitting = false amount = 6 texture = ExtResource("12_3in67") lifetime = 0.5 randomness = 0.6 fixed_fps = 10 process_material = SubResource("ParticleProcessMaterial_nrnyj") -script = ExtResource("3_j0tly") [node name="PlayerSprite" type="AnimatedSprite2D" parent="." unique_id=1785485617] unique_name_in_owner = true @@ -560,84 +389,45 @@ script = ExtResource("3_qlg0r") rotation = -1.5708 shape = SubResource("CapsuleShape2D_3vyb7") -[node name="PlayerInteraction" type="Node2D" parent="." unique_id=1260226520] +[node name="PointLight2D" type="PointLight2D" parent="." unique_id=460659966 groups=["night-lights"]] +visible = false +visibility_layer = 2 +scale = Vector2(4, 3) +enabled = false +energy = 0.5 +texture = ExtResource("16_tnibl") + +[node name="ArtificialLightBehavior" type="Node" parent="PointLight2D" unique_id=789625383 node_paths=PackedStringArray("light")] +editor_description = "There is no random delay applied here, because we want the area around the player to be illuminated as soon as it becomes dark." +script = ExtResource("16_ecbbk") +light = NodePath("..") +metadata/_custom_type_script = "uid://bk52qjv58locq" + +[node name="PlayerInteraction" type="Node2D" parent="." unique_id=1260226520 node_paths=PackedStringArray("character")] unique_name_in_owner = true script = ExtResource("3_dqkch") +character = NodePath("..") -[node name="InteractZone" type="Area2D" parent="PlayerInteraction" unique_id=888605377 node_paths=PackedStringArray("character")] +[node name="CharacterSight" type="Area2D" parent="PlayerInteraction" unique_id=888605377 node_paths=PackedStringArray("character")] unique_name_in_owner = true collision_layer = 0 collision_mask = 32 script = ExtResource("6_3in67") character = NodePath("../..") -[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerInteraction/InteractZone" unique_id=255765935] +[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerInteraction/CharacterSight" unique_id=255765935] position = Vector2(47, -30) shape = SubResource("RectangleShape2D_blfj0") debug_color = Color(0.600391, 0.54335, 0, 0.42) -[node name="InteractMarker" type="Marker2D" parent="PlayerInteraction" unique_id=439387414] -unique_name_in_owner = true -position = Vector2(-1, -116) - -[node name="InteractLabel" parent="PlayerInteraction/InteractMarker" unique_id=554498577 instance=ExtResource("6_h17s1")] -unique_name_in_owner = true -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 1.0 -offset_top = 11.0 -offset_right = 1.0 -offset_bottom = 11.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="PlayerFighting" type="Node2D" parent="." unique_id=1745412343] -unique_name_in_owner = true -process_mode = 4 -visible = false -script = ExtResource("7_5gtgg") - -[node name="AirStream" type="Area2D" parent="PlayerFighting" unique_id=642627191] +[node name="PlayerRepel" parent="." unique_id=1324972992 instance=ExtResource("12_tnibl")] unique_name_in_owner = true position = Vector2(0, -24) -collision_layer = 0 -collision_mask = 256 - -[node name="AirStreamCollision" type="CollisionShape2D" parent="PlayerFighting/AirStream" unique_id=2073501549] -unique_name_in_owner = true -shape = SubResource("CircleShape2D_h17s1") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="PlayerFighting/AirStream" unique_id=2035148168] -visible = false -material = SubResource("CanvasItemMaterial_je7p5") -scale = Vector2(0.12577, 0.12577) -texture = ExtResource("9_je7p5") - -[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="PlayerFighting/AirStream" unique_id=25920746] -bus = &"SFX" - -[node name="GotHitAnimation" type="AnimationPlayer" parent="PlayerFighting" unique_id=1067804411] -unique_name_in_owner = true -libraries/ = SubResource("AnimationLibrary_1n58k") -[node name="PlayerHook" type="Node2D" parent="." unique_id=1215042910 groups=["hook_listener"]] +[node name="PlayerHook" parent="." unique_id=1972626703 node_paths=PackedStringArray("character") instance=ExtResource("13_ecbbk")] unique_name_in_owner = true -process_mode = 4 -visible = false position = Vector2(0, -20) -script = ExtResource("11_nrnyj") - -[node name="HookControl" parent="PlayerHook" unique_id=1395550080 instance=ExtResource("13_ecbbk")] -state = 1 - -[node name="HookEnding" type="Marker2D" parent="PlayerHook" unique_id=94764927] - -[node name="LightOccluder2D" type="LightOccluder2D" parent="." unique_id=747608118] -visible = false -occluder = SubResource("OccluderPolygon2D_75vfm") -sdf_collision = false +character = NodePath("..") [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=683750023] unique_name_in_owner = true @@ -650,3 +440,26 @@ stream = ExtResource("11_blfj0") volume_db = -5.0 pitch_scale = 7.0 bus = &"SFX" + +[node name="PlayerHarm" type="Node2D" parent="." unique_id=794226595] +script = ExtResource("2_8jhju") + +[node name="HitBox" type="Area2D" parent="PlayerHarm" unique_id=1910507610] +unique_name_in_owner = true +collision_layer = 64 +collision_mask = 256 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerHarm/HitBox" unique_id=1807630823] +position = Vector2(0, -28.5) +shape = SubResource("RectangleShape2D_je7p5") +debug_color = Color(0.94902, 0.231373, 0, 0.419608) + +[node name="GotHitAnimation" type="AnimationPlayer" parent="PlayerHarm" unique_id=1067804411] +unique_name_in_owner = true +root_node = NodePath("../../PlayerRepel") +libraries/ = SubResource("AnimationLibrary_1n58k") + +[connection signal="running_changed" from="InputWalkBehavior" to="PlayerDustParticles" method="set_emitting"] +[connection signal="running_changed" from="InputWalkBehavior" to="AnimationPlayer" method="_on_input_walk_behavior_running_changed"] +[connection signal="aiming_changed" from="PlayerHook" to="." method="_on_player_hook_aiming_changed"] +[connection signal="body_entered" from="PlayerHarm/HitBox" to="PlayerHarm" method="_on_hit_box_body_entered"] diff --git a/scenes/game_elements/components/cel_shading_recolor.gd b/scenes/game_elements/components/cel_shading_recolor.gd index 0de77f578b..91bff0ad51 100644 --- a/scenes/game_elements/components/cel_shading_recolor.gd +++ b/scenes/game_elements/components/cel_shading_recolor.gd @@ -159,9 +159,11 @@ func colorize() -> void: ## Pick a random color from [constant SKIN_COLORS] and automatically set all shades from it. -func set_random_skin_color() -> void: +func set_random_skin_color(rng: RandomNumberGenerator = null) -> void: automatic_shades = true - medium_color = SKIN_COLORS.values().pick_random() + var random_int: int = rng.randi() if rng else randi() + var index := random_int % SKIN_COLORS.size() + medium_color = SKIN_COLORS.values()[index] func _get_configuration_warnings() -> PackedStringArray: diff --git a/scenes/game_elements/components/custom_hookable_objects_test.tscn b/scenes/game_elements/components/custom_hookable_objects_test.tscn new file mode 100644 index 0000000000..e04839a771 --- /dev/null +++ b/scenes/game_elements/components/custom_hookable_objects_test.tscn @@ -0,0 +1,284 @@ +[gd_scene format=4 uid="uid://s7y5x5caaah3"] + +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="2_1is7x"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="3_3tad6"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="4_3uytt"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="5_717he"] +[ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="6_obhrw"] +[ext_resource type="TileSet" uid="uid://41pk6xbhypue" path="res://tiles/fence.tres" id="7_5lu30"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="8_2l846"] +[ext_resource type="SpriteFrames" uid="uid://cxjwwgm86d6it" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_red.tres" id="9_powm1"] +[ext_resource type="PackedScene" uid="uid://dkpelgxwtvcxd" path="res://scenes/game_elements/props/hookable_box/hookable_box.tscn" id="11_b1u67"] +[ext_resource type="PackedScene" uid="uid://d37mebu7atru7" path="res://scenes/game_elements/characters/enemies/guard/guard.tscn" id="13_rna1f"] +[ext_resource type="SpriteFrames" uid="uid://qwlhm21ndgn2" path="res://scenes/game_elements/characters/enemies/guard/components/storyvore_frames_orange.tres" id="14_1is7x"] +[ext_resource type="PackedScene" uid="uid://c47lkkvljrsg" path="res://scenes/game_elements/props/hookable_lever/hookable_lever.tscn" id="14_esoiq"] +[ext_resource type="AudioStream" uid="uid://dgpeb1dtmfqud" path="res://assets/third_party/sounds/characters/enemies/guard/AlertSound.ogg" id="15_3tad6"] +[ext_resource type="PackedScene" uid="uid://dohb701lxbe5s" path="res://scenes/game_elements/props/hookable_needle/hookable_needle.tscn" id="15_bhn5g"] +[ext_resource type="AudioStream" uid="uid://4ec6e2alns71" path="res://assets/third_party/sounds/characters/enemies/guard/GrassFoot.ogg" id="16_3uytt"] +[ext_resource type="AudioStream" uid="uid://c7om8kdork2rx" path="res://assets/third_party/sounds/characters/enemies/guard/Torch.ogg" id="17_717he"] +[ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="18_d3uwq"] +[ext_resource type="AudioStream" uid="uid://bwif2oo6ymiu2" path="res://assets/third_party/sounds/characters/enemies/guard/TorchHit.ogg" id="18_obhrw"] +[ext_resource type="Script" uid="uid://dnp0tjloec2d7" path="res://scenes/game_logic/stealth_game_logic.gd" id="20_rna1f"] +[ext_resource type="Script" uid="uid://c5jp8y8mpge4w" path="res://scenes/world_map/components/ToggleableTileMapLayer.gd" id="20_tbxxm"] + +[sub_resource type="Gradient" id="Gradient_5j6h7"] +interpolation_mode = 2 +interpolation_color_space = 2 +colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_3tad6"] +gradient = SubResource("Gradient_5j6h7") +width = 256 +height = 256 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(0, 0.5) +metadata/_snap_enabled = true + +[sub_resource type="Curve2D" id="Curve2D_rna1f"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 17, 2.9580078, 0, 0, 0, 0, 721, 2.9580078, 0, 0, 0, 0, 721, 194.95801, 0, 0, 0, 0, 1425, 194.95801) +} +point_count = 4 + +[node name="CustomHookableObjectsTest" type="Node2D" unique_id=324172432] + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=1129826282] + +[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=1017266357] +tile_map_data = PackedByteArray("AAABAP//AAAAAAAAAAACAP//AAAAAAAAAAADAP//AAAAAAAAAAAEAP//AAAAAAAAAAAFAP//AAAAAAAAAAAGAP//AAAAAAAAAAAHAP//AAAAAAAAAAAIAP//AAAAAAAAAAAJAP//AAAAAAAAAAAKAP//AAAAAAAAAAALAP//AAAAAAAAAAAMAP//AAAAAAAAAAAMAP7/AAAAAAAAAAALAP7/AAAAAAAAAAAKAP7/AAAAAAAAAAAJAP7/AAAAAAAAAAAIAP7/AAAAAAAAAAAHAP7/AAAAAAAAAAAGAP7/AAAAAAAAAAAFAP7/AAAAAAAAAAAEAP7/AAAAAAAAAAADAP7/AAAAAAAAAAACAP7/AAAAAAAAAAABAP7/AAAAAAAAAAAAAP7/AAAAAAAAAAD///7/AAAAAAAAAAABAAAAAAAAAAAAAAABAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAD/////AAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAAAAAUAAAAAAAAAAAABAAUAAAAAAAAAAAABAAQAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAD//wgAAAAAAAAAAAD//wcAAAAAAAAAAAD//wYAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAQAAcAAAAAAAAAAAARAAcAAAAAAAAAAAASAAcAAAAAAAAAAAATAAcAAAAAAAAAAAAUAAcAAAAAAAAAAAAQAAkAAAAAAAAAAAARAAkAAAAAAAAAAAASAAkAAAAAAAAAAAATAAkAAAAAAAAAAAAUAAkAAAAAAAAAAAAUAAoAAAAAAAAAAAATAAoAAAAAAAAAAAASAAoAAAAAAAAAAAARAAoAAAAAAAAAAAAQAAoAAAAAAAAAAAAQAAYAAAAAAAAAAAARAAYAAAAAAAAAAAASAAYAAAAAAAAAAAATAAYAAAAAAAAAAAAUAAYAAAAAAAAAAAAQAAsAAAAAAAAAAAARAAsAAAAAAAAAAAASAAsAAAAAAAAAAAATAAsAAAAAAAAAAAAUAAsAAAAAAAAAAAANAP7/AAAAAAAAAAAOAP7/AAAAAAAAAAAPAP7/AAAAAAAAAAAQAP7/AAAAAAAAAAARAP7/AAAAAAAAAAASAP7/AAAAAAAAAAATAP7/AAAAAAAAAAAUAP7/AAAAAAAAAAAVAP7/AAAAAAAAAAAVAP//AAAAAAAAAAAUAP//AAAAAAAAAAATAP//AAAAAAAAAAASAP//AAAAAAAAAAARAP//AAAAAAAAAAAQAP//AAAAAAAAAAAPAP//AAAAAAAAAAAOAP//AAAAAAAAAAANAP//AAAAAAAAAAAUAAQAAAAAAAAAAAAUAAUAAAAAAAAAAAATAAQAAAAAAAAAAAATAAUAAAAAAAAAAAARAAQAAAAAAAAAAAARAAUAAAAAAAAAAAAQAAUAAAAAAAAAAAAQAAQAAAAAAAAAAAASAAQAAAAAAAAAAQASAAUAAAAAAAAAAQAQAAgAAAAAAAAAAQARAAgAAAAAAAAAAQASAAgAAAAAAAAAAQATAAgAAAAAAAAAAQAUAAgAAAAAAAAAAQAVAAQAAAAAAAAAAAAWAAQAAAAAAAAAAAAXAAQAAAAAAAAAAAAYAAQAAAAAAAAAAAAZAAQAAAAAAAAAAAAZAAUAAAAAAAAAAAAYAAUAAAAAAAAAAAAXAAUAAAAAAAAAAAAWAAUAAAAAAAAAAAAVAAUAAAAAAAAAAAAaAAQAAAAAAAAAAAAbAAQAAAAAAAAAAAAbAAUAAAAAAAAAAAAbAAYAAAAAAAAAAAAaAAUAAAAAAAAAAAAaAAYAAAAAAAAAAAAaAAcAAAAAAAAAAAAaAAgAAAAAAAAAAAAbAAgAAAAAAAAAAAAbAAcAAAAAAAAAAAAaAAkAAAAAAAAAAAAbAAkAAAAAAAAAAAAbAAoAAAAAAAAAAAAaAAoAAAAAAAAAAAAaAAsAAAAAAAAAAAAbAAsAAAAAAAAAAAAbAAwAAAAAAAAAAAAaAAwAAAAAAAAAAAAZAAwAAAAAAAAAAAAYAAwAAAAAAAAAAAAXAAwAAAAAAAAAAAAWAAwAAAAAAAAAAAAWAAsAAAAAAAAAAAAVAAsAAAAAAAAAAAASAAwAAAAAAAAAAAARAAwAAAAAAAAAAAAQAAwAAAAAAAAAAAATAAwAAAAAAAAAAAAUAAwAAAAAAAAAAAAVAAwAAAAAAAAAAAAXAAsAAAAAAAAAAAAYAAsAAAAAAAAAAAAZAAsAAAAAAAAAAAAPAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAALAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAAFAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAADAAsAAAAAAAAAAAACAAsAAAAAAAAAAAABAAsAAAAAAAAAAAAAAAsAAAAAAAAAAAD//wsAAAAAAAAAAAD//wwAAAAAAAAAAAAAAAwAAAAAAAAAAAABAAwAAAAAAAAAAAACAAwAAAAAAAAAAAADAAwAAAAAAAAAAAAEAAwAAAAAAAAAAAAFAAwAAAAAAAAAAAAGAAwAAAAAAAAAAAAHAAwAAAAAAAAAAAAIAAwAAAAAAAAAAAAJAAwAAAAAAAAAAAAKAAwAAAAAAAAAAAALAAwAAAAAAAAAAAAMAAwAAAAAAAAAAAANAAwAAAAAAAAAAAAOAAwAAAAAAAAAAAAPAAwAAAAAAAAAAAAVAAMAAAAAAAAAAAAVAAIAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAAAAAAAAAAAAAAWAP7/AAAAAAAAAAAXAP7/AAAAAAAAAAAYAP7/AAAAAAAAAAAZAP7/AAAAAAAAAAAaAP7/AAAAAAAAAAAbAP7/AAAAAAAAAAAbAP//AAAAAAAAAAAbAAAAAAAAAAAAAAAbAAEAAAAAAAAAAAAbAAIAAAAAAAAAAAAbAAMAAAAAAAAAAAAaAAMAAAAAAAAAAAAZAAMAAAAAAAAAAAAYAAMAAAAAAAAAAAAXAAMAAAAAAAAAAAAWAAMAAAAAAAAAAAAWAAIAAAAAAAAAAAAWAAEAAAAAAAAAAAAWAAAAAAAAAAAAAAAWAP//AAAAAAAAAAAXAP//AAAAAAAAAAAYAP//AAAAAAAAAAAZAP//AAAAAAAAAAAZAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAaAAEAAAAAAAAAAAAZAAEAAAAAAAAAAAAZAAIAAAAAAAAAAAAYAAIAAAAAAAAAAAAYAAEAAAAAAAAAAAAXAAEAAAAAAAAAAAAXAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAXAAIAAAAAAAAAAAAaAAIAAAAAAAAAAAAaAP//AAAAAAAAAAAQAAIAAAAAAAAAAAAQAAMAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAEAAAAAAAAAAQAcAP7/AAAAAAAAAAAcAP//AAAAAAAAAAAcAAAAAAAAAAAAAAAcAAEAAAAAAAAAAAAcAAIAAAAAAAAAAAAcAAMAAAAAAAAAAAAcAAQAAAAAAAAAAAAcAAUAAAAAAAAAAAAcAAYAAAAAAAAAAAAcAAcAAAAAAAAAAAAcAAgAAAAAAAAAAAAcAAkAAAAAAAAAAAAcAAoAAAAAAAAAAAAcAAsAAAAAAAAAAAAcAAwAAAAAAAAAAAD//w0AAAAAAAAAAAAAAA0AAAAAAAAAAAABAA0AAAAAAAAAAAACAA0AAAAAAAAAAAADAA0AAAAAAAAAAAAEAA0AAAAAAAAAAAAFAA0AAAAAAAAAAAAGAA0AAAAAAAAAAAAHAA0AAAAAAAAAAAAIAA0AAAAAAAAAAAAJAA0AAAAAAAAAAAAKAA0AAAAAAAAAAAALAA0AAAAAAAAAAAAMAA0AAAAAAAAAAAANAA0AAAAAAAAAAAAOAA0AAAAAAAAAAAAPAA0AAAAAAAAAAAAQAA0AAAAAAAAAAAARAA0AAAAAAAAAAAAcAA0AAAAAAAAAAAAbAA0AAAAAAAAAAAAaAA0AAAAAAAAAAAAZAA0AAAAAAAAAAAAYAA0AAAAAAAAAAAAXAA0AAAAAAAAAAAAWAA0AAAAAAAAAAAAVAA0AAAAAAAAAAAAUAA0AAAAAAAAAAAATAA0AAAAAAAAAAAASAA0AAAAAAAAAAAD+//7/AAAAAAAAAAD+////AAAAAAAAAAD+/wAAAAAAAAAAAAD+/wEAAAAAAAAAAAD+/wIAAAAAAAAAAAD+/wMAAAAAAAAAAAD+/wQAAAAAAAAAAAD+/wUAAAAAAAAAAAD+/wYAAAAAAAAAAAD+/wcAAAAAAAAAAAD+/wgAAAAAAAAAAAD+/wkAAAAAAAAAAAD+/woAAAAAAAAAAAD+/wsAAAAAAAAAAAD+/wwAAAAAAAAAAAD+/w0AAAAAAAAAAAA=") +tile_set = ExtResource("2_1is7x") + +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=453712517] +tile_map_data = PackedByteArray("AAASAAUAAAAAAAAAAAASAAYAAAAAAAAAAAAVAAsAAAAAAAAAAAAWAAsAAAAAAAAAAAAXAAsAAAAAAAAAAAAYAAsAAAAAAAAAAAAZAAsAAAAAAAAAAAAVAAcAAAAAAAAAAAAVAAgAAAAAAAAAAAAVAAkAAAAAAAAAAAAVAAoAAAAAAAAAAAAZAAcAAAAAAAAAAAAZAAgAAAAAAAAAAAAZAAkAAAAAAAAAAAAZAAoAAAAAAAAAAAARAAQAAAAAAAAAAAASAAQAAAAAAAAAAAATAAQAAAAAAAAAAAAUAAQAAAAAAAAAAAARAAMAAAAAAAAAAAAUAAEAAAAAAAAAAAAUAAIAAAAAAAAAAAAUAAMAAAAAAAAAAAAPAAIAAAAAAAAAAAAPAAMAAAAAAAAAAAAPAAQAAAAAAAAAAAAPAAUAAAAAAAAAAAAPAAYAAAAAAAAAAAAPAAcAAAAAAAAAAAAPAAgAAAAAAAAAAAAPAAkAAAAAAAAAAAAPAAoAAAAAAAAAAAAPAAsAAAAAAAAAAAD//wsAAAAAAAAAAAAAAAsAAAAAAAAAAAABAAsAAAAAAAAAAAACAAsAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAAFAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAD//woAAAAAAAAAAAACAAEAAAAAAAAAAAACAAIAAAAAAAAAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAACAAUAAAAAAAAAAAACAAYAAAAAAAAAAAACAAcAAAAAAAAAAAACAAgAAAAAAAAAAAARAAEAAAAAAAAAAAARAAIAAAAAAAAAAAAPAAEAAAAAAAAAAAA=") +tile_set = ExtResource("3_3tad6") + +[node name="BridgeShadows" type="TileMapLayer" parent="TileMapLayers" unique_id=1489783672] +tile_map_data = PackedByteArray("AAAQAAkAAwACAAMAAAARAAkAAwACAAMAAAASAAkAAwACAAMAAAATAAkAAwACAAMAAAAUAAkAAwACAAMAAAAQAAIAAwACAAMAAAA=") +tile_set = ExtResource("6_obhrw") + +[node name="ElevationLow" type="TileMapLayer" parent="TileMapLayers" unique_id=356899944] +tile_map_data = PackedByteArray("AAD//woABAAAAAQAAAAAAAoABAABAAQAAAABAAoABAABAAQAAAACAAoABAABAAQAAAADAAoABAABAAQAAAAEAAoABAABAAQAAAAFAAoABAABAAQAAAAGAAoABAABAAQAAAAHAAoABAABAAQAAAAIAAoABAABAAQAAAAJAAoABAABAAQAAAAKAAoABAABAAQAAAALAAoABAABAAQAAAAMAAoABAABAAQAAAANAAoABAABAAQAAAAOAAoABAABAAQAAAAPAAoABAACAAQAAAARAAMABAAAAAQAAAASAAMABAABAAQAAAATAAMABAABAAQAAAAUAAMABAACAAQAAAAVAAoABAAAAAQAAAAWAAoABAABAAQAAAAXAAoABAABAAQAAAAYAAoABAABAAQAAAAZAAoABAACAAQAAAA=") +tile_set = ExtResource("4_3uytt") +occlusion_enabled = false +collision_enabled = false + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=102871699] +tile_map_data = PackedByteArray("AAALAAgAAQABAAEAAAALAAcAAQABAAEAAAALAAYAAQABAAEAAAALAAUAAQABAAEAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAEAAAAKAAgAAQABAAEAAAAKAAcAAQABAAEAAAAKAAYAAQABAAEAAAAKAAUAAQABAAEAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAEAAAAJAAgAAQABAAEAAAAJAAcAAQABAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAIAAgAAQABAAEAAAAIAAcAAQABAAEAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAIAAQAAQABAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAEAAAAHAAgAAQABAAEAAAAHAAcAAQABAAEAAAAHAAYAAQABAAEAAAAHAAUAAQABAAEAAAAHAAQAAQABAAEAAAAHAAMAAQABAAEAAAAHAAIAAQABAAEAAAAGAAgAAQABAAEAAAAGAAcAAQABAAEAAAAGAAYAAQABAAEAAAAGAAUAAQABAAEAAAAGAAQAAQABAAEAAAAGAAMAAQABAAEAAAAGAAIAAQABAAEAAAAFAAgAAQABAAEAAAAFAAcAAQABAAEAAAAFAAYAAQABAAEAAAAFAAUAAQABAAEAAAAFAAQAAQABAAEAAAAFAAMAAQABAAEAAAAFAAIAAQABAAEAAAAEAAcAAQABAAEAAAAEAAYAAQABAAEAAAAEAAUAAQABAAEAAAAEAAQAAQABAAEAAAAEAAMAAQABAAEAAAAEAAIAAQABAAEAAAADAAcAAQABAAEAAAADAAYAAQABAAEAAAADAAUAAQABAAEAAAADAAQAAQABAAEAAAADAAMAAQABAAEAAAADAAIAAQABAAEAAAACAAcAAQAAAAEAAAACAAYAAQAAAAEAAAACAAUAAQAAAAEAAAACAAQAAQAAAAEAAAACAAMAAQAAAAEAAAACAAIAAQAAAAEAAAAEAAgAAQABAAEAAAADAAgAAQABAAEAAAACAAgAAQAAAAEAAAD//wkAAQAAAAAAAAAAAAkAAQABAAAAAAABAAkAAQABAAAAAAACAAkAAQABAAEAAAADAAkAAQABAAEAAAAEAAkAAQABAAEAAAAFAAkAAQABAAEAAAAGAAkAAQABAAEAAAD//woAAQAAAAIAAAAAAAoAAQABAAIAAAABAAoAAQABAAIAAAACAAoAAQABAAIAAAADAAoAAQABAAIAAAAEAAoAAQABAAIAAAAFAAoAAQABAAIAAAAGAAoAAQABAAIAAAAMAAkAAQABAAEAAAALAAkAAQABAAEAAAAKAAkAAQABAAEAAAAJAAkAAQABAAEAAAAIAAkAAQABAAEAAAAHAAkAAQABAAEAAAAHAAoAAQABAAIAAAAIAAoAAQABAAIAAAAJAAoAAQABAAIAAAAKAAoAAQABAAIAAAALAAoAAQABAAIAAAAMAAoAAQABAAIAAAAMAAgAAQABAAEAAAAMAAcAAQABAAEAAAAMAAYAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAEAAAACAAEAAQAAAAEAAAADAAEAAQABAAEAAAAEAAEAAQABAAEAAAAFAAEAAQABAAEAAAAGAAEAAQABAAEAAAAHAAEAAQABAAEAAAAIAAEAAQABAAEAAAAJAAEAAQABAAEAAAAKAAEAAQABAAEAAAALAAEAAQABAAEAAAAMAAEAAQABAAEAAAACAAAAAQAAAAAAAAADAAAAAQABAAAAAAAEAAAAAQABAAAAAAAFAAAAAQABAAAAAAAGAAAAAQABAAAAAAAHAAAAAQABAAAAAAAIAAAAAQABAAAAAAAJAAAAAQABAAAAAAAKAAAAAQABAAAAAAALAAAAAQABAAAAAAAMAAAAAQABAAAAAAAMAAUAAQABAAEAAAAPAAoAAQACAAIAAAAPAAkAAQACAAEAAAAPAAgAAQACAAEAAAAPAAcAAQACAAEAAAAPAAYAAQACAAEAAAAPAAUAAQACAAEAAAAOAAoAAQABAAIAAAAOAAkAAQABAAEAAAAOAAgAAQABAAEAAAAOAAcAAQABAAEAAAAOAAYAAQABAAEAAAAOAAUAAQABAAEAAAANAAoAAQABAAIAAAANAAkAAQABAAEAAAANAAgAAQABAAEAAAANAAcAAQABAAEAAAANAAYAAQABAAEAAAANAAUAAQABAAEAAAAPAAQAAQACAAEAAAAPAAMAAQACAAEAAAAPAAIAAQACAAEAAAAPAAEAAQACAAEAAAAPAAAAAQACAAAAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQABAAEAAAAOAAEAAQABAAEAAAAOAAAAAQABAAAAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAEAAAANAAEAAQABAAEAAAANAAAAAQABAAAAAAAVAAoAAQAAAAIAAAAVAAkAAQAAAAEAAAAVAAgAAQAAAAEAAAAVAAcAAQAAAAEAAAAVAAYAAQAAAAAAAAAZAAoAAQACAAIAAAAZAAkAAQACAAEAAAAZAAgAAQACAAEAAAAZAAcAAQACAAEAAAAZAAYAAQACAAAAAAAYAAYAAQABAAAAAAAXAAYAAQABAAAAAAAWAAYAAQABAAAAAAAYAAoAAQABAAIAAAAYAAkAAQABAAEAAAAYAAgAAQABAAEAAAAYAAcAAQABAAEAAAAXAAoAAQABAAIAAAAWAAoAAQABAAIAAAAXAAkAAQABAAEAAAAWAAkAAQABAAEAAAAXAAgAAQABAAEAAAAWAAgAAQABAAEAAAAXAAcAAQABAAEAAAAWAAcAAQABAAEAAAAUAAMABQACAAIAAAAUAAIABQACAAEAAAAUAAEABQACAAEAAAAUAAAABQACAAAAAAATAAMABQABAAIAAAATAAIABQABAAEAAAATAAEABQABAAEAAAATAAAABQABAAAAAAASAAMABQABAAIAAAASAAIABQABAAEAAAASAAEABQABAAEAAAASAAAABQABAAAAAAARAAMABQAAAAIAAAARAAIABQAAAAEAAAARAAEABQAAAAEAAAARAAAABQAAAAAAAAA=") +tile_set = ExtResource("5_717he") + +[node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=137950784] +tile_map_data = PackedByteArray("AAALAAUAAQAGAAMAAAAKAAUAAQAGAAMAAAAJAAUAAQAGAAMAAAAIAAUAAQAGAAMAAAAHAAUAAQAGAAMAAAAGAAUAAQAGAAEAAAAFAAUAAQAGAAEAAAAEAAUAAQAGAAEAAAADAAUAAQAFAAEAAAAGAAQAAQAHAAAAAAAFAAQAAQAGAAAAAAAEAAQAAQAGAAAAAAADAAQAAQAFAAAAAAAGAAYAAQAHAAIAAAAFAAYAAQAGAAIAAAAEAAYAAQAGAAIAAAADAAYAAQAFAAIAAAAMAAUAAQAGAAMAAAANAAUAAQAGAAMAAAAOAAUAAQAHAAAAAAAOAAYAAQAIAAEAAAAOAAcAAQAIAAEAAAAOAAgAAQAFAAIAAAAPAAgAAQAHAAMAAAAVAAgAAQAFAAEAAAAVAAcAAQAFAAAAAAAWAAcAAQAGAAAAAAAXAAcAAQAHAAAAAAAXAAgAAQAHAAEAAAAXAAkAAQAHAAIAAAAWAAkAAQAGAAIAAAAVAAkAAQAFAAIAAAAWAAgAAQAGAAEAAAA=") +tile_set = ExtResource("5_717he") + +[node name="Elevation" type="TileMapLayer" parent="TileMapLayers" unique_id=886359704] +tile_map_data = PackedByteArray("AAAIAAEABAACAAQAAAAHAAEABAABAAQAAAAGAAEABAABAAQAAAAFAAEABAABAAQAAAADAAEABAABAAQAAAAEAAEABAABAAQAAAACAAEABAAAAAQAAAA=") +tile_set = ExtResource("4_3uytt") + +[node name="Bridge" type="TileMapLayer" parent="TileMapLayers" unique_id=1571624698] +tile_map_data = PackedByteArray("AAAQAAgAAwABAAAAAAARAAgAAwABAAAAAAASAAgAAwABAAAAAAATAAgAAwABAAAAAAAUAAgAAwABAAAAAAAPAAgAAwAAAAAAAAAVAAgAAwACAAAAAAASAAUAAwAAAAIAAAASAAQAAwAAAAIAAAASAAMAAwAAAAEAAAASAAYAAwAAAAMAAAARAAEAAwACAAAAAAAQAAEAAwABAAAAAAAPAAEAAwAAAAAAAAA=") +tile_set = ExtResource("6_obhrw") + +[node name="Fence" type="TileMapLayer" parent="TileMapLayers" unique_id=1482788515] +tile_map_data = PackedByteArray("AAACAAMAAAAAAAAAAAADAAMAAAABAAIAAAAEAAMAAAABAAIAAAAFAAMAAAABAAAAAAAGAAMAAAABAAAAAAAHAAMAAAABAAAAAAAIAAMAAAACAAAAAAAIAAcAAAACAAIAAAAHAAcAAAABAAIAAAAGAAcAAAABAAAAAAAFAAcAAAABAAAAAAAEAAcAAAABAAAAAAADAAcAAAABAAIAAAACAAcAAAAAAAIAAAACAAYAAAACAAEAAAACAAUAAAACAAEAAAACAAQAAAACAAEAAAAIAAQAAAACAAIAAAAHAAQAAAADAAAAAAAIAAYAAAACAAAAAAAHAAYAAAADAAAAAAA=") +tile_set = ExtResource("7_5lu30") + +[node name="FenceDoor" type="TileMapLayer" parent="TileMapLayers" unique_id=1123335364] +tile_map_data = PackedByteArray("AAAHAAQAAAADAAEAAAAHAAUAAAACAAEAAAAHAAYAAAADAAIAAAA=") +tile_set = ExtResource("7_5lu30") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=888515986] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=296354958 instance=ExtResource("8_2l846")] +position = Vector2(496, 48) +sprite_frames = ExtResource("9_powm1") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1223276421] +limit_left = -64 +limit_top = -64 +limit_right = 1792 +limit_bottom = 832 +position_smoothing_enabled = true + +[node name="HookableBox" parent="OnTheGround" unique_id=1813344410 node_paths=PackedStringArray("constrain_layer") instance=ExtResource("11_b1u67")] +position = Vector2(1504, 480) +constrain_layer = NodePath("../../TileMapLayers/Paths") + +[node name="HookableLever" parent="OnTheGround" unique_id=653701664 node_paths=PackedStringArray("targets") instance=ExtResource("14_esoiq")] +position = Vector2(703, 448) +targets = [NodePath("../../ToggleableTileMapLayer")] + +[node name="HookableNeedle" parent="OnTheGround" unique_id=1182662384 instance=ExtResource("15_bhn5g")] +position = Vector2(64, 96) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle" unique_id=734470694 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle2" parent="OnTheGround" unique_id=386123252 instance=ExtResource("15_bhn5g")] +position = Vector2(64, 352) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle2" unique_id=1969055104 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle3" parent="OnTheGround" unique_id=1541754292 instance=ExtResource("15_bhn5g")] +position = Vector2(64, 576) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle3" unique_id=865877770 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle4" parent="OnTheGround" unique_id=1696148782 instance=ExtResource("15_bhn5g")] +position = Vector2(352, 576) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle4" unique_id=1217951757 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle5" parent="OnTheGround" unique_id=283131822 instance=ExtResource("15_bhn5g")] +position = Vector2(592, 576) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle5" unique_id=1253293046 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle6" parent="OnTheGround" unique_id=656099003 instance=ExtResource("15_bhn5g")] +position = Vector2(816, 576) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle6" unique_id=886695842 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle7" parent="OnTheGround" unique_id=1298558885 instance=ExtResource("15_bhn5g")] +position = Vector2(1184, 560) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle7" unique_id=90025616 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle8" parent="OnTheGround" unique_id=143284863 instance=ExtResource("15_bhn5g")] +position = Vector2(1440, 688) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle8" unique_id=2023086458 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle9" parent="OnTheGround" unique_id=116616300 instance=ExtResource("15_bhn5g")] +position = Vector2(1568, 560) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle9" unique_id=1265095091 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle10" parent="OnTheGround" unique_id=1455715096 instance=ExtResource("15_bhn5g")] +position = Vector2(1440, 400) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle10" unique_id=203226480 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle11" parent="OnTheGround" unique_id=877767314 instance=ExtResource("15_bhn5g")] +position = Vector2(1376, 400) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle11" unique_id=1701548273 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="HookableNeedle12" parent="OnTheGround" unique_id=1544142832 instance=ExtResource("15_bhn5g")] +position = Vector2(1376, 688) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/HookableNeedle12" unique_id=1998005919 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -48) +scale = Vector2(0.5, 0.5) +energy = 0.6 +texture = SubResource("GradientTexture2D_3tad6") + +[node name="Decoration" type="Node2D" parent="OnTheGround" unique_id=1499875127] +y_sort_enabled = true + +[node name="SignPosts" type="Node2D" parent="OnTheGround" unique_id=1821765009] +y_sort_enabled = true + +[node name="Sign" parent="OnTheGround/SignPosts" unique_id=1579530966 instance=ExtResource("18_d3uwq")] +position = Vector2(170, -522) +direction = 1 +text = "FIXME" + +[node name="Guard" parent="OnTheGround" unique_id=689832587 node_paths=PackedStringArray("patrol_path") instance=ExtResource("13_rna1f")] +position = Vector2(224, 352) +sprite_frames = ExtResource("14_1is7x") +alerted_sound_stream = ExtResource("15_3tad6") +footsteps_sound_stream = ExtResource("16_3uytt") +idle_sound_stream = ExtResource("17_717he") +alert_others_sound_stream = ExtResource("18_obhrw") +patrol_path = NodePath("../Guard-PatrolPath") +time_to_detect_player = 5.0 + +[node name="Guard2" parent="OnTheGround" unique_id=1756140672 instance=ExtResource("13_rna1f")] +position = Vector2(593, 463) +sprite_frames = ExtResource("14_1is7x") +alerted_sound_stream = ExtResource("15_3tad6") +footsteps_sound_stream = ExtResource("16_3uytt") +idle_sound_stream = ExtResource("17_717he") +alert_others_sound_stream = ExtResource("18_obhrw") + +[node name="Guard3" parent="OnTheGround" unique_id=605843330 instance=ExtResource("13_rna1f")] +position = Vector2(592, 288) +sprite_frames = ExtResource("14_1is7x") +alerted_sound_stream = ExtResource("15_3tad6") +footsteps_sound_stream = ExtResource("16_3uytt") +idle_sound_stream = ExtResource("17_717he") +alert_others_sound_stream = ExtResource("18_obhrw") + +[node name="Guard-PatrolPath" type="Path2D" parent="OnTheGround" unique_id=165237872] +position = Vector2(207, 349.042) +curve = SubResource("Curve2D_rna1f") + +[node name="ToggleableTileMapLayer" type="Node2D" parent="." unique_id=374995496 node_paths=PackedStringArray("target")] +script = ExtResource("20_tbxxm") +target = NodePath("../TileMapLayers/FenceDoor") +metadata/_custom_type_script = "uid://c5jp8y8mpge4w" + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=789862376] + +[node name="CanvasModulate" type="CanvasModulate" parent="." unique_id=1807394969] +color = Color(0.481789, 0.48179, 0.481789, 1) + +[node name="StealthGameLogic" type="Node" parent="." unique_id=39585550] +script = ExtResource("20_rna1f") diff --git a/scenes/game_elements/components/custom_repellable_objects_test.gd b/scenes/game_elements/components/custom_repellable_objects_test.gd new file mode 100644 index 0000000000..23e9988542 --- /dev/null +++ b/scenes/game_elements/components/custom_repellable_objects_test.gd @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D + +@onready var repel_timer: Timer = %RepelTimer + + +func _on_repellable_lever_2_toggled(is_on: bool) -> void: + if not is_node_ready(): + return + if is_on and repel_timer.is_stopped(): + repel_timer.start() + elif not is_on and not repel_timer.is_stopped(): + repel_timer.stop() diff --git a/scenes/game_elements/components/custom_repellable_objects_test.gd.uid b/scenes/game_elements/components/custom_repellable_objects_test.gd.uid new file mode 100644 index 0000000000..69846d0772 --- /dev/null +++ b/scenes/game_elements/components/custom_repellable_objects_test.gd.uid @@ -0,0 +1 @@ +uid://u71cgs3wp3ap diff --git a/scenes/game_elements/components/custom_repellable_objects_test.tscn b/scenes/game_elements/components/custom_repellable_objects_test.tscn new file mode 100644 index 0000000000..c6cb166d7b --- /dev/null +++ b/scenes/game_elements/components/custom_repellable_objects_test.tscn @@ -0,0 +1,187 @@ +[gd_scene format=4 uid="uid://blnnwmrypq0a6"] + +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="1_ccjhf"] +[ext_resource type="Script" uid="uid://u71cgs3wp3ap" path="res://scenes/game_elements/components/custom_repellable_objects_test.gd" id="1_pxtmd"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="2_vc12a"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="3_584di"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="4_b4je6"] +[ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="5_2bg5k"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="6_hmcpk"] +[ext_resource type="TileSet" uid="uid://41pk6xbhypue" path="res://tiles/fence.tres" id="6_vc12a"] +[ext_resource type="SpriteFrames" uid="uid://cxjwwgm86d6it" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_red.tres" id="7_84lgk"] +[ext_resource type="Script" uid="uid://c5jp8y8mpge4w" path="res://scenes/world_map/components/ToggleableTileMapLayer.gd" id="7_uhkpe"] +[ext_resource type="PackedScene" uid="uid://dqo4d6mp4hwhi" path="res://scenes/game_elements/props/repellable_box/repellable_box.tscn" id="8_uhkpe"] +[ext_resource type="PackedScene" uid="uid://w50y4sa4xay2" path="res://scenes/game_elements/props/repellable_ball/repellable_ball.tscn" id="10_584di"] +[ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="11_2bg5k"] +[ext_resource type="SpriteFrames" uid="uid://bapks76u4hipj" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_green_small.tres" id="12_hmcpk"] +[ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="13_hmcpk"] +[ext_resource type="PackedScene" uid="uid://cuu65vogubwxd" path="res://scenes/game_elements/props/repellable_lever/repellable_lever.tscn" id="14_84lgk"] +[ext_resource type="PackedScene" uid="uid://cl06pid826dtg" path="res://scenes/game_elements/characters/player/components/player_repel.tscn" id="15_wn1pr"] + +[node name="CustomRepellableObjectsTest" type="Node2D" unique_id=324172432] +script = ExtResource("1_pxtmd") + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=1129826282] + +[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=1017266357] +tile_map_data = PackedByteArray("AAABAAoAAAAAAAAAAAACAAoAAAAAAAAAAAADAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAAFAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAALAAsAAAAAAAAAAAAMAAwAAAAAAAAAAAAMAA0AAAAAAAAAAAALAA0AAAAAAAAAAAALAA4AAAAAAAAAAAAKAA4AAAAAAAAAAAAJAA4AAAAAAAAAAAAIAA4AAAAAAAAAAAAHAA4AAAAAAAAAAAAFAA4AAAAAAAAAAAAEAA4AAAAAAAAAAAADAA4AAAAAAAAAAAACAA4AAAAAAAAAAAABAA4AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAAAAAAAAABAAsAAAAAAAAAAAABAAwAAAAAAAAAAAABAA0AAAAAAAAAAAACAA0AAAAAAAAAAAACAAwAAAAAAAAAAAACAAsAAAAAAAAAAAADAAsAAAAAAAAAAAADAAwAAAAAAAAAAAADAA0AAAAAAAAAAAAEAA0AAAAAAAAAAAAEAAwAAAAAAAAAAAAEAAsAAAAAAAAAAAAFAAsAAAAAAAAAAAAFAAwAAAAAAAAAAAAFAA0AAAAAAAAAAAAHAA0AAAAAAAAAAAAHAAwAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAIAAwAAAAAAAAAAAAIAA0AAAAAAAAAAAAJAA0AAAAAAAAAAAAJAAwAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAA0AAAAAAAAAAAAKAAwAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAwAAAAAAAAAAAAMAA4AAAAAAAAAAAAMAAsAAAAAAAAAAAAMAAoAAAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAD//wcAAAAAAAAAAAD//wgAAAAAAAAAAAD//wkAAAAAAAAAAAD//woAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAgAAAAAAAAAAAD/////AAAAAAAAAAAAAP//AAAAAAAAAAABAP//AAAAAAAAAAABAAAAAAAAAAAAAAACAP//AAAAAAAAAAACAAAAAAAAAAAAAAADAP//AAAAAAAAAAADAAAAAAAAAAAAAAAEAP//AAAAAAAAAAAEAAAAAAAAAAAAAAAFAP//AAAAAAAAAAAFAAAAAAAAAAAAAAAGAP//AAAAAAAAAAAGAAAAAAAAAAAAAAAHAP//AAAAAAAAAAAHAAAAAAAAAAAAAAAIAP//AAAAAAAAAAAIAAAAAAAAAAAAAAAJAP//AAAAAAAAAAAJAAAAAAAAAAAAAAAKAP//AAAAAAAAAAAKAAAAAAAAAAAAAAALAP//AAAAAAAAAAALAAAAAAAAAAAAAAAMAP//AAAAAAAAAAAMAAAAAAAAAAAAAAANAP//AAAAAAAAAAANAAAAAAAAAAAAAAANAAoAAAAAAAAAAAACABIAAAAAAAAAAAACABMAAAAAAAAAAAACABQAAAAAAAAAAAADABIAAAAAAAAAAAADABMAAAAAAAAAAAADABQAAAAAAAAAAAAEABIAAAAAAAAAAAAEABMAAAAAAAAAAAAEABQAAAAAAAAAAAAFABIAAAAAAAAAAAAFABMAAAAAAAAAAAAFABQAAAAAAAAAAAAGABIAAAAAAAAAAAAGABMAAAAAAAAAAAAGABQAAAAAAAAAAAAHABIAAAAAAAAAAAAHABMAAAAAAAAAAAAHABQAAAAAAAAAAAAIABIAAAAAAAAAAAAIABMAAAAAAAAAAAAIABQAAAAAAAAAAAAJABIAAAAAAAAAAAAJABMAAAAAAAAAAAAJABQAAAAAAAAAAAAKABIAAAAAAAAAAAAKABMAAAAAAAAAAAAKABQAAAAAAAAAAAACAA8AAAAAAAAAAAACABAAAAAAAAAAAAACABEAAAAAAAAAAAADAA8AAAAAAAAAAAADABAAAAAAAAAAAAADABEAAAAAAAAAAAAJAA8AAAAAAAAAAAAJABAAAAAAAAAAAAAJABEAAAAAAAAAAAAKAA8AAAAAAAAAAAAKABAAAAAAAAAAAAAKABEAAAAAAAAAAAAAAA8AAAAAAAAAAAAAABAAAAAAAAAAAAAAABEAAAAAAAAAAAAAABIAAAAAAAAAAAAAABMAAAAAAAAAAAAAABQAAAAAAAAAAAABAA8AAAAAAAAAAAABABAAAAAAAAAAAAABABEAAAAAAAAAAAABABIAAAAAAAAAAAABABMAAAAAAAAAAAABABQAAAAAAAAAAAALAA8AAAAAAAAAAAALABAAAAAAAAAAAAALABEAAAAAAAAAAAALABIAAAAAAAAAAAALABMAAAAAAAAAAAALABQAAAAAAAAAAAAMAA8AAAAAAAAAAAAMABAAAAAAAAAAAAAMABEAAAAAAAAAAAAMABIAAAAAAAAAAAAMABMAAAAAAAAAAAAMABQAAAAAAAAAAAANAAsAAAAAAAAAAAANAAwAAAAAAAAAAAANAA0AAAAAAAAAAAANAA4AAAAAAAAAAAANAA8AAAAAAAAAAAANABAAAAAAAAAAAAANABEAAAAAAAAAAAANABIAAAAAAAAAAAANABMAAAAAAAAAAAANABQAAAAAAAAAAAD//wsAAAAAAAAAAAD//wwAAAAAAAAAAAD//w0AAAAAAAAAAAD//w4AAAAAAAAAAAD//w8AAAAAAAAAAAD//xAAAAAAAAAAAAD//xEAAAAAAAAAAAD//xIAAAAAAAAAAAD//xMAAAAAAAAAAAD//xQAAAAAAAAAAAAAAAkAAAAAAAAAAAABAAkAAAAAAAAAAQABAAEAAAAAAAAAAQABAAIAAAAAAAAAAQABAAMAAAAAAAAAAQABAAQAAAAAAAAAAQABAAUAAAAAAAAAAQABAAYAAAAAAAAAAQABAAcAAAAAAAAAAQABAAgAAAAAAAAAAQACAAEAAAAAAAAAAQADAAEAAAAAAAAAAQAEAAEAAAAAAAAAAQAFAAEAAAAAAAAAAQAGAAEAAAAAAAAAAQAHAAEAAAAAAAAAAQAIAAEAAAAAAAAAAQAJAAEAAAAAAAAAAQAKAAEAAAAAAAAAAQAFAA8AAAAAAAAAAQAEAA8AAAAAAAAAAQAEABAAAAAAAAAAAQAEABEAAAAAAAAAAQAGAA8AAAAAAAAAAQAHAA8AAAAAAAAAAQAIAA8AAAAAAAAAAQAIABAAAAAAAAAAAQAIABEAAAAAAAAAAQAGAA4AAAAAAAAAAQAGAA0AAAAAAAAAAQAGAAwAAAAAAAAAAQAGAAsAAAAAAAAAAQAGAAoAAAAAAAAAAQATAAEAAAAAAAAAAQATAAIAAAAAAAAAAQATAAMAAAAAAAAAAQATAAQAAAAAAAAAAQATAAUAAAAAAAAAAQATAAYAAAAAAAAAAQATAAcAAAAAAAAAAQATAAgAAAAAAAAAAQATAAkAAAAAAAAAAQATAAoAAAAAAAAAAAASAAoAAAAAAAAAAAARAAoAAAAAAAAAAAAQAAoAAAAAAAAAAAAPAAoAAAAAAAAAAAAOAAoAAAAAAAAAAAAOAAsAAAAAAAAAAAAOAAwAAAAAAAAAAAAOAA0AAAAAAAAAAAAOAA4AAAAAAAAAAAAOAA8AAAAAAAAAAAAOABAAAAAAAAAAAAAOABEAAAAAAAAAAAAOABIAAAAAAAAAAAAOABMAAAAAAAAAAAAOABQAAAAAAAAAAAAPAAsAAAAAAAAAAAAPAAwAAAAAAAAAAAAPAA0AAAAAAAAAAAAPAA4AAAAAAAAAAAAPAA8AAAAAAAAAAAAPABAAAAAAAAAAAAAPABEAAAAAAAAAAAAPABIAAAAAAAAAAAAPABMAAAAAAAAAAAAPABQAAAAAAAAAAAAQAAsAAAAAAAAAAAAQAAwAAAAAAAAAAAAQAA0AAAAAAAAAAAAQAA4AAAAAAAAAAAAQAA8AAAAAAAAAAAAQABAAAAAAAAAAAAAQABEAAAAAAAAAAAAQABIAAAAAAAAAAAAQABMAAAAAAAAAAAAQABQAAAAAAAAAAAARAAsAAAAAAAAAAAARAAwAAAAAAAAAAAARAA0AAAAAAAAAAAARAA4AAAAAAAAAAAARAA8AAAAAAAAAAAARABAAAAAAAAAAAAARABEAAAAAAAAAAAARABIAAAAAAAAAAAARABMAAAAAAAAAAAARABQAAAAAAAAAAAASAAsAAAAAAAAAAAASAAwAAAAAAAAAAAASAA0AAAAAAAAAAAASAA4AAAAAAAAAAAASAA8AAAAAAAAAAAASABAAAAAAAAAAAAASABEAAAAAAAAAAAASABIAAAAAAAAAAAASABMAAAAAAAAAAAASABQAAAAAAAAAAAATAAsAAAAAAAAAAAATAAwAAAAAAAAAAAATAA0AAAAAAAAAAAATAA4AAAAAAAAAAAATAA8AAAAAAAAAAAATABAAAAAAAAAAAAATABEAAAAAAAAAAAATABIAAAAAAAAAAAATABMAAAAAAAAAAAATABQAAAAAAAAAAAAUAP//AAAAAAAAAAAUAAAAAAAAAAAAAAAUAAEAAAAAAAAAAAAUAAIAAAAAAAAAAAAUAAMAAAAAAAAAAAAUAAQAAAAAAAAAAAAUAAUAAAAAAAAAAAAUAAYAAAAAAAAAAAAUAAcAAAAAAAAAAAAUAAgAAAAAAAAAAAAUAAkAAAAAAAAAAAAUAAoAAAAAAAAAAAAUAAsAAAAAAAAAAAAUAAwAAAAAAAAAAAAUAA0AAAAAAAAAAAAUAA4AAAAAAAAAAAAUAA8AAAAAAAAAAAAUABAAAAAAAAAAAAAUABEAAAAAAAAAAAAVAP//AAAAAAAAAAAVAAAAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAIAAAAAAAAAAAAVAAMAAAAAAAAAAAAVAAQAAAAAAAAAAAAVAAUAAAAAAAAAAAAVAAYAAAAAAAAAAAAVAAcAAAAAAAAAAAAVAAgAAAAAAAAAAAAVAAkAAAAAAAAAAAAVAAoAAAAAAAAAAAAVAAsAAAAAAAAAAAAVAAwAAAAAAAAAAAAVAA0AAAAAAAAAAAAVAA4AAAAAAAAAAAAVAA8AAAAAAAAAAAAVABAAAAAAAAAAAAAVABEAAAAAAAAAAAAUABIAAAAAAAAAAAAUABMAAAAAAAAAAAAUABQAAAAAAAAAAAAVABIAAAAAAAAAAAAVABMAAAAAAAAAAAAVABQAAAAAAAAAAAAOAP//AAAAAAAAAAAOAAAAAAAAAAAAAAAPAP//AAAAAAAAAAAPAAAAAAAAAAAAAAAQAP//AAAAAAAAAAAQAAAAAAAAAAAAAAARAP//AAAAAAAAAAARAAAAAAAAAAAAAAASAP//AAAAAAAAAAASAAAAAAAAAAAAAAATAP//AAAAAAAAAAATAAAAAAAAAAAAAAALAAEAAAAAAAAAAQAMAAEAAAAAAAAAAQANAAEAAAAAAAAAAQAOAAEAAAAAAAAAAQAPAAEAAAAAAAAAAQAQAAEAAAAAAAAAAQARAAEAAAAAAAAAAQASAAEAAAAAAAAAAQALAAoAAAAAAAAAAAA=") +tile_set = ExtResource("1_ccjhf") + +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=453712517] +tile_map_data = PackedByteArray("AAABAAoAAAAAAAAAAAABAAkAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAABAAUAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAACAAoAAAAAAAAAAAADAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAAFAAoAAAAAAAAAAAAGAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAALAAoAAAAAAAAAAAAEABAAAAAAAAAAAAAEABEAAAAAAAAAAAAEABIAAAAAAAAAAAAFABIAAAAAAAAAAAAGABIAAAAAAAAAAAAHABIAAAAAAAAAAAAIABIAAAAAAAAAAAAIABEAAAAAAAAAAAAIABAAAAAAAAAAAAAMAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAOAAoAAAAAAAAAAAAPAAoAAAAAAAAAAAAQAAoAAAAAAAAAAAARAAoAAAAAAAAAAAASAAoAAAAAAAAAAAATAAoAAAAAAAAAAAATAAIAAAAAAAAAAAATAAMAAAAAAAAAAAATAAQAAAAAAAAAAAATAAUAAAAAAAAAAAATAAYAAAAAAAAAAAATAAcAAAAAAAAAAAATAAgAAAAAAAAAAAATAAkAAAAAAAAAAAA=") +tile_set = ExtResource("2_vc12a") + +[node name="Elevation" type="TileMapLayer" parent="TileMapLayers" unique_id=886359704] +tile_map_data = PackedByteArray("AAABAAkABAAAAAQAAAACAAkABAABAAQAAAADAAkABAABAAQAAAAEAAkABAABAAQAAAAFAAkABAABAAQAAAAGAAkABAABAAQAAAAHAAkABAABAAQAAAAIAAkABAABAAQAAAAJAAkABAABAAQAAAAKAAkABAABAAQAAAALAAkABAABAAQAAAAEABEABAAAAAQAAAAFABEABAABAAQAAAAGABEABAABAAQAAAAHABEABAABAAQAAAAIABEABAACAAQAAAATAAkABAACAAQAAAASAAkABAABAAQAAAARAAkABAABAAQAAAAQAAkABAABAAQAAAAPAAkABAABAAQAAAAOAAkABAABAAQAAAANAAkABAABAAQAAAAMAAkABAABAAQAAAA=") +tile_set = ExtResource("3_584di") +occlusion_enabled = false +collision_enabled = false + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=102871699] +tile_map_data = PackedByteArray("AAAGAAEAAQABAAAAAAAFAAEAAQABAAAAAAAEAAEAAQABAAAAAAADAAEAAQABAAAAAAACAAEAAQABAAAAAAABAAEAAQAAAAAAAAAGAAMAAQABAAEAAAAGAAIAAQABAAEAAAAFAAMAAQABAAEAAAAFAAIAAQABAAEAAAAEAAMAAQABAAEAAAAEAAIAAQABAAEAAAADAAMAAQABAAEAAAADAAIAAQABAAEAAAACAAMAAQABAAEAAAACAAIAAQABAAEAAAABAAMAAQAAAAEAAAABAAIAAQAAAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAJAAEAAQABAAAAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAIAAQAAQABAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAEAAAAIAAEAAQABAAAAAAAHAAYAAQABAAEAAAAHAAUAAQABAAEAAAAHAAQAAQABAAEAAAAHAAMAAQABAAEAAAAHAAIAAQABAAEAAAAHAAEAAQABAAAAAAAGAAYAAQABAAEAAAAGAAUAAQABAAEAAAAGAAQAAQABAAEAAAAFAAYAAQABAAEAAAAFAAUAAQABAAEAAAAFAAQAAQABAAEAAAAEAAYAAQABAAEAAAAEAAUAAQABAAEAAAAEAAQAAQABAAEAAAADAAYAAQABAAEAAAADAAUAAQABAAEAAAADAAQAAQABAAEAAAACAAYAAQABAAEAAAACAAUAAQABAAEAAAACAAQAAQABAAEAAAABAAYAAQAAAAEAAAABAAUAAQAAAAEAAAABAAQAAQAAAAEAAAAIAAkAAQABAAIAAAAJAAkAAQABAAIAAAAKAAkAAQABAAIAAAALAAkAAQABAAIAAAABAAkAAQAAAAIAAAACAAkAAQABAAIAAAADAAkAAQABAAIAAAAEAAkAAQABAAIAAAAFAAkAAQABAAIAAAAGAAkAAQABAAIAAAAHAAkAAQABAAIAAAABAAgAAQAAAAEAAAACAAgAAQABAAEAAAADAAgAAQABAAEAAAAEAAgAAQABAAEAAAAGAAgAAQABAAEAAAAFAAgAAQABAAEAAAAHAAgAAQABAAEAAAAIAAgAAQABAAEAAAAJAAgAAQABAAEAAAAKAAgAAQABAAEAAAALAAgAAQABAAEAAAABAAcAAQAAAAEAAAACAAcAAQABAAEAAAADAAcAAQABAAEAAAAEAAcAAQABAAEAAAAFAAcAAQABAAEAAAAGAAcAAQABAAEAAAAHAAcAAQABAAEAAAAIAAcAAQABAAEAAAAJAAcAAQABAAEAAAAKAAcAAQABAAEAAAALAAcAAQABAAEAAAAKAAEAAQABAAAAAAAKAAIAAQABAAEAAAAKAAMAAQABAAEAAAAKAAQAAQABAAEAAAAKAAUAAQABAAEAAAAKAAYAAQABAAEAAAALAAEAAQABAAAAAAALAAIAAQABAAEAAAALAAMAAQABAAEAAAALAAQAAQABAAEAAAALAAUAAQABAAEAAAALAAYAAQABAAEAAAAEABEAAQAAAAIAAAAEABAAAQAAAAEAAAAEAA8AAQAAAAAAAAAFAA8AAQABAAAAAAAGAA8AAQABAAAAAAAHAA8AAQABAAAAAAAIAA8AAQACAAAAAAAIABAAAQACAAEAAAAIABEAAQACAAIAAAAHABEAAQABAAIAAAAGABEAAQABAAIAAAAFABEAAQABAAIAAAAFABAAAQABAAEAAAAGABAAAQABAAEAAAAHABAAAQABAAEAAAAMAAkAAQABAAIAAAANAAkAAQABAAIAAAAOAAkAAQABAAIAAAAPAAkAAQABAAIAAAAQAAkAAQABAAIAAAARAAkAAQABAAIAAAASAAkAAQABAAIAAAATAAkAAQACAAIAAAATAAgAAQACAAEAAAATAAcAAQACAAEAAAATAAYAAQACAAEAAAATAAUAAQACAAEAAAATAAQAAQACAAEAAAATAAMAAQACAAEAAAATAAIAAQACAAEAAAATAAEAAQACAAAAAAASAAgAAQABAAEAAAASAAcAAQABAAEAAAASAAYAAQABAAEAAAASAAUAAQABAAEAAAASAAQAAQABAAEAAAASAAMAAQABAAEAAAASAAIAAQABAAEAAAASAAEAAQABAAAAAAARAAgAAQABAAEAAAARAAcAAQABAAEAAAARAAYAAQABAAEAAAARAAUAAQABAAEAAAARAAQAAQABAAEAAAARAAMAAQABAAEAAAARAAIAAQABAAEAAAARAAEAAQABAAAAAAAQAAgAAQABAAEAAAAQAAcAAQABAAEAAAAQAAYAAQABAAEAAAAQAAUAAQABAAEAAAAQAAQAAQABAAEAAAAQAAMAAQABAAEAAAAQAAIAAQABAAEAAAAQAAEAAQABAAAAAAAPAAgAAQABAAEAAAAPAAcAAQABAAEAAAAPAAYAAQABAAEAAAAPAAUAAQABAAEAAAAPAAQAAQABAAEAAAAPAAMAAQABAAEAAAAPAAIAAQABAAEAAAAPAAEAAQABAAAAAAAOAAgAAQABAAEAAAAOAAcAAQABAAEAAAAOAAYAAQABAAEAAAAOAAUAAQABAAEAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQABAAEAAAAOAAEAAQABAAAAAAANAAgAAQABAAEAAAANAAcAAQABAAEAAAANAAYAAQABAAEAAAANAAUAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAEAAAANAAEAAQABAAAAAAAMAAgAAQABAAEAAAAMAAcAAQABAAEAAAAMAAYAAQABAAEAAAAMAAUAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAEAAAAMAAEAAQABAAAAAAA=") +tile_set = ExtResource("4_b4je6") + +[node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=137950784] +tile_map_data = PackedByteArray("AAAFAAIAAQAFAAAAAAAFAAMAAQAFAAEAAAAFAAQAAQAFAAIAAAAGAAIAAQAGAAAAAAAGAAMAAQAGAAEAAAAGAAQAAQAGAAEAAAAHAAQAAQAHAAIAAAAHAAMAAQAHAAEAAAAHAAIAAQAHAAAAAAAGAAUAAQAIAAEAAAAGAAYAAQAIAAEAAAAGAAcAAQAIAAEAAAAFAAgAAQAFAAAAAAAGAAgAAQAGAAEAAAAHAAgAAQAHAAAAAAAFAAkAAQAFAAIAAAAGAAkAAQAGAAIAAAAHAAkAAQAHAAIAAAA=") +tile_set = ExtResource("4_b4je6") + +[node name="Bridge" type="TileMapLayer" parent="TileMapLayers" unique_id=1571624698] +tile_map_data = PackedByteArray("AAAGAAkAAwAAAAEAAAAGAAoAAwAAAAIAAAAGAAsAAwAAAAIAAAAGAAwAAwAAAAIAAAAGAA0AAwAAAAIAAAAGAA4AAwAAAAIAAAAGAA8AAwAAAAMAAAA=") +tile_set = ExtResource("5_2bg5k") + +[node name="Fence" type="TileMapLayer" parent="TileMapLayers" unique_id=1482788515] +tile_map_data = PackedByteArray("AAAPAAcAAAACAAEAAAASAAcAAAAAAAEAAAASAAYAAAAAAAEAAAASAAUAAAACAAEAAAASAAQAAAACAAEAAAASAAMAAAACAAEAAAAPAAMAAAAAAAEAAAAPAAIAAAAAAAAAAAAQAAIAAAABAAAAAAARAAIAAAABAAAAAAASAAIAAAACAAAAAAAPAAgAAAAAAAIAAAAQAAgAAAABAAIAAAARAAgAAAABAAIAAAASAAgAAAACAAIAAAAPAAQAAAADAAIAAAAPAAYAAAADAAEAAAA=") +tile_set = ExtResource("6_vc12a") + +[node name="FenceDoor" type="TileMapLayer" parent="TileMapLayers" unique_id=1123335364] +tile_map_data = PackedByteArray("AAAPAAQAAAAEAAAAAAAOAAQAAAAAAAAAAAAOAAYAAAAAAAIAAAAPAAYAAAAEAAAAAAAOAAUAAAAAAAEAAAA=") +tile_set = ExtResource("6_vc12a") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=888515986] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=296354958 instance=ExtResource("6_hmcpk")] +position = Vector2(390, 278) +sprite_frames = ExtResource("7_84lgk") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1223276421] +limit_left = -64 +limit_top = -64 +limit_right = 1408 +limit_bottom = 1344 +position_smoothing_enabled = true + +[node name="RepellableBox" parent="OnTheGround" unique_id=1805651676 node_paths=PackedStringArray("constrain_layer") instance=ExtResource("8_uhkpe")] +editor_description = "A repellable box that moves in a fixed grid. + +This is an AnimatableBody2D so it can move along the tiles of a TileMapLayer (using a Tweener for animating the position). + +It needs a TileMapLayer and it is constrained to the painted tiles. + + Since it is animated, it doesn't collide with other instances of itself! For making a puzzle like a Sokoban, the logic must be managed in some other way." +position = Vector2(416, 608) +constrain_layer = NodePath("../../TileMapLayers/Paths") +metadata/_edit_group_ = true + +[node name="RepellableBall" parent="OnTheGround" unique_id=916389317 instance=ExtResource("10_584di")] +position = Vector2(320, 1088) + +[node name="RepellableBall2" parent="OnTheGround" unique_id=1530011681 instance=ExtResource("10_584di")] +position = Vector2(368, 1056) + +[node name="RepellableBall3" parent="OnTheGround" unique_id=1907791590 instance=ExtResource("10_584di")] +position = Vector2(416, 1088) + +[node name="RepellableBall4" parent="OnTheGround" unique_id=1205987546 instance=ExtResource("10_584di")] +position = Vector2(464, 1056) + +[node name="RepellableBall5" parent="OnTheGround" unique_id=613616033 instance=ExtResource("10_584di")] +position = Vector2(512, 1088) + +[node name="RepellableLever" parent="OnTheGround" unique_id=37452001 node_paths=PackedStringArray("targets") instance=ExtResource("14_84lgk")] +position = Vector2(726, 107) +targets = [NodePath("../../ToggleableTileMapLayer")] + +[node name="RepellableLever2" parent="OnTheGround" unique_id=632125149 instance=ExtResource("14_84lgk")] +position = Vector2(1090, 614) + +[node name="Decoration" type="Node2D" parent="OnTheGround" unique_id=1499875127] +y_sort_enabled = true + +[node name="Bush" parent="OnTheGround/Decoration" unique_id=1924859315 instance=ExtResource("11_2bg5k")] +position = Vector2(656, 592) + +[node name="Bush2" parent="OnTheGround/Decoration" unique_id=721038845 instance=ExtResource("11_2bg5k")] +position = Vector2(685, 612) +sprite_frames = ExtResource("12_hmcpk") + +[node name="Bush3" parent="OnTheGround/Decoration" unique_id=1105182560 instance=ExtResource("11_2bg5k")] +position = Vector2(768, 608) + +[node name="Bush4" parent="OnTheGround/Decoration" unique_id=838385735 instance=ExtResource("11_2bg5k")] +position = Vector2(1072, 576) + +[node name="Bush5" parent="OnTheGround/Decoration" unique_id=307126515 instance=ExtResource("11_2bg5k")] +position = Vector2(1116, 585) +sprite_frames = ExtResource("12_hmcpk") + +[node name="Bush6" parent="OnTheGround/Decoration" unique_id=1932151689 instance=ExtResource("11_2bg5k")] +position = Vector2(976, 577) +sprite_frames = ExtResource("12_hmcpk") + +[node name="Bush7" parent="OnTheGround/Decoration" unique_id=692757039 instance=ExtResource("11_2bg5k")] +position = Vector2(1200, 77) +sprite_frames = ExtResource("12_hmcpk") + +[node name="Bush8" parent="OnTheGround/Decoration" unique_id=2141425522 instance=ExtResource("11_2bg5k")] +position = Vector2(1243, 78) + +[node name="Bush9" parent="OnTheGround/Decoration" unique_id=532578728 instance=ExtResource("11_2bg5k")] +position = Vector2(279, 1134) + +[node name="Bush10" parent="OnTheGround/Decoration" unique_id=213474208 instance=ExtResource("11_2bg5k")] +position = Vector2(315, 1147) +sprite_frames = ExtResource("12_hmcpk") + +[node name="SignPosts" type="Node2D" parent="OnTheGround" unique_id=1821765009] +y_sort_enabled = true + +[node name="Sign" parent="OnTheGround/SignPosts" unique_id=1579530966 instance=ExtResource("13_hmcpk")] +position = Vector2(211, 619) +direction = 1 +text = "Repel the box to move it along +the yellow carpet." + +[node name="Sign2" parent="OnTheGround/SignPosts" unique_id=1879122548 instance=ExtResource("13_hmcpk")] +position = Vector2(551, 975) +text = "Bouncy balls! +Can be repelled too." + +[node name="Sign3" parent="OnTheGround/SignPosts" unique_id=96720196 instance=ExtResource("13_hmcpk")] +position = Vector2(560, 109) +direction = 1 +text = "Repel the lever from this side +to open the fence." + +[node name="Sign4" parent="OnTheGround/SignPosts" unique_id=414967079 instance=ExtResource("13_hmcpk")] +position = Vector2(1259, 620) +text = "This lever starts an automatic repel. +Be careful!" + +[node name="PlayerRepel" parent="OnTheGround" unique_id=1324972992 instance=ExtResource("15_wn1pr")] +position = Vector2(416, 224) +player_controlled = false + +[node name="RepelTimer" type="Timer" parent="OnTheGround/PlayerRepel" unique_id=894830500] +unique_name_in_owner = true +wait_time = 1.5 + +[node name="ToggleableTileMapLayer" type="Node2D" parent="." unique_id=374995496 node_paths=PackedStringArray("target")] +script = ExtResource("7_uhkpe") +target = NodePath("../TileMapLayers/FenceDoor") +metadata/_custom_type_script = "uid://c5jp8y8mpge4w" + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=789862376] + +[connection signal="toggled" from="OnTheGround/RepellableLever2" to="." method="_on_repellable_lever_2_toggled"] +[connection signal="timeout" from="OnTheGround/PlayerRepel/RepelTimer" to="OnTheGround/PlayerRepel" method="repel_once"] diff --git a/scenes/game_elements/components/light_texture_256x256.tres b/scenes/game_elements/components/light_texture_256x256.tres new file mode 100644 index 0000000000..a034323abf --- /dev/null +++ b/scenes/game_elements/components/light_texture_256x256.tres @@ -0,0 +1,15 @@ +[gd_resource type="GradientTexture2D" format=3 uid="uid://b5ooaiyxdrp6a"] + +[sub_resource type="Gradient" id="Gradient_5j6h7"] +interpolation_mode = 2 +interpolation_color_space = 2 +colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1) + +[resource] +gradient = SubResource("Gradient_5j6h7") +width = 256 +height = 256 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(0, 0.5) +metadata/_snap_enabled = true diff --git a/scenes/game_elements/fx/clouds_shadow/clouds_shadow.tscn b/scenes/game_elements/fx/clouds_shadow/clouds_shadow.tscn index 4704f60f38..f649558e8c 100644 --- a/scenes/game_elements/fx/clouds_shadow/clouds_shadow.tscn +++ b/scenes/game_elements/fx/clouds_shadow/clouds_shadow.tscn @@ -43,3 +43,4 @@ offset_right = 1024.0 offset_bottom = 1024.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/scenes/game_elements/fx/clouds_shadow/components/clouds_shadow.gd b/scenes/game_elements/fx/clouds_shadow/components/clouds_shadow.gd index 59844023b3..4e665e8445 100644 --- a/scenes/game_elements/fx/clouds_shadow/components/clouds_shadow.gd +++ b/scenes/game_elements/fx/clouds_shadow/components/clouds_shadow.gd @@ -3,13 +3,14 @@ @tool extends Parallax2D -@export_tool_button("Random Clouds") var randomize_button: Callable = randomize +@export_tool_button("Random Clouds") var randomize_button: Callable = randomize_effect @export var _seed: int: set = _set_seed var texture: NoiseTexture2D var noise: FastNoiseLite +var tween: Tween @onready var color_rect: ColorRect = %ColorRect @@ -27,5 +28,24 @@ func _ready() -> void: _set_seed(_seed) -func randomize() -> void: +func randomize_effect() -> void: await _set_seed(randi()) + + +func fade_in(duration: float = 1) -> void: + if tween: + tween.kill() + color_rect.modulate = Color.BLACK + visible = true + tween = create_tween() + tween.tween_property(color_rect, "modulate", Color.WHITE, duration) + await tween.finished + + +func fade_out(duration: float = 1) -> void: + if tween: + tween.kill() + tween = create_tween() + tween.tween_property(color_rect, "modulate", Color.BLACK, duration) + await tween.finished + visible = false diff --git a/scenes/game_elements/fx/fog/components/fog.gd b/scenes/game_elements/fx/fog/components/fog.gd index 443121aaeb..9c5a85749d 100644 --- a/scenes/game_elements/fx/fog/components/fog.gd +++ b/scenes/game_elements/fx/fog/components/fog.gd @@ -3,13 +3,14 @@ @tool extends Parallax2D -@export_tool_button("Random Fog") var randomize_button: Callable = randomize +@export_tool_button("Random Fog") var randomize_button: Callable = randomize_effect @export var _seed: int: set = _set_seed var texture: NoiseTexture2D var noise: FastNoiseLite +var tween: Tween @onready var color_rect: ColorRect = %ColorRect @@ -27,5 +28,24 @@ func _ready() -> void: _set_seed(_seed) -func randomize() -> void: +func randomize_effect() -> void: await _set_seed(randi()) + + +func fade_in(duration: float = 1) -> void: + if tween: + tween.kill() + color_rect.modulate = Color.TRANSPARENT + visible = true + tween = create_tween() + tween.tween_property(color_rect, "modulate:a", 1.0, duration) + await tween.finished + + +func fade_out(duration: float = 1) -> void: + if tween: + tween.kill() + tween = create_tween() + tween.tween_property(color_rect, "modulate:a", 0.0, duration) + await tween.finished + visible = false diff --git a/scenes/game_elements/fx/fog/fog.tscn b/scenes/game_elements/fx/fog/fog.tscn index 527621c4f4..b7ac3f157c 100644 --- a/scenes/game_elements/fx/fog/fog.tscn +++ b/scenes/game_elements/fx/fog/fog.tscn @@ -42,3 +42,4 @@ offset_right = 1024.0 offset_bottom = 1024.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/scenes/game_elements/fx/rain/components/rain.gd b/scenes/game_elements/fx/rain/components/rain.gd new file mode 100644 index 0000000000..add683c38e --- /dev/null +++ b/scenes/game_elements/fx/rain/components/rain.gd @@ -0,0 +1,42 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +extends CanvasLayer + +@export_tool_button("Random Rain") var randomize_button: Callable = randomize_effect + +@export var _seed: int: + set = _set_seed + +## The probability distribution for the amount of rain. The y-axis is the amount +## of rain for a given (randomly-chosen) point on the x-axis. +@export var rain_distribution: Curve + +var _random_number_generator := RandomNumberGenerator.new() + +@onready var gpu_particles_2d: GPUParticles2D = %GPUParticles2D + + +func _set_seed(new_seed: int) -> void: + _seed = new_seed + _random_number_generator.seed = _seed + if not gpu_particles_2d: + return + var x := _random_number_generator.randf() + var rain_amount := rain_distribution.sample(x) + gpu_particles_2d.amount_ratio = rain_amount + + +func randomize_effect() -> void: + _set_seed(randi()) + + +func fade_in(_duration: float = 1) -> void: + gpu_particles_2d.emitting = true + visible = true + + +func fade_out(_duration: float = 1) -> void: + gpu_particles_2d.emitting = false + await gpu_particles_2d.finished + visible = false diff --git a/scenes/game_elements/fx/rain/components/rain.gd.uid b/scenes/game_elements/fx/rain/components/rain.gd.uid new file mode 100644 index 0000000000..49e6fe9ffb --- /dev/null +++ b/scenes/game_elements/fx/rain/components/rain.gd.uid @@ -0,0 +1 @@ +uid://cj6sjml7vpydg diff --git a/scenes/game_elements/fx/rain/rain.tscn b/scenes/game_elements/fx/rain/rain.tscn new file mode 100644 index 0000000000..8a6541334d --- /dev/null +++ b/scenes/game_elements/fx/rain/rain.tscn @@ -0,0 +1,53 @@ +[gd_scene format=3 uid="uid://hcmrrtp62iue"] + +[ext_resource type="Script" uid="uid://cj6sjml7vpydg" path="res://scenes/game_elements/fx/rain/components/rain.gd" id="1_63sw3"] + +[sub_resource type="Curve" id="Curve_63sw3"] +_data = [Vector2(0, 0), 0.0, 0.4, 0, 1, Vector2(0.25, 0.1), 0.4, 1.4, 1, 1, Vector2(0.75, 0.8), 1.4, 0.79999995, 1, 1, Vector2(1, 1), 0.79999995, 0.0, 1, 0] +point_count = 4 + +[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_r1ek1"] +blend_mode = 1 + +[sub_resource type="Gradient" id="Gradient_duxxr"] + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_2vvub"] +gradient = SubResource("Gradient_duxxr") +width = 1 +height = 10 +fill_to = Vector2(0.042735044, 1) + +[sub_resource type="Curve" id="Curve_r1ek1"] +_data = [Vector2(0, 0.23757458), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_ns5r3"] +curve = SubResource("Curve_r1ek1") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_r1ek1"] +particle_flag_disable_z = true +emission_shape_offset = Vector3(1280, 0, 0) +emission_shape = 3 +emission_box_extents = Vector3(1280, 1, 1) +direction = Vector3(0, 1, 0) +spread = 0.0 +initial_velocity_min = 100.0 +initial_velocity_max = 1000.0 +gravity = Vector3(0, 98, 0) +scale_max = 5.0 +scale_over_velocity_max = 1000.0 +scale_over_velocity_curve = SubResource("CurveTexture_ns5r3") + +[node name="Rain" type="CanvasLayer" unique_id=1558838625] +script = ExtResource("1_63sw3") +rain_distribution = SubResource("Curve_63sw3") + +[node name="GPUParticles2D" type="GPUParticles2D" parent="." unique_id=1757968667] +unique_name_in_owner = true +modulate = Color(0.3575, 0.44733334, 0.55, 1) +material = SubResource("CanvasItemMaterial_r1ek1") +amount = 3000 +texture = SubResource("GradientTexture2D_2vvub") +lifetime = 0.81 +speed_scale = 2.0 +process_material = SubResource("ParticleProcessMaterial_r1ek1") diff --git a/scenes/game_elements/fx/shaker/Shaker.tscn b/scenes/game_elements/fx/shaker/Shaker.tscn deleted file mode 100644 index a66ddaa746..0000000000 --- a/scenes/game_elements/fx/shaker/Shaker.tscn +++ /dev/null @@ -1,7 +0,0 @@ -[gd_scene format=3 uid="uid://bmw7jj1nkeqrm"] - -[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/components/shaker.gd" id="1_mi4xf"] - -[node name="Shaker" type="Node2D" unique_id=430766710] -script = ExtResource("1_mi4xf") -metadata/_custom_type_script = "uid://dunsvrhq42214" diff --git a/scenes/game_elements/fx/shaker/components/shaker.gd b/scenes/game_elements/fx/shaker/shaker.gd similarity index 84% rename from scenes/game_elements/fx/shaker/components/shaker.gd rename to scenes/game_elements/fx/shaker/shaker.gd index 3b1985b76e..bfcc8e466a 100644 --- a/scenes/game_elements/fx/shaker/components/shaker.gd +++ b/scenes/game_elements/fx/shaker/shaker.gd @@ -13,8 +13,11 @@ signal started ## Emitted when the target stopped shaking signal finished -## Node that will be shaked -@export var target: CanvasItem +## Node that will be shaked. If the parent node is a CanvasItem and target isn't set, +## the parent node will be automatically assigned to this variable. +@export var target: CanvasItem: + set = _set_target + ## Maximum possible value in which the position of the node might be offset. @export_range(1.0, 100.0, 1.0, "or_greater", "or_less") var shake_intensity: float = 30.0 ## How much time (in seconds) the node will be shaken. @@ -43,11 +46,28 @@ var current_intensity: float = 0.0 var shake_tween: Tween +func _enter_tree() -> void: + if not target and get_parent() is CanvasItem: + target = get_parent() + + func _ready() -> void: noise.noise_type = FastNoiseLite.TYPE_PERLIN noise.frequency = 1.0 +func _set_target(new_target: CanvasItem) -> void: + target = new_target + update_configuration_warnings() + + +func _get_configuration_warnings() -> PackedStringArray: + var warnings: PackedStringArray + if not target: + warnings.append("Target must be set.") + return warnings + + ## Shake the node's position by a maximum of [param intensity] and rotation by ## a maximum of [param intensity] * 0.01 during [param time]. ## When the effect finishes, [member target]'s position and rotation end up @@ -63,8 +83,10 @@ func _ready() -> void: func shake(intensity: float = shake_intensity, time: float = duration) -> void: noise.seed = randi() started.emit() - if InputHelper.device_index >= 0: - Input.start_joy_vibration(InputHelper.device_index, 0.5, 0.5, time) + if not Engine.is_editor_hint(): + # Don't vibrate the joypad when using the Test button in the editor: + if InputHelper.device_index >= 0: + Input.start_joy_vibration(InputHelper.device_index, 0.5, 0.5, time) var shaking_already_in_progress: bool = shake_tween and shake_tween.is_valid() if shaking_already_in_progress: diff --git a/scenes/game_elements/fx/shaker/components/shaker.gd.uid b/scenes/game_elements/fx/shaker/shaker.gd.uid similarity index 100% rename from scenes/game_elements/fx/shaker/components/shaker.gd.uid rename to scenes/game_elements/fx/shaker/shaker.gd.uid diff --git a/scenes/game_elements/fx/time_and_weather/components/1_time_and_weather_museum.tscn b/scenes/game_elements/fx/time_and_weather/components/1_time_and_weather_museum.tscn new file mode 100644 index 0000000000..372a2c9565 --- /dev/null +++ b/scenes/game_elements/fx/time_and_weather/components/1_time_and_weather_museum.tscn @@ -0,0 +1,138 @@ +[gd_scene format=4 uid="uid://dep64htv6c4na"] + +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="1_o22nb"] +[ext_resource type="Script" uid="uid://ctko5bdas16ah" path="res://scenes/game_logic/canvasitem_behaviors/modulate_as_sky_behavior.gd" id="2_5yw8v"] +[ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="2_d01n5"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="3_5yw8v"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="4_16urx"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="5_27ry8"] +[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="6_fvb8n"] +[ext_resource type="PackedScene" uid="uid://lfvn4u30s4yf" path="res://scenes/game_elements/props/buildings/house/house_1.tscn" id="7_ydpnf"] +[ext_resource type="Texture2D" uid="uid://bhka6hku3g4th" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Blue_01.png" id="8_dv1xv"] +[ext_resource type="Texture2D" uid="uid://c8xgl7dcju5h7" path="res://scenes/game_elements/props/buildings/house/components/House_Patch_Blue_03.png" id="9_xr5w1"] +[ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="10_xddja"] +[ext_resource type="Texture2D" uid="uid://caajyl18koevp" path="res://scenes/game_elements/props/decoration/hiding_mushroom/components/Mushroom_Idle.png" id="11_dasut"] +[ext_resource type="Texture2D" uid="uid://b5ooaiyxdrp6a" path="res://scenes/game_elements/components/light_texture_256x256.tres" id="12_g3km8"] +[ext_resource type="Script" uid="uid://bk52qjv58locq" path="res://scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd" id="13_e4f0h"] +[ext_resource type="PackedScene" uid="uid://d0c4l7ev6ca3c" path="res://scenes/game_elements/props/spawn_point/spawn_point.tscn" id="14_s7qaw"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="16_d01n5"] +[ext_resource type="PackedScene" uid="uid://daqd67aro1o1m" path="res://scenes/game_elements/fx/time_and_weather/time_and_weather.tscn" id="16_qvyuv"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_stvbe"] +size = Vector2(110, 155) + +[node name="TimeAndWeatherMuseum" type="Node2D" unique_id=598230680] + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=1892602766] + +[node name="TileMapLayer" type="TileMapLayer" parent="TileMapLayers" unique_id=1324398225] +position = Vector2(-1, 0) +tile_map_data = PackedByteArray("AAAPAP//AAAAAAAAAAAPAAAAAAAAAAAAAAAPAAEAAAAAAAAAAAAPAAIAAAAAAAAAAAAPAAUAAAAAAAAAAAAPAAYAAAAAAAAAAAAPAAcAAAAAAAAAAAAPAAgAAAAAAAAAAAAPAAkAAAAAAAAAAAAPAAoAAAAAAAAAAAAQAP//AAAAAAAAAAAQAAAAAAAAAAAAAAAQAAEAAAAAAAAAAAAQAAIAAAAAAAAAAAAQAAUAAAAAAAAAAAAQAAYAAAAAAAAAAAAQAAcAAAAAAAAAAAAQAAgAAAAAAAAAAAAQAAkAAAAAAAAAAAAQAAoAAAAAAAAAAAARAP//AAAAAAAAAAARAAAAAAAAAAAAAAARAAEAAAAAAAAAAAARAAIAAAAAAAAAAAARAAUAAAAAAAAAAAARAAYAAAAAAAAAAAARAAcAAAAAAAAAAAARAAgAAAAAAAAAAAARAAkAAAAAAAAAAAARAAoAAAAAAAAAAAASAP//AAAAAAAAAAASAAAAAAAAAAAAAAASAAEAAAAAAAAAAAASAAIAAAAAAAAAAAASAAUAAAAAAAAAAAASAAYAAAAAAAAAAAASAAcAAAAAAAAAAAASAAgAAAAAAAAAAAASAAkAAAAAAAAAAAASAAoAAAAAAAAAAAATAP//AAAAAAAAAAATAAAAAAAAAAAAAAATAAEAAAAAAAAAAAATAAIAAAAAAAAAAAATAAUAAAAAAAAAAAATAAYAAAAAAAAAAAATAAcAAAAAAAAAAAATAAgAAAAAAAAAAAATAAkAAAAAAAAAAAATAAoAAAAAAAAAAAAUAP//AAAAAAAAAAAUAAAAAAAAAAAAAAAUAAEAAAAAAAAAAAAUAAIAAAAAAAAAAAAUAAUAAAAAAAAAAAAUAAYAAAAAAAAAAAAUAAcAAAAAAAAAAAAUAAgAAAAAAAAAAAAUAAkAAAAAAAAAAAAUAAoAAAAAAAAAAAAVAP//AAAAAAAAAAAVAAAAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAIAAAAAAAAAAAAVAAUAAAAAAAAAAAAVAAYAAAAAAAAAAAAVAAcAAAAAAAAAAAAVAAgAAAAAAAAAAAAVAAkAAAAAAAAAAAAVAAoAAAAAAAAAAAAWAP//AAAAAAAAAAAWAAAAAAAAAAAAAAAWAAEAAAAAAAAAAAAWAAIAAAAAAAAAAAAWAAUAAAAAAAAAAAAWAAYAAAAAAAAAAAAWAAcAAAAAAAAAAAAWAAgAAAAAAAAAAAAWAAkAAAAAAAAAAAAWAAoAAAAAAAAAAAAOAP//AAAAAAAAAAANAP//AAAAAAAAAAAMAP//AAAAAAAAAAALAP//AAAAAAAAAAAKAP//AAAAAAAAAAAJAP//AAAAAAAAAAAIAP//AAAAAAAAAAAHAP//AAAAAAAAAAAGAP//AAAAAAAAAAAFAP//AAAAAAAAAAAEAP//AAAAAAAAAAADAP//AAAAAAAAAAACAP//AAAAAAAAAAABAP//AAAAAAAAAAAAAP//AAAAAAAAAAAOAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAMAAoAAAAAAAAAAAALAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAGAAoAAAAAAAAAAAAFAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAADAAoAAAAAAAAAAAACAAoAAAAAAAAAAAABAAoAAAAAAAAAAAAAAAoAAAAAAAAAAAD//woAAAAAAAAAAAD//wkAAAAAAAAAAAD//wgAAAAAAAAAAAD//wcAAAAAAAAAAAD//wYAAAAAAAAAAAD//wUAAAAAAAAAAAD//wQAAAAAAAAAAAD//wMAAAAAAAAAAAD//wIAAAAAAAAAAAD//wEAAAAAAAAAAAD//wAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAABAAAAAAAAAAAAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAOAAkAAAAAAAAAAAANAAkAAAAAAAAAAAAMAAkAAAAAAAAAAAALAAkAAAAAAAAAAAACAAkAAAAAAAAAAAABAAkAAAAAAAAAAAADAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAAFAAkAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAABAAEAAAAAAAAAAQAOAAEAAAAAAAAAAQA=") +tile_set = ExtResource("1_o22nb") + +[node name="ModulateAsSkyBehavior" type="Node" parent="TileMapLayers/TileMapLayer" unique_id=606367133 node_paths=PackedStringArray("canvas_item")] +script = ExtResource("2_5yw8v") +canvas_item = NodePath("..") +metadata/_custom_type_script = "uid://ctko5bdas16ah" + +[node name="TileMapLayer3" type="TileMapLayer" parent="TileMapLayers" unique_id=1741325590] +tile_map_data = PackedByteArray("AAABAAkAAgAAAAAAAAACAAkAAgAAAAAAAAADAAkAAgAAAAAAAAAEAAkAAgAAAAAAAAAFAAkAAgAAAAAAAAAOAAkAAgAAAAAAAAANAAkAAgAAAAAAAAAMAAkAAgAAAAAAAAALAAkAAgAAAAAAAAAKAAkAAgAAAAAAAAAJAAkAAgAAAAAAAAAIAAkAAgAAAAAAAAAHAAkAAgAAAAAAAAAGAAkAAgAAAAAAAAAOAAYAAgAAAAAAAAAOAAcAAgAAAAAAAAAOAAgAAgAAAAAAAAAPAAUAAgAAAAAAAAAQAAUAAgAAAAAAAAARAAUAAgAAAAAAAAASAAUAAgAAAAAAAAATAAUAAgAAAAAAAAAUAAUAAgAAAAAAAAAVAAUAAgAAAAAAAAAWAAUAAgAAAAAAAAAOAAIAAgAAAAAAAAABAAIAAgAAAAAAAAABAAMAAgAAAAAAAAABAAQAAgAAAAAAAAABAAUAAgAAAAAAAAABAAYAAgAAAAAAAAABAAcAAgAAAAAAAAABAAgAAgAAAAAAAAA=") +tile_set = ExtResource("2_d01n5") + +[node name="TileMapLayer2" type="TileMapLayer" parent="TileMapLayers" unique_id=137371501] +tile_map_data = PackedByteArray("AAABAAgABAAAAAIAAAACAAgABAABAAQAAAADAAgABAABAAQAAAAEAAgABAABAAQAAAAFAAgABAABAAQAAAAGAAgABAABAAQAAAAHAAgABAABAAQAAAAIAAgABAABAAQAAAAJAAgABAABAAQAAAAKAAgABAABAAQAAAALAAgABAABAAQAAAAMAAgABAABAAQAAAANAAgABAABAAQAAAAOAAgABAACAAIAAAAPAAQABAABAAIAAAAQAAQABAABAAQAAAARAAQABAABAAQAAAASAAQABAABAAQAAAATAAQABAABAAQAAAAUAAQABAABAAQAAAAVAAQABAABAAQAAAAWAAQABAACAAQAAAA=") +tile_set = ExtResource("3_5yw8v") +occlusion_enabled = false +collision_enabled = false + +[node name="TileMapLayer4" type="TileMapLayer" parent="TileMapLayers" unique_id=1164982986] +tile_map_data = PackedByteArray("AAAOAAgAAQACAAIAAAAOAAcAAQACAAEAAAAOAAYAAQACAAEAAAAOAAUAAQACAAEAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQACAAEAAAAOAAEAAQACAAAAAAANAAgAAQABAAIAAAANAAcAAQABAAEAAAANAAYAAQABAAEAAAANAAUAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAEAAAANAAEAAQABAAAAAAAMAAgAAQABAAIAAAAMAAcAAQABAAEAAAAMAAYAAQABAAEAAAAMAAUAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAEAAAAMAAEAAQABAAAAAAALAAgAAQABAAIAAAALAAcAAQABAAEAAAALAAYAAQABAAEAAAALAAUAAQABAAEAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAEAAAALAAEAAQABAAAAAAAKAAgAAQABAAIAAAAKAAcAAQABAAEAAAAKAAYAAQABAAEAAAAKAAUAAQABAAEAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAEAAAAKAAEAAQABAAAAAAAJAAgAAQABAAIAAAAJAAcAAQABAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAJAAEAAQABAAAAAAAIAAgAAQABAAIAAAAIAAcAAQABAAEAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAIAAQAAQABAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAEAAAAIAAEAAQABAAAAAAAHAAgAAQABAAIAAAAHAAcAAQABAAEAAAAHAAYAAQABAAEAAAAHAAUAAQABAAEAAAAHAAQAAQABAAEAAAAHAAMAAQABAAEAAAAHAAIAAQABAAEAAAAHAAEAAQABAAAAAAAGAAgAAQABAAIAAAAGAAcAAQABAAEAAAAGAAYAAQABAAEAAAAGAAUAAQABAAEAAAAGAAQAAQABAAEAAAAGAAMAAQABAAEAAAAGAAIAAQABAAEAAAAGAAEAAQABAAAAAAAFAAgAAQABAAIAAAAFAAcAAQABAAEAAAAFAAYAAQABAAEAAAAFAAUAAQABAAEAAAAFAAQAAQABAAEAAAAFAAMAAQABAAEAAAAFAAIAAQABAAEAAAAFAAEAAQABAAAAAAAEAAgAAQABAAIAAAAEAAcAAQABAAEAAAAEAAYAAQABAAEAAAAEAAUAAQABAAEAAAAEAAQAAQABAAEAAAAEAAMAAQABAAEAAAAEAAIAAQABAAEAAAAEAAEAAQABAAAAAAADAAgAAQABAAIAAAADAAcAAQABAAEAAAADAAYAAQABAAEAAAADAAUAAQABAAEAAAADAAQAAQABAAEAAAADAAMAAQABAAEAAAADAAIAAQABAAEAAAADAAEAAQABAAAAAAACAAgAAQABAAIAAAACAAcAAQABAAEAAAACAAYAAQABAAEAAAACAAUAAQABAAEAAAACAAQAAQABAAEAAAACAAMAAQABAAEAAAACAAIAAQABAAEAAAACAAEAAQABAAAAAAABAAgAAQAAAAIAAAABAAcAAQAAAAEAAAABAAYAAQAAAAEAAAABAAUAAQAAAAEAAAABAAQAAQAAAAEAAAABAAMAAQAAAAEAAAABAAIAAQAAAAEAAAABAAEAAQAAAAAAAAAWAAQAAQACAAIAAAAWAAMAAQACAAAAAAAVAAQAAQABAAIAAAAVAAMAAQABAAAAAAAUAAQAAQABAAIAAAAUAAMAAQABAAAAAAATAAQAAQABAAIAAAATAAMAAQABAAAAAAASAAQAAQABAAIAAAASAAMAAQABAAAAAAARAAQAAQABAAIAAAARAAMAAQABAAAAAAAQAAQAAQABAAIAAAAQAAMAAQABAAAAAAAPAAQAAQABAAIAAAAPAAMAAQABAAAAAAA=") +tile_set = ExtResource("4_16urx") + +[node name="TileMapLayer5" type="TileMapLayer" parent="TileMapLayers" unique_id=1852606572] +tile_map_data = PackedByteArray("AAAPAAMAAQAGAAAAAAAQAAMAAQAGAAAAAAARAAMAAQAGAAAAAAASAAMAAQAGAAAAAAATAAMAAQAGAAAAAAAUAAMAAQAGAAAAAAAVAAMAAQAGAAAAAAAWAAMAAQAHAAAAAAAWAAQAAQAHAAIAAAAVAAQAAQAGAAIAAAAUAAQAAQAGAAIAAAATAAQAAQAGAAIAAAASAAQAAQAGAAIAAAARAAQAAQAGAAIAAAAQAAQAAQAGAAIAAAAPAAQAAQAGAAIAAAAOAAMAAQAGAAAAAAANAAMAAQAGAAAAAAAMAAMAAQAGAAAAAAALAAMAAQAGAAAAAAAKAAMAAQAGAAAAAAAOAAQAAQAGAAIAAAANAAQAAQAGAAIAAAAMAAQAAQAGAAIAAAALAAQAAQAGAAEAAAAKAAQAAQAGAAEAAAAJAAQAAQAGAAEAAAAIAAMAAQAGAAAAAAAJAAMAAQAGAAAAAAAHAAMAAQAFAAAAAAAHAAQAAQAFAAEAAAAHAAUAAQAFAAEAAAAIAAUAAQAGAAEAAAAJAAUAAQAGAAEAAAAKAAUAAQAGAAEAAAALAAUAAQAHAAEAAAAIAAQAAQAGAAEAAAALAAYAAQAHAAIAAAAKAAYAAQAGAAIAAAAJAAYAAQAGAAIAAAAIAAYAAQAGAAIAAAAHAAYAAQAFAAIAAAA=") +tile_set = ExtResource("4_16urx") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=341026700] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=296354958 instance=ExtResource("5_27ry8")] +position = Vector2(597, 391) +player_name = "StoryWeaver" +sprite_frames = ExtResource("6_fvb8n") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=255616199] +limit_left = 0 +limit_top = 0 +limit_right = 1408 +limit_bottom = 640 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="House_1" parent="OnTheGround" unique_id=593509202 instance=ExtResource("7_ydpnf")] +position = Vector2(891, 133) + +[node name="House_2" parent="OnTheGround" unique_id=1157742102 instance=ExtResource("7_ydpnf")] +position = Vector2(787, 162) +texture = ExtResource("8_dv1xv") + +[node name="House_3" parent="OnTheGround" unique_id=1887721550 instance=ExtResource("7_ydpnf")] +position = Vector2(680, 113) +texture = ExtResource("9_xr5w1") + +[node name="Sign" parent="OnTheGround" unique_id=1579530966 instance=ExtResource("10_xddja")] +position = Vector2(193, 102) +text = "This is the current time. +One minute in this scene is one day." + +[node name="Sign2" parent="OnTheGround" unique_id=1899151299 instance=ExtResource("10_xddja")] +position = Vector2(579, 102) +direction = 1 +text = "Ligths turn on/off automatically." + +[node name="Sign3" parent="OnTheGround" unique_id=1304470313 instance=ExtResource("10_xddja")] +position = Vector2(302, 506) +text = "Check the behavior added to the light here, +which makes it turn on/off automatically." + +[node name="Sign4" parent="OnTheGround" unique_id=1287827647 instance=ExtResource("10_xddja")] +position = Vector2(1138, 256) +direction = 1 +text = "The next scene will continue +with the same time as this one. +This is because their TimeAndWeather +nodes have the same setup. +" + +[node name="MushroomIdle" type="Sprite2D" parent="OnTheGround" unique_id=1754107656] +position = Vector2(225, 479) +texture = ExtResource("11_dasut") +offset = Vector2(-1.4, -12.895) + +[node name="PointLight2D" type="PointLight2D" parent="OnTheGround/MushroomIdle" unique_id=595102371] +texture = ExtResource("12_g3km8") + +[node name="ArtificialLightBehavior" type="Node" parent="OnTheGround/MushroomIdle/PointLight2D" unique_id=925788052 node_paths=PackedStringArray("light")] +script = ExtResource("13_e4f0h") +light = NodePath("..") +metadata/_custom_type_script = "uid://bk52qjv58locq" + +[node name="SpawnPoint" parent="." unique_id=2047736206 instance=ExtResource("14_s7qaw")] +position = Vector2(1348, 253) +look_at_side_on_spawn = -1 + +[node name="Teleporter" type="Area2D" parent="." unique_id=812046722] +position = Vector2(1401, 201) +collision_layer = 4 +script = ExtResource("16_d01n5") +next_scene = "uid://co2wxwlojq08k" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Teleporter" unique_id=1238931458] +position = Vector2(45, 51.5) +shape = SubResource("RectangleShape2D_stvbe") + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1650503984] + +[node name="TimeAndWeather" parent="." unique_id=1446545037 instance=ExtResource("16_qvyuv")] +time_scale = 1440.0 +show_debug_label = true diff --git a/scenes/game_elements/fx/time_and_weather/components/2_time_and_weather_museum.gd b/scenes/game_elements/fx/time_and_weather/components/2_time_and_weather_museum.gd new file mode 100644 index 0000000000..f83f3859bd --- /dev/null +++ b/scenes/game_elements/fx/time_and_weather/components/2_time_and_weather_museum.gd @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D + +@onready var time_and_weather: TimeAndWeather = %TimeAndWeather + + +func _on_set_time(area: InteractArea, time: float) -> void: + time_and_weather.set_time(time) + area.end_interaction() diff --git a/scenes/game_elements/fx/time_and_weather/components/2_time_and_weather_museum.gd.uid b/scenes/game_elements/fx/time_and_weather/components/2_time_and_weather_museum.gd.uid new file mode 100644 index 0000000000..6e22da9c39 --- /dev/null +++ b/scenes/game_elements/fx/time_and_weather/components/2_time_and_weather_museum.gd.uid @@ -0,0 +1 @@ +uid://dsdrfbcu4jigd diff --git a/scenes/game_elements/fx/time_and_weather/components/2_time_and_weather_museum.tscn b/scenes/game_elements/fx/time_and_weather/components/2_time_and_weather_museum.tscn new file mode 100644 index 0000000000..e073b9891b --- /dev/null +++ b/scenes/game_elements/fx/time_and_weather/components/2_time_and_weather_museum.tscn @@ -0,0 +1,164 @@ +[gd_scene format=4 uid="uid://co2wxwlojq08k"] + +[ext_resource type="Script" uid="uid://dsdrfbcu4jigd" path="res://scenes/game_elements/fx/time_and_weather/components/2_time_and_weather_museum.gd" id="1_g6rud"] +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="2_o3luo"] +[ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="3_aw1ih"] +[ext_resource type="Script" uid="uid://ctko5bdas16ah" path="res://scenes/game_logic/canvasitem_behaviors/modulate_as_sky_behavior.gd" id="3_o3luo"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="4_g7vbn"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="5_1g7im"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="6_flthm"] +[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="7_ly3o5"] +[ext_resource type="PackedScene" uid="uid://lfvn4u30s4yf" path="res://scenes/game_elements/props/buildings/house/house_1.tscn" id="8_cvgjt"] +[ext_resource type="Texture2D" uid="uid://ol20om7xc1o7" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Red_Stage1.png" id="8_v4wrw"] +[ext_resource type="Texture2D" uid="uid://cy66l5b3uox84" path="res://scenes/game_elements/props/buildings/house/components/House_Patches_Red_Stage2.png" id="9_6ulor"] +[ext_resource type="Texture2D" uid="uid://lylpujgq8e4v" path="res://scenes/game_elements/props/buildings/house/components/House_Patches_Red_Stage1.png" id="10_h3871"] +[ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="11_2owc0"] +[ext_resource type="PackedScene" uid="uid://cfvr32bp2achm" path="res://scenes/game_elements/props/decoration/rock/fabric_rock.tscn" id="11_6ulor"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="15_o3luo"] +[ext_resource type="PackedScene" uid="uid://d0c4l7ev6ca3c" path="res://scenes/game_elements/props/spawn_point/spawn_point.tscn" id="15_pr1ca"] +[ext_resource type="PackedScene" uid="uid://daqd67aro1o1m" path="res://scenes/game_elements/fx/time_and_weather/time_and_weather.tscn" id="17_3d8kk"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="17_o3luo"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_h3871"] +radius = 87.43 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_stvbe"] +size = Vector2(110, 155) + +[node name="TimeAndWeatherMuseum" type="Node2D" unique_id=598230680] +script = ExtResource("1_g6rud") + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=1892602766] + +[node name="TileMapLayer" type="TileMapLayer" parent="TileMapLayers" unique_id=1324398225] +position = Vector2(-1, 0) +tile_map_data = PackedByteArray("AAAPAP//AAAAAAAAAAAPAAAAAAAAAAAAAAAPAAEAAAAAAAAAAAAPAAIAAAAAAAAAAAAPAAUAAAAAAAAAAAAPAAYAAAAAAAAAAAAPAAcAAAAAAAAAAAAPAAgAAAAAAAAAAAAPAAkAAAAAAAAAAAAPAAoAAAAAAAAAAAAQAP//AAAAAAAAAAAQAAAAAAAAAAAAAAAQAAEAAAAAAAAAAAAQAAIAAAAAAAAAAAAQAAUAAAAAAAAAAAAQAAYAAAAAAAAAAAAQAAcAAAAAAAAAAAAQAAgAAAAAAAAAAAAQAAkAAAAAAAAAAAAQAAoAAAAAAAAAAAARAP//AAAAAAAAAAARAAAAAAAAAAAAAAARAAEAAAAAAAAAAAARAAIAAAAAAAAAAAARAAUAAAAAAAAAAAARAAYAAAAAAAAAAAARAAcAAAAAAAAAAAARAAgAAAAAAAAAAAARAAkAAAAAAAAAAAARAAoAAAAAAAAAAAASAP//AAAAAAAAAAASAAAAAAAAAAAAAAASAAEAAAAAAAAAAAASAAIAAAAAAAAAAAASAAUAAAAAAAAAAAASAAYAAAAAAAAAAAASAAcAAAAAAAAAAAASAAgAAAAAAAAAAAASAAkAAAAAAAAAAAASAAoAAAAAAAAAAAATAP//AAAAAAAAAAATAAAAAAAAAAAAAAATAAEAAAAAAAAAAAATAAIAAAAAAAAAAAATAAUAAAAAAAAAAAATAAYAAAAAAAAAAAATAAcAAAAAAAAAAAATAAgAAAAAAAAAAAATAAkAAAAAAAAAAAATAAoAAAAAAAAAAAAUAP//AAAAAAAAAAAUAAAAAAAAAAAAAAAUAAEAAAAAAAAAAAAUAAIAAAAAAAAAAAAUAAUAAAAAAAAAAAAUAAYAAAAAAAAAAAAUAAcAAAAAAAAAAAAUAAgAAAAAAAAAAAAUAAkAAAAAAAAAAAAUAAoAAAAAAAAAAAAVAP//AAAAAAAAAAAVAAAAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAIAAAAAAAAAAAAVAAUAAAAAAAAAAAAVAAYAAAAAAAAAAAAVAAcAAAAAAAAAAAAVAAgAAAAAAAAAAAAVAAkAAAAAAAAAAAAVAAoAAAAAAAAAAAAWAP//AAAAAAAAAAAWAAAAAAAAAAAAAAAWAAEAAAAAAAAAAAAWAAIAAAAAAAAAAAAWAAUAAAAAAAAAAAAWAAYAAAAAAAAAAAAWAAcAAAAAAAAAAAAWAAgAAAAAAAAAAAAWAAkAAAAAAAAAAAAWAAoAAAAAAAAAAAAOAP//AAAAAAAAAAANAP//AAAAAAAAAAAMAP//AAAAAAAAAAALAP//AAAAAAAAAAAKAP//AAAAAAAAAAAJAP//AAAAAAAAAAAIAP//AAAAAAAAAAAHAP//AAAAAAAAAAAGAP//AAAAAAAAAAAFAP//AAAAAAAAAAAEAP//AAAAAAAAAAADAP//AAAAAAAAAAACAP//AAAAAAAAAAABAP//AAAAAAAAAAAAAP//AAAAAAAAAAAOAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAMAAoAAAAAAAAAAAALAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAGAAoAAAAAAAAAAAAFAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAADAAoAAAAAAAAAAAACAAoAAAAAAAAAAAABAAoAAAAAAAAAAAAAAAoAAAAAAAAAAAD//woAAAAAAAAAAAD//wkAAAAAAAAAAAD//wgAAAAAAAAAAAD//wcAAAAAAAAAAAD//wQAAAAAAAAAAAD//wMAAAAAAAAAAAD//wIAAAAAAAAAAAD//wEAAAAAAAAAAAD//wAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAABAAAAAAAAAAAAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAOAAkAAAAAAAAAAAANAAkAAAAAAAAAAAAMAAkAAAAAAAAAAAALAAkAAAAAAAAAAAACAAkAAAAAAAAAAAABAAkAAAAAAAAAAAADAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAAFAAkAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAABAAEAAAAAAAAAAAAOAAEAAAAAAAAAAAACAAQAAAAAAAAAAAACAAMAAAAAAAAAAAACAAIAAAAAAAAAAAACAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAACAAcAAAAAAAAAAAACAAgAAAAAAAAAAAABAAgAAAAAAAAAAAABAAcAAAAAAAAAAAADAAcAAAAAAAAAAAADAAgAAAAAAAAAAAADAAQAAAAAAAAAAAADAAMAAAAAAAAAAAADAAIAAAAAAAAAAAADAAEAAAAAAAAAAAAOAAIAAAAAAAAAAAAOAAMAAAAAAAAAAAAPAAMAAAAAAAAAAAAPAAQAAAAAAAAAAAAOAAcAAAAAAAAAAAAOAAgAAAAAAAAAAAAOAAYAAAAAAAAAAAAOAAUAAAAAAAAAAAAOAAQAAAAAAAAAAAAQAAMAAAAAAAAAAAARAAMAAAAAAAAAAAASAAMAAAAAAAAAAAATAAMAAAAAAAAAAAAUAAMAAAAAAAAAAAAVAAMAAAAAAAAAAAAVAAQAAAAAAAAAAAAUAAQAAAAAAAAAAAATAAQAAAAAAAAAAAASAAQAAAAAAAAAAAARAAQAAAAAAAAAAAAQAAQAAAAAAAAAAAAWAAMAAAAAAAAAAAAWAAQAAAAAAAAAAAAEAAEAAAAAAAAAAQANAAEAAAAAAAAAAQA=") +tile_set = ExtResource("2_o3luo") + +[node name="ModulateAsSkyBehavior" type="Node" parent="TileMapLayers/TileMapLayer" unique_id=1490804684 node_paths=PackedStringArray("canvas_item")] +script = ExtResource("3_o3luo") +canvas_item = NodePath("..") +metadata/_custom_type_script = "uid://ctko5bdas16ah" + +[node name="TileMapLayer3" type="TileMapLayer" parent="TileMapLayers" unique_id=1741325590] +tile_map_data = PackedByteArray("AAANAAkAAgAAAAAAAAAMAAkAAgAAAAAAAAALAAkAAgAAAAAAAAAEAAkAAgAAAAAAAAAFAAkAAgAAAAAAAAAGAAkAAgAAAAAAAAAHAAkAAgAAAAAAAAAIAAkAAgAAAAAAAAAJAAkAAgAAAAAAAAAKAAkAAgAAAAAAAAAEAAIAAgAAAAAAAAAEAAMAAgAAAAAAAAAEAAQAAgAAAAAAAAAEAAgAAgAAAAAAAAD//wcAAgAAAAAAAAAAAAcAAgAAAAAAAAABAAcAAgAAAAAAAAACAAcAAgAAAAAAAAADAAcAAgAAAAAAAAANAAIAAgAAAAAAAAANAAMAAgAAAAAAAAANAAQAAgAAAAAAAAANAAUAAgAAAAAAAAANAAYAAgAAAAAAAAANAAcAAgAAAAAAAAANAAgAAgAAAAAAAAA=") +tile_set = ExtResource("3_aw1ih") + +[node name="TileMapLayer2" type="TileMapLayer" parent="TileMapLayers" unique_id=137371501] +tile_map_data = PackedByteArray("AAD//wYABAABAAQAAAAAAAYABAABAAQAAAABAAYABAABAAQAAAACAAYABAABAAQAAAADAAYABAABAAQAAAD+/wYABAAAAAQAAAAEAAYABAACAAAAAAAEAAcABAADAAEAAAAEAAgABAAAAAIAAAAFAAgABAABAAQAAAAGAAgABAABAAQAAAAHAAgABAABAAQAAAAIAAgABAABAAQAAAAJAAgABAABAAQAAAAKAAgABAABAAQAAAALAAgABAABAAQAAAAMAAgABAABAAQAAAANAAgABAACAAIAAAANAAcABAADAAAAAAA=") +tile_set = ExtResource("4_g7vbn") +occlusion_enabled = false +collision_enabled = false + +[node name="TileMapLayer4" type="TileMapLayer" parent="TileMapLayers" unique_id=1164982986] +tile_map_data = PackedByteArray("AAANAAgAAQACAAIAAAANAAcAAQACAAEAAAANAAYAAQACAAEAAAANAAUAAQACAAEAAAAMAAgAAQABAAIAAAAMAAcAAQABAAEAAAAMAAYAAQABAAEAAAAMAAUAAQABAAEAAAALAAgAAQABAAIAAAALAAcAAQABAAEAAAALAAYAAQABAAEAAAALAAUAAQABAAEAAAAKAAgAAQABAAIAAAAKAAcAAQABAAEAAAAKAAYAAQABAAEAAAAKAAUAAQABAAEAAAAJAAgAAQABAAIAAAAJAAcAAQABAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAIAAgAAQABAAIAAAAIAAcAAQABAAEAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAHAAgAAQABAAIAAAAHAAcAAQABAAEAAAAHAAYAAQABAAEAAAAHAAUAAQABAAEAAAAGAAgAAQABAAIAAAAGAAcAAQABAAEAAAAGAAYAAQABAAEAAAAGAAUAAQABAAEAAAAFAAgAAQABAAIAAAAFAAcAAQABAAEAAAAFAAYAAQABAAEAAAAFAAUAAQABAAEAAAAEAAgAAQAAAAIAAAAEAAcAAQAAAAEAAAAEAAYAAQABAAEAAAAEAAUAAQABAAEAAAADAAYAAQABAAIAAAADAAUAAQABAAAAAAACAAYAAQABAAIAAAACAAUAAQABAAAAAAABAAYAAQABAAIAAAABAAUAAQABAAAAAAAAAAYAAQABAAIAAAAAAAUAAQABAAAAAAD//wYAAQAAAAIAAAD//wUAAQAAAAAAAAANAAQAAQACAAEAAAANAAMAAQACAAEAAAANAAIAAQACAAEAAAANAAEAAQACAAAAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAEAAAAMAAEAAQABAAAAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAEAAAALAAEAAQABAAAAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAEAAAAKAAEAAQABAAAAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAJAAEAAQABAAAAAAAIAAQAAQABAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAEAAAAIAAEAAQABAAAAAAAHAAQAAQABAAEAAAAHAAMAAQABAAEAAAAHAAIAAQABAAEAAAAHAAEAAQABAAAAAAAGAAQAAQABAAEAAAAGAAMAAQABAAEAAAAGAAIAAQABAAEAAAAGAAEAAQABAAAAAAAFAAQAAQABAAEAAAAFAAMAAQABAAEAAAAFAAIAAQABAAEAAAAFAAEAAQABAAAAAAAEAAQAAQAAAAEAAAAEAAMAAQAAAAEAAAAEAAIAAQAAAAEAAAAEAAEAAQAAAAAAAAA=") +tile_set = ExtResource("5_1g7im") + +[node name="TileMapLayer5" type="TileMapLayer" parent="TileMapLayers" unique_id=1852606572] +tile_map_data = PackedByteArray("AAALAAMAAQAHAAAAAAAKAAMAAQAGAAAAAAALAAQAAQAHAAEAAAAKAAQAAQAGAAEAAAAJAAQAAQAGAAEAAAAIAAMAAQAGAAAAAAAJAAMAAQAGAAAAAAAHAAMAAQAFAAAAAAAHAAQAAQAFAAEAAAAHAAUAAQAGAAEAAAAIAAUAAQAGAAEAAAAJAAUAAQAGAAEAAAAKAAUAAQAGAAEAAAALAAUAAQAHAAEAAAAIAAQAAQAGAAEAAAALAAYAAQAHAAEAAAAKAAYAAQAGAAEAAAAJAAYAAQAGAAEAAAAIAAYAAQAGAAEAAAAHAAYAAQAGAAEAAAALAAcAAQAHAAIAAAAKAAcAAQAGAAIAAAAJAAcAAQAGAAIAAAAIAAcAAQAGAAIAAAAHAAcAAQAFAAIAAAAGAAYAAQAGAAIAAAAGAAUAAQAGAAAAAAAFAAYAAQAGAAIAAAAFAAUAAQAGAAAAAAAEAAYAAQAGAAIAAAAEAAUAAQAGAAAAAAADAAYAAQAGAAIAAAADAAUAAQAGAAAAAAACAAYAAQAGAAIAAAACAAUAAQAGAAAAAAABAAYAAQAGAAIAAAABAAUAAQAGAAAAAAAAAAYAAQAGAAIAAAAAAAUAAQAGAAAAAAD//wYAAQAFAAIAAAD//wUAAQAFAAAAAAA=") +tile_set = ExtResource("5_1g7im") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=341026700] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=296354958 instance=ExtResource("6_flthm")] +position = Vector2(57, 413) +player_name = "StoryWeaver" +sprite_frames = ExtResource("7_ly3o5") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=255616199] +limit_left = 0 +limit_top = 0 +limit_right = 1408 +limit_bottom = 640 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="House_1" parent="OnTheGround" unique_id=593509202 instance=ExtResource("8_cvgjt")] +position = Vector2(383, 171) +texture = ExtResource("8_v4wrw") + +[node name="House_2" parent="OnTheGround" unique_id=1157742102 instance=ExtResource("8_cvgjt")] +position = Vector2(317, 131) +texture = ExtResource("9_6ulor") + +[node name="House_3" parent="OnTheGround" unique_id=1887721550 instance=ExtResource("8_cvgjt")] +position = Vector2(539, 150) +texture = ExtResource("10_h3871") + +[node name="Sign" parent="OnTheGround" unique_id=1579530966 instance=ExtResource("11_2owc0")] +position = Vector2(307, 387) +direction = 1 +text = "Use rocks to set the time of day. +Warning! This will unsync it with +the scene at west." + +[node name="FabricRock" parent="OnTheGround" unique_id=1319147835 instance=ExtResource("11_6ulor")] +position = Vector2(477, 239) + +[node name="InteractAreaMorning" type="Area2D" parent="OnTheGround/FabricRock" unique_id=248145530] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("15_o3luo") +action = "6 AM" +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/FabricRock/InteractAreaMorning" unique_id=223757199] +position = Vector2(-3, -14) +shape = SubResource("CircleShape2D_h3871") + +[node name="FabricRock2" parent="OnTheGround" unique_id=1829262008 instance=ExtResource("11_6ulor")] +position = Vector2(616, 344) + +[node name="InteractAreaEvening" type="Area2D" parent="OnTheGround/FabricRock2" unique_id=1830959577] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("15_o3luo") +action = "6 PM" +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/FabricRock2/InteractAreaEvening" unique_id=943679952] +position = Vector2(-3, -14) +shape = SubResource("CircleShape2D_h3871") + +[node name="FabricRock3" parent="OnTheGround" unique_id=2033968538 instance=ExtResource("11_6ulor")] +position = Vector2(718, 476) + +[node name="InteractAreaNight" type="Area2D" parent="OnTheGround/FabricRock3" unique_id=1095523783] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("15_o3luo") +action = "10 PM" +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/FabricRock3/InteractAreaNight" unique_id=132025755] +position = Vector2(-3, -14) +shape = SubResource("CircleShape2D_h3871") + +[node name="SpawnPoint" parent="." unique_id=2047736206 instance=ExtResource("15_pr1ca")] +position = Vector2(525, 166) +look_at_side_on_spawn = -1 + +[node name="Teleporter" type="Area2D" parent="." unique_id=812046722] +position = Vector2(-89, 336) +collision_layer = 4 +script = ExtResource("17_o3luo") +next_scene = "uid://dep64htv6c4na" +spawn_point_path = NodePath("SpawnPoint") +enter_transition = 2 +exit_transition = 1 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Teleporter" unique_id=1238931458] +position = Vector2(45, 51.5) +shape = SubResource("RectangleShape2D_stvbe") + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1650503984] + +[node name="TimeAndWeather" parent="." unique_id=1446545037 instance=ExtResource("17_3d8kk")] +unique_name_in_owner = true +time_scale = 1440.0 +show_debug_label = true + +[connection signal="interaction_started" from="OnTheGround/FabricRock/InteractAreaMorning" to="." method="_on_set_time" flags=18 unbinds=2 binds= [6.0]] +[connection signal="interaction_started" from="OnTheGround/FabricRock2/InteractAreaEvening" to="." method="_on_set_time" flags=18 unbinds=2 binds= [18.0]] +[connection signal="interaction_started" from="OnTheGround/FabricRock3/InteractAreaNight" to="." method="_on_set_time" flags=18 unbinds=2 binds= [22.0]] diff --git a/scenes/game_elements/fx/time_and_weather/components/debug_label.gd b/scenes/game_elements/fx/time_and_weather/components/debug_label.gd new file mode 100644 index 0000000000..05974a0ebe --- /dev/null +++ b/scenes/game_elements/fx/time_and_weather/components/debug_label.gd @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Label + +@onready var animation_player: AnimationPlayer = $"../../AnimationPlayer" + + +func _process(_delta: float) -> void: + var time := animation_player.current_animation_position + var period: String + if time > 5 and time <= 12: + period = "morning" + elif time > 12 and time <= 18: + period = "afternoon" + elif time > 18 and time <= 22: + period = "evening" + else: + period = "night" + text = "%.1f %s" % [time, period] diff --git a/scenes/game_elements/fx/time_and_weather/components/debug_label.gd.uid b/scenes/game_elements/fx/time_and_weather/components/debug_label.gd.uid new file mode 100644 index 0000000000..46683ef82c --- /dev/null +++ b/scenes/game_elements/fx/time_and_weather/components/debug_label.gd.uid @@ -0,0 +1 @@ +uid://qrbdfx4ka2o8 diff --git a/scenes/game_elements/fx/time_and_weather/components/time_and_weather.gd b/scenes/game_elements/fx/time_and_weather/components/time_and_weather.gd new file mode 100644 index 0000000000..7325d6303a --- /dev/null +++ b/scenes/game_elements/fx/time_and_weather/components/time_and_weather.gd @@ -0,0 +1,219 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +class_name TimeAndWeather +extends Node2D +## @experimental +## +## Add post-processing and visual effects. +## +## This is a drop-in effect. Place this node on top of all +## the elements of your scene, at the very bottom of the SceneTree. +## +## TODO: Randomize the weather per day. +## TODO: Add sound effects. What is a morning without dawn chorus? + +## The amount of seconds in a day. +const SECONDS_PER_DAY: float = 24 * 60 * 60 + +## Use system time for determining the time in game. +## [br][br] +## For example if the system time is 15 (3 PM) and the time scale is:[br] +## - 1: 15 (same time in game as in system). +## - 2: 6 (30 hours in game have passed today). +## - 4: 12 (noon in game, exactly 2 and a half days have passed in game today). +## - 8: 0 (midnight in game, exactly 5 days have passed in game today). +@export var use_system_time: bool = true: + set = _set_use_system_time + +## The start time, when not using the system time.[br] +## - 0: Midnight.[br] +## - 4: 4 AM.[br] +## - 12: Noon.[br] +## - 16: 4 PM.[br] +@export_range(0.0, 24.0, 0.1, "suffix:h") var start_time: float = 10.0 + +## The number of game-days in a real-world day.[br] +## - 1: One day in game matches one day in reality. Don't do this![br] +## - 24: One hour in game matches one day in reality.[br] +## - 144: 10 minutes in game matches one day in reality (default).[br] +## - 1440: One minute in game matches one day in reality.[br] +## - 3600: 24 seconds in game matches one day in reality.[br] +@export_range(1.0, 3600.0, 1.0) var time_scale: float = 144.0: + set = _set_time_scale + +@export_group("Debugging") + +## Display debugging information on screen. +@export var show_debug_label: bool = false: + set = _set_show_debug_label + +## The environment for post-processing effects. +@onready var world_environment: WorldEnvironment = %WorldEnvironment + +## The day-night cycle is in this animation player. +@onready var animation_player: AnimationPlayer = %AnimationPlayer + +## The clouds shadow overlay effect. +@onready var clouds_shadow: Parallax2D = %CloudsShadow + +## The fog overlay effect. +@onready var fog: Parallax2D = %Fog + +@onready var lights_on_timer: Timer = %LightsOnTimer +@onready var lights_off_timer: Timer = %LightsOffTimer +@onready var clouds_shadow_start_timer: Timer = %CloudsShadowStartTimer +@onready var clouds_shadow_stop_timer: Timer = %CloudsShadowStopTimer +@onready var fog_start_timer: Timer = %FogStartTimer +@onready var fog_stop_timer: Timer = %FogStopTimer + +## Label to show debug information. +@onready var debug_label: Label = %DebugLabel + + +func _set_use_system_time(new_use_system_time: bool) -> void: + use_system_time = new_use_system_time + notify_property_list_changed() + + +func _set_time_scale(new_time_scale: float) -> void: + time_scale = new_time_scale + if Engine.is_editor_hint(): + return + if not animation_player: + return + # The current animation length (in seconds) corresponds to 1 day. + var animation_scale := SECONDS_PER_DAY / animation_player.current_animation_length + animation_player.speed_scale = time_scale / animation_scale + set_time(get_current_time()) + + +func _set_show_debug_label(new_show_debug_label: bool) -> void: + show_debug_label = new_show_debug_label + if Engine.is_editor_hint(): + return + if not debug_label: + return + debug_label.visible = show_debug_label + debug_label.process_mode = ( + Node.PROCESS_MODE_INHERIT if show_debug_label else Node.PROCESS_MODE_DISABLED + ) + + +func _seek_animation(new_time: float) -> void: + if not animation_player: + return + animation_player.seek(new_time) + + +func _schedule_in_one_day(timer: Timer) -> void: + timer.wait_time = SECONDS_PER_DAY / time_scale + timer.start() + + +func _schedule_timer(timer: Timer, time: float, current_time: float) -> void: + var time_difference := time - current_time + if time_difference == 0: + _schedule_in_one_day(timer) + return + var wait_time := fposmod(time_difference, 24) * 60 * 60 / time_scale + timer.wait_time = wait_time + timer.start() + + +## Set the time. +## [br][br] +## The parameter new_time is a float between 0.0 and 24.0, +## representing the time of day. +func set_time(new_time: float) -> void: + _seek_animation(new_time) + + # Change game state darkness so artificial lights can turn on/off. + var lights_on := new_time < 5 or new_time >= 19 + GameState.change_lights(lights_on, true) + _schedule_timer(lights_off_timer, 5, new_time) + _schedule_timer(lights_on_timer, 19, new_time) + + # Cloud shadows during the day: + clouds_shadow.visible = new_time >= 6 and new_time < 17 + _schedule_timer(clouds_shadow_start_timer, 6, new_time) + _schedule_timer(clouds_shadow_stop_timer, 17, new_time) + + # Fog during late night and early in the morning: + fog.visible = new_time < 5 or new_time >= 22 + _schedule_timer(fog_start_timer, 22, new_time) + _schedule_timer(fog_stop_timer, 5, new_time) + + +## Get the current time. +## [br][br] +## This is no other than the current animation cycle position. +func get_current_time() -> float: + return animation_player.current_animation_position + + +## Get the current sky color. +## [br][br] +## Use this to tint reflecting surfaces (like water). +func get_sky_color() -> Color: + return world_environment.environment.background_color + + +func _validate_property(property: Dictionary) -> void: + match property.name: + "start_time": + if use_system_time: + property.usage |= PROPERTY_USAGE_READ_ONLY + + +func _ready() -> void: + if Engine.is_editor_hint(): + return + if use_system_time: + var unix_time := Time.get_unix_time_from_system() + var system_seconds := fmod(unix_time, SECONDS_PER_DAY) + var system_hour := system_seconds / 60.0 / 60.0 + var scaled_hour := fmod(system_hour * time_scale, 24) + set_time(scaled_hour) + else: + set_time(start_time) + _set_time_scale(time_scale) + _set_show_debug_label(show_debug_label) + + +func _on_lights_on_timer_timeout() -> void: + GameState.change_lights(true) + _schedule_in_one_day(lights_on_timer) + + +func _on_lights_off_timer_timeout() -> void: + GameState.change_lights(false) + _schedule_in_one_day(lights_off_timer) + + +func _on_clouds_shadow_start_timer_timeout() -> void: + if clouds_shadow.has_method("randomize_effect"): + await clouds_shadow.randomize_effect() + if clouds_shadow.has_method("fade_in"): + clouds_shadow.fade_in() + _schedule_in_one_day(clouds_shadow_start_timer) + + +func _on_clouds_shadow_stop_timer_timeout() -> void: + if clouds_shadow.has_method("fade_out"): + clouds_shadow.fade_out() + _schedule_in_one_day(clouds_shadow_stop_timer) + + +func _on_fog_start_timer_timeout() -> void: + if fog.has_method("randomize_effect"): + await fog.randomize_effect() + if fog.has_method("fade_in"): + fog.fade_in() + _schedule_in_one_day(fog_start_timer) + + +func _on_fog_stop_timer_timeout() -> void: + if fog.has_method("fade_out"): + fog.fade_out() + _schedule_in_one_day(fog_stop_timer) diff --git a/scenes/game_elements/fx/time_and_weather/components/time_and_weather.gd.uid b/scenes/game_elements/fx/time_and_weather/components/time_and_weather.gd.uid new file mode 100644 index 0000000000..82c6572a44 --- /dev/null +++ b/scenes/game_elements/fx/time_and_weather/components/time_and_weather.gd.uid @@ -0,0 +1 @@ +uid://dc3bqwr0cvimn diff --git a/scenes/game_elements/fx/time_and_weather/time_and_weather.tscn b/scenes/game_elements/fx/time_and_weather/time_and_weather.tscn new file mode 100644 index 0000000000..607d2f8a64 --- /dev/null +++ b/scenes/game_elements/fx/time_and_weather/time_and_weather.tscn @@ -0,0 +1,232 @@ +[gd_scene format=3 uid="uid://daqd67aro1o1m"] + +[ext_resource type="Script" uid="uid://dc3bqwr0cvimn" path="res://scenes/game_elements/fx/time_and_weather/components/time_and_weather.gd" id="1_rr8fb"] +[ext_resource type="PackedScene" uid="uid://c0374lgarm8gj" path="res://scenes/game_elements/fx/clouds_shadow/clouds_shadow.tscn" id="2_oruto"] +[ext_resource type="PackedScene" uid="uid://dpbsi065gmh8a" path="res://scenes/game_elements/fx/fog/fog.tscn" id="3_uf36w"] +[ext_resource type="Script" uid="uid://qrbdfx4ka2o8" path="res://scenes/game_elements/fx/time_and_weather/components/debug_label.gd" id="4_uf36w"] + +[sub_resource type="Gradient" id="Gradient_duxxr"] + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_5j6h7"] +gradient = SubResource("Gradient_duxxr") + +[sub_resource type="Environment" id="Environment_2vvub"] +background_mode = 3 +ambient_light_source = 2 +adjustment_enabled = true +adjustment_color_correction = SubResource("GradientTexture1D_5j6h7") + +[sub_resource type="Animation" id="Animation_r1ek1"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("CanvasModulate:color") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("WorldEnvironment:environment:adjustment_contrast") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("WorldEnvironment:environment:adjustment_saturation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("WorldEnvironment:environment:adjustment_brightness") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("WorldEnvironment:environment:background_color") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0, 0, 0, 1)] +} + +[sub_resource type="Animation" id="Animation_ns5r3"] +resource_name = "day-night" +length = 24.0 +loop_mode = 1 +step = 1.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("CanvasModulate:color") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 4, 6, 7, 9.990001, 14, 17, 18, 20, 24), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Color(0.28800002, 0.36479995, 0.48, 1), Color(0.28800002, 0.36479995, 0.48, 1), Color(0.68226564, 0.84817696, 0.92506266, 1), Color(0.88227075, 0.9292479, 0.8883446, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(0.92, 0.83628, 0.6808, 1), Color(0.92, 0.7482667, 0.55200005, 1), Color(0.28800002, 0.36479995, 0.48, 1), Color(0.28800002, 0.36479995, 0.48, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("WorldEnvironment:environment:adjustment_contrast") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 4, 10, 14, 20, 24), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 0, +"values": [1.2, 1.2, 1.0, 1.0, 1.2, 1.2] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("WorldEnvironment:environment:adjustment_saturation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 10, 12, 14, 18, 24), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 0, +"values": [1.0, 1.0, 0.9, 1.0, 1.2, 1.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:night_lights_enabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 5, 19, 24), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 1, +"values": [true, false, true, true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("WorldEnvironment:environment:adjustment_brightness") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 10, 12, 14, 24), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [1.0, 1.0, 1.1, 1.0, 1.0] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("WorldEnvironment:environment:background_color") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 4, 6, 10, 14, 18, 20, 24), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Color(0.09333344, 0, 0.4, 1), Color(0.48, 0.48, 0.48, 1), Color(0.9, 0.9, 0.9, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(0.48, 0.48, 0.48, 1), Color(0.09333344, 0, 0.4, 1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ojao8"] +_data = { +&"RESET": SubResource("Animation_r1ek1"), +&"day-night": SubResource("Animation_ns5r3") +} + +[node name="TimeAndWeather" type="Node2D" unique_id=1446545037] +editor_description = "The inner nodes here are good examples of visual effects to use in levels: +- Add a WorldEnvironment for adjusting brightness, contrast, saturation. And much more! +- Add a CanvasModulate to darken the scene. This is required for lights to shine. +- Add visual effects as overlays (or use the existing ones!). Examples: fog, clouds shadow, god rays, rain, snow." +script = ExtResource("1_rr8fb") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1459233892] +unique_name_in_owner = true +environment = SubResource("Environment_2vvub") + +[node name="CanvasModulate" type="CanvasModulate" parent="." unique_id=1899012002] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=206786471] +unique_name_in_owner = true +libraries/ = SubResource("AnimationLibrary_ojao8") +autoplay = &"day-night" +speed_scale = 0.0 + +[node name="LightsOnTimer" type="Timer" parent="." unique_id=1405965431] +unique_name_in_owner = true +one_shot = true + +[node name="LightsOffTimer" type="Timer" parent="." unique_id=341599796] +unique_name_in_owner = true +one_shot = true + +[node name="CloudsShadow" parent="." unique_id=1515275591 instance=ExtResource("2_oruto")] +unique_name_in_owner = true +visible = false +metadata/_edit_lock_ = true + +[node name="CloudsShadowStartTimer" type="Timer" parent="CloudsShadow" unique_id=1199239038] +unique_name_in_owner = true +one_shot = true + +[node name="CloudsShadowStopTimer" type="Timer" parent="CloudsShadow" unique_id=432974675] +unique_name_in_owner = true +one_shot = true + +[node name="Fog" parent="." unique_id=953933321 instance=ExtResource("3_uf36w")] +unique_name_in_owner = true +visible = false + +[node name="FogStartTimer" type="Timer" parent="Fog" unique_id=1738175605] +unique_name_in_owner = true +one_shot = true + +[node name="FogStopTimer" type="Timer" parent="Fog" unique_id=1930172162] +unique_name_in_owner = true +one_shot = true + +[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1435119273] + +[node name="DebugLabel" type="Label" parent="CanvasLayer" unique_id=1439776273] +unique_name_in_owner = true +offset_right = 119.0 +offset_bottom = 23.0 +text = "What time is it?" +script = ExtResource("4_uf36w") + +[connection signal="timeout" from="LightsOnTimer" to="." method="_on_lights_on_timer_timeout"] +[connection signal="timeout" from="LightsOffTimer" to="." method="_on_lights_off_timer_timeout"] +[connection signal="timeout" from="CloudsShadow/CloudsShadowStartTimer" to="." method="_on_clouds_shadow_start_timer_timeout"] +[connection signal="timeout" from="CloudsShadow/CloudsShadowStopTimer" to="." method="_on_clouds_shadow_stop_timer_timeout"] +[connection signal="timeout" from="Fog/FogStartTimer" to="." method="_on_fog_start_timer_timeout"] +[connection signal="timeout" from="Fog/FogStopTimer" to="." method="_on_fog_stop_timer_timeout"] diff --git a/scenes/game_elements/props/area_filler/area_filler.gd b/scenes/game_elements/props/area_filler/area_filler.gd index 0821aaf924..836f26cbc1 100644 --- a/scenes/game_elements/props/area_filler/area_filler.gd +++ b/scenes/game_elements/props/area_filler/area_filler.gd @@ -3,18 +3,21 @@ @tool class_name AreaFiller extends Node -## Fills a CollisionObject2D with child scenes, -## spaced randomly with a minimum separation. +## Fills a CollisionObject2D with child scenes, spaced randomly with a minimum +## separation. ## ## This can be used with [StaticBody2D] to create a forest at the boundary of ## the map which the player cannot walk through, or with [Area2D] to create a ## patch of wild flowers. -## -## The level designer should set [member area]'s [CollisionPolygon2D](s) -## and the parameters of this node as desired, then click Refill in the -## inspector to fill the area with a -## new random arrangement of child scenes. These children are saved to the -## scene, and no random generation occurs at runtime. +## [br][br] +## Create this node as a child of a [StaticBody2D] or [Area2D] (or another +## [CollisionObject2D]). Define the collisions shapes as normal, either with +## [CollisionPolygon2D], or with [CollisionShape2D] with a [RectangleShape2D], +## [CircleShape2D], or [CapsuleShape2D]. Assign at least one scene to [member +## scenes], adjust other parameters to taste, then click [b]Refill[/b] in the +## inspector to fill the area with a new random arrangement of instances of +## [member scenes]. These children are saved to the owning scene: no random +## generation occurs at runtime. ## Scenes that will be randomly placed into [member area]. There is an equal ## probability of each scene being used each time. This list must not be @@ -32,7 +35,8 @@ extends Node ## this value. @export_range(16.0, 256.0, 1.0, "suffix:px", "or_more") var minimum_separation: float = 64.0 -@export_tool_button("Refill") var fill_button: Callable = fill +@warning_ignore("unused_private_class_variable") +@export_tool_button("Refill") var _fill_button: Callable = fill var _area: CollisionObject2D var _undoredo: Object # EditorUndoRedoManager @@ -72,29 +76,115 @@ func _get_configuration_warnings() -> PackedStringArray: return warnings +# Converts a [CollisionShape2D] node's shape to a polygon in the coordinate +# space of its parent [CollisionObject2D]. Supported shape types are +# [RectangleShape2D], [CircleShape2D], and [CapsuleShape2D]. Returns an empty +# array if the shape type is not supported. +func _shape_to_polygon(o: CollisionShape2D) -> PackedVector2Array: + if not o.shape: + return PackedVector2Array() + + var local_polygon: PackedVector2Array + var shape := o.shape + + if shape is RectangleShape2D: + var h := (shape as RectangleShape2D).size / 2.0 + local_polygon = PackedVector2Array( + [ + Vector2(-h.x, -h.y), + Vector2(h.x, -h.y), + Vector2(h.x, h.y), + Vector2(-h.x, h.y), + ] + ) + elif shape is CircleShape2D: + var r := (shape as CircleShape2D).radius + var n := 32 + local_polygon.resize(n) + for i in range(n): + var angle := TAU * float(i) / n + local_polygon[i] = Vector2.from_angle(angle) * r + elif shape is CapsuleShape2D: + var r := (shape as CapsuleShape2D).radius + var half_straight := (shape as CapsuleShape2D).height / 2.0 - r + var n := 16 # vertices per semicircle + # Top semicircle: center at (0, -half_straight). + # Sweep from PI to 2*PI so the arc bulges upward (toward -Y in screen space). + for i in range(n + 1): + var angle := PI + PI * float(i) / n + local_polygon.append(Vector2(r * cos(angle), -half_straight + r * sin(angle))) + # Bottom semicircle: center at (0, +half_straight). + # Sweep from 0 to PI so the arc bulges downward (toward +Y in screen space). + for i in range(n + 1): + var angle := PI * float(i) / n + local_polygon.append(Vector2(r * cos(angle), half_straight + r * sin(angle))) + else: + push_warning( + ( + "%s has unsupported shape type %s (use RectangleShape2D, CircleShape2D, or CapsuleShape2D)" + % [o, shape] + ) + ) + return PackedVector2Array() + + return o.transform * local_polygon + + +# Merges [param polygon] into [param merged], combining with any polygons it +# overlaps. Returns the updated set of disjoint polygons. +# +# TODO: Holes in merged results (rare for convex inputs) are not handled. +func _merge_into( + polygon: PackedVector2Array, merged: Array[PackedVector2Array] +) -> Array[PackedVector2Array]: + var current := polygon + var result: Array[PackedVector2Array] = [] + for existing in merged: + var union: Array[PackedVector2Array] = Geometry2D.merge_polygons(existing, current) + if union.size() == 1: + # Polygons overlapped; continue merging the combined shape + current = union[0] + else: + # Disjoint; keep existing polygon unchanged + result.append(existing) + result.append(current) + return result + + ## Generate random points that fill the shapes of [param area], at least ## [param minimum_separation] px apart. func _generate_points() -> PackedVector2Array: var points: PackedVector2Array - # TODO: Handling multiple shapes separately will give incorrect results if - # they overlap. A more correct approach would be to merge the polygons, and - # deal with shapes that have holes in! + # Collect polygons from all shape owners, converting as needed. + # If the polygon has a transform we have to apply it here so that + # minimum_separation is interpreted in the parent's coordinate space. + var polygons: Array[PackedVector2Array] = [] for owner_id: int in _area.get_shape_owners(): var o := _area.shape_owner_get_owner(owner_id) + var polygon: PackedVector2Array if o is CollisionPolygon2D: - # If the polygon has a transform we have to feed the sampler the - # transformed points. Otherwise you get weird results when the - # polygon is scaled or skewed because the minimum_separation has - # not been. - var transformed_polygon: PackedVector2Array = o.transform * o.polygon - var sampler := PoissonDiscSampler.new() - sampler.initialise(transformed_polygon, minimum_separation) - sampler.fill() - - points.append_array(sampler.points) + polygon = o.transform * o.polygon + elif o is CollisionShape2D: + polygon = _shape_to_polygon(o) + if polygon.is_empty(): + continue else: - push_warning("%s not supported (use CollisionPolygon2D)" % o) + push_warning("%s not supported" % o) + continue + polygons.append(polygon) + + # Merge overlapping polygons so that overlap regions are not over-sampled. + var merged: Array[PackedVector2Array] = [] + for polygon in polygons: + merged = _merge_into(polygon, merged) + + # Sample each disjoint polygon region. + for polygon in merged: + var sampler := PoissonDiscSampler.new() + sampler.initialise(polygon, minimum_separation) + sampler.fill() + points.append_array(sampler.points) return points diff --git a/scenes/game_elements/props/area_filler/components/area_filler_test.tscn b/scenes/game_elements/props/area_filler/components/area_filler_test.tscn index 7c27cc908e..17db93d5fe 100644 --- a/scenes/game_elements/props/area_filler/components/area_filler_test.tscn +++ b/scenes/game_elements/props/area_filler/components/area_filler_test.tscn @@ -1,7 +1,8 @@ [gd_scene format=4 uid="uid://wrwe3x1ens4w"] [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="1_2334v"] -[ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="2_erlwp"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="2_2334v"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="2_erlwp"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="3_idsd5"] [ext_resource type="SpriteFrames" uid="uid://07di3updrwh0" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_purple.tres" id="4_5lqse"] [ext_resource type="Script" uid="uid://bdhjixygupit1" path="res://scenes/game_elements/props/area_filler/area_filler.gd" id="4_wg5pe"] @@ -12,6 +13,9 @@ [ext_resource type="SpriteFrames" uid="uid://2ek86nvw6y28" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_yellow.tres" id="9_erlwp"] [ext_resource type="PackedScene" uid="uid://c0104ickpm3ru" path="res://scenes/game_elements/props/decoration/flower/flower.tscn" id="10_cbbm0"] +[sub_resource type="RectangleShape2D" id="RectangleShape2D_2334v"] +size = Vector2(509, 374) + [node name="AreaFillerTest" type="Node2D" unique_id=365216808] [node name="TileMapLayers" type="Node2D" parent="." unique_id=1479921635] @@ -24,10 +28,14 @@ tile_set = ExtResource("1_2334v") tile_map_data = PackedByteArray("AAAYAAYAAQAHAAIAAAAYAAUAAQAHAAEAAAAYAAQAAQAHAAEAAAAYAAMAAQAHAAEAAAAYAAIAAQAHAAAAAAAXAAYAAQAGAAIAAAAXAAUAAQAGAAEAAAAXAAQAAQAGAAEAAAAXAAMAAQAGAAEAAAAXAAIAAQAGAAAAAAAWAAYAAQAFAAIAAAAWAAUAAQAGAAEAAAAWAAQAAQAGAAEAAAAWAAMAAQAGAAEAAAAWAAIAAQAFAAAAAAAVAAUAAQAGAAIAAAAVAAQAAQAGAAEAAAAVAAMAAQAFAAAAAAAUAAQAAQAGAAAAAAATAAQAAQAGAAAAAAASAAQAAQAGAAAAAAARAAQAAQAGAAAAAAAQAAQAAQAGAAAAAAAPAAQAAQAGAAAAAAAOAAQAAQAGAAAAAAANAAQAAQAGAAAAAAAPAAUAAQAGAAIAAAAOAAUAAQAGAAEAAAANAAUAAQAGAAEAAAAMAAQAAQAGAAAAAAALAAQAAQAGAAEAAAAKAAQAAQAGAAIAAAAJAAQAAQAGAAIAAAAIAAQAAQAGAAIAAAAHAAQAAQAGAAIAAAAIAAMAAQAGAAEAAAAIAAIAAQAHAAAAAAAHAAMAAQAGAAEAAAAHAAIAAQAGAAAAAAAGAAQAAQAFAAIAAAAGAAMAAQAFAAEAAAAGAAIAAQAFAAAAAAARAAUAAQAGAAIAAAAQAAUAAQAGAAIAAAAMAAUAAQAGAAEAAAALAAUAAQAFAAIAAAAUAAUAAQAGAAIAAAATAAUAAQAGAAIAAAASAAUAAQAGAAIAAAALAAMAAQAHAAAAAAAKAAMAAQAGAAAAAAAJAAMAAQAGAAAAAAANAAYAAQAGAAIAAAAMAAYAAQAFAAIAAAAOAAYAAQAHAAIAAAA=") tile_set = ExtResource("1_2334v") -[node name="Cliffs" type="TileMapLayer" parent="TileMapLayers" unique_id=1978692574] -tile_map_data = PackedByteArray("AAD8//3/BAABAAEAAAD9//3/BAABAAIAAAD9//7/BAAAAAMAAAD+//3/BAABAAIAAAD+//7/BAABAAMAAAD///3/BAABAAIAAAD///7/BAABAAMAAAAAAP3/BAABAAIAAAAAAP7/BAABAAMAAAABAP3/BAABAAIAAAABAP7/BAABAAMAAAACAP3/BAABAAIAAAACAP7/BAABAAMAAAADAP3/BAABAAIAAAADAP7/BAABAAMAAAAEAP3/BAABAAIAAAAEAP7/BAABAAMAAAAFAP3/BAABAAIAAAAFAP7/BAABAAMAAAAGAP3/BAABAAIAAAAGAP7/BAABAAMAAAAHAP3/BAABAAIAAAAHAP7/BAABAAMAAAAIAP3/BAABAAIAAAAIAP7/BAABAAMAAAAJAP3/BAABAAIAAAAJAP7/BAABAAMAAAAKAP3/BAABAAIAAAAKAP7/BAABAAMAAAALAP3/BAABAAIAAAALAP7/BAABAAMAAAAMAP3/BAABAAIAAAAMAP7/BAABAAMAAAANAP3/BAABAAIAAAANAP7/BAABAAMAAAAOAP3/BAABAAIAAAAOAP7/BAABAAMAAAAPAP3/BAABAAIAAAAPAP7/BAABAAMAAAAQAP3/BAABAAIAAAAQAP7/BAABAAMAAAARAP3/BAABAAIAAAARAP7/BAABAAMAAAASAP3/BAABAAIAAAASAP7/BAABAAMAAAD8//7/BAACAAEAAAD8////BAACAAEAAAD8/wAABAACAAEAAAD8/wEABAACAAEAAAD8/wIABAACAAEAAAD8/wMABAACAAEAAAD8/wQABAACAAEAAAD8/wUABAACAAEAAAD8/wYABAACAAEAAAD8/wcABAACAAEAAAD8/wgABAACAAEAAAD8/wkABAACAAEAAAD8/woABAACAAEAAAD9/wsABAABAAAAAAD8/wsABAABAAEAAAD+/wsABAABAAAAAAD//wsABAABAAAAAAAAAAsABAABAAAAAAABAAsABAABAAAAAAACAAsABAABAAAAAAADAAsABAABAAAAAAAEAAsABAABAAAAAAAFAAsABAABAAAAAAAGAAsABAABAAAAAAAHAAsABAABAAAAAAAIAAsABAABAAAAAAAJAAsABAABAAAAAAAKAAsABAABAAAAAAALAAsABAABAAAAAAAMAAsABAABAAAAAAANAAsABAABAAAAAAAOAAsABAABAAAAAAAPAAsABAABAAAAAAAQAAsABAABAAAAAAARAAsABAABAAAAAAASAAsABAABAAAAAAD8/wwABAAAAAIAAAD9/wwABAABAAIAAAD+/wwABAABAAIAAAD//wwABAABAAIAAAAAAAwABAABAAIAAAABAAwABAABAAIAAAACAAwABAABAAIAAAADAAwABAABAAIAAAAEAAwABAABAAIAAAAFAAwABAABAAIAAAAGAAwABAABAAIAAAAHAAwABAABAAIAAAAIAAwABAABAAIAAAAJAAwABAABAAIAAAAKAAwABAABAAIAAAALAAwABAABAAIAAAAMAAwABAABAAIAAAANAAwABAABAAIAAAAOAAwABAABAAIAAAAPAAwABAABAAIAAAAQAAwABAABAAIAAAARAAwABAABAAIAAAASAAwABAABAAIAAAATAP3/BAACAAIAAAATAP7/BAACAAMAAAATAAsABAACAAAAAAATAAwABAACAAIAAAD7/wsABAAAAAIAAAD7/woABAAAAAEAAAD7/wkABAAAAAEAAAD7/wgABAAAAAEAAAD7/wcABAAAAAEAAAD7/wYABAAAAAEAAAD7/wUABAAAAAEAAAD7/wQABAAAAAEAAAD7/wMABAAAAAEAAAD7/wIABAAAAAEAAAD7/wEABAAAAAEAAAD7/wAABAAAAAEAAAD7////BAAAAAEAAAD7//7/BAAAAAEAAAD7//3/BAAAAAAAAAATAPz/BAACAAAAAAASAPz/BAABAAAAAAARAPz/BAABAAAAAAAQAPz/BAABAAAAAAAPAPz/BAABAAAAAAAOAPz/BAABAAAAAAANAPz/BAABAAAAAAAMAPz/BAABAAAAAAALAPz/BAABAAAAAAAKAPz/BAABAAAAAAAJAPz/BAABAAAAAAAIAPz/BAABAAAAAAAHAPz/BAABAAAAAAAGAPz/BAABAAAAAAAFAPz/BAABAAAAAAAEAPz/BAABAAAAAAADAPz/BAABAAAAAAACAPz/BAABAAAAAAABAPz/BAABAAAAAAAAAPz/BAABAAAAAAD///z/BAABAAAAAAD+//z/BAABAAAAAAD9//z/BAABAAAAAAD8//z/BAAAAAAAAAATAA0ABAACAAMAAAASAA0ABAABAAMAAAARAA0ABAABAAMAAAAQAA0ABAABAAMAAAAPAA0ABAABAAMAAAAOAA0ABAABAAMAAAANAA0ABAABAAMAAAAMAA0ABAABAAMAAAALAA0ABAABAAMAAAAKAA0ABAABAAMAAAAJAA0ABAABAAMAAAAIAA0ABAABAAMAAAAHAA0ABAABAAMAAAAGAA0ABAABAAMAAAAFAA0ABAABAAMAAAAEAA0ABAABAAMAAAADAA0ABAABAAMAAAACAA0ABAABAAMAAAABAA0ABAABAAMAAAAAAA0ABAABAAMAAAD//w0ABAABAAMAAAD+/w0ABAABAAMAAAD9/w0ABAABAAMAAAD8/w0ABAAAAAMAAAD7/wwABAADAAMAAAA=") +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=273167719] +tile_map_data = PackedByteArray("AAD8//3/AAAAAAAAAAD8//7/AAAAAAAAAAD9//3/AAAAAAAAAAD9//7/AAAAAAAAAAD+//3/AAAAAAAAAAD+//7/AAAAAAAAAAD///3/AAAAAAAAAAD///7/AAAAAAAAAAAAAP3/AAAAAAAAAAAAAP7/AAAAAAAAAAABAP3/AAAAAAAAAAABAP7/AAAAAAAAAAACAP3/AAAAAAAAAAACAP7/AAAAAAAAAAADAP3/AAAAAAAAAAADAP7/AAAAAAAAAAAEAP3/AAAAAAAAAAAEAP7/AAAAAAAAAAAFAP3/AAAAAAAAAAAFAP7/AAAAAAAAAAAGAP3/AAAAAAAAAAAGAP7/AAAAAAAAAAAHAP3/AAAAAAAAAAAHAP7/AAAAAAAAAAAIAP3/AAAAAAAAAAAIAP7/AAAAAAAAAAAJAP3/AAAAAAAAAAAJAP7/AAAAAAAAAAAKAP3/AAAAAAAAAAAKAP7/AAAAAAAAAAALAP3/AAAAAAAAAAALAP7/AAAAAAAAAAAMAP3/AAAAAAAAAAAMAP7/AAAAAAAAAAANAP3/AAAAAAAAAAANAP7/AAAAAAAAAAAOAP3/AAAAAAAAAAAOAP7/AAAAAAAAAAAPAP3/AAAAAAAAAAAPAP7/AAAAAAAAAAAQAP3/AAAAAAAAAAAQAP7/AAAAAAAAAAARAP3/AAAAAAAAAAARAP7/AAAAAAAAAAASAP3/AAAAAAAAAAASAP7/AAAAAAAAAAATAP3/AAAAAAAAAAATAP7/AAAAAAAAAAD7//7/AAAAAAAAAAD7////AAAAAAAAAAD7/wAAAAAAAAAAAAD7/wEAAAAAAAAAAAD7/wIAAAAAAAAAAAD7/wMAAAAAAAAAAAD7/wQAAAAAAAAAAAD7/wUAAAAAAAAAAAD7/wYAAAAAAAAAAAD7/wcAAAAAAAAAAAD7/wgAAAAAAAAAAAD7/wkAAAAAAAAAAAD7/woAAAAAAAAAAAD7/wsAAAAAAAAAAAD7/wwAAAAAAAAAAAD8////AAAAAAAAAAD8/wAAAAAAAAAAAAD8/wEAAAAAAAAAAAD8/wIAAAAAAAAAAAD8/wMAAAAAAAAAAAD8/wQAAAAAAAAAAAD8/wUAAAAAAAAAAAD8/wYAAAAAAAAAAAD8/wcAAAAAAAAAAAD8/wgAAAAAAAAAAAD8/wkAAAAAAAAAAAD8/woAAAAAAAAAAAD8/wsAAAAAAAAAAAD8/wwAAAAAAAAAAAD8/w0AAAAAAAAAAAD9/wwAAAAAAAAAAAD9/w0AAAAAAAAAAAD+/wwAAAAAAAAAAAD+/w0AAAAAAAAAAAD//wwAAAAAAAAAAAD//w0AAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA0AAAAAAAAAAAABAAwAAAAAAAAAAAABAA0AAAAAAAAAAAACAAwAAAAAAAAAAAACAA0AAAAAAAAAAAADAAwAAAAAAAAAAAADAA0AAAAAAAAAAAAEAAwAAAAAAAAAAAAEAA0AAAAAAAAAAAAFAAwAAAAAAAAAAAAFAA0AAAAAAAAAAAAGAAwAAAAAAAAAAAAGAA0AAAAAAAAAAAAHAAwAAAAAAAAAAAAHAA0AAAAAAAAAAAAIAAwAAAAAAAAAAAAIAA0AAAAAAAAAAAAJAAwAAAAAAAAAAAAJAA0AAAAAAAAAAAAKAAwAAAAAAAAAAAAKAA0AAAAAAAAAAAALAAwAAAAAAAAAAAALAA0AAAAAAAAAAAAMAAwAAAAAAAAAAAAMAA0AAAAAAAAAAAANAAwAAAAAAAAAAAANAA0AAAAAAAAAAAAOAAwAAAAAAAAAAAAOAA0AAAAAAAAAAAAPAAwAAAAAAAAAAAAPAA0AAAAAAAAAAAAQAAwAAAAAAAAAAAAQAA0AAAAAAAAAAAARAAwAAAAAAAAAAAARAA0AAAAAAAAAAAASAAwAAAAAAAAAAAASAA0AAAAAAAAAAAATAAwAAAAAAAAAAAATAA0AAAAAAAAAAAA=") tile_set = ExtResource("2_erlwp") +[node name="Cliffs" type="TileMapLayer" parent="TileMapLayers" unique_id=1978692574] +tile_map_data = PackedByteArray("AAD8//3/BAABAAEAAAD9//3/BAABAAIAAAD+//3/BAABAAIAAAD///3/BAABAAIAAAAAAP3/BAABAAIAAAABAP3/BAABAAIAAAACAP3/BAABAAIAAAADAP3/BAABAAIAAAAEAP3/BAABAAIAAAAFAP3/BAABAAIAAAAGAP3/BAABAAIAAAAHAP3/BAABAAIAAAAIAP3/BAABAAIAAAAJAP3/BAABAAIAAAAKAP3/BAABAAIAAAALAP3/BAABAAIAAAAMAP3/BAABAAIAAAANAP3/BAABAAIAAAAOAP3/BAABAAIAAAAPAP3/BAABAAIAAAAQAP3/BAABAAIAAAARAP3/BAABAAIAAAASAP3/BAABAAIAAAD9/wsABAABAAAAAAD8/wsABAABAAEAAAD+/wsABAABAAAAAAD//wsABAABAAAAAAAAAAsABAABAAAAAAABAAsABAABAAAAAAACAAsABAABAAAAAAADAAsABAABAAAAAAAEAAsABAABAAAAAAAFAAsABAABAAAAAAAGAAsABAABAAAAAAAHAAsABAABAAAAAAAIAAsABAABAAAAAAAJAAsABAABAAAAAAAKAAsABAABAAAAAAALAAsABAABAAAAAAAMAAsABAABAAAAAAANAAsABAABAAAAAAAOAAsABAABAAAAAAAPAAsABAABAAAAAAAQAAsABAABAAAAAAARAAsABAABAAAAAAASAAsABAABAAAAAAD8/wwABAAAAAIAAAD9/wwABAABAAIAAAD+/wwABAABAAIAAAD//wwABAABAAIAAAAAAAwABAABAAIAAAABAAwABAABAAIAAAACAAwABAABAAIAAAADAAwABAABAAIAAAAEAAwABAABAAIAAAAFAAwABAABAAIAAAAGAAwABAABAAIAAAAHAAwABAABAAIAAAAIAAwABAABAAIAAAAJAAwABAABAAIAAAAKAAwABAABAAIAAAALAAwABAABAAIAAAAMAAwABAABAAIAAAANAAwABAABAAIAAAAOAAwABAABAAIAAAAPAAwABAABAAIAAAAQAAwABAABAAIAAAARAAwABAABAAIAAAASAAwABAABAAIAAAATAP3/BAACAAIAAAATAAsABAACAAAAAAATAAwABAACAAIAAAD7/wsABAAAAAIAAAD7//3/BAAAAAAAAAATAPz/BAACAAAAAAASAPz/BAABAAAAAAARAPz/BAABAAAAAAAQAPz/BAABAAAAAAAPAPz/BAABAAAAAAAOAPz/BAABAAAAAAANAPz/BAABAAAAAAAMAPz/BAABAAAAAAALAPz/BAABAAAAAAAKAPz/BAABAAAAAAAJAPz/BAABAAAAAAAIAPz/BAABAAAAAAAHAPz/BAABAAAAAAAGAPz/BAABAAAAAAAFAPz/BAABAAAAAAAEAPz/BAABAAAAAAADAPz/BAABAAAAAAACAPz/BAABAAAAAAABAPz/BAABAAAAAAAAAPz/BAABAAAAAAD///z/BAABAAAAAAD+//z/BAABAAAAAAD9//z/BAABAAAAAAD8//z/BAAAAAAAAAD8/woABAACAAEAAAD8/wkABAACAAEAAAD8/wgABAACAAEAAAD8/wcABAACAAEAAAD8/wYABAACAAEAAAD8/wUABAACAAEAAAD8/wQABAACAAEAAAD8/wMABAACAAEAAAD8/wIABAACAAEAAAD8/wEABAACAAEAAAD8/wAABAACAAEAAAD8////BAACAAEAAAD8//7/BAACAAEAAAD7/woABAAAAAEAAAD7/wkABAAAAAEAAAD7/wgABAAAAAEAAAD7/wcABAAAAAEAAAD7/wYABAAAAAEAAAD7/wUABAAAAAEAAAD7/wQABAAAAAEAAAD7/wMABAAAAAEAAAD7/wIABAAAAAEAAAD7/wEABAAAAAEAAAD7/wAABAAAAAEAAAD7////BAAAAAEAAAD7//7/BAAAAAEAAAA=") +tile_set = ExtResource("2_2334v") + [node name="OnTheGround" type="Node2D" parent="." unique_id=267871546] y_sort_enabled = true @@ -61,102 +69,102 @@ monitoring = false monitorable = false [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="OnTheGround/Copse" unique_id=13193883] -polygon = PackedVector2Array(-156, 283, -161, -43, 337, -38, 562, -52, 338, 59, 349, 326, 435, 364, 551, 450, 551, 679, -156, 684) +polygon = PackedVector2Array(-156, 283, 349, 326, 435, 364, 551, 450, 551, 679, -156, 684) disabled = true +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Copse" unique_id=1857877690] +position = Vector2(94.5, 143) +shape = SubResource("RectangleShape2D_2334v") + [node name="AreaFiller" type="Node" parent="OnTheGround/Copse" unique_id=1051149894] script = ExtResource("4_wg5pe") scenes = Array[PackedScene]([ExtResource("5_pymrf")]) minimum_separation = 128.0 metadata/_custom_type_script = "uid://bdhjixygupit1" -[node name="Tree" parent="OnTheGround/Copse" unique_id=363029490 instance=ExtResource("5_pymrf")] -position = Vector2(-156, 642.085) -scale = Vector2(1.19903, 1.11996) - -[node name="Tree2" parent="OnTheGround/Copse" unique_id=644302187 instance=ExtResource("5_pymrf")] -position = Vector2(-65.5906, 532.577) -scale = Vector2(0.753385, 0.823302) +[node name="Tree" parent="OnTheGround/Copse" unique_id=1182216860 instance=ExtResource("5_pymrf")] +position = Vector2(-156, 545.64307) +scale = Vector2(0.9501901, 0.8966881) -[node name="Tree3" parent="OnTheGround/Copse" unique_id=1452529763 instance=ExtResource("5_pymrf")] -position = Vector2(-114.146, 293.35) -scale = Vector2(1.27611, 1.19149) +[node name="Tree2" parent="OnTheGround/Copse" unique_id=156087058 instance=ExtResource("5_pymrf")] +position = Vector2(-107.52546, 335.69702) +scale = Vector2(1.0255482, 1.0751706) -[node name="Tree4" parent="OnTheGround/Copse" unique_id=1577759331 instance=ExtResource("5_pymrf")] -position = Vector2(103.224, 296.779) -scale = Vector2(1.19114, 1.16853) +[node name="Tree3" parent="OnTheGround/Copse" unique_id=1180452520 instance=ExtResource("5_pymrf")] +position = Vector2(-45.627083, 680.7351) +scale = Vector2(0.80463433, 0.8168682) -[node name="Tree5" parent="OnTheGround/Copse" unique_id=1870322601 instance=ExtResource("5_pymrf")] -position = Vector2(255.969, 263.198) -scale = Vector2(0.923787, 0.906455) +[node name="Tree4" parent="OnTheGround/Copse" unique_id=1826726526 instance=ExtResource("5_pymrf")] +position = Vector2(63.8844, 590.079) +scale = Vector2(0.7572993, 0.80115056) -[node name="Tree6" parent="OnTheGround/Copse" unique_id=1327362716 instance=ExtResource("5_pymrf")] -position = Vector2(227.341, 447.89) -scale = Vector2(1.24045, 1.1606) +[node name="Tree5" parent="OnTheGround/Copse" unique_id=2112886625 instance=ExtResource("5_pymrf")] +position = Vector2(67.67412, 427.5062) +scale = Vector2(1.221673, 1.1188015) -[node name="Tree7" parent="OnTheGround/Copse" unique_id=1612546651 instance=ExtResource("5_pymrf")] -position = Vector2(57.325, 605.821) -scale = Vector2(0.900663, 0.952294) +[node name="Tree6" parent="OnTheGround/Copse" unique_id=1228448945 instance=ExtResource("5_pymrf")] +position = Vector2(223.75189, 374.3617) +scale = Vector2(0.9882764, 0.9918234) -[node name="Tree8" parent="OnTheGround/Copse" unique_id=704072377 instance=ExtResource("5_pymrf")] -position = Vector2(-146.404, 151.543) -scale = Vector2(0.93009, 1.01519) +[node name="Tree7" parent="OnTheGround/Copse" unique_id=1002284068 instance=ExtResource("5_pymrf")] +position = Vector2(40.87838, 281.26462) +scale = Vector2(0.74797416, 0.8024196) -[node name="Tree9" parent="OnTheGround/Copse" unique_id=902094611 instance=ExtResource("5_pymrf")] -position = Vector2(396.26, 536.464) -scale = Vector2(0.869425, 0.945606) +[node name="Tree8" parent="OnTheGround/Copse" unique_id=2009012422 instance=ExtResource("5_pymrf")] +position = Vector2(-126.50485, 83.79721) +scale = Vector2(0.93246084, 1.0150456) -[node name="Tree10" parent="OnTheGround/Copse" unique_id=796793055 instance=ExtResource("5_pymrf")] -position = Vector2(365.845, 396.817) -scale = Vector2(1.0289, 0.97998) +[node name="Tree9" parent="OnTheGround/Copse" unique_id=293811921 instance=ExtResource("5_pymrf")] +position = Vector2(201.31888, 624.1895) +scale = Vector2(0.9880464, 1.0845654) -[node name="Tree11" parent="OnTheGround/Copse" unique_id=1863330117 instance=ExtResource("5_pymrf")] -position = Vector2(213.521, 657.881) -scale = Vector2(1.03879, 0.956392) +[node name="Tree10" parent="OnTheGround/Copse" unique_id=1313741567 instance=ExtResource("5_pymrf")] +position = Vector2(28.76091, 71.85419) +scale = Vector2(1.0606898, 1.0484953) -[node name="Tree12" parent="OnTheGround/Copse" unique_id=1542209646 instance=ExtResource("5_pymrf")] -position = Vector2(191.601, 137.651) -scale = Vector2(1.02923, 0.999491) +[node name="Tree11" parent="OnTheGround/Copse" unique_id=1636706777 instance=ExtResource("5_pymrf")] +position = Vector2(338.99207, 515.0587) +scale = Vector2(1.1659484, 1.1195719) -[node name="Tree13" parent="OnTheGround/Copse" unique_id=1856158103 instance=ExtResource("5_pymrf")] -position = Vector2(9.48245, 193.881) -scale = Vector2(1.05354, 0.964748) +[node name="Tree12" parent="OnTheGround/Copse" unique_id=345751835 instance=ExtResource("5_pymrf")] +position = Vector2(182.89023, 190.7693) +scale = Vector2(0.94851416, 0.916154) -[node name="Tree14" parent="OnTheGround/Copse" unique_id=269470282 instance=ExtResource("5_pymrf")] -position = Vector2(55.2323, 435.048) -scale = Vector2(0.801946, 0.827176) +[node name="Tree13" parent="OnTheGround/Copse" unique_id=1239608806 instance=ExtResource("5_pymrf")] +position = Vector2(398.8647, 636.9108) +scale = Vector2(0.73436296, 0.81472546) -[node name="Tree15" parent="OnTheGround/Copse" unique_id=330401252 instance=ExtResource("5_pymrf")] -position = Vector2(544.979, 549.641) -scale = Vector2(0.743743, 0.807701) +[node name="Tree14" parent="OnTheGround/Copse" unique_id=257774407 instance=ExtResource("5_pymrf")] +position = Vector2(-151.68704, 212.05228) +scale = Vector2(0.91645324, 0.85467523) -[node name="Tree16" parent="OnTheGround/Copse" unique_id=1410098436 instance=ExtResource("5_pymrf")] -position = Vector2(51.2784, 28.4496) -scale = Vector2(1.23048, 1.19137) +[node name="Tree15" parent="OnTheGround/Copse" unique_id=313956531 instance=ExtResource("5_pymrf")] +position = Vector2(511.9051, 509.49765) +scale = Vector2(0.95969415, 0.9043763) -[node name="Tree17" parent="OnTheGround/Copse" unique_id=2065473170 instance=ExtResource("5_pymrf")] -position = Vector2(-100.082, -26.1772) -scale = Vector2(0.910816, 0.865905) +[node name="Tree16" parent="OnTheGround/Copse" unique_id=856235244 instance=ExtResource("5_pymrf")] +position = Vector2(534.4697, 652.9409) +scale = Vector2(0.8452146, 0.90980303) -[node name="Tree18" parent="OnTheGround/Copse" unique_id=905077759 instance=ExtResource("5_pymrf")] -position = Vector2(402.392, 670.1) -scale = Vector2(0.886256, 0.894595) +[node name="Tree17" parent="OnTheGround/Copse" unique_id=1029727515 instance=ExtResource("5_pymrf")] +position = Vector2(315.48508, 167.0921) +scale = Vector2(0.88783264, 0.81734496) -[node name="Tree19" parent="OnTheGround/Copse" unique_id=638757157 instance=ExtResource("5_pymrf")] -position = Vector2(-154.267, 431.705) -scale = Vector2(1.14384, 1.13814) +[node name="Tree18" parent="OnTheGround/Copse" unique_id=282879065 instance=ExtResource("5_pymrf")] +position = Vector2(409.4726, 387.03223) +scale = Vector2(0.86605906, 0.8824465) -[node name="Tree20" parent="OnTheGround/Copse" unique_id=2125344141 instance=ExtResource("5_pymrf")] -position = Vector2(315.157, 99.7755) -scale = Vector2(1.05292, 1.09395) +[node name="Tree19" parent="OnTheGround/Copse" unique_id=1043644590 instance=ExtResource("5_pymrf")] +position = Vector2(248.17108, 38.882988) +scale = Vector2(0.9151707, 0.86422473) -[node name="Tree21" parent="OnTheGround/Copse" unique_id=722936684 instance=ExtResource("5_pymrf")] -position = Vector2(189.537, -31.1871) -scale = Vector2(1.03401, 0.971688) +[node name="Tree20" parent="OnTheGround/Copse" unique_id=1206493890 instance=ExtResource("5_pymrf")] +position = Vector2(105.84067, -35.973274) +scale = Vector2(1.2129263, 1.1689912) -[node name="Tree22" parent="OnTheGround/Copse" unique_id=1720715975 instance=ExtResource("5_pymrf")] -position = Vector2(414.812, 16.943) -scale = Vector2(0.883292, 0.904584) +[node name="Tree21" parent="OnTheGround/Copse" unique_id=770855147 instance=ExtResource("5_pymrf")] +position = Vector2(-56.77591, -39.27849) +scale = Vector2(1.0502416, 1.1018555) [node name="FlowerbedSign" parent="OnTheGround" unique_id=1273484221 instance=ExtResource("7_rciqa")] position = Vector2(1056, 211) diff --git a/scenes/game_elements/props/background_music/components/background_music.gd b/scenes/game_elements/props/background_music/components/background_music.gd index 5b8e8885b1..d4120b6653 100644 --- a/scenes/game_elements/props/background_music/components/background_music.gd +++ b/scenes/game_elements/props/background_music/components/background_music.gd @@ -7,23 +7,74 @@ extends Node ## ## This controls the singleton MusicPlayer node, which outlives every scene, so ## that music can keep playing between scenes. -## +## [br][br] +## If [member stream] is an [AudioStreamInteractive], you can control the clip +## to play at different points in the scene using [member clip], [method +## set_clip], and [ClipSwitcher] child nodes. +## [br][br] ## There should be at most one BackgroundMusic component in a scene. @export_tool_button("Play") var play_button: Callable = play @export_tool_button("Stop") var stop_button: Callable = stop +## The music stream to play in this scene. +## [br][br] +## This should generally be configured to loop. For a simple audio file such as +## an [AudioStreamOggVorbis], configure it to loop in the Import panel. For an +## [AudioStreamPlaylist], you can set the [member AudioStreamPlaylist.loop] +## property. For an [AudioStreamInteractive], with great power comes great +## responsibility. @export var stream: AudioStream: set(new_value): stream = new_value update_configuration_warnings() + notify_property_list_changed() + +## If [member stream] is an [AudioStreamInteractive], switch to the named clip +## (rather than [member stream]'s [member AudioStreamInteractive.initial_clip]) +## when entering (or restarting) this scene. If the music is already playing, +## switch to this clip. +## [br][br] +## If not set, the behaviour depends on what was playing in the previous scene. +## If a different stream was playing, [member stream]'s +## [member AudioStreamInteractive.initial_clip] will play. If [member stream] +## was already playing, whatever clip it happened to be playing will continue. +@export var clip: StringName: + set = set_clip + +var _playing := false + + +func _get_clip_names() -> Array[String]: + if stream is not AudioStreamInteractive: + return [] + + var names: Array[String] = [""] + for i: int in stream.clip_count: + names.append(stream.get_clip_name(i)) + return names + + +func _validate_property(property: Dictionary) -> void: + match property["name"]: + "clip": + if stream is AudioStreamInteractive: + property.type = TYPE_STRING + property.hint = PROPERTY_HINT_ENUM + property.hint_string = ",".join(_get_clip_names()) + else: + # Hide clip property when it cannot be used + property.usage = PROPERTY_USAGE_NONE func _get_configuration_warnings() -> PackedStringArray: + var warnings: PackedStringArray if not stream: - return ["Audio stream is not set, so there won't be background music!"] + warnings.append("Audio stream is not set, so there won't be background music!") + elif stream is AudioStreamInteractive and clip and clip not in _get_clip_names(): + warnings.append("Clip '{0}' does not exist in the audio stream.".format(clip)) - return [] + return warnings func _ready() -> void: @@ -41,15 +92,19 @@ func _exit_tree() -> void: ## Start playing [member stream], if it is not already playing. Does nothing if ## [member stream] is already playing. func play() -> void: - MusicPlayer.play_stream(stream) + _playing = true + MusicPlayer.play_stream(stream, clip) ## Stop playing background music. func stop() -> void: + _playing = false MusicPlayer.play_stream(null) ## If [member stream] is an [AudioStreamInteractive], and is playing, ## switch to [param clip_name]. -func switch_to_clip(clip_name: StringName) -> void: - MusicPlayer.switch_to_clip(clip_name) +func set_clip(clip_name: StringName) -> void: + clip = clip_name + if _playing: + MusicPlayer.switch_to_clip(clip_name) diff --git a/scenes/game_elements/props/background_music/components/clip_switcher.gd b/scenes/game_elements/props/background_music/components/clip_switcher.gd new file mode 100644 index 0000000000..ca715d94f6 --- /dev/null +++ b/scenes/game_elements/props/background_music/components/clip_switcher.gd @@ -0,0 +1,98 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +class_name ClipSwitcher +extends Node +## Switch between clips in an [AudioStreamInteractive] on a [BackgroundMusic] +## node. +## +## This must be a child of a [BackgroundMusic] node, whose [member +## BackgroundMusic.stream] must be an [AudioStreamInteractive]. Either set +## [member trigger] to an Area2D in the scene, or call [method switch] in some +## other way. + +## The name of the [AudioStreamInteractive] clip to switch to. +@export var clip: StringName: + set = _set_clip + +## Switch to [param clip] whenever this area emits [signal Area2D.body_entered]. +## Typically the area should be configured to only detect the player, but you +## could imagine other possibilities. +@export var trigger: Area2D: + set = _set_trigger + +## If enabled, only [method switch] in response to [member trigger] emitting +## [signal Area2D.body_entered] once. If disabled, switch every time. +@export var one_shot: bool = true: + set = _set_one_shot + +var _bgm: BackgroundMusic + + +func _set_clip(value: StringName) -> void: + clip = value + update_configuration_warnings() + + +func _set_trigger(value: Area2D) -> void: + if not Engine.is_editor_hint() and trigger: + trigger.disconnect("body_entered", self._on_body_entered) + trigger = value + if not Engine.is_editor_hint() and trigger: + var flags := ConnectFlags.CONNECT_ONE_SHOT if one_shot else 0 + trigger.connect("body_entered", self._on_body_entered, flags) + + +func _set_one_shot(value: bool) -> void: + one_shot = value + + # reconnect signal + _set_trigger(trigger) + + +func _validate_property(property: Dictionary) -> void: + match property["name"]: + "clip": + if _bgm: + property.type = TYPE_STRING + property.hint = PROPERTY_HINT_ENUM + property.hint_string = ",".join(_bgm._get_clip_names()) + "one_shot": + if not trigger: + property.usage |= PROPERTY_USAGE_READ_ONLY + + +func _get_configuration_warnings() -> PackedStringArray: + var warnings: PackedStringArray + if not _bgm: + warnings.append("Must be a child of a BackgroundMusic node") + else: + var clip_names := _bgm._get_clip_names() + if not clip_names: + warnings.append( + "BackgroundMusic stream has no clips - is it an AudioStreamInteractive?" + ) + elif clip and clip not in clip_names: + warnings.append("Clip '%s' doesn't exist on BackgroundMusic's stream" % clip) + if not clip: + warnings.append("Clip is not set") + return warnings + + +func _enter_tree() -> void: + _bgm = get_parent() as BackgroundMusic + update_configuration_warnings() + + +func _exit_tree() -> void: + _bgm = null + + +func _on_body_entered(_body: Node2D) -> void: + switch() + + +## Tell the parent [BackgroundMusic] to switch to [member clip]. +func switch() -> void: + assert(_bgm) + _bgm.set_clip(clip) diff --git a/scenes/game_elements/props/background_music/components/clip_switcher.gd.uid b/scenes/game_elements/props/background_music/components/clip_switcher.gd.uid new file mode 100644 index 0000000000..98cc58041c --- /dev/null +++ b/scenes/game_elements/props/background_music/components/clip_switcher.gd.uid @@ -0,0 +1 @@ +uid://c2lx7gvkonxaa diff --git a/scenes/game_elements/props/buildings/house/house_1.tscn b/scenes/game_elements/props/buildings/house/house_1.tscn index 93bb5dba58..ea4102b2c9 100644 --- a/scenes/game_elements/props/buildings/house/house_1.tscn +++ b/scenes/game_elements/props/buildings/house/house_1.tscn @@ -2,6 +2,8 @@ [ext_resource type="Script" uid="uid://diknsuw3mtj1n" path="res://scenes/game_elements/props/decoration/decoration.gd" id="1_qufpk"] [ext_resource type="Texture2D" uid="uid://dyf1kgdf0ovtj" path="res://scenes/game_elements/props/buildings/house/components/House_Patch_Blue_01.png" id="2_qufpk"] +[ext_resource type="Texture2D" uid="uid://b5ooaiyxdrp6a" path="res://scenes/game_elements/components/light_texture_256x256.tres" id="3_8suvv"] +[ext_resource type="Script" uid="uid://bk52qjv58locq" path="res://scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd" id="4_1q8nw"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_sr1lu"] size = Vector2(64.0002, 80) @@ -23,3 +25,18 @@ shape = SubResource("RectangleShape2D_sr1lu") unique_name_in_owner = true position = Vector2(1, -75) texture = ExtResource("2_qufpk") + +[node name="PointLight2D" type="PointLight2D" parent="." unique_id=557148839 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -55) +enabled = false +color = Color(1, 1, 0, 1) +energy = 0.5 +texture = ExtResource("3_8suvv") + +[node name="ArtificialLightBehavior" type="Node" parent="PointLight2D" unique_id=1503410579 node_paths=PackedStringArray("light")] +editor_description = "A random delay here adds variation to a stack of houses." +script = ExtResource("4_1q8nw") +light = NodePath("..") +random_delay = 3.0 +metadata/_custom_type_script = "uid://bk52qjv58locq" diff --git a/scenes/game_elements/props/buildings/house/house_2.tscn b/scenes/game_elements/props/buildings/house/house_2.tscn index f7b8acec59..59edee9ef4 100644 --- a/scenes/game_elements/props/buildings/house/house_2.tscn +++ b/scenes/game_elements/props/buildings/house/house_2.tscn @@ -2,6 +2,8 @@ [ext_resource type="Script" uid="uid://diknsuw3mtj1n" path="res://scenes/game_elements/props/decoration/decoration.gd" id="1_q48y4"] [ext_resource type="Texture2D" uid="uid://bhka6hku3g4th" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Blue_01.png" id="2_1mgcp"] +[ext_resource type="Texture2D" uid="uid://b5ooaiyxdrp6a" path="res://scenes/game_elements/components/light_texture_256x256.tres" id="3_1mgcp"] +[ext_resource type="Script" uid="uid://bk52qjv58locq" path="res://scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd" id="4_od3de"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_sr1lu"] size = Vector2(62.7499, 97.0001) @@ -23,3 +25,17 @@ shape = SubResource("RectangleShape2D_sr1lu") unique_name_in_owner = true position = Vector2(0, -72) texture = ExtResource("2_1mgcp") + +[node name="PointLight2D" type="PointLight2D" parent="." unique_id=388975817 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, -55) +enabled = false +color = Color(1, 1, 0, 1) +energy = 0.5 +texture = ExtResource("3_1mgcp") + +[node name="ArtificialLightBehavior" type="Node" parent="PointLight2D" unique_id=2038639806 node_paths=PackedStringArray("light")] +script = ExtResource("4_od3de") +light = NodePath("..") +random_delay = 3.0 +metadata/_custom_type_script = "uid://bk52qjv58locq" diff --git a/scenes/game_elements/props/buildings/inn/components/inn.aseprite b/scenes/game_elements/props/buildings/inn/components/inn.aseprite new file mode 100644 index 0000000000..c4f8924b3b --- /dev/null +++ b/scenes/game_elements/props/buildings/inn/components/inn.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e08886360c6f0c2641eb369c11d34c7e8a86dc428cf4653cb7e4d7934cb293b1 +size 14017 diff --git a/scenes/game_elements/props/buildings/inn/components/inn.png b/scenes/game_elements/props/buildings/inn/components/inn.png new file mode 100644 index 0000000000..14bd39351d --- /dev/null +++ b/scenes/game_elements/props/buildings/inn/components/inn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:222e876c65224d2293719d16e46b0167582e6957853e9da29e6c101431ea11db +size 10706 diff --git a/scenes/game_elements/props/buildings/inn/components/inn.png.import b/scenes/game_elements/props/buildings/inn/components/inn.png.import new file mode 100644 index 0000000000..3f4021a05a --- /dev/null +++ b/scenes/game_elements/props/buildings/inn/components/inn.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djpqmeu1t8pxk" +path="res://.godot/imported/inn.png-4c039c6bdfe40e5e37a30dad40e2d9bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/buildings/inn/components/inn.png" +dest_files=["res://.godot/imported/inn.png-4c039c6bdfe40e5e37a30dad40e2d9bc.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/game_elements/props/buildings/inn/inn.tscn b/scenes/game_elements/props/buildings/inn/inn.tscn new file mode 100644 index 0000000000..11e7564844 --- /dev/null +++ b/scenes/game_elements/props/buildings/inn/inn.tscn @@ -0,0 +1,61 @@ +[gd_scene format=3 uid="uid://cqtrjqk6xxx84"] + +[ext_resource type="Texture2D" uid="uid://djpqmeu1t8pxk" path="res://scenes/game_elements/props/buildings/inn/components/inn.png" id="1_f08qg"] +[ext_resource type="Texture2D" uid="uid://b5ooaiyxdrp6a" path="res://scenes/game_elements/components/light_texture_256x256.tres" id="2_thw4m"] +[ext_resource type="Script" uid="uid://bk52qjv58locq" path="res://scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd" id="3_6v01s"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_f08qg"] +size = Vector2(102, 54) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_mkj5x"] +size = Vector2(54, 42) + +[node name="Inn" type="Node2D" unique_id=1528729065] + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=880549347] +position = Vector2(0, -71) +texture = ExtResource("1_f08qg") + +[node name="StaticBody2D" type="StaticBody2D" parent="." unique_id=1966422159] +collision_layer = 16 +collision_mask = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D" unique_id=1898797309] +position = Vector2(0, -25) +shape = SubResource("RectangleShape2D_f08qg") + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D" unique_id=1951487947] +position = Vector2(78, -31) +shape = SubResource("RectangleShape2D_mkj5x") + +[node name="PointLight2D" type="PointLight2D" parent="." unique_id=2118406319 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(82, -32) +scale = Vector2(0.384, 0.384) +enabled = false +color = Color(1, 1, 0, 1) +energy = 0.5 +texture = ExtResource("2_thw4m") + +[node name="ArtificialLightBehavior" type="Node" parent="PointLight2D" unique_id=710365563 node_paths=PackedStringArray("light")] +editor_description = "A random delay here adds variation to a stack of houses." +script = ExtResource("3_6v01s") +light = NodePath("..") +random_delay = 3.0 +metadata/_custom_type_script = "uid://bk52qjv58locq" + +[node name="PointLight2D2" type="PointLight2D" parent="." unique_id=1269358253 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(-71, -26) +scale = Vector2(0.377, 0.377) +enabled = false +color = Color(1, 1, 0, 1) +energy = 0.5 +texture = ExtResource("2_thw4m") + +[node name="ArtificialLightBehavior" type="Node" parent="PointLight2D2" unique_id=2047170713 node_paths=PackedStringArray("light")] +editor_description = "A random delay here adds variation to a stack of houses." +script = ExtResource("3_6v01s") +light = NodePath("..") +random_delay = 3.0 +metadata/_custom_type_script = "uid://bk52qjv58locq" diff --git a/scenes/game_elements/props/character_sight/character_sight.gd b/scenes/game_elements/props/character_sight/character_sight.gd new file mode 100644 index 0000000000..9d1fa4b03c --- /dev/null +++ b/scenes/game_elements/props/character_sight/character_sight.gd @@ -0,0 +1,90 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +class_name CharacterSight +extends Area2D +## The area of sight of the character. +## +## The character sees one [InteractArea] at a time to interact. +## This area also faces toward the character current direction. +## [br][br] +## This script automatically configures the correct [member collision_layer] and +## [member collision_mask] values to enable interaction with the player. + +## Emitted when [member interact_area] changes. +signal interact_area_changed + +## The character. +@export var character: CharacterBody2D + +## The direction the character is facing. +## [br][br] +## TODO: Use east/west instead of right/left? +var is_looking_from_right: bool = false + +## The area that the character is currently observing. +var interact_area: InteractArea: + set = _set_interact_area + + +func _set_interact_area(new_interact_area: InteractArea) -> void: + if interact_area: + interact_area.remove_observer(self) + interact_area = new_interact_area + if new_interact_area: + interact_area.add_observer(self) + + +func _ready() -> void: + if not character and owner is CharacterBody2D: + character = owner + collision_layer = 0 + collision_mask = 0 + set_collision_mask_value(Enums.CollisionLayers.INTERACTABLE, true) + area_entered.connect(_on_area_entered) + area_exited.connect(_on_area_exited) + + +func _get_best_interact_area() -> InteractArea: + if not monitoring: + return null + var areas := get_overlapping_areas() + var best: InteractArea = null + var best_distance: float = INF + + # TODO: This picks the closest area according to their global position, + # which could be misleading. An Area2D may have a collision shape + # that is far away from it's anchor. + for area in areas: + var distance := global_position.distance_to(area.global_position) + if not best or distance < best_distance: + best_distance = distance + best = area + + return best + + +func _process(_delta: float) -> void: + if not character: + return + # Flip this area according to the character current direction: + if not is_zero_approx(character.velocity.x): + if character.velocity.x < 0: + scale.x = -1 + else: + scale.x = 1 + is_looking_from_right = scale.x < 0 + + +func _on_area_entered(_area: Area2D) -> void: + _update_interact_area() + + +func _on_area_exited(_area: Area2D) -> void: + _update_interact_area() + + +func _update_interact_area() -> void: + var best := _get_best_interact_area() + if interact_area != best: + interact_area = best + interact_area_changed.emit() diff --git a/scenes/game_elements/characters/player/components/interact_zone.gd.uid b/scenes/game_elements/props/character_sight/character_sight.gd.uid similarity index 100% rename from scenes/game_elements/characters/player/components/interact_zone.gd.uid rename to scenes/game_elements/props/character_sight/character_sight.gd.uid diff --git a/scenes/game_elements/props/checkpoint/checkpoint.tscn b/scenes/game_elements/props/checkpoint/checkpoint.tscn index d30771d7fb..4dfff22d94 100644 --- a/scenes/game_elements/props/checkpoint/checkpoint.tscn +++ b/scenes/game_elements/props/checkpoint/checkpoint.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://bk5ri1yoakaqp" path="res://scenes/game_elements/props/checkpoint/components/checkpoint.gd" id="1_kkoqv"] [ext_resource type="Script" uid="uid://0enyu5v4ra34" path="res://scenes/game_elements/props/spawn_point/components/spawn_point.gd" id="2_s5d1s"] [ext_resource type="SpriteFrames" uid="uid://dmg1egdoye3ns" path="res://scenes/game_elements/props/checkpoint/components/knitwitch_frames_purple.tres" id="4_3xcwf"] -[ext_resource type="PackedScene" uid="uid://dutgnbiy7xalb" path="res://scenes/game_elements/props/interact_area/interact_area.tscn" id="4_cukws"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="4_bjlxs"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="5_3xcwf"] [sub_resource type="CircleShape2D" id="CircleShape2D_3xcwf"] @@ -15,27 +15,34 @@ script = ExtResource("1_kkoqv") [node name="SpawnPoint" type="Marker2D" parent="." unique_id=118546798 groups=["spawn_point"]] unique_name_in_owner = true +position = Vector2(0, 1) script = ExtResource("2_s5d1s") [node name="Sprite" type="AnimatedSprite2D" parent="." unique_id=422090831] unique_name_in_owner = true -position = Vector2(0, -40) +position = Vector2(0, -64) sprite_frames = ExtResource("4_3xcwf") animation = &"idle" autoplay = "idle" -[node name="InteractArea" parent="." unique_id=2037902510 instance=ExtResource("4_cukws")] +[node name="InteractArea" type="Area2D" parent="." unique_id=2037902510 node_paths=PackedStringArray("marker")] unique_name_in_owner = true collision_layer = 0 -interact_label_position = Vector2(0, -128) +collision_mask = 0 +script = ExtResource("4_bjlxs") +marker = NodePath("Marker") disabled = true action = "Admire" +metadata/_custom_type_script = "uid://du8wfijr35r35" [node name="CollisionShape" type="CollisionShape2D" parent="InteractArea" unique_id=317026295] position = Vector2(1, -4) shape = SubResource("CircleShape2D_3xcwf") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=1178774098] +position = Vector2(0, -128) + [node name="TalkBehavior" type="Node" parent="." unique_id=487856562 node_paths=PackedStringArray("interact_area")] unique_name_in_owner = true script = ExtResource("5_3xcwf") diff --git a/scenes/game_elements/props/collectible_item/collectible_item.tscn b/scenes/game_elements/props/collectible_item/collectible_item.tscn index 3493ed8dc7..b9aece7947 100644 --- a/scenes/game_elements/props/collectible_item/collectible_item.tscn +++ b/scenes/game_elements/props/collectible_item/collectible_item.tscn @@ -1,9 +1,9 @@ [gd_scene format=3 uid="uid://fuhl3l6gxq5k"] [ext_resource type="Script" uid="uid://be7lr8ty24cix" path="res://scenes/game_elements/props/collectible_item/components/collectible_item.gd" id="1_7ff3m"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="2_1kegn"] [ext_resource type="AudioStream" uid="uid://bhgpds38q0j4r" path="res://assets/third_party/sounds/collectibles/MemoryCollectable.ogg" id="5_hhgm5"] [ext_resource type="AudioStream" uid="uid://38xwdjm46478" path="res://assets/third_party/sounds/collectibles/CollectibleAppear.ogg" id="5_oh62b"] -[ext_resource type="PackedScene" uid="uid://dutgnbiy7xalb" path="res://scenes/game_elements/props/interact_area/interact_area.tscn" id="6_j0enh"] [sub_resource type="CircleShape2D" id="CircleShape2D_ghwae"] radius = 20.0 @@ -94,6 +94,18 @@ tracks/6/keys = { "update": 0, "values": [0.0] } +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("InteractArea:disabled") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} [sub_resource type="Animation" id="Animation_7ff3m"] resource_name = "collected" @@ -197,6 +209,18 @@ tracks/7/keys = { "update": 0, "values": [0.0, 0.0, -12.0] } +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("InteractArea:disabled") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} [sub_resource type="Animation" id="Animation_qy0vu"] resource_name = "reveal" @@ -277,14 +301,21 @@ height = 28.0 [node name="CollectibleItem" type="Node2D" unique_id=327991066] script = ExtResource("1_7ff3m") -[node name="InteractArea" parent="." unique_id=1327503985 instance=ExtResource("6_j0enh")] -interact_label_position = Vector2(0, -71) +[node name="InteractArea" type="Area2D" parent="." unique_id=1327503985 node_paths=PackedStringArray("marker")] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("2_1kegn") +marker = NodePath("Marker") action = "Collect" +metadata/_custom_type_script = "uid://du8wfijr35r35" [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=1121983883] shape = SubResource("CircleShape2D_ghwae") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=1961850851] +position = Vector2(0, -48) + [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1869284545] libraries/ = SubResource("AnimationLibrary_8dm1m") diff --git a/scenes/game_elements/props/decoration/bunny/bunny.tscn b/scenes/game_elements/props/decoration/bunny/bunny.tscn new file mode 100644 index 0000000000..e6e98fac7e --- /dev/null +++ b/scenes/game_elements/props/decoration/bunny/bunny.tscn @@ -0,0 +1,20 @@ +[gd_scene format=3 uid="uid://djmdhrse34vgq"] + +[ext_resource type="Script" uid="uid://jllabtpjc46i" path="res://scenes/game_elements/props/decoration/animated_decoration.gd" id="1_ubben"] +[ext_resource type="SpriteFrames" uid="uid://dvgkthnd2qo4y" path="res://scenes/game_elements/characters/components/sprite_frames/bunny_pink.tres" id="2_poc3p"] +[ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="3_ju0ou"] + +[node name="Bunny" type="Node2D" unique_id=398073521] +script = ExtResource("1_ubben") +sprite_frames = ExtResource("2_poc3p") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1456881412] +unique_name_in_owner = true +sprite_frames = ExtResource("2_poc3p") +animation = &"idle" +offset = Vector2(2, -8) + +[node name="RandomFrameSpriteBehavior" type="Node2D" parent="AnimatedSprite2D" unique_id=63344388 node_paths=PackedStringArray("sprite")] +script = ExtResource("3_ju0ou") +sprite = NodePath("..") +metadata/_custom_type_script = "uid://cms2wqtbxjl1h" diff --git a/scenes/game_elements/props/decoration/butterfly/butterfly.tscn b/scenes/game_elements/props/decoration/butterfly/butterfly.tscn new file mode 100644 index 0000000000..890c6b734a --- /dev/null +++ b/scenes/game_elements/props/decoration/butterfly/butterfly.tscn @@ -0,0 +1,18 @@ +[gd_scene format=3 uid="uid://dttyvh6kyru5y"] + +[ext_resource type="Script" uid="uid://jllabtpjc46i" path="res://scenes/game_elements/props/decoration/animated_decoration.gd" id="1_hnx3m"] +[ext_resource type="SpriteFrames" uid="uid://c301x17j2mgnb" path="res://scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_blue.tres" id="2_cbbth"] +[ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="2_hnx3m"] + +[node name="Butterfly" type="Node2D" unique_id=488734917] +script = ExtResource("1_hnx3m") +sprite_frames = ExtResource("2_cbbth") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1802368048] +unique_name_in_owner = true +sprite_frames = ExtResource("2_cbbth") + +[node name="RandomFrameSpriteBehavior" type="Node2D" parent="AnimatedSprite2D" unique_id=307964187 node_paths=PackedStringArray("sprite")] +script = ExtResource("2_hnx3m") +sprite = NodePath("..") +metadata/_custom_type_script = "uid://cms2wqtbxjl1h" diff --git a/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_blue.tres b/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_blue.tres new file mode 100644 index 0000000000..b95b3a47ec --- /dev/null +++ b/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_blue.tres @@ -0,0 +1,39 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://c301x17j2mgnb"] + +[ext_resource type="Texture2D" uid="uid://csk7me5fhad60" path="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_blue.png" id="1_v3dtu"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_cbbth"] +atlas = ExtResource("1_v3dtu") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_c66t1"] +atlas = ExtResource("1_v3dtu") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8neng"] +atlas = ExtResource("1_v3dtu") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_704a1"] +atlas = ExtResource("1_v3dtu") +region = Rect2(384, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_cbbth") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_c66t1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8neng") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_704a1") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_green.tres b/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_green.tres new file mode 100644 index 0000000000..e9a2bdebe8 --- /dev/null +++ b/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_green.tres @@ -0,0 +1,39 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://d0c1wfqm2pcmr"] + +[ext_resource type="Texture2D" uid="uid://dmbnab0juxm6u" path="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_green.png" id="1_k2ka0"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_6ugsa"] +atlas = ExtResource("1_k2ka0") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_k2ka0"] +atlas = ExtResource("1_k2ka0") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_f6b4m"] +atlas = ExtResource("1_k2ka0") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_641w0"] +atlas = ExtResource("1_k2ka0") +region = Rect2(384, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_6ugsa") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_k2ka0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_f6b4m") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_641w0") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_orange.tres b/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_orange.tres new file mode 100644 index 0000000000..4180ec7415 --- /dev/null +++ b/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_orange.tres @@ -0,0 +1,39 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://ccl37u28eekx8"] + +[ext_resource type="Texture2D" uid="uid://drsktuxx23p1y" path="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_orange.png" id="1_6hrkx"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_mbefw"] +atlas = ExtResource("1_6hrkx") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6hrkx"] +atlas = ExtResource("1_6hrkx") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gqt4n"] +atlas = ExtResource("1_6hrkx") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dkkdv"] +atlas = ExtResource("1_6hrkx") +region = Rect2(384, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_mbefw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6hrkx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gqt4n") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_dkkdv") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_pink.tres b/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_pink.tres new file mode 100644 index 0000000000..a073e6c7dd --- /dev/null +++ b/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_pink.tres @@ -0,0 +1,39 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://xvd6g7hl5weq"] + +[ext_resource type="Texture2D" uid="uid://cdgk5axv7f4lb" path="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_pink.png" id="1_6drmy"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_lsxho"] +atlas = ExtResource("1_6drmy") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6drmy"] +atlas = ExtResource("1_6drmy") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hn3qy"] +atlas = ExtResource("1_6drmy") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4kc44"] +atlas = ExtResource("1_6drmy") +region = Rect2(384, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_lsxho") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6drmy") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hn3qy") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4kc44") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_red.tres b/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_red.tres new file mode 100644 index 0000000000..5352cc6bb8 --- /dev/null +++ b/scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_red.tres @@ -0,0 +1,39 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://b81ibkdhsfthe"] + +[ext_resource type="Texture2D" uid="uid://ceqf01tqus1ov" path="res://assets/first_party/wildlife/butterfly/butterfly_flower_loop_1_red.png" id="1_1xxgl"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_47b87"] +atlas = ExtResource("1_1xxgl") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1xxgl"] +atlas = ExtResource("1_1xxgl") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nygnn"] +atlas = ExtResource("1_1xxgl") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ohopc"] +atlas = ExtResource("1_1xxgl") +region = Rect2(384, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_47b87") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1xxgl") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_nygnn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ohopc") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/decoration/capycorn/capycorn.tscn b/scenes/game_elements/props/decoration/capycorn/capycorn.tscn new file mode 100644 index 0000000000..0470a6687c --- /dev/null +++ b/scenes/game_elements/props/decoration/capycorn/capycorn.tscn @@ -0,0 +1,20 @@ +[gd_scene format=3 uid="uid://de2aceqqvj7dr"] + +[ext_resource type="Script" uid="uid://jllabtpjc46i" path="res://scenes/game_elements/props/decoration/animated_decoration.gd" id="1_o87cb"] +[ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="2_71p58"] +[ext_resource type="SpriteFrames" uid="uid://d0sqoy5x0tfum" path="res://scenes/game_elements/characters/components/sprite_frames/capycorn_light_brown.tres" id="2_o87cb"] + +[node name="Capycorn" type="Node2D" unique_id=398073521] +script = ExtResource("1_o87cb") +sprite_frames = ExtResource("2_o87cb") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1456881412] +unique_name_in_owner = true +sprite_frames = ExtResource("2_o87cb") +animation = &"idle" +offset = Vector2(2, -14) + +[node name="RandomFrameSpriteBehavior" type="Node2D" parent="AnimatedSprite2D" unique_id=63344388 node_paths=PackedStringArray("sprite")] +script = ExtResource("2_71p58") +sprite = NodePath("..") +metadata/_custom_type_script = "uid://cms2wqtbxjl1h" diff --git a/scenes/game_elements/props/decoration/rock/fabric_rock.tscn b/scenes/game_elements/props/decoration/rock/fabric_rock.tscn new file mode 100644 index 0000000000..534da54448 --- /dev/null +++ b/scenes/game_elements/props/decoration/rock/fabric_rock.tscn @@ -0,0 +1,20 @@ +[gd_scene format=3 uid="uid://cfvr32bp2achm"] + +[ext_resource type="Texture2D" uid="uid://bhqanyxhpxpm" path="res://assets/first_party/rocks/Rock_Idle.png" id="1_5xcci"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_a2go3"] +height = 44.0 + +[node name="FabricRock" type="StaticBody2D" unique_id=1319147835] +collision_layer = 16 +collision_mask = 0 + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1310606653] +unique_name_in_owner = true +position = Vector2(0, -14) +texture = ExtResource("1_5xcci") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=24186953] +position = Vector2(0, -4) +rotation = 1.5708 +shape = SubResource("CapsuleShape2D_a2go3") diff --git a/scenes/game_elements/props/decoration/sheep/sheep.tscn b/scenes/game_elements/props/decoration/sheep/sheep.tscn new file mode 100644 index 0000000000..526599fd7f --- /dev/null +++ b/scenes/game_elements/props/decoration/sheep/sheep.tscn @@ -0,0 +1,18 @@ +[gd_scene format=3 uid="uid://c4vbokn408f2c"] + +[ext_resource type="SpriteFrames" uid="uid://b0ba41utstkyk" path="res://scenes/game_elements/characters/components/sprite_frames/sheep.tres" id="1_hj6il"] +[ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="2_jsyxc"] + +[node name="Sheep" type="Node2D" unique_id=398073521] + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1456881412] +unique_name_in_owner = true +sprite_frames = ExtResource("1_hj6il") +animation = &"idle" +autoplay = "idle" +offset = Vector2(0, -14) + +[node name="RandomFrameSpriteBehavior" type="Node2D" parent="AnimatedSprite2D" unique_id=63344388 node_paths=PackedStringArray("sprite")] +script = ExtResource("2_jsyxc") +sprite = NodePath("..") +metadata/_custom_type_script = "uid://cms2wqtbxjl1h" diff --git a/scenes/game_elements/props/eternal_loom/components/eternal_loom.gd b/scenes/game_elements/props/eternal_loom/components/eternal_loom.gd index f67306ca60..1e1df9ed50 100644 --- a/scenes/game_elements/props/eternal_loom/components/eternal_loom.gd +++ b/scenes/game_elements/props/eternal_loom/components/eternal_loom.gd @@ -56,11 +56,13 @@ func _find_elder(quest: Quest) -> Elder: func _on_interaction_ended() -> void: if _have_threads: - # Hide interact label during scene transition - interact_area.disabled = true - - GameState.set_incorporating_threads(true) - SceneSwitcher.change_to_file_with_transition(SOKOBANS.pick_random()) + if not ProjectSettings.get_setting(ThreadbareProjectSettings.SKIP_SOKOBANS): + # Hide interact label during scene transition + interact_area.disabled = true + GameState.set_incorporating_threads(true) + SceneSwitcher.change_to_file_with_transition(SOKOBANS.pick_random()) + else: + GameState.mark_quest_completed() func on_offering_succeeded() -> void: diff --git a/scenes/game_elements/props/eternal_loom/eternal_loom.tscn b/scenes/game_elements/props/eternal_loom/eternal_loom.tscn index 78c891cdbb..f68b3368d5 100644 --- a/scenes/game_elements/props/eternal_loom/eternal_loom.tscn +++ b/scenes/game_elements/props/eternal_loom/eternal_loom.tscn @@ -2,12 +2,14 @@ [ext_resource type="Script" uid="uid://dj5shb75ckk2a" path="res://scenes/game_elements/props/eternal_loom/components/eternal_loom.gd" id="1_0f752"] [ext_resource type="Texture2D" uid="uid://cj62bpasgf643" path="res://scenes/game_elements/props/eternal_loom/components/eternal_loom_blue.png" id="2_dj2yp"] -[ext_resource type="PackedScene" uid="uid://dutgnbiy7xalb" path="res://scenes/game_elements/props/interact_area/interact_area.tscn" id="3_kyhkd"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_mjlja"] [ext_resource type="Texture2D" uid="uid://5wscjc8yqqts" path="res://assets/first_party/collectibles/world_memory.png" id="4_12bvc"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="4_eq7jh"] [ext_resource type="Texture2D" uid="uid://6bf8rum68wq3" path="res://assets/first_party/collectibles/world_imagination.png" id="5_eq7jh"] [ext_resource type="Texture2D" uid="uid://cepg1o3ihp055" path="res://assets/first_party/collectibles/world_spirit.png" id="6_hfqem"] [ext_resource type="AudioStream" uid="uid://bg8u4en3hlo6w" path="res://assets/third_party/sounds/eternal_loom/EternalLoomShort.ogg" id="7_12bvc"] +[ext_resource type="Texture2D" uid="uid://b5ooaiyxdrp6a" path="res://scenes/game_elements/components/light_texture_256x256.tres" id="9_mjlja"] +[ext_resource type="Script" uid="uid://bk52qjv58locq" path="res://scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd" id="10_k2bt4"] [sub_resource type="AtlasTexture" id="AtlasTexture_dj2yp"] atlas = ExtResource("2_dj2yp") @@ -540,18 +542,24 @@ position = Vector2(-1.5, 32) shape = SubResource("RectangleShape2D_uojly") debug_color = Color(0, 0.588235, 0.698039, 0.419608) -[node name="InteractArea" parent="." unique_id=1735004807 instance=ExtResource("3_kyhkd")] +[node name="InteractArea" type="Area2D" parent="." unique_id=1735004807 node_paths=PackedStringArray("marker")] unique_name_in_owner = true -visible = false position = Vector2(0, 55) -interact_label_position = Vector2(0, 45) +collision_layer = 32 +collision_mask = 0 +script = ExtResource("3_mjlja") +marker = NodePath("Marker") action = "Use Eternal Loom" +metadata/_custom_type_script = "uid://du8wfijr35r35" [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=1537085446] position = Vector2(0, 120) shape = SubResource("RectangleShape2D_uhynt") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=556753843] +position = Vector2(0, -152) + [node name="TalkBehavior" type="Node" parent="." unique_id=562216088 node_paths=PackedStringArray("interact_area")] unique_name_in_owner = true script = ExtResource("4_eq7jh") @@ -585,3 +593,17 @@ texture = ExtResource("6_hfqem") [node name="LoomOfferingSound" type="AudioStreamPlayer2D" parent="LoomOfferingAnimation" unique_id=1851096463] stream = ExtResource("7_12bvc") bus = &"SFX" + +[node name="PointLight2D" type="PointLight2D" parent="." unique_id=853151346 groups=["night-lights"]] +visibility_layer = 2 +position = Vector2(0, 39) +scale = Vector2(2.9765627, 1.765625) +enabled = false +color = Color(1, 1, 0, 1) +energy = 0.5 +texture = ExtResource("9_mjlja") + +[node name="ArtificialLightBehavior" type="Node" parent="PointLight2D" unique_id=326293187 node_paths=PackedStringArray("light")] +script = ExtResource("10_k2bt4") +light = NodePath("..") +metadata/_custom_type_script = "uid://bk52qjv58locq" diff --git a/scenes/game_elements/props/filling_barrel/components/filling_barrel.gd b/scenes/game_elements/props/filling_barrel/components/filling_barrel.gd index 90ef7c9723..d9fe251086 100644 --- a/scenes/game_elements/props/filling_barrel/components/filling_barrel.gd +++ b/scenes/game_elements/props/filling_barrel/components/filling_barrel.gd @@ -18,6 +18,7 @@ signal completed const DEFAULT_SPRITE_FRAMES: SpriteFrames = preload("uid://dlsq0ke41s1yh") const FILLING_NAME_ANIMATION: StringName = &"filling" +const LOCKED_COLOR := Color(0.5, 0.5, 0.5, 1) ## Determines how the FillingBarrel looks.[br] ## It is required that the [member sprite_frames] have an animation called filling.[br] @@ -37,8 +38,13 @@ const FILLING_NAME_ANIMATION: StringName = &"filling" @export var color: Color: set = _set_color +## Controls whether the barrel can receive ink. When locked, it turns gray and ignores hits. +var is_locked: bool = false: + set = set_is_locked + var _amount: int = 0 +@onready var barrel_glow: AnimatedSprite2D = get_node_or_null("BarrelGlow") @onready var animated_sprite_2d: AnimatedSprite2D = %AnimatedSprite2D @onready var animation_player: AnimationPlayer = %AnimationPlayer @onready var collision_shape_2d: CollisionShape2D = %CollisionShape2D @@ -59,8 +65,7 @@ func _set_sprite_frames(new_sprite_frames: SpriteFrames) -> void: sprite_frames = new_sprite_frames if new_sprite_frames else DEFAULT_SPRITE_FRAMES if not is_node_ready(): return - if animated_sprite_2d: - animated_sprite_2d.sprite_frames = sprite_frames + animated_sprite_2d.sprite_frames = sprite_frames update_configuration_warnings() @@ -70,10 +75,29 @@ func _ready() -> void: animated_sprite_2d.animation = FILLING_NAME_ANIMATION animated_sprite_2d.frame = 0 + if barrel_glow: + barrel_glow.visible = false + + +func set_is_locked(locked: bool) -> void: + is_locked = locked + + if is_locked: + modulate = LOCKED_COLOR + if barrel_glow: + barrel_glow.visible = false + else: + modulate = Color.WHITE + if barrel_glow: + barrel_glow.visible = true + barrel_glow.play("glowing") + ## Increment the amount and play an animation. If completed, also play the completed ## animation and remove this barrel from the current scene. func increment(by: int = 1) -> void: + if is_locked: + return if _amount >= needed_amount: return animation_player.play(&"increment") diff --git a/scenes/game_elements/props/filling_barrel/filling_barrel.tscn b/scenes/game_elements/props/filling_barrel/filling_barrel.tscn index 1bc0eea561..7f44c0bc5f 100644 --- a/scenes/game_elements/props/filling_barrel/filling_barrel.tscn +++ b/scenes/game_elements/props/filling_barrel/filling_barrel.tscn @@ -1,10 +1,82 @@ [gd_scene format=3 uid="uid://y8ha8abfyap2"] [ext_resource type="Script" uid="uid://be17wk85qlu28" path="res://scenes/game_elements/props/filling_barrel/components/filling_barrel.gd" id="1_md0e3"] +[ext_resource type="Texture2D" uid="uid://brranfy51i56n" path="res://scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_glow/barrel_glow.png" id="3_8hqam"] [ext_resource type="SpriteFrames" uid="uid://dlsq0ke41s1yh" path="res://scenes/game_elements/props/filling_barrel/components/filling_barrel_sprite_frames.tres" id="3_o1oxn"] [ext_resource type="AudioStream" uid="uid://6tgopt072bfq" path="res://scenes/game_elements/props/filling_barrel/components/fill.wav" id="4_6inx0"] [ext_resource type="AudioStream" uid="uid://s7ne07cx0j72" path="res://scenes/game_elements/props/filling_barrel/components/complete.wav" id="5_3gtj0"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ho6qg"] +atlas = ExtResource("3_8hqam") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ig56r"] +atlas = ExtResource("3_8hqam") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ompl8"] +atlas = ExtResource("3_8hqam") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0a20k"] +atlas = ExtResource("3_8hqam") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2evyj"] +atlas = ExtResource("3_8hqam") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_i2u8c"] +atlas = ExtResource("3_8hqam") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_fc6b6"] +atlas = ExtResource("3_8hqam") +region = Rect2(768, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_haw5m"] +atlas = ExtResource("3_8hqam") +region = Rect2(896, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_j04m1"] +atlas = ExtResource("3_8hqam") +region = Rect2(1024, 0, 128, 128) + +[sub_resource type="SpriteFrames" id="SpriteFrames_ftrfy"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_ho6qg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ig56r") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ompl8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0a20k") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2evyj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_i2u8c") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_fc6b6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_haw5m") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_j04m1") +}], +"loop": true, +"name": &"glowing", +"speed": 10.0 +}] + [sub_resource type="RectangleShape2D" id="RectangleShape2D_8tegq"] size = Vector2(52, 52) @@ -166,6 +238,13 @@ position = Vector2(0, -21) sprite_frames = ExtResource("3_o1oxn") animation = &"filling" +[node name="BarrelGlow" type="AnimatedSprite2D" parent="."] +visible = false +sprite_frames = SubResource("SpriteFrames_ftrfy") +animation = &"glowing" +frame_progress = 0.55175865 +offset = Vector2(0, -21) + [node name="HitBox" type="StaticBody2D" parent="." unique_id=1847617565] unique_name_in_owner = true position = Vector2(2, -18) diff --git a/scenes/game_elements/props/hint/input_key/interact_input.gd b/scenes/game_elements/props/hint/input_key/interact_input.gd index a7ee7e9b2a..b87a93d68e 100644 --- a/scenes/game_elements/props/hint/input_key/interact_input.gd +++ b/scenes/game_elements/props/hint/input_key/interact_input.gd @@ -3,14 +3,11 @@ extends TextureRect @export var action_name: StringName -@export var keyboard_texture: Texture2D -@export var xbox_controller_texture: Texture2D -@export var playstation_controller_texture: Texture2D -@export var nintendo_controller_texture: Texture2D -@export var steam_controller_texture: Texture2D +@export var alternative: bool = false +@export var devices: InputHintManager -func _physics_process(_delta: float) -> void: +func _process(_delta: float) -> void: if Input.is_action_pressed(action_name): modulate = Color.GRAY else: @@ -18,29 +15,18 @@ func _physics_process(_delta: float) -> void: func _ready() -> void: - InputHelper.device_changed.connect(_on_input_device_changed) - _on_input_device_changed(InputHelper.device, InputHelper.device_index) + if devices: + InputHelper.device_changed.connect(_on_input_device_changed) + _on_input_device_changed(InputHelper.device, InputHelper.device_index) + else: + push_warning("%s: Per-device textures not configured" % get_path()) func _on_input_device_changed(device: String, _device_index: int) -> void: - visible = true # Always visible (hybrid) - - match device: - InputHelper.DEVICE_KEYBOARD: - if keyboard_texture: - texture = keyboard_texture - - InputHelper.DEVICE_XBOX_CONTROLLER: - texture = xbox_controller_texture - - InputHelper.DEVICE_PLAYSTATION_CONTROLLER: - texture = playstation_controller_texture - - InputHelper.DEVICE_SWITCH_CONTROLLER: - texture = nintendo_controller_texture - - InputHelper.DEVICE_STEAMDECK_CONTROLLER: - texture = steam_controller_texture - - _: - texture = xbox_controller_texture + var textures := devices.device_map[InputHelper.device] + if alternative: + texture = textures.get(action_name + "_alt") + visible = texture != null + else: + texture = textures.get(action_name) + visible = true diff --git a/scenes/game_elements/props/hint/resources/joypadButtonTextures.gd b/scenes/game_elements/props/hint/resources/joypadButtonTextures.gd index 226184d53f..34c7170b4b 100644 --- a/scenes/game_elements/props/hint/resources/joypadButtonTextures.gd +++ b/scenes/game_elements/props/hint/resources/joypadButtonTextures.gd @@ -10,6 +10,35 @@ extends Resource ## Textures for the [code]aim_*[/code] actions @export var aim: DirectionalInputTextures +## Texture for the [code]running[/code] action +@export var running: Texture2D + +## Texture for the [code]interact[/code] action +@export var interact: Texture2D + +## Texture for the [code]repel[/code] action +@export var repel: Texture2D + +## Alternative texture for the [code]repel[/code] action (i.e. the keyboard key +## as opposed to mouse button) +@export var repel_alt: Texture2D + +## Texture for the [code]throw[/code] action +@export var throw: Texture2D + +## Alternative texture for the [code]throw[/code] action (i.e. the keyboard key +## as opposed to mouse button) +@export var throw_alt: Texture2D + +## Texture for the [code]sokoban_undo[/code] action +@export var sokoban_undo: Texture2D + +## Texture for the [code]sokoban_reset[/code] action +@export var sokoban_reset: Texture2D + +## Texture for the [code]sokoban_skip[/code] action +@export var sokoban_skip: Texture2D + ## Returns the texture for a directional action. For instance, to get the ## correct texture for the [code]aim_left[/code] action, use: diff --git a/scenes/game_elements/props/hint/resources/keyboard.tres b/scenes/game_elements/props/hint/resources/keyboard.tres index 2f024c8b58..f1add14d77 100644 --- a/scenes/game_elements/props/hint/resources/keyboard.tres +++ b/scenes/game_elements/props/hint/resources/keyboard.tres @@ -7,6 +7,13 @@ [ext_resource type="Texture2D" uid="uid://bc8ffgelnq2nn" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_arrows_none.tres" id="4_8ua6o"] [ext_resource type="Script" uid="uid://dhgm1dl0ohox5" path="res://scenes/game_elements/props/hint/resources/directional_input_textures.gd" id="4_ixpgq"] [ext_resource type="Texture2D" uid="uid://bgcopu7b0q6iy" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_arrows_up_outline.tres" id="5_4b2ex"] +[ext_resource type="Texture2D" uid="uid://c6fggds355rko" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_space_outline.tres" id="7_xgsrv"] +[ext_resource type="Texture2D" uid="uid://dsre3bn521s4n" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/mouse_right_outline.tres" id="8_7o4sm"] +[ext_resource type="Texture2D" uid="uid://bko5l0he6rf5o" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_z_outline.tres" id="9_nexuq"] +[ext_resource type="Texture2D" uid="uid://00rpvlvvuems" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_shift_icon_outline.tres" id="10_jffwy"] +[ext_resource type="Texture2D" uid="uid://c88qkrdjmolti" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_r_outline.tres" id="12_ac6oh"] +[ext_resource type="Texture2D" uid="uid://cl3gxcavxrefq" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_x_outline.tres" id="13_12qfk"] +[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="14_gs4lw"] [sub_resource type="Resource" id="Resource_j5qbp"] script = ExtResource("4_ixpgq") @@ -20,4 +27,13 @@ right = ExtResource("3_j5qbp") script = ExtResource("1_cfqun") move = SubResource("Resource_j5qbp") aim = SubResource("Resource_j5qbp") +running = ExtResource("10_jffwy") +interact = ExtResource("7_xgsrv") +repel = ExtResource("8_7o4sm") +repel_alt = ExtResource("9_nexuq") +throw = ExtResource("14_gs4lw") +throw_alt = ExtResource("13_12qfk") +sokoban_undo = ExtResource("9_nexuq") +sokoban_reset = ExtResource("12_ac6oh") +sokoban_skip = ExtResource("13_12qfk") metadata/_custom_type_script = "uid://c0haweg5svww1" diff --git a/scenes/game_elements/props/hint/resources/playstation.tres b/scenes/game_elements/props/hint/resources/playstation.tres index 421aa326a1..adff851fc8 100644 --- a/scenes/game_elements/props/hint/resources/playstation.tres +++ b/scenes/game_elements/props/hint/resources/playstation.tres @@ -2,16 +2,23 @@ [ext_resource type="Texture2D" uid="uid://r06g4evpyol4" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_stick_r_down.tres" id="1_jq3td"] [ext_resource type="Script" uid="uid://c0haweg5svww1" path="res://scenes/game_elements/props/hint/resources/joypadButtonTextures.gd" id="1_omqst"] -[ext_resource type="Texture2D" uid="uid://c0begoe6gm8p4" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_dpad_down_outline.tres" id="1_v2nbk"] [ext_resource type="Texture2D" uid="uid://c6ekh500uvx62" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_stick_r_left.tres" id="2_q4gi2"] -[ext_resource type="Texture2D" uid="uid://6oqfr6cl2whc" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_dpad_left_outline.tres" id="2_w33ub"] [ext_resource type="Texture2D" uid="uid://m7gwu5x4b18n" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_stick_r_right.tres" id="3_q0mrv"] -[ext_resource type="Texture2D" uid="uid://brbujbm4a0thb" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_dpad_right_outline.tres" id="3_vbn2r"] [ext_resource type="Script" uid="uid://dhgm1dl0ohox5" path="res://scenes/game_elements/props/hint/resources/directional_input_textures.gd" id="4_cghs7"] -[ext_resource type="Texture2D" uid="uid://bttej8tuucutx" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_dpad_none.tres" id="4_dgptc"] [ext_resource type="Texture2D" uid="uid://dspkrq3jsh26x" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_stick_r.tres" id="5_jo447"] -[ext_resource type="Texture2D" uid="uid://b5k4atvuhf6xp" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_dpad_up_outline.tres" id="5_oi6ek"] [ext_resource type="Texture2D" uid="uid://d2fkhf81x8u6d" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_stick_r_up.tres" id="6_q44m7"] +[ext_resource type="Texture2D" uid="uid://cjhshus64ytpq" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_button_cross_outline.tres" id="7_kkpem"] +[ext_resource type="Texture2D" uid="uid://gl2oph5lu3vf" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_stick_l_down.tres" id="8_kkpem"] +[ext_resource type="Texture2D" uid="uid://ebywfq5mjmva" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_stick_l_left.tres" id="9_rd2vx"] +[ext_resource type="Texture2D" uid="uid://crppxlnqwyodo" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_stick_l_right.tres" id="10_wqnvl"] +[ext_resource type="Texture2D" uid="uid://4mymfklw6qx0" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_stick_l.tres" id="11_y4fr0"] +[ext_resource type="Texture2D" uid="uid://dkx6qnqk6mpbq" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_stick_l_up.tres" id="12_8wf4n"] +[ext_resource type="Texture2D" uid="uid://disylcjq2hh8n" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_trigger_r1_alternative_outline.tres" id="13_0nat0"] +[ext_resource type="Texture2D" uid="uid://dfbsi8lsnorsm" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_trigger_l1_alternative_outline.tres" id="14_kkpem"] +[ext_resource type="Texture2D" uid="uid://dltoru1w8ue7w" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_button_square_outline.tres" id="16_y4fr0"] +[ext_resource type="Texture2D" uid="uid://d3rhotqp5gg7h" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_button_triangle_outline.tres" id="17_8wf4n"] +[ext_resource type="Texture2D" uid="uid://7qdppn7p05b1" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_button_circle_outline.tres" id="18_0nat0"] +[ext_resource type="Texture2D" uid="uid://df8vlifau6x6w" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_trigger_r2_outline.tres" id="19_khsdn"] [sub_resource type="Resource" id="Resource_emb5i"] script = ExtResource("4_cghs7") @@ -24,15 +31,22 @@ metadata/_custom_type_script = "uid://dhgm1dl0ohox5" [sub_resource type="Resource" id="Resource_kkpem"] script = ExtResource("4_cghs7") -unpressed = ExtResource("4_dgptc") -up = ExtResource("5_oi6ek") -down = ExtResource("1_v2nbk") -left = ExtResource("2_w33ub") -right = ExtResource("3_vbn2r") +unpressed = ExtResource("11_y4fr0") +up = ExtResource("12_8wf4n") +down = ExtResource("8_kkpem") +left = ExtResource("9_rd2vx") +right = ExtResource("10_wqnvl") metadata/_custom_type_script = "uid://dhgm1dl0ohox5" [resource] script = ExtResource("1_omqst") move = SubResource("Resource_kkpem") aim = SubResource("Resource_emb5i") +running = ExtResource("14_kkpem") +interact = ExtResource("7_kkpem") +repel = ExtResource("13_0nat0") +throw = ExtResource("19_khsdn") +sokoban_undo = ExtResource("18_0nat0") +sokoban_reset = ExtResource("16_y4fr0") +sokoban_skip = ExtResource("17_8wf4n") metadata/_custom_type_script = "uid://c0haweg5svww1" diff --git a/scenes/game_elements/props/hint/resources/steamdeck.tres b/scenes/game_elements/props/hint/resources/steamdeck.tres index e08ef97269..af6f017dd9 100644 --- a/scenes/game_elements/props/hint/resources/steamdeck.tres +++ b/scenes/game_elements/props/hint/resources/steamdeck.tres @@ -1,17 +1,24 @@ [gd_resource type="Resource" script_class="JoypadButtonTextures" format=3 uid="uid://d61nj6kkhso8"] [ext_resource type="Script" uid="uid://c0haweg5svww1" path="res://scenes/game_elements/props/hint/resources/joypadButtonTextures.gd" id="1_aumst"] -[ext_resource type="Texture2D" uid="uid://bpdpv7xmnjhm2" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_dpad_down_outline.tres" id="1_i4hh4"] [ext_resource type="Texture2D" uid="uid://bcc6utb34kw0q" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_stick_r_down.tres" id="1_ujmsw"] -[ext_resource type="Texture2D" uid="uid://b0geohrxwy1m2" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_dpad_left_outline.tres" id="2_fldbm"] [ext_resource type="Texture2D" uid="uid://bg811w2o1vd0b" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_stick_r_left.tres" id="2_qp4xm"] [ext_resource type="Texture2D" uid="uid://c78lbnnvqj0iv" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_stick_r_right.tres" id="3_00uab"] -[ext_resource type="Texture2D" uid="uid://bt76s1b7qsiv5" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_dpad_right_outline.tres" id="3_bjijf"] [ext_resource type="Script" uid="uid://dhgm1dl0ohox5" path="res://scenes/game_elements/props/hint/resources/directional_input_textures.gd" id="4_3qkoy"] -[ext_resource type="Texture2D" uid="uid://t1ybibt6skmn" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_dpad_none.tres" id="4_e280y"] -[ext_resource type="Texture2D" uid="uid://bsxgtg4k28e61" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_dpad_up_outline.tres" id="5_1ctii"] [ext_resource type="Texture2D" uid="uid://b01qu3gqd3ctu" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_stick_r.tres" id="5_3pkdl"] [ext_resource type="Texture2D" uid="uid://7ob6261vwokk" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_stick_r_up.tres" id="6_poinc"] +[ext_resource type="Texture2D" uid="uid://d223ajwmavjy8" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_a_outline.tres" id="7_wb6ss"] +[ext_resource type="Texture2D" uid="uid://d0ctvjhjsnlh1" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_stick_l_down.tres" id="8_wb6ss"] +[ext_resource type="Texture2D" uid="uid://cr7apytq0ymgt" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_stick_l_left.tres" id="9_enqan"] +[ext_resource type="Texture2D" uid="uid://b31h2ox8rjo8v" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_stick_l_right.tres" id="10_hxnoe"] +[ext_resource type="Texture2D" uid="uid://cvwctj0rjjxof" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_stick_l.tres" id="11_va1ks"] +[ext_resource type="Texture2D" uid="uid://dgbafqal5huq6" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_stick_l_up.tres" id="12_vbsy4"] +[ext_resource type="Texture2D" uid="uid://b7rygdiqbuuik" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_r1_outline.tres" id="13_enqan"] +[ext_resource type="Texture2D" uid="uid://c2dy27tlmsigy" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_l1_outline.tres" id="14_hxnoe"] +[ext_resource type="Texture2D" uid="uid://rrbih026ixaf" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_x_outline.tres" id="16_va1ks"] +[ext_resource type="Texture2D" uid="uid://dn8vx333yunpe" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_y_outline.tres" id="17_vbsy4"] +[ext_resource type="Texture2D" uid="uid://b2f4prnfhd1k1" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_b_outline.tres" id="18_otkfu"] +[ext_resource type="Texture2D" uid="uid://jp3e3lyaan40" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_r2_outline.tres" id="19_c7evk"] [sub_resource type="Resource" id="Resource_domy7"] script = ExtResource("4_3qkoy") @@ -24,15 +31,22 @@ metadata/_custom_type_script = "uid://dhgm1dl0ohox5" [sub_resource type="Resource" id="Resource_wb6ss"] script = ExtResource("4_3qkoy") -unpressed = ExtResource("4_e280y") -up = ExtResource("5_1ctii") -down = ExtResource("1_i4hh4") -left = ExtResource("2_fldbm") -right = ExtResource("3_bjijf") +unpressed = ExtResource("11_va1ks") +up = ExtResource("12_vbsy4") +down = ExtResource("8_wb6ss") +left = ExtResource("9_enqan") +right = ExtResource("10_hxnoe") metadata/_custom_type_script = "uid://dhgm1dl0ohox5" [resource] script = ExtResource("1_aumst") move = SubResource("Resource_wb6ss") aim = SubResource("Resource_domy7") +running = ExtResource("14_hxnoe") +interact = ExtResource("7_wb6ss") +repel = ExtResource("13_enqan") +throw = ExtResource("19_c7evk") +sokoban_undo = ExtResource("18_otkfu") +sokoban_reset = ExtResource("16_va1ks") +sokoban_skip = ExtResource("17_vbsy4") metadata/_custom_type_script = "uid://c0haweg5svww1" diff --git a/scenes/game_elements/props/hint/resources/switch.tres b/scenes/game_elements/props/hint/resources/switch.tres index 0a8c3378e8..94a98b27d0 100644 --- a/scenes/game_elements/props/hint/resources/switch.tres +++ b/scenes/game_elements/props/hint/resources/switch.tres @@ -1,35 +1,51 @@ [gd_resource type="Resource" script_class="JoypadButtonTextures" format=3 uid="uid://bgws80h0nu2qd"] [ext_resource type="Script" uid="uid://c0haweg5svww1" path="res://scenes/game_elements/props/hint/resources/joypadButtonTextures.gd" id="1_feeyu"] -[ext_resource type="Texture2D" uid="uid://cnvwqloudh46v" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_dpad_down_outline.tres" id="1_h2gqh"] -[ext_resource type="Texture2D" uid="uid://1am03g38qdqd" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_dpad_left_outline.tres" id="2_56m3b"] +[ext_resource type="Texture2D" uid="uid://ctub2y7xvjfid" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_stick_r_down.tres" id="1_jbq6g"] [ext_resource type="Texture2D" uid="uid://1sxmapx0bics" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_stick_r_left.tres" id="2_xytoi"] [ext_resource type="Texture2D" uid="uid://bij5kl1836xxn" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_stick_r_right.tres" id="3_3gm8v"] -[ext_resource type="Texture2D" uid="uid://tgckmwsad3b4" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_dpad_right_outline.tres" id="3_c5mv4"] [ext_resource type="Script" uid="uid://dhgm1dl0ohox5" path="res://scenes/game_elements/props/hint/resources/directional_input_textures.gd" id="4_56m3b"] -[ext_resource type="Texture2D" uid="uid://doch6hjoe0ra1" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_dpad_none.tres" id="4_haxeg"] [ext_resource type="Texture2D" uid="uid://bk5kfa10mmwlb" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_stick_r.tres" id="5_3yvyh"] -[ext_resource type="Texture2D" uid="uid://cbfuj8bkq6seu" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_dpad_up_outline.tres" id="5_mujfa"] [ext_resource type="Texture2D" uid="uid://cnnufqepabnm2" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_stick_r_up.tres" id="6_0s2bm"] +[ext_resource type="Texture2D" uid="uid://cw4b0a55wdndp" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_b_outline.tres" id="7_nqwbi"] +[ext_resource type="Texture2D" uid="uid://bypxkvoeghm8j" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_stick_l_down.tres" id="8_nqwbi"] +[ext_resource type="Texture2D" uid="uid://bfioueerbov32" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_stick_l_left.tres" id="9_x12kq"] +[ext_resource type="Texture2D" uid="uid://cdfm1pjym87fy" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_stick_l_right.tres" id="10_lbflk"] +[ext_resource type="Texture2D" uid="uid://but0gw4abvvui" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_stick_l.tres" id="11_yfmui"] +[ext_resource type="Texture2D" uid="uid://v6fe5pgy2qxx" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_stick_l_up.tres" id="12_buody"] +[ext_resource type="Texture2D" uid="uid://cren16wfvch5p" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_r_outline.tres" id="13_x12kq"] +[ext_resource type="Texture2D" uid="uid://bfestobnif7sl" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_l_outline.tres" id="14_lbflk"] +[ext_resource type="Texture2D" uid="uid://bkeqno6623dcj" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_y_outline.tres" id="16_yfmui"] +[ext_resource type="Texture2D" uid="uid://cdgyk384ou7gp" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_x_outline.tres" id="17_buody"] +[ext_resource type="Texture2D" uid="uid://bxvdat8x7qdm0" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_a_outline.tres" id="18_poutv"] +[ext_resource type="Texture2D" uid="uid://dawyfturb2nwq" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_zr_outline.tres" id="19_h0ie6"] [sub_resource type="Resource" id="Resource_mv42c"] script = ExtResource("4_56m3b") unpressed = ExtResource("5_3yvyh") up = ExtResource("6_0s2bm") +down = ExtResource("1_jbq6g") left = ExtResource("2_xytoi") right = ExtResource("3_3gm8v") metadata/_custom_type_script = "uid://dhgm1dl0ohox5" [sub_resource type="Resource" id="Resource_c5mv4"] script = ExtResource("4_56m3b") -unpressed = ExtResource("4_haxeg") -up = ExtResource("5_mujfa") -down = ExtResource("1_h2gqh") -left = ExtResource("2_56m3b") -right = ExtResource("3_c5mv4") +unpressed = ExtResource("11_yfmui") +up = ExtResource("12_buody") +down = ExtResource("8_nqwbi") +left = ExtResource("9_x12kq") +right = ExtResource("10_lbflk") [resource] script = ExtResource("1_feeyu") move = SubResource("Resource_c5mv4") aim = SubResource("Resource_mv42c") +running = ExtResource("14_lbflk") +interact = ExtResource("7_nqwbi") +repel = ExtResource("13_x12kq") +throw = ExtResource("19_h0ie6") +sokoban_undo = ExtResource("18_poutv") +sokoban_reset = ExtResource("16_yfmui") +sokoban_skip = ExtResource("17_buody") metadata/_custom_type_script = "uid://c0haweg5svww1" diff --git a/scenes/game_elements/props/hint/resources/xbox.tres b/scenes/game_elements/props/hint/resources/xbox.tres index 3698a3383a..3693808d61 100644 --- a/scenes/game_elements/props/hint/resources/xbox.tres +++ b/scenes/game_elements/props/hint/resources/xbox.tres @@ -1,17 +1,24 @@ [gd_resource type="Resource" script_class="JoypadButtonTextures" format=3 uid="uid://d3g6qqk3ecy56"] -[ext_resource type="Texture2D" uid="uid://bhsb0vxietscg" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_dpad_down_outline.tres" id="1_4bq17"] [ext_resource type="Script" uid="uid://c0haweg5svww1" path="res://scenes/game_elements/props/hint/resources/joypadButtonTextures.gd" id="1_bisyu"] [ext_resource type="Texture2D" uid="uid://sspsfmxufg4i" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_stick_r_down.tres" id="1_ltgn4"] [ext_resource type="Script" uid="uid://dhgm1dl0ohox5" path="res://scenes/game_elements/props/hint/resources/directional_input_textures.gd" id="1_qwpf8"] [ext_resource type="Texture2D" uid="uid://dbh5eeeifmwuj" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_stick_r_left.tres" id="2_06knx"] -[ext_resource type="Texture2D" uid="uid://bxq6kmvknhcde" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_dpad_left_outline.tres" id="2_qwpf8"] -[ext_resource type="Texture2D" uid="uid://ybsaowrva1oi" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_dpad_right_outline.tres" id="3_nh82o"] [ext_resource type="Texture2D" uid="uid://cmvoq7oqljxyj" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_stick_r_right.tres" id="3_tkqa6"] -[ext_resource type="Texture2D" uid="uid://bmy2sq18qdmxv" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_dpad_none.tres" id="4_edsua"] [ext_resource type="Texture2D" uid="uid://ci1j0k8leqa3o" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_stick_r.tres" id="5_g15f5"] -[ext_resource type="Texture2D" uid="uid://bcwquyrkyor4j" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_dpad_up_outline.tres" id="5_kariy"] [ext_resource type="Texture2D" uid="uid://b45ky4pi3jety" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_stick_r_up.tres" id="6_tv03i"] +[ext_resource type="Texture2D" uid="uid://csbx81u4w37rp" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_a_outline.tres" id="7_tskv1"] +[ext_resource type="Texture2D" uid="uid://chh0ch6umgbsa" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_stick_l_down.tres" id="8_tskv1"] +[ext_resource type="Texture2D" uid="uid://dtyo3cld4pnsc" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_stick_l_left.tres" id="9_fvgft"] +[ext_resource type="Texture2D" uid="uid://cdgpy54l4dskw" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_stick_l_right.tres" id="10_pukp1"] +[ext_resource type="Texture2D" uid="uid://bshnys13rm2be" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_stick_l.tres" id="11_5vyqi"] +[ext_resource type="Texture2D" uid="uid://10k63bbb464q" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_stick_l_up.tres" id="12_snkap"] +[ext_resource type="Texture2D" uid="uid://m1fgpc7ru2b5" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_rb_outline.tres" id="13_fvgft"] +[ext_resource type="Texture2D" uid="uid://dvkwc3688asij" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_lb_outline.tres" id="14_pukp1"] +[ext_resource type="Texture2D" uid="uid://b8oqqn2re8bb4" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_x_outline.tres" id="16_5vyqi"] +[ext_resource type="Texture2D" uid="uid://dk1g11haycllj" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_y_outline.tres" id="17_snkap"] +[ext_resource type="Texture2D" uid="uid://cpafwyrjkngt3" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_b_outline.tres" id="18_0iss4"] +[ext_resource type="Texture2D" uid="uid://bowdggq0c1ir4" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_rt_outline.tres" id="19_21ad5"] [sub_resource type="Resource" id="Resource_cci5c"] script = ExtResource("1_qwpf8") @@ -24,14 +31,21 @@ metadata/_custom_type_script = "uid://dhgm1dl0ohox5" [sub_resource type="Resource" id="Resource_qwpf8"] script = ExtResource("1_qwpf8") -unpressed = ExtResource("4_edsua") -up = ExtResource("5_kariy") -down = ExtResource("1_4bq17") -left = ExtResource("2_qwpf8") -right = ExtResource("3_nh82o") +unpressed = ExtResource("11_5vyqi") +up = ExtResource("12_snkap") +down = ExtResource("8_tskv1") +left = ExtResource("9_fvgft") +right = ExtResource("10_pukp1") [resource] script = ExtResource("1_bisyu") move = SubResource("Resource_qwpf8") aim = SubResource("Resource_cci5c") +running = ExtResource("14_pukp1") +interact = ExtResource("7_tskv1") +repel = ExtResource("13_fvgft") +throw = ExtResource("19_21ad5") +sokoban_undo = ExtResource("18_0iss4") +sokoban_reset = ExtResource("16_5vyqi") +sokoban_skip = ExtResource("17_snkap") metadata/_custom_type_script = "uid://c0haweg5svww1" diff --git a/scenes/game_elements/props/hook_control/components/arrow.png b/scenes/game_elements/props/hook_control/components/arrow.png deleted file mode 100644 index 458660353e..0000000000 --- a/scenes/game_elements/props/hook_control/components/arrow.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:31732be628061578b193322ae1c6d014e2a4b0682b5386fa9d48482031755179 -size 209 diff --git a/scenes/game_elements/props/hook_control/components/hook_control.gd b/scenes/game_elements/props/hook_control/components/hook_control.gd index 499568da95..caaaf3161a 100644 --- a/scenes/game_elements/props/hook_control/components/hook_control.gd +++ b/scenes/game_elements/props/hook_control/components/hook_control.gd @@ -87,9 +87,12 @@ var _hook_angle: float ## diagonal directions when releasing the input actions. @onready var d_pad_timer: Timer = %DPadTimer +@onready var mouse_aiming_timer: Timer = %MouseAimingTimer + func _unhandled_input(_event: InputEvent) -> void: if _event is InputEventMouseMotion: + mouse_aiming_timer.start() var axis := get_global_mouse_position() - global_position if not axis.is_zero_approx(): _hook_angle = axis.angle() @@ -102,7 +105,8 @@ func _unhandled_input(_event: InputEvent) -> void: # there is always one that is released first so the aim direction ends up being either left or # down, not left AND down. if ( - _event is InputEventKey + mouse_aiming_timer.is_stopped() + and _event is InputEventKey and ( _event.is_action_released(&"aim_left") or _event.is_action_released(&"aim_right") @@ -113,7 +117,8 @@ func _unhandled_input(_event: InputEvent) -> void: d_pad_timer.start() return - _update_hook_angle() + if mouse_aiming_timer.is_stopped(): + _update_hook_angle() if Input.is_action_just_pressed(&"throw"): pressing_throw_action = true diff --git a/scenes/game_elements/props/hook_control/hook_control.tscn b/scenes/game_elements/props/hook_control/hook_control.tscn index 192ac3dd0c..590c296e51 100644 --- a/scenes/game_elements/props/hook_control/hook_control.tscn +++ b/scenes/game_elements/props/hook_control/hook_control.tscn @@ -1,15 +1,16 @@ [gd_scene format=3 uid="uid://b0dehcnfo68j1"] [ext_resource type="Script" uid="uid://b2mu5bkiqrds3" path="res://scenes/game_elements/props/hook_control/components/hook_control.gd" id="1_bevaw"] -[ext_resource type="Texture2D" uid="uid://cchrnxunruf23" path="res://scenes/game_elements/props/hook_control/components/arrow.png" id="2_41e7o"] +[ext_resource type="Texture2D" uid="uid://cfyxgtc6bvss8" path="res://assets/first_party/user_interface/indicator_up.png" id="2_q883k"] [node name="HookControl" type="Node2D" unique_id=1022482491] script = ExtResource("1_bevaw") -[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1749177115] +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=444359890] unique_name_in_owner = true position = Vector2(51, 0) -texture = ExtResource("2_41e7o") +rotation = 1.5707964 +texture = ExtResource("2_q883k") [node name="RayCast2D" type="RayCast2D" parent="." unique_id=1829820383] unique_name_in_owner = true @@ -22,4 +23,9 @@ unique_name_in_owner = true wait_time = 0.2 one_shot = true +[node name="MouseAimingTimer" type="Timer" parent="." unique_id=405211158] +unique_name_in_owner = true +wait_time = 3.0 +one_shot = true + [connection signal="timeout" from="DPadTimer" to="." method="_on_d_pad_timer_timeout"] diff --git a/scenes/game_elements/props/hookable_area/components/hookable_area.gd b/scenes/game_elements/props/hookable_area/components/hookable_area.gd index 9474c83bb3..3c58dd7b7f 100644 --- a/scenes/game_elements/props/hookable_area/components/hookable_area.gd +++ b/scenes/game_elements/props/hookable_area/components/hookable_area.gd @@ -26,7 +26,11 @@ extends Area2D ## depending on the value of [member weight] and the controlled entity being a ## [CharacterBody2D]. ## [br][br] -## [b]Note:[/b] This area is expected to be in the "hookable" collision layer. +## This script automatically configures the correct [member collision_layer] and +## [member collision_mask] values to enable interaction with the grappling hook. + +## Use this signal to release itself from a grappling hook pull. +signal pull_released(cancelled: bool) ## The game entity that becomes hookable. ## [br][br] @@ -58,22 +62,26 @@ func _enter_tree() -> void: controlled_entity = get_parent() +func _ready() -> void: + collision_layer = 0 + collision_mask = 0 + set_collision_layer_value(Enums.CollisionLayers.HOOKABLE, true) + + ## Return the global position used to connect the hook. func get_anchor_position() -> Vector2: return anchor_point.global_position if anchor_point else global_position +## Emit the [signal pull_released] signal. +func release_from_pull(cancelled: bool = false) -> void: + pull_released.emit(cancelled) + + func _get_configuration_warnings() -> PackedStringArray: var warnings: PackedStringArray if not controlled_entity: warnings.append("Controlled Entity must be set.") - if not get_collision_layer_value(Enums.CollisionLayers.HOOKABLE): - warnings.append( - ( - "Consider enabling collision with the hookable layer: %d." - % Enums.CollisionLayers.HOOKABLE - ) - ) return warnings diff --git a/scenes/game_elements/props/hookable_area/hookable_area.tscn b/scenes/game_elements/props/hookable_area/hookable_area.tscn deleted file mode 100644 index 00ba6a4367..0000000000 --- a/scenes/game_elements/props/hookable_area/hookable_area.tscn +++ /dev/null @@ -1,9 +0,0 @@ -[gd_scene format=3 uid="uid://ekgkd6j30py8"] - -[ext_resource type="Script" uid="uid://dabvr3pqmyya4" path="res://scenes/game_elements/props/hookable_area/components/hookable_area.gd" id="1_tedbp"] - -[node name="HookableArea" type="Area2D" unique_id=95425923] -collision_layer = 4096 -collision_mask = 0 -script = ExtResource("1_tedbp") -metadata/_custom_type_script = "uid://dabvr3pqmyya4" diff --git a/scenes/game_elements/props/hookable_box/components/hookable_box.gd b/scenes/game_elements/props/hookable_box/components/hookable_box.gd new file mode 100644 index 0000000000..f853b17abc --- /dev/null +++ b/scenes/game_elements/props/hookable_box/components/hookable_box.gd @@ -0,0 +1,74 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends AnimatableBody2D + +const NEIGHBORS_FOR_AXIS: Dictionary[Vector2i, TileSet.CellNeighbor] = { + Vector2i.DOWN: TileSet.CELL_NEIGHBOR_BOTTOM_SIDE, + Vector2i.LEFT: TileSet.CELL_NEIGHBOR_LEFT_SIDE, + Vector2i.UP: TileSet.CELL_NEIGHBOR_TOP_SIDE, + Vector2i.RIGHT: TileSet.CELL_NEIGHBOR_RIGHT_SIDE, +} + +@export var constrain_layer: TileMapLayer + +var tween: Tween + +@onready var hookable_area: HookableArea = %HookableArea +@onready var shaker: Shaker = %Shaker + + +func global_position_to_tile_coordinate(global_pos: Vector2) -> Vector2i: + return constrain_layer.local_to_map(constrain_layer.to_local(global_pos)) + + +func tile_coordinate_to_global_position(coord: Vector2i) -> Vector2: + return constrain_layer.to_global(constrain_layer.map_to_local(coord)) + + +func _ready() -> void: + # Put this object on the grid: + var coord := global_position_to_tile_coordinate(global_position) + global_position = tile_coordinate_to_global_position(coord) + + +func get_closest_axis(vector: Vector2) -> Vector2i: + if abs(vector.x) > abs(vector.y): + # Closer to Horizontal (X-axis) + return Vector2i(sign(vector.x), 0) + + # Closer to Vertical (Y-axis) + return Vector2i(0, sign(vector.y)) + + +func got_pulled(direction: Vector2) -> void: + var axis := get_closest_axis(direction) + if axis == Vector2i.ZERO: + shaker.shake() + await Engine.get_main_loop().create_timer(0.1).timeout + hookable_area.release_from_pull(true) + return + + var neighbor := NEIGHBORS_FOR_AXIS[axis] + var coord := global_position_to_tile_coordinate(global_position) + assert(constrain_layer.get_cell_tile_data(coord) != null) + var new_coord := constrain_layer.get_neighbor_cell(coord, neighbor) + var data := constrain_layer.get_cell_tile_data(new_coord) + + if not data: + shaker.shake() + await Engine.get_main_loop().create_timer(0.1).timeout + hookable_area.release_from_pull(true) + return + + if tween: + if tween.is_running(): + return + tween.kill() + + tween = create_tween() + tween.set_ease(Tween.EASE_OUT) + # Assuming that the tile size is square: + var new_position := position + Vector2(axis) * constrain_layer.tile_set.tile_size.x + tween.tween_property(self, "position", new_position, .2) + await tween.finished + hookable_area.release_from_pull() diff --git a/scenes/game_elements/props/hookable_box/components/hookable_box.gd.uid b/scenes/game_elements/props/hookable_box/components/hookable_box.gd.uid new file mode 100644 index 0000000000..421b8aab41 --- /dev/null +++ b/scenes/game_elements/props/hookable_box/components/hookable_box.gd.uid @@ -0,0 +1 @@ +uid://gvjhy1uvsqpc diff --git a/scenes/game_elements/props/hookable_box/hookable_box.tscn b/scenes/game_elements/props/hookable_box/hookable_box.tscn new file mode 100644 index 0000000000..490366e501 --- /dev/null +++ b/scenes/game_elements/props/hookable_box/hookable_box.tscn @@ -0,0 +1,69 @@ +[gd_scene format=3 uid="uid://dkpelgxwtvcxd"] + +[ext_resource type="Script" uid="uid://gvjhy1uvsqpc" path="res://scenes/game_elements/props/hookable_box/components/hookable_box.gd" id="1_34j61"] +[ext_resource type="Texture2D" uid="uid://dslom0xbe1if7" path="res://assets/third_party/tiny-swords/Terrain/Ground/Shadows.png" id="2_f8qwn"] +[ext_resource type="Texture2D" uid="uid://c7oht7wudd8wa" path="res://assets/first_party/tiles/Cliff_Tiles.png" id="3_u0gye"] +[ext_resource type="Script" uid="uid://dabvr3pqmyya4" path="res://scenes/game_elements/props/hookable_area/components/hookable_area.gd" id="4_ml4a5"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="4_to7a4"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_bu3x1"] +atlas = ExtResource("3_u0gye") +region = Rect2(192, 256, 64, 128) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_8dti7"] +size = Vector2(64, 64) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ml4a5"] +size = Vector2(96, 160) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_34j61"] +polygon = PackedVector2Array(-32, 32, 32, 32, 32, -64, -32, -64) + +[node name="HookableBox" type="AnimatableBody2D" unique_id=1805651676] +editor_description = "A hookable box that moves in a fixed grid. + +Almost the same as the repellable box example, but instead has a HookableArea and defines a got_hooked() handler method." +collision_layer = 768 +collision_mask = 531 +script = ExtResource("1_34j61") + +[node name="Sprite2D2" type="Sprite2D" parent="." unique_id=1393129317] +texture = ExtResource("2_f8qwn") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=898668959] +position = Vector2(0, -32) +texture = SubResource("AtlasTexture_bu3x1") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=363689712] +rotation = -1.5707964 +shape = SubResource("RectangleShape2D_8dti7") + +[node name="Shaker" type="Node2D" parent="." unique_id=103380831 node_paths=PackedStringArray("target")] +unique_name_in_owner = true +script = ExtResource("4_to7a4") +target = NodePath("..") +shake_intensity = 60.0 +duration = 0.5 +frequency = 30.0 +metadata/_custom_type_script = "uid://dunsvrhq42214" + +[node name="HookableArea" type="Area2D" parent="." unique_id=1417858664 node_paths=PackedStringArray("controlled_entity", "anchor_point")] +unique_name_in_owner = true +collision_layer = 4096 +collision_mask = 0 +script = ExtResource("4_ml4a5") +controlled_entity = NodePath("..") +anchor_point = NodePath("Marker2D") +weight = 0.0 +metadata/_custom_type_script = "uid://dabvr3pqmyya4" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="HookableArea" unique_id=68720889] +position = Vector2(0, -32) +shape = SubResource("RectangleShape2D_ml4a5") +debug_color = Color(0.689707, 0.288376, 1, 0.42) + +[node name="Marker2D" type="Marker2D" parent="HookableArea" unique_id=1758696959] +position = Vector2(0, -16) + +[node name="LightOccluder2D" type="LightOccluder2D" parent="." unique_id=1375993843] +occluder = SubResource("OccluderPolygon2D_34j61") diff --git a/scenes/game_elements/props/hookable_lever/components/hookable_lever.gd b/scenes/game_elements/props/hookable_lever/components/hookable_lever.gd new file mode 100644 index 0000000000..0b36357ccf --- /dev/null +++ b/scenes/game_elements/props/hookable_lever/components/hookable_lever.gd @@ -0,0 +1,65 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends StaticBody2D + +## Emitted when the scene starts, indicating the initial state of this lever. +signal initialized(satisfied: bool) + +## Emitted when the lever state changes. +signal toggled(is_on: bool) + +# Note: Changing the value of "is_on" won't emit a signal. To do that, use "toggle" +@export var is_on: bool = false: + set(new_val): + is_on = new_val + update_appearance() + +# Toggles can be connected via targets (simple) or via signal (using the toggled signal) +@export var targets: Array[Toggleable] + +@onready var hookable_area: HookableArea = %HookableArea +@onready var lever_sprite: Sprite2D = %LeverSprite +@onready var shaker: Shaker = %Shaker + + +func update_appearance() -> void: + if not is_node_ready(): + return + lever_sprite.frame = 1 if is_on else 0 + + +func _ready() -> void: + _connect_targets() + + # To ensure the targets are ready, we do a "call_deferred" + _initialize_toggle_state.call_deferred() + + +func _initialize_toggle_state() -> void: + initialized.emit(is_on) + + +func _connect_targets() -> void: + for target: Toggleable in targets: + initialized.connect(target.initialize_with_value) + toggled.connect(target.set_toggled) + + +func got_pulled(direction: Vector2) -> void: + var sign_x := signf(direction.x) + if sign_x == 1 and not is_on: + toggle() + await get_tree().create_timer(0.2).timeout + hookable_area.release_from_pull() + elif sign_x == -1 and is_on: + toggle() + await get_tree().create_timer(0.2).timeout + hookable_area.release_from_pull() + else: + shaker.shake() + hookable_area.release_from_pull(true) + + +func toggle(new_val: bool = not is_on) -> void: + is_on = new_val + toggled.emit(is_on) diff --git a/scenes/game_elements/props/hookable_lever/components/hookable_lever.gd.uid b/scenes/game_elements/props/hookable_lever/components/hookable_lever.gd.uid new file mode 100644 index 0000000000..6592199fcf --- /dev/null +++ b/scenes/game_elements/props/hookable_lever/components/hookable_lever.gd.uid @@ -0,0 +1 @@ +uid://d3iwkqlwrjrg0 diff --git a/scenes/game_elements/props/hookable_lever/hookable_lever.tscn b/scenes/game_elements/props/hookable_lever/hookable_lever.tscn new file mode 100644 index 0000000000..ef02a55b0c --- /dev/null +++ b/scenes/game_elements/props/hookable_lever/hookable_lever.tscn @@ -0,0 +1,51 @@ +[gd_scene format=3 uid="uid://c47lkkvljrsg"] + +[ext_resource type="Script" uid="uid://d3iwkqlwrjrg0" path="res://scenes/game_elements/props/hookable_lever/components/hookable_lever.gd" id="1_mrig6"] +[ext_resource type="Texture2D" uid="uid://uy2acspf6apo" path="res://scenes/game_elements/props/lever/components/Lever.png" id="2_ved61"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="3_082ac"] +[ext_resource type="Script" uid="uid://dabvr3pqmyya4" path="res://scenes/game_elements/props/hookable_area/components/hookable_area.gd" id="4_l44sk"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_p2k53"] +height = 58.0 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_h3468"] +size = Vector2(96, 96) + +[node name="HookableLever" type="StaticBody2D" unique_id=37452001] +editor_description = "A repellable lever. + +It can be switched in the horizontal direction that's being repelled. It will shake when the direction is the same as the lever, indicating that it couldn't be switched from there." +collision_layer = 768 +collision_mask = 0 +script = ExtResource("1_mrig6") + +[node name="LeverSprite" type="Sprite2D" parent="." unique_id=2043405312] +unique_name_in_owner = true +position = Vector2(0, -10) +texture = ExtResource("2_ved61") +hframes = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1984459816] +rotation = -1.5707964 +shape = SubResource("CapsuleShape2D_p2k53") + +[node name="Shaker" type="Node2D" parent="." unique_id=1105059859 node_paths=PackedStringArray("target")] +unique_name_in_owner = true +script = ExtResource("3_082ac") +target = NodePath("..") +duration = 0.5 +frequency = 30.0 +metadata/_custom_type_script = "uid://dunsvrhq42214" + +[node name="HookableArea" type="Area2D" parent="." unique_id=72195883 node_paths=PackedStringArray("controlled_entity")] +unique_name_in_owner = true +collision_layer = 4096 +collision_mask = 0 +script = ExtResource("4_l44sk") +controlled_entity = NodePath("..") +weight = 0.0 +metadata/_custom_type_script = "uid://dabvr3pqmyya4" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="HookableArea" unique_id=503665020] +shape = SubResource("RectangleShape2D_h3468") +debug_color = Color(0.689707, 0.288376, 1, 0.42) diff --git a/scenes/game_elements/props/hookable_needle/components/needle.png b/scenes/game_elements/props/hookable_needle/components/needle.png index 5f6fd973e2..cb42387943 100644 --- a/scenes/game_elements/props/hookable_needle/components/needle.png +++ b/scenes/game_elements/props/hookable_needle/components/needle.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:371c8579c99384daa9a63b32ae23d634ebbb00e4b0ad2a76d284004e6e9c08d4 -size 536 +oid sha256:3ff0dbf754154ddff071a7dfb728ed8005a28190a143d5c24c1dd130ac85d1f4 +size 801 diff --git a/scenes/game_elements/props/hookable_needle/hookable_needle.tscn b/scenes/game_elements/props/hookable_needle/hookable_needle.tscn index bb59a39d23..b9187d79ce 100644 --- a/scenes/game_elements/props/hookable_needle/hookable_needle.tscn +++ b/scenes/game_elements/props/hookable_needle/hookable_needle.tscn @@ -1,7 +1,7 @@ [gd_scene format=3 uid="uid://dohb701lxbe5s"] [ext_resource type="Texture2D" uid="uid://cdsv6qj0s3enp" path="res://scenes/game_elements/props/hookable_needle/components/needle.png" id="1_51v7k"] -[ext_resource type="PackedScene" uid="uid://ekgkd6j30py8" path="res://scenes/game_elements/props/hookable_area/hookable_area.tscn" id="3_q65sc"] +[ext_resource type="Script" uid="uid://dabvr3pqmyya4" path="res://scenes/game_elements/props/hookable_area/components/hookable_area.gd" id="2_1ash0"] [ext_resource type="PackedScene" uid="uid://b0dehcnfo68j1" path="res://scenes/game_elements/props/hook_control/hook_control.tscn" id="3_te154"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_bfd1i"] @@ -14,13 +14,17 @@ collision_layer = 16 collision_mask = 0 [node name="Sprite2D" type="Sprite2D" parent="." unique_id=283948262] -position = Vector2(0, -32) +position = Vector2(0, -24) texture = ExtResource("1_51v7k") -[node name="HookableArea" parent="." unique_id=2142381948 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("3_q65sc")] +[node name="HookableArea" type="Area2D" parent="." unique_id=1826386316 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point")] +collision_layer = 4096 +collision_mask = 0 +script = ExtResource("2_1ash0") controlled_entity = NodePath("..") hook_control = NodePath("HookControl") anchor_point = NodePath("Marker2D") +metadata/_custom_type_script = "uid://dabvr3pqmyya4" [node name="CollisionShape2D" type="CollisionShape2D" parent="HookableArea" unique_id=1279070361] position = Vector2(0, -28) @@ -28,10 +32,10 @@ shape = SubResource("RectangleShape2D_bfd1i") debug_color = Color(0.689707, 0.288376, 1, 0.42) [node name="Marker2D" type="Marker2D" parent="HookableArea" unique_id=335701191] -position = Vector2(0, -48) +position = Vector2(0, -45) [node name="HookControl" parent="HookableArea" unique_id=1853420814 node_paths=PackedStringArray("hook_area") instance=ExtResource("3_te154")] -position = Vector2(0, -48) +position = Vector2(0, -45) hook_area = NodePath("..") [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1038684912] diff --git a/scenes/game_elements/props/hookable_pin/components/pin.png b/scenes/game_elements/props/hookable_pin/components/pin.png index 7290ac145a..f9fce4b52c 100644 --- a/scenes/game_elements/props/hookable_pin/components/pin.png +++ b/scenes/game_elements/props/hookable_pin/components/pin.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b115b3c34554bb1dbe5b0aab450bd772b3d9cfd3244dafbdfc1ac4e68013966e -size 515 +oid sha256:8079fc120c21e858522486d4a64b427bb057fcc1cf5b40e12acaa7e228b0f7fa +size 786 diff --git a/scenes/game_elements/props/hookable_pin/components/pin_and_needle.aseprite b/scenes/game_elements/props/hookable_pin/components/pin_and_needle.aseprite index 411fffbf65..3c319a31f0 100644 --- a/scenes/game_elements/props/hookable_pin/components/pin_and_needle.aseprite +++ b/scenes/game_elements/props/hookable_pin/components/pin_and_needle.aseprite @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aefcdb01bfd3c2664885237c7af9de86ff805cb8789eae57636987383d22c2f4 -size 744 +oid sha256:1842a17da47da7094e52e7961e4fbd8da4061f934371a6e860c60266ed0cad15 +size 1513 diff --git a/scenes/game_elements/props/hookable_pin/hookable_pin.tscn b/scenes/game_elements/props/hookable_pin/hookable_pin.tscn index 525880fa2f..f01c40dee6 100644 --- a/scenes/game_elements/props/hookable_pin/hookable_pin.tscn +++ b/scenes/game_elements/props/hookable_pin/hookable_pin.tscn @@ -13,7 +13,7 @@ collision_layer = 16 collision_mask = 0 [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1242315016] -position = Vector2(0, -32) +position = Vector2(0, -24) texture = ExtResource("1_gcph1") [node name="HookableArea" type="Area2D" parent="." unique_id=2025257493 node_paths=PackedStringArray("controlled_entity", "anchor_point")] @@ -29,7 +29,7 @@ shape = SubResource("RectangleShape2D_bfd1i") debug_color = Color(0.689707, 0.288376, 1, 0.42) [node name="Marker2D" type="Marker2D" parent="HookableArea" unique_id=286043670] -position = Vector2(0, -36) +position = Vector2(0, -46) [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1010643876] rotation = -1.5708 diff --git a/scenes/game_elements/props/interact_area/components/interact_area.gd b/scenes/game_elements/props/interact_area/components/interact_area.gd deleted file mode 100644 index adaa7d8c73..0000000000 --- a/scenes/game_elements/props/interact_area/components/interact_area.gd +++ /dev/null @@ -1,84 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -@tool -class_name InteractArea -extends Area2D - -signal interaction_started(player: Player, from_right: bool) -signal interaction_ended - -const EXAMPLE_INTERACTION_FONT = preload("uid://c3bb7lmvdqc5e") -const EXAMPLE_INTERACTION_FONT_SIZE = 34 - -## Vector2 that approximates the position in which the interact label would -## appear when a player is close. -@export_custom(PROPERTY_HINT_RANGE, "-200,200,1,suffix:px,or_greater,or_less") -var interact_label_position: Vector2: - set(new_value): - interact_label_position = new_value - queue_redraw() -@export var disabled: bool = false: - set(new_value): - disabled = new_value - set_collision_layer_value(Enums.CollisionLayers.INTERACTABLE, not disabled) -@export var action: String = "Talk" - - -func start_interaction(player: Player, from_right: bool) -> void: - interaction_started.emit(player, from_right) - - -func end_interaction() -> void: - interaction_ended.emit() - - -func get_global_interact_label_position() -> Vector2: - return to_global(interact_label_position) - - -func _get_configuration_warnings() -> PackedStringArray: - var warnings: PackedStringArray - if not disabled and not get_collision_layer_value(Enums.CollisionLayers.INTERACTABLE): - warnings.append( - ( - "Consider enabling collision with the interactable layer: %d." - % Enums.CollisionLayers.INTERACTABLE - ) - ) - return warnings - - -func _set(property: StringName, _value: Variant) -> bool: - if property == "collision_layer": - update_configuration_warnings() - return false - - -func _draw() -> void: - if not Engine.is_editor_hint(): - return - - var string_size := EXAMPLE_INTERACTION_FONT.get_string_size( - action, HORIZONTAL_ALIGNMENT_LEFT, -1, EXAMPLE_INTERACTION_FONT_SIZE - ) - var draw_position := ( - interact_label_position - Vector2(string_size.x, -string_size.y * 2.0) / 2.0 - ) - draw_string( - EXAMPLE_INTERACTION_FONT, - draw_position, - action, - HORIZONTAL_ALIGNMENT_LEFT, - -1, - EXAMPLE_INTERACTION_FONT_SIZE - ) - draw_string_outline( - EXAMPLE_INTERACTION_FONT, - draw_position, - action, - HORIZONTAL_ALIGNMENT_LEFT, - -1, - EXAMPLE_INTERACTION_FONT_SIZE, - 1, - Color.BLACK - ) diff --git a/scenes/game_elements/props/interact_area/interact_area.gd b/scenes/game_elements/props/interact_area/interact_area.gd new file mode 100644 index 0000000000..c2d6741d6b --- /dev/null +++ b/scenes/game_elements/props/interact_area/interact_area.gd @@ -0,0 +1,100 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +class_name InteractArea +extends Area2D +## An area that the player-character can interact with +## +## To make an interactable object, add an [InteractArea] to it, and handle +## [signal interaction_started]. When the interaction is complete, call [method +## end_interaction]. This area is detected by character's [CharacterSight]; +## the player scene is typically responsible for calling [method +## start_interaction] in response to player input. +## [br][br] +## This script automatically configures the correct [member collision_layer] and +## [member collision_mask] values to enable interaction with the player. + +signal interaction_started(player: Player, from_right: bool) +signal interaction_ended + +## Emitted when characters start or stop seeing this area for interaction. +signal observers_changed + +const INDICATOR_SCENE := preload("uid://d252j2mhya0kq") + +## Position at which to show an arrow when this area is being observed. This +## should generally be centred, slightly above the visible extents of the parent +## object. If not set, a default position will be used, which may be good enough. +@export var marker: Marker2D: + set(new_value): + if marker and _indicator: + marker.remove_child(_indicator) + marker = new_value + if marker and _indicator: + marker.add_child(_indicator) + +@export var disabled: bool = false: + set(new_value): + disabled = new_value + set_collision_layer_value(Enums.CollisionLayers.INTERACTABLE, not disabled) + if _indicator: + _indicator.visible = not disabled + +@export var action: String = "Talk" + +## Whether this area is being observed by one or more characters. +## That is, if a [CharacterSight] area is seeing this area for interaction. +var is_being_observed: bool: + get = _get_is_being_observed + +var _observers: Array[CharacterSight] = [] + +var _indicator: Node2D + + +func start_interaction(player: Player, from_right: bool) -> void: + interaction_started.emit(player, from_right) + + +func end_interaction() -> void: + interaction_ended.emit() + + +## A [CharacterSight] calls this when it starts seeing this area. +func add_observer(character_sight: CharacterSight) -> void: + _observers.append(character_sight) + observers_changed.emit() + + +## A [CharacterSight] calls this when it stops seeing this area. +func remove_observer(character_sight: CharacterSight) -> void: + _observers.erase(character_sight) + observers_changed.emit() + + +func _get_is_being_observed() -> bool: + return bool(_observers.size()) + + +func _ready() -> void: + collision_layer = 0 + collision_mask = 0 + # Initialise interactable bit in collision_layer + disabled = disabled + + if not marker and not Engine.is_editor_hint(): + marker = Marker2D.new() + marker.name = "Marker" + # Vaguely sensible default position + marker.position = Vector2(0, -64) + add_child(marker) + + _indicator = INDICATOR_SCENE.instantiate() + if marker: + marker.add_child(_indicator) + + observers_changed.connect(_on_observers_changed) + + +func _on_observers_changed() -> void: + _indicator.bouncing = is_being_observed diff --git a/scenes/game_elements/props/interact_area/components/interact_area.gd.uid b/scenes/game_elements/props/interact_area/interact_area.gd.uid similarity index 100% rename from scenes/game_elements/props/interact_area/components/interact_area.gd.uid rename to scenes/game_elements/props/interact_area/interact_area.gd.uid diff --git a/scenes/game_elements/props/interact_area/interact_area.tscn b/scenes/game_elements/props/interact_area/interact_area.tscn deleted file mode 100644 index f26fdccbe8..0000000000 --- a/scenes/game_elements/props/interact_area/interact_area.tscn +++ /dev/null @@ -1,9 +0,0 @@ -[gd_scene format=3 uid="uid://dutgnbiy7xalb"] - -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="1_esvy3"] - -[node name="InteractArea" type="Area2D" unique_id=248145530] -collision_layer = 32 -collision_mask = 0 -script = ExtResource("1_esvy3") -metadata/_custom_type_script = "uid://du8wfijr35r35" diff --git a/scenes/game_elements/props/interact_area/interact_indicator.gd b/scenes/game_elements/props/interact_area/interact_indicator.gd new file mode 100644 index 0000000000..f49c9147d9 --- /dev/null +++ b/scenes/game_elements/props/interact_area/interact_indicator.gd @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D + +var bouncing := false: + set = set_bouncing + +@onready var animation_player: AnimationPlayer = %AnimationPlayer + + +func set_bouncing(new_value: bool) -> void: + bouncing = new_value + if animation_player: + animation_player.play(&"bounce" if new_value else &"idle") + + +func _ready() -> void: + set_bouncing(bouncing) diff --git a/scenes/game_elements/props/interact_area/interact_indicator.gd.uid b/scenes/game_elements/props/interact_area/interact_indicator.gd.uid new file mode 100644 index 0000000000..a7ed70c4c3 --- /dev/null +++ b/scenes/game_elements/props/interact_area/interact_indicator.gd.uid @@ -0,0 +1 @@ +uid://darg2a58q4hrn diff --git a/scenes/game_elements/props/interact_area/interact_indicator.tscn b/scenes/game_elements/props/interact_area/interact_indicator.tscn new file mode 100644 index 0000000000..5c5322e9ca --- /dev/null +++ b/scenes/game_elements/props/interact_area/interact_indicator.tscn @@ -0,0 +1,106 @@ +[gd_scene format=3 uid="uid://d252j2mhya0kq"] + +[ext_resource type="Script" uid="uid://darg2a58q4hrn" path="res://scenes/game_elements/props/interact_area/interact_indicator.gd" id="1_45h81"] +[ext_resource type="Texture2D" uid="uid://cheu0l1ap1r8y" path="res://assets/first_party/user_interface/indicator_down.png" id="1_ld861"] + +[sub_resource type="Animation" id="Animation_45h81"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("IndicatorDown:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("IndicatorDown:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_o3oko"] +resource_name = "bounce" +length = 0.5 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("IndicatorDown:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.25, 0.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0, -8), Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("IndicatorDown:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_sssui"] +resource_name = "idle" +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("IndicatorDown:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("IndicatorDown:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_sssui"] +_data = { +&"RESET": SubResource("Animation_45h81"), +&"bounce": SubResource("Animation_o3oko"), +&"idle": SubResource("Animation_sssui") +} + +[node name="InteractIndicator" type="Node2D" unique_id=544003245] +script = ExtResource("1_45h81") + +[node name="IndicatorDown" type="Sprite2D" parent="." unique_id=1137596536] +z_index = 1 +texture = ExtResource("1_ld861") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1940688738] +unique_name_in_owner = true +libraries/ = SubResource("AnimationLibrary_sssui") diff --git a/scenes/game_elements/props/lever/components/toggleable.gd b/scenes/game_elements/props/lever/components/toggleable.gd index 3f61fbc2dd..cbe211d0af 100644 --- a/scenes/game_elements/props/lever/components/toggleable.gd +++ b/scenes/game_elements/props/lever/components/toggleable.gd @@ -1,6 +1,6 @@ # SPDX-FileCopyrightText: The Threadbare Authors # SPDX-License-Identifier: MPL-2.0 -class_name Toggleable +@abstract class_name Toggleable extends Node2D @@ -18,6 +18,4 @@ func initialize_with_value(value: bool) -> void: set_toggled(value) -func set_toggled(_value: bool) -> void: - # For subclasses to override (mandatory) - assert(false, "Subclasses must override this method") +@abstract func set_toggled(value: bool) -> void diff --git a/scenes/game_elements/props/lever/lever.tscn b/scenes/game_elements/props/lever/lever.tscn index fe77b0db20..8467890952 100644 --- a/scenes/game_elements/props/lever/lever.tscn +++ b/scenes/game_elements/props/lever/lever.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://dpy43oruh42hm" path="res://scenes/game_elements/props/lever/components/lever.gd" id="1_ri4rx"] [ext_resource type="Texture2D" uid="uid://uy2acspf6apo" path="res://scenes/game_elements/props/lever/components/Lever.png" id="1_ywgx1"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_v1ps0"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_v1ps0"] [sub_resource type="CircleShape2D" id="CircleShape2D_ri4rx"] radius = 48.0 diff --git a/scenes/game_elements/props/powerup/components/default_powerup.dialogue b/scenes/game_elements/props/powerup/components/default_powerup.dialogue new file mode 100644 index 0000000000..8dbaa4848f --- /dev/null +++ b/scenes/game_elements/props/powerup/components/default_powerup.dialogue @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +[wave amp=25 freq=5]You got a new ability! [b]{{ability_name}}[/b][/wave] +=> END diff --git a/scenes/game_elements/props/powerup/components/default_powerup.dialogue.import b/scenes/game_elements/props/powerup/components/default_powerup.dialogue.import new file mode 100644 index 0000000000..100b7ee40e --- /dev/null +++ b/scenes/game_elements/props/powerup/components/default_powerup.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://cj0i5jwlv8idi" +path="res://.godot/imported/default_powerup.dialogue-7b4f95958377611890379db90e1904ef.tres" + +[deps] + +source_file="res://scenes/game_elements/props/powerup/components/default_powerup.dialogue" +dest_files=["res://.godot/imported/default_powerup.dialogue-7b4f95958377611890379db90e1904ef.tres"] + +[params] + +defaults=true diff --git a/scenes/game_elements/props/powerup/components/powerup.aseprite b/scenes/game_elements/props/powerup/components/powerup.aseprite new file mode 100644 index 0000000000..f03d25f721 --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67deb9e34bb59222696e0eef3c1db0980a9c13575e386adac67d9c707f6b202b +size 24752 diff --git a/scenes/game_elements/props/powerup/components/powerup.gd b/scenes/game_elements/props/powerup/components/powerup.gd new file mode 100644 index 0000000000..8557494db6 --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup.gd @@ -0,0 +1,116 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +extends CharacterBody2D +## A powerup that, when interacted, enables a player ability. +## +## By default it also displays a dialogue telling the player that an ability +## has been obtained. + +## Emitted when this powerup is collected. +signal collected + +## The player ability to enable. +@export var ability: Enums.PlayerAbilities = Enums.PlayerAbilities.ABILITY_A + +## Name for the ability to display if using the default dialogue. +@export var ability_name: String + +## Text to display in the label when the player gets close to interact with this powerup. +@export var interact_action: String: + set = _set_interact_action + +## Asset of this powerup. +@export var sprite_frames: SpriteFrames = preload("uid://cualgrcaaggcm"): + set = _set_sprite_frames + +## The powerup shines with this color. +@export var highlight_color: Color = Color.WHITE: + set = _set_highlight_color + +## Dialogue to display when collecting the powerup. +@export var dialogue: DialogueResource = preload("uid://cj0i5jwlv8idi") + +var _tween: Tween + +@onready var interact_area: InteractArea = %InteractArea +@onready var highlight_effect: AnimatedSprite2D = %HighlightEffect +@onready var sprite: AnimatedSprite2D = %Sprite +@onready var interact_collision: CollisionShape2D = %InteractCollision +@onready var ground_collision: CollisionShape2D = %GroundCollision +@onready var hookable_collision: CollisionShape2D = %HookableCollision + + +func _set_interact_action(new_interact_action: String) -> void: + interact_action = new_interact_action + if is_node_ready(): + interact_area.action = interact_action + + +func _set_sprite_frames(new_sprite_frames: SpriteFrames) -> void: + sprite_frames = new_sprite_frames + if is_node_ready(): + sprite.sprite_frames = sprite_frames + sprite.play("default") + + +func _set_highlight_color(new_highlight_color: Color) -> void: + highlight_color = new_highlight_color + if is_node_ready(): + highlight_effect.modulate = highlight_color + + +func _ready() -> void: + _set_interact_action(interact_action) + _set_sprite_frames(sprite_frames) + _set_highlight_color(highlight_color) + if Engine.is_editor_hint(): + return + GameState.abilities_changed.connect(_on_abilities_changed) + _on_abilities_changed() + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_EDITOR_PRE_SAVE: + # Since this is a tool script that plays the animations in the + # editor, reset the frame progress before saving the scene. + sprite.frame_progress = 0 + + +func _on_abilities_changed() -> void: + var has_ability := GameState.has_ability(ability) + ground_collision.disabled = has_ability + interact_collision.disabled = has_ability + hookable_collision.disabled = has_ability + highlight_effect.visible = not has_ability + var alpha: float = 0.5 if has_ability else 1.0 + sprite.modulate = Color(Color.WHITE, alpha) + _set_highlight_color(highlight_color) + var highlight_material := highlight_effect.material as ShaderMaterial + if highlight_material: + highlight_material.set_shader_parameter(&"width", 0.4) + + +func _on_interact_area_interaction_started( + _player: Player, _from_right: bool, source: InteractArea +) -> void: + if _tween: + _tween.kill() + _tween = create_tween() + _tween.tween_property(highlight_effect, "modulate", Color.WHITE, 0.5) + await _tween.finished + if dialogue: + DialogueManager.show_dialogue_balloon(dialogue, "", [self]) + await DialogueManager.dialogue_ended + source.end_interaction() + GameState.set_ability(ability, true) + collected.emit() + + +func _on_interact_area_observers_changed() -> void: + if _tween: + _tween.kill() + _tween = create_tween() + var color: Color = Color.WHITE if interact_area.is_being_observed else highlight_color + _tween.tween_property(highlight_effect, "modulate", color, 0.5) diff --git a/scenes/game_elements/props/powerup/components/powerup.gd.uid b/scenes/game_elements/props/powerup/components/powerup.gd.uid new file mode 100644 index 0000000000..9f7f8b35dc --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup.gd.uid @@ -0,0 +1 @@ +uid://bhmae3daygmqh diff --git a/scenes/game_elements/props/powerup/components/powerup_button.png b/scenes/game_elements/props/powerup/components/powerup_button.png new file mode 100644 index 0000000000..bf084ba606 --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_button.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c0140537e296793df132e174392d476afbf75c6973737640e989e37de4a2648 +size 3573 diff --git a/scenes/game_elements/props/powerup/components/powerup_button.png.import b/scenes/game_elements/props/powerup/components/powerup_button.png.import new file mode 100644 index 0000000000..ce6bb47d52 --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_button.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://burtk2wy5wygl" +path="res://.godot/imported/powerup_button.png-22604b71dfdedac8dc6397902d2f1c94.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/powerup/components/powerup_button.png" +dest_files=["res://.godot/imported/powerup_button.png-22604b71dfdedac8dc6397902d2f1c94.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/game_elements/props/powerup/components/powerup_button.tres b/scenes/game_elements/props/powerup/components/powerup_button.tres new file mode 100644 index 0000000000..e4edf5cdca --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_button.tres @@ -0,0 +1,53 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://cni7ipc5funa7"] + +[ext_resource type="Texture2D" uid="uid://burtk2wy5wygl" path="res://scenes/game_elements/props/powerup/components/powerup_button.png" id="1_ht4tu"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_0onex"] +atlas = ExtResource("1_ht4tu") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ktd5x"] +atlas = ExtResource("1_ht4tu") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4f466"] +atlas = ExtResource("1_ht4tu") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_htvbg"] +atlas = ExtResource("1_ht4tu") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pnbcf"] +atlas = ExtResource("1_ht4tu") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yja38"] +atlas = ExtResource("1_ht4tu") +region = Rect2(640, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_0onex") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ktd5x") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4f466") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_htvbg") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pnbcf") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_yja38") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/powerup/components/powerup_default.png b/scenes/game_elements/props/powerup/components/powerup_default.png new file mode 100644 index 0000000000..64e96a0576 --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_default.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d680945595aa88c90801ac6dfb7b45f934d7faeb83ef055e81b6899992050da +size 752 diff --git a/scenes/game_elements/props/powerup/components/powerup_default.png.import b/scenes/game_elements/props/powerup/components/powerup_default.png.import new file mode 100644 index 0000000000..d7057505f6 --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_default.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drfvwiaeco2b1" +path="res://.godot/imported/powerup_default.png-552e42b7860b171ba67b0c2747fd11f3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/powerup/components/powerup_default.png" +dest_files=["res://.godot/imported/powerup_default.png-552e42b7860b171ba67b0c2747fd11f3.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/game_elements/props/powerup/components/powerup_default.tres b/scenes/game_elements/props/powerup/components/powerup_default.tres new file mode 100644 index 0000000000..0b39ae30e3 --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_default.tres @@ -0,0 +1,14 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://cualgrcaaggcm"] + +[ext_resource type="Texture2D" uid="uid://drfvwiaeco2b1" path="res://scenes/game_elements/props/powerup/components/powerup_default.png" id="1_cyg7p"] + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1_cyg7p") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/powerup/components/powerup_highlight.png b/scenes/game_elements/props/powerup/components/powerup_highlight.png new file mode 100644 index 0000000000..93fe50d37e --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_highlight.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d2a0e95e663e6f68a680ed963d493485f339be6904c262d0c3071cf3175a24a +size 9433 diff --git a/scenes/game_elements/props/powerup/components/powerup_highlight.png.import b/scenes/game_elements/props/powerup/components/powerup_highlight.png.import new file mode 100644 index 0000000000..352ba026c6 --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_highlight.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bbo1nd3usbxnr" +path="res://.godot/imported/powerup_highlight.png-deef463ba3599bc39e64667d2828727c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/powerup/components/powerup_highlight.png" +dest_files=["res://.godot/imported/powerup_highlight.png-deef463ba3599bc39e64667d2828727c.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/game_elements/props/powerup/components/powerup_shadow.png b/scenes/game_elements/props/powerup/components/powerup_shadow.png new file mode 100644 index 0000000000..2c9bed933f --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_shadow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e30bf946dcd7a254dc41b79ca37807db9e2c06295d81c0666ccf3fb5e95aa3a +size 337 diff --git a/scenes/game_elements/props/powerup/components/powerup_shadow.png.import b/scenes/game_elements/props/powerup/components/powerup_shadow.png.import new file mode 100644 index 0000000000..9c1dcfdfd6 --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_shadow.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhsw4tbjtoa46" +path="res://.godot/imported/powerup_shadow.png-fc59d6f1ed68daaa632d29c5b80396fc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/powerup/components/powerup_shadow.png" +dest_files=["res://.godot/imported/powerup_shadow.png-fc59d6f1ed68daaa632d29c5b80396fc.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/game_elements/props/powerup/components/powerup_thread.png b/scenes/game_elements/props/powerup/components/powerup_thread.png new file mode 100644 index 0000000000..1b027780ce --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_thread.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8835a8d6bbda3ee35fa549332d0a15c9fb46f376d643268ee846fd7430b495c +size 5424 diff --git a/scenes/game_elements/props/powerup/components/powerup_thread.png.import b/scenes/game_elements/props/powerup/components/powerup_thread.png.import new file mode 100644 index 0000000000..9adb1504b3 --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_thread.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dag3wdvqw680w" +path="res://.godot/imported/powerup_thread.png-0cdc0a37f05a3819bb0e19229a1a379b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/powerup/components/powerup_thread.png" +dest_files=["res://.godot/imported/powerup_thread.png-0cdc0a37f05a3819bb0e19229a1a379b.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/game_elements/props/powerup/components/powerup_thread.tres b/scenes/game_elements/props/powerup/components/powerup_thread.tres new file mode 100644 index 0000000000..3d264ea35b --- /dev/null +++ b/scenes/game_elements/props/powerup/components/powerup_thread.tres @@ -0,0 +1,53 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://cfgahyntmtfgu"] + +[ext_resource type="Texture2D" uid="uid://dag3wdvqw680w" path="res://scenes/game_elements/props/powerup/components/powerup_thread.png" id="1_f5gth"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_6sv62"] +atlas = ExtResource("1_f5gth") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_elgan"] +atlas = ExtResource("1_f5gth") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_maew6"] +atlas = ExtResource("1_f5gth") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2k382"] +atlas = ExtResource("1_f5gth") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_e16ta"] +atlas = ExtResource("1_f5gth") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_b7mv3"] +atlas = ExtResource("1_f5gth") +region = Rect2(640, 0, 128, 128) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_6sv62") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_elgan") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_maew6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2k382") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_e16ta") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_b7mv3") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/powerup/powerup.tscn b/scenes/game_elements/props/powerup/powerup.tscn new file mode 100644 index 0000000000..353fb78e92 --- /dev/null +++ b/scenes/game_elements/props/powerup/powerup.tscn @@ -0,0 +1,137 @@ +[gd_scene format=3 uid="uid://dmevaymmt6wco"] + +[ext_resource type="Script" uid="uid://bhmae3daygmqh" path="res://scenes/game_elements/props/powerup/components/powerup.gd" id="1_5vrqc"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="2_q7xhf"] +[ext_resource type="Texture2D" uid="uid://bbo1nd3usbxnr" path="res://scenes/game_elements/props/powerup/components/powerup_highlight.png" id="4_bq5to"] +[ext_resource type="SpriteFrames" uid="uid://cualgrcaaggcm" path="res://scenes/game_elements/props/powerup/components/powerup_default.tres" id="6_ljncq"] +[ext_resource type="Texture2D" uid="uid://dhsw4tbjtoa46" path="res://scenes/game_elements/props/powerup/components/powerup_shadow.png" id="6_sba0c"] +[ext_resource type="Script" uid="uid://dabvr3pqmyya4" path="res://scenes/game_elements/props/hookable_area/components/hookable_area.gd" id="6_spw1e"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_bq5to"] +radius = 16.0 +height = 68.0 + +[sub_resource type="CircleShape2D" id="CircleShape2D_5vrqc"] +radius = 50.0 + +[sub_resource type="AtlasTexture" id="AtlasTexture_sba0c"] +atlas = ExtResource("4_bq5to") +region = Rect2(0, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ljncq"] +atlas = ExtResource("4_bq5to") +region = Rect2(128, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ikco4"] +atlas = ExtResource("4_bq5to") +region = Rect2(256, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_f0t2w"] +atlas = ExtResource("4_bq5to") +region = Rect2(384, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7lp77"] +atlas = ExtResource("4_bq5to") +region = Rect2(512, 0, 128, 128) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hnwgu"] +atlas = ExtResource("4_bq5to") +region = Rect2(640, 0, 128, 128) + +[sub_resource type="SpriteFrames" id="SpriteFrames_ladu5"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_sba0c") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ljncq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ikco4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_f0t2w") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7lp77") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hnwgu") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_spw1e"] +size = Vector2(90, 90) + +[node name="Powerup" type="CharacterBody2D" unique_id=297202740] +collision_layer = 512 +collision_mask = 0 +script = ExtResource("1_5vrqc") +ability_name = "Repel" +interact_action = "Collect Repel" + +[node name="GroundCollision" type="CollisionShape2D" parent="." unique_id=1403567890] +unique_name_in_owner = true +rotation = -1.5707964 +shape = SubResource("CapsuleShape2D_bq5to") +debug_color = Color(0.976711, 0, 0.409753, 0.42) + +[node name="InteractArea" type="Area2D" parent="." unique_id=1443651205 node_paths=PackedStringArray("marker")] +unique_name_in_owner = true +collision_layer = 32 +collision_mask = 0 +script = ExtResource("2_q7xhf") +marker = NodePath("Marker") +action = "Collect Repel" + +[node name="InteractCollision" type="CollisionShape2D" parent="InteractArea" unique_id=1651676696] +unique_name_in_owner = true +position = Vector2(0, -33) +shape = SubResource("CircleShape2D_5vrqc") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="PowerupShadow" type="Sprite2D" parent="InteractArea" unique_id=1565501906] +position = Vector2(0, -34) +texture = ExtResource("6_sba0c") + +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=824023387] +position = Vector2(0, -96) + +[node name="HighlightEffect" type="AnimatedSprite2D" parent="." unique_id=1553184658] +unique_name_in_owner = true +position = Vector2(0, -34) +sprite_frames = SubResource("SpriteFrames_ladu5") +autoplay = "default" +frame = 3 +frame_progress = 0.7309393 + +[node name="Sprite" type="AnimatedSprite2D" parent="." unique_id=305072782] +unique_name_in_owner = true +position = Vector2(0, -34) +sprite_frames = ExtResource("6_ljncq") +autoplay = "default" + +[node name="HookableArea" type="Area2D" parent="." unique_id=1984587489 node_paths=PackedStringArray("controlled_entity", "anchor_point")] +collision_layer = 4096 +collision_mask = 0 +script = ExtResource("6_spw1e") +controlled_entity = NodePath("..") +anchor_point = NodePath("Marker2D") +weight = 0.1 +metadata/_custom_type_script = "uid://dabvr3pqmyya4" + +[node name="HookableCollision" type="CollisionShape2D" parent="HookableArea" unique_id=567802370] +unique_name_in_owner = true +position = Vector2(0, -33) +shape = SubResource("RectangleShape2D_spw1e") +debug_color = Color(0.689707, 0.288376, 1, 0.42) + +[node name="Marker2D" type="Marker2D" parent="HookableArea" unique_id=1698747164] +position = Vector2(0, -33) + +[connection signal="interaction_started" from="InteractArea" to="." method="_on_interact_area_interaction_started" flags=18] +[connection signal="observers_changed" from="InteractArea" to="." method="_on_interact_area_observers_changed"] diff --git a/scenes/game_elements/props/projectile/components/projectile.gd b/scenes/game_elements/props/projectile/components/projectile.gd index 9e27e4494a..99f35d918f 100644 --- a/scenes/game_elements/props/projectile/components/projectile.gd +++ b/scenes/game_elements/props/projectile/components/projectile.gd @@ -37,6 +37,9 @@ extends RigidBody2D ## The speed of the initial impulse and the bouncing impulse. @export_range(10., 100., 5., "or_greater", "or_less", "suffix:m/s") var speed: float = 30.0 +## The speed after the projectile gets hit. +@export_range(10., 100., 5., "or_greater", "or_less", "suffix:m/s") var hit_speed: float = 100.0 + ## The initial direction. @export var direction: Vector2 = Vector2(0, -1): set = _set_direction @@ -150,11 +153,12 @@ func _on_body_entered(body: Node2D) -> void: queue_free() -func got_hit(player: Player) -> void: +## Called from the Repel component when this body +## enters the repel area. +func got_repelled(repel_direction: Vector2) -> void: add_small_fx() duration_timer.start() - var hit_speed := 100.0 - var hit_vector: Vector2 = player.global_position.direction_to(global_position) * hit_speed + var hit_vector: Vector2 = repel_direction * hit_speed hit_sound.play() animated_sprite_2d.speed_scale = 2 if _trail_particles: diff --git a/scenes/game_elements/props/repellable_ball/components/ball-shading.png b/scenes/game_elements/props/repellable_ball/components/ball-shading.png new file mode 100644 index 0000000000..64054827b1 --- /dev/null +++ b/scenes/game_elements/props/repellable_ball/components/ball-shading.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ddd46f4d29a79c86a9f268fb967966df2b3d0106f6b996183d49eb9f44c765c +size 561 diff --git a/scenes/game_elements/props/repellable_ball/components/ball-shading.png.import b/scenes/game_elements/props/repellable_ball/components/ball-shading.png.import new file mode 100644 index 0000000000..326b1c75fd --- /dev/null +++ b/scenes/game_elements/props/repellable_ball/components/ball-shading.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpr2frn4lct3x" +path="res://.godot/imported/ball-shading.png-89095b2742052d7df47dde45ee929f89.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/repellable_ball/components/ball-shading.png" +dest_files=["res://.godot/imported/ball-shading.png-89095b2742052d7df47dde45ee929f89.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/game_elements/props/repellable_ball/components/ball-shadow.png b/scenes/game_elements/props/repellable_ball/components/ball-shadow.png new file mode 100644 index 0000000000..0c9eab4513 --- /dev/null +++ b/scenes/game_elements/props/repellable_ball/components/ball-shadow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea5bdd8c8b26b2d9e572b0ad5c904d59fef608a6200fd9e229595c629d67e68c +size 301 diff --git a/scenes/game_elements/props/repellable_ball/components/ball-shadow.png.import b/scenes/game_elements/props/repellable_ball/components/ball-shadow.png.import new file mode 100644 index 0000000000..906288db8c --- /dev/null +++ b/scenes/game_elements/props/repellable_ball/components/ball-shadow.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1qo8s4w7n11i" +path="res://.godot/imported/ball-shadow.png-e4f9bf3fc856419d2d8fa09dd9abb2e0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/repellable_ball/components/ball-shadow.png" +dest_files=["res://.godot/imported/ball-shadow.png-e4f9bf3fc856419d2d8fa09dd9abb2e0.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/game_elements/props/repellable_ball/components/ball.aseprite b/scenes/game_elements/props/repellable_ball/components/ball.aseprite new file mode 100644 index 0000000000..e63b995e1d --- /dev/null +++ b/scenes/game_elements/props/repellable_ball/components/ball.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4bc81f02521fd060de8c2dcf65a6467386621b946915b3e7cc138572ab76ae3 +size 1449 diff --git a/scenes/game_elements/props/repellable_ball/components/ball.png b/scenes/game_elements/props/repellable_ball/components/ball.png new file mode 100644 index 0000000000..80e05e27fe --- /dev/null +++ b/scenes/game_elements/props/repellable_ball/components/ball.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:267233d346d4e98cd792cccf87681859a1b64a6d51c9b62d7e1572af520aa790 +size 883 diff --git a/scenes/game_elements/props/repellable_ball/components/ball.png.import b/scenes/game_elements/props/repellable_ball/components/ball.png.import new file mode 100644 index 0000000000..619137871f --- /dev/null +++ b/scenes/game_elements/props/repellable_ball/components/ball.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4qa5xnao47wk" +path="res://.godot/imported/ball.png-57cd971cdf854909bbbc0632a791b372.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/repellable_ball/components/ball.png" +dest_files=["res://.godot/imported/ball.png-57cd971cdf854909bbbc0632a791b372.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/game_elements/props/repellable_ball/components/repellable_ball.gd b/scenes/game_elements/props/repellable_ball/components/repellable_ball.gd new file mode 100644 index 0000000000..ee7f8188f4 --- /dev/null +++ b/scenes/game_elements/props/repellable_ball/components/repellable_ball.gd @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends RigidBody2D + + +func got_repelled(direction: Vector2) -> void: + var hit_vector: Vector2 = direction * 300.0 + linear_velocity = Vector2.ZERO + angular_velocity = 10.0 * sign(direction.x) + apply_impulse(hit_vector) diff --git a/scenes/game_elements/props/repellable_ball/components/repellable_ball.gd.uid b/scenes/game_elements/props/repellable_ball/components/repellable_ball.gd.uid new file mode 100644 index 0000000000..cc9569d288 --- /dev/null +++ b/scenes/game_elements/props/repellable_ball/components/repellable_ball.gd.uid @@ -0,0 +1 @@ +uid://cc3hmrxspu10y diff --git a/scenes/game_elements/props/repellable_ball/repellable_ball.tscn b/scenes/game_elements/props/repellable_ball/repellable_ball.tscn new file mode 100644 index 0000000000..36831f32ee --- /dev/null +++ b/scenes/game_elements/props/repellable_ball/repellable_ball.tscn @@ -0,0 +1,68 @@ +[gd_scene format=3 uid="uid://w50y4sa4xay2"] + +[ext_resource type="Texture2D" uid="uid://1qo8s4w7n11i" path="res://scenes/game_elements/props/repellable_ball/components/ball-shadow.png" id="1_du84j"] +[ext_resource type="Texture2D" uid="uid://c4qa5xnao47wk" path="res://scenes/game_elements/props/repellable_ball/components/ball.png" id="2_x354y"] +[ext_resource type="Texture2D" uid="uid://dpr2frn4lct3x" path="res://scenes/game_elements/props/repellable_ball/components/ball-shading.png" id="3_x354y"] +[ext_resource type="Script" uid="uid://cc3hmrxspu10y" path="res://scenes/game_elements/props/repellable_ball/components/repellable_ball.gd" id="4_x354y"] + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_jquq1"] +friction = 0.5 +bounce = 0.8 + +[sub_resource type="CircleShape2D" id="CircleShape2D_72ys2"] +radius = 32.0 + +[node name="RepellableBall" type="Node2D" unique_id=916389317] +editor_description = "A repellable ball. + +RemoteTransform2D nodes are used to fake the top-down perspective in this ball: +- One RemoteTransform2D transforms the assets position. +- Another RemoteTransform2D transforms the rotation of the sprite leaving the shading and shadow sprites unrotated. + +When the RigidBody2D is repelled, an impulse is applied." +y_sort_enabled = true + +[node name="BallAnchor" type="Node2D" parent="." unique_id=508543928] +position = Vector2(-1.1920928e-07, -1.9073485e-06) + +[node name="BallShadow" type="Sprite2D" parent="BallAnchor" unique_id=1589712964] +position = Vector2(0, -17) +texture = ExtResource("1_du84j") + +[node name="BallSprite" type="Sprite2D" parent="BallAnchor" unique_id=1799532476] +position = Vector2(0, -17) +texture = ExtResource("2_x354y") + +[node name="BallShading" type="Sprite2D" parent="BallAnchor" unique_id=1629171296] +position = Vector2(0, -17) +texture = ExtResource("3_x354y") + +[node name="RepellableBall" type="RigidBody2D" parent="." unique_id=1170135240] +scale = Vector2(0.99999994, 0.99999994) +collision_layer = 256 +collision_mask = 787 +mass = 0.1 +physics_material_override = SubResource("PhysicsMaterial_jquq1") +continuous_cd = 1 +linear_damp = 10.0 +angular_damp = 2.0 +script = ExtResource("4_x354y") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="RepellableBall" unique_id=1226352204] +rotation = -1.5707964 +shape = SubResource("CircleShape2D_72ys2") +debug_color = Color(0.9570816, 1.0588765e-06, 0.5370912, 0.41960785) + +[node name="RemoteTransform2D" type="RemoteTransform2D" parent="RepellableBall" unique_id=884674732] +position = Vector2(-1.1920929e-07, -1.9073486e-06) +scale = Vector2(0.18770815, 0.18770815) +remote_path = NodePath("../../BallAnchor") +update_rotation = false +update_scale = false + +[node name="RemoteTransform2D2" type="RemoteTransform2D" parent="RepellableBall" unique_id=1732009559] +position = Vector2(-1.1920929e-07, -1.9073486e-06) +scale = Vector2(0.18770815, 0.18770815) +remote_path = NodePath("../../BallAnchor/BallSprite") +update_position = false +update_scale = false diff --git a/scenes/game_elements/props/repellable_box/components/repellable_box.gd b/scenes/game_elements/props/repellable_box/components/repellable_box.gd new file mode 100644 index 0000000000..41ddbe367a --- /dev/null +++ b/scenes/game_elements/props/repellable_box/components/repellable_box.gd @@ -0,0 +1,67 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends AnimatableBody2D + +const NEIGHBORS_FOR_AXIS: Dictionary[Vector2i, TileSet.CellNeighbor] = { + Vector2i.DOWN: TileSet.CELL_NEIGHBOR_BOTTOM_SIDE, + Vector2i.LEFT: TileSet.CELL_NEIGHBOR_LEFT_SIDE, + Vector2i.UP: TileSet.CELL_NEIGHBOR_TOP_SIDE, + Vector2i.RIGHT: TileSet.CELL_NEIGHBOR_RIGHT_SIDE, +} + +@export var constrain_layer: TileMapLayer + +var tween: Tween + +@onready var shaker: Shaker = %Shaker + + +func global_position_to_tile_coordinate(global_pos: Vector2) -> Vector2i: + return constrain_layer.local_to_map(constrain_layer.to_local(global_pos)) + + +func tile_coordinate_to_global_position(coord: Vector2i) -> Vector2: + return constrain_layer.to_global(constrain_layer.map_to_local(coord)) + + +func _ready() -> void: + # Put this object on the grid: + var coord := global_position_to_tile_coordinate(global_position) + global_position = tile_coordinate_to_global_position(coord) + + +func get_closest_axis(vector: Vector2) -> Vector2i: + if abs(vector.x) > abs(vector.y): + # Closer to Horizontal (X-axis) + return Vector2i(sign(vector.x), 0) + + # Closer to Vertical (Y-axis) + return Vector2i(0, sign(vector.y)) + + +func got_repelled(direction: Vector2) -> void: + var axis := get_closest_axis(direction) + if axis == Vector2i.ZERO: + shaker.shake() + return + + var neighbor := NEIGHBORS_FOR_AXIS[axis] + var coord := global_position_to_tile_coordinate(global_position) + assert(constrain_layer.get_cell_tile_data(coord) != null) + var new_coord := constrain_layer.get_neighbor_cell(coord, neighbor) + var data := constrain_layer.get_cell_tile_data(new_coord) + + if not data: + shaker.shake() + return + + if tween: + if tween.is_running(): + return + tween.kill() + + tween = create_tween() + tween.set_ease(Tween.EASE_OUT) + # Assuming that the tile size is square: + var new_position := position + Vector2(axis) * constrain_layer.tile_set.tile_size.x + tween.tween_property(self, "position", new_position, .2) diff --git a/scenes/game_elements/props/repellable_box/components/repellable_box.gd.uid b/scenes/game_elements/props/repellable_box/components/repellable_box.gd.uid new file mode 100644 index 0000000000..d2e3a9a7a0 --- /dev/null +++ b/scenes/game_elements/props/repellable_box/components/repellable_box.gd.uid @@ -0,0 +1 @@ +uid://c334l8qftb4fy diff --git a/scenes/game_elements/props/repellable_box/repellable_box.tscn b/scenes/game_elements/props/repellable_box/repellable_box.tscn new file mode 100644 index 0000000000..63e7a607c8 --- /dev/null +++ b/scenes/game_elements/props/repellable_box/repellable_box.tscn @@ -0,0 +1,51 @@ +[gd_scene format=3 uid="uid://dqo4d6mp4hwhi"] + +[ext_resource type="Script" uid="uid://c334l8qftb4fy" path="res://scenes/game_elements/props/repellable_box/components/repellable_box.gd" id="1_c0tix"] +[ext_resource type="Texture2D" uid="uid://c7oht7wudd8wa" path="res://assets/first_party/tiles/Cliff_Tiles.png" id="2_c0tix"] +[ext_resource type="Texture2D" uid="uid://dslom0xbe1if7" path="res://assets/third_party/tiny-swords/Terrain/Ground/Shadows.png" id="2_sbite"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="3_2i1pw"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_bu3x1"] +atlas = ExtResource("2_c0tix") +region = Rect2(192, 256, 64, 128) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_8dti7"] +size = Vector2(64, 64) + +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_sbite"] +polygon = PackedVector2Array(-32, 32, 32, 32, 32, -64, -32, -64) + +[node name="RepellableBox" type="AnimatableBody2D" unique_id=1805651676] +editor_description = "A repellable box that moves in a fixed grid. + +This is an AnimatableBody2D so it can move in the 64x64 tiles grid (using a Tweener for animating the position). + +It needs a TileMapLayer and it is constrained to the painted tiles. + + But also it doesn't collide with other bodies so it doesn't stop!" +collision_layer = 768 +collision_mask = 531 +script = ExtResource("1_c0tix") + +[node name="Sprite2D2" type="Sprite2D" parent="." unique_id=1393129317] +texture = ExtResource("2_sbite") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=898668959] +position = Vector2(0, -32) +texture = SubResource("AtlasTexture_bu3x1") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=363689712] +rotation = -1.5707964 +shape = SubResource("RectangleShape2D_8dti7") + +[node name="Shaker" type="Node2D" parent="." unique_id=103380831 node_paths=PackedStringArray("target")] +unique_name_in_owner = true +script = ExtResource("3_2i1pw") +target = NodePath("..") +shake_intensity = 60.0 +duration = 0.5 +frequency = 30.0 +metadata/_custom_type_script = "uid://dunsvrhq42214" + +[node name="LightOccluder2D" type="LightOccluder2D" parent="." unique_id=2018120731] +occluder = SubResource("OccluderPolygon2D_sbite") diff --git a/scenes/game_elements/props/repellable_lever/components/repellable_lever.gd b/scenes/game_elements/props/repellable_lever/components/repellable_lever.gd new file mode 100644 index 0000000000..f9a66d86de --- /dev/null +++ b/scenes/game_elements/props/repellable_lever/components/repellable_lever.gd @@ -0,0 +1,59 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends StaticBody2D + +## Emitted when the scene starts, indicating the initial state of this lever. +signal initialized(satisfied: bool) + +## Emitted when the lever state changes. +signal toggled(is_on: bool) + +# Note: Changing the value of "is_on" won't emit a signal. To do that, use "toggle" +@export var is_on: bool = false: + set(new_val): + is_on = new_val + update_appearance() + +# Toggles can be connected via targets (simple) or via signal (using the toggled signal) +@export var targets: Array[Toggleable] + +@onready var lever_sprite: Sprite2D = %LeverSprite +@onready var shaker: Shaker = %Shaker + + +func update_appearance() -> void: + if not is_node_ready(): + return + lever_sprite.frame = 1 if is_on else 0 + + +func _ready() -> void: + _connect_targets() + + # To ensure the targets are ready, we do a "call_deferred" + _initialize_toggle_state.call_deferred() + + +func _initialize_toggle_state() -> void: + initialized.emit(is_on) + + +func _connect_targets() -> void: + for target: Toggleable in targets: + initialized.connect(target.initialize_with_value) + toggled.connect(target.set_toggled) + + +func got_repelled(direction: Vector2) -> void: + var sign_x := signf(direction.x) + if sign_x == 1 and not is_on: + toggle() + elif sign_x == -1 and is_on: + toggle() + else: + shaker.shake() + + +func toggle(new_val: bool = not is_on) -> void: + is_on = new_val + toggled.emit(is_on) diff --git a/scenes/game_elements/props/repellable_lever/components/repellable_lever.gd.uid b/scenes/game_elements/props/repellable_lever/components/repellable_lever.gd.uid new file mode 100644 index 0000000000..1742ec577b --- /dev/null +++ b/scenes/game_elements/props/repellable_lever/components/repellable_lever.gd.uid @@ -0,0 +1 @@ +uid://canlrqbmjwygh diff --git a/scenes/game_elements/props/repellable_lever/repellable_lever.tscn b/scenes/game_elements/props/repellable_lever/repellable_lever.tscn new file mode 100644 index 0000000000..44211ecd77 --- /dev/null +++ b/scenes/game_elements/props/repellable_lever/repellable_lever.tscn @@ -0,0 +1,34 @@ +[gd_scene format=3 uid="uid://cuu65vogubwxd"] + +[ext_resource type="Texture2D" uid="uid://uy2acspf6apo" path="res://scenes/game_elements/props/lever/components/Lever.png" id="1_qgekw"] +[ext_resource type="Script" uid="uid://canlrqbmjwygh" path="res://scenes/game_elements/props/repellable_lever/components/repellable_lever.gd" id="1_retxg"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="2_retxg"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_p2k53"] +height = 58.0 + +[node name="RepellableLever" type="StaticBody2D" unique_id=37452001] +editor_description = "A repellable lever. + +It can be switched in the horizontal direction that's being repelled. It will shake when the direction is the same as the lever, indicating that it couldn't be switched from there." +collision_layer = 768 +collision_mask = 0 +script = ExtResource("1_retxg") + +[node name="LeverSprite" type="Sprite2D" parent="." unique_id=2043405312] +unique_name_in_owner = true +position = Vector2(0, -10) +texture = ExtResource("1_qgekw") +hframes = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1984459816] +rotation = -1.5707964 +shape = SubResource("CapsuleShape2D_p2k53") + +[node name="Shaker" type="Node2D" parent="." unique_id=1105059859 node_paths=PackedStringArray("target")] +unique_name_in_owner = true +script = ExtResource("2_retxg") +target = NodePath("..") +duration = 0.5 +frequency = 30.0 +metadata/_custom_type_script = "uid://dunsvrhq42214" diff --git a/scenes/game_elements/props/sequence_puzzle_hint_sign/sequence_puzzle_hint_sign.tscn b/scenes/game_elements/props/sequence_puzzle_hint_sign/sequence_puzzle_hint_sign.tscn index ba325ffe48..d403e3bd80 100644 --- a/scenes/game_elements/props/sequence_puzzle_hint_sign/sequence_puzzle_hint_sign.tscn +++ b/scenes/game_elements/props/sequence_puzzle_hint_sign/sequence_puzzle_hint_sign.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://dsowa7f2l478a" path="res://scenes/game_elements/props/sequence_puzzle_hint_sign/components/sequence_puzzle_hint_sign.gd" id="1_4621y"] [ext_resource type="SpriteFrames" uid="uid://b5pj1pt7r6hdg" path="res://scenes/quests/template_quests/NO_EDIT/3_NO_EDIT_sequence_puzzle/NO_EDIT_sign.tres" id="2_1po6h"] -[ext_resource type="PackedScene" uid="uid://dutgnbiy7xalb" path="res://scenes/game_elements/props/interact_area/interact_area.tscn" id="5_1po6h"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_oa8ov"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_qkb0b"] radius = 7.85715 @@ -22,7 +22,7 @@ position = Vector2(0, -57) sprite_frames = ExtResource("2_1po6h") animation = &"idle" autoplay = "idle" -frame_progress = 0.75323665 +frame_progress = 0.3351486 [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1384790841] position = Vector2(0, -2) @@ -31,12 +31,15 @@ scale = Vector2(1.4, 1) shape = SubResource("CapsuleShape2D_qkb0b") debug_color = Color(0.994024, 0, 0.22864, 0.42) -[node name="InteractArea" parent="." unique_id=1306680899 instance=ExtResource("5_1po6h")] +[node name="InteractArea" type="Area2D" parent="." unique_id=1306680899] unique_name_in_owner = true position = Vector2(-2, 1) collision_layer = 0 +collision_mask = 0 +script = ExtResource("3_oa8ov") disabled = true action = "Examine" +metadata/_custom_type_script = "uid://du8wfijr35r35" [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=1281208512] position = Vector2(2, 0) diff --git a/scenes/game_elements/props/sequence_puzzle_object/components/sequence_puzzle_object.gd b/scenes/game_elements/props/sequence_puzzle_object/components/sequence_puzzle_object.gd index a65df90ca3..33051aece7 100644 --- a/scenes/game_elements/props/sequence_puzzle_object/components/sequence_puzzle_object.gd +++ b/scenes/game_elements/props/sequence_puzzle_object/components/sequence_puzzle_object.gd @@ -19,6 +19,12 @@ const REQUIRED_ANIMATIONS: Array[StringName] = [&"default", &"struck"] @export var sprite_frames: SpriteFrames = DEFAULT_SPRITE_FRAMES: set = _set_sprite_frames +## Color to apply to the object's sprites. Use this rather than +## [Node2D.modulate] to avoid tinting any other visible children of this node, +## such as particles. +@export var sprite_modulate: Color = Color.WHITE: + set = _set_sprite_modulate + ## Sound to play when the player strikes this object. @export var audio_stream: AudioStream @@ -44,6 +50,12 @@ func _set_sprite_frames(new_sprite_frames: SpriteFrames) -> void: update_configuration_warnings() +func _set_sprite_modulate(new_value: Color) -> void: + sprite_modulate = new_value + if animated_sprite: + animated_sprite.modulate = new_value + + func _get_configuration_warnings() -> PackedStringArray: var warnings: Array = [] for animation in REQUIRED_ANIMATIONS: @@ -54,6 +66,7 @@ func _get_configuration_warnings() -> PackedStringArray: func _ready() -> void: _set_sprite_frames(sprite_frames) + _set_sprite_modulate(sprite_modulate) audio_stream_player_2d.stream = audio_stream diff --git a/scenes/game_elements/props/sequence_puzzle_object/sequence_puzzle_object.tscn b/scenes/game_elements/props/sequence_puzzle_object/sequence_puzzle_object.tscn index 7b715b8468..c5d5679bcf 100644 --- a/scenes/game_elements/props/sequence_puzzle_object/sequence_puzzle_object.tscn +++ b/scenes/game_elements/props/sequence_puzzle_object/sequence_puzzle_object.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://bjl6cydoln71k" path="res://scenes/game_elements/props/sequence_puzzle_object/components/sequence_puzzle_object.gd" id="1_kw7av"] [ext_resource type="SpriteFrames" uid="uid://b41l3fs3yj2fc" path="res://scenes/quests/template_quests/NO_EDIT/3_NO_EDIT_sequence_puzzle/NO_EDIT_object.tres" id="2_cltuv"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_55nmp"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_55nmp"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_kw7av"] height = 46.0 @@ -25,12 +25,12 @@ position = Vector2(0, -2) rotation = 1.5708 shape = SubResource("CapsuleShape2D_kw7av") -[node name="InteractArea" type="Area2D" parent="." unique_id=412224390] +[node name="InteractArea" type="Area2D" parent="." unique_id=412224390 node_paths=PackedStringArray("marker")] unique_name_in_owner = true collision_layer = 32 collision_mask = 0 script = ExtResource("3_55nmp") -interact_label_position = Vector2(0, 30) +marker = NodePath("Marker") action = "Tap" [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=1667228689] @@ -38,6 +38,9 @@ position = Vector2(0, -16) shape = SubResource("RectangleShape2D_kw7av") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=858904951] +position = Vector2(0, -64) + [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="." unique_id=558184317] unique_name_in_owner = true bus = &"SFX" diff --git a/scenes/game_elements/props/spawn_point/components/spawn_point.gd b/scenes/game_elements/props/spawn_point/components/spawn_point.gd index 1ab9421e5f..6cad7ab6b3 100644 --- a/scenes/game_elements/props/spawn_point/components/spawn_point.gd +++ b/scenes/game_elements/props/spawn_point/components/spawn_point.gd @@ -4,6 +4,12 @@ class_name SpawnPoint extends Marker2D +## Emitted after the player position has been changed. +## [br][br] +## Level scenes can use this signal to behave differently depending on +## which SpawnPoint was used (or if no SpawnPoint at all was used). +signal player_teleported + @export var look_at_side_on_spawn: Enums.LookAtSide = Enums.LookAtSide.UNSPECIFIED @@ -24,3 +30,5 @@ func move_player_to_self_position(smooth_camera: bool = false) -> void: if is_instance_valid(player): player.teleport_to(self.global_position, smooth_camera, look_at_side_on_spawn) + + player_teleported.emit() diff --git a/scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd b/scenes/game_elements/props/teleporter/teleporter.gd similarity index 93% rename from scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd rename to scenes/game_elements/props/teleporter/teleporter.gd index 40c38f4f76..271b85fa51 100644 --- a/scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd +++ b/scenes/game_elements/props/teleporter/teleporter.gd @@ -56,7 +56,8 @@ func _ready() -> void: func _on_body_entered(_body: PhysicsBody2D) -> void: - if next_scene and next_scene != get_tree().current_scene.scene_file_path: + var next_scene_path := _get_next_scene_path() + if next_scene_path and next_scene_path != get_tree().current_scene.scene_file_path: # We are using call_deferred here because removing nodes with # collisions during a callback caused by a collision might cause # undesired behavior. @@ -86,10 +87,7 @@ func _teleport_to_spawn_point(spawn_point: SpawnPoint) -> void: func _get_next_scene_path() -> String: - if next_scene.begins_with("uid"): - return ResourceUID.get_id_path(ResourceUID.text_to_id(next_scene)) - - return next_scene + return ResourceUID.ensure_path(next_scene) if next_scene else "" func _update_available_spawn_points() -> void: @@ -97,8 +95,7 @@ func _update_available_spawn_points() -> void: return var next_scene_path: String = _get_next_scene_path() - - if not next_scene or next_scene_path == get_tree().edited_scene_root.scene_file_path: + if not next_scene_path or next_scene_path == get_tree().edited_scene_root.scene_file_path: var spawn_points := get_tree().get_nodes_in_group("spawn_point") _available_spawn_points.assign( spawn_points.map(func(spawn_point: Node) -> String: return get_path_to(spawn_point)) diff --git a/scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd.uid b/scenes/game_elements/props/teleporter/teleporter.gd.uid similarity index 100% rename from scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd.uid rename to scenes/game_elements/props/teleporter/teleporter.gd.uid diff --git a/scenes/game_elements/props/teleporter/teleporter/teleporter.tscn b/scenes/game_elements/props/teleporter/teleporter/teleporter.tscn deleted file mode 100644 index e868a31027..0000000000 --- a/scenes/game_elements/props/teleporter/teleporter/teleporter.tscn +++ /dev/null @@ -1,7 +0,0 @@ -[gd_scene format=3 uid="uid://4u7dloafx55f"] - -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="1_sfgt4"] - -[node name="Teleporter" type="Area2D" unique_id=812046722] -collision_layer = 4 -script = ExtResource("1_sfgt4") diff --git a/scenes/game_elements/props/tree/components/tree.aseprite b/scenes/game_elements/props/tree/components/tree.aseprite new file mode 100644 index 0000000000..4986542bb9 --- /dev/null +++ b/scenes/game_elements/props/tree/components/tree.aseprite @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79018655dfae5363cc3741a75d7366265ab315838c65157ce53bd8991c077750 +size 147764 diff --git a/scenes/game_elements/props/tree/components/tree_void_affected.gd b/scenes/game_elements/props/tree/components/tree_void_affected.gd new file mode 100644 index 0000000000..ea3454f369 --- /dev/null +++ b/scenes/game_elements/props/tree/components/tree_void_affected.gd @@ -0,0 +1,62 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +extends Node2D + +enum TreetopVariant { GREEN, BLUE, PURPLE, RED, YELLOW } + +const TREETOP_SPRITEFRAMES_PER_VARIANT: Dictionary[TreetopVariant, SpriteFrames] = { + TreetopVariant.GREEN: preload("uid://d2i5boaxe3n3g"), + TreetopVariant.BLUE: preload("uid://cthoo4vcj8la3"), + TreetopVariant.PURPLE: preload("uid://babag0ug8ur4d"), + TreetopVariant.RED: preload("uid://f5v8kvfopaxt"), + TreetopVariant.YELLOW: preload("uid://pw7ol6ry6wvi"), +} + +const TRUNK_SPRITEFRAMES_PER_VARIANT: Dictionary[int, SpriteFrames] = { + 0: preload("uid://e0qx3m0561sr"), + 1: preload("uid://euk5lvoroc5"), + 2: preload("uid://i1u6og25swna"), +} + +@export var treetop_variant: TreetopVariant = TreetopVariant.GREEN: + set = _set_treetop_variant + +@export_range(0, 2) var trunk_variant: int = 0: + set = _set_trunk_variant + +@onready var treetop_sprite: AnimatedSprite2D = %TreetopSprite +@onready var trunk_sprite: AnimatedSprite2D = %TrunkSprite + + +func _set_treetop_variant(new_treetop_variant: TreetopVariant) -> void: + treetop_variant = new_treetop_variant + if not is_node_ready(): + return + treetop_sprite.sprite_frames = TREETOP_SPRITEFRAMES_PER_VARIANT[treetop_variant] + treetop_sprite.play(treetop_sprite.animation) + + +func _set_trunk_variant(new_trunk_variant: int) -> void: + trunk_variant = new_trunk_variant + if not is_node_ready(): + return + trunk_sprite.sprite_frames = TRUNK_SPRITEFRAMES_PER_VARIANT[trunk_variant] + trunk_sprite.play(trunk_sprite.animation) + + +func _ready() -> void: + if Engine.is_editor_hint() and get_tree().edited_scene_root == self: + # Don't randomise scale when editing tree scene itself + scale = Vector2.ONE + + _set_treetop_variant(treetop_variant) + _set_trunk_variant(trunk_variant) + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_SCENE_INSTANTIATED: + var y_scale := randf_range(0.8, 1.2) + var x_scale := y_scale * randf_range(0.9, 1.1) + scale = Vector2(x_scale, y_scale) diff --git a/scenes/game_elements/props/tree/components/tree_void_affected.gd.uid b/scenes/game_elements/props/tree/components/tree_void_affected.gd.uid new file mode 100644 index 0000000000..7c198d8577 --- /dev/null +++ b/scenes/game_elements/props/tree/components/tree_void_affected.gd.uid @@ -0,0 +1 @@ +uid://cjbi2v65qfsmg diff --git a/scenes/game_elements/props/tree/components/treetop_blue.png b/scenes/game_elements/props/tree/components/treetop_blue.png new file mode 100644 index 0000000000..f2f88c0d5a --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfce73f2e619fb301c77dd7c72255beb971b321f68d558ae3927870517a2f96f +size 18309 diff --git a/scenes/game_elements/props/tree/components/treetop_blue.png.import b/scenes/game_elements/props/tree/components/treetop_blue.png.import new file mode 100644 index 0000000000..81b4f453f3 --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_blue.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dl5ilyn2c88iu" +path="res://.godot/imported/treetop_blue.png-0bd03549ba1b94df849c63a2ea7a237a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/tree/components/treetop_blue.png" +dest_files=["res://.godot/imported/treetop_blue.png-0bd03549ba1b94df849c63a2ea7a237a.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/game_elements/props/tree/components/treetop_green.png b/scenes/game_elements/props/tree/components/treetop_green.png new file mode 100644 index 0000000000..1d2b3301f8 --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_green.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8e7f9fa3afae35fd6e41f7662cabbd527dd1dc918cba16bf3cd9f51afb88691 +size 18378 diff --git a/scenes/game_elements/props/tree/components/treetop_green.png.import b/scenes/game_elements/props/tree/components/treetop_green.png.import new file mode 100644 index 0000000000..fe55320064 --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_green.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djrul4b0y0837" +path="res://.godot/imported/treetop_green.png-507949ef38a46c085a942f0cf89deb9b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/tree/components/treetop_green.png" +dest_files=["res://.godot/imported/treetop_green.png-507949ef38a46c085a942f0cf89deb9b.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/game_elements/props/tree/components/treetop_purple.png b/scenes/game_elements/props/tree/components/treetop_purple.png new file mode 100644 index 0000000000..5b66d1767d --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_purple.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e4abd47cb73b5d5825e6ec644bd29167a0053c6c6a87cdf70877ba24aa6383e +size 18138 diff --git a/scenes/game_elements/props/tree/components/treetop_purple.png.import b/scenes/game_elements/props/tree/components/treetop_purple.png.import new file mode 100644 index 0000000000..bf585bf048 --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_purple.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgbcwqfw3x3m6" +path="res://.godot/imported/treetop_purple.png-4d40ce9c857e667e2fbf6f827ffe3504.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/tree/components/treetop_purple.png" +dest_files=["res://.godot/imported/treetop_purple.png-4d40ce9c857e667e2fbf6f827ffe3504.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/game_elements/props/tree/components/treetop_red.png b/scenes/game_elements/props/tree/components/treetop_red.png new file mode 100644 index 0000000000..edc291b482 --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_red.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15b4e9ef635ce2b3051664ec51ca9f7dd755ffd1aa87ba73522c2c8349fc85eb +size 18235 diff --git a/scenes/game_elements/props/tree/components/treetop_red.png.import b/scenes/game_elements/props/tree/components/treetop_red.png.import new file mode 100644 index 0000000000..74c913f50c --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_red.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://duydicn16ilqu" +path="res://.godot/imported/treetop_red.png-18552b8085152c150c01853864cd053c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/tree/components/treetop_red.png" +dest_files=["res://.godot/imported/treetop_red.png-18552b8085152c150c01853864cd053c.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/game_elements/props/tree/components/treetop_spriteframes_blue.tres b/scenes/game_elements/props/tree/components/treetop_spriteframes_blue.tres new file mode 100644 index 0000000000..dfb2cd7553 --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_spriteframes_blue.tres @@ -0,0 +1,53 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://cthoo4vcj8la3"] + +[ext_resource type="Texture2D" uid="uid://dl5ilyn2c88iu" path="res://scenes/game_elements/props/tree/components/treetop_blue.png" id="1_y3vna"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_45n3j"] +atlas = ExtResource("1_y3vna") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2pgeb"] +atlas = ExtResource("1_y3vna") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_jian0"] +atlas = ExtResource("1_y3vna") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_b0yrp"] +atlas = ExtResource("1_y3vna") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gisfy"] +atlas = ExtResource("1_y3vna") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1qkrb"] +atlas = ExtResource("1_y3vna") +region = Rect2(960, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_45n3j") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2pgeb") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_jian0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_b0yrp") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gisfy") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1qkrb") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/tree/components/treetop_spriteframes_green.tres b/scenes/game_elements/props/tree/components/treetop_spriteframes_green.tres new file mode 100644 index 0000000000..0ce06bd934 --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_spriteframes_green.tres @@ -0,0 +1,53 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://d2i5boaxe3n3g"] + +[ext_resource type="Texture2D" uid="uid://djrul4b0y0837" path="res://scenes/game_elements/props/tree/components/treetop_green.png" id="1_1tupj"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_kc8y8"] +atlas = ExtResource("1_1tupj") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7c7ql"] +atlas = ExtResource("1_1tupj") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_m8e3n"] +atlas = ExtResource("1_1tupj") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_egki8"] +atlas = ExtResource("1_1tupj") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_agt6y"] +atlas = ExtResource("1_1tupj") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_sjlh1"] +atlas = ExtResource("1_1tupj") +region = Rect2(960, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_kc8y8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7c7ql") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_m8e3n") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_egki8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_agt6y") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_sjlh1") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/tree/components/treetop_spriteframes_purple.tres b/scenes/game_elements/props/tree/components/treetop_spriteframes_purple.tres new file mode 100644 index 0000000000..23e54a5528 --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_spriteframes_purple.tres @@ -0,0 +1,53 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://babag0ug8ur4d"] + +[ext_resource type="Texture2D" uid="uid://dgbcwqfw3x3m6" path="res://scenes/game_elements/props/tree/components/treetop_purple.png" id="1_s3kbm"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_7e83w"] +atlas = ExtResource("1_s3kbm") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_uhpnx"] +atlas = ExtResource("1_s3kbm") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pryha"] +atlas = ExtResource("1_s3kbm") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_begqa"] +atlas = ExtResource("1_s3kbm") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_b80m2"] +atlas = ExtResource("1_s3kbm") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_340eh"] +atlas = ExtResource("1_s3kbm") +region = Rect2(960, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_7e83w") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_uhpnx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pryha") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_begqa") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_b80m2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_340eh") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/tree/components/treetop_spriteframes_red.tres b/scenes/game_elements/props/tree/components/treetop_spriteframes_red.tres new file mode 100644 index 0000000000..925f3e3ca6 --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_spriteframes_red.tres @@ -0,0 +1,53 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://f5v8kvfopaxt"] + +[ext_resource type="Texture2D" uid="uid://duydicn16ilqu" path="res://scenes/game_elements/props/tree/components/treetop_red.png" id="1_7eaf7"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_l3tvc"] +atlas = ExtResource("1_7eaf7") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0dyw0"] +atlas = ExtResource("1_7eaf7") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hi85s"] +atlas = ExtResource("1_7eaf7") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_rduwk"] +atlas = ExtResource("1_7eaf7") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_p1eb7"] +atlas = ExtResource("1_7eaf7") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_m4cn6"] +atlas = ExtResource("1_7eaf7") +region = Rect2(960, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_l3tvc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0dyw0") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hi85s") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_rduwk") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_p1eb7") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_m4cn6") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/tree/components/treetop_spriteframes_yellow.tres b/scenes/game_elements/props/tree/components/treetop_spriteframes_yellow.tres new file mode 100644 index 0000000000..518162bfa9 --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_spriteframes_yellow.tres @@ -0,0 +1,53 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://pw7ol6ry6wvi"] + +[ext_resource type="Texture2D" uid="uid://gdp7c31fdn3w" path="res://scenes/game_elements/props/tree/components/treetop_yellow.png" id="1_c1dwh"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_h4ci8"] +atlas = ExtResource("1_c1dwh") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2k4kx"] +atlas = ExtResource("1_c1dwh") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_it8jr"] +atlas = ExtResource("1_c1dwh") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ysla1"] +atlas = ExtResource("1_c1dwh") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2g5bi"] +atlas = ExtResource("1_c1dwh") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_81ky2"] +atlas = ExtResource("1_c1dwh") +region = Rect2(960, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_h4ci8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2k4kx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_it8jr") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ysla1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2g5bi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_81ky2") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/tree/components/treetop_yellow.png b/scenes/game_elements/props/tree/components/treetop_yellow.png new file mode 100644 index 0000000000..792588c5ea --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_yellow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65de5a90a172fa02cc589786c2e5449e1f133eb3c3d5cc9a4dbdcf444f238f6b +size 18232 diff --git a/scenes/game_elements/props/tree/components/treetop_yellow.png.import b/scenes/game_elements/props/tree/components/treetop_yellow.png.import new file mode 100644 index 0000000000..dddad62bef --- /dev/null +++ b/scenes/game_elements/props/tree/components/treetop_yellow.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://gdp7c31fdn3w" +path="res://.godot/imported/treetop_yellow.png-f02b21ce311632929a6c828eb0b519c8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/tree/components/treetop_yellow.png" +dest_files=["res://.godot/imported/treetop_yellow.png-f02b21ce311632929a6c828eb0b519c8.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/game_elements/props/tree/components/trunk.png b/scenes/game_elements/props/tree/components/trunk.png new file mode 100644 index 0000000000..762e974a2a --- /dev/null +++ b/scenes/game_elements/props/tree/components/trunk.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc4e61468c4fe5e0f821f984d7bb2160935999aa20d8ada237cd26de15724907 +size 5018 diff --git a/scenes/game_elements/props/tree/components/trunk.png.import b/scenes/game_elements/props/tree/components/trunk.png.import new file mode 100644 index 0000000000..43ba9a1bcb --- /dev/null +++ b/scenes/game_elements/props/tree/components/trunk.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpgnqhahadfo8" +path="res://.godot/imported/trunk.png-ef2854419364148ea47169d533da698a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/tree/components/trunk.png" +dest_files=["res://.godot/imported/trunk.png-ef2854419364148ea47169d533da698a.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/game_elements/props/tree/components/trunk_spriteframes.tres b/scenes/game_elements/props/tree/components/trunk_spriteframes.tres new file mode 100644 index 0000000000..540f1576b5 --- /dev/null +++ b/scenes/game_elements/props/tree/components/trunk_spriteframes.tres @@ -0,0 +1,109 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://e0qx3m0561sr"] + +[ext_resource type="Texture2D" uid="uid://bpgnqhahadfo8" path="res://scenes/game_elements/props/tree/components/trunk.png" id="1_rl0hl"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_sm4gt"] +atlas = ExtResource("1_rl0hl") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_c0ihc"] +atlas = ExtResource("1_rl0hl") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_epyko"] +atlas = ExtResource("1_rl0hl") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_pkvxc"] +atlas = ExtResource("1_rl0hl") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xhsum"] +atlas = ExtResource("1_rl0hl") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_1sibj"] +atlas = ExtResource("1_rl0hl") +region = Rect2(960, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_huy7w"] +atlas = ExtResource("1_rl0hl") +region = Rect2(1152, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_atque"] +atlas = ExtResource("1_rl0hl") +region = Rect2(1344, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8d1a2"] +atlas = ExtResource("1_rl0hl") +region = Rect2(1536, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_12lhc"] +atlas = ExtResource("1_rl0hl") +region = Rect2(1728, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_irl3b"] +atlas = ExtResource("1_rl0hl") +region = Rect2(1920, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_welbq"] +atlas = ExtResource("1_rl0hl") +region = Rect2(2112, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_eb53u"] +atlas = ExtResource("1_rl0hl") +region = Rect2(2304, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4c5hl"] +atlas = ExtResource("1_rl0hl") +region = Rect2(2496, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_sm4gt") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_c0ihc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_epyko") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_pkvxc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xhsum") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_1sibj") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_huy7w") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_atque") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8d1a2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_12lhc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_irl3b") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_welbq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_eb53u") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4c5hl") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/tree/components/trunk_void_affected_01.png b/scenes/game_elements/props/tree/components/trunk_void_affected_01.png new file mode 100644 index 0000000000..b3ba887ea8 --- /dev/null +++ b/scenes/game_elements/props/tree/components/trunk_void_affected_01.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:529b9ec7e3892e2e25b309f33d5b0ecd2df49cb7cf5e4f7473ecb5ec308f3402 +size 8449 diff --git a/scenes/game_elements/props/tree/components/trunk_void_affected_01.png.import b/scenes/game_elements/props/tree/components/trunk_void_affected_01.png.import new file mode 100644 index 0000000000..1c1557c27d --- /dev/null +++ b/scenes/game_elements/props/tree/components/trunk_void_affected_01.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://rgudx6khnpra" +path="res://.godot/imported/trunk_void_affected_01.png-29b6b1ee26e0e75eb9fcd1681d9a9d7b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/tree/components/trunk_void_affected_01.png" +dest_files=["res://.godot/imported/trunk_void_affected_01.png-29b6b1ee26e0e75eb9fcd1681d9a9d7b.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/game_elements/props/tree/components/trunk_void_affected_02.png b/scenes/game_elements/props/tree/components/trunk_void_affected_02.png new file mode 100644 index 0000000000..d5766aaeac --- /dev/null +++ b/scenes/game_elements/props/tree/components/trunk_void_affected_02.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75b1ff0edc09f7407870a7e31132fc134e0a9d77cfa42862efc42f5fcf60e8aa +size 8723 diff --git a/scenes/game_elements/props/tree/components/trunk_void_affected_02.png.import b/scenes/game_elements/props/tree/components/trunk_void_affected_02.png.import new file mode 100644 index 0000000000..4d1ea9bbee --- /dev/null +++ b/scenes/game_elements/props/tree/components/trunk_void_affected_02.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4a8gslponjdq" +path="res://.godot/imported/trunk_void_affected_02.png-4120bae126a54d87bab6ddb504dbf277.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/game_elements/props/tree/components/trunk_void_affected_02.png" +dest_files=["res://.godot/imported/trunk_void_affected_02.png-4120bae126a54d87bab6ddb504dbf277.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/game_elements/props/tree/components/trunk_void_affected_spriteframes_01.tres b/scenes/game_elements/props/tree/components/trunk_void_affected_spriteframes_01.tres new file mode 100644 index 0000000000..b9d7283960 --- /dev/null +++ b/scenes/game_elements/props/tree/components/trunk_void_affected_spriteframes_01.tres @@ -0,0 +1,109 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://euk5lvoroc5"] + +[ext_resource type="Texture2D" uid="uid://rgudx6khnpra" path="res://scenes/game_elements/props/tree/components/trunk_void_affected_01.png" id="1_xh34o"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_xh34o"] +atlas = ExtResource("1_xh34o") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4dr1e"] +atlas = ExtResource("1_xh34o") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wydvd"] +atlas = ExtResource("1_xh34o") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_15tn5"] +atlas = ExtResource("1_xh34o") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_qomc5"] +atlas = ExtResource("1_xh34o") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_d7e83"] +atlas = ExtResource("1_xh34o") +region = Rect2(960, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_sqx64"] +atlas = ExtResource("1_xh34o") +region = Rect2(1152, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_2dcmq"] +atlas = ExtResource("1_xh34o") +region = Rect2(1344, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8tn2m"] +atlas = ExtResource("1_xh34o") +region = Rect2(1536, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xosye"] +atlas = ExtResource("1_xh34o") +region = Rect2(1728, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_gub3n"] +atlas = ExtResource("1_xh34o") +region = Rect2(1920, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_b01s6"] +atlas = ExtResource("1_xh34o") +region = Rect2(2112, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_120ws"] +atlas = ExtResource("1_xh34o") +region = Rect2(2304, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hbtjl"] +atlas = ExtResource("1_xh34o") +region = Rect2(2496, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_xh34o") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4dr1e") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wydvd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_15tn5") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_qomc5") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_d7e83") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_sqx64") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_2dcmq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8tn2m") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xosye") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_gub3n") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_b01s6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_120ws") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hbtjl") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/tree/components/trunk_void_affected_spriteframes_02.tres b/scenes/game_elements/props/tree/components/trunk_void_affected_spriteframes_02.tres new file mode 100644 index 0000000000..d31ddb57a9 --- /dev/null +++ b/scenes/game_elements/props/tree/components/trunk_void_affected_spriteframes_02.tres @@ -0,0 +1,109 @@ +[gd_resource type="SpriteFrames" format=3 uid="uid://i1u6og25swna"] + +[ext_resource type="Texture2D" uid="uid://d4a8gslponjdq" path="res://scenes/game_elements/props/tree/components/trunk_void_affected_02.png" id="1_7ihay"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_7ihay"] +atlas = ExtResource("1_7ihay") +region = Rect2(0, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4vr1a"] +atlas = ExtResource("1_7ihay") +region = Rect2(192, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0m3nd"] +atlas = ExtResource("1_7ihay") +region = Rect2(384, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_u6gmx"] +atlas = ExtResource("1_7ihay") +region = Rect2(576, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_4oak6"] +atlas = ExtResource("1_7ihay") +region = Rect2(768, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_ga2xa"] +atlas = ExtResource("1_7ihay") +region = Rect2(960, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xpm5u"] +atlas = ExtResource("1_7ihay") +region = Rect2(1152, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_hc5so"] +atlas = ExtResource("1_7ihay") +region = Rect2(1344, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_t5jd5"] +atlas = ExtResource("1_7ihay") +region = Rect2(1536, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_888jw"] +atlas = ExtResource("1_7ihay") +region = Rect2(1728, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_lkpyq"] +atlas = ExtResource("1_7ihay") +region = Rect2(1920, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_s6bev"] +atlas = ExtResource("1_7ihay") +region = Rect2(2112, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_n7xfc"] +atlas = ExtResource("1_7ihay") +region = Rect2(2304, 0, 192, 192) + +[sub_resource type="AtlasTexture" id="AtlasTexture_c0l84"] +atlas = ExtResource("1_7ihay") +region = Rect2(2496, 0, 192, 192) + +[resource] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_7ihay") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4vr1a") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0m3nd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_u6gmx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_4oak6") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_ga2xa") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_xpm5u") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_hc5so") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_t5jd5") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_888jw") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_lkpyq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_s6bev") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_n7xfc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_c0l84") +}], +"loop": true, +"name": &"default", +"speed": 10.0 +}] diff --git a/scenes/game_elements/props/tree/tree_void_affected.tscn b/scenes/game_elements/props/tree/tree_void_affected.tscn new file mode 100644 index 0000000000..349a247448 --- /dev/null +++ b/scenes/game_elements/props/tree/tree_void_affected.tscn @@ -0,0 +1,46 @@ +[gd_scene format=3 uid="uid://b7h2j0j6jmigc"] + +[ext_resource type="Script" uid="uid://cjbi2v65qfsmg" path="res://scenes/game_elements/props/tree/components/tree_void_affected.gd" id="1_ybciu"] +[ext_resource type="Material" uid="uid://bmwe2wu7hxepf" path="res://scenes/game_elements/props/tree/components/wind_affected_material.tres" id="3_c0ihc"] +[ext_resource type="SpriteFrames" uid="uid://e0qx3m0561sr" path="res://scenes/game_elements/props/tree/components/trunk_spriteframes.tres" id="3_ybciu"] +[ext_resource type="Script" uid="uid://cms2wqtbxjl1h" path="res://scenes/game_logic/sprite_behaviors/random_frame_sprite_behavior.gd" id="4_epyko"] +[ext_resource type="SpriteFrames" uid="uid://d2i5boaxe3n3g" path="res://scenes/game_elements/props/tree/components/treetop_spriteframes_green.tres" id="5_ybciu"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_d888c"] +radius = 16.0312 + +[node name="TreeVoidAffected" type="Node2D" unique_id=1182216860] +script = ExtResource("1_ybciu") + +[node name="TrunkSprite" type="AnimatedSprite2D" parent="." unique_id=1370076232] +unique_name_in_owner = true +material = ExtResource("3_c0ihc") +position = Vector2(0, -79.7941) +sprite_frames = ExtResource("3_ybciu") +autoplay = "default" + +[node name="RandomFrameSpriteBehavior" type="Node2D" parent="TrunkSprite" unique_id=1292543412 node_paths=PackedStringArray("sprite")] +position = Vector2(0, 79.7941) +script = ExtResource("4_epyko") +sprite = NodePath("..") +metadata/_custom_type_script = "uid://cms2wqtbxjl1h" + +[node name="TreetopSprite" type="AnimatedSprite2D" parent="." unique_id=2072962223] +unique_name_in_owner = true +material = ExtResource("3_c0ihc") +position = Vector2(0, -79.7941) +sprite_frames = ExtResource("5_ybciu") +autoplay = "default" + +[node name="RandomFrameSpriteBehavior" type="Node2D" parent="TreetopSprite" unique_id=212412706 node_paths=PackedStringArray("sprite")] +position = Vector2(0, 79.7941) +script = ExtResource("4_epyko") +sprite = NodePath("..") +metadata/_custom_type_script = "uid://cms2wqtbxjl1h" + +[node name="StaticBody2D" type="StaticBody2D" parent="." unique_id=865260988] +collision_layer = 16 +collision_mask = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D" unique_id=120328842] +shape = SubResource("CircleShape2D_d888c") diff --git a/scenes/game_elements/props/void/components/void_chromakey.gdshader b/scenes/game_elements/props/void/components/void_chromakey.gdshader index 5fb5a83180..e7179556d1 100644 --- a/scenes/game_elements/props/void/components/void_chromakey.gdshader +++ b/scenes/game_elements/props/void/components/void_chromakey.gdshader @@ -5,12 +5,6 @@ */ shader_type canvas_item; -// TODO: Can we get this from SCREEN_PIXEL_SIZE? -/** - * Viewport size. - */ -uniform vec2 resolution = vec2(1920.0, 1080.0); - /** * For best results, use Simplex noise. */ @@ -36,20 +30,16 @@ uniform vec4 chroma_key: source_color = vec4(1.0, 0.0, 0.0, 1.0); */ uniform vec4 background_color: source_color = vec4(0.086, 0.11, 0.18, 1.0); -// The origin is the upper-left corner of the screen and coordinates ranging from (0.0, 0.0) to viewport size. -varying vec2 screen_pos; - varying vec4 modulate; void vertex() { - screen_pos = (CANVAS_MATRIX * MODEL_MATRIX * vec4(VERTEX, 0.0, 1.0)).xy; modulate = COLOR; } void fragment() { if (texture(TEXTURE, UV) == chroma_key) { - vec2 uv = screen_pos / resolution; - uv.x *= resolution.x / resolution.y; + vec2 uv = SCREEN_UV; + uv.x *= SCREEN_PIXEL_SIZE.y / SCREEN_PIXEL_SIZE.x; float stars = 0.0; diff --git a/scenes/game_elements/props/void/void_chromakey_material.tres b/scenes/game_elements/props/void/void_chromakey_material.tres index 6e73680402..5e237e7517 100644 --- a/scenes/game_elements/props/void/void_chromakey_material.tres +++ b/scenes/game_elements/props/void/void_chromakey_material.tres @@ -11,7 +11,6 @@ noise = SubResource("FastNoiseLite_ebh07") [resource] shader = ExtResource("1_nktdb") -shader_parameter/resolution = Vector2(1920, 1080) shader_parameter/noise_texture = SubResource("NoiseTexture2D_bmckr") shader_parameter/sparsity = 20.0 shader_parameter/flicker_rate = 7.0 diff --git a/scenes/game_logic/canvasitem_behaviors/modulate_as_sky_behavior.gd b/scenes/game_logic/canvasitem_behaviors/modulate_as_sky_behavior.gd new file mode 100644 index 0000000000..f077c70c1b --- /dev/null +++ b/scenes/game_logic/canvasitem_behaviors/modulate_as_sky_behavior.gd @@ -0,0 +1,46 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +class_name ModulateAsSkyBehavior +extends Node +## @experimental +## +## Tint the canvas item according to the sky color. + +## The controlled canvas item. +@export var canvas_item: CanvasItem: + set = _set_canvas_item + +var time_and_weather: TimeAndWeather + + +func _enter_tree() -> void: + if not canvas_item and get_parent() is CanvasItem: + canvas_item = get_parent() + + +func _set_canvas_item(new_canvas_item: CanvasItem) -> void: + canvas_item = new_canvas_item + update_configuration_warnings() + + +func _get_configuration_warnings() -> PackedStringArray: + var warnings: PackedStringArray + if not canvas_item: + warnings.append("Canvas item must be set.") + return warnings + + +func _ready() -> void: + if Engine.is_editor_hint(): + set_process(false) + return + time_and_weather = get_tree().current_scene.get_node_or_null("TimeAndWeather") + if not time_and_weather: + process_mode = Node.PROCESS_MODE_DISABLED + + +func _process(_delta: float) -> void: + if not canvas_item: + return + canvas_item.modulate = time_and_weather.get_sky_color() diff --git a/scenes/game_logic/canvasitem_behaviors/modulate_as_sky_behavior.gd.uid b/scenes/game_logic/canvasitem_behaviors/modulate_as_sky_behavior.gd.uid new file mode 100644 index 0000000000..a0645cd108 --- /dev/null +++ b/scenes/game_logic/canvasitem_behaviors/modulate_as_sky_behavior.gd.uid @@ -0,0 +1 @@ +uid://ctko5bdas16ah diff --git a/scenes/game_logic/fill_game_logic.gd b/scenes/game_logic/fill_game_logic.gd index 80ad7583b9..2499d557c1 100644 --- a/scenes/game_logic/fill_game_logic.gd +++ b/scenes/game_logic/fill_game_logic.gd @@ -70,9 +70,4 @@ func _on_barrel_completed() -> void: return get_tree().call_group("throwing_enemy", "remove") get_tree().call_group("projectiles", "remove") - # TODO: Do not change player mode! - # https://github.com/endlessm/threadbare/issues/1375 - var player: Player = get_tree().get_first_node_in_group("player") - if player: - player.mode = Player.Mode.COZY goal_reached.emit() diff --git a/scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd b/scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd new file mode 100644 index 0000000000..c18e24b777 --- /dev/null +++ b/scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd @@ -0,0 +1,95 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +class_name ArtificialLightBehavior +extends Node +## @experimental +## +## Make the light automatically turn OFF during daytime and ON during nighttime, +## according to the game state, for energy-saving and cosmetic reasons. + +## The controlled light. +@export var light: Light2D: + set = _set_light + +## Duration of the fading animations. +## [br][br] +## Although light travels super fast, a less abrupt effect is better to +## avoid affecting gameplay. +@export_range(0.0, 10.0, 0.1, "or_greater", "suffix:s") var fade_duration: float = 1.0 + +## If non-zero, a random delay between zero and this value will be prepended +## to the fading animations. This could add variation to multiple instances +## of the same component, like a house. +@export_range(0.0, 10.0, 0.1, "or_greater", "suffix:s") var random_delay: float = 0.0 + +var initial_energy: float +var tween: Tween + + +func _enter_tree() -> void: + if not light and get_parent() is Light2D: + light = get_parent() + + +func _set_light(new_light: Light2D) -> void: + light = new_light + update_configuration_warnings() + + +func _get_configuration_warnings() -> PackedStringArray: + var warnings: PackedStringArray + if not light: + warnings.append("Light must be set.") + return warnings + + +func _ready() -> void: + if Engine.is_editor_hint(): + return + initial_energy = light.energy + light.visible = GameState.lights_on + light.enabled = GameState.lights_on + GameState.lights_changed.connect(_on_lights_changed) + + +func _on_lights_changed(lights_on: bool, immediate: bool) -> void: + if immediate: + light.visible = lights_on + light.enabled = lights_on + light.energy = initial_energy if lights_on else 0.0 + return + + if lights_on: + fade_in() + else: + fade_out() + + +func fade_in() -> void: + if tween: + tween.kill() + tween = create_tween() + + light.energy = 0 + light.visible = true + light.enabled = true + if random_delay: + tween.tween_interval(randf_range(0, random_delay)) + tween.tween_property(light, "energy", initial_energy, fade_duration) + + +func fade_out() -> void: + if tween: + tween.kill() + tween = create_tween() + + var after_tween := func() -> void: + light.visible = false + light.enabled = false + + light.energy = initial_energy + if random_delay: + tween.tween_interval(randf_range(0, random_delay)) + tween.tween_property(light, "energy", 0, fade_duration) + tween.tween_callback(after_tween) diff --git a/scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd.uid b/scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd.uid new file mode 100644 index 0000000000..67b4c77863 --- /dev/null +++ b/scenes/game_logic/light2d_behaviors/artificial_light_behavior.gd.uid @@ -0,0 +1 @@ +uid://bk52qjv58locq diff --git a/scenes/game_logic/player_mode.gd b/scenes/game_logic/player_mode.gd new file mode 100644 index 0000000000..d7f2772073 --- /dev/null +++ b/scenes/game_logic/player_mode.gd @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +class_name PlayerMode +extends Node +## Set player to a single ability according to a mode. +## +## This is used to maintain the previous player modes behavior +## in the StoryQuests that were created before player abilities were introduced. +## Caution: previously gained abilities will be lost! +## Use player abilities instead. + +## Modes used to enable the single ability, if any. +enum Mode { + ## Player has no abilities. + COZY, + ## Player has ABILITY_A, usually mapped to the "repel" action. + FIGHTING, + ## Player has ABILITY_B, usually mapped to the "grapple" action. + HOOKING, +} + +@export var mode: Mode = Mode.COZY: + set = set_mode + + +func set_mode(new_mode: Mode) -> void: + mode = new_mode + GameState.clear_abilities() + match mode: + Mode.FIGHTING: + GameState.set_ability(Enums.PlayerAbilities.ABILITY_A, true) + Mode.HOOKING: + GameState.set_ability(Enums.PlayerAbilities.ABILITY_B, true) + + +func _ready() -> void: + set_mode(mode) diff --git a/scenes/game_logic/player_mode.gd.uid b/scenes/game_logic/player_mode.gd.uid new file mode 100644 index 0000000000..ef862ea9e9 --- /dev/null +++ b/scenes/game_logic/player_mode.gd.uid @@ -0,0 +1 @@ +uid://pk3ucq7e2eah diff --git a/scenes/game_logic/sprite_behaviors/character_sprite_behavior.gd b/scenes/game_logic/sprite_behaviors/character_sprite_behavior.gd index b31bbbf7f5..f883b8a4fd 100644 --- a/scenes/game_logic/sprite_behaviors/character_sprite_behavior.gd +++ b/scenes/game_logic/sprite_behaviors/character_sprite_behavior.gd @@ -19,6 +19,7 @@ extends BaseSpriteBehavior ## Use this when using more advanced animation through an AnimationPlayer node. @export var play_animations: bool = true +var _previous_character_velocity: Vector2 var _is_character_running: bool = false @@ -48,7 +49,9 @@ func _process(delta: float) -> void: func _process_animations(_delta: float) -> void: if character.velocity.is_zero_approx(): sprite.speed_scale = 1.0 - sprite.play(&"idle") + if not _previous_character_velocity.is_zero_approx(): + sprite.play(&"idle") + sprite.set_frame_and_progress(0, 0.0) else: if _is_character_running: if sprite.sprite_frames.has_animation(&"run"): @@ -56,10 +59,11 @@ func _process_animations(_delta: float) -> void: sprite.play(&"run") else: sprite.speed_scale = 2.0 - sprite.play(&"walk") + sprite.play(&"walk" if sprite.sprite_frames.has_animation(&"walk") else &"idle") else: sprite.speed_scale = 1.0 - sprite.play(&"walk") + sprite.play(&"walk" if sprite.sprite_frames.has_animation(&"walk") else &"idle") + _previous_character_velocity = character.velocity func _notification(what: int) -> void: diff --git a/scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd b/scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd index 2fb6d23749..3695753f9b 100644 --- a/scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd +++ b/scenes/game_logic/sprite_behaviors/random_texture_sprite_behavior.gd @@ -7,22 +7,27 @@ extends BaseSpriteBehavior ## ## Can set a random texture to a sprite. ## -## The picked texture may have offset information. In that case, +## The idle texture filename may have offset information. In that case, ## also set the position of each sub-sprite in the controlled sprite children. const SpriteFramesHelper = preload( "res://addons/sprite_frames_exported_textures/sprite_frames_helper.gd" ) -## The array of textures, from which to pick a random one. -@export var textures: Array[Texture2D] +## The array of spriteframes, from which to pick a random one. +@export var sprite_frames: Array[SpriteFrames] ## Click this button to set a random texture to the sprite. @export_tool_button("Randomize") var randomize_texture_button: Callable = randomize_texture -func _get_offset_from_texture_filename(new_texture: Texture2D) -> Vector2: - var filename: String = new_texture.resource_path.get_file() +func _get_offset_from_spriteframes_filename(new_sprite_frames: SpriteFrames) -> Vector2: + var filename: String + var sprite_frame_filename := new_sprite_frames.resource_path.get_file() + if sprite_frame_filename: + filename = sprite_frame_filename + elif "idle" in new_sprite_frames.get_animation_names(): + filename = new_sprite_frames.get_frame_texture(&"idle", 0).resource_path var offset := Vector2.ZERO # TODO: Use regular expressions. for part: String in filename.split("."): @@ -45,8 +50,17 @@ func _offset_child_sprites(offset: Vector2) -> void: ## Pick a random texture from [member textures] and set it to the sprite. -func randomize_texture() -> void: - var new_texture: Texture2D = textures.pick_random() - var offset := _get_offset_from_texture_filename(new_texture) +func randomize_texture(rng: RandomNumberGenerator = null) -> void: + var random_int: int = rng.randi() if rng else randi() + var index := random_int % sprite_frames.size() + var new_sprite_frames := sprite_frames[index] + + var offset := _get_offset_from_spriteframes_filename(new_sprite_frames) _offset_child_sprites(offset) - SpriteFramesHelper.replace_texture(null, new_texture, sprite.sprite_frames) + + var previous_animation := sprite.animation + sprite.sprite_frames = new_sprite_frames + if not Engine.is_editor_hint(): + if previous_animation in sprite.sprite_frames.get_animation_names(): + sprite.play(previous_animation) + sprite.set_frame_and_progress(0, 0.0) diff --git a/scenes/game_logic/talk_behavior.gd b/scenes/game_logic/talk_behavior.gd index 77e64f7369..d26921e767 100644 --- a/scenes/game_logic/talk_behavior.gd +++ b/scenes/game_logic/talk_behavior.gd @@ -22,6 +22,12 @@ extends Node @export var interact_area: InteractArea: set = _set_interact_area +## Other nodes in the scene tree to make available in [member dialogue], in addition to +## properties defined on the parent node and on the [Player] scene. +## Each node in this list can be accessed by its [member Node.name]. +## Having multiple nodes in this list with the same name is not advised. +@export var extra_context: Array[Node] + var before_dialogue: Callable @@ -50,6 +56,9 @@ func _ready() -> void: func _on_interaction_started(player: Player, _from_right: bool) -> void: if before_dialogue: await before_dialogue.call() - DialogueManager.show_dialogue_balloon(dialogue, title, [get_parent(), player]) + var extra: Dictionary[String, Node] + for node: Node in extra_context: + extra[node.name] = node + DialogueManager.show_dialogue_balloon(dialogue, title, [get_parent(), player, extra]) await DialogueManager.dialogue_ended interact_area.end_interaction() diff --git a/scenes/game_logic/walk_behaviors/bounce_walk_behavior.gd b/scenes/game_logic/walk_behaviors/bounce_walk_behavior.gd index 819bda5b69..61b1915661 100644 --- a/scenes/game_logic/walk_behaviors/bounce_walk_behavior.gd +++ b/scenes/game_logic/walk_behaviors/bounce_walk_behavior.gd @@ -8,7 +8,7 @@ extends BaseCharacterBehavior ## Make the character move and bounce on walls. ## ## The character bounces when it is colliding with a wall and moving slower than -## the [member CharacterSpeeds.bounce_speed] configured in [member speeds]. +## the [member CharacterSpeeds.walk_speed] configured in [member speeds]. ## Emitted when [member direction] is updated. signal direction_changed diff --git a/scenes/game_logic/walk_behaviors/follow_walk_behavior.gd b/scenes/game_logic/walk_behaviors/follow_walk_behavior.gd index a619c18ead..a01924d6ae 100644 --- a/scenes/game_logic/walk_behaviors/follow_walk_behavior.gd +++ b/scenes/game_logic/walk_behaviors/follow_walk_behavior.gd @@ -41,6 +41,10 @@ signal got_stuck ## [signal target_reached_changed] signal may not be ever emitted. @export_range(0, 400, 1, "or_greater", "suffix:m") var target_reached_distance: float = 200.0 +## If the character should stop walking when reaching the target, +## besides emitting [signal target_reached_changed]. +@export var stop_when_reached: bool = true + ## The current direction as a unit Vector2. var direction: Vector2 @@ -93,7 +97,15 @@ func _physics_process(delta: float) -> void: if not direction: _update_direction() - character.velocity = character.velocity.lerp(direction * speeds.walk_speed, direction_weight) + if stop_when_reached and is_target_reached: + character.velocity = character.velocity.move_toward( + Vector2.ZERO, speeds.stopping_step * delta + ) + else: + character.velocity = character.velocity.lerp( + direction * speeds.walk_speed, direction_weight + ) + var collided := character.move_and_slide() if collided and character.is_on_wall(): diff --git a/scenes/globals/aspect_ratio_debugger/aspect_ratio_debugger.gd b/scenes/globals/aspect_ratio_debugger/aspect_ratio_debugger.gd index 23da106ec3..2257d22aa1 100644 --- a/scenes/globals/aspect_ratio_debugger/aspect_ratio_debugger.gd +++ b/scenes/globals/aspect_ratio_debugger/aspect_ratio_debugger.gd @@ -4,5 +4,5 @@ extends CanvasLayer func _ready() -> void: - if not ProjectSettings.get_setting("threadbare/debugging/debug_aspect_ratio"): + if not ProjectSettings.get_setting(ThreadbareProjectSettings.DEBUG_ASPECT_RATIO): queue_free() diff --git a/scenes/globals/camera_shaker/camera_shake.tscn b/scenes/globals/camera_shaker/camera_shake.tscn index 68fe088d0d..177fc95a60 100644 --- a/scenes/globals/camera_shaker/camera_shake.tscn +++ b/scenes/globals/camera_shaker/camera_shake.tscn @@ -1,7 +1,7 @@ [gd_scene format=3 uid="uid://b0cg3w7kr4ahq"] [ext_resource type="Script" uid="uid://d4mofp7illf0u" path="res://scenes/globals/camera_shaker/camera_shake.gd" id="1_jor7p"] -[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/components/shaker.gd" id="2_5d8c0"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="2_5d8c0"] [node name="CameraShake" type="Node" unique_id=854928093] script = ExtResource("1_jor7p") diff --git a/scenes/globals/enums.gd b/scenes/globals/enums.gd index 7da5d6de4e..166c3b6209 100644 --- a/scenes/globals/enums.gd +++ b/scenes/globals/enums.gd @@ -21,7 +21,26 @@ enum CollisionLayers { INTERACTABLE = 6, PLAYERS_HITBOX = 7, ENEMIES_HITBOX = 8, - PROJECTILES = 9, + REPELLABLE = 9, NON_WALKABLE_FLOOR = 10, HOOKABLE = 13, } + +## Flags for player abilities +## [br][br] +## These are generic flags that can be treated differently +## in the lore game and in StoryQuests. +enum PlayerAbilities { + ABILITY_A = 1 << 0, + ABILITY_A_MODIFIER_1 = 1 << 1, + ABILITY_A_MODIFIER_2 = 1 << 2, + ABILITY_A_MODIFIER_3 = 1 << 3, + ABILITY_B = 1 << 4, + ABILITY_B_MODIFIER_1 = 1 << 5, + ABILITY_B_MODIFIER_2 = 1 << 6, + ABILITY_B_MODIFIER_3 = 1 << 7, + ABILITY_C = 1 << 8, + ABILITY_C_MODIFIER_1 = 1 << 9, + ABILITY_C_MODIFIER_2 = 1 << 10, + ABILITY_C_MODIFIER_3 = 1 << 11, +} diff --git a/scenes/globals/game_state/game_state.gd b/scenes/globals/game_state/game_state.gd index 80bcc75973..6f8472ddfe 100644 --- a/scenes/globals/game_state/game_state.gd +++ b/scenes/globals/game_state/game_state.gd @@ -1,5 +1,7 @@ +# gdlint: disable=max-public-methods # SPDX-FileCopyrightText: The Threadbare Authors # SPDX-License-Identifier: MPL-2.0 +@tool extends Node ## Emitted when a new item is collected, even if it wasn't added to the @@ -17,21 +19,40 @@ signal collected_items_changed(updated_items: Array[InventoryItem]) ## Emitted when the player's lives change. signal lives_changed(new_lives: int) +## Emitted when it becomes too dark that artificial lights can turn on, or +## when darkness goes away so artificial lights should turn off. +signal lights_changed(lights_on: bool, immediate: bool) + +## Emitted when a quest is added or removed from [member completed_quests]. +signal completed_quests_changed + +## Emitted when lore or StoryQuest player abilities change. +signal abilities_changed + const GAME_STATE_PATH := "user://game_state.cfg" const INVENTORY_SECTION := "inventory" const INVENTORY_ITEMS_KEY := "items_collected" const QUEST_SECTION := "quest" const QUEST_PATH_KEY := "resource_path" -const QUEST_CURRENTSCENE_KEY := "current_scene" -const QUEST_SPAWNPOINT_KEY := "current_spawn_point" const QUEST_CHALLENGE_START_KEY := "challenge_start_scene" +const QUEST_PLAYER_ABILITIES_KEY := "quest_player_abilities" const GLOBAL_SECTION := "global" const GLOBAL_INCORPORATING_THREADS_KEY := "incorporating_threads" const COMPLETED_QUESTS_KEY := "completed_quests" +const CURRENTSCENE_KEY := "current_scene" +const SPAWNPOINT_KEY := "current_spawn_point" +const GAME_PLAYER_ABILITIES_KEY := "game_player_abilities" const LIVES_KEY := "current_lives" -const MAX_LIVES := 0x7fffffffffffffff +const MAX_LIVES := 2 ** 53 const DEBUG_LIVES := false +## The player abilities to have from the beginning +## when not running the game from the main scene. +const DEBUG_PLAYER_ABILITIES := [ + Enums.PlayerAbilities.ABILITY_A, + Enums.PlayerAbilities.ABILITY_B, +] + ## Scenes to skip from saving. const TRANSIENT_SCENES := [ "res://scenes/menus/title/title_screen.tscn", @@ -43,9 +64,29 @@ const TRANSIENT_SCENES := [ @export var inventory: Array[InventoryItem] = [] @export var current_spawn_point: NodePath +## Player abilities for the whole game. +## [br][br] +## These are flags that enable systems or mechanics for the player progression +## during the entire game.[br] +## When involved in a quest, [member quest_player_abilities] are used instead. +## After completing a lore quest, [member quest_player_abilities] are copied to this and persisted. +@export var game_player_abilities: int = 0: + set = _set_game_player_abilities + +## Player abilities for the current quest. +## [br][br] +## These are flags that enable systems or mechanics for the quest progression[br] +## When involved in a lore quest, [member game_player_abilities] are copied to this. +## When involved in a StoryQuest, this starts in zero (without abilities). +@export var quest_player_abilities: int = 0: + set = _set_quest_player_abilities + ## Current number of lives the player has. var current_lives: int = MAX_LIVES +## Current state of artificial lights. +var lights_on: bool + ## Set when the loom transports the player to a trio of Sokoban puzzles, so that ## when the player returns to Fray's End the loom can trigger a brief cutscene. var incorporating_threads: bool = false @@ -62,10 +103,26 @@ var completed_quests: Array[String] = [] ## mark_quest_completed] and [method abandon_quest]. var current_quest: Quest +## The progress is persisted only if the game is run normally from the main scene. +## Otherwise, it means we are playing a specific scene: the current scene from the editor or +## with a direct URL hash to a scene in the web build. In the latter cases, this variable is false. var persist_progress: bool + var _state := ConfigFile.new() +func _validate_property(property: Dictionary) -> void: + match property["name"]: + # Treat the player abilities as bit flags. + # The @export_flags would be ideal but it expects constant + # strings, and we want to use the PlayerAbilities enum keys + # as hint strings. + # This also requires this script to be a @tool. + "lore_player_abilities", "storyquest_player_abilities": + property.hint = PROPERTY_HINT_FLAGS + property.hint_string = ",".join(Enums.PlayerAbilities.keys()) + + func _ready() -> void: var current_scene := get_tree().current_scene var initial_scene_uid := ( @@ -78,6 +135,9 @@ func _ready() -> void: if not persist_progress: if current_scene: guess_quest(current_scene.scene_file_path) + # Grant all debug player abilities: + for ability: Enums.PlayerAbilities in DEBUG_PLAYER_ABILITIES: + set_ability(ability, true) return var err := _state.load(GAME_STATE_PATH) @@ -107,6 +167,12 @@ func start_quest(quest: Quest) -> void: # Set the challenge start scene to the first scene of the quest _state.set_value(QUEST_SECTION, QUEST_CHALLENGE_START_KEY, quest.first_scene) + if current_quest.is_lore_quest: + quest_player_abilities = game_player_abilities + else: + quest_player_abilities = 0 + _state.set_value(QUEST_SECTION, QUEST_PLAYER_ABILITIES_KEY, quest_player_abilities) + # Reset lives when starting a new quest reset_lives() _save() @@ -145,7 +211,7 @@ func set_scene(scene_path: String, spawn_point: NodePath = ^"") -> void: ## Set the current spawn point and save it. func set_current_spawn_point(spawn_point: NodePath = ^"") -> void: current_spawn_point = spawn_point - _state.set_value(QUEST_SECTION, QUEST_SPAWNPOINT_KEY, current_spawn_point) + _state.set_value(GLOBAL_SECTION, SPAWNPOINT_KEY, current_spawn_point) _save() @@ -192,11 +258,11 @@ func _clear_quest_state() -> void: ## and unset it. Also resets lives to maximum. func mark_quest_completed() -> void: if current_quest: - var quest_name := current_quest.resource_path - if quest_name not in completed_quests: - completed_quests.append(quest_name) - _state.set_value(GLOBAL_SECTION, COMPLETED_QUESTS_KEY, completed_quests) - + if current_quest.is_lore_quest: + # Copy quest abilities to game abilities. + game_player_abilities = quest_player_abilities + _state.set_value(GLOBAL_SECTION, GAME_PLAYER_ABILITIES_KEY, game_player_abilities) + _do_set_quest_completed_state(current_quest, true) current_quest = null _clear_quest_state() _save() @@ -208,8 +274,8 @@ func _do_set_scene(scene_path: String, spawn_point: NodePath = ^"") -> void: intro_dialogue_shown = false current_spawn_point = spawn_point - _state.set_value(QUEST_SECTION, QUEST_CURRENTSCENE_KEY, scene_path) - _state.set_value(QUEST_SECTION, QUEST_SPAWNPOINT_KEY, current_spawn_point) + _state.set_value(GLOBAL_SECTION, CURRENTSCENE_KEY, scene_path) + _state.set_value(GLOBAL_SECTION, SPAWNPOINT_KEY, current_spawn_point) ## Add the [InventoryItem] to the [member inventory]. @@ -227,9 +293,90 @@ func abandon_quest() -> void: set_incorporating_threads(false) _clear_quest_state() current_quest = null + quest_player_abilities = 0 clear_inventory() +## Updates [member completed_quests] to include [param quest] if [param +## is_completed] is true, or remove [param quest] if [param is_completed] is +## false. +func set_quest_completed_state(quest: Quest, is_completed: bool) -> void: + _do_set_quest_completed_state(quest, is_completed) + _save() + + +func _do_set_quest_completed_state(quest: Quest, is_completed: bool) -> void: + var quest_name := quest.resource_path + if is_completed: + if quest_name not in completed_quests: + completed_quests.append(quest_name) + completed_quests_changed.emit() + else: + while quest_name in completed_quests: + completed_quests.erase(quest_name) + completed_quests_changed.emit() + + +func _set_game_player_abilities(new_game_player_abilities: int) -> void: + if game_player_abilities == new_game_player_abilities: + return + game_player_abilities = new_game_player_abilities + abilities_changed.emit() + + +func _set_quest_player_abilities(new_quest_player_abilities: int) -> void: + if quest_player_abilities == new_quest_player_abilities: + return + quest_player_abilities = new_quest_player_abilities + abilities_changed.emit() + + +func _use_global_abilities() -> bool: + return current_quest == null + + +## Clear player abilities. +func clear_abilities() -> void: + if _use_global_abilities(): + game_player_abilities = 0 + else: + quest_player_abilities = 0 + + +## Enable or disable a player ability. +## [br][br] +## This behaves differently outside quests than when involved in a quest. +func set_ability(ability: Enums.PlayerAbilities, is_enabled: bool) -> void: + if is_enabled: + if not has_ability(ability): + if _use_global_abilities(): + game_player_abilities |= ability + else: + quest_player_abilities |= ability + else: + if has_ability(ability): + if _use_global_abilities(): + game_player_abilities &= ~ability + else: + quest_player_abilities &= ~ability + if _use_global_abilities(): + _state.set_value(GLOBAL_SECTION, GAME_PLAYER_ABILITIES_KEY, game_player_abilities) + else: + _state.set_value(QUEST_SECTION, QUEST_PLAYER_ABILITIES_KEY, quest_player_abilities) + _save() + + +## Check if a player ability is enabled. +## [br][br] +## This will behave differently in the main "lore" game than in +## StoryQuests: the lore has player progression that last the whole game, +## while StoryQuests are narrative units and have their own player progression. +func has_ability(ability: Enums.PlayerAbilities) -> bool: + if _use_global_abilities(): + return game_player_abilities & ability + return quest_player_abilities & ability + + ## Remove all [InventoryItem] from the [member inventory]. func clear_inventory() -> void: _do_clear_inventory() @@ -292,10 +439,21 @@ func add_life() -> void: prints("[LIVES DEBUG] Life added. Lives now:", current_lives) +func change_lights(new_lights_on: bool, immediate: bool = false) -> void: + lights_on = new_lights_on + lights_changed.emit(lights_on, immediate) + + +## Clear the per-scene state. +func clear_per_scene_state() -> void: + lights_on = false + + ## Clear the persisted state. func clear() -> void: _state.clear() completed_quests = [] + game_player_abilities = 0 current_lives = MAX_LIVES if DEBUG_LIVES: prints("[LIVES DEBUG] State cleared. Lives reset to:", current_lives) @@ -304,12 +462,12 @@ func clear() -> void: ## Check if there is persisted state. func can_restore() -> bool: - return _state.get_sections().size() + return get_scene_to_restore() != "" ## If there is a scene to restore, return it. func get_scene_to_restore() -> String: - return _state.get_value(QUEST_SECTION, QUEST_CURRENTSCENE_KEY, "") + return _state.get_value(GLOBAL_SECTION, CURRENTSCENE_KEY, "") ## Restore the persisted state. @@ -324,13 +482,16 @@ func restore() -> Dictionary: if _state.has_section_key(QUEST_SECTION, QUEST_PATH_KEY): current_quest = load(_state.get_value(QUEST_SECTION, QUEST_PATH_KEY)) as Quest - var scene_path: String = _state.get_value(QUEST_SECTION, QUEST_CURRENTSCENE_KEY, "") - current_spawn_point = _state.get_value(QUEST_SECTION, QUEST_SPAWNPOINT_KEY, ^"") + var scene_path: String = _state.get_value(GLOBAL_SECTION, CURRENTSCENE_KEY, "") + current_spawn_point = _state.get_value(GLOBAL_SECTION, SPAWNPOINT_KEY, ^"") incorporating_threads = _state.get_value( GLOBAL_SECTION, GLOBAL_INCORPORATING_THREADS_KEY, false ) completed_quests = _state.get_value(GLOBAL_SECTION, COMPLETED_QUESTS_KEY, [] as Array[String]) + game_player_abilities = _state.get_value(GLOBAL_SECTION, GAME_PLAYER_ABILITIES_KEY, 0) + quest_player_abilities = _state.get_value(QUEST_SECTION, QUEST_PLAYER_ABILITIES_KEY, 0) + # Restore lives from saved state, default to MAX_LIVES if not found current_lives = _state.get_value(GLOBAL_SECTION, LIVES_KEY, MAX_LIVES) if DEBUG_LIVES: @@ -342,6 +503,7 @@ func restore() -> Dictionary: func _save() -> void: if not persist_progress: return + _state.set_value(GLOBAL_SECTION, COMPLETED_QUESTS_KEY, completed_quests) var err := _state.save(GAME_STATE_PATH) if err != OK: push_error("Failed to save settings to %s: %s" % [GAME_STATE_PATH, err]) diff --git a/scenes/globals/mouse_manager/mouse_manager.gd b/scenes/globals/mouse_manager/mouse_manager.gd index 9a557c7d85..956177e316 100644 --- a/scenes/globals/mouse_manager/mouse_manager.gd +++ b/scenes/globals/mouse_manager/mouse_manager.gd @@ -11,13 +11,25 @@ const MOUSE_CURSOR_CROSS = preload("uid://bx11wyx7unc4q") func _ready() -> void: Input.set_custom_mouse_cursor(MOUSE_CURSOR_DEFAULT, Input.CURSOR_ARROW, Vector2(0, 0)) Input.set_custom_mouse_cursor(MOUSE_CURSOR_CROSS, Input.CURSOR_CROSS, Vector2(32, 32)) + Input.set_default_cursor_shape(Input.CURSOR_CROSS) + + DialogueManager.dialogue_started.connect(_on_dialogue_started) + DialogueManager.dialogue_ended.connect(_on_dialogue_ended) func _input(event: InputEvent) -> void: if event is InputEventMouseMotion: Input.mouse_mode = Input.MOUSE_MODE_VISIBLE - hide_timer.start(3) + hide_timer.start() func _on_hide_timer_timeout() -> void: Input.mouse_mode = Input.MOUSE_MODE_HIDDEN + + +func _on_dialogue_started(_resource: DialogueResource) -> void: + Input.set_default_cursor_shape(Input.CURSOR_ARROW) + + +func _on_dialogue_ended(_resource: DialogueResource) -> void: + Input.set_default_cursor_shape(Input.CURSOR_CROSS) diff --git a/scenes/globals/music_player/music_player.gd b/scenes/globals/music_player/music_player.gd index 122320fd7f..5b2d3a57c1 100644 --- a/scenes/globals/music_player/music_player.gd +++ b/scenes/globals/music_player/music_player.gd @@ -32,10 +32,8 @@ func _ready() -> void: func _on_scene_changed() -> void: if _pending_new_stream: - # No background music in the new scene. - background_music_player.stop() - background_music_player.stream = null - _pending_new_stream = false + # No BackgroundMusic node in the new scene. + play_stream(null) ## Called to indicate that the scene is about to change. If no corresponding @@ -45,9 +43,23 @@ func scene_about_to_change() -> void: _pending_new_stream = true +func _get_clip_index_by_name(stream: AudioStreamInteractive, clip_name: StringName) -> int: + for index in stream.clip_count: + if stream.get_clip_name(index) == clip_name: + return index + + return -1 + + ## Start playing [param stream], if it is not already playing, fading out any -## other stream that was playing before. -func play_stream(stream: AudioStream) -> void: +## other stream that was playing before. If [param stream] is an [AudioStreamInteractive], +## and [param clip_name] is not empty, transition to the clip of that name. If +## [param stream] is [code]null[/code], stop the current music. +func play_stream(stream: AudioStream, clip_name: StringName = &"") -> void: + if clip_name and stream is not AudioStreamInteractive: + push_warning("clip_name can only be used with AudioStreamInteractive") + clip_name = &"" + if _tween: _tween.kill() _tween = null @@ -56,7 +68,11 @@ func play_stream(stream: AudioStream) -> void: if background_music_player.stream: if background_music_player.stream == stream: - # No change needed + if clip_name: + # Start this transition now, not at the end of the visual fade: the transition + # in the AudioStreamInteractive can be configured to match the visual fade if + # desired. + switch_to_clip(clip_name) return # Fade out previous music @@ -71,7 +87,23 @@ func play_stream(stream: AudioStream) -> void: background_music_player.volume_linear = 1.0 background_music_player.stream = stream + var orig_clip_index := -1 + if clip_name: + var clip_index: int = _get_clip_index_by_name(stream, clip_name) + if clip_index < 0: + push_warning("Stream %s has no clip named %s" % [stream, clip_name]) + else: + # We have to modify the AudioStreamInteractive resource to change + # which clip it starts from. If we switched to the target clip, we + # would hear the initial clip immediately transitioning (e.g. with a + # fade) to the desired clip. Save the original value and change it + # back right after starting playback, so that when running in the + # editor the modified resource is not saved. + orig_clip_index = stream.initial_clip + stream.initial_clip = clip_index background_music_player.play() + if orig_clip_index >= 0: + stream.initial_clip = orig_clip_index ## If the currently-playing stream is an [AudioStreamInteractive], and music is @@ -86,4 +118,8 @@ func switch_to_clip(clip_name: StringName) -> void: return var playback := background_music_player.get_stream_playback() as AudioStreamPlaybackInteractive - playback.switch_to_clip_by_name(clip_name) + var current: StringName = background_music_player.stream.get_clip_name( + playback.get_current_clip_index() + ) + if current != clip_name: + playback.switch_to_clip_by_name(clip_name) diff --git a/scenes/globals/pause/pause_overlay.gd b/scenes/globals/pause/pause_overlay.gd index 8f5a99e4cf..c74e8e7ee3 100644 --- a/scenes/globals/pause/pause_overlay.gd +++ b/scenes/globals/pause/pause_overlay.gd @@ -9,6 +9,7 @@ extends CanvasLayer @onready var resume_button: Button = %ResumeButton @onready var options: Control = %Options @onready var abandon_quest_button: Button = %AbandonQuestButton +@onready var skip_tutorial_button: Button = %SkipTutorialButton func _ready() -> void: @@ -26,8 +27,18 @@ func toggle_pause() -> void: visible = new_state get_tree().paused = new_state + Input.set_default_cursor_shape(Input.CURSOR_ARROW if new_state else Input.CURSOR_CROSS) + if new_state: - abandon_quest_button.visible = GameState.is_on_quest() + if not GameState.current_quest: + skip_tutorial_button.hide() + abandon_quest_button.hide() + elif GameState.current_quest.skippable: + skip_tutorial_button.show() + abandon_quest_button.hide() + else: + skip_tutorial_button.hide() + abandon_quest_button.show() pause_menu.show() resume_button.grab_focus() @@ -40,6 +51,16 @@ func _on_abandon_quest_pressed() -> void: ) +func _on_skip_tutorial_pressed() -> void: + toggle_pause() + for ability: Enums.PlayerAbilities in GameState.current_quest.skip_abilities: + GameState.set_ability(ability, true) + GameState.mark_quest_completed() + SceneSwitcher.change_to_file_with_transition( + frays_end, ^"", Transition.Effect.FADE, Transition.Effect.FADE + ) + + func _on_options_button_pressed() -> void: options.show() diff --git a/scenes/globals/pause/pause_overlay.tscn b/scenes/globals/pause/pause_overlay.tscn index 4a6a04ff62..fd421a5476 100644 --- a/scenes/globals/pause/pause_overlay.tscn +++ b/scenes/globals/pause/pause_overlay.tscn @@ -3,7 +3,10 @@ [ext_resource type="Script" uid="uid://y88qplkioj1q" path="res://scenes/globals/pause/pause_overlay.gd" id="1_lf64b"] [ext_resource type="Texture2D" uid="uid://lg5dl13njsg3" path="res://assets/first_party/tiles/Grass_And_Sand_Tiles.png" id="2_1tcw0"] [ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="2_sd5t1"] +[ext_resource type="Script" uid="uid://i4urwefxrrdt" path="res://addons/threadbare_git_describe/version_label.gd" id="3_m62bn"] [ext_resource type="PackedScene" uid="uid://dkeb0yjgcfi86" path="res://scenes/menus/options/options.tscn" id="3_sd5t1"] +[ext_resource type="Script" uid="uid://gntvq01vvati" path="res://scenes/globals/pause/report_bug_button.gd" id="4_mjd51"] +[ext_resource type="PackedScene" uid="uid://56ja3m4283wa" path="res://scenes/menus/debug/debug_settings.tscn" id="5_ai8ue"] [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_1tcw0"] @@ -26,6 +29,22 @@ region_rect = Rect2(384, 64, 64, 64) axis_stretch_horizontal = 1 axis_stretch_vertical = 1 +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1289064546] +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -33.0 +offset_top = -68.0 +grow_horizontal = 0 +grow_vertical = 0 +theme = ExtResource("2_sd5t1") + +[node name="VersionLabel" type="Label" parent="MarginContainer" unique_id=494777321] +layout_mode = 2 +script = ExtResource("3_m62bn") + [node name="TabContainer" type="TabContainer" parent="." unique_id=877845808] anchors_preset = 8 anchor_left = 0.5 @@ -74,6 +93,13 @@ size_flags_horizontal = 4 theme_type_variation = &"FlatButton" text = "Abandon Quest" +[node name="SkipTutorialButton" type="Button" parent="TabContainer/PauseMenu/VBoxContainer" unique_id=979952363] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +theme_type_variation = &"FlatButton" +text = "Skip Tutorial" + [node name="OptionsButton" type="Button" parent="TabContainer/PauseMenu/VBoxContainer" unique_id=117724427] unique_name_in_owner = true layout_mode = 2 @@ -81,6 +107,21 @@ size_flags_horizontal = 4 theme_type_variation = &"FlatButton" text = "Options" +[node name="DebugButton" type="Button" parent="TabContainer/PauseMenu/VBoxContainer" unique_id=75453807] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +theme_type_variation = &"FlatButton" +text = "Debug Settings" + +[node name="ReportBugButton" type="Button" parent="TabContainer/PauseMenu/VBoxContainer" unique_id=1750937607] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +theme_type_variation = &"FlatButton" +text = "Report a Problem" +script = ExtResource("4_mjd51") + [node name="TitleScreenButton" type="Button" parent="TabContainer/PauseMenu/VBoxContainer" unique_id=830702640] unique_name_in_owner = true layout_mode = 2 @@ -94,8 +135,16 @@ process_mode = 2 visible = false layout_mode = 2 +[node name="DebugSettings" parent="TabContainer" unique_id=1197092088 instance=ExtResource("5_ai8ue")] +visible = false +layout_mode = 2 +metadata/_tab_index = 2 + [connection signal="pressed" from="TabContainer/PauseMenu/VBoxContainer/ResumeButton" to="." method="_on_resume_button_pressed"] [connection signal="pressed" from="TabContainer/PauseMenu/VBoxContainer/AbandonQuestButton" to="." method="_on_abandon_quest_pressed"] +[connection signal="pressed" from="TabContainer/PauseMenu/VBoxContainer/SkipTutorialButton" to="." method="_on_skip_tutorial_pressed"] [connection signal="pressed" from="TabContainer/PauseMenu/VBoxContainer/OptionsButton" to="." method="_on_options_button_pressed"] +[connection signal="pressed" from="TabContainer/PauseMenu/VBoxContainer/DebugButton" to="TabContainer/DebugSettings" method="show"] [connection signal="pressed" from="TabContainer/PauseMenu/VBoxContainer/TitleScreenButton" to="." method="_on_title_screen_button_pressed"] [connection signal="back" from="TabContainer/Options" to="." method="_on_options_back"] +[connection signal="back" from="TabContainer/DebugSettings" to="." method="_on_options_back"] diff --git a/scenes/globals/pause/report_bug_button.gd b/scenes/globals/pause/report_bug_button.gd new file mode 100644 index 0000000000..2ab2d94239 --- /dev/null +++ b/scenes/globals/pause/report_bug_button.gd @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Button +## Opens a bug report form in the web browser when clicked. + +const Version := preload("res://addons/threadbare_git_describe/version.gd") +const URL_BASE := "https://github.com/endlessm/threadbare/issues/new?template=bug.yml" + + +func _ready() -> void: + pressed.connect(_on_pressed) + + +func _on_pressed() -> void: + var url := URL_BASE + + var version := Version.get_version() + if version: + url += "&version=" + version.uri_encode() + + var current_scene := get_tree().current_scene + if current_scene: + url += "&scene=" + current_scene.scene_file_path.uri_encode() + + OS.shell_open(url) diff --git a/scenes/globals/pause/report_bug_button.gd.uid b/scenes/globals/pause/report_bug_button.gd.uid new file mode 100644 index 0000000000..8bd741dc25 --- /dev/null +++ b/scenes/globals/pause/report_bug_button.gd.uid @@ -0,0 +1 @@ +uid://gntvq01vvati diff --git a/scenes/globals/scene_switcher/scene_switcher.gd b/scenes/globals/scene_switcher/scene_switcher.gd index 156c7cc4e4..b8fa931581 100644 --- a/scenes/globals/scene_switcher/scene_switcher.gd +++ b/scenes/globals/scene_switcher/scene_switcher.gd @@ -67,6 +67,9 @@ func _restore_from_hash() -> void: GameState.clear() GameState.guess_quest(path) GameState.set_challenge_start_scene(path) + for ability: Enums.PlayerAbilities in GameState.DEBUG_PLAYER_ABILITIES: + GameState.set_ability(ability, true) + # TODO: this duplicates code in GameState._ready, find a way to consolidate. # In theory, we might like to avoid switching scene if the specified # scene is the default scene. In practice, that will not happen, and @@ -104,6 +107,8 @@ func change_to_file_with_transition( enter_transition: Transition.Effect = Transition.Effect.RIGHT_TO_LEFT_WIPE, exit_transition: Transition.Effect = Transition.Effect.LEFT_TO_RIGHT_WIPE ) -> void: + assert(scene_path != "") + var err := ResourceLoader.load_threaded_request(scene_path) if err != OK: push_error("Failed to start loading %s: %s" % [scene_path, error_string(err)]) @@ -122,6 +127,8 @@ func change_to_packed_with_transition( enter_transition: Transition.Effect = Transition.Effect.RIGHT_TO_LEFT_WIPE, exit_transition: Transition.Effect = Transition.Effect.LEFT_TO_RIGHT_WIPE ) -> void: + assert(scene != null) + Transitions.do_transition( change_to_packed.bind(scene, spawn_point), enter_transition, exit_transition ) @@ -135,12 +142,18 @@ func reload_with_transition( func change_to_file(scene_path: String, spawn_point: NodePath = ^"") -> void: + assert(scene_path != "") + var scene: PackedScene = load(scene_path) if scene: change_to_packed(scene, spawn_point) func change_to_packed(scene: PackedScene, spawn_point: NodePath = ^"") -> void: + assert(scene != null) + + GameState.clear_per_scene_state() + if get_tree().change_scene_to_packed(scene) == OK: _set_hash(scene.resource_path) GameState.set_scene(scene.resource_path, spawn_point) diff --git a/scenes/globals/settings/settings.gd b/scenes/globals/settings/settings.gd index 5495609685..d639abaf0d 100644 --- a/scenes/globals/settings/settings.gd +++ b/scenes/globals/settings/settings.gd @@ -15,12 +15,30 @@ const DEFAULT_VOLUMES: Dictionary[String, float] = { "Music": 0.5, } +const DISPLAY_SECTION := "Display" +const SHOW_HUD_KEY := "Show HUD" + +const LANGUAGE_SECTION := "Language" +const LOCALE_KEY := "Locale" +const DEFAULT_LOCALE := "en" + ## 5:4 ratio of 1280×1024, 1024×768, and other pre-widescreen monitors. const MINIMUM_ASPECT_RATIO := 1.25 ## An arbitrary wide ratio, lower than 21:9 ("ultrawide"). const MAXIMUM_ASPECT_RATIO := 2.2 +@export var fullscreen: bool: + get = is_fullscreen, + set = set_fullscreen + +@export var show_input_hud := true: + get: + return _settings.get_value(DISPLAY_SECTION, SHOW_HUD_KEY, true) + set(new_value): + _settings.set_value(DISPLAY_SECTION, SHOW_HUD_KEY, new_value) + _save() + var _settings := ConfigFile.new() var _overrides_path: String @@ -38,6 +56,7 @@ func _ready() -> void: _settings.set_value(META_SECTION, VERSION_KEY, VERSION) _restore_volumes() + _restore_locale() _load_project_settings_overrides() _set_minimum_window_size() @@ -94,13 +113,23 @@ func is_fullscreen() -> bool: return DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN -func toggle_fullscreen(toggled_on: bool) -> void: +func set_fullscreen(toggled_on: bool) -> void: if toggled_on: set_window_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN) else: set_window_mode(DisplayServer.WINDOW_MODE_WINDOWED) +func get_locale() -> String: + return TranslationServer.get_locale() + + +func set_locale(locale: String) -> void: + TranslationServer.set_locale(locale) + _settings.set_value(LANGUAGE_SECTION, LOCALE_KEY, locale) + _save() + + func set_window_mode(window_mode: int) -> void: if window_mode == DisplayServer.window_get_mode(): return @@ -113,6 +142,11 @@ func set_window_mode(window_mode: int) -> void: push_warning("Failed to save to", _overrides_path, ": ", error_string(ret)) +func _restore_locale() -> void: + var locale: String = _settings.get_value(LANGUAGE_SECTION, LOCALE_KEY, DEFAULT_LOCALE) + TranslationServer.set_locale(locale) + + func _set_volume(bus_idx: int, volume_linear: float) -> void: AudioServer.set_bus_volume_linear(bus_idx, volume_linear) diff --git a/scenes/menus/credits/components/credits_list.tscn b/scenes/menus/credits/components/credits_list.tscn index 0c27caf072..2bb3d8a60d 100644 --- a/scenes/menus/credits/components/credits_list.tscn +++ b/scenes/menus/credits/components/credits_list.tscn @@ -8,7 +8,7 @@ [ext_resource type="PackedScene" uid="uid://dn43jo0qbjax6" path="res://scenes/menus/credits/components/credits_studio_view.tscn" id="4_c6828"] [ext_resource type="Resource" uid="uid://bl3gkl74f2pog" path="res://scenes/menus/credits/data/5_4_games.tres" id="5_7vhf1"] [ext_resource type="Resource" uid="uid://dml75f3svjasx" path="res://scenes/menus/credits/data/pixel_frog.tres" id="6_mxxni"] -[ext_resource type="Resource" uid="uid://3mvu34b6ec4q" path="res://scenes/menus/credits/data/john_wright.tres" id="7_hk6tb"] +[ext_resource type="Resource" uid="uid://3mvu34b6ec4q" path="res://scenes/menus/credits/data/infinity_composition.tres" id="7_hk6tb"] [ext_resource type="Resource" uid="uid://cesivfwq4v3ei" path="res://scenes/menus/credits/data/community.tres" id="8_ymer0"] [ext_resource type="Resource" uid="uid://hnk8yp40md0l" path="res://scenes/menus/credits/data/third_party_components.tres" id="9_p0tcf"] diff --git a/scenes/menus/credits/data/community.csv b/scenes/menus/credits/data/community.csv index 8490f83f84..728dc48959 100644 --- a/scenes/menus/credits/data/community.csv +++ b/scenes/menus/credits/data/community.csv @@ -1,5 +1,6 @@ Name,GitHub Username,Team ,AlexanderV24, +Alvaro Ivan Roldan Candiotti,Zer0LoL, Anderson Urrutia Moreyra Benonits,, Carlos Sebastian Angulo Diaz,, ,DonSeja06, @@ -18,6 +19,7 @@ Valeria Vanessa Palomino Sulca,, ,daff2, ,kphero, ,shiroidK, +Dzianis Andzich,andich-xyz, Andrés Botero,,Mentors Arturo Bermudez,,Mentors Augusto Tuttolomondo,,Mentors diff --git a/scenes/menus/credits/data/endless_access.csv b/scenes/menus/credits/data/endless_access.csv index 83d11db3b6..3edf308b60 100644 --- a/scenes/menus/credits/data/endless_access.csv +++ b/scenes/menus/credits/data/endless_access.csv @@ -2,14 +2,16 @@ Team,Name,GitHub Username Games,Sarah Spiers,saspiers Games,Manuel Quiñones,manuq Games,Will Thompson,wjt -Learning,Stephen Reid, -Learning,Heather Drolet, -Learning,Joana Filizola, +Learning,Stephen Reid,PlayMatters +Learning,Heather Drolet,hydrolet +Learning,Joana Filizola,jofilizola Learning,Alejandro Farfán, -Learning,Andrea Victoria Pavón, -Learning,Bernado Campos Freitas, +Learning,Andrea Victoria Pavón,Stregoica777 +Learning,Bernado Campos Freitas,bcsfreitas Learning,Jess Boyce, -Learning,Justin Bourque, +Learning,Justin Bourque,jgbourque +Learning,Laura Foglia,LauraFoglia +Learning,Luis A. Sánchez,lasr21 Marketing,Rodrigo Sánchez López, Marketing,Cassidy James Blaede,cassidyjames Marketing,Luke Schoonbrood, diff --git a/scenes/menus/credits/data/john_wright.tres b/scenes/menus/credits/data/infinity_composition.tres similarity index 70% rename from scenes/menus/credits/data/john_wright.tres rename to scenes/menus/credits/data/infinity_composition.tres index 5948b84d11..976cf343c9 100644 --- a/scenes/menus/credits/data/john_wright.tres +++ b/scenes/menus/credits/data/infinity_composition.tres @@ -4,6 +4,6 @@ [resource] script = ExtResource("1_11lve") -name = "John Wright" -description = "Original music by John Wright" +name = "Infinity Composition" +description = "Original music by [url=https://www.instagram.com/infinitycomposition/]John Wright[/url]" metadata/_custom_type_script = "uid://jhi0kptxppd8" diff --git a/scenes/menus/debug/debug_completed_quest_list.gd b/scenes/menus/debug/debug_completed_quest_list.gd new file mode 100644 index 0000000000..b7e58f058d --- /dev/null +++ b/scenes/menus/debug/debug_completed_quest_list.gd @@ -0,0 +1,38 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends VBoxContainer + +const QUEST_ROOT := "res://scenes/quests" + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + visibility_changed.connect(_on_visibility_changed) + rebuild() + + +func _on_visibility_changed() -> void: + if visible: + rebuild() + + +func rebuild() -> void: + for child: Node in get_children(): + remove_child(child) + child.queue_free() + + for dir: String in DirAccess.get_directories_at(QUEST_ROOT): + for quest in Quest.enumerate(QUEST_ROOT.path_join(dir)): + var bits: Array[String] + if quest.title: + bits.append(quest.title) + bits.append(quest.resource_path.get_base_dir().substr(QUEST_ROOT.length() + 1)) + var button := CheckButton.new() + button.text = " · ".join(bits) + button.button_pressed = GameState.completed_quests.has(quest.resource_path) + button.toggled.connect(_on_button_toggled.bind(quest)) + add_child(button) + + +func _on_button_toggled(toggled_on: bool, quest: Quest) -> void: + GameState.set_quest_completed_state(quest, toggled_on) diff --git a/scenes/menus/debug/debug_completed_quest_list.gd.uid b/scenes/menus/debug/debug_completed_quest_list.gd.uid new file mode 100644 index 0000000000..1f7e3d61b8 --- /dev/null +++ b/scenes/menus/debug/debug_completed_quest_list.gd.uid @@ -0,0 +1 @@ +uid://d3s58aw5loxqd diff --git a/scenes/menus/debug/debug_completed_quest_list.tscn b/scenes/menus/debug/debug_completed_quest_list.tscn new file mode 100644 index 0000000000..0b3f787c9f --- /dev/null +++ b/scenes/menus/debug/debug_completed_quest_list.tscn @@ -0,0 +1,24 @@ +[gd_scene format=3 uid="uid://cie2w455avmwm"] + +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_1g3i8"] +[ext_resource type="Script" uid="uid://d3s58aw5loxqd" path="res://scenes/menus/debug/debug_completed_quest_list.gd" id="1_68hah"] + +[node name="DebugCompletedQuestList" type="VBoxContainer" unique_id=1279772854] +theme = ExtResource("1_1g3i8") +theme_override_constants/separation = 0 +script = ExtResource("1_68hah") + +[node name="Sample1" type="CheckButton" parent="." unique_id=69004526] +editor_description = "These sample nodes are deleted at runtime; they are only here to help edit this scene, and scenes that use it." +layout_mode = 2 +text = "The Musician's Quest · lore_quests/quest_001" + +[node name="Sample2" type="CheckButton" parent="." unique_id=1811931812] +editor_description = "These sample nodes are deleted at runtime; they are only here to help edit this scene, and scenes that use it." +layout_mode = 2 +text = "After The Tremor · story_quests/after_the_tremor" + +[node name="Sample3" type="CheckButton" parent="." unique_id=1488387126] +editor_description = "These sample nodes are deleted at runtime; they are only here to help edit this scene, and scenes that use it." +layout_mode = 2 +text = "template_quests/NO_EDIT" diff --git a/scenes/menus/debug/debug_player_abilities_list.gd b/scenes/menus/debug/debug_player_abilities_list.gd new file mode 100644 index 0000000000..7d45402c08 --- /dev/null +++ b/scenes/menus/debug/debug_player_abilities_list.gd @@ -0,0 +1,31 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends VBoxContainer + + +func _ready() -> void: + visibility_changed.connect(_on_visibility_changed) + rebuild() + + +func _on_visibility_changed() -> void: + if visible: + rebuild() + + +func rebuild() -> void: + for child: Node in get_children(): + remove_child(child) + child.queue_free() + + for ability_name: String in Enums.PlayerAbilities.keys(): + var ability: Enums.PlayerAbilities = Enums.PlayerAbilities[ability_name] + var button := CheckButton.new() + button.text = ability_name + button.button_pressed = GameState.has_ability(ability) + button.toggled.connect(_on_button_toggled.bind(ability)) + add_child(button) + + +func _on_button_toggled(toggled_on: bool, ability: Enums.PlayerAbilities) -> void: + GameState.set_ability(ability, toggled_on) diff --git a/scenes/menus/debug/debug_player_abilities_list.gd.uid b/scenes/menus/debug/debug_player_abilities_list.gd.uid new file mode 100644 index 0000000000..ab2da04530 --- /dev/null +++ b/scenes/menus/debug/debug_player_abilities_list.gd.uid @@ -0,0 +1 @@ +uid://chcw7ewwtftgl diff --git a/scenes/menus/debug/debug_player_abilities_list.tscn b/scenes/menus/debug/debug_player_abilities_list.tscn new file mode 100644 index 0000000000..1fdeb968d3 --- /dev/null +++ b/scenes/menus/debug/debug_player_abilities_list.tscn @@ -0,0 +1,19 @@ +[gd_scene format=3 uid="uid://dap7xk2m1yfhs"] + +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_theme"] +[ext_resource type="Script" path="res://scenes/menus/debug/debug_player_abilities_list.gd" id="1_script"] + +[node name="DebugPlayerAbilitiesList" type="VBoxContainer"] +theme = ExtResource("1_theme") +theme_override_constants/separation = 0 +script = ExtResource("1_script") + +[node name="Sample1" type="CheckButton" parent="."] +editor_description = "These sample nodes are deleted at runtime; they are only here to help edit this scene, and scenes that use it." +layout_mode = 2 +text = "ABILITY_A" + +[node name="Sample2" type="CheckButton" parent="."] +editor_description = "These sample nodes are deleted at runtime; they are only here to help edit this scene, and scenes that use it." +layout_mode = 2 +text = "ABILITY_B" diff --git a/scenes/menus/debug/debug_settings.tscn b/scenes/menus/debug/debug_settings.tscn new file mode 100644 index 0000000000..10e4f762ef --- /dev/null +++ b/scenes/menus/debug/debug_settings.tscn @@ -0,0 +1,65 @@ +[gd_scene format=3 uid="uid://56ja3m4283wa"] + +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_w7kol"] +[ext_resource type="Script" uid="uid://r7cjyiw5log4" path="res://scenes/menus/options/components/options.gd" id="2_46px3"] +[ext_resource type="PackedScene" uid="uid://cie2w455avmwm" path="res://scenes/menus/debug/debug_completed_quest_list.tscn" id="2_k06h7"] +[ext_resource type="Texture2D" uid="uid://xe25gqovxxpe" path="res://assets/first_party/icons/left_arrow.png" id="3_46px3"] +[ext_resource type="PackedScene" uid="uid://dap7xk2m1yfhs" path="res://scenes/menus/debug/debug_player_abilities_list.tscn" id="4_abilities"] + +[node name="DebugSettings" type="PanelContainer" unique_id=35497477 node_paths=PackedStringArray("back_button")] +custom_minimum_size = Vector2(800, 600) +offset_right = 675.0 +offset_bottom = 255.0 +theme = ExtResource("1_w7kol") +script = ExtResource("2_46px3") +back_button = NodePath("VBoxContainer/BackButton") + +[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1670771472] +layout_mode = 2 + +[node name="TabContainer" type="TabContainer" parent="VBoxContainer" unique_id=57528092] +layout_mode = 2 +size_flags_vertical = 3 +tab_alignment = 1 +current_tab = 0 + +[node name="Completed Quests" type="ScrollContainer" parent="VBoxContainer/TabContainer" unique_id=2057728842] +layout_mode = 2 +follow_focus = true +horizontal_scroll_mode = 0 +metadata/_tab_index = 0 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/TabContainer/Completed Quests" unique_id=802864242] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="DebugCompletedQuestList" parent="VBoxContainer/TabContainer/Completed Quests/MarginContainer" unique_id=1279772854 instance=ExtResource("2_k06h7")] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Player Abilities" type="ScrollContainer" parent="VBoxContainer/TabContainer" unique_id=1413429209] +visible = false +layout_mode = 2 +follow_focus = true +horizontal_scroll_mode = 0 +metadata/_tab_index = 1 + +[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/TabContainer/Player Abilities" unique_id=1320054365] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="DebugPlayerAbilitiesList" parent="VBoxContainer/TabContainer/Player Abilities/MarginContainer" unique_id=1996259651 instance=ExtResource("4_abilities")] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="BackButton" type="Button" parent="VBoxContainer" unique_id=751568689] +layout_mode = 2 +size_flags_horizontal = 4 +theme_type_variation = &"FlatButton" +text = "Back" +icon = ExtResource("3_46px3") +flat = true diff --git a/scenes/menus/intro/components/intro.dialogue b/scenes/menus/intro/components/intro.dialogue deleted file mode 100644 index 46a525200f..0000000000 --- a/scenes/menus/intro/components/intro.dialogue +++ /dev/null @@ -1,12 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -~ start -# Wait a moment before starting the dialogue proper. In particular, this allows -# time for any fade-in transition from the previous scene to finish. -if Transitions.is_running(): - do Transitions.finished -do animation_player.play(&"sketches") -You know that feeling you get when you wrap yourself in your favorite blanket? Like a cozy hug from a loved one. -What if I told you there is a world made of fabric, not too far away and not too near, that used to feel just like that hug? -This world was made of stitches and stories, and people were happy. Until… -=> END diff --git a/scenes/menus/intro/components/intro.dialogue.import b/scenes/menus/intro/components/intro.dialogue.import deleted file mode 100644 index 443333b427..0000000000 --- a/scenes/menus/intro/components/intro.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://bq1eaih8esqsi" -path="res://.godot/imported/intro.dialogue-772ca54105f2911c138815c51b88823f.tres" - -[deps] - -source_file="res://scenes/menus/intro/components/intro.dialogue" -dest_files=["res://.godot/imported/intro.dialogue-772ca54105f2911c138815c51b88823f.tres"] - -[params] - -defaults=true diff --git a/scenes/menus/intro/intro.tscn b/scenes/menus/intro/intro.tscn deleted file mode 100644 index 256115f743..0000000000 --- a/scenes/menus/intro/intro.tscn +++ /dev/null @@ -1,388 +0,0 @@ -[gd_scene format=3 uid="uid://dow5vc7yb5k2c"] - -[ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_1dipm"] -[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="1_qeukb"] -[ext_resource type="AudioStream" uid="uid://dk10o5q87xbct" path="res://assets/first_party/music/Threadbare Loop_Main_Bridge_01.ogg" id="2_1dipm"] -[ext_resource type="Texture2D" uid="uid://dcgv7dmarddhb" path="res://assets/first_party/intro/sketch_01.png" id="3_gvvib"] -[ext_resource type="Texture2D" uid="uid://lg5dl13njsg3" path="res://assets/first_party/tiles/Grass_And_Sand_Tiles.png" id="3_luxcm"] -[ext_resource type="Texture2D" uid="uid://cstytr1q6epdb" path="res://assets/first_party/intro/sketch_02.png" id="4_gvvib"] -[ext_resource type="Resource" uid="uid://bq1eaih8esqsi" path="res://scenes/menus/intro/components/intro.dialogue" id="4_rpon1"] -[ext_resource type="Texture2D" uid="uid://byrrpp1mkb0pj" path="res://assets/first_party/intro/sketch_03.png" id="5_mqh0g"] -[ext_resource type="Texture2D" uid="uid://0q44uwql6evw" path="res://assets/first_party/intro/sketch_04.png" id="6_4ymxw"] -[ext_resource type="Texture2D" uid="uid://b38btb8y8bsx3" path="res://assets/first_party/intro/sketch_05.png" id="7_5fnp7"] - -[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_mqh0g"] - -[sub_resource type="Animation" id="Animation_8twl8"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("CanvasLayer/Control/Sketch01:modulate") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("CanvasLayer/Control/Sketch01:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("CanvasLayer/Control/Sketch02:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("CanvasLayer/Control/Sketch03:visible") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("CanvasLayer/Control/Sketch04:visible") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("CanvasLayer/Control/Sketch05:visible") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("CanvasLayer/Control/Sketch02:modulate") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("CanvasLayer/Control/Sketch03:modulate") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("CanvasLayer/Control/Sketch04:modulate") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} -tracks/9/type = "value" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath("CanvasLayer/Control/Sketch05:modulate") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} - -[sub_resource type="Animation" id="Animation_5fnp7"] -resource_name = "sketches" -length = 13.0 -loop_mode = 1 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("CanvasLayer/Control/Sketch01:modulate") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 1, 2, 3), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("CanvasLayer/Control/Sketch01:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("CanvasLayer/Control/Sketch02:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(2.5), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("CanvasLayer/Control/Sketch02:modulate") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(2.5, 3.5, 4.5, 5.5), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("CanvasLayer/Control/Sketch03:visible") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(5), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("CanvasLayer/Control/Sketch03:modulate") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(5, 6, 7, 8), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("CanvasLayer/Control/Sketch04:visible") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(7.5), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("CanvasLayer/Control/Sketch04:modulate") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(7.5, 8.5, 9.5, 10.5), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] -} -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("CanvasLayer/Control/Sketch05:visible") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(10), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/9/type = "value" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath("CanvasLayer/Control/Sketch05:modulate") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { -"times": PackedFloat32Array(10, 11, 12, 13), -"transitions": PackedFloat32Array(1, 1, 1, 1), -"update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_ir5dn"] -_data = { -&"RESET": SubResource("Animation_8twl8"), -&"sketches": SubResource("Animation_5fnp7") -} - -[node name="Intro" type="Node2D" unique_id=1934641852] - -[node name="BackgroundMusic" parent="." unique_id=1569774707 instance=ExtResource("1_1dipm")] -stream = ExtResource("2_1dipm") - -[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1385261827] - -[node name="Control" type="Control" parent="CanvasLayer" unique_id=2120468771] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="FabricBackground" type="NinePatchRect" parent="CanvasLayer/Control" unique_id=1173686767] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -texture = ExtResource("3_luxcm") -region_rect = Rect2(384, 64, 64, 64) -axis_stretch_horizontal = 1 -axis_stretch_vertical = 1 - -[node name="Sketch01" type="TextureRect" parent="CanvasLayer/Control" unique_id=1193653964] -visible = false -material = SubResource("CanvasItemMaterial_mqh0g") -layout_mode = 1 -anchors_preset = 3 -anchor_left = 1.0 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -715.66205 -offset_top = -715.0 -grow_horizontal = 0 -grow_vertical = 0 -texture = ExtResource("3_gvvib") -expand_mode = 1 -stretch_mode = 5 - -[node name="Sketch02" type="TextureRect" parent="CanvasLayer/Control" unique_id=1239046278] -visible = false -layout_mode = 1 -anchors_preset = 3 -anchor_left = 1.0 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -570.0 -offset_top = -721.6882 -grow_horizontal = 0 -grow_vertical = 0 -texture = ExtResource("4_gvvib") -expand_mode = 1 -stretch_mode = 5 - -[node name="Sketch03" type="TextureRect" parent="CanvasLayer/Control" unique_id=164707687] -visible = false -layout_mode = 1 -anchors_preset = 3 -anchor_left = 1.0 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -686.0 -offset_top = -716.51843 -grow_horizontal = 0 -grow_vertical = 0 -texture = ExtResource("5_mqh0g") -expand_mode = 1 -stretch_mode = 5 - -[node name="Sketch04" type="TextureRect" parent="CanvasLayer/Control" unique_id=635350941] -visible = false -layout_mode = 1 -anchors_preset = 3 -anchor_left = 1.0 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -839.4991 -offset_top = -719.0 -grow_horizontal = 0 -grow_vertical = 0 -texture = ExtResource("6_4ymxw") -expand_mode = 1 -stretch_mode = 5 - -[node name="Sketch05" type="TextureRect" parent="CanvasLayer/Control" unique_id=252774380] -visible = false -layout_mode = 1 -anchors_preset = 3 -anchor_left = 1.0 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -1121.5078 -offset_top = -720.0 -grow_horizontal = 0 -grow_vertical = 0 -texture = ExtResource("7_5fnp7") -expand_mode = 1 -stretch_mode = 5 - -[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1511510753] -libraries/ = SubResource("AnimationLibrary_ir5dn") -speed_scale = 0.5 - -[node name="Cinematic" type="Node2D" parent="." unique_id=1898337524 node_paths=PackedStringArray("animation_player")] -script = ExtResource("1_qeukb") -dialogue = ExtResource("4_rpon1") -animation_player = NodePath("../AnimationPlayer") -next_scene = "uid://cufkthb25mpxy" -spawn_point_path = "SpawnPointAfterIntro" -metadata/_custom_type_script = "uid://x1mxt6bmei2o" diff --git a/scenes/menus/options/components/fullscreen_toggle.gd b/scenes/menus/options/components/fullscreen_toggle.gd deleted file mode 100644 index fbe6642292..0000000000 --- a/scenes/menus/options/components/fullscreen_toggle.gd +++ /dev/null @@ -1,21 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends CheckButton - - -func _ready() -> void: - # There are two instances of this toggle in the game: one on the title screen, and - # another in the pause overlay. At most one is displayed at a time, so we can keep them in - # synch by reading the setting each time each toggle is displayed. - visibility_changed.connect(_refresh) - _refresh() - - toggled.connect(_on_toggled) - - -func _refresh() -> void: - set_pressed_no_signal(Settings.is_fullscreen()) - - -func _on_toggled(toggled_on: bool) -> void: - Settings.toggle_fullscreen(toggled_on) diff --git a/scenes/menus/options/components/language_option.gd b/scenes/menus/options/components/language_option.gd new file mode 100644 index 0000000000..56b069729f --- /dev/null +++ b/scenes/menus/options/components/language_option.gd @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends HBoxContainer + +@onready var _english_button: Button = %EnglishButton +@onready var _spanish_button: Button = %SpanishButton + + +func _ready() -> void: + # There are two instances of this option in the game: one on the title screen, and + # another in the pause overlay. At most one is displayed at a time, so we can keep them in + # synch by reading the setting each time each option is displayed. + visibility_changed.connect(_refresh) + _refresh() + + +func _refresh() -> void: + var current_locale := Settings.get_locale() + _english_button.set_pressed_no_signal(current_locale == "en") + _spanish_button.set_pressed_no_signal(current_locale == "es") + + +func _on_button_pressed(language_code: String) -> void: + Settings.set_locale(language_code) + _refresh() diff --git a/scenes/menus/options/components/language_option.gd.uid b/scenes/menus/options/components/language_option.gd.uid new file mode 100644 index 0000000000..765f84db2d --- /dev/null +++ b/scenes/menus/options/components/language_option.gd.uid @@ -0,0 +1 @@ +uid://dk2wa6nonu0jc diff --git a/scenes/menus/options/components/language_settings.tscn b/scenes/menus/options/components/language_settings.tscn new file mode 100644 index 0000000000..3861425d12 --- /dev/null +++ b/scenes/menus/options/components/language_settings.tscn @@ -0,0 +1,45 @@ +[gd_scene format=3 uid="uid://w0uscqwgsi4w"] + +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_abc"] +[ext_resource type="Script" uid="uid://dk2wa6nonu0jc" path="res://scenes/menus/options/components/language_option.gd" id="2_abc"] + +[node name="LanguageSettings" type="VBoxContainer" unique_id=85827291] +offset_left = 96.0 +offset_top = 64.0 +offset_right = 544.0 +offset_bottom = 254.0 +theme = ExtResource("1_abc") + +[node name="PanelContainer" type="PanelContainer" parent="." unique_id=1311807474] +layout_mode = 2 +size_flags_horizontal = 0 +theme_type_variation = &"PlayerRibbon" + +[node name="Label" type="Label" parent="PanelContainer" unique_id=1487597883] +layout_mode = 2 +text = "Language Settings" + +[node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=1302951996] +layout_mode = 2 +script = ExtResource("2_abc") + +[node name="EnglishButton" type="Button" parent="HBoxContainer" unique_id=993974861] +unique_name_in_owner = true +auto_translate_mode = 2 +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"FlatButton" +toggle_mode = true +text = "English" + +[node name="SpanishButton" type="Button" parent="HBoxContainer" unique_id=355814411] +unique_name_in_owner = true +auto_translate_mode = 2 +layout_mode = 2 +size_flags_horizontal = 3 +theme_type_variation = &"FlatButton" +toggle_mode = true +text = "Español" + +[connection signal="pressed" from="HBoxContainer/EnglishButton" to="HBoxContainer" method="_on_button_pressed" binds= ["en"]] +[connection signal="pressed" from="HBoxContainer/SpanishButton" to="HBoxContainer" method="_on_button_pressed" binds= ["es"]] diff --git a/scenes/menus/options/components/options.gd b/scenes/menus/options/components/options.gd index 9d29adb38f..5e30387052 100644 --- a/scenes/menus/options/components/options.gd +++ b/scenes/menus/options/components/options.gd @@ -1,15 +1,18 @@ # SPDX-FileCopyrightText: The Threadbare Authors # SPDX-License-Identifier: MPL-2.0 -extends CenterContainer +extends Control signal back -@onready var back_button: Button = %BackButton +@export var back_button: Button func _ready() -> void: + visibility_changed.connect(_on_visibility_changed) _on_visibility_changed() + back_button.pressed.connect(_on_back_button_pressed) + func _on_visibility_changed() -> void: if visible and back_button: diff --git a/scenes/menus/options/components/settings_toggle.gd b/scenes/menus/options/components/settings_toggle.gd new file mode 100644 index 0000000000..8ac5d6a50f --- /dev/null +++ b/scenes/menus/options/components/settings_toggle.gd @@ -0,0 +1,46 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +extends CheckButton +## A [CheckButton] that toggles a property of [Settings]. + +## The name of a property of the [Settings] singleton. +@export var setting: StringName: + set = set_setting + + +func set_setting(new_value: StringName) -> void: + setting = new_value + update_configuration_warnings() + + +func _get_configuration_warnings() -> PackedStringArray: + var warnings: PackedStringArray + + if not setting: + warnings.append("Setting name is not set.") + elif setting not in Settings: + warnings.append("Settings singleton has no property named " + setting) + + return warnings + + +func _ready() -> void: + if Engine.is_editor_hint(): + return + + # There are two instances of this toggle in the game: one on the title screen, and + # another in the pause overlay. At most one is displayed at a time, so we can keep them in + # synch by reading the setting each time each toggle is displayed. + visibility_changed.connect(_refresh) + _refresh() + + toggled.connect(_on_toggled) + + +func _refresh() -> void: + set_pressed_no_signal(Settings.get(setting)) + + +func _on_toggled(toggled_on: bool) -> void: + Settings.set(setting, toggled_on) diff --git a/scenes/menus/options/components/fullscreen_toggle.gd.uid b/scenes/menus/options/components/settings_toggle.gd.uid similarity index 100% rename from scenes/menus/options/components/fullscreen_toggle.gd.uid rename to scenes/menus/options/components/settings_toggle.gd.uid diff --git a/scenes/menus/options/components/video_settings.tscn b/scenes/menus/options/components/video_settings.tscn index 4c833e3bc1..3b08116e27 100644 --- a/scenes/menus/options/components/video_settings.tscn +++ b/scenes/menus/options/components/video_settings.tscn @@ -1,7 +1,7 @@ [gd_scene format=3 uid="uid://tahf2q1d3e74"] [ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_qb52c"] -[ext_resource type="Script" uid="uid://c63sfg6wgj2uy" path="res://scenes/menus/options/components/fullscreen_toggle.gd" id="2_qb52c"] +[ext_resource type="Script" uid="uid://c63sfg6wgj2uy" path="res://scenes/menus/options/components/settings_toggle.gd" id="2_qb52c"] [node name="VideoSettings" type="VBoxContainer" unique_id=1199621136] offset_left = 96.0 @@ -21,15 +21,17 @@ text = "Video Settings" [node name="GridContainer" type="GridContainer" parent="." unique_id=277212195] layout_mode = 2 -columns = 2 +theme_override_constants/v_separation = 0 -[node name="MusicLabel" type="Label" parent="GridContainer" unique_id=353222812] +[node name="ShowControlsButton" type="CheckButton" parent="GridContainer" unique_id=153771304] layout_mode = 2 -text = "Fullscreen" -horizontal_alignment = 2 +text = "Show Controls" +script = ExtResource("2_qb52c") +setting = &"show_input_hud" -[node name="CheckButton" type="CheckButton" parent="GridContainer" unique_id=409098937] +[node name="FullscreenButton" type="CheckButton" parent="GridContainer" unique_id=409098937] layout_mode = 2 +size_flags_horizontal = 3 +text = "Fullscreen" script = ExtResource("2_qb52c") - -[connection signal="toggled" from="GridContainer/CheckButton" to="." method="_on_check_button_toggled"] +setting = &"fullscreen" diff --git a/scenes/menus/options/options.tscn b/scenes/menus/options/options.tscn index 38bf271f57..ee3a14fc86 100644 --- a/scenes/menus/options/options.tscn +++ b/scenes/menus/options/options.tscn @@ -5,8 +5,9 @@ [ext_resource type="Script" uid="uid://r7cjyiw5log4" path="res://scenes/menus/options/components/options.gd" id="2_cw13b"] [ext_resource type="PackedScene" uid="uid://tahf2q1d3e74" path="res://scenes/menus/options/components/video_settings.tscn" id="4_cw13b"] [ext_resource type="Texture2D" uid="uid://xe25gqovxxpe" path="res://assets/first_party/icons/left_arrow.png" id="5_qdq3g"] +[ext_resource type="PackedScene" uid="uid://w0uscqwgsi4w" path="res://scenes/menus/options/components/language_settings.tscn" id="6_lang"] -[node name="Options" type="CenterContainer" unique_id=2066163370] +[node name="Options" type="CenterContainer" unique_id=2066163370 node_paths=PackedStringArray("back_button")] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -14,6 +15,7 @@ grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("1_ptihp") script = ExtResource("2_cw13b") +back_button = NodePath("PanelContainer/VBoxContainer/BackButton") metadata/_tab_index = 1 [node name="PanelContainer" type="PanelContainer" parent="." unique_id=280848008] @@ -29,6 +31,9 @@ layout_mode = 2 [node name="VideoSettings" parent="PanelContainer/VBoxContainer" unique_id=201104966 instance=ExtResource("4_cw13b")] layout_mode = 2 +[node name="LanguageSettings" parent="PanelContainer/VBoxContainer" unique_id=1730937504 instance=ExtResource("6_lang")] +layout_mode = 2 + [node name="BackButton" type="Button" parent="PanelContainer/VBoxContainer" unique_id=200110196] unique_name_in_owner = true layout_mode = 2 @@ -37,6 +42,3 @@ theme_type_variation = &"FlatButton" text = "Back" icon = ExtResource("5_qdq3g") flat = true - -[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"] -[connection signal="pressed" from="PanelContainer/VBoxContainer/BackButton" to="." method="_on_back_button_pressed"] diff --git a/scenes/menus/splash/components/splash.gd b/scenes/menus/splash/components/splash.gd index 977f3eb034..20a0751e3f 100644 --- a/scenes/menus/splash/components/splash.gd +++ b/scenes/menus/splash/components/splash.gd @@ -9,6 +9,9 @@ extends Control func _ready() -> void: + if ProjectSettings.get_setting(ThreadbareProjectSettings.SKIP_SPLASH): + SceneSwitcher.change_to_file.call_deferred(next_scene) + return logo_stitcher.finished.connect(scene_switch_timer.start) scene_switch_timer.timeout.connect(switch_to_intro) diff --git a/scenes/menus/storybook/components/quest.gd b/scenes/menus/storybook/components/quest.gd index 33958b59f4..0238122966 100644 --- a/scenes/menus/storybook/components/quest.gd +++ b/scenes/menus/storybook/components/quest.gd @@ -15,6 +15,9 @@ enum Status { BROKEN = 2, } +## [Quest] resources must have this filename to be found by the game. +const FILENAME := "quest.tres" + ## The development status of this quest. @export var status: Status = Status.WORK_IN_PROGRESS @@ -39,6 +42,21 @@ enum Status { ## [CollectibleItem]s in the quest. @export_range(0, 6, 1, "suffix:threads") var threads_to_collect: int = 3 +## Whether this is a lore quest (part of the main storyline). +@export var is_lore_quest: bool = false: + set(new_value): + is_lore_quest = new_value + notify_property_list_changed() + +## Whether this quest is skippable (i.e. is the tutorial). Only supported for lore quests. +@export var skippable: bool = false: + set(new_value): + skippable = new_value + notify_property_list_changed() + +## Which abilities to award if the quest is skipped +@export var skip_abilities: Array[Enums.PlayerAbilities] = [] + @export_group("Animation") ## An optional sprite frame library to show in the storybook page for this quest. @@ -52,6 +70,23 @@ enum Status { @export var animation_name: StringName = &"" +## Lists all quests in [param quest_directory]; which is to say, all [Quest] +## resources named [const FILENAME] which are in an immediate subdirectory of +## [param quest_directory]. +## [br][br] +## In Bash terms, this is: [code]$quest_directory/*/quest.tres[/code] +static func enumerate(quest_directory: String) -> Array[Quest]: + var quests: Array[Quest] = [] + + for dir in ResourceLoader.list_directory(quest_directory): + var quest_path := quest_directory.path_join(dir).path_join(FILENAME) + if ResourceLoader.exists(quest_path): + var quest: Quest = ResourceLoader.load(quest_path) + quests.append(quest) + + return quests + + func _validate_property(property: Dictionary) -> void: match property["name"]: "animation_name": @@ -60,6 +95,12 @@ func _validate_property(property: Dictionary) -> void: property.hint_string = ",".join(sprite_frames.get_animation_names()) else: property.usage |= PROPERTY_USAGE_READ_ONLY + "skippable": + if not is_lore_quest: + property.usage = PROPERTY_USAGE_NONE + "skip_abilities": + if not (is_lore_quest and skippable): + property.usage = PROPERTY_USAGE_NONE func _to_string() -> String: diff --git a/scenes/menus/storybook/components/storybook.gd b/scenes/menus/storybook/components/storybook.gd index 3cf3c76a05..c6226ebea9 100644 --- a/scenes/menus/storybook/components/storybook.gd +++ b/scenes/menus/storybook/components/storybook.gd @@ -24,7 +24,8 @@ const QUEST_RESOURCE_NAME := "quest.tres" ## Directory to scan for quests. This directory should have 1 or more subdirectories, each of which ## have a [code]quest.tres[/code] file within. -@export_dir var quest_directory: String = "res://scenes/quests/story_quests" +@export_dir var quest_directory: String = "res://scenes/quests/story_quests": + set = _set_quest_directory var _quests: Array[Quest] = [] var _current_spread_index: int = -1 @@ -41,29 +42,22 @@ var _navigation_locked: bool = false func _enumerate_quests() -> Array[Quest]: - var has_template: bool = false - var quests: Array[Quest] = [] + var quests: Array[Quest] = Quest.enumerate(quest_directory) + var template_index := quests.find(STORY_QUEST_TEMPLATE) + if template_index != -1: + quests[template_index] = TEMPLATE_QUEST_METADATA - for dir in ResourceLoader.list_directory(quest_directory): - var quest_path := quest_directory.path_join(dir).path_join(QUEST_RESOURCE_NAME) - if ResourceLoader.exists(quest_path): - var quest: Quest = ResourceLoader.load(quest_path) - if quest == STORY_QUEST_TEMPLATE: - has_template = true - else: - quests.append(quest) + return quests - if has_template: - quests.append(TEMPLATE_QUEST_METADATA) - return quests +func _set_quest_directory(new_value: String) -> void: + quest_directory = new_value + _quests = _enumerate_quests() func _ready() -> void: animated_book.animation_finished.connect(_on_animation_finished) - _quests = _enumerate_quests() - var previous_button: Button = null for i in _quests.size(): var quest: Quest = _quests[i] @@ -94,6 +88,9 @@ func _ready() -> void: ## Show/hide index or detail pages func _update_page_visibility() -> void: + left_button.visible = _current_spread_index > 0 + right_button.visible = _current_spread_index < _quests.size() + if _current_spread_index == 0: quest_container.visible = true storybook_page.visible = false @@ -127,10 +124,8 @@ func _switch_to_page(spread_index: int) -> void: if total_spreads <= 1: return - if spread_index < 0: - spread_index = total_spreads - 1 - if spread_index >= total_spreads: - spread_index = 0 + if spread_index < 0 or spread_index >= total_spreads: + return if spread_index == _current_spread_index: return @@ -195,3 +190,7 @@ func _on_back_button_pressed() -> void: func reset_focus() -> void: _switch_to_page(0) + + +func has_quests() -> bool: + return not _quests.is_empty() diff --git a/scenes/menus/storybook/components/storybook_page.gd b/scenes/menus/storybook/components/storybook_page.gd index be08a67b9a..d9c8e77b35 100644 --- a/scenes/menus/storybook/components/storybook_page.gd +++ b/scenes/menus/storybook/components/storybook_page.gd @@ -18,33 +18,50 @@ var quest: Quest = preload("uid://dwl8letaanhhi"): @onready var play_button: Button = %PlayButton -func _set_quest(new_quest: Quest) -> void: - quest = new_quest +# This is an in-joke/Easter egg for the Endless Access team +static func _chadify(author_name: String) -> String: + if author_name != "Justin Bourque": + return author_name - if not is_node_ready(): - return + var options := [ + author_name, + "Chad Bourque", + "Eric Bourque", + ] + return options.pick_random() - title.text = quest.title.strip_edges() - description.text = quest.description.strip_edges() - match quest.authors.size(): +func _make_author_list() -> String: + var names := quest.authors.map(_chadify) + match names.size(): 0: - authors.text = "" + return "" 1: - authors.text = "A story by " + quest.authors[0] + return "A story by " + names[0] _: - authors.text = ( + return ( " " . join( [ "A story by", - ", ".join(quest.authors.slice(0, -1)), + ", ".join(names.slice(0, -1)), "and", - quest.authors[-1], + names[-1], ] ) ) + +func _set_quest(new_quest: Quest) -> void: + quest = new_quest + + if not is_node_ready(): + return + + title.text = quest.title.strip_edges() + description.text = quest.description.strip_edges() + authors.text = _make_author_list() + if quest.affiliation: authors.text += " of " + quest.affiliation diff --git a/scenes/menus/title/components/logos/threadbare_logo_animation.tres b/scenes/menus/title/components/logos/threadbare_logo_animation.tres index a07e48c053..66d432ddef 100644 --- a/scenes/menus/title/components/logos/threadbare_logo_animation.tres +++ b/scenes/menus/title/components/logos/threadbare_logo_animation.tres @@ -2,134 +2,134 @@ [ext_resource type="Texture2D" uid="uid://djtwhx3j8di" path="res://assets/first_party/logo/threadbare-logo-animation.png" id="1_ko1xx"] -[sub_resource type="AtlasTexture" id="AtlasTexture_68a5i"] +[sub_resource type="AtlasTexture" id="AtlasTexture_2ucsa"] atlas = ExtResource("1_ko1xx") region = Rect2(0, 0, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_q86al"] +[sub_resource type="AtlasTexture" id="AtlasTexture_4brot"] atlas = ExtResource("1_ko1xx") region = Rect2(768, 0, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_l8ymi"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ojjs6"] atlas = ExtResource("1_ko1xx") region = Rect2(1536, 0, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_xkbot"] +[sub_resource type="AtlasTexture" id="AtlasTexture_gfl5b"] atlas = ExtResource("1_ko1xx") region = Rect2(2304, 0, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_a00we"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ouncg"] atlas = ExtResource("1_ko1xx") region = Rect2(3072, 0, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_shy76"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ah2fs"] atlas = ExtResource("1_ko1xx") region = Rect2(3840, 0, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_46u6r"] +[sub_resource type="AtlasTexture" id="AtlasTexture_27w0d"] atlas = ExtResource("1_ko1xx") -region = Rect2(4608, 0, 768, 768) +region = Rect2(0, 768, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_02i4c"] +[sub_resource type="AtlasTexture" id="AtlasTexture_n1n0u"] atlas = ExtResource("1_ko1xx") -region = Rect2(5376, 0, 768, 768) +region = Rect2(768, 768, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_w4s5t"] +[sub_resource type="AtlasTexture" id="AtlasTexture_y0m1b"] atlas = ExtResource("1_ko1xx") -region = Rect2(6144, 0, 768, 768) +region = Rect2(1536, 768, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_7oqoo"] +[sub_resource type="AtlasTexture" id="AtlasTexture_3pvvb"] atlas = ExtResource("1_ko1xx") -region = Rect2(6912, 0, 768, 768) +region = Rect2(2304, 768, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_0wk6b"] +[sub_resource type="AtlasTexture" id="AtlasTexture_hsrta"] atlas = ExtResource("1_ko1xx") -region = Rect2(7680, 0, 768, 768) +region = Rect2(3072, 768, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_eneyu"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ts3p4"] atlas = ExtResource("1_ko1xx") -region = Rect2(8448, 0, 768, 768) +region = Rect2(3840, 768, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_skuqp"] +[sub_resource type="AtlasTexture" id="AtlasTexture_7d7mc"] atlas = ExtResource("1_ko1xx") -region = Rect2(9216, 0, 768, 768) +region = Rect2(0, 1536, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_fo7js"] +[sub_resource type="AtlasTexture" id="AtlasTexture_lhhrp"] atlas = ExtResource("1_ko1xx") -region = Rect2(9984, 0, 768, 768) +region = Rect2(768, 1536, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_1mk7p"] +[sub_resource type="AtlasTexture" id="AtlasTexture_recp5"] atlas = ExtResource("1_ko1xx") -region = Rect2(10752, 0, 768, 768) +region = Rect2(1536, 1536, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_vwpf6"] +[sub_resource type="AtlasTexture" id="AtlasTexture_bmbvp"] atlas = ExtResource("1_ko1xx") -region = Rect2(11520, 0, 768, 768) +region = Rect2(2304, 1536, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_bneys"] +[sub_resource type="AtlasTexture" id="AtlasTexture_kvigo"] atlas = ExtResource("1_ko1xx") -region = Rect2(12288, 0, 768, 768) +region = Rect2(3072, 1536, 768, 768) -[sub_resource type="AtlasTexture" id="AtlasTexture_xa8xa"] +[sub_resource type="AtlasTexture" id="AtlasTexture_3yfxn"] atlas = ExtResource("1_ko1xx") -region = Rect2(13056, 0, 768, 768) +region = Rect2(3840, 1536, 768, 768) [resource] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_68a5i") +"texture": SubResource("AtlasTexture_2ucsa") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_q86al") +"texture": SubResource("AtlasTexture_4brot") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_l8ymi") +"texture": SubResource("AtlasTexture_ojjs6") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_xkbot") +"texture": SubResource("AtlasTexture_gfl5b") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_a00we") +"texture": SubResource("AtlasTexture_ouncg") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_shy76") +"texture": SubResource("AtlasTexture_ah2fs") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_46u6r") +"texture": SubResource("AtlasTexture_27w0d") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_02i4c") +"texture": SubResource("AtlasTexture_n1n0u") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_w4s5t") +"texture": SubResource("AtlasTexture_y0m1b") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_7oqoo") +"texture": SubResource("AtlasTexture_3pvvb") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_0wk6b") +"texture": SubResource("AtlasTexture_hsrta") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_eneyu") +"texture": SubResource("AtlasTexture_ts3p4") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_skuqp") +"texture": SubResource("AtlasTexture_7d7mc") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_fo7js") +"texture": SubResource("AtlasTexture_lhhrp") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_1mk7p") +"texture": SubResource("AtlasTexture_recp5") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_vwpf6") +"texture": SubResource("AtlasTexture_bmbvp") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_bneys") +"texture": SubResource("AtlasTexture_kvigo") }, { "duration": 5.0, -"texture": SubResource("AtlasTexture_xa8xa") +"texture": SubResource("AtlasTexture_3yfxn") }], "loop": false, "name": &"appear", diff --git a/scenes/menus/title/components/main_menu.tscn b/scenes/menus/title/components/main_menu.tscn index 3393e199a7..378d0f2259 100644 --- a/scenes/menus/title/components/main_menu.tscn +++ b/scenes/menus/title/components/main_menu.tscn @@ -3,8 +3,8 @@ [ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_vmxej"] [ext_resource type="Script" uid="uid://bkl8j1as8ylag" path="res://scenes/menus/title/components/main_menu.gd" id="1_xuf5f"] [ext_resource type="Script" uid="uid://dfx8s2ybd11mt" path="res://scenes/menus/storybook/components/animated_texture_rect.gd" id="4_rpgwp"] -[ext_resource type="Script" uid="uid://i4urwefxrrdt" path="res://scenes/menus/title/components/version_label.gd" id="4_snvmp"] -[ext_resource type="SpriteFrames" uid="uid://bg538lufloka6" path="res://scenes/menus/title/components/threadbare_logo_animation.tres" id="5_rpgwp"] +[ext_resource type="Script" uid="uid://i4urwefxrrdt" path="res://addons/threadbare_git_describe/version_label.gd" id="4_snvmp"] +[ext_resource type="SpriteFrames" uid="uid://bg538lufloka6" path="res://scenes/menus/title/components/logos/threadbare_logo_animation.tres" id="5_rpgwp"] [node name="MainMenu" type="Control" unique_id=1449128276] layout_mode = 3 diff --git a/scenes/menus/title/components/title_screen.gd b/scenes/menus/title/components/title_screen.gd index dfb2533736..5986388f72 100644 --- a/scenes/menus/title/components/title_screen.gd +++ b/scenes/menus/title/components/title_screen.gd @@ -2,13 +2,22 @@ # SPDX-License-Identifier: MPL-2.0 extends Control -@export_file("*.tscn") var intro_scene: String +@export var tutorial_quest: Quest @onready var main_menu: Control = %MainMenu @onready var options: Control = %Options @onready var credits: Control = %Credits +func _ready() -> void: + if ProjectSettings.get_setting(ThreadbareProjectSettings.SKIP_SPLASH): + var saved_scene: Dictionary = GameState.restore() + if saved_scene["scene_path"]: + SceneSwitcher.change_to_file(saved_scene["scene_path"], saved_scene["spawn_point"]) + else: + _on_start_pressed() + + func _input(event: InputEvent) -> void: if event.is_action_pressed(&"pause"): get_viewport().set_input_as_handled() @@ -30,14 +39,10 @@ func _on_main_menu_continue_pressed() -> void: func _on_start_pressed() -> void: if GameState.can_restore(): GameState.clear() - ( - SceneSwitcher - . change_to_file_with_transition( - intro_scene, - ^"", - Transition.Effect.FADE, - Transition.Effect.FADE, - ) + + GameState.start_quest(tutorial_quest) + SceneSwitcher.change_to_file_with_transition( + tutorial_quest.first_scene, ^"", Transition.Effect.FADE, Transition.Effect.FADE ) diff --git a/scenes/menus/title/components/version_label.gd b/scenes/menus/title/components/version_label.gd deleted file mode 100644 index dd36d4fa27..0000000000 --- a/scenes/menus/title/components/version_label.gd +++ /dev/null @@ -1,7 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends Label - - -func _ready() -> void: - text = ProjectSettings.get(&"application/config/version") diff --git a/scenes/menus/title/title_screen.tscn b/scenes/menus/title/title_screen.tscn index 9e3d24b14f..f730c3a8cf 100644 --- a/scenes/menus/title/title_screen.tscn +++ b/scenes/menus/title/title_screen.tscn @@ -2,6 +2,7 @@ [ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_kj1pq"] [ext_resource type="Script" uid="uid://c6nc0jka32ow2" path="res://scenes/menus/title/components/title_screen.gd" id="2_0vy2n"] +[ext_resource type="Resource" uid="uid://0dcffjdxn6g2" path="res://scenes/quests/lore_quests/quest_000/quest.tres" id="3_5uobg"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="4_c6kyi"] [ext_resource type="PackedScene" uid="uid://wgmdsj1sbmja" path="res://scenes/menus/title/components/main_menu.tscn" id="5_0vy2n"] [ext_resource type="AudioStream" uid="uid://kc657macgib4" path="res://assets/first_party/music/Threadbare_Main_Loud.ogg" id="5_5uobg"] @@ -20,7 +21,7 @@ grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("1_kj1pq") script = ExtResource("2_0vy2n") -intro_scene = "uid://dow5vc7yb5k2c" +tutorial_quest = ExtResource("3_5uobg") [node name="BackgroundMusic" parent="." unique_id=2002868584 instance=ExtResource("4_c6kyi")] stream = ExtResource("5_5uobg") diff --git a/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_house.tscn b/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_house.tscn new file mode 100644 index 0000000000..a574043331 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_house.tscn @@ -0,0 +1,26 @@ +[gd_scene format=3 uid="uid://b31v66516y4lg"] + +[ext_resource type="Script" uid="uid://diknsuw3mtj1n" path="res://scenes/game_elements/props/decoration/decoration.gd" id="1_36ann"] +[ext_resource type="Texture2D" uid="uid://be3845r07rhkm" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Red_Stage3.png" id="2_uhn7e"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_sr1lu"] +size = Vector2(62.7499, 97.0001) + +[node name="RuinedHouse" type="Node2D" unique_id=2016829349] +editor_description = "This house has no light effect at night." +script = ExtResource("1_36ann") + +[node name="StaticBody2D" type="StaticBody2D" parent="." unique_id=143281131] +position = Vector2(1, -98) +collision_layer = 16 +collision_mask = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D" unique_id=477180314] +position = Vector2(-0.999973, 65.3749) +rotation = -1.5708 +shape = SubResource("RectangleShape2D_sr1lu") + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1147973925] +unique_name_in_owner = true +position = Vector2(0, -72) +texture = ExtResource("2_uhn7e") diff --git a/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.dialogue b/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.dialogue new file mode 100644 index 0000000000..cc73e9ac7b --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.dialogue @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +StoryWeaver: Where am I? What happened? +StoryWeaver: I should explore to see if I can find anyone else. +=> END + +~ townie +Arun: StoryWeaver, I'm so glad you've come. +Arun: This was once a thriving village, until the Void came. +Arun: It was gradual at first, so I didn't pay much attention... +Arun: ...and then, before I knew it, I was the only one left. +Arun: If only I could get to Fray's End, I'm sure the Elders would know what to do. +Arun: I'm afraid to make the journey alone. Will you come with me to Fray's End? +- Yes! +- OK... +Arun: Great! Follow me! +do start_townie_walking() +=> END diff --git a/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.dialogue.import b/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.dialogue.import new file mode 100644 index 0000000000..15a21709ee --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://c1s10t3ts8or2" +path="res://.godot/imported/ruined_village.dialogue-b8cf64f58f8148b80c3b5c7093173b16.tres" + +[deps] + +source_file="res://scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.dialogue" +dest_files=["res://.godot/imported/ruined_village.dialogue-b8cf64f58f8148b80c3b5c7093173b16.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.gd b/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.gd new file mode 100644 index 0000000000..7d337bd172 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.gd @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D +# Variables/methods in this file are accessed from dialogue. + +@onready var townie_interact_area: InteractArea = %InteractArea +@onready var bridge_blocker: StaticBody2D = %BridgeBlocker +@onready var path_walk_behavior: PathWalkBehavior = %PathWalkBehavior + + +func is_townie_walking() -> bool: + return townie_interact_area.disabled + + +func start_townie_walking() -> void: + # Prevent talking a second time + townie_interact_area.disabled = true + # Allow the player to cross the bridge + bridge_blocker.collision_layer = 0 + # Start the townie walking + path_walk_behavior.process_mode = Node.PROCESS_MODE_INHERIT diff --git a/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.gd.uid b/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.gd.uid new file mode 100644 index 0000000000..58d3376b63 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.gd.uid @@ -0,0 +1 @@ +uid://c2nnjybwiickt diff --git a/scenes/quests/lore_quests/quest_000/1_ruined_village/ruined_village.tscn b/scenes/quests/lore_quests/quest_000/1_ruined_village/ruined_village.tscn new file mode 100644 index 0000000000..d852470c04 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/1_ruined_village/ruined_village.tscn @@ -0,0 +1,348 @@ +[gd_scene format=4 uid="uid://ck22vke6i1jyq"] + +[ext_resource type="Script" uid="uid://c2nnjybwiickt" path="res://scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.gd" id="1_3xp2p"] +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="1_r4ihb"] +[ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="2_16kft"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="2_i2jms"] +[ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="3_3knxh"] +[ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="3_i2jms"] +[ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="5_8bo2y"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="5_joarb"] +[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="6_b28g0"] +[ext_resource type="Script" uid="uid://c8405c212rbn6" path="res://scenes/game_elements/props/background_music/components/background_music.gd" id="7_teve8"] +[ext_resource type="PackedScene" uid="uid://bp20cjimwi8l0" path="res://scenes/game_elements/props/buildings/house/house_2.tscn" id="8_23cxv"] +[ext_resource type="AudioStream" uid="uid://dk10o5q87xbct" path="res://assets/first_party/music/Threadbare Loop_Main_Bridge_01.ogg" id="8_j73a3"] +[ext_resource type="PackedScene" uid="uid://b31v66516y4lg" path="res://scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_house.tscn" id="9_4gmak"] +[ext_resource type="Script" uid="uid://bdhjixygupit1" path="res://scenes/game_elements/props/area_filler/area_filler.gd" id="11_4gmak"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="11_ebxxp"] +[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="12_0g3ol"] +[ext_resource type="Texture2D" uid="uid://0xceungm1p8a" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Red_Stage2.png" id="12_4gmak"] +[ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="12_75rxs"] +[ext_resource type="SpriteFrames" uid="uid://djwymcffy83" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_red.tres" id="13_ebxxp"] +[ext_resource type="Texture2D" uid="uid://lylpujgq8e4v" path="res://scenes/game_elements/props/buildings/house/components/House_Patches_Red_Stage1.png" id="15_ebxxp"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="16_75rxs"] +[ext_resource type="Resource" uid="uid://c1s10t3ts8or2" path="res://scenes/quests/lore_quests/quest_000/1_ruined_village/components/ruined_village.dialogue" id="17_sxarn"] +[ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="19_75rxs"] +[ext_resource type="Script" uid="uid://id28maao3vdy" path="res://scenes/game_logic/walk_behaviors/path_walk_behavior.gd" id="19_iy1ja"] +[ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="20_8bo2y"] +[ext_resource type="PackedScene" uid="uid://dttyvh6kyru5y" path="res://scenes/game_elements/props/decoration/butterfly/butterfly.tscn" id="23_iy1ja"] +[ext_resource type="Texture2D" uid="uid://cfkb8gpxylplg" path="res://scenes/game_elements/props/buildings/house/components/House_Patches_Red_Stage3.png" id="25_i7hju"] +[ext_resource type="SpriteFrames" uid="uid://b81ibkdhsfthe" path="res://scenes/game_elements/props/decoration/butterfly/components/butterfly_flower_loop_1_red.tres" id="25_jpujn"] +[ext_resource type="PackedScene" uid="uid://cfvr32bp2achm" path="res://scenes/game_elements/props/decoration/rock/fabric_rock.tscn" id="25_tweot"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="26_3knxh"] +[ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="26_jpujn"] +[ext_resource type="SpriteFrames" uid="uid://bgckvdkxuxrgh" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_red_large.tres" id="27_tweot"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_i7hju"] +size = Vector2(52, 61) + +[sub_resource type="Resource" id="Resource_3knxh"] +script = ExtResource("20_8bo2y") +walk_speed = 200.0 +run_speed = 200.0 +metadata/_custom_type_script = "uid://csev4hv57utxv" + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_sxarn"] +size = Vector2(64, 64) + +[sub_resource type="Curve2D" id="Curve2D_iy1ja"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2553, 164, 0, 0, 0, 0, 2918, 158) +} +point_count = 2 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_iy1ja"] +size = Vector2(64, 64) + +[node name="RuinedVillage" type="Node2D" unique_id=1305901330] +editor_description = "Introduces moving around the world and interacting with things. + +TimeAndWeather is set to dawn and a very slow timescale as a crude way to manually progress the time of day through this tutorial quest." +script = ExtResource("1_3xp2p") + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=626546499] + +[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=1418081199] +tile_map_data = PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAsAAAAAAAAAAAABAAAAAAAAAAAAAAABAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAABAAUAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAABAAkAAAAAAAAAAAABAAoAAAAAAAAAAAABAAsAAAAAAAAAAAACAAAAAAAAAAAAAAACAAEAAAAAAAAAAAACAAIAAAAAAAAAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAACAAUAAAAAAAAAAAACAAYAAAAAAAAAAAACAAcAAAAAAAAAAAACAAgAAAAAAAAAAAACAAkAAAAAAAAAAAACAAoAAAAAAAAAAAACAAsAAAAAAAAAAAADAAAAAAAAAAAAAAADAAEAAAAAAAAAAAADAAIAAAAAAAAAAAADAAMAAAAAAAAAAAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAADAAYAAAAAAAAAAAADAAcAAAAAAAAAAAADAAgAAAAAAAAAAAADAAkAAAAAAAAAAAADAAoAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAEAAAAAAAAAAAAEAAIAAAAAAAAAAAAEAAMAAAAAAAAAAAAEAAQAAAAAAAAAAAAEAAUAAAAAAAAAAAAEAAYAAAAAAAAAAAAEAAcAAAAAAAAAAAAEAAgAAAAAAAAAAAAEAAkAAAAAAAAAAAAEAAoAAAAAAAAAAAAEAAsAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAEAAAAAAAAAAAAFAAIAAAAAAAAAAAAFAAMAAAAAAAAAAAAFAAQAAAAAAAAAAAAFAAUAAAAAAAAAAAAFAAYAAAAAAAAAAAAFAAcAAAAAAAAAAAAFAAgAAAAAAAAAAAAFAAkAAAAAAAAAAAAFAAoAAAAAAAAAAAAFAAsAAAAAAAAAAAAGAAAAAAAAAAAAAAAGAAEAAAAAAAAAAAAGAAIAAAAAAAAAAAAGAAMAAAAAAAAAAAAGAAQAAAAAAAAAAAAGAAUAAAAAAAAAAAAGAAYAAAAAAAAAAAAGAAcAAAAAAAAAAAAGAAgAAAAAAAAAAAAGAAkAAAAAAAAAAAAGAAoAAAAAAAAAAAAGAAsAAAAAAAAAAAAHAAAAAAAAAAAAAAAHAAEAAAAAAAAAAAAHAAIAAAAAAAAAAAAHAAMAAAAAAAAAAAAHAAQAAAAAAAAAAAAHAAUAAAAAAAAAAAAHAAYAAAAAAAAAAAAHAAcAAAAAAAAAAAAHAAgAAAAAAAAAAAAHAAkAAAAAAAAAAAAHAAoAAAAAAAAAAAAHAAsAAAAAAAAAAAAEAPz/AAAAAAAAAAAEAP3/AAAAAAAAAAAEAP7/AAAAAAAAAAAEAP//AAAAAAAAAAAFAPz/AAAAAAAAAAAFAP3/AAAAAAAAAAAFAP7/AAAAAAAAAAAFAP//AAAAAAAAAAAGAPz/AAAAAAAAAAAGAP3/AAAAAAAAAAAGAP7/AAAAAAAAAAAGAP//AAAAAAAAAAAHAPz/AAAAAAAAAAAHAP3/AAAAAAAAAAAHAP7/AAAAAAAAAAAHAP//AAAAAAAAAAAIAPz/AAAAAAAAAAAIAP3/AAAAAAAAAAAJAPz/AAAAAAAAAAAJAP3/AAAAAAAAAAAKAPz/AAAAAAAAAAAKAP3/AAAAAAAAAAALAPz/AAAAAAAAAAALAP3/AAAAAAAAAAAMAPz/AAAAAAAAAAAMAP3/AAAAAAAAAAANAPz/AAAAAAAAAAANAP3/AAAAAAAAAAAOAPz/AAAAAAAAAAAOAP3/AAAAAAAAAAAPAPz/AAAAAAAAAAAPAP3/AAAAAAAAAAAQAPz/AAAAAAAAAAAQAP3/AAAAAAAAAAARAPz/AAAAAAAAAAARAP3/AAAAAAAAAAASAPz/AAAAAAAAAAASAP3/AAAAAAAAAAATAPz/AAAAAAAAAAATAP3/AAAAAAAAAAAUAPz/AAAAAAAAAAAUAP3/AAAAAAAAAAAVAPz/AAAAAAAAAAAVAP3/AAAAAAAAAAAWAPz/AAAAAAAAAAAWAP3/AAAAAAAAAAAXAPz/AAAAAAAAAAAXAP3/AAAAAAAAAAAYAPz/AAAAAAAAAAAYAP3/AAAAAAAAAAAZAPz/AAAAAAAAAAAZAP3/AAAAAAAAAAAaAPz/AAAAAAAAAAAaAP3/AAAAAAAAAAAbAPz/AAAAAAAAAAAbAP3/AAAAAAAAAAAcAPz/AAAAAAAAAAAcAP3/AAAAAAAAAAAdAPz/AAAAAAAAAAAdAP3/AAAAAAAAAAAeAPz/AAAAAAAAAAAeAP3/AAAAAAAAAAAfAPz/AAAAAAAAAAAfAP3/AAAAAAAAAAAgAPz/AAAAAAAAAAAgAP3/AAAAAAAAAAAhAPz/AAAAAAAAAAAhAP3/AAAAAAAAAAAcAAYAAAAAAAAAAAAcAAcAAAAAAAAAAAAcAAgAAAAAAAAAAAAcAAkAAAAAAAAAAAAcAAoAAAAAAAAAAAAcAAsAAAAAAAAAAAAdAAYAAAAAAAAAAAAdAAcAAAAAAAAAAAAdAAgAAAAAAAAAAAAdAAkAAAAAAAAAAAAdAAoAAAAAAAAAAAAdAAsAAAAAAAAAAAAeAAYAAAAAAAAAAAAeAAcAAAAAAAAAAAAeAAgAAAAAAAAAAAAeAAkAAAAAAAAAAAAeAAoAAAAAAAAAAAAeAAsAAAAAAAAAAAAfAAYAAAAAAAAAAAAfAAcAAAAAAAAAAAAfAAgAAAAAAAAAAAAfAAkAAAAAAAAAAAAfAAoAAAAAAAAAAAAfAAsAAAAAAAAAAAAgAAYAAAAAAAAAAAAgAAcAAAAAAAAAAAAgAAgAAAAAAAAAAAAgAAkAAAAAAAAAAAAgAAoAAAAAAAAAAAAgAAsAAAAAAAAAAAAhAAYAAAAAAAAAAAAhAAcAAAAAAAAAAAAhAAgAAAAAAAAAAAAhAAkAAAAAAAAAAAAhAAoAAAAAAAAAAAAhAAsAAAAAAAAAAAAiAAYAAAAAAAAAAAAiAAcAAAAAAAAAAAAiAAgAAAAAAAAAAAAiAAkAAAAAAAAAAAAiAAoAAAAAAAAAAAAiAAsAAAAAAAAAAAAiAPz/AAAAAAAAAAAiAP3/AAAAAAAAAAAjAPz/AAAAAAAAAAAjAP3/AAAAAAAAAAAkAPz/AAAAAAAAAAAkAP3/AAAAAAAAAAAlAPz/AAAAAAAAAAAlAP3/AAAAAAAAAAAmAPz/AAAAAAAAAAAmAP3/AAAAAAAAAAAnAPz/AAAAAAAAAAAnAP3/AAAAAAAAAAAoAPz/AAAAAAAAAAAoAP3/AAAAAAAAAAApAPz/AAAAAAAAAAApAP3/AAAAAAAAAAAqAPz/AAAAAAAAAAAqAP3/AAAAAAAAAAArAPz/AAAAAAAAAAArAP3/AAAAAAAAAAAsAPz/AAAAAAAAAAAsAP3/AAAAAAAAAAAsAP7/AAAAAAAAAAAsAP//AAAAAAAAAAAsAAAAAAAAAAAAAAAsAAEAAAAAAAAAAAAsAAIAAAAAAAAAAQAsAAMAAAAAAAAAAAAsAAQAAAAAAAAAAAAsAAUAAAAAAAAAAAAsAAYAAAAAAAAAAAAsAAcAAAAAAAAAAAAtAPz/AAAAAAAAAAAtAP3/AAAAAAAAAAAtAP7/AAAAAAAAAAAtAP//AAAAAAAAAAAtAAAAAAAAAAAAAAAtAAEAAAAAAAAAAAAtAAIAAAAAAAAAAAAtAAMAAAAAAAAAAAAtAAQAAAAAAAAAAAAtAAUAAAAAAAAAAAAtAAYAAAAAAAAAAAAtAAcAAAAAAAAAAAAuAPz/AAAAAAAAAAAuAP3/AAAAAAAAAAAuAP7/AAAAAAAAAAAuAP//AAAAAAAAAAAuAAAAAAAAAAAAAAAuAAEAAAAAAAAAAAAuAAIAAAAAAAAAAAAuAAMAAAAAAAAAAAAuAAQAAAAAAAAAAAAuAAUAAAAAAAAAAAAuAAYAAAAAAAAAAAAuAAcAAAAAAAAAAAAvAPz/AAAAAAAAAAAvAP3/AAAAAAAAAAAvAP7/AAAAAAAAAAAvAP//AAAAAAAAAAAvAAAAAAAAAAAAAAAvAAEAAAAAAAAAAAAvAAIAAAAAAAAAAAAvAAMAAAAAAAAAAAAvAAQAAAAAAAAAAAAvAAUAAAAAAAAAAAAvAAYAAAAAAAAAAAAvAAcAAAAAAAAAAAAwAPz/AAAAAAAAAAAwAP3/AAAAAAAAAAAwAP7/AAAAAAAAAAAwAP//AAAAAAAAAAAwAAAAAAAAAAAAAAAwAAEAAAAAAAAAAAAwAAIAAAAAAAAAAAAwAAMAAAAAAAAAAAAwAAQAAAAAAAAAAAAwAAUAAAAAAAAAAAAwAAYAAAAAAAAAAAAwAAcAAAAAAAAAAAAxAPz/AAAAAAAAAAAxAP3/AAAAAAAAAAAxAP7/AAAAAAAAAAAxAP//AAAAAAAAAAAxAAAAAAAAAAAAAAAxAAEAAAAAAAAAAAAxAAIAAAAAAAAAAAAxAAMAAAAAAAAAAAAxAAQAAAAAAAAAAAAxAAUAAAAAAAAAAAAxAAYAAAAAAAAAAAAxAAcAAAAAAAAAAAAyAPz/AAAAAAAAAAAyAP3/AAAAAAAAAAAyAP7/AAAAAAAAAAAyAP//AAAAAAAAAAAyAAAAAAAAAAAAAAAyAAEAAAAAAAAAAAAyAAIAAAAAAAAAAAAyAAMAAAAAAAAAAAAyAAQAAAAAAAAAAAAyAAUAAAAAAAAAAAAyAAYAAAAAAAAAAAAyAAcAAAAAAAAAAAAzAPz/AAAAAAAAAAAzAP3/AAAAAAAAAAAzAP7/AAAAAAAAAAAzAP//AAAAAAAAAAAzAAAAAAAAAAAAAAAzAAEAAAAAAAAAAAAzAAIAAAAAAAAAAAAzAAMAAAAAAAAAAAAzAAQAAAAAAAAAAAAzAAUAAAAAAAAAAAAzAAYAAAAAAAAAAAAzAAcAAAAAAAAAAAA0APz/AAAAAAAAAAA0AP3/AAAAAAAAAAA0AP7/AAAAAAAAAAA0AP//AAAAAAAAAAA0AAAAAAAAAAAAAAA0AAEAAAAAAAAAAAA0AAIAAAAAAAAAAAA0AAMAAAAAAAAAAAA0AAQAAAAAAAAAAAA0AAUAAAAAAAAAAAA0AAYAAAAAAAAAAAA0AAcAAAAAAAAAAAA1APz/AAAAAAAAAAA1AP3/AAAAAAAAAAA1AP7/AAAAAAAAAAA1AP//AAAAAAAAAAA1AAAAAAAAAAAAAAA1AAEAAAAAAAAAAAA1AAIAAAAAAAAAAAA1AAMAAAAAAAAAAAA1AAQAAAAAAAAAAAA1AAUAAAAAAAAAAAA1AAYAAAAAAAAAAAA1AAcAAAAAAAAAAAAjAAYAAAAAAAAAAAAjAAcAAAAAAAAAAAAjAAgAAAAAAAAAAAAjAAkAAAAAAAAAAAAkAAYAAAAAAAAAAAAkAAcAAAAAAAAAAAAkAAgAAAAAAAAAAAAkAAkAAAAAAAAAAAAlAAYAAAAAAAAAAAAlAAcAAAAAAAAAAAAlAAgAAAAAAAAAAAAlAAkAAAAAAAAAAAAmAAYAAAAAAAAAAAAmAAcAAAAAAAAAAAAmAAgAAAAAAAAAAAAmAAkAAAAAAAAAAAAnAAYAAAAAAAAAAAAnAAcAAAAAAAAAAAAnAAgAAAAAAAAAAAAnAAkAAAAAAAAAAAAoAAYAAAAAAAAAAAAoAAcAAAAAAAAAAAAoAAgAAAAAAAAAAAAoAAkAAAAAAAAAAAApAAYAAAAAAAAAAAApAAcAAAAAAAAAAAApAAgAAAAAAAAAAAApAAkAAAAAAAAAAAAqAAYAAAAAAAAAAAAqAAcAAAAAAAAAAAAqAAgAAAAAAAAAAAAqAAkAAAAAAAAAAAArAAYAAAAAAAAAAAArAAcAAAAAAAAAAAArAAgAAAAAAAAAAAArAAkAAAAAAAAAAAAsAAgAAAAAAAAAAAAsAAkAAAAAAAAAAAAtAAgAAAAAAAAAAAAtAAkAAAAAAAAAAAAuAAgAAAAAAAAAAAAuAAkAAAAAAAAAAAAvAAgAAAAAAAAAAAAvAAkAAAAAAAAAAAAwAAgAAAAAAAAAAAAwAAkAAAAAAAAAAAAxAAgAAAAAAAAAAAAxAAkAAAAAAAAAAAAyAAgAAAAAAAAAAAAyAAkAAAAAAAAAAAAzAAgAAAAAAAAAAAAzAAkAAAAAAAAAAAA0AAgAAAAAAAAAAAA0AAkAAAAAAAAAAAA1AAgAAAAAAAAAAAA1AAkAAAAAAAAAAAAIAAgAAAAAAAAAAAAIAAkAAAAAAAAAAAAIAAoAAAAAAAAAAAAJAAgAAAAAAAAAAAAJAAkAAAAAAAAAAAAJAAoAAAAAAAAAAAAKAAgAAAAAAAAAAAAKAAkAAAAAAAAAAAAKAAoAAAAAAAAAAAALAAgAAAAAAAAAAAALAAkAAAAAAAAAAAALAAoAAAAAAAAAAAAMAAgAAAAAAAAAAAAMAAkAAAAAAAAAAAAMAAoAAAAAAAAAAAANAAgAAAAAAAAAAAANAAkAAAAAAAAAAAANAAoAAAAAAAAAAAAOAAgAAAAAAAAAAAAOAAkAAAAAAAAAAAAOAAoAAAAAAAAAAAAPAAgAAAAAAAAAAAAPAAkAAAAAAAAAAAAPAAoAAAAAAAAAAAAQAAgAAAAAAAAAAQAQAAkAAAAAAAAAAQAQAAoAAAAAAAAAAQARAAgAAAAAAAAAAAARAAkAAAAAAAAAAAARAAoAAAAAAAAAAAASAAgAAAAAAAAAAAASAAkAAAAAAAAAAAASAAoAAAAAAAAAAAATAAgAAAAAAAAAAAATAAkAAAAAAAAAAAATAAoAAAAAAAAAAAAUAAgAAAAAAAAAAAAUAAkAAAAAAAAAAAAUAAoAAAAAAAAAAAAVAAgAAAAAAAAAAAAVAAkAAAAAAAAAAAAVAAoAAAAAAAAAAAAWAAgAAAAAAAAAAAAWAAkAAAAAAAAAAAAWAAoAAAAAAAAAAAAXAAgAAAAAAAAAAAAXAAkAAAAAAAAAAAAXAAoAAAAAAAAAAAAYAAgAAAAAAAAAAAAYAAkAAAAAAAAAAAAYAAoAAAAAAAAAAAAZAAgAAAAAAAAAAAAZAAkAAAAAAAAAAAAZAAoAAAAAAAAAAAAaAAgAAAAAAAAAAAAaAAkAAAAAAAAAAAAaAAoAAAAAAAAAAAAbAAgAAAAAAAAAAAAbAAkAAAAAAAAAAAAbAAoAAAAAAAAAAAAAAPj/AAAAAAAAAAAAAPn/AAAAAAAAAAAAAPr/AAAAAAAAAAAAAPv/AAAAAAAAAAAAAPz/AAAAAAAAAAAAAP3/AAAAAAAAAAAAAP7/AAAAAAAAAAAAAP//AAAAAAAAAAABAPj/AAAAAAAAAAABAPn/AAAAAAAAAAABAPr/AAAAAAAAAAABAPv/AAAAAAAAAAABAPz/AAAAAAAAAAABAP3/AAAAAAAAAAABAP7/AAAAAAAAAAABAP//AAAAAAAAAAACAPj/AAAAAAAAAAACAPn/AAAAAAAAAAACAPr/AAAAAAAAAAACAPv/AAAAAAAAAAACAPz/AAAAAAAAAAACAP3/AAAAAAAAAAACAP7/AAAAAAAAAAACAP//AAAAAAAAAAADAPj/AAAAAAAAAAADAPn/AAAAAAAAAAADAPr/AAAAAAAAAAADAPv/AAAAAAAAAAADAPz/AAAAAAAAAAADAP3/AAAAAAAAAAADAP7/AAAAAAAAAAADAP//AAAAAAAAAAAEAPj/AAAAAAAAAAAEAPn/AAAAAAAAAAAEAPr/AAAAAAAAAAAEAPv/AAAAAAAAAAAFAPj/AAAAAAAAAAAFAPn/AAAAAAAAAAAFAPr/AAAAAAAAAAAFAPv/AAAAAAAAAAAGAPj/AAAAAAAAAAAGAPn/AAAAAAAAAAAGAPr/AAAAAAAAAAAGAPv/AAAAAAAAAAAHAPj/AAAAAAAAAAAHAPn/AAAAAAAAAAAHAPr/AAAAAAAAAAAHAPv/AAAAAAAAAAAIAPj/AAAAAAAAAAAIAPn/AAAAAAAAAAAIAPr/AAAAAAAAAAAIAPv/AAAAAAAAAAAJAPj/AAAAAAAAAAAJAPn/AAAAAAAAAAAJAPr/AAAAAAAAAAAJAPv/AAAAAAAAAAAKAPj/AAAAAAAAAAAKAPn/AAAAAAAAAAAKAPr/AAAAAAAAAAAKAPv/AAAAAAAAAAALAPj/AAAAAAAAAAALAPn/AAAAAAAAAAALAPr/AAAAAAAAAAALAPv/AAAAAAAAAAAMAPj/AAAAAAAAAAAMAPn/AAAAAAAAAAAMAPr/AAAAAAAAAAAMAPv/AAAAAAAAAAANAPj/AAAAAAAAAAANAPn/AAAAAAAAAAANAPr/AAAAAAAAAAANAPv/AAAAAAAAAAAOAPj/AAAAAAAAAAAOAPn/AAAAAAAAAAAOAPr/AAAAAAAAAAAOAPv/AAAAAAAAAAAPAPj/AAAAAAAAAAAPAPn/AAAAAAAAAAAPAPr/AAAAAAAAAAAPAPv/AAAAAAAAAAAQAPj/AAAAAAAAAAAQAPn/AAAAAAAAAAAQAPr/AAAAAAAAAAAQAPv/AAAAAAAAAAARAPj/AAAAAAAAAAARAPn/AAAAAAAAAAARAPr/AAAAAAAAAAARAPv/AAAAAAAAAAASAPj/AAAAAAAAAAASAPn/AAAAAAAAAAASAPr/AAAAAAAAAAASAPv/AAAAAAAAAAATAPj/AAAAAAAAAAATAPn/AAAAAAAAAAATAPr/AAAAAAAAAAATAPv/AAAAAAAAAAAUAPj/AAAAAAAAAAAUAPn/AAAAAAAAAAAUAPr/AAAAAAAAAAAUAPv/AAAAAAAAAAAVAPj/AAAAAAAAAAAVAPn/AAAAAAAAAAAVAPr/AAAAAAAAAAAVAPv/AAAAAAAAAAAWAPj/AAAAAAAAAAAWAPn/AAAAAAAAAAAWAPr/AAAAAAAAAAAWAPv/AAAAAAAAAAAXAPj/AAAAAAAAAAAXAPn/AAAAAAAAAAAXAPr/AAAAAAAAAAAXAPv/AAAAAAAAAAAYAPj/AAAAAAAAAAAYAPn/AAAAAAAAAAAYAPr/AAAAAAAAAAAYAPv/AAAAAAAAAAAZAPj/AAAAAAAAAAAZAPn/AAAAAAAAAAAZAPr/AAAAAAAAAAAZAPv/AAAAAAAAAAAaAPj/AAAAAAAAAAAaAPn/AAAAAAAAAAAaAPr/AAAAAAAAAAAaAPv/AAAAAAAAAAAbAPj/AAAAAAAAAAAbAPn/AAAAAAAAAAAbAPr/AAAAAAAAAAAbAPv/AAAAAAAAAAAcAPj/AAAAAAAAAAAcAPn/AAAAAAAAAAAcAPr/AAAAAAAAAAAcAPv/AAAAAAAAAAAdAPj/AAAAAAAAAAAdAPn/AAAAAAAAAAAdAPr/AAAAAAAAAAAdAPv/AAAAAAAAAAAeAPj/AAAAAAAAAAAeAPn/AAAAAAAAAAAeAPr/AAAAAAAAAAAeAPv/AAAAAAAAAAAfAPj/AAAAAAAAAAAfAPn/AAAAAAAAAAAfAPr/AAAAAAAAAAAfAPv/AAAAAAAAAAAgAPj/AAAAAAAAAAAgAPn/AAAAAAAAAAAgAPr/AAAAAAAAAAAgAPv/AAAAAAAAAAAhAPj/AAAAAAAAAAAhAPn/AAAAAAAAAAAhAPr/AAAAAAAAAAAhAPv/AAAAAAAAAAAiAPj/AAAAAAAAAAAiAPn/AAAAAAAAAAAiAPr/AAAAAAAAAAAiAPv/AAAAAAAAAAAjAPj/AAAAAAAAAAAjAPn/AAAAAAAAAAAjAPr/AAAAAAAAAAAjAPv/AAAAAAAAAAAkAPj/AAAAAAAAAAAkAPn/AAAAAAAAAAAkAPr/AAAAAAAAAAAkAPv/AAAAAAAAAAAlAPj/AAAAAAAAAAAlAPn/AAAAAAAAAAAlAPr/AAAAAAAAAAAlAPv/AAAAAAAAAAAmAPj/AAAAAAAAAAAmAPn/AAAAAAAAAAAmAPr/AAAAAAAAAAAmAPv/AAAAAAAAAAAnAPj/AAAAAAAAAAAnAPn/AAAAAAAAAAAnAPr/AAAAAAAAAAAnAPv/AAAAAAAAAAAoAPj/AAAAAAAAAAAoAPn/AAAAAAAAAAAoAPr/AAAAAAAAAAAoAPv/AAAAAAAAAAApAPj/AAAAAAAAAAApAPn/AAAAAAAAAAApAPr/AAAAAAAAAAApAPv/AAAAAAAAAAAqAPj/AAAAAAAAAAAqAPn/AAAAAAAAAAAqAPr/AAAAAAAAAAAqAPv/AAAAAAAAAAArAPj/AAAAAAAAAAArAPn/AAAAAAAAAAArAPr/AAAAAAAAAAArAPv/AAAAAAAAAAAsAPj/AAAAAAAAAAAsAPn/AAAAAAAAAAAsAPr/AAAAAAAAAAAsAPv/AAAAAAAAAAAtAPj/AAAAAAAAAAAtAPn/AAAAAAAAAAAtAPr/AAAAAAAAAAAtAPv/AAAAAAAAAAAuAPj/AAAAAAAAAAAuAPn/AAAAAAAAAAAuAPr/AAAAAAAAAAAuAPv/AAAAAAAAAAAvAPj/AAAAAAAAAAAvAPn/AAAAAAAAAAAvAPr/AAAAAAAAAAAvAPv/AAAAAAAAAAAwAPj/AAAAAAAAAAAwAPn/AAAAAAAAAAAwAPr/AAAAAAAAAAAwAPv/AAAAAAAAAAAxAPj/AAAAAAAAAAAxAPn/AAAAAAAAAAAxAPr/AAAAAAAAAAAxAPv/AAAAAAAAAAAyAPj/AAAAAAAAAAAyAPn/AAAAAAAAAAAyAPr/AAAAAAAAAAAyAPv/AAAAAAAAAAAzAPj/AAAAAAAAAAAzAPn/AAAAAAAAAAAzAPr/AAAAAAAAAAAzAPv/AAAAAAAAAAA0APj/AAAAAAAAAAA0APn/AAAAAAAAAAA0APr/AAAAAAAAAAA0APv/AAAAAAAAAAA1APj/AAAAAAAAAAA1APn/AAAAAAAAAAA1APr/AAAAAAAAAAA1APv/AAAAAAAAAAAjAAoAAAAAAAAAAAAjAAsAAAAAAAAAAAAkAAoAAAAAAAAAAAAkAAsAAAAAAAAAAAAlAAoAAAAAAAAAAAAlAAsAAAAAAAAAAAAmAAoAAAAAAAAAAAAmAAsAAAAAAAAAAAAnAAoAAAAAAAAAAAAnAAsAAAAAAAAAAAAoAAoAAAAAAAAAAAAoAAsAAAAAAAAAAAApAAoAAAAAAAAAAAApAAsAAAAAAAAAAAAqAAoAAAAAAAAAAAAqAAsAAAAAAAAAAAArAAoAAAAAAAAAAAArAAsAAAAAAAAAAAAsAAoAAAAAAAAAAAAsAAsAAAAAAAAAAAAtAAoAAAAAAAAAAAAtAAsAAAAAAAAAAAAuAAoAAAAAAAAAAAAuAAsAAAAAAAAAAAAvAAoAAAAAAAAAAAAvAAsAAAAAAAAAAAAwAAoAAAAAAAAAAAAwAAsAAAAAAAAAAAAxAAoAAAAAAAAAAAAxAAsAAAAAAAAAAAAyAAoAAAAAAAAAAAAyAAsAAAAAAAAAAAAzAAoAAAAAAAAAAAAzAAsAAAAAAAAAAAA0AAoAAAAAAAAAAAA0AAsAAAAAAAAAAAA1AAoAAAAAAAAAAAA1AAsAAAAAAAAAAAApAAIAAAAAAAAAAQAoAP7/AAAAAAAAAAAoAP//AAAAAAAAAAAoAAAAAAAAAAAAAAAoAAEAAAAAAAAAAAAoAAIAAAAAAAAAAQAoAAMAAAAAAAAAAAAoAAQAAAAAAAAAAAAoAAUAAAAAAAAAAAApAP7/AAAAAAAAAAApAP//AAAAAAAAAAApAAAAAAAAAAAAAAApAAEAAAAAAAAAAAApAAMAAAAAAAAAAAApAAQAAAAAAAAAAAApAAUAAAAAAAAAAAAqAP7/AAAAAAAAAAAqAP//AAAAAAAAAAAqAAAAAAAAAAAAAAAqAAEAAAAAAAAAAAAqAAIAAAAAAAAAAQAqAAMAAAAAAAAAAAAqAAQAAAAAAAAAAAAqAAUAAAAAAAAAAAArAP7/AAAAAAAAAAArAP//AAAAAAAAAAArAAAAAAAAAAAAAAArAAEAAAAAAAAAAAArAAIAAAAAAAAAAQArAAMAAAAAAAAAAAArAAQAAAAAAAAAAAArAAUAAAAAAAAAAAAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAAPAAsAAAAAAAAAAAAQAAsAAAAAAAAAAAARAAsAAAAAAAAAAAASAAsAAAAAAAAAAAATAAsAAAAAAAAAAAAUAAsAAAAAAAAAAAAVAAsAAAAAAAAAAAAWAAsAAAAAAAAAAAAXAAsAAAAAAAAAAAAYAAsAAAAAAAAAAAAZAAsAAAAAAAAAAAAaAAsAAAAAAAAAAAAbAAsAAAAAAAAAAAA=") +tile_set = ExtResource("1_r4ihb") + +[node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=1638817957] +tile_map_data = PackedByteArray("AAAIAP7/AgAAAAAAAAAIAP//AgAAAAAAAAAIAAAAAgAAAAAAAAAIAAEAAgAAAAAAAAAIAAIAAgAAAAAAAAAIAAMAAgAAAAAAAAAIAAQAAgAAAAAAAAAIAAUAAgAAAAAAAAAIAAYAAgAAAAAAAAAIAAcAAgAAAAAAAAAJAAcAAgAAAAAAAAAKAAcAAgAAAAAAAAALAAcAAgAAAAAAAAAMAAcAAgAAAAAAAAANAAcAAgAAAAAAAAAOAAcAAgAAAAAAAAAPAAcAAgAAAAAAAAAQAAcAAgAAAAAAAAARAAcAAgAAAAAAAAASAAcAAgAAAAAAAAATAAcAAgAAAAAAAAAUAAcAAgAAAAAAAAAVAAcAAgAAAAAAAAAWAAcAAgAAAAAAAAAXAAcAAgAAAAAAAAAYAAcAAgAAAAAAAAAZAAcAAgAAAAAAAAAaAAcAAgAAAAAAAAAbAAcAAgAAAAAAAAAbAAUAAgAAAAAAAAAbAAYAAgAAAAAAAAAcAAUAAgAAAAAAAAAdAAUAAgAAAAAAAAAeAAUAAgAAAAAAAAAfAAUAAgAAAAAAAAAgAAUAAgAAAAAAAAAhAAUAAgAAAAAAAAAiAAUAAgAAAAAAAAAjAAUAAgAAAAAAAAAkAAUAAgAAAAAAAAAlAAUAAgAAAAAAAAAmAAUAAgAAAAAAAAAnAAUAAgAAAAAAAAAnAAQAAgAAAAAAAAAnAAMAAgAAAAAAAAAnAAIAAgAAAAAAAAAnAAEAAgAAAAAAAAAnAAAAAgAAAAAAAAAnAP//AgAAAAAAAAAnAP7/AgAAAAAAAAAmAP7/AgAAAAAAAAAlAP7/AgAAAAAAAAAkAP7/AgAAAAAAAAAjAP7/AgAAAAAAAAAiAP7/AgAAAAAAAAAhAP7/AgAAAAAAAAAgAP7/AgAAAAAAAAAfAP7/AgAAAAAAAAAeAP7/AgAAAAAAAAAdAP7/AgAAAAAAAAAcAP7/AgAAAAAAAAAbAP7/AgAAAAAAAAAaAP7/AgAAAAAAAAAZAP7/AgAAAAAAAAAYAP7/AgAAAAAAAAAXAP7/AgAAAAAAAAAWAP7/AgAAAAAAAAAVAP7/AgAAAAAAAAAUAP7/AgAAAAAAAAATAP7/AgAAAAAAAAASAP7/AgAAAAAAAAARAP7/AgAAAAAAAAAQAP7/AgAAAAAAAAAPAP7/AgAAAAAAAAAOAP7/AgAAAAAAAAANAP7/AgAAAAAAAAAMAP7/AgAAAAAAAAALAP7/AgAAAAAAAAAKAP7/AgAAAAAAAAAJAP7/AgAAAAAAAAA=") +tile_set = ExtResource("3_3knxh") + +[node name="BridgeShadows" type="TileMapLayer" parent="TileMapLayers" unique_id=631569368] +tile_map_data = PackedByteArray("AAAoAAIAAwACAAMAAAApAAIAAwACAAMAAAAqAAIAAwACAAMAAAArAAIAAwACAAMAAAAsAAIAAwACAAMAAAAtAAIAAwACAAMAAAA=") +tile_set = ExtResource("5_8bo2y") + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=1707056894] +tile_map_data = PackedByteArray("AAAbAAcABQACAAIAAAAbAAYABQACAAEAAAAaAAcABQABAAIAAAAaAAYABQABAAEAAAAZAAcABQABAAIAAAAZAAYABQABAAEAAAAYAAcABQABAAIAAAAYAAYABQABAAEAAAAXAAcABQABAAIAAAAXAAYABQABAAEAAAAWAAcABQABAAIAAAAWAAYABQABAAEAAAAVAAcABQABAAIAAAAVAAYABQABAAEAAAAUAAcABQABAAIAAAAUAAYABQABAAEAAAATAAcABQABAAIAAAATAAYABQABAAEAAAASAAcABQABAAIAAAASAAYABQABAAEAAAARAAcABQABAAIAAAARAAYABQABAAEAAAAQAAcABQABAAIAAAAQAAYABQABAAEAAAAPAAcABQABAAIAAAAPAAYABQABAAEAAAAOAAcABQABAAIAAAAOAAYABQABAAEAAAANAAcABQABAAIAAAANAAYABQABAAEAAAAMAAcABQABAAIAAAAMAAYABQABAAEAAAALAAcABQABAAIAAAALAAYABQABAAEAAAAKAAcABQABAAIAAAAKAAYABQABAAEAAAAJAAcABQABAAIAAAAJAAYABQABAAEAAAAIAAcABQAAAAIAAAAIAAYABQAAAAEAAAAbAAUABQABAAEAAAAbAAQABQABAAEAAAAbAAMABQABAAEAAAAbAAIABQABAAEAAAAbAAEABQABAAEAAAAbAAAABQABAAEAAAAbAP//BQABAAEAAAAbAP7/BQABAAAAAAAaAAUABQABAAEAAAAaAAQABQABAAEAAAAaAAMABQABAAEAAAAaAAIABQABAAEAAAAaAAEABQABAAEAAAAaAAAABQABAAEAAAAaAP//BQABAAEAAAAaAP7/BQABAAAAAAAZAAUABQABAAEAAAAZAAQABQABAAEAAAAZAAMABQABAAEAAAAZAAIABQABAAEAAAAZAAEABQABAAEAAAAZAAAABQABAAEAAAAZAP//BQABAAEAAAAZAP7/BQABAAAAAAAYAAUABQABAAEAAAAYAAQABQABAAEAAAAYAAMABQABAAEAAAAYAAIABQABAAEAAAAYAAEABQABAAEAAAAYAAAABQABAAEAAAAYAP//BQABAAEAAAAYAP7/BQABAAAAAAAXAAUABQABAAEAAAAXAAQABQABAAEAAAAXAAMABQABAAEAAAAXAAIABQABAAEAAAAXAAEABQABAAEAAAAXAAAABQABAAEAAAAXAP//BQABAAEAAAAXAP7/BQABAAAAAAAWAAUABQABAAEAAAAWAAQABQABAAEAAAAWAAMABQABAAEAAAAWAAIABQABAAEAAAAWAAEABQABAAEAAAAWAAAABQABAAEAAAAWAP//BQABAAEAAAAWAP7/BQABAAAAAAAVAAUABQABAAEAAAAVAAQABQABAAEAAAAVAAMABQABAAEAAAAVAAIABQABAAEAAAAVAAEABQABAAEAAAAVAAAABQABAAEAAAAVAP//BQABAAEAAAAVAP7/BQABAAAAAAAUAAUABQABAAEAAAAUAAQABQABAAEAAAAUAAMABQABAAEAAAAUAAIABQABAAEAAAAUAAEABQABAAEAAAAUAAAABQABAAEAAAAUAP//BQABAAEAAAAUAP7/BQABAAAAAAATAAUABQABAAEAAAATAAQABQABAAEAAAATAAMABQABAAEAAAATAAIABQABAAEAAAATAAEABQABAAEAAAATAAAABQABAAEAAAATAP//BQABAAEAAAATAP7/BQABAAAAAAASAAUABQABAAEAAAASAAQABQABAAEAAAASAAMABQABAAEAAAASAAIABQABAAEAAAASAAEABQABAAEAAAASAAAABQABAAEAAAASAP//BQABAAEAAAASAP7/BQABAAAAAAARAAUABQABAAEAAAARAAQABQABAAEAAAARAAMABQABAAEAAAARAAIABQABAAEAAAARAAEABQABAAEAAAARAAAABQABAAEAAAARAP//BQABAAEAAAARAP7/BQABAAAAAAAQAAUABQABAAEAAAAQAAQABQABAAEAAAAQAAMABQABAAEAAAAQAAIABQABAAEAAAAQAAEABQABAAEAAAAQAAAABQABAAEAAAAQAP//BQABAAEAAAAQAP7/BQABAAAAAAAPAAUABQABAAEAAAAPAAQABQABAAEAAAAPAAMABQABAAEAAAAPAAIABQABAAEAAAAPAAEABQABAAEAAAAPAAAABQABAAEAAAAPAP//BQABAAEAAAAPAP7/BQABAAAAAAAOAAUABQABAAEAAAAOAAQABQABAAEAAAAOAAMABQABAAEAAAAOAAIABQABAAEAAAAOAAEABQABAAEAAAAOAAAABQABAAEAAAAOAP//BQABAAEAAAAOAP7/BQABAAAAAAANAAUABQABAAEAAAANAAQABQABAAEAAAANAAMABQABAAEAAAANAAIABQABAAEAAAANAAEABQABAAEAAAANAAAABQABAAEAAAANAP//BQABAAEAAAANAP7/BQABAAAAAAAMAAUABQABAAEAAAAMAAQABQABAAEAAAAMAAMABQABAAEAAAAMAAIABQABAAEAAAAMAAEABQABAAEAAAAMAAAABQABAAEAAAAMAP//BQABAAEAAAAMAP7/BQABAAAAAAALAAUABQABAAEAAAALAAQABQABAAEAAAALAAMABQABAAEAAAALAAIABQABAAEAAAALAAEABQABAAEAAAALAAAABQABAAEAAAALAP//BQABAAEAAAALAP7/BQABAAAAAAAKAAUABQABAAEAAAAKAAQABQABAAEAAAAKAAMABQABAAEAAAAKAAIABQABAAEAAAAKAAEABQABAAEAAAAKAAAABQABAAEAAAAKAP//BQABAAEAAAAKAP7/BQABAAAAAAAJAAUABQABAAEAAAAJAAQABQABAAEAAAAJAAMABQABAAEAAAAJAAIABQABAAEAAAAJAAEABQABAAEAAAAJAAAABQABAAEAAAAJAP//BQABAAEAAAAJAP7/BQABAAAAAAAIAAUABQAAAAEAAAAIAAQABQAAAAEAAAAIAAMABQAAAAEAAAAIAAIABQAAAAEAAAAIAAEABQAAAAEAAAAIAAAABQAAAAEAAAAIAP//BQAAAAEAAAAIAP7/BQAAAAAAAAAnAAUABQACAAIAAAAnAAQABQACAAEAAAAnAAMABQACAAEAAAAnAAIABQACAAEAAAAnAAEABQACAAEAAAAnAAAABQACAAEAAAAnAP//BQACAAEAAAAnAP7/BQACAAAAAAAmAAUABQABAAIAAAAmAAQABQABAAEAAAAmAAMABQABAAEAAAAmAAIABQABAAEAAAAmAAEABQABAAEAAAAmAAAABQABAAEAAAAmAP//BQABAAEAAAAmAP7/BQABAAAAAAAlAAUABQABAAIAAAAlAAQABQABAAEAAAAlAAMABQABAAEAAAAlAAIABQABAAEAAAAlAAEABQABAAEAAAAlAAAABQABAAEAAAAlAP//BQABAAEAAAAlAP7/BQABAAAAAAAkAAUABQABAAIAAAAkAAQABQABAAEAAAAkAAMABQABAAEAAAAkAAIABQABAAEAAAAkAAEABQABAAEAAAAkAAAABQABAAEAAAAkAP//BQABAAEAAAAkAP7/BQABAAAAAAAjAAUABQABAAIAAAAjAAQABQABAAEAAAAjAAMABQABAAEAAAAjAAIABQABAAEAAAAjAAEABQABAAEAAAAjAAAABQABAAEAAAAjAP//BQABAAEAAAAjAP7/BQABAAAAAAAiAAUABQABAAIAAAAiAAQABQABAAEAAAAiAAMABQABAAEAAAAiAAIABQABAAEAAAAiAAEABQABAAEAAAAiAAAABQABAAEAAAAiAP//BQABAAEAAAAiAP7/BQABAAAAAAAhAAUABQABAAIAAAAhAAQABQABAAEAAAAhAAMABQABAAEAAAAhAAIABQABAAEAAAAhAAEABQABAAEAAAAhAAAABQABAAEAAAAhAP//BQABAAEAAAAhAP7/BQABAAAAAAAgAAUABQABAAIAAAAgAAQABQABAAEAAAAgAAMABQABAAEAAAAgAAIABQABAAEAAAAgAAEABQABAAEAAAAgAAAABQABAAEAAAAgAP//BQABAAEAAAAgAP7/BQABAAAAAAAfAAUABQABAAIAAAAfAAQABQABAAEAAAAfAAMABQABAAEAAAAfAAIABQABAAEAAAAfAAEABQABAAEAAAAfAAAABQABAAEAAAAfAP//BQABAAEAAAAfAP7/BQABAAAAAAAeAAUABQABAAIAAAAeAAQABQABAAEAAAAeAAMABQABAAEAAAAeAAIABQABAAEAAAAeAAEABQABAAEAAAAeAAAABQABAAEAAAAeAP//BQABAAEAAAAeAP7/BQABAAAAAAAdAAUABQABAAIAAAAdAAQABQABAAEAAAAdAAMABQABAAEAAAAdAAIABQABAAEAAAAdAAEABQABAAEAAAAdAAAABQABAAEAAAAdAP//BQABAAEAAAAdAP7/BQABAAAAAAAcAAUABQABAAIAAAAcAAQABQABAAEAAAAcAAMABQABAAEAAAAcAAIABQABAAEAAAAcAAEABQABAAEAAAAcAAAABQABAAEAAAAcAP//BQABAAEAAAAcAP7/BQABAAAAAAA=") +tile_set = ExtResource("2_i2jms") + +[node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=958478334] +tile_map_data = PackedByteArray("AAAXAAIAAQAGAAMAAAAdAAIAAQAGAAMAAAAcAAIAAQAGAAMAAAAbAAIAAQAGAAMAAAAaAAIAAQAGAAMAAAAZAAIAAQAGAAMAAAAYAAIAAQAGAAMAAAAQAAYAAQAHAAIAAAAPAAYAAQAGAAMAAAAOAAYAAQAGAAMAAAANAAYAAQAGAAMAAAAMAAYAAQAGAAMAAAALAAYAAQAFAAIAAAALAAUAAQAIAAAAAAAeAAIAAQAGAAMAAAAfAAIAAQAGAAMAAAAgAAIAAQAGAAMAAAAhAAIAAQAGAAMAAAAiAAIAAQAGAAIAAAAiAAEAAQAIAAAAAAAjAAIAAQAGAAMAAAAkAAIAAQAGAAMAAAAlAAIAAQAGAAMAAAAmAAIAAQAGAAMAAAAnAAIAAQAHAAMAAAAWAAIAAQAGAAMAAAAVAAIAAQAGAAMAAAAUAAIAAQAGAAMAAAAQAAIAAQAFAAAAAAARAAIAAQAGAAMAAAASAAIAAQAGAAMAAAATAAIAAQAGAAMAAAAQAAUAAQAIAAEAAAAQAAQAAQAIAAEAAAAQAAMAAQAIAAEAAAAJAAIABQAAAAAAAAAJAAMABQADAAEAAAAJAAQABQADAAEAAAAJAAUABQAAAAIAAAAKAAUABQACAAMAAAALAP//BQADAAAAAAALAAAABQADAAEAAAALAAEABQADAAEAAAALAAIABQACAAIAAAAKAAIABQABAAMAAAA=") +tile_set = ExtResource("2_i2jms") + +[node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=1401659649] +tile_map_data = PackedByteArray("AAAtAAIAAwACAAAAAAAsAAIAAwABAAAAAAArAAIAAwABAAAAAAAqAAIAAwABAAAAAAApAAIAAwABAAAAAAAoAAIAAwABAAAAAAAnAAIAAwAAAAAAAAA=") +tile_set = ExtResource("5_8bo2y") + +[node name="Farms" type="TileMapLayer" parent="TileMapLayers" unique_id=350532647] +tile_map_data = PackedByteArray("AAAJAAAABgABAAIAAAAIAP//BgAAAAAAAAAJAP//BgABAAAAAAAKAP//BgACAAAAAAAKAAAABgACAAIAAAAIAAAABgAAAAIAAAA=") +tile_set = ExtResource("2_i2jms") + +[node name="Void" type="TileMapLayer" parent="TileMapLayers" unique_id=1743130689] +texture_filter = 1 +material = ExtResource("2_16kft") +tile_map_data = PackedByteArray("AAAFAAwADQABAAEAAAAFAAsADQABAAAAAAAEAAwADQABAAEAAAAEAAsADQABAAAAAAADAAwADQABAAEAAAADAAsADQABAAAAAAACAAwADQABAAEAAAACAAsADQABAAEAAAABAAwADQABAAEAAAABAAsADQABAAEAAAApAAwADQABAAEAAAApAAsADQABAAEAAAApAAoADQABAAEAAAAoAAwADQABAAEAAAAoAAsADQABAAEAAAAoAAoADQABAAEAAAACAAoADQACAAEAAAACAAkADQACAAEAAAACAAgADQACAAAAAAABAAoADQABAAEAAAABAAkADQABAAEAAAABAAgADQABAAAAAAAAAAwADQABAAEAAAAAAAsADQABAAEAAAAAAAoADQABAAEAAAAAAAkADQABAAEAAAAAAAgADQABAAEAAAD//wwADQABAAEAAAD//wsADQABAAEAAAD//woADQABAAEAAAD//wkADQABAAEAAAD//wgADQABAAEAAAD+/wwADQABAAEAAAD+/wsADQABAAEAAAD+/woADQABAAEAAAD+/wkADQABAAEAAAD+/wgADQABAAEAAAD9/wwADQABAAEAAAD9/wsADQABAAEAAAD9/woADQABAAEAAAD9/wkADQABAAEAAAD9/wgADQABAAEAAAD8/wwADQAAAAIAAAD8/wsADQAAAAEAAAD8/woADQAAAAEAAAD8/wkADQAAAAEAAAD8/wgADQAAAAEAAAAFAAQADQACAAIAAAAFAAMADQACAAAAAAAEAAQADQAAAAIAAAAEAAMADQAAAAAAAAAOAP7/DQACAAIAAAAOAP3/DQACAAEAAAANAP7/DQABAAIAAAANAP3/DQABAAEAAAAMAP7/DQABAAIAAAAMAP3/DQABAAEAAAALAP7/DQABAAIAAAALAP3/DQABAAEAAAAKAP7/DQABAAIAAAAKAP3/DQABAAEAAAAJAP7/DQABAAIAAAAJAP3/DQABAAEAAAAIAP7/DQABAAIAAAAIAP3/DQABAAEAAAAHAP7/DQAAAAIAAAAHAP3/DQABAAEAAAARAAIADQACAAIAAAARAAEADQABAAAAAAAQAAIADQABAAIAAAAQAAEADQAAAAAAAAASAAEADQACAAIAAAASAAAADQADAAAAAAAUAAoADQADAAEAAAAUAAkADQAAAAAAAAAVAAkADQACAAMAAAAMAAsADQABAAEAAAAMAAoADQACAAAAAAALAAsADQABAAEAAAALAAoADQABAAAAAAAKAAsADQABAAEAAAAKAAoADQAAAAAAAAAAAAcADQACAAEAAAAAAAYADQACAAEAAAAAAAUADQACAAEAAAAAAAQADQACAAEAAAAAAAMADQACAAEAAAAAAAIADQACAAEAAAAAAAEADQACAAEAAAAAAAAADQABAAEAAAAAAP//DQABAAEAAAAAAP7/DQABAAEAAAAAAP3/DQABAAEAAAAAAPz/DQABAAEAAAD//wcADQABAAEAAAD//wYADQABAAEAAAD//wUADQABAAEAAAD//wQADQABAAEAAAD//wMADQABAAEAAAD//wIADQABAAEAAAD//wEADQABAAEAAAD//wAADQABAAEAAAD/////DQABAAEAAAD///7/DQABAAEAAAD///3/DQABAAEAAAD///z/DQABAAEAAAD+/wcADQABAAEAAAD+/wYADQABAAEAAAD+/wUADQABAAEAAAD+/wQADQABAAEAAAD+/wMADQABAAEAAAD+/wIADQABAAEAAAD+/wEADQABAAEAAAD+/wAADQABAAEAAAD+////DQABAAEAAAD+//7/DQABAAEAAAD+//3/DQABAAEAAAD+//z/DQABAAEAAAD9/wcADQABAAEAAAD9/wYADQABAAEAAAD9/wUADQABAAEAAAD9/wQADQABAAEAAAD9/wMADQABAAEAAAD9/wIADQABAAEAAAD9/wEADQABAAEAAAD9/wAADQABAAEAAAD9////DQABAAEAAAD9//7/DQABAAEAAAD9//3/DQABAAEAAAD9//z/DQABAAEAAAD8/wcADQAAAAEAAAD8/wYADQAAAAEAAAD8/wUADQAAAAEAAAD8/wQADQAAAAEAAAD8/wMADQAAAAEAAAD8/wIADQAAAAEAAAD8/wEADQAAAAEAAAD8/wAADQAAAAEAAAD8////DQAAAAEAAAD8//7/DQAAAAEAAAD8//3/DQAAAAEAAAD8//z/DQAAAAEAAAACAP//DQABAAEAAAADAAAADQACAAIAAAADAP//DQACAAEAAAADAP7/DQACAAEAAAACAAAADQABAAIAAAACAP7/DQABAAEAAAABAAAADQABAAIAAAABAP//DQABAAEAAAABAP7/DQABAAEAAAAHAPz/DQABAAEAAAAHAPv/DQABAAEAAAAGAP3/DQABAAIAAAAGAPz/DQABAAEAAAAGAPv/DQABAAEAAAAFAP3/DQABAAIAAAAFAPz/DQABAAEAAAAFAPv/DQABAAEAAAAEAP3/DQABAAIAAAAEAPz/DQABAAEAAAAEAPv/DQABAAEAAAADAP3/DQABAAEAAAADAPz/DQABAAEAAAADAPv/DQABAAEAAAACAP3/DQABAAEAAAACAPz/DQABAAEAAAACAPv/DQABAAEAAAABAP3/DQABAAEAAAABAPz/DQABAAEAAAABAPv/DQABAAEAAAAAAPv/DQABAAEAAAArAPv/DQACAAIAAAArAPr/DQACAAEAAAArAPn/DQACAAEAAAAqAPv/DQABAAIAAAAqAPr/DQABAAEAAAAqAPn/DQABAAEAAAApAPv/DQABAAIAAAApAPr/DQABAAEAAAApAPn/DQABAAEAAAAoAPv/DQABAAIAAAAoAPr/DQABAAEAAAAoAPn/DQABAAEAAAAnAPv/DQABAAIAAAAnAPr/DQABAAEAAAAnAPn/DQABAAEAAAAmAPv/DQABAAIAAAAmAPr/DQABAAEAAAAmAPn/DQABAAEAAAAlAPv/DQABAAIAAAAlAPr/DQABAAEAAAAlAPn/DQABAAEAAAAkAPv/DQABAAIAAAAkAPr/DQABAAEAAAAkAPn/DQABAAEAAAAjAPv/DQABAAIAAAAjAPr/DQABAAEAAAAjAPn/DQABAAEAAAAiAPv/DQABAAIAAAAiAPr/DQABAAEAAAAiAPn/DQABAAEAAAAhAPv/DQABAAIAAAAhAPr/DQABAAEAAAAhAPn/DQABAAEAAAAgAPv/DQABAAIAAAAgAPr/DQABAAEAAAAgAPn/DQABAAEAAAAfAPv/DQABAAIAAAAfAPr/DQABAAEAAAAfAPn/DQABAAEAAAAeAPv/DQABAAEAAAAeAPr/DQABAAEAAAAeAPn/DQABAAEAAAAdAPv/DQABAAIAAAAdAPr/DQABAAEAAAAdAPn/DQABAAEAAAAcAPv/DQABAAIAAAAcAPr/DQABAAEAAAAcAPn/DQABAAEAAAAbAPv/DQABAAIAAAAbAPr/DQABAAEAAAAbAPn/DQABAAEAAAAaAPv/DQABAAEAAAAaAPr/DQABAAEAAAAaAPn/DQABAAEAAAAZAPv/DQABAAEAAAAZAPr/DQABAAEAAAAZAPn/DQABAAEAAAAYAPv/DQABAAEAAAAYAPr/DQABAAEAAAAYAPn/DQABAAEAAAAXAPv/DQABAAIAAAAXAPr/DQABAAEAAAAXAPn/DQABAAEAAAAWAPv/DQABAAIAAAAWAPr/DQABAAEAAAAWAPn/DQABAAEAAAAVAPv/DQABAAIAAAAVAPr/DQABAAEAAAAVAPn/DQABAAEAAAAUAPv/DQABAAIAAAAUAPr/DQABAAEAAAAUAPn/DQABAAEAAAATAPv/DQABAAIAAAATAPr/DQABAAEAAAATAPn/DQABAAEAAAASAPv/DQABAAIAAAASAPr/DQABAAEAAAASAPn/DQABAAEAAAARAPv/DQABAAIAAAARAPr/DQABAAEAAAARAPn/DQABAAEAAAAQAPv/DQABAAIAAAAQAPr/DQABAAEAAAAQAPn/DQABAAEAAAAPAPv/DQABAAEAAAAPAPr/DQABAAEAAAAPAPn/DQABAAEAAAAOAPv/DQABAAEAAAAOAPr/DQABAAEAAAAOAPn/DQABAAEAAAANAPv/DQABAAEAAAANAPr/DQABAAEAAAANAPn/DQABAAEAAAAMAPv/DQABAAEAAAAMAPr/DQABAAEAAAAMAPn/DQABAAEAAAALAPv/DQABAAEAAAALAPr/DQABAAEAAAALAPn/DQABAAEAAAAKAPv/DQABAAEAAAAKAPr/DQABAAEAAAAKAPn/DQABAAEAAAAJAPv/DQABAAEAAAAJAPr/DQABAAEAAAAJAPn/DQABAAEAAAAIAPv/DQABAAEAAAAIAPr/DQABAAEAAAAIAPn/DQABAAEAAAAPAPz/DQACAAIAAAAOAPz/DQABAAEAAAANAPz/DQABAAEAAAAMAPz/DQABAAEAAAALAPz/DQABAAEAAAAKAPz/DQABAAEAAAAJAPz/DQABAAEAAAAIAPz/DQABAAEAAAAMAPj/DQABAAEAAAAMAPf/DQABAAEAAAAMAPb/DQABAAAAAAALAPj/DQABAAEAAAALAPf/DQABAAEAAAALAPb/DQABAAAAAAAKAPj/DQABAAEAAAAKAPf/DQABAAEAAAAKAPb/DQABAAAAAAAJAPj/DQABAAEAAAAJAPf/DQABAAEAAAAJAPb/DQABAAAAAAAIAPj/DQABAAEAAAAIAPf/DQABAAEAAAAIAPb/DQABAAAAAAAHAPr/DQABAAEAAAAHAPn/DQABAAEAAAAHAPj/DQABAAEAAAAHAPf/DQABAAEAAAAHAPb/DQABAAAAAAAGAPr/DQABAAEAAAAGAPn/DQABAAEAAAAGAPj/DQABAAEAAAAGAPf/DQABAAEAAAAGAPb/DQABAAAAAAAFAPr/DQABAAEAAAAFAPn/DQABAAEAAAAFAPj/DQABAAEAAAAFAPf/DQABAAEAAAAFAPb/DQABAAAAAAAEAPr/DQABAAEAAAAEAPn/DQABAAEAAAAEAPj/DQABAAEAAAAEAPf/DQABAAEAAAAEAPb/DQABAAAAAAADAPr/DQABAAEAAAADAPn/DQABAAEAAAADAPj/DQABAAEAAAADAPf/DQABAAEAAAADAPb/DQABAAAAAAACAPr/DQABAAEAAAACAPn/DQABAAEAAAACAPj/DQABAAEAAAACAPf/DQABAAEAAAACAPb/DQABAAAAAAABAPr/DQABAAEAAAABAPn/DQABAAEAAAABAPj/DQABAAEAAAABAPf/DQABAAEAAAABAPb/DQABAAAAAAAAAPr/DQABAAEAAAAAAPn/DQABAAEAAAAAAPj/DQABAAEAAAAAAPf/DQABAAEAAAAAAPb/DQABAAAAAAD///v/DQABAAEAAAD///r/DQABAAEAAAD///n/DQABAAEAAAD///j/DQABAAEAAAD///f/DQABAAEAAAD///b/DQABAAAAAAD+//v/DQABAAEAAAD+//r/DQABAAEAAAD+//n/DQABAAEAAAD+//j/DQABAAEAAAD+//f/DQABAAEAAAD+//b/DQABAAAAAAD9//v/DQABAAEAAAD9//r/DQABAAEAAAD9//n/DQABAAEAAAD9//j/DQABAAEAAAD9//f/DQABAAEAAAD9//b/DQABAAAAAAD8//v/DQAAAAEAAAD8//r/DQAAAAEAAAD8//n/DQAAAAEAAAD8//j/DQAAAAEAAAD8//f/DQAAAAEAAAD8//b/DQAAAAAAAAAtAPf/DQACAAEAAAAtAPb/DQACAAAAAAAsAPf/DQABAAEAAAAsAPb/DQABAAAAAAArAPf/DQABAAEAAAArAPb/DQABAAAAAAAqAPf/DQABAAEAAAAqAPb/DQABAAAAAAApAPf/DQABAAEAAAApAPb/DQABAAAAAAAoAPf/DQABAAEAAAAoAPb/DQABAAAAAAAnAPf/DQABAAEAAAAnAPb/DQABAAAAAAAmAPf/DQABAAEAAAAmAPb/DQABAAAAAAAlAPf/DQABAAEAAAAlAPb/DQABAAAAAAAkAPf/DQABAAEAAAAkAPb/DQABAAAAAAAjAPf/DQABAAEAAAAjAPb/DQABAAAAAAAiAPf/DQABAAEAAAAiAPb/DQABAAAAAAAhAPf/DQABAAEAAAAhAPb/DQABAAAAAAAgAPf/DQABAAEAAAAgAPb/DQABAAAAAAAfAPf/DQABAAEAAAAfAPb/DQABAAAAAAAeAPf/DQABAAEAAAAeAPb/DQABAAAAAAAdAPf/DQABAAEAAAAdAPb/DQABAAAAAAAcAPf/DQABAAEAAAAcAPb/DQABAAAAAAAbAPf/DQABAAEAAAAbAPb/DQABAAAAAAAaAPf/DQABAAEAAAAaAPb/DQABAAAAAAAZAPf/DQABAAEAAAAZAPb/DQABAAAAAAAYAPf/DQABAAEAAAAYAPb/DQABAAAAAAAXAPf/DQABAAEAAAAXAPb/DQABAAAAAAAWAPf/DQABAAEAAAAWAPb/DQABAAAAAAAVAPf/DQABAAEAAAAVAPb/DQABAAAAAAAUAPf/DQABAAEAAAAUAPb/DQABAAAAAAATAPf/DQABAAEAAAATAPb/DQABAAAAAAASAPf/DQABAAEAAAASAPb/DQABAAAAAAARAPf/DQABAAEAAAARAPb/DQABAAAAAAAQAPf/DQABAAEAAAAQAPb/DQABAAAAAAAPAPf/DQABAAEAAAAPAPb/DQABAAAAAAAOAPf/DQABAAEAAAAOAPb/DQABAAAAAAANAPf/DQABAAEAAAANAPb/DQABAAAAAAAtAPj/DQACAAIAAAAsAPj/DQABAAIAAAArAPj/DQABAAEAAAAqAPj/DQABAAEAAAApAPj/DQABAAEAAAAoAPj/DQABAAEAAAAnAPj/DQABAAEAAAAmAPj/DQABAAEAAAAlAPj/DQABAAEAAAAkAPj/DQABAAEAAAAjAPj/DQABAAEAAAAiAPj/DQABAAEAAAAhAPj/DQABAAEAAAAgAPj/DQABAAEAAAAfAPj/DQABAAEAAAAeAPj/DQABAAEAAAAdAPj/DQABAAEAAAAcAPj/DQABAAEAAAAbAPj/DQABAAEAAAAaAPj/DQABAAEAAAAZAPj/DQABAAEAAAAYAPj/DQABAAEAAAAXAPj/DQABAAEAAAAWAPj/DQABAAEAAAAVAPj/DQABAAEAAAAUAPj/DQABAAEAAAATAPj/DQABAAEAAAASAPj/DQABAAEAAAARAPj/DQABAAEAAAAQAPj/DQABAAEAAAAPAPj/DQABAAEAAAAOAPj/DQABAAEAAAANAPj/DQABAAEAAAAeAAcADQACAAIAAAAeAAYADQACAAEAAAAeAAUADQACAAAAAAAdAAgADQACAAIAAAAdAAcADQABAAEAAAAdAAYADQABAAEAAAAdAAUADQABAAAAAAAcAAgADQABAAIAAAAcAAcADQABAAEAAAAcAAYADQABAAEAAAAcAAUADQABAAAAAAAbAAgADQAAAAIAAAAbAAcADQAAAAEAAAAbAAYADQAAAAEAAAAbAAUADQAAAAAAAAAFAAgADQADAAMAAAArAAwADQABAAEAAAArAAsADQABAAEAAAArAAoADQABAAEAAAArAAkADQACAAEAAAArAAgADQACAAEAAAArAAcADQABAAEAAAAqAAwADQABAAEAAAAqAAsADQABAAEAAAAqAAoADQABAAEAAAAqAAkADQABAAEAAAAqAAgADQABAAEAAAAqAAcADQABAAAAAAApAAkADQABAAEAAAApAAgADQABAAEAAAApAAcADQABAAAAAAAoAAkADQABAAEAAAAoAAgADQABAAEAAAAoAAcADQABAAAAAAAnAAwADQABAAEAAAAnAAsADQABAAEAAAAnAAoADQAAAAEAAAAnAAkADQAAAAEAAAAnAAgADQAAAAEAAAAnAAcADQAAAAAAAAAsAAwADQACAAEAAAAsAAsADQACAAEAAAAsAAoADQACAAAAAAAPAAMADQADAAEAAAAPAAIADQAAAAAAAAAPAAQADQACAAIAAAAOAAQADQAAAAMAAAAaAP//DQACAAIAAAAaAP7/DQACAAEAAAAZAP//DQAAAAIAAAAZAP7/DQAAAAEAAAAaAP3/DQACAAEAAAAaAPz/DQACAAEAAAAZAP3/DQAAAAEAAAAZAPz/DQABAAEAAAAYAPz/DQAAAAIAAAAeAPz/DQADAAIAAAArAAUADQAAAAAAAAAsAAYADQACAAEAAAAsAAUADQACAAAAAAArAAYADQAAAAEAAAAsAAcADQACAAIAAAAeAAsADQABAAAAAAAmAAsADQABAAAAAAAlAAsADQABAAAAAAAkAAsADQABAAAAAAAjAAsADQABAAAAAAAiAAsADQABAAAAAAAhAAsADQABAAAAAAAgAAsADQABAAAAAAAfAAsADQABAAAAAAAdAAsADQABAAAAAAAcAAsADQABAAAAAAAbAAsADQABAAAAAAAaAAsADQABAAAAAAAZAAsADQABAAAAAAAYAAsADQABAAAAAAAXAAsADQABAAAAAAAWAAsADQABAAAAAAAVAAsADQABAAAAAAAUAAsADQABAAEAAAATAAsADQABAAAAAAASAAsADQABAAAAAAARAAsADQABAAAAAAAQAAsADQABAAAAAAAPAAsADQABAAAAAAAOAAsADQABAAAAAAANAAsADQABAAAAAAAJAAsADQABAAAAAAAIAAsADQABAAAAAAAHAAsADQABAAAAAAAGAAsADQABAAAAAAAsAA4ADQACAAIAAAAsAA0ADQACAAEAAAArAA4ADQABAAIAAAArAA0ADQABAAEAAAAqAA4ADQABAAIAAAAqAA0ADQABAAEAAAApAA4ADQABAAIAAAApAA0ADQABAAEAAAAoAA4ADQABAAIAAAAoAA0ADQABAAEAAAAnAA4ADQABAAIAAAAnAA0ADQABAAEAAAAmAA4ADQABAAIAAAAmAA0ADQABAAEAAAAmAAwADQABAAEAAAAlAA4ADQABAAIAAAAlAA0ADQABAAEAAAAlAAwADQABAAEAAAAkAA4ADQABAAIAAAAkAA0ADQABAAEAAAAkAAwADQABAAEAAAAjAA4ADQABAAIAAAAjAA0ADQABAAEAAAAjAAwADQABAAEAAAAiAA4ADQABAAIAAAAiAA0ADQABAAEAAAAiAAwADQABAAEAAAAhAA4ADQABAAIAAAAhAA0ADQABAAEAAAAhAAwADQABAAEAAAAgAA4ADQABAAIAAAAgAA0ADQABAAEAAAAgAAwADQABAAEAAAAfAA4ADQABAAIAAAAfAA0ADQABAAEAAAAfAAwADQABAAEAAAAeAA4ADQABAAIAAAAeAA0ADQABAAEAAAAeAAwADQABAAEAAAAdAA4ADQABAAIAAAAdAA0ADQABAAEAAAAdAAwADQABAAEAAAAcAA4ADQABAAIAAAAcAA0ADQABAAEAAAAcAAwADQABAAEAAAAbAA4ADQABAAIAAAAbAA0ADQABAAEAAAAbAAwADQABAAEAAAAaAA4ADQABAAIAAAAaAA0ADQABAAEAAAAaAAwADQABAAEAAAAZAA4ADQABAAIAAAAZAA0ADQABAAEAAAAZAAwADQABAAEAAAAYAA4ADQABAAIAAAAYAA0ADQABAAEAAAAYAAwADQABAAEAAAAXAA4ADQABAAIAAAAXAA0ADQABAAEAAAAXAAwADQABAAEAAAAWAA4ADQABAAIAAAAWAA0ADQABAAEAAAAWAAwADQABAAEAAAAVAA4ADQABAAIAAAAVAA0ADQABAAEAAAAVAAwADQABAAEAAAAUAA4ADQABAAIAAAAUAA0ADQABAAEAAAAUAAwADQABAAEAAAATAA4ADQABAAIAAAATAA0ADQABAAEAAAATAAwADQABAAEAAAASAA4ADQABAAIAAAASAA0ADQABAAEAAAASAAwADQABAAEAAAARAA4ADQABAAIAAAARAA0ADQABAAEAAAARAAwADQABAAEAAAAQAA4ADQABAAIAAAAQAA0ADQABAAEAAAAQAAwADQABAAEAAAAPAA4ADQABAAIAAAAPAA0ADQABAAEAAAAPAAwADQABAAEAAAAOAA4ADQABAAIAAAAOAA0ADQABAAEAAAAOAAwADQABAAEAAAANAA4ADQABAAIAAAANAA0ADQABAAEAAAANAAwADQABAAEAAAAMAA4ADQABAAIAAAAMAA0ADQABAAEAAAAMAAwADQABAAEAAAALAA4ADQABAAIAAAALAA0ADQABAAEAAAALAAwADQABAAEAAAAKAA4ADQABAAIAAAAKAA0ADQABAAEAAAAKAAwADQABAAEAAAAJAA4ADQABAAIAAAAJAA0ADQABAAEAAAAJAAwADQABAAEAAAAIAA4ADQABAAIAAAAIAA0ADQABAAEAAAAIAAwADQABAAEAAAAHAA4ADQABAAIAAAAHAA0ADQABAAEAAAAHAAwADQABAAEAAAAGAA4ADQABAAIAAAAGAA0ADQABAAEAAAAGAAwADQABAAEAAAAFAA4ADQABAAIAAAAFAA0ADQABAAEAAAAEAA4ADQABAAIAAAAEAA0ADQABAAEAAAADAA4ADQABAAIAAAADAA0ADQABAAEAAAACAA4ADQABAAIAAAACAA0ADQABAAEAAAABAA4ADQABAAIAAAABAA0ADQABAAEAAAAAAA4ADQABAAIAAAAAAA0ADQABAAEAAAD//w4ADQABAAIAAAD//w0ADQABAAEAAAD+/w4ADQABAAIAAAD+/w0ADQABAAEAAAD9/w4ADQAAAAIAAAD9/w0ADQAAAAEAAAAVAAQADQADAAMAAAApAP7/DQAAAAMAAAAqAP7/DQABAAAAAAArAP7/DQACAAAAAAAqAP//DQAAAAIAAAArAP//DQACAAIAAAAjAAgADQADAAMAAAARAAcADQADAAAAAAARAAgADQADAAIAAAAZAAIADQADAAAAAAAZAAMADQADAAIAAAA=") +tile_set = ExtResource("3_i2jms") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=1189147951] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=296354958 instance=ExtResource("5_joarb")] +position = Vector2(743, 425) +player_name = "StoryWeaver" +sprite_frames = ExtResource("6_b28g0") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1742465445] +limit_left = 0 +limit_top = -320 +limit_right = 2772 +limit_bottom = 680 +editor_draw_limits = true + +[node name="RuinedHouse3" parent="OnTheGround" unique_id=2059098385 instance=ExtResource("9_4gmak")] +position = Vector2(738, 331) +texture = ExtResource("12_4gmak") + +[node name="House_2" parent="OnTheGround" unique_id=913868571 instance=ExtResource("8_23cxv")] +position = Vector2(2209, 68) +texture = ExtResource("15_ebxxp") + +[node name="Townie" parent="OnTheGround" unique_id=1098678013 instance=ExtResource("19_75rxs")] +position = Vector2(2519, 166) +character_seed = 3222241206 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie" unique_id=1767129886] +unique_name_in_owner = true +collision_layer = 32 +collision_mask = 0 +script = ExtResource("11_ebxxp") +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie/InteractArea" unique_id=1657788279] +visible = false +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_i7hju") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie" unique_id=659174580 node_paths=PackedStringArray("interact_area")] +script = ExtResource("12_75rxs") +dialogue = ExtResource("17_sxarn") +title = "townie" +interact_area = NodePath("../InteractArea") +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="PathWalkBehavior" type="Node2D" parent="OnTheGround/Townie" unique_id=1511185082 node_paths=PackedStringArray("walking_path", "character")] +unique_name_in_owner = true +process_mode = 4 +script = ExtResource("19_iy1ja") +speeds = SubResource("Resource_3knxh") +walking_path = NodePath("../../../TownieBridgePath") +turn_around = false +character = NodePath("..") +metadata/_custom_type_script = "uid://id28maao3vdy" + +[node name="Trees" type="Area2D" parent="OnTheGround" unique_id=1749010606] +y_sort_enabled = true +collision_layer = 0 +collision_mask = 0 +monitoring = false +monitorable = false + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="OnTheGround/Trees" unique_id=1644670099] +visible = false +polygon = PackedVector2Array(2535, -108, 2537, 360, 1743, 364, 1737, 488, 524, 499, 533, -112) +disabled = true + +[node name="AreaFiller" type="Node" parent="OnTheGround/Trees" unique_id=869841858] +script = ExtResource("11_4gmak") +scenes = Array[PackedScene]([ExtResource("12_0g3ol")]) +sprite_frames = Array[SpriteFrames]([ExtResource("13_ebxxp")]) +minimum_separation = 200.0 +metadata/_custom_type_script = "uid://bdhjixygupit1" + +[node name="Tree" parent="OnTheGround/Trees" unique_id=1182216860 instance=ExtResource("12_0g3ol")] +position = Vector2(2302.12, -108.465294) +scale = Vector2(0.9765748, 0.98087543) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree2" parent="OnTheGround/Trees" unique_id=2118789281 instance=ExtResource("12_0g3ol")] +position = Vector2(2023, 350) +scale = Vector2(0.9871148, 1.0854608) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree3" parent="OnTheGround/Trees" unique_id=1472036344 instance=ExtResource("12_0g3ol")] +position = Vector2(1980.8241, 38.862236) +scale = Vector2(0.8909704, 0.8298069) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree4" parent="OnTheGround/Trees" unique_id=2036369690 instance=ExtResource("12_0g3ol")] +position = Vector2(2481.1409, 9.460495) +scale = Vector2(1.2331539, 1.1485544) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree5" parent="OnTheGround/Trees" unique_id=205494755 instance=ExtResource("12_0g3ol")] +position = Vector2(2522, 360) +scale = Vector2(0.95270073, 1.0133904) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree6" parent="OnTheGround/Trees" unique_id=1485541452 instance=ExtResource("12_0g3ol")] +position = Vector2(1823.4427, 228.05978) +scale = Vector2(1.0311006, 1.0357279) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree7" parent="OnTheGround/Trees" unique_id=612371412 instance=ExtResource("12_0g3ol")] +position = Vector2(1689.0001, 84) +scale = Vector2(0.9740492, 0.95309776) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree8" parent="OnTheGround/Trees" unique_id=1824255575 instance=ExtResource("12_0g3ol")] +position = Vector2(1699, 485.00003) +scale = Vector2(0.9288809, 0.88787615) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree9" parent="OnTheGround/Trees" unique_id=644712094 instance=ExtResource("12_0g3ol")] +position = Vector2(1569.445, 382.626) +scale = Vector2(0.86106634, 0.901177) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree10" parent="OnTheGround/Trees" unique_id=1848900567 instance=ExtResource("12_0g3ol")] +position = Vector2(1024, -67) +scale = Vector2(0.8093397, 0.849106) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree11" parent="OnTheGround/Trees" unique_id=774035664 instance=ExtResource("12_0g3ol")] +position = Vector2(1336, 110) +scale = Vector2(1.2492167, 1.1745033) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree12" parent="OnTheGround/Trees" unique_id=467217563 instance=ExtResource("12_0g3ol")] +position = Vector2(1176, 440) +scale = Vector2(1.1795515, 1.1654558) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree13" parent="OnTheGround/Trees" unique_id=1145515596 instance=ExtResource("12_0g3ol")] +position = Vector2(984.0001, -93.99997) +scale = Vector2(1.0747819, 1.0744737) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree14" parent="OnTheGround/Trees" unique_id=1971220007 instance=ExtResource("12_0g3ol")] +position = Vector2(545, 132) +scale = Vector2(0.950486, 0.9301162) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree15" parent="OnTheGround/Trees" unique_id=1368654873 instance=ExtResource("12_0g3ol")] +position = Vector2(935, 238.99998) +scale = Vector2(1.0215429, 1.1116835) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree16" parent="OnTheGround/Trees" unique_id=400404466 instance=ExtResource("12_0g3ol")] +position = Vector2(853.29407, 155.57956) +scale = Vector2(1.1452304, 1.1400714) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree17" parent="OnTheGround/Trees" unique_id=157894665 instance=ExtResource("12_0g3ol")] +position = Vector2(1228, 225.99998) +scale = Vector2(1.1456847, 1.0936471) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree18" parent="OnTheGround/Trees" unique_id=191441710 instance=ExtResource("12_0g3ol")] +position = Vector2(547, 478.00003) +scale = Vector2(1.201111, 1.1755983) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree19" parent="OnTheGround/Trees" unique_id=346832132 instance=ExtResource("12_0g3ol")] +position = Vector2(1244.0001, -101.00001) +scale = Vector2(0.9426333, 0.8940844) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Tree20" parent="OnTheGround/Trees" unique_id=1706633697 instance=ExtResource("12_0g3ol")] +position = Vector2(824, -45) +scale = Vector2(1.181314, 1.1187981) +sprite_frames = ExtResource("13_ebxxp") + +[node name="Butterfly_Red" parent="OnTheGround" unique_id=488734917 instance=ExtResource("23_iy1ja")] +position = Vector2(799, 336) +sprite_frames = ExtResource("25_jpujn") + +[node name="Butterfly_Blue" parent="OnTheGround" unique_id=50469008 instance=ExtResource("23_iy1ja")] +position = Vector2(2144, 73) + +[node name="FabricRock" parent="OnTheGround" unique_id=1319147835 instance=ExtResource("25_tweot")] +position = Vector2(793, 326) + +[node name="Bush" parent="OnTheGround" unique_id=1924859315 instance=ExtResource("26_jpujn")] +position = Vector2(1960, 54) +sprite_frames = ExtResource("27_tweot") + +[node name="Bush2" parent="OnTheGround" unique_id=695995602 instance=ExtResource("26_jpujn")] +position = Vector2(2155, 67) +sprite_frames = ExtResource("27_tweot") + +[node name="Bush3" parent="OnTheGround" unique_id=1351603184 instance=ExtResource("26_jpujn")] +position = Vector2(1411, 331) +sprite_frames = ExtResource("27_tweot") + +[node name="Bush4" parent="OnTheGround" unique_id=1439814151 instance=ExtResource("26_jpujn")] +position = Vector2(1362, 121) +sprite_frames = ExtResource("27_tweot") + +[node name="Bush5" parent="OnTheGround" unique_id=1484977731 instance=ExtResource("26_jpujn")] +position = Vector2(687, 74) +sprite_frames = ExtResource("27_tweot") + +[node name="Bush6" parent="OnTheGround" unique_id=1778349140 instance=ExtResource("26_jpujn")] +position = Vector2(691, 328) +sprite_frames = ExtResource("27_tweot") + +[node name="RuinedHouse" parent="OnTheGround" unique_id=2016829349 instance=ExtResource("9_4gmak")] +position = Vector2(741, -25) +texture = ExtResource("25_i7hju") + +[node name="BackgroundMusic" type="Node" parent="." unique_id=242410379] +script = ExtResource("7_teve8") +stream = ExtResource("8_j73a3") +metadata/_custom_type_script = "uid://c8405c212rbn6" + +[node name="Cinematic" type="Node2D" parent="." unique_id=926952135] +script = ExtResource("16_75rxs") +dialogue = ExtResource("17_sxarn") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="BridgeBlocker" type="StaticBody2D" parent="." unique_id=2114895881] +unique_name_in_owner = true +position = Vector2(2565, 161) +collision_layer = 16 +collision_mask = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="BridgeBlocker" unique_id=1228592449] +shape = SubResource("RectangleShape2D_sxarn") + +[node name="TownieBridgePath" type="Path2D" parent="." unique_id=1835002713] +curve = SubResource("Curve2D_iy1ja") + +[node name="Teleporter" type="Area2D" parent="." unique_id=92829269] +position = Vector2(2739, 160) +collision_layer = 4 +script = ExtResource("26_3knxh") +next_scene = "uid://durvgybueqayn" +enter_transition = 2 +exit_transition = 1 +metadata/_custom_type_script = "uid://hqdquinbimce" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Teleporter" unique_id=72600342] +shape = SubResource("RectangleShape2D_iy1ja") + +[connection signal="interaction_ended" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_started"] diff --git a/scenes/quests/lore_quests/quest_000/2a_stealth/components/tutorial_stealth.dialogue b/scenes/quests/lore_quests/quest_000/2a_stealth/components/tutorial_stealth.dialogue new file mode 100644 index 0000000000..681b4db2ec --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/2a_stealth/components/tutorial_stealth.dialogue @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +Arun: The path to Fray's End is through these caves. +Arun: The caves are full of StoryVores, I'm sorry to say. +Arun: Move quickly, and don't let them spot you! +Arun: I'll see you on the other side, StoryWeaver. +=> END + +~ walk_through +% Arun: You can run by holding Shift or LB! +% Arun: Go through the caves, and don't let the StoryVores spot you! +% Arun: Watch how the StoryVores patrol, and find spaces to hide. +% Arun: You might meet a KnitWitch along the way. +=> END + +~ well_done +if memory_thread.revealed: + => again +Arun: Congratulations, StoryWeaver. You made it through the caves unscathed. +StoryWeaver: Wait, how did you get over here without me seeing you? +Arun: Never mind that! +Arun: As you go through the world, you'll come across threads of Memory, Imagination, and Spirit. +do wait(0.5) +do hud.show +do memory_thread.reveal() +do wait(0.5) +=> collect_the_thread + +~ again +StoryWeaver: But really: how did you get here? +% Arun: Sometimes in a game you have to suspend disbelief. +% Arun: Check the scene tree in Godot! +% Arun: That's for me to know and you to find out. +=> collect_the_thread + +~ collect_the_thread +Arun: Collect the thread of Memory before we move on! +=> END + +~ thread_collected +Arun: Onwards! +=> END diff --git a/scenes/quests/lore_quests/quest_000/2a_stealth/components/tutorial_stealth.dialogue.import b/scenes/quests/lore_quests/quest_000/2a_stealth/components/tutorial_stealth.dialogue.import new file mode 100644 index 0000000000..2cc1937d46 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/2a_stealth/components/tutorial_stealth.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://bvxfbfjv2oleg" +path="res://.godot/imported/tutorial_stealth.dialogue-fa594ff07aac253bfd433f0d58bf2860.tres" + +[deps] + +source_file="res://scenes/quests/lore_quests/quest_000/2a_stealth/components/tutorial_stealth.dialogue" +dest_files=["res://.godot/imported/tutorial_stealth.dialogue-fa594ff07aac253bfd433f0d58bf2860.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/lore_quests/quest_000/2a_stealth/tutorial_stealth.gd b/scenes/quests/lore_quests/quest_000/2a_stealth/tutorial_stealth.gd new file mode 100644 index 0000000000..912f9e1d52 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/2a_stealth/tutorial_stealth.gd @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D + +@export var dark_sky_color: Color + +var _tween: Tween + +@onready var canvas_modulate: CanvasModulate = %CanvasModulate + +# Used by dialogue +@onready var memory_thread: CollectibleItem = %MemoryThread +@onready var hud: CanvasLayer = %HUD + + +func _adjust_modulation(target: Color) -> void: + if _tween: + _tween.kill() + + _tween = create_tween() + _tween.tween_property(canvas_modulate, "color", target, 0.5) + + +func _on_cave_lighting_body_entered(_body: Node2D) -> void: + _adjust_modulation(dark_sky_color) + + +func _on_cave_lighting_body_exited(_body: Node2D) -> void: + _adjust_modulation(Color.WHITE) diff --git a/scenes/quests/lore_quests/quest_000/2a_stealth/tutorial_stealth.gd.uid b/scenes/quests/lore_quests/quest_000/2a_stealth/tutorial_stealth.gd.uid new file mode 100644 index 0000000000..ff1b0bd13b --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/2a_stealth/tutorial_stealth.gd.uid @@ -0,0 +1 @@ +uid://t43ctefgmwif diff --git a/scenes/quests/lore_quests/quest_000/2a_stealth/tutorial_stealth.tscn b/scenes/quests/lore_quests/quest_000/2a_stealth/tutorial_stealth.tscn new file mode 100644 index 0000000000..a9e2254383 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/2a_stealth/tutorial_stealth.tscn @@ -0,0 +1,372 @@ +[gd_scene format=4 uid="uid://durvgybueqayn"] + +[ext_resource type="Script" uid="uid://dnp0tjloec2d7" path="res://scenes/game_logic/stealth_game_logic.gd" id="1_7bw2l"] +[ext_resource type="Script" uid="uid://t43ctefgmwif" path="res://scenes/quests/lore_quests/quest_000/2a_stealth/tutorial_stealth.gd" id="1_q2v54"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="2_pbkqu"] +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="2_wcwd1"] +[ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="3_lx70h"] +[ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="3_nil71"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="3_wcwd1"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="4_lx70h"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="5_xu4jl"] +[ext_resource type="PackedScene" uid="uid://d37mebu7atru7" path="res://scenes/game_elements/characters/enemies/guard/guard.tscn" id="6_be8bo"] +[ext_resource type="PackedScene" uid="uid://dua6mynlw2ptw" path="res://scenes/game_elements/props/checkpoint/checkpoint.tscn" id="7_kjr36"] +[ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="7_pbknt"] +[ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="8_nil71"] +[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="8_xu4jl"] +[ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="9_be8bo"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="10_kjr36"] +[ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="10_pbknt"] +[ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="11_6a0j2"] +[ext_resource type="Resource" uid="uid://bvxfbfjv2oleg" path="res://scenes/quests/lore_quests/quest_000/2a_stealth/components/tutorial_stealth.dialogue" id="11_hiptn"] +[ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="11_nil71"] +[ext_resource type="PackedScene" uid="uid://dv4f232y8w8dv" path="res://scenes/game_elements/props/decoration/water_rock/water_rock.tscn" id="12_es244"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="13_qj7hh"] +[ext_resource type="SpriteFrames" uid="uid://c5q1t8qd1h1pl" path="res://scenes/game_elements/props/decoration/water_rock/components/water_rock_02.tres" id="13_thfh2"] +[ext_resource type="SpriteFrames" uid="uid://d1k25io0tiiij" path="res://scenes/game_elements/characters/enemies/guard/components/storyvoretorch_frames_blue.tres" id="14_6a0j2"] +[ext_resource type="AudioStream" uid="uid://dgpeb1dtmfqud" path="res://assets/third_party/sounds/characters/enemies/guard/AlertSound.ogg" id="15_tfxnn"] +[ext_resource type="AudioStream" uid="uid://4ec6e2alns71" path="res://assets/third_party/sounds/characters/enemies/guard/GrassFoot.ogg" id="16_pbknt"] +[ext_resource type="AudioStream" uid="uid://c7om8kdork2rx" path="res://assets/third_party/sounds/characters/enemies/guard/Torch.ogg" id="17_nil71"] +[ext_resource type="AudioStream" uid="uid://bwif2oo6ymiu2" path="res://assets/third_party/sounds/characters/enemies/guard/TorchHit.ogg" id="18_ym6ys"] +[ext_resource type="SpriteFrames" uid="uid://tchths61dylv" path="res://scenes/game_elements/characters/enemies/guard/components/storyvoretorch_frames_green.tres" id="22_ym6ys"] +[ext_resource type="Script" uid="uid://c8405c212rbn6" path="res://scenes/game_elements/props/background_music/components/background_music.gd" id="25_qj7hh"] +[ext_resource type="AudioStream" uid="uid://qnqpd21qyfnc" path="res://assets/first_party/music/Threadbare_Stealth.ogg" id="26_m6viv"] +[ext_resource type="SpriteFrames" uid="uid://d000bjl2xdg0g" path="res://scenes/game_elements/props/checkpoint/components/knitwitch_frames_green.tres" id="28_06hgc"] +[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="30_06hgc"] +[ext_resource type="SpriteFrames" uid="uid://2ek86nvw6y28" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_yellow.tres" id="31_thfh2"] +[ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="32_p5ken"] +[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="33_j2uqn"] +[ext_resource type="SpriteFrames" uid="uid://br4k784ht8hh0" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_yellow_large.tres" id="33_p5ken"] +[ext_resource type="SpriteFrames" uid="uid://dfthhmtn4x3t8" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_yellow_small.tres" id="34_s0dut"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_tfxnn"] +size = Vector2(52, 61) + +[sub_resource type="Curve2D" id="Curve2D_6a0j2"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 576, 0) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_qj7hh"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 320, 192, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0) +} +point_count = 5 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_idy4y"] +size = Vector2(168.25, 122) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_thfh2"] +size = Vector2(168.25, 122) + +[sub_resource type="Resource" id="Resource_rl5ft"] +script = ExtResource("11_nil71") +metadata/_custom_type_script = "uid://bgmwplmj3bfls" + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_es244"] +size = Vector2(1216, 1473) + +[node name="TutorialStealth" type="Node2D" unique_id=528815133] +script = ExtResource("1_q2v54") +dark_sky_color = Color(0.48, 0.48, 0.48, 1) + +[node name="StealthGameLogic" type="Node" parent="." unique_id=1734695953] +script = ExtResource("1_7bw2l") + +[node name="CanvasModulate" type="CanvasModulate" parent="." unique_id=508226475] +unique_name_in_owner = true + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=1475451359] +y_sort_enabled = true +metadata/_edit_lock_ = true + +[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=1721096023] +z_index = -1 +tile_map_data = PackedByteArray("AAD9/xQAAAAAAAAAAAD9/xUAAAAAAAAAAAD9/xYAAAAAAAAAAAD+/xQAAAAAAAAAAAD+/xUAAAAAAAAAAAD+/xYAAAAAAAAAAAD//xQAAAAAAAAAAAD//xUAAAAAAAAAAAD//xYAAAAAAAAAAAAAABQAAAAAAAAAAAAAABUAAAAAAAAAAAAAABYAAAAAAAAAAAABABQAAAAAAAAAAAABABUAAAAAAAAAAAABABYAAAAAAAAAAAACABQAAAAAAAAAAAACABUAAAAAAAAAAAACABYAAAAAAAAAAAADABQAAAAAAAAAAAADABUAAAAAAAAAAAADABYAAAAAAAAAAAAEABQAAAAAAAAAAAAEABUAAAAAAAAAAAAEABYAAAAAAAAAAAAFABQAAAAAAAAAAAAFABUAAAAAAAAAAAAFABYAAAAAAAAAAAAGABQAAAAAAAAAAAAGABUAAAAAAAAAAAAGABYAAAAAAAAAAAAHABQAAAAAAAAAAAAHABUAAAAAAAAAAAAHABYAAAAAAAAAAAAIABQAAAAAAAAAAAAIABUAAAAAAAAAAAAIABYAAAAAAAAAAAAJABQAAAAAAAAAAAAJABUAAAAAAAAAAAAJABYAAAAAAAAAAAAKABQAAAAAAAAAAAAKABUAAAAAAAAAAAAKABYAAAAAAAAAAAD9/wUAAAAAAAAAAAD9/wYAAAAAAAAAAAD9/wcAAAAAAAAAAAD9/wgAAAAAAAAAAAD9/wkAAAAAAAAAAAD9/woAAAAAAAAAAAD9/wsAAAAAAAAAAAD9/wwAAAAAAAAAAAD9/w0AAAAAAAAAAAD9/w4AAAAAAAAAAAD9/w8AAAAAAAAAAAD9/xAAAAAAAAAAAAD9/xEAAAAAAAAAAAD9/xIAAAAAAAAAAAD9/xMAAAAAAAAAAAD+/wUAAAAAAAAAAAD+/wYAAAAAAAAAAAD+/wcAAAAAAAAAAAD+/wgAAAAAAAAAAAD+/wkAAAAAAAAAAAD+/woAAAAAAAAAAAD+/wsAAAAAAAAAAAD+/wwAAAAAAAAAAAD+/w0AAAAAAAAAAAD+/w4AAAAAAAAAAAD+/w8AAAAAAAAAAAD+/xAAAAAAAAAAAAD+/xEAAAAAAAAAAAD+/xIAAAAAAAAAAAD+/xMAAAAAAAAAAAD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAD//wcAAAAAAAAAAAD//wgAAAAAAAAAAAD//wkAAAAAAAAAAAD//woAAAAAAAAAAAD//wsAAAAAAAAAAAD//wwAAAAAAAAAAAD//w0AAAAAAAAAAAD//w4AAAAAAAAAAAD//w8AAAAAAAAAAAD//xAAAAAAAAAAAAD//xEAAAAAAAAAAAD//xIAAAAAAAAAAAD//xMAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA8AAAAAAAAAAAAAABAAAAAAAAAAAAAAABEAAAAAAAAAAAAAABIAAAAAAAAAAAAAABMAAAAAAAAAAAABAAUAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAABAAkAAAAAAAAAAAABAAoAAAAAAAAAAAABAAsAAAAAAAAAAAABAAwAAAAAAAAAAAABAA0AAAAAAAAAAAABAA4AAAAAAAAAAAABAA8AAAAAAAAAAAABABAAAAAAAAAAAAABABEAAAAAAAAAAAABABIAAAAAAAAAAAABABMAAAAAAAAAAAD+/wEAAAAAAAAAAAD+/wIAAAAAAAAAAAD+/wMAAAAAAAAAAAD+/wQAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAABAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAACAAEAAAAAAAAAAAACAAIAAAAAAAAAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAACAAUAAAAAAAAAAAACAAYAAAAAAAAAAAACAAcAAAAAAAAAAAACAAgAAAAAAAAAAAACAAkAAAAAAAAAAAADAAEAAAAAAAAAAAADAAIAAAAAAAAAAAADAAMAAAAAAAAAAAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAADAAYAAAAAAAAAAAADAAcAAAAAAAAAAAADAAgAAAAAAAAAAAADAAkAAAAAAAAAAAAEAAEAAAAAAAAAAAAEAAIAAAAAAAAAAAAEAAMAAAAAAAAAAAAEAAQAAAAAAAAAAAAEAAUAAAAAAAAAAAAEAAYAAAAAAAAAAAAEAAcAAAAAAAAAAAAEAAgAAAAAAAAAAAAEAAkAAAAAAAAAAAAFAAEAAAAAAAAAAAAFAAIAAAAAAAAAAAAFAAMAAAAAAAAAAAAFAAQAAAAAAAAAAAAFAAUAAAAAAAAAAAAFAAYAAAAAAAAAAAAFAAcAAAAAAAAAAAAFAAgAAAAAAAAAAAAFAAkAAAAAAAAAAAAGAAEAAAAAAAAAAAAGAAIAAAAAAAAAAAAGAAMAAAAAAAAAAAAGAAQAAAAAAAAAAAAGAAUAAAAAAAAAAAAGAAYAAAAAAAAAAAAGAAcAAAAAAAAAAAAGAAgAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAEAAAAAAAAAAAAHAAIAAAAAAAAAAAAHAAMAAAAAAAAAAAAHAAQAAAAAAAAAAAAHAAUAAAAAAAAAAAAHAAYAAAAAAAAAAAAHAAcAAAAAAAAAAAAHAAgAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAEAAAAAAAAAAAAIAAIAAAAAAAAAAAAIAAMAAAAAAAAAAAAIAAQAAAAAAAAAAAAIAAUAAAAAAAAAAAAIAAYAAAAAAAAAAAAIAAcAAAAAAAAAAAAIAAgAAAAAAAAAAAAIAAkAAAAAAAAAAAD9/wAAAAAAAAAAAAD9/wEAAAAAAAAAAAD9/wIAAAAAAAAAAAD9/wMAAAAAAAAAAAD9/wQAAAAAAAAAAAD+/wAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAACAAoAAAAAAAAAAAADAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAAFAAoAAAAAAAAAAAAGAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAFAAsAAAAAAAAAAAAFAAwAAAAAAAAAAAACAAwAAAAAAAAAAAADAAwAAAAAAAAAAAAEAAwAAAAAAAAAAAACAAsAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAACAA0AAAAAAAAAAAADAA0AAAAAAAAAAAAEAA0AAAAAAAAAAAADAA4AAAAAAAAAAAACAA4AAAAAAAAAAAAJAAgAAAAAAAAAAAAJAAkAAAAAAAAAAAAJAAoAAAAAAAAAAAAKAAgAAAAAAAAAAAAKAAkAAAAAAAAAAAAKAAoAAAAAAAAAAAALAAgAAAAAAAAAAAALAAkAAAAAAAAAAAALAAoAAAAAAAAAAAAMAAgAAAAAAAAAAAAMAAkAAAAAAAAAAAANAAkAAAAAAAAAAAAJAAAAAAAAAAAAAAAgAP//AAAAAAAAAAAhAP//AAAAAAAAAAAiAP//AAAAAAAAAAAjAP//AAAAAAAAAAAkAP//AAAAAAAAAAAlAP//AAAAAAAAAAAmAP//AAAAAAAAAAAnAP//AAAAAAAAAAAoAP//AAAAAAAAAAApAP//AAAAAAAAAAAqAP//AAAAAAAAAAArAP//AAAAAAAAAAAnAAAAAAAAAAAAAAAoAAEAAAAAAAAAAAAoAAIAAAAAAAAAAAAnAAEAAAAAAAAAAAAnAAIAAAAAAAAAAAAnAAMAAAAAAAAAAAAnAAQAAAAAAAAAAQAnAAUAAAAAAAAAAAAnAAYAAAAAAAAAAAAnAAcAAAAAAAAAAAAoAAAAAAAAAAAAAAAoAAMAAAAAAAAAAAAoAAQAAAAAAAAAAQAoAAUAAAAAAAAAAAAoAAYAAAAAAAAAAAAoAAcAAAAAAAAAAAAfAAgAAAAAAAAAAAAfAAkAAAAAAAAAAAAfAAoAAAAAAAAAAAAfAAsAAAAAAAAAAAAfAAwAAAAAAAAAAAAfAA0AAAAAAAAAAAAfAA4AAAAAAAAAAAAfAA8AAAAAAAAAAAAfABAAAAAAAAAAAAAfABEAAAAAAAAAAAAgAAgAAAAAAAAAAAAgAAkAAAAAAAAAAAAgAAoAAAAAAAAAAAAgAAsAAAAAAAAAAAAgAAwAAAAAAAAAAAAgAA0AAAAAAAAAAAAgAA4AAAAAAAAAAAAgAA8AAAAAAAAAAAAgABAAAAAAAAAAAAAgABEAAAAAAAAAAAAhAAgAAAAAAAAAAAAhAAkAAAAAAAAAAAAhAAoAAAAAAAAAAAAhAAsAAAAAAAAAAAAhAAwAAAAAAAAAAAAhAA0AAAAAAAAAAAAhAA4AAAAAAAAAAAAhAA8AAAAAAAAAAAAhABAAAAAAAAAAAAAhABEAAAAAAAAAAAAiAAgAAAAAAAAAAAAiAAkAAAAAAAAAAAAiAAoAAAAAAAAAAAAiAAsAAAAAAAAAAAAiAAwAAAAAAAAAAAAiAA0AAAAAAAAAAAAiAA4AAAAAAAAAAAAiAA8AAAAAAAAAAAAiABAAAAAAAAAAAAAiABEAAAAAAAAAAAAjAAgAAAAAAAAAAAAjAAkAAAAAAAAAAAAjAAoAAAAAAAAAAAAjAAsAAAAAAAAAAAAjAAwAAAAAAAAAAAAjAA0AAAAAAAAAAAAjAA4AAAAAAAAAAAAjAA8AAAAAAAAAAAAjABAAAAAAAAAAAAAjABEAAAAAAAAAAAAkAAgAAAAAAAAAAAAkAAkAAAAAAAAAAAAkAAoAAAAAAAAAAAAkAAsAAAAAAAAAAAAkAAwAAAAAAAAAAAAkAA0AAAAAAAAAAAAkAA4AAAAAAAAAAAAkAA8AAAAAAAAAAAAkABAAAAAAAAAAAAAkABEAAAAAAAAAAAAlAAgAAAAAAAAAAAAlAAkAAAAAAAAAAAAlAAoAAAAAAAAAAAAlAAsAAAAAAAAAAAAlAAwAAAAAAAAAAAAlAA0AAAAAAAAAAAAlAA4AAAAAAAAAAAAlAA8AAAAAAAAAAAAlABAAAAAAAAAAAAAlABEAAAAAAAAAAAAmAAgAAAAAAAAAAAAmAAkAAAAAAAAAAAAmAAoAAAAAAAAAAAAmAAsAAAAAAAAAAAAmAAwAAAAAAAAAAAAmAA0AAAAAAAAAAAAmAA4AAAAAAAAAAAAmAA8AAAAAAAAAAAAmABAAAAAAAAAAAAAmABEAAAAAAAAAAAAnAAgAAAAAAAAAAAAnAAkAAAAAAAAAAAAnAAoAAAAAAAAAAAAnAAsAAAAAAAAAAAAnAAwAAAAAAAAAAAAnAA0AAAAAAAAAAAAnAA4AAAAAAAAAAAAnAA8AAAAAAAAAAAAnABAAAAAAAAAAAAAnABEAAAAAAAAAAAAoAAgAAAAAAAAAAAAoAAkAAAAAAAAAAAAoAAoAAAAAAAAAAAAoAAsAAAAAAAAAAAAoAAwAAAAAAAAAAAAoAA0AAAAAAAAAAAAoAA4AAAAAAAAAAAAoAA8AAAAAAAAAAAAoABAAAAAAAAAAAAAoABEAAAAAAAAAAAApAAkAAAAAAAAAAAApAAoAAAAAAAAAAAApAAsAAAAAAAAAAAApAAwAAAAAAAAAAAApAA0AAAAAAAAAAAApAA4AAAAAAAAAAAApAA8AAAAAAAAAAAApABAAAAAAAAAAAAApABEAAAAAAAAAAAAqAAoAAAAAAAAAAAAqAAsAAAAAAAAAAAAqAAwAAAAAAAAAAAAqAA0AAAAAAAAAAAAqAA4AAAAAAAAAAAAqAA8AAAAAAAAAAAAqABAAAAAAAAAAAAAqABEAAAAAAAAAAAArAAoAAAAAAAAAAAArAAsAAAAAAAAAAAArAAwAAAAAAAAAAAArAA0AAAAAAAAAAAArAA4AAAAAAAAAAAArAA8AAAAAAAAAAAArABAAAAAAAAAAAAArABEAAAAAAAAAAAAsAAoAAAAAAAAAAAAsAAsAAAAAAAAAAAAsAAwAAAAAAAAAAAAsAA0AAAAAAAAAAAAsAA4AAAAAAAAAAAAsAA8AAAAAAAAAAAAsABAAAAAAAAAAAAAsABEAAAAAAAAAAAAfABIAAAAAAAAAAAAfABMAAAAAAAAAAAAfABQAAAAAAAAAAAAfABUAAAAAAAAAAAAfABYAAAAAAAAAAAAfABcAAAAAAAAAAAAgABIAAAAAAAAAAAAgABMAAAAAAAAAAAAgABQAAAAAAAAAAAAgABUAAAAAAAAAAAAgABYAAAAAAAAAAAAgABcAAAAAAAAAAAAhABIAAAAAAAAAAAAhABMAAAAAAAAAAAAhABQAAAAAAAAAAAAhABUAAAAAAAAAAAAhABYAAAAAAAAAAAAhABcAAAAAAAAAAAAiABIAAAAAAAAAAAAiABMAAAAAAAAAAAAiABQAAAAAAAAAAAAiABUAAAAAAAAAAAAiABYAAAAAAAAAAAAiABcAAAAAAAAAAAAjABIAAAAAAAAAAAAjABMAAAAAAAAAAAAjABQAAAAAAAAAAAAjABUAAAAAAAAAAAAjABYAAAAAAAAAAAAjABcAAAAAAAAAAAAkABIAAAAAAAAAAAAkABMAAAAAAAAAAAAkABQAAAAAAAAAAAAkABUAAAAAAAAAAAAkABYAAAAAAAAAAAAkABcAAAAAAAAAAAAlABIAAAAAAAAAAAAlABMAAAAAAAAAAAAlABQAAAAAAAAAAAAlABUAAAAAAAAAAAAlABYAAAAAAAAAAAAlABcAAAAAAAAAAAAmABIAAAAAAAAAAAAmABMAAAAAAAAAAAAmABQAAAAAAAAAAAAmABUAAAAAAAAAAAAmABYAAAAAAAAAAAAmABcAAAAAAAAAAAAnABIAAAAAAAAAAAAnABMAAAAAAAAAAAAnABQAAAAAAAAAAAAnABUAAAAAAAAAAAAnABYAAAAAAAAAAAAnABcAAAAAAAAAAAAoABIAAAAAAAAAAAAoABMAAAAAAAAAAAAoABQAAAAAAAAAAAAoABUAAAAAAAAAAAAoABYAAAAAAAAAAAAoABcAAAAAAAAAAAApABIAAAAAAAAAAAApABMAAAAAAAAAAAApABQAAAAAAAAAAAApABUAAAAAAAAAAAApABYAAAAAAAAAAAApABcAAAAAAAAAAAAqABIAAAAAAAAAAAAqABMAAAAAAAAAAAAqABQAAAAAAAAAAAAqABUAAAAAAAAAAAAqABYAAAAAAAAAAAAqABcAAAAAAAAAAAArABIAAAAAAAAAAAArABMAAAAAAAAAAAArABQAAAAAAAAAAAArABUAAAAAAAAAAAArABYAAAAAAAAAAAArABcAAAAAAAAAAAAsABIAAAAAAAAAAAAsABMAAAAAAAAAAAAsABQAAAAAAAAAAAAsABUAAAAAAAAAAAAsABYAAAAAAAAAAAAsABcAAAAAAAAAAAAMAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAJAAEAAAAAAAAAAAAhAAAAAAAAAAAAAAAhAAEAAAAAAAAAAAAhAAIAAAAAAAAAAAAhAAMAAAAAAAAAAAAhAAQAAAAAAAAAAQAhAAUAAAAAAAAAAAAhAAYAAAAAAAAAAAAhAAcAAAAAAAAAAAAiAAAAAAAAAAAAAAAiAAEAAAAAAAAAAAAiAAIAAAAAAAAAAAAiAAMAAAAAAAAAAAAiAAQAAAAAAAAAAQAiAAUAAAAAAAAAAAAiAAYAAAAAAAAAAAAiAAcAAAAAAAAAAAAjAAAAAAAAAAAAAAAjAAEAAAAAAAAAAAAjAAIAAAAAAAAAAAAjAAMAAAAAAAAAAAAjAAQAAAAAAAAAAQAjAAUAAAAAAAAAAAAjAAYAAAAAAAAAAAAjAAcAAAAAAAAAAAAkAAAAAAAAAAAAAAAkAAEAAAAAAAAAAAAkAAIAAAAAAAAAAAAkAAMAAAAAAAAAAAAkAAQAAAAAAAAAAQAkAAUAAAAAAAAAAAAkAAYAAAAAAAAAAAAkAAcAAAAAAAAAAAAlAAAAAAAAAAAAAAAlAAEAAAAAAAAAAAAlAAIAAAAAAAAAAAAlAAMAAAAAAAAAAAAlAAQAAAAAAAAAAQAlAAUAAAAAAAAAAAAlAAYAAAAAAAAAAAAlAAcAAAAAAAAAAAAmAAAAAAAAAAAAAAAmAAEAAAAAAAAAAAAmAAIAAAAAAAAAAAAmAAMAAAAAAAAAAAAmAAQAAAAAAAAAAQAmAAUAAAAAAAAAAAAmAAYAAAAAAAAAAAAmAAcAAAAAAAAAAAApAAAAAAAAAAAAAAApAAEAAAAAAAAAAAAqAAAAAAAAAAAAAAAqAAEAAAAAAAAAAAAsAP//AAAAAAAAAAAsAAAAAAAAAAAAAAAtAP//AAAAAAAAAAAuAP//AAAAAAAAAAAvAP//AAAAAAAAAAAwAP//AAAAAAAAAAAxAP//AAAAAAAAAAAyAP//AAAAAAAAAAAxAAAAAAAAAAAAAAAxAAEAAAAAAAAAAAAxAAIAAAAAAAAAAAAxAAMAAAAAAAAAAAAxAAQAAAAAAAAAAAAxAAUAAAAAAAAAAAAxAAYAAAAAAAAAAAAxAAcAAAAAAAAAAAAxAAgAAAAAAAAAAAAyAAAAAAAAAAAAAAAyAAEAAAAAAAAAAAAyAAIAAAAAAAAAAAAyAAMAAAAAAAAAAAAyAAQAAAAAAAAAAAAyAAUAAAAAAAAAAAAyAAYAAAAAAAAAAAAyAAcAAAAAAAAAAAAyAAgAAAAAAAAAAAAzAP//AAAAAAAAAAAzAAAAAAAAAAAAAAAzAAEAAAAAAAAAAAAzAAIAAAAAAAAAAAAzAAMAAAAAAAAAAAAzAAQAAAAAAAAAAAAzAAUAAAAAAAAAAAAzAAYAAAAAAAAAAAAzAAcAAAAAAAAAAAAzAAgAAAAAAAAAAAAvAP7/AAAAAAAAAAAwAP7/AAAAAAAAAAAxAP7/AAAAAAAAAAAyAP7/AAAAAAAAAAAuAP7/AAAAAAAAAAAzAP7/AAAAAAAAAAAsAAgAAAAAAAAAAAAsAAkAAAAAAAAAAAAtAAgAAAAAAAAAAAAtAAkAAAAAAAAAAAAuAAgAAAAAAAAAAAAuAAkAAAAAAAAAAAAvAAgAAAAAAAAAAAAvAAkAAAAAAAAAAAAwAAgAAAAAAAAAAAAwAAkAAAAAAAAAAAApAAcAAAAAAAAAAAApAAgAAAAAAAAAAAAqAAcAAAAAAAAAAAAqAAgAAAAAAAAAAAAqAAkAAAAAAAAAAAArAAcAAAAAAAAAAAArAAgAAAAAAAAAAAArAAkAAAAAAAAAAAAsAAcAAAAAAAAAAAApAAYAAAAAAAAAAAAqAAYAAAAAAAAAAAAtAAoAAAAAAAAAAAAtAAsAAAAAAAAAAAAtAAwAAAAAAAAAAAAtAA0AAAAAAAAAAAAtAA4AAAAAAAAAAAAtAA8AAAAAAAAAAAAtABAAAAAAAAAAAAAuAAoAAAAAAAAAAAAuAAsAAAAAAAAAAAAuAAwAAAAAAAAAAAAuAA0AAAAAAAAAAAAuAA4AAAAAAAAAAAAuAA8AAAAAAAAAAAAuABAAAAAAAAAAAAAvAAoAAAAAAAAAAAAvAAsAAAAAAAAAAAAvAAwAAAAAAAAAAAAvAA0AAAAAAAAAAAAvAA4AAAAAAAAAAAAvAA8AAAAAAAAAAAAvABAAAAAAAAAAAAAwAAoAAAAAAAAAAAAwAAsAAAAAAAAAAAAwAAwAAAAAAAAAAAAwAA0AAAAAAAAAAAAwAA4AAAAAAAAAAAAwAA8AAAAAAAAAAAAwABAAAAAAAAAAAAAxAAkAAAAAAAAAAAAxAAoAAAAAAAAAAAAxAAsAAAAAAAAAAAAxAAwAAAAAAAAAAAAxAA0AAAAAAAAAAAAxAA4AAAAAAAAAAAAxAA8AAAAAAAAAAAAxABAAAAAAAAAAAAAyAAkAAAAAAAAAAAAyAAoAAAAAAAAAAAAyAAsAAAAAAAAAAAAyAAwAAAAAAAAAAAAyAA0AAAAAAAAAAAAyAA4AAAAAAAAAAAAyAA8AAAAAAAAAAAAyABAAAAAAAAAAAAAzAAkAAAAAAAAAAAAzAAoAAAAAAAAAAAAzAAsAAAAAAAAAAAAzAAwAAAAAAAAAAAAzAA0AAAAAAAAAAAAzAA4AAAAAAAAAAAAzAA8AAAAAAAAAAAAzABAAAAAAAAAAAAArAAYAAAAAAAAAAAAsAAYAAAAAAAAAAAAtAAYAAAAAAAAAAAAtAAcAAAAAAAAAAAAuAAYAAAAAAAAAAAAuAAcAAAAAAAAAAAAvAAYAAAAAAAAAAAAvAAcAAAAAAAAAAAAwAAYAAAAAAAAAAAAwAAcAAAAAAAAAAAA=") +tile_set = ExtResource("2_wcwd1") + +[node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=503122740] +tile_map_data = PackedByteArray("AAACABMAAgAAAAAAAAADABMAAgAAAAAAAAAEABMAAgAAAAAAAAAFABMAAgAAAAAAAAAGABMAAgAAAAAAAAAHABMAAgAAAAAAAAAIABMAAgAAAAAAAAAJABMAAgAAAAAAAAAKABMAAgAAAAAAAAACAA8AAgAAAAAAAAACABAAAgAAAAAAAAACABEAAgAAAAAAAAACABIAAgAAAAAAAAADAA8AAgAAAAAAAAAEAA4AAgAAAAAAAAAEAA8AAgAAAAAAAAAFAA0AAgAAAAAAAAAFAA4AAgAAAAAAAAAGAAsAAgAAAAAAAAAGAAwAAgAAAAAAAAAGAA0AAgAAAAAAAAAHAAsAAgAAAAAAAAAIAAsAAgAAAAAAAAAJAAsAAgAAAAAAAAAKAAsAAgAAAAAAAAALAAsAAgAAAAAAAAAMAAsAAgAAAAAAAAAOAAoAAgAAAAAAAAAOAAkAAgAAAAAAAAAOAAgAAgAAAAAAAAANAAgAAgAAAAAAAAANAAcAAgAAAAAAAAAMAAcAAgAAAAAAAAALAAcAAgAAAAAAAAAKAAcAAgAAAAAAAAAJAAcAAgAAAAAAAAAJAAIAAgAAAAAAAAAJAAMAAgAAAAAAAAAJAAQAAgAAAAAAAAAJAAUAAgAAAAAAAAAJAAYAAgAAAAAAAAALABMAAgAAAAAAAAALABQAAgAAAAAAAAALABUAAgAAAAAAAAALABYAAgAAAAAAAAAeAAgAAgAAAAAAAAAeAAkAAgAAAAAAAAAeAAoAAgAAAAAAAAAeAAsAAgAAAAAAAAAeAAwAAgAAAAAAAAAeAA0AAgAAAAAAAAAeAA4AAgAAAAAAAAAeAA8AAgAAAAAAAAAeABAAAgAAAAAAAAAeABEAAgAAAAAAAAAeABIAAgAAAAAAAAAeABMAAgAAAAAAAAAeABQAAgAAAAAAAAAeAAcAAgAAAAAAAAAfAAcAAgAAAAAAAAAgAAcAAgAAAAAAAAAeAAAAAgAAAAAAAAAfAAAAAgAAAAAAAAAgAAAAAgAAAAAAAAAKAAAAAgAAAAAAAAAKAAEAAgAAAAAAAAAKAAIAAgAAAAAAAAAgAAEAAgAAAAAAAAAgAAIAAgAAAAAAAAAgAAMAAgAAAAAAAAAgAAQAAgAAAAAAAAAgAAUAAgAAAAAAAAAgAAYAAgAAAAAAAAArAAAAAgAAAAAAAAArAAEAAgAAAAAAAAAsAAEAAgAAAAAAAAAtAAAAAgAAAAAAAAAtAAEAAgAAAAAAAAAuAAAAAgAAAAAAAAAvAAAAAgAAAAAAAAAwAAAAAgAAAAAAAAAwAAEAAgAAAAAAAAAwAAIAAgAAAAAAAAAwAAMAAgAAAAAAAAAwAAQAAgAAAAAAAAAwAAUAAgAAAAAAAAAqAAUAAgAAAAAAAAArAAUAAgAAAAAAAAApAAIAAgAAAAAAAAApAAMAAgAAAAAAAAApAAQAAgAAAAAAAAApAAUAAgAAAAAAAAAqAAIAAgAAAAAAAAArAAIAAgAAAAAAAAAtAAUAAgAAAAAAAAAuAAUAAgAAAAAAAAAvAAUAAgAAAAAAAAAsAAUAAgAAAAAAAAA=") +tile_set = ExtResource("3_nil71") + +[node name="BridgeShadows" type="TileMapLayer" parent="TileMapLayers" unique_id=1986682741] +tile_set = ExtResource("3_lx70h") + +[node name="Dirt" type="TileMapLayer" parent="TileMapLayers" unique_id=1281117780] +tile_map_data = PackedByteArray("AAAdABEABgACAAIAAAAdABAABgACAAEAAAAdAA8ABgACAAEAAAAdAA4ABgACAAEAAAAdAA0ABgACAAEAAAAdAAwABgACAAEAAAAdAAsABgACAAEAAAAdAAoABgACAAEAAAAdAAkABgACAAEAAAAdAAgABgACAAEAAAAdAAcABgACAAEAAAAdAAYABgACAAEAAAAdAAUABgACAAEAAAAdAAQABgACAAEAAAAdAAMABgACAAEAAAAdAAIABgACAAEAAAAdAAEABgACAAAAAAAcABEABgABAAIAAAAcABAABgABAAEAAAAcAA8ABgABAAEAAAAcAA4ABgABAAEAAAAcAA0ABgABAAEAAAAcAAwABgABAAEAAAAcAAsABgABAAEAAAAcAAoABgABAAEAAAAcAAkABgABAAEAAAAcAAgABgABAAEAAAAcAAcABgABAAEAAAAcAAYABgABAAEAAAAcAAUABgABAAEAAAAcAAQABgABAAEAAAAcAAMABgABAAEAAAAcAAIABgABAAEAAAAcAAEABgABAAAAAAAbABEABgABAAIAAAAbABAABgABAAEAAAAbAA8ABgABAAEAAAAbAA4ABgABAAEAAAAbAA0ABgABAAEAAAAbAAwABgABAAEAAAAbAAsABgABAAEAAAAbAAoABgABAAEAAAAbAAkABgABAAEAAAAbAAgABgABAAEAAAAbAAcABgABAAEAAAAbAAYABgABAAEAAAAbAAUABgABAAEAAAAbAAQABgABAAEAAAAbAAMABgABAAEAAAAbAAIABgABAAEAAAAbAAEABgABAAAAAAAaABEABgABAAIAAAAaABAABgABAAEAAAAaAA8ABgABAAEAAAAaAA4ABgABAAEAAAAaAA0ABgABAAEAAAAaAAwABgABAAEAAAAaAAsABgABAAEAAAAaAAoABgABAAEAAAAaAAkABgABAAEAAAAaAAgABgABAAEAAAAaAAcABgABAAEAAAAaAAYABgABAAEAAAAaAAUABgABAAEAAAAaAAQABgABAAEAAAAaAAMABgABAAEAAAAaAAIABgABAAEAAAAaAAEABgABAAAAAAAZABEABgABAAIAAAAZABAABgABAAEAAAAZAA8ABgABAAEAAAAZAA4ABgABAAEAAAAZAA0ABgABAAEAAAAZAAwABgABAAEAAAAZAAsABgABAAEAAAAZAAoABgABAAEAAAAZAAkABgABAAEAAAAZAAgABgABAAEAAAAZAAcABgABAAEAAAAZAAYABgABAAEAAAAZAAUABgABAAEAAAAZAAQABgABAAEAAAAZAAMABgABAAEAAAAZAAIABgABAAEAAAAZAAEABgABAAAAAAAYABEABgABAAIAAAAYABAABgABAAEAAAAYAA8ABgABAAEAAAAYAA4ABgABAAEAAAAYAA0ABgABAAEAAAAYAAwABgABAAEAAAAYAAsABgABAAEAAAAYAAoABgABAAEAAAAYAAkABgABAAEAAAAYAAgABgABAAEAAAAYAAcABgABAAEAAAAYAAYABgABAAEAAAAYAAUABgABAAEAAAAYAAQABgABAAEAAAAYAAMABgABAAEAAAAYAAIABgABAAEAAAAYAAEABgABAAAAAAAXABEABgABAAIAAAAXABAABgABAAEAAAAXAA8ABgABAAEAAAAXAA4ABgABAAEAAAAXAA0ABgABAAEAAAAXAAwABgABAAEAAAAXAAsABgABAAEAAAAXAAoABgABAAEAAAAXAAkABgABAAEAAAAXAAgABgABAAEAAAAXAAcABgABAAEAAAAXAAYABgABAAEAAAAXAAUABgABAAEAAAAXAAQABgABAAEAAAAXAAMABgABAAEAAAAXAAIABgABAAEAAAAXAAEABgABAAAAAAAWABEABgABAAIAAAAWABAABgABAAEAAAAWAA8ABgABAAEAAAAWAA4ABgABAAEAAAAWAA0ABgABAAEAAAAWAAwABgABAAEAAAAWAAsABgABAAEAAAAWAAoABgABAAEAAAAWAAkABgABAAEAAAAWAAgABgABAAEAAAAWAAcABgABAAEAAAAWAAYABgABAAEAAAAWAAUABgABAAEAAAAWAAQABgABAAEAAAAWAAMABgABAAEAAAAWAAIABgABAAEAAAAWAAEABgABAAAAAAAVABEABgABAAIAAAAVABAABgABAAEAAAAVAA8ABgABAAEAAAAVAA4ABgABAAEAAAAVAA0ABgABAAEAAAAVAAwABgABAAEAAAAVAAsABgABAAEAAAAVAAoABgABAAEAAAAVAAkABgABAAEAAAAVAAgABgABAAEAAAAVAAcABgABAAEAAAAVAAYABgABAAEAAAAVAAUABgABAAEAAAAVAAQABgABAAEAAAAVAAMABgABAAEAAAAVAAIABgABAAEAAAAVAAEABgABAAAAAAAUABEABgABAAIAAAAUABAABgABAAEAAAAUAA8ABgABAAEAAAAUAA4ABgABAAEAAAAUAA0ABgABAAEAAAAUAAwABgABAAEAAAAUAAsABgABAAEAAAAUAAoABgABAAEAAAAUAAkABgABAAEAAAAUAAgABgABAAEAAAAUAAcABgABAAEAAAAUAAYABgABAAEAAAAUAAUABgABAAEAAAAUAAQABgABAAEAAAAUAAMABgABAAEAAAAUAAIABgABAAEAAAAUAAEABgABAAAAAAATABEABgABAAIAAAATABAABgABAAEAAAATAA8ABgABAAEAAAATAA4ABgABAAEAAAATAA0ABgABAAEAAAATAAwABgABAAEAAAATAAsABgABAAEAAAATAAoABgABAAEAAAATAAkABgABAAEAAAATAAgABgABAAEAAAATAAcABgABAAEAAAATAAYABgABAAEAAAATAAUABgABAAEAAAATAAQABgABAAEAAAATAAMABgABAAEAAAATAAIABgABAAEAAAATAAEABgABAAAAAAASABEABgABAAIAAAASABAABgABAAEAAAASAA8ABgABAAEAAAASAA4ABgABAAEAAAASAA0ABgABAAEAAAASAAwABgABAAEAAAASAAsABgABAAEAAAASAAoABgABAAEAAAASAAkABgABAAEAAAASAAgABgABAAEAAAASAAcABgABAAEAAAASAAYABgABAAEAAAASAAUABgABAAEAAAASAAQABgABAAEAAAASAAMABgABAAEAAAASAAIABgABAAEAAAASAAEABgABAAAAAAARABEABgABAAIAAAARABAABgABAAEAAAARAA8ABgABAAEAAAARAA4ABgABAAEAAAARAA0ABgABAAEAAAARAAwABgABAAEAAAARAAsABgABAAEAAAARAAoABgABAAEAAAARAAkABgABAAEAAAARAAgABgABAAEAAAARAAcABgABAAEAAAARAAYABgABAAEAAAARAAUABgABAAEAAAARAAQABgABAAEAAAARAAMABgABAAEAAAARAAIABgABAAEAAAARAAEABgABAAAAAAAQABEABgABAAIAAAAQABAABgABAAEAAAAQAA8ABgABAAEAAAAQAA4ABgABAAEAAAAQAA0ABgABAAEAAAAQAAwABgABAAEAAAAQAAsABgABAAEAAAAQAAoABgABAAEAAAAQAAkABgABAAEAAAAQAAgABgABAAEAAAAQAAcABgABAAEAAAAQAAYABgABAAEAAAAQAAUABgABAAEAAAAQAAQABgABAAEAAAAQAAMABgABAAEAAAAQAAIABgABAAEAAAAQAAEABgABAAAAAAAPABEABgABAAIAAAAPABAABgABAAEAAAAPAA8ABgABAAEAAAAPAA4ABgABAAEAAAAPAA0ABgABAAEAAAAPAAwABgABAAEAAAAPAAsABgABAAEAAAAPAAoABgAAAAEAAAAPAAkABgAAAAEAAAAPAAgABgAAAAEAAAAPAAcABgABAAEAAAAPAAYABgABAAEAAAAPAAUABgABAAEAAAAPAAQABgABAAEAAAAPAAMABgABAAEAAAAPAAIABgABAAEAAAAPAAEABgABAAAAAAAOABEABgABAAIAAAAOABAABgABAAEAAAAOAA8ABgABAAEAAAAOAA4ABgABAAEAAAAOAA0ABgABAAEAAAAOAAwABgABAAEAAAAOAAsABgABAAAAAAAOAAcABgABAAIAAAAOAAYABgABAAEAAAAOAAUABgABAAEAAAAOAAQABgABAAEAAAAOAAMABgABAAEAAAAOAAIABgABAAEAAAAOAAEABgABAAAAAAANABEABgABAAIAAAANABAABgABAAEAAAANAA8ABgABAAEAAAANAA4ABgABAAEAAAANAA0ABgABAAEAAAANAAwABgABAAEAAAANAAsABgAAAAAAAAANAAcABgAAAAIAAAANAAYABgABAAEAAAANAAUABgABAAEAAAANAAQABgABAAEAAAANAAMABgABAAEAAAANAAIABgABAAEAAAANAAEABgABAAAAAAAMABEABgABAAIAAAAMABAABgABAAEAAAAMAA8ABgABAAEAAAAMAA4ABgABAAEAAAAMAA0ABgABAAEAAAAMAAwABgABAAAAAAAMAAYABgABAAIAAAAMAAUABgABAAEAAAAMAAQABgABAAEAAAAMAAMABgABAAEAAAAMAAIABgABAAEAAAAMAAEABgABAAAAAAALABEABgABAAIAAAALABAABgABAAEAAAALAA8ABgABAAEAAAALAA4ABgABAAEAAAALAA0ABgABAAEAAAALAAwABgABAAAAAAALAAYABgABAAIAAAALAAUABgABAAEAAAALAAQABgABAAEAAAALAAMABgABAAEAAAALAAIABgABAAEAAAALAAEABgABAAAAAAAKABEABgABAAIAAAAKABAABgABAAEAAAAKAA8ABgABAAEAAAAKAA4ABgABAAEAAAAKAA0ABgABAAEAAAAKAAwABgABAAAAAAAKAAYABgAAAAIAAAAKAAUABgAAAAEAAAAKAAQABgAAAAEAAAAKAAMABgAAAAEAAAAKAAIABgAAAAEAAAAKAAEABgAAAAAAAAAJABEABgAAAAIAAAAJABAABgAAAAEAAAAJAA8ABgAAAAEAAAAJAA4ABgAAAAEAAAAJAA0ABgAAAAEAAAAJAAwABgAAAAAAAAA=") +tile_set = ExtResource("2_pbkqu") + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=18503680] +tile_map_data = PackedByteArray("AAACAA8AAQAAAAAAAAACABAAAQAAAAEAAAACABEAAQAAAAEAAAACABIAAQAAAAEAAAACABMAAQAAAAIAAAADAA8AAQABAAAAAAADABAAAQABAAEAAAADABEAAQABAAEAAAADABIAAQABAAEAAAADABMAAQABAAIAAAAEAA8AAQABAAEAAAAEABAAAQABAAEAAAAEABEAAQABAAEAAAAEABIAAQABAAEAAAAEABMAAQABAAIAAAAFAA8AAQABAAEAAAAFABAAAQABAAEAAAAFABEAAQABAAEAAAAFABIAAQABAAEAAAAFABMAAQABAAIAAAAIABMAAQABAAIAAAAIABIAAQABAAEAAAAIABEAAQABAAEAAAAIABAAAQABAAEAAAAIAA8AAQABAAEAAAAIAA4AAQABAAEAAAAIAA0AAQABAAEAAAAIAAwAAQABAAEAAAAIAAsAAQABAAAAAAAHABMAAQABAAIAAAAHABIAAQABAAEAAAAHABEAAQABAAEAAAAHABAAAQABAAEAAAAHAA8AAQABAAEAAAAHAA4AAQABAAEAAAAHAA0AAQABAAEAAAAHAAwAAQABAAEAAAAHAAsAAQABAAAAAAAGABMAAQABAAIAAAAGABIAAQABAAEAAAAGABEAAQABAAEAAAAGABAAAQABAAEAAAAGAA8AAQABAAEAAAAGAA4AAQABAAEAAAAGAA0AAQABAAEAAAAGAAwAAQAAAAEAAAAGAAsAAQAAAAAAAAAFAA4AAQABAAEAAAAEAA4AAQAAAAAAAAAFAA0AAQAAAAAAAAAJABMAAQACAAIAAAAJABIAAQACAAEAAAAJABEAAQACAAEAAAAJABAAAQACAAEAAAAJAA8AAQACAAEAAAAJAA4AAQACAAEAAAAJAA0AAQACAAEAAAAJAAwAAQACAAEAAAAJAAsAAQACAAAAAAAgAAcAAQACAAIAAAAgAAYAAQACAAEAAAAgAAUAAQACAAEAAAAgAAQAAQACAAEAAAAgAAMAAQACAAEAAAAgAAIAAQACAAEAAAAgAAEAAQACAAEAAAAgAAAAAQACAAAAAAAfAAcAAQABAAIAAAAfAAYAAQABAAEAAAAfAAUAAQABAAEAAAAfAAQAAQABAAEAAAAfAAMAAQABAAEAAAAfAAIAAQABAAEAAAAfAAEAAQABAAEAAAAfAAAAAQABAAAAAAAeAAcAAQABAAIAAAAeAAYAAQABAAEAAAAeAAUAAQABAAEAAAAeAAQAAQABAAEAAAAeAAMAAQABAAEAAAAeAAIAAQABAAEAAAAeAAEAAQABAAEAAAAeAAAAAQAAAAAAAAAdAAcAAQAAAAIAAAAdAAYAAQAAAAEAAAAdAAUAAQAAAAEAAAAdAAQAAQAAAAEAAAAdAAMAAQAAAAEAAAAdAAIAAQAAAAEAAAAwAAUAAQACAAIAAAAwAAQAAQACAAEAAAAwAAMAAQACAAEAAAAwAAIAAQACAAEAAAAwAAEAAQACAAEAAAAwAAAAAQACAAAAAAAvAAUAAQABAAIAAAAvAAQAAQABAAEAAAAvAAMAAQABAAEAAAAvAAIAAQABAAEAAAAvAAEAAQABAAEAAAAvAAAAAQABAAAAAAAuAAUAAQABAAIAAAAuAAQAAQABAAEAAAAuAAMAAQABAAEAAAAuAAIAAQABAAEAAAAuAAEAAQABAAEAAAAuAAAAAQABAAAAAAAtAAUAAQABAAIAAAAtAAQAAQABAAEAAAAtAAMAAQABAAEAAAAtAAIAAQABAAEAAAAtAAEAAQABAAEAAAAtAAAAAQAAAAAAAAAsAAUAAQABAAIAAAAsAAQAAQABAAEAAAAsAAMAAQABAAEAAAAsAAIAAQABAAEAAAAsAAEAAQABAAAAAAArAAUAAQABAAIAAAArAAQAAQABAAEAAAArAAMAAQABAAEAAAArAAIAAQABAAEAAAArAAEAAQAAAAEAAAArAAAAAQADAAAAAAAqAAMAAQABAAEAAAAqAAIAAQABAAAAAAApAAMAAQAAAAEAAAApAAIAAQAAAAAAAAAqAAQAAQABAAEAAAApAAQAAQAAAAEAAAAqAAUAAQABAAIAAAApAAUAAQAAAAIAAAAdAAEAAQAAAAAAAAA=") +tile_set = ExtResource("2_pbkqu") + +[node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=746448914] +tile_map_data = PackedByteArray("AAAEABIAAQAGAAMAAAADABIAAQAGAAMAAAACABIAAQAFAAMAAAAGABIAAQAHAAIAAAAFABIAAQAGAAMAAAAGABEAAQAIAAEAAAAGABAAAQAIAAEAAAAGAA8AAQAFAAAAAAAKAA8AAQAHAAMAAAAJAA8AAQAGAAMAAAAIAA8AAQAGAAMAAAAHAA8AAQAGAAMAAAAgAAQAAQAHAAMAAAAfAAQAAQAGAAMAAAAeAAQAAQAGAAMAAAAdAAQAAQAGAAMAAAAcAAQAAQAFAAMAAAAsAAQAAQAGAAIAAAAtAAQAAQAHAAIAAAAvAAMAAQAHAAMAAAArAAQAAQAGAAMAAAAqAAQAAQAGAAMAAAApAAQAAQAFAAMAAAAtAAMAAQAGAAAAAAAsAAMAAQAFAAAAAAAuAAMAAQAGAAMAAAA=") +tile_set = ExtResource("2_pbkqu") + +[node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=1781243964] +tile_map_data = PackedByteArray("AAD9/xIAAwAAAAAAAAD+/xIAAwABAAAAAAD//xIAAwABAAAAAAAAABIAAwABAAAAAAABABIAAwABAAAAAAACABIAAwACAAAAAAApAAQAAwACAAAAAAAoAAQAAwABAAAAAAAnAAQAAwABAAAAAAAmAAQAAwABAAAAAAAlAAQAAwABAAAAAAAkAAQAAwABAAAAAAAjAAQAAwABAAAAAAAiAAQAAwABAAAAAAAhAAQAAwABAAAAAAAgAAQAAwAAAAAAAAA=") +tile_set = ExtResource("3_lx70h") + +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=592364377] +tile_map_data = PackedByteArray("AAAIABMAAAAAAAAAAAAJABMAAAAAAAAAAAAKABMAAAAAAAAAAAALABYAAAAAAAAAAAALABUAAAAAAAAAAAALABQAAAAAAAAAAAALABMAAAAAAAAAAAAJAAwAAAAAAAAAAAAJAA0AAAAAAAAAAAAJAA4AAAAAAAAAAAAKAA4AAAAAAAAAAAALAA4AAAAAAAAAAAAMAA4AAAAAAAAAAAANAA4AAAAAAAAAAAAOAA0AAAAAAAAAAAAPAA0AAAAAAAAAAAAQAA0AAAAAAAAAAAAQAAwAAAAAAAAAAAAQAAsAAAAAAAAAAAAQAAoAAAAAAAAAAAARAAoAAAAAAAAAAAASAAoAAAAAAAAAAAATAAoAAAAAAAAAAAATAAsAAAAAAAAAAAATAAwAAAAAAAAAAAATAA0AAAAAAAAAAAATAA4AAAAAAAAAAAAUAA4AAAAAAAAAAAAVAA4AAAAAAAAAAAAWAA4AAAAAAAAAAAAXAA4AAAAAAAAAAAAYAA4AAAAAAAAAAAAYAA0AAAAAAAAAAAAYAAwAAAAAAAAAAAAYAAsAAAAAAAAAAAAYAAoAAAAAAAAAAAAYAAkAAAAAAAAAAAAPAAcAAAAAAAAAAAAPAAgAAAAAAAAAAAAPAAkAAAAAAAAAAAAKAAEAAAAAAAAAAAAKAAIAAAAAAAAAAAAKAAMAAAAAAAAAAAAKAAQAAAAAAAAAAAAKAAUAAAAAAAAAAAAOAAQAAAAAAAAAAAAPAAQAAAAAAAAAAAAQAAQAAAAAAAAAAAARAAQAAAAAAAAAAAASAAQAAAAAAAAAAAATAAQAAAAAAAAAAAAUAAQAAAAAAAAAAAAVAAQAAAAAAAAAAAAWAAQAAAAAAAAAAAALAAEAAAAAAAAAAAAMAAEAAAAAAAAAAAANAAEAAAAAAAAAAAAOAAEAAAAAAAAAAAAPAAEAAAAAAAAAAAAQAAEAAAAAAAAAAAARAAEAAAAAAAAAAAASAAEAAAAAAAAAAAATAAEAAAAAAAAAAAAUAAEAAAAAAAAAAAAVAAEAAAAAAAAAAAAWAAEAAAAAAAAAAAAXAAEAAAAAAAAAAAAYAAEAAAAAAAAAAAAZAAEAAAAAAAAAAAAaAAEAAAAAAAAAAAAbAAEAAAAAAAAAAAAcAAEAAAAAAAAAAAAcAAIAAAAAAAAAAAAcAAMAAAAAAAAAAAAdAAEAAAAAAAAAAAAdAAIAAAAAAAAAAAAdAAMAAAAAAAAAAAAeAAEAAAAAAAAAAAAfAAEAAAAAAAAAAAAcAAYAAAAAAAAAAAAaAAcAAAAAAAAAAAAbAAcAAAAAAAAAAAAXAAYAAAAAAAAAAAAYAAYAAAAAAAAAAAAZAAYAAAAAAAAAAAAXAAQAAAAAAAAAAAAXAAUAAAAAAAAAAAAeAAgAAAAAAAAAAAAeAAkAAAAAAAAAAAAeAAoAAAAAAAAAAAAeAAsAAAAAAAAAAAAeAAwAAAAAAAAAAAAeAA0AAAAAAAAAAAAeAA4AAAAAAAAAAAAeAA8AAAAAAAAAAAAeABAAAAAAAAAAAAAeABEAAAAAAAAAAAAeABIAAAAAAAAAAAAeABMAAAAAAAAAAAAeABQAAAAAAAAAAAAeABUAAAAAAAAAAAAeABYAAAAAAAAAAAAdABYAAAAAAAAAAAAcABYAAAAAAAAAAAAbABYAAAAAAAAAAAAaABYAAAAAAAAAAAAZABYAAAAAAAAAAAAYABYAAAAAAAAAAAAXABYAAAAAAAAAAAAWABYAAAAAAAAAAAAVABYAAAAAAAAAAAAUABYAAAAAAAAAAAATABYAAAAAAAAAAAASABYAAAAAAAAAAAARABYAAAAAAAAAAAAQABYAAAAAAAAAAAAPABYAAAAAAAAAAAAOABYAAAAAAAAAAAANABYAAAAAAAAAAAAMABYAAAAAAAAAAAAcAAcAAAAAAAAAAAAcAAgAAAAAAAAAAAAcAAkAAAAAAAAAAAAcAAoAAAAAAAAAAAAcAAsAAAAAAAAAAAAcAAwAAAAAAAAAAAAcAA0AAAAAAAAAAAAcAA4AAAAAAAAAAAAcAA8AAAAAAAAAAAAcABAAAAAAAAAAAAAcABEAAAAAAAAAAAAIABIAAAAAAAAAAAASAAcAAAAAAAAAAAATAAcAAAAAAAAAAAAUAAcAAAAAAAAAAAAJAAIAAAAAAAAAAAAJAAMAAAAAAAAAAAAJAAQAAAAAAAAAAAAJAAUAAAAAAAAAAAAJAAYAAAAAAAAAAAAJAAcAAAAAAAAAAAAKAAcAAAAAAAAAAAALAAcAAAAAAAAAAAAMAAcAAAAAAAAAAAANAAgAAAAAAAAAAAAOAAkAAAAAAAAAAAAZAAQAAAAAAAAAAAA=") +tile_set = ExtResource("3_wcwd1") + +[node name="Stone" type="TileMapLayer" parent="TileMapLayers" unique_id=1574515270] +tile_map_data = PackedByteArray("AAAPABIABAABAAEAAAAOABIABAABAAEAAAANABIABAABAAEAAAAMABIABAABAAEAAAALABIABAABAAEAAAAKABIABAABAAIAAAAJABIABAABAAIAAAAIABIABAAAAAIAAAAQABIABAABAAEAAAAQABEABAABAAAAAAAPABEABAABAAAAAAAOABEABAABAAAAAAANABEABAABAAAAAAAMABEABAABAAAAAAALABEABAABAAAAAAAKABEABAABAAEAAAAJABEABAABAAEAAAAIABEABAAAAAAAAAAJAA0ABAAAAAIAAAAJAAwABAAAAAEAAAAJAAsABAAAAAAAAAAQAAwABAACAAIAAAAQAAsABAACAAEAAAAQAAoABAACAAEAAAAQAAkABAABAAAAAAAPAAwABAABAAIAAAAPAAsABAABAAEAAAAPAAoABAABAAEAAAAPAAkABAABAAEAAAAOAAwABAABAAIAAAAOAAsABAABAAEAAAAOAAoABAABAAEAAAANAAwABAABAAEAAAANAAsABAABAAEAAAANAAoABAABAAAAAAAMAAwABAABAAEAAAAMAAsABAABAAEAAAALAAwABAABAAEAAAALAAsABAABAAAAAAAKAA0ABAABAAIAAAAKAAwABAABAAEAAAAKAAsABAABAAAAAAAJABAABAAAAAAAAAAKABAABAACAAAAAAAYABIABAABAAEAAAAYABEABAABAAAAAAAXABIABAABAAEAAAAXABEABAABAAAAAAAWABIABAABAAEAAAAWABEABAABAAAAAAAVABIABAABAAEAAAAVABEABAABAAAAAAAUABIABAABAAEAAAAUABEABAABAAAAAAATABIABAABAAEAAAATABEABAABAAAAAAASABIABAABAAEAAAASABEABAABAAAAAAARABIABAABAAEAAAARABEABAABAAAAAAAYABUABAABAAIAAAAYABQABAABAAEAAAAYABMABAABAAEAAAAXABUABAABAAIAAAAXABQABAABAAEAAAAXABMABAABAAEAAAAWABUABAABAAIAAAAWABQABAABAAEAAAAWABMABAABAAEAAAAVABUABAABAAIAAAAVABQABAABAAEAAAAVABMABAABAAEAAAAUABUABAABAAIAAAAUABQABAABAAEAAAAUABMABAABAAEAAAATABUABAABAAIAAAATABQABAABAAEAAAATABMABAABAAEAAAASABUABAABAAIAAAASABQABAABAAEAAAASABMABAABAAEAAAARABUABAABAAIAAAARABQABAABAAEAAAARABMABAABAAEAAAAQABUABAABAAIAAAAQABQABAABAAEAAAAQABMABAABAAEAAAAPABUABAABAAIAAAAPABQABAABAAEAAAAPABMABAABAAEAAAAOABUABAABAAIAAAAOABQABAABAAEAAAAOABMABAABAAEAAAANABUABAABAAIAAAANABQABAABAAEAAAANABMABAABAAEAAAAMABUABAABAAIAAAAMABQABAABAAEAAAAMABMABAABAAEAAAALABUABAAAAAIAAAALABQABAAAAAEAAAALABMABAAAAAEAAAASAAkABAABAAQAAAARAAkABAABAAQAAAAXAA0ABAABAAIAAAAXAAwABAABAAEAAAAXAAsABAABAAEAAAAXAAoABAABAAEAAAAXAAkABAABAAEAAAAWAA0ABAABAAIAAAAWAAwABAABAAEAAAAWAAsABAABAAEAAAAWAAoABAABAAEAAAAWAAkABAABAAAAAAAVAA0ABAABAAIAAAAVAAwABAABAAEAAAAVAAsABAABAAEAAAAVAAoABAABAAEAAAAVAAkABAABAAAAAAAUAA0ABAABAAIAAAAUAAwABAABAAEAAAAUAAsABAABAAEAAAAUAAoABAABAAEAAAAUAAkABAABAAAAAAATAA0ABAAAAAIAAAATAAwABAAAAAEAAAATAAsABAAAAAEAAAATAAoABAAAAAEAAAATAAkABAABAAAAAAAYAA0ABAACAAIAAAAYAAwABAACAAEAAAAYAAsABAACAAEAAAAYAAoABAACAAEAAAAYAAkABAACAAEAAAAeABUABAACAAIAAAAeABQABAACAAEAAAAeABMABAACAAEAAAAeABIABAACAAEAAAAeABEABAACAAEAAAAdABUABAABAAIAAAAdABQABAABAAEAAAAdABMABAABAAEAAAAdABIABAABAAEAAAAdABEABAABAAEAAAAcABUABAABAAIAAAAcABQABAABAAEAAAAcABMABAABAAEAAAAcABIABAABAAEAAAAcABEABAABAAEAAAAbABUABAABAAIAAAAbABQABAABAAEAAAAbABMABAABAAEAAAAbABIABAABAAEAAAAbABEABAABAAAAAAAaABUABAABAAIAAAAaABQABAABAAEAAAAaABMABAABAAEAAAAaABIABAABAAEAAAAaABEABAABAAAAAAAZABUABAABAAIAAAAZABQABAABAAEAAAAZABMABAABAAEAAAAZABIABAABAAEAAAAZABEABAABAAAAAAAeABAABAACAAEAAAAeAA8ABAACAAEAAAAeAA4ABAACAAEAAAAeAA0ABAACAAEAAAAeAAwABAACAAEAAAAeAAsABAACAAEAAAAdABAABAABAAEAAAAdAA8ABAABAAEAAAAdAA4ABAABAAEAAAAdAA0ABAABAAEAAAAdAAwABAABAAEAAAAdAAsABAABAAEAAAAcABAABAAAAAEAAAAcAA8ABAAAAAEAAAAcAA4ABAAAAAEAAAAcAA0ABAAAAAEAAAAcAAwABAAAAAEAAAAcAAsABAAAAAEAAAAeAAoABAACAAEAAAAeAAkABAACAAEAAAAdAAoABAABAAEAAAAdAAkABAABAAEAAAAcAAoABAAAAAEAAAAcAAkABAAAAAEAAAAKAAYABAABAAIAAAAKAAUABAACAAEAAAAKAAQABAACAAEAAAAKAAMABAACAAEAAAAKAAIABAACAAEAAAAKAAEABAACAAEAAAAKAAAABAAAAAEAAAAJAAYABAAAAAIAAAAJAAUABAAAAAEAAAAJAAQABAAAAAEAAAAJAAMABAAAAAEAAAAJAAIABAAAAAEAAAAJAAEABAAAAAAAAAAdAAEABAACAAEAAAAdAAAABAABAAEAAAAcAAEABAAAAAEAAAAcAAAABAABAAEAAAAbAAAABAABAAIAAAAaAAAABAABAAIAAAAZAAAABAABAAIAAAAYAAAABAABAAIAAAAXAAAABAABAAIAAAAWAAAABAABAAIAAAAVAAAABAABAAIAAAAUAAAABAABAAIAAAATAAAABAABAAIAAAASAAAABAABAAIAAAARAAAABAABAAIAAAAQAAAABAABAAIAAAAPAAAABAABAAIAAAAOAAAABAABAAIAAAANAAAABAABAAIAAAAMAAAABAABAAIAAAALAAAABAABAAIAAAAcAAgABAAAAAEAAAAcAAcABAAAAAEAAAAcAAYABAABAAEAAAAcAAUABAACAAAAAAAbAAYABAABAAIAAAAbAAUABAABAAAAAAAaAAYABAAAAAIAAAAaAAUABAABAAAAAAAZAAUABAABAAIAAAAdAAgABAABAAEAAAAdAAcABAABAAEAAAAdAAYABAACAAAAAAAeAAgABAACAAEAAAAZAAQABAACAAEAAAAYAAMABAABAAAAAAAXAAMABAABAAAAAAAWAAMABAABAAQAAAAVAAMABAABAAQAAAAYAAQABAABAAEAAAAYAAUABAABAAIAAAAXAAUABAAAAAIAAAAXAAQABAAAAAEAAAAYAAgABAACAAAAAAAXAAgABAAAAAAAAAAUAAYABAACAAQAAAATAAYABAABAAQAAAAUAAMABAABAAQAAAATAAMABAABAAQAAAASAAMABAABAAQAAAARAAMABAABAAQAAAAQAAMABAABAAQAAAAPAAMABAABAAQAAAASAAYABAAAAAQAAAAPAAcABAACAAEAAAAPAAYABAACAAAAAAAPAAgABAACAAEAAAAOAAcABAABAAEAAAAOAAYABAABAAAAAAANAAcABAAAAAIAAAANAAYABAABAAAAAAAMAAYABAABAAQAAAALAAYABAABAAQAAAAOAAgABAAAAAEAAAAOAAkABAAAAAEAAAAMAAoABAAAAAAAAAAdAP//BAABAAAAAAAcAP//BAABAAAAAAAbAP//BAABAAAAAAAaAP//BAABAAAAAAAZAP//BAABAAAAAAAYAP//BAABAAAAAAAXAP//BAABAAAAAAAWAP//BAABAAAAAAAVAP//BAABAAAAAAAUAP//BAABAAAAAAATAP//BAABAAAAAAASAP//BAABAAAAAAARAP//BAABAAAAAAAQAP//BAABAAAAAAAPAP//BAABAAAAAAAOAP//BAABAAAAAAANAP//BAABAAAAAAAMAP//BAABAAAAAAALAP//BAABAAAAAAAKAP//BAAAAAAAAAAfAAAABAACAAIAAAAfAP//BAACAAAAAAAeAAAABAABAAIAAAAeAP//BAABAAAAAAAeAAcABAACAAAAAAAZAAMABAACAAAAAAAcAAIABAAAAAIAAAAdAAIABAACAAIAAAAOAAMABAAAAAQAAAAMAA0ABAABAAIAAAALAA0ABAABAAIAAAANAA0ABAACAAIAAAA=") +tile_set = ExtResource("4_lx70h") + +[node name="Void" type="TileMapLayer" parent="TileMapLayers" unique_id=379046178] +texture_filter = 1 +material = ExtResource("7_pbknt") +tile_map_data = PackedByteArray("AAADAAQADQACAAIAAAADAAMADQACAAEAAAADAAIADQACAAEAAAADAAEADQACAAEAAAADAAAADQABAAEAAAACAAQADQABAAIAAAACAAMADQABAAEAAAACAAIADQABAAEAAAACAAEADQABAAEAAAACAAAADQABAAEAAAABAAQADQABAAIAAAABAAMADQABAAEAAAABAAIADQABAAEAAAABAAEADQABAAEAAAABAAAADQABAAEAAAAAAAQADQABAAIAAAAAAAMADQABAAEAAAAAAAIADQABAAEAAAAAAAEADQABAAEAAAAAAAAADQABAAEAAAD//wQADQABAAIAAAD//wMADQABAAEAAAD//wIADQABAAEAAAD//wEADQABAAEAAAD//wAADQABAAEAAAD+/wQADQABAAEAAAD+/wMADQABAAEAAAD+/wIADQABAAEAAAD+/wEADQABAAEAAAD+/wAADQABAAEAAAAGAAAADQACAAIAAAAGAP//DQABAAEAAAAGAP7/DQABAAAAAAAFAAAADQABAAIAAAAFAP//DQABAAEAAAAFAP7/DQABAAAAAAAEAAAADQABAAIAAAAEAP//DQABAAEAAAAEAP7/DQABAAAAAAADAP//DQABAAEAAAADAP7/DQABAAAAAAACAP//DQABAAEAAAACAP7/DQABAAAAAAABAP//DQABAAEAAAABAP7/DQABAAAAAAAAAP//DQABAAEAAAAAAP7/DQABAAAAAAD/////DQABAAEAAAD///7/DQABAAAAAAD+////DQABAAEAAAD+//7/DQABAAAAAAD9/wAADQABAAEAAAD9////DQABAAEAAAD9//7/DQABAAAAAAD8/wAADQABAAEAAAD8////DQABAAEAAAD8//7/DQABAAAAAAD7/wAADQABAAEAAAD7////DQABAAEAAAD7//7/DQABAAAAAAD6/wAADQABAAIAAAD6////DQABAAEAAAD6//7/DQABAAAAAAD5/wAADQAAAAIAAAD5////DQAAAAEAAAD5//7/DQAAAAAAAAAPAP//DQABAAIAAAAPAP7/DQABAAAAAAAOAP//DQABAAIAAAAOAP7/DQABAAAAAAANAP//DQABAAIAAAANAP7/DQABAAAAAAAMAP//DQABAAIAAAAMAP7/DQABAAAAAAALAP//DQABAAIAAAALAP7/DQABAAAAAAAKAP//DQABAAIAAAAKAP7/DQABAAAAAAAJAP//DQABAAIAAAAJAP7/DQABAAAAAAAIAP//DQABAAIAAAAIAP7/DQABAAAAAAAHAP//DQABAAIAAAAHAP7/DQABAAAAAAD+/wcADQACAAEAAAD+/wYADQACAAEAAAD+/wUADQACAAEAAAD9/wcADQABAAEAAAD9/wYADQABAAEAAAD9/wUADQABAAEAAAD9/wQADQABAAEAAAD9/wMADQABAAEAAAD9/wIADQABAAEAAAD9/wEADQABAAEAAAD8/wcADQABAAEAAAD8/wYADQABAAEAAAD8/wUADQABAAEAAAD8/wQADQABAAEAAAD8/wMADQABAAEAAAD8/wIADQABAAEAAAD8/wEADQABAAEAAAD7/wcADQABAAEAAAD7/wYADQAAAAEAAAD7/wUADQAAAAEAAAD7/wQADQAAAAEAAAD7/wMADQAAAAEAAAD7/wIADQAAAAEAAAD7/wEADQAAAAEAAAD8/wwADQABAAEAAAD8/wsADQABAAEAAAD8/woADQABAAEAAAD8/wkADQABAAEAAAD8/wgADQABAAEAAAD7/wwADQABAAIAAAD7/wsADQABAAEAAAD7/woADQABAAEAAAD7/wkADQABAAEAAAD7/wgADQABAAEAAAD6/wwADQAAAAIAAAD6/wsADQAAAAEAAAD6/woADQAAAAEAAAD6/wkADQAAAAEAAAD6/wgADQAAAAEAAAD6/wcADQAAAAAAAAD+/w0ADQACAAIAAAD+/wwADQACAAEAAAD+/wsADQACAAEAAAD+/woADQACAAEAAAD+/wkADQACAAEAAAD+/wgADQACAAEAAAD9/w0ADQABAAIAAAD9/wwADQABAAEAAAD9/wsADQABAAEAAAD9/woADQABAAEAAAD9/wkADQABAAEAAAD9/wgADQABAAEAAAD8/w0ADQAAAAIAAAD//xQADQACAAMAAAD+/xQADQAAAAMAAAACABcADQACAAIAAAACABYADQACAAAAAAABABcADQABAAIAAAABABYADQABAAAAAAAAABcADQAAAAIAAAAAABYADQAAAAAAAAANABYADQACAAIAAAANABUADQACAAEAAAAMABYADQAAAAIAAAAMABUADQABAAEAAAALABUADQAAAAMAAAANABQADQACAAEAAAANABMADQACAAEAAAANABIADQACAAAAAAAMABQADQAAAAEAAAAMABMADQAAAAEAAAAMABIADQAAAAAAAAASABMADQACAAMAAAARABMADQAAAAMAAAAbABMADQACAAIAAAAbABIADQACAAAAAAAaABMADQABAAIAAAAaABIADQABAAAAAAAZABMADQABAAIAAAAZABIADQABAAAAAAAYABMADQABAAIAAAAYABIADQABAAAAAAAXABMADQAAAAIAAAAXABIADQAAAAAAAAAeABAADQADAAAAAAAeABEADQADAAIAAAAUAP//DQABAAIAAAAUAP7/DQABAAAAAAATAP//DQABAAIAAAATAP7/DQABAAAAAAAVAP7/DQABAAAAAAASAP7/DQABAAAAAAARAP7/DQABAAAAAAAQAP7/DQABAAAAAAAWAP//DQABAAIAAAAVAP//DQABAAIAAAASAP//DQABAAIAAAARAP//DQABAAIAAAAQAP//DQABAAIAAAAsAP7/DQABAAIAAAAsAP3/DQABAAEAAAAsAPz/DQABAAEAAAAsAPv/DQACAAEAAAAsAPr/DQACAAAAAAArAP7/DQABAAIAAAArAP3/DQABAAEAAAArAPz/DQABAAEAAAArAPv/DQABAAEAAAArAPr/DQABAAAAAAAqAP7/DQABAAIAAAAqAP3/DQABAAEAAAAqAPz/DQABAAEAAAAqAPv/DQABAAEAAAAqAPr/DQABAAAAAAApAP7/DQABAAIAAAApAP3/DQABAAEAAAApAPz/DQABAAEAAAApAPv/DQABAAEAAAApAPr/DQABAAAAAAAoAP7/DQABAAIAAAAoAP3/DQABAAEAAAAoAPz/DQABAAEAAAAoAPv/DQABAAEAAAAoAPr/DQABAAAAAAAnAP7/DQABAAIAAAAnAP3/DQABAAEAAAAnAPz/DQABAAEAAAAnAPv/DQABAAEAAAAnAPr/DQABAAAAAAAmAP7/DQABAAIAAAAmAP3/DQABAAEAAAAmAPz/DQABAAEAAAAmAPv/DQABAAEAAAAmAPr/DQABAAAAAAAlAP7/DQABAAIAAAAlAP3/DQABAAEAAAAlAPz/DQABAAEAAAAlAPv/DQABAAEAAAAlAPr/DQABAAAAAAAkAP7/DQABAAIAAAAkAP3/DQABAAEAAAAkAPz/DQABAAEAAAAkAPv/DQABAAEAAAAkAPr/DQABAAAAAAAjAP7/DQABAAIAAAAjAP3/DQABAAEAAAAjAPz/DQABAAEAAAAjAPv/DQABAAEAAAAjAPr/DQABAAAAAAAiAP7/DQABAAIAAAAiAP3/DQABAAEAAAAiAPz/DQABAAEAAAAiAPv/DQABAAEAAAAiAPr/DQABAAAAAAAhAP7/DQABAAIAAAAhAP3/DQABAAEAAAAhAPz/DQABAAEAAAAhAPv/DQABAAEAAAAhAPr/DQABAAAAAAAgAP7/DQABAAEAAAAgAP3/DQABAAEAAAAgAPz/DQABAAEAAAAgAPv/DQABAAEAAAAgAPr/DQABAAAAAAAfAP7/DQABAAEAAAAfAP3/DQABAAEAAAAfAPz/DQABAAEAAAAfAPv/DQABAAEAAAAfAPr/DQABAAAAAAAeAP7/DQABAAEAAAAeAP3/DQABAAEAAAAeAPz/DQABAAEAAAAeAPv/DQABAAEAAAAeAPr/DQABAAAAAAAdAP7/DQABAAEAAAAdAP3/DQABAAEAAAAdAPz/DQABAAEAAAAdAPv/DQABAAEAAAAdAPr/DQABAAAAAAAcAP7/DQABAAEAAAAcAP3/DQABAAEAAAAcAPz/DQABAAEAAAAcAPv/DQABAAEAAAAcAPr/DQABAAAAAAAbAP7/DQABAAEAAAAbAP3/DQABAAEAAAAbAPz/DQABAAEAAAAbAPv/DQABAAEAAAAbAPr/DQABAAAAAAAaAP7/DQABAAEAAAAaAP3/DQABAAEAAAAaAPz/DQABAAEAAAAaAPv/DQABAAEAAAAaAPr/DQABAAAAAAAZAP7/DQABAAEAAAAZAP3/DQABAAEAAAAZAPz/DQABAAEAAAAZAPv/DQABAAEAAAAZAPr/DQABAAAAAAAYAP7/DQABAAEAAAAYAP3/DQABAAEAAAAYAPz/DQABAAEAAAAYAPv/DQABAAEAAAAYAPr/DQABAAAAAAAXAP7/DQABAAEAAAAXAP3/DQABAAEAAAAXAPz/DQABAAEAAAAXAPv/DQABAAEAAAAXAPr/DQABAAAAAAAWAP7/DQABAAEAAAAWAP3/DQAAAAEAAAAWAPz/DQAAAAEAAAAWAPv/DQAAAAEAAAAWAPr/DQAAAAAAAAAtAP7/DQACAAIAAAAtAP3/DQACAAEAAAAtAPz/DQACAAAAAAAgAP//DQACAAIAAAAfAP//DQABAAIAAAAeAP//DQABAAIAAAAdAP//DQABAAIAAAAcAP//DQABAAIAAAAbAP//DQABAAIAAAAaAP//DQABAAIAAAAZAP//DQABAAIAAAAYAP//DQABAAIAAAAXAP//DQABAAIAAAAWAAwADQACAAIAAAAWAAsADQACAAAAAAAVAAwADQAAAAIAAAAVAAsADQAAAAAAAAAjAAwADQACAAIAAAAjAAsADQACAAEAAAAjAAoADQACAAAAAAAiAAwADQAAAAIAAAAiAAsADQAAAAEAAAAiAAoADQAAAAAAAAAiAA8ADQADAAMAAAA=") +tile_set = ExtResource("8_nil71") + +[node name="InTheWater" type="Node2D" parent="." unique_id=866765693] +z_index = -1 + +[node name="WaterRock" parent="InTheWater" unique_id=200189883 instance=ExtResource("12_es244")] +position = Vector2(-175.5, 698.25006) + +[node name="WaterRock2" parent="InTheWater" unique_id=1552286387 instance=ExtResource("12_es244")] +position = Vector2(101.69739, 879.53955) + +[node name="WaterRock3" parent="InTheWater" unique_id=1023081952 instance=ExtResource("12_es244")] +position = Vector2(23, 1235) + +[node name="WaterRock4" parent="InTheWater" unique_id=594762992 instance=ExtResource("12_es244")] +position = Vector2(292, 310) + +[node name="WaterRock5" parent="InTheWater" unique_id=1775755274 instance=ExtResource("12_es244")] +position = Vector2(-148.23828, 954.7435) + +[node name="WaterRock6" parent="InTheWater" unique_id=655531925 instance=ExtResource("12_es244")] +position = Vector2(786, 554) + +[node name="WaterRock7" parent="InTheWater" unique_id=388138522 instance=ExtResource("12_es244")] +position = Vector2(774, 579) +scale = Vector2(0.8, 0.8) + +[node name="WaterRock8" parent="InTheWater" unique_id=900350161 instance=ExtResource("12_es244")] +position = Vector2(610, 46) + +[node name="WaterRock9" parent="InTheWater" unique_id=926592231 instance=ExtResource("12_es244")] +position = Vector2(2686, -6) + +[node name="WaterRock11" parent="InTheWater" unique_id=462006462 instance=ExtResource("12_es244")] +position = Vector2(2554, 200) +sprite_frames = ExtResource("13_thfh2") + +[node name="WaterRock14" parent="InTheWater" unique_id=55463410 instance=ExtResource("12_es244")] +position = Vector2(2141, 661) + +[node name="WaterRock15" parent="InTheWater" unique_id=900354334 instance=ExtResource("12_es244")] +position = Vector2(2259, 242) + +[node name="WaterRock16" parent="InTheWater" unique_id=1691258639 instance=ExtResource("12_es244")] +position = Vector2(2516.0132, 166.1694) + +[node name="WaterRock22" parent="InTheWater" unique_id=791163964 instance=ExtResource("12_es244")] +position = Vector2(2046.5078, 1019.0532) + +[node name="WaterRock10" parent="InTheWater" unique_id=273298693 instance=ExtResource("12_es244")] +position = Vector2(2120, 675) +sprite_frames = ExtResource("13_thfh2") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=1651151541] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=1079296690 instance=ExtResource("5_xu4jl")] +position = Vector2(205, 1189) +player_name = "StoryWeaver" +sprite_frames = ExtResource("8_xu4jl") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1196891219] +process_mode = 3 +limit_left = 0 +limit_top = -32 +limit_right = 3200 +limit_bottom = 1312 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="Townie" parent="OnTheGround" unique_id=1098678013 instance=ExtResource("9_be8bo")] +position = Vector2(101, 1192) +character_seed = 3222241206 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie" unique_id=513111428] +unique_name_in_owner = true +collision_layer = 32 +collision_mask = 0 +script = ExtResource("10_kjr36") +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie/InteractArea" unique_id=1862208709] +visible = false +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_tfxnn") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie" unique_id=1808600192 node_paths=PackedStringArray("interact_area")] +script = ExtResource("11_6a0j2") +dialogue = ExtResource("11_hiptn") +title = "walk_through" +interact_area = NodePath("../InteractArea") +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="Townie2" parent="OnTheGround" unique_id=1905290874 instance=ExtResource("9_be8bo")] +position = Vector2(3037, 232) +scale = Vector2(-1, 1) +character_seed = 3222241206 +look_at_side = 1 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie2" unique_id=1850835966] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("10_kjr36") +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie2/InteractArea" unique_id=1063348811] +visible = false +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_tfxnn") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie2" unique_id=704236578 node_paths=PackedStringArray("interact_area")] +script = ExtResource("11_6a0j2") +dialogue = ExtResource("11_hiptn") +title = "well_done" +interact_area = NodePath("../InteractArea") +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="EnemyGuards" type="Node2D" parent="OnTheGround" unique_id=1997239040] +y_sort_enabled = true + +[node name="Guard-GoingBackAndForth" parent="OnTheGround/EnemyGuards" unique_id=689832587 node_paths=PackedStringArray("patrol_path") instance=ExtResource("6_be8bo")] +position = Vector2(1024, 992) +sprite_frames = ExtResource("14_6a0j2") +alerted_sound_stream = ExtResource("15_tfxnn") +footsteps_sound_stream = ExtResource("16_pbknt") +idle_sound_stream = ExtResource("17_nil71") +alert_others_sound_stream = ExtResource("18_ym6ys") +patrol_path = NodePath("../Guard-GoingBackAndForth-PatrolPath") +move_speed = 200.0 + +[node name="Guard-GoingBackAndForth-PatrolPath" type="Path2D" parent="OnTheGround/EnemyGuards" unique_id=728106549] +position = Vector2(1024, 992) +curve = SubResource("Curve2D_6a0j2") + +[node name="Guard-Looping" parent="OnTheGround/EnemyGuards" unique_id=1604918260 node_paths=PackedStringArray("patrol_path") instance=ExtResource("6_be8bo")] +position = Vector2(1088, 352) +sprite_frames = ExtResource("22_ym6ys") +alerted_sound_stream = ExtResource("15_tfxnn") +footsteps_sound_stream = ExtResource("16_pbknt") +idle_sound_stream = ExtResource("17_nil71") +alert_others_sound_stream = ExtResource("18_ym6ys") +patrol_path = NodePath("../Guard-Looping-PatrolPath") +move_speed = 250.0 + +[node name="Guard-Looping-PatrolPath" type="Path2D" parent="OnTheGround/EnemyGuards" unique_id=972180249] +position = Vector2(1088, 352) +curve = SubResource("Curve2D_qj7hh") + +[node name="Checkpoints" type="Node2D" parent="OnTheGround" unique_id=344631200] +y_sort_enabled = true + +[node name="Checkpoint" parent="OnTheGround/Checkpoints" unique_id=1983094 instance=ExtResource("7_kjr36")] +position = Vector2(1691, 738) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Checkpoints/Checkpoint" unique_id=328425926] +position = Vector2(1, -2) +shape = SubResource("RectangleShape2D_idy4y") +debug_color = Color(0, 0, 0, 0.42) + +[node name="Checkpoint2" parent="OnTheGround/Checkpoints" unique_id=1789892556 instance=ExtResource("7_kjr36")] +position = Vector2(792, 316) +sprite_frames = ExtResource("28_06hgc") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Checkpoints/Checkpoint2" unique_id=1777298494] +position = Vector2(1, -2) +shape = SubResource("RectangleShape2D_thfh2") +debug_color = Color(0, 0, 0, 0.42) + +[node name="MemoryThread" parent="OnTheGround" unique_id=327991066 instance=ExtResource("10_pbknt")] +unique_name_in_owner = true +position = Vector2(2881, 254) +revealed = false +next_scene = "uid://c2cdgfy31u86r" +item = SubResource("Resource_rl5ft") + +[node name="Tree" parent="OnTheGround" unique_id=1182216860 instance=ExtResource("30_06hgc")] +position = Vector2(2783, 34) +scale = Vector2(1.2351161, 1.1818894) +sprite_frames = ExtResource("31_thfh2") + +[node name="Tree2" parent="OnTheGround" unique_id=268729682 instance=ExtResource("30_06hgc")] +position = Vector2(3104, 26) +scale = Vector2(0.90378326, 0.9827504) +sprite_frames = ExtResource("31_thfh2") + +[node name="Tree3" parent="OnTheGround" unique_id=140653176 instance=ExtResource("30_06hgc")] +position = Vector2(3058, 53) +scale = Vector2(0.9702769, 0.9232949) +sprite_frames = ExtResource("31_thfh2") + +[node name="Tree4" parent="OnTheGround" unique_id=1615331083 instance=ExtResource("30_06hgc")] +position = Vector2(2661, 157) +scale = Vector2(1.2558501, 1.1712801) +sprite_frames = ExtResource("31_thfh2") + +[node name="Bush" parent="OnTheGround" unique_id=1924859315 instance=ExtResource("32_p5ken")] +position = Vector2(2803, 66) +sprite_frames = ExtResource("33_p5ken") + +[node name="Bush2" parent="OnTheGround" unique_id=1093107514 instance=ExtResource("32_p5ken")] +position = Vector2(2785, 89) +sprite_frames = ExtResource("34_s0dut") + +[node name="Bush3" parent="OnTheGround" unique_id=1552953484 instance=ExtResource("32_p5ken")] +position = Vector2(3070, 30) +sprite_frames = ExtResource("34_s0dut") + +[node name="Bush4" parent="OnTheGround" unique_id=1234131945 instance=ExtResource("32_p5ken")] +position = Vector2(3090, 223) +sprite_frames = ExtResource("33_p5ken") + +[node name="Bush5" parent="OnTheGround" unique_id=250498822 instance=ExtResource("32_p5ken")] +position = Vector2(3049, 311) +sprite_frames = ExtResource("34_s0dut") + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=495226624] + +[node name="Cinematic" type="Node2D" parent="." unique_id=859706882] +script = ExtResource("13_qj7hh") +dialogue = ExtResource("11_hiptn") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="BackgroundMusic" type="Node" parent="." unique_id=6357163] +script = ExtResource("25_qj7hh") +stream = ExtResource("26_m6viv") +metadata/_custom_type_script = "uid://c8405c212rbn6" + +[node name="CaveLighting" type="Area2D" parent="." unique_id=227864363] +unique_name_in_owner = true +collision_layer = 0 +metadata/_edit_lock_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="CaveLighting" unique_id=1752517151] +position = Vector2(1216, 736) +shape = SubResource("RectangleShape2D_es244") +debug_color = Color(0.95686275, 0, 0.53333336, 0.13333334) +metadata/_edit_lock_ = true + +[node name="HUD" parent="." unique_id=1426591993 instance=ExtResource("33_j2uqn")] +unique_name_in_owner = true + +[connection signal="interaction_ended" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_started"] +[connection signal="interaction_ended" from="OnTheGround/Townie2/InteractArea" to="OnTheGround/Townie2" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie2/InteractArea" to="OnTheGround/Townie2" method="_on_interact_area_interaction_started"] +[connection signal="body_entered" from="CaveLighting" to="." method="_on_cave_lighting_body_entered"] +[connection signal="body_exited" from="CaveLighting" to="." method="_on_cave_lighting_body_exited"] diff --git a/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/townie_behaviors.gd b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/townie_behaviors.gd new file mode 100644 index 0000000000..2cb1161178 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/townie_behaviors.gd @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D + +@export var interact_area: InteractArea +@export var talk_behavior: TalkBehavior +@export var path_walk_behavior: PathWalkBehavior +@export var cinematic: Cinematic +@export var sequence_puzzle: SequencePuzzle + + +func _ready() -> void: + path_walk_behavior.ending_reached.connect(_on_ending_reached) + if GameState.intro_dialogue_shown: + walk_path() + else: + cinematic.cinematic_finished.connect(walk_path, CONNECT_ONE_SHOT) + + +func walk_path() -> void: + # Don't let the player talk to him while walking. + interact_area.disabled = true + path_walk_behavior.process_mode = Node.PROCESS_MODE_INHERIT + + +func _on_ending_reached() -> void: + interact_area.disabled = false + path_walk_behavior.process_mode = Node.PROCESS_MODE_DISABLED + path_walk_behavior.character.velocity = Vector2.ZERO diff --git a/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/townie_behaviors.gd.uid b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/townie_behaviors.gd.uid new file mode 100644 index 0000000000..d952f0217a --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/townie_behaviors.gd.uid @@ -0,0 +1 @@ +uid://dlnfvmc1o31rc diff --git a/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.dialogue b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.dialogue new file mode 100644 index 0000000000..3edc8f83b8 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.dialogue @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +Arun: This way! Follow me! +=> END + +~ puzzle_hints +match puzzle.get_progress() + when 0: + Arun: We'll have to tap the rocks in a particular order to open the door. + Arun: But I can't remember the sequence. Maybe those plinths are a clue? + when 1: + Arun: You're half-way there! + Arun: It looks like the second plinth has a different symbol on it... + else: + Arun: You did it! + Arun: Let's go north together. +=> END diff --git a/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.dialogue.import b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.dialogue.import new file mode 100644 index 0000000000..0dae7f2232 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://bevp181alogxl" +path="res://.godot/imported/tutorial_sequence_puzzle.dialogue-9594bac0c6daeee609773d804e3e19c0.tres" + +[deps] + +source_file="res://scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.dialogue" +dest_files=["res://.godot/imported/tutorial_sequence_puzzle.dialogue-9594bac0c6daeee609773d804e3e19c0.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.gd b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.gd new file mode 100644 index 0000000000..488e96249f --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.gd @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D + +@export var puzzle: SequencePuzzle diff --git a/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.gd.uid b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.gd.uid new file mode 100644 index 0000000000..7c4a347080 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.gd.uid @@ -0,0 +1 @@ +uid://b54tkw0m252mg diff --git a/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/sequence_puzzle.tscn b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/sequence_puzzle.tscn new file mode 100644 index 0000000000..eeddba027b --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/3_sequence_puzzle/sequence_puzzle.tscn @@ -0,0 +1,303 @@ +[gd_scene format=4 uid="uid://c2cdgfy31u86r"] + +[ext_resource type="Script" uid="uid://b54tkw0m252mg" path="res://scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.gd" id="1_2be51"] +[ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="2_awnx5"] +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="3_1jy4r"] +[ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="4_61ued"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="5_cvlqn"] +[ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="6_0u7h2"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="7_ewpk3"] +[ext_resource type="TileSet" uid="uid://41pk6xbhypue" path="res://tiles/fence.tres" id="7_ghws6"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="7_ypup5"] +[ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="8_2be51"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="9_ypup5"] +[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="10_orron"] +[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="11_2ja4k"] +[ext_resource type="Script" uid="uid://c68oh8dtr21ti" path="res://scenes/game_logic/sequence_puzzle.gd" id="11_ghws6"] +[ext_resource type="PackedScene" uid="uid://ymcjwxrqt4e4" path="res://scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock.tscn" id="12_0nlel"] +[ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="12_sewtr"] +[ext_resource type="SpriteFrames" uid="uid://bapks76u4hipj" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_green_small.tres" id="13_3a827"] +[ext_resource type="AudioStream" uid="uid://byi3b8aywp6py" path="res://assets/third_party/nepalese_hand_bells/handBells-a3.ogg" id="13_vdbd1"] +[ext_resource type="AudioStream" uid="uid://cg57q82pb243w" path="res://assets/third_party/nepalese_hand_bells/handBells-c4.ogg" id="14_ixuqx"] +[ext_resource type="AudioStream" uid="uid://cmtiwg2cylmts" path="res://assets/third_party/nepalese_hand_bells/handBells-e4.ogg" id="15_2ja4k"] +[ext_resource type="PackedScene" uid="uid://be4o3ythda4cu" path="res://scenes/game_elements/props/sequence_puzzle_hint_sign/sequence_puzzle_hint_sign.tscn" id="16_sewtr"] +[ext_resource type="SpriteFrames" uid="uid://pabpxy4b51t2" path="res://scenes/quests/lore_quests/quest_001/1_music_puzzle/components/bonfire_sign/bonfire_sign_forward.tres" id="17_3a827"] +[ext_resource type="AudioStream" uid="uid://ctty20c12j0f5" path="res://assets/third_party/sounds/bonfire_sign/FireStart.ogg" id="18_545ss"] +[ext_resource type="SpriteFrames" uid="uid://cefk7kf0bpm3q" path="res://scenes/quests/lore_quests/quest_001/1_music_puzzle/components/bonfire_sign/bonfire_sign_backward.tres" id="19_51m61"] +[ext_resource type="AudioStream" uid="uid://c7om8kdork2rx" path="res://assets/third_party/sounds/characters/enemies/guard/Torch.ogg" id="19_gp8y7"] +[ext_resource type="Script" uid="uid://ccc78coj2b1li" path="res://scenes/game_logic/sequence_puzzle_step.gd" id="20_7lgro"] +[ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="21_hsgd8"] +[ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="22_r2jqy"] +[ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="23_61ued"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="24_cvlqn"] +[ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="25_0u7h2"] +[ext_resource type="Script" uid="uid://dlnfvmc1o31rc" path="res://scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/townie_behaviors.gd" id="25_ewpk3"] +[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="26_x36jo"] +[ext_resource type="Script" uid="uid://id28maao3vdy" path="res://scenes/game_logic/walk_behaviors/path_walk_behavior.gd" id="27_0u7h2"] +[ext_resource type="PackedScene" uid="uid://daqd67aro1o1m" path="res://scenes/game_elements/fx/time_and_weather/time_and_weather.tscn" id="27_rtvrw"] +[ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="28_ewpk3"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="29_2be51"] +[ext_resource type="Resource" uid="uid://bevp181alogxl" path="res://scenes/quests/lore_quests/quest_000/3_sequence_puzzle/components/tutorial_sequence_puzzle.dialogue" id="30_ypup5"] +[ext_resource type="PackedScene" uid="uid://c4vbokn408f2c" path="res://scenes/game_elements/props/decoration/sheep/sheep.tscn" id="32_orron"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="34_2be51"] +[ext_resource type="PackedScene" uid="uid://dv4f232y8w8dv" path="res://scenes/game_elements/props/decoration/water_rock/water_rock.tscn" id="37_545ss"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_tfxnn"] +size = Vector2(52, 61) + +[sub_resource type="Resource" id="Resource_2be51"] +script = ExtResource("28_ewpk3") +walk_speed = 250.0 +run_speed = 250.0 +metadata/_custom_type_script = "uid://csev4hv57utxv" + +[sub_resource type="Curve2D" id="Curve2D_ewpk3"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157, -1, 0, 0, 0, 0, 1161, 121) +} +point_count = 3 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ypup5"] +size = Vector2(64, 64) + +[node name="TutorialSequencePuzzle" type="Node2D" unique_id=217609538 node_paths=PackedStringArray("puzzle")] +script = ExtResource("1_2be51") +puzzle = NodePath("OnTheGround/SequencePuzzle") + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=2088852286] + +[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=300386063] +z_index = -1 +material = ExtResource("2_awnx5") +tile_map_data = PackedByteArray("AAD8//z/AAAAAAAAAAD8//3/AAAAAAAAAAD8//7/AAAAAAAAAAD8////AAAAAAAAAAD8/wAAAAAAAAAAAAD8/wEAAAAAAAAAAAD8/wIAAAAAAAAAAAD8/wMAAAAAAAAAAAD8/wQAAAAAAAAAAQD8/wUAAAAAAAAAAAD8/wYAAAAAAAAAAAD8/wcAAAAAAAAAAAD9//z/AAAAAAAAAAD9//3/AAAAAAAAAAD9//7/AAAAAAAAAAD9////AAAAAAAAAAD9/wAAAAAAAAAAAAD9/wEAAAAAAAAAAAD9/wIAAAAAAAAAAAD9/wMAAAAAAAAAAAD9/wQAAAAAAAAAAQD9/wUAAAAAAAAAAAD9/wYAAAAAAAAAAAD9/wcAAAAAAAAAAAD+//z/AAAAAAAAAAD+//3/AAAAAAAAAAD+//7/AAAAAAAAAAD+////AAAAAAAAAAD+/wAAAAAAAAAAAAD+/wEAAAAAAAAAAAD+/wIAAAAAAAAAAAD+/wMAAAAAAAAAAAD+/wQAAAAAAAAAAQD+/wUAAAAAAAAAAAD+/wYAAAAAAAAAAAD+/wcAAAAAAAAAAAD///z/AAAAAAAAAAD///3/AAAAAAAAAAD///7/AAAAAAAAAAD/////AAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAQD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAD//wcAAAAAAAAAAAAAAPz/AAAAAAAAAAAAAP3/AAAAAAAAAAAAAP7/AAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAD3/wgAAAAAAAAAAAD3/wkAAAAAAAAAAAD3/woAAAAAAAAAAAD3/wsAAAAAAAAAAAD3/wwAAAAAAAAAAAD4/wgAAAAAAAAAAAD4/wkAAAAAAAAAAAD4/woAAAAAAAAAAAD4/wsAAAAAAAAAAAD4/wwAAAAAAAAAAAD5/wgAAAAAAAAAAAD5/wkAAAAAAAAAAAD5/woAAAAAAAAAAAD5/wsAAAAAAAAAAAD5/wwAAAAAAAAAAAD6/wgAAAAAAAAAAAD6/wkAAAAAAAAAAAD6/woAAAAAAAAAAAD6/wsAAAAAAAAAAAD6/wwAAAAAAAAAAAD7/wgAAAAAAAAAAAD7/wkAAAAAAAAAAAD7/woAAAAAAAAAAAD7/wsAAAAAAAAAAAD7/wwAAAAAAAAAAAD8/wgAAAAAAAAAAAD8/wkAAAAAAAAAAAD8/woAAAAAAAAAAAD8/wsAAAAAAAAAAAD8/wwAAAAAAAAAAAD9/wgAAAAAAAAAAAD9/wkAAAAAAAAAAAD9/woAAAAAAAAAAAD9/wsAAAAAAAAAAAD9/wwAAAAAAAAAAAD+/wgAAAAAAAAAAAD+/wkAAAAAAAAAAAD+/woAAAAAAAAAAAD+/wsAAAAAAAAAAAD+/wwAAAAAAAAAAAD//wgAAAAAAAAAAAD//wkAAAAAAAAAAAD//woAAAAAAAAAAAD//wsAAAAAAAAAAAD//wwAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAwAAAAAAAAAAAD1//z/AAAAAAAAAAD1//3/AAAAAAAAAAD1//7/AAAAAAAAAAD1////AAAAAAAAAAD1/wAAAAAAAAAAAAD2//z/AAAAAAAAAAD2//3/AAAAAAAAAAD2//7/AAAAAAAAAAD2////AAAAAAAAAAD2/wAAAAAAAAAAAAD3//z/AAAAAAAAAAD3//3/AAAAAAAAAAD3//7/AAAAAAAAAAD3////AAAAAAAAAAD3/wAAAAAAAAAAAAD4//z/AAAAAAAAAAD4//3/AAAAAAAAAAD4//7/AAAAAAAAAAD4////AAAAAAAAAAD4/wAAAAAAAAAAAAD5//z/AAAAAAAAAAD5//3/AAAAAAAAAAD5//7/AAAAAAAAAAD5////AAAAAAAAAAD5/wAAAAAAAAAAAAD6//z/AAAAAAAAAAD6//3/AAAAAAAAAAD6//7/AAAAAAAAAAD6////AAAAAAAAAAD6/wAAAAAAAAAAAAD7//z/AAAAAAAAAAD7//3/AAAAAAAAAAD7//7/AAAAAAAAAAD7////AAAAAAAAAAD7/wAAAAAAAAAAAADy//3/AAAAAAAAAADy//7/AAAAAAAAAADy////AAAAAAAAAADy/wAAAAAAAAAAAADy/wEAAAAAAAAAAADy/wIAAAAAAAAAAADy/wMAAAAAAAAAAADy/wQAAAAAAAAAAADy/wUAAAAAAAAAAADy/wYAAAAAAAAAAADy/wcAAAAAAAAAAADz//3/AAAAAAAAAADz//7/AAAAAAAAAADz////AAAAAAAAAADz/wAAAAAAAAAAAADz/wEAAAAAAAAAAADz/wIAAAAAAAAAAADz/wMAAAAAAAAAAADz/wQAAAAAAAAAAADz/wUAAAAAAAAAAADz/wYAAAAAAAAAAADz/wcAAAAAAAAAAADz/wgAAAAAAAAAAADz/wkAAAAAAAAAAADz/woAAAAAAAAAAAD0//3/AAAAAAAAAAD0//7/AAAAAAAAAAD0////AAAAAAAAAAD0/wAAAAAAAAAAAAD0/wEAAAAAAAAAAAD0/wIAAAAAAAAAAAD0/wMAAAAAAAAAAAD0/wQAAAAAAAAAAAD0/wUAAAAAAAAAAAD0/wYAAAAAAAAAAAD0/wcAAAAAAAAAAAD0/wgAAAAAAAAAAAD0/wkAAAAAAAAAAAD0/woAAAAAAAAAAADz/wsAAAAAAAAAAADz/wwAAAAAAAAAAAD0/wsAAAAAAAAAAAD0/wwAAAAAAAAAAAD1/wkAAAAAAAAAAAD1/woAAAAAAAAAAAD1/wsAAAAAAAAAAAD1/wwAAAAAAAAAAAD2/wkAAAAAAAAAAAD2/woAAAAAAAAAAAD2/wsAAAAAAAAAAAD2/wwAAAAAAAAAAAD1/wgAAAAAAAAAAAD2/wgAAAAAAAAAAAABAAoAAAAAAAAAAAABAAsAAAAAAAAAAAABAAwAAAAAAAAAAAACAAoAAAAAAAAAAAACAAsAAAAAAAAAAAACAAwAAAAAAAAAAAADAAoAAAAAAAAAAAADAAsAAAAAAAAAAAADAAwAAAAAAAAAAAAEAAoAAAAAAAAAAAAEAAsAAAAAAAAAAAAEAAwAAAAAAAAAAAAFAAoAAAAAAAAAAAAFAAsAAAAAAAAAAAAFAAwAAAAAAAAAAAAGAAoAAAAAAAAAAAAGAAsAAAAAAAAAAAAGAAwAAAAAAAAAAAAHAAoAAAAAAAAAAAAHAAsAAAAAAAAAAAAHAAwAAAAAAAAAAAAIAAoAAAAAAAAAAAAIAAsAAAAAAAAAAAAIAAwAAAAAAAAAAAAJAAoAAAAAAAAAAAAJAAsAAAAAAAAAAAAJAAwAAAAAAAAAAAAKAAoAAAAAAAAAAAAKAAsAAAAAAAAAAAAKAAwAAAAAAAAAAAALAAoAAAAAAAAAAAALAAsAAAAAAAAAAAALAAwAAAAAAAAAAAAMAAoAAAAAAAAAAAAMAAsAAAAAAAAAAAAMAAwAAAAAAAAAAAANAAoAAAAAAAAAAAANAAsAAAAAAAAAAAANAAwAAAAAAAAAAAAOAAoAAAAAAAAAAAAOAAsAAAAAAAAAAAAOAAwAAAAAAAAAAAAPAAoAAAAAAAAAAAAPAAsAAAAAAAAAAAAPAAwAAAAAAAAAAAAQAAoAAAAAAAAAAAAQAAsAAAAAAAAAAAAQAAwAAAAAAAAAAAARAAoAAAAAAAAAAAARAAsAAAAAAAAAAAARAAwAAAAAAAAAAAASAAoAAAAAAAAAAAASAAsAAAAAAAAAAAASAAwAAAAAAAAAAAATAAoAAAAAAAAAAAATAAsAAAAAAAAAAAATAAwAAAAAAAAAAAAUAAoAAAAAAAAAAAAUAAsAAAAAAAAAAAAUAAwAAAAAAAAAAAAVAAoAAAAAAAAAAAAVAAsAAAAAAAAAAAAVAAwAAAAAAAAAAAAWAAoAAAAAAAAAAAAWAAsAAAAAAAAAAAAWAAwAAAAAAAAAAAAXAAoAAAAAAAAAAAAXAAsAAAAAAAAAAAAXAAwAAAAAAAAAAAAYAP//AAAAAAAAAAAYAAAAAAAAAAAAAAAYAAEAAAAAAAAAAAAYAAIAAAAAAAAAAAAYAAMAAAAAAAAAAAAYAAQAAAAAAAAAAAAYAAUAAAAAAAAAAAAYAAYAAAAAAAAAAAAYAAcAAAAAAAAAAAAYAAgAAAAAAAAAAAAYAAkAAAAAAAAAAAAYAAoAAAAAAAAAAAAYAAsAAAAAAAAAAAAYAAwAAAAAAAAAAAAZAP//AAAAAAAAAAAZAAAAAAAAAAAAAAAZAAEAAAAAAAAAAAAZAAIAAAAAAAAAAAAZAAMAAAAAAAAAAAAZAAQAAAAAAAAAAAAZAAUAAAAAAAAAAAAZAAYAAAAAAAAAAAAZAAcAAAAAAAAAAAAZAAgAAAAAAAAAAAAZAAkAAAAAAAAAAAAZAAoAAAAAAAAAAAAZAAsAAAAAAAAAAAAZAAwAAAAAAAAAAAAaAP//AAAAAAAAAAAaAAAAAAAAAAAAAAAaAAEAAAAAAAAAAAAaAAIAAAAAAAAAAAAaAAMAAAAAAAAAAAAaAAQAAAAAAAAAAAAaAAUAAAAAAAAAAAAaAAYAAAAAAAAAAAAaAAcAAAAAAAAAAAAaAAgAAAAAAAAAAAAaAAkAAAAAAAAAAAAaAAoAAAAAAAAAAAAaAAsAAAAAAAAAAAAaAAwAAAAAAAAAAAD///b/AAAAAAAAAAD///f/AAAAAAAAAAD///j/AAAAAAAAAAD///n/AAAAAAAAAAD///r/AAAAAAAAAAD///v/AAAAAAAAAAAAAPb/AAAAAAAAAAAAAPf/AAAAAAAAAAAAAPj/AAAAAAAAAAAAAPn/AAAAAAAAAAAAAPr/AAAAAAAAAAAAAPv/AAAAAAAAAAABAPb/AAAAAAAAAAABAPf/AAAAAAAAAAABAPj/AAAAAAAAAAABAPn/AAAAAAAAAAABAPr/AAAAAAAAAAABAPv/AAAAAAAAAAACAPb/AAAAAAAAAAACAPf/AAAAAAAAAAACAPj/AAAAAAAAAAACAPn/AAAAAAAAAAACAPr/AAAAAAAAAAACAPv/AAAAAAAAAAADAPb/AAAAAAAAAAADAPf/AAAAAAAAAAADAPj/AAAAAAAAAAADAPn/AAAAAAAAAAADAPr/AAAAAAAAAAADAPv/AAAAAAAAAAAEAPb/AAAAAAAAAAAEAPf/AAAAAAAAAAAEAPj/AAAAAAAAAAAEAPn/AAAAAAAAAAAEAPr/AAAAAAAAAAAEAPv/AAAAAAAAAAAFAPb/AAAAAAAAAAAFAPf/AAAAAAAAAAAFAPj/AAAAAAAAAAAFAPn/AAAAAAAAAAAFAPr/AAAAAAAAAAAFAPv/AAAAAAAAAAAGAPb/AAAAAAAAAAAGAPf/AAAAAAAAAAAGAPj/AAAAAAAAAAAGAPn/AAAAAAAAAAAGAPr/AAAAAAAAAAAGAPv/AAAAAAAAAAAHAPb/AAAAAAAAAAAHAPf/AAAAAAAAAAAHAPj/AAAAAAAAAAAHAPn/AAAAAAAAAAAHAPr/AAAAAAAAAAAHAPv/AAAAAAAAAAAIAPb/AAAAAAAAAAAIAPf/AAAAAAAAAAAIAPj/AAAAAAAAAAAIAPn/AAAAAAAAAAAIAPr/AAAAAAAAAAAIAPv/AAAAAAAAAAAJAPX/AAAAAAAAAAAKAPX/AAAAAAAAAAALAPX/AAAAAAAAAAAMAPX/AAAAAAAAAAANAPX/AAAAAAAAAAAOAPX/AAAAAAAAAAAPAPX/AAAAAAAAAAAQAPX/AAAAAAAAAAASAPX/AAAAAAAAAAASAPb/AAAAAAAAAAASAPf/AAAAAAAAAAASAPj/AAAAAAAAAAASAPn/AAAAAAAAAAASAPr/AAAAAAAAAAASAPv/AAAAAAAAAAATAPX/AAAAAAAAAAATAPb/AAAAAAAAAAATAPf/AAAAAAAAAAATAPj/AAAAAAAAAAATAPn/AAAAAAAAAAATAPr/AAAAAAAAAAATAPv/AAAAAAAAAAAUAPX/AAAAAAAAAAAUAPb/AAAAAAAAAAAUAPf/AAAAAAAAAAAUAPj/AAAAAAAAAAAUAPn/AAAAAAAAAAAUAPr/AAAAAAAAAAAUAPv/AAAAAAAAAAAVAPX/AAAAAAAAAAAVAPb/AAAAAAAAAAAVAPf/AAAAAAAAAAAVAPj/AAAAAAAAAAAVAPn/AAAAAAAAAAAVAPr/AAAAAAAAAAAVAPv/AAAAAAAAAAAWAPX/AAAAAAAAAAAWAPb/AAAAAAAAAAAWAPf/AAAAAAAAAAAWAPj/AAAAAAAAAAAWAPn/AAAAAAAAAAAWAPr/AAAAAAAAAAAWAPv/AAAAAAAAAAAXAPX/AAAAAAAAAAAXAPb/AAAAAAAAAAAXAPf/AAAAAAAAAAAXAPj/AAAAAAAAAAAXAPn/AAAAAAAAAAAXAPr/AAAAAAAAAAAXAPv/AAAAAAAAAAAYAPX/AAAAAAAAAAAYAPb/AAAAAAAAAAAYAPf/AAAAAAAAAAAYAPj/AAAAAAAAAAAYAPn/AAAAAAAAAAAYAPr/AAAAAAAAAAAYAPv/AAAAAAAAAAAZAPX/AAAAAAAAAAAZAPb/AAAAAAAAAAAZAPf/AAAAAAAAAAAZAPj/AAAAAAAAAAAZAPn/AAAAAAAAAAAZAPr/AAAAAAAAAAAZAPv/AAAAAAAAAAAaAPX/AAAAAAAAAAAaAPb/AAAAAAAAAAAaAPf/AAAAAAAAAAAaAPj/AAAAAAAAAAAaAPn/AAAAAAAAAAAaAPr/AAAAAAAAAAAaAPv/AAAAAAAAAAAbAPX/AAAAAAAAAAAbAPb/AAAAAAAAAAAbAPf/AAAAAAAAAAAbAPj/AAAAAAAAAAAbAPn/AAAAAAAAAAAbAPr/AAAAAAAAAAAbAPv/AAAAAAAAAAAcAPX/AAAAAAAAAAAcAPb/AAAAAAAAAAAcAPf/AAAAAAAAAAAcAPj/AAAAAAAAAAAcAPn/AAAAAAAAAAAcAPr/AAAAAAAAAAAcAPv/AAAAAAAAAAARAPX/AAAAAAAAAAAIAPX/AAAAAAAAAAD///T/AAAAAAAAAAD///X/AAAAAAAAAAAAAPT/AAAAAAAAAAAAAPX/AAAAAAAAAAABAPT/AAAAAAAAAAABAPX/AAAAAAAAAAACAPT/AAAAAAAAAAACAPX/AAAAAAAAAAADAPT/AAAAAAAAAAADAPX/AAAAAAAAAAAEAPT/AAAAAAAAAAAEAPX/AAAAAAAAAAAFAPT/AAAAAAAAAAAFAPX/AAAAAAAAAAAGAPT/AAAAAAAAAAAGAPX/AAAAAAAAAAAHAPT/AAAAAAAAAAAHAPX/AAAAAAAAAAAIAPT/AAAAAAAAAAAJAPT/AAAAAAAAAAAKAPT/AAAAAAAAAAALAPT/AAAAAAAAAAAMAPT/AAAAAAAAAAANAPT/AAAAAAAAAAAOAPT/AAAAAAAAAAAPAPT/AAAAAAAAAAAQAPT/AAAAAAAAAAARAPT/AAAAAAAAAAASAPT/AAAAAAAAAAATAPT/AAAAAAAAAAAUAPT/AAAAAAAAAAAVAPT/AAAAAAAAAAAWAPT/AAAAAAAAAAAXAPT/AAAAAAAAAAAYAPT/AAAAAAAAAAAZAPT/AAAAAAAAAAAaAPT/AAAAAAAAAAAbAPT/AAAAAAAAAAAcAPT/AAAAAAAAAADy/wgAAAAAAAAAAADy/wkAAAAAAAAAAAAVAPz/AAAAAAAAAAAVAP3/AAAAAAAAAAAVAP7/AAAAAAAAAAAVAP//AAAAAAAAAAAVAAAAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAIAAAAAAAAAAAAVAAMAAAAAAAAAAAAVAAQAAAAAAAAAAAAWAPz/AAAAAAAAAAAWAP3/AAAAAAAAAAAWAP7/AAAAAAAAAAAWAP//AAAAAAAAAAAWAAAAAAAAAAAAAAAWAAEAAAAAAAAAAAAWAAIAAAAAAAAAAAAWAAMAAAAAAAAAAAAWAAQAAAAAAAAAAAAXAPz/AAAAAAAAAAAXAP3/AAAAAAAAAAAXAP7/AAAAAAAAAAAXAP//AAAAAAAAAAAXAAAAAAAAAAAAAAAXAAEAAAAAAAAAAAAXAAIAAAAAAAAAAAAXAAMAAAAAAAAAAAAXAAQAAAAAAAAAAAAVAAYAAAAAAAAAAAAVAAcAAAAAAAAAAAAWAAYAAAAAAAAAAAAWAAcAAAAAAAAAAAAXAAYAAAAAAAAAAAAXAAcAAAAAAAAAAAAVAAUAAAAAAAAAAAAVAAgAAAAAAAAAAAAVAAkAAAAAAAAAAAAWAAUAAAAAAAAAAAAWAAgAAAAAAAAAAAAWAAkAAAAAAAAAAAAXAAUAAAAAAAAAAAAXAAgAAAAAAAAAAAAXAAkAAAAAAAAAAAAZAPz/AAAAAAAAAAAZAP3/AAAAAAAAAAAZAP7/AAAAAAAAAAAaAPz/AAAAAAAAAAAaAP3/AAAAAAAAAAAaAP7/AAAAAAAAAAAbAPz/AAAAAAAAAAAbAP3/AAAAAAAAAAAbAP7/AAAAAAAAAAAbAP//AAAAAAAAAAAbAAAAAAAAAAAAAAAbAAEAAAAAAAAAAAAcAPz/AAAAAAAAAAAcAP3/AAAAAAAAAAAcAP7/AAAAAAAAAAAcAP//AAAAAAAAAAAcAAAAAAAAAAAAAAAcAAEAAAAAAAAAAAAYAPz/AAAAAAAAAAAYAP3/AAAAAAAAAAAYAP7/AAAAAAAAAAAJAPb/AAAAAAAAAAAKAPb/AAAAAAAAAAALAPb/AAAAAAAAAAAMAPb/AAAAAAAAAAANAPb/AAAAAAAAAAAOAPb/AAAAAAAAAAAPAPb/AAAAAAAAAAAQAPb/AAAAAAAAAAARAPb/AAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAABAAkAAAAAAAAAAAACAAcAAAAAAAAAAAACAAgAAAAAAAAAAAACAAkAAAAAAAAAAAADAAcAAAAAAAAAAAADAAgAAAAAAAAAAAADAAkAAAAAAAAAAAAEAAcAAAAAAAAAAAAEAAgAAAAAAAAAAAAEAAkAAAAAAAAAAAAFAAcAAAAAAAAAAAAFAAgAAAAAAAAAAAAFAAkAAAAAAAAAAAAGAAcAAAAAAAAAAAAGAAgAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAcAAAAAAAAAAAAHAAgAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAcAAAAAAAAAAAAIAAgAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAcAAAAAAAAAAAAJAAgAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAcAAAAAAAAAAAAKAAgAAAAAAAAAAAAKAAkAAAAAAAAAAAALAAcAAAAAAAAAAAALAAgAAAAAAAAAAAALAAkAAAAAAAAAAAAMAAcAAAAAAAAAAAAMAAgAAAAAAAAAAAAMAAkAAAAAAAAAAAANAAcAAAAAAAAAAAANAAgAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAcAAAAAAAAAAAAOAAgAAAAAAAAAAAAOAAkAAAAAAAAAAAAPAAcAAAAAAAAAAAAPAAgAAAAAAAAAAAAPAAkAAAAAAAAAAAAQAAcAAAAAAAAAAAAQAAgAAAAAAAAAAAAQAAkAAAAAAAAAAAARAAcAAAAAAAAAAAARAAgAAAAAAAAAAAARAAkAAAAAAAAAAAASAAcAAAAAAAAAAAASAAgAAAAAAAAAAAASAAkAAAAAAAAAAAATAAcAAAAAAAAAAAATAAgAAAAAAAAAAAATAAkAAAAAAAAAAAAUAAcAAAAAAAAAAAAUAAgAAAAAAAAAAAAUAAkAAAAAAAAAAAARAAUAAAAAAAAAAAARAAYAAAAAAAAAAAASAAUAAAAAAAAAAAASAAYAAAAAAAAAAAATAAUAAAAAAAAAAAATAAYAAAAAAAAAAAAUAAUAAAAAAAAAAAAUAAYAAAAAAAAAAAATAAMAAAAAAAAAAAATAAQAAAAAAAAAAAAUAAMAAAAAAAAAAAAUAAQAAAAAAAAAAAAUAAIAAAAAAAAAAAD1/wEAAAAAAAAAAAD1/wIAAAAAAAAAAAD1/wMAAAAAAAAAAAD1/wQAAAAAAAAAAAD1/wUAAAAAAAAAAAD1/wYAAAAAAAAAAAD1/wcAAAAAAAAAAAD7/wcAAAAAAAAAAAD7/wEAAAAAAAAAAAD7/wIAAAAAAAAAAAD2/wEAAAAAAAAAAAAJAPf/AAAAAAAAAAAJAPj/AAAAAAAAAAAJAPn/AAAAAAAAAAAJAPr/AAAAAAAAAAAJAPv/AAAAAAAAAAAKAPf/AAAAAAAAAAAKAPj/AAAAAAAAAAAKAPn/AAAAAAAAAAAKAPr/AAAAAAAAAAAKAPv/AAAAAAAAAAALAPf/AAAAAAAAAAALAPj/AAAAAAAAAAALAPn/AAAAAAAAAAALAPr/AAAAAAAAAAALAPv/AAAAAAAAAAAMAPf/AAAAAAAAAAAMAPj/AAAAAAAAAAAMAPn/AAAAAAAAAAAMAPr/AAAAAAAAAAAMAPv/AAAAAAAAAAANAPf/AAAAAAAAAAANAPj/AAAAAAAAAAANAPn/AAAAAAAAAAAPAPf/AAAAAAAAAAAPAPj/AAAAAAAAAAAPAPn/AAAAAAAAAAAQAPf/AAAAAAAAAAAQAPj/AAAAAAAAAAAQAPn/AAAAAAAAAAARAPf/AAAAAAAAAAARAPj/AAAAAAAAAAARAPn/AAAAAAAAAAAQAPr/AAAAAAAAAAAQAPv/AAAAAAAAAAARAPr/AAAAAAAAAAARAPv/AAAAAAAAAAABAPz/AAAAAAAAAAACAPz/AAAAAAAAAAADAPz/AAAAAAAAAAAEAPz/AAAAAAAAAAAFAPz/AAAAAAAAAAAGAPz/AAAAAAAAAAAHAPz/AAAAAAAAAAAIAPz/AAAAAAAAAAAJAPz/AAAAAAAAAAAKAPz/AAAAAAAAAAALAPz/AAAAAAAAAAAMAPz/AAAAAAAAAAAQAPz/AAAAAAAAAAARAPz/AAAAAAAAAAASAPz/AAAAAAAAAAATAPz/AAAAAAAAAAAUAPz/AAAAAAAAAADy//T/AAAAAAAAAADy//X/AAAAAAAAAADy//b/AAAAAAAAAADy//f/AAAAAAAAAADy//j/AAAAAAAAAADy//n/AAAAAAAAAADy//r/AAAAAAAAAADy//v/AAAAAAAAAADy//z/AAAAAAAAAADz//T/AAAAAAAAAADz//X/AAAAAAAAAADz//b/AAAAAAAAAADz//f/AAAAAAAAAADz//j/AAAAAAAAAADz//n/AAAAAAAAAADz//r/AAAAAAAAAADz//v/AAAAAAAAAADz//z/AAAAAAAAAAD0//T/AAAAAAAAAAD0//X/AAAAAAAAAAD0//b/AAAAAAAAAAD0//f/AAAAAAAAAAD0//j/AAAAAAAAAAD0//n/AAAAAAAAAAD0//r/AAAAAAAAAAD0//v/AAAAAAAAAAD0//z/AAAAAAAAAAD1//T/AAAAAAAAAAD1//X/AAAAAAAAAAD1//b/AAAAAAAAAAD1//f/AAAAAAAAAAD1//j/AAAAAAAAAAD1//n/AAAAAAAAAAD1//r/AAAAAAAAAAD1//v/AAAAAAAAAAD2//T/AAAAAAAAAAD2//X/AAAAAAAAAAD2//b/AAAAAAAAAAD2//f/AAAAAAAAAAD2//j/AAAAAAAAAAD2//n/AAAAAAAAAAD2//r/AAAAAAAAAAD2//v/AAAAAAAAAAD3//T/AAAAAAAAAAD3//X/AAAAAAAAAAD3//b/AAAAAAAAAAD3//f/AAAAAAAAAAD3//j/AAAAAAAAAAD3//n/AAAAAAAAAAD3//r/AAAAAAAAAAD3//v/AAAAAAAAAAD4//T/AAAAAAAAAAD4//X/AAAAAAAAAAD4//b/AAAAAAAAAAD4//f/AAAAAAAAAAD4//j/AAAAAAAAAAD4//n/AAAAAAAAAAD4//r/AAAAAAAAAAD4//v/AAAAAAAAAAD5//T/AAAAAAAAAAD5//X/AAAAAAAAAAD5//b/AAAAAAAAAAD5//f/AAAAAAAAAAD5//j/AAAAAAAAAAD5//n/AAAAAAAAAAD5//r/AAAAAAAAAAD5//v/AAAAAAAAAAD6//T/AAAAAAAAAAD6//X/AAAAAAAAAAD6//b/AAAAAAAAAAD6//f/AAAAAAAAAAD6//j/AAAAAAAAAAD6//n/AAAAAAAAAAD6//r/AAAAAAAAAAD6//v/AAAAAAAAAAD7//T/AAAAAAAAAAD7//X/AAAAAAAAAAD7//b/AAAAAAAAAAD7//f/AAAAAAAAAAD7//j/AAAAAAAAAAD7//n/AAAAAAAAAAD7//r/AAAAAAAAAAD7//v/AAAAAAAAAAD8//T/AAAAAAAAAAD8//X/AAAAAAAAAAD8//b/AAAAAAAAAAD8//f/AAAAAAAAAAD8//j/AAAAAAAAAAD8//n/AAAAAAAAAAD8//r/AAAAAAAAAAD8//v/AAAAAAAAAAD9//T/AAAAAAAAAAD9//X/AAAAAAAAAAD9//b/AAAAAAAAAAD9//f/AAAAAAAAAAD9//j/AAAAAAAAAAD9//n/AAAAAAAAAAD9//r/AAAAAAAAAAD9//v/AAAAAAAAAAD+//T/AAAAAAAAAAD+//X/AAAAAAAAAAD+//b/AAAAAAAAAAD+//f/AAAAAAAAAAD+//j/AAAAAAAAAAD+//n/AAAAAAAAAAD+//r/AAAAAAAAAAD+//v/AAAAAAAAAAA=") +tile_set = ExtResource("3_1jy4r") + +[node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=2022973594] +tile_map_data = PackedByteArray("AAD2/wIAAgAAAAAAAAD2/wMAAgAAAAAAAAD2/wQAAgAAAAAAAAD2/wUAAgAAAAAAAAD2/wYAAgAAAAAAAAD2/wcAAgAAAAAAAAD3/wcAAgAAAAAAAAD4/wcAAgAAAAAAAAD5/wcAAgAAAAAAAAD6/wcAAgAAAAAAAAD7/wMAAgAAAAAAAAD7/wQAAgAAAAAAAAD7/wUAAgAAAAAAAAD7/wYAAgAAAAAAAAD6/wEAAgAAAAAAAAD6/wIAAgAAAAAAAAD3/wEAAgAAAAAAAAD4/wEAAgAAAAAAAAD5/wEAAgAAAAAAAAABAP3/AgAAAAAAAAABAP7/AgAAAAAAAAABAP//AgAAAAAAAAABAAAAAgAAAAAAAAABAAEAAgAAAAAAAAABAAIAAgAAAAAAAAABAAMAAgAAAAAAAAABAAQAAgAAAAAAAAABAAUAAgAAAAAAAAABAAYAAgAAAAAAAAACAAYAAgAAAAAAAAADAAYAAgAAAAAAAAAEAAYAAgAAAAAAAAAFAAYAAgAAAAAAAAAGAAYAAgAAAAAAAAAHAAYAAgAAAAAAAAAIAAYAAgAAAAAAAAAJAAYAAgAAAAAAAAAKAAYAAgAAAAAAAAALAAYAAgAAAAAAAAAMAAYAAgAAAAAAAAANAAYAAgAAAAAAAAAOAAYAAgAAAAAAAAAPAAYAAgAAAAAAAAAQAAYAAgAAAAAAAAAQAAQAAgAAAAAAAAAQAAUAAgAAAAAAAAARAAQAAgAAAAAAAAASAAIAAgAAAAAAAAASAAMAAgAAAAAAAAASAAQAAgAAAAAAAAATAAIAAgAAAAAAAAAUAP3/AgAAAAAAAAAUAP7/AgAAAAAAAAAUAP//AgAAAAAAAAAUAAAAAgAAAAAAAAAUAAEAAgAAAAAAAAANAPr/AgAAAAAAAAANAPv/AgAAAAAAAAAPAPr/AgAAAAAAAAAPAPv/AgAAAAAAAAAPAPz/AgAAAAAAAAANAPz/AgAAAAAAAAAOAPb/AgAAAAAAAAAOAPf/AgAAAAAAAAAOAPj/AgAAAAAAAAAOAPn/AgAAAAAAAAAOAPr/AgAAAAAAAAA=") +tile_set = ExtResource("4_61ued") + +[node name="BridgeShadows" type="TileMapLayer" parent="TileMapLayers" unique_id=1851222375] +tile_map_data = PackedByteArray("AAD8/wQAAwACAAMAAAD9/wQAAwACAAMAAAD+/wQAAwACAAMAAAD//wQAAwACAAMAAAAAAAQAAwACAAMAAAA=") +tile_set = ExtResource("6_0u7h2") + +[node name="Dirt" type="TileMapLayer" parent="TileMapLayers" unique_id=1074176524] +tile_map_data = PackedByteArray("AAAQAAQABgACAAIAAAAQAAMABgACAAEAAAAQAAIABgACAAEAAAAQAAEABgACAAEAAAAQAAAABgACAAAAAAAPAAQABgABAAIAAAAPAAMABgABAAEAAAAPAAIABgABAAEAAAAPAAEABgABAAEAAAAPAAAABgABAAAAAAAOAAQABgABAAIAAAAOAAMABgABAAEAAAAOAAIABgABAAEAAAAOAAEABgABAAEAAAAOAAAABgABAAAAAAANAAQABgABAAIAAAANAAMABgABAAEAAAANAAIABgABAAEAAAANAAEABgABAAEAAAANAAAABgABAAAAAAAMAAQABgABAAIAAAAMAAMABgABAAEAAAAMAAIABgABAAEAAAAMAAEABgABAAEAAAAMAAAABgABAAAAAAALAAQABgABAAIAAAALAAMABgABAAEAAAALAAIABgABAAEAAAALAAEABgABAAEAAAALAAAABgABAAAAAAAKAAQABgABAAIAAAAKAAMABgABAAEAAAAKAAIABgABAAEAAAAKAAEABgABAAEAAAAKAAAABgABAAAAAAAJAAQABgABAAIAAAAJAAMABgABAAEAAAAJAAIABgABAAEAAAAJAAEABgABAAEAAAAJAAAABgABAAAAAAAIAAQABgABAAIAAAAIAAMABgABAAEAAAAIAAIABgABAAEAAAAIAAEABgABAAEAAAAIAAAABgABAAAAAAAHAAQABgABAAIAAAAHAAMABgABAAEAAAAHAAIABgABAAEAAAAHAAEABgABAAEAAAAHAAAABgABAAAAAAAGAAQABgABAAIAAAAGAAMABgABAAEAAAAGAAIABgABAAEAAAAGAAEABgABAAEAAAAGAAAABgABAAAAAAAFAAQABgABAAIAAAAFAAMABgABAAEAAAAFAAEABgABAAEAAAAFAAAABgABAAAAAAAEAAQABgAAAAIAAAAEAAMABgAAAAEAAAAEAAIABgAAAAEAAAAEAAEABgAAAAEAAAAEAAAABgAAAAAAAAAFAAIABgABAAEAAAA=") +tile_set = ExtResource("5_cvlqn") + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=592819758] +tile_map_data = PackedByteArray("AAANAAYAAQABAAIAAAANAAUAAQABAAEAAAAMAAYAAQABAAIAAAAMAAUAAQABAAEAAAALAAYAAQABAAIAAAALAAUAAQABAAEAAAAKAAYAAQABAAIAAAAKAAUAAQABAAEAAAAJAAYAAQABAAIAAAAJAAUAAQABAAEAAAAIAAYAAQABAAIAAAAIAAUAAQABAAEAAAAHAAYAAQABAAIAAAAHAAUAAQABAAEAAAAGAAYAAQABAAIAAAAGAAUAAQABAAEAAAAFAAYAAQABAAIAAAAFAAUAAQABAAEAAAAEAAYAAQABAAIAAAAEAAUAAQABAAEAAAADAAYAAQABAAIAAAADAAUAAQABAAEAAAACAAYAAQABAAIAAAACAAUAAQABAAEAAAABAAYAAQAAAAIAAAABAAUAAQAAAAEAAAAUAAEAAQACAAIAAAATAAIAAQACAAIAAAATAAEAAQABAAEAAAASAAQAAQACAAIAAAASAAMAAQACAAEAAAASAAIAAQABAAEAAAASAAEAAQABAAEAAAARAAQAAQABAAIAAAARAAMAAQABAAEAAAARAAIAAQABAAEAAAARAAEAAQABAAEAAAAQAAYAAQACAAIAAAAQAAUAAQACAAEAAAAQAAQAAQABAAEAAAAQAAMAAQALAAAAAAAQAAEAAQABAAEAAAAPAAYAAQABAAIAAAAPAAUAAQABAAEAAAAPAAQAAQABAAEAAAAPAAMAAQABAAEAAAAPAAIAAQABAAEAAAAPAAEAAQABAAEAAAAOAAYAAQABAAIAAAAOAAUAAQABAAEAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQABAAEAAAAOAAEAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAEAAAANAAEAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQAMAAAAAAAMAAEAAQABAAEAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAEAAAALAAEAAQABAAEAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAEAAAAKAAEAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAJAAEAAQABAAEAAAAIAAQAAQABAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAEAAAAIAAEAAQABAAEAAAAHAAQAAQABAAEAAAAHAAMAAQABAAEAAAAHAAEAAQABAAEAAAAGAAQAAQABAAEAAAAGAAMAAQABAAEAAAAGAAEAAQABAAEAAAAFAAQAAQABAAEAAAAFAAMAAQABAAEAAAAFAAEAAQABAAEAAAAEAAQAAQABAAEAAAAEAAMAAQABAAEAAAAEAAIAAQABAAEAAAAEAAEAAQABAAEAAAADAAQAAQABAAEAAAADAAMAAQABAAEAAAADAAIAAQABAAEAAAADAAEAAQABAAEAAAACAAQAAQABAAEAAAACAAMAAQABAAEAAAACAAIAAQABAAEAAAACAAEAAQABAAEAAAABAAQAAQAAAAEAAAABAAMAAQAAAAEAAAABAAIAAQAAAAEAAAABAAEAAQAAAAEAAAAUAAAAAQACAAAAAAATAAAAAQABAAAAAAASAAAAAQABAAAAAAARAAAAAQABAAAAAAAQAAAAAQABAAAAAAAPAAAAAQABAAEAAAAOAAAAAQABAAEAAAANAAAAAQABAAEAAAAMAAAAAQABAAAAAAALAAAAAQABAAAAAAAKAAAAAQABAAAAAAAJAAAAAQABAAAAAAAIAAAAAQABAAAAAAAHAAAAAQABAAAAAAAGAAAAAQABAAAAAAAFAAAAAQABAAAAAAAEAAAAAQABAAAAAAADAAAAAQABAAAAAAACAAAAAQABAAAAAAABAAAAAQAAAAAAAAD7/wYAAQACAAIAAAD7/wUAAQACAAEAAAD7/wQAAQACAAEAAAD7/wMAAQACAAAAAAD6/wcAAQACAAIAAAD6/wYAAQABAAEAAAD6/wUAAQABAAEAAAD6/wQAAQABAAEAAAD6/wMAAQABAAEAAAD6/wIAAQACAAEAAAD6/wEAAQACAAAAAAD5/wcAAQABAAIAAAD5/wYAAQABAAEAAAD5/wUAAQABAAEAAAD5/wQAAQABAAEAAAD5/wMAAQABAAEAAAD5/wIAAQABAAEAAAD5/wEAAQABAAAAAAD4/wcAAQABAAIAAAD4/wYAAQABAAEAAAD4/wUAAQABAAEAAAD4/wQAAQABAAEAAAD4/wMAAQABAAEAAAD4/wIAAQABAAEAAAD3/wcAAQABAAIAAAD3/wYAAQABAAEAAAD3/wUAAQABAAEAAAD3/wQAAQABAAEAAAD3/wMAAQABAAEAAAD3/wIAAQABAAEAAAD2/wcAAQAAAAIAAAD2/wYAAQAAAAEAAAD2/wUAAQAAAAEAAAD2/wQAAQAAAAEAAAD2/wMAAQAAAAEAAAD2/wIAAQAAAAAAAAAPAP//AQACAAEAAAAOAP//AQABAAEAAAANAP//AQAAAAEAAAD4/wEAAQABAAAAAAD3/wEAAQAAAAAAAAAPAP7/AQACAAEAAAAPAP3/AQACAAEAAAAPAPz/AQACAAEAAAAPAPv/AQACAAEAAAAPAPr/AQACAAAAAAAOAP7/AQABAAEAAAAOAP3/AQABAAEAAAAOAPz/AQABAAEAAAAOAPv/AQABAAEAAAAOAPr/AQABAAAAAAANAP7/AQAAAAEAAAANAP3/AQAAAAEAAAANAPz/AQAAAAEAAAANAPv/AQAAAAEAAAANAPr/AQAAAAAAAAAQAAIAAQABAAEAAAAGAAIAAQALAAAAAAAHAAIAAQABAAEAAAAFAAIAAQABAAEAAAA=") +tile_set = ExtResource("5_cvlqn") + +[node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=2049231096] +tile_map_data = PackedByteArray("AAAJAAQAAQAGAAMAAAAIAAQAAQAGAAMAAAAHAAQAAQAGAAMAAAAGAAQAAQAGAAMAAAAFAAQAAQAGAAMAAAAEAAQAAQAGAAMAAAADAAQAAQAGAAMAAAACAAQAAQAGAAMAAAABAAQAAQAFAAMAAAAOAAQAAQAHAAEAAAANAAQAAQAGAAAAAAAMAAQAAQAGAAAAAAALAAQAAQAGAAAAAAAKAAQAAQAGAAMAAAD6/wQAAQAGAAMAAAD5/wQAAQAGAAMAAAD7/wQAAQAHAAMAAAAOAAAAAQAIAAEAAAAOAAMAAQAIAAEAAAAOAAIAAQAIAAEAAAAOAAEAAQAIAAEAAAAOAP//AQAIAAEAAAAOAP7/AQAIAAEAAAAOAP3/AQAIAAEAAAAOAPz/AQAIAAEAAAD4/wcAAQAIAAIAAAD4/wYAAQAIAAEAAAD4/wUAAQAIAAEAAAD4/wQAAQAFAAAAAAAOAPT/AQAIAAAAAAAOAPX/AQAIAAEAAAAOAPb/AQAIAAEAAAAOAPf/AQAIAAEAAAAOAPj/AQAIAAEAAAAOAPn/AQAIAAEAAAAOAPr/AQAIAAEAAAAOAPv/AQAIAAEAAAANAAYAAQAHAAIAAAAMAAYAAQAFAAIAAAAOAAUAAQAHAAIAAAALAAUAAQAFAAIAAAANAAUAAQAKAAEAAAAMAAUAAQAGAAEAAAA=") +tile_set = ExtResource("5_cvlqn") + +[node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=1262362630] +tile_map_data = PackedByteArray("AAABAAQAAwACAAAAAAD7/wQAAwAAAAAAAAAAAAQAAwABAAAAAAD//wQAAwABAAAAAAD+/wQAAwABAAAAAAD9/wQAAwABAAAAAAD8/wQAAwABAAAAAAD4/wcAAwAAAAEAAAD4/wgAAwABAAMAAAD4/wkAAwAAAAIAAAD4/woAAwAAAAIAAAD4/wsAAwAAAAIAAAD4/wwAAwAAAAIAAAA=") +tile_set = ExtResource("6_0u7h2") + +[node name="Fences" type="TileMapLayer" parent="TileMapLayers" unique_id=1578434934] +tile_map_data = PackedByteArray("AAAEAAEAAAAAAAAAAAAFAAEAAAABAAAAAAAGAAEAAAABAAAAAAAHAAEAAAABAAAAAAAIAAEAAAACAAAAAAAIAAIAAAAAAAEAAAAIAAMAAAACAAIAAAAHAAMAAAABAAIAAAAGAAMAAAABAAIAAAAFAAMAAAABAAAAAAAEAAMAAAAAAAIAAAAEAAIAAAACAAEAAAA=") +tile_set = ExtResource("7_ghws6") + +[node name="CliffShadows" type="TileMapLayer" parent="TileMapLayers" unique_id=1857056784] +tile_map_data = PackedByteArray("AAABAP3/AAAAAAAAAAABAP7/AAAAAAAAAAABAP//AAAAAAAAAAABAAAAAAAAAAAAAAACAP3/AAAAAAAAAAADAP3/AAAAAAAAAAAEAP3/AAAAAAAAAAAFAP3/AAAAAAAAAAAGAP3/AAAAAAAAAAAHAP3/AAAAAAAAAAAIAP3/AAAAAAAAAAAJAP3/AAAAAAAAAAAKAP3/AAAAAAAAAAALAP3/AAAAAAAAAAAMAP3/AAAAAAAAAAANAP3/AAAAAAAAAAANAP7/AAAAAAAAAAANAP//AAAAAAAAAAANAAAAAAAAAAAAAAAPAP3/AAAAAAAAAAAPAP7/AAAAAAAAAAAPAP//AAAAAAAAAAAPAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAARAAAAAAAAAAAAAAASAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAUAP3/AAAAAAAAAAAUAP7/AAAAAAAAAAAUAP//AAAAAAAAAAAUAAAAAAAAAAAAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAA=") +tile_set = ExtResource("7_ypup5") + +[node name="Cliffs" type="TileMapLayer" parent="TileMapLayers" unique_id=295473127] +tile_map_data = PackedByteArray("AAANAP//BAACAAIAAAANAP7/BAACAAEAAAANAP3/BAACAAEAAAANAPz/BAACAAAAAAAMAP//BAABAAIAAAAMAP7/BAABAAEAAAAMAP3/BAABAAEAAAAMAPz/BAABAAAAAAALAP//BAABAAIAAAALAP7/BAABAAEAAAALAP3/BAABAAEAAAALAPz/BAABAAAAAAAKAP//BAABAAIAAAAKAP7/BAABAAEAAAAKAP3/BAABAAEAAAAKAPz/BAABAAAAAAAJAP//BAABAAIAAAAJAP7/BAABAAEAAAAJAP3/BAABAAEAAAAJAPz/BAABAAAAAAAIAP//BAABAAIAAAAIAP7/BAABAAEAAAAIAP3/BAABAAEAAAAIAPz/BAABAAAAAAAHAP//BAABAAIAAAAHAP7/BAABAAEAAAAHAP3/BAABAAEAAAAHAPz/BAABAAAAAAAGAP//BAABAAIAAAAGAP7/BAABAAEAAAAGAP3/BAABAAEAAAAGAPz/BAABAAAAAAAFAP//BAABAAIAAAAFAP7/BAABAAEAAAAFAP3/BAABAAEAAAAFAPz/BAABAAAAAAAEAP//BAABAAIAAAAEAP7/BAABAAEAAAAEAP3/BAABAAEAAAAEAPz/BAABAAAAAAADAP//BAABAAIAAAADAP7/BAABAAEAAAADAP3/BAABAAEAAAADAPz/BAABAAAAAAACAP//BAABAAIAAAACAP7/BAABAAEAAAACAP3/BAABAAEAAAACAPz/BAABAAAAAAABAP//BAAAAAIAAAABAP7/BAAAAAEAAAABAP3/BAAAAAEAAAABAPz/BAAAAAAAAAAUAP//BAACAAIAAAAUAP7/BAACAAEAAAAUAP3/BAACAAEAAAAUAPz/BAACAAAAAAATAP//BAABAAIAAAATAP7/BAABAAEAAAATAP3/BAABAAEAAAATAPz/BAABAAAAAAASAP//BAABAAIAAAASAP7/BAABAAEAAAASAP3/BAABAAEAAAASAPz/BAABAAAAAAARAP//BAABAAIAAAARAP7/BAABAAEAAAARAP3/BAABAAEAAAARAPz/BAABAAAAAAAQAP//BAABAAIAAAAQAP7/BAABAAEAAAAQAP3/BAABAAEAAAAQAPz/BAABAAAAAAAPAP//BAAAAAIAAAAPAP7/BAAAAAEAAAAPAP3/BAAAAAEAAAAPAPz/BAAAAAAAAAA=") +tile_set = ExtResource("7_ewpk3") + +[node name="Void" type="TileMapLayer" parent="TileMapLayers" unique_id=1483941388] +material = ExtResource("2_awnx5") +tile_set = ExtResource("8_2be51") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=1358184019] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=296354958 instance=ExtResource("9_ypup5")] +position = Vector2(-479, 444) +player_name = "StoryWeaver" +sprite_frames = ExtResource("10_orron") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1732237457] +unique_name_in_owner = true +limit_left = -700 +limit_top = -208 +limit_right = 1400 +limit_bottom = 576 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="SequencePuzzle" type="Node2D" parent="OnTheGround" unique_id=1771259982] +unique_name_in_owner = true +y_sort_enabled = true +script = ExtResource("11_ghws6") +metadata/_custom_type_script = "uid://c68oh8dtr21ti" + +[node name="Objects" type="Node2D" parent="OnTheGround/SequencePuzzle" unique_id=7570625] +y_sort_enabled = true +position = Vector2(639, 206) + +[node name="Red" parent="OnTheGround/SequencePuzzle/Objects" unique_id=704061639 instance=ExtResource("12_0nlel")] +sprite_modulate = Color(1, 0.44, 0.4773333, 1) +audio_stream = ExtResource("13_vdbd1") + +[node name="Green" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1073096074 instance=ExtResource("12_0nlel")] +position = Vector2(96, -32) +sprite_modulate = Color(0.2509804, 0.6745098, 0.3254902, 1) +audio_stream = ExtResource("14_ixuqx") + +[node name="Blue" parent="OnTheGround/SequencePuzzle/Objects" unique_id=343711192 instance=ExtResource("12_0nlel")] +position = Vector2(192, -64) +sprite_modulate = Color(0.20392157, 0.62352943, 0.6117647, 1) +audio_stream = ExtResource("15_2ja4k") + +[node name="Signs" type="Node2D" parent="OnTheGround/SequencePuzzle" unique_id=1795857144] +y_sort_enabled = true +position = Vector2(1014, 124) + +[node name="BonfireSign1" parent="OnTheGround/SequencePuzzle/Signs" unique_id=370730553 instance=ExtResource("16_sewtr")] +sprite_frames = ExtResource("17_3a827") +solved_sound_effect = ExtResource("18_545ss") +solved_ambient_sound = ExtResource("19_gp8y7") + +[node name="BonfireSign2" parent="OnTheGround/SequencePuzzle/Signs" unique_id=1327626657 instance=ExtResource("16_sewtr")] +position = Vector2(96, 0) +sprite_frames = ExtResource("19_51m61") +solved_sound_effect = ExtResource("18_545ss") +solved_ambient_sound = ExtResource("19_gp8y7") + +[node name="Steps" type="Node2D" parent="OnTheGround/SequencePuzzle" unique_id=666035394] + +[node name="SequencePuzzleStep1" type="Node2D" parent="OnTheGround/SequencePuzzle/Steps" unique_id=202668807 node_paths=PackedStringArray("sequence", "hint_sign")] +script = ExtResource("20_7lgro") +sequence = [NodePath("../../Objects/Red"), NodePath("../../Objects/Green"), NodePath("../../Objects/Blue")] +hint_sign = NodePath("../../Signs/BonfireSign1") + +[node name="SequencePuzzleStep2" type="Node2D" parent="OnTheGround/SequencePuzzle/Steps" unique_id=1916321899 node_paths=PackedStringArray("sequence", "hint_sign")] +script = ExtResource("20_7lgro") +sequence = [NodePath("../../Objects/Blue"), NodePath("../../Objects/Green"), NodePath("../../Objects/Red")] +hint_sign = NodePath("../../Signs/BonfireSign2") + +[node name="Sign" parent="OnTheGround" unique_id=1579530966 instance=ExtResource("21_hsgd8")] +position = Vector2(129, 236) +direction = 1 +text = "Fray's End" + +[node name="Door" parent="OnTheGround" unique_id=1860367584 instance=ExtResource("22_r2jqy")] +position = Vector2(928, 58) + +[node name="Townie" parent="OnTheGround" unique_id=1098678013 instance=ExtResource("23_61ued")] +position = Vector2(-347, 289) +motion_mode = 1 +character_seed = 3222241206 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie" unique_id=1871294201] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("24_cvlqn") +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie/InteractArea" unique_id=797020185] +visible = false +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_tfxnn") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TownieBehaviors" type="Node2D" parent="OnTheGround/Townie" unique_id=1628281924 node_paths=PackedStringArray("interact_area", "talk_behavior", "path_walk_behavior", "cinematic", "sequence_puzzle")] +script = ExtResource("25_ewpk3") +interact_area = NodePath("../InteractArea") +talk_behavior = NodePath("TalkBehavior") +path_walk_behavior = NodePath("PathWalkBehavior") +cinematic = NodePath("../../../Cinematic") +sequence_puzzle = NodePath("../../SequencePuzzle") + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie/TownieBehaviors" unique_id=1769752629 node_paths=PackedStringArray("interact_area")] +script = ExtResource("25_0u7h2") +dialogue = ExtResource("30_ypup5") +title = "puzzle_hints" +interact_area = NodePath("../../InteractArea") +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="PathWalkBehavior" type="Node2D" parent="OnTheGround/Townie/TownieBehaviors" unique_id=1800550028 node_paths=PackedStringArray("walking_path", "character")] +process_mode = 4 +script = ExtResource("27_0u7h2") +speeds = SubResource("Resource_2be51") +walking_path = NodePath("../../../../TowniePath") +turn_around = false +character = NodePath("../..") +metadata/_custom_type_script = "uid://id28maao3vdy" + +[node name="Sheep" parent="OnTheGround" unique_id=398073521 instance=ExtResource("32_orron")] +position = Vector2(335, 150) + +[node name="Tree" parent="OnTheGround" unique_id=1182216860 instance=ExtResource("11_2ja4k")] +position = Vector2(258, 86) +scale = Vector2(0.87932515, 0.82832503) + +[node name="Tree2" parent="OnTheGround" unique_id=759110235 instance=ExtResource("11_2ja4k")] +position = Vector2(-350, 89) +scale = Vector2(0.7401985, 0.80740535) + +[node name="Tree3" parent="OnTheGround" unique_id=1630372406 instance=ExtResource("11_2ja4k")] +position = Vector2(-400, 114) +scale = Vector2(1.0763276, 1.0084227) + +[node name="Bush2" parent="OnTheGround" unique_id=1924859315 instance=ExtResource("12_sewtr")] +position = Vector2(106, 86) + +[node name="Bush3" parent="OnTheGround" unique_id=1582861370 instance=ExtResource("12_sewtr")] +position = Vector2(-421, 130) + +[node name="Bush4" parent="OnTheGround" unique_id=906887827 instance=ExtResource("12_sewtr")] +position = Vector2(504, 124) + +[node name="Bush" parent="OnTheGround" unique_id=1928895969 instance=ExtResource("12_sewtr")] +position = Vector2(476, 146) +sprite_frames = ExtResource("13_3a827") + +[node name="InTheWater" type="Node2D" parent="." unique_id=892217930] +z_index = -1 +y_sort_enabled = true + +[node name="WaterRock" parent="InTheWater" unique_id=200189883 instance=ExtResource("37_545ss")] +position = Vector2(1137, 365) + +[node name="WaterRock2" parent="InTheWater" unique_id=1906065755 instance=ExtResource("37_545ss")] +position = Vector2(-274, 158) + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1686505878] + +[node name="HUD" parent="." unique_id=1084128841 instance=ExtResource("26_x36jo")] + +[node name="TimeAndWeather" parent="." unique_id=1446545037 instance=ExtResource("27_rtvrw")] +position = Vector2(-1, -2) +use_system_time = false +start_time = 7.0 +time_scale = 1.0 + +[node name="Cinematic" type="Node2D" parent="." unique_id=1598959612] +script = ExtResource("29_2be51") +dialogue = ExtResource("30_ypup5") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="TowniePath" type="Path2D" parent="." unique_id=452466281] +position = Vector2(-347, 289) +curve = SubResource("Curve2D_ewpk3") + +[node name="Teleporter" type="Area2D" parent="." unique_id=409163531] +position = Vector2(927, -63) +collision_layer = 4 +script = ExtResource("34_2be51") +next_scene = "uid://bk7lmd8tmkdql" +enter_transition = 4 +exit_transition = 5 +metadata/_custom_type_script = "uid://hqdquinbimce" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Teleporter" unique_id=261368868] +shape = SubResource("RectangleShape2D_ypup5") + +[connection signal="solved" from="OnTheGround/SequencePuzzle" to="OnTheGround/Door" method="open"] +[connection signal="interaction_ended" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_started"] diff --git a/scenes/quests/lore_quests/quest_000/4_ink_combat/components/tutorial_ink_combat.dialogue b/scenes/quests/lore_quests/quest_000/4_ink_combat/components/tutorial_ink_combat.dialogue new file mode 100644 index 0000000000..7cc5bdcafa --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/4_ink_combat/components/tutorial_ink_combat.dialogue @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +Arun: The InkDrinkers came from the Void and consumed all the ink. +Arun: Collect the button powerup, then repel the ink they spray into the jar! +=> END + +~ interact +if not GameState.has_ability(repel_powerup.ability): + Arun: Collect the button powerup, StoryWeaver! +else if fill_game_logic.barrels_completed < fill_game_logic.barrels_to_win: + Arun: Repel the ink into the barrel! +else: + Arun: Well done, StoryWeaver. Let's go north towards Fray's End. +=> END diff --git a/scenes/quests/lore_quests/quest_000/4_ink_combat/components/tutorial_ink_combat.dialogue.import b/scenes/quests/lore_quests/quest_000/4_ink_combat/components/tutorial_ink_combat.dialogue.import new file mode 100644 index 0000000000..ddaa208129 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/4_ink_combat/components/tutorial_ink_combat.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://on6os5i21qug" +path="res://.godot/imported/tutorial_ink_combat.dialogue-ace65191fdf95e6db4e2b3ac0012a931.tres" + +[deps] + +source_file="res://scenes/quests/lore_quests/quest_000/4_ink_combat/components/tutorial_ink_combat.dialogue" +dest_files=["res://.godot/imported/tutorial_ink_combat.dialogue-ace65191fdf95e6db4e2b3ac0012a931.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/lore_quests/quest_000/4_ink_combat/ink_combat.tscn b/scenes/quests/lore_quests/quest_000/4_ink_combat/ink_combat.tscn new file mode 100644 index 0000000000..b0d1b6d58b --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/4_ink_combat/ink_combat.tscn @@ -0,0 +1,285 @@ +[gd_scene format=4 uid="uid://bk7lmd8tmkdql"] + +[ext_resource type="Script" uid="uid://bgh5dqhp52yv6" path="res://scenes/quests/lore_quests/quest_000/4_ink_combat/tutorial_ink_combat.gd" id="1_dyyts"] +[ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_l3lhs"] +[ext_resource type="AudioStream" uid="uid://dkgtyb0x1i0m2" path="res://scenes/quests/lore_quests/quest_001/2_ink_combat/components/combat_music.tres" id="2_4c7rx"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="3_pagku"] +[ext_resource type="Resource" uid="uid://on6os5i21qug" path="res://scenes/quests/lore_quests/quest_000/4_ink_combat/components/tutorial_ink_combat.dialogue" id="4_4u14d"] +[ext_resource type="Script" uid="uid://c2lx7gvkonxaa" path="res://scenes/game_elements/props/background_music/components/clip_switcher.gd" id="4_rfiuc"] +[ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="5_qe7tv"] +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="6_fucw3"] +[ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="7_t0cbh"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="8_gqqkr"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="9_kyhwd"] +[ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="11_sty8l"] +[ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="12_dcclj"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="13_cqudy"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="13_eis6y"] +[ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="13_nw4ve"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="14_culag"] +[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="15_2vr3v"] +[ext_resource type="SpriteFrames" uid="uid://7yx2vrxg6ytx" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_blue_large.tres" id="15_6c68c"] +[ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="16_cmppr"] +[ext_resource type="SpriteFrames" uid="uid://b3r84ksew5djp" path="res://scenes/game_elements/characters/enemies/throwing_enemy/components/ink_drinker_frames_purple.tres" id="17_laquw"] +[ext_resource type="AudioStream" uid="uid://qf2d38rabx8o" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Wings.ogg" id="18_0816u"] +[ext_resource type="AudioStream" uid="uid://bbnj2fog3rdy8" path="res://assets/first_party/sounds/throwing_enemy/Spray.wav" id="19_bex1y"] +[ext_resource type="PackedScene" uid="uid://c5jedlvvnnbi0" path="res://scenes/game_elements/props/projectile/ink_blob_projectile.tscn" id="20_t8fi2"] +[ext_resource type="PackedScene" uid="uid://y8ha8abfyap2" path="res://scenes/game_elements/props/filling_barrel/filling_barrel.tscn" id="21_t265e"] +[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="22_nhha4"] +[ext_resource type="PackedScene" uid="uid://dmevaymmt6wco" path="res://scenes/game_elements/props/powerup/powerup.tscn" id="23_ofk5g"] +[ext_resource type="SpriteFrames" uid="uid://cni7ipc5funa7" path="res://scenes/game_elements/props/powerup/components/powerup_button.tres" id="24_8k5n8"] +[ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="25_dyyts"] +[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="25_wx8m8"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="26_rfiuc"] +[ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="27_nw4ve"] +[ext_resource type="SpriteFrames" uid="uid://brspwu70qbdaf" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_blue.tres" id="27_nymbh"] + +[sub_resource type="Animation" id="Animation_nlryc"] +resource_name = "goal_completed" +tracks/0/type = "method" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("../OnTheGround/LevelExit/Door Exit") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(1), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"open" +}] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("%FillGameLogic/../BackgroundMusic/ClipSwitcher") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"switch" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_hlahk"] +_data = { +&"goal_completed": SubResource("Animation_nlryc") +} + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_lmnu5"] +size = Vector2(101, 49) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_6c68c"] +size = Vector2(52, 61) + +[node name="TutorialInkCombat" type="Node2D" unique_id=1019395160] +script = ExtResource("1_dyyts") + +[node name="BackgroundMusic" parent="." unique_id=593411595 instance=ExtResource("1_l3lhs")] +stream = ExtResource("2_4c7rx") + +[node name="ClipSwitcher" type="Node" parent="BackgroundMusic" unique_id=1102708482] +script = ExtResource("4_rfiuc") +clip = &"cozy" +metadata/_custom_type_script = "uid://c2lx7gvkonxaa" + +[node name="Cinematic" type="Node2D" parent="." unique_id=2113147326] +script = ExtResource("3_pagku") +dialogue = ExtResource("4_4u14d") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="FillGameLogic" type="Node" parent="." unique_id=1864340513] +unique_name_in_owner = true +script = ExtResource("5_qe7tv") +metadata/_custom_type_script = "uid://cp54mgi54nywo" + +[node name="LevelCompletedAnimation" type="AnimationPlayer" parent="FillGameLogic" unique_id=335498311] +libraries/ = SubResource("AnimationLibrary_hlahk") + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=1224807967] + +[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=2093174912] +tile_map_data = PackedByteArray("AAAFAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAADAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAD//wcAAAAAAAAAAAD//wkAAAAAAAAAAAAAAAkAAAAAAAAAAAABAAkAAAAAAAAAAAACAAkAAAAAAAAAAAADAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAAFAAkAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAALAAkAAAAAAAAAAAAMAAkAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAkAAAAAAAAAAAAIAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAPAAkAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAMAAAAAAAAAAAD+/woAAAAAAAAAAAD9/wsAAAAAAAAAAAD8/wwAAAAAAAAAAAD7/w0AAAAAAAAAAAD6/w4AAAAAAAAAAAD5/w8AAAAAAAAAAAAQAP//AAAAAAAAAAARAP7/AAAAAAAAAAASAP3/AAAAAAAAAAATAPz/AAAAAAAAAAAUAPv/AAAAAAAAAAAVAPr/AAAAAAAAAAD9//7/AAAAAAAAAAD8//3/AAAAAAAAAAD7//z/AAAAAAAAAAD6//v/AAAAAAAAAAD5//r/AAAAAAAAAAAQAAoAAAAAAAAAAAARAAsAAAAAAAAAAAASAAwAAAAAAAAAAAATAA0AAAAAAAAAAAAUAA4AAAAAAAAAAAAVAA8AAAAAAAAAAAD+//7/AAAAAAAAAAD///7/AAAAAAAAAAAAAP7/AAAAAAAAAAABAP7/AAAAAAAAAAACAP7/AAAAAAAAAAADAP7/AAAAAAAAAAAEAP7/AAAAAAAAAAAFAP7/AAAAAAAAAAAGAP7/AAAAAAAAAAAHAP7/AAAAAAAAAAAIAP7/AAAAAAAAAAAJAP//AAAAAAAAAAAJAP7/AAAAAAAAAAAKAP//AAAAAAAAAAALAP//AAAAAAAAAAAMAP//AAAAAAAAAAANAP//AAAAAAAAAAAOAP//AAAAAAAAAAAPAP//AAAAAAAAAAAKAP7/AAAAAAAAAAALAP7/AAAAAAAAAAAMAP7/AAAAAAAAAAANAP7/AAAAAAAAAAAOAP7/AAAAAAAAAAAPAP7/AAAAAAAAAAAQAP7/AAAAAAAAAAD9//3/AAAAAAAAAAD+//3/AAAAAAAAAAD///3/AAAAAAAAAAAAAP3/AAAAAAAAAAABAP3/AAAAAAAAAAACAP3/AAAAAAAAAAADAP3/AAAAAAAAAAAEAP3/AAAAAAAAAAAFAP3/AAAAAAAAAAAGAP3/AAAAAAAAAAAHAP3/AAAAAAAAAAAIAP3/AAAAAAAAAAAJAP3/AAAAAAAAAAAKAP3/AAAAAAAAAAALAP3/AAAAAAAAAAAMAP3/AAAAAAAAAAANAP3/AAAAAAAAAAAOAP3/AAAAAAAAAAAPAP3/AAAAAAAAAAAQAP3/AAAAAAAAAAARAP3/AAAAAAAAAAD8//z/AAAAAAAAAAD9//z/AAAAAAAAAAD+//z/AAAAAAAAAAD///z/AAAAAAAAAAAAAPz/AAAAAAAAAAABAPz/AAAAAAAAAAACAPz/AAAAAAAAAAADAPz/AAAAAAAAAAAEAPz/AAAAAAAAAAAFAPz/AAAAAAAAAAAGAPz/AAAAAAAAAAAHAPz/AAAAAAAAAAAIAPz/AAAAAAAAAAAJAPz/AAAAAAAAAAAKAPz/AAAAAAAAAAALAPz/AAAAAAAAAAAMAPz/AAAAAAAAAAANAPz/AAAAAAAAAAAOAPz/AAAAAAAAAAAPAPz/AAAAAAAAAAAQAPz/AAAAAAAAAAARAPz/AAAAAAAAAAASAPz/AAAAAAAAAAD7//v/AAAAAAAAAAD8//v/AAAAAAAAAAD9//v/AAAAAAAAAAD+//v/AAAAAAAAAAD///v/AAAAAAAAAAAAAPv/AAAAAAAAAAABAPv/AAAAAAAAAAACAPv/AAAAAAAAAAADAPv/AAAAAAAAAAAEAPv/AAAAAAAAAAAFAPv/AAAAAAAAAAAGAPv/AAAAAAAAAAAHAPv/AAAAAAAAAAAIAPv/AAAAAAAAAAAJAPv/AAAAAAAAAAAKAPv/AAAAAAAAAAALAPv/AAAAAAAAAAAMAPv/AAAAAAAAAAANAPv/AAAAAAAAAAAOAPv/AAAAAAAAAAAPAPv/AAAAAAAAAAAQAPv/AAAAAAAAAAARAPv/AAAAAAAAAAASAPv/AAAAAAAAAAATAPv/AAAAAAAAAAD6//r/AAAAAAAAAAD7//r/AAAAAAAAAAD8//r/AAAAAAAAAAD9//r/AAAAAAAAAAD+//r/AAAAAAAAAAD///r/AAAAAAAAAAAAAPr/AAAAAAAAAAABAPr/AAAAAAAAAAACAPr/AAAAAAAAAAADAPr/AAAAAAAAAAAEAPr/AAAAAAAAAAAFAPr/AAAAAAAAAAAGAPr/AAAAAAAAAAAHAPr/AAAAAAAAAAAIAPr/AAAAAAAAAAAJAPr/AAAAAAAAAAAKAPr/AAAAAAAAAAALAPr/AAAAAAAAAAAMAPr/AAAAAAAAAAANAPr/AAAAAAAAAAAOAPr/AAAAAAAAAAAPAPr/AAAAAAAAAAAQAPr/AAAAAAAAAAARAPr/AAAAAAAAAAASAPr/AAAAAAAAAAATAPr/AAAAAAAAAAAUAPr/AAAAAAAAAAD5//v/AAAAAAAAAAD5//z/AAAAAAAAAAD5//3/AAAAAAAAAAD5//7/AAAAAAAAAAD5////AAAAAAAAAAD5/wAAAAAAAAAAAAD5/wEAAAAAAAAAAAD5/wIAAAAAAAAAAAD5/wMAAAAAAAAAAAD5/wQAAAAAAAAAAAD5/wUAAAAAAAAAAAD5/wYAAAAAAAAAAAD5/wcAAAAAAAAAAAD5/wgAAAAAAAAAAAD5/wkAAAAAAAAAAAD6/wkAAAAAAAAAAAD7/wkAAAAAAAAAAAD7/wgAAAAAAAAAAAD7/wcAAAAAAAAAAAD7/wYAAAAAAAAAAAD7/wUAAAAAAAAAAAD7/wQAAAAAAAAAAAD7/wMAAAAAAAAAAAD7/wIAAAAAAAAAAAD8/wIAAAAAAAAAAAD8/wEAAAAAAAAAAAD8/wAAAAAAAAAAAAD8////AAAAAAAAAAD8//7/AAAAAAAAAAD6//z/AAAAAAAAAAD6//3/AAAAAAAAAAD6//7/AAAAAAAAAAD6////AAAAAAAAAAD6/wAAAAAAAAAAAAD6/wEAAAAAAAAAAAD6/wIAAAAAAAAAAAD6/wYAAAAAAAAAAAD6/wUAAAAAAAAAAAD6/wQAAAAAAAAAAAD6/wMAAAAAAAAAAAD6/wcAAAAAAAAAAAD6/wgAAAAAAAAAAAD7//3/AAAAAAAAAAD7//7/AAAAAAAAAAD7////AAAAAAAAAAD7/wAAAAAAAAAAAAD7/wEAAAAAAAAAAAD9////AAAAAAAAAAD9/wAAAAAAAAAAAAD9/wEAAAAAAAAAAAD9/wIAAAAAAAAAAAD9/wMAAAAAAAAAAAD9/wQAAAAAAAAAAAD9/wUAAAAAAAAAAAD9/wYAAAAAAAAAAAD9/wcAAAAAAAAAAAD9/wgAAAAAAAAAAAD8/wgAAAAAAAAAAAD8/wcAAAAAAAAAAAD8/wYAAAAAAAAAAAD8/wUAAAAAAAAAAAD8/wQAAAAAAAAAAAD8/wMAAAAAAAAAAAD+/wgAAAAAAAAAAAD9/wkAAAAAAAAAAAD+/wkAAAAAAAAAAAD8/wkAAAAAAAAAAAD9/woAAAAAAAAAAAD8/woAAAAAAAAAAAD7/woAAAAAAAAAAAD6/woAAAAAAAAAAAD5/woAAAAAAAAAAAD5/wsAAAAAAAAAAAD5/wwAAAAAAAAAAAD6/wsAAAAAAAAAAAD7/wsAAAAAAAAAAAD8/wsAAAAAAAAAAAD7/wwAAAAAAAAAAAD6/wwAAAAAAAAAAAD6/w0AAAAAAAAAAAD5/w0AAAAAAAAAAAD5/w4AAAAAAAAAAAD6/w8AAAAAAAAAAAD7/w8AAAAAAAAAAAD8/w8AAAAAAAAAAAD9/w8AAAAAAAAAAAD+/w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAA8AAAAAAAAAAAABAA8AAAAAAAAAAAACAA8AAAAAAAAAAAADAA8AAAAAAAAAAAAEAA8AAAAAAAAAAAAFAA8AAAAAAAAAAAAGAA8AAAAAAAAAAAAGAA4AAAAAAAAAAAAGAA0AAAAAAAAAAAAGAAwAAAAAAAAAAAAGAAsAAAAAAAAAAAAGAAoAAAAAAAAAAAAFAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAADAAoAAAAAAAAAAAACAAoAAAAAAAAAAAABAAoAAAAAAAAAAAAAAAoAAAAAAAAAAAD//woAAAAAAAAAAAD//wsAAAAAAAAAAAD+/wsAAAAAAAAAAAD+/wwAAAAAAAAAAAD9/wwAAAAAAAAAAAD8/w0AAAAAAAAAAAD7/w4AAAAAAAAAAAD8/w4AAAAAAAAAAAD9/w4AAAAAAAAAAAD+/w4AAAAAAAAAAAD//w4AAAAAAAAAAAAAAA4AAAAAAAAAAAABAA4AAAAAAAAAAAACAA4AAAAAAAAAAAADAA4AAAAAAAAAAAAEAA4AAAAAAAAAAAAFAA4AAAAAAAAAAAAFAA0AAAAAAAAAAAAFAAwAAAAAAAAAAAAFAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAADAAsAAAAAAAAAAAACAAsAAAAAAAAAAAABAAsAAAAAAAAAAAAAAAsAAAAAAAAAAAD//wwAAAAAAAAAAAD+/w0AAAAAAAAAAAD//w0AAAAAAAAAAAAAAA0AAAAAAAAAAAABAA0AAAAAAAAAAAACAA0AAAAAAAAAAAADAA0AAAAAAAAAAAAEAA0AAAAAAAAAAAAEAAwAAAAAAAAAAAADAAwAAAAAAAAAAAACAAwAAAAAAAAAAAABAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAD9/w0AAAAAAAAAAAAHAA8AAAAAAAAAAAAIAA8AAAAAAAAAAAAJAA8AAAAAAAAAAAAKAA8AAAAAAAAAAAALAA8AAAAAAAAAAAAMAA8AAAAAAAAAAAANAA8AAAAAAAAAAAAOAA8AAAAAAAAAAAAPAA8AAAAAAAAAAAAQAA8AAAAAAAAAAAARAA8AAAAAAAAAAAASAA8AAAAAAAAAAAATAA8AAAAAAAAAAAAUAA8AAAAAAAAAAAATAA4AAAAAAAAAAAASAA4AAAAAAAAAAAARAA4AAAAAAAAAAAAQAA4AAAAAAAAAAAAPAA4AAAAAAAAAAAAOAA4AAAAAAAAAAAANAA4AAAAAAAAAAAAMAA4AAAAAAAAAAAALAA4AAAAAAAAAAAAKAA4AAAAAAAAAAAAJAA4AAAAAAAAAAAAIAA4AAAAAAAAAAAAHAA4AAAAAAAAAAAAHAA0AAAAAAAAAAAAIAA0AAAAAAAAAAAAJAA0AAAAAAAAAAAAKAA0AAAAAAAAAAAALAA0AAAAAAAAAAAAMAA0AAAAAAAAAAAANAA0AAAAAAAAAAAAOAA0AAAAAAAAAAAAPAA0AAAAAAAAAAAAQAA0AAAAAAAAAAAARAA0AAAAAAAAAAAASAA0AAAAAAAAAAAARAAwAAAAAAAAAAAAQAAwAAAAAAAAAAAAPAAwAAAAAAAAAAAAOAAwAAAAAAAAAAAANAAwAAAAAAAAAAAAMAAwAAAAAAAAAAAALAAwAAAAAAAAAAAAKAAwAAAAAAAAAAAAJAAwAAAAAAAAAAAAIAAwAAAAAAAAAAAAHAAwAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAAPAAsAAAAAAAAAAAAQAAsAAAAAAAAAAAAPAAoAAAAAAAAAAAAOAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAMAAoAAAAAAAAAAAALAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAVAA4AAAAAAAAAAAAVAA0AAAAAAAAAAAAVAAwAAAAAAAAAAAAVAAsAAAAAAAAAAAAVAAoAAAAAAAAAAAAVAAkAAAAAAAAAAAAVAAgAAAAAAAAAAAAVAAcAAAAAAAAAAAAVAAYAAAAAAAAAAAAUAAYAAAAAAAAAAAATAAYAAAAAAAAAAAAQAAkAAAAAAAAAAAARAAoAAAAAAAAAAAARAAkAAAAAAAAAAAASAAkAAAAAAAAAAAASAAoAAAAAAAAAAAASAAsAAAAAAAAAAAATAAsAAAAAAAAAAAATAAoAAAAAAAAAAAATAAkAAAAAAAAAAAATAAgAAAAAAAAAAAATAAcAAAAAAAAAAAATAAwAAAAAAAAAAAAUAA0AAAAAAAAAAAAUAAwAAAAAAAAAAAAUAAsAAAAAAAAAAAAUAAoAAAAAAAAAAAAUAAkAAAAAAAAAAAAUAAgAAAAAAAAAAAAUAAcAAAAAAAAAAAAVAAUAAAAAAAAAAAAVAAQAAAAAAAAAAAAVAAMAAAAAAAAAAAAVAAIAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAAAAAAAAAAAAAAVAP//AAAAAAAAAAAVAP7/AAAAAAAAAAAVAP3/AAAAAAAAAAAUAP3/AAAAAAAAAAAUAPz/AAAAAAAAAAATAP3/AAAAAAAAAAASAP7/AAAAAAAAAAASAP//AAAAAAAAAAARAP//AAAAAAAAAAATAAQAAAAAAAAAAAATAAMAAAAAAAAAAAATAAIAAAAAAAAAAAATAAEAAAAAAAAAAAATAAUAAAAAAAAAAAAUAAQAAAAAAAAAAAAUAAUAAAAAAAAAAAAUAAMAAAAAAAAAAAAUAAIAAAAAAAAAAAAUAAEAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAP//AAAAAAAAAAAUAP7/AAAAAAAAAAATAP7/AAAAAAAAAAATAP//AAAAAAAAAAATAAAAAAAAAAAAAAAVAPz/AAAAAAAAAAAVAPv/AAAAAAAAAAD4//r/AAAAAAAAAAD3//r/AAAAAAAAAAD2//r/AAAAAAAAAAD2//v/AAAAAAAAAAD2//z/AAAAAAAAAAD2//3/AAAAAAAAAAD2//7/AAAAAAAAAAD2////AAAAAAAAAAD2/wAAAAAAAAAAAAD1/wAAAAAAAAAAAAD1/wEAAAAAAAAAAAD1/wIAAAAAAAAAAAD1/wMAAAAAAAAAAAD1/wQAAAAAAAAAAAD1/wUAAAAAAAAAAAD1/wYAAAAAAAAAAAD1/wcAAAAAAAAAAAD1/wgAAAAAAAAAAAD1/wkAAAAAAAAAAAD1/woAAAAAAAAAAAD1/wsAAAAAAAAAAAD1/wwAAAAAAAAAAAD1/w0AAAAAAAAAAAD1/w4AAAAAAAAAAAD1/w8AAAAAAAAAAAD2/w8AAAAAAAAAAAD3/w8AAAAAAAAAAAD4/w8AAAAAAAAAAAD4/w4AAAAAAAAAAAD4/w0AAAAAAAAAAAD4/wwAAAAAAAAAAAD4/wsAAAAAAAAAAAD4/woAAAAAAAAAAAD4/wkAAAAAAAAAAAD4/wgAAAAAAAAAAAD4/wcAAAAAAAAAAAD4/wYAAAAAAAAAAAD4/wUAAAAAAAAAAAD4/wQAAAAAAAAAAAD4/wMAAAAAAAAAAAD4/wIAAAAAAAAAAAD4/wEAAAAAAAAAAAD4/wAAAAAAAAAAAAD4////AAAAAAAAAAD4//7/AAAAAAAAAAD4//3/AAAAAAAAAAD4//z/AAAAAAAAAAD4//v/AAAAAAAAAAD3//v/AAAAAAAAAAD1//r/AAAAAAAAAAD1//v/AAAAAAAAAAD1//z/AAAAAAAAAAD1//3/AAAAAAAAAAD1//7/AAAAAAAAAAD1////AAAAAAAAAAD3//7/AAAAAAAAAAD3//3/AAAAAAAAAAD3//z/AAAAAAAAAAD3////AAAAAAAAAAD3/wAAAAAAAAAAAAD3/wEAAAAAAAAAAAD3/wIAAAAAAAAAAAD3/wMAAAAAAAAAAAD3/wQAAAAAAAAAAAD2/wQAAAAAAAAAAAD2/wUAAAAAAAAAAAD2/wMAAAAAAAAAAAD2/wIAAAAAAAAAAAD2/wEAAAAAAAAAAAD2/wYAAAAAAAAAAAD2/wcAAAAAAAAAAAD2/wgAAAAAAAAAAAD2/wkAAAAAAAAAAAD3/woAAAAAAAAAAAD3/wkAAAAAAAAAAAD3/wgAAAAAAAAAAAD3/wcAAAAAAAAAAAD3/wYAAAAAAAAAAAD3/wUAAAAAAAAAAAD3/wsAAAAAAAAAAAD2/wwAAAAAAAAAAAD2/w0AAAAAAAAAAAD2/wsAAAAAAAAAAAD2/woAAAAAAAAAAAD3/wwAAAAAAAAAAAD3/w0AAAAAAAAAAAD3/w4AAAAAAAAAAAD2/w4AAAAAAAAAAAAWAA8AAAAAAAAAAAAXAA8AAAAAAAAAAAAYAA8AAAAAAAAAAAAZAA8AAAAAAAAAAAAZAA4AAAAAAAAAAAAZAA0AAAAAAAAAAAAZAAwAAAAAAAAAAAAZAAsAAAAAAAAAAAAZAAoAAAAAAAAAAAAZAAkAAAAAAAAAAAAZAAgAAAAAAAAAAAAYAAcAAAAAAAAAAAAYAAYAAAAAAAAAAAAYAAUAAAAAAAAAAAAYAAQAAAAAAAAAAAAYAAMAAAAAAAAAAAAYAAIAAAAAAAAAAAAYAAEAAAAAAAAAAAAYAAAAAAAAAAAAAAAYAP//AAAAAAAAAAAYAP7/AAAAAAAAAAAYAP3/AAAAAAAAAAAYAPz/AAAAAAAAAAAYAPv/AAAAAAAAAAAYAPr/AAAAAAAAAAAXAPr/AAAAAAAAAAAWAPr/AAAAAAAAAAAZAPr/AAAAAAAAAAAZAPv/AAAAAAAAAAAZAPz/AAAAAAAAAAAZAP3/AAAAAAAAAAAZAP7/AAAAAAAAAAAZAP//AAAAAAAAAAAZAAAAAAAAAAAAAAAZAAEAAAAAAAAAAAAZAAIAAAAAAAAAAAAZAAMAAAAAAAAAAAAZAAQAAAAAAAAAAAAZAAUAAAAAAAAAAAAZAAYAAAAAAAAAAAAZAAcAAAAAAAAAAAAWAA0AAAAAAAAAAAAWAAwAAAAAAAAAAAAWAAsAAAAAAAAAAAAWAAoAAAAAAAAAAAAWAAkAAAAAAAAAAAAWAAgAAAAAAAAAAAAWAAcAAAAAAAAAAAAWAAYAAAAAAAAAAAAWAAUAAAAAAAAAAAAWAAQAAAAAAAAAAAAWAAMAAAAAAAAAAAAWAAIAAAAAAAAAAAAWAAEAAAAAAAAAAAAWAAAAAAAAAAAAAAAWAP//AAAAAAAAAAAWAP7/AAAAAAAAAAAXAP7/AAAAAAAAAAAXAP3/AAAAAAAAAAAWAP3/AAAAAAAAAAAWAPz/AAAAAAAAAAAWAPv/AAAAAAAAAAAXAPv/AAAAAAAAAAAXAPz/AAAAAAAAAAAXAP//AAAAAAAAAAAXAAAAAAAAAAAAAAAXAAEAAAAAAAAAAAAXAAIAAAAAAAAAAAAXAAMAAAAAAAAAAAAXAAQAAAAAAAAAAAAXAAUAAAAAAAAAAAAXAAYAAAAAAAAAAAAXAAcAAAAAAAAAAAAXAAgAAAAAAAAAAAAXAAkAAAAAAAAAAAAXAAoAAAAAAAAAAAAYAAgAAAAAAAAAAAAYAAkAAAAAAAAAAAAYAAoAAAAAAAAAAAAXAAsAAAAAAAAAAAAXAAwAAAAAAAAAAAAYAAwAAAAAAAAAAAAYAA0AAAAAAAAAAAAXAA0AAAAAAAAAAAAWAA4AAAAAAAAAAAAXAA4AAAAAAAAAAAAYAA4AAAAAAAAAAAAYAAsAAAAAAAAAAAD1//n/AAAAAAAAAAD2//n/AAAAAAAAAAD3//n/AAAAAAAAAAD4//n/AAAAAAAAAAD5//n/AAAAAAAAAAD6//n/AAAAAAAAAAD7//n/AAAAAAAAAAD8//n/AAAAAAAAAAD9//n/AAAAAAAAAAD+//n/AAAAAAAAAAD///n/AAAAAAAAAAAAAPn/AAAAAAAAAAABAPn/AAAAAAAAAAACAPn/AAAAAAAAAAADAPn/AAAAAAAAAAAEAPn/AAAAAAAAAAAFAPn/AAAAAAAAAAAGAPn/AAAAAAAAAAAHAPn/AAAAAAAAAAAIAPn/AAAAAAAAAAAJAPn/AAAAAAAAAAAKAPn/AAAAAAAAAAALAPn/AAAAAAAAAAAWAPn/AAAAAAAAAAAXAPn/AAAAAAAAAAAYAPn/AAAAAAAAAAAZAPn/AAAAAAAAAAAVAPn/AAAAAAAAAAAUAPn/AAAAAAAAAAATAPn/AAAAAAAAAAASAPn/AAAAAAAAAAARAPn/AAAAAAAAAAAQAPn/AAAAAAAAAAAPAPn/AAAAAAAAAAAOAPn/AAAAAAAAAAANAPn/AAAAAAAAAAAMAPn/AAAAAAAAAAD1//j/AAAAAAAAAAD2//j/AAAAAAAAAAD3//j/AAAAAAAAAAD4//j/AAAAAAAAAAD5//j/AAAAAAAAAAD6//j/AAAAAAAAAAD7//j/AAAAAAAAAAD8//j/AAAAAAAAAAD9//j/AAAAAAAAAAD+//j/AAAAAAAAAAD///j/AAAAAAAAAAAAAPj/AAAAAAAAAAABAPj/AAAAAAAAAAACAPj/AAAAAAAAAAADAPj/AAAAAAAAAAAEAPj/AAAAAAAAAAAFAPj/AAAAAAAAAAAGAPj/AAAAAAAAAAAHAPj/AAAAAAAAAAAIAPj/AAAAAAAAAAAJAPj/AAAAAAAAAAAKAPj/AAAAAAAAAAALAPj/AAAAAAAAAAAMAPj/AAAAAAAAAAANAPj/AAAAAAAAAAAOAPj/AAAAAAAAAAAPAPj/AAAAAAAAAAAQAPj/AAAAAAAAAAARAPj/AAAAAAAAAAASAPj/AAAAAAAAAAATAPj/AAAAAAAAAAAUAPj/AAAAAAAAAAAVAPj/AAAAAAAAAAAWAPj/AAAAAAAAAAAXAPj/AAAAAAAAAAAYAPj/AAAAAAAAAAAZAPj/AAAAAAAAAAD1/xAAAAAAAAAAAAD2/xAAAAAAAAAAAAD3/xAAAAAAAAAAAAD4/xAAAAAAAAAAAAD5/xAAAAAAAAAAAAD6/xAAAAAAAAAAAAD7/xAAAAAAAAAAAAD8/xAAAAAAAAAAAAD9/xAAAAAAAAAAAAD+/xAAAAAAAAAAAAD//xAAAAAAAAAAAAAAABAAAAAAAAAAAAABABAAAAAAAAAAAAACABAAAAAAAAAAAAADABAAAAAAAAAAAAAEABAAAAAAAAAAAAAFABAAAAAAAAAAAAAGABAAAAAAAAAAAAAHABAAAAAAAAAAAAAIABAAAAAAAAAAAAAJABAAAAAAAAAAAAAKABAAAAAAAAAAAAALABAAAAAAAAAAAAAMABAAAAAAAAAAAAANABAAAAAAAAAAAAAOABAAAAAAAAAAAAAPABAAAAAAAAAAAAAQABAAAAAAAAAAAAARABAAAAAAAAAAAAASABAAAAAAAAAAAAATABAAAAAAAAAAAAAUABAAAAAAAAAAAAAVABAAAAAAAAAAAAAWABAAAAAAAAAAAAAXABAAAAAAAAAAAAAYABAAAAAAAAAAAAAZABAAAAAAAAAAAAAaABAAAAAAAAAAAAAaAA8AAAAAAAAAAAAaAA4AAAAAAAAAAAAaAA0AAAAAAAAAAAAaAAwAAAAAAAAAAAAaAAsAAAAAAAAAAAAaAAoAAAAAAAAAAAAaAAkAAAAAAAAAAAAaAAgAAAAAAAAAAAAaAAcAAAAAAAAAAAAaAAYAAAAAAAAAAAAaAAUAAAAAAAAAAAAaAAQAAAAAAAAAAAAaAAMAAAAAAAAAAAAaAAIAAAAAAAAAAAAaAAEAAAAAAAAAAAAaAAAAAAAAAAAAAAAaAP//AAAAAAAAAAAaAP7/AAAAAAAAAAAaAP3/AAAAAAAAAAAaAPz/AAAAAAAAAAAaAPv/AAAAAAAAAAAaAPr/AAAAAAAAAAAaAPn/AAAAAAAAAAAaAPj/AAAAAAAAAAD0//j/AAAAAAAAAAD0//n/AAAAAAAAAAD0//r/AAAAAAAAAAD0//v/AAAAAAAAAAD0//z/AAAAAAAAAAD0//3/AAAAAAAAAAD0//7/AAAAAAAAAAD0////AAAAAAAAAAD0/wAAAAAAAAAAAAD0/wEAAAAAAAAAAAD0/wIAAAAAAAAAAAD0/wMAAAAAAAAAAAD0/wQAAAAAAAAAAAD0/wUAAAAAAAAAAAD0/wYAAAAAAAAAAAD0/wcAAAAAAAAAAAD0/wgAAAAAAAAAAAD0/wkAAAAAAAAAAAD0/woAAAAAAAAAAAD0/wsAAAAAAAAAAAD0/wwAAAAAAAAAAAD0/w0AAAAAAAAAAAD0/w4AAAAAAAAAAAD0/w8AAAAAAAAAAAD0/xAAAAAAAAAAAAD+/wAAAAAAAAAAAAD+////AAAAAAAAAAAAAAgAAAAAAAAAAAAHAP//AAAAAAAAAAAIAP//AAAAAAAAAAD/////AAAAAAAAAAAAAP//AAAAAAAAAAABAP//AAAAAAAAAAACAP//AAAAAAAAAAADAP//AAAAAAAAAAAEAP//AAAAAAAAAAAFAP//AAAAAAAAAAAGAP//AAAAAAAAAQA=") +tile_set = ExtResource("6_fucw3") + +[node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=294138419] +tile_map_data = PackedByteArray("AAD+/wAAAgAAAAAAAAD+/wEAAgAAAAAAAAD+/wIAAgAAAAAAAAD+/wMAAgAAAAAAAAD+/wQAAgAAAAAAAAD+/wUAAgAAAAAAAAD+/wYAAgAAAAAAAAD+/wcAAgAAAAAAAAAAAAgAAgAAAAAAAAAGAAkAAgAAAAAAAAAHAAkAAgAAAAAAAAAIAAkAAgAAAAAAAAAJAAkAAgAAAAAAAAAKAAkAAgAAAAAAAAALAAkAAgAAAAAAAAAMAAkAAgAAAAAAAAARAAkAAgAAAAAAAAASAAkAAgAAAAAAAAATAAEAAgAAAAAAAAATAAIAAgAAAAAAAAATAAMAAgAAAAAAAAATAAQAAgAAAAAAAAATAAUAAgAAAAAAAAATAAYAAgAAAAAAAAATAAcAAgAAAAAAAAATAAgAAgAAAAAAAAATAAkAAgAAAAAAAAANAAkAAgAAAAAAAAAOAAkAAgAAAAAAAAAPAAkAAgAAAAAAAAAQAAkAAgAAAAAAAAAFAAkAAgAAAAAAAAAEAAkAAgAAAAAAAAADAAkAAgAAAAAAAAACAAkAAgAAAAAAAAABAAkAAgAAAAAAAAD//wkAAgAAAAAAAAD+/wkAAgAAAAAAAAD+/wgAAgAAAAAAAAAGAP//AgAAAAAAAAA=") +tile_set = ExtResource("7_t0cbh") + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=68210893] +tile_map_data = PackedByteArray("AAANAAcAAQABAAEAAAANAAYAAQABAAEAAAANAAUAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAEAAAANAAEAAQABAAEAAAAMAAcAAQABAAEAAAAMAAYAAQABAAEAAAAMAAUAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAEAAAAMAAEAAQABAAEAAAALAAcAAQABAAEAAAALAAYAAQABAAEAAAALAAUAAQABAAEAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAEAAAALAAEAAQABAAEAAAAKAAcAAQABAAEAAAAKAAYAAQABAAEAAAAKAAUAAQABAAEAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAEAAAAKAAEAAQABAAEAAAAJAAcAAQABAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAJAAEAAQABAAEAAAAIAAcAAQABAAEAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAIAAQAAQABAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAEAAAAIAAEAAQABAAEAAAAHAAcAAQABAAEAAAAHAAYAAQABAAEAAAAHAAUAAQABAAEAAAAHAAQAAQABAAEAAAAHAAMAAQABAAEAAAAHAAIAAQABAAEAAAAHAAEAAQABAAEAAAAGAAcAAQABAAEAAAAGAAYAAQABAAEAAAAGAAUAAQABAAEAAAAGAAQAAQABAAEAAAAGAAMAAQABAAEAAAAGAAIAAQABAAEAAAAFAAcAAQABAAEAAAAFAAYAAQABAAEAAAAFAAUAAQABAAEAAAAFAAQAAQABAAEAAAAFAAMAAQABAAEAAAAFAAIAAQABAAEAAAAFAAEAAQABAAEAAAAEAAcAAQABAAEAAAAEAAYAAQABAAEAAAAEAAUAAQABAAEAAAAEAAQAAQABAAEAAAAEAAMAAQABAAEAAAAEAAIAAQABAAEAAAAEAAEAAQABAAEAAAADAAcAAQABAAEAAAADAAYAAQABAAEAAAADAAUAAQABAAEAAAADAAQAAQABAAEAAAADAAMAAQABAAEAAAADAAIAAQABAAEAAAADAAEAAQABAAEAAAACAAcAAQABAAEAAAACAAYAAQABAAEAAAACAAUAAQABAAEAAAACAAMAAQABAAEAAAACAAIAAQABAAEAAAACAAEAAQABAAEAAAABAAcAAQABAAEAAAABAAYAAQABAAEAAAABAAUAAQABAAEAAAABAAMAAQABAAEAAAABAAIAAQABAAEAAAABAAEAAQABAAEAAAACAAQAAQABAAEAAAABAAQAAQABAAEAAAAAAAQAAQABAAEAAAAAAAUAAQABAAEAAAAAAAYAAQABAAEAAAAAAAcAAQABAAEAAAAGAAAAAQABAAEAAAAGAAEAAQABAAEAAAAHAAAAAQABAAEAAAAFAAAAAQABAAEAAAAIAAAAAQABAAEAAAAJAAAAAQABAAEAAAALAAAAAQABAAEAAAAMAAAAAQABAAEAAAAKAAAAAQABAAEAAAANAAAAAQABAAAAAAAEAAAAAQABAAEAAAADAAAAAQABAAEAAAACAAAAAQABAAEAAAABAAAAAQABAAEAAAAAAAAAAQABAAEAAAAAAAEAAQABAAEAAAAAAAIAAQABAAEAAAAAAAMAAQABAAEAAAAAAAgAAQABAAEAAAABAAgAAQABAAEAAAACAAgAAQABAAEAAAADAAgAAQABAAEAAAAEAAgAAQABAAEAAAAFAAgAAQABAAEAAAAGAAgAAQABAAEAAAAHAAgAAQABAAEAAAAIAAgAAQABAAEAAAAJAAgAAQABAAEAAAAKAAgAAQABAAEAAAAMAAgAAQABAAIAAAALAAgAAQABAAIAAAANAAgAAQABAAIAAAAOAAgAAQABAAIAAAAOAAcAAQABAAEAAAAOAAYAAQABAAEAAAAOAAUAAQABAAEAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQABAAEAAAAOAAEAAQABAAEAAAAOAAAAAQABAAAAAAARAAgAAQABAAIAAAARAAcAAQABAAEAAAARAAYAAQABAAEAAAARAAUAAQABAAEAAAARAAQAAQABAAEAAAARAAMAAQABAAEAAAARAAIAAQABAAEAAAARAAEAAQABAAEAAAARAAAAAQABAAAAAAAQAAgAAQABAAIAAAAQAAcAAQABAAEAAAAQAAYAAQABAAEAAAAQAAUAAQABAAEAAAAQAAQAAQABAAEAAAAQAAMAAQABAAEAAAAQAAIAAQABAAEAAAAQAAEAAQABAAEAAAAQAAAAAQABAAAAAAAPAAgAAQABAAIAAAAPAAcAAQABAAEAAAAPAAYAAQABAAEAAAAPAAUAAQABAAEAAAAPAAQAAQABAAEAAAAPAAMAAQABAAEAAAAPAAIAAQABAAEAAAAPAAEAAQABAAEAAAAPAAAAAQABAAAAAAASAAgAAQACAAIAAAASAAcAAQACAAEAAAASAAYAAQACAAEAAAASAAUAAQACAAEAAAASAAQAAQACAAEAAAASAAMAAQACAAEAAAASAAIAAQACAAEAAAASAAEAAQACAAEAAAASAAAAAQACAAAAAAA=") +tile_set = ExtResource("8_gqqkr") + +[node name="Grass Patches" type="TileMapLayer" parent="TileMapLayers" unique_id=2124949178] +tile_set = ExtResource("8_gqqkr") + +[node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=2134756892] +tile_map_data = PackedByteArray("AAAAAAgAAQAIAAEAAAAAAAcAAQAIAAEAAAAAAAYAAQAIAAEAAAAAAAUAAQAIAAEAAAAAAAQAAQAFAAAAAAABAAQAAQAGAAMAAAACAAQAAQAHAAMAAAAGAAAAAQAIAAEAAAAGAAEAAQAIAAIAAAAGAP//AQAIAAAAAAA=") +tile_set = ExtResource("8_gqqkr") + +[node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=617613126] +tile_map_data = PackedByteArray("AAAGAPj/AwAAAAEAAAAGAPn/AwAAAAIAAAAGAPr/AwAAAAIAAAAGAPv/AwAAAAIAAAAGAPz/AwAAAAIAAAAGAP3/AwAAAAIAAAAGAP7/AwAAAAIAAAAGAP//AwAAAAMAAAAAAAgAAwAAAAEAAAAAAAkAAwAAAAIAAAAAAAoAAwAAAAIAAAAAAAsAAwAAAAIAAAAAAAwAAwAAAAIAAAAAAA0AAwAAAAIAAAAAAA4AAwAAAAIAAAA=") +tile_set = ExtResource("13_nw4ve") + +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=22087381] +tile_map_data = PackedByteArray("AAAMAAEAAAAAAAAAAAALAAEAAAAAAAAAAAAKAAEAAAAAAAAAAAAJAAEAAAAAAAAAAAAIAAEAAAAAAAAAAAAHAAEAAAAAAAAAAAAFAAEAAAAAAAAAAAAEAAEAAAAAAAAAAAADAAEAAAAAAAAAAAACAAMAAAAAAAAAAAABAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAACAAIAAAAAAAAAAAACAAYAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAACAAgAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAALAAkAAAAAAAAAAAAMAAkAAAAAAAAAAAARAAkAAAAAAAAAAAASAAkAAAAAAAAAAAATAAkAAAAAAAAAAAATAAIAAAAAAAAAAAATAAMAAAAAAAAAAAATAAQAAAAAAAAAAAATAAUAAAAAAAAAAAATAAYAAAAAAAAAAAATAAcAAAAAAAAAAAATAAgAAAAAAAAAAAATAAEAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAkAAAAAAAAAAAAPAAkAAAAAAAAAAAAQAAkAAAAAAAAAAAANAAEAAAAAAAAAAAAOAAEAAAAAAAAAAAAPAAEAAAAAAAAAAAAQAAEAAAAAAAAAAAACAAcAAAAAAAAAAAACAAUAAAAAAAAAAAABAAUAAAAAAAAAAAADAAgAAAAAAAAAAAAEAAgAAAAAAAAAAAAFAAgAAAAAAAAAAAAGAAgAAAAAAAAAAAAHAAgAAAAAAAAAAAAIAAgAAAAAAAAAAAAJAAgAAAAAAAAAAAAKAAgAAAAAAAAAAAALAAgAAAAAAAAAAAAMAAgAAAAAAAAAAAANAAgAAAAAAAAAAAAOAAgAAAAAAAAAAAAPAAgAAAAAAAAAAAAQAAgAAAAAAAAAAAARAAgAAAAAAAAAAAARAAcAAAAAAAAAAAARAAMAAAAAAAAAAAARAAIAAAAAAAAAAAASAAUAAAAAAAAAAAASAAQAAAAAAAAAAAA=") +tile_set = ExtResource("9_kyhwd") + +[node name="Stones" type="TileMapLayer" parent="TileMapLayers" unique_id=1576853480] +tile_map_data = PackedByteArray("AAD//wYABAACAAEAAAD//wUABAACAAEAAAD//wQABAADAAEAAAD//wMABAACAAEAAAD//wIABAABAAEAAAACAAIABAACAAIAAAABAAIABAABAAIAAAAAAAIABAABAAIAAAACAAEABAACAAEAAAACAAAABAABAAAAAAABAAEABAABAAEAAAABAAAABAABAAAAAAAAAAEABAABAAEAAAAAAAAABAABAAAAAAD//wEABAAAAAEAAAD//wAABAAAAAAAAAAFAAAABAACAAQAAAAEAAAABAABAAQAAAADAAAABAABAAQAAAAQAAAABAABAAQAAAAPAAAABAABAAQAAAAOAAAABAABAAQAAAANAAAABAABAAQAAAAMAAAABAABAAQAAAALAAAABAABAAQAAAAKAAAABAABAAQAAAAJAAAABAABAAQAAAAIAAAABAABAAQAAAAHAAAABAAAAAQAAAATAAIABAACAAEAAAATAAEABAACAAEAAAATAAAABAACAAAAAAASAAIABAABAAEAAAASAAEABAABAAEAAAASAAAABAABAAAAAAARAAIABAAAAAIAAAARAAEABAAAAAEAAAARAAAABAABAAAAAAATAAgABAACAAIAAAATAAcABAACAAEAAAATAAYABAACAAEAAAATAAUABAACAAEAAAATAAQABAACAAEAAAATAAMABAACAAEAAAASAAgABAABAAIAAAASAAcABAABAAEAAAASAAYABAABAAEAAAASAAUABAAAAAEAAAASAAQABAAAAAEAAAASAAMABAAAAAEAAAARAAgABAABAAIAAAARAAcABAAAAAEAAAARAAYABAAAAAAAAAAQAAgABAABAAQAAAAPAAgABAABAAQAAAAOAAgABAABAAQAAAANAAgABAABAAQAAAAMAAgABAABAAQAAAALAAgABAABAAQAAAAKAAgABAABAAQAAAAJAAgABAABAAQAAAAIAAgABAABAAQAAAAHAAgABAABAAQAAAAGAAgABAABAAQAAAACAAYABAACAAEAAAACAAUABAACAAAAAAABAAYABAAAAAEAAAABAAUABAAAAAAAAAD+/wYABAAAAAIAAAD+/wUABAAAAAEAAAD+/wQABAAAAAEAAAD+/wMABAAAAAEAAAD+/wIABAAAAAAAAAD//wgABAABAAQAAAABAAgABAABAAQAAAACAAgABAABAAQAAAADAAgABAABAAQAAAAEAAgABAABAAQAAAAFAAgABAABAAQAAAACAAcABAADAAIAAAABAAcABAAAAAEAAAD+/wgABAAAAAIAAAD+/wcABAAAAAEAAAD//wcABAADAAEAAAA=") +tile_set = ExtResource("13_cqudy") + +[node name="Grass Level 2" type="TileMapLayer" parent="TileMapLayers" unique_id=1052337885] +tile_map_data = PackedByteArray("AAAAAAIAAQABAAIAAAABAAIAAQABAAIAAAACAAIAAQACAAIAAAACAAEAAQACAAEAAAADAAAAAQABAAIAAAAEAAAAAQABAAIAAAAFAAAAAQACAAIAAAADAP//AQABAAAAAAAEAP//AQABAAAAAAAFAP//AQACAAAAAAD//wcAAQADAAIAAAD//wYAAQACAAEAAAD//wUAAQACAAEAAAD//wQAAQACAAEAAAD//wMAAQACAAEAAAD+/wYAAQAAAAIAAAD+/wUAAQAAAAEAAAD+/wQAAQAAAAEAAAD+/wMAAQAAAAEAAAD//wIAAQABAAEAAAD+/wIAAQAAAAEAAAD+/wEAAQAAAAEAAAD//wEAAQABAAEAAAAAAAEAAQABAAEAAAABAAEAAQABAAEAAAACAAAAAQABAAEAAAABAAAAAQABAAEAAAAAAAAAAQABAAEAAAD//wAAAQABAAEAAAD+/wAAAQAAAAEAAAACAP//AQABAAAAAAABAP//AQABAAAAAAAAAP//AQABAAAAAAD/////AQABAAAAAAD+////AQAAAAAAAAAHAAAAAQAAAAIAAAAIAAAAAQACAAIAAAAHAP//AQAAAAAAAAAIAP//AQACAAAAAAAKAAAAAQADAAMAAAAKAP//AQADAAMAAAA=") +tile_set = ExtResource("8_gqqkr") + +[node name="Shadows Level 2" type="TileMapLayer" parent="TileMapLayers" unique_id=702218707] +tile_map_data = PackedByteArray("AAD//wIAAAAAAAAAAAAAAAEAAAAAAAAAAAABAAEAAAAAAAAAAAD+/wIAAAAAAAAAAAACAAAAAAAAAAAAAAA=") +tile_set = ExtResource("9_kyhwd") + +[node name="Stone Level 2" type="TileMapLayer" parent="TileMapLayers" unique_id=73920338] +tile_map_data = PackedByteArray("AAD//wAABAABAAEAAAD//wEABAACAAIAAAAAAAAABAABAAIAAAABAAAABAACAAIAAAD+/wEABAAAAAIAAAD+/wAABAAAAAEAAAACAP//BAACAAQAAAABAP//BAABAAAAAAAAAP//BAABAAAAAAD/////BAABAAAAAAD+////BAAAAAAAAAA=") +tile_set = ExtResource("13_cqudy") + +[node name="Grass Level 3" type="TileMapLayer" parent="TileMapLayers" unique_id=1939358186] +tile_map_data = PackedByteArray("AAD//wEAAQACAAIAAAD//wAAAQABAAEAAAAAAAAAAQABAAIAAAABAAAAAQACAAIAAAABAP//AQACAAAAAAAAAP//AQABAAAAAAD/////AQABAAAAAAD+////AQAAAAAAAAD+/wAAAQAAAAEAAAD+/wEAAQAAAAIAAAA=") +tile_set = ExtResource("8_gqqkr") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=867293938] +y_sort_enabled = true + +[node name="Bush" parent="OnTheGround" unique_id=1514025033 instance=ExtResource("11_sty8l")] +position = Vector2(159, 88) +sprite_frames = ExtResource("15_6c68c") + +[node name="Bush2" parent="OnTheGround" unique_id=943759771 instance=ExtResource("11_sty8l")] +position = Vector2(150, 114) +scale = Vector2(0.8, 0.8) +sprite_frames = ExtResource("15_6c68c") + +[node name="Bush4" parent="OnTheGround" unique_id=926443517 instance=ExtResource("11_sty8l")] +position = Vector2(52, 36) +scale = Vector2(0.8, 0.8) +sprite_frames = ExtResource("15_6c68c") + +[node name="Bush3" parent="OnTheGround" unique_id=410805572 instance=ExtResource("11_sty8l")] +position = Vector2(171, 146) +scale = Vector2(0.65, 0.65) +sprite_frames = ExtResource("15_6c68c") + +[node name="Bush5" parent="OnTheGround" unique_id=1797095975 instance=ExtResource("11_sty8l")] +position = Vector2(662, 47) +scale = Vector2(0.45, 0.45) +sprite_frames = ExtResource("15_6c68c") + +[node name="Door Enter" parent="OnTheGround" unique_id=1860367584 instance=ExtResource("12_dcclj")] +position = Vector2(32, 574) + +[node name="LevelExit" type="Node2D" parent="OnTheGround" unique_id=6645112] +y_sort_enabled = true +position = Vector2(416, 0) + +[node name="Door Exit" parent="OnTheGround/LevelExit" unique_id=286700128 instance=ExtResource("12_dcclj")] +position = Vector2(0, 72) +play_victory_fanfare_on_open = true + +[node name="Teleporter" type="Area2D" parent="OnTheGround/LevelExit" unique_id=650526093] +position = Vector2(0, -25) +collision_layer = 4 +script = ExtResource("13_eis6y") +next_scene = "uid://cb7tqsakwhpgk" +spawn_point_path = NodePath("SpawnPointAfterIntro") +enter_transition = 4 +exit_transition = 5 +metadata/_custom_type_script = "uid://hqdquinbimce" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/LevelExit/Teleporter" unique_id=1082155385] +position = Vector2(-1.5, -9.5) +shape = SubResource("RectangleShape2D_lmnu5") + +[node name="Player" parent="OnTheGround" unique_id=1834864183 instance=ExtResource("14_culag")] +position = Vector2(30, 302) +player_name = "StoryWeaver" +sprite_frames = ExtResource("15_2vr3v") + +[node name="ThrowingEnemy" parent="OnTheGround" unique_id=1501672275 instance=ExtResource("16_cmppr")] +position = Vector2(1113, 300) +sprite_frames = ExtResource("17_laquw") +idle_sound_stream = ExtResource("18_0816u") +attack_sound_stream = ExtResource("19_bex1y") +projectile_scene = ExtResource("20_t8fi2") + +[node name="ThrowingEnemy2" parent="OnTheGround" unique_id=1243855514 instance=ExtResource("16_cmppr")] +position = Vector2(1030, 492) +odd_shoot = true +sprite_frames = ExtResource("17_laquw") +idle_sound_stream = ExtResource("18_0816u") +attack_sound_stream = ExtResource("19_bex1y") +projectile_scene = ExtResource("20_t8fi2") + +[node name="FillingBarrel" parent="OnTheGround" unique_id=1115630414 instance=ExtResource("21_t265e")] +position = Vector2(490, 175) +label = "Cyan" +color = Color(0, 1, 1, 1) + +[node name="Tree" parent="OnTheGround" unique_id=9247104 instance=ExtResource("22_nhha4")] +position = Vector2(33, 39) +scale = Vector2(1.00063, 0.911434) +sprite_frames = ExtResource("27_nymbh") + +[node name="Tree2" parent="OnTheGround" unique_id=1819923403 instance=ExtResource("22_nhha4")] +position = Vector2(674, 32) +scale = Vector2(0.95, 0.95) +sprite_frames = ExtResource("27_nymbh") + +[node name="RepelPowerup" parent="OnTheGround" unique_id=1795462717 instance=ExtResource("23_ofk5g")] +unique_name_in_owner = true +position = Vector2(189, 292) +sprite_frames = ExtResource("24_8k5n8") +highlight_color = Color(0, 0.4392157, 1, 1) + +[node name="Townie" parent="OnTheGround" unique_id=1098678013 instance=ExtResource("25_dyyts")] +position = Vector2(31, 462) +character_seed = 3222241206 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie" unique_id=2008407896] +unique_name_in_owner = true +collision_layer = 32 +collision_mask = 0 +script = ExtResource("26_rfiuc") +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie/InteractArea" unique_id=468695814] +visible = false +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_6c68c") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie" unique_id=186408622 node_paths=PackedStringArray("interact_area")] +script = ExtResource("27_nw4ve") +dialogue = ExtResource("4_4u14d") +title = "interact" +interact_area = NodePath("../InteractArea") +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=127644403] + +[node name="HUD" parent="." unique_id=390417147 instance=ExtResource("25_wx8m8")] + +[node name="Camera2D" type="Camera2D" parent="." unique_id=793138168] +limit_left = -33 +limit_top = -146 +limit_right = 1247 +limit_bottom = 574 +position_smoothing_enabled = true +editor_draw_limits = true + +[connection signal="cinematic_finished" from="Cinematic" to="FillGameLogic" method="start"] +[connection signal="goal_reached" from="FillGameLogic" to="FillGameLogic/LevelCompletedAnimation" method="play" binds= ["goal_completed"]] +[connection signal="collected" from="OnTheGround/RepelPowerup" to="." method="_on_repel_powerup_collected"] +[connection signal="interaction_ended" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_started"] diff --git a/scenes/quests/lore_quests/quest_000/4_ink_combat/tutorial_ink_combat.gd b/scenes/quests/lore_quests/quest_000/4_ink_combat/tutorial_ink_combat.gd new file mode 100644 index 0000000000..45c2e2473a --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/4_ink_combat/tutorial_ink_combat.gd @@ -0,0 +1,6 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D + +@onready var repel_powerup: CharacterBody2D = %RepelPowerup +@onready var fill_game_logic: FillGameLogic = %FillGameLogic diff --git a/scenes/quests/lore_quests/quest_000/4_ink_combat/tutorial_ink_combat.gd.uid b/scenes/quests/lore_quests/quest_000/4_ink_combat/tutorial_ink_combat.gd.uid new file mode 100644 index 0000000000..1cdd6c2798 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/4_ink_combat/tutorial_ink_combat.gd.uid @@ -0,0 +1 @@ +uid://bgh5dqhp52yv6 diff --git a/scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.dialogue b/scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.dialogue new file mode 100644 index 0000000000..62130b45ab --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.dialogue @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +Arun: Do you see how the Void is blooming, just across the water? +Arun: Anything it touches will be erased from our world. +Arun: Unfortunately, we have to walk this way to Fray's End... +Arun: ...and it will be drawn to us by the stories we carry with us. + +~ interact +Arun: Move quickly, StoryWeaver. Remember: you can run! +=> END + +~ well_done +if SpiritThread.revealed: + => take_the_thread +Arun: You made it, StoryWeaver. +Arun: The people of Fray's End will be thrilled to hear how you outran the Void. +StoryWeaver: Not to mention how you got over here without me seeing you! +Arun: Yes yes, that too. + +do wait(0.5) +do SpiritThread.reveal() +do wait(0.5) + +Arun: Aha! Another thread, this time of Spirit. + +~ take_the_thread +Arun: Take the thread, and let's get going. We're nearly there! +=> END diff --git a/scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.dialogue.import b/scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.dialogue.import new file mode 100644 index 0000000000..32cf10d10a --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://bf8ijgu3jlfvm" +path="res://.godot/imported/tutorial_void_runner.dialogue-316185b8edd99d6c76685be95e470ded.tres" + +[deps] + +source_file="res://scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.dialogue" +dest_files=["res://.godot/imported/tutorial_void_runner.dialogue-316185b8edd99d6c76685be95e470ded.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.tscn b/scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.tscn new file mode 100644 index 0000000000..50a23d5ada --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.tscn @@ -0,0 +1,883 @@ +[gd_scene format=4 uid="uid://cb7tqsakwhpgk"] + +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="1_kefym"] +[ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="2_tl32x"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="3_egghn"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="4_uxkgr"] +[ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="5_a0m6m"] +[ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="6_j205g"] +[ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="7_avd7l"] +[ext_resource type="Script" uid="uid://d1ly6uhh500xu" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/tile_map_cover.gd" id="8_kxo05"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="9_41blb"] +[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="10_pxyem"] +[ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="11_wdt4i"] +[ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="12_rogtb"] +[ext_resource type="PackedScene" uid="uid://cokul8w425pja" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.tscn" id="13_app83"] +[ext_resource type="Script" uid="uid://bdhjixygupit1" path="res://scenes/game_elements/props/area_filler/area_filler.gd" id="14_2lxhj"] +[ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="14_sdmwi"] +[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="15_m0rx6"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="15_u5x30"] +[ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="16_f8xlp"] +[ext_resource type="Resource" uid="uid://bf8ijgu3jlfvm" path="res://scenes/quests/lore_quests/quest_000/5_void_runner/tutorial_void_runner.dialogue" id="17_u5x30"] +[ext_resource type="PackedScene" uid="uid://cfvr32bp2achm" path="res://scenes/game_elements/props/decoration/rock/fabric_rock.tscn" id="18_f8xlp"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="20_f8xlp"] +[ext_resource type="SpriteFrames" uid="uid://cuokvpf58hkee" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_purple.tres" id="22_af6h4"] +[ext_resource type="Script" uid="uid://c8405c212rbn6" path="res://scenes/game_elements/props/background_music/components/background_music.gd" id="22_fs5pc"] +[ext_resource type="AudioStream" uid="uid://bwgtbylflkup2" path="res://scenes/quests/lore_quests/quest_002/components/void_music.tres" id="23_xfbr2"] +[ext_resource type="Script" uid="uid://c2lx7gvkonxaa" path="res://scenes/game_elements/props/background_music/components/clip_switcher.gd" id="24_tjonm"] +[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="25_xfbr2"] +[ext_resource type="PackedScene" uid="uid://dv4f232y8w8dv" path="res://scenes/game_elements/props/decoration/water_rock/water_rock.tscn" id="28_af6h4"] + +[sub_resource type="Resource" id="Resource_6rywr"] +script = ExtResource("12_rogtb") +type = 2 +metadata/_custom_type_script = "uid://bgmwplmj3bfls" + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_tfxnn"] +size = Vector2(52, 61) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_u5x30"] +size = Vector2(52, 61) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_fwbcl"] +size = Vector2(337.5, 826) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ky281"] +size = Vector2(721.75, 300) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_fs5pc"] +size = Vector2(720, 590) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_egghn"] +size = Vector2(855, 386) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_af6h4"] +size = Vector2(330.5, 903) + +[sub_resource type="NavigationPolygon" id="NavigationPolygon_05yrb"] +vertices = PackedVector2Array(670.8594, 2108.5, -1701, 2230.461, -1701.9922, 941.5703, -1387.7031, -25.078125, 641.1328, -49.867188) +polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3, 4)]) +outlines = Array[PackedVector2Array]([PackedVector2Array(-1712, 940, -1395, -35, 651, -60, 681, 2118, -1711, 2241)]) + +[sub_resource type="Curve2D" id="Curve2D_sgtqv"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -198, 1778, 0, 0, 0, 0, -329, 962, 0, 0, 0, 0, 0, 889, 0, 0, 0, 0, -285, 709, 0, 0, 0, 0, 102, 593, 0, 0, 0, 0, 300, 844, 0, 0, 0, 0, 513, 646, 0, 0, 0, 0, 611, 900) +} +point_count = 8 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_sgtqv"] +size = Vector2(64, 192) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_m0rx6"] +size = Vector2(64, 64) + +[node name="VoidGrapplingRunner" type="Node2D" unique_id=54297093] + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=1241762654] + +[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=517191864] +z_index = -1 +tile_map_data = PackedByteArray("AAAHABQAAAAAAAAAAAAHABUAAAAAAAAAAAAHABYAAAAAAAAAAAAHABcAAAAAAAAAAAAHABgAAAAAAAAAAAAHABkAAAAAAAAAAAAHABoAAAAAAAAAAAAHABsAAAAAAAAAAAAIABQAAAAAAAAAAAAIABUAAAAAAAAAAAAIABYAAAAAAAAAAAAIABcAAAAAAAAAAAAIABgAAAAAAAAAAAAIABkAAAAAAAAAAAAIABoAAAAAAAAAAAAIABsAAAAAAAAAAAAJABQAAAAAAAAAAAAJABUAAAAAAAAAAAAJABYAAAAAAAAAAAAJABcAAAAAAAAAAAAJABgAAAAAAAAAAAAJABkAAAAAAAAAAAAJABoAAAAAAAAAAAAJABsAAAAAAAAAAAAKABQAAAAAAAAAAAAKABUAAAAAAAAAAAAKABYAAAAAAAAAAAAKABcAAAAAAAAAAAAKABgAAAAAAAAAAAAKABkAAAAAAAAAAAAKABoAAAAAAAAAAAAKABsAAAAAAAAAAAALABQAAAAAAAAAAAALABUAAAAAAAAAAAALABYAAAAAAAAAAAALABcAAAAAAAAAAAALABgAAAAAAAAAAAALABkAAAAAAAAAAAALABoAAAAAAAAAAAALABsAAAAAAAAAAAAMABQAAAAAAAAAAAAMABUAAAAAAAAAAAAMABYAAAAAAAAAAAAMABcAAAAAAAAAAAAMABgAAAAAAAAAAAAMABkAAAAAAAAAAAAMABoAAAAAAAAAAAAMABsAAAAAAAAAAAANABQAAAAAAAAAAAANABUAAAAAAAAAAAANABYAAAAAAAAAAAANABcAAAAAAAAAAAANABgAAAAAAAAAAAANABkAAAAAAAAAAAANABoAAAAAAAAAAAANABsAAAAAAAAAAAAOABQAAAAAAAAAAAAOABUAAAAAAAAAAAAOABYAAAAAAAAAAAAOABcAAAAAAAAAAAAOABgAAAAAAAAAAAAOABkAAAAAAAAAAAAOABoAAAAAAAAAAAAOABsAAAAAAAAAAAAMAAwAAAAAAAAAAAAMAA0AAAAAAAAAAAAMAA4AAAAAAAAAAAAMAA8AAAAAAAAAAAANAAwAAAAAAAAAAAANAA0AAAAAAAAAAAANAA4AAAAAAAAAAAANAA8AAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAKAAwAAAAAAAAAAAAKAA0AAAAAAAAAAAAKAA4AAAAAAAAAAAALAAwAAAAAAAAAAAALAA0AAAAAAAAAAAALAA4AAAAAAAAAAAACAA4AAAAAAAAAAAACAA8AAAAAAAAAAAADAA4AAAAAAAAAAAADAA8AAAAAAAAAAAAEAA4AAAAAAAAAAAAEAA8AAAAAAAAAAAAFAA4AAAAAAAAAAAAFAA8AAAAAAAAAAAAGAA4AAAAAAAAAAAAGAA8AAAAAAAAAAAAHAA4AAAAAAAAAAAAHAA8AAAAAAAAAAAAIAA4AAAAAAAAAAAAIAA8AAAAAAAAAAAAJAA4AAAAAAAAAAAAJAA8AAAAAAAAAAAAKAA8AAAAAAAAAAAALAA8AAAAAAAAAAAAAAA8AAAAAAAAAAAAAABAAAAAAAAAAAAAAABEAAAAAAAAAAAAAABIAAAAAAAAAAAAAABMAAAAAAAAAAAAAABQAAAAAAAAAAAAAABUAAAAAAAAAAAAAABYAAAAAAAAAAAAAABcAAAAAAAAAAAAAABgAAAAAAAAAAAABAA8AAAAAAAAAAAABABAAAAAAAAAAAAABABEAAAAAAAAAAAABABIAAAAAAAAAAAABABMAAAAAAAAAAAABABQAAAAAAAAAAAABABUAAAAAAAAAAAABABYAAAAAAAAAAAABABcAAAAAAAAAAAABABgAAAAAAAAAAAACABkAAAAAAAAAAAACABoAAAAAAAAAAAACABsAAAAAAAAAAAACABwAAAAAAAAAAAACAB0AAAAAAAAAAAACAB4AAAAAAAAAAAADABkAAAAAAAAAAAADABoAAAAAAAAAAAADABsAAAAAAAAAAAADABwAAAAAAAAAAAADAB0AAAAAAAAAAAADAB4AAAAAAAAAAAAEABkAAAAAAAAAAQAEABoAAAAAAAAAAAAEABsAAAAAAAAAAAAEABwAAAAAAAAAAAAEAB0AAAAAAAAAAAAEAB4AAAAAAAAAAAAFABkAAAAAAAAAAAAFABoAAAAAAAAAAAAFABsAAAAAAAAAAAAFABwAAAAAAAAAAAAFAB0AAAAAAAAAAAAFAB4AAAAAAAAAAAAGABkAAAAAAAAAAAAGABoAAAAAAAAAAAAGABsAAAAAAAAAAAAGABwAAAAAAAAAAAAGAB0AAAAAAAAAAAAGAB4AAAAAAAAAAAD7/xQAAAAAAAAAAAD7/xUAAAAAAAAAAAD7/xYAAAAAAAAAAAD7/xcAAAAAAAAAAAD7/xgAAAAAAAAAAAD7/xkAAAAAAAAAAAD7/xoAAAAAAAAAAAD7/xsAAAAAAAAAAAD8/xQAAAAAAAAAAAD8/xUAAAAAAAAAAAD8/xYAAAAAAAAAAAD8/xcAAAAAAAAAAAD8/xgAAAAAAAAAAAD8/xkAAAAAAAAAAAD8/xoAAAAAAAAAAAD8/xsAAAAAAAAAAAD9/xQAAAAAAAAAAAD9/xUAAAAAAAAAAAD9/xYAAAAAAAAAAAD9/xcAAAAAAAAAAAD9/xgAAAAAAAAAAAD9/xkAAAAAAAAAAAD9/xoAAAAAAAAAAAD9/xsAAAAAAAAAAAD+/xQAAAAAAAAAAAD+/xUAAAAAAAAAAAD+/xYAAAAAAAAAAAD+/xcAAAAAAAAAAAD+/xgAAAAAAAAAAAD+/xkAAAAAAAAAAAD+/xoAAAAAAAAAAAD+/xsAAAAAAAAAAAD//xQAAAAAAAAAAAD//xUAAAAAAAAAAAD//xYAAAAAAAAAAAD//xcAAAAAAAAAAAD//xgAAAAAAAAAAAD//xkAAAAAAAAAAAD//xoAAAAAAAAAAAD//xsAAAAAAAAAAAAAABkAAAAAAAAAAAAAABoAAAAAAAAAAAAAABsAAAAAAAAAAAAAABwAAAAAAAAAAAAAAB0AAAAAAAAAAAAAAB4AAAAAAAAAAAABABkAAAAAAAAAAAABABoAAAAAAAAAAAABABsAAAAAAAAAAAABABwAAAAAAAAAAAABAB0AAAAAAAAAAAABAB4AAAAAAAAAAAD7/xwAAAAAAAAAAAD7/x0AAAAAAAAAAAD7/x4AAAAAAAAAAAD8/xwAAAAAAAAAAAD8/x0AAAAAAAAAAAD8/x4AAAAAAAAAAAD9/xwAAAAAAAAAAAD9/x0AAAAAAAAAAAD9/x4AAAAAAAAAAAD+/xwAAAAAAAAAAAD+/x0AAAAAAAAAAAD+/x4AAAAAAAAAAAD//xwAAAAAAAAAAAD//x0AAAAAAAAAAAD//x4AAAAAAAAAAAAJAAcAAAAAAAAAAAAJAAgAAAAAAAAAAAAHAAcAAAAAAAAAAAAIAAcAAAAAAAAAAAD//wcAAAAAAAAAAAAAAAcAAAAAAAAAAAABAAcAAAAAAAAAAAACAAcAAAAAAAAAAAADAAcAAAAAAAAAAAAEAAcAAAAAAAAAAAAFAAcAAAAAAAAAAAAGAAcAAAAAAAAAAAD9/wYAAAAAAAAAAAD+/wYAAAAAAAAAAAD//wYAAAAAAAAAAAAAAAYAAAAAAAAAAAABAAYAAAAAAAAAAAACAAYAAAAAAAAAAAADAAYAAAAAAAAAAAAEAAYAAAAAAAAAAAAFAAYAAAAAAAAAAAAGAAYAAAAAAAAAAAAHAAYAAAAAAAAAAAAIAAYAAAAAAAAAAAAJAAYAAAAAAAAAAAD2/wAAAAAAAAAAAAD2/wEAAAAAAAAAAAD2/wIAAAAAAAAAAAD2/wMAAAAAAAAAAAD2/wQAAAAAAAAAAAD2/wUAAAAAAAAAAAD2/wYAAAAAAAAAAAD3/wAAAAAAAAAAAAD3/wEAAAAAAAAAAAD3/wIAAAAAAAAAAAD3/wMAAAAAAAAAAAD3/wQAAAAAAAAAAAD3/wUAAAAAAAAAAAD3/wYAAAAAAAAAAAD4/wAAAAAAAAAAAAD4/wEAAAAAAAAAAAD4/wIAAAAAAAAAAAD4/wMAAAAAAAAAAAD4/wQAAAAAAAAAAAD4/wUAAAAAAAAAAAD4/wYAAAAAAAAAAAD5/wAAAAAAAAAAAAD5/wEAAAAAAAAAAAD5/wIAAAAAAAAAAAD5/wMAAAAAAAAAAAD5/wQAAAAAAAAAAAD5/wUAAAAAAAAAAAD5/wYAAAAAAAAAAAD6/wAAAAAAAAAAAAD6/wEAAAAAAAAAAAD6/wIAAAAAAAAAAAD6/wMAAAAAAAAAAAD6/wQAAAAAAAAAAAD6/wUAAAAAAAAAAAD6/wYAAAAAAAAAAAD7/wAAAAAAAAAAAAD7/wEAAAAAAAAAAAD7/wIAAAAAAAAAAAD7/wMAAAAAAAAAAAD7/wQAAAAAAAAAAAD7/wUAAAAAAAAAAAD7/wYAAAAAAAAAAAD8/wAAAAAAAAAAAAD8/wEAAAAAAAAAAAD8/wIAAAAAAAAAAAD8/wMAAAAAAAAAAAD8/wQAAAAAAAAAAAD8/wUAAAAAAAAAAAD8/wYAAAAAAAAAAAD9/wAAAAAAAAAAAAD9/wEAAAAAAAAAAAD9/wIAAAAAAAAAAAD9/wMAAAAAAAAAAAD9/wQAAAAAAAAAAAD9/wUAAAAAAAAAAAD+/wAAAAAAAAAAAAD+/wEAAAAAAAAAAAD+/wIAAAAAAAAAAAD+/wMAAAAAAAAAAAD+/wQAAAAAAAAAAAD+/wUAAAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAD6/wcAAAAAAAAAAAD2/wcAAAAAAAAAAAD2/wgAAAAAAAAAAAD2/wkAAAAAAAAAAAD2/woAAAAAAAAAAAD2/wsAAAAAAAAAAAD2/wwAAAAAAAAAAAD2/w0AAAAAAAAAAAD2/w4AAAAAAAAAAAD2/w8AAAAAAAAAAAD2/xAAAAAAAAAAAAD2/xEAAAAAAAAAAAD2/xIAAAAAAAAAAAD2/xMAAAAAAAAAAAD3/wcAAAAAAAAAAAD3/wgAAAAAAAAAAAD3/wkAAAAAAAAAAAD3/woAAAAAAAAAAAD3/wsAAAAAAAAAAAD3/wwAAAAAAAAAAAD3/w0AAAAAAAAAAAD3/w4AAAAAAAAAAAD3/w8AAAAAAAAAAAD3/xAAAAAAAAAAAAD3/xEAAAAAAAAAAAD3/xIAAAAAAAAAAAD3/xMAAAAAAAAAAAD4/wcAAAAAAAAAAAD4/wgAAAAAAAAAAAD4/wkAAAAAAAAAAAD4/woAAAAAAAAAAAD4/wsAAAAAAAAAAAD4/wwAAAAAAAAAAAD4/w0AAAAAAAAAAAD4/w4AAAAAAAAAAAD4/w8AAAAAAAAAAAD4/xAAAAAAAAAAAAD4/xEAAAAAAAAAAAD4/xIAAAAAAAAAAAD4/xMAAAAAAAAAAAD5/wcAAAAAAAAAAAD5/wgAAAAAAAAAAAD5/wkAAAAAAAAAAAD5/woAAAAAAAAAAAD5/wsAAAAAAAAAAAD5/wwAAAAAAAAAAAD5/w0AAAAAAAAAAAD5/w4AAAAAAAAAAAD5/w8AAAAAAAAAAAD5/xAAAAAAAAAAAAD5/xEAAAAAAAAAAAD5/xIAAAAAAAAAAAD5/xMAAAAAAAAAAAD2/xQAAAAAAAAAAAD2/xUAAAAAAAAAAAD2/xYAAAAAAAAAAAD2/xcAAAAAAAAAAAD3/xQAAAAAAAAAAAD3/xUAAAAAAAAAAAD3/xYAAAAAAAAAAAD3/xcAAAAAAAAAAAD4/xQAAAAAAAAAAAD4/xUAAAAAAAAAAAD4/xYAAAAAAAAAAAD4/xcAAAAAAAAAAAD5/xQAAAAAAAAAAAD5/xUAAAAAAAAAAAD5/xYAAAAAAAAAAAD5/xcAAAAAAAAAAAD6/xQAAAAAAAAAAAD6/xUAAAAAAAAAAAD6/xYAAAAAAAAAAAD6/xcAAAAAAAAAAAD2/xgAAAAAAAAAAAD2/xkAAAAAAAAAAAD2/xoAAAAAAAAAAAD2/xsAAAAAAAAAAAD2/xwAAAAAAAAAAAD2/x0AAAAAAAAAAAD2/x4AAAAAAAAAAAD3/xgAAAAAAAAAAAD3/xkAAAAAAAAAAAD3/xoAAAAAAAAAAAD3/xsAAAAAAAAAAAD3/xwAAAAAAAAAAAD3/x0AAAAAAAAAAAD3/x4AAAAAAAAAAAD4/xgAAAAAAAAAAAD4/xkAAAAAAAAAAAD4/xoAAAAAAAAAAAD4/xsAAAAAAAAAAAD4/xwAAAAAAAAAAAD4/x0AAAAAAAAAAAD4/x4AAAAAAAAAAAD5/xgAAAAAAAAAAAD5/xkAAAAAAAAAAAD5/xoAAAAAAAAAAAD5/xsAAAAAAAAAAAD5/xwAAAAAAAAAAAD5/x0AAAAAAAAAAAD5/x4AAAAAAAAAAAD6/xgAAAAAAAAAAAD6/xkAAAAAAAAAAAD6/xoAAAAAAAAAAAD6/xsAAAAAAAAAAAD6/xwAAAAAAAAAAAD6/x0AAAAAAAAAAAD6/x4AAAAAAAAAAAAHABwAAAAAAAAAAAAHAB0AAAAAAAAAAAAHAB4AAAAAAAAAAAAIABwAAAAAAAAAAAAIAB0AAAAAAAAAAAAIAB4AAAAAAAAAAAAJABwAAAAAAAAAAAAJAB0AAAAAAAAAAAAJAB4AAAAAAAAAAAAKABwAAAAAAAAAAAAKAB0AAAAAAAAAAAAKAB4AAAAAAAAAAAALABwAAAAAAAAAAAALAB0AAAAAAAAAAAALAB4AAAAAAAAAAAAMABwAAAAAAAAAAAAMAB0AAAAAAAAAAAAMAB4AAAAAAAAAAAANABwAAAAAAAAAAAANAB0AAAAAAAAAAAANAB4AAAAAAAAAAAAOABwAAAAAAAAAAAAOAB0AAAAAAAAAAAAOAB4AAAAAAAAAAAAPABQAAAAAAAAAAAAPABUAAAAAAAAAAAAPABYAAAAAAAAAAAAPABcAAAAAAAAAAAAQABQAAAAAAAAAAAAQABUAAAAAAAAAAAAQABYAAAAAAAAAAAAQABcAAAAAAAAAAAARABQAAAAAAAAAAAARABUAAAAAAAAAAAARABYAAAAAAAAAAAARABcAAAAAAAAAAAASABQAAAAAAAAAAAASABUAAAAAAAAAAAASABYAAAAAAAAAAAASABcAAAAAAAAAAAATABQAAAAAAAAAAAATABUAAAAAAAAAAAATABYAAAAAAAAAAAATABcAAAAAAAAAAAAUABQAAAAAAAAAAAAUABUAAAAAAAAAAAAUABYAAAAAAAAAAAAUABcAAAAAAAAAAAAVABQAAAAAAAAAAAAVABUAAAAAAAAAAAAVABYAAAAAAAAAAAAVABcAAAAAAAAAAAAWABQAAAAAAAAAAAAWABUAAAAAAAAAAAAWABYAAAAAAAAAAAAWABcAAAAAAAAAAAAXABQAAAAAAAAAAAAXABUAAAAAAAAAAAAXABYAAAAAAAAAAAAXABcAAAAAAAAAAAAYABQAAAAAAAAAAAAYABUAAAAAAAAAAAAYABYAAAAAAAAAAAAYABcAAAAAAAAAAAAZABQAAAAAAAAAAAAZABUAAAAAAAAAAAAZABYAAAAAAAAAAAAZABcAAAAAAAAAAAAaABQAAAAAAAAAAAAaABUAAAAAAAAAAAAaABYAAAAAAAAAAAAaABcAAAAAAAAAAAAbABQAAAAAAAAAAAAbABUAAAAAAAAAAAAbABYAAAAAAAAAAAAbABcAAAAAAAAAAAAcABQAAAAAAAAAAAAcABUAAAAAAAAAAAAcABYAAAAAAAAAAAAcABcAAAAAAAAAAAAdABQAAAAAAAAAAAAdABUAAAAAAAAAAAAdABYAAAAAAAAAAAAdABcAAAAAAAAAAAAeABQAAAAAAAAAAAAeABUAAAAAAAAAAAAeABYAAAAAAAAAAAAeABcAAAAAAAAAAAAfABQAAAAAAAAAAAAfABUAAAAAAAAAAAAfABYAAAAAAAAAAAAfABcAAAAAAAAAAAAgAPf/AAAAAAAAAAAgAPj/AAAAAAAAAAAgAPn/AAAAAAAAAAAgAPr/AAAAAAAAAAAgAPv/AAAAAAAAAAAgAPz/AAAAAAAAAAAhAPf/AAAAAAAAAAAhAPj/AAAAAAAAAAAhAPn/AAAAAAAAAAAhAPr/AAAAAAAAAAAhAPv/AAAAAAAAAAAhAPz/AAAAAAAAAAAiAPf/AAAAAAAAAAAiAPj/AAAAAAAAAAAiAPn/AAAAAAAAAAAiAPr/AAAAAAAAAAAiAPv/AAAAAAAAAAAiAPz/AAAAAAAAAAAjAPf/AAAAAAAAAAAjAPj/AAAAAAAAAAAjAPn/AAAAAAAAAAAjAPr/AAAAAAAAAAAjAPv/AAAAAAAAAAAjAPz/AAAAAAAAAAAkAPf/AAAAAAAAAAAkAPj/AAAAAAAAAAAkAPn/AAAAAAAAAAAkAPr/AAAAAAAAAAAkAPv/AAAAAAAAAAAkAPz/AAAAAAAAAAAlAPf/AAAAAAAAAAAlAPj/AAAAAAAAAAAlAPn/AAAAAAAAAAAlAPr/AAAAAAAAAAAlAPv/AAAAAAAAAAAlAPz/AAAAAAAAAAAmAPf/AAAAAAAAAAAmAPj/AAAAAAAAAAAmAPn/AAAAAAAAAAAmAPr/AAAAAAAAAAAmAPv/AAAAAAAAAAAmAPz/AAAAAAAAAAAnAPf/AAAAAAAAAAAnAPj/AAAAAAAAAAAnAPn/AAAAAAAAAAAnAPr/AAAAAAAAAAAnAPv/AAAAAAAAAAAnAPz/AAAAAAAAAAAoAPj/AAAAAAAAAAAoAPn/AAAAAAAAAAAoAPr/AAAAAAAAAAAoAPf/AAAAAAAAAAApAPf/AAAAAAAAAAApAPj/AAAAAAAAAAAqAPf/AAAAAAAAAAAqAPj/AAAAAAAAAAArAPf/AAAAAAAAAAArAPj/AAAAAAAAAAAsAPf/AAAAAAAAAAAsAPj/AAAAAAAAAAAtAPf/AAAAAAAAAAAtAPj/AAAAAAAAAAAuAPf/AAAAAAAAAAAuAPj/AAAAAAAAAAAvAPf/AAAAAAAAAAAvAPj/AAAAAAAAAAAwAPf/AAAAAAAAAAAwAPj/AAAAAAAAAAAxAPf/AAAAAAAAAAAxAPj/AAAAAAAAAAAyAPf/AAAAAAAAAAAyAPj/AAAAAAAAAAAzAPf/AAAAAAAAAAAzAPj/AAAAAAAAAAAzAPn/AAAAAAAAAAAzAPr/AAAAAAAAAAA0APf/AAAAAAAAAAA0APj/AAAAAAAAAAA0APn/AAAAAAAAAAA0APr/AAAAAAAAAAA1APf/AAAAAAAAAAA1APj/AAAAAAAAAAA1APn/AAAAAAAAAAA1APr/AAAAAAAAAAApAPn/AAAAAAAAAAAqAPn/AAAAAAAAAAArAPn/AAAAAAAAAAAsAPn/AAAAAAAAAAAtAPn/AAAAAAAAAAAuAPn/AAAAAAAAAAAvAPn/AAAAAAAAAAAwAPn/AAAAAAAAAAAxAPn/AAAAAAAAAAAyAPn/AAAAAAAAAAA0APv/AAAAAAAAAAA0APz/AAAAAAAAAAA0AP3/AAAAAAAAAAA0AP7/AAAAAAAAAAA0AP//AAAAAAAAAAA0AAAAAAAAAAAAAAA0AAEAAAAAAAAAAAA0AAIAAAAAAAAAAAA1APv/AAAAAAAAAAA1APz/AAAAAAAAAAA1AP3/AAAAAAAAAAA1AP7/AAAAAAAAAAA1AP//AAAAAAAAAAA1AAAAAAAAAAAAAAA1AAEAAAAAAAAAAAA1AAIAAAAAAAAAAAA2APv/AAAAAAAAAAA2APz/AAAAAAAAAAA2AP3/AAAAAAAAAAA2AP7/AAAAAAAAAAA2AP//AAAAAAAAAAA2AAAAAAAAAAAAAAA2AAEAAAAAAAAAAAA2AAIAAAAAAAAAAAA3APv/AAAAAAAAAAA3APz/AAAAAAAAAAA3AP3/AAAAAAAAAAA3AP7/AAAAAAAAAAA3AP//AAAAAAAAAAA3AAAAAAAAAAAAAAA3AAEAAAAAAAAAAAA3AAIAAAAAAAAAAAA2APf/AAAAAAAAAAA2APj/AAAAAAAAAAA2APn/AAAAAAAAAAA2APr/AAAAAAAAAAA3APf/AAAAAAAAAAA3APj/AAAAAAAAAAA3APn/AAAAAAAAAAA3APr/AAAAAAAAAAA4APf/AAAAAAAAAAA4APj/AAAAAAAAAAA4APn/AAAAAAAAAAA4APr/AAAAAAAAAAA4APv/AAAAAAAAAAA4APz/AAAAAAAAAAA4AP3/AAAAAAAAAAA4AP7/AAAAAAAAAAA4AP//AAAAAAAAAAA4AAAAAAAAAAAAAAAqAAMAAAAAAAAAAAAqAAQAAAAAAAAAAAAqAAUAAAAAAAAAAAArAAMAAAAAAAAAAAArAAQAAAAAAAAAAAArAAUAAAAAAAAAAAAsAAMAAAAAAAAAAAAsAAQAAAAAAAAAAAAsAAUAAAAAAAAAAAAtAAMAAAAAAAAAAAAtAAQAAAAAAAAAAAAtAAUAAAAAAAAAAAAuAAMAAAAAAAAAAAAuAAQAAAAAAAAAAAAuAAUAAAAAAAAAAAAvAAMAAAAAAAAAAAAvAAQAAAAAAAAAAAAvAAUAAAAAAAAAAAAwAAMAAAAAAAAAAAAwAAQAAAAAAAAAAAAwAAUAAAAAAAAAAAAxAAMAAAAAAAAAAAAxAAQAAAAAAAAAAAAxAAUAAAAAAAAAAAAyAAMAAAAAAAAAAAAyAAQAAAAAAAAAAAAyAAUAAAAAAAAAAAAzAAMAAAAAAAAAAAAzAAQAAAAAAAAAAAAzAAUAAAAAAAAAAAA0AAMAAAAAAAAAAAA0AAQAAAAAAAAAAAA0AAUAAAAAAAAAAAA1AAMAAAAAAAAAAAA1AAQAAAAAAAAAAAA1AAUAAAAAAAAAAAA2AAMAAAAAAAAAAAA2AAQAAAAAAAAAAAA2AAUAAAAAAAAAAAA3AAMAAAAAAAAAAAA3AAQAAAAAAAAAAAA3AAUAAAAAAAAAAAA4AAEAAAAAAAAAAAA4AAIAAAAAAAAAAAA4AAMAAAAAAAAAAAA4AAQAAAAAAAAAAAA4AAUAAAAAAAAAAAApAAMAAAAAAAAAAAApAAQAAAAAAAAAAAApAAUAAAAAAAAAAAAgAAEAAAAAAAAAAAAgAAIAAAAAAAAAAAAhAAEAAAAAAAAAAAAhAAIAAAAAAAAAAAAiAAEAAAAAAAAAAAAiAAIAAAAAAAAAAAAjAAEAAAAAAAAAAAAjAAIAAAAAAAAAAAAjAAMAAAAAAAAAAAAjAAQAAAAAAAAAAAAjAAUAAAAAAAAAAAAkAAEAAAAAAAAAAAAkAAIAAAAAAAAAAAAkAAMAAAAAAAAAAAAkAAQAAAAAAAAAAAAkAAUAAAAAAAAAAAAlAAEAAAAAAAAAAAAlAAIAAAAAAAAAAAAlAAMAAAAAAAAAAAAlAAQAAAAAAAAAAAAlAAUAAAAAAAAAAAAmAAEAAAAAAAAAAAAmAAIAAAAAAAAAAAAmAAMAAAAAAAAAAAAmAAQAAAAAAAAAAAAmAAUAAAAAAAAAAAAnAAEAAAAAAAAAAAAnAAIAAAAAAAAAAAAnAAMAAAAAAAAAAAAnAAQAAAAAAAAAAAAnAAUAAAAAAAAAAAAoAAMAAAAAAAAAAAAoAAQAAAAAAAAAAAAoAAUAAAAAAAAAAAAgAP7/AAAAAAAAAAAgAP//AAAAAAAAAAAgAAAAAAAAAAAAAAAhAP7/AAAAAAAAAAAhAP//AAAAAAAAAAAhAAAAAAAAAAAAAAAiAP7/AAAAAAAAAAAiAP//AAAAAAAAAAAiAAAAAAAAAAAAAAAjAP7/AAAAAAAAAAAjAP//AAAAAAAAAAAjAAAAAAAAAAAAAAAkAP7/AAAAAAAAAAAkAP//AAAAAAAAAAAkAAAAAAAAAAAAAAAlAP7/AAAAAAAAAAAlAP//AAAAAAAAAAAlAAAAAAAAAAAAAAAmAP7/AAAAAAAAAAAmAP//AAAAAAAAAAAmAAAAAAAAAAAAAAAnAP7/AAAAAAAAAAAnAP//AAAAAAAAAAAnAAAAAAAAAAAAAAAgAP3/AAAAAAAAAQAhAP3/AAAAAAAAAQAiAP3/AAAAAAAAAQAjAP3/AAAAAAAAAQAkAP3/AAAAAAAAAQAlAP3/AAAAAAAAAQAmAP3/AAAAAAAAAQAnAP3/AAAAAAAAAQAKAAYAAAAAAAAAAAAKAAcAAAAAAAAAAAAKAAgAAAAAAAAAAAAKAAkAAAAAAAAAAAAKAAoAAAAAAAAAAAALAAYAAAAAAAAAAAALAAcAAAAAAAAAAAALAAgAAAAAAAAAAAALAAkAAAAAAAAAAAALAAoAAAAAAAAAAAAMAAYAAAAAAAAAAAAMAAcAAAAAAAAAAAAMAAgAAAAAAAAAAAAMAAkAAAAAAAAAAAAMAAoAAAAAAAAAAAANAAcAAAAAAAAAAAANAAgAAAAAAAAAAAANAAkAAAAAAAAAAAANAAoAAAAAAAAAAAAjAAYAAAAAAAAAAAAjAAcAAAAAAAAAAAAjAAgAAAAAAAAAAAAjAAkAAAAAAAAAAAAjAAoAAAAAAAAAAAAjAAsAAAAAAAAAAAAjAAwAAAAAAAAAAAAjAA0AAAAAAAAAAAAjAA4AAAAAAAAAAAAjAA8AAAAAAAAAAAAjABAAAAAAAAAAAAAjABEAAAAAAAAAAAAjABIAAAAAAAAAAAAjABMAAAAAAAAAAAAjABQAAAAAAAAAAAAjABUAAAAAAAAAAAAjABYAAAAAAAAAAAAjABcAAAAAAAAAAAAkAAYAAAAAAAAAAAAkAAcAAAAAAAAAAAAkAAgAAAAAAAAAAAAkAAkAAAAAAAAAAAAkAAoAAAAAAAAAAAAkAAsAAAAAAAAAAAAkAAwAAAAAAAAAAAAkAA0AAAAAAAAAAAAkAA4AAAAAAAAAAAAkAA8AAAAAAAAAAAAkABAAAAAAAAAAAAAkABEAAAAAAAAAAAAkABIAAAAAAAAAAAAkABMAAAAAAAAAAAAkABQAAAAAAAAAAAAkABUAAAAAAAAAAAAkABYAAAAAAAAAAAAkABcAAAAAAAAAAAAlAAYAAAAAAAAAAAAlAAcAAAAAAAAAAAAlAAgAAAAAAAAAAAAlAAkAAAAAAAAAAAAlAAoAAAAAAAAAAAAlAAsAAAAAAAAAAAAlAAwAAAAAAAAAAAAlAA0AAAAAAAAAAAAlAA4AAAAAAAAAAAAlAA8AAAAAAAAAAAAlABAAAAAAAAAAAAAlABEAAAAAAAAAAAAlABIAAAAAAAAAAAAlABMAAAAAAAAAAAAlABQAAAAAAAAAAAAlABUAAAAAAAAAAAAlABYAAAAAAAAAAAAlABcAAAAAAAAAAAAmAAYAAAAAAAAAAAAmAAcAAAAAAAAAAAAmAAgAAAAAAAAAAAAmAAkAAAAAAAAAAAAmAAoAAAAAAAAAAAAmAAsAAAAAAAAAAAAmAAwAAAAAAAAAAAAmAA0AAAAAAAAAAAAmAA4AAAAAAAAAAAAmAA8AAAAAAAAAAAAmABAAAAAAAAAAAAAmABEAAAAAAAAAAAAmABIAAAAAAAAAAAAmABMAAAAAAAAAAAAmABQAAAAAAAAAAAAmABUAAAAAAAAAAAAmABYAAAAAAAAAAAAmABcAAAAAAAAAAAAnAAYAAAAAAAAAAAAnAAcAAAAAAAAAAAAnAAgAAAAAAAAAAAAnAAkAAAAAAAAAAAAnAAoAAAAAAAAAAAAnAAsAAAAAAAAAAAAnAAwAAAAAAAAAAAAnAA0AAAAAAAAAAAAnAA4AAAAAAAAAAAAnAA8AAAAAAAAAAAAnABAAAAAAAAAAAAAnABEAAAAAAAAAAAAnABIAAAAAAAAAAAAnABMAAAAAAAAAAAAnABQAAAAAAAAAAAAnABUAAAAAAAAAAAAnABYAAAAAAAAAAAAnABcAAAAAAAAAAAAoAAYAAAAAAAAAAAAoAAcAAAAAAAAAAAAoAAgAAAAAAAAAAAAoAAkAAAAAAAAAAAAoAAoAAAAAAAAAAAAoAAsAAAAAAAAAAAAoAAwAAAAAAAAAAAAoAA0AAAAAAAAAAAAoAA4AAAAAAAAAAAAoAA8AAAAAAAAAAAAoABAAAAAAAAAAAAAoABEAAAAAAAAAAAAoABIAAAAAAAAAAAAoABMAAAAAAAAAAAAoABQAAAAAAAAAAAAoABUAAAAAAAAAAAAoABYAAAAAAAAAAAAoABcAAAAAAAAAAAApAAYAAAAAAAAAAAApAAcAAAAAAAAAAAApAAgAAAAAAAAAAAApAAkAAAAAAAAAAAApAAoAAAAAAAAAAAApAAsAAAAAAAAAAAApAAwAAAAAAAAAAAApAA0AAAAAAAAAAAApAA4AAAAAAAAAAAApAA8AAAAAAAAAAAApABAAAAAAAAAAAAApABEAAAAAAAAAAAApABIAAAAAAAAAAAApABMAAAAAAAAAAAApABQAAAAAAAAAAAApABUAAAAAAAAAAAApABYAAAAAAAAAAAApABcAAAAAAAAAAAAqAAYAAAAAAAAAAAAqAAcAAAAAAAAAAAAqAAgAAAAAAAAAAAAqAAkAAAAAAAAAAAAqAAoAAAAAAAAAAAAqAAsAAAAAAAAAAAAqAAwAAAAAAAAAAAAqAA0AAAAAAAAAAAAqAA4AAAAAAAAAAAAqAA8AAAAAAAAAAAAqABAAAAAAAAAAAAAqABEAAAAAAAAAAAAqABIAAAAAAAAAAAAqABMAAAAAAAAAAAAqABQAAAAAAAAAAAAqABUAAAAAAAAAAAAqABYAAAAAAAAAAAAqABcAAAAAAAAAAAArAAYAAAAAAAAAAAArAAcAAAAAAAAAAAArAAgAAAAAAAAAAAArAAkAAAAAAAAAAAArAAoAAAAAAAAAAAArAAsAAAAAAAAAAAArAAwAAAAAAAAAAAArAA0AAAAAAAAAAAArAA4AAAAAAAAAAAArAA8AAAAAAAAAAAArABAAAAAAAAAAAAArABEAAAAAAAAAAAArABIAAAAAAAAAAAArABMAAAAAAAAAAAArABQAAAAAAAAAAAArABUAAAAAAAAAAAArABYAAAAAAAAAAAArABcAAAAAAAAAAAAsAAYAAAAAAAAAAAAsAAcAAAAAAAAAAAAsAAgAAAAAAAAAAAAsAAkAAAAAAAAAAAAsAAoAAAAAAAAAAAAsAAsAAAAAAAAAAAAsAAwAAAAAAAAAAAAsAA0AAAAAAAAAAAAsAA4AAAAAAAAAAAAsAA8AAAAAAAAAAAAsABAAAAAAAAAAAAAsABEAAAAAAAAAAAAsABIAAAAAAAAAAAAsABMAAAAAAAAAAAAsABQAAAAAAAAAAAAsABUAAAAAAAAAAAAsABYAAAAAAAAAAAAsABcAAAAAAAAAAAAtAAYAAAAAAAAAAAAtAAcAAAAAAAAAAAAtAAgAAAAAAAAAAAAtAAkAAAAAAAAAAAAtAAoAAAAAAAAAAAAtAAsAAAAAAAAAAAAtAAwAAAAAAAAAAAAtAA0AAAAAAAAAAAAtAA4AAAAAAAAAAAAtAA8AAAAAAAAAAAAtABAAAAAAAAAAAAAtABEAAAAAAAAAAAAtABIAAAAAAAAAAAAtABMAAAAAAAAAAAAtABQAAAAAAAAAAAAtABUAAAAAAAAAAAAtABYAAAAAAAAAAAAtABcAAAAAAAAAAAAuAAYAAAAAAAAAAAAuAAcAAAAAAAAAAAAuAAgAAAAAAAAAAAAuAAkAAAAAAAAAAAAuAAoAAAAAAAAAAAAuAAsAAAAAAAAAAAAuAAwAAAAAAAAAAAAuAA0AAAAAAAAAAAAuAA4AAAAAAAAAAAAuAA8AAAAAAAAAAAAuABAAAAAAAAAAAAAuABEAAAAAAAAAAAAuABIAAAAAAAAAAAAuABMAAAAAAAAAAAAuABQAAAAAAAAAAAAuABUAAAAAAAAAAAAuABYAAAAAAAAAAAAuABcAAAAAAAAAAAAvAAYAAAAAAAAAAAAvAAcAAAAAAAAAAAAvAAgAAAAAAAAAAAAvAAkAAAAAAAAAAAAvAAoAAAAAAAAAAAAvAAsAAAAAAAAAAAAvAAwAAAAAAAAAAAAvAA0AAAAAAAAAAAAvAA4AAAAAAAAAAAAvAA8AAAAAAAAAAAAvABAAAAAAAAAAAAAvABEAAAAAAAAAAAAvABIAAAAAAAAAAAAvABMAAAAAAAAAAAAvABQAAAAAAAAAAAAvABUAAAAAAAAAAAAvABYAAAAAAAAAAAAvABcAAAAAAAAAAAAwAAYAAAAAAAAAAAAwAAcAAAAAAAAAAAAwAAgAAAAAAAAAAAAwAAkAAAAAAAAAAAAwAAoAAAAAAAAAAAAwAAsAAAAAAAAAAAAwAAwAAAAAAAAAAAAwAA0AAAAAAAAAAAAwAA4AAAAAAAAAAAAwAA8AAAAAAAAAAAAwABAAAAAAAAAAAAAwABEAAAAAAAAAAAAwABIAAAAAAAAAAAAwABMAAAAAAAAAAAAwABQAAAAAAAAAAAAwABUAAAAAAAAAAAAwABYAAAAAAAAAAAAwABcAAAAAAAAAAAAxAAYAAAAAAAAAAAAxAAcAAAAAAAAAAAAxAAgAAAAAAAAAAAAxAAkAAAAAAAAAAAAxAAoAAAAAAAAAAAAxAAsAAAAAAAAAAAAxAAwAAAAAAAAAAAAxAA0AAAAAAAAAAAAxAA4AAAAAAAAAAAAxAA8AAAAAAAAAAAAxABAAAAAAAAAAAAAxABEAAAAAAAAAAAAxABIAAAAAAAAAAAAxABMAAAAAAAAAAAAxABQAAAAAAAAAAAAxABUAAAAAAAAAAAAxABYAAAAAAAAAAAAxABcAAAAAAAAAAAAyAAYAAAAAAAAAAAAyAAcAAAAAAAAAAAAyAAgAAAAAAAAAAAAyAAkAAAAAAAAAAAAyAAoAAAAAAAAAAAAyAAsAAAAAAAAAAAAyAAwAAAAAAAAAAAAyAA0AAAAAAAAAAAAyAA4AAAAAAAAAAAAyAA8AAAAAAAAAAAAyABAAAAAAAAAAAAAyABEAAAAAAAAAAAAyABIAAAAAAAAAAAAyABMAAAAAAAAAAAAyABQAAAAAAAAAAAAyABUAAAAAAAAAAAAyABYAAAAAAAAAAAAyABcAAAAAAAAAAAAzAAYAAAAAAAAAAAAzAAcAAAAAAAAAAAAzAAgAAAAAAAAAAAAzAAkAAAAAAAAAAAAzAAoAAAAAAAAAAAAzAAsAAAAAAAAAAAAzAAwAAAAAAAAAAAAzAA0AAAAAAAAAAAAzAA4AAAAAAAAAAAAzAA8AAAAAAAAAAAAzABAAAAAAAAAAAAAzABEAAAAAAAAAAAAzABIAAAAAAAAAAAAzABMAAAAAAAAAAAAzABQAAAAAAAAAAAAzABUAAAAAAAAAAAAzABYAAAAAAAAAAAAzABcAAAAAAAAAAAA0AAYAAAAAAAAAAAA0AAcAAAAAAAAAAAA0AAgAAAAAAAAAAAA0AAkAAAAAAAAAAAA0AAoAAAAAAAAAAAA0AAsAAAAAAAAAAAA0AAwAAAAAAAAAAAA0AA0AAAAAAAAAAAA0AA4AAAAAAAAAAAA0AA8AAAAAAAAAAAA0ABAAAAAAAAAAAAA0ABEAAAAAAAAAAAA0ABIAAAAAAAAAAAA0ABMAAAAAAAAAAAA0ABQAAAAAAAAAAAA0ABUAAAAAAAAAAAA0ABYAAAAAAAAAAAA0ABcAAAAAAAAAAAA1AAYAAAAAAAAAAAA1AAcAAAAAAAAAAAA1AAgAAAAAAAAAAAA1AAkAAAAAAAAAAAA1AAoAAAAAAAAAAAA1AAsAAAAAAAAAAAA1AAwAAAAAAAAAAAA1AA0AAAAAAAAAAAA1AA4AAAAAAAAAAAA1AA8AAAAAAAAAAAA1ABAAAAAAAAAAAAA1ABEAAAAAAAAAAAA1ABIAAAAAAAAAAAA1ABMAAAAAAAAAAAA1ABQAAAAAAAAAAAA1ABUAAAAAAAAAAAA1ABYAAAAAAAAAAAA1ABcAAAAAAAAAAAA2AAYAAAAAAAAAAAA2AAcAAAAAAAAAAAA2AAgAAAAAAAAAAAA2AAkAAAAAAAAAAAA2AAoAAAAAAAAAAAA2AAsAAAAAAAAAAAA2AAwAAAAAAAAAAAA2AA0AAAAAAAAAAAA2AA4AAAAAAAAAAAA2AA8AAAAAAAAAAAA2ABAAAAAAAAAAAAA2ABEAAAAAAAAAAAA2ABIAAAAAAAAAAAA2ABMAAAAAAAAAAAA2ABQAAAAAAAAAAAA2ABUAAAAAAAAAAAA2ABYAAAAAAAAAAAA2ABcAAAAAAAAAAAA3AAYAAAAAAAAAAAA3AAcAAAAAAAAAAAA3AAgAAAAAAAAAAAA3AAkAAAAAAAAAAAA3AAoAAAAAAAAAAAA3AAsAAAAAAAAAAAA3AAwAAAAAAAAAAAA3AA0AAAAAAAAAAAA3AA4AAAAAAAAAAAA3AA8AAAAAAAAAAAA3ABAAAAAAAAAAAAA3ABEAAAAAAAAAAAA3ABIAAAAAAAAAAAA3ABMAAAAAAAAAAAA3ABQAAAAAAAAAAAA3ABUAAAAAAAAAAAA3ABYAAAAAAAAAAAA3ABcAAAAAAAAAAAA4AAYAAAAAAAAAAAA4AAcAAAAAAAAAAAA4AAgAAAAAAAAAAAA4AAkAAAAAAAAAAAA4AAoAAAAAAAAAAAA4AAsAAAAAAAAAAAA4AAwAAAAAAAAAAAA4AA0AAAAAAAAAAAA4AA4AAAAAAAAAAAA4AA8AAAAAAAAAAAA4ABAAAAAAAAAAAAA4ABEAAAAAAAAAAAA4ABIAAAAAAAAAAAA4ABMAAAAAAAAAAAA4ABQAAAAAAAAAAAA4ABUAAAAAAAAAAAA4ABYAAAAAAAAAAAA4ABcAAAAAAAAAAAAgABQAAAAAAAAAAAAgABUAAAAAAAAAAAAgABYAAAAAAAAAAAAgABcAAAAAAAAAAAAhABQAAAAAAAAAAAAhABUAAAAAAAAAAAAhABYAAAAAAAAAAAAhABcAAAAAAAAAAAAiABQAAAAAAAAAAAAiABUAAAAAAAAAAAAiABYAAAAAAAAAAAAiABcAAAAAAAAAAAAPABgAAAAAAAAAAAAPABkAAAAAAAAAAAAPABoAAAAAAAAAAAAPABsAAAAAAAAAAAAPABwAAAAAAAAAAAAPAB0AAAAAAAAAAAAPAB4AAAAAAAAAAAAQABgAAAAAAAAAAAAQABkAAAAAAAAAAAAQABoAAAAAAAAAAAAQABsAAAAAAAAAAAAQABwAAAAAAAAAAAAQAB0AAAAAAAAAAAAQAB4AAAAAAAAAAAARABgAAAAAAAAAAAARABkAAAAAAAAAAAARABoAAAAAAAAAAAARABsAAAAAAAAAAAARABwAAAAAAAAAAAARAB0AAAAAAAAAAAARAB4AAAAAAAAAAAASABgAAAAAAAAAAAASABkAAAAAAAAAAAASABoAAAAAAAAAAAASABsAAAAAAAAAAAASABwAAAAAAAAAAAASAB0AAAAAAAAAAAASAB4AAAAAAAAAAAATABgAAAAAAAAAAAATABkAAAAAAAAAAAATABoAAAAAAAAAAAATABsAAAAAAAAAAAATABwAAAAAAAAAAAATAB0AAAAAAAAAAAATAB4AAAAAAAAAAAAUABgAAAAAAAAAAAAUABkAAAAAAAAAAAAUABoAAAAAAAAAAAAUABsAAAAAAAAAAAAUABwAAAAAAAAAAAAUAB0AAAAAAAAAAAAUAB4AAAAAAAAAAAAVABgAAAAAAAAAAAAVABkAAAAAAAAAAAAVABoAAAAAAAAAAAAVABsAAAAAAAAAAAAVABwAAAAAAAAAAAAVAB0AAAAAAAAAAAAVAB4AAAAAAAAAAAAWABgAAAAAAAAAAAAWABkAAAAAAAAAAAAWABoAAAAAAAAAAAAWABsAAAAAAAAAAAAWABwAAAAAAAAAAAAWAB0AAAAAAAAAAAAWAB4AAAAAAAAAAAAXABgAAAAAAAAAAAAXABkAAAAAAAAAAAAXABoAAAAAAAAAAAAXABsAAAAAAAAAAAAXABwAAAAAAAAAAAAXAB0AAAAAAAAAAAAXAB4AAAAAAAAAAAAYABgAAAAAAAAAAAAYABkAAAAAAAAAAAAYABoAAAAAAAAAAAAYABsAAAAAAAAAAAAYABwAAAAAAAAAAAAYAB0AAAAAAAAAAAAYAB4AAAAAAAAAAAAZABgAAAAAAAAAAAAZABkAAAAAAAAAAAAZABoAAAAAAAAAAAAZABsAAAAAAAAAAAAZABwAAAAAAAAAAAAZAB0AAAAAAAAAAAAZAB4AAAAAAAAAAAAaABgAAAAAAAAAAAAaABkAAAAAAAAAAAAaABoAAAAAAAAAAAAaABsAAAAAAAAAAAAaABwAAAAAAAAAAAAaAB0AAAAAAAAAAAAaAB4AAAAAAAAAAAAbABgAAAAAAAAAAAAbABkAAAAAAAAAAAAbABoAAAAAAAAAAAAbABsAAAAAAAAAAAAbABwAAAAAAAAAAAAbAB0AAAAAAAAAAAAbAB4AAAAAAAAAAAAcABgAAAAAAAAAAAAcABkAAAAAAAAAAAAcABoAAAAAAAAAAAAcABsAAAAAAAAAAAAcABwAAAAAAAAAAAAcAB0AAAAAAAAAAAAcAB4AAAAAAAAAAAAdABgAAAAAAAAAAAAdABkAAAAAAAAAAAAdABoAAAAAAAAAAAAdABsAAAAAAAAAAAAdABwAAAAAAAAAAAAdAB0AAAAAAAAAAAAdAB4AAAAAAAAAAAAeABgAAAAAAAAAAAAeABkAAAAAAAAAAAAeABoAAAAAAAAAAAAeABsAAAAAAAAAAAAeABwAAAAAAAAAAAAeAB0AAAAAAAAAAAAeAB4AAAAAAAAAAAAfABgAAAAAAAAAAAAfABkAAAAAAAAAAAAfABoAAAAAAAAAAAAfABsAAAAAAAAAAAAfABwAAAAAAAAAAAAfAB0AAAAAAAAAAAAfAB4AAAAAAAAAAAAgABgAAAAAAAAAAAAgABkAAAAAAAAAAAAgABoAAAAAAAAAAAAgABsAAAAAAAAAAAAgABwAAAAAAAAAAAAgAB0AAAAAAAAAAAAgAB4AAAAAAAAAAAAhABgAAAAAAAAAAAAhABkAAAAAAAAAAAAhABoAAAAAAAAAAAAhABsAAAAAAAAAAAAhABwAAAAAAAAAAAAhAB0AAAAAAAAAAAAhAB4AAAAAAAAAAAAiABgAAAAAAAAAAAAiABkAAAAAAAAAAAAiABoAAAAAAAAAAAAiABsAAAAAAAAAAAAiABwAAAAAAAAAAAAiAB0AAAAAAAAAAAAiAB4AAAAAAAAAAAAjABgAAAAAAAAAAAAjABkAAAAAAAAAAAAjABoAAAAAAAAAAAAjABsAAAAAAAAAAAAjABwAAAAAAAAAAAAjAB0AAAAAAAAAAAAjAB4AAAAAAAAAAAAkABgAAAAAAAAAAAAkABkAAAAAAAAAAAAkABoAAAAAAAAAAAAkABsAAAAAAAAAAAAkABwAAAAAAAAAAAAkAB0AAAAAAAAAAAAkAB4AAAAAAAAAAAAlABgAAAAAAAAAAAAlABkAAAAAAAAAAAAlABoAAAAAAAAAAAAlABsAAAAAAAAAAAAlABwAAAAAAAAAAAAlAB0AAAAAAAAAAAAlAB4AAAAAAAAAAAAmABgAAAAAAAAAAAAmABkAAAAAAAAAAAAmABoAAAAAAAAAAAAmABsAAAAAAAAAAAAmABwAAAAAAAAAAAAmAB0AAAAAAAAAAAAmAB4AAAAAAAAAAAAnABgAAAAAAAAAAAAnABkAAAAAAAAAAAAnABoAAAAAAAAAAAAnABsAAAAAAAAAAAAnABwAAAAAAAAAAAAnAB0AAAAAAAAAAAAnAB4AAAAAAAAAAAAoABgAAAAAAAAAAAAoABkAAAAAAAAAAAAoABoAAAAAAAAAAAAoABsAAAAAAAAAAAAoABwAAAAAAAAAAAAoAB0AAAAAAAAAAAAoAB4AAAAAAAAAAAApABgAAAAAAAAAAAApABkAAAAAAAAAAAApABoAAAAAAAAAAAApABsAAAAAAAAAAAApABwAAAAAAAAAAAApAB0AAAAAAAAAAAApAB4AAAAAAAAAAAAqABgAAAAAAAAAAAAqABkAAAAAAAAAAAAqABoAAAAAAAAAAAAqABsAAAAAAAAAAAAqABwAAAAAAAAAAAAqAB0AAAAAAAAAAAAqAB4AAAAAAAAAAAArABgAAAAAAAAAAAArABkAAAAAAAAAAAArABoAAAAAAAAAAAArABsAAAAAAAAAAAArABwAAAAAAAAAAAArAB0AAAAAAAAAAAArAB4AAAAAAAAAAAAsABgAAAAAAAAAAAAsABkAAAAAAAAAAAAsABoAAAAAAAAAAAAsABsAAAAAAAAAAAAsABwAAAAAAAAAAAAsAB0AAAAAAAAAAAAsAB4AAAAAAAAAAAAtABgAAAAAAAAAAAAtABkAAAAAAAAAAAAtABoAAAAAAAAAAAAtABsAAAAAAAAAAAAtABwAAAAAAAAAAAAtAB0AAAAAAAAAAAAtAB4AAAAAAAAAAAAuABgAAAAAAAAAAAAuABkAAAAAAAAAAAAuABoAAAAAAAAAAAAuABsAAAAAAAAAAAAuABwAAAAAAAAAAAAuAB0AAAAAAAAAAAAuAB4AAAAAAAAAAAAvABgAAAAAAAAAAAAvABkAAAAAAAAAAAAvABoAAAAAAAAAAAAvABsAAAAAAAAAAAAvABwAAAAAAAAAAAAvAB0AAAAAAAAAAAAvAB4AAAAAAAAAAAAwABgAAAAAAAAAAAAwABkAAAAAAAAAAAAwABoAAAAAAAAAAAAwABsAAAAAAAAAAAAwABwAAAAAAAAAAAAwAB0AAAAAAAAAAAAwAB4AAAAAAAAAAAAxABgAAAAAAAAAAAAxABkAAAAAAAAAAAAxABoAAAAAAAAAAAAxABsAAAAAAAAAAAAxABwAAAAAAAAAAAAxAB0AAAAAAAAAAAAxAB4AAAAAAAAAAAAyABgAAAAAAAAAAAAyABkAAAAAAAAAAAAyABoAAAAAAAAAAAAyABsAAAAAAAAAAAAyABwAAAAAAAAAAAAyAB0AAAAAAAAAAAAyAB4AAAAAAAAAAAAzABgAAAAAAAAAAAAzABkAAAAAAAAAAAAzABoAAAAAAAAAAAAzABsAAAAAAAAAAAAzABwAAAAAAAAAAAAzAB0AAAAAAAAAAAAzAB4AAAAAAAAAAAA0ABgAAAAAAAAAAAA0ABkAAAAAAAAAAAA0ABoAAAAAAAAAAAA0ABsAAAAAAAAAAAA0ABwAAAAAAAAAAAA0AB0AAAAAAAAAAAA0AB4AAAAAAAAAAAA1ABgAAAAAAAAAAAA1ABkAAAAAAAAAAAA1ABoAAAAAAAAAAAA1ABsAAAAAAAAAAAA1ABwAAAAAAAAAAAA1AB0AAAAAAAAAAAA1AB4AAAAAAAAAAAA2ABgAAAAAAAAAAAA2ABkAAAAAAAAAAAA2ABoAAAAAAAAAAAA2ABsAAAAAAAAAAAA2ABwAAAAAAAAAAAA2AB0AAAAAAAAAAAA2AB4AAAAAAAAAAAA3ABgAAAAAAAAAAAA3ABkAAAAAAAAAAAA3ABoAAAAAAAAAAAA3ABsAAAAAAAAAAAA3ABwAAAAAAAAAAAA3AB0AAAAAAAAAAAA3AB4AAAAAAAAAAAA4ABgAAAAAAAAAAAA4ABkAAAAAAAAAAAA4ABoAAAAAAAAAAAA4ABsAAAAAAAAAAAA4ABwAAAAAAAAAAAA4AB0AAAAAAAAAAAA4AB4AAAAAAAAAAAD2//X/AAAAAAAAAAD2//b/AAAAAAAAAAD2//f/AAAAAAAAAAD2//j/AAAAAAAAAAD2//n/AAAAAAAAAAD2//r/AAAAAAAAAAD2//v/AAAAAAAAAAD2//z/AAAAAAAAAAD2//3/AAAAAAAAAAD2//7/AAAAAAAAAAD2////AAAAAAAAAAD3//X/AAAAAAAAAAD3//b/AAAAAAAAAAD3//f/AAAAAAAAAAD3//j/AAAAAAAAAAD3//n/AAAAAAAAAAD3//r/AAAAAAAAAAD3//v/AAAAAAAAAAD3//z/AAAAAAAAAAD3//3/AAAAAAAAAAD3//7/AAAAAAAAAAD3////AAAAAAAAAAD4//X/AAAAAAAAAAD4//b/AAAAAAAAAAD4//f/AAAAAAAAAAD4//j/AAAAAAAAAAD4//n/AAAAAAAAAAD4//r/AAAAAAAAAAD4//v/AAAAAAAAAAD4//z/AAAAAAAAAAD4//3/AAAAAAAAAAD4//7/AAAAAAAAAAD4////AAAAAAAAAAD5//X/AAAAAAAAAAD5//b/AAAAAAAAAAD5//f/AAAAAAAAAAD5//j/AAAAAAAAAAD5//n/AAAAAAAAAAD5//r/AAAAAAAAAAD5//v/AAAAAAAAAAD5//z/AAAAAAAAAAD5//3/AAAAAAAAAAD5//7/AAAAAAAAAAD5////AAAAAAAAAAD6//X/AAAAAAAAAAD6//b/AAAAAAAAAAD6//f/AAAAAAAAAAD6//j/AAAAAAAAAAD6//n/AAAAAAAAAAD6//r/AAAAAAAAAAD6//v/AAAAAAAAAAD6//z/AAAAAAAAAAD6//3/AAAAAAAAAAD6//7/AAAAAAAAAAD6////AAAAAAAAAAD7//X/AAAAAAAAAAD7//b/AAAAAAAAAAD7//f/AAAAAAAAAAD7//j/AAAAAAAAAAD7//n/AAAAAAAAAAD7//r/AAAAAAAAAAD7//v/AAAAAAAAAAD7//z/AAAAAAAAAAD7//3/AAAAAAAAAAD7//7/AAAAAAAAAAD7////AAAAAAAAAAD8//X/AAAAAAAAAAD8//b/AAAAAAAAAAD8//f/AAAAAAAAAAD8//j/AAAAAAAAAAD8//n/AAAAAAAAAAD8//r/AAAAAAAAAAD8//v/AAAAAAAAAAD8//z/AAAAAAAAAAD8//3/AAAAAAAAAAD8//7/AAAAAAAAAAD8////AAAAAAAAAAD9//X/AAAAAAAAAAD9//b/AAAAAAAAAAD9//f/AAAAAAAAAAD9//j/AAAAAAAAAAD9//n/AAAAAAAAAAD9//r/AAAAAAAAAAD9//v/AAAAAAAAAAD9//z/AAAAAAAAAAD9//3/AAAAAAAAAAD9//7/AAAAAAAAAAD9////AAAAAAAAAAD+//X/AAAAAAAAAAD+//b/AAAAAAAAAAD+//f/AAAAAAAAAAD+//j/AAAAAAAAAAD+//n/AAAAAAAAAAD+//r/AAAAAAAAAAD+//v/AAAAAAAAAAD+//z/AAAAAAAAAAD+//3/AAAAAAAAAAD+//7/AAAAAAAAAAD+////AAAAAAAAAAD///X/AAAAAAAAAAD///b/AAAAAAAAAAD///f/AAAAAAAAAAD///j/AAAAAAAAAAD///n/AAAAAAAAAAD///r/AAAAAAAAAAD///v/AAAAAAAAAAD///z/AAAAAAAAAAD///3/AAAAAAAAAAD///7/AAAAAAAAAAD/////AAAAAAAAAAAAAPX/AAAAAAAAAAAAAPb/AAAAAAAAAAABAPX/AAAAAAAAAAABAPb/AAAAAAAAAAACAPX/AAAAAAAAAAACAPb/AAAAAAAAAAADAPX/AAAAAAAAAAADAPb/AAAAAAAAAAAEAPX/AAAAAAAAAAAEAPb/AAAAAAAAAAAFAPX/AAAAAAAAAAAFAPb/AAAAAAAAAAAGAPX/AAAAAAAAAAAGAPb/AAAAAAAAAAAHAPX/AAAAAAAAAAAHAPb/AAAAAAAAAAAIAPX/AAAAAAAAAAAIAPb/AAAAAAAAAAAJAPX/AAAAAAAAAAAJAPb/AAAAAAAAAAAKAPX/AAAAAAAAAAAKAPb/AAAAAAAAAAALAPX/AAAAAAAAAAALAPb/AAAAAAAAAAAMAPX/AAAAAAAAAAAMAPb/AAAAAAAAAAANAPX/AAAAAAAAAAANAPb/AAAAAAAAAAAOAPX/AAAAAAAAAAAOAPb/AAAAAAAAAAAPAPX/AAAAAAAAAAAPAPb/AAAAAAAAAAAQAPX/AAAAAAAAAAAQAPb/AAAAAAAAAAARAPX/AAAAAAAAAAARAPb/AAAAAAAAAAASAPX/AAAAAAAAAAASAPb/AAAAAAAAAAATAPX/AAAAAAAAAAATAPb/AAAAAAAAAAAUAPX/AAAAAAAAAAAUAPb/AAAAAAAAAAAVAPX/AAAAAAAAAAAVAPb/AAAAAAAAAAAWAPX/AAAAAAAAAAAWAPb/AAAAAAAAAAAXAPX/AAAAAAAAAAAXAPb/AAAAAAAAAAAYAPX/AAAAAAAAAAAYAPb/AAAAAAAAAAAZAPX/AAAAAAAAAAAZAPb/AAAAAAAAAAAaAPX/AAAAAAAAAAAaAPb/AAAAAAAAAAAbAPX/AAAAAAAAAAAbAPb/AAAAAAAAAAAcAPX/AAAAAAAAAAAcAPb/AAAAAAAAAAAdAPX/AAAAAAAAAAAdAPb/AAAAAAAAAAAeAPX/AAAAAAAAAAAeAPb/AAAAAAAAAAAfAPX/AAAAAAAAAAAfAPb/AAAAAAAAAAAgAPX/AAAAAAAAAAAgAPb/AAAAAAAAAAAhAPX/AAAAAAAAAAAhAPb/AAAAAAAAAAAiAPX/AAAAAAAAAAAiAPb/AAAAAAAAAAAjAPX/AAAAAAAAAAAjAPb/AAAAAAAAAAAkAPX/AAAAAAAAAAAkAPb/AAAAAAAAAAAlAPX/AAAAAAAAAAAlAPb/AAAAAAAAAAAmAPX/AAAAAAAAAAAmAPb/AAAAAAAAAAAnAPX/AAAAAAAAAAAnAPb/AAAAAAAAAAAoAPX/AAAAAAAAAAAoAPb/AAAAAAAAAAApAPX/AAAAAAAAAAApAPb/AAAAAAAAAAAqAPX/AAAAAAAAAAAqAPb/AAAAAAAAAAArAPX/AAAAAAAAAAArAPb/AAAAAAAAAAAsAPX/AAAAAAAAAAAsAPb/AAAAAAAAAAAtAPX/AAAAAAAAAAAtAPb/AAAAAAAAAAAuAPX/AAAAAAAAAAAuAPb/AAAAAAAAAAAvAPX/AAAAAAAAAAAvAPb/AAAAAAAAAAAwAPX/AAAAAAAAAAAwAPb/AAAAAAAAAAAxAPX/AAAAAAAAAAAxAPb/AAAAAAAAAAAyAPX/AAAAAAAAAAAyAPb/AAAAAAAAAAAzAPX/AAAAAAAAAAAzAPb/AAAAAAAAAAA0APX/AAAAAAAAAAA0APb/AAAAAAAAAAA1APX/AAAAAAAAAAA1APb/AAAAAAAAAAA2APX/AAAAAAAAAAA2APb/AAAAAAAAAAA3APX/AAAAAAAAAAA3APb/AAAAAAAAAAA4APX/AAAAAAAAAAA4APb/AAAAAAAAAAAfAAIAAAAAAAAAAAAAAPf/AAAAAAAAAAAAAPj/AAAAAAAAAAAAAPn/AAAAAAAAAAAAAPr/AAAAAAAAAAAAAPv/AAAAAAAAAAAAAPz/AAAAAAAAAAAAAP3/AAAAAAAAAAAAAP7/AAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAABAPf/AAAAAAAAAAABAPj/AAAAAAAAAAABAPn/AAAAAAAAAAABAPr/AAAAAAAAAAABAPv/AAAAAAAAAAABAPz/AAAAAAAAAAABAP3/AAAAAAAAAAABAP7/AAAAAAAAAAABAP//AAAAAAAAAAABAAAAAAAAAAAAAAABAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAABAAUAAAAAAAAAAAACAPf/AAAAAAAAAAACAPj/AAAAAAAAAAACAPn/AAAAAAAAAAACAPr/AAAAAAAAAAACAPv/AAAAAAAAAAACAPz/AAAAAAAAAAACAP3/AAAAAAAAAAACAP7/AAAAAAAAAAACAP//AAAAAAAAAAACAAAAAAAAAAAAAAACAAEAAAAAAAAAAAACAAIAAAAAAAAAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAACAAUAAAAAAAAAAAADAPf/AAAAAAAAAAADAPj/AAAAAAAAAAADAPn/AAAAAAAAAAADAPr/AAAAAAAAAAADAPv/AAAAAAAAAAADAPz/AAAAAAAAAAADAP3/AAAAAAAAAAADAP7/AAAAAAAAAAADAP//AAAAAAAAAAADAAAAAAAAAAAAAAADAAEAAAAAAAAAAAADAAIAAAAAAAAAAAADAAMAAAAAAAAAAAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAAEAPf/AAAAAAAAAAAEAPj/AAAAAAAAAAAEAPn/AAAAAAAAAAAEAPr/AAAAAAAAAAAEAPv/AAAAAAAAAAAEAPz/AAAAAAAAAAAEAP3/AAAAAAAAAAAEAP7/AAAAAAAAAAAEAP//AAAAAAAAAAAEAAAAAAAAAAAAAAAEAAEAAAAAAAAAAAAEAAIAAAAAAAAAAAAEAAMAAAAAAAAAAAAEAAQAAAAAAAAAAAAEAAUAAAAAAAAAAAAFAPf/AAAAAAAAAAAFAPj/AAAAAAAAAAAFAPn/AAAAAAAAAAAFAPr/AAAAAAAAAAAFAPv/AAAAAAAAAAAFAPz/AAAAAAAAAAAFAP3/AAAAAAAAAAAFAP7/AAAAAAAAAAAFAP//AAAAAAAAAAAFAAAAAAAAAAAAAAAFAAEAAAAAAAAAAAAFAAIAAAAAAAAAAAAFAAMAAAAAAAAAAAAFAAQAAAAAAAAAAAAFAAUAAAAAAAAAAAAGAPf/AAAAAAAAAAAGAPj/AAAAAAAAAAAGAPn/AAAAAAAAAAAGAPr/AAAAAAAAAAAGAPv/AAAAAAAAAAAGAPz/AAAAAAAAAAAGAP3/AAAAAAAAAAAGAP7/AAAAAAAAAAAGAP//AAAAAAAAAAAGAAAAAAAAAAAAAAAGAAEAAAAAAAAAAAAGAAIAAAAAAAAAAAAGAAMAAAAAAAAAAAAGAAQAAAAAAAAAAAAGAAUAAAAAAAAAAAAHAPf/AAAAAAAAAAAHAPj/AAAAAAAAAAAHAPn/AAAAAAAAAAAHAPr/AAAAAAAAAAAHAPv/AAAAAAAAAAAHAPz/AAAAAAAAAAAHAP3/AAAAAAAAAAAHAP7/AAAAAAAAAAAHAP//AAAAAAAAAAAHAAAAAAAAAAAAAAAHAAEAAAAAAAAAAAAHAAIAAAAAAAAAAAAHAAMAAAAAAAAAAAAHAAQAAAAAAAAAAAAHAAUAAAAAAAAAAAAIAPf/AAAAAAAAAAA=") +tile_set = ExtResource("1_kefym") + +[node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=1677462852] +tile_map_data = PackedByteArray("AAACABAAAgAAAAAAAAADABAAAgAAAAAAAAAEABAAAgAAAAAAAAAFABAAAgAAAAAAAAAGABAAAgAAAAAAAAAHABAAAgAAAAAAAAAIABAAAgAAAAAAAAAJABAAAgAAAAAAAAAKABAAAgAAAAAAAAALABAAAgAAAAAAAAAMABAAAgAAAAAAAAABAA4AAgAAAAAAAAAAAA4AAgAAAAAAAAACAA0AAgAAAAAAAAADAA0AAgAAAAAAAAAEAA0AAgAAAAAAAAAFAA0AAgAAAAAAAAAGAA0AAgAAAAAAAAAHAA0AAgAAAAAAAAAIAA0AAgAAAAAAAAAJAA0AAgAAAAAAAAACABEAAgAAAAAAAAACABIAAgAAAAAAAAACABMAAgAAAAAAAAACABQAAgAAAAAAAAACABUAAgAAAAAAAAACABYAAgAAAAAAAAACABcAAgAAAAAAAAACABgAAgAAAAAAAAADABgAAgAAAAAAAAAGABYAAgAAAAAAAAAGABcAAgAAAAAAAAAGABgAAgAAAAAAAAAFABgAAgAAAAAAAAAEABgAAgAAAAAAAAD6/xMAAgAAAAAAAAD7/xMAAgAAAAAAAAD//xMAAgAAAAAAAAD//w8AAgAAAAAAAAD//xAAAgAAAAAAAAD//xEAAgAAAAAAAAD//xIAAgAAAAAAAAAOAAgAAgAAAAAAAAAOAAkAAgAAAAAAAAAOAAoAAgAAAAAAAAAOAAsAAgAAAAAAAAAOAAwAAgAAAAAAAAD7/xQAAgAAAAAAAAD7/xUAAgAAAAAAAAD+/xUAAgAAAAAAAAD//xUAAgAAAAAAAAD//xQAAgAAAAAAAAD9/xYAAgAAAAAAAAD8/xYAAgAAAAAAAAAfAPz/AgAAAAAAAAAfAP7/AgAAAAAAAAAoAPr/AgAAAAAAAAAoAPv/AgAAAAAAAAAoAPz/AgAAAAAAAAAoAP3/AgAAAAAAAAAoAP7/AgAAAAAAAAAoAP//AgAAAAAAAAAoAAAAAgAAAAAAAAAoAAEAAgAAAAAAAAAoAAIAAgAAAAAAAAApAAIAAgAAAAAAAAAqAAIAAgAAAAAAAAArAAIAAgAAAAAAAAAsAAIAAgAAAAAAAAAtAAIAAgAAAAAAAAAuAAIAAgAAAAAAAAAvAAIAAgAAAAAAAAAwAAIAAgAAAAAAAAAxAAIAAgAAAAAAAAAyAAIAAgAAAAAAAAAzAAIAAgAAAAAAAAAzAAEAAgAAAAAAAAAzAAAAAgAAAAAAAAAzAP//AgAAAAAAAAAzAP7/AgAAAAAAAAAzAP3/AgAAAAAAAAAzAPz/AgAAAAAAAAAzAPv/AgAAAAAAAAAzAPr/AgAAAAAAAAAyAPr/AgAAAAAAAAAxAPr/AgAAAAAAAAAwAPr/AgAAAAAAAAAvAPr/AgAAAAAAAAAuAPr/AgAAAAAAAAAtAPr/AgAAAAAAAAAsAPr/AgAAAAAAAAArAPr/AgAAAAAAAAAqAPr/AgAAAAAAAAApAPr/AgAAAAAAAAAJAAwAAgAAAAAAAAAJAAsAAgAAAAAAAAAJAAoAAgAAAAAAAAAJAAkAAgAAAAAAAAAIAAgAAgAAAAAAAAAHAAgAAgAAAAAAAAAGAAgAAgAAAAAAAAAFAAgAAgAAAAAAAAAEAAgAAgAAAAAAAAADAAgAAgAAAAAAAAACAAgAAgAAAAAAAAABAAgAAgAAAAAAAAAAAAgAAgAAAAAAAAD//wgAAgAAAAAAAAD+/wcAAgAAAAAAAAD9/wcAAgAAAAAAAAD8/wcAAgAAAAAAAAD7/wcAAgAAAAAAAAD6/wgAAgAAAAAAAAD6/wkAAgAAAAAAAAD6/woAAgAAAAAAAAD6/wsAAgAAAAAAAAD6/wwAAgAAAAAAAAD6/w0AAgAAAAAAAAD6/w4AAgAAAAAAAAD6/w8AAgAAAAAAAAD6/xAAAgAAAAAAAAD6/xEAAgAAAAAAAAD6/xIAAgAAAAAAAAD7/xYAAgAAAAAAAAANABAAAgAAAAAAAAAOABAAAgAAAAAAAAAOAA0AAgAAAAAAAAAOAA4AAgAAAAAAAAAOAA8AAgAAAAAAAAAOAAcAAgAAAAAAAAANAAYAAgAAAAAAAAAJAAUAAgAAAAAAAAAKAAUAAgAAAAAAAAALAAUAAgAAAAAAAAAMAAUAAgAAAAAAAAAIAPj/AgAAAAAAAAAIAPn/AgAAAAAAAAAIAPr/AgAAAAAAAAAIAPv/AgAAAAAAAAAIAPz/AgAAAAAAAAAIAP3/AgAAAAAAAAAIAP7/AgAAAAAAAAAIAP//AgAAAAAAAAAIAAAAAgAAAAAAAAAIAAEAAgAAAAAAAAAIAAIAAgAAAAAAAAAIAAMAAgAAAAAAAAAIAAQAAgAAAAAAAAAIAAUAAgAAAAAAAAAJAPf/AgAAAAAAAAAKAPf/AgAAAAAAAAALAPf/AgAAAAAAAAAMAPf/AgAAAAAAAAANAPf/AgAAAAAAAAAOAPf/AgAAAAAAAAAPAPf/AgAAAAAAAAAQAPf/AgAAAAAAAAARAPf/AgAAAAAAAAASAPf/AgAAAAAAAAATAPf/AgAAAAAAAAAUAPf/AgAAAAAAAAAVAPf/AgAAAAAAAAAWAPf/AgAAAAAAAAAXAPf/AgAAAAAAAAAYAPf/AgAAAAAAAAAZAPf/AgAAAAAAAAAaAPf/AgAAAAAAAAAbAPf/AgAAAAAAAAAcAPf/AgAAAAAAAAAdAPf/AgAAAAAAAAAeAPf/AgAAAAAAAAAfAPf/AgAAAAAAAAAfAPj/AgAAAAAAAAAfAPn/AgAAAAAAAAAfAPr/AgAAAAAAAAAfAPv/AgAAAAAAAAAfAAAAAgAAAAAAAAAfAP//AgAAAAAAAAAfAAEAAgAAAAAAAAAeAAIAAgAAAAAAAAAfAAMAAgAAAAAAAAAgAAMAAgAAAAAAAAAhAAMAAgAAAAAAAAAiAAMAAgAAAAAAAAAiAAQAAgAAAAAAAAAiAAUAAgAAAAAAAAAiAAYAAgAAAAAAAAAiAAcAAgAAAAAAAAAiAAgAAgAAAAAAAAAiAAkAAgAAAAAAAAAiAAoAAgAAAAAAAAAiAAsAAgAAAAAAAAAiAAwAAgAAAAAAAAAiAA0AAgAAAAAAAAAiAA4AAgAAAAAAAAAiAA8AAgAAAAAAAAAiABAAAgAAAAAAAAAiABEAAgAAAAAAAAAiABIAAgAAAAAAAAAiABMAAgAAAAAAAAAhABMAAgAAAAAAAAAgABMAAgAAAAAAAAAfABMAAgAAAAAAAAAeABMAAgAAAAAAAAAdABMAAgAAAAAAAAAcABMAAgAAAAAAAAAbABMAAgAAAAAAAAAaABMAAgAAAAAAAAAZABMAAgAAAAAAAAAYABMAAgAAAAAAAAAXABMAAgAAAAAAAAAWABMAAgAAAAAAAAAVABMAAgAAAAAAAAAUABMAAgAAAAAAAAATABMAAgAAAAAAAAASABMAAgAAAAAAAAARABMAAgAAAAAAAAAQABMAAgAAAAAAAAAPABMAAgAAAAAAAAAOABMAAgAAAAAAAAANABMAAgAAAAAAAAAMABMAAgAAAAAAAAALABMAAgAAAAAAAAAKABMAAgAAAAAAAAAJABMAAgAAAAAAAAAIABMAAgAAAAAAAAAHABMAAgAAAAAAAAAGABMAAgAAAAAAAAAGABUAAgAAAAAAAAAGABQAAgAAAAAAAAA=") +tile_set = ExtResource("2_tl32x") + +[node name="Cliffs" type="TileMapLayer" parent="TileMapLayers" unique_id=184939572] +tile_set = ExtResource("3_egghn") + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=586941855] +tile_map_data = PackedByteArray("AAAfABMAAQABAAIAAAAfABIAAQABAAEAAAAfABEAAQABAAEAAAAfABAAAQABAAEAAAAfAA8AAQABAAEAAAAfAA4AAQABAAEAAAAfAA0AAQABAAEAAAAfAAwAAQABAAEAAAAfAAsAAQABAAEAAAAfAAoAAQABAAEAAAAfAAkAAQABAAEAAAAfAAgAAQABAAEAAAAfAAcAAQABAAEAAAAfAAYAAQABAAEAAAAfAAUAAQABAAEAAAAfAAQAAQABAAEAAAAfAAMAAQABAAAAAAAfAAEAAQACAAIAAAAfAAAAAQACAAEAAAAfAP//AQACAAEAAAAfAP7/AQACAAEAAAAfAP3/AQACAAEAAAAfAPz/AQACAAEAAAAfAPv/AQACAAEAAAAfAPr/AQACAAEAAAAfAPn/AQACAAEAAAAfAPj/AQACAAEAAAAfAPf/AQACAAAAAAAeABMAAQABAAIAAAAeABIAAQABAAEAAAAeABEAAQABAAEAAAAeABAAAQABAAEAAAAeAA8AAQABAAEAAAAeAA4AAQABAAEAAAAeAA0AAQABAAEAAAAeAAwAAQABAAEAAAAeAAsAAQABAAEAAAAeAAoAAQABAAEAAAAeAAkAAQABAAEAAAAeAAgAAQABAAEAAAAeAAcAAQABAAEAAAAeAAYAAQABAAEAAAAeAAUAAQABAAEAAAAeAAQAAQABAAEAAAAeAAMAAQABAAEAAAAeAAIAAQACAAEAAAAeAAEAAQABAAEAAAAeAAAAAQABAAEAAAAeAP//AQABAAEAAAAeAP7/AQABAAEAAAAeAP3/AQABAAEAAAAeAPz/AQABAAEAAAAeAPv/AQABAAEAAAAeAPr/AQABAAEAAAAeAPn/AQABAAEAAAAeAPj/AQABAAEAAAAeAPf/AQABAAAAAAAdABMAAQABAAIAAAAdABIAAQABAAEAAAAdABEAAQABAAEAAAAdABAAAQABAAEAAAAdAA8AAQABAAEAAAAdAA4AAQABAAEAAAAdAA0AAQABAAEAAAAdAAwAAQABAAEAAAAdAAsAAQABAAEAAAAdAAoAAQABAAEAAAAdAAkAAQABAAEAAAAdAAgAAQABAAEAAAAdAAcAAQABAAEAAAAdAAYAAQABAAEAAAAdAAUAAQABAAEAAAAdAAQAAQABAAEAAAAdAAMAAQABAAEAAAAdAAIAAQABAAEAAAAdAAEAAQABAAEAAAAdAAAAAQABAAEAAAAdAP//AQABAAEAAAAdAP7/AQABAAEAAAAdAP3/AQABAAEAAAAdAPz/AQABAAEAAAAdAPv/AQABAAEAAAAdAPr/AQABAAEAAAAdAPn/AQABAAEAAAAdAPj/AQABAAEAAAAdAPf/AQABAAAAAAAcABMAAQABAAIAAAAcABIAAQABAAEAAAAcABEAAQABAAEAAAAcABAAAQABAAEAAAAcAA8AAQABAAEAAAAcAA4AAQABAAEAAAAcAA0AAQABAAEAAAAcAAwAAQABAAEAAAAcAAsAAQABAAEAAAAcAAoAAQABAAEAAAAcAAkAAQABAAEAAAAcAAgAAQABAAEAAAAcAAcAAQABAAEAAAAcAAYAAQABAAEAAAAcAAUAAQABAAEAAAAcAAQAAQABAAEAAAAcAAMAAQABAAEAAAAcAAIAAQABAAEAAAAcAAEAAQABAAEAAAAcAAAAAQABAAEAAAAcAP//AQABAAEAAAAcAP7/AQABAAEAAAAcAP3/AQABAAEAAAAcAPz/AQABAAEAAAAcAPv/AQABAAEAAAAcAPr/AQABAAEAAAAcAPn/AQABAAEAAAAcAPj/AQABAAEAAAAcAPf/AQABAAAAAAAbABMAAQABAAIAAAAbABIAAQABAAEAAAAbABEAAQABAAEAAAAbABAAAQABAAEAAAAbAA8AAQABAAEAAAAbAA4AAQABAAEAAAAbAA0AAQABAAEAAAAbAAwAAQABAAEAAAAbAAsAAQABAAEAAAAbAAoAAQABAAEAAAAbAAkAAQABAAEAAAAbAAgAAQABAAEAAAAbAAcAAQABAAEAAAAbAAYAAQABAAEAAAAbAAUAAQABAAEAAAAbAAQAAQABAAEAAAAbAAMAAQABAAEAAAAbAAIAAQABAAEAAAAbAAEAAQABAAEAAAAbAAAAAQABAAEAAAAbAP//AQABAAEAAAAbAP7/AQABAAEAAAAbAP3/AQABAAEAAAAbAPz/AQABAAEAAAAbAPv/AQABAAEAAAAbAPr/AQABAAEAAAAbAPn/AQABAAEAAAAbAPj/AQABAAEAAAAbAPf/AQABAAAAAAAaABMAAQABAAIAAAAaABIAAQABAAEAAAAaABEAAQABAAEAAAAaABAAAQABAAEAAAAaAA8AAQABAAEAAAAaAA4AAQABAAEAAAAaAA0AAQABAAEAAAAaAAwAAQABAAEAAAAaAAsAAQABAAEAAAAaAAoAAQABAAEAAAAaAAkAAQABAAEAAAAaAAgAAQABAAEAAAAaAAcAAQABAAEAAAAaAAYAAQABAAEAAAAaAAUAAQABAAEAAAAaAAQAAQABAAEAAAAaAAMAAQABAAEAAAAaAAIAAQABAAEAAAAaAAEAAQABAAEAAAAaAAAAAQABAAEAAAAaAP//AQABAAEAAAAaAP7/AQABAAEAAAAaAP3/AQABAAEAAAAaAPz/AQABAAEAAAAaAPv/AQABAAEAAAAaAPr/AQABAAEAAAAaAPn/AQABAAEAAAAaAPj/AQABAAEAAAAaAPf/AQABAAAAAAAZABMAAQABAAIAAAAZABIAAQABAAEAAAAZABEAAQABAAEAAAAZABAAAQABAAEAAAAZAA8AAQABAAEAAAAZAA4AAQABAAEAAAAZAA0AAQABAAEAAAAZAAwAAQABAAEAAAAZAAsAAQABAAEAAAAZAAoAAQABAAEAAAAZAAkAAQABAAEAAAAZAAgAAQABAAEAAAAZAAcAAQABAAEAAAAZAAYAAQABAAEAAAAZAAUAAQABAAEAAAAZAAQAAQABAAEAAAAZAAMAAQABAAEAAAAZAAIAAQABAAEAAAAZAAEAAQABAAEAAAAZAAAAAQABAAEAAAAZAP//AQABAAEAAAAZAP7/AQABAAEAAAAZAP3/AQABAAEAAAAZAPz/AQABAAEAAAAZAPv/AQABAAEAAAAZAPr/AQABAAEAAAAZAPn/AQABAAEAAAAZAPj/AQABAAEAAAAZAPf/AQABAAAAAAAYABMAAQABAAIAAAAYABIAAQABAAEAAAAYABEAAQABAAEAAAAYABAAAQABAAEAAAAYAA8AAQABAAEAAAAYAA4AAQABAAEAAAAYAA0AAQABAAEAAAAYAAwAAQABAAEAAAAYAAsAAQABAAEAAAAYAAoAAQABAAEAAAAYAAkAAQABAAEAAAAYAAgAAQABAAEAAAAYAAcAAQABAAEAAAAYAAYAAQABAAEAAAAYAAUAAQABAAEAAAAYAAQAAQABAAEAAAAYAAMAAQABAAEAAAAYAAIAAQABAAEAAAAYAAEAAQABAAEAAAAYAAAAAQABAAEAAAAYAP//AQABAAEAAAAYAP7/AQABAAEAAAAYAP3/AQABAAEAAAAYAPz/AQABAAEAAAAYAPv/AQABAAEAAAAYAPr/AQABAAEAAAAYAPn/AQABAAEAAAAYAPj/AQABAAEAAAAYAPf/AQABAAAAAAAXABMAAQABAAIAAAAXABIAAQABAAEAAAAXABEAAQABAAEAAAAXABAAAQABAAEAAAAXAA8AAQABAAEAAAAXAA4AAQABAAEAAAAXAA0AAQABAAEAAAAXAAwAAQABAAEAAAAXAAsAAQABAAEAAAAXAAoAAQABAAEAAAAXAAkAAQABAAEAAAAXAAgAAQABAAEAAAAXAAcAAQABAAEAAAAXAAYAAQABAAEAAAAXAAUAAQABAAEAAAAXAAQAAQABAAEAAAAXAAMAAQABAAEAAAAXAAIAAQABAAEAAAAXAAEAAQABAAEAAAAXAAAAAQABAAEAAAAXAP//AQABAAEAAAAXAP7/AQABAAEAAAAXAP3/AQABAAEAAAAXAPz/AQABAAEAAAAXAPv/AQABAAEAAAAXAPr/AQABAAEAAAAXAPn/AQABAAEAAAAXAPj/AQABAAEAAAAXAPf/AQABAAAAAAAWABMAAQABAAIAAAAWABIAAQABAAEAAAAWABEAAQABAAEAAAAWABAAAQABAAEAAAAWAA8AAQABAAEAAAAWAA4AAQABAAEAAAAWAA0AAQABAAEAAAAWAAwAAQABAAEAAAAWAAsAAQABAAEAAAAWAAoAAQABAAEAAAAWAAkAAQABAAEAAAAWAAgAAQABAAEAAAAWAAcAAQABAAEAAAAWAAYAAQABAAEAAAAWAAUAAQABAAEAAAAWAAQAAQABAAEAAAAWAAMAAQABAAEAAAAWAAIAAQABAAEAAAAWAAEAAQABAAEAAAAWAAAAAQABAAEAAAAWAP//AQABAAEAAAAWAP7/AQABAAEAAAAWAP3/AQABAAEAAAAWAPz/AQABAAEAAAAWAPv/AQABAAEAAAAWAPr/AQABAAEAAAAWAPn/AQABAAEAAAAWAPj/AQABAAEAAAAWAPf/AQABAAAAAAAVABMAAQABAAIAAAAVABIAAQABAAEAAAAVABEAAQABAAEAAAAVABAAAQABAAEAAAAVAA8AAQABAAEAAAAVAA4AAQABAAEAAAAVAA0AAQABAAEAAAAVAAwAAQABAAEAAAAVAAsAAQABAAEAAAAVAAoAAQABAAEAAAAVAAkAAQABAAEAAAAVAAgAAQABAAEAAAAVAAcAAQABAAEAAAAVAAYAAQABAAEAAAAVAAUAAQABAAEAAAAVAAQAAQABAAEAAAAVAAMAAQABAAEAAAAVAAIAAQABAAEAAAAVAAEAAQABAAEAAAAVAAAAAQABAAEAAAAVAP//AQABAAEAAAAVAP7/AQABAAEAAAAVAP3/AQABAAEAAAAVAPz/AQABAAEAAAAVAPv/AQABAAEAAAAVAPr/AQABAAEAAAAVAPn/AQABAAEAAAAVAPj/AQABAAEAAAAVAPf/AQABAAAAAAAUABMAAQABAAIAAAAUABIAAQABAAEAAAAUABEAAQABAAEAAAAUABAAAQABAAEAAAAUAA8AAQABAAEAAAAUAA4AAQABAAEAAAAUAA0AAQABAAEAAAAUAAwAAQABAAEAAAAUAAsAAQABAAEAAAAUAAoAAQABAAEAAAAUAAkAAQABAAEAAAAUAAgAAQABAAEAAAAUAAcAAQABAAEAAAAUAAYAAQABAAEAAAAUAAUAAQABAAEAAAAUAAQAAQABAAEAAAAUAAMAAQABAAEAAAAUAAIAAQABAAEAAAAUAAEAAQABAAEAAAAUAAAAAQABAAEAAAAUAP//AQABAAEAAAAUAP7/AQABAAEAAAAUAP3/AQABAAEAAAAUAPz/AQABAAEAAAAUAPv/AQABAAEAAAAUAPr/AQABAAEAAAAUAPn/AQABAAEAAAAUAPj/AQABAAEAAAAUAPf/AQABAAAAAAATABMAAQABAAIAAAATABIAAQABAAEAAAATABEAAQABAAEAAAATABAAAQABAAEAAAATAA8AAQABAAEAAAATAA4AAQABAAEAAAATAA0AAQABAAEAAAATAAwAAQABAAEAAAATAAsAAQABAAEAAAATAAoAAQABAAEAAAATAAkAAQABAAEAAAATAAgAAQABAAEAAAATAAcAAQABAAEAAAATAAYAAQABAAEAAAATAAUAAQABAAEAAAATAAQAAQABAAEAAAATAAMAAQABAAEAAAATAAIAAQABAAEAAAATAAEAAQABAAEAAAATAAAAAQABAAEAAAATAP//AQABAAEAAAATAP7/AQABAAEAAAATAP3/AQABAAEAAAATAPz/AQABAAEAAAATAPv/AQABAAEAAAATAPr/AQABAAEAAAATAPn/AQABAAEAAAATAPj/AQABAAEAAAATAPf/AQABAAAAAAASABMAAQABAAIAAAASABIAAQABAAEAAAASABEAAQABAAEAAAASABAAAQABAAEAAAASAA8AAQABAAEAAAASAA4AAQABAAEAAAASAA0AAQABAAEAAAASAAwAAQABAAEAAAASAAsAAQABAAEAAAASAAoAAQABAAEAAAASAAkAAQABAAEAAAASAAgAAQABAAEAAAASAAcAAQABAAEAAAASAAYAAQABAAEAAAASAAUAAQABAAEAAAASAAQAAQABAAEAAAASAAMAAQABAAEAAAASAAIAAQABAAEAAAASAAEAAQABAAEAAAASAAAAAQABAAEAAAASAP//AQABAAEAAAASAP7/AQABAAEAAAASAP3/AQABAAEAAAASAPz/AQABAAEAAAASAPv/AQABAAEAAAASAPr/AQABAAEAAAASAPn/AQABAAEAAAASAPj/AQABAAEAAAASAPf/AQABAAAAAAARABMAAQABAAIAAAARABIAAQABAAEAAAARABEAAQABAAEAAAARABAAAQABAAEAAAARAA8AAQABAAEAAAARAA4AAQABAAEAAAARAA0AAQABAAEAAAARAAwAAQABAAEAAAARAAsAAQABAAEAAAARAAoAAQABAAEAAAARAAkAAQABAAEAAAARAAgAAQABAAEAAAARAAcAAQABAAEAAAARAAYAAQABAAEAAAARAAUAAQABAAEAAAARAAQAAQABAAEAAAARAAMAAQABAAEAAAARAAIAAQABAAEAAAARAAEAAQABAAEAAAARAAAAAQABAAEAAAARAP//AQABAAEAAAARAP7/AQABAAEAAAARAP3/AQABAAEAAAARAPz/AQABAAEAAAARAPv/AQABAAEAAAARAPr/AQABAAEAAAARAPn/AQABAAEAAAARAPj/AQABAAEAAAARAPf/AQABAAAAAAAQABMAAQABAAIAAAAQABIAAQABAAEAAAAQABEAAQABAAEAAAAQABAAAQABAAEAAAAQAA8AAQABAAEAAAAQAA4AAQABAAEAAAAQAA0AAQABAAEAAAAQAAwAAQABAAEAAAAQAAsAAQABAAEAAAAQAAoAAQABAAEAAAAQAAkAAQABAAEAAAAQAAgAAQABAAEAAAAQAAcAAQABAAEAAAAQAAYAAQABAAEAAAAQAAUAAQABAAEAAAAQAAQAAQABAAEAAAAQAAMAAQABAAEAAAAQAAIAAQABAAEAAAAQAAEAAQABAAEAAAAQAAAAAQABAAEAAAAQAP//AQABAAEAAAAQAP7/AQABAAEAAAAQAP3/AQABAAEAAAAQAPz/AQABAAEAAAAQAPv/AQABAAEAAAAQAPr/AQABAAEAAAAQAPn/AQABAAEAAAAQAPj/AQABAAEAAAAQAPf/AQABAAAAAAAPABMAAQABAAIAAAAPABIAAQABAAEAAAAPABEAAQABAAEAAAAPABAAAQABAAEAAAAPAA8AAQABAAEAAAAPAA4AAQABAAEAAAAPAA0AAQABAAEAAAAPAAwAAQABAAEAAAAPAAsAAQABAAEAAAAPAAoAAQABAAEAAAAPAAkAAQABAAEAAAAPAAgAAQABAAEAAAAPAAcAAQABAAEAAAAPAAYAAQABAAEAAAAPAAUAAQABAAEAAAAPAAQAAQABAAEAAAAPAAMAAQABAAEAAAAPAAIAAQABAAEAAAAPAAEAAQABAAEAAAAPAAAAAQABAAEAAAAPAP//AQABAAEAAAAPAP7/AQABAAEAAAAPAP3/AQABAAEAAAAPAPz/AQABAAEAAAAPAPv/AQABAAEAAAAPAPr/AQABAAEAAAAPAPn/AQABAAEAAAAPAPj/AQABAAEAAAAPAPf/AQABAAAAAAAOABMAAQABAAIAAAAOABIAAQABAAEAAAAOABEAAQABAAEAAAAOABAAAQABAAEAAAAOAA8AAQAAAAEAAAAOAA4AAQAAAAEAAAAOAA0AAQAAAAEAAAAOAAwAAQAAAAEAAAAOAAsAAQAAAAEAAAAOAAoAAQAAAAEAAAAOAAkAAQAAAAEAAAAOAAgAAQAAAAEAAAAOAAcAAQAAAAEAAAAOAAYAAQABAAEAAAAOAAUAAQABAAEAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQABAAEAAAAOAAEAAQABAAEAAAAOAAAAAQABAAEAAAAOAP//AQABAAEAAAAOAP7/AQABAAEAAAAOAP3/AQABAAEAAAAOAPz/AQABAAEAAAAOAPv/AQABAAEAAAAOAPr/AQABAAEAAAAOAPn/AQABAAEAAAAOAPj/AQABAAEAAAAOAPf/AQABAAAAAAANABMAAQABAAIAAAANABIAAQABAAEAAAANABEAAQABAAEAAAANABAAAQABAAAAAAANAAYAAQAAAAIAAAANAAUAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAEAAAANAAEAAQABAAEAAAANAAAAAQABAAEAAAANAP//AQABAAEAAAANAP7/AQABAAEAAAANAP3/AQABAAEAAAANAPz/AQABAAEAAAANAPv/AQABAAEAAAANAPr/AQABAAEAAAANAPn/AQABAAEAAAANAPj/AQABAAEAAAANAPf/AQABAAAAAAAMABMAAQABAAIAAAAMABIAAQABAAEAAAAMABEAAQABAAEAAAAMABAAAQABAAAAAAAMAAUAAQABAAIAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAEAAAAMAAEAAQABAAEAAAAMAAAAAQABAAEAAAAMAP//AQABAAEAAAAMAP7/AQABAAEAAAAMAP3/AQABAAEAAAAMAPz/AQABAAEAAAAMAPv/AQABAAEAAAAMAPr/AQABAAEAAAAMAPn/AQABAAEAAAAMAPj/AQABAAEAAAAMAPf/AQABAAAAAAALABMAAQABAAIAAAALABIAAQABAAEAAAALABEAAQABAAEAAAALABAAAQABAAAAAAALAAUAAQABAAIAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAEAAAALAAEAAQABAAEAAAALAAAAAQABAAEAAAALAP//AQABAAEAAAALAP7/AQABAAEAAAALAP3/AQABAAEAAAALAPz/AQABAAEAAAALAPv/AQABAAEAAAALAPr/AQABAAEAAAALAPn/AQABAAEAAAALAPj/AQABAAEAAAALAPf/AQABAAAAAAAKABMAAQABAAIAAAAKABIAAQABAAEAAAAKABEAAQABAAEAAAAKABAAAQABAAAAAAAKAAUAAQABAAIAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAEAAAAKAAEAAQABAAEAAAAKAAAAAQABAAEAAAAKAP//AQABAAEAAAAKAP7/AQABAAEAAAAKAP3/AQABAAEAAAAKAPz/AQABAAEAAAAKAPv/AQABAAEAAAAKAPr/AQABAAEAAAAKAPn/AQABAAEAAAAKAPj/AQABAAEAAAAKAPf/AQABAAAAAAAJABMAAQABAAIAAAAJABIAAQABAAEAAAAJABEAAQABAAEAAAAJABAAAQABAAAAAAAJAA0AAQACAAIAAAAJAAwAAQACAAEAAAAJAAsAAQACAAEAAAAJAAoAAQACAAEAAAAJAAkAAQACAAAAAAAJAAUAAQABAAIAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAJAAEAAQABAAEAAAAJAAAAAQABAAEAAAAJAP//AQABAAEAAAAJAP7/AQABAAEAAAAJAP3/AQABAAEAAAAJAPz/AQABAAEAAAAJAPv/AQABAAEAAAAJAPr/AQABAAEAAAAJAPn/AQABAAEAAAAJAPj/AQABAAEAAAAJAPf/AQAAAAAAAAAIABMAAQABAAIAAAAIABIAAQABAAEAAAAIABEAAQABAAEAAAAIABAAAQABAAAAAAAIAA0AAQABAAIAAAAIAAwAAQABAAEAAAAIAAsAAQABAAEAAAAIAAoAAQABAAEAAAAIAAkAAQABAAEAAAAIAAgAAQACAAAAAAAIAAUAAQAAAAIAAAAIAAQAAQAAAAEAAAAIAAMAAQAAAAEAAAAIAAIAAQAAAAEAAAAIAAEAAQAAAAEAAAAIAAAAAQAAAAEAAAAIAP//AQAAAAEAAAAIAP7/AQAAAAEAAAAIAP3/AQAAAAEAAAAIAPz/AQAAAAEAAAAIAPv/AQAAAAEAAAAIAPr/AQAAAAEAAAAIAPn/AQAAAAEAAAAIAPj/AQAAAAAAAAAHABMAAQABAAIAAAAHABIAAQABAAEAAAAHABEAAQABAAEAAAAHABAAAQABAAAAAAAHAA0AAQABAAIAAAAHAAwAAQABAAEAAAAHAAsAAQABAAEAAAAHAAoAAQABAAEAAAAHAAkAAQABAAEAAAAHAAgAAQABAAAAAAAGABMAAQABAAEAAAAGABIAAQABAAEAAAAGABEAAQABAAEAAAAGABAAAQABAAAAAAAGAA0AAQABAAIAAAAGAAwAAQABAAEAAAAGAAsAAQABAAEAAAAGAAoAAQABAAEAAAAGAAkAAQABAAEAAAAGAAgAAQABAAAAAAAFABMAAQABAAEAAAAFABIAAQABAAEAAAAFABEAAQABAAEAAAAFABAAAQABAAAAAAAFAA0AAQABAAIAAAAFAAwAAQABAAEAAAAFAAsAAQABAAEAAAAFAAoAAQABAAEAAAAFAAkAAQABAAEAAAAFAAgAAQABAAAAAAAEABMAAQABAAEAAAAEABIAAQABAAEAAAAEABEAAQABAAEAAAAEABAAAQABAAAAAAAEAA0AAQABAAIAAAAEAAwAAQABAAEAAAAEAAsAAQABAAEAAAAEAAoAAQABAAEAAAAEAAkAAQABAAEAAAAEAAgAAQABAAAAAAADABMAAQABAAEAAAADABIAAQABAAEAAAADABEAAQABAAEAAAADABAAAQABAAAAAAADAA0AAQABAAIAAAADAAwAAQABAAEAAAADAAsAAQABAAEAAAADAAoAAQABAAEAAAADAAkAAQABAAEAAAADAAgAAQABAAAAAAACABMAAQAAAAEAAAACABIAAQAAAAEAAAACABEAAQAAAAEAAAACABAAAQAAAAAAAAACAA0AAQABAAIAAAACAAwAAQABAAEAAAACAAsAAQABAAEAAAACAAoAAQABAAEAAAACAAkAAQABAAEAAAACAAgAAQABAAAAAAABAA4AAQACAAIAAAABAA0AAQABAAEAAAABAAwAAQABAAEAAAABAAsAAQABAAEAAAABAAoAAQABAAEAAAABAAkAAQABAAEAAAABAAgAAQABAAAAAAAAAA4AAQABAAIAAAAAAA0AAQABAAEAAAAAAAwAAQABAAEAAAAAAAsAAQABAAEAAAAAAAoAAQABAAEAAAAAAAkAAQABAAEAAAAAAAgAAQABAAAAAAAGABgAAQACAAIAAAAGABcAAQACAAEAAAAGABYAAQACAAEAAAAGABUAAQACAAEAAAAGABQAAQACAAEAAAAFABgAAQABAAIAAAAFABcAAQABAAEAAAAFABYAAQABAAEAAAAFABUAAQABAAEAAAAFABQAAQABAAEAAAAEABgAAQABAAIAAAAEABcAAQABAAEAAAAEABYAAQABAAEAAAAEABUAAQABAAEAAAAEABQAAQABAAEAAAADABgAAQABAAIAAAADABcAAQABAAEAAAADABYAAQABAAEAAAADABUAAQABAAEAAAADABQAAQABAAEAAAACABgAAQAAAAIAAAACABcAAQAAAAEAAAACABYAAQAAAAEAAAACABUAAQAAAAEAAAACABQAAQAAAAEAAAD//xMAAQACAAEAAAD//xIAAQACAAEAAAD//xEAAQACAAEAAAD//xAAAQACAAEAAAD//w8AAQACAAEAAAD//w4AAQABAAEAAAD//w0AAQABAAEAAAD//wwAAQABAAEAAAD//wsAAQABAAEAAAD+/xMAAQABAAEAAAD+/xIAAQABAAEAAAD+/xEAAQABAAEAAAD+/xAAAQABAAEAAAD+/w8AAQABAAEAAAD+/w4AAQABAAEAAAD+/w0AAQABAAEAAAD+/wwAAQABAAEAAAD+/wsAAQABAAEAAAD9/xMAAQABAAEAAAD9/xIAAQABAAEAAAD9/xEAAQABAAEAAAD9/xAAAQABAAEAAAD9/w8AAQABAAEAAAD9/w4AAQABAAEAAAD9/w0AAQABAAEAAAD9/wwAAQABAAEAAAD9/wsAAQABAAEAAAD8/xMAAQABAAEAAAD8/xIAAQABAAEAAAD8/xEAAQABAAEAAAD8/xAAAQABAAEAAAD8/w8AAQABAAEAAAD8/w4AAQABAAEAAAD8/w0AAQABAAEAAAD8/wwAAQABAAEAAAD8/wsAAQABAAEAAAAzAAAAAQACAAEAAAAzAP//AQACAAEAAAAzAP7/AQACAAEAAAAzAP3/AQACAAEAAAAzAPz/AQACAAEAAAAzAPv/AQACAAAAAAAyAAAAAQABAAEAAAAyAP//AQABAAEAAAAyAP7/AQABAAEAAAAyAP3/AQABAAEAAAAyAPz/AQABAAEAAAAyAPv/AQABAAEAAAAxAAAAAQABAAEAAAAxAP//AQABAAEAAAAxAP7/AQABAAEAAAAxAP3/AQABAAEAAAAxAPz/AQABAAEAAAAxAPv/AQABAAEAAAAwAAAAAQABAAEAAAAwAP//AQABAAEAAAAwAP7/AQABAAEAAAAwAP3/AQABAAEAAAAwAPz/AQABAAEAAAAwAPv/AQABAAEAAAAvAAAAAQABAAEAAAAvAP//AQABAAEAAAAvAP7/AQABAAEAAAAvAP3/AQABAAEAAAAvAPz/AQABAAEAAAAvAPv/AQABAAEAAAAuAAAAAQABAAEAAAAuAP//AQABAAEAAAAuAP7/AQABAAEAAAAuAP3/AQABAAEAAAAuAPz/AQABAAEAAAAuAPv/AQABAAEAAAAtAAAAAQABAAEAAAAtAP//AQABAAEAAAAtAP7/AQABAAEAAAAtAP3/AQABAAEAAAAtAPz/AQABAAEAAAAtAPv/AQABAAEAAAAsAAAAAQABAAEAAAAsAP//AQABAAEAAAAsAP7/AQABAAEAAAAsAP3/AQABAAEAAAAsAPz/AQABAAEAAAAsAPv/AQABAAEAAAArAAAAAQABAAEAAAArAP//AQABAAEAAAArAP7/AQABAAEAAAArAP3/AQABAAEAAAArAPz/AQABAAEAAAArAPv/AQABAAEAAAAqAAAAAQABAAEAAAAqAP//AQABAAEAAAAqAP7/AQABAAEAAAAqAP3/AQABAAEAAAAqAPz/AQABAAEAAAAqAPv/AQABAAEAAAApAAAAAQABAAEAAAApAP//AQABAAEAAAApAP7/AQABAAEAAAApAP3/AQABAAEAAAApAPz/AQABAAEAAAApAPv/AQABAAEAAAAoAAAAAQAAAAEAAAAoAP//AQAAAAEAAAAoAP7/AQAAAAEAAAAoAP3/AQAAAAEAAAAoAPz/AQAAAAEAAAAoAPv/AQAAAAAAAAAyAPr/AQACAAAAAAAxAPr/AQABAAAAAAAwAPr/AQABAAAAAAAvAPr/AQABAAAAAAAuAPr/AQABAAAAAAAtAPr/AQABAAAAAAAsAPr/AQABAAAAAAArAPr/AQABAAAAAAAqAPr/AQABAAAAAAApAPr/AQAAAAAAAAD//woAAQABAAEAAAD//wkAAQABAAEAAAD//wgAAQABAAAAAAD+/woAAQABAAEAAAD+/wkAAQABAAEAAAD+/wgAAQABAAEAAAD+/wcAAQACAAAAAAD9/woAAQABAAEAAAD9/wkAAQABAAEAAAD9/wgAAQABAAEAAAD9/wcAAQABAAAAAAD8/woAAQABAAEAAAD8/wkAAQABAAEAAAD8/wgAAQABAAEAAAD8/wcAAQABAAAAAAD7/xMAAQABAAEAAAD7/xIAAQABAAEAAAD7/xEAAQABAAEAAAD7/xAAAQABAAEAAAD7/w8AAQABAAEAAAD7/w4AAQABAAEAAAD7/w0AAQABAAEAAAD7/wwAAQABAAEAAAD7/wsAAQABAAEAAAD7/woAAQABAAEAAAD7/wkAAQABAAEAAAD7/wgAAQABAAEAAAD7/wcAAQAAAAAAAAD6/xMAAQAAAAIAAAD6/xIAAQAAAAEAAAD6/xEAAQAAAAEAAAD6/xAAAQAAAAEAAAD6/w8AAQAAAAEAAAD6/w4AAQAAAAEAAAD6/w0AAQAAAAEAAAD6/wwAAQAAAAEAAAD6/wsAAQAAAAEAAAD6/woAAQAAAAEAAAD6/wkAAQAAAAEAAAD6/wgAAQAAAAAAAAD//xUAAQACAAIAAAD//xQAAQACAAEAAAD+/xUAAQABAAIAAAD+/xQAAQABAAEAAAD9/xUAAQABAAEAAAD9/xQAAQABAAEAAAD8/xUAAQABAAEAAAD8/xQAAQABAAEAAAD7/xUAAQAAAAEAAAD7/xQAAQAAAAEAAAD8/xYAAQABAAIAAAD7/xYAAQAAAAIAAAD9/xYAAQACAAIAAAAzAAIAAQACAAIAAAAyAAIAAQABAAIAAAAxAAIAAQABAAIAAAAwAAIAAQABAAIAAAAvAAIAAQABAAIAAAAuAAIAAQABAAIAAAAtAAEAAQABAAEAAAAsAAEAAQABAAEAAAArAAEAAQABAAEAAAAqAAEAAQABAAEAAAApAAEAAQABAAEAAAAoAAEAAQAAAAEAAAAuAAEAAQABAAEAAAAvAAEAAQABAAEAAAAwAAEAAQABAAEAAAAxAAEAAQABAAEAAAAyAAEAAQABAAEAAAAzAAEAAQACAAEAAAAoAAIAAQAAAAIAAAApAAIAAQABAAIAAAAqAAIAAQABAAIAAAArAAIAAQABAAIAAAAsAAIAAQABAAIAAAAtAAIAAQABAAIAAAAiABMAAQACAAIAAAAiABIAAQACAAEAAAAiABEAAQACAAEAAAAiABAAAQACAAEAAAAiAA8AAQACAAEAAAAiAA4AAQACAAEAAAAiAA0AAQACAAEAAAAiAAwAAQACAAEAAAAiAAsAAQACAAEAAAAiAAoAAQACAAEAAAAiAAkAAQACAAEAAAAiAAgAAQACAAEAAAAiAAcAAQACAAEAAAAiAAYAAQACAAEAAAAiAAUAAQACAAEAAAAiAAQAAQACAAEAAAAiAAMAAQACAAAAAAAhABMAAQABAAIAAAAhABIAAQABAAEAAAAhABEAAQABAAEAAAAhABAAAQABAAEAAAAhAA8AAQABAAEAAAAhAA4AAQABAAEAAAAhAA0AAQABAAEAAAAhAAwAAQABAAEAAAAhAAsAAQABAAEAAAAhAAoAAQABAAEAAAAhAAkAAQABAAEAAAAhAAgAAQABAAEAAAAhAAcAAQABAAEAAAAhAAYAAQABAAEAAAAhAAUAAQABAAEAAAAhAAQAAQABAAEAAAAhAAMAAQABAAAAAAAgABMAAQABAAIAAAAgABIAAQABAAEAAAAgABEAAQABAAEAAAAgABAAAQABAAEAAAAgAA8AAQABAAEAAAAgAA4AAQABAAEAAAAgAA0AAQABAAEAAAAgAAwAAQABAAEAAAAgAAsAAQABAAEAAAAgAAoAAQABAAEAAAAgAAkAAQABAAEAAAAgAAgAAQABAAEAAAAgAAcAAQABAAEAAAAgAAYAAQABAAEAAAAgAAUAAQABAAEAAAAgAAQAAQABAAEAAAAgAAMAAQABAAAAAAA=") +tile_set = ExtResource("4_uxkgr") + +[node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=2001851440] +tile_map_data = PackedByteArray("AAAEABEAAQAFAAAAAAAEABIAAQAIAAEAAAAEABMAAQAIAAEAAAAEABQAAQAIAAEAAAAEABUAAQAIAAEAAAAEABYAAQAIAAEAAAAEABcAAQAIAAEAAAAEABgAAQAIAAIAAAAKABEAAQAGAAMAAAAJABEAAQAGAAMAAAAIABEAAQAGAAMAAAAHABEAAQAGAAMAAAAGABEAAQAGAAMAAAAFABEAAQAGAAMAAAANABEAAQAGAAMAAAAMABEAAQAGAAMAAAALABEAAQAGAAMAAAAbABEAAQAHAAIAAAAaABEAAQAGAAMAAAAZABEAAQAGAAMAAAAYABEAAQAGAAMAAAAXABEAAQAGAAMAAAAWABEAAQAGAAMAAAAVABEAAQAGAAMAAAAUABEAAQAGAAMAAAATABEAAQAGAAMAAAASABEAAQAGAAMAAAARABEAAQAGAAMAAAAQABEAAQAGAAMAAAAPABEAAQAGAAMAAAAOABEAAQAGAAMAAAAbAAUAAQAHAAAAAAAbAAYAAQAIAAEAAAAbAAcAAQAIAAEAAAAbAAgAAQAIAAEAAAAbAAkAAQAIAAEAAAAbAAoAAQAIAAEAAAAbAAsAAQAIAAEAAAAbAAwAAQAIAAEAAAAbAA0AAQAIAAEAAAAbAA4AAQAIAAEAAAAbAA8AAQAIAAEAAAAbABAAAQAIAAEAAAARAAUAAQAGAAMAAAASAAUAAQAGAAMAAAATAAUAAQAGAAMAAAAUAAUAAQAGAAMAAAAVAAUAAQAGAAMAAAAWAAUAAQAGAAMAAAAXAAUAAQAGAAMAAAAYAAUAAQAGAAMAAAAZAAUAAQAGAAMAAAAaAAUAAQAGAAMAAAAQAPv/AQAFAAAAAAAQAPz/AQAIAAEAAAAQAP3/AQAIAAEAAAAQAP7/AQAIAAEAAAAQAP//AQAIAAEAAAAQAAAAAQAIAAEAAAAQAAEAAQAIAAEAAAAQAAIAAQAIAAEAAAAQAAMAAQAIAAEAAAAQAAQAAQAIAAEAAAAQAAUAAQAFAAIAAAASAPv/AQAGAAMAAAARAPv/AQAGAAMAAAAXAPv/AQAHAAAAAAAWAPv/AQAGAAMAAAAVAPv/AQAGAAMAAAAUAPv/AQAGAAMAAAATAPv/AQAGAAMAAAAdAP3/AQAGAAMAAAAfAP3/AQAHAAMAAAAeAP3/AQAGAAMAAAAtAP3/AQAGAAAAAAAsAP3/AQAGAAMAAAArAP3/AQAGAAMAAAAqAP3/AQAGAAMAAAApAP3/AQAGAAMAAAAoAP3/AQAFAAMAAAAuAP3/AQAGAAAAAAAuAP7/AQAHAAIAAAAtAP7/AQAFAAIAAAAwAP3/AQAGAAMAAAAvAP3/AQAGAAMAAAAxAP3/AQAGAAIAAAAyAP3/AQAHAAIAAAAxAPz/AQAFAAAAAAAyAPz/AQAHAAAAAAAbAP3/AQAGAAMAAAAcAP3/AQAGAAMAAAAaAP3/AQAGAAMAAAAZAP3/AQAGAAMAAAAYAP3/AQAGAAMAAAAXAP3/AQAFAAIAAAAXAPz/AQAIAAEAAAA=") +tile_set = ExtResource("4_uxkgr") + +[node name="DangerTiles" type="TileMapLayer" parent="TileMapLayers" unique_id=1576432633] +tile_map_data = PackedByteArray("AAALABIABgADAAEAAAALABEABgADAAEAAAALABAABgADAAAAAAALABMABgADAAIAAAA=") +tile_set = ExtResource("4_uxkgr") + +[node name="BridgeShadow" type="TileMapLayer" parent="TileMapLayers" unique_id=2133208645] +tile_map_data = PackedByteArray("AAAgAP3/AwACAAMAAAAhAP3/AwACAAMAAAAiAP3/AwACAAMAAAAjAP3/AwACAAMAAAAkAP3/AwACAAMAAAAlAP3/AwACAAMAAAAmAP3/AwACAAMAAAAnAP3/AwACAAMAAAA=") +tile_set = ExtResource("5_a0m6m") + +[node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=1047337476] +tile_map_data = PackedByteArray("AAAEAB4AAwAAAAMAAAAEAB0AAwAAAAIAAAAEABwAAwAAAAIAAAAEABsAAwAAAAIAAAAEABoAAwABAAMAAAAEABkAAwAAAAIAAAAEABgAAwAAAAEAAAAfAP3/AwAAAAAAAAAgAP3/AwABAAAAAAAhAP3/AwABAAAAAAAiAP3/AwABAAAAAAAjAP3/AwABAAAAAAAkAP3/AwABAAAAAAAlAP3/AwABAAAAAAAmAP3/AwABAAAAAAAnAP3/AwABAAAAAAAoAP3/AwACAAAAAAA=") +tile_set = ExtResource("5_a0m6m") + +[node name="Void" type="TileMapLayer" parent="TileMapLayers" unique_id=402702508 node_paths=PackedStringArray("consumable_node_holders")] +texture_filter = 1 +material = ExtResource("6_j205g") +tile_map_data = PackedByteArray("AAANAAUADQACAAAAAAAPAAcADQABAAMAAAAOAAcADQABAAMAAAANAAYADQACAAEAAAAKAP3/DQACAAIAAAAKAPz/DQACAAEAAAAKAPv/DQACAAAAAAAJAP3/DQABAAIAAAAJAPz/DQABAAEAAAAJAPv/DQABAAEAAAAIAAAADQACAAEAAAAIAP//DQACAAEAAAAIAP7/DQACAAEAAAAIAP3/DQABAAEAAAAIAPz/DQABAAEAAAAIAPv/DQABAAEAAAAHAAAADQABAAEAAAAHAP//DQABAAEAAAAHAP7/DQABAAEAAAAHAP3/DQABAAEAAAAHAPz/DQABAAEAAAAHAPv/DQABAAEAAAAGAAAADQABAAEAAAAGAP//DQABAAEAAAAGAP7/DQABAAEAAAAGAP3/DQABAAEAAAAGAPz/DQABAAEAAAAGAPv/DQABAAEAAAAFAAAADQABAAEAAAAFAP//DQABAAEAAAAFAP7/DQABAAEAAAAFAP3/DQABAAEAAAAFAPz/DQABAAEAAAAFAPv/DQABAAEAAAAEAAAADQABAAEAAAAEAP//DQABAAEAAAAEAP7/DQABAAEAAAAEAP3/DQABAAEAAAAEAPz/DQABAAEAAAAEAPv/DQABAAEAAAADAAAADQABAAEAAAADAP//DQABAAEAAAADAP7/DQABAAEAAAADAP3/DQABAAEAAAADAPz/DQABAAEAAAADAPv/DQABAAEAAAACAAAADQABAAEAAAACAP//DQABAAEAAAACAP7/DQABAAEAAAACAP3/DQABAAEAAAACAPz/DQABAAEAAAACAPv/DQABAAEAAAABAAAADQABAAEAAAABAP//DQABAAEAAAABAP7/DQABAAEAAAABAP3/DQABAAEAAAABAPz/DQABAAEAAAABAPv/DQABAAEAAAAAAAAADQABAAEAAAAAAP//DQABAAEAAAAAAP7/DQABAAEAAAAAAP3/DQABAAEAAAAAAPz/DQABAAEAAAAAAPv/DQABAAEAAAD//wAADQABAAEAAAD/////DQABAAEAAAD///7/DQABAAEAAAD///3/DQAAAAEAAAD///z/DQAAAAEAAAD///v/DQAAAAEAAAAAAAYADQABAAIAAAAAAAUADQABAAEAAAAAAAQADQABAAEAAAAAAAMADQABAAEAAAAAAAIADQABAAEAAAAAAAEADQABAAEAAAD//wYADQABAAIAAAD//wUADQABAAEAAAD//wQADQABAAEAAAD//wMADQABAAEAAAD//wIADQABAAEAAAD//wEADQABAAEAAAAWAAcADQABAAAAAAAVAAcADQABAAAAAAAUAAcADQABAAMAAAATAAcADQABAAMAAAASAAcADQABAAMAAAARAAcADQABAAMAAAAQAAcADQABAAMAAAAVAAgADQAAAAEAAAAWAAkADQABAAEAAAAWAAgADQABAAEAAAAVAAkADQAAAAEAAAAWAA0ADQACAAEAAAAWAAwADQABAAEAAAAVAA0ADQAAAAEAAAAVAAwADQAAAAEAAAAXAAwADQACAAIAAAAXAAsADQACAAEAAAAXAAoADQACAAEAAAAXAAkADQACAAEAAAAWAAsADQABAAEAAAAWAAoADQABAAEAAAAVAAsADQAAAAEAAAAVAAoADQAAAAEAAAAXAAgADQACAAEAAAAXAAcADQACAAAAAAAWAA8ADQACAAIAAAAWAA4ADQACAAEAAAAVAA8ADQABAAIAAAAVAA4ADQABAAEAAAAUAA8ADQABAAIAAAAUAA4ADQABAAAAAAATAA8ADQABAAIAAAATAA4ADQABAAAAAAASAA8ADQABAAIAAAASAA4ADQABAAAAAAARAA8ADQABAAIAAAARAA4ADQABAAAAAAAQAA8ADQABAAIAAAAQAA4ADQABAAAAAAAPAA8ADQABAAIAAAAPAA4ADQABAAAAAAAOAA8ADQABAAEAAAAOAA4ADQABAAAAAAAZABQADQABAAEAAAAZABMADQABAAAAAAAYABQADQABAAEAAAAYABMADQABAAAAAAAXABQADQABAAEAAAAXABMADQABAAAAAAAWABQADQABAAEAAAAWABMADQABAAAAAAAVABQADQABAAEAAAAVABMADQABAAAAAAAUABQADQABAAEAAAAUABMADQABAAAAAAATABQADQABAAEAAAATABMADQABAAAAAAASABQADQABAAEAAAASABMADQABAAAAAAARABQADQABAAEAAAARABMADQABAAAAAAAQABQADQABAAEAAAAQABMADQABAAAAAAAPABQADQABAAEAAAAPABMADQABAAAAAAAOABQADQABAAEAAAAOABMADQABAAAAAAATAPj/DQABAAIAAAAfAPj/DQABAAEAAAAfAPf/DQABAAEAAAAfAPb/DQABAAAAAAAeAPj/DQABAAEAAAAeAPf/DQABAAEAAAAeAPb/DQABAAAAAAAdAPj/DQABAAIAAAAdAPf/DQABAAEAAAAdAPb/DQABAAAAAAAcAPj/DQABAAIAAAAcAPf/DQABAAEAAAAcAPb/DQABAAAAAAAbAPj/DQABAAIAAAAbAPf/DQABAAEAAAAbAPb/DQABAAAAAAAaAPj/DQAAAAIAAAAaAPf/DQABAAEAAAAaAPb/DQABAAAAAAAZAPf/DQABAAIAAAAZAPb/DQABAAAAAAAYAPf/DQABAAIAAAAYAPb/DQABAAAAAAAXAPj/DQACAAIAAAAXAPf/DQABAAEAAAAXAPb/DQABAAAAAAAWAPj/DQABAAIAAAAWAPf/DQABAAEAAAAWAPb/DQABAAAAAAAVAPj/DQABAAIAAAAVAPf/DQABAAEAAAAVAPb/DQABAAAAAAAUAPj/DQABAAIAAAAUAPf/DQABAAEAAAAUAPb/DQABAAAAAAATAPf/DQABAAEAAAATAPb/DQABAAAAAAAhAAEADQABAAEAAAAhAAAADQABAAAAAAAhAPv/DQABAAIAAAAhAPr/DQABAAEAAAAhAPn/DQABAAEAAAAhAPj/DQABAAEAAAAgAAEADQABAAEAAAAgAAAADQABAAEAAAAgAP//DQACAAAAAAAgAPv/DQABAAIAAAAgAPr/DQABAAEAAAAgAPn/DQABAAEAAAAgAPj/DQABAAEAAAAfAAEADQABAAEAAAAfAAAADQABAAEAAAAfAP//DQABAAAAAAAfAPv/DQABAAIAAAAfAPr/DQABAAEAAAAfAPn/DQABAAEAAAAeAAEADQABAAEAAAAeAAAADQABAAEAAAAeAP//DQABAAAAAAAeAPv/DQAAAAIAAAAeAPr/DQAAAAEAAAAeAPn/DQAAAAEAAAAjABYADQACAAEAAAAjABUADQACAAEAAAAjABQADQACAAEAAAAjABMADQABAAEAAAAjABIADQABAAEAAAAjABEADQABAAEAAAAjABAADQABAAEAAAAjAA8ADQABAAEAAAAjAA4ADQABAAEAAAAjAA0ADQABAAEAAAAjAAwADQABAAEAAAAjAAsADQABAAEAAAAjAAoADQABAAEAAAAjAAkADQABAAEAAAAjAAgADQABAAEAAAAjAAcADQABAAEAAAAjAAYADQACAAEAAAAjAAUADQACAAEAAAAjAAQADQACAAEAAAAjAAMADQACAAEAAAAjAAIADQACAAEAAAAiABYADQABAAEAAAAiABUADQABAAEAAAAiABQADQABAAEAAAAiABMADQABAAEAAAAiABIADQABAAEAAAAiABEADQABAAEAAAAiABAADQABAAEAAAAiAA8ADQABAAEAAAAiAA4ADQABAAEAAAAiAA0ADQABAAEAAAAiAAwADQABAAEAAAAiAAsADQABAAEAAAAiAAoADQABAAEAAAAiAAkADQABAAEAAAAiAAgADQABAAEAAAAiAAcADQABAAEAAAAiAAYADQABAAEAAAAiAAUADQABAAEAAAAiAAQADQABAAEAAAAiAAMADQABAAEAAAAiAAIADQABAAEAAAAhABYADQABAAEAAAAhABUADQABAAEAAAAhABQADQABAAEAAAAhABMADQABAAEAAAAhABIADQABAAEAAAAhABEADQABAAEAAAAhABAADQABAAEAAAAhAA8ADQABAAEAAAAhAA4ADQABAAEAAAAhAA0ADQABAAEAAAAhAAwADQABAAEAAAAhAAsADQABAAEAAAAhAAoADQABAAEAAAAhAAkADQABAAEAAAAhAAgADQABAAEAAAAhAAcADQABAAEAAAAhAAYADQABAAEAAAAhAAUADQABAAEAAAAhAAQADQABAAEAAAAhAAMADQABAAEAAAAhAAIADQABAAEAAAAgABYADQABAAEAAAAgABUADQABAAEAAAAgABQADQABAAEAAAAgABMADQABAAEAAAAgABEADQABAAEAAAAgABAADQAAAAEAAAAgAA8ADQABAAEAAAAgAA4ADQABAAEAAAAgAA0ADQABAAEAAAAgAAwADQAAAAEAAAAgAAsADQAAAAEAAAAgAAoADQAAAAEAAAAgAAkADQAAAAEAAAAgAAgADQABAAEAAAAgAAcADQABAAEAAAAgAAYADQABAAEAAAAgAAUADQABAAEAAAAgAAQADQABAAEAAAAgAAMADQABAAEAAAAgAAIADQABAAEAAAAfABYADQABAAEAAAAfABUADQABAAEAAAAfABQADQABAAEAAAAfABMADQABAAEAAAAfAA8ADQAAAAIAAAAfAA4ADQAAAAEAAAAfAA0ADQAAAAAAAAAfAAgADQAAAAIAAAAfAAcADQAAAAEAAAAfAAYADQAAAAEAAAAfAAUADQABAAEAAAAfAAIADQABAAEAAAAeABYADQABAAEAAAAeABUADQABAAEAAAAeABQADQABAAEAAAAeABMADQABAAEAAAAeAAUADQAAAAMAAAAeAAIADQABAAIAAAAeABcADQABAAIAAAAdABcADQABAAIAAAAdABYADQABAAEAAAAdABUADQABAAEAAAAdABQADQABAAEAAAAcABcADQABAAIAAAAcABYADQABAAEAAAAcABUADQABAAEAAAAcABQADQABAAEAAAAbABcADQABAAIAAAAbABYADQABAAEAAAAbABUADQABAAEAAAAbABQADQABAAEAAAAdABMADQABAAAAAAAcABMADQABAAAAAAAbABMADQABAAAAAAAaABQADQABAAEAAAAaABMADQABAAAAAAAaABYADQABAAEAAAAaABUADQABAAEAAAAjABcADQACAAIAAAAiABcADQABAAIAAAAhABcADQABAAIAAAAgABcADQABAAIAAAAfABcADQABAAIAAAAaABcADQABAAIAAAAZABcADQABAAIAAAAZABYADQABAAEAAAAZABUADQABAAEAAAAYABcADQABAAIAAAAYABYADQABAAEAAAAYABUADQABAAEAAAAXABcADQABAAIAAAAXABYADQABAAEAAAAXABUADQABAAEAAAAWABcADQABAAIAAAAWABYADQABAAEAAAAWABUADQABAAEAAAAVABcADQABAAIAAAAVABYADQABAAEAAAAVABUADQABAAEAAAAUABcADQABAAIAAAAUABYADQABAAEAAAAUABUADQABAAEAAAATABcADQABAAIAAAATABYADQABAAEAAAATABUADQABAAEAAAASABcADQABAAIAAAASABYADQABAAEAAAASABUADQABAAEAAAARABcADQABAAIAAAARABYADQABAAEAAAARABUADQABAAEAAAAQABcADQABAAIAAAAQABYADQABAAEAAAAQABUADQABAAEAAAAPABcADQABAAIAAAAPABYADQABAAEAAAAPABUADQABAAEAAAAOABcADQAAAAIAAAAOABYADQAAAAEAAAAOABUADQABAAEAAAASAPj/DQABAAIAAAASAPf/DQABAAEAAAARAPj/DQABAAIAAAARAPf/DQABAAEAAAAQAPj/DQABAAIAAAAQAPf/DQABAAEAAAAPAPj/DQABAAIAAAAPAPf/DQABAAEAAAAOAPj/DQABAAEAAAAOAPf/DQABAAEAAAANAPj/DQABAAIAAAANAPf/DQABAAEAAAAMAPj/DQABAAIAAAAMAPf/DQABAAEAAAALAPj/DQABAAIAAAALAPf/DQABAAEAAAAKAPf/DQABAAEAAAAJAPr/DQACAAEAAAAJAPn/DQABAAEAAAAJAPj/DQABAAEAAAAJAPf/DQABAAEAAAAIAPr/DQABAAEAAAAIAPn/DQABAAEAAAAIAPj/DQABAAEAAAAIAPf/DQABAAEAAAAHAPr/DQABAAEAAAAHAPn/DQABAAEAAAAHAPj/DQABAAEAAAAHAPf/DQABAAEAAAAGAPr/DQABAAEAAAAGAPn/DQABAAEAAAAGAPj/DQABAAEAAAAGAPf/DQABAAEAAAAFAPr/DQABAAEAAAAFAPn/DQABAAEAAAAFAPj/DQABAAEAAAAFAPf/DQABAAEAAAAEAPr/DQABAAEAAAAEAPn/DQABAAEAAAAEAPj/DQABAAEAAAAEAPf/DQABAAEAAAADAPr/DQABAAEAAAADAPn/DQABAAEAAAADAPj/DQABAAEAAAADAPf/DQABAAEAAAACAPr/DQABAAEAAAACAPn/DQABAAEAAAACAPj/DQABAAEAAAACAPf/DQABAAEAAAABAPr/DQABAAEAAAABAPn/DQABAAEAAAABAPj/DQABAAEAAAABAPf/DQABAAEAAAAAAPr/DQABAAEAAAAAAPn/DQABAAEAAAAAAPj/DQABAAEAAAAAAPf/DQABAAEAAAD///r/DQAAAAEAAAD///n/DQAAAAEAAAD///j/DQAAAAEAAAD///f/DQAAAAEAAAASAPb/DQABAAAAAAARAPb/DQABAAAAAAAQAPb/DQABAAAAAAAPAPb/DQABAAAAAAAOAPb/DQABAAAAAAANAPb/DQABAAAAAAAMAPb/DQABAAAAAAALAPb/DQABAAAAAAAKAPb/DQABAAAAAAAJAPb/DQABAAAAAAAIAPb/DQABAAAAAAAHAPb/DQABAAAAAAAGAPb/DQABAAAAAAAFAPb/DQABAAAAAAAEAPb/DQABAAAAAAADAPb/DQABAAAAAAACAPb/DQABAAAAAAABAPb/DQABAAAAAAAAAPb/DQABAAAAAAD///b/DQAAAAAAAAAjAAEADQACAAEAAAAjAAAADQACAAAAAAAjAPv/DQACAAIAAAAjAPr/DQACAAEAAAAjAPn/DQACAAEAAAAjAPj/DQACAAEAAAAjAPf/DQACAAEAAAAjAPb/DQACAAAAAAAiAAEADQABAAEAAAAiAAAADQABAAAAAAAiAPv/DQABAAIAAAAiAPr/DQABAAEAAAAiAPn/DQABAAEAAAAiAPj/DQABAAEAAAAiAPf/DQABAAEAAAAiAPb/DQABAAAAAAAhAPf/DQABAAEAAAAhAPb/DQABAAAAAAAgAPf/DQABAAEAAAAgAPb/DQABAAAAAAD5/wsADQACAAEAAAD5/woADQACAAEAAAD4/wsADQAAAAEAAAD4/woADQAAAAEAAAAMAAYADQABAAIAAAAMAAUADQABAAAAAAALAAYADQABAAIAAAALAAUADQABAAAAAAAKAAYADQABAAIAAAAKAAUADQABAAEAAAAKAAQADQACAAEAAAAKAAMADQACAAEAAAAKAAIADQACAAEAAAAKAAEADQACAAAAAAAJAAYADQABAAIAAAAJAAUADQABAAEAAAAJAAQADQABAAEAAAAJAAMADQABAAEAAAAJAAIADQABAAEAAAAJAAEADQABAAAAAAAIAAYADQABAAIAAAAIAAUADQABAAEAAAAIAAQADQABAAEAAAAIAAMADQABAAEAAAAIAAIADQABAAEAAAAIAAEADQABAAEAAAAHAAYADQABAAIAAAAHAAUADQABAAEAAAAHAAQADQABAAEAAAAHAAMADQABAAEAAAAHAAIADQABAAEAAAAHAAEADQABAAEAAAAGAAYADQABAAIAAAAGAAUADQABAAEAAAAGAAQADQABAAEAAAAGAAMADQABAAEAAAAGAAIADQABAAEAAAAGAAEADQABAAEAAAAFAAYADQABAAIAAAAFAAUADQABAAEAAAAFAAQADQABAAEAAAAFAAMADQABAAEAAAAFAAIADQABAAEAAAAFAAEADQABAAEAAAAEAAYADQABAAIAAAAEAAUADQABAAEAAAAEAAQADQABAAEAAAAEAAMADQABAAEAAAAEAAIADQABAAEAAAAEAAEADQABAAEAAAADAAYADQABAAIAAAADAAUADQABAAEAAAADAAQADQABAAEAAAADAAMADQABAAEAAAADAAIADQABAAEAAAADAAEADQABAAEAAAACAAYADQABAAIAAAACAAUADQABAAEAAAACAAQADQABAAEAAAACAAMADQABAAEAAAACAAIADQABAAEAAAACAAEADQABAAEAAAABAAYADQABAAIAAAABAAUADQABAAEAAAABAAQADQABAAEAAAABAAMADQABAAEAAAABAAIADQABAAEAAAABAAEADQABAAEAAAAdAAIADQABAAIAAAAdAAEADQABAAEAAAAdAAAADQABAAEAAAAdAP//DQABAAAAAAAcAAIADQABAAIAAAAcAAEADQABAAEAAAAcAAAADQABAAEAAAAcAP//DQAAAAAAAAAbAAIADQABAAIAAAAbAAEADQABAAEAAAAbAAAADQABAAAAAAAaAAIADQABAAIAAAAaAAEADQABAAEAAAAaAAAADQABAAAAAAAZAAIADQABAAIAAAAZAAEADQABAAEAAAAZAAAADQABAAEAAAAZAP//DQACAAAAAAAYAAIADQABAAIAAAAYAAEADQABAAEAAAAYAAAADQABAAEAAAAYAP//DQABAAAAAAAXAAIADQABAAIAAAAXAAEADQABAAEAAAAXAAAADQABAAEAAAAXAP//DQABAAAAAAAWAAIADQABAAIAAAAWAAEADQABAAEAAAAWAAAADQABAAEAAAAWAP//DQAAAAAAAAAVAAIADQABAAIAAAAVAAEADQABAAEAAAAVAAAADQABAAAAAAAUAAIADQABAAIAAAAUAAEADQABAAEAAAAUAAAADQABAAAAAAATAAIADQAAAAIAAAATAAEADQAAAAEAAAATAAAADQAAAAAAAAANABUADQABAAIAAAANABQADQABAAEAAAANABMADQABAAAAAAAMABUADQABAAIAAAAMABQADQABAAEAAAAMABMADQABAAAAAAALABUADQABAAIAAAALABQADQABAAEAAAALABMADQABAAAAAAAKABUADQABAAIAAAAKABQADQABAAEAAAAKABMADQABAAAAAAAJABUADQABAAIAAAAJABQADQABAAEAAAAJABMADQABAAAAAAAIABUADQABAAIAAAAIABQADQABAAEAAAAIABMADQABAAAAAAAHABUADQAAAAIAAAAHABQADQAAAAEAAAAHABMADQAAAAAAAAD5/xUADQADAAEAAAD5/xQADQADAAEAAAD5/xMADQACAAEAAAD5/xIADQACAAEAAAD5/xEADQACAAEAAAD5/xAADQACAAEAAAD5/w8ADQACAAEAAAD5/w4ADQACAAEAAAD5/w0ADQACAAEAAAD5/wwADQACAAEAAAD5/wkADQACAAEAAAD5/wgADQACAAEAAAD5/wcADQABAAEAAAD4/xMADQAAAAIAAAD4/xIADQAAAAEAAAD4/xEADQAAAAEAAAD4/xAADQAAAAEAAAD4/w8ADQAAAAEAAAD4/w4ADQAAAAEAAAD4/w0ADQAAAAEAAAD4/wwADQAAAAEAAAD4/wkADQAAAAEAAAD4/wgADQAAAAEAAAD4/wcADQAAAAEAAAD4/wYADQAAAAEAAAD7/xcADQACAAIAAAD7/xYADQACAAAAAAD6/xcADQABAAIAAAD6/xYADQABAAAAAAD5/xcADQAAAAIAAAD5/xYADQAAAAEAAAAAABsADQACAAIAAAAAABoADQACAAAAAAD//xsADQAAAAIAAAD//xoADQAAAAAAAAD7/wcADQACAAIAAAD7/wYADQABAAEAAAD7/wUADQABAAEAAAD6/wcADQABAAIAAAD6/wYADQABAAEAAAD6/wUADQABAAEAAAD5/wYADQABAAEAAAD5/wUADQABAAEAAAD+/wYADQABAAIAAAD9/wYADQABAAIAAAD8/wYADQABAAIAAAD+/wUADQABAAEAAAD+/wQADQABAAEAAAD+/wMADQABAAEAAAD+/wIADQABAAEAAAD+/wEADQABAAEAAAD+/wAADQABAAEAAAD+////DQABAAEAAAD+//7/DQABAAAAAAD9/wUADQABAAEAAAD9/wQADQABAAEAAAD9/wMADQABAAEAAAD9/wIADQABAAEAAAD9/wEADQABAAEAAAD9/wAADQABAAEAAAD9////DQABAAEAAAD9//7/DQABAAAAAAD8/wUADQABAAEAAAD8/wQADQABAAEAAAD8/wMADQABAAEAAAD8/wIADQABAAEAAAD8/wEADQABAAEAAAD8/wAADQABAAEAAAD8////DQABAAEAAAD8//7/DQABAAAAAAD7/wQADQABAAEAAAD7/wMADQABAAEAAAD7/wIADQABAAEAAAD7/wEADQABAAEAAAD7/wAADQABAAEAAAD7////DQABAAEAAAD7//7/DQABAAAAAAD6/wQADQABAAEAAAD6/wMADQABAAEAAAD6/wIADQABAAEAAAD6/wEADQABAAEAAAD6/wAADQABAAEAAAD6////DQABAAEAAAD6//7/DQABAAAAAAD5/wQADQABAAEAAAD5/wMADQABAAEAAAD5/wIADQABAAEAAAD5/wEADQABAAEAAAD5/wAADQABAAEAAAD5////DQABAAEAAAD5//7/DQABAAAAAAD4/wUADQABAAEAAAD4/wQADQABAAEAAAD4/wMADQABAAEAAAD4/wIADQABAAEAAAD4/wEADQABAAEAAAD4/wAADQABAAEAAAD4////DQABAAEAAAD4//7/DQABAAAAAAD3/wUADQAAAAIAAAD3/wQADQAAAAEAAAD3/wMADQAAAAEAAAD3/wIADQAAAAEAAAD3/wEADQAAAAEAAAD3/wAADQAAAAEAAAD3////DQAAAAEAAAD3//7/DQAAAAAAAAANAAcADQAAAAIAAAANABAADQAAAAIAAAANAA8ADQAAAAEAAAAOABAADQACAAIAAAANAA4ADQAAAAEAAAANAA0ADQADAAAAAAAKAPn/DQACAAIAAAAKAPj/DQABAAEAAAAOAPn/DQADAAIAAAAfAAMADQAAAAEAAAAfAAQADQAAAAEAAAApABAADQACAAIAAAApAA8ADQACAAEAAAApAA4ADQACAAAAAAAoABAADQABAAIAAAAoAA8ADQABAAEAAAAoAA4ADQABAAAAAAAnABAADQABAAIAAAAnAA8ADQABAAEAAAAnAA4ADQABAAAAAAAmAA4ADQABAAEAAAAmAA0ADQACAAEAAAAmAAwADQACAAEAAAAmAAsADQACAAAAAAAlAA4ADQABAAEAAAAlAA0ADQABAAEAAAAlAAwADQABAAEAAAAlAAsADQABAAEAAAAkAA4ADQABAAEAAAAkAA0ADQABAAEAAAAkAAwADQABAAEAAAAkAAsADQABAAEAAAAlAAcADQACAAAAAAAlAAoADQACAAEAAAAlAAkADQACAAEAAAAlAAgADQACAAEAAAAkAAoADQABAAEAAAAkAAkADQABAAEAAAAkAAgADQABAAEAAAAkAAcADQABAAAAAAAqAAgADQACAAMAAAApAAgADQAAAAMAAAAvAAkADQADAAIAAAAvAAgADQADAAAAAAAsAAYADQADAAMAAAAtAAgADQADAAIAAAAtAAcADQADAAAAAAAvAA4ADQACAAMAAAAuAA4ADQABAAMAAAAtABAADQACAAIAAAAtAA8ADQACAAEAAAAtAA4ADQABAAAAAAAsABAADQAAAAIAAAAsAA8ADQAAAAEAAAAsAA4ADQAAAAAAAAAnABMADQACAAIAAAAmABMADQABAAIAAAAmABIADQABAAEAAAAmABEADQACAAEAAAAmABAADQABAAEAAAAmAA8ADQABAAEAAAAlABMADQABAAIAAAAlABIADQABAAEAAAAlABEADQABAAEAAAAlABAADQABAAEAAAAlAA8ADQABAAEAAAAkABMADQABAAIAAAAkABIADQABAAEAAAAkABEADQABAAEAAAAkABAADQABAAEAAAAkAA8ADQABAAEAAAApABIADQACAAMAAAAoABIADQABAAMAAAAnABIADQABAAAAAAAsABIADQADAAMAAAAtABUADQADAAIAAAAtABQADQADAAEAAAAtABMADQADAAAAAAAyAAwADQADAAIAAAA0AAsADQACAAMAAAAzAAsADQABAAIAAAAyAAsADQAAAAAAAAA0AAcADQACAAIAAAA0AAYADQACAAAAAAAzAAcADQAAAAIAAAAzAAYADQAAAAAAAAA2AAcADQADAAMAAAAzAAoADQADAAAAAAArAAsADQADAAMAAAApAAoADQADAAMAAAAgABIADQABAAEAAAAfABIADQABAAEAAAAeABIADQAAAAAAAAAfABEADQAAAAAAAAA=") +tile_set = ExtResource("7_avd7l") +script = ExtResource("8_kxo05") +consumable_node_holders = [NodePath("../../OnTheGround/IslandTrees"), NodePath("../../OnTheGround/ConsumableProps"), NodePath("../../OnTheGround/MainlandTrees"), NodePath("../../OnTheGround/MainlandTrees2")] + +[node name="OnTheGround" type="Node2D" parent="." unique_id=756851405] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=296354958 instance=ExtResource("9_41blb")] +position = Vector2(288, 1416) +player_name = "StoryWeaver" +sprite_frames = ExtResource("10_pxyem") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=2029256878] +unique_name_in_owner = true +limit_left = -450 +limit_top = -500 +limit_right = 3500 +limit_bottom = 1750 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="SpiritThread" parent="OnTheGround" unique_id=327991066 instance=ExtResource("11_wdt4i")] +position = Vector2(2943, -135) +revealed = false +next_scene = "uid://dmoxtp65y3r2w" +item = SubResource("Resource_6rywr") + +[node name="VoidSpreadingEnemy" parent="OnTheGround" unique_id=1007896559 node_paths=PackedStringArray("void_layer", "idle_patrol_path") instance=ExtResource("13_app83")] +position = Vector2(-195, 1774) +void_layer = NodePath("../../TileMapLayers/Void") +idle_patrol_path = NodePath("../../EnemyPatrolPath") + +[node name="Townie" parent="OnTheGround" unique_id=1098678013 instance=ExtResource("14_sdmwi")] +position = Vector2(198, 1540) +character_seed = 3222241206 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie" unique_id=1745845356] +unique_name_in_owner = true +collision_layer = 32 +collision_mask = 0 +script = ExtResource("15_u5x30") +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie/InteractArea" unique_id=387591210] +visible = false +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_tfxnn") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie" unique_id=999721288 node_paths=PackedStringArray("interact_area")] +script = ExtResource("16_f8xlp") +dialogue = ExtResource("17_u5x30") +title = "interact" +interact_area = NodePath("../InteractArea") +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="Townie2" parent="OnTheGround" unique_id=183522457 instance=ExtResource("14_sdmwi")] +position = Vector2(3197, -179) +scale = Vector2(-1, 1) +character_seed = 3222241206 +look_at_side = 1 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie2" unique_id=1777869773] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("15_u5x30") +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie2/InteractArea" unique_id=556369693] +visible = false +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_u5x30") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie2" unique_id=1521381274 node_paths=PackedStringArray("interact_area", "extra_context")] +script = ExtResource("16_f8xlp") +dialogue = ExtResource("17_u5x30") +title = "well_done" +interact_area = NodePath("../InteractArea") +extra_context = [NodePath("../../SpiritThread")] +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="ConsumableProps" type="Node2D" parent="OnTheGround" unique_id=349453195] +y_sort_enabled = true + +[node name="FabricRock" parent="OnTheGround/ConsumableProps" unique_id=1319147835 instance=ExtResource("18_f8xlp")] +position = Vector2(1509, 1054) + +[node name="FabricRock2" parent="OnTheGround/ConsumableProps" unique_id=1243353707 instance=ExtResource("18_f8xlp")] +position = Vector2(1803, 331) + +[node name="WaterRock" parent="OnTheGround/ConsumableProps" unique_id=200189883 instance=ExtResource("28_af6h4")] +position = Vector2(2520, -104) + +[node name="WaterRock2" parent="OnTheGround/ConsumableProps" unique_id=1189974174 instance=ExtResource("28_af6h4")] +position = Vector2(-81, 1446) + +[node name="WaterRock3" parent="OnTheGround/ConsumableProps" unique_id=243705185 instance=ExtResource("28_af6h4")] +position = Vector2(357, 1635) +scale = Vector2(0.8, 0.8) + +[node name="WaterRock4" parent="OnTheGround/ConsumableProps" unique_id=287917915 instance=ExtResource("28_af6h4")] +position = Vector2(848, 733) + +[node name="WaterRock5" parent="OnTheGround/ConsumableProps" unique_id=1462423474 instance=ExtResource("28_af6h4")] +position = Vector2(2649, 310) + +[node name="WaterRock6" parent="OnTheGround/ConsumableProps" unique_id=109343470 instance=ExtResource("28_af6h4")] +position = Vector2(3166, 375) + +[node name="IslandTrees" type="Area2D" parent="OnTheGround" unique_id=244934901] +y_sort_enabled = true +monitoring = false +monitorable = false + +[node name="AreaFiller" type="Node" parent="OnTheGround/IslandTrees" unique_id=1209527167] +script = ExtResource("14_2lxhj") +scenes = Array[PackedScene]([ExtResource("15_m0rx6")]) +minimum_separation = 96.0 +metadata/_custom_type_script = "uid://bdhjixygupit1" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/IslandTrees" unique_id=1378084747] +position = Vector2(-175.25, 971) +shape = SubResource("RectangleShape2D_fwbcl") +disabled = true + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="OnTheGround/IslandTrees" unique_id=503724734] +position = Vector2(261.125, 742) +shape = SubResource("RectangleShape2D_ky281") +disabled = true + +[node name="Tree" parent="OnTheGround/IslandTrees" unique_id=1182216860 instance=ExtResource("15_m0rx6")] +position = Vector2(-320.8814, 558) +scale = Vector2(0.9464533, 0.90912837) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree2" parent="OnTheGround/IslandTrees" unique_id=1901035624 instance=ExtResource("15_m0rx6")] +position = Vector2(-168.36638, 604.79193) +scale = Vector2(1.0787259, 1.1964438) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree3" parent="OnTheGround/IslandTrees" unique_id=1540958863 instance=ExtResource("15_m0rx6")] +position = Vector2(-294.73877, 690.93) +scale = Vector2(0.9979506, 0.910329) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree4" parent="OnTheGround/IslandTrees" unique_id=899655040 instance=ExtResource("15_m0rx6")] +position = Vector2(-69.94733, 654.7779) +scale = Vector2(1.275146, 1.1965777) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree5" parent="OnTheGround/IslandTrees" unique_id=636900488 instance=ExtResource("15_m0rx6")] +position = Vector2(-122.2851, 765.1669) +scale = Vector2(0.9735004, 0.9251448) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree6" parent="OnTheGround/IslandTrees" unique_id=1427520468 instance=ExtResource("15_m0rx6")] +position = Vector2(-165.78006, 879.72675) +scale = Vector2(1.0652893, 1.075888) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree7" parent="OnTheGround/IslandTrees" unique_id=1165115748 instance=ExtResource("15_m0rx6")] +position = Vector2(44.136276, 627.36316) +scale = Vector2(0.8605138, 0.9301571) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree8" parent="OnTheGround/IslandTrees" unique_id=161966513 instance=ExtResource("15_m0rx6")] +position = Vector2(-27.377686, 743.93677) +scale = Vector2(0.9779048, 0.99387187) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree9" parent="OnTheGround/IslandTrees" unique_id=980891860 instance=ExtResource("15_m0rx6")] +position = Vector2(118.14635, 692.0263) +scale = Vector2(0.8610938, 0.93018216) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree10" parent="OnTheGround/IslandTrees" unique_id=627774975 instance=ExtResource("15_m0rx6")] +position = Vector2(-331.1043, 828.3739) +scale = Vector2(0.8935077, 0.9415915) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree11" parent="OnTheGround/IslandTrees" unique_id=267498525 instance=ExtResource("15_m0rx6")] +position = Vector2(-56.9013, 840.2013) +scale = Vector2(1.0720663, 1.0624824) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree12" parent="OnTheGround/IslandTrees" unique_id=1522938727 instance=ExtResource("15_m0rx6")] +position = Vector2(57.249382, 831.99854) +scale = Vector2(0.9378275, 0.87827915) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree13" parent="OnTheGround/IslandTrees" unique_id=1962265949 instance=ExtResource("15_m0rx6")] +position = Vector2(-187.78598, 979.5201) +scale = Vector2(1.057494, 0.987129) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree14" parent="OnTheGround/IslandTrees" unique_id=1053026352 instance=ExtResource("15_m0rx6")] +position = Vector2(-228.40549, 775.761) +scale = Vector2(1.07208, 1.0164866) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree15" parent="OnTheGround/IslandTrees" unique_id=1033140679 instance=ExtResource("15_m0rx6")] +position = Vector2(231.94052, 832.98315) +scale = Vector2(1.1337914, 1.0337981) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree16" parent="OnTheGround/IslandTrees" unique_id=1251322505 instance=ExtResource("15_m0rx6")] +position = Vector2(-23.147038, 949.9371) +scale = Vector2(0.8925935, 0.8277838) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree17" parent="OnTheGround/IslandTrees" unique_id=480814696 instance=ExtResource("15_m0rx6")] +position = Vector2(228.52017, 658.44885) +scale = Vector2(0.77444214, 0.82400316) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree18" parent="OnTheGround/IslandTrees" unique_id=269305730 instance=ExtResource("15_m0rx6")] +position = Vector2(-49.080307, 1122.0577) +scale = Vector2(1.1091708, 1.0224446) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree19" parent="OnTheGround/IslandTrees" unique_id=1193314158 instance=ExtResource("15_m0rx6")] +position = Vector2(-299.41492, 959.6742) +scale = Vector2(0.9285796, 0.92172533) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree20" parent="OnTheGround/IslandTrees" unique_id=1008489782 instance=ExtResource("15_m0rx6")] +position = Vector2(-323.77567, 1053.5546) +scale = Vector2(1.0672853, 1.18212) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree21" parent="OnTheGround/IslandTrees" unique_id=1380892029 instance=ExtResource("15_m0rx6")] +position = Vector2(-209.0498, 1148.6852) +scale = Vector2(0.84357405, 0.9359891) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree22" parent="OnTheGround/IslandTrees" unique_id=1849933255 instance=ExtResource("15_m0rx6")] +position = Vector2(-324.03247, 1181.892) +scale = Vector2(1.0775145, 1.1173214) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree23" parent="OnTheGround/IslandTrees" unique_id=357503403 instance=ExtResource("15_m0rx6")] +position = Vector2(-133.89484, 1264.716) +scale = Vector2(0.9519827, 0.87987447) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree24" parent="OnTheGround/IslandTrees" unique_id=1802286538 instance=ExtResource("15_m0rx6")] +position = Vector2(-24.022974, 1255.1144) +scale = Vector2(1.0039771, 0.9930256) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree25" parent="OnTheGround/IslandTrees" unique_id=1167285823 instance=ExtResource("15_m0rx6")] +position = Vector2(314.45438, 889.5902) +scale = Vector2(1.2448723, 1.1331284) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree26" parent="OnTheGround/IslandTrees" unique_id=1617430446 instance=ExtResource("15_m0rx6")] +position = Vector2(334.06982, 683.9299) +scale = Vector2(1.1669955, 1.1252373) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree27" parent="OnTheGround/IslandTrees" unique_id=904215651 instance=ExtResource("15_m0rx6")] +position = Vector2(360.89236, 778.87646) +scale = Vector2(0.78884584, 0.84882015) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree28" parent="OnTheGround/IslandTrees" unique_id=305772711 instance=ExtResource("15_m0rx6")] +position = Vector2(489.69995, 689.674) +scale = Vector2(1.043405, 1.1471876) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree29" parent="OnTheGround/IslandTrees" unique_id=217022165 instance=ExtResource("15_m0rx6")] +position = Vector2(147.2757, 597.0377) +scale = Vector2(1.0782151, 1.1047149) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree30" parent="OnTheGround/IslandTrees" unique_id=114026974 instance=ExtResource("15_m0rx6")] +position = Vector2(-140.78554, 1080.3876) +scale = Vector2(1.1347536, 1.04326) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree31" parent="OnTheGround/IslandTrees" unique_id=151055581 instance=ExtResource("15_m0rx6")] +position = Vector2(457.37598, 788.71094) +scale = Vector2(1.0678359, 1.0282294) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree32" parent="OnTheGround/IslandTrees" unique_id=1228388338 instance=ExtResource("15_m0rx6")] +position = Vector2(614.2169, 877.12244) +scale = Vector2(1.1294867, 1.1290712) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree33" parent="OnTheGround/IslandTrees" unique_id=638726260 instance=ExtResource("15_m0rx6")] +position = Vector2(576.214, 623.52997) +scale = Vector2(1.020418, 1.0102123) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree34" parent="OnTheGround/IslandTrees" unique_id=602518416 instance=ExtResource("15_m0rx6")] +position = Vector2(-251.99985, 1276.4231) +scale = Vector2(1.0073626, 1.024601) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree35" parent="OnTheGround/IslandTrees" unique_id=980205104 instance=ExtResource("15_m0rx6")] +position = Vector2(600.99304, 731.7584) +scale = Vector2(1.0133464, 1.0505612) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree36" parent="OnTheGround/IslandTrees" unique_id=166749397 instance=ExtResource("15_m0rx6")] +position = Vector2(-166.99454, 1380.4888) +scale = Vector2(1.0196095, 0.9490848) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree37" parent="OnTheGround/IslandTrees" unique_id=130665437 instance=ExtResource("15_m0rx6")] +position = Vector2(-68.31325, 1379.8429) +scale = Vector2(0.9080043, 0.889827) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree38" parent="OnTheGround/IslandTrees" unique_id=233140467 instance=ExtResource("15_m0rx6")] +position = Vector2(-38.784897, 563.5145) +scale = Vector2(1.126746, 1.1465523) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree40" parent="OnTheGround/IslandTrees" unique_id=1065769697 instance=ExtResource("15_m0rx6")] +position = Vector2(408.22992, 611.51324) +scale = Vector2(1.2934719, 1.1836724) +sprite_frames = ExtResource("22_af6h4") + +[node name="MainlandTrees" type="Area2D" parent="OnTheGround" unique_id=380379176] +y_sort_enabled = true +position = Vector2(1312, 724) +monitoring = false +monitorable = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/MainlandTrees" unique_id=1691374862] +shape = SubResource("RectangleShape2D_fs5pc") +disabled = true + +[node name="AreaFiller" type="Node" parent="OnTheGround/MainlandTrees" unique_id=552820457] +script = ExtResource("14_2lxhj") +scenes = Array[PackedScene]([ExtResource("15_m0rx6")]) +minimum_separation = 128.0 +metadata/_custom_type_script = "uid://bdhjixygupit1" + +[node name="Tree" parent="OnTheGround/MainlandTrees" unique_id=847150932 instance=ExtResource("15_m0rx6")] +position = Vector2(8.900936, 324.79016) +scale = Vector2(1.2036657, 1.1585398) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree2" parent="OnTheGround/MainlandTrees" unique_id=275378371 instance=ExtResource("15_m0rx6")] +position = Vector2(-43.119698, 95.15242) +scale = Vector2(1.0288794, 1.1254238) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree3" parent="OnTheGround/MainlandTrees" unique_id=959807547 instance=ExtResource("15_m0rx6")] +position = Vector2(-178.87006, 14.083374) +scale = Vector2(0.9148053, 0.89518315) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree4" parent="OnTheGround/MainlandTrees" unique_id=1784188411 instance=ExtResource("15_m0rx6")] +position = Vector2(-216.94075, 150.15276) +scale = Vector2(1.1467589, 1.1994839) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree5" parent="OnTheGround/MainlandTrees" unique_id=2012728731 instance=ExtResource("15_m0rx6")] +position = Vector2(94.54509, 195.71243) +scale = Vector2(0.96633106, 0.9424911) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree6" parent="OnTheGround/MainlandTrees" unique_id=1819407134 instance=ExtResource("15_m0rx6")] +position = Vector2(-280.68982, -74.52545) +scale = Vector2(0.99290854, 1.0879558) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree7" parent="OnTheGround/MainlandTrees" unique_id=1531395611 instance=ExtResource("15_m0rx6")] +position = Vector2(-345.99997, 40.369385) +scale = Vector2(1.2782555, 1.1982737) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree8" parent="OnTheGround/MainlandTrees" unique_id=233570856 instance=ExtResource("15_m0rx6")] +position = Vector2(203.79395, 125.309875) +scale = Vector2(0.75326973, 0.8264417) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree9" parent="OnTheGround/MainlandTrees" unique_id=1207900257 instance=ExtResource("15_m0rx6")] +position = Vector2(-332.09897, 324.79016) +scale = Vector2(0.9223859, 0.9676355) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree10" parent="OnTheGround/MainlandTrees" unique_id=1280670731 instance=ExtResource("15_m0rx6")] +position = Vector2(249.8565, -20.878754) +scale = Vector2(0.97832865, 1.0213878) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree11" parent="OnTheGround/MainlandTrees" unique_id=206573783 instance=ExtResource("15_m0rx6")] +position = Vector2(351.82446, 175.35164) +scale = Vector2(0.8850463, 0.8936423) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree12" parent="OnTheGround/MainlandTrees" unique_id=1775203292 instance=ExtResource("15_m0rx6")] +position = Vector2(64.762314, -39.204605) +scale = Vector2(0.9878176, 0.9880892) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree13" parent="OnTheGround/MainlandTrees" unique_id=180757102 instance=ExtResource("15_m0rx6")] +position = Vector2(273.47293, 287.47516) +scale = Vector2(1.0294399, 0.993127) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree14" parent="OnTheGround/MainlandTrees" unique_id=1594028448 instance=ExtResource("15_m0rx6")] +position = Vector2(-312.2375, -203.26157) +scale = Vector2(0.881887, 0.9635034) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree15" parent="OnTheGround/MainlandTrees" unique_id=826718547 instance=ExtResource("15_m0rx6")] +position = Vector2(-182.09901, 324.79016) +scale = Vector2(1.1635358, 1.1250795) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree16" parent="OnTheGround/MainlandTrees" unique_id=2088971067 instance=ExtResource("15_m0rx6")] +position = Vector2(233.12875, -221.16853) +scale = Vector2(1.0497078, 1.1303118) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree17" parent="OnTheGround/MainlandTrees" unique_id=1443428278 instance=ExtResource("15_m0rx6")] +position = Vector2(-169.5148, -255.8252) +scale = Vector2(1.1791716, 1.0999084) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree18" parent="OnTheGround/MainlandTrees" unique_id=372811259 instance=ExtResource("15_m0rx6")] +position = Vector2(-66.58873, -124.69208) +scale = Vector2(1.1113334, 1.0213624) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree19" parent="OnTheGround/MainlandTrees" unique_id=1751694238 instance=ExtResource("15_m0rx6")] +position = Vector2(-25.792786, -274) +scale = Vector2(0.86473536, 0.803902) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree20" parent="OnTheGround/MainlandTrees" unique_id=904131737 instance=ExtResource("15_m0rx6")] +position = Vector2(356.88422, -139.89676) +scale = Vector2(1.1052591, 1.015903) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree21" parent="OnTheGround/MainlandTrees" unique_id=1730237679 instance=ExtResource("15_m0rx6")] +position = Vector2(99.99547, -193.81485) +scale = Vector2(0.8810603, 0.8266253) +sprite_frames = ExtResource("22_af6h4") + +[node name="GoalIslandTrees" type="Node2D" parent="OnTheGround" unique_id=1468544308] +y_sort_enabled = true +position = Vector2(2503, -307) + +[node name="Tree" parent="OnTheGround/GoalIslandTrees" unique_id=1508656272 instance=ExtResource("15_m0rx6")] +position = Vector2(74, 17.705132) +scale = Vector2(0.91041744, 0.91807616) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree2" parent="OnTheGround/GoalIslandTrees" unique_id=1712542274 instance=ExtResource("15_m0rx6")] +position = Vector2(596.99994, 32.999992) +scale = Vector2(0.90681326, 0.8604097) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree3" parent="OnTheGround/GoalIslandTrees" unique_id=2086123740 instance=ExtResource("15_m0rx6")] +position = Vector2(498.99988, -35.000008) +scale = Vector2(0.99412525, 0.9663038) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree4" parent="OnTheGround/GoalIslandTrees" unique_id=1968784305 instance=ExtResource("15_m0rx6")] +position = Vector2(716, -34.999992) +scale = Vector2(1.2352074, 1.145074) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree5" parent="OnTheGround/GoalIslandTrees" unique_id=1457189924 instance=ExtResource("15_m0rx6")] +position = Vector2(120, 71) +scale = Vector2(0.8409739, 0.9022613) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree6" parent="OnTheGround/GoalIslandTrees" unique_id=188323504 instance=ExtResource("15_m0rx6")] +position = Vector2(120.99997, 367) +scale = Vector2(0.88572556, 0.95690763) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree7" parent="OnTheGround/GoalIslandTrees" unique_id=846691976 instance=ExtResource("15_m0rx6")] +position = Vector2(197.03052, 445.64508) +scale = Vector2(1.140012, 1.0656894) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree8" parent="OnTheGround/GoalIslandTrees" unique_id=1850772346 instance=ExtResource("15_m0rx6")] +position = Vector2(718, 442) +scale = Vector2(0.9238967, 0.8405191) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree9" parent="OnTheGround/GoalIslandTrees" unique_id=1446800330 instance=ExtResource("15_m0rx6")] +position = Vector2(109.00003, 461) +scale = Vector2(0.8809659, 0.9538683) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree10" parent="OnTheGround/GoalIslandTrees" unique_id=1414871319 instance=ExtResource("15_m0rx6")] +position = Vector2(781.99994, 457) +scale = Vector2(1.1887994, 1.1315321) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree11" parent="OnTheGround/GoalIslandTrees" unique_id=1475140265 instance=ExtResource("15_m0rx6")] +position = Vector2(785.0001, 34.00006) +scale = Vector2(0.99783194, 0.9487263) +sprite_frames = ExtResource("22_af6h4") + +[node name="MainlandTrees2" type="Area2D" parent="OnTheGround" unique_id=1629964911] +y_sort_enabled = true +monitoring = false +monitorable = false + +[node name="AreaFiller" type="Node" parent="OnTheGround/MainlandTrees2" unique_id=912823653] +script = ExtResource("14_2lxhj") +scenes = Array[PackedScene]([ExtResource("15_m0rx6")]) +sprite_frames = Array[SpriteFrames]([ExtResource("22_af6h4")]) +minimum_separation = 160.0 +metadata/_custom_type_script = "uid://bdhjixygupit1" + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="OnTheGround/MainlandTrees2" unique_id=581266831] +position = Vector2(728, -489) +polygon = PackedVector2Array(-128, 0, 1280, 0, 1280, 256, 896, 256, 896, 128, 256, 128, 269, 843, -146, 856) +disabled = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/MainlandTrees2" unique_id=1714458974] +position = Vector2(1540.5, 83) +shape = SubResource("RectangleShape2D_egghn") +disabled = true + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="OnTheGround/MainlandTrees2" unique_id=534630367] +position = Vector2(2005, 741) +shape = SubResource("RectangleShape2D_af6h4") +disabled = true + +[node name="Tree" parent="OnTheGround/MainlandTrees2" unique_id=365811385 instance=ExtResource("15_m0rx6")] +position = Vector2(616, -80.00003) +scale = Vector2(0.90834564, 0.8499765) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree2" parent="OnTheGround/MainlandTrees2" unique_id=1090651330 instance=ExtResource("15_m0rx6")] +position = Vector2(725.29663, -269.56256) +scale = Vector2(1.0078411, 1.0667458) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree3" parent="OnTheGround/MainlandTrees2" unique_id=1136939531 instance=ExtResource("15_m0rx6")] +position = Vector2(830.4794, -410.96402) +scale = Vector2(0.8473483, 0.9106804) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree4" parent="OnTheGround/MainlandTrees2" unique_id=586657838 instance=ExtResource("15_m0rx6")] +position = Vector2(895.9521, -192.58957) +scale = Vector2(1.1245168, 1.0254066) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree5" parent="OnTheGround/MainlandTrees2" unique_id=1139537903 instance=ExtResource("15_m0rx6")] +position = Vector2(769.00006, -140.00002) +scale = Vector2(1.0326356, 1.0640191) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree6" parent="OnTheGround/MainlandTrees2" unique_id=888976524 instance=ExtResource("15_m0rx6")] +position = Vector2(849.7183, 76.88718) +scale = Vector2(0.90331686, 0.9179222) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree7" parent="OnTheGround/MainlandTrees2" unique_id=898643502 instance=ExtResource("15_m0rx6")] +position = Vector2(693.81995, 3.355896) +scale = Vector2(1.0992033, 1.0650455) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree8" parent="OnTheGround/MainlandTrees2" unique_id=1905242783 instance=ExtResource("15_m0rx6")] +position = Vector2(998.9419, -373.69608) +scale = Vector2(0.84709865, 0.9029125) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree9" parent="OnTheGround/MainlandTrees2" unique_id=1271037313 instance=ExtResource("15_m0rx6")] +position = Vector2(814.4572, 240.2552) +scale = Vector2(0.91423494, 0.89207804) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree10" parent="OnTheGround/MainlandTrees2" unique_id=670917630 instance=ExtResource("15_m0rx6")] +position = Vector2(1145, -387.00003) +scale = Vector2(0.87843996, 0.89011073) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree11" parent="OnTheGround/MainlandTrees2" unique_id=1938574269 instance=ExtResource("15_m0rx6")] +position = Vector2(1310.2441, -381.055) +scale = Vector2(0.9562297, 1.059875) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree12" parent="OnTheGround/MainlandTrees2" unique_id=37338167 instance=ExtResource("15_m0rx6")] +position = Vector2(1564.1642, -391.8567) +scale = Vector2(1.1006482, 1.0145514) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree13" parent="OnTheGround/MainlandTrees2" unique_id=652738713 instance=ExtResource("15_m0rx6")] +position = Vector2(933, -57) +scale = Vector2(1.1400412, 1.0419629) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree14" parent="OnTheGround/MainlandTrees2" unique_id=59106303 instance=ExtResource("15_m0rx6")] +position = Vector2(1759.9575, -319.19) +scale = Vector2(0.95796627, 1.011901) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree15" parent="OnTheGround/MainlandTrees2" unique_id=429294891 instance=ExtResource("15_m0rx6")] +position = Vector2(978.7207, 290.64398) +scale = Vector2(0.9741015, 0.9307729) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree16" parent="OnTheGround/MainlandTrees2" unique_id=1412949562 instance=ExtResource("15_m0rx6")] +position = Vector2(1665, -426) +scale = Vector2(1.0656385, 1.1548406) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree17" parent="OnTheGround/MainlandTrees2" unique_id=1728831534 instance=ExtResource("15_m0rx6")] +position = Vector2(1917.6696, -423.23862) +scale = Vector2(1.0813961, 1.0721976) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree18" parent="OnTheGround/MainlandTrees2" unique_id=749769927 instance=ExtResource("15_m0rx6")] +position = Vector2(1939.2175, -254.73369) +scale = Vector2(1.1359315, 1.1692363) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree19" parent="OnTheGround/MainlandTrees2" unique_id=454996869 instance=ExtResource("15_m0rx6")] +position = Vector2(1734, -44.000008) +scale = Vector2(0.8514846, 0.8405668) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree20" parent="OnTheGround/MainlandTrees2" unique_id=1611843941 instance=ExtResource("15_m0rx6")] +position = Vector2(1650.0001, 241) +scale = Vector2(1.2318281, 1.139929) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree21" parent="OnTheGround/MainlandTrees2" unique_id=242823803 instance=ExtResource("15_m0rx6")] +position = Vector2(1794.7654, 191.60925) +scale = Vector2(0.8363585, 0.8501343) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree22" parent="OnTheGround/MainlandTrees2" unique_id=1937599376 instance=ExtResource("15_m0rx6")] +position = Vector2(1638, -244) +scale = Vector2(0.9824566, 0.9623643) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree23" parent="OnTheGround/MainlandTrees2" unique_id=1594325461 instance=ExtResource("15_m0rx6")] +position = Vector2(1391.0596, -107.332184) +scale = Vector2(1.1778146, 1.1093237) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree24" parent="OnTheGround/MainlandTrees2" unique_id=1854333406 instance=ExtResource("15_m0rx6")] +position = Vector2(1186.0001, 195) +scale = Vector2(1.0548526, 1.0057768) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree25" parent="OnTheGround/MainlandTrees2" unique_id=811643016 instance=ExtResource("15_m0rx6")] +position = Vector2(1346, 210) +scale = Vector2(0.8233773, 0.90008277) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree26" parent="OnTheGround/MainlandTrees2" unique_id=869459268 instance=ExtResource("15_m0rx6")] +position = Vector2(1166.2678, -2.656868) +scale = Vector2(0.77199364, 0.81760675) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree27" parent="OnTheGround/MainlandTrees2" unique_id=1778291421 instance=ExtResource("15_m0rx6")] +position = Vector2(1297, -44) +scale = Vector2(1.042538, 1.0757734) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree28" parent="OnTheGround/MainlandTrees2" unique_id=37379515 instance=ExtResource("15_m0rx6")] +position = Vector2(1501.8622, 262.58252) +scale = Vector2(0.78153646, 0.8574731) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree29" parent="OnTheGround/MainlandTrees2" unique_id=1197943615 instance=ExtResource("15_m0rx6")] +position = Vector2(2170.25, 527.40643) +scale = Vector2(1.1178607, 1.1003741) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree30" parent="OnTheGround/MainlandTrees2" unique_id=103911312 instance=ExtResource("15_m0rx6")] +position = Vector2(1985.6162, 726.23444) +scale = Vector2(0.9467818, 0.87009734) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree31" parent="OnTheGround/MainlandTrees2" unique_id=83460711 instance=ExtResource("15_m0rx6")] +position = Vector2(1884.136, 924.35223) +scale = Vector2(1.0523496, 1.161326) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree32" parent="OnTheGround/MainlandTrees2" unique_id=1848865251 instance=ExtResource("15_m0rx6")] +position = Vector2(2101.2048, 359.8262) +scale = Vector2(0.93604624, 0.90755993) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree33" parent="OnTheGround/MainlandTrees2" unique_id=1991163886 instance=ExtResource("15_m0rx6")] +position = Vector2(1934, 1096) +scale = Vector2(1.0472562, 1.0673932) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree34" parent="OnTheGround/MainlandTrees2" unique_id=1947847215 instance=ExtResource("15_m0rx6")] +position = Vector2(2153.5498, 864.767) +scale = Vector2(1.197952, 1.1202215) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree35" parent="OnTheGround/MainlandTrees2" unique_id=1326368980 instance=ExtResource("15_m0rx6")] +position = Vector2(1883.8876, 330.35193) +scale = Vector2(1.2563885, 1.1981354) +sprite_frames = ExtResource("22_af6h4") + +[node name="Tree36" parent="OnTheGround/MainlandTrees2" unique_id=1125146599 instance=ExtResource("15_m0rx6")] +position = Vector2(1948.4258, 518.8339) +scale = Vector2(0.8267846, 0.8332844) +sprite_frames = ExtResource("22_af6h4") + +[node name="EnemyNavigationRegion" type="NavigationRegion2D" parent="." unique_id=540584431] +editor_description = "The region that the enemy can cross. + +This is not done with a navigation layer in the tilemap because we want the enemy to be able to cross some bridges but not others. The plot reason is that islands where people tell stories keep the void at bay. The gameplay reason is that it gives the player breathing room.s" +visible = false +position = Vector2(1386, -513) +navigation_polygon = SubResource("NavigationPolygon_05yrb") +metadata/_edit_lock_ = true + +[node name="EnemyPatrolPath" type="Path2D" parent="." unique_id=1060291554] +curve = SubResource("Curve2D_sgtqv") + +[node name="EnemyTrigger" type="Area2D" parent="." unique_id=1496995355] +position = Vector2(735, 1121) +collision_layer = 0 +monitorable = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyTrigger" unique_id=206364431] +shape = SubResource("RectangleShape2D_sgtqv") + +[node name="GoalReachedTrigger" type="Area2D" parent="." unique_id=571724318] +position = Vector2(2567, -160) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="GoalReachedTrigger" unique_id=1687831628] +shape = SubResource("RectangleShape2D_m0rx6") + +[node name="Cinematic" type="Node2D" parent="." unique_id=1139658859] +script = ExtResource("20_f8xlp") +dialogue = ExtResource("17_u5x30") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="BackgroundMusic" type="Node" parent="." unique_id=1056582654] +script = ExtResource("22_fs5pc") +stream = ExtResource("23_xfbr2") +clip = &"Still" +metadata/_custom_type_script = "uid://c8405c212rbn6" + +[node name="ClipSwitcher" type="Node" parent="BackgroundMusic" unique_id=2043998519 node_paths=PackedStringArray("trigger")] +script = ExtResource("24_tjonm") +clip = &"Bloom" +trigger = NodePath("../../EnemyTrigger") +metadata/_custom_type_script = "uid://c2lx7gvkonxaa" + +[node name="ClipSwitcher2" type="Node" parent="BackgroundMusic" unique_id=1198543110 node_paths=PackedStringArray("trigger")] +script = ExtResource("24_tjonm") +clip = &"Still" +trigger = NodePath("../../GoalReachedTrigger") +metadata/_custom_type_script = "uid://c2lx7gvkonxaa" + +[node name="HUD" parent="." unique_id=1426591993 instance=ExtResource("25_xfbr2")] + +[connection signal="interaction_ended" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_started"] +[connection signal="interaction_ended" from="OnTheGround/Townie2/InteractArea" to="OnTheGround/Townie2" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie2/InteractArea" to="OnTheGround/Townie2" method="_on_interact_area_interaction_started"] +[connection signal="body_entered" from="EnemyTrigger" to="OnTheGround/VoidSpreadingEnemy" method="start" flags=6] +[connection signal="body_entered" from="GoalReachedTrigger" to="OnTheGround/VoidSpreadingEnemy" method="defeat" flags=6 unbinds=1] diff --git a/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.dialogue b/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.dialogue new file mode 100644 index 0000000000..a6348f6d07 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.dialogue @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +Arun: This way, StoryWeaver! +Arun: Oh... It looks like the Void took out the bridge after I crossed. +Arun: Take that ball of yarn! +Arun: With it, you can hook pins and needles to grapple across the water and the Void. +Arun: I'll wait for you here! +=> END + +~ interact +Arun: You made it! +if all_buttons_collected(): + Arun: And it looks like you picked up all the buttons. Very thorough! +else: + Arun: You missed a few buttons, though. No problem! +Arun: Pick up the thread, and we can move on to Fray's End. +=> END + +~ thread_collected +Arun: At last! We'll be at Fray's End in no time. +Arun: Take the threads you've collected to the Eternal Loom when you get there. +Arun: It's huge. You can't miss it. +=> END diff --git a/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.dialogue.import b/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.dialogue.import new file mode 100644 index 0000000000..bbd6afcbb1 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://ci8ll31uofkiw" +path="res://.godot/imported/tutorial_grappling.dialogue-572ff0febb6d91fbcd09d9034d38eec8.tres" + +[deps] + +source_file="res://scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.dialogue" +dest_files=["res://.godot/imported/tutorial_grappling.dialogue-572ff0febb6d91fbcd09d9034d38eec8.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.gd b/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.gd new file mode 100644 index 0000000000..dbb6849838 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.gd @@ -0,0 +1,9 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D + +@onready var buttons: Node2D = %Buttons + + +func all_buttons_collected() -> bool: + return buttons.get_child_count() == 0 diff --git a/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.gd.uid b/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.gd.uid new file mode 100644 index 0000000000..883a1cda42 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.gd.uid @@ -0,0 +1 @@ +uid://ddu7xbdvqyro4 diff --git a/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.tscn b/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.tscn new file mode 100644 index 0000000000..3afe1e061a --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.tscn @@ -0,0 +1,368 @@ +[gd_scene format=4 uid="uid://dmoxtp65y3r2w"] + +[ext_resource type="Script" uid="uid://ddu7xbdvqyro4" path="res://scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.gd" id="1_512nx"] +[ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="1_ulid8"] +[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="2_u0gb1"] +[ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="3_1lne7"] +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="4_kxe6o"] +[ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="5_pldqy"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="6_0qp3n"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="6_p6v4v"] +[ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="7_8exlu"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="8_cww35"] +[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="9_3e5u1"] +[ext_resource type="Script" uid="uid://dagrhfrj0f33i" path="res://scenes/game_logic/camera_behaviors/frame_camera_behavior.gd" id="10_6j85c"] +[ext_resource type="PackedScene" uid="uid://evb46lm6ssu2" path="res://scenes/game_elements/props/hookable_pin/hookable_pin.tscn" id="10_nnwuj"] +[ext_resource type="PackedScene" uid="uid://dohb701lxbe5s" path="res://scenes/game_elements/props/hookable_needle/hookable_needle.tscn" id="11_j3k8p"] +[ext_resource type="PackedScene" uid="uid://1vunygl4wpj6" path="res://scenes/game_elements/props/button_item/button_item.tscn" id="11_umhh8"] +[ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="12_s8bcj"] +[ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="13_qywun"] +[ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="14_o5vgf"] +[ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="15_75m28"] +[ext_resource type="PackedScene" uid="uid://dmevaymmt6wco" path="res://scenes/game_elements/props/powerup/powerup.tscn" id="16_tjibw"] +[ext_resource type="SpriteFrames" uid="uid://cfgahyntmtfgu" path="res://scenes/game_elements/props/powerup/components/powerup_thread.tres" id="17_k7scg"] +[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="18_ifd06"] +[ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="18_x2ecx"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="19_j3k8p"] +[ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="20_fhcwk"] +[ext_resource type="Resource" uid="uid://ci8ll31uofkiw" path="res://scenes/quests/lore_quests/quest_000/6_grappling/tutorial_grappling.dialogue" id="21_x2ecx"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="24_fhcwk"] +[ext_resource type="PackedScene" uid="uid://dv4f232y8w8dv" path="res://scenes/game_elements/props/decoration/water_rock/water_rock.tscn" id="26_3gauf"] +[ext_resource type="Script" uid="uid://c8405c212rbn6" path="res://scenes/game_elements/props/background_music/components/background_music.gd" id="26_g5fhy"] +[ext_resource type="SpriteFrames" uid="uid://djwymcffy83" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_red.tres" id="26_q58wb"] +[ext_resource type="AudioStream" uid="uid://bwgtbylflkup2" path="res://scenes/quests/lore_quests/quest_002/components/void_music.tres" id="27_fj8uc"] +[ext_resource type="SpriteFrames" uid="uid://bgckvdkxuxrgh" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_red_large.tres" id="28_512nx"] +[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="29_4lfn5"] +[ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="30_3gauf"] +[ext_resource type="PackedScene" uid="uid://c0374lgarm8gj" path="res://scenes/game_elements/fx/clouds_shadow/clouds_shadow.tscn" id="32_0qp3n"] + +[sub_resource type="Resource" id="Resource_u8qfb"] +script = ExtResource("13_qywun") +type = 1 +metadata/_custom_type_script = "uid://bgmwplmj3bfls" + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_tonmj"] +size = Vector2(52, 61) + +[node name="TutorialGrappling" type="Node2D" unique_id=217609538] +script = ExtResource("1_512nx") + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=2088852286] +metadata/_edit_lock_ = true + +[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=300386063] +z_index = -1 +material = ExtResource("1_ulid8") +tile_map_data = PackedByteArray("AAD8//z/AAAAAAAAAAD8//3/AAAAAAAAAAD8//7/AAAAAAAAAAD8////AAAAAAAAAAD8/wAAAAAAAAAAAAD8/wEAAAAAAAAAAAD8/wIAAAAAAAAAAAD8/wMAAAAAAAAAAAD8/wQAAAAAAAAAAAD8/wUAAAAAAAAAAAD8/wYAAAAAAAAAAAD8/wcAAAAAAAAAAAD9//z/AAAAAAAAAAD9//3/AAAAAAAAAAD9//7/AAAAAAAAAAD9////AAAAAAAAAAD9/wAAAAAAAAAAAAD9/wEAAAAAAAAAAAD9/wIAAAAAAAAAAAD9/wMAAAAAAAAAAAD9/wQAAAAAAAAAAAD9/wUAAAAAAAAAAAD9/wYAAAAAAAAAAAD9/wcAAAAAAAAAAAD+//z/AAAAAAAAAAD+//3/AAAAAAAAAAD+//7/AAAAAAAAAAD+////AAAAAAAAAAD+/wAAAAAAAAAAAAD+/wEAAAAAAAAAAAD+/wIAAAAAAAAAAAD+/wMAAAAAAAAAAAD+/wQAAAAAAAAAAAD+/wUAAAAAAAAAAAD+/wYAAAAAAAAAAAD+/wcAAAAAAAAAAAD///z/AAAAAAAAAAD///3/AAAAAAAAAAD///7/AAAAAAAAAAD/////AAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAD//wcAAAAAAAAAAAAAAPz/AAAAAAAAAAAAAP3/AAAAAAAAAAAAAP7/AAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAD3/wgAAAAAAAAAAAD3/wkAAAAAAAAAAAD3/woAAAAAAAAAAAD3/wsAAAAAAAAAAAD3/wwAAAAAAAAAAAD4/wgAAAAAAAAAAAD4/wkAAAAAAAAAAAD4/woAAAAAAAAAAAD4/wsAAAAAAAAAAAD4/wwAAAAAAAAAAAD5/wgAAAAAAAAAAAD5/wkAAAAAAAAAAAD5/woAAAAAAAAAAAD5/wsAAAAAAAAAAAD5/wwAAAAAAAAAAAD6/wgAAAAAAAAAAAD6/wkAAAAAAAAAAAD6/woAAAAAAAAAAAD6/wsAAAAAAAAAAAD6/wwAAAAAAAAAAAD7/wgAAAAAAAAAAAD7/wkAAAAAAAAAAAD7/woAAAAAAAAAAAD7/wsAAAAAAAAAAAD7/wwAAAAAAAAAAAD8/wgAAAAAAAAAAAD8/wkAAAAAAAAAAAD8/woAAAAAAAAAAAD8/wsAAAAAAAAAAAD8/wwAAAAAAAAAAAD9/wgAAAAAAAAAAAD9/wkAAAAAAAAAAAD9/woAAAAAAAAAAAD9/wsAAAAAAAAAAAD9/wwAAAAAAAAAAAD+/wgAAAAAAAAAAAD+/wkAAAAAAAAAAAD+/woAAAAAAAAAAAD+/wsAAAAAAAAAAAD+/wwAAAAAAAAAAAD//wgAAAAAAAAAAAD//wkAAAAAAAAAAAD//woAAAAAAAAAAAD//wsAAAAAAAAAAAD//wwAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAwAAAAAAAAAAAD1//z/AAAAAAAAAAD1//3/AAAAAAAAAAD1//7/AAAAAAAAAAD1////AAAAAAAAAAD1/wAAAAAAAAAAAAD2//z/AAAAAAAAAAD2//3/AAAAAAAAAAD2//7/AAAAAAAAAAD2////AAAAAAAAAAD2/wAAAAAAAAAAAAD3//z/AAAAAAAAAAD3//3/AAAAAAAAAAD3//7/AAAAAAAAAAD3////AAAAAAAAAAD3/wAAAAAAAAAAAAD4//z/AAAAAAAAAAD4//3/AAAAAAAAAAD4//7/AAAAAAAAAAD4////AAAAAAAAAAD4/wAAAAAAAAAAAAD5//z/AAAAAAAAAAD5//3/AAAAAAAAAAD5//7/AAAAAAAAAAD5////AAAAAAAAAAD5/wAAAAAAAAAAAAD6//z/AAAAAAAAAAD6//3/AAAAAAAAAAD6//7/AAAAAAAAAAD6////AAAAAAAAAAD6/wAAAAAAAAAAAAD7//z/AAAAAAAAAAD7//3/AAAAAAAAAAD7//7/AAAAAAAAAAD7////AAAAAAAAAAD7/wAAAAAAAAAAAADy//3/AAAAAAAAAADy//7/AAAAAAAAAADy////AAAAAAAAAADy/wAAAAAAAAAAAADy/wEAAAAAAAAAAADy/wMAAAAAAAAAAADy/wQAAAAAAAAAAADy/wUAAAAAAAAAAADy/wYAAAAAAAAAAADy/wcAAAAAAAAAAADz//3/AAAAAAAAAADz//7/AAAAAAAAAADz////AAAAAAAAAADz/wAAAAAAAAAAAADz/wEAAAAAAAAAAADz/wIAAAAAAAAAAADz/wMAAAAAAAAAAADz/wQAAAAAAAAAAADz/wUAAAAAAAAAAADz/wYAAAAAAAAAAADz/wcAAAAAAAAAAADz/wgAAAAAAAAAAADz/wkAAAAAAAAAAADz/woAAAAAAAAAAAD0//3/AAAAAAAAAAD0//7/AAAAAAAAAAD0////AAAAAAAAAAD0/wAAAAAAAAAAAAD0/wEAAAAAAAAAAAD0/wIAAAAAAAAAAAD0/wMAAAAAAAAAAAD0/wQAAAAAAAAAAAD0/wUAAAAAAAAAAAD0/wYAAAAAAAAAAAD0/wcAAAAAAAAAAAD0/wgAAAAAAAAAAAD0/wkAAAAAAAAAAAD0/woAAAAAAAAAAADz/wsAAAAAAAAAAADz/wwAAAAAAAAAAAD0/wsAAAAAAAAAAAD0/wwAAAAAAAAAAAD1/wkAAAAAAAAAAAD1/woAAAAAAAAAAAD1/wsAAAAAAAAAAAD1/wwAAAAAAAAAAAD2/wkAAAAAAAAAAAD2/woAAAAAAAAAAAD2/wsAAAAAAAAAAAD2/wwAAAAAAAAAAAD1/wgAAAAAAAAAAAD2/wgAAAAAAAAAAAABAAoAAAAAAAAAAAABAAsAAAAAAAAAAAABAAwAAAAAAAAAAAACAAoAAAAAAAAAAAACAAsAAAAAAAAAAAACAAwAAAAAAAAAAAADAAoAAAAAAAAAAAADAAsAAAAAAAAAAAADAAwAAAAAAAAAAAAEAAoAAAAAAAAAAAAEAAsAAAAAAAAAAAAEAAwAAAAAAAAAAAAFAAoAAAAAAAAAAAAFAAsAAAAAAAAAAAAFAAwAAAAAAAAAAAAGAAoAAAAAAAAAAAAGAAsAAAAAAAAAAAAGAAwAAAAAAAAAAAAHAAoAAAAAAAAAAAAHAAsAAAAAAAAAAAAHAAwAAAAAAAAAAAAIAAoAAAAAAAAAAAAIAAsAAAAAAAAAAAAIAAwAAAAAAAAAAAAJAAoAAAAAAAAAAAAJAAsAAAAAAAAAAAAJAAwAAAAAAAAAAAAKAAoAAAAAAAAAAAAKAAsAAAAAAAAAAAAKAAwAAAAAAAAAAAALAAoAAAAAAAAAAAALAAsAAAAAAAAAAAALAAwAAAAAAAAAAAAMAAoAAAAAAAAAAAAMAAsAAAAAAAAAAAAMAAwAAAAAAAAAAAANAAoAAAAAAAAAAAANAAsAAAAAAAAAAAANAAwAAAAAAAAAAAAOAAoAAAAAAAAAAAAOAAsAAAAAAAAAAAAOAAwAAAAAAAAAAAAPAAoAAAAAAAAAAAAPAAsAAAAAAAAAAAAPAAwAAAAAAAAAAAAQAAoAAAAAAAAAAAAQAAsAAAAAAAAAAAAQAAwAAAAAAAAAAAARAAoAAAAAAAAAAAARAAsAAAAAAAAAAAARAAwAAAAAAAAAAAASAAoAAAAAAAAAAAASAAsAAAAAAAAAAAASAAwAAAAAAAAAAAATAAoAAAAAAAAAAAATAAsAAAAAAAAAAAATAAwAAAAAAAAAAAAUAAoAAAAAAAAAAAAUAAsAAAAAAAAAAAAUAAwAAAAAAAAAAAAVAAoAAAAAAAAAAAAVAAsAAAAAAAAAAAAVAAwAAAAAAAAAAAAWAAoAAAAAAAAAAAAWAAsAAAAAAAAAAAAWAAwAAAAAAAAAAAAXAAoAAAAAAAAAAAAXAAsAAAAAAAAAAAAXAAwAAAAAAAAAAAAYAP//AAAAAAAAAAAYAAAAAAAAAAAAAAAYAAEAAAAAAAAAAAAYAAIAAAAAAAAAAAAYAAMAAAAAAAAAAAAYAAQAAAAAAAAAAAAYAAUAAAAAAAAAAAAYAAYAAAAAAAAAAAAYAAcAAAAAAAAAAAAYAAgAAAAAAAAAAAAYAAkAAAAAAAAAAAAYAAoAAAAAAAAAAAAYAAsAAAAAAAAAAAAYAAwAAAAAAAAAAAAZAP//AAAAAAAAAAAZAAAAAAAAAAAAAAAZAAEAAAAAAAAAAAAZAAIAAAAAAAAAAAAZAAMAAAAAAAAAAAAZAAQAAAAAAAAAAAAZAAUAAAAAAAAAAAAZAAYAAAAAAAAAAAAZAAcAAAAAAAAAAAAZAAgAAAAAAAAAAAAZAAkAAAAAAAAAAAAZAAoAAAAAAAAAAAAZAAsAAAAAAAAAAAAZAAwAAAAAAAAAAAAaAP//AAAAAAAAAAAaAAAAAAAAAAAAAAAaAAEAAAAAAAAAAAAaAAIAAAAAAAAAAAAaAAMAAAAAAAAAAAAaAAQAAAAAAAAAAAAaAAUAAAAAAAAAAAAaAAYAAAAAAAAAAAAaAAcAAAAAAAAAAAAaAAgAAAAAAAAAAAAaAAkAAAAAAAAAAAAaAAoAAAAAAAAAAAAaAAsAAAAAAAAAAAAaAAwAAAAAAAAAAAD///b/AAAAAAAAAAD///f/AAAAAAAAAAD///j/AAAAAAAAAAD///n/AAAAAAAAAAD///r/AAAAAAAAAAD///v/AAAAAAAAAAAAAPb/AAAAAAAAAAAAAPf/AAAAAAAAAAAAAPj/AAAAAAAAAAAAAPn/AAAAAAAAAAAAAPr/AAAAAAAAAAAAAPv/AAAAAAAAAAABAPb/AAAAAAAAAAABAPf/AAAAAAAAAAABAPj/AAAAAAAAAAABAPn/AAAAAAAAAAABAPr/AAAAAAAAAAABAPv/AAAAAAAAAAACAPb/AAAAAAAAAAACAPf/AAAAAAAAAAACAPj/AAAAAAAAAAACAPn/AAAAAAAAAAACAPr/AAAAAAAAAAACAPv/AAAAAAAAAAADAPb/AAAAAAAAAAADAPf/AAAAAAAAAAADAPj/AAAAAAAAAAADAPn/AAAAAAAAAAADAPr/AAAAAAAAAAADAPv/AAAAAAAAAAAEAPb/AAAAAAAAAAAEAPf/AAAAAAAAAAAEAPj/AAAAAAAAAAAEAPn/AAAAAAAAAAAEAPr/AAAAAAAAAAAEAPv/AAAAAAAAAAAFAPb/AAAAAAAAAAAFAPf/AAAAAAAAAAAFAPj/AAAAAAAAAAAFAPn/AAAAAAAAAAAFAPr/AAAAAAAAAAAFAPv/AAAAAAAAAAAGAPb/AAAAAAAAAAAGAPf/AAAAAAAAAAAGAPj/AAAAAAAAAAAGAPn/AAAAAAAAAAAGAPr/AAAAAAAAAAAGAPv/AAAAAAAAAAAHAPb/AAAAAAAAAAAHAPf/AAAAAAAAAAAHAPj/AAAAAAAAAAAHAPn/AAAAAAAAAAAHAPr/AAAAAAAAAAAHAPv/AAAAAAAAAAAIAPb/AAAAAAAAAAAIAPf/AAAAAAAAAAAIAPj/AAAAAAAAAAAIAPn/AAAAAAAAAAAIAPr/AAAAAAAAAAAIAPv/AAAAAAAAAAAJAPX/AAAAAAAAAAAKAPX/AAAAAAAAAAALAPX/AAAAAAAAAAAMAPX/AAAAAAAAAAANAPX/AAAAAAAAAAAOAPX/AAAAAAAAAAAPAPX/AAAAAAAAAAAQAPX/AAAAAAAAAAASAPX/AAAAAAAAAAASAPb/AAAAAAAAAAASAPf/AAAAAAAAAAASAPj/AAAAAAAAAAASAPn/AAAAAAAAAAASAPr/AAAAAAAAAAASAPv/AAAAAAAAAAATAPX/AAAAAAAAAAATAPb/AAAAAAAAAAATAPf/AAAAAAAAAAATAPj/AAAAAAAAAAATAPn/AAAAAAAAAAATAPr/AAAAAAAAAAATAPv/AAAAAAAAAAAUAPX/AAAAAAAAAAAUAPb/AAAAAAAAAAAUAPf/AAAAAAAAAAAUAPj/AAAAAAAAAAAUAPn/AAAAAAAAAAAUAPr/AAAAAAAAAAAUAPv/AAAAAAAAAAAVAPX/AAAAAAAAAAAVAPb/AAAAAAAAAAAVAPf/AAAAAAAAAAAVAPj/AAAAAAAAAAAVAPn/AAAAAAAAAAAVAPr/AAAAAAAAAAAVAPv/AAAAAAAAAAAWAPX/AAAAAAAAAAAWAPb/AAAAAAAAAAAWAPf/AAAAAAAAAAAWAPj/AAAAAAAAAAAWAPn/AAAAAAAAAAAWAPr/AAAAAAAAAAAWAPv/AAAAAAAAAAAXAPX/AAAAAAAAAAAXAPb/AAAAAAAAAAAXAPf/AAAAAAAAAAAXAPj/AAAAAAAAAAAXAPn/AAAAAAAAAAAXAPr/AAAAAAAAAAAXAPv/AAAAAAAAAAAYAPX/AAAAAAAAAAAYAPb/AAAAAAAAAAAYAPf/AAAAAAAAAAAYAPj/AAAAAAAAAAAYAPn/AAAAAAAAAAAYAPr/AAAAAAAAAAAYAPv/AAAAAAAAAAAZAPX/AAAAAAAAAAAZAPb/AAAAAAAAAAAZAPf/AAAAAAAAAAAZAPj/AAAAAAAAAAAZAPn/AAAAAAAAAAAZAPr/AAAAAAAAAAAZAPv/AAAAAAAAAAAaAPX/AAAAAAAAAAAaAPb/AAAAAAAAAAAaAPf/AAAAAAAAAAAaAPj/AAAAAAAAAAAaAPn/AAAAAAAAAAAaAPr/AAAAAAAAAAAaAPv/AAAAAAAAAAAbAPX/AAAAAAAAAAAbAPb/AAAAAAAAAAAbAPf/AAAAAAAAAAAbAPj/AAAAAAAAAAAbAPn/AAAAAAAAAAAbAPr/AAAAAAAAAAAbAPv/AAAAAAAAAAAcAPX/AAAAAAAAAAAcAPb/AAAAAAAAAAAcAPf/AAAAAAAAAAAcAPj/AAAAAAAAAAAcAPn/AAAAAAAAAAAcAPr/AAAAAAAAAAAcAPv/AAAAAAAAAAARAPX/AAAAAAAAAAAIAPX/AAAAAAAAAAD///T/AAAAAAAAAAD///X/AAAAAAAAAAAAAPT/AAAAAAAAAAAAAPX/AAAAAAAAAAABAPT/AAAAAAAAAAABAPX/AAAAAAAAAAACAPT/AAAAAAAAAAACAPX/AAAAAAAAAAADAPT/AAAAAAAAAAADAPX/AAAAAAAAAAAEAPT/AAAAAAAAAAAEAPX/AAAAAAAAAAAFAPT/AAAAAAAAAAAFAPX/AAAAAAAAAAAGAPT/AAAAAAAAAAAGAPX/AAAAAAAAAAAHAPT/AAAAAAAAAAAHAPX/AAAAAAAAAAAIAPT/AAAAAAAAAAAJAPT/AAAAAAAAAAAKAPT/AAAAAAAAAAALAPT/AAAAAAAAAAAMAPT/AAAAAAAAAAANAPT/AAAAAAAAAAAOAPT/AAAAAAAAAAAPAPT/AAAAAAAAAAAQAPT/AAAAAAAAAAARAPT/AAAAAAAAAAASAPT/AAAAAAAAAAATAPT/AAAAAAAAAAAUAPT/AAAAAAAAAAAVAPT/AAAAAAAAAAAWAPT/AAAAAAAAAAAXAPT/AAAAAAAAAAAYAPT/AAAAAAAAAAAZAPT/AAAAAAAAAAAaAPT/AAAAAAAAAAAbAPT/AAAAAAAAAAAcAPT/AAAAAAAAAADy/wgAAAAAAAAAAAAVAPz/AAAAAAAAAAAVAP3/AAAAAAAAAAAVAP7/AAAAAAAAAAAVAP//AAAAAAAAAAAVAAAAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAIAAAAAAAAAAAAVAAMAAAAAAAAAAAAVAAQAAAAAAAAAAAAWAPz/AAAAAAAAAAAWAP3/AAAAAAAAAAAWAP7/AAAAAAAAAAAWAP//AAAAAAAAAAAWAAAAAAAAAAAAAAAWAAEAAAAAAAAAAAAWAAIAAAAAAAAAAAAWAAMAAAAAAAAAAAAWAAQAAAAAAAAAAAAXAPz/AAAAAAAAAAAXAP3/AAAAAAAAAAAXAP7/AAAAAAAAAAAXAP//AAAAAAAAAAAXAAAAAAAAAAAAAAAXAAEAAAAAAAAAAAAXAAIAAAAAAAAAAAAXAAMAAAAAAAAAAAAXAAQAAAAAAAAAAAAVAAYAAAAAAAAAAAAVAAcAAAAAAAAAAAAWAAYAAAAAAAAAAAAWAAcAAAAAAAAAAAAXAAYAAAAAAAAAAAAXAAcAAAAAAAAAAAAVAAUAAAAAAAAAAAAVAAgAAAAAAAAAAAAVAAkAAAAAAAAAAAAWAAUAAAAAAAAAAAAWAAgAAAAAAAAAAAAWAAkAAAAAAAAAAAAXAAUAAAAAAAAAAAAXAAgAAAAAAAAAAAAXAAkAAAAAAAAAAAAZAPz/AAAAAAAAAAAZAP3/AAAAAAAAAAAZAP7/AAAAAAAAAAAaAPz/AAAAAAAAAAAaAP3/AAAAAAAAAAAaAP7/AAAAAAAAAAAbAPz/AAAAAAAAAAAbAP3/AAAAAAAAAAAbAP7/AAAAAAAAAAAbAP//AAAAAAAAAAAbAAAAAAAAAAAAAAAbAAEAAAAAAAAAAAAcAPz/AAAAAAAAAAAcAP3/AAAAAAAAAAAcAP7/AAAAAAAAAAAcAP//AAAAAAAAAAAcAAAAAAAAAAAAAAAcAAEAAAAAAAAAAAAYAPz/AAAAAAAAAAAYAP3/AAAAAAAAAAAYAP7/AAAAAAAAAAAJAPb/AAAAAAAAAAAKAPb/AAAAAAAAAAALAPb/AAAAAAAAAAAMAPb/AAAAAAAAAAANAPb/AAAAAAAAAAAOAPb/AAAAAAAAAAAPAPb/AAAAAAAAAAAQAPb/AAAAAAAAAAARAPb/AAAAAAAAAADy/wkAAAAAAAAAAADv/wgAAAAAAAAAAADw/wgAAAAAAAAAAADx/wgAAAAAAAAAAADw/wkAAAAAAAAAAADw/woAAAAAAAAAAADv/wkAAAAAAAAAAADv/woAAAAAAAAAAADx/wkAAAAAAAAAAADv/wUAAAAAAAAAAADv/wYAAAAAAAAAAADw/wUAAAAAAAAAAADw/wYAAAAAAAAAAADx/wUAAAAAAAAAAADx/wYAAAAAAAAAAADu/wUAAAAAAAAAAADu/wYAAAAAAAAAAADr/wUAAAAAAAAAAADr/wYAAAAAAAAAAADs/wUAAAAAAAAAAADs/wYAAAAAAAAAAADt/wUAAAAAAAAAAADt/wYAAAAAAAAAAAD4/wEAAAAAAAAAAAD5/wEAAAAAAAAAAAD6/wEAAAAAAAAAAAD7/wEAAAAAAAAAAAD5/wIAAAAAAAAAAAD6/wIAAAAAAAAAAAD7/wIAAAAAAAAAAAAWAA0AAAAAAAAAAAAWAA4AAAAAAAAAAAAWAA8AAAAAAAAAAAAWABAAAAAAAAAAAAAXAA0AAAAAAAAAAAAXAA4AAAAAAAAAAAAXAA8AAAAAAAAAAAAXABAAAAAAAAAAAAAYAA0AAAAAAAAAAAAYAA4AAAAAAAAAAAAYAA8AAAAAAAAAAAAYABAAAAAAAAAAAAAZAA0AAAAAAAAAAAAZAA4AAAAAAAAAAAAZAA8AAAAAAAAAAAAZABAAAAAAAAAAAAAaAA0AAAAAAAAAAAAaAA4AAAAAAAAAAAAaAA8AAAAAAAAAAAAaABAAAAAAAAAAAAAIABEAAAAAAAAAAAAIABIAAAAAAAAAAAAIABMAAAAAAAAAAAAIABQAAAAAAAAAAAAJABEAAAAAAAAAAAAJABIAAAAAAAAAAAAJABMAAAAAAAAAAAAJABQAAAAAAAAAAAAKABEAAAAAAAAAAAAKABIAAAAAAAAAAAAKABMAAAAAAAAAAAAKABQAAAAAAAAAAAALABEAAAAAAAAAAAALABIAAAAAAAAAAAALABMAAAAAAAAAAAALABQAAAAAAAAAAAAMABEAAAAAAAAAAAAMABIAAAAAAAAAAAAMABMAAAAAAAAAAAAMABQAAAAAAAAAAAANABEAAAAAAAAAAAANABIAAAAAAAAAAAANABMAAAAAAAAAAAANABQAAAAAAAAAAAAOABEAAAAAAAAAAAAOABIAAAAAAAAAAAAOABMAAAAAAAAAAAAOABQAAAAAAAAAAAAPABEAAAAAAAAAAAAPABIAAAAAAAAAAAAPABMAAAAAAAAAAAAPABQAAAAAAAAAAAAQABEAAAAAAAAAAAAQABIAAAAAAAAAAAAQABMAAAAAAAAAAAAQABQAAAAAAAAAAAARABEAAAAAAAAAAAARABIAAAAAAAAAAAARABMAAAAAAAAAAAARABQAAAAAAAAAAAASABEAAAAAAAAAAAASABIAAAAAAAAAAAASABMAAAAAAAAAAAASABQAAAAAAAAAAAATABEAAAAAAAAAAAATABIAAAAAAAAAAAATABMAAAAAAAAAAAATABQAAAAAAAAAAAAUABEAAAAAAAAAAAAUABIAAAAAAAAAAAAUABMAAAAAAAAAAAAUABQAAAAAAAAAAAAVABEAAAAAAAAAAAAVABIAAAAAAAAAAAAVABMAAAAAAAAAAAAVABQAAAAAAAAAAAAWABEAAAAAAAAAAAAWABIAAAAAAAAAAAAWABMAAAAAAAAAAAAWABQAAAAAAAAAAAAXABEAAAAAAAAAAAAXABIAAAAAAAAAAAAXABMAAAAAAAAAAAAXABQAAAAAAAAAAAAYABEAAAAAAAAAAAAYABIAAAAAAAAAAAAYABMAAAAAAAAAAAAYABQAAAAAAAAAAAAZABEAAAAAAAAAAAAZABIAAAAAAAAAAAAZABMAAAAAAAAAAAAZABQAAAAAAAAAAAAaABEAAAAAAAAAAAAaABIAAAAAAAAAAAAaABMAAAAAAAAAAAAaABQAAAAAAAAAAAD2/xEAAAAAAAAAAAD2/xIAAAAAAAAAAAD2/xMAAAAAAAAAAAD2/xQAAAAAAAAAAAD3/xEAAAAAAAAAAAD3/xIAAAAAAAAAAAD3/xMAAAAAAAAAAAD3/xQAAAAAAAAAAAD4/xEAAAAAAAAAAAD4/xIAAAAAAAAAAAD4/xMAAAAAAAAAAAD4/xQAAAAAAAAAAAD5/xEAAAAAAAAAAAD5/xIAAAAAAAAAAAD5/xMAAAAAAAAAAAD5/xQAAAAAAAAAAAD6/xEAAAAAAAAAAAD6/xIAAAAAAAAAAAD6/xMAAAAAAAAAAAD6/xQAAAAAAAAAAAD7/xEAAAAAAAAAAAD7/xIAAAAAAAAAAAD7/xMAAAAAAAAAAAD7/xQAAAAAAAAAAAD8/xEAAAAAAAAAAAD8/xIAAAAAAAAAAAD8/xMAAAAAAAAAAAD8/xQAAAAAAAAAAAD9/xEAAAAAAAAAAAD9/xIAAAAAAAAAAAD9/xMAAAAAAAAAAAD9/xQAAAAAAAAAAAD+/xEAAAAAAAAAAAD+/xIAAAAAAAAAAAD+/xMAAAAAAAAAAAD+/xQAAAAAAAAAAAD//xEAAAAAAAAAAAD//xIAAAAAAAAAAAD//xMAAAAAAAAAAAD//xQAAAAAAAAAAAAAABEAAAAAAAAAAAAAABIAAAAAAAAAAAAAABMAAAAAAAAAAAAAABQAAAAAAAAAAAABABEAAAAAAAAAAAABABIAAAAAAAAAAAABABMAAAAAAAAAAAABABQAAAAAAAAAAAACABEAAAAAAAAAAAACABIAAAAAAAAAAAACABMAAAAAAAAAAAACABQAAAAAAAAAAAADABEAAAAAAAAAAAADABIAAAAAAAAAAAADABMAAAAAAAAAAAADABQAAAAAAAAAAAAEABEAAAAAAAAAAAAEABIAAAAAAAAAAAAEABMAAAAAAAAAAAAEABQAAAAAAAAAAAAFABEAAAAAAAAAAAAFABIAAAAAAAAAAAAFABMAAAAAAAAAAAAFABQAAAAAAAAAAAAGABEAAAAAAAAAAAAGABIAAAAAAAAAAAAGABMAAAAAAAAAAAAGABQAAAAAAAAAAAAHABEAAAAAAAAAAAAHABIAAAAAAAAAAAAHABMAAAAAAAAAAAAHABQAAAAAAAAAAADq/xEAAAAAAAAAAADq/xIAAAAAAAAAAADq/xMAAAAAAAAAAADq/xQAAAAAAAAAAADr/xEAAAAAAAAAAADr/xIAAAAAAAAAAADr/xMAAAAAAAAAAADr/xQAAAAAAAAAAADs/xEAAAAAAAAAAADs/xIAAAAAAAAAAADs/xMAAAAAAAAAAADs/xQAAAAAAAAAAADt/xEAAAAAAAAAAADt/xIAAAAAAAAAAADt/xMAAAAAAAAAAADt/xQAAAAAAAAAAADu/xEAAAAAAAAAAADu/xIAAAAAAAAAAADu/xMAAAAAAAAAAADu/xQAAAAAAAAAAADv/xEAAAAAAAAAAADv/xIAAAAAAAAAAADv/xMAAAAAAAAAAADv/xQAAAAAAAAAAADw/xEAAAAAAAAAAADw/xIAAAAAAAAAAADw/xMAAAAAAAAAAADw/xQAAAAAAAAAAADx/xEAAAAAAAAAAADx/xIAAAAAAAAAAADx/xMAAAAAAAAAAADx/xQAAAAAAAAAAADy/xEAAAAAAAAAAADy/xIAAAAAAAAAAADy/xMAAAAAAAAAAADy/xQAAAAAAAAAAADz/xEAAAAAAAAAAADz/xIAAAAAAAAAAADz/xMAAAAAAAAAAADz/xQAAAAAAAAAAAD0/xEAAAAAAAAAAAD0/xIAAAAAAAAAAAD0/xMAAAAAAAAAAAD0/xQAAAAAAAAAAAD1/xEAAAAAAAAAAAD1/xIAAAAAAAAAAAD1/xMAAAAAAAAAAAD1/xQAAAAAAAAAAADo/wkAAAAAAAAAAADo/woAAAAAAAAAAADo/wsAAAAAAAAAAADo/wwAAAAAAAAAAADo/w0AAAAAAAAAAADo/w4AAAAAAAAAAADo/w8AAAAAAAAAAADo/xAAAAAAAAAAAADp/wkAAAAAAAAAAADp/woAAAAAAAAAAADp/wsAAAAAAAAAAADp/wwAAAAAAAAAAADp/w0AAAAAAAAAAADp/w4AAAAAAAAAAADp/w8AAAAAAAAAAADp/xAAAAAAAAAAAADq/wkAAAAAAAAAAADq/woAAAAAAAAAAADq/wsAAAAAAAAAAADq/wwAAAAAAAAAAADq/w0AAAAAAAAAAADq/w4AAAAAAAAAAADq/w8AAAAAAAAAAADq/xAAAAAAAAAAAADr/wkAAAAAAAAAAADr/woAAAAAAAAAAADr/wsAAAAAAAAAAADr/wwAAAAAAAAAAADr/w0AAAAAAAAAAADr/w4AAAAAAAAAAADr/w8AAAAAAAAAAADr/xAAAAAAAAAAAADs/wkAAAAAAAAAAADs/woAAAAAAAAAAADs/wsAAAAAAAAAAADs/wwAAAAAAAAAAADs/w0AAAAAAAAAAADs/w4AAAAAAAAAAADs/w8AAAAAAAAAAADs/xAAAAAAAAAAAADv/wsAAAAAAAAAAADw/wsAAAAAAAAAAADt/wkAAAAAAAAAAADt/woAAAAAAAAAAADt/wsAAAAAAAAAAADt/wwAAAAAAAAAAADt/w0AAAAAAAAAAADu/wkAAAAAAAAAAADu/woAAAAAAAAAAADu/wsAAAAAAAAAAADu/wwAAAAAAAAAAADu/w0AAAAAAAAAAADt/w4AAAAAAAAAAADt/w8AAAAAAAAAAADt/xAAAAAAAAAAAADu/xAAAAAAAAAAAADv/xAAAAAAAAAAAADo/wAAAAAAAAAAAADo/wEAAAAAAAAAAADo/wIAAAAAAAAAAADo/wMAAAAAAAAAAADo/wQAAAAAAAAAAADo/wUAAAAAAAAAAADo/wYAAAAAAAAAAADo/wcAAAAAAAAAAADo/wgAAAAAAAAAAADp/wAAAAAAAAAAAADp/wEAAAAAAAAAAADp/wIAAAAAAAAAAADp/wMAAAAAAAAAAADp/wQAAAAAAAAAAADp/wUAAAAAAAAAAADp/wYAAAAAAAAAAADp/wcAAAAAAAAAAADp/wgAAAAAAAAAAADq/wAAAAAAAAAAAADq/wEAAAAAAAAAAADq/wIAAAAAAAAAAADq/wMAAAAAAAAAAADq/wQAAAAAAAAAAADq/wUAAAAAAAAAAADq/wYAAAAAAAAAAADq/wcAAAAAAAAAAADq/wgAAAAAAAAAAADr/wAAAAAAAAAAAADr/wEAAAAAAAAAAADr/wIAAAAAAAAAAADr/wMAAAAAAAAAAADr/wQAAAAAAAAAAADr/wcAAAAAAAAAAADr/wgAAAAAAAAAAADs/wAAAAAAAAAAAADs/wEAAAAAAAAAAADs/wIAAAAAAAAAAADs/wMAAAAAAAAAAADs/wQAAAAAAAAAAADs/wcAAAAAAAAAAADs/wgAAAAAAAAAAADo//3/AAAAAAAAAADo//7/AAAAAAAAAADo////AAAAAAAAAADp//3/AAAAAAAAAADp//7/AAAAAAAAAADp////AAAAAAAAAADq//3/AAAAAAAAAADq//7/AAAAAAAAAADq////AAAAAAAAAADr//3/AAAAAAAAAADr//7/AAAAAAAAAADr////AAAAAAAAAADs//3/AAAAAAAAAADs//7/AAAAAAAAAADs////AAAAAAAAAADt//3/AAAAAAAAAADt//7/AAAAAAAAAADt////AAAAAAAAAADu//3/AAAAAAAAAADu//7/AAAAAAAAAADu////AAAAAAAAAADv//3/AAAAAAAAAADv//7/AAAAAAAAAADv////AAAAAAAAAADw//3/AAAAAAAAAADw//7/AAAAAAAAAADw////AAAAAAAAAADx//3/AAAAAAAAAADx//7/AAAAAAAAAADx////AAAAAAAAAADu/w4AAAAAAAAAAADu/w8AAAAAAAAAAADv/w8AAAAAAAAAAAACAAkAAAAAAAAAAAADAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAAFAAkAAAAAAAAAAAABAAgAAAAAAAAAAAABAAkAAAAAAAAAAAACAAgAAAAAAAAAAAADAAgAAAAAAAAAAAAAAA0AAAAAAAAAAAABAA0AAAAAAAAAAAACAA0AAAAAAAAAAAADAA0AAAAAAAAAAAAEAA0AAAAAAAAAAAAFAA0AAAAAAAAAAAAIAA0AAAAAAAAAAAAJAA0AAAAAAAAAAAABAA4AAAAAAAAAAAABAA8AAAAAAAAAAAABABAAAAAAAAAAAAACAA4AAAAAAAAAAAACAA8AAAAAAAAAAAACABAAAAAAAAAAAAASAA0AAAAAAAAAAAASAA4AAAAAAAAAAAASAA8AAAAAAAAAAAASABAAAAAAAAAAAAATAA0AAAAAAAAAAAATAA4AAAAAAAAAAAATAA8AAAAAAAAAAAATABAAAAAAAAAAAAAUAA0AAAAAAAAAAAAUAA4AAAAAAAAAAAAUAA8AAAAAAAAAAAAUABAAAAAAAAAAAAAVAA0AAAAAAAAAAAAVAA4AAAAAAAAAAAAVAA8AAAAAAAAAAAAVABAAAAAAAAAAAAARAA0AAAAAAAAAAAARAA4AAAAAAAAAAAAJAPf/AAAAAAAAAAAJAPj/AAAAAAAAAAAJAPn/AAAAAAAAAAAJAPr/AAAAAAAAAAAJAPv/AAAAAAAAAAAKAPf/AAAAAAAAAAAKAPj/AAAAAAAAAAAKAPn/AAAAAAAAAAAKAPr/AAAAAAAAAAAKAPv/AAAAAAAAAAALAPf/AAAAAAAAAAALAPj/AAAAAAAAAAALAPn/AAAAAAAAAAALAPr/AAAAAAAAAAALAPv/AAAAAAAAAAAMAPf/AAAAAAAAAAAMAPj/AAAAAAAAAAAMAPn/AAAAAAAAAAAMAPr/AAAAAAAAAAAMAPv/AAAAAAAAAAANAPf/AAAAAAAAAAANAPj/AAAAAAAAAAANAPn/AAAAAAAAAAANAPr/AAAAAAAAAAANAPv/AAAAAAAAAAAOAPf/AAAAAAAAAAAOAPj/AAAAAAAAAAAOAPn/AAAAAAAAAAAOAPr/AAAAAAAAAAAOAPv/AAAAAAAAAAAPAPf/AAAAAAAAAAAPAPj/AAAAAAAAAAAPAPn/AAAAAAAAAAAPAPr/AAAAAAAAAAAPAPv/AAAAAAAAAAAQAPf/AAAAAAAAAAAQAPj/AAAAAAAAAAAQAPn/AAAAAAAAAAAQAPr/AAAAAAAAAAAQAPv/AAAAAAAAAAARAPf/AAAAAAAAAAARAPj/AAAAAAAAAAARAPn/AAAAAAAAAAARAPr/AAAAAAAAAAARAPv/AAAAAAAAAAACAPz/AAAAAAAAAQADAPz/AAAAAAAAAQAEAPz/AAAAAAAAAQAFAPz/AAAAAAAAAQAGAPz/AAAAAAAAAQAHAPz/AAAAAAAAAQAIAPz/AAAAAAAAAQAJAPz/AAAAAAAAAQAKAPz/AAAAAAAAAQALAPz/AAAAAAAAAQAMAPz/AAAAAAAAAQANAPz/AAAAAAAAAQAPAPz/AAAAAAAAAQAQAPz/AAAAAAAAAQARAPz/AAAAAAAAAQASAPz/AAAAAAAAAQATAPz/AAAAAAAAAQAUAPz/AAAAAAAAAQA=") +tile_set = ExtResource("2_u0gb1") + +[node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=2022973594] +z_index = -1 +tile_map_data = PackedByteArray("AAABAAcAAgAAAAAAAAABAAYAAgAAAAAAAAABAAUAAgAAAAAAAAABAAQAAgAAAAAAAAABAAMAAgAAAAAAAAABAAIAAgAAAAAAAAABAAEAAgAAAAAAAAABAAAAAgAAAAAAAAACAAAAAgAAAAAAAAADAAAAAgAAAAAAAAD7/wMAAgAAAAAAAAD6/wMAAgAAAAAAAAD5/wMAAgAAAAAAAAD4/wIAAgAAAAAAAAD3/wEAAgAAAAAAAAD2/wEAAgAAAAAAAAD1/wEAAgAAAAAAAAD1/wIAAgAAAAAAAAD1/wMAAgAAAAAAAAD1/wQAAgAAAAAAAAD1/wUAAgAAAAAAAAD1/wYAAgAAAAAAAAD1/wcAAgAAAAAAAAD2/wcAAgAAAAAAAAD3/wcAAgAAAAAAAAD4/wcAAgAAAAAAAAD5/wcAAgAAAAAAAAD6/wcAAgAAAAAAAAD7/wcAAgAAAAAAAAD7/wYAAgAAAAAAAAD7/wUAAgAAAAAAAAD7/wQAAgAAAAAAAAACAAcAAgAAAAAAAAADAAcAAgAAAAAAAAAEAAgAAgAAAAAAAAAFAAgAAgAAAAAAAAAGAAkAAgAAAAAAAAAHAAkAAgAAAAAAAAAIAAkAAgAAAAAAAAAJAAkAAgAAAAAAAAAKAAkAAgAAAAAAAAALAAkAAgAAAAAAAAAMAAkAAgAAAAAAAAANAAkAAgAAAAAAAAAOAAkAAgAAAAAAAAAPAAkAAgAAAAAAAAAQAAkAAgAAAAAAAAARAAkAAgAAAAAAAAASAAkAAgAAAAAAAAATAAkAAgAAAAAAAAAUAAkAAgAAAAAAAAAUAAgAAgAAAAAAAAAUAAcAAgAAAAAAAAAUAAYAAgAAAAAAAAAUAAUAAgAAAAAAAAAUAAQAAgAAAAAAAAAUAAMAAgAAAAAAAAAUAAIAAgAAAAAAAAAUAAEAAgAAAAAAAAAUAAAAAgAAAAAAAAARABAAAgAAAAAAAAARAA8AAgAAAAAAAAAQAA4AAgAAAAAAAAAQAA0AAgAAAAAAAAAKAA0AAgAAAAAAAAALAA0AAgAAAAAAAAAMAA0AAgAAAAAAAAANAA0AAgAAAAAAAAAOAA0AAgAAAAAAAAAPAA0AAgAAAAAAAAAJAA4AAgAAAAAAAAAGAA0AAgAAAAAAAAAIAA4AAgAAAAAAAAADAA4AAgAAAAAAAAAEAA4AAgAAAAAAAAAFAA4AAgAAAAAAAAADABAAAgAAAAAAAAADAA8AAgAAAAAAAAAEABAAAgAAAAAAAAAFABAAAgAAAAAAAAAGABAAAgAAAAAAAAAHABAAAgAAAAAAAAAIABAAAgAAAAAAAAAJABAAAgAAAAAAAAAKABAAAgAAAAAAAAALABAAAgAAAAAAAAAMABAAAgAAAAAAAAANABAAAgAAAAAAAAAOABAAAgAAAAAAAAAPABAAAgAAAAAAAAAQABAAAgAAAAAAAAAAABAAAgAAAAAAAAAAAA8AAgAAAAAAAAAAAA4AAgAAAAAAAAD//w0AAgAAAAAAAAD+/w0AAgAAAAAAAAD9/w0AAgAAAAAAAAD8/w0AAgAAAAAAAAD7/w0AAgAAAAAAAAD6/w0AAgAAAAAAAAD5/w0AAgAAAAAAAAD4/w0AAgAAAAAAAAD3/w0AAgAAAAAAAAD2/w0AAgAAAAAAAAD1/w0AAgAAAAAAAAD0/w0AAgAAAAAAAADz/w0AAgAAAAAAAADy/wwAAgAAAAAAAADy/wsAAgAAAAAAAADy/woAAgAAAAAAAADx/woAAgAAAAAAAADx/wsAAgAAAAAAAADw/wwAAgAAAAAAAADv/wwAAgAAAAAAAADv/w0AAgAAAAAAAADv/w4AAgAAAAAAAADw/w8AAgAAAAAAAADw/xAAAgAAAAAAAADx/xAAAgAAAAAAAADy/xAAAgAAAAAAAADz/xAAAgAAAAAAAAD0/xAAAgAAAAAAAAD1/xAAAgAAAAAAAAD2/xAAAgAAAAAAAAD3/xAAAgAAAAAAAAD4/xAAAgAAAAAAAAD5/xAAAgAAAAAAAAD6/xAAAgAAAAAAAAD7/xAAAgAAAAAAAAD8/xAAAgAAAAAAAAD9/xAAAgAAAAAAAAD+/xAAAgAAAAAAAAD//xAAAgAAAAAAAADt/wcAAgAAAAAAAADt/wgAAgAAAAAAAADu/wgAAgAAAAAAAADu/wcAAgAAAAAAAADv/wcAAgAAAAAAAADw/wcAAgAAAAAAAADx/wcAAgAAAAAAAADx/wAAAgAAAAAAAADx/wEAAgAAAAAAAADy/wIAAgAAAAAAAADx/wMAAgAAAAAAAADx/wQAAgAAAAAAAADw/wQAAgAAAAAAAADv/wQAAgAAAAAAAADu/wQAAgAAAAAAAADt/wQAAgAAAAAAAADt/wMAAgAAAAAAAADt/wIAAgAAAAAAAADt/wEAAgAAAAAAAADt/wAAAgAAAAAAAADu/wAAAgAAAAAAAADv/wAAAgAAAAAAAADw/wAAAgAAAAAAAAA=") +tile_set = ExtResource("3_1lne7") + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=592819758] +tile_map_data = PackedByteArray("AAANAAkAAQABAAIAAAANAAgAAQABAAEAAAANAAcAAQABAAEAAAANAAYAAQABAAEAAAANAAUAAQABAAEAAAAMAAkAAQABAAIAAAAMAAgAAQABAAEAAAAMAAcAAQABAAEAAAAMAAYAAQABAAEAAAAMAAUAAQABAAEAAAALAAkAAQABAAIAAAALAAgAAQABAAEAAAALAAcAAQABAAEAAAALAAYAAQABAAEAAAALAAUAAQABAAEAAAAKAAkAAQABAAIAAAAKAAgAAQABAAEAAAAKAAcAAQABAAEAAAAKAAYAAQABAAEAAAAKAAUAAQABAAEAAAAJAAkAAQABAAIAAAAJAAgAAQABAAEAAAAJAAcAAQABAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAIAAkAAQABAAIAAAAIAAgAAQABAAEAAAAIAAcAAQABAAEAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAHAAkAAQABAAIAAAAHAAgAAQABAAEAAAAHAAcAAQABAAEAAAAHAAYAAQABAAEAAAAHAAUAAQABAAEAAAAGAAkAAQAAAAIAAAAGAAgAAQABAAEAAAAGAAcAAQABAAEAAAAGAAYAAQABAAEAAAAGAAUAAQABAAEAAAAFAAcAAQABAAEAAAAFAAYAAQABAAEAAAAFAAUAAQABAAEAAAAEAAcAAQABAAEAAAAEAAYAAQABAAEAAAAEAAUAAQABAAEAAAADAAcAAQABAAIAAAADAAYAAQABAAEAAAADAAUAAQABAAEAAAACAAcAAQABAAIAAAACAAYAAQABAAEAAAACAAUAAQABAAEAAAABAAcAAQAAAAIAAAABAAYAAQAAAAEAAAABAAUAAQAAAAEAAAAUAAkAAQACAAIAAAAUAAgAAQACAAEAAAAUAAcAAQACAAEAAAAUAAYAAQACAAEAAAAUAAUAAQACAAEAAAAUAAQAAQACAAEAAAAUAAMAAQACAAEAAAAUAAIAAQACAAEAAAAUAAEAAQACAAEAAAATAAkAAQABAAIAAAATAAgAAQABAAEAAAATAAcAAQABAAEAAAATAAYAAQABAAEAAAATAAUAAQABAAEAAAATAAQAAQABAAEAAAATAAMAAQABAAEAAAATAAIAAQABAAEAAAATAAEAAQABAAEAAAASAAkAAQABAAIAAAASAAgAAQABAAEAAAASAAcAAQABAAEAAAASAAYAAQABAAEAAAASAAUAAQABAAEAAAASAAQAAQABAAEAAAASAAMAAQABAAEAAAASAAIAAQABAAEAAAASAAEAAQABAAEAAAARAAkAAQABAAIAAAARAAgAAQABAAEAAAARAAcAAQABAAEAAAARAAYAAQABAAEAAAARAAUAAQABAAEAAAARAAQAAQABAAEAAAARAAMAAQABAAEAAAARAAIAAQABAAEAAAARAAEAAQABAAEAAAAQAAkAAQABAAIAAAAQAAgAAQABAAEAAAAQAAcAAQABAAEAAAAQAAYAAQABAAEAAAAQAAUAAQABAAEAAAAQAAQAAQABAAEAAAAQAAMAAQABAAEAAAAQAAIAAQABAAEAAAAQAAEAAQABAAEAAAAPAAkAAQABAAIAAAAPAAgAAQABAAEAAAAPAAcAAQABAAEAAAAPAAYAAQABAAEAAAAPAAUAAQABAAEAAAAPAAQAAQABAAEAAAAPAAMAAQABAAEAAAAPAAIAAQABAAEAAAAPAAEAAQABAAEAAAAOAAkAAQABAAIAAAAOAAgAAQABAAEAAAAOAAcAAQABAAEAAAAOAAYAAQABAAEAAAAOAAUAAQABAAEAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQABAAEAAAAOAAEAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAEAAAANAAEAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAEAAAAMAAEAAQABAAEAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAEAAAALAAEAAQABAAEAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAEAAAAKAAEAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAJAAEAAQABAAEAAAAIAAQAAQABAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAEAAAAIAAEAAQABAAEAAAAHAAQAAQABAAEAAAAHAAMAAQABAAEAAAAHAAIAAQABAAEAAAAHAAEAAQABAAEAAAAGAAQAAQABAAEAAAAGAAMAAQABAAEAAAAGAAIAAQABAAEAAAAGAAEAAQABAAEAAAAFAAQAAQABAAEAAAAFAAMAAQABAAEAAAAFAAIAAQABAAEAAAAFAAEAAQABAAEAAAAEAAQAAQABAAEAAAAEAAMAAQABAAEAAAAEAAIAAQABAAEAAAAEAAEAAQABAAEAAAADAAQAAQABAAEAAAADAAMAAQABAAEAAAADAAIAAQABAAEAAAADAAEAAQABAAEAAAACAAQAAQABAAEAAAACAAMAAQABAAEAAAACAAIAAQABAAEAAAACAAEAAQABAAEAAAABAAQAAQAAAAEAAAABAAMAAQAAAAEAAAABAAIAAQAAAAEAAAABAAEAAQAAAAEAAAAUAAAAAQACAAAAAAATAAAAAQABAAAAAAASAAAAAQABAAAAAAARAAAAAQABAAAAAAAQAAAAAQABAAAAAAAPAAAAAQABAAEAAAAOAAAAAQABAAEAAAANAAAAAQABAAEAAAAMAAAAAQABAAAAAAALAAAAAQABAAAAAAAKAAAAAQABAAAAAAAJAAAAAQABAAAAAAAIAAAAAQABAAAAAAAHAAAAAQABAAAAAAAGAAAAAQABAAAAAAAFAAAAAQABAAAAAAAEAAAAAQABAAAAAAADAAAAAQABAAAAAAACAAAAAQABAAAAAAABAAAAAQAAAAAAAAD9/xAAAQABAAIAAAD9/w8AAQABAAEAAAD9/w4AAQABAAEAAAD9/w0AAQABAAAAAAD8/xAAAQABAAIAAAD8/w8AAQABAAEAAAD8/w4AAQABAAEAAAD8/w0AAQABAAAAAAD7/xAAAQABAAIAAAD7/w8AAQABAAEAAAD7/w4AAQABAAEAAAD7/w0AAQABAAAAAAD6/xAAAQABAAIAAAD6/w8AAQABAAEAAAD6/w4AAQABAAEAAAD6/w0AAQABAAAAAAD5/xAAAQABAAIAAAD5/w8AAQABAAEAAAD5/w4AAQABAAEAAAD5/w0AAQABAAAAAAD4/xAAAQABAAIAAAD4/w8AAQABAAEAAAD4/w4AAQABAAEAAAD4/w0AAQABAAAAAAD3/xAAAQABAAIAAAD3/w8AAQABAAEAAAD3/w4AAQABAAEAAAD3/w0AAQABAAAAAAD2/xAAAQABAAIAAAD2/w8AAQABAAEAAAD2/w4AAQABAAEAAAD2/w0AAQABAAAAAAD1/xAAAQABAAIAAAD1/w8AAQABAAEAAAD1/w4AAQABAAEAAAD1/w0AAQABAAAAAAD0/xAAAQABAAIAAAD0/w8AAQABAAEAAAD0/w4AAQABAAEAAAD0/w0AAQABAAAAAAAJABAAAQABAAIAAAAJAA8AAQABAAEAAAAJAA4AAQABAAAAAAAIABAAAQABAAIAAAAIAA8AAQABAAEAAAAIAA4AAQABAAAAAAAHABAAAQABAAIAAAAHAA8AAQABAAEAAAAHAA4AAQABAAEAAAAGABAAAQABAAIAAAAGAA8AAQABAAEAAAAGAA4AAQABAAEAAAAFABAAAQABAAIAAAAFAA8AAQABAAEAAAAFAA4AAQABAAAAAAAEABAAAQABAAIAAAAEAA8AAQABAAEAAAAEAA4AAQABAAAAAAADABAAAQAAAAIAAAADAA8AAQAAAAEAAAADAA4AAQAAAAAAAAAAABAAAQACAAIAAAAAAA8AAQACAAEAAAAAAA4AAQACAAAAAAD//xAAAQABAAIAAAD//w8AAQABAAEAAAD//w4AAQABAAEAAAD//w0AAQACAAAAAAARABAAAQACAAIAAAARAA8AAQACAAAAAAAQABAAAQABAAIAAAAQAA8AAQABAAEAAAAQAA4AAQACAAEAAAAQAA0AAQACAAAAAAAPABAAAQABAAIAAAAPAA8AAQABAAEAAAAPAA4AAQABAAEAAAAPAA0AAQABAAAAAAAOABAAAQABAAIAAAAOAA8AAQABAAEAAAAOAA4AAQABAAEAAAAOAA0AAQABAAAAAAANABAAAQABAAIAAAANAA8AAQABAAEAAAANAA4AAQABAAEAAAANAA0AAQABAAAAAAAMABAAAQABAAIAAAAMAA8AAQABAAEAAAAMAA4AAQABAAEAAAAMAA0AAQABAAAAAAALABAAAQABAAIAAAALAA8AAQABAAEAAAALAA4AAQABAAEAAAALAA0AAQABAAAAAADy/w8AAQABAAEAAADy/w4AAQABAAEAAADy/w0AAQABAAEAAADx/w8AAQABAAEAAADx/w4AAQABAAEAAADx/w0AAQABAAEAAADx/wwAAQABAAEAAADx/woAAQAAAAAAAADx/wQAAQACAAIAAADx/wMAAQACAAEAAADx/wIAAQABAAEAAADx/wEAAQACAAEAAADw/w8AAQAAAAEAAADw/w4AAQABAAEAAADw/w0AAQABAAEAAADw/wwAAQABAAAAAADw/wcAAQABAAMAAADw/wQAAQABAAIAAADw/wMAAQABAAEAAADw/wIAAQABAAEAAADw/wEAAQABAAEAAADv/w4AAQAAAAIAAADv/w0AAQAAAAEAAADv/wwAAQAAAAAAAADv/wcAAQABAAMAAADv/wQAAQABAAIAAADv/wMAAQABAAEAAADv/wIAAQABAAEAAADv/wEAAQABAAEAAADu/wcAAQABAAAAAADu/wQAAQABAAIAAADu/wMAAQABAAEAAADu/wIAAQABAAEAAADu/wEAAQABAAEAAADx/xAAAQABAAIAAADw/xAAAQAAAAIAAADt/wgAAQAAAAIAAADt/wcAAQAAAAAAAADt/wQAAQAAAAIAAADt/wMAAQAAAAEAAADt/wIAAQAAAAEAAADt/wEAAQAAAAEAAADy/xAAAQABAAIAAADz/xAAAQABAAIAAADz/w8AAQABAAEAAADz/w4AAQABAAEAAADz/w0AAQABAAAAAADx/wAAAQACAAAAAADw/wAAAQABAAAAAADv/wAAAQABAAAAAADu/wAAAQABAAAAAADt/wAAAQAAAAAAAADy/wwAAQACAAEAAADy/wsAAQACAAEAAADy/woAAQACAAAAAAD7/wcAAQACAAIAAAD7/wYAAQACAAEAAAD7/wUAAQACAAEAAAD7/wQAAQACAAEAAAD6/wcAAQABAAIAAAD6/wYAAQABAAEAAAD6/wUAAQABAAEAAAD6/wQAAQABAAEAAAD6/wMAAQABAAAAAAD5/wcAAQABAAIAAAD5/wYAAQABAAEAAAD5/wUAAQABAAEAAAD5/wQAAQABAAEAAAD5/wMAAQABAAAAAAD4/wcAAQABAAIAAAD4/wYAAQABAAEAAAD4/wUAAQABAAEAAAD4/wQAAQABAAEAAAD4/wMAAQABAAEAAAD4/wIAAQACAAAAAAD3/wcAAQABAAIAAAD3/wYAAQABAAEAAAD3/wUAAQABAAEAAAD3/wQAAQABAAEAAAD3/wMAAQABAAEAAAD3/wIAAQABAAEAAAD3/wEAAQACAAAAAAD2/wcAAQABAAIAAAD2/wYAAQABAAEAAAD2/wUAAQABAAEAAAD2/wQAAQABAAEAAAD2/wMAAQABAAEAAAD2/wIAAQABAAEAAAD2/wEAAQABAAAAAAD1/wcAAQAAAAIAAAD1/wYAAQAAAAEAAAD1/wUAAQAAAAEAAAD1/wQAAQAAAAEAAAD1/wMAAQAAAAEAAAD1/wIAAQAAAAEAAAD1/wEAAQAAAAAAAAAKABAAAQABAAIAAAAKAA8AAQABAAEAAAAKAA4AAQABAAEAAAAKAA0AAQAAAAAAAAD+/xAAAQABAAIAAAD+/w8AAQABAAEAAAD+/w4AAQABAAEAAAD+/w0AAQABAAAAAADx/wcAAQACAAMAAADu/wgAAQACAAIAAADx/wsAAQAAAAEAAADy/wIAAQACAAMAAAD7/wMAAQACAAAAAAAFAAgAAQABAAIAAAAEAAgAAQAAAAIAAAAHAA0AAQACAAAAAAAGAA0AAQAAAAAAAAAPAP//AQACAAEAAAAPAP7/AQACAAEAAAAPAP3/AQACAAEAAAAPAPz/AQACAAAAAAAOAP//AQABAAEAAAAOAP7/AQABAAEAAAAOAP3/AQABAAEAAAAOAPz/AQABAAAAAAANAP//AQAAAAEAAAANAP7/AQAAAAEAAAANAP3/AQAAAAEAAAANAPz/AQAAAAAAAAA=") +tile_set = ExtResource("4_kxe6o") + +[node name="Sand" type="TileMapLayer" parent="TileMapLayers" unique_id=2049231096] +tile_map_data = PackedByteArray("AAAJAAQAAQAGAAMAAAAIAAQAAQAGAAMAAAAHAAQAAQAGAAMAAAAGAAQAAQAGAAMAAAAFAAQAAQAGAAMAAAAEAAQAAQAGAAMAAAADAAQAAQAGAAMAAAACAAQAAQAGAAMAAAABAAQAAQAFAAMAAAAOAAQAAQAHAAIAAAANAAQAAQAGAAMAAAAMAAQAAQAGAAMAAAALAAQAAQAGAAMAAAAKAAQAAQAGAAMAAAD6/wQAAQAFAAAAAAD7/wQAAQAHAAMAAAAOAAAAAQAIAAEAAAAOAAMAAQAIAAEAAAAOAAIAAQAIAAEAAAAOAAEAAQAIAAEAAAAOAP//AQAIAAEAAAAOAAkAAQAIAAMAAAAMAA8AAQAFAAMAAADy/w0AAQAIAAAAAADy/woABgADAAMAAAD6/wYAAQAHAAIAAAD6/wUAAQAIAAEAAAD3/wYAAQAFAAIAAAD4/wYAAQAGAAMAAAD5/wYAAQAGAAMAAAD2/wUAAQAFAAIAAAD3/wUAAQAHAAEAAAD3/wQAAQAHAAAAAAD2/wQAAQAFAAAAAAAOAA8AAQAHAAIAAAAOAA4AAQAIAAEAAAAOAA0AAQAIAAAAAAANAA8AAQAGAAMAAAADAA8AAQAFAAMAAAAEAA8AAQAGAAMAAAAFAA8AAQAGAAMAAAAGAA8AAQAGAAMAAAAHAA8AAQAGAAMAAAAIAA8AAQAGAAMAAAAJAA8AAQAHAAMAAAD1/w8AAQAFAAMAAAD2/w8AAQAGAAMAAAD3/w8AAQAGAAMAAAD4/w8AAQAGAAMAAAD5/w8AAQAGAAMAAAD6/w8AAQAGAAMAAAD7/w8AAQAGAAMAAAD8/w8AAQAHAAMAAADy/w4AAQAIAAEAAADy/w8AAQAIAAIAAAAAAA8ABgADAAMAAADy/wIABgADAAMAAADw/wQABgADAAMAAADw/wcABgADAAMAAAD1/wcABgADAAMAAAD1/wIABgADAAMAAAAOAP7/AQAIAAEAAAAOAP3/AQAIAAEAAAAOAPz/AQAIAAAAAAA=") +tile_set = ExtResource("4_kxe6o") + +[node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=1262362630] +tile_map_data = PackedByteArray("AAABAAQAAwACAAAAAAD7/wQAAwAAAAAAAAD+/wQAAwABAAIAAAD8/wQAAwACAAIAAAAAAAQAAwACAAIAAAA=") +tile_set = ExtResource("5_pldqy") + +[node name="CliffShadows" type="TileMapLayer" parent="TileMapLayers" unique_id=332719363] +tile_map_data = PackedByteArray("AAABAAAAAAAAAAAAAAABAP//AAAAAAAAAAABAP7/AAAAAAAAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAEAAEAAAAAAAAAAAAFAAIAAAAAAAAAAAAGAAIAAAAAAAAAAAAHAAIAAAAAAAAAAAAIAAIAAAAAAAAAAAAJAAEAAAAAAAAAAAAKAAEAAAAAAAAAAAALAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAARAAAAAAAAAAAAAAASAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAP//AAAAAAAAAAAUAP7/AAAAAAAAAAA=") +tile_set = ExtResource("6_0qp3n") + +[node name="Cliffs" type="TileMapLayer" parent="TileMapLayers" unique_id=295473127] +tile_map_data = PackedByteArray("AAANAP//BAACAAIAAAANAP7/BAACAAEAAAANAP3/BAACAAEAAAANAPz/BAACAAAAAAAMAP//BAABAAIAAAAMAP7/BAABAAEAAAAMAP3/BAABAAEAAAAMAPz/BAABAAAAAAALAP//BAABAAIAAAALAP7/BAABAAEAAAALAP3/BAABAAEAAAALAPz/BAABAAAAAAAKAP//BAABAAEAAAAKAP7/BAABAAEAAAAKAP3/BAABAAEAAAAKAPz/BAABAAAAAAAJAP//BAABAAEAAAAJAP7/BAABAAEAAAAJAP3/BAABAAEAAAAJAPz/BAABAAAAAAAIAP//BAABAAEAAAAIAP7/BAABAAEAAAAIAP3/BAABAAEAAAAIAPz/BAABAAAAAAAHAP//BAABAAEAAAAHAP7/BAABAAEAAAAHAP3/BAABAAEAAAAHAPz/BAABAAAAAAAGAP//BAABAAEAAAAGAP7/BAABAAEAAAAGAP3/BAABAAEAAAAGAPz/BAABAAAAAAAFAP//BAABAAEAAAAFAP7/BAABAAEAAAAFAP3/BAABAAEAAAAFAPz/BAABAAAAAAAEAP//BAABAAEAAAAEAP7/BAABAAEAAAAEAP3/BAABAAEAAAAEAPz/BAABAAAAAAADAP//BAABAAIAAAADAP7/BAABAAEAAAADAP3/BAABAAEAAAADAPz/BAABAAAAAAACAP//BAABAAIAAAACAP7/BAABAAEAAAACAP3/BAABAAEAAAACAPz/BAABAAAAAAABAP//BAAAAAIAAAABAP7/BAAAAAEAAAABAP3/BAAAAAEAAAABAPz/BAAAAAAAAAAUAP//BAACAAIAAAAUAP7/BAACAAEAAAAUAP3/BAACAAEAAAAUAPz/BAACAAAAAAATAP//BAABAAIAAAATAP7/BAABAAEAAAATAP3/BAABAAEAAAATAPz/BAABAAAAAAASAP//BAABAAIAAAASAP7/BAABAAEAAAASAP3/BAABAAEAAAASAPz/BAABAAAAAAARAP//BAABAAIAAAARAP7/BAABAAEAAAARAP3/BAABAAEAAAARAPz/BAABAAAAAAAQAP//BAABAAIAAAAQAP7/BAABAAEAAAAQAP3/BAABAAEAAAAQAPz/BAABAAAAAAAPAP//BAAAAAIAAAAPAP7/BAAAAAEAAAAPAP3/BAAAAAEAAAAPAPz/BAAAAAAAAAAIAAEABAACAAIAAAAIAAAABAABAAEAAAAHAAAABAABAAEAAAAJAAAABAABAAIAAAAKAAAABAACAAIAAAAGAAAABAABAAEAAAAFAAEABAAAAAIAAAAFAAAABAABAAEAAAAGAAEABAABAAIAAAAHAAEABAABAAIAAAAEAAAABAAAAAIAAAA=") +tile_set = ExtResource("6_p6v4v") + +[node name="Void" type="TileMapLayer" parent="TileMapLayers" unique_id=1483941388] +material = ExtResource("1_ulid8") +tile_map_data = PackedByteArray("AAD+/wEADQADAAAAAAD+/wIADQADAAEAAAD//wMADQACAAAAAAD//wQADQADAAEAAAD//wUADQAAAAIAAAAAAAYADQADAAIAAAAAAAUADQACAAAAAAD+/wkADQADAAAAAAD+/woADQAAAAIAAAD//woADQABAAMAAAAAAAoADQACAAMAAAALAA8ADQACAAEAAAALAA4ADQACAAEAAAAKAA4ADQAAAAEAAAAKAA0ADQAAAAAAAAALAA0ADQACAAAAAAAKAA8ADQAAAAEAAAAWABUADQACAAIAAAAWABQADQACAAEAAAAWABMADQACAAEAAAAWABIADQACAAEAAAAWABEADQACAAEAAAAWABAADQACAAEAAAAVABUADQABAAIAAAAVABQADQABAAEAAAAVABMADQABAAEAAAAVABIADQABAAEAAAAVABEADQABAAEAAAAVABAADQABAAEAAAAUABUADQABAAIAAAAUABQADQABAAEAAAAUABMADQABAAEAAAAUABIADQABAAEAAAAUABEADQABAAEAAAAUABAADQABAAAAAAATABUADQABAAIAAAATABQADQABAAEAAAATABMADQABAAEAAAATABIADQABAAEAAAATABEADQABAAEAAAATABAADQABAAAAAAASABUADQABAAIAAAASABQADQABAAEAAAASABMADQABAAEAAAASABIADQABAAEAAAASABEADQABAAEAAAASABAADQABAAAAAAARABUADQABAAIAAAARABQADQABAAEAAAARABMADQABAAEAAAARABIADQABAAEAAAARABEADQABAAEAAAARABAADQABAAAAAAAQABUADQABAAIAAAAQABQADQABAAEAAAAQABMADQABAAEAAAAQABIADQABAAEAAAAQABEADQABAAEAAAAQABAADQABAAAAAAAPABUADQABAAIAAAAPABQADQABAAEAAAAPABMADQABAAEAAAAPABIADQABAAEAAAAPABEADQABAAEAAAAPABAADQABAAAAAAAOABUADQABAAIAAAAOABQADQABAAEAAAAOABMADQABAAEAAAAOABIADQABAAEAAAAOABEADQABAAEAAAAOABAADQABAAAAAAANABUADQABAAIAAAANABQADQABAAEAAAANABMADQABAAEAAAANABIADQABAAEAAAANABEADQABAAEAAAANABAADQABAAAAAAAMABUADQABAAIAAAAMABQADQABAAEAAAAMABMADQABAAEAAAAMABIADQABAAEAAAAMABEADQABAAEAAAAMABAADQABAAAAAAALABUADQABAAIAAAALABQADQABAAEAAAALABMADQABAAEAAAALABIADQABAAEAAAALABEADQABAAEAAAALABAADQABAAEAAAAKABUADQABAAIAAAAKABQADQABAAEAAAAKABMADQABAAEAAAAKABIADQABAAEAAAAKABEADQABAAEAAAAKABAADQABAAEAAAAJABUADQABAAIAAAAJABQADQABAAEAAAAJABMADQABAAEAAAAJABIADQABAAEAAAAJABEADQABAAEAAAAIABUADQABAAIAAAAIABQADQABAAEAAAAIABMADQABAAEAAAAIABIADQABAAEAAAAIABEADQABAAEAAAAIABAADQABAAAAAAAHABUADQABAAIAAAAHABQADQABAAEAAAAHABMADQABAAEAAAAHABIADQABAAEAAAAHABEADQABAAEAAAAHABAADQABAAAAAAAGABUADQABAAIAAAAGABQADQABAAEAAAAGABMADQABAAEAAAAGABIADQABAAEAAAAGABEADQABAAEAAAAGABAADQABAAAAAAAFABUADQABAAIAAAAFABQADQABAAEAAAAFABMADQABAAEAAAAFABIADQABAAEAAAAFABEADQABAAEAAAAFABAADQABAAAAAAAEABUADQABAAIAAAAEABQADQABAAEAAAAEABMADQABAAEAAAAEABIADQABAAEAAAAEABEADQABAAEAAAAEABAADQABAAAAAAADABUADQABAAIAAAADABQADQABAAEAAAADABMADQABAAEAAAADABIADQABAAEAAAADABEADQAAAAEAAAADABAADQAAAAAAAAACABUADQABAAIAAAACABQADQABAAEAAAACABMADQABAAEAAAACABIADQABAAAAAAABABUADQABAAIAAAABABQADQABAAEAAAABABMADQABAAEAAAABABIADQABAAEAAAABABEADQACAAAAAAAAABUADQABAAIAAAAAABQADQABAAEAAAAAABMADQABAAEAAAAAABIADQABAAEAAAAAABEADQABAAEAAAD//xUADQABAAIAAAD//xQADQABAAEAAAD//xMADQABAAEAAAD//xIADQABAAEAAAD//xEADQABAAEAAAD+/xUADQABAAIAAAD+/xQADQABAAEAAAD+/xMADQABAAEAAAD+/xIADQABAAEAAAD+/xEADQABAAEAAAD9/xUADQABAAIAAAD9/xQADQABAAEAAAD9/xMADQABAAEAAAD9/xIADQABAAEAAAD9/xEADQABAAEAAAD9/xAADQABAAEAAAD8/xUADQABAAIAAAD8/xQADQABAAEAAAD8/xMADQABAAEAAAD8/xIADQABAAEAAAD8/xEADQABAAEAAAD8/xAADQABAAAAAAD7/xUADQABAAIAAAD7/xQADQABAAEAAAD7/xMADQABAAEAAAD7/xIADQABAAEAAAD7/xEADQABAAEAAAD7/xAADQABAAAAAAD6/xUADQABAAIAAAD6/xQADQABAAEAAAD6/xMADQABAAEAAAD6/xIADQABAAEAAAD6/xEADQABAAEAAAD6/xAADQABAAAAAAD5/xUADQABAAIAAAD5/xQADQABAAEAAAD5/xMADQABAAEAAAD5/xIADQABAAEAAAD5/xEADQABAAEAAAD5/xAADQABAAAAAAD4/xUADQABAAIAAAD4/xQADQABAAEAAAD4/xMADQABAAEAAAD4/xIADQABAAEAAAD4/xEADQABAAEAAAD4/xAADQABAAAAAAD3/xUADQABAAIAAAD3/xQADQABAAEAAAD3/xMADQABAAEAAAD3/xIADQABAAEAAAD3/xEADQABAAEAAAD3/xAADQABAAAAAAD2/xUADQABAAIAAAD2/xQADQABAAEAAAD2/xMADQABAAEAAAD2/xIADQABAAEAAAD2/xEADQABAAEAAAD2/xAADQABAAAAAAD1/xUADQABAAIAAAD1/xQADQABAAEAAAD1/xMADQABAAEAAAD1/xIADQABAAEAAAD1/xEADQABAAEAAAD1/xAADQABAAAAAAD0/xUADQABAAIAAAD0/xQADQABAAEAAAD0/xMADQABAAEAAAD0/xIADQABAAEAAAD0/xEADQABAAEAAAD0/xAADQABAAEAAADz/xUADQABAAIAAADz/xQADQABAAEAAADz/xMADQABAAEAAADz/xIADQABAAEAAADz/xEADQABAAEAAADz/xAADQABAAEAAADy/xUADQABAAIAAADy/xQADQABAAEAAADy/xMADQABAAEAAADy/xIADQABAAEAAADy/xEADQABAAEAAADy/xAADQABAAAAAADx/xUADQABAAIAAADx/xQADQABAAEAAADx/xMADQABAAEAAADx/xIADQABAAEAAADx/xEADQABAAEAAADx/xAADQABAAAAAAD+/w4ADQACAAEAAAD+/w0ADQACAAAAAAD0/w8ADQACAAEAAAD0/w4ADQACAAEAAAD0/w0ADQABAAEAAADz/w8ADQAAAAEAAADz/w4ADQAAAAEAAADz/w0ADQAAAAEAAADw/xUADQABAAIAAADw/xQADQABAAEAAADw/xMADQABAAEAAADw/xIADQABAAEAAADw/xEADQABAAEAAADw/xAADQABAAAAAADv/xUADQABAAIAAADv/xQADQABAAEAAADv/xMADQABAAEAAADv/xIADQABAAEAAADv/xEADQABAAEAAADv/xAADQABAAAAAADu/xUADQABAAIAAADu/xQADQABAAEAAADu/xMADQABAAEAAADu/xIADQABAAEAAADu/xEADQABAAEAAADu/xAADQABAAAAAADt/xUADQABAAIAAADt/xQADQABAAEAAADt/xMADQABAAEAAADt/xIADQABAAEAAADt/xEADQABAAEAAADt/xAADQABAAEAAADt/w8ADQACAAEAAADt/w4ADQACAAEAAADt/w0ADQACAAEAAADt/wwADQABAAEAAADt/wsADQABAAEAAADt/woADQACAAEAAADt/wkADQACAAEAAADt/wgADQACAAEAAADt/wcADQACAAEAAADt/wYADQACAAEAAADt/wUADQACAAEAAADt/wQADQACAAEAAADt/wMADQACAAEAAADt/wIADQACAAEAAADt/wEADQACAAEAAADt/wAADQABAAEAAADt////DQABAAEAAADt//7/DQABAAEAAADt//3/DQABAAEAAADt//z/DQABAAEAAADt//v/DQABAAEAAADs/xUADQABAAIAAADs/xQADQABAAEAAADs/xMADQABAAEAAADs/xIADQABAAEAAADs/xEADQABAAEAAADs/xAADQABAAEAAADs/w8ADQABAAEAAADs/w4ADQABAAEAAADs/w0ADQABAAEAAADs/wwADQABAAEAAADs/wsADQABAAEAAADs/woADQABAAEAAADs/wkADQABAAEAAADs/wgADQABAAEAAADs/wcADQABAAEAAADs/wYADQABAAEAAADs/wUADQABAAEAAADs/wQADQABAAEAAADs/wMADQABAAEAAADs/wIADQABAAEAAADs/wEADQABAAEAAADs/wAADQABAAEAAADs////DQABAAEAAADs//7/DQABAAEAAADs//3/DQABAAEAAADs//z/DQABAAEAAADs//v/DQABAAEAAADr/xUADQABAAIAAADr/xQADQABAAEAAADr/xMADQABAAEAAADr/xIADQABAAEAAADr/xEADQABAAEAAADr/xAADQABAAEAAADr/w8ADQABAAEAAADr/w4ADQABAAEAAADr/w0ADQABAAEAAADr/wwADQABAAEAAADr/wsADQABAAEAAADr/woADQABAAEAAADr/wkADQABAAEAAADr/wgADQABAAEAAADr/wcADQABAAEAAADr/wYADQABAAEAAADr/wUADQABAAEAAADr/wQADQABAAEAAADr/wMADQABAAEAAADr/wIADQABAAEAAADr/wEADQABAAEAAADr/wAADQABAAEAAADr////DQABAAEAAADr//7/DQABAAEAAADr//3/DQABAAEAAADr//z/DQABAAEAAADr//v/DQABAAEAAADq/xUADQABAAIAAADq/xQADQABAAEAAADq/xMADQABAAEAAADq/xIADQABAAEAAADq/xEADQABAAEAAADq/xAADQABAAEAAADq/w8ADQABAAEAAADq/w4ADQABAAEAAADq/w0ADQABAAEAAADq/wwADQABAAEAAADq/wsADQABAAEAAADq/woADQABAAEAAADq/wkADQABAAEAAADq/wgADQABAAEAAADq/wcADQABAAEAAADq/wYADQABAAEAAADq/wUADQABAAEAAADq/wQADQABAAEAAADq/wMADQABAAEAAADq/wIADQABAAEAAADq/wEADQABAAEAAADq/wAADQABAAEAAADq////DQABAAEAAADq//7/DQABAAEAAADq//3/DQABAAEAAADq//z/DQABAAEAAADq//v/DQABAAEAAADp/xUADQABAAIAAADp/xQADQABAAEAAADp/xMADQABAAEAAADp/xIADQABAAEAAADp/xEADQABAAEAAADp/xAADQABAAEAAADp/w8ADQABAAEAAADp/w4ADQABAAEAAADp/w0ADQABAAEAAADp/wwADQABAAEAAADp/wsADQABAAEAAADp/woADQABAAEAAADp/wkADQABAAEAAADp/wgADQABAAEAAADp/wcADQABAAEAAADp/wYADQABAAEAAADp/wUADQABAAEAAADp/wQADQABAAEAAADp/wMADQABAAEAAADp/wIADQABAAEAAADp/wEADQABAAEAAADp/wAADQABAAEAAADp////DQABAAEAAADp//7/DQABAAEAAADp//3/DQABAAEAAADp//z/DQABAAEAAADp//v/DQABAAAAAADo/xUADQABAAIAAADo/xQADQABAAEAAADo/xMADQABAAEAAADo/xIADQABAAEAAADo/xEADQABAAEAAADo/xAADQABAAEAAADo/w8ADQABAAEAAADo/w4ADQABAAEAAADo/w0ADQABAAEAAADo/wwADQABAAEAAADo/wsADQABAAEAAADo/woADQABAAEAAADo/wkADQABAAEAAADo/wgADQABAAEAAADo/wcADQABAAEAAADo/wYADQABAAEAAADo/wUADQABAAEAAADo/wQADQABAAEAAADo/wMADQABAAEAAADo/wIADQABAAEAAADo/wEADQABAAEAAADo/wAADQABAAEAAADo////DQABAAEAAADo//7/DQABAAEAAADo//3/DQABAAEAAADo//z/DQABAAEAAADo//v/DQABAAAAAADn/xUADQABAAIAAADn/xQADQABAAEAAADn/xMADQABAAEAAADn/xIADQABAAEAAADn/xEADQABAAEAAADn/xAADQABAAEAAADn/w8ADQABAAEAAADn/w4ADQABAAEAAADn/w0ADQABAAEAAADn/wwADQABAAEAAADn/wsADQABAAEAAADn/woADQABAAEAAADn/wkADQABAAEAAADn/wgADQABAAEAAADn/wcADQABAAEAAADn/wYADQABAAEAAADn/wUADQABAAEAAADn/wQADQABAAEAAADn/wMADQABAAEAAADn/wIADQABAAEAAADn/wEADQABAAEAAADn/wAADQABAAEAAADn////DQABAAEAAADn//7/DQABAAEAAADn//3/DQABAAEAAADn//z/DQABAAEAAADn//v/DQABAAAAAADm/xUADQABAAIAAADm/xQADQABAAEAAADm/xMADQABAAEAAADm/xIADQABAAEAAADm/xEADQABAAEAAADm/xAADQABAAEAAADm/w8ADQABAAEAAADm/w4ADQABAAEAAADm/w0ADQABAAEAAADm/wwADQABAAEAAADm/wsADQABAAEAAADm/woADQABAAEAAADm/wkADQABAAEAAADm/wgADQABAAEAAADm/wcADQABAAEAAADm/wYADQABAAEAAADm/wUADQABAAEAAADm/wQADQABAAEAAADm/wMADQABAAEAAADm/wIADQABAAEAAADm/wEADQABAAEAAADm/wAADQABAAEAAADm////DQABAAEAAADm//7/DQABAAEAAADm//3/DQABAAEAAADm//z/DQABAAEAAADm//v/DQABAAAAAADl/xUADQABAAIAAADl/xQADQABAAEAAADl/xMADQABAAEAAADl/xIADQABAAEAAADl/xEADQABAAEAAADl/xAADQABAAEAAADl/w8ADQABAAEAAADl/w4ADQABAAEAAADl/w0ADQABAAEAAADl/wwADQABAAEAAADl/wsADQABAAEAAADl/woADQABAAEAAADl/wkADQABAAEAAADl/wgADQABAAEAAADl/wcADQABAAEAAADl/wYADQABAAEAAADl/wUADQABAAEAAADl/wQADQABAAEAAADl/wMADQABAAEAAADl/wIADQABAAEAAADl/wEADQABAAEAAADl/wAADQABAAEAAADl////DQABAAEAAADl//7/DQABAAEAAADl//3/DQABAAEAAADl//z/DQABAAEAAADl//v/DQABAAAAAADk/xUADQAAAAIAAADk/xQADQAAAAEAAADk/xMADQAAAAEAAADk/xIADQAAAAEAAADk/xEADQAAAAEAAADk/xAADQAAAAEAAADk/w8ADQAAAAEAAADk/w4ADQAAAAEAAADk/w0ADQAAAAEAAADk/wwADQAAAAEAAADk/wsADQAAAAEAAADk/woADQAAAAEAAADk/wkADQAAAAEAAADk/wgADQAAAAEAAADk/wcADQAAAAEAAADk/wYADQAAAAEAAADk/wUADQAAAAEAAADk/wQADQAAAAEAAADk/wMADQAAAAEAAADk/wIADQAAAAEAAADk/wEADQAAAAEAAADk/wAADQAAAAEAAADk////DQAAAAEAAADk//7/DQAAAAEAAADk//3/DQAAAAEAAADk//z/DQAAAAEAAADk//v/DQAAAAAAAADz/wAADQACAAIAAADz////DQACAAEAAADz//7/DQACAAEAAADz//3/DQABAAEAAADz//z/DQABAAEAAADz//v/DQABAAEAAADz//r/DQABAAEAAADy/wAADQABAAIAAADy////DQABAAEAAADy//7/DQABAAEAAADy//3/DQABAAEAAADy//z/DQABAAEAAADy//v/DQABAAEAAADy//r/DQABAAAAAADx/wAADQABAAIAAADx////DQABAAEAAADx//7/DQABAAEAAADx//3/DQABAAEAAADx//z/DQABAAEAAADx//v/DQABAAEAAADx//r/DQABAAAAAADw/wAADQABAAIAAADw////DQABAAEAAADw//7/DQABAAEAAADw//3/DQABAAEAAADw//z/DQABAAEAAADw//v/DQABAAEAAADw//r/DQABAAAAAADv/wAADQABAAIAAADv////DQABAAEAAADv//7/DQABAAEAAADv//3/DQABAAEAAADv//z/DQABAAEAAADv//v/DQABAAEAAADv//r/DQABAAAAAADu/wAADQABAAIAAADu////DQABAAEAAADu//7/DQABAAEAAADu//3/DQABAAEAAADu//z/DQABAAEAAADu//v/DQABAAEAAADu//r/DQABAAAAAADt//r/DQABAAAAAADs//r/DQABAAAAAADr//r/DQABAAAAAADq//r/DQAAAAAAAAAJABAADQABAAAAAAAJAAYADQAAAAEAAAAJAAUADQAAAAAAAAAJAAcADQAAAAIAAAAKAAYADQACAAEAAAAKAAcADQACAAIAAAAKAAUADQACAAAAAADy/wwADQABAAIAAADx/wwADQABAAIAAADw/wsADQABAAAAAADv/wsADQABAAAAAADu/wsADQABAAAAAADx/wsADQABAAAAAADy/wsADQABAAAAAADu/wwADQABAAIAAADv/wwADQABAAIAAADw/wwADQABAAIAAADz/wsADQACAAAAAADz/wwADQABAAEAAAD2/wwADQABAAAAAAD1/wwADQABAAAAAAD0/wwADQABAAAAAAD1/w0ADQABAAIAAAD2/w0ADQACAAIAAAD3/wwADQACAAIAAAD4/wsADQACAAMAAAD3/wsADQAAAAEAAAD4/wkADQADAAMAAAD3/woADQADAAAAAAD9/wQADQADAAIAAAD9/wMADQAAAAAAAAD+/wMADQABAAIAAAAWAA8ADQACAAEAAAAWAA4ADQACAAEAAAAWAA0ADQACAAEAAAAVAA8ADQAAAAEAAAAVAA4ADQAAAAEAAAAVAA0ADQAAAAEAAAAWAAwADQACAAEAAAAVAAwADQAAAAAAAAAWAAsADQADAAAAAAABAP3/DQACAAIAAAABAPz/DQACAAEAAAABAPv/DQACAAEAAAABAPr/DQACAAEAAAABAPn/DQABAAAAAAAAAP3/DQABAAIAAAAAAPz/DQABAAEAAAAAAPv/DQABAAEAAAAAAPr/DQABAAEAAAAAAPn/DQABAAAAAAD///3/DQABAAIAAAD///z/DQABAAEAAAD///v/DQABAAEAAAD///r/DQABAAEAAAD///n/DQABAAAAAAD+//3/DQABAAIAAAD+//z/DQABAAEAAAD+//v/DQABAAEAAAD+//r/DQABAAEAAAD+//n/DQABAAAAAAD9//3/DQABAAIAAAD9//z/DQABAAEAAAD9//v/DQABAAEAAAD9//r/DQABAAEAAAD9//n/DQABAAAAAAD8//3/DQABAAIAAAD8//z/DQABAAEAAAD8//v/DQABAAEAAAD8//r/DQABAAEAAAD8//n/DQABAAAAAAD7//3/DQABAAIAAAD7//z/DQABAAEAAAD7//v/DQABAAEAAAD7//r/DQABAAEAAAD7//n/DQABAAAAAAD6//3/DQABAAIAAAD6//z/DQABAAEAAAD6//v/DQABAAEAAAD6//r/DQABAAEAAAD6//n/DQABAAAAAAD5//3/DQABAAIAAAD5//z/DQABAAEAAAD5//v/DQABAAEAAAD5//r/DQABAAEAAAD5//n/DQABAAAAAAD4//3/DQABAAIAAAD4//z/DQABAAEAAAD4//v/DQABAAEAAAD4//r/DQABAAEAAAD4//n/DQABAAAAAAD3//3/DQABAAIAAAD3//z/DQABAAEAAAD3//v/DQABAAEAAAD3//r/DQABAAEAAAD3//n/DQABAAAAAAD2//3/DQABAAIAAAD2//z/DQABAAEAAAD2//v/DQABAAEAAAD2//r/DQABAAEAAAD2//n/DQABAAAAAAD1//3/DQABAAIAAAD1//z/DQABAAEAAAD1//v/DQABAAEAAAD1//r/DQABAAEAAAD1//n/DQABAAAAAAD0//3/DQABAAIAAAD0//z/DQABAAEAAAD0//v/DQABAAEAAAD0//r/DQABAAEAAAD0//n/DQABAAAAAADz//n/DQAAAAAAAAACAPn/DQACAAMAAAD9/w8ADQAAAAEAAAD9/w4ADQAAAAEAAAD9/w0ADQABAAAAAAD8/w0ADQABAAIAAAD7/wwADQAAAAAAAAD8/wwADQACAAAAAAD7/w0ADQAAAAIAAAAAABAADQACAAAAAAD//xAADQABAAAAAAD+/xAADQABAAEAAAD+/w8ADQACAAEAAAA=") +tile_set = ExtResource("7_8exlu") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=1358184019] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=296354958 instance=ExtResource("8_cww35")] +position = Vector2(180, 302) +player_name = "StoryWeaver" +sprite_frames = ExtResource("9_3e5u1") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1732237457] +limit_left = -1300 +limit_top = 16 +limit_right = 1400 +limit_bottom = 1100 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="FrameCameraBehavior" type="Node2D" parent="OnTheGround/Player/Camera2D" unique_id=260708800 node_paths=PackedStringArray("camera", "main_target", "frame_target")] +unique_name_in_owner = true +script = ExtResource("10_6j85c") +camera = NodePath("..") +main_target = NodePath("../..") +frame_target = NodePath("../../PlayerHook/HookEnding") + +[node name="Pins" type="Node2D" parent="OnTheGround" unique_id=1774175822] +y_sort_enabled = true + +[node name="HookablePin" parent="OnTheGround/Pins" unique_id=2071223292 instance=ExtResource("10_nnwuj")] +position = Vector2(928, 868) + +[node name="HookablePin2" parent="OnTheGround/Pins" unique_id=1355120482 instance=ExtResource("10_nnwuj")] +position = Vector2(615, 1000) + +[node name="HookablePin9" parent="OnTheGround/Pins" unique_id=1615904860 instance=ExtResource("10_nnwuj")] +position = Vector2(362, 994) + +[node name="HookablePin3" parent="OnTheGround/Pins" unique_id=1852478653 instance=ExtResource("10_nnwuj")] +position = Vector2(-223, 996) + +[node name="HookablePin4" parent="OnTheGround/Pins" unique_id=2127431645 instance=ExtResource("10_nnwuj")] +position = Vector2(-873, 989) + +[node name="HookablePin5" parent="OnTheGround/Pins" unique_id=965061780 instance=ExtResource("10_nnwuj")] +position = Vector2(-690, 497) + +[node name="HookablePin6" parent="OnTheGround/Pins" unique_id=235881776 instance=ExtResource("10_nnwuj")] +position = Vector2(545, 490) + +[node name="HookablePin7" parent="OnTheGround/Pins" unique_id=1528455332 instance=ExtResource("10_nnwuj")] +position = Vector2(-680, 163) + +[node name="HookablePin8" parent="OnTheGround/Pins" unique_id=947303692 instance=ExtResource("10_nnwuj")] +position = Vector2(734, 408) + +[node name="Needles" type="Node2D" parent="OnTheGround" unique_id=1723980111] +y_sort_enabled = true + +[node name="HookableNeedle" parent="OnTheGround/Needles" unique_id=1182662384 instance=ExtResource("11_j3k8p")] +position = Vector2(-863, 672) + +[node name="HookableNeedle2" parent="OnTheGround/Needles" unique_id=1227577631 instance=ExtResource("11_j3k8p")] +position = Vector2(-997, 488) + +[node name="HookableNeedle3" parent="OnTheGround/Needles" unique_id=1032506242 instance=ExtResource("11_j3k8p")] +position = Vector2(-997, 292) + +[node name="HookableNeedle4" parent="OnTheGround/Needles" unique_id=1296661651 instance=ExtResource("11_j3k8p")] +position = Vector2(-867, 162) + +[node name="HookableNeedle5" parent="OnTheGround/Needles" unique_id=423294831 instance=ExtResource("11_j3k8p")] +position = Vector2(27, 995) + +[node name="Buttons" type="Node2D" parent="OnTheGround" unique_id=637659073] +unique_name_in_owner = true +y_sort_enabled = true + +[node name="ButtonItem" parent="OnTheGround/Buttons" unique_id=944394142 instance=ExtResource("11_umhh8")] +position = Vector2(928, 695) + +[node name="ButtonItem2" parent="OnTheGround/Buttons" unique_id=910796913 instance=ExtResource("11_umhh8")] +position = Vector2(929, 760) + +[node name="ButtonItem3" parent="OnTheGround/Buttons" unique_id=502856548 instance=ExtResource("11_umhh8")] +position = Vector2(930, 819) + +[node name="ButtonItem4" parent="OnTheGround/Buttons" unique_id=161952996 instance=ExtResource("11_umhh8")] +position = Vector2(-802, 603) + +[node name="ButtonItem5" parent="OnTheGround/Buttons" unique_id=1801391553 instance=ExtResource("11_umhh8")] +position = Vector2(-745, 544) + +[node name="ButtonItem6" parent="OnTheGround/Buttons" unique_id=67337083 instance=ExtResource("11_umhh8")] +position = Vector2(-940, 586) + +[node name="ButtonItem7" parent="OnTheGround/Buttons" unique_id=1349189359 instance=ExtResource("11_umhh8")] +position = Vector2(-1001, 393) + +[node name="ButtonItem8" parent="OnTheGround/Buttons" unique_id=1052505493 instance=ExtResource("11_umhh8")] +position = Vector2(-937, 215) + +[node name="ButtonItem9" parent="OnTheGround/Buttons" unique_id=1896963082 instance=ExtResource("11_umhh8")] +position = Vector2(-744, 170) + +[node name="ButtonItem10" parent="OnTheGround/Buttons" unique_id=2107248604 instance=ExtResource("11_umhh8")] +position = Vector2(699, 999) + +[node name="ButtonItem11" parent="OnTheGround/Buttons" unique_id=1259749210 instance=ExtResource("11_umhh8")] +position = Vector2(126, 1001) + +[node name="ButtonItem12" parent="OnTheGround/Buttons" unique_id=804292642 instance=ExtResource("11_umhh8")] +position = Vector2(-50, 991) + +[node name="ButtonItem13" parent="OnTheGround/Buttons" unique_id=569243872 instance=ExtResource("11_umhh8")] +position = Vector2(-137, 986) + +[node name="ButtonItem14" parent="OnTheGround/Buttons" unique_id=1259421155 instance=ExtResource("11_umhh8")] +position = Vector2(-770, 989) + +[node name="ButtonItem15" parent="OnTheGround/Buttons" unique_id=500680905 instance=ExtResource("11_umhh8")] +position = Vector2(-865, 781) + +[node name="ImaginationThread" parent="OnTheGround" unique_id=1678374994 instance=ExtResource("12_s8bcj")] +position = Vector2(-575, 315) +next_scene = "uid://cufkthb25mpxy" +item = SubResource("Resource_u8qfb") +collected_dialogue = ExtResource("21_x2ecx") +dialogue_title = &"thread_collected" + +[node name="Sign" parent="OnTheGround" unique_id=1579530966 instance=ExtResource("14_o5vgf")] +position = Vector2(183, 215) +text = "Fray's End" + +[node name="Door" parent="OnTheGround" unique_id=1860367584 instance=ExtResource("15_75m28")] +position = Vector2(928, 58) + +[node name="GrapplePowerup" parent="OnTheGround" unique_id=297202740 instance=ExtResource("16_tjibw")] +position = Vector2(157, 440) +ability = 16 +ability_name = "Grapple" +interact_action = "Collect Grapple" +sprite_frames = ExtResource("17_k7scg") +highlight_color = Color(0.8910073, 0.7227245, 0, 1) + +[node name="Townie" parent="OnTheGround" unique_id=1098678013 instance=ExtResource("18_x2ecx")] +position = Vector2(-348, 428) +character_seed = 3222241206 + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Townie" unique_id=1239184157] +unique_name_in_owner = true +collision_layer = 32 +collision_mask = 0 +script = ExtResource("19_j3k8p") +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Townie/InteractArea" unique_id=331426069] +visible = false +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_tonmj") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Townie" unique_id=1679411727 node_paths=PackedStringArray("interact_area")] +script = ExtResource("20_fhcwk") +dialogue = ExtResource("21_x2ecx") +title = "interact" +interact_area = NodePath("../InteractArea") +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="Trees" type="Node2D" parent="OnTheGround" unique_id=1555751240] +y_sort_enabled = true + +[node name="Tree" parent="OnTheGround/Trees" unique_id=1182216860 instance=ExtResource("29_4lfn5")] +position = Vector2(849, 81) +scale = Vector2(0.91031086, 0.8857072) +sprite_frames = ExtResource("26_q58wb") + +[node name="Tree2" parent="OnTheGround/Trees" unique_id=2142164193 instance=ExtResource("29_4lfn5")] +position = Vector2(1014, 83) +scale = Vector2(0.9057484, 0.9335767) +sprite_frames = ExtResource("26_q58wb") + +[node name="Tree3" parent="OnTheGround/Trees" unique_id=38698701 instance=ExtResource("29_4lfn5")] +position = Vector2(1296, 571) +scale = Vector2(1.0254444, 0.98018473) +sprite_frames = ExtResource("26_q58wb") + +[node name="Tree4" parent="OnTheGround/Trees" unique_id=1056790348 instance=ExtResource("29_4lfn5")] +position = Vector2(1233.9999, 596) +scale = Vector2(1.1060623, 1.1634158) +sprite_frames = ExtResource("26_q58wb") + +[node name="Tree5" parent="OnTheGround/Trees" unique_id=1453410633 instance=ExtResource("29_4lfn5")] +position = Vector2(1293, 150.00005) +scale = Vector2(1.1860983, 1.1244617) +sprite_frames = ExtResource("26_q58wb") + +[node name="Tree6" parent="OnTheGround/Trees" unique_id=1988858844 instance=ExtResource("29_4lfn5")] +position = Vector2(447.00003, 872.00006) +scale = Vector2(0.9457921, 0.8602843) +sprite_frames = ExtResource("26_q58wb") + +[node name="Tree7" parent="OnTheGround/Trees" unique_id=2020229549 instance=ExtResource("29_4lfn5")] +position = Vector2(-517, 930) +scale = Vector2(0.9063926, 0.8445107) +sprite_frames = ExtResource("26_q58wb") + +[node name="Tree8" parent="OnTheGround/Trees" unique_id=1328573466 instance=ExtResource("29_4lfn5")] +position = Vector2(-1005, 902) +scale = Vector2(1.2008963, 1.1385896) +sprite_frames = ExtResource("26_q58wb") + +[node name="Tree9" parent="OnTheGround/Trees" unique_id=1028984846 instance=ExtResource("29_4lfn5")] +position = Vector2(-1082.9999, 163) +scale = Vector2(1.026078, 0.9960759) +sprite_frames = ExtResource("26_q58wb") + +[node name="Bushes" type="Node2D" parent="OnTheGround" unique_id=1510398759] +y_sort_enabled = true + +[node name="Bush" parent="OnTheGround/Bushes" unique_id=1924859315 instance=ExtResource("30_3gauf")] +position = Vector2(1279, 175) +sprite_frames = ExtResource("28_512nx") + +[node name="Bush2" parent="OnTheGround/Bushes" unique_id=1388353417 instance=ExtResource("30_3gauf")] +position = Vector2(1203, 615) +sprite_frames = ExtResource("28_512nx") + +[node name="Bush3" parent="OnTheGround/Bushes" unique_id=1452818063 instance=ExtResource("30_3gauf")] +position = Vector2(830, 93) +sprite_frames = ExtResource("28_512nx") + +[node name="Bush4" parent="OnTheGround/Bushes" unique_id=202150602 instance=ExtResource("30_3gauf")] +position = Vector2(-367, 890) +sprite_frames = ExtResource("28_512nx") + +[node name="Bush5" parent="OnTheGround/Bushes" unique_id=1246453296 instance=ExtResource("30_3gauf")] +position = Vector2(1032, 932) +sprite_frames = ExtResource("28_512nx") + +[node name="InTheWater" type="Node2D" parent="." unique_id=1820039383] +z_index = -1 + +[node name="WaterRock" parent="InTheWater" unique_id=200189883 instance=ExtResource("26_3gauf")] +position = Vector2(-5, 75) + +[node name="WaterRock2" parent="InTheWater" unique_id=1596080954 instance=ExtResource("26_3gauf")] +position = Vector2(7, 573) + +[node name="WaterRock3" parent="InTheWater" unique_id=117605564 instance=ExtResource("26_3gauf")] +position = Vector2(328, 703) + +[node name="WaterRock4" parent="InTheWater" unique_id=339720775 instance=ExtResource("26_3gauf")] +position = Vector2(-1146, 929) + +[node name="WaterRock5" parent="InTheWater" unique_id=1244592321 instance=ExtResource("26_3gauf")] +position = Vector2(-802, 356) + +[node name="WaterRock6" parent="InTheWater" unique_id=636302411 instance=ExtResource("26_3gauf")] +position = Vector2(1267, 836) + +[node name="WaterRock7" parent="InTheWater" unique_id=1811803553 instance=ExtResource("26_3gauf")] +position = Vector2(608, 749) + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1686505878] + +[node name="HUD" parent="." unique_id=1084128841 instance=ExtResource("18_ifd06")] + +[node name="Cinematic" type="Node2D" parent="." unique_id=1729466031] +script = ExtResource("24_fhcwk") +dialogue = ExtResource("21_x2ecx") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="BackgroundMusic" type="Node" parent="." unique_id=806364705] +script = ExtResource("26_g5fhy") +stream = ExtResource("27_fj8uc") +clip = &"Creep Intro" +metadata/_custom_type_script = "uid://c8405c212rbn6" + +[node name="CloudsShadow" parent="." unique_id=1515275591 instance=ExtResource("32_0qp3n")] + +[connection signal="interaction_ended" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Townie/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_started"] diff --git a/scenes/quests/lore_quests/quest_000/quest.tres b/scenes/quests/lore_quests/quest_000/quest.tres new file mode 100644 index 0000000000..fc8f4a07e9 --- /dev/null +++ b/scenes/quests/lore_quests/quest_000/quest.tres @@ -0,0 +1,12 @@ +[gd_resource type="Resource" script_class="Quest" format=3 uid="uid://0dcffjdxn6g2"] + +[ext_resource type="Script" uid="uid://dts1hwdy3phin" path="res://scenes/menus/storybook/components/quest.gd" id="1_036vf"] + +[resource] +script = ExtResource("1_036vf") +title = "Tutorial" +first_scene = "uid://ck22vke6i1jyq" +is_lore_quest = true +skippable = true +skip_abilities = Array[int]([1, 16]) +metadata/_custom_type_script = "uid://dts1hwdy3phin" diff --git a/scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock.tscn b/scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock.tscn index e8360d4d8b..6ee6e0cad2 100644 --- a/scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock.tscn +++ b/scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://bjl6cydoln71k" path="res://scenes/game_elements/props/sequence_puzzle_object/components/sequence_puzzle_object.gd" id="1_4t6fr"] [ext_resource type="SpriteFrames" uid="uid://7ul4p7v1ve0p" path="res://scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock_sprite_frames.tres" id="2_56adf"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_sbibg"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_sbibg"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_4t6fr"] height = 44.0 @@ -26,12 +26,12 @@ position = Vector2(0, -4) rotation = 1.5708 shape = SubResource("CapsuleShape2D_4t6fr") -[node name="InteractArea" type="Area2D" parent="." unique_id=1524388095] +[node name="InteractArea" type="Area2D" parent="." unique_id=1524388095 node_paths=PackedStringArray("marker")] unique_name_in_owner = true collision_layer = 32 collision_mask = 0 script = ExtResource("3_sbibg") -interact_label_position = Vector2(0, 30) +marker = NodePath("Marker") action = "Tap" [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=1665980500] @@ -39,6 +39,9 @@ position = Vector2(0, -16) shape = SubResource("RectangleShape2D_kw7av") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=87544084] +position = Vector2(0, -64) + [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="." unique_id=2104104112] unique_name_in_owner = true bus = &"SFX" diff --git a/scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock_sprite_frames.tres b/scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock_sprite_frames.tres index 1e10f322f8..1086afeca5 100644 --- a/scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock_sprite_frames.tres +++ b/scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock_sprite_frames.tres @@ -1,25 +1,25 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://7ul4p7v1ve0p"] -[ext_resource type="Texture2D" uid="uid://bhqanyxhpxpm" path="res://assets/first_party/rocks/Rock_Idle.png" id="1_71mrs"] -[ext_resource type="Texture2D" uid="uid://bempo48hxjacy" path="res://assets/first_party/rocks/Rock_Struck.png" id="2_xs5qs"] +[ext_resource type="Texture2D" uid="uid://u8wlv6s7l7tl" path="res://assets/first_party/rocks/Rock_Greyscale_Idle.png" id="1_h8yu5"] +[ext_resource type="Texture2D" uid="uid://diq3tokrxqo5r" path="res://assets/first_party/rocks/Rock_Greyscale_Struck.png" id="2_b2ff0"] -[sub_resource type="AtlasTexture" id="AtlasTexture_36xex"] -atlas = ExtResource("2_xs5qs") +[sub_resource type="AtlasTexture" id="AtlasTexture_0auos"] +atlas = ExtResource("2_b2ff0") region = Rect2(0, 0, 128, 128) -[sub_resource type="AtlasTexture" id="AtlasTexture_e3bul"] -atlas = ExtResource("2_xs5qs") +[sub_resource type="AtlasTexture" id="AtlasTexture_h8yu5"] +atlas = ExtResource("2_b2ff0") region = Rect2(128, 0, 128, 128) -[sub_resource type="AtlasTexture" id="AtlasTexture_q2vgs"] -atlas = ExtResource("2_xs5qs") +[sub_resource type="AtlasTexture" id="AtlasTexture_72utw"] +atlas = ExtResource("2_b2ff0") region = Rect2(256, 0, 128, 128) [resource] animations = [{ "frames": [{ "duration": 1.0, -"texture": ExtResource("1_71mrs") +"texture": ExtResource("1_h8yu5") }], "loop": true, "name": &"default", @@ -27,13 +27,13 @@ animations = [{ }, { "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_36xex") +"texture": SubResource("AtlasTexture_0auos") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_e3bul") +"texture": SubResource("AtlasTexture_h8yu5") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_q2vgs") +"texture": SubResource("AtlasTexture_72utw") }], "loop": true, "name": &"struck", diff --git a/scenes/quests/lore_quests/quest_001/1_music_puzzle/music_puzzle.tscn b/scenes/quests/lore_quests/quest_001/1_music_puzzle/music_puzzle.tscn index e21a8c7420..acb3145110 100644 --- a/scenes/quests/lore_quests/quest_001/1_music_puzzle/music_puzzle.tscn +++ b/scenes/quests/lore_quests/quest_001/1_music_puzzle/music_puzzle.tscn @@ -8,7 +8,6 @@ [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="3_lbjl7"] [ext_resource type="SpriteFrames" uid="uid://clx8sssi4tw8q" path="res://scenes/game_elements/characters/components/sprite_frames/musician.tres" id="4_8nm0x"] [ext_resource type="PackedScene" uid="uid://bp20cjimwi8l0" path="res://scenes/game_elements/props/buildings/house/house_2.tscn" id="4_fgtmq"] -[ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="4_gajpc"] [ext_resource type="Texture2D" uid="uid://cfkb8gpxylplg" path="res://scenes/game_elements/props/buildings/house/components/House_Patches_Red_Stage3.png" id="5_ia2d2"] [ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="5_pgedt"] [ext_resource type="Resource" uid="uid://dx0uf6n0o7hv2" path="res://scenes/quests/lore_quests/quest_001/1_music_puzzle/components/dialogues/musician.dialogue" id="6_l4i5r"] @@ -113,10 +112,6 @@ tile_map_data = PackedByteArray("AAAMAB0ABgAAAAAAAAANAB0ABgABAAAAAAAOAB0ABgACAAA tile_set = ExtResource("3_lbjl7") metadata/_edit_lock_ = true -[node name="CliffsLevel1" type="TileMapLayer" parent="TileMapLayers" unique_id=349446661] -tile_set = ExtResource("4_gajpc") -metadata/_edit_lock_ = true - [node name="BridgesShadow" type="TileMapLayer" parent="TileMapLayers" unique_id=750946971] tile_set = ExtResource("5_pgedt") @@ -1387,32 +1382,32 @@ y_sort_enabled = true position = Vector2(-1069, -33) [node name="C" parent="OnTheGround/SequencePuzzle/Rocks" unique_id=224048554 instance=ExtResource("22_0awvw")] -modulate = Color(0.2937, 0.634442, 0.89, 1) +sprite_modulate = Color(0.2937, 0.634442, 0.89, 1) audio_stream = ExtResource("24_fgtmq") [node name="D" parent="OnTheGround/SequencePuzzle/Rocks" unique_id=2145263970 instance=ExtResource("22_0awvw")] -modulate = Color(0.89, 0.2937, 0.804817, 1) position = Vector2(80, -8) +sprite_modulate = Color(0.89, 0.2937, 0.804817, 1) audio_stream = ExtResource("25_jdge0") [node name="E" parent="OnTheGround/SequencePuzzle/Rocks" unique_id=654636490 instance=ExtResource("22_0awvw")] -modulate = Color(0.89, 0.804817, 0.2937, 1) position = Vector2(160, -16) +sprite_modulate = Color(0.89, 0.804817, 0.2937, 1) audio_stream = ExtResource("26_pjyxn") [node name="F" parent="OnTheGround/SequencePuzzle/Rocks" unique_id=1823554115 instance=ExtResource("22_0awvw")] -modulate = Color(0.2937, 0.89, 0.634451, 1) position = Vector2(240, -24) +sprite_modulate = Color(0.2937, 0.89, 0.634451, 1) audio_stream = ExtResource("27_ftljy") [node name="G" parent="OnTheGround/SequencePuzzle/Rocks" unique_id=1942800513 instance=ExtResource("22_0awvw")] -modulate = Color(0.464066, 0.2937, 0.89, 1) position = Vector2(320, -32) +sprite_modulate = Color(0.464066, 0.2937, 0.89, 1) audio_stream = ExtResource("28_orlow") [node name="A" parent="OnTheGround/SequencePuzzle/Rocks" unique_id=707462418 instance=ExtResource("22_0awvw")] -modulate = Color(0.89, 0.2937, 0.2937, 1) position = Vector2(400, -40) +sprite_modulate = Color(0.89, 0.2937, 0.2937, 1) audio_stream = ExtResource("29_lbjl7") [node name="Bonfires" type="Node2D" parent="OnTheGround/SequencePuzzle" unique_id=954791934] @@ -1420,28 +1415,24 @@ y_sort_enabled = true [node name="BonfireSign1" parent="OnTheGround/SequencePuzzle/Bonfires" unique_id=186153333 instance=ExtResource("9_evicy")] position = Vector2(-1057, -212) -scale = Vector2(1.2, 1.2) sprite_frames = ExtResource("29_crvxf") solved_sound_effect = ExtResource("30_55bav") solved_ambient_sound = ExtResource("31_ink4c") [node name="BonfireSign2" parent="OnTheGround/SequencePuzzle/Bonfires" unique_id=179875505 instance=ExtResource("9_evicy")] position = Vector2(-931, -237) -scale = Vector2(1.2, 1.2) sprite_frames = ExtResource("30_0wfv2") solved_sound_effect = ExtResource("30_55bav") solved_ambient_sound = ExtResource("31_ink4c") [node name="BonfireSign3" parent="OnTheGround/SequencePuzzle/Bonfires" unique_id=1821063880 instance=ExtResource("9_evicy")] position = Vector2(-803, -239) -scale = Vector2(1.2, 1.2) sprite_frames = ExtResource("31_55bav") solved_sound_effect = ExtResource("30_55bav") solved_ambient_sound = ExtResource("31_ink4c") [node name="BonfireSign4" parent="OnTheGround/SequencePuzzle/Bonfires" unique_id=1680483058 instance=ExtResource("9_evicy")] position = Vector2(-672, -212) -scale = Vector2(1.2, 1.2) sprite_frames = ExtResource("32_0wfv2") solved_sound_effect = ExtResource("30_55bav") solved_ambient_sound = ExtResource("31_ink4c") @@ -1471,7 +1462,7 @@ hint_sign = NodePath("../../Bonfires/BonfireSign4") [node name="CollectibleItem" parent="OnTheGround/SequencePuzzle" unique_id=530712613 instance=ExtResource("14_src2c")] position = Vector2(-726, 43) revealed = false -next_scene = "uid://c764br4tplkb2" +next_scene = "uid://cgemeabsewy1f" item = SubResource("Resource_dp3eg") collected_dialogue = ExtResource("6_l4i5r") dialogue_title = &"well_done" diff --git a/scenes/quests/lore_quests/quest_001/2_ink_combat/components/combat_music.tres b/scenes/quests/lore_quests/quest_001/2_ink_combat/components/combat_music.tres index 898f053f37..2e560f09ac 100644 --- a/scenes/quests/lore_quests/quest_001/2_ink_combat/components/combat_music.tres +++ b/scenes/quests/lore_quests/quest_001/2_ink_combat/components/combat_music.tres @@ -14,8 +14,8 @@ clip_1/auto_advance = 0 _transitions = { Vector2i(0, 1): { "fade_beats": 2.0, -"fade_mode": 3, -"from_time": 0, +"fade_mode": 2, +"from_time": 1, "to_time": 1 } } diff --git a/scenes/quests/lore_quests/quest_001/2_ink_combat/components/dialogues/ink_well.dialogue b/scenes/quests/lore_quests/quest_001/2_ink_combat/components/dialogues/ink_well.dialogue index a4422dd160..337b09f440 100644 --- a/scenes/quests/lore_quests/quest_001/2_ink_combat/components/dialogues/ink_well.dialogue +++ b/scenes/quests/lore_quests/quest_001/2_ink_combat/components/dialogues/ink_well.dialogue @@ -1,8 +1,8 @@ # SPDX-FileCopyrightText: The Threadbare Authors # SPDX-License-Identifier: MPL-2.0 ~ start -Musician: The songwriters wrote such colorful songs, before. But the InkDrinkers consumed all of the ink. Restore the ink to the matching jars. -Musician: But be careful, they splat! +Musician: The songwriters wrote such colorful songs, before. But the InkDrinkers consumed all of the ink. +Musician: [wave amp=25 freq=5]Repel[/wave] the ink they spray to fill the matching jars. Be careful! => END ~ well_done Musician: Well done StoryWeaver, you have collected enough ink for new songs and stories. Everyone will rejoice. diff --git a/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_1.tscn b/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_1.tscn deleted file mode 100644 index e8603aab86..0000000000 --- a/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_1.tscn +++ /dev/null @@ -1,238 +0,0 @@ -[gd_scene format=4 uid="uid://c764br4tplkb2"] - -[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="1_33khf"] -[ext_resource type="AudioStream" uid="uid://dkgtyb0x1i0m2" path="res://scenes/quests/lore_quests/quest_001/2_ink_combat/components/combat_music.tres" id="2_3npeg"] -[ext_resource type="Resource" uid="uid://cmhcuoms2kh1a" path="res://scenes/quests/lore_quests/quest_001/2_ink_combat/components/dialogues/ink_well.dialogue" id="2_o41k0"] -[ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="3_0b2ty"] -[ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="3_nlryc"] -[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="3_v7ikp"] -[ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="5_bxnsu"] -[ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="5_h0i4r"] -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="5_lmnu5"] -[ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="5_nlryc"] -[ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="6_3npeg"] -[ext_resource type="PackedScene" uid="uid://y8ha8abfyap2" path="res://scenes/game_elements/props/filling_barrel/filling_barrel.tscn" id="6_v7ikp"] -[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="8_4e5be"] -[ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="8_k65js"] -[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="9_k65js"] -[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="9_na0be"] -[ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="9_ypq02"] -[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="10_hlahk"] -[ext_resource type="SpriteFrames" uid="uid://b3r84ksew5djp" path="res://scenes/game_elements/characters/enemies/throwing_enemy/components/ink_drinker_frames_purple.tres" id="12_h7w4n"] -[ext_resource type="AudioStream" uid="uid://qf2d38rabx8o" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Wings.ogg" id="13_gn6oy"] -[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="13_hlahk"] -[ext_resource type="AudioStream" uid="uid://fcmjf1srys7n" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg" id="14_7ekah"] -[ext_resource type="PackedScene" uid="uid://c5jedlvvnnbi0" path="res://scenes/game_elements/props/projectile/ink_blob_projectile.tscn" id="16_k65js"] -[ext_resource type="PackedScene" uid="uid://dkx3dgc1br3b4" path="res://scenes/ui_elements/input_hints/repel_hint.tscn" id="22_8me22"] - -[sub_resource type="Animation" id="Animation_nlryc"] -resource_name = "goal_completed" -tracks/0/type = "method" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("../OnTheGround/LevelExit/Door Exit") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(1), -"transitions": PackedFloat32Array(1), -"values": [{ -"args": [], -"method": &"open" -}] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_hlahk"] -_data = { -&"goal_completed": SubResource("Animation_nlryc") -} - -[sub_resource type="RectangleShape2D" id="RectangleShape2D_lmnu5"] -size = Vector2(101, 49) - -[node name="InkCombatRound1" type="Node2D" unique_id=1019395160] -y_sort_enabled = true - -[node name="BackgroundMusic" parent="." unique_id=593411595 instance=ExtResource("3_nlryc")] -stream = ExtResource("2_3npeg") - -[node name="Cinematic" type="Node2D" parent="." unique_id=2113147326] -script = ExtResource("1_33khf") -dialogue = ExtResource("2_o41k0") -metadata/_custom_type_script = "uid://x1mxt6bmei2o" - -[node name="FillGameLogic" type="Node" parent="." unique_id=1864340513] -script = ExtResource("3_0b2ty") -metadata/_custom_type_script = "uid://cp54mgi54nywo" - -[node name="LevelCompletedAnimation" type="AnimationPlayer" parent="FillGameLogic" unique_id=335498311] -libraries/ = SubResource("AnimationLibrary_hlahk") - -[node name="TileMapLayers" type="Node2D" parent="." unique_id=1224807967] - -[node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=2093174912] -tile_map_data = PackedByteArray("AAAFAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAADAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAD//wcAAAAAAAAAAAD//wgAAAAAAAAAAAD//wkAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAgAAAAAAAAAAAABAAgAAAAAAAAAAAABAAkAAAAAAAAAAAACAAkAAAAAAAAAAAACAAgAAAAAAAAAAAADAAgAAAAAAAAAAAADAAkAAAAAAAAAAAAEAAkAAAAAAAAAAAAEAAgAAAAAAAAAAAAFAAgAAAAAAAAAAAAFAAkAAAAAAAAAAAAGAAkAAAAAAAAAAAAGAAgAAAAAAAAAAAAHAAgAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAIAAgAAAAAAAAAAAAJAAgAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAAKAAgAAAAAAAAAAAALAAgAAAAAAAAAAAALAAkAAAAAAAAAAAAMAAkAAAAAAAAAAAAMAAgAAAAAAAAAAAANAAgAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAkAAAAAAAAAAAAOAAgAAAAAAAAAAAAOAAcAAAAAAAAAAAAOAAYAAAAAAAAAAAAOAAUAAAAAAAAAAAAOAAQAAAAAAAAAAAAOAAMAAAAAAAAAAAAOAAIAAAAAAAAAAAAOAAEAAAAAAAAAAAAOAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAPAAEAAAAAAAAAAAAPAAIAAAAAAAAAAAAPAAMAAAAAAAAAAAAPAAQAAAAAAAAAAAAPAAUAAAAAAAAAAAAPAAYAAAAAAAAAAAAPAAcAAAAAAAAAAAAPAAgAAAAAAAAAAAAPAAkAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAMAAAAAAAAAAAANAAEAAAAAAAAAAAANAAIAAAAAAAAAAAD+/woAAAAAAAAAAAD9/wsAAAAAAAAAAAD8/wwAAAAAAAAAAAD7/w0AAAAAAAAAAAD6/w4AAAAAAAAAAAD5/w8AAAAAAAAAAAAQAP//AAAAAAAAAAARAP7/AAAAAAAAAAASAP3/AAAAAAAAAAATAPz/AAAAAAAAAAAUAPv/AAAAAAAAAAAVAPr/AAAAAAAAAAD9//7/AAAAAAAAAAD8//3/AAAAAAAAAAD7//z/AAAAAAAAAAD6//v/AAAAAAAAAAD5//r/AAAAAAAAAAAQAAoAAAAAAAAAAAARAAsAAAAAAAAAAAASAAwAAAAAAAAAAAATAA0AAAAAAAAAAAAUAA4AAAAAAAAAAAAVAA8AAAAAAAAAAAD+//7/AAAAAAAAAAD///7/AAAAAAAAAAAAAP7/AAAAAAAAAAABAP7/AAAAAAAAAAACAP7/AAAAAAAAAAADAP7/AAAAAAAAAAAEAP7/AAAAAAAAAAAFAP7/AAAAAAAAAAAGAP7/AAAAAAAAAAAHAP7/AAAAAAAAAAAIAP7/AAAAAAAAAAAJAP//AAAAAAAAAAAJAP7/AAAAAAAAAAAKAP//AAAAAAAAAAALAP//AAAAAAAAAAAMAP//AAAAAAAAAAANAP//AAAAAAAAAAAOAP//AAAAAAAAAAAPAP//AAAAAAAAAAAKAP7/AAAAAAAAAAALAP7/AAAAAAAAAAAMAP7/AAAAAAAAAAANAP7/AAAAAAAAAAAOAP7/AAAAAAAAAAAPAP7/AAAAAAAAAAAQAP7/AAAAAAAAAAD9//3/AAAAAAAAAAD+//3/AAAAAAAAAAD///3/AAAAAAAAAAAAAP3/AAAAAAAAAAABAP3/AAAAAAAAAAACAP3/AAAAAAAAAAADAP3/AAAAAAAAAAAEAP3/AAAAAAAAAAAFAP3/AAAAAAAAAAAGAP3/AAAAAAAAAAAHAP3/AAAAAAAAAAAIAP3/AAAAAAAAAAAJAP3/AAAAAAAAAAAKAP3/AAAAAAAAAAALAP3/AAAAAAAAAAAMAP3/AAAAAAAAAAANAP3/AAAAAAAAAAAOAP3/AAAAAAAAAAAPAP3/AAAAAAAAAAAQAP3/AAAAAAAAAAARAP3/AAAAAAAAAAD8//z/AAAAAAAAAAD9//z/AAAAAAAAAAD+//z/AAAAAAAAAAD///z/AAAAAAAAAAAAAPz/AAAAAAAAAAABAPz/AAAAAAAAAAACAPz/AAAAAAAAAAADAPz/AAAAAAAAAAAEAPz/AAAAAAAAAAAFAPz/AAAAAAAAAAAGAPz/AAAAAAAAAAAHAPz/AAAAAAAAAAAIAPz/AAAAAAAAAAAJAPz/AAAAAAAAAAAKAPz/AAAAAAAAAAALAPz/AAAAAAAAAAAMAPz/AAAAAAAAAAANAPz/AAAAAAAAAAAOAPz/AAAAAAAAAAAPAPz/AAAAAAAAAAAQAPz/AAAAAAAAAAARAPz/AAAAAAAAAAASAPz/AAAAAAAAAAD7//v/AAAAAAAAAAD8//v/AAAAAAAAAAD9//v/AAAAAAAAAAD+//v/AAAAAAAAAAD///v/AAAAAAAAAAAAAPv/AAAAAAAAAAABAPv/AAAAAAAAAAACAPv/AAAAAAAAAAADAPv/AAAAAAAAAAAEAPv/AAAAAAAAAAAFAPv/AAAAAAAAAAAGAPv/AAAAAAAAAAAHAPv/AAAAAAAAAAAIAPv/AAAAAAAAAAAJAPv/AAAAAAAAAAAKAPv/AAAAAAAAAAALAPv/AAAAAAAAAAAMAPv/AAAAAAAAAAANAPv/AAAAAAAAAAAOAPv/AAAAAAAAAAAPAPv/AAAAAAAAAAAQAPv/AAAAAAAAAAARAPv/AAAAAAAAAAASAPv/AAAAAAAAAAATAPv/AAAAAAAAAAD6//r/AAAAAAAAAAD7//r/AAAAAAAAAAD8//r/AAAAAAAAAAD9//r/AAAAAAAAAAD+//r/AAAAAAAAAAD///r/AAAAAAAAAAAAAPr/AAAAAAAAAAABAPr/AAAAAAAAAAACAPr/AAAAAAAAAAADAPr/AAAAAAAAAAAEAPr/AAAAAAAAAAAFAPr/AAAAAAAAAAAGAPr/AAAAAAAAAAAHAPr/AAAAAAAAAAAIAPr/AAAAAAAAAAAJAPr/AAAAAAAAAAAKAPr/AAAAAAAAAAALAPr/AAAAAAAAAAAMAPr/AAAAAAAAAAANAPr/AAAAAAAAAAAOAPr/AAAAAAAAAAAPAPr/AAAAAAAAAAAQAPr/AAAAAAAAAAARAPr/AAAAAAAAAAASAPr/AAAAAAAAAAATAPr/AAAAAAAAAAAUAPr/AAAAAAAAAAD5//v/AAAAAAAAAAD5//z/AAAAAAAAAAD5//3/AAAAAAAAAAD5//7/AAAAAAAAAAD5////AAAAAAAAAAD5/wAAAAAAAAAAAAD5/wEAAAAAAAAAAAD5/wIAAAAAAAAAAAD5/wMAAAAAAAAAAAD5/wQAAAAAAAAAAAD5/wUAAAAAAAAAAAD5/wYAAAAAAAAAAAD5/wcAAAAAAAAAAAD5/wgAAAAAAAAAAAD5/wkAAAAAAAAAAAD6/wkAAAAAAAAAAAD7/wkAAAAAAAAAAAD7/wgAAAAAAAAAAAD7/wcAAAAAAAAAAAD7/wYAAAAAAAAAAAD7/wUAAAAAAAAAAAD7/wQAAAAAAAAAAAD7/wMAAAAAAAAAAAD7/wIAAAAAAAAAAAD8/wIAAAAAAAAAAAD8/wEAAAAAAAAAAAD8/wAAAAAAAAAAAAD8////AAAAAAAAAAD8//7/AAAAAAAAAAD6//z/AAAAAAAAAAD6//3/AAAAAAAAAAD6//7/AAAAAAAAAAD6////AAAAAAAAAAD6/wAAAAAAAAAAAAD6/wEAAAAAAAAAAAD6/wIAAAAAAAAAAAD6/wYAAAAAAAAAAAD6/wUAAAAAAAAAAAD6/wQAAAAAAAAAAAD6/wMAAAAAAAAAAAD6/wcAAAAAAAAAAAD6/wgAAAAAAAAAAAD7//3/AAAAAAAAAAD7//7/AAAAAAAAAAD7////AAAAAAAAAAD7/wAAAAAAAAAAAAD7/wEAAAAAAAAAAAD9////AAAAAAAAAAD9/wAAAAAAAAAAAAD9/wEAAAAAAAAAAAD9/wIAAAAAAAAAAAD9/wMAAAAAAAAAAAD9/wQAAAAAAAAAAAD9/wUAAAAAAAAAAAD9/wYAAAAAAAAAAAD9/wcAAAAAAAAAAAD9/wgAAAAAAAAAAAD8/wgAAAAAAAAAAAD8/wcAAAAAAAAAAAD8/wYAAAAAAAAAAAD8/wUAAAAAAAAAAAD8/wQAAAAAAAAAAAD8/wMAAAAAAAAAAAD+/wgAAAAAAAAAAAD9/wkAAAAAAAAAAAD+/wkAAAAAAAAAAAD8/wkAAAAAAAAAAAD9/woAAAAAAAAAAAD8/woAAAAAAAAAAAD7/woAAAAAAAAAAAD6/woAAAAAAAAAAAD5/woAAAAAAAAAAAD5/wsAAAAAAAAAAAD5/wwAAAAAAAAAAAD6/wsAAAAAAAAAAAD7/wsAAAAAAAAAAAD8/wsAAAAAAAAAAAD7/wwAAAAAAAAAAAD6/wwAAAAAAAAAAAD6/w0AAAAAAAAAAAD5/w0AAAAAAAAAAAD5/w4AAAAAAAAAAAD6/w8AAAAAAAAAAAD7/w8AAAAAAAAAAAD8/w8AAAAAAAAAAAD9/w8AAAAAAAAAAAD+/w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAA8AAAAAAAAAAAABAA8AAAAAAAAAAAACAA8AAAAAAAAAAAADAA8AAAAAAAAAAAAEAA8AAAAAAAAAAAAFAA8AAAAAAAAAAAAGAA8AAAAAAAAAAAAGAA4AAAAAAAAAAAAGAA0AAAAAAAAAAAAGAAwAAAAAAAAAAAAGAAsAAAAAAAAAAAAGAAoAAAAAAAAAAAAFAAoAAAAAAAAAAAAEAAoAAAAAAAAAAAADAAoAAAAAAAAAAAACAAoAAAAAAAAAAAABAAoAAAAAAAAAAAAAAAoAAAAAAAAAAAD//woAAAAAAAAAAAD//wsAAAAAAAAAAAD+/wsAAAAAAAAAAAD+/wwAAAAAAAAAAAD9/wwAAAAAAAAAAAD8/w0AAAAAAAAAAAD7/w4AAAAAAAAAAAD8/w4AAAAAAAAAAAD9/w4AAAAAAAAAAAD+/w4AAAAAAAAAAAD//w4AAAAAAAAAAAAAAA4AAAAAAAAAAAABAA4AAAAAAAAAAAACAA4AAAAAAAAAAAADAA4AAAAAAAAAAAAEAA4AAAAAAAAAAAAFAA4AAAAAAAAAAAAFAA0AAAAAAAAAAAAFAAwAAAAAAAAAAAAFAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAADAAsAAAAAAAAAAAACAAsAAAAAAAAAAAABAAsAAAAAAAAAAAAAAAsAAAAAAAAAAAD//wwAAAAAAAAAAAD+/w0AAAAAAAAAAAD//w0AAAAAAAAAAAAAAA0AAAAAAAAAAAABAA0AAAAAAAAAAAACAA0AAAAAAAAAAAADAA0AAAAAAAAAAAAEAA0AAAAAAAAAAAAEAAwAAAAAAAAAAAADAAwAAAAAAAAAAAACAAwAAAAAAAAAAAABAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAD9/w0AAAAAAAAAAAAHAA8AAAAAAAAAAAAIAA8AAAAAAAAAAAAJAA8AAAAAAAAAAAAKAA8AAAAAAAAAAAALAA8AAAAAAAAAAAAMAA8AAAAAAAAAAAANAA8AAAAAAAAAAAAOAA8AAAAAAAAAAAAPAA8AAAAAAAAAAAAQAA8AAAAAAAAAAAARAA8AAAAAAAAAAAASAA8AAAAAAAAAAAATAA8AAAAAAAAAAAAUAA8AAAAAAAAAAAATAA4AAAAAAAAAAAASAA4AAAAAAAAAAAARAA4AAAAAAAAAAAAQAA4AAAAAAAAAAAAPAA4AAAAAAAAAAAAOAA4AAAAAAAAAAAANAA4AAAAAAAAAAAAMAA4AAAAAAAAAAAALAA4AAAAAAAAAAAAKAA4AAAAAAAAAAAAJAA4AAAAAAAAAAAAIAA4AAAAAAAAAAAAHAA4AAAAAAAAAAAAHAA0AAAAAAAAAAAAIAA0AAAAAAAAAAAAJAA0AAAAAAAAAAAAKAA0AAAAAAAAAAAALAA0AAAAAAAAAAAAMAA0AAAAAAAAAAAANAA0AAAAAAAAAAAAOAA0AAAAAAAAAAAAPAA0AAAAAAAAAAAAQAA0AAAAAAAAAAAARAA0AAAAAAAAAAAASAA0AAAAAAAAAAAARAAwAAAAAAAAAAAAQAAwAAAAAAAAAAAAPAAwAAAAAAAAAAAAOAAwAAAAAAAAAAAANAAwAAAAAAAAAAAAMAAwAAAAAAAAAAAALAAwAAAAAAAAAAAAKAAwAAAAAAAAAAAAJAAwAAAAAAAAAAAAIAAwAAAAAAAAAAAAHAAwAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAAPAAsAAAAAAAAAAAAQAAsAAAAAAAAAAAAPAAoAAAAAAAAAAAAOAAoAAAAAAAAAAAANAAoAAAAAAAAAAAAMAAoAAAAAAAAAAAALAAoAAAAAAAAAAAAKAAoAAAAAAAAAAAAJAAoAAAAAAAAAAAAIAAoAAAAAAAAAAAAHAAoAAAAAAAAAAAAVAA4AAAAAAAAAAAAVAA0AAAAAAAAAAAAVAAwAAAAAAAAAAAAVAAsAAAAAAAAAAAAVAAoAAAAAAAAAAAAVAAkAAAAAAAAAAAAVAAgAAAAAAAAAAAAVAAcAAAAAAAAAAAAVAAYAAAAAAAAAAAAUAAYAAAAAAAAAAAATAAYAAAAAAAAAAAASAAYAAAAAAAAAAAARAAYAAAAAAAAAAAAQAAYAAAAAAAAAAAAQAAcAAAAAAAAAAAAQAAgAAAAAAAAAAAAQAAkAAAAAAAAAAAARAAoAAAAAAAAAAAARAAkAAAAAAAAAAAARAAgAAAAAAAAAAAARAAcAAAAAAAAAAAASAAcAAAAAAAAAAAASAAgAAAAAAAAAAAASAAkAAAAAAAAAAAASAAoAAAAAAAAAAAASAAsAAAAAAAAAAAATAAsAAAAAAAAAAAATAAoAAAAAAAAAAAATAAkAAAAAAAAAAAATAAgAAAAAAAAAAAATAAcAAAAAAAAAAAATAAwAAAAAAAAAAAAUAA0AAAAAAAAAAAAUAAwAAAAAAAAAAAAUAAsAAAAAAAAAAAAUAAoAAAAAAAAAAAAUAAkAAAAAAAAAAAAUAAgAAAAAAAAAAAAUAAcAAAAAAAAAAAAVAAUAAAAAAAAAAAAVAAQAAAAAAAAAAAAVAAMAAAAAAAAAAAAVAAIAAAAAAAAAAAAVAAEAAAAAAAAAAAAVAAAAAAAAAAAAAAAVAP//AAAAAAAAAAAVAP7/AAAAAAAAAAAVAP3/AAAAAAAAAAAUAP3/AAAAAAAAAAAUAPz/AAAAAAAAAAATAP3/AAAAAAAAAAASAP7/AAAAAAAAAAASAP//AAAAAAAAAAARAP//AAAAAAAAAAARAAAAAAAAAAAAAAARAAEAAAAAAAAAAAAQAAEAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAIAAAAAAAAAAAAQAAMAAAAAAAAAAAAQAAQAAAAAAAAAAAAQAAUAAAAAAAAAAAARAAUAAAAAAAAAAAASAAUAAAAAAAAAAAARAAQAAAAAAAAAAAARAAIAAAAAAAAAAAARAAMAAAAAAAAAAAASAAQAAAAAAAAAAAATAAQAAAAAAAAAAAATAAMAAAAAAAAAAAATAAIAAAAAAAAAAAASAAIAAAAAAAAAAAASAAEAAAAAAAAAAAATAAEAAAAAAAAAAAATAAUAAAAAAAAAAAASAAMAAAAAAAAAAAAUAAQAAAAAAAAAAAAUAAUAAAAAAAAAAAAUAAMAAAAAAAAAAAAUAAIAAAAAAAAAAAAUAAEAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAP//AAAAAAAAAAAUAP7/AAAAAAAAAAATAP7/AAAAAAAAAAATAP//AAAAAAAAAAATAAAAAAAAAAAAAAAVAPz/AAAAAAAAAAAVAPv/AAAAAAAAAAASAAAAAAAAAAAAAAD4//r/AAAAAAAAAAD3//r/AAAAAAAAAAD2//r/AAAAAAAAAAD2//v/AAAAAAAAAAD2//z/AAAAAAAAAAD2//3/AAAAAAAAAAD2//7/AAAAAAAAAAD2////AAAAAAAAAAD2/wAAAAAAAAAAAAD1/wAAAAAAAAAAAAD1/wEAAAAAAAAAAAD1/wIAAAAAAAAAAAD1/wMAAAAAAAAAAAD1/wQAAAAAAAAAAAD1/wUAAAAAAAAAAAD1/wYAAAAAAAAAAAD1/wcAAAAAAAAAAAD1/wgAAAAAAAAAAAD1/wkAAAAAAAAAAAD1/woAAAAAAAAAAAD1/wsAAAAAAAAAAAD1/wwAAAAAAAAAAAD1/w0AAAAAAAAAAAD1/w4AAAAAAAAAAAD1/w8AAAAAAAAAAAD2/w8AAAAAAAAAAAD3/w8AAAAAAAAAAAD4/w8AAAAAAAAAAAD4/w4AAAAAAAAAAAD4/w0AAAAAAAAAAAD4/wwAAAAAAAAAAAD4/wsAAAAAAAAAAAD4/woAAAAAAAAAAAD4/wkAAAAAAAAAAAD4/wgAAAAAAAAAAAD4/wcAAAAAAAAAAAD4/wYAAAAAAAAAAAD4/wUAAAAAAAAAAAD4/wQAAAAAAAAAAAD4/wMAAAAAAAAAAAD4/wIAAAAAAAAAAAD4/wEAAAAAAAAAAAD4/wAAAAAAAAAAAAD4////AAAAAAAAAAD4//7/AAAAAAAAAAD4//3/AAAAAAAAAAD4//z/AAAAAAAAAAD4//v/AAAAAAAAAAD3//v/AAAAAAAAAAD1//r/AAAAAAAAAAD1//v/AAAAAAAAAAD1//z/AAAAAAAAAAD1//3/AAAAAAAAAAD1//7/AAAAAAAAAAD1////AAAAAAAAAAD3//7/AAAAAAAAAAD3//3/AAAAAAAAAAD3//z/AAAAAAAAAAD3////AAAAAAAAAAD3/wAAAAAAAAAAAAD3/wEAAAAAAAAAAAD3/wIAAAAAAAAAAAD3/wMAAAAAAAAAAAD3/wQAAAAAAAAAAAD2/wQAAAAAAAAAAAD2/wUAAAAAAAAAAAD2/wMAAAAAAAAAAAD2/wIAAAAAAAAAAAD2/wEAAAAAAAAAAAD2/wYAAAAAAAAAAAD2/wcAAAAAAAAAAAD2/wgAAAAAAAAAAAD2/wkAAAAAAAAAAAD3/woAAAAAAAAAAAD3/wkAAAAAAAAAAAD3/wgAAAAAAAAAAAD3/wcAAAAAAAAAAAD3/wYAAAAAAAAAAAD3/wUAAAAAAAAAAAD3/wsAAAAAAAAAAAD2/wwAAAAAAAAAAAD2/w0AAAAAAAAAAAD2/wsAAAAAAAAAAAD2/woAAAAAAAAAAAD3/wwAAAAAAAAAAAD3/w0AAAAAAAAAAAD3/w4AAAAAAAAAAAD2/w4AAAAAAAAAAAAWAA8AAAAAAAAAAAAXAA8AAAAAAAAAAAAYAA8AAAAAAAAAAAAZAA8AAAAAAAAAAAAZAA4AAAAAAAAAAAAZAA0AAAAAAAAAAAAZAAwAAAAAAAAAAAAZAAsAAAAAAAAAAAAZAAoAAAAAAAAAAAAZAAkAAAAAAAAAAAAZAAgAAAAAAAAAAAAYAAcAAAAAAAAAAAAYAAYAAAAAAAAAAAAYAAUAAAAAAAAAAAAYAAQAAAAAAAAAAAAYAAMAAAAAAAAAAAAYAAIAAAAAAAAAAAAYAAEAAAAAAAAAAAAYAAAAAAAAAAAAAAAYAP//AAAAAAAAAAAYAP7/AAAAAAAAAAAYAP3/AAAAAAAAAAAYAPz/AAAAAAAAAAAYAPv/AAAAAAAAAAAYAPr/AAAAAAAAAAAXAPr/AAAAAAAAAAAWAPr/AAAAAAAAAAAZAPr/AAAAAAAAAAAZAPv/AAAAAAAAAAAZAPz/AAAAAAAAAAAZAP3/AAAAAAAAAAAZAP7/AAAAAAAAAAAZAP//AAAAAAAAAAAZAAAAAAAAAAAAAAAZAAEAAAAAAAAAAAAZAAIAAAAAAAAAAAAZAAMAAAAAAAAAAAAZAAQAAAAAAAAAAAAZAAUAAAAAAAAAAAAZAAYAAAAAAAAAAAAZAAcAAAAAAAAAAAAWAA0AAAAAAAAAAAAWAAwAAAAAAAAAAAAWAAsAAAAAAAAAAAAWAAoAAAAAAAAAAAAWAAkAAAAAAAAAAAAWAAgAAAAAAAAAAAAWAAcAAAAAAAAAAAAWAAYAAAAAAAAAAAAWAAUAAAAAAAAAAAAWAAQAAAAAAAAAAAAWAAMAAAAAAAAAAAAWAAIAAAAAAAAAAAAWAAEAAAAAAAAAAAAWAAAAAAAAAAAAAAAWAP//AAAAAAAAAAAWAP7/AAAAAAAAAAAXAP7/AAAAAAAAAAAXAP3/AAAAAAAAAAAWAP3/AAAAAAAAAAAWAPz/AAAAAAAAAAAWAPv/AAAAAAAAAAAXAPv/AAAAAAAAAAAXAPz/AAAAAAAAAAAXAP//AAAAAAAAAAAXAAAAAAAAAAAAAAAXAAEAAAAAAAAAAAAXAAIAAAAAAAAAAAAXAAMAAAAAAAAAAAAXAAQAAAAAAAAAAAAXAAUAAAAAAAAAAAAXAAYAAAAAAAAAAAAXAAcAAAAAAAAAAAAXAAgAAAAAAAAAAAAXAAkAAAAAAAAAAAAXAAoAAAAAAAAAAAAYAAgAAAAAAAAAAAAYAAkAAAAAAAAAAAAYAAoAAAAAAAAAAAAXAAsAAAAAAAAAAAAXAAwAAAAAAAAAAAAYAAwAAAAAAAAAAAAYAA0AAAAAAAAAAAAXAA0AAAAAAAAAAAAWAA4AAAAAAAAAAAAXAA4AAAAAAAAAAAAYAA4AAAAAAAAAAAAYAAsAAAAAAAAAAAD1//n/AAAAAAAAAAD2//n/AAAAAAAAAAD3//n/AAAAAAAAAAD4//n/AAAAAAAAAAD5//n/AAAAAAAAAAD6//n/AAAAAAAAAAD7//n/AAAAAAAAAAD8//n/AAAAAAAAAAD9//n/AAAAAAAAAAD+//n/AAAAAAAAAAD///n/AAAAAAAAAAAAAPn/AAAAAAAAAAABAPn/AAAAAAAAAAACAPn/AAAAAAAAAAADAPn/AAAAAAAAAAAEAPn/AAAAAAAAAAAFAPn/AAAAAAAAAAAGAPn/AAAAAAAAAAAHAPn/AAAAAAAAAAAIAPn/AAAAAAAAAAAJAPn/AAAAAAAAAAAKAPn/AAAAAAAAAAALAPn/AAAAAAAAAAAWAPn/AAAAAAAAAAAXAPn/AAAAAAAAAAAYAPn/AAAAAAAAAAAZAPn/AAAAAAAAAAAVAPn/AAAAAAAAAAAUAPn/AAAAAAAAAAATAPn/AAAAAAAAAAASAPn/AAAAAAAAAAARAPn/AAAAAAAAAAAQAPn/AAAAAAAAAAAPAPn/AAAAAAAAAAAOAPn/AAAAAAAAAAANAPn/AAAAAAAAAAAMAPn/AAAAAAAAAAD1//j/AAAAAAAAAAD2//j/AAAAAAAAAAD3//j/AAAAAAAAAAD4//j/AAAAAAAAAAD5//j/AAAAAAAAAAD6//j/AAAAAAAAAAD7//j/AAAAAAAAAAD8//j/AAAAAAAAAAD9//j/AAAAAAAAAAD+//j/AAAAAAAAAAD///j/AAAAAAAAAAAAAPj/AAAAAAAAAAABAPj/AAAAAAAAAAACAPj/AAAAAAAAAAADAPj/AAAAAAAAAAAEAPj/AAAAAAAAAAAFAPj/AAAAAAAAAAAGAPj/AAAAAAAAAAAHAPj/AAAAAAAAAAAIAPj/AAAAAAAAAAAJAPj/AAAAAAAAAAAKAPj/AAAAAAAAAAALAPj/AAAAAAAAAAAMAPj/AAAAAAAAAAANAPj/AAAAAAAAAAAOAPj/AAAAAAAAAAAPAPj/AAAAAAAAAAAQAPj/AAAAAAAAAAARAPj/AAAAAAAAAAASAPj/AAAAAAAAAAATAPj/AAAAAAAAAAAUAPj/AAAAAAAAAAAVAPj/AAAAAAAAAAAWAPj/AAAAAAAAAAAXAPj/AAAAAAAAAAAYAPj/AAAAAAAAAAAZAPj/AAAAAAAAAAD1/xAAAAAAAAAAAAD2/xAAAAAAAAAAAAD3/xAAAAAAAAAAAAD4/xAAAAAAAAAAAAD5/xAAAAAAAAAAAAD6/xAAAAAAAAAAAAD7/xAAAAAAAAAAAAD8/xAAAAAAAAAAAAD9/xAAAAAAAAAAAAD+/xAAAAAAAAAAAAD//xAAAAAAAAAAAAAAABAAAAAAAAAAAAABABAAAAAAAAAAAAACABAAAAAAAAAAAAADABAAAAAAAAAAAAAEABAAAAAAAAAAAAAFABAAAAAAAAAAAAAGABAAAAAAAAAAAAAHABAAAAAAAAAAAAAIABAAAAAAAAAAAAAJABAAAAAAAAAAAAAKABAAAAAAAAAAAAALABAAAAAAAAAAAAAMABAAAAAAAAAAAAANABAAAAAAAAAAAAAOABAAAAAAAAAAAAAPABAAAAAAAAAAAAAQABAAAAAAAAAAAAARABAAAAAAAAAAAAASABAAAAAAAAAAAAATABAAAAAAAAAAAAAUABAAAAAAAAAAAAAVABAAAAAAAAAAAAAWABAAAAAAAAAAAAAXABAAAAAAAAAAAAAYABAAAAAAAAAAAAAZABAAAAAAAAAAAAAaABAAAAAAAAAAAAAaAA8AAAAAAAAAAAAaAA4AAAAAAAAAAAAaAA0AAAAAAAAAAAAaAAwAAAAAAAAAAAAaAAsAAAAAAAAAAAAaAAoAAAAAAAAAAAAaAAkAAAAAAAAAAAAaAAgAAAAAAAAAAAAaAAcAAAAAAAAAAAAaAAYAAAAAAAAAAAAaAAUAAAAAAAAAAAAaAAQAAAAAAAAAAAAaAAMAAAAAAAAAAAAaAAIAAAAAAAAAAAAaAAEAAAAAAAAAAAAaAAAAAAAAAAAAAAAaAP//AAAAAAAAAAAaAP7/AAAAAAAAAAAaAP3/AAAAAAAAAAAaAPz/AAAAAAAAAAAaAPv/AAAAAAAAAAAaAPr/AAAAAAAAAAAaAPn/AAAAAAAAAAAaAPj/AAAAAAAAAAD0//j/AAAAAAAAAAD0//n/AAAAAAAAAAD0//r/AAAAAAAAAAD0//v/AAAAAAAAAAD0//z/AAAAAAAAAAD0//3/AAAAAAAAAAD0//7/AAAAAAAAAAD0////AAAAAAAAAAD0/wAAAAAAAAAAAAD0/wEAAAAAAAAAAAD0/wIAAAAAAAAAAAD0/wMAAAAAAAAAAAD0/wQAAAAAAAAAAAD0/wUAAAAAAAAAAAD0/wYAAAAAAAAAAAD0/wcAAAAAAAAAAAD0/wgAAAAAAAAAAAD0/wkAAAAAAAAAAAD0/woAAAAAAAAAAAD0/wsAAAAAAAAAAAD0/wwAAAAAAAAAAAD0/w0AAAAAAAAAAAD0/w4AAAAAAAAAAAD0/w8AAAAAAAAAAAD0/xAAAAAAAAAAAAD+/wAAAAAAAAAAAAD+////AAAAAAAAAAA=") -tile_set = ExtResource("6_3npeg") - -[node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=294138419] -tile_map_data = PackedByteArray("AAD+/wAAAgAAAAAAAAD+/wEAAgAAAAAAAAD+/wIAAgAAAAAAAAD+/wMAAgAAAAAAAAD+/wQAAgAAAAAAAAD+/wUAAgAAAAAAAAD+/wYAAgAAAAAAAAD+/wcAAgAAAAAAAAD//wgAAgAAAAAAAAAAAAgAAgAAAAAAAAABAAgAAgAAAAAAAAACAAgAAgAAAAAAAAADAAgAAgAAAAAAAAAEAAgAAgAAAAAAAAAFAAgAAgAAAAAAAAAGAAgAAgAAAAAAAAD//wcAAgAAAAAAAAAGAAkAAgAAAAAAAAAHAAkAAgAAAAAAAAAIAAkAAgAAAAAAAAAJAAkAAgAAAAAAAAAKAAkAAgAAAAAAAAALAAkAAgAAAAAAAAAMAAkAAgAAAAAAAAANAAkAAgAAAAAAAAAOAAkAAgAAAAAAAAAPAAgAAgAAAAAAAAAPAAkAAgAAAAAAAAAPAAEAAgAAAAAAAAAPAAIAAgAAAAAAAAAPAAMAAgAAAAAAAAAPAAQAAgAAAAAAAAAPAAUAAgAAAAAAAAAPAAYAAgAAAAAAAAAPAAcAAgAAAAAAAAA=") -tile_set = ExtResource("8_k65js") - -[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=68210893] -tile_map_data = PackedByteArray("AAANAAcAAQABAAEAAAANAAYAAQABAAEAAAANAAUAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAEAAAANAAEAAQABAAEAAAAMAAcAAQABAAEAAAAMAAYAAQABAAEAAAAMAAUAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAEAAAAMAAEAAQABAAEAAAALAAcAAQABAAEAAAALAAYAAQABAAEAAAALAAUAAQABAAEAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAEAAAALAAEAAQABAAEAAAAKAAcAAQABAAEAAAAKAAYAAQABAAEAAAAKAAUAAQABAAEAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAEAAAAKAAEAAQABAAEAAAAJAAcAAQABAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAJAAEAAQABAAEAAAAIAAcAAQABAAEAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAIAAQAAQABAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAEAAAAIAAEAAQABAAEAAAAHAAcAAQABAAEAAAAHAAYAAQABAAEAAAAHAAUAAQABAAEAAAAHAAQAAQABAAEAAAAHAAMAAQABAAEAAAAHAAIAAQABAAEAAAAHAAEAAQABAAEAAAAGAAcAAQABAAEAAAAGAAYAAQABAAEAAAAGAAUAAQABAAEAAAAGAAQAAQABAAEAAAAGAAMAAQABAAEAAAAGAAIAAQABAAEAAAAFAAcAAQABAAEAAAAFAAYAAQABAAEAAAAFAAUAAQABAAEAAAAFAAQAAQABAAEAAAAFAAMAAQABAAEAAAAFAAIAAQABAAEAAAAFAAEAAQABAAEAAAAEAAcAAQABAAEAAAAEAAYAAQABAAEAAAAEAAUAAQABAAEAAAAEAAQAAQABAAEAAAAEAAMAAQABAAEAAAAEAAIAAQABAAEAAAAEAAEAAQABAAEAAAADAAcAAQABAAEAAAADAAYAAQABAAEAAAADAAUAAQABAAEAAAADAAQAAQABAAEAAAADAAMAAQABAAEAAAADAAIAAQABAAEAAAADAAEAAQABAAEAAAACAAcAAQABAAEAAAACAAYAAQABAAEAAAACAAUAAQABAAEAAAACAAMAAQABAAEAAAACAAIAAQABAAEAAAACAAEAAQABAAEAAAABAAcAAQABAAEAAAABAAYAAQABAAEAAAABAAUAAQABAAEAAAABAAMAAQABAAEAAAABAAIAAQABAAEAAAABAAEAAQABAAEAAAACAAQAAQABAAEAAAABAAQAAQABAAEAAAAAAAQAAQABAAEAAAAAAAUAAQABAAEAAAAAAAYAAQABAAEAAAAAAAcAAQABAAEAAAAGAAAAAQABAAEAAAAGAAEAAQABAAEAAAAHAAAAAQABAAEAAAAFAAAAAQABAAEAAAAIAAAAAQABAAEAAAAJAAAAAQABAAEAAAALAAAAAQABAAEAAAAMAAAAAQABAAEAAAAKAAAAAQABAAEAAAANAAAAAQABAAEAAAAEAAAAAQABAAEAAAADAAAAAQABAAEAAAACAAAAAQABAAEAAAABAAAAAQABAAEAAAAAAAAAAQABAAEAAAAAAAEAAQABAAEAAAAAAAIAAQABAAEAAAAAAAMAAQABAAEAAAAAAAgAAQABAAEAAAABAAgAAQABAAEAAAACAAgAAQABAAEAAAADAAgAAQABAAEAAAAEAAgAAQABAAEAAAAFAAgAAQABAAEAAAAGAAgAAQABAAEAAAAHAAgAAQABAAEAAAAIAAgAAQABAAEAAAAJAAgAAQABAAEAAAAKAAgAAQABAAEAAAAMAAgAAQABAAEAAAALAAgAAQABAAEAAAANAAgAAQABAAEAAAAOAAgAAQABAAEAAAAOAAcAAQABAAEAAAAOAAYAAQABAAEAAAAOAAUAAQABAAEAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQABAAEAAAAOAAEAAQABAAEAAAAOAAAAAQABAAEAAAA=") -tile_set = ExtResource("8_4e5be") - -[node name="Grass Patches" type="TileMapLayer" parent="TileMapLayers" unique_id=2124949178] -tile_set = ExtResource("8_4e5be") - -[node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=2134756892] -tile_map_data = PackedByteArray("AAAAAAgAAQAIAAEAAAAAAAcAAQAIAAEAAAAAAAYAAQAIAAEAAAAAAAUAAQAIAAEAAAAAAAQAAQAFAAAAAAABAAQAAQAGAAMAAAACAAQAAQAHAAMAAAAGAAAAAQAIAAEAAAAGAAEAAQAIAAIAAAAGAP//AQAIAAAAAAA=") -tile_set = ExtResource("8_4e5be") - -[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=22087381] -tile_map_data = PackedByteArray("AAAMAAEAAAAAAAAAAAALAAEAAAAAAAAAAAAKAAEAAAAAAAAAAAAJAAEAAAAAAAAAAAAIAAEAAAAAAAAAAAAHAAEAAAAAAAAAAAAFAAEAAAAAAAAAAAAEAAEAAAAAAAAAAAADAAEAAAAAAAAAAAACAAMAAAAAAAAAAAABAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAANAAMAAAAAAAAAAAANAAIAAAAAAAAAAAACAAIAAAAAAAAAAAACAAYAAAAAAAAAAAANAAcAAAAAAAAAAAAOAAUAAAAAAAAAAAAOAAQAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAACAAgAAAAAAAAAAAADAAgAAAAAAAAAAAAEAAgAAAAAAAAAAAAFAAgAAAAAAAAAAAAGAAkAAAAAAAAAAAAHAAkAAAAAAAAAAAAIAAkAAAAAAAAAAAAJAAkAAAAAAAAAAAAKAAkAAAAAAAAAAAALAAkAAAAAAAAAAAAMAAkAAAAAAAAAAAANAAkAAAAAAAAAAAAOAAkAAAAAAAAAAAAPAAkAAAAAAAAAAAA=") -tile_set = ExtResource("9_k65js") - -[node name="Stones" type="TileMapLayer" parent="TileMapLayers" unique_id=409780427] -tile_map_data = PackedByteArray("AAACAAgABAABAAMAAAADAAgABAABAAMAAAAEAAgABAABAAUAAAAFAAgABAABAAMAAAAGAAkABAABAAMAAAAHAAkABAABAAMAAAAIAAkABAABAAUAAAAJAAkABAABAAUAAAAKAAkABAABAAMAAAALAAkABAABAAMAAAAMAAkABAABAAMAAAANAAkABAABAAUAAAAOAAkABAABAAMAAAACAAcABAABAAQAAAADAAcABAABAAQAAAAEAAcABAABAAAAAAAFAAcABAABAAQAAAAGAAgABAAAAAIAAAAHAAgABAABAAQAAAAIAAgABAABAAQAAAAJAAgABAABAAQAAAAKAAgABAABAAQAAAALAAgABAABAAQAAAAMAAgABAABAAQAAAANAAgABAABAAEAAAAOAAgABAABAAIAAAAPAAcABAACAAEAAAAPAAgABAACAAIAAAAPAAkABAACAAMAAAACAAUABAACAAQAAAACAAYABAACAAEAAAABAAMABAABAAMAAAACAAMABAACAAMAAAACAAIABAACAAIAAAABAAIABAABAAEAAAAAAAMABAABAAUAAAAAAAIABAABAAEAAAAAAAEABAABAAEAAAABAAEABAABAAAAAAACAAEABAABAAMAAAACAAAABAABAAQAAAABAAAABAABAAIAAAAAAAAABAABAAEAAAADAAAABAABAAIAAAAFAAAABAACAAIAAAAEAAAABAABAAEAAAABAAUABAAAAAAAAAABAAYABAAAAAEAAAABAAcABAAAAAIAAAD//wMABAAAAAEAAAD//wQABAADAAEAAAD//wUABAADAAEAAAD//wYABAADAAEAAAD//wcABAADAAIAAAD//wAABAAAAAAAAAD//wEABAAAAAEAAAD//wIABAAAAAEAAAD//wgABAABAAMAAAABAAgABAABAAMAAAAEAAEABAABAAMAAAAFAAEABAACAAMAAAADAAEABAABAAUAAAAOAAcABAABAAEAAAAOAAYABAABAAIAAAAPAAYABAABAAEAAAAPAAUABAACAAEAAAAOAAUABAAAAAEAAAAOAAMABAABAAEAAAAOAAIABAABAAEAAAANAAEABAAAAAEAAAANAAAABAABAAAAAAAOAAAABAABAAAAAAAPAAAABAACAAAAAAAPAAEABAABAAAAAAAPAAIABAACAAEAAAAOAAEABAABAAEAAAAOAAQABAAAAAEAAAAPAAQABAABAAEAAAAPAAMABAACAAEAAAAMAAAABAABAAAAAAALAAAABAABAAAAAAAKAAAABAABAAAAAAAJAAAABAABAAAAAAAIAAAABAABAAAAAAAHAAAABAAAAAEAAAANAAIABAABAAIAAAANAAMABAAAAAMAAAAHAAEABAAAAAMAAAAIAAEABAABAAUAAAAKAAEABAABAAUAAAALAAEABAABAAUAAAAJAAEABAABAAMAAAAMAAEABAABAAMAAAAGAAcABAACAAQAAAANAAYABAAAAAAAAAANAAcABAAAAAEAAAA=") -tile_set = ExtResource("9_ypq02") - -[node name="Grass Level 2" type="TileMapLayer" parent="TileMapLayers" unique_id=1052337885] -tile_map_data = PackedByteArray("AAAAAAIAAQABAAIAAAABAAIAAQABAAIAAAACAAIAAQACAAIAAAACAAEAAQACAAEAAAADAAAAAQABAAIAAAAEAAAAAQABAAIAAAAFAAAAAQACAAIAAAADAP//AQABAAAAAAAEAP//AQABAAAAAAAFAP//AQACAAAAAAD//wcAAQACAAIAAAD//wYAAQACAAEAAAD//wUAAQACAAEAAAD//wQAAQACAAEAAAD//wMAAQACAAEAAAD+/wcAAQAAAAIAAAD+/wYAAQAAAAEAAAD+/wUAAQAAAAEAAAD+/wQAAQAAAAEAAAD+/wMAAQAAAAEAAAD//wIAAQABAAEAAAD+/wIAAQAAAAEAAAD+/wEAAQAAAAEAAAD//wEAAQABAAEAAAAAAAEAAQABAAEAAAABAAEAAQABAAEAAAACAAAAAQABAAEAAAABAAAAAQABAAEAAAAAAAAAAQABAAEAAAD//wAAAQABAAEAAAD+/wAAAQAAAAEAAAACAP//AQABAAAAAAABAP//AQABAAAAAAAAAP//AQABAAAAAAD/////AQABAAAAAAD+////AQAAAAAAAAAHAAAAAQAAAAIAAAAIAAAAAQACAAIAAAAHAP//AQAAAAAAAAAIAP//AQACAAAAAAAKAAAAAQADAAMAAAAKAP//AQADAAMAAAA=") -tile_set = ExtResource("8_4e5be") - -[node name="Shadows Level 2" type="TileMapLayer" parent="TileMapLayers" unique_id=702218707] -tile_map_data = PackedByteArray("AAD//wIAAAAAAAAAAAAAAAEAAAAAAAAAAAABAAEAAAAAAAAAAAA=") -tile_set = ExtResource("9_k65js") - -[node name="Stone Level 2" type="TileMapLayer" parent="TileMapLayers" unique_id=73920338] -tile_map_data = PackedByteArray("AAD//wAABAABAAEAAAD//wEABAADAAEAAAAAAAAABAABAAQAAAD//wIABAADAAUAAAAAAAEABAABAAUAAAABAAEABAACAAUAAAACAAAABAACAAMAAAABAAAABAACAAQAAAA=") -tile_set = ExtResource("9_ypq02") - -[node name="Grass Level 3" type="TileMapLayer" parent="TileMapLayers" unique_id=1939358186] -tile_map_data = PackedByteArray("AAD//wEAAQACAAIAAAD//wAAAQABAAEAAAAAAAAAAQABAAIAAAABAAAAAQACAAIAAAABAP//AQACAAAAAAAAAP//AQABAAAAAAD/////AQABAAAAAAD+////AQAAAAAAAAD+/wAAAQAAAAEAAAD+/wEAAQAAAAIAAAA=") -tile_set = ExtResource("8_4e5be") - -[node name="OnTheGround" type="Node2D" parent="." unique_id=867293938] -y_sort_enabled = true - -[node name="Bush" parent="OnTheGround" unique_id=1514025033 instance=ExtResource("5_nlryc")] -position = Vector2(159, 88) - -[node name="Bush2" parent="OnTheGround" unique_id=943759771 instance=ExtResource("5_nlryc")] -position = Vector2(150, 114) -scale = Vector2(0.8, 0.8) - -[node name="Bush4" parent="OnTheGround" unique_id=926443517 instance=ExtResource("5_nlryc")] -position = Vector2(52, 36) -scale = Vector2(0.8, 0.8) - -[node name="Bush3" parent="OnTheGround" unique_id=410805572 instance=ExtResource("5_nlryc")] -position = Vector2(171, 146) -scale = Vector2(0.65, 0.65) - -[node name="Bush5" parent="OnTheGround" unique_id=1797095975 instance=ExtResource("5_nlryc")] -position = Vector2(662, 47) -scale = Vector2(0.45, 0.45) - -[node name="LevelExit" type="Node2D" parent="OnTheGround" unique_id=6645112] -y_sort_enabled = true -position = Vector2(416, 0) - -[node name="Door Exit" parent="OnTheGround/LevelExit" unique_id=286700128 instance=ExtResource("5_bxnsu")] -position = Vector2(0, 72) -play_victory_fanfare_on_open = true - -[node name="Teleporter" type="Area2D" parent="OnTheGround/LevelExit" unique_id=650526093] -position = Vector2(0, -25) -collision_layer = 4 -script = ExtResource("5_lmnu5") -next_scene = "uid://cgemeabsewy1f" -enter_transition = 4 -exit_transition = 5 -metadata/_custom_type_script = "uid://hqdquinbimce" - -[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/LevelExit/Teleporter" unique_id=1082155385] -position = Vector2(-1.5, -9.5) -shape = SubResource("RectangleShape2D_lmnu5") - -[node name="Player" parent="OnTheGround" unique_id=1834864183 instance=ExtResource("3_v7ikp")] -position = Vector2(28, 487) -player_name = "StoryWeaver" -mode = 1 -sprite_frames = ExtResource("10_hlahk") - -[node name="Door Enter" parent="OnTheGround" unique_id=1247291697 instance=ExtResource("5_bxnsu")] -position = Vector2(32, 574) - -[node name="ThrowingEnemy" parent="OnTheGround" unique_id=1501672275 instance=ExtResource("5_h0i4r")] -position = Vector2(857, 300) -sprite_frames = ExtResource("12_h7w4n") -idle_sound_stream = ExtResource("13_gn6oy") -attack_sound_stream = ExtResource("14_7ekah") -projectile_scene = ExtResource("16_k65js") - -[node name="FillingBarrel" parent="OnTheGround" unique_id=1115630414 instance=ExtResource("6_v7ikp")] -position = Vector2(528, 164) -label = "Cyan" -color = Color(0, 1, 1, 1) - -[node name="FillingBarrel2" parent="OnTheGround" unique_id=1619447845 instance=ExtResource("6_v7ikp")] -position = Vector2(748, 164) -label = "Cyan" -color = Color(0, 1, 1, 1) - -[node name="FillingBarrel3" parent="OnTheGround" unique_id=708975362 instance=ExtResource("6_v7ikp")] -position = Vector2(751, 497) -label = "Cyan" -color = Color(0, 1, 1, 1) - -[node name="FillingBarrel4" parent="OnTheGround" unique_id=1848709078 instance=ExtResource("6_v7ikp")] -position = Vector2(640, 497) -label = "Cyan" -color = Color(0, 1, 1, 1) - -[node name="FillingBarrel6" parent="OnTheGround" unique_id=761783740 instance=ExtResource("6_v7ikp")] -position = Vector2(527, 497) -label = "Cyan" -color = Color(0, 1, 1, 1) - -[node name="FillingBarrel5" parent="OnTheGround" unique_id=1893380273 instance=ExtResource("6_v7ikp")] -position = Vector2(641, 164) -label = "Cyan" -color = Color(0, 1, 1, 1) - -[node name="Tree" parent="OnTheGround" unique_id=9247104 instance=ExtResource("13_hlahk")] -position = Vector2(33, 39) -scale = Vector2(1.00063, 0.911434) - -[node name="Tree2" parent="OnTheGround" unique_id=1819923403 instance=ExtResource("13_hlahk")] -position = Vector2(674, 32) -scale = Vector2(0.95, 0.95) - -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=127644403] - -[node name="InputHints" type="HBoxContainer" parent="ScreenOverlay" unique_id=367368380] -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -offset_top = -69.0 -offset_right = 152.0 -grow_vertical = 0 - -[node name="RepelHint" parent="ScreenOverlay/InputHints" unique_id=1383517200 instance=ExtResource("22_8me22")] -layout_mode = 2 - -[node name="HUD" parent="." unique_id=390417147 instance=ExtResource("9_na0be")] - -[node name="Camera2D" type="Camera2D" parent="." unique_id=793138168] -zoom = Vector2(1.333, 1.333) -limit_left = 0 -limit_top = 0 -limit_right = 960 -limit_bottom = 544 -position_smoothing_enabled = true -editor_draw_limits = true - -[connection signal="cinematic_finished" from="Cinematic" to="FillGameLogic" method="start"] -[connection signal="goal_reached" from="FillGameLogic" to="FillGameLogic/LevelCompletedAnimation" method="play" binds= ["goal_completed"]] diff --git a/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_2.tscn b/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_2.tscn index a20b12572e..2ec0a92ccd 100644 --- a/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_2.tscn +++ b/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_2.tscn @@ -2,9 +2,11 @@ [ext_resource type="AudioStream" uid="uid://dkgtyb0x1i0m2" path="res://scenes/quests/lore_quests/quest_001/2_ink_combat/components/combat_music.tres" id="2_4q3i8"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="2_wqron"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="3_14glv"] [ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="3_wqron"] [ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="4_4q3i8"] [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="4_4r6cg"] +[ext_resource type="Resource" uid="uid://cmhcuoms2kh1a" path="res://scenes/quests/lore_quests/quest_001/2_ink_combat/components/dialogues/ink_well.dialogue" id="4_oigmj"] [ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="5_4q3i8"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="5_bk6nl"] [ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="6_e81yh"] @@ -16,10 +18,10 @@ [ext_resource type="SpriteFrames" uid="uid://bs0idpewu2plj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/components/ink_drinker_frames_yellow.tres" id="10_0kd4s"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="10_muw2v"] [ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="10_wqron"] -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="11_0kd4s"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="11_0kd4s"] [ext_resource type="SpriteFrames" uid="uid://dnq8cw1cio2we" path="res://scenes/game_elements/characters/enemies/throwing_enemy/components/ink_drinker_frames_green.tres" id="11_bk6nl"] [ext_resource type="AudioStream" uid="uid://qf2d38rabx8o" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Wings.ogg" id="12_btlpg"] -[ext_resource type="AudioStream" uid="uid://fcmjf1srys7n" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg" id="13_i2l34"] +[ext_resource type="AudioStream" uid="uid://bbnj2fog3rdy8" path="res://assets/first_party/sounds/throwing_enemy/Spray.wav" id="13_i2l34"] [ext_resource type="PackedScene" uid="uid://c5jedlvvnnbi0" path="res://scenes/game_elements/props/projectile/ink_blob_projectile.tscn" id="14_oigmj"] [sub_resource type="Animation" id="Animation_nlryc"] @@ -52,10 +54,14 @@ size = Vector2(101, 49) [node name="BackgroundMusic" parent="." unique_id=826955846 instance=ExtResource("2_wqron")] stream = ExtResource("2_4q3i8") +[node name="Cinematic" type="Node2D" parent="." unique_id=1816467916] +script = ExtResource("3_14glv") +dialogue = ExtResource("4_oigmj") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + [node name="FillGameLogic" type="Node" parent="." unique_id=237952704] script = ExtResource("3_wqron") barrels_to_win = 2 -autostart = true metadata/_custom_type_script = "uid://cp54mgi54nywo" [node name="LevelCompletedAnimation" type="AnimationPlayer" parent="FillGameLogic" unique_id=927256664] @@ -127,12 +133,10 @@ shape = SubResource("RectangleShape2D_e81yh") [node name="Player" parent="OnTheGround" unique_id=1732950886 instance=ExtResource("5_bk6nl")] position = Vector2(414, 501) player_name = "StoryWeaver" -mode = 1 sprite_frames = ExtResource("9_bk6nl") [node name="ThrowingEnemy" parent="OnTheGround" unique_id=1393787050 instance=ExtResource("6_e81yh")] position = Vector2(59, 264) -autostart = true sprite_frames = ExtResource("10_0kd4s") idle_sound_stream = ExtResource("12_btlpg") attack_sound_stream = ExtResource("13_i2l34") @@ -140,7 +144,6 @@ projectile_scene = ExtResource("14_oigmj") [node name="ThrowingEnemy2" parent="OnTheGround" unique_id=1156522586 instance=ExtResource("6_e81yh")] position = Vector2(62, 410) -autostart = true sprite_frames = ExtResource("11_bk6nl") idle_sound_stream = ExtResource("12_btlpg") attack_sound_stream = ExtResource("13_i2l34") @@ -172,4 +175,5 @@ limit_bottom = 544 position_smoothing_enabled = true editor_draw_limits = true +[connection signal="cinematic_finished" from="Cinematic" to="FillGameLogic" method="start"] [connection signal="goal_reached" from="FillGameLogic" to="FillGameLogic/LevelCompletedAnimation" method="play" binds= ["goal_completed"]] diff --git a/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_3.tscn b/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_3.tscn index 6460be5913..b47c4747aa 100644 --- a/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_3.tscn +++ b/scenes/quests/lore_quests/quest_001/2_ink_combat/ink_combat_round_3.tscn @@ -4,6 +4,7 @@ [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="2_je2ou"] [ext_resource type="AudioStream" uid="uid://dkgtyb0x1i0m2" path="res://scenes/quests/lore_quests/quest_001/2_ink_combat/components/combat_music.tres" id="2_t7m4v"] [ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="3_4iw8v"] +[ext_resource type="Script" uid="uid://c2lx7gvkonxaa" path="res://scenes/game_elements/props/background_music/components/clip_switcher.gd" id="3_7kldn"] [ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="4_fgs83"] [ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="4_t7m4v"] [ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="5_1nd14"] @@ -20,7 +21,7 @@ [ext_resource type="SpriteFrames" uid="uid://dxbt7cgoq3dg5" path="res://scenes/game_elements/characters/enemies/throwing_enemy/components/ink_drinker_frames_blue.tres" id="9_te0v3"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="10_i5hhc"] [ext_resource type="AudioStream" uid="uid://qf2d38rabx8o" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Wings.ogg" id="10_uyhkg"] -[ext_resource type="AudioStream" uid="uid://fcmjf1srys7n" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg" id="11_7kldn"] +[ext_resource type="AudioStream" uid="uid://bbnj2fog3rdy8" path="res://assets/first_party/sounds/throwing_enemy/Spray.wav" id="11_7kldn"] [ext_resource type="PackedScene" uid="uid://c5jedlvvnnbi0" path="res://scenes/game_elements/props/projectile/ink_blob_projectile.tscn" id="12_ms350"] [sub_resource type="Animation" id="Animation_k5uk8"] @@ -55,6 +56,11 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="BackgroundMusic" parent="." unique_id=1639553787 instance=ExtResource("2_je2ou")] stream = ExtResource("2_t7m4v") +[node name="ClipSwitcher" type="Node" parent="BackgroundMusic" unique_id=1792251959] +script = ExtResource("3_7kldn") +clip = &"cozy" +metadata/_custom_type_script = "uid://c2lx7gvkonxaa" + [node name="FillGameLogic" type="Node" parent="." unique_id=884862045] script = ExtResource("3_4iw8v") barrels_to_win = 3 @@ -107,7 +113,6 @@ position = Vector2(544, 716) [node name="Player" parent="OnTheGround" unique_id=1847325947 instance=ExtResource("5_k5uk8")] position = Vector2(542, 591) player_name = "StoryWeaver" -mode = 1 sprite_frames = ExtResource("7_te0v3") [node name="ThrowingEnemy" parent="OnTheGround" unique_id=154679853 instance=ExtResource("6_te0v3")] @@ -179,5 +184,5 @@ limit_bottom = 704 position_smoothing_enabled = true editor_draw_limits = true -[connection signal="goal_reached" from="FillGameLogic" to="BackgroundMusic" method="switch_to_clip" binds= [&"cozy"]] +[connection signal="goal_reached" from="FillGameLogic" to="BackgroundMusic/ClipSwitcher" method="switch"] [connection signal="goal_reached" from="FillGameLogic" to="FillGameLogic/LevelCompletedAnimation" method="play" binds= ["goal_completed"]] diff --git a/scenes/quests/lore_quests/quest_001/3_stealth_level/stealth_level.tscn b/scenes/quests/lore_quests/quest_001/3_stealth_level/stealth_level.tscn index 3c949f1a25..c13eb98a5c 100644 --- a/scenes/quests/lore_quests/quest_001/3_stealth_level/stealth_level.tscn +++ b/scenes/quests/lore_quests/quest_001/3_stealth_level/stealth_level.tscn @@ -18,7 +18,6 @@ [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="10_idy4y"] [ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="11_75rvf"] [ext_resource type="PackedScene" uid="uid://dua6mynlw2ptw" path="res://scenes/game_elements/props/checkpoint/checkpoint.tscn" id="11_idy4y"] -[ext_resource type="PackedScene" uid="uid://hafqgtdg2nvp" path="res://scenes/game_elements/props/hint/hint.tscn" id="12_0csld"] [ext_resource type="Texture2D" uid="uid://ck738xogv1kp5" path="res://assets/third_party/tiny-swords/Deco/11.png" id="13_f6dpy"] [ext_resource type="Texture2D" uid="uid://ctwx8gghts62p" path="res://assets/third_party/tiny-swords/Deco/06.png" id="14_v7vlq"] [ext_resource type="Texture2D" uid="uid://cw330muutqql7" path="res://assets/third_party/tiny-swords/Deco/05.png" id="15_7kcq2"] @@ -51,7 +50,6 @@ [ext_resource type="SpriteFrames" uid="uid://tchths61dylv" path="res://scenes/game_elements/characters/enemies/guard/components/storyvoretorch_frames_green.tres" id="31_fl2gg"] [ext_resource type="SpriteFrames" uid="uid://debgqvx62xx5o" path="res://scenes/game_elements/characters/enemies/guard/components/storyvore_frames_red.tres" id="32_pld6d"] [ext_resource type="SpriteFrames" uid="uid://qwlhm21ndgn2" path="res://scenes/game_elements/characters/enemies/guard/components/storyvore_frames_orange.tres" id="33_pld6d"] -[ext_resource type="PackedScene" uid="uid://badjtfhkj7gbt" path="res://scenes/ui_elements/input_hints/run_hint.tscn" id="42_rbmmg"] [sub_resource type="Curve2D" id="Curve2D_vnsq3"] _data = { @@ -148,9 +146,6 @@ script = ExtResource("3_idy4y") type = 2 metadata/_custom_type_script = "uid://bgmwplmj3bfls" -[sub_resource type="RectangleShape2D" id="RectangleShape2D_pfu1m"] -size = Vector2(559, 381) - [node name="Level" type="Node2D" unique_id=1653863263] y_sort_enabled = true @@ -979,14 +974,6 @@ debug_color = Color(0, 0, 0, 0.42) [node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=603394532] -[node name="RunHint" parent="ScreenOverlay" unique_id=2083741990 instance=ExtResource("42_rbmmg")] -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -offset_top = -64.0 -offset_right = 104.0 -grow_vertical = 0 - [node name="HUD" parent="." unique_id=1759029767 instance=ExtResource("10_idy4y")] [node name="CollectibleItem" parent="." unique_id=1252493919 instance=ExtResource("2_1b8xw")] @@ -996,11 +983,3 @@ item = SubResource("Resource_idy4y") [node name="Door" parent="." unique_id=1358622977 instance=ExtResource("25_ulxtw")] position = Vector2(7391, 701) - -[node name="RunInputHint" parent="." unique_id=1463739882 node_paths=PackedStringArray("hint_node") instance=ExtResource("12_0csld")] -position = Vector2(487, 191) -hint_node = NodePath("../ScreenOverlay/RunHint") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="RunInputHint" unique_id=1780740030] -position = Vector2(-203.5, 10.5) -shape = SubResource("RectangleShape2D_pfu1m") diff --git a/scenes/quests/lore_quests/quest_001/quest.tres b/scenes/quests/lore_quests/quest_001/quest.tres index d7bc230639..4d00de2e2c 100644 --- a/scenes/quests/lore_quests/quest_001/quest.tres +++ b/scenes/quests/lore_quests/quest_001/quest.tres @@ -20,6 +20,7 @@ status = 1 title = "The Musician's Quest" description = "StoryWeaver meets a musician and a series of terrifying creatures." first_scene = "uid://7hoy2p14t6kc" +is_lore_quest = true sprite_frames = SubResource("SpriteFrames_8ruhb") animation_name = &"default" metadata/_custom_type_script = "uid://dts1hwdy3phin" diff --git a/scenes/quests/lore_quests/quest_002/1_void_runner/components/dust-cloud.png b/scenes/quests/lore_quests/quest_002/1_void_runner/components/dust-cloud.png index 51e9ea43af..f5c0797cb3 100644 --- a/scenes/quests/lore_quests/quest_002/1_void_runner/components/dust-cloud.png +++ b/scenes/quests/lore_quests/quest_002/1_void_runner/components/dust-cloud.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b8a01835dedcdc441a3ade4663745e3547744af0526aa0c98a7fd855d317c8b -size 603 +oid sha256:2c1e1bb5298eaca60a0aaae074c09e23ea31e873e80e7299263d93833c3c6e96 +size 949 diff --git a/scenes/quests/lore_quests/quest_002/1_void_runner/components/monk.gd b/scenes/quests/lore_quests/quest_002/1_void_runner/components/monk.gd index 029f0cf75c..cf384dd53e 100644 --- a/scenes/quests/lore_quests/quest_002/1_void_runner/components/monk.gd +++ b/scenes/quests/lore_quests/quest_002/1_void_runner/components/monk.gd @@ -13,8 +13,6 @@ var _repelled := false func repel_void() -> void: - enemy.queue_free() - var tween := create_tween() var original_zoom := camera.zoom tween.tween_property(camera, "zoom", original_zoom / 3.0, 1.0).set_ease(Tween.EASE_IN_OUT) diff --git a/scenes/quests/lore_quests/quest_002/1_void_runner/components/monk.tscn b/scenes/quests/lore_quests/quest_002/1_void_runner/components/monk.tscn index 0f67af8751..926dc5955a 100644 --- a/scenes/quests/lore_quests/quest_002/1_void_runner/components/monk.tscn +++ b/scenes/quests/lore_quests/quest_002/1_void_runner/components/monk.tscn @@ -1,13 +1,13 @@ [gd_scene format=3 uid="uid://dme77bdscoo1o"] [ext_resource type="Script" uid="uid://c1snt67xajl63" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/monk.gd" id="1_et70a"] -[ext_resource type="SpriteFrames" uid="uid://clx8sssi4tw8q" path="res://scenes/game_elements/characters/components/sprite_frames/musician.tres" id="2_8g08d"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_2wo0h"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_2wo0h"] +[ext_resource type="SpriteFrames" uid="uid://bfkd5s4fn0uw0" path="res://scenes/game_elements/characters/components/sprite_frames/monk.tres" id="3_bcgon"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="4_8g08d"] [ext_resource type="Resource" uid="uid://cx8jmresqdqak" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/monk.dialogue" id="5_2wo0h"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_lutqc"] -height = 73.6055 +height = 43.999992 [sub_resource type="RectangleShape2D" id="RectangleShape2D_bqjp5"] size = Vector2(52, 50) @@ -17,12 +17,12 @@ motion_mode = 1 script = ExtResource("1_et70a") npc_name = "Moss the Monk" look_at_side = 0 -sprite_frames = ExtResource("2_8g08d") +sprite_frames = ExtResource("3_bcgon") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1267832980] unique_name_in_owner = true -position = Vector2(0, -40) -sprite_frames = ExtResource("2_8g08d") +position = Vector2(0, -31) +sprite_frames = ExtResource("3_bcgon") animation = &"idle" autoplay = "idle" @@ -30,17 +30,20 @@ autoplay = "idle" rotation = -1.5708 shape = SubResource("CapsuleShape2D_lutqc") -[node name="InteractArea" type="Area2D" parent="." unique_id=1339722026] +[node name="InteractArea" type="Area2D" parent="." unique_id=1339722026 node_paths=PackedStringArray("marker")] collision_layer = 32 collision_mask = 0 script = ExtResource("3_2wo0h") -interact_label_position = Vector2(0, -100) +marker = NodePath("Marker") [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=98094106] position = Vector2(0, -29) shape = SubResource("RectangleShape2D_bqjp5") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=1186921933] +position = Vector2(0, -100) + [node name="TalkBehavior" type="Node" parent="." unique_id=412951492 node_paths=PackedStringArray("interact_area")] script = ExtResource("4_8g08d") dialogue = ExtResource("5_2wo0h") diff --git a/scenes/quests/lore_quests/quest_002/1_void_runner/components/particles_canvasgroup_outline.gdshader b/scenes/quests/lore_quests/quest_002/1_void_runner/components/particles_canvasgroup_outline.gdshader new file mode 100644 index 0000000000..28618e275d --- /dev/null +++ b/scenes/quests/lore_quests/quest_002/1_void_runner/components/particles_canvasgroup_outline.gdshader @@ -0,0 +1,32 @@ +/** + * Particles CanvasGroup outline effect. + * + * SPDX-FileCopyrightText: The Threadbare Authors + * SPDX-License-Identifier: MPL-2.0 + */ +shader_type canvas_item; +render_mode unshaded; + +uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest; + +uniform vec4 outline_color : source_color = vec4(1.0); +uniform float thickness : hint_range(0.0, 10.0) = 2.0; + + +void fragment() { + vec4 color = textureLod(screen_texture, SCREEN_UV, 0.0); + + vec4 outline = texture(screen_texture, SCREEN_UV - vec2(thickness, 0.0) * SCREEN_PIXEL_SIZE); + outline += texture(screen_texture, SCREEN_UV + vec2(thickness, 0.0) * SCREEN_PIXEL_SIZE); + outline += texture(screen_texture, SCREEN_UV - vec2(0.0, thickness) * SCREEN_PIXEL_SIZE); + outline += texture(screen_texture, SCREEN_UV + vec2(0.0, thickness) * SCREEN_PIXEL_SIZE); + + outline.rgb = outline_color.rgb; + outline.a *= outline_color.a; + + if (color.a > 0.0001) { + color.rgb /= color.a; + } + + COLOR *= mix(outline, color, color.a); +} diff --git a/scenes/quests/lore_quests/quest_002/1_void_runner/components/particles_canvasgroup_outline.gdshader.uid b/scenes/quests/lore_quests/quest_002/1_void_runner/components/particles_canvasgroup_outline.gdshader.uid new file mode 100644 index 0000000000..8f320c07e4 --- /dev/null +++ b/scenes/quests/lore_quests/quest_002/1_void_runner/components/particles_canvasgroup_outline.gdshader.uid @@ -0,0 +1 @@ +uid://dvyec12fgsuta diff --git a/scenes/quests/lore_quests/quest_002/1_void_runner/components/townie.tscn b/scenes/quests/lore_quests/quest_002/1_void_runner/components/townie.tscn index 1866cebe77..83d1a46bed 100644 --- a/scenes/quests/lore_quests/quest_002/1_void_runner/components/townie.tscn +++ b/scenes/quests/lore_quests/quest_002/1_void_runner/components/townie.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://cd2b16s3p2ngm" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/townie.gd" id="1_5lbvk"] [ext_resource type="SpriteFrames" uid="uid://cpm5o35ede3qs" path="res://scenes/game_elements/characters/npcs/npc_prop/sprite_frames/fray_idle_purple.tres" id="2_c4h1d"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_q6d64"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_q6d64"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="4_xq2tg"] [ext_resource type="Resource" uid="uid://cy6q1djsmma1f" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/townie.dialogue" id="5_c4h1d"] @@ -30,18 +30,21 @@ autoplay = "idle" rotation = -1.5708 shape = SubResource("CapsuleShape2D_3vyb7") -[node name="InteractArea" type="Area2D" parent="." unique_id=1337421199] +[node name="InteractArea" type="Area2D" parent="." unique_id=1337421199 node_paths=PackedStringArray("marker")] unique_name_in_owner = true collision_layer = 32 collision_mask = 0 script = ExtResource("3_q6d64") -interact_label_position = Vector2(0, -100) +marker = NodePath("Marker") [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=2031162428] position = Vector2(0, -29) shape = SubResource("RectangleShape2D_3eksq") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=931129123] +position = Vector2(0, -100) + [node name="TalkBehavior" type="Node" parent="." unique_id=303476402 node_paths=PackedStringArray("interact_area")] unique_name_in_owner = true script = ExtResource("4_xq2tg") diff --git a/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_particles.tscn b/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_particles.tscn index 9639d33bdb..696ae2c3bf 100644 --- a/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_particles.tscn +++ b/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_particles.tscn @@ -4,27 +4,21 @@ [sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_31awk"] particles_animation = true -particles_anim_h_frames = 5 +particles_anim_h_frames = 3 particles_anim_v_frames = 1 particles_anim_loop = false -[sub_resource type="Curve" id="Curve_8l6e1"] -_data = [Vector2(0, 0.733414), 0.0, 0.0, 0, 0, Vector2(0.315152, 0.717732), 0.0, 0.0, 0, 0, Vector2(0.9, 0), 0.0, 0.0, 0, 0, Vector2(0.99697, 0), 0.0, 0.0, 0, 0] -point_count = 4 - -[sub_resource type="CurveTexture" id="CurveTexture_rrhr1"] -curve = SubResource("Curve_8l6e1") - [sub_resource type="Curve" id="Curve_304le"] -_data = [Vector2(0, 1), 0.0, 1.4, 0, 0, Vector2(1, 0.407895), 0.0, 0.0, 0, 0] +_data = [Vector2(0, 0.033189893), 0.0, 6.926748, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] point_count = 2 +metadata/_snap_count = 2 [sub_resource type="CurveTexture" id="CurveTexture_45we0"] curve = SubResource("Curve_304le") [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_rrhr1"] particle_flag_disable_z = true -emission_shape = 1 +emission_shape = 2 emission_sphere_radius = 120.0 angular_velocity_min = -10.0 angular_velocity_max = 9.99998 @@ -34,7 +28,6 @@ gravity = Vector3(0, 0, 0) scale_min = 1.8 scale_max = 2.0 scale_curve = SubResource("CurveTexture_45we0") -alpha_curve = SubResource("CurveTexture_rrhr1") anim_offset_max = 1.0 [node name="GPUParticles2D" type="GPUParticles2D" unique_id=1339463382] diff --git a/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.gd b/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.gd index a792ac2aef..e846dd7894 100644 --- a/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.gd +++ b/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.gd @@ -47,6 +47,7 @@ var _live_particles: int = 0 @onready var path_walk_behavior: PathWalkBehavior = %PathWalkBehavior @onready var follow_walk_behavior: NavigationFollowWalkBehavior = %NavigationFollowWalkBehavior @onready var alert_animation: AnimationPlayer = %AlertAnimation +@onready var particles_canvas_group: CanvasGroup = %ParticlesCanvasGroup func _set_idle_patrol_path(new_path: Path2D) -> void: @@ -123,7 +124,7 @@ func _emit_particles() -> void: var particles: GPUParticles2D = VOID_PARTICLES.instantiate() particles.emitting = true - add_child(particles) + particles_canvas_group.add_child(particles) _live_particles += 1 await particles.finished diff --git a/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.tscn b/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.tscn index b436de6d00..b1ceda9728 100644 --- a/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.tscn +++ b/scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.tscn @@ -6,6 +6,7 @@ [ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="3_45we0"] [ext_resource type="AudioStream" uid="uid://dgpeb1dtmfqud" path="res://assets/third_party/sounds/characters/enemies/guard/AlertSound.ogg" id="5_2dnul"] [ext_resource type="Texture2D" uid="uid://c75ofhy3swhj3" path="res://scenes/game_elements/characters/enemies/guard/components/exclamation_mark.png" id="6_pumxu"] +[ext_resource type="Shader" uid="uid://dvyec12fgsuta" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/particles_canvasgroup_outline.gdshader" id="7_o4sxw"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_8g3pn"] size = Vector2(68, 20) @@ -20,7 +21,7 @@ metadata/_custom_type_script = "uid://csev4hv57utxv" [sub_resource type="Resource" id="Resource_pumxu"] script = ExtResource("3_45we0") -walk_speed = 270.0 +walk_speed = 250.0 metadata/_custom_type_script = "uid://csev4hv57utxv" [sub_resource type="Animation" id="Animation_o4sxw"] @@ -99,6 +100,11 @@ _data = { &"alert": SubResource("Animation_pumxu") } +[sub_resource type="ShaderMaterial" id="ShaderMaterial_gwqur"] +shader = ExtResource("7_o4sxw") +shader_parameter/outline_color = Color(1, 1, 1, 1) +shader_parameter/thickness = 2.0 + [node name="VoidSpreadingEnemy" type="CharacterBody2D" unique_id=1007896559] collision_layer = 0 collision_mask = 0 @@ -131,6 +137,7 @@ unique_name_in_owner = true script = ExtResource("2_31awk") speeds = SubResource("Resource_pumxu") agent = NodePath("../NavigationAgent2D") +running_distance = 256.0 character = NodePath("..") metadata/_custom_type_script = "uid://r1kriwyodjlt" @@ -159,4 +166,8 @@ texture = ExtResource("6_pumxu") unique_name_in_owner = true libraries/ = SubResource("AnimationLibrary_gwqur") +[node name="ParticlesCanvasGroup" type="CanvasGroup" parent="." unique_id=574273484] +unique_name_in_owner = true +material = SubResource("ShaderMaterial_gwqur") + [connection signal="body_entered" from="PlayerCaptureArea" to="." method="_on_player_capture_area_body_entered"] diff --git a/scenes/quests/lore_quests/quest_002/1_void_runner/void_runner.tscn b/scenes/quests/lore_quests/quest_002/1_void_runner/void_runner.tscn index 29a1b4bbc9..9ed7774407 100644 --- a/scenes/quests/lore_quests/quest_002/1_void_runner/void_runner.tscn +++ b/scenes/quests/lore_quests/quest_002/1_void_runner/void_runner.tscn @@ -1,15 +1,16 @@ [gd_scene format=4 uid="uid://bm4ewr8p48x0i"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_g2rto"] -[ext_resource type="AudioStream" uid="uid://qnqpd21qyfnc" path="res://assets/first_party/music/Threadbare_Stealth.ogg" id="2_g2rto"] +[ext_resource type="AudioStream" uid="uid://bwgtbylflkup2" path="res://scenes/quests/lore_quests/quest_002/components/void_music.tres" id="2_kgem8"] [ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="2_ljnmn"] [ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="3_7u86q"] +[ext_resource type="Script" uid="uid://c2lx7gvkonxaa" path="res://scenes/game_elements/props/background_music/components/clip_switcher.gd" id="3_epkxq"] [ext_resource type="Script" uid="uid://d1ly6uhh500xu" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/tile_map_cover.gd" id="3_g2rto"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="4_85y51"] [ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="4_epkxq"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="5_46vkj"] -[ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="5_epkxq"] [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="6_5y4tu"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="6_epkxq"] [ext_resource type="PackedScene" uid="uid://cokul8w425pja" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.tscn" id="6_wtoj6"] [ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="7_7xlw5"] [ext_resource type="Script" uid="uid://bdhjixygupit1" path="res://scenes/game_elements/props/area_filler/area_filler.gd" id="9_kgem8"] @@ -46,6 +47,9 @@ outlines = Array[PackedVector2Array]([PackedVector2Array(-1088, 1423, 2938, 1439 [sub_resource type="RectangleShape2D" id="RectangleShape2D_lutqc"] size = Vector2(72, 351) +[sub_resource type="RectangleShape2D" id="RectangleShape2D_kgem8"] +size = Vector2(108, 117) + [sub_resource type="Curve2D" id="Curve2D_wy2h8"] _data = { "points": PackedVector2Array(0, 0, 0, 0, 726, 3145, 30.2699, 20.711, -30.2699, -20.711, 698, 3104, 34.7308, -1.27452, -34.7308, 1.27452, 625, 3138, 22.9414, -0.318631, -22.9414, 0.318631, 553, 3097, 0, 0, 0, 0, 490, 3146, 0, 0, 0, 0, 420, 3094, 0, 0, 0, 0, 356, 3147, 0, 0, 0, 0, 269, 3091, 0, 0, 0, 0, 198, 3154, 0, 0, 0, 0, 132, 3097, 0, 0, 0, 0, 49, 3146, 0, 0, 0, 0, -39, 3095, 0, 0, 0, 0, -100, 3141, 0, 0, 0, 0, -157, 3099, 0, 0, 0, 0, -203, 3140, 0, 0, 0, 0, -258, 3093, 0, 0, 0, 0, -303, 3141) @@ -61,7 +65,20 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" metadata/_edit_lock_ = true [node name="BackgroundMusic" parent="." unique_id=649811497 instance=ExtResource("1_g2rto")] -stream = ExtResource("2_g2rto") +stream = ExtResource("2_kgem8") +clip = &"Still" + +[node name="ChaseClipSwitcher" type="Node" parent="BackgroundMusic" unique_id=1356095710 node_paths=PackedStringArray("trigger")] +script = ExtResource("3_epkxq") +clip = &"Bloom" +trigger = NodePath("../../EnemyTrigger") +metadata/_custom_type_script = "uid://c2lx7gvkonxaa" + +[node name="SafetyClipSwitcher" type="Node" parent="BackgroundMusic" unique_id=172495821 node_paths=PackedStringArray("trigger")] +script = ExtResource("3_epkxq") +clip = &"Still" +trigger = NodePath("../../GoalReachedTrigger") +metadata/_custom_type_script = "uid://c2lx7gvkonxaa" [node name="TileMapLayers" type="Node2D" parent="." unique_id=329261217] metadata/_edit_lock_ = true @@ -76,8 +93,8 @@ tile_map_data = PackedByteArray("AAAtACAAAgAAAAAAAAAtAB8AAgAAAAAAAAAtAB4AAgAAAAA tile_set = ExtResource("4_epkxq") [node name="Cliffs" type="TileMapLayer" parent="TileMapLayers" unique_id=588204306] -tile_map_data = PackedByteArray("AAArACUABAABAAAAAAArACYABAABAAEAAAArACcABAABAAEAAAArACgABAABAAEAAAArACkABAABAAIAAAAsACUABAABAAAAAAAsACYABAABAAEAAAAsACcABAABAAEAAAAsACgABAABAAEAAAAsACkABAACAAIAAAAtACUABAABAAAAAAAtACYABAABAAEAAAAtACcABAABAAEAAAAtACgABAABAAIAAAAtACkABAABAAMAAAAuACUABAABAAAAAAAuACYABAABAAEAAAAuACcABAABAAEAAAAuACgABAABAAIAAAAvACUABAABAAAAAAAvACYABAABAAEAAAAvACcABAACAAEAAAAvACgABAACAAIAAAAwACUABAABAAAAAAAwACYABAABAAIAAAAwACcABAABAAMAAAAxACUABAABAAAAAAAxACYABAABAAIAAAAyACUABAACAAAAAAAyACYABAACAAIAAAAqACUABAAAAAAAAAAqACYABAAAAAEAAAAqACcABAAAAAEAAAAqACgABAAAAAEAAAAqACkABAAAAAIAAAAqACoABAAAAAMAAAArACoABAABAAMAAAAsACoABAACAAMAAAAuACkABAABAAMAAAAvACkABAACAAMAAAAxACcABAABAAMAAAAyACcABAACAAMAAAA=") -tile_set = ExtResource("5_epkxq") +tile_map_data = PackedByteArray("AAArACUABAABAAAAAAArACYABAABAAEAAAArACcABAABAAEAAAArACgABAABAAEAAAArACkABAABAAIAAAAsACUABAABAAAAAAAsACYABAABAAEAAAAsACcABAABAAEAAAAsACgABAABAAEAAAAsACkABAACAAIAAAAtACUABAABAAAAAAAtACYABAABAAEAAAAtACcABAABAAEAAAAtACgABAABAAIAAAAuACUABAABAAAAAAAuACYABAABAAEAAAAuACcABAABAAEAAAAuACgABAABAAIAAAAvACUABAABAAAAAAAvACYABAABAAEAAAAvACcABAACAAEAAAAvACgABAACAAIAAAAwACUABAABAAAAAAAwACYABAABAAIAAAAxACUABAABAAAAAAAxACYABAABAAIAAAAyACUABAACAAAAAAAyACYABAACAAIAAAAqACUABAAAAAAAAAAqACYABAAAAAEAAAAqACcABAAAAAEAAAAqACgABAAAAAEAAAAqACkABAAAAAIAAAA=") +tile_set = ExtResource("6_epkxq") [node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=1739732737] tile_map_data = PackedByteArray("AAAbAC4AAQABAAEAAAAbAC0AAQABAAEAAAAaADAAAQABAAEAAAAaAC8AAQABAAEAAAAaAC4AAQABAAEAAAAaAC0AAQABAAEAAAAaACwAAQABAAEAAAAZADAAAQABAAEAAAAZAC8AAQABAAEAAAAZAC4AAQABAAEAAAAZAC0AAQABAAEAAAAZACwAAQABAAEAAAAYADAAAQABAAEAAAAYAC8AAQABAAEAAAAYAC4AAQABAAEAAAAYAC0AAQABAAEAAAAYACwAAQABAAEAAAAXADAAAQABAAEAAAAXAC8AAQABAAEAAAAXAC4AAQABAAEAAAAXAC0AAQABAAEAAAAXACwAAQABAAEAAAAWADAAAQABAAEAAAAWAC8AAQABAAEAAAAWAC4AAQABAAEAAAAWAC0AAQABAAEAAAAWACwAAQABAAEAAAAVADAAAQABAAEAAAAVAC8AAQABAAEAAAAVAC4AAQABAAEAAAAVAC0AAQABAAEAAAAVACwAAQABAAEAAAAUADAAAQABAAEAAAAUAC8AAQABAAEAAAAUAC4AAQABAAEAAAAUAC0AAQABAAEAAAAUACwAAQABAAEAAAATADAAAQABAAEAAAATAC8AAQABAAEAAAATAC4AAQABAAEAAAATAC0AAQABAAEAAAATACwAAQABAAEAAAASADAAAQABAAEAAAASAC8AAQABAAEAAAASAC4AAQABAAEAAAASAC0AAQABAAEAAAASACwAAQABAAEAAAARADAAAQABAAEAAAARAC8AAQABAAEAAAARAC4AAQABAAEAAAARAC0AAQABAAEAAAARACwAAQABAAEAAAAaACgAAQABAAIAAAAaACcAAQABAAEAAAAaACYAAQABAAEAAAAaACUAAQABAAEAAAAaACQAAQABAAEAAAAaACMAAQABAAEAAAAaACIAAQABAAEAAAAZACsAAQABAAAAAAAZACgAAQABAAIAAAAZACcAAQABAAEAAAAZACYAAQABAAEAAAAZACUAAQABAAEAAAAZACQAAQABAAEAAAAZACMAAQABAAEAAAAZACIAAQABAAEAAAAYACgAAQABAAIAAAAYACcAAQABAAEAAAAYACYAAQABAAEAAAAYACUAAQABAAEAAAAYACQAAQABAAEAAAAYACMAAQABAAEAAAAYACIAAQABAAEAAAAtAB4AAQACAAEAAAAtAB0AAQACAAEAAAAtABwAAQACAAEAAAAtABsAAQACAAEAAAAsAB4AAQABAAEAAAAsAB0AAQABAAEAAAAsABwAAQABAAEAAAAsABsAAQABAAEAAAAsABoAAQABAAEAAAArAB4AAQABAAEAAAArAB0AAQABAAEAAAArABwAAQABAAEAAAArABsAAQABAAEAAAArABoAAQABAAEAAAAqAB4AAQABAAEAAAAqAB0AAQABAAEAAAAqABwAAQABAAEAAAAqABsAAQABAAEAAAAqABoAAQABAAEAAAApAB4AAQABAAEAAAApAB0AAQABAAEAAAApABwAAQABAAEAAAAoAB4AAQABAAEAAAAoAB0AAQABAAEAAAAoABwAAQABAAEAAAAeAB4AAQABAAEAAAAeAB0AAQABAAEAAAAeABwAAQABAAEAAAAdAB4AAQABAAEAAAAdAB0AAQABAAEAAAAdABwAAQABAAEAAAAcAB4AAQABAAEAAAAcAB0AAQABAAEAAAAcABwAAQABAAEAAAAbAB4AAQABAAEAAAAbAB0AAQABAAEAAAAbABwAAQABAAEAAAAaAB0AAQABAAEAAAAaABwAAQABAAEAAAAZAB0AAQABAAEAAAAZABwAAQABAAEAAAAYAB4AAQABAAEAAAAYAB0AAQABAAEAAAAfACMAAQABAAEAAAAfACIAAQABAAEAAAAfACEAAQABAAEAAAAfACAAAQABAAEAAAAfAB8AAQABAAEAAAAfAB4AAQABAAEAAAAfAB0AAQABAAEAAAAeACMAAQABAAEAAAAeACIAAQABAAEAAAAeACEAAQABAAEAAAAeACAAAQABAAEAAAAeAB8AAQABAAEAAAAmACMAAQABAAEAAAAmACIAAQABAAEAAAAlACMAAQABAAEAAAAlACIAAQABAAEAAAAkACMAAQABAAEAAAAkACIAAQABAAEAAAAjACMAAQABAAEAAAAjACIAAQABAAEAAAAiACMAAQABAAEAAAAiACIAAQABAAEAAAAhACMAAQABAAEAAAAhACIAAQABAAEAAAAgACMAAQABAAEAAAAgACIAAQABAAEAAAAnACEAAQABAAEAAAAnACAAAQABAAEAAAAnAB8AAQABAAEAAAAnAB4AAQABAAEAAAAnAB0AAQABAAEAAAAmACEAAQABAAEAAAAmACAAAQABAAEAAAAmAB8AAQABAAEAAAAmAB4AAQABAAEAAAAmAB0AAQABAAEAAAAnACIAAQABAAEAAAAtABoAAQACAAEAAAAbAC8AAQABAAEAAAAYABwAAQABAAEAAAAXABwAAQABAAEAAAAWABwAAQABAAEAAAAVABwAAQABAAEAAAAUABwAAQABAAEAAAATABwAAQABAAEAAAASAB0AAQABAAEAAAASAB4AAQABAAEAAAASACMAAQABAAEAAAATACQAAQABAAEAAAAUACQAAQABAAEAAAAVACQAAQABAAEAAAAWACQAAQABAAEAAAAXACQAAQABAAEAAAAUACMAAQABAAEAAAAUACIAAQABAAEAAAAUAB4AAQABAAEAAAAUAB0AAQABAAEAAAATACMAAQABAAEAAAATAB4AAQABAAEAAAATAB0AAQABAAEAAAAXACMAAQABAAEAAAAXACIAAQABAAEAAAAWACMAAQABAAEAAAAWACIAAQABAAEAAAAVACMAAQABAAEAAAAVACIAAQABAAEAAAAXAB4AAQABAAEAAAAXAB0AAQABAAEAAAAWAB4AAQABAAEAAAAWAB0AAQABAAEAAAAVAB4AAQABAAEAAAAVAB0AAQABAAEAAAAaAB4AAQABAAEAAAAZAB4AAQABAAEAAAAdAB8AAQABAAEAAAAdACAAAQABAAEAAAAdACEAAQABAAEAAAAdACIAAQABAAEAAAASABwAAQABAAEAAAARABwAAQABAAEAAAAQABwAAQABAAEAAAAPABwAAQABAAEAAAAOAB0AAQABAAEAAAAPAB0AAQABAAEAAAAQAB0AAQABAAEAAAARAB0AAQABAAEAAAASACQAAQABAAEAAAARACQAAQABAAEAAAAQACQAAQABAAEAAAAPACQAAQABAAEAAAAOACMAAQABAAEAAAAPACMAAQABAAEAAAAQACMAAQABAAEAAAARACMAAQABAAEAAAATACIAAQABAAEAAAAOACIAAQABAAEAAAAOACEAAQABAAEAAAAOACAAAQABAAEAAAAOAB8AAQABAAEAAAAOAB4AAQABAAEAAAAPAB4AAQABAAEAAAAPAB8AAQABAAEAAAAPACAAAQABAAEAAAAPACEAAQABAAEAAAAPACIAAQABAAEAAAARAB4AAQABAAEAAAAQAB4AAQABAAEAAAAQAB8AAQABAAEAAAAQACAAAQABAAEAAAAQACEAAQABAAEAAAAQACIAAQABAAEAAAARACIAAQABAAEAAAASACIAAQABAAEAAAAdABsAAQABAAEAAAAdABoAAQABAAEAAAAdABkAAQABAAEAAAAcABsAAQABAAEAAAAcABoAAQABAAEAAAAcABkAAQABAAEAAAAbABsAAQABAAEAAAAbABoAAQABAAEAAAAbABkAAQABAAEAAAAaABsAAQABAAEAAAAaABoAAQABAAEAAAAaABkAAQABAAEAAAAZABsAAQABAAEAAAAZABoAAQABAAEAAAAZABkAAQABAAEAAAAYABsAAQABAAEAAAAYABoAAQABAAEAAAAYABkAAQABAAEAAAAXABsAAQABAAEAAAAXABoAAQABAAEAAAAXABkAAQABAAEAAAAWABsAAQABAAEAAAAWABoAAQABAAEAAAAWABkAAQABAAEAAAAVABsAAQABAAEAAAAVABoAAQABAAEAAAAVABkAAQABAAEAAAAUABsAAQABAAEAAAAUABoAAQABAAEAAAAUABkAAQABAAEAAAATABsAAQABAAEAAAATABoAAQABAAEAAAATABkAAQABAAEAAAASABsAAQABAAEAAAASABoAAQABAAEAAAASABkAAQABAAEAAAARABsAAQABAAEAAAARABoAAQABAAEAAAARABkAAQABAAEAAAAQABsAAQABAAEAAAAQABoAAQABAAEAAAAQABkAAQABAAEAAAAdABgAAQABAAEAAAAdABcAAQABAAEAAAAcABgAAQABAAEAAAAcABcAAQABAAEAAAAbABgAAQABAAEAAAAbABcAAQABAAEAAAAaABgAAQABAAEAAAAaABcAAQABAAEAAAAZABgAAQABAAEAAAAZABcAAQABAAEAAAAYABgAAQABAAEAAAAYABcAAQABAAEAAAAXABgAAQABAAEAAAAXABcAAQABAAEAAAAWABgAAQABAAEAAAAWABcAAQABAAEAAAAVABgAAQABAAEAAAAVABcAAQABAAEAAAAUABgAAQABAAEAAAAUABcAAQABAAEAAAATABgAAQABAAEAAAATABcAAQABAAEAAAASABgAAQABAAEAAAASABcAAQABAAEAAAARABgAAQABAAEAAAARABcAAQABAAEAAAAcADEAAQACAAIAAAAcADAAAQACAAEAAAAcAC8AAQACAAEAAAAcAC4AAQACAAEAAAAcAC0AAQACAAEAAAAcACwAAQACAAEAAAAcACsAAQACAAAAAAAbADEAAQABAAIAAAAbADAAAQABAAEAAAAbACwAAQABAAEAAAAbACsAAQABAAAAAAAaADEAAQABAAIAAAAaACsAAQABAAAAAAAZADEAAQABAAIAAAAYADEAAQABAAIAAAAYACsAAQABAAAAAAAXADEAAQABAAIAAAAXACsAAQABAAAAAAAWADEAAQABAAIAAAAWACsAAQABAAAAAAAVADEAAQABAAIAAAAVACsAAQABAAAAAAAUADEAAQABAAIAAAAUACsAAQABAAAAAAATADEAAQABAAIAAAATACsAAQABAAAAAAASADEAAQABAAIAAAASACsAAQABAAAAAAARADEAAQABAAIAAAARACsAAQABAAAAAAAbACgAAQACAAIAAAAbACcAAQACAAEAAAAbACYAAQACAAEAAAAbACUAAQACAAEAAAAbACQAAQABAAEAAAAbACMAAQABAAEAAAAbACIAAQABAAEAAAAbACEAAQABAAEAAAAaACEAAQABAAEAAAAZACEAAQABAAEAAAAYACEAAQABAAEAAAAXACgAAQABAAIAAAAXACcAAQABAAEAAAAXACYAAQABAAEAAAAXACUAAQABAAEAAAAXACEAAQABAAEAAAAWACgAAQAAAAIAAAAWACcAAQAAAAEAAAAWACYAAQAAAAEAAAAWACUAAQABAAEAAAAWACEAAQABAAEAAAAVACUAAQABAAIAAAAVACEAAQABAAEAAAAUACUAAQABAAIAAAAUACEAAQABAAEAAAATACUAAQABAAIAAAATACEAAQABAAEAAAASACUAAQABAAIAAAASACEAAQABAAEAAAARACUAAQABAAIAAAARACEAAQABAAEAAAAQACUAAQABAAIAAAAPACUAAQABAAIAAAAOACUAAQABAAIAAAAOACQAAQABAAEAAAANACUAAQAAAAIAAAANACQAAQAAAAEAAAANACMAAQAAAAEAAAANACIAAQAAAAEAAAANACEAAQAAAAEAAAAgACAAAQACAAEAAAAgAB8AAQACAAEAAAAgAB4AAQACAAEAAAAgAB0AAQACAAEAAAAgABwAAQACAAEAAAAgABsAAQACAAEAAAAgABoAAQACAAEAAAAgABkAAQACAAAAAAAfABwAAQABAAEAAAAfABsAAQABAAEAAAAfABoAAQABAAEAAAAfABkAAQABAAAAAAAeABsAAQABAAEAAAAeABoAAQABAAEAAAAeABkAAQABAAEAAAAeABgAAQACAAEAAAAcACAAAQABAAEAAAAcAB8AAQABAAEAAAAbACAAAQABAAEAAAAbAB8AAQABAAEAAAAaACAAAQABAAEAAAAaAB8AAQABAAEAAAAZACAAAQABAAEAAAAZAB8AAQABAAEAAAAYACAAAQABAAEAAAAYAB8AAQABAAEAAAAXACAAAQABAAEAAAAXAB8AAQABAAEAAAAWACAAAQABAAEAAAAWAB8AAQABAAEAAAAVACAAAQABAAEAAAAVAB8AAQABAAEAAAAUACAAAQABAAEAAAAUAB8AAQABAAEAAAATACAAAQABAAEAAAATAB8AAQABAAEAAAASACAAAQABAAEAAAASAB8AAQABAAEAAAARACAAAQABAAEAAAARAB8AAQABAAEAAAAQABgAAQABAAEAAAAPABsAAQABAAEAAAAPABoAAQABAAEAAAAPABkAAQABAAEAAAAPABgAAQABAAEAAAAOABwAAQABAAEAAAAOABsAAQABAAEAAAAOABoAAQABAAEAAAAOABkAAQABAAEAAAAOABgAAQABAAAAAAANACAAAQAAAAEAAAANAB8AAQAAAAEAAAANAB4AAQAAAAEAAAANAB0AAQAAAAEAAAANABwAAQAAAAEAAAANABsAAQAAAAEAAAANABoAAQAAAAEAAAANABkAAQAAAAEAAAANABgAAQAAAAAAAAAeABcAAQACAAEAAAAeABYAAQACAAEAAAAdABYAAQABAAEAAAAcABYAAQABAAEAAAAbABYAAQABAAEAAAAaABYAAQABAAEAAAAZABYAAQABAAEAAAAYABYAAQABAAEAAAAXABYAAQABAAEAAAAWABYAAQABAAEAAAAVABYAAQABAAEAAAAUABYAAQABAAEAAAATABYAAQABAAEAAAASABYAAQABAAEAAAARABYAAQABAAEAAAAQABcAAQABAAEAAAAQABYAAQABAAEAAAAPABcAAQAAAAEAAAAPABYAAQAAAAEAAAAlACEAAQABAAEAAAAkACEAAQABAAEAAAAjACEAAQABAAAAAAAiACEAAQABAAAAAAAhACEAAQABAAAAAAAgACEAAQABAAEAAAAlACAAAQABAAEAAAAlAB8AAQABAAEAAAAlAB4AAQABAAEAAAAlAB0AAQABAAEAAAAlABwAAQABAAEAAAAoACQAAQACAAIAAAAoACMAAQACAAEAAAAoACIAAQACAAEAAAAoACEAAQACAAEAAAAnACQAAQABAAIAAAAnACMAAQABAAEAAAAmACQAAQABAAIAAAAlACQAAQABAAIAAAAkACQAAQABAAIAAAAjACQAAQABAAIAAAAiACQAAQABAAIAAAAhACQAAQABAAIAAAAgACQAAQABAAIAAAAfACQAAQABAAIAAAAeACQAAQABAAIAAAAdACQAAQABAAIAAAAdACMAAQABAAEAAAAcACQAAQABAAIAAAAcACMAAQABAAEAAAAcACIAAQABAAEAAAAcACEAAQABAAEAAAAtACAAAQACAAIAAAAtAB8AAQACAAEAAAAsACAAAQABAAIAAAAsAB8AAQABAAEAAAArACAAAQABAAIAAAArAB8AAQABAAEAAAAqACAAAQABAAIAAAAqAB8AAQABAAEAAAApACAAAQABAAIAAAApAB8AAQABAAEAAAAoACAAAQABAAEAAAAoAB8AAQABAAEAAAAtABkAAQACAAAAAAAsABkAAQABAAAAAAArABkAAQABAAAAAAAqABkAAQABAAAAAAApABsAAQABAAEAAAApABoAAQABAAEAAAApABkAAQABAAAAAAAoABsAAQABAAEAAAAoABoAAQABAAEAAAAoABkAAQABAAAAAAAnABwAAQABAAEAAAAnABsAAQABAAEAAAAnABoAAQABAAEAAAAnABkAAQABAAAAAAAmABwAAQABAAEAAAAmABsAAQABAAEAAAAmABoAAQABAAEAAAAmABkAAQABAAAAAAAlABsAAQABAAEAAAAlABoAAQAAAAEAAAAlABkAAQAAAAAAAAAkACAAAQAAAAEAAAAkAB8AAQAAAAEAAAAkAB4AAQAAAAEAAAAkAB0AAQAAAAEAAAAkABwAAQAAAAEAAAAkABsAAQAAAAAAAAAsABUAAQACAAIAAAAsABQAAQACAAEAAAAsABMAAQACAAAAAAArABUAAQABAAIAAAArABQAAQABAAEAAAArABMAAQABAAAAAAAqABUAAQABAAIAAAAqABQAAQABAAEAAAAqABMAAQABAAAAAAApABUAAQABAAIAAAApABQAAQABAAEAAAApABMAAQABAAAAAAAoABUAAQABAAIAAAAoABQAAQABAAEAAAAoABMAAQABAAAAAAAnABUAAQABAAIAAAAnABQAAQABAAEAAAAnABMAAQABAAAAAAAmABUAAQABAAIAAAAmABQAAQABAAEAAAAmABMAAQABAAAAAAAlABUAAQABAAIAAAAlABQAAQABAAEAAAAlABMAAQABAAAAAAAkABUAAQABAAIAAAAkABQAAQABAAEAAAAkABMAAQABAAEAAAAkABIAAQACAAEAAAAkABEAAQACAAEAAAAkABAAAQACAAEAAAAkAA8AAQACAAAAAAAjABUAAQABAAIAAAAjABQAAQABAAEAAAAjABMAAQABAAEAAAAjABIAAQABAAEAAAAjABEAAQABAAEAAAAjABAAAQABAAEAAAAjAA8AAQABAAAAAAAiABUAAQABAAIAAAAiABQAAQABAAEAAAAiABMAAQABAAEAAAAiABIAAQABAAEAAAAiABEAAQABAAEAAAAiABAAAQABAAEAAAAiAA8AAQABAAAAAAAhABUAAQABAAIAAAAhABQAAQABAAEAAAAhABMAAQABAAEAAAAhABIAAQABAAEAAAAhABEAAQABAAEAAAAhABAAAQABAAEAAAAhAA8AAQABAAAAAAAgABUAAQABAAIAAAAgABQAAQABAAEAAAAgABMAAQABAAEAAAAgABIAAQABAAEAAAAgABEAAQABAAEAAAAgABAAAQABAAEAAAAgAA8AAQABAAAAAAAfABUAAQABAAIAAAAfABQAAQABAAEAAAAfABMAAQABAAEAAAAfABIAAQABAAEAAAAfABEAAQABAAEAAAAfABAAAQABAAEAAAAfAA8AAQABAAAAAAAeABUAAQABAAEAAAAeABQAAQABAAEAAAAeABMAAQABAAEAAAAeABIAAQABAAEAAAAeABEAAQABAAEAAAAeABAAAQABAAEAAAAeAA8AAQABAAAAAAAdABUAAQABAAEAAAAdABQAAQABAAEAAAAdABMAAQABAAEAAAAdABIAAQABAAEAAAAdABEAAQABAAEAAAAdABAAAQABAAEAAAAdAA8AAQABAAAAAAAcABUAAQABAAEAAAAcABQAAQABAAEAAAAcABMAAQABAAEAAAAcABIAAQABAAEAAAAcABEAAQABAAEAAAAcABAAAQABAAEAAAAcAA8AAQABAAAAAAAbABUAAQABAAEAAAAbABQAAQABAAEAAAAbABMAAQABAAEAAAAbABIAAQABAAEAAAAbABEAAQABAAEAAAAbABAAAQABAAEAAAAbAA8AAQABAAAAAAAaABUAAQABAAEAAAAaABQAAQABAAEAAAAaABMAAQABAAEAAAAaABIAAQABAAEAAAAaABEAAQABAAEAAAAaABAAAQABAAEAAAAaAA8AAQABAAAAAAAZABUAAQABAAEAAAAZABQAAQABAAEAAAAZABMAAQABAAEAAAAZABIAAQABAAEAAAAZABEAAQABAAEAAAAZABAAAQABAAEAAAAZAA8AAQABAAAAAAAYABUAAQABAAEAAAAYABQAAQABAAEAAAAYABMAAQABAAEAAAAYABIAAQABAAEAAAAYABEAAQABAAEAAAAYABAAAQABAAEAAAAYAA8AAQABAAAAAAAXABUAAQABAAEAAAAXABQAAQABAAEAAAAXABMAAQABAAEAAAAXABIAAQABAAEAAAAXABEAAQABAAEAAAAXABAAAQABAAEAAAAXAA8AAQABAAAAAAAWABUAAQABAAEAAAAWABQAAQABAAEAAAAWABMAAQABAAEAAAAWABIAAQABAAEAAAAWABEAAQABAAEAAAAWABAAAQABAAEAAAAWAA8AAQABAAAAAAAVABUAAQABAAEAAAAVABQAAQABAAEAAAAVABMAAQABAAEAAAAVABIAAQABAAEAAAAVABEAAQABAAEAAAAVABAAAQABAAEAAAAVAA8AAQABAAAAAAAUABUAAQABAAEAAAAUABQAAQABAAEAAAAUABMAAQABAAEAAAAUABIAAQABAAEAAAAUABEAAQABAAEAAAAUABAAAQABAAEAAAAUAA8AAQABAAAAAAATABUAAQABAAEAAAATABQAAQABAAEAAAATABMAAQABAAEAAAATABIAAQABAAEAAAATABEAAQABAAEAAAATABAAAQABAAEAAAATAA8AAQABAAAAAAASABUAAQABAAEAAAASABQAAQABAAEAAAASABMAAQABAAEAAAASABIAAQABAAEAAAASABEAAQABAAEAAAASABAAAQABAAEAAAASAA8AAQABAAAAAAARABUAAQABAAEAAAARABQAAQABAAEAAAARABMAAQABAAEAAAARABIAAQABAAEAAAARABEAAQABAAEAAAARABAAAQABAAEAAAARAA8AAQABAAAAAAAQABUAAQABAAEAAAAQABQAAQABAAEAAAAQABMAAQABAAEAAAAQABIAAQABAAEAAAAQABEAAQABAAEAAAAQABAAAQABAAEAAAAQAA8AAQABAAAAAAAPABUAAQABAAEAAAAPABQAAQABAAEAAAAPABMAAQABAAEAAAAPABIAAQABAAEAAAAPABEAAQABAAEAAAAPABAAAQABAAEAAAAPAA8AAQABAAAAAAAOABUAAQABAAIAAAAOABQAAQABAAEAAAAOABMAAQABAAEAAAAOABIAAQABAAEAAAAOABEAAQABAAEAAAAOABAAAQABAAEAAAAOAA8AAQABAAEAAAANABUAAQAAAAIAAAANABQAAQAAAAEAAAANABMAAQABAAEAAAANABIAAQABAAEAAAANABEAAQABAAEAAAANABAAAQABAAEAAAANAA8AAQABAAEAAAAOAA4AAQACAAEAAAAOAA0AAQACAAEAAAAOAAwAAQACAAAAAAANAA4AAQABAAEAAAANAA0AAQABAAEAAAANAAwAAQABAAAAAAAMABMAAQABAAIAAAAMABIAAQABAAEAAAAMABEAAQABAAEAAAAMABAAAQABAAEAAAAMAA8AAQABAAEAAAAMAA4AAQABAAEAAAAMAA0AAQABAAEAAAAMAAwAAQABAAAAAAALABMAAQABAAIAAAALABIAAQABAAEAAAALABEAAQABAAEAAAALABAAAQABAAEAAAALAA8AAQABAAEAAAALAA4AAQABAAEAAAALAA0AAQABAAEAAAALAAwAAQABAAAAAAAKABMAAQABAAIAAAAKABIAAQABAAEAAAAKABEAAQABAAEAAAAKABAAAQABAAEAAAAKAA8AAQABAAEAAAAKAA4AAQABAAEAAAAKAA0AAQABAAEAAAAKAAwAAQABAAAAAAAJABMAAQABAAIAAAAJABIAAQABAAEAAAAJABEAAQABAAEAAAAJABAAAQABAAEAAAAJAA8AAQABAAEAAAAJAA4AAQABAAEAAAAJAA0AAQABAAEAAAAJAAwAAQABAAAAAAAIABMAAQABAAIAAAAIABIAAQABAAEAAAAIABEAAQABAAEAAAAIABAAAQABAAEAAAAIAA8AAQABAAEAAAAIAA4AAQABAAEAAAAIAA0AAQABAAEAAAAIAAwAAQABAAAAAAAHABMAAQABAAIAAAAHABIAAQABAAEAAAAHABEAAQABAAEAAAAHABAAAQABAAEAAAAHAA8AAQABAAEAAAAHAA4AAQABAAEAAAAHAA0AAQABAAEAAAAHAAwAAQABAAAAAAAGABMAAQABAAIAAAAGABIAAQABAAEAAAAGABEAAQABAAEAAAAGABAAAQABAAEAAAAGAA8AAQABAAEAAAAGAA4AAQABAAEAAAAGAA0AAQABAAEAAAAGAAwAAQABAAAAAAAFABMAAQABAAIAAAAFABIAAQABAAEAAAAFABEAAQABAAEAAAAFABAAAQABAAEAAAAFAA8AAQABAAEAAAAFAA4AAQABAAEAAAAFAA0AAQABAAEAAAAFAAwAAQABAAAAAAAEABMAAQABAAIAAAAEABIAAQABAAEAAAAEABEAAQABAAEAAAAEABAAAQABAAEAAAAEAA8AAQABAAEAAAAEAA4AAQABAAEAAAAEAA0AAQABAAEAAAAEAAwAAQABAAAAAAADABMAAQAAAAIAAAADABIAAQAAAAEAAAADABEAAQABAAEAAAADABAAAQABAAEAAAADAA8AAQABAAEAAAADAA4AAQABAAEAAAADAA0AAQAAAAEAAAADAAwAAQAAAAAAAAACABEAAQABAAIAAAACABAAAQABAAEAAAACAA8AAQABAAEAAAACAA4AAQABAAAAAAA5ABoAAQAAAAAAAAA5ABsAAQAAAAEAAAA5ABwAAQAAAAEAAAA5AB0AAQAAAAIAAAA6ABsAAQABAAEAAAA6ABwAAQABAAEAAAA6AB0AAQABAAEAAAA6ABgAAQAAAAAAAAA6ABkAAQAAAAEAAAA6ABoAAQABAAEAAAA6AB4AAQAAAAIAAAA7ABgAAQABAAAAAAA7ABkAAQABAAEAAAA7ABoAAQABAAEAAAA7ABsAAQABAAEAAAA7ABwAAQABAAEAAAA7AB0AAQABAAEAAAA7AB4AAQABAAIAAAA8ABgAAQABAAAAAAA8ABkAAQABAAEAAAA8ABoAAQABAAEAAAA8ABsAAQABAAEAAAA8ABwAAQABAAEAAAA8AB0AAQABAAEAAAA8AB4AAQABAAEAAAA8AB8AAQAAAAIAAAA9ABgAAQABAAAAAAA9ABkAAQABAAEAAAA9ABoAAQABAAEAAAA9ABsAAQABAAEAAAA9ABwAAQABAAEAAAA9AB0AAQABAAEAAAA9AB4AAQABAAEAAAA9AB8AAQACAAIAAAA+ABgAAQACAAAAAAA+ABkAAQACAAEAAAA+ABoAAQACAAEAAAA+ABsAAQABAAEAAAA+ABwAAQABAAEAAAA+AB0AAQABAAEAAAA+AB4AAQACAAIAAAA/ABsAAQACAAAAAAA/ABwAAQACAAEAAAA/AB0AAQACAAIAAAANACsAAQAAAAAAAAANACwAAQAAAAEAAAANAC0AAQAAAAEAAAANAC4AAQAAAAEAAAANAC8AAQAAAAEAAAANADAAAQAAAAEAAAANADEAAQAAAAIAAAAOACsAAQABAAAAAAAOACwAAQABAAEAAAAOAC0AAQABAAEAAAAOAC4AAQABAAEAAAAOAC8AAQABAAEAAAAOADAAAQABAAEAAAAOADEAAQABAAIAAAAPACsAAQABAAAAAAAPACwAAQABAAEAAAAPAC0AAQABAAEAAAAPAC4AAQABAAEAAAAPAC8AAQABAAEAAAAPADAAAQABAAEAAAAPADEAAQABAAIAAAAQACsAAQABAAAAAAAQACwAAQABAAEAAAAQAC0AAQABAAEAAAAQAC4AAQABAAEAAAAQAC8AAQABAAEAAAAQADAAAQABAAEAAAAQADEAAQABAAIAAAAJAC0AAQACAAIAAAAJACwAAQACAAEAAAAJACsAAQACAAEAAAAJACoAAQACAAEAAAAJACkAAQACAAEAAAAJACgAAQACAAEAAAAJACcAAQACAAEAAAAJACYAAQACAAAAAAAIAC0AAQABAAIAAAAIACwAAQABAAEAAAAIACsAAQABAAEAAAAIACoAAQABAAEAAAAIACkAAQABAAEAAAAIACgAAQABAAEAAAAIACcAAQABAAEAAAAIACYAAQABAAAAAAAHAC0AAQABAAIAAAAHACwAAQABAAEAAAAHACsAAQABAAEAAAAHACoAAQABAAEAAAAHACkAAQABAAEAAAAHACgAAQABAAEAAAAHACcAAQABAAEAAAAHACYAAQABAAAAAAAGAC0AAQABAAIAAAAGACwAAQABAAEAAAAGACsAAQABAAEAAAAGACoAAQABAAEAAAAGACkAAQABAAEAAAAGACgAAQABAAEAAAAGACcAAQABAAEAAAAGACYAAQABAAAAAAAFAC0AAQABAAIAAAAFACwAAQABAAEAAAAFACsAAQABAAEAAAAFACoAAQABAAEAAAAFACkAAQABAAEAAAAFACgAAQABAAEAAAAFACcAAQABAAEAAAAFACYAAQABAAAAAAAEAC0AAQABAAIAAAAEACwAAQABAAEAAAAEACsAAQABAAEAAAAEACoAAQABAAEAAAAEACkAAQABAAEAAAAEACgAAQABAAEAAAAEACcAAQABAAEAAAAEACYAAQABAAAAAAADAC0AAQABAAIAAAADACwAAQABAAEAAAADACsAAQABAAEAAAADACoAAQABAAEAAAADACkAAQABAAEAAAADACgAAQABAAEAAAADACcAAQABAAEAAAADACYAAQABAAAAAAACAC0AAQABAAIAAAACACwAAQABAAEAAAACACsAAQABAAEAAAACACoAAQABAAEAAAACACkAAQABAAEAAAACACgAAQABAAEAAAACACcAAQABAAEAAAACACYAAQABAAAAAAABAC0AAQABAAIAAAABACwAAQABAAEAAAABACsAAQABAAEAAAABACoAAQABAAEAAAABACkAAQABAAEAAAABACgAAQABAAEAAAABACcAAQABAAEAAAABACYAAQABAAAAAAAAAC0AAQABAAIAAAAAACwAAQABAAEAAAAAACsAAQABAAEAAAAAACoAAQABAAEAAAAAACkAAQABAAEAAAAAACgAAQABAAEAAAAAACcAAQABAAEAAAAAACYAAQABAAAAAAD//y0AAQAAAAIAAAD//ywAAQAAAAEAAAD//ysAAQAAAAEAAAD//yoAAQAAAAEAAAD//ykAAQAAAAEAAAD//ygAAQAAAAEAAAD//ycAAQAAAAEAAAD//yYAAQAAAAAAAAAqACcABQAAAAAAAAAqACgABQAAAAEAAAAqACkABQAAAAIAAAArACYABQAAAAAAAAArACcABQABAAEAAAArACgABQABAAEAAAArACkABQABAAIAAAAsACUABQAAAAAAAAAsACYABQABAAEAAAAsACcABQABAAEAAAAsACgABQABAAEAAAAsACkABQACAAIAAAAtACUABQABAAAAAAAtACYABQABAAEAAAAtACcABQABAAEAAAAtACgABQACAAIAAAAuACUABQABAAAAAAAuACYABQABAAEAAAAuACcABQABAAIAAAAvACUABQABAAAAAAAvACYABQABAAEAAAAvACcABQACAAIAAAAwACUABQACAAAAAAAwACYABQACAAIAAAABAA4AAQAAAAAAAAABAA8AAQAAAAEAAAABABAAAQAAAAEAAAABABEAAQAAAAIAAAD2/y0ABQACAAIAAAD2/ywABQACAAEAAAD2/ysABQACAAAAAAD1/y0ABQABAAIAAAD1/ywABQABAAEAAAD1/ysABQABAAAAAAD0/y0ABQABAAIAAAD0/ywABQABAAEAAAD0/ysABQABAAAAAADz/y0ABQABAAEAAADz/ywABQABAAEAAADz/ysABQABAAAAAADy/zAABQACAAIAAADy/y8ABQACAAEAAADy/y4ABQABAAEAAADy/y0ABQABAAEAAADy/ywABQABAAEAAADy/ysABQABAAAAAADx/zAABQABAAIAAADx/y8ABQABAAEAAADx/y4ABQABAAEAAADx/y0ABQABAAEAAADx/ywABQABAAEAAADx/ysABQABAAAAAADw/zAABQABAAIAAADw/y8ABQABAAEAAADw/y4ABQABAAEAAADw/y0ABQABAAEAAADw/ywABQABAAEAAADw/ysABQABAAAAAADv/zAABQAAAAIAAADv/y8ABQAAAAEAAADv/y4ABQAAAAEAAADv/y0ABQAAAAEAAADv/ywABQAAAAEAAADv/ysABQAAAAAAAADq/zAAAQACAAIAAADq/y8AAQACAAEAAADq/y4AAQACAAAAAADp/zEAAQACAAIAAADp/zAAAQABAAEAAADp/y8AAQABAAEAAADp/y4AAQABAAAAAADo/zEAAQABAAIAAADo/zAAAQABAAEAAADo/y8AAQABAAEAAADo/y4AAQABAAAAAADn/zEAAQABAAIAAADn/zAAAQABAAEAAADn/y8AAQABAAEAAADn/y4AAQABAAAAAADm/zEAAQAAAAIAAADm/zAAAQAAAAEAAADm/y8AAQAAAAEAAADm/y4AAQAAAAAAAADz/y4ABQACAAIAAAA=") @@ -122,6 +139,15 @@ collision_layer = 0 position = Vector2(56, 7) shape = SubResource("RectangleShape2D_lutqc") +[node name="GoalReachedTrigger" type="Area2D" parent="." unique_id=724022793] +editor_description = "Entering this area starts the enemy." +position = Vector2(1128, 2966) +collision_layer = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="GoalReachedTrigger" unique_id=1393979645] +position = Vector2(2463, -1139) +shape = SubResource("RectangleShape2D_kgem8") + [node name="OnTheGround" type="Node2D" parent="." unique_id=705126784] y_sort_enabled = true @@ -1149,4 +1175,5 @@ position = Vector2(2461, 2732) [node name="HUD" parent="." unique_id=1953354605 instance=ExtResource("29_gbo6l")] -[connection signal="body_entered" from="EnemyTrigger" to="OnTheGround/VoidSpreadingEnemy" method="start"] +[connection signal="body_entered" from="EnemyTrigger" to="OnTheGround/VoidSpreadingEnemy" method="start" flags=6] +[connection signal="body_entered" from="GoalReachedTrigger" to="OnTheGround/VoidSpreadingEnemy" method="defeat" flags=6 unbinds=1] diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.gd b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.gd deleted file mode 100644 index 70ebc76e2f..0000000000 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.gd +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends CharacterBody2D - -@onready var animated_sprite_2d: AnimatedSprite2D = %AnimatedSprite2D - - -func _on_interact_area_interaction_started(_player: Player, from_right: bool) -> void: - animated_sprite_2d.flip_h = not from_right - - -func _on_interact_area_interaction_ended() -> void: - animated_sprite_2d.flip_h = false diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.gd.uid b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.gd.uid deleted file mode 100644 index 08c75b4f09..0000000000 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://0bdnfcarw8b0 diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.tscn b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.tscn index abd0cc550b..cf3688b581 100644 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.tscn +++ b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.tscn @@ -1,8 +1,7 @@ [gd_scene format=3 uid="uid://mruqy04d0vl8"] -[ext_resource type="Script" uid="uid://0bdnfcarw8b0" path="res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.gd" id="1_t7odl"] -[ext_resource type="SpriteFrames" uid="uid://qwlhm21ndgn2" path="res://scenes/game_elements/characters/enemies/guard/components/storyvore_frames_orange.tres" id="2_vnm58"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_bpxq8"] +[ext_resource type="SpriteFrames" uid="uid://dr08c1mmcybvn" path="res://scenes/game_elements/characters/components/sprite_frames/girl_with_button.tres" id="2_vnm58"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_bpxq8"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="4_tv1as"] [ext_resource type="Resource" uid="uid://ctbctlk6xcaja" path="res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.dialogue" id="5_vnm58"] @@ -14,10 +13,8 @@ size = Vector2(52, 50) [node name="ButtonsCollector" type="CharacterBody2D" unique_id=1565485690] collision_layer = 2 -script = ExtResource("1_t7odl") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1493156351] -unique_name_in_owner = true position = Vector2(0, -29) sprite_frames = ExtResource("2_vnm58") animation = &"idle" @@ -27,17 +24,20 @@ autoplay = "idle" rotation = -1.5708 shape = SubResource("CapsuleShape2D_vnm58") -[node name="InteractArea" type="Area2D" parent="." unique_id=1488513282] +[node name="InteractArea" type="Area2D" parent="." unique_id=1488513282 node_paths=PackedStringArray("marker")] collision_layer = 32 collision_mask = 0 script = ExtResource("3_bpxq8") -interact_label_position = Vector2(0, -128) +marker = NodePath("Marker") [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=1253932590] position = Vector2(0, -29) shape = SubResource("RectangleShape2D_vnm58") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=2111856598] +position = Vector2(0, -128) + [node name="TalkBehavior" type="Node" parent="." unique_id=1124185946 node_paths=PackedStringArray("interact_area")] script = ExtResource("4_tv1as") dialogue = ExtResource("5_vnm58") diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_end.gd b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_end.gd deleted file mode 100644 index aec6213551..0000000000 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_end.gd +++ /dev/null @@ -1,12 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends Node2D - -const LongerHook = preload( - "res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/longer_hook.gd" -) - - -func _ready() -> void: - var player: Player = get_tree().get_first_node_in_group("player") - LongerHook.grant_longer_hook(player) diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_end.gd.uid b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_end.gd.uid deleted file mode 100644 index 31caa45889..0000000000 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_end.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dlelm6xi0nj15 diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_powerup.gd b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_powerup.gd index 820c6d6a87..0bc9debd29 100644 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_powerup.gd +++ b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_powerup.gd @@ -2,24 +2,21 @@ # SPDX-License-Identifier: MPL-2.0 extends Node2D -const LongerHook = preload( - "res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/longer_hook.gd" -) - -@onready var player: Player = %Player -@onready var frame_camera_behavior: FrameCameraBehavior = %FrameCameraBehavior +var zoom_tween: Tween func _ready() -> void: - frame_camera_behavior.frame_target = player.get_node("PlayerHook/HookEnding") - + GameState.abilities_changed.connect(_on_abilities_changed) + _on_abilities_changed() -func _on_button_item_collected() -> void: - var player: Player = get_tree().get_first_node_in_group("player") - LongerHook.grant_longer_hook(player) - # Zoom out the camera when collecting the powerup, because now the player - # can throw a longer thread: +func _on_abilities_changed() -> void: + var has_longer_thread := GameState.has_ability(Enums.PlayerAbilities.ABILITY_B_MODIFIER_1) + var camera_zoom := Vector2(0.5, 0.5) if has_longer_thread else Vector2(1.0, 1.0) + # Zoom out when the player can throw a longer thread: var camera: Camera2D = get_viewport().get_camera_2d() - var zoom_tween := create_tween() - zoom_tween.tween_property(camera, "zoom", Vector2(0.8, 0.8), 1.0) + if camera.zoom != camera_zoom: + if zoom_tween: + zoom_tween.kill() + zoom_tween = create_tween() + zoom_tween.tween_property(camera, "zoom", camera_zoom, 1.0) diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_start.gd b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_start.gd new file mode 100644 index 0000000000..ab941e8475 --- /dev/null +++ b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_start.gd @@ -0,0 +1,27 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends Node2D + +var _play_cinematic: bool = true + +@onready var cinematic: Cinematic = $Cinematic +@onready var animation_player: AnimationPlayer = $AnimationPlayer +@onready var void_patrolling: CharacterBody2D = %VoidPatrolling +@onready var non_hookable_buttons: Node2D = %NonHookableButtons + + +func _ready() -> void: + if _play_cinematic: + cinematic.start() + + +func _on_spawn_point_from_powerup_player_teleported() -> void: + # The player is coming back from the east, so play the + # animation directly. This is actually letting the Void + # add tiles. + _play_cinematic = false + if not is_node_ready(): + await ready + non_hookable_buttons.queue_free() + void_patrolling.visible = false + animation_player.play(&"eat_floor") diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_start.gd.uid b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_start.gd.uid new file mode 100644 index 0000000000..27daea0be8 --- /dev/null +++ b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_start.gd.uid @@ -0,0 +1 @@ +uid://cypo7qnrrj4qq diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/longer_hook.gd b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/longer_hook.gd deleted file mode 100644 index bb886cd8e7..0000000000 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/longer_hook.gd +++ /dev/null @@ -1,8 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends Object - - -static func grant_longer_hook(player: Player) -> void: - player.get_node("%PlayerHook").string_throw_length = 400.0 - player.get_node("%PlayerHook").string_max_length = 450.0 diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/longer_hook.gd.uid b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/longer_hook.gd.uid deleted file mode 100644 index 7ac9df4719..0000000000 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/longer_hook.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://27owt0vwo85d diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/switch_mode_area.gd b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/switch_mode_area.gd deleted file mode 100644 index 24bbe7b1a5..0000000000 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/switch_mode_area.gd +++ /dev/null @@ -1,22 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends Area2D -## An area inside which the player is set to mode [member Player.Mode.COZY], -## and outside which is set to mode [member Player.Mode.HOOKING]. -## -## This is a hack for collecting a thread in a grappling hook scene, -## until we get rid of player modes. - - -func _on_body_entered(body: Node2D) -> void: - var player := body as Player - if not player: - return - player.mode = Player.Mode.COZY - - -func _on_body_exited(body: Node2D) -> void: - var player := body as Player - if not player: - return - player.mode = Player.Mode.HOOKING diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/switch_mode_area.gd.uid b/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/switch_mode_area.gd.uid deleted file mode 100644 index 41fd2216b4..0000000000 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/components/switch_mode_area.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d2m5qm4ranctd diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_end.tscn b/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_end.tscn deleted file mode 100644 index 0a7f4a224c..0000000000 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_end.tscn +++ /dev/null @@ -1,226 +0,0 @@ -[gd_scene format=4 uid="uid://bfs26qvdru0ur"] - -[ext_resource type="Script" uid="uid://dlelm6xi0nj15" path="res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_end.gd" id="1_1dsdq"] -[ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="2_7h0hr"] -[ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="3_7h0hr"] -[ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="3_j6qjo"] -[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="4_6dpig"] -[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="4_j6qjo"] -[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="5_1dsdq"] -[ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="6_hf4li"] -[ext_resource type="PackedScene" uid="uid://evb46lm6ssu2" path="res://scenes/game_elements/props/hookable_pin/hookable_pin.tscn" id="6_rci8f"] -[ext_resource type="PackedScene" uid="uid://dvj15pnuqr2ua" path="res://scenes/game_elements/props/hookable_button_item/hookable_button_item.tscn" id="7_hf4li"] -[ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="8_nt6an"] -[ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="9_x5deh"] -[ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="10_qkedd"] -[ext_resource type="Script" uid="uid://d2m5qm4ranctd" path="res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/switch_mode_area.gd" id="11_ygswq"] -[ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="12_wrdap"] -[ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="14_hf4li"] -[ext_resource type="Script" uid="uid://0enyu5v4ra34" path="res://scenes/game_elements/props/spawn_point/components/spawn_point.gd" id="14_j6qjo"] -[ext_resource type="SpriteFrames" uid="uid://bapks76u4hipj" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_green_small.tres" id="15_nt6an"] - -[sub_resource type="Resource" id="Resource_kr8u1"] -script = ExtResource("9_x5deh") -name = "Imagination" -type = 1 -metadata/_custom_type_script = "uid://bgmwplmj3bfls" - -[sub_resource type="RectangleShape2D" id="RectangleShape2D_b0r3o"] -size = Vector2(131, 87) - -[node name="GrapplingHookEnd" type="Node2D" unique_id=2075725183] -script = ExtResource("1_1dsdq") - -[node name="BackgroundMusic" parent="." unique_id=563696862 instance=ExtResource("2_7h0hr")] -stream = ExtResource("3_j6qjo") - -[node name="TileMapLayers" type="Node2D" parent="." unique_id=2001840577] - -[node name="Floor" type="TileMapLayer" parent="TileMapLayers" unique_id=975055411] -tile_map_data = PackedByteArray("AAANAAgAAQABAAEAAAANAAkAAQABAAEAAAANAAoAAQABAAEAAAAOAAgAAQABAAEAAAAOAAkAAQABAAEAAAAOAAoAAQABAAEAAAAPAAgAAQABAAEAAAAPAAkAAQABAAEAAAAPAAoAAQABAAEAAAAQAAsAAQABAAEAAAAQAAoAAQABAAEAAAAQAAkAAQABAAEAAAAQAAgAAQABAAEAAAAQAAcAAQABAAEAAAAPAAsAAQABAAEAAAAPAAcAAQABAAEAAAAOAAsAAQABAAEAAAAOAAcAAQABAAEAAAANAAsAAQABAAEAAAANAAcAAQABAAEAAAAMAAsAAQABAAEAAAAMAAoAAQABAAEAAAAMAAkAAQABAAEAAAAMAAgAAQABAAEAAAAMAAcAAQABAAEAAAAZAA0AAQABAAEAAAAZAAwAAQABAAEAAAAZAAsAAQABAAEAAAAYAA0AAQABAAEAAAAYAAwAAQABAAEAAAAYAAsAAQABAAEAAAAXAA0AAQABAAEAAAAXAAwAAQABAAEAAAAXAAsAAQABAAEAAAAWAA0AAQABAAEAAAAWAAwAAQABAAEAAAAWAAsAAQABAAEAAAAVAA0AAQABAAEAAAAVAAwAAQABAAEAAAAVAAsAAQABAAEAAAAUAA0AAQABAAEAAAAUAAwAAQABAAEAAAAUAAsAAQABAAEAAAATAA0AAQABAAEAAAATAAwAAQABAAEAAAATAAsAAQABAAEAAAASAA0AAQABAAEAAAASAAwAAQABAAEAAAASAAsAAQABAAEAAAARAA0AAQABAAEAAAARAAwAAQABAAEAAAARAAsAAQABAAEAAAAQAA0AAQABAAEAAAAQAAwAAQABAAEAAAAPAA0AAQABAAEAAAAPAAwAAQABAAEAAAAOAA0AAQABAAEAAAAOAAwAAQABAAEAAAANAA0AAQABAAEAAAANAAwAAQABAAEAAAAMAA0AAQABAAEAAAAMAAwAAQABAAEAAAALAA0AAQABAAEAAAALAAwAAQABAAEAAAALAAsAAQABAAEAAAAKAA0AAQABAAEAAAAKAAwAAQABAAEAAAAKAAsAAQABAAEAAAAJAA0AAQABAAEAAAAJAAwAAQABAAEAAAAJAAsAAQABAAEAAAAIAA0AAQABAAEAAAAIAAwAAQABAAEAAAAIAAsAAQABAAEAAAAHAA0AAQABAAEAAAAHAAwAAQABAAEAAAAHAAsAAQABAAEAAAAGAA0AAQABAAEAAAAGAAwAAQABAAEAAAAGAAsAAQABAAEAAAAFAA0AAQABAAEAAAAFAAwAAQABAAEAAAAFAAsAAQABAAEAAAAEAA0AAQABAAEAAAAEAAwAAQABAAEAAAAEAAsAAQABAAEAAAADAA0AAQABAAEAAAADAAwAAQABAAEAAAADAAsAAQABAAEAAAACAA0AAQABAAEAAAACAAwAAQABAAEAAAACAAsAAQABAAEAAAABAA0AAQABAAEAAAABAAwAAQABAAEAAAABAAsAAQABAAEAAAAAAA0AAQABAAEAAAAAAAwAAQABAAEAAAAAAAsAAQABAAEAAAAZABAAAQABAAEAAAAZAA8AAQABAAEAAAAZAA4AAQABAAEAAAAYABAAAQABAAEAAAAYAA8AAQABAAEAAAAYAA4AAQABAAEAAAAXABAAAQABAAEAAAAXAA8AAQABAAEAAAAXAA4AAQABAAEAAAAWABAAAQABAAEAAAAWAA8AAQABAAEAAAAWAA4AAQABAAEAAAAVABAAAQABAAEAAAAVAA8AAQABAAEAAAAVAA4AAQABAAEAAAAUABAAAQABAAEAAAAUAA8AAQABAAEAAAAUAA4AAQABAAEAAAATABAAAQABAAEAAAATAA8AAQABAAEAAAATAA4AAQABAAEAAAASABAAAQABAAEAAAASAA8AAQABAAEAAAASAA4AAQABAAEAAAARABAAAQABAAEAAAARAA8AAQABAAEAAAARAA4AAQABAAEAAAAQABAAAQABAAEAAAAQAA8AAQABAAEAAAAQAA4AAQABAAEAAAAPABAAAQABAAEAAAAPAA8AAQABAAEAAAAPAA4AAQABAAEAAAAOABAAAQABAAEAAAAOAA8AAQABAAEAAAAOAA4AAQABAAEAAAANABAAAQABAAEAAAANAA8AAQABAAEAAAANAA4AAQABAAEAAAAMABAAAQABAAEAAAAMAA8AAQABAAEAAAAMAA4AAQABAAEAAAALABAAAQABAAEAAAALAA8AAQABAAEAAAALAA4AAQABAAEAAAAKABAAAQABAAEAAAAKAA8AAQABAAEAAAAKAA4AAQABAAEAAAAJABAAAQABAAEAAAAJAA8AAQABAAEAAAAJAA4AAQABAAEAAAAIABAAAQABAAEAAAAIAA8AAQABAAEAAAAIAA4AAQABAAEAAAAHABAAAQABAAEAAAAHAA8AAQABAAEAAAAHAA4AAQABAAEAAAAGABAAAQABAAEAAAAGAA8AAQABAAEAAAAGAA4AAQABAAEAAAAFABAAAQABAAEAAAAFAA8AAQABAAEAAAAFAA4AAQABAAEAAAAEABAAAQABAAEAAAAEAA8AAQABAAEAAAAEAA4AAQABAAEAAAADABAAAQABAAEAAAADAA8AAQABAAEAAAADAA4AAQABAAEAAAACABAAAQABAAEAAAACAA8AAQABAAEAAAACAA4AAQABAAEAAAABABAAAQABAAEAAAABAA8AAQABAAEAAAABAA4AAQABAAEAAAAAABAAAQABAAEAAAAAAA8AAQABAAEAAAAAAA4AAQABAAEAAAAZABcAAQABAAIAAAAZABYAAQABAAEAAAAZABUAAQABAAEAAAAZABQAAQABAAEAAAAZABMAAQABAAEAAAAZABIAAQABAAEAAAAZABEAAQABAAEAAAAZAAoAAQABAAEAAAAZAAkAAQABAAEAAAAZAAgAAQABAAEAAAAZAAcAAQABAAEAAAAZAAYAAQABAAEAAAAZAAUAAQABAAEAAAAZAAQAAQABAAEAAAAZAAMAAQABAAEAAAAZAAIAAQABAAEAAAAYABcAAQABAAIAAAAYABYAAQABAAEAAAAYABUAAQABAAEAAAAYABQAAQABAAEAAAAYABMAAQABAAEAAAAYABIAAQABAAEAAAAYABEAAQABAAEAAAAYAAoAAQABAAEAAAAYAAkAAQABAAEAAAAYAAgAAQABAAEAAAAYAAcAAQABAAEAAAAYAAYAAQABAAEAAAAYAAUAAQABAAEAAAAYAAQAAQABAAEAAAAYAAMAAQABAAEAAAAYAAIAAQABAAEAAAAXABcAAQABAAIAAAAXABYAAQABAAEAAAAXABUAAQABAAEAAAAXABQAAQABAAEAAAAXABMAAQABAAEAAAAXABIAAQABAAEAAAAXABEAAQABAAEAAAAXAAoAAQABAAEAAAAXAAkAAQABAAEAAAAXAAgAAQABAAEAAAAXAAcAAQABAAEAAAAXAAYAAQABAAEAAAAXAAUAAQABAAEAAAAXAAQAAQABAAEAAAAXAAMAAQABAAEAAAAXAAIAAQABAAEAAAAWABcAAQABAAIAAAAWABYAAQABAAEAAAAWABUAAQABAAEAAAAWABQAAQABAAEAAAAWABMAAQABAAEAAAAWABIAAQABAAEAAAAWABEAAQABAAEAAAAWAAoAAQABAAEAAAAWAAkAAQABAAEAAAAWAAgAAQABAAEAAAAWAAcAAQABAAEAAAAWAAYAAQABAAEAAAAWAAUAAQABAAEAAAAWAAQAAQABAAEAAAAWAAMAAQABAAEAAAAWAAIAAQABAAEAAAAVABcAAQABAAIAAAAVABYAAQABAAEAAAAVABUAAQABAAEAAAAVABQAAQABAAEAAAAVABMAAQABAAEAAAAVABIAAQABAAEAAAAVABEAAQABAAEAAAAVAAoAAQABAAEAAAAVAAkAAQABAAEAAAAVAAgAAQABAAEAAAAVAAcAAQABAAEAAAAVAAYAAQABAAEAAAAVAAUAAQABAAEAAAAVAAQAAQABAAEAAAAVAAMAAQABAAEAAAAVAAIAAQABAAEAAAAUABcAAQABAAIAAAAUABYAAQABAAEAAAAUABUAAQABAAEAAAAUABQAAQABAAEAAAAUABMAAQABAAEAAAAUABIAAQABAAEAAAAUABEAAQABAAEAAAAUAAoAAQABAAEAAAAUAAkAAQABAAEAAAAUAAgAAQABAAEAAAAUAAcAAQABAAEAAAAUAAYAAQABAAEAAAAUAAUAAQABAAEAAAAUAAQAAQABAAEAAAAUAAMAAQABAAEAAAAUAAIAAQABAAEAAAATABcAAQABAAIAAAATABYAAQABAAEAAAATABUAAQABAAEAAAATABQAAQABAAEAAAATABMAAQABAAEAAAATABIAAQABAAEAAAATABEAAQABAAEAAAATAAoAAQABAAEAAAATAAkAAQABAAEAAAATAAgAAQABAAEAAAATAAcAAQABAAEAAAATAAYAAQABAAEAAAATAAUAAQABAAEAAAATAAQAAQABAAEAAAATAAMAAQABAAEAAAATAAIAAQABAAEAAAASABcAAQABAAIAAAASABYAAQABAAEAAAASABUAAQABAAEAAAASABQAAQABAAEAAAASABMAAQABAAEAAAASABIAAQABAAEAAAASABEAAQABAAEAAAASAAoAAQABAAEAAAASAAkAAQABAAEAAAASAAgAAQABAAEAAAASAAcAAQABAAEAAAASAAYAAQABAAEAAAASAAUAAQABAAEAAAASAAQAAQABAAEAAAASAAMAAQABAAEAAAASAAIAAQABAAEAAAARABcAAQABAAIAAAARABYAAQABAAEAAAARABUAAQABAAEAAAARABQAAQABAAEAAAARABMAAQABAAEAAAARABIAAQABAAEAAAARABEAAQABAAEAAAARAAoAAQABAAEAAAARAAkAAQABAAEAAAARAAgAAQABAAEAAAARAAcAAQABAAEAAAARAAYAAQABAAEAAAARAAUAAQABAAEAAAARAAQAAQABAAEAAAARAAMAAQABAAEAAAARAAIAAQABAAEAAAAQABcAAQABAAIAAAAQABYAAQABAAEAAAAQABUAAQABAAEAAAAQABQAAQABAAEAAAAQABMAAQABAAEAAAAQABIAAQABAAEAAAAQABEAAQABAAEAAAAQAAYAAQABAAEAAAAQAAUAAQABAAEAAAAQAAQAAQABAAEAAAAQAAMAAQABAAEAAAAQAAIAAQABAAEAAAAPABcAAQABAAIAAAAPABYAAQABAAEAAAAPABUAAQABAAEAAAAPABQAAQABAAEAAAAPABMAAQABAAEAAAAPABIAAQABAAEAAAAPABEAAQABAAEAAAAPAAYAAQABAAEAAAAPAAUAAQABAAEAAAAPAAQAAQABAAEAAAAPAAMAAQABAAEAAAAPAAIAAQABAAEAAAAOABcAAQABAAIAAAAOABYAAQABAAEAAAAOABUAAQABAAEAAAAOABQAAQABAAEAAAAOABMAAQABAAEAAAAOABIAAQABAAEAAAAOABEAAQABAAEAAAAOAAYAAQABAAEAAAAOAAUAAQABAAEAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQABAAEAAAANABcAAQABAAIAAAANABYAAQABAAEAAAANABUAAQABAAEAAAANABQAAQABAAEAAAANABMAAQABAAEAAAANABIAAQABAAEAAAANABEAAQABAAEAAAANAAYAAQABAAEAAAANAAUAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAEAAAAMABcAAQABAAIAAAAMABYAAQABAAEAAAAMABUAAQABAAEAAAAMABQAAQABAAEAAAAMABMAAQABAAEAAAAMABIAAQABAAEAAAAMABEAAQABAAEAAAAMAAYAAQABAAEAAAAMAAUAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAEAAAALABcAAQABAAIAAAALABYAAQABAAEAAAALABUAAQABAAEAAAALABQAAQABAAEAAAALABMAAQABAAEAAAALABIAAQABAAEAAAALABEAAQABAAEAAAALAAoAAQABAAEAAAALAAkAAQABAAEAAAALAAgAAQABAAEAAAALAAcAAQABAAEAAAALAAYAAQABAAEAAAALAAUAAQABAAEAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAEAAAAKABcAAQABAAIAAAAKABYAAQABAAEAAAAKABUAAQABAAEAAAAKABQAAQABAAEAAAAKABMAAQABAAEAAAAKABIAAQABAAEAAAAKABEAAQABAAEAAAAKAAoAAQABAAEAAAAKAAkAAQABAAEAAAAKAAgAAQABAAEAAAAKAAcAAQABAAEAAAAKAAYAAQABAAEAAAAKAAUAAQABAAEAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAEAAAAJABcAAQABAAIAAAAJABYAAQABAAEAAAAJABUAAQABAAEAAAAJABQAAQABAAEAAAAJABMAAQABAAEAAAAJABIAAQABAAEAAAAJABEAAQABAAEAAAAJAAoAAQABAAEAAAAJAAkAAQABAAEAAAAJAAgAAQABAAEAAAAJAAcAAQABAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAIABcAAQABAAIAAAAIABYAAQABAAEAAAAIABUAAQABAAEAAAAIABQAAQABAAEAAAAIABMAAQABAAEAAAAIABIAAQABAAEAAAAIABEAAQABAAEAAAAIAAoAAQABAAEAAAAIAAkAAQABAAEAAAAIAAgAAQABAAEAAAAIAAcAAQABAAEAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAIAAQAAQABAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAEAAAAHABcAAQABAAIAAAAHABYAAQABAAEAAAAHABUAAQABAAEAAAAHABQAAQABAAEAAAAHABMAAQABAAEAAAAHABIAAQABAAEAAAAHABEAAQABAAEAAAAHAAoAAQABAAEAAAAHAAkAAQABAAEAAAAHAAgAAQABAAEAAAAHAAcAAQABAAEAAAAHAAYAAQABAAEAAAAHAAUAAQABAAEAAAAHAAQAAQABAAEAAAAHAAMAAQABAAEAAAAHAAIAAQABAAEAAAAGABcAAQABAAIAAAAGABYAAQABAAEAAAAGABUAAQABAAEAAAAGABQAAQABAAEAAAAGABMAAQABAAEAAAAGABIAAQABAAEAAAAGABEAAQABAAEAAAAGAAoAAQABAAEAAAAGAAkAAQABAAEAAAAGAAgAAQABAAEAAAAGAAcAAQABAAEAAAAGAAYAAQABAAEAAAAGAAUAAQABAAEAAAAGAAQAAQABAAEAAAAGAAMAAQABAAEAAAAGAAIAAQABAAEAAAAFABcAAQABAAIAAAAFABYAAQABAAEAAAAFABUAAQABAAEAAAAFABQAAQABAAEAAAAFABMAAQABAAEAAAAFABIAAQABAAEAAAAFABEAAQABAAEAAAAFAAoAAQABAAEAAAAFAAkAAQABAAEAAAAFAAgAAQABAAEAAAAFAAcAAQABAAEAAAAFAAYAAQABAAEAAAAFAAUAAQABAAEAAAAFAAQAAQABAAEAAAAFAAMAAQABAAEAAAAFAAIAAQABAAEAAAAEABcAAQABAAIAAAAEABYAAQABAAEAAAAEABUAAQABAAEAAAAEABQAAQABAAEAAAAEABMAAQABAAEAAAAEABIAAQABAAEAAAAEABEAAQABAAEAAAAEAAoAAQABAAEAAAAEAAkAAQABAAEAAAAEAAgAAQABAAEAAAAEAAcAAQABAAEAAAAEAAYAAQABAAEAAAAEAAUAAQABAAEAAAAEAAQAAQABAAEAAAAEAAMAAQABAAEAAAAEAAIAAQABAAEAAAADABcAAQABAAIAAAADABYAAQABAAEAAAADABUAAQABAAEAAAADABQAAQABAAEAAAADABMAAQABAAEAAAADABIAAQABAAEAAAADABEAAQABAAEAAAADAAoAAQABAAEAAAADAAkAAQABAAEAAAADAAgAAQABAAEAAAADAAcAAQABAAEAAAADAAYAAQABAAEAAAADAAUAAQABAAEAAAADAAQAAQABAAEAAAADAAMAAQABAAEAAAADAAIAAQABAAEAAAACABcAAQABAAIAAAACABYAAQABAAEAAAACABUAAQABAAEAAAACABQAAQABAAEAAAACABMAAQABAAEAAAACABIAAQABAAEAAAACABEAAQABAAEAAAACAAoAAQABAAEAAAACAAkAAQABAAEAAAACAAgAAQABAAEAAAACAAcAAQABAAEAAAACAAYAAQABAAEAAAACAAUAAQABAAEAAAACAAQAAQABAAEAAAACAAMAAQABAAEAAAACAAIAAQABAAEAAAABABcAAQABAAIAAAABABYAAQABAAEAAAABABUAAQABAAEAAAABABQAAQABAAEAAAABABMAAQABAAEAAAABABIAAQABAAEAAAABABEAAQABAAEAAAABAAoAAQABAAEAAAABAAkAAQABAAEAAAABAAgAAQABAAEAAAABAAcAAQABAAEAAAABAAYAAQABAAEAAAABAAUAAQABAAEAAAABAAQAAQABAAEAAAABAAMAAQABAAEAAAABAAIAAQABAAEAAAAAABcAAQABAAIAAAAAABYAAQABAAEAAAAAABUAAQABAAEAAAAAABQAAQABAAEAAAAAABMAAQABAAEAAAAAABIAAQABAAEAAAAAABEAAQABAAEAAAAAAAoAAQABAAEAAAAAAAkAAQABAAEAAAAAAAgAAQABAAEAAAAAAAcAAQABAAEAAAAAAAYAAQABAAEAAAAAAAUAAQABAAEAAAAAAAQAAQABAAEAAAAAAAMAAQABAAEAAAAAAAIAAQABAAEAAAD//xcAAQABAAIAAAD//xYAAQABAAEAAAD//xUAAQABAAEAAAD//xQAAQABAAEAAAD//xMAAQABAAEAAAD//xIAAQABAAEAAAD//xEAAQABAAEAAAD//xAAAQABAAEAAAD//w8AAQABAAEAAAD//w4AAQABAAEAAAD//w0AAQABAAEAAAD//wwAAQABAAEAAAD//wsAAQABAAEAAAD//woAAQABAAEAAAD//wkAAQABAAEAAAD//wgAAQABAAEAAAD//wcAAQABAAEAAAD//wYAAQABAAEAAAD//wUAAQABAAEAAAD//wQAAQABAAEAAAD//wMAAQABAAEAAAD//wIAAQABAAEAAAD+/xcAAQAAAAIAAAD+/xYAAQAAAAEAAAD+/xUAAQAAAAEAAAD+/xQAAQAAAAEAAAD+/xMAAQAAAAEAAAD+/xIAAQAAAAEAAAD+/xEAAQAAAAEAAAD+/xAAAQAAAAEAAAD+/w8AAQAAAAEAAAD+/w4AAQAAAAEAAAD+/w0AAQAAAAEAAAD+/wwAAQAAAAEAAAD+/wsAAQAAAAEAAAD+/woAAQAAAAEAAAD+/wkAAQAAAAEAAAD+/wgAAQAAAAEAAAD+/wcAAQAAAAEAAAD+/wYAAQAAAAEAAAD+/wUAAQAAAAEAAAD+/wQAAQAAAAEAAAD+/wMAAQAAAAEAAAD+/wIAAQAAAAEAAAArABcAAQACAAIAAAArABYAAQACAAEAAAArABUAAQACAAEAAAArABQAAQACAAEAAAArABMAAQACAAEAAAArABIAAQACAAEAAAArABEAAQACAAEAAAArABAAAQACAAEAAAArAA8AAQACAAEAAAArAA4AAQACAAEAAAArAA0AAQACAAEAAAArAAwAAQACAAEAAAArAAsAAQACAAEAAAArAAoAAQACAAEAAAArAAkAAQACAAEAAAArAAgAAQACAAEAAAArAAcAAQACAAEAAAArAAYAAQACAAEAAAArAAUAAQACAAEAAAArAAQAAQACAAEAAAArAAMAAQACAAEAAAArAAIAAQACAAEAAAAqABcAAQABAAIAAAAqABYAAQABAAEAAAAqABUAAQABAAEAAAAqABQAAQABAAEAAAAqABMAAQABAAEAAAAqABIAAQABAAEAAAAqABEAAQABAAEAAAAqABAAAQABAAEAAAAqAA8AAQABAAEAAAAqAA4AAQABAAEAAAAqAA0AAQABAAEAAAAqAAwAAQABAAEAAAAqAAsAAQABAAEAAAAqAAoAAQABAAEAAAAqAAkAAQABAAEAAAAqAAgAAQABAAEAAAAqAAcAAQABAAEAAAAqAAYAAQABAAEAAAAqAAUAAQABAAEAAAAqAAQAAQABAAEAAAAqAAMAAQABAAEAAAAqAAIAAQABAAEAAAApABcAAQABAAIAAAApABYAAQABAAEAAAApABUAAQABAAEAAAApABQAAQABAAEAAAApABMAAQABAAEAAAApABIAAQABAAEAAAApABEAAQABAAEAAAApABAAAQABAAEAAAApAA8AAQABAAEAAAApAA4AAQABAAEAAAApAA0AAQABAAEAAAApAAwAAQABAAEAAAApAAsAAQABAAEAAAApAAoAAQABAAEAAAApAAkAAQABAAEAAAApAAgAAQABAAEAAAApAAcAAQABAAEAAAApAAYAAQABAAEAAAApAAUAAQABAAEAAAApAAQAAQABAAEAAAApAAMAAQABAAEAAAApAAIAAQABAAEAAAAoABcAAQABAAIAAAAoABYAAQABAAEAAAAoABUAAQABAAEAAAAoABQAAQABAAEAAAAoABMAAQABAAEAAAAoABIAAQABAAEAAAAoABEAAQABAAEAAAAoABAAAQABAAEAAAAoAA8AAQABAAEAAAAoAA4AAQABAAEAAAAoAA0AAQABAAEAAAAoAAwAAQABAAEAAAAoAAsAAQABAAEAAAAoAAoAAQABAAEAAAAoAAkAAQABAAEAAAAoAAgAAQABAAEAAAAoAAcAAQABAAEAAAAoAAYAAQABAAEAAAAoAAUAAQABAAEAAAAoAAQAAQABAAEAAAAoAAMAAQABAAEAAAAoAAIAAQABAAEAAAAnABcAAQABAAIAAAAnABYAAQABAAEAAAAnABUAAQABAAEAAAAnABQAAQABAAEAAAAnABMAAQABAAEAAAAnABIAAQABAAEAAAAnABEAAQABAAEAAAAnABAAAQABAAEAAAAnAA8AAQABAAEAAAAnAA4AAQABAAEAAAAnAA0AAQABAAEAAAAnAAwAAQABAAEAAAAnAAsAAQABAAEAAAAnAAoAAQABAAEAAAAnAAkAAQABAAEAAAAnAAgAAQABAAEAAAAnAAcAAQABAAEAAAAnAAYAAQABAAEAAAAnAAUAAQABAAEAAAAnAAQAAQABAAEAAAAnAAMAAQABAAEAAAAnAAIAAQABAAEAAAAmABcAAQABAAIAAAAmABYAAQABAAEAAAAmABUAAQABAAEAAAAmABQAAQABAAEAAAAmABMAAQABAAEAAAAmABIAAQABAAEAAAAmABEAAQABAAEAAAAmABAAAQABAAEAAAAmAA8AAQABAAEAAAAmAA4AAQABAAEAAAAmAA0AAQABAAEAAAAmAAwAAQABAAEAAAAmAAsAAQABAAEAAAAmAAoAAQABAAEAAAAmAAkAAQABAAEAAAAmAAgAAQABAAEAAAAmAAcAAQABAAEAAAAmAAYAAQABAAEAAAAmAAUAAQABAAEAAAAmAAQAAQABAAEAAAAmAAMAAQABAAEAAAAmAAIAAQABAAEAAAAlABcAAQABAAIAAAAlABYAAQABAAEAAAAlABUAAQABAAEAAAAlABQAAQABAAEAAAAlABMAAQABAAEAAAAlABIAAQABAAEAAAAlABEAAQABAAEAAAAlABAAAQABAAEAAAAlAA8AAQABAAEAAAAlAA4AAQABAAEAAAAlAA0AAQABAAEAAAAlAAwAAQABAAEAAAAlAAsAAQABAAEAAAAlAAoAAQABAAEAAAAlAAkAAQABAAEAAAAlAAgAAQABAAEAAAAlAAcAAQABAAEAAAAlAAYAAQABAAEAAAAlAAUAAQABAAEAAAAlAAQAAQABAAEAAAAlAAMAAQABAAEAAAAlAAIAAQABAAEAAAAkABcAAQABAAIAAAAkABYAAQABAAEAAAAkABUAAQABAAEAAAAkABQAAQABAAEAAAAkABMAAQABAAEAAAAkABIAAQABAAEAAAAkABEAAQABAAEAAAAkABAAAQABAAEAAAAkAA8AAQABAAEAAAAkAA4AAQABAAEAAAAkAA0AAQABAAEAAAAkAAwAAQABAAEAAAAkAAsAAQABAAEAAAAkAAoAAQABAAEAAAAkAAkAAQABAAEAAAAkAAgAAQABAAEAAAAkAAcAAQABAAEAAAAkAAYAAQABAAEAAAAkAAUAAQABAAEAAAAkAAQAAQABAAEAAAAkAAMAAQABAAEAAAAkAAIAAQABAAEAAAAjABcAAQABAAIAAAAjABYAAQABAAEAAAAjABUAAQABAAEAAAAjABQAAQABAAEAAAAjABMAAQABAAEAAAAjABIAAQABAAEAAAAjABEAAQABAAEAAAAjABAAAQABAAEAAAAjAA8AAQABAAEAAAAjAA4AAQABAAEAAAAjAA0AAQABAAEAAAAjAAwAAQABAAEAAAAjAAsAAQABAAEAAAAjAAoAAQABAAEAAAAjAAkAAQABAAEAAAAjAAgAAQABAAEAAAAjAAcAAQABAAEAAAAjAAYAAQABAAEAAAAjAAUAAQABAAEAAAAjAAQAAQABAAEAAAAjAAMAAQABAAEAAAAjAAIAAQABAAEAAAAiABcAAQABAAIAAAAiABYAAQABAAEAAAAiABUAAQABAAEAAAAiABQAAQABAAEAAAAiABMAAQABAAEAAAAiABIAAQABAAEAAAAiABEAAQABAAEAAAAiABAAAQABAAEAAAAiAA8AAQABAAEAAAAiAA4AAQABAAEAAAAiAA0AAQABAAEAAAAiAAwAAQABAAEAAAAiAAsAAQABAAEAAAAiAAoAAQABAAEAAAAiAAkAAQABAAEAAAAiAAgAAQABAAEAAAAiAAcAAQABAAEAAAAiAAYAAQABAAEAAAAiAAUAAQABAAEAAAAiAAQAAQABAAEAAAAiAAMAAQABAAEAAAAiAAIAAQABAAEAAAAhABcAAQABAAIAAAAhABYAAQABAAEAAAAhABUAAQABAAEAAAAhABQAAQABAAEAAAAhABMAAQABAAEAAAAhABIAAQABAAEAAAAhABEAAQABAAEAAAAhABAAAQABAAEAAAAhAA8AAQABAAEAAAAhAA4AAQABAAEAAAAhAA0AAQABAAEAAAAhAAwAAQABAAEAAAAhAAsAAQABAAEAAAAhAAoAAQABAAEAAAAhAAkAAQABAAEAAAAhAAgAAQABAAEAAAAhAAcAAQABAAEAAAAhAAYAAQABAAEAAAAhAAUAAQABAAEAAAAhAAQAAQABAAEAAAAhAAMAAQABAAEAAAAhAAIAAQABAAEAAAAgABcAAQABAAIAAAAgABYAAQABAAEAAAAgABUAAQABAAEAAAAgABQAAQABAAEAAAAgABMAAQABAAEAAAAgABIAAQABAAEAAAAgABEAAQABAAEAAAAgABAAAQABAAEAAAAgAA8AAQABAAEAAAAgAA4AAQABAAEAAAAgAA0AAQABAAEAAAAgAAwAAQABAAEAAAAgAAsAAQABAAEAAAAgAAoAAQABAAEAAAAgAAkAAQABAAEAAAAgAAgAAQABAAEAAAAgAAcAAQABAAEAAAAgAAYAAQABAAEAAAAgAAUAAQABAAEAAAAgAAQAAQABAAEAAAAgAAMAAQABAAEAAAAgAAIAAQABAAEAAAAfABcAAQABAAIAAAAfABYAAQABAAEAAAAfABUAAQABAAEAAAAfABQAAQABAAEAAAAfABMAAQABAAEAAAAfABIAAQABAAEAAAAfABEAAQABAAEAAAAfABAAAQABAAEAAAAfAA8AAQABAAEAAAAfAA4AAQABAAEAAAAfAA0AAQABAAEAAAAfAAwAAQABAAEAAAAfAAsAAQABAAEAAAAfAAoAAQABAAEAAAAfAAkAAQABAAEAAAAfAAgAAQABAAEAAAAfAAcAAQABAAEAAAAfAAYAAQABAAEAAAAfAAUAAQABAAEAAAAfAAQAAQABAAEAAAAfAAMAAQABAAEAAAAfAAIAAQABAAEAAAAeABcAAQABAAIAAAAeABYAAQABAAEAAAAeABUAAQABAAEAAAAeABQAAQABAAEAAAAeABMAAQABAAEAAAAeABIAAQABAAEAAAAeABEAAQABAAEAAAAeABAAAQABAAEAAAAeAA8AAQABAAEAAAAeAA4AAQABAAEAAAAeAA0AAQABAAEAAAAeAAwAAQABAAEAAAAeAAsAAQABAAEAAAAeAAoAAQABAAEAAAAeAAkAAQABAAEAAAAeAAgAAQABAAEAAAAeAAcAAQABAAEAAAAeAAYAAQABAAEAAAAeAAUAAQABAAEAAAAeAAQAAQABAAEAAAAeAAMAAQABAAEAAAAeAAIAAQABAAEAAAAdABcAAQABAAIAAAAdABYAAQABAAEAAAAdABUAAQABAAEAAAAdABQAAQABAAEAAAAdABMAAQABAAEAAAAdABIAAQABAAEAAAAdABEAAQABAAEAAAAdABAAAQABAAEAAAAdAA8AAQABAAEAAAAdAA4AAQABAAEAAAAdAA0AAQABAAEAAAAdAAwAAQABAAEAAAAdAAsAAQABAAEAAAAdAAoAAQABAAEAAAAdAAkAAQABAAEAAAAdAAgAAQABAAEAAAAdAAcAAQABAAEAAAAdAAYAAQABAAEAAAAdAAUAAQABAAEAAAAdAAQAAQABAAEAAAAdAAMAAQABAAEAAAAdAAIAAQABAAEAAAAcABcAAQABAAIAAAAcABYAAQABAAEAAAAcABUAAQABAAEAAAAcABQAAQABAAEAAAAcABMAAQABAAEAAAAcABIAAQABAAEAAAAcABEAAQABAAEAAAAcABAAAQABAAEAAAAcAA8AAQABAAEAAAAcAA4AAQABAAEAAAAcAA0AAQABAAEAAAAcAAwAAQABAAEAAAAcAAsAAQABAAEAAAAcAAoAAQABAAEAAAAcAAkAAQABAAEAAAAcAAgAAQABAAEAAAAcAAcAAQABAAEAAAAcAAYAAQABAAEAAAAcAAUAAQABAAEAAAAcAAQAAQABAAEAAAAcAAMAAQABAAEAAAAcAAIAAQABAAEAAAAbABcAAQABAAIAAAAbABYAAQABAAEAAAAbABUAAQABAAEAAAAbABQAAQABAAEAAAAbABMAAQABAAEAAAAbABIAAQABAAEAAAAbABEAAQABAAEAAAAbABAAAQABAAEAAAAbAA8AAQABAAEAAAAbAA4AAQABAAEAAAAbAA0AAQABAAEAAAAbAAwAAQABAAEAAAAbAAsAAQABAAEAAAAbAAoAAQABAAEAAAAbAAkAAQABAAEAAAAbAAgAAQABAAEAAAAbAAcAAQABAAEAAAAbAAYAAQABAAEAAAAbAAUAAQABAAEAAAAbAAQAAQABAAEAAAAbAAMAAQABAAEAAAAbAAIAAQABAAEAAAAaABcAAQABAAIAAAAaABYAAQABAAEAAAAaABUAAQABAAEAAAAaABQAAQABAAEAAAAaABMAAQABAAEAAAAaABIAAQABAAEAAAAaABEAAQABAAEAAAAaABAAAQABAAEAAAAaAA8AAQABAAEAAAAaAA4AAQABAAEAAAAaAA0AAQABAAEAAAAaAAwAAQABAAEAAAAaAAsAAQABAAEAAAAaAAoAAQABAAEAAAAaAAkAAQABAAEAAAAaAAgAAQABAAEAAAAaAAcAAQABAAEAAAAaAAYAAQABAAEAAAAaAAUAAQABAAEAAAAaAAQAAQABAAEAAAAaAAMAAQABAAEAAAAaAAIAAQABAAEAAAATAAEAAQABAAEAAAATAAAAAQABAAAAAAASAAEAAQABAAEAAAASAAAAAQABAAAAAAARAAEAAQABAAEAAAARAAAAAQABAAAAAAAQAAEAAQABAAEAAAAQAAAAAQABAAAAAAAPAAEAAQABAAEAAAAPAAAAAQABAAAAAAAOAAEAAQABAAEAAAAOAAAAAQABAAAAAAANAAEAAQABAAEAAAANAAAAAQABAAAAAAAMAAEAAQABAAEAAAAMAAAAAQABAAAAAAALAAEAAQABAAEAAAALAAAAAQABAAAAAAAKAAEAAQABAAEAAAAKAAAAAQABAAAAAAAJAAEAAQABAAEAAAAJAAAAAQABAAAAAAAIAAEAAQABAAEAAAAIAAAAAQABAAAAAAAHAAEAAQABAAEAAAAHAAAAAQABAAAAAAAGAAEAAQABAAEAAAAGAAAAAQABAAAAAAAFAAEAAQABAAEAAAAFAAAAAQABAAAAAAAEAAEAAQABAAEAAAAEAAAAAQABAAAAAAADAAEAAQABAAEAAAADAAAAAQABAAAAAAACAAEAAQABAAEAAAACAAAAAQABAAAAAAABAAEAAQABAAEAAAABAAAAAQABAAAAAAAAAAEAAQABAAEAAAAAAAAAAQABAAAAAAD//wEAAQABAAEAAAD//wAAAQABAAAAAAD+/wEAAQAAAAEAAAD+/wAAAQAAAAAAAAArAAEAAQACAAEAAAArAAAAAQACAAAAAAAqAAEAAQABAAEAAAAqAAAAAQABAAAAAAApAAEAAQABAAEAAAApAAAAAQABAAAAAAAoAAEAAQABAAEAAAAoAAAAAQABAAAAAAAnAAEAAQABAAEAAAAnAAAAAQABAAAAAAAmAAEAAQABAAEAAAAmAAAAAQABAAAAAAAlAAEAAQABAAEAAAAlAAAAAQABAAAAAAAkAAEAAQABAAEAAAAkAAAAAQABAAAAAAAjAAEAAQABAAEAAAAjAAAAAQABAAAAAAAiAAEAAQABAAEAAAAiAAAAAQABAAAAAAAhAAEAAQABAAEAAAAhAAAAAQABAAAAAAAgAAEAAQABAAEAAAAgAAAAAQABAAAAAAAfAAEAAQABAAEAAAAfAAAAAQABAAAAAAAeAAEAAQABAAEAAAAeAAAAAQABAAAAAAAdAAEAAQABAAEAAAAdAAAAAQABAAAAAAAcAAEAAQABAAEAAAAcAAAAAQABAAAAAAAbAAEAAQABAAEAAAAbAAAAAQABAAAAAAAaAAEAAQABAAEAAAAaAAAAAQABAAAAAAAZAAEAAQABAAEAAAAZAAAAAQABAAAAAAAYAAEAAQABAAEAAAAYAAAAAQABAAAAAAAXAAEAAQABAAEAAAAXAAAAAQABAAAAAAAWAAEAAQABAAEAAAAWAAAAAQABAAAAAAAVAAEAAQABAAEAAAAVAAAAAQABAAAAAAAUAAEAAQABAAEAAAAUAAAAAQABAAAAAAA=") -tile_set = ExtResource("4_6dpig") - -[node name="Patches" type="TileMapLayer" parent="TileMapLayers" unique_id=1030634759] -tile_map_data = PackedByteArray("AAAmAA0ABQACAAIAAAAmAAwABQACAAEAAAAmAAsABQACAAEAAAAmAAoABQACAAEAAAAmAAkABQACAAAAAAAlAA0ABQABAAIAAAAlAAwABQABAAEAAAAlAAsABQABAAEAAAAlAAoABQABAAEAAAAlAAkABQABAAAAAAAkAA0ABQABAAIAAAAkAAwABQABAAEAAAAkAAsABQABAAEAAAAkAAoABQABAAEAAAAkAAkABQABAAAAAAAjAA0ABQABAAIAAAAjAAwABQABAAEAAAAjAAsABQABAAEAAAAjAAoABQABAAEAAAAjAAkABQABAAAAAAAiAA0ABQAAAAIAAAAiAAwABQAAAAEAAAAiAAsABQAAAAEAAAAiAAoABQAAAAEAAAAiAAkABQAAAAAAAAAdAAkABQACAAIAAAAdAAgABQACAAEAAAAdAAcABQACAAEAAAAdAAYABQACAAEAAAAdAAUABQACAAAAAAAcAAkABQABAAIAAAAcAAgABQABAAEAAAAcAAcABQABAAEAAAAcAAYABQABAAEAAAAcAAUABQABAAAAAAAbAAkABQABAAIAAAAbAAgABQABAAEAAAAbAAcABQABAAEAAAAbAAYABQABAAEAAAAbAAUABQABAAAAAAAaAAkABQABAAIAAAAaAAgABQABAAEAAAAaAAcABQABAAEAAAAaAAYABQABAAEAAAAaAAUABQABAAAAAAAZAAkABQAAAAIAAAAZAAgABQAAAAEAAAAZAAcABQAAAAEAAAAZAAYABQAAAAEAAAAZAAUABQAAAAAAAAASAA0ABQACAAIAAAASAAwABQACAAEAAAASAAsABQACAAEAAAASAAoABQACAAAAAAARAA0ABQABAAIAAAARAAwABQABAAEAAAARAAsABQABAAEAAAARAAoABQABAAAAAAAQAA0ABQABAAIAAAAQAAwABQABAAEAAAAQAAsABQABAAEAAAAQAAoABQABAAAAAAAPAA0ABQAAAAIAAAAPAAwABQAAAAEAAAAPAAsABQAAAAEAAAAPAAoABQAAAAAAAAACAA0ABQACAAIAAAACAAwABQACAAEAAAACAAsABQACAAEAAAACAAoABQACAAEAAAACAAkABQACAAEAAAACAAgABQACAAAAAAABAA0ABQABAAIAAAABAAwABQABAAEAAAABAAsABQABAAEAAAABAAoABQABAAEAAAABAAkABQABAAEAAAABAAgABQABAAAAAAAAAA0ABQABAAIAAAAAAAwABQABAAEAAAAAAAsABQABAAEAAAAAAAoABQABAAEAAAAAAAkABQABAAEAAAAAAAgABQABAAAAAAD//w0ABQABAAIAAAD//wwABQABAAEAAAD//wsABQABAAEAAAD//woABQABAAEAAAD//wkABQABAAEAAAD//wgABQABAAAAAAD+/w0ABQABAAIAAAD+/wwABQABAAEAAAD+/wsABQABAAEAAAD+/woABQABAAEAAAD+/wkABQABAAEAAAD+/wgABQABAAAAAAD9/w0ABQAAAAIAAAD9/wwABQAAAAEAAAD9/wsABQAAAAEAAAD9/woABQAAAAEAAAD9/wkABQAAAAEAAAD9/wgABQAAAAAAAAAYABIABQACAAIAAAAYABEABQACAAEAAAAYABAABQACAAEAAAAYAA8ABQACAAAAAAAXABIABQABAAIAAAAXABEABQABAAEAAAAXABAABQABAAEAAAAXAA8ABQABAAAAAAAWABIABQABAAIAAAAWABEABQABAAEAAAAWABAABQABAAEAAAAWAA8ABQABAAAAAAAVABIABQAAAAIAAAAVABEABQAAAAEAAAAVABAABQAAAAEAAAAVAA8ABQAAAAAAAAAeABUABQACAAIAAAAeABQABQACAAEAAAAeABMABQACAAEAAAAeABIABQACAAAAAAAdABUABQABAAIAAAAdABQABQABAAEAAAAdABMABQABAAEAAAAdABIABQABAAAAAAAcABUABQABAAIAAAAcABQABQABAAEAAAAcABMABQABAAEAAAAcABIABQABAAAAAAAbABUABQAAAAIAAAAbABQABQAAAAEAAAAbABMABQAAAAEAAAAbABIABQAAAAAAAAAmABIABQACAAIAAAAmABEABQACAAEAAAAmABAABQACAAAAAAAlABIABQABAAIAAAAlABEABQABAAEAAAAlABAABQABAAAAAAAkABIABQAAAAIAAAAkABEABQAAAAEAAAAkABAABQAAAAAAAAAOAAYABQACAAIAAAAOAAUABQACAAEAAAAOAAQABQACAAEAAAAOAAMABQACAAEAAAAOAAIABQACAAEAAAAOAAEABQACAAAAAAANAAYABQABAAIAAAANAAUABQABAAEAAAANAAQABQABAAEAAAANAAMABQABAAEAAAANAAIABQABAAEAAAANAAEABQABAAAAAAAMAAYABQABAAIAAAAMAAUABQABAAEAAAAMAAQABQABAAEAAAAMAAMABQABAAEAAAAMAAIABQABAAEAAAAMAAEABQABAAAAAAALAAYABQABAAIAAAALAAUABQABAAEAAAALAAQABQABAAEAAAALAAMABQABAAEAAAALAAIABQABAAEAAAALAAEABQABAAAAAAAKAAYABQABAAIAAAAKAAUABQABAAEAAAAKAAQABQABAAEAAAAKAAMABQABAAEAAAAKAAIABQABAAEAAAAKAAEABQABAAAAAAAJAAYABQAAAAIAAAAJAAUABQAAAAEAAAAJAAQABQAAAAEAAAAJAAMABQAAAAEAAAAJAAIABQAAAAEAAAAJAAEABQAAAAAAAAA=") -tile_set = ExtResource("4_6dpig") - -[node name="Void" type="TileMapLayer" parent="TileMapLayers" unique_id=1166420030] -texture_filter = 1 -material = ExtResource("3_7h0hr") -tile_map_data = PackedByteArray("AAAVAAwADQABAAEAAAAVAAsADQABAAAAAAAUAAwADQABAAEAAAAUAAsADQABAAEAAAATAAwADQABAAEAAAATAAsADQABAAEAAAASAAwADQABAAEAAAASAAsADQABAAEAAAARAAwADQABAAEAAAARAAsADQABAAEAAAAQAAwADQABAAIAAAAQAAsADQABAAEAAAAPAAwADQABAAIAAAAPAAsADQABAAAAAAAOAAwADQABAAIAAAAOAAsADQABAAAAAAANAAwADQABAAEAAAANAAsADQABAAAAAAAMAAwADQABAAEAAAAMAAsADQABAAEAAAALAAwADQABAAEAAAALAAsADQABAAEAAAAKAAwADQABAAEAAAAKAAsADQABAAEAAAAJAAwADQABAAEAAAAJAAsADQABAAEAAAAIAAwADQABAAEAAAAIAAsADQABAAEAAAAHAAwADQABAAEAAAAHAAsADQABAAEAAAAMAAoADQACAAEAAAAMAAkADQACAAEAAAAMAAgADQACAAEAAAAMAAcADQABAAEAAAAMAAYADQABAAEAAAAMAAUADQABAAEAAAAMAAQADQABAAEAAAAMAAMADQABAAEAAAALAAoADQABAAEAAAALAAkADQABAAEAAAALAAgADQABAAEAAAALAAcADQABAAEAAAALAAYADQABAAEAAAALAAUADQABAAEAAAALAAQADQABAAEAAAALAAMADQABAAEAAAAKAAoADQABAAEAAAAKAAkADQABAAEAAAAKAAgADQAAAAEAAAAKAAcADQAAAAEAAAAKAAYADQAAAAEAAAAKAAUADQABAAEAAAAKAAQADQABAAEAAAAKAAMADQABAAEAAAAJAAoADQABAAEAAAAJAAUADQABAAIAAAAJAAQADQABAAEAAAAJAAMADQABAAEAAAAIAAoADQABAAEAAAAIAAUADQABAAIAAAAIAAQADQABAAEAAAAIAAMADQABAAEAAAAHAAUADQABAAIAAAAHAAQADQABAAEAAAAHAAMADQABAAEAAAAGAAUADQABAAIAAAAGAAQADQABAAEAAAAGAAMADQABAAEAAAAWAAYADQABAAIAAAAWAAUADQABAAEAAAAWAAQADQABAAEAAAAWAAMADQABAAEAAAAVAAYADQABAAIAAAAVAAUADQABAAEAAAAVAAQADQABAAEAAAAVAAMADQABAAEAAAAUAAoADQACAAEAAAAUAAkADQACAAEAAAAUAAgADQACAAEAAAAUAAcADQACAAEAAAAUAAYADQABAAEAAAAUAAUADQABAAEAAAAUAAQADQABAAEAAAAUAAMADQABAAEAAAATAAoADQABAAEAAAATAAkADQABAAEAAAATAAgADQABAAEAAAATAAcADQABAAEAAAATAAYADQABAAEAAAATAAUADQABAAEAAAATAAQADQABAAEAAAATAAMADQABAAEAAAASAAoADQABAAEAAAASAAkADQABAAEAAAASAAgADQABAAEAAAASAAcADQABAAEAAAASAAYADQABAAEAAAASAAUADQABAAEAAAASAAQADQABAAEAAAASAAMADQABAAEAAAARAAoADQABAAEAAAARAAkADQABAAEAAAARAAgADQABAAEAAAARAAcADQABAAEAAAARAAYADQABAAEAAAARAAUADQABAAEAAAARAAQADQABAAEAAAARAAMADQABAAEAAAAQAAoADQAAAAEAAAAQAAkADQAAAAEAAAAQAAgADQAAAAEAAAAQAAcADQABAAEAAAAQAAYADQABAAEAAAAQAAUADQABAAEAAAAQAAQADQABAAEAAAAQAAMADQABAAAAAAAWAAwADQABAAEAAAAWAAsADQABAAAAAAAGAAwADQABAAEAAAAPAAcADQABAAIAAAAPAAYADQABAAEAAAAPAAUADQABAAEAAAAPAAQADQABAAEAAAAPAAMADQABAAAAAAAOAAcADQABAAIAAAAOAAYADQABAAEAAAAOAAUADQABAAEAAAAOAAQADQABAAEAAAAOAAMADQABAAAAAAANAAcADQABAAIAAAANAAYADQABAAEAAAANAAUADQABAAEAAAANAAQADQABAAEAAAANAAMADQABAAEAAAAWAAIADQABAAEAAAAWAAEADQABAAEAAAAWAAAADQABAAEAAAAVAAIADQABAAEAAAAVAAEADQABAAEAAAAVAAAADQABAAEAAAAUAAIADQABAAEAAAAUAAEADQABAAEAAAAUAAAADQABAAEAAAATAAIADQABAAEAAAATAAEADQABAAEAAAATAAAADQABAAEAAAASAAIADQABAAEAAAASAAEADQABAAEAAAASAAAADQABAAEAAAARAAIADQAAAAEAAAARAAEADQAAAAEAAAARAAAADQABAAEAAAANAAIADQACAAEAAAANAAEADQACAAEAAAANAAAADQABAAEAAAAMAAIADQABAAEAAAAMAAEADQABAAEAAAAMAAAADQABAAEAAAALAAIADQABAAEAAAALAAEADQABAAEAAAALAAAADQABAAEAAAAKAAIADQABAAEAAAAKAAEADQABAAEAAAAKAAAADQABAAEAAAAJAAIADQABAAEAAAAJAAEADQABAAEAAAAJAAAADQABAAEAAAAIAAIADQABAAEAAAAIAAEADQABAAEAAAAIAAAADQABAAEAAAAHAAIADQABAAEAAAAHAAEADQABAAEAAAAHAAAADQABAAEAAAAGAAIADQABAAEAAAAGAAEADQABAAEAAAAGAAAADQABAAEAAAAFAAwADQABAAEAAAAFAAUADQABAAIAAAAFAAQADQABAAEAAAAFAAMADQABAAEAAAAFAAIADQABAAEAAAAFAAEADQABAAEAAAAFAAAADQABAAEAAAAEAAwADQABAAIAAAAEAAUADQABAAIAAAAEAAQADQABAAEAAAAEAAMADQABAAEAAAAEAAIADQABAAEAAAAEAAEADQABAAEAAAAEAAAADQABAAEAAAADAAwADQABAAIAAAADAAUADQABAAIAAAADAAQADQABAAEAAAADAAMADQABAAEAAAADAAIADQABAAEAAAADAAEADQABAAEAAAADAAAADQABAAEAAAACAAwADQABAAIAAAACAAUADQABAAIAAAACAAQADQABAAEAAAACAAMADQABAAEAAAACAAIADQABAAEAAAACAAEADQABAAEAAAACAAAADQABAAEAAAABAAwADQABAAIAAAABAAsADQABAAEAAAABAAoADQABAAEAAAABAAUADQABAAIAAAABAAQADQABAAEAAAABAAMADQABAAEAAAABAAIADQABAAEAAAABAAEADQABAAEAAAABAAAADQABAAEAAAAAAAwADQABAAEAAAAAAAsADQABAAEAAAAAAAoADQABAAEAAAAAAAUADQABAAIAAAAAAAQADQABAAEAAAAAAAMADQABAAEAAAAAAAIADQABAAEAAAAAAAEADQABAAEAAAAAAAAADQABAAEAAAD//wwADQABAAEAAAD//wsADQABAAEAAAD//woADQABAAEAAAD//wUADQABAAIAAAD//wQADQABAAEAAAD//wMADQABAAEAAAD//wIADQABAAEAAAD//wEADQABAAEAAAD//wAADQABAAEAAAD+/wwADQABAAEAAAD+/wsADQABAAEAAAD+/woADQABAAEAAAD+/wEADQABAAEAAAD+/wAADQABAAEAAAD9/wwADQABAAEAAAD9/wsADQABAAEAAAD9/woADQABAAEAAAD9/wEADQABAAEAAAD9/wAADQABAAEAAAAbAAwADQABAAEAAAAbAAsADQABAAEAAAAbAAYADQABAAEAAAAbAAUADQABAAEAAAAbAAQADQABAAEAAAAbAAMADQABAAEAAAAbAAIADQABAAEAAAAbAAEADQABAAEAAAAbAAAADQABAAEAAAAaAAwADQABAAEAAAAaAAsADQABAAAAAAAaAAYADQABAAIAAAAaAAUADQABAAEAAAAaAAQADQABAAEAAAAaAAMADQABAAEAAAAaAAIADQABAAEAAAAaAAEADQABAAEAAAAaAAAADQABAAEAAAAZAAwADQABAAEAAAAZAAsADQABAAAAAAAZAAYADQABAAIAAAAZAAUADQABAAEAAAAZAAQADQABAAEAAAAZAAMADQABAAEAAAAZAAIADQABAAEAAAAZAAEADQABAAEAAAAZAAAADQABAAEAAAAYAAwADQABAAEAAAAYAAsADQABAAAAAAAYAAYADQABAAIAAAAYAAUADQABAAEAAAAYAAQADQABAAEAAAAYAAMADQABAAEAAAAYAAIADQABAAEAAAAYAAEADQABAAEAAAAYAAAADQABAAEAAAAXAAwADQABAAEAAAAXAAsADQABAAAAAAAXAAYADQABAAIAAAAXAAUADQABAAEAAAAXAAQADQABAAEAAAAXAAMADQABAAEAAAAXAAIADQABAAEAAAAXAAEADQABAAEAAAAXAAAADQABAAEAAAAbAP//DQABAAEAAAAbAP7/DQABAAEAAAAbAP3/DQABAAAAAAAaAP//DQABAAEAAAAaAP7/DQABAAEAAAAaAP3/DQABAAAAAAAZAP//DQABAAEAAAAZAP7/DQABAAEAAAAZAP3/DQABAAAAAAAYAP//DQABAAEAAAAYAP7/DQABAAEAAAAYAP3/DQABAAAAAAAXAP//DQABAAEAAAAXAP7/DQABAAEAAAAXAP3/DQABAAAAAAAWAP//DQABAAEAAAAWAP7/DQABAAEAAAAWAP3/DQABAAAAAAAVAP//DQABAAEAAAAVAP7/DQABAAEAAAAVAP3/DQABAAAAAAAUAP//DQABAAEAAAAUAP7/DQABAAEAAAAUAP3/DQABAAAAAAATAP//DQABAAEAAAATAP7/DQABAAEAAAATAP3/DQABAAAAAAASAP//DQABAAEAAAASAP7/DQABAAEAAAASAP3/DQABAAAAAAARAP//DQABAAEAAAARAP7/DQABAAEAAAARAP3/DQABAAAAAAAQAP//DQABAAEAAAAQAP7/DQABAAEAAAAQAP3/DQABAAAAAAAPAP//DQABAAEAAAAPAP7/DQABAAEAAAAPAP3/DQABAAAAAAAOAP//DQABAAEAAAAOAP7/DQABAAEAAAAOAP3/DQABAAAAAAANAP//DQABAAEAAAANAP7/DQABAAEAAAANAP3/DQABAAAAAAAMAP//DQABAAEAAAAMAP7/DQABAAEAAAAMAP3/DQABAAAAAAALAP//DQABAAEAAAALAP7/DQABAAEAAAALAP3/DQABAAAAAAAKAP//DQABAAEAAAAKAP7/DQABAAEAAAAKAP3/DQABAAAAAAAJAP//DQABAAEAAAAJAP7/DQABAAEAAAAJAP3/DQABAAAAAAAIAP//DQABAAEAAAAIAP7/DQABAAEAAAAIAP3/DQABAAAAAAAHAP//DQABAAEAAAAHAP7/DQABAAEAAAAHAP3/DQABAAAAAAAGAP//DQABAAEAAAAGAP7/DQABAAEAAAAGAP3/DQABAAAAAAAFAP//DQABAAEAAAAFAP7/DQABAAEAAAAFAP3/DQABAAAAAAAEAP//DQABAAEAAAAEAP7/DQABAAEAAAAEAP3/DQABAAAAAAADAP//DQABAAEAAAADAP7/DQABAAEAAAADAP3/DQABAAAAAAACAP//DQABAAEAAAACAP7/DQABAAEAAAACAP3/DQABAAAAAAABAP//DQABAAEAAAABAP7/DQABAAEAAAABAP3/DQABAAAAAAAAAP//DQABAAEAAAAAAP7/DQABAAEAAAAAAP3/DQABAAAAAAD/////DQABAAEAAAD///7/DQABAAEAAAD///3/DQABAAAAAAD+////DQABAAEAAAD+//7/DQABAAEAAAD+//3/DQABAAAAAAD9////DQABAAEAAAD9//7/DQABAAEAAAD9//3/DQABAAAAAAAPABAADQABAAAAAAAOABAADQABAAAAAAANABAADQABAAEAAAANAA8ADQACAAEAAAANAA4ADQACAAEAAAANAA0ADQACAAEAAAAMABAADQABAAEAAAAMAA8ADQABAAEAAAAMAA4ADQABAAEAAAAMAA0ADQABAAEAAAALABAADQABAAEAAAALAA8ADQABAAEAAAALAA4ADQABAAEAAAALAA0ADQABAAEAAAAKABAADQABAAEAAAAbABAADQABAAEAAAAbAA8ADQABAAEAAAAbAA4ADQABAAEAAAAbAA0ADQABAAEAAAAaABAADQABAAEAAAAaAA8ADQABAAEAAAAaAA4ADQABAAEAAAAaAA0ADQABAAEAAAAZABAADQABAAEAAAAZAA8ADQABAAEAAAAZAA4ADQABAAEAAAAZAA0ADQABAAEAAAAYABAADQABAAEAAAAYAA8ADQABAAEAAAAYAA4ADQABAAEAAAAYAA0ADQABAAEAAAAXABAADQABAAEAAAAXAA8ADQABAAEAAAAXAA4ADQABAAEAAAAXAA0ADQABAAEAAAAWABAADQABAAEAAAAWAA8ADQABAAEAAAAWAA4ADQABAAEAAAAWAA0ADQABAAEAAAAVABAADQABAAEAAAAVAA8ADQABAAEAAAAVAA4ADQABAAEAAAAVAA0ADQABAAEAAAAUABAADQABAAEAAAAUAA8ADQABAAEAAAAUAA4ADQABAAEAAAAUAA0ADQABAAEAAAATABAADQABAAEAAAASABAADQABAAEAAAARABAADQABAAEAAAAQABAADQABAAAAAAAYABEADQABAAIAAAAXABEADQABAAIAAAAWABEADQABAAIAAAAVABEADQABAAIAAAAUABEADQABAAIAAAATABEADQABAAIAAAASABEADQABAAIAAAARABEADQABAAIAAAAQABEADQABAAEAAAAPABEADQABAAEAAAAOABEADQABAAEAAAAQABIADQACAAEAAAAPABIADQABAAEAAAAOABIADQABAAEAAAAQABUADQABAAEAAAAPABUADQABAAEAAAAOABUADQABAAEAAAANABUADQABAAEAAAAMABUADQABAAEAAAANABIADQABAAEAAAANABEADQABAAEAAAAMABIADQABAAEAAAAMABEADQABAAEAAAALABIADQABAAEAAAALABEADQABAAEAAAAbABEADQABAAIAAAAaABEADQABAAIAAAAZABEADQABAAIAAAAbABUADQABAAEAAAAaABUADQABAAEAAAAbABYADQABAAEAAAAaABYADQABAAEAAAAZABYADQABAAEAAAAYABYADQABAAEAAAAXABYADQABAAEAAAAWABYADQABAAEAAAAVABYADQABAAEAAAAUABYADQABAAEAAAATABYADQABAAEAAAASABgADQABAAEAAAASABcADQABAAEAAAASABYADQABAAEAAAARABgADQABAAEAAAARABcADQABAAEAAAARABYADQABAAEAAAAQABgADQABAAEAAAAQABcADQABAAEAAAAQABYADQABAAEAAAAPABgADQABAAEAAAAPABcADQABAAEAAAAPABYADQABAAEAAAAOABgADQABAAEAAAAOABcADQABAAEAAAAOABYADQABAAEAAAANABgADQABAAEAAAANABcADQABAAEAAAANABYADQABAAEAAAAMABgADQABAAEAAAAMABcADQABAAEAAAAMABYADQABAAEAAAALABgADQABAAEAAAALABcADQABAAEAAAD//xIADQABAAEAAAD//xEADQABAAEAAAD//xAADQABAAEAAAD//w4ADQABAAEAAAD//w0ADQABAAEAAAD+/xIADQABAAEAAAD+/xEADQABAAEAAAD+/xAADQABAAEAAAD+/w4ADQABAAEAAAD+/w0ADQABAAEAAAD9/xIADQABAAEAAAD9/xEADQABAAEAAAD9/xAADQABAAEAAAD9/w8ADQABAAEAAAD9/w4ADQABAAEAAAD9/w0ADQABAAEAAAASABkADQABAAIAAAARABkADQABAAIAAAAQABkADQABAAIAAAAPABkADQABAAIAAAAOABkADQABAAIAAAANABkADQABAAIAAAAMABkADQABAAIAAAALABkADQABAAIAAAAKABkADQABAAIAAAAKABgADQABAAEAAAAKABcADQABAAEAAAAJABkADQABAAIAAAAJABgADQABAAEAAAAIABkADQABAAIAAAAIABgADQABAAEAAAAHABkADQABAAIAAAAHABgADQABAAEAAAAGABkADQABAAIAAAAGABgADQABAAEAAAAFABkADQABAAIAAAAFABgADQABAAEAAAAEABkADQABAAIAAAAEABgADQABAAEAAAADABkADQABAAIAAAADABgADQABAAEAAAACABkADQABAAIAAAACABgADQABAAEAAAABABkADQABAAIAAAABABgADQABAAEAAAAAABkADQABAAIAAAAAABgADQABAAEAAAD//xkADQABAAIAAAD//xgADQABAAEAAAD//xcADQABAAEAAAD//xYADQABAAEAAAD//xUADQABAAEAAAD+/xkADQABAAIAAAD+/xgADQABAAEAAAD+/xcADQABAAEAAAD+/xYADQABAAEAAAD+/xUADQABAAEAAAD9/xkADQABAAIAAAD9/xgADQABAAEAAAD9/xcADQABAAEAAAD9/xYADQABAAEAAAD9/xUADQABAAEAAAAOABQADQABAAEAAAAOABMADQABAAEAAAANABQADQABAAEAAAANABMADQABAAEAAAAMABQADQABAAEAAAAMABMADQABAAEAAAALABQADQAAAAEAAAALABMADQAAAAEAAAD//xQADQABAAEAAAD//xMADQABAAEAAAD+/xQADQABAAEAAAD+/xMADQABAAEAAAD9/xQADQABAAEAAAD9/xMADQABAAEAAAAKABIADQABAAIAAAAKABEADQABAAEAAAAKAA8ADQABAAEAAAAKAA4ADQABAAEAAAAKAA0ADQABAAEAAAAJABAADQABAAEAAAAJAA8ADQABAAEAAAAJAA4ADQABAAEAAAAJAA0ADQABAAEAAAAIABAADQABAAEAAAAIAA4ADQABAAEAAAAIAA0ADQABAAEAAAAHABAADQABAAEAAAAHAA4ADQABAAEAAAAHAA0ADQABAAEAAAAGAA4ADQABAAEAAAAGAA0ADQABAAEAAAAFAA4ADQAAAAEAAAAFAA0ADQAAAAEAAAAAAA4ADQACAAEAAAAAAA0ADQACAAEAAAAIAA8ADQABAAEAAAAHAA8ADQABAAEAAAAGAA8ADQABAAEAAAAFAA8ADQAAAAEAAAAAAA8ADQACAAEAAAD//w8ADQABAAEAAAD+/w8ADQABAAEAAAACABcADQABAAEAAAABABcADQABAAEAAAAAABcADQABAAEAAAAXABcADQABAAEAAAAXABgADQABAAEAAAAXABkADQABAAIAAAAYABcADQABAAEAAAAYABgADQABAAEAAAAYABkADQABAAIAAAAZABcADQABAAEAAAAZABgADQABAAEAAAAZABkADQABAAIAAAAaABcADQABAAEAAAAaABgADQABAAEAAAAaABkADQABAAIAAAAbABkADQABAAIAAAAbABgADQABAAEAAAAbABcADQABAAEAAAAHAAoADQABAAEAAAD8/xYADQAAAAEAAAD8/xUADQAAAAEAAAD8/xQADQAAAAEAAAD8/xMADQAAAAEAAAD8/xIADQAAAAEAAAD8/xEADQAAAAEAAAD8/xAADQAAAAEAAAD8/w8ADQAAAAEAAAD8/w4ADQAAAAEAAAD8/w0ADQAAAAEAAAD8/wwADQAAAAEAAAD8/wsADQAAAAEAAAD8/woADQAAAAEAAAD8/wEADQAAAAEAAAD8/wAADQAAAAEAAAD8////DQAAAAEAAAD8//7/DQAAAAEAAAD8//3/DQAAAAAAAAD8/xkADQAAAAIAAAD8/xgADQAAAAEAAAD8/xcADQAAAAEAAAAJABcADQABAAEAAAAIABcADQABAAEAAAAHABcADQABAAEAAAAGABcADQABAAEAAAAGABYADQABAAEAAAAFABcADQABAAEAAAAFABYADQABAAEAAAAEABcADQABAAEAAAAEABYADQABAAEAAAADABcADQABAAEAAAADABYADQABAAEAAAACABYADQABAAEAAAABABYADQABAAEAAAAAABYADQABAAEAAAAGABAADQABAAEAAAAFABAADQABAAEAAAAFABUADQABAAEAAAAFABQADQABAAEAAAAFABMADQABAAEAAAAFABIADQABAAEAAAAFABEADQABAAEAAAAEABUADQABAAEAAAADABUADQABAAEAAAACABUADQABAAEAAAABABUADQABAAEAAAAAABUADQABAAEAAAAEABQADQABAAEAAAAEABMADQABAAEAAAAEABIADQABAAEAAAAEABEADQABAAEAAAAEABAADQABAAAAAAADABQADQABAAEAAAACABQADQABAAEAAAABABQADQABAAEAAAAAABQADQABAAEAAAAJABIADQABAAIAAAAJABEADQABAAEAAAAIABIADQABAAIAAAAIABEADQABAAEAAAAHABIADQABAAIAAAAHABEADQABAAEAAAAGABUADQABAAEAAAAGABQADQACAAEAAAAGABMADQACAAEAAAAGABIADQABAAEAAAAGABEADQABAAEAAAADABMADQABAAEAAAADABIADQABAAEAAAADABEADQABAAEAAAADABAADQABAAAAAAACABMADQABAAEAAAACABIADQABAAEAAAACABEADQABAAEAAAACABAADQABAAAAAAABABMADQABAAEAAAABABIADQABAAEAAAABABEADQABAAEAAAABABAADQABAAAAAAAAABMADQABAAEAAAAAABIADQABAAEAAAAAABEADQABAAEAAAAAABAADQABAAEAAAATAA8ADQABAAEAAAATAA4ADQABAAEAAAATAA0ADQABAAEAAAASAA8ADQABAAEAAAASAA4ADQABAAEAAAASAA0ADQABAAEAAAARAA8ADQAAAAEAAAARAA4ADQAAAAEAAAARAA0ADQAAAAEAAAAQABQADQABAAEAAAAQABMADQACAAEAAAAPABQADQABAAEAAAAPABMADQABAAEAAAAZABUADQABAAEAAAAZABQADQABAAAAAAAYABUADQABAAEAAAAYABQADQABAAAAAAAXABUADQABAAEAAAAXABQADQABAAAAAAAWABUADQABAAEAAAAWABQADQABAAAAAAAVABUADQABAAEAAAAVABQADQABAAAAAAAUABUADQABAAEAAAAUABQADQABAAAAAAATABUADQABAAEAAAATABQADQABAAAAAAASABUADQABAAEAAAASABQADQABAAAAAAARABUADQABAAEAAAARABQADQABAAAAAAD+/wUADQABAAIAAAD+/wQADQABAAEAAAD+/wMADQABAAEAAAD+/wIADQABAAEAAAD9/wkADQABAAEAAAD9/wgADQACAAEAAAD9/wcADQACAAEAAAD9/wYADQACAAEAAAD9/wUADQABAAEAAAD9/wQADQABAAEAAAD9/wMADQABAAEAAAD9/wIADQABAAEAAAD8/wkADQAAAAEAAAD8/wgADQAAAAEAAAD8/wcADQAAAAEAAAD8/wYADQAAAAEAAAD8/wUADQAAAAEAAAD8/wQADQAAAAEAAAD8/wMADQAAAAEAAAD8/wIADQAAAAEAAAAWABkADQABAAIAAAAWABgADQABAAEAAAAWABcADQABAAEAAAAVABkADQABAAIAAAAVABgADQABAAEAAAAVABcADQABAAEAAAAUABkADQABAAIAAAAUABgADQABAAEAAAAUABcADQABAAEAAAATABkADQABAAIAAAATABgADQABAAEAAAATABcADQABAAEAAAAbABQADQABAAAAAAAaABQADQABAAAAAAALABYADQABAAEAAAALABUADQABAAEAAAAKABYADQABAAEAAAAKABUADQABAAAAAAAJABYADQABAAEAAAAJABUADQABAAAAAAAIABYADQABAAEAAAAIABUADQABAAAAAAAHABYADQABAAEAAAAHABUADQABAAAAAAACAAoADQABAAEAAAADAAoADQABAAEAAAAEAAoADQABAAEAAAAFAAoADQABAAEAAAAGAAoADQABAAEAAAAGAAsADQABAAEAAAAFAAsADQABAAEAAAAEAAsADQABAAEAAAADAAsADQABAAEAAAACAAsADQABAAEAAAAtABkADQACAAIAAAAtABgADQACAAEAAAAtABcADQACAAEAAAAtABYADQACAAEAAAAtABUADQACAAEAAAAtABQADQACAAEAAAAtABMADQACAAEAAAAtABIADQACAAEAAAAtABEADQACAAEAAAAtABAADQACAAEAAAAtAA8ADQACAAEAAAAtAA4ADQACAAEAAAAtAA0ADQACAAEAAAAtAAwADQACAAEAAAAtAAsADQACAAEAAAAtAAoADQACAAEAAAAtAAkADQACAAEAAAAtAAgADQACAAEAAAAtAAcADQACAAEAAAAtAAYADQACAAEAAAAtAAUADQACAAEAAAAtAAQADQACAAEAAAAtAAMADQACAAEAAAAtAAIADQACAAEAAAAtAAEADQACAAEAAAAtAAAADQACAAEAAAAtAP//DQACAAEAAAAtAP7/DQACAAEAAAAtAP3/DQACAAAAAAAsABkADQABAAIAAAAsABgADQABAAEAAAAsABcADQABAAEAAAAsABYADQABAAEAAAAsABUADQABAAEAAAAsABQADQABAAEAAAAsABMADQAAAAEAAAAsABIADQAAAAEAAAAsABEADQABAAEAAAAsABAADQABAAEAAAAsAA8ADQABAAEAAAAsAA4ADQABAAEAAAAsAA0ADQABAAEAAAAsAAwADQABAAEAAAAsAAsADQABAAEAAAAsAAoADQAAAAEAAAAsAAkADQAAAAEAAAAsAAgADQAAAAEAAAAsAAcADQAAAAEAAAAsAAYADQABAAEAAAAsAAUADQABAAEAAAAsAAQADQABAAEAAAAsAAMADQABAAEAAAAsAAIADQABAAEAAAAsAAEADQABAAEAAAAsAAAADQABAAEAAAAsAP//DQABAAEAAAAsAP7/DQABAAEAAAAsAP3/DQABAAAAAAArABkADQABAAIAAAArABgADQABAAEAAAArABcADQABAAEAAAArABYADQABAAEAAAArABUADQABAAEAAAArABQADQABAAAAAAArABEADQABAAIAAAArABAADQABAAEAAAArAA8ADQABAAEAAAArAA4ADQABAAEAAAArAA0ADQABAAEAAAArAAwADQABAAEAAAArAAsADQABAAAAAAArAAYADQABAAIAAAArAAUADQABAAEAAAArAAQADQABAAEAAAArAAMADQABAAEAAAArAAIADQABAAEAAAArAAEADQABAAEAAAArAAAADQABAAEAAAArAP//DQABAAEAAAArAP7/DQABAAEAAAArAP3/DQABAAAAAAAqABkADQABAAIAAAAqABgADQABAAEAAAAqABcADQABAAEAAAAqABYADQABAAEAAAAqABUADQABAAEAAAAqABQADQABAAAAAAAqABEADQABAAIAAAAqABAADQABAAEAAAAqAA8ADQABAAEAAAAqAA4ADQABAAEAAAAqAA0ADQABAAEAAAAqAAwADQABAAEAAAAqAAsADQABAAAAAAAqAAYADQABAAIAAAAqAAUADQABAAEAAAAqAAQADQABAAEAAAAqAAMADQABAAEAAAAqAAIADQABAAEAAAAqAAEADQABAAEAAAAqAAAADQABAAEAAAAqAP//DQABAAEAAAAqAP7/DQABAAEAAAAqAP3/DQABAAAAAAApABkADQABAAIAAAApABgADQABAAEAAAApABcADQABAAEAAAApABYADQABAAEAAAApABUADQABAAEAAAApABQADQABAAAAAAApABEADQABAAIAAAApABAADQABAAEAAAApAA8ADQABAAEAAAApAA4ADQABAAEAAAApAA0ADQABAAEAAAApAAwADQABAAEAAAApAAsADQABAAAAAAApAAYADQABAAIAAAApAAUADQABAAEAAAApAAQADQABAAEAAAApAAMADQABAAEAAAApAAIADQABAAEAAAApAAEADQABAAEAAAApAAAADQABAAEAAAApAP//DQABAAEAAAApAP7/DQABAAEAAAApAP3/DQABAAAAAAAoABkADQABAAIAAAAoABgADQABAAEAAAAoABcADQABAAEAAAAoABYADQABAAEAAAAoABUADQABAAEAAAAoABQADQABAAAAAAAoABEADQABAAIAAAAoABAADQABAAEAAAAoAA8ADQABAAEAAAAoAA4ADQABAAEAAAAoAA0ADQABAAEAAAAoAAwADQABAAEAAAAoAAsADQABAAAAAAAoAAYADQABAAIAAAAoAAUADQABAAEAAAAoAAQADQABAAEAAAAoAAMADQABAAEAAAAoAAIADQABAAEAAAAoAAEADQABAAEAAAAoAAAADQABAAEAAAAoAP//DQABAAEAAAAoAP7/DQABAAEAAAAoAP3/DQABAAAAAAAnABkADQABAAIAAAAnABgADQABAAEAAAAnABcADQABAAEAAAAnABYADQABAAEAAAAnABUADQABAAEAAAAnABQADQABAAAAAAAnABEADQABAAIAAAAnABAADQABAAEAAAAnAA8ADQABAAEAAAAnAA4ADQABAAEAAAAnAA0ADQABAAEAAAAnAAwADQABAAEAAAAnAAsADQABAAAAAAAnAAYADQABAAIAAAAnAAUADQABAAEAAAAnAAQADQABAAEAAAAnAAMADQABAAEAAAAnAAIADQABAAEAAAAnAAEADQABAAEAAAAnAAAADQABAAEAAAAnAP//DQABAAEAAAAnAP7/DQABAAEAAAAnAP3/DQABAAAAAAAmABkADQABAAIAAAAmABgADQABAAEAAAAmABcADQABAAEAAAAmABYADQABAAEAAAAmABUADQABAAEAAAAmABQADQABAAAAAAAmABEADQABAAIAAAAmABAADQABAAEAAAAmAA8ADQABAAEAAAAmAA4ADQABAAEAAAAmAA0ADQABAAEAAAAmAAwADQABAAEAAAAmAAsADQABAAAAAAAmAAYADQABAAIAAAAmAAUADQABAAEAAAAmAAQADQABAAEAAAAmAAMADQABAAEAAAAmAAIADQABAAEAAAAmAAEADQABAAEAAAAmAAAADQABAAEAAAAmAP//DQABAAEAAAAmAP7/DQABAAEAAAAmAP3/DQABAAAAAAAlABkADQABAAIAAAAlABgADQABAAEAAAAlABcADQABAAEAAAAlABYADQABAAEAAAAlABUADQABAAEAAAAlABQADQABAAAAAAAlABEADQABAAIAAAAlABAADQABAAEAAAAlAA8ADQABAAEAAAAlAA4ADQABAAEAAAAlAA0ADQABAAEAAAAlAAwADQABAAEAAAAlAAsADQABAAEAAAAlAAYADQABAAEAAAAlAAUADQABAAEAAAAlAAQADQABAAEAAAAlAAMADQABAAEAAAAlAAIADQABAAEAAAAlAAEADQABAAEAAAAlAAAADQABAAEAAAAlAP//DQABAAEAAAAlAP7/DQABAAEAAAAlAP3/DQABAAAAAAAkABkADQABAAIAAAAkABgADQABAAEAAAAkABcADQABAAEAAAAkABYADQABAAEAAAAkABUADQABAAEAAAAkABQADQABAAAAAAAkABEADQABAAIAAAAkABAADQABAAEAAAAkAA8ADQABAAEAAAAkAA4ADQABAAEAAAAkAA0ADQABAAEAAAAkAAwADQABAAEAAAAkAAsADQABAAEAAAAkAAYADQABAAIAAAAkAAUADQABAAEAAAAkAAQADQABAAEAAAAkAAMADQABAAEAAAAkAAIADQABAAEAAAAkAAEADQABAAEAAAAkAAAADQABAAEAAAAkAP//DQABAAEAAAAkAP7/DQABAAEAAAAkAP3/DQABAAAAAAAjABkADQABAAIAAAAjABgADQABAAEAAAAjABcADQABAAEAAAAjABYADQABAAEAAAAjABUADQABAAEAAAAjABQADQABAAAAAAAjABEADQABAAIAAAAjABAADQABAAEAAAAjAA8ADQABAAEAAAAjAA4ADQAAAAEAAAAjAA0ADQAAAAEAAAAjAAwADQABAAEAAAAjAAsADQABAAEAAAAjAAYADQABAAEAAAAjAAUADQABAAEAAAAjAAQADQABAAEAAAAjAAMADQABAAEAAAAjAAIADQABAAEAAAAjAAEADQABAAEAAAAjAAAADQABAAEAAAAjAP//DQABAAEAAAAjAP7/DQABAAEAAAAjAP3/DQABAAAAAAAiABkADQABAAIAAAAiABgADQABAAEAAAAiABcADQABAAEAAAAiABYADQABAAEAAAAiABUADQABAAEAAAAiABQADQABAAAAAAAiABEADQABAAIAAAAiABAADQABAAEAAAAiAA8ADQABAAAAAAAiAAwADQABAAIAAAAiAAsADQABAAEAAAAiAAYADQABAAEAAAAiAAUADQABAAEAAAAiAAQADQABAAEAAAAiAAMADQABAAEAAAAiAAIADQABAAEAAAAiAAEADQABAAEAAAAiAAAADQABAAEAAAAiAP//DQABAAEAAAAiAP7/DQABAAEAAAAiAP3/DQABAAAAAAAhABkADQABAAIAAAAhABgADQABAAEAAAAhABcADQABAAEAAAAhABYADQABAAEAAAAhABUADQABAAEAAAAhABQADQABAAAAAAAhABEADQABAAIAAAAhABAADQABAAEAAAAhAA8ADQABAAAAAAAhAAwADQABAAIAAAAhAAsADQABAAEAAAAhAAYADQABAAEAAAAhAAUADQABAAEAAAAhAAQADQABAAEAAAAhAAMADQABAAEAAAAhAAIADQABAAEAAAAhAAEADQABAAEAAAAhAAAADQABAAEAAAAhAP//DQABAAEAAAAhAP7/DQABAAEAAAAhAP3/DQABAAAAAAAgABkADQABAAIAAAAgABgADQABAAEAAAAgABcADQABAAEAAAAgABYADQABAAEAAAAgABUADQABAAEAAAAgABQADQABAAAAAAAgABEADQABAAIAAAAgABAADQABAAEAAAAgAA8ADQABAAAAAAAgAAwADQABAAIAAAAgAAsADQABAAEAAAAgAAYADQABAAEAAAAgAAUADQABAAEAAAAgAAQADQABAAEAAAAgAAMADQABAAEAAAAgAAIADQABAAEAAAAgAAEADQABAAEAAAAgAAAADQABAAEAAAAgAP//DQABAAEAAAAgAP7/DQABAAEAAAAgAP3/DQABAAAAAAAfABkADQABAAIAAAAfABgADQABAAEAAAAfABcADQABAAEAAAAfABYADQABAAEAAAAfABUADQABAAEAAAAfABQADQABAAAAAAAfABEADQABAAIAAAAfABAADQABAAEAAAAfAA8ADQABAAEAAAAfAA4ADQACAAEAAAAfAA0ADQACAAEAAAAfAAwADQABAAEAAAAfAAsADQABAAEAAAAfAAYADQABAAIAAAAfAAUADQABAAEAAAAfAAQADQABAAEAAAAfAAMADQABAAEAAAAfAAIADQABAAEAAAAfAAEADQABAAEAAAAfAAAADQABAAEAAAAfAP//DQABAAEAAAAfAP7/DQABAAEAAAAfAP3/DQABAAAAAAAeABkADQABAAIAAAAeABgADQABAAEAAAAeABcADQABAAEAAAAeABYADQABAAEAAAAeABUADQABAAEAAAAeABQADQABAAAAAAAeABEADQABAAIAAAAeABAADQABAAEAAAAeAA8ADQABAAEAAAAeAA4ADQABAAEAAAAeAA0ADQABAAEAAAAeAAwADQABAAEAAAAeAAsADQABAAEAAAAeAAYADQABAAEAAAAeAAUADQABAAEAAAAeAAQADQABAAEAAAAeAAMADQABAAEAAAAeAAIADQABAAEAAAAeAAEADQABAAEAAAAeAAAADQABAAEAAAAeAP//DQABAAEAAAAeAP7/DQABAAEAAAAeAP3/DQABAAAAAAAdABkADQABAAIAAAAdABgADQABAAEAAAAdABcADQABAAEAAAAdABYADQABAAEAAAAdABUADQABAAEAAAAdABQADQABAAAAAAAdABEADQABAAIAAAAdABAADQABAAEAAAAdAA8ADQABAAEAAAAdAA4ADQABAAEAAAAdAA0ADQABAAEAAAAdAAwADQABAAEAAAAdAAsADQABAAEAAAAdAAYADQABAAEAAAAdAAUADQABAAEAAAAdAAQADQABAAEAAAAdAAMADQABAAEAAAAdAAIADQABAAEAAAAdAAEADQABAAEAAAAdAAAADQABAAEAAAAdAP//DQABAAEAAAAdAP7/DQABAAEAAAAdAP3/DQABAAAAAAAcABkADQABAAIAAAAcABgADQABAAEAAAAcABcADQABAAEAAAAcABYADQABAAEAAAAcABUADQABAAEAAAAcABQADQABAAAAAAAcABEADQABAAIAAAAcABAADQABAAEAAAAcAA8ADQABAAEAAAAcAA4ADQABAAEAAAAcAA0ADQABAAEAAAAcAAwADQABAAEAAAAcAAsADQABAAAAAAAcAAYADQABAAEAAAAcAAUADQABAAEAAAAcAAQADQABAAEAAAAcAAMADQABAAEAAAAcAAIADQABAAEAAAAcAAEADQABAAEAAAAcAAAADQABAAEAAAAcAP//DQABAAEAAAAcAP7/DQABAAEAAAAcAP3/DQABAAAAAAAhAAgADQACAAEAAAAgAAgADQABAAEAAAAeAAgADQABAAEAAAAeAAcADQACAAEAAAAiAAoADQABAAEAAAAiAAkADQABAAAAAAAhAAoADQABAAEAAAAfAAkADQABAAEAAAAgAAkADQABAAEAAAAdAAcADQABAAEAAAAcAAcADQABAAEAAAAdAAgADQABAAIAAAAbAAcADQAAAAIAAAAjAAkADQACAAEAAAAlAAoADQACAAAAAAAkAAoADQABAAAAAAAQAAAADQABAAIAAAAPAAAADQABAAIAAAAOAAAADQABAAIAAAAJAAkADQABAAAAAAAIAAkADQABAAAAAAAHAAkADQABAAAAAAAGAAkADQABAAAAAAAFAAkADQABAAAAAAAEAAkADQABAAAAAAADAAkADQABAAAAAAACAAkADQABAAAAAAABAAkADQABAAAAAAAAAAkADQABAAAAAAD//wkADQABAAAAAAD+/wkADQABAAAAAAAdAAoADQAAAAAAAAAeAAoADQABAAEAAAAfAAoADQABAAEAAAAjAAcADQACAAEAAAAiAAcADQABAAIAAAAhAAcADQABAAEAAAAeAAkADQAAAAEAAAAgAAcADQAAAAEAAAAfAAgADQABAAAAAAAjAAgADQAAAAEAAAAcAAkADQADAAIAAAAcAAgADQAAAAEAAAAbAAoADQADAAAAAAAgAAoADQABAAEAAAAkAAgADQACAAMAAAAjAAoADQABAAEAAAAhAAkADQABAAEAAAAlAAcADQADAAIAAAA=") -tile_set = ExtResource("6_hf4li") - -[node name="OnTheGround" type="Node2D" parent="." unique_id=1474242775] -y_sort_enabled = true - -[node name="Player" parent="OnTheGround" unique_id=17916625 instance=ExtResource("4_j6qjo")] -unique_name_in_owner = true -position = Vector2(2691, 545) -scale = Vector2(1.03448, 1) -player_name = "Storyweaver" -mode = 2 -sprite_frames = ExtResource("5_1dsdq") - -[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=937408116] -zoom = Vector2(0.8, 0.8) -limit_left = 0 -limit_top = 0 -limit_right = 2752 -limit_bottom = 1408 -position_smoothing_enabled = true -editor_draw_limits = true - -[node name="Pins" type="Node2D" parent="OnTheGround" unique_id=2017415653] - -[node name="HookablePin" parent="OnTheGround/Pins" unique_id=280130268 instance=ExtResource("6_rci8f")] -position = Vector2(975, 854) - -[node name="HookablePin2" parent="OnTheGround/Pins" unique_id=1822742228 instance=ExtResource("6_rci8f")] -position = Vector2(1233, 1192) - -[node name="HookablePin3" parent="OnTheGround/Pins" unique_id=828189424 instance=ExtResource("6_rci8f")] -position = Vector2(1358, 465) - -[node name="HookablePin8" parent="OnTheGround/Pins" unique_id=767438605 instance=ExtResource("6_rci8f")] -position = Vector2(604, 570) - -[node name="HookablePin9" parent="OnTheGround/Pins" unique_id=790684575 instance=ExtResource("6_rci8f")] -position = Vector2(915, 162) - -[node name="HookablePin4" parent="OnTheGround/Pins" unique_id=896230133 instance=ExtResource("6_rci8f")] -position = Vector2(682, 1259) - -[node name="HookablePin5" parent="OnTheGround/Pins" unique_id=271084533 instance=ExtResource("6_rci8f")] -position = Vector2(228, 1014) - -[node name="HookablePin6" parent="OnTheGround/Pins" unique_id=1567358712 instance=ExtResource("6_rci8f")] -position = Vector2(2080, 855) - -[node name="HookablePin7" parent="OnTheGround/Pins" unique_id=2014763623 instance=ExtResource("6_rci8f")] -position = Vector2(1879, 1164) - -[node name="HookableButtons" type="Node2D" parent="OnTheGround" unique_id=1347592401] -position = Vector2(1152, 412) - -[node name="HookableButtonItem" parent="OnTheGround/HookableButtons" unique_id=691248248 instance=ExtResource("7_hf4li")] -position = Vector2(-40, -2) - -[node name="HookableButtonItem2" parent="OnTheGround/HookableButtons" unique_id=578967293 instance=ExtResource("7_hf4li")] -position = Vector2(-11, 33) - -[node name="HookableButtonItem3" parent="OnTheGround/HookableButtons" unique_id=858090149 instance=ExtResource("7_hf4li")] -position = Vector2(4, -12) - -[node name="HookableButtonItem4" parent="OnTheGround/HookableButtons" unique_id=531158157 instance=ExtResource("7_hf4li")] -position = Vector2(-54, 38) - -[node name="HookableButtonItem5" parent="OnTheGround/HookableButtons" unique_id=520502215 instance=ExtResource("7_hf4li")] -position = Vector2(15, 176) - -[node name="HookableButtonItem6" parent="OnTheGround/HookableButtons" unique_id=1350321887 instance=ExtResource("7_hf4li")] -position = Vector2(59, 202) - -[node name="HookableButtonItem7" parent="OnTheGround/HookableButtons" unique_id=327609048 instance=ExtResource("7_hf4li")] -position = Vector2(-28, 203) - -[node name="HookableButtonItem8" parent="OnTheGround/HookableButtons" unique_id=435383774 instance=ExtResource("7_hf4li")] -position = Vector2(16, 226) - -[node name="HookableButtonItem9" parent="OnTheGround/HookableButtons" unique_id=943035584 instance=ExtResource("7_hf4li")] -position = Vector2(-417, 178) - -[node name="HookableButtonItem10" parent="OnTheGround/HookableButtons" unique_id=1231301122 instance=ExtResource("7_hf4li")] -position = Vector2(-458, 201) - -[node name="HookableButtonItem11" parent="OnTheGround/HookableButtons" unique_id=1346802263 instance=ExtResource("7_hf4li")] -position = Vector2(-376, 201) - -[node name="HookableButtonItem12" parent="OnTheGround/HookableButtons" unique_id=26892317 instance=ExtResource("7_hf4li")] -position = Vector2(-417, 227) - -[node name="CollectibleItem" parent="OnTheGround" unique_id=1134303128 instance=ExtResource("8_nt6an")] -position = Vector2(1434, 520) -next_scene = "uid://ce7nk8qmi64d2" -item = SubResource("Resource_kr8u1") - -[node name="Sign" parent="OnTheGround" unique_id=674762504 instance=ExtResource("10_qkedd")] -position = Vector2(2552, 1168) -scale = Vector2(1.03448, 1) -direction = 1 -text = "Go!" - -[node name="Bushes" type="Node2D" parent="OnTheGround" unique_id=1550713540] -y_sort_enabled = true - -[node name="Bush" parent="OnTheGround/Bushes" unique_id=1345073233 instance=ExtResource("14_hf4li")] -position = Vector2(1662, 1275) -sprite_frames = ExtResource("15_nt6an") - -[node name="Bush2" parent="OnTheGround/Bushes" unique_id=588076804 instance=ExtResource("14_hf4li")] -position = Vector2(1633, 1264) -sprite_frames = ExtResource("15_nt6an") - -[node name="Bush3" parent="OnTheGround/Bushes" unique_id=1005046693 instance=ExtResource("14_hf4li")] -position = Vector2(1731, 1267) - -[node name="Bush4" parent="OnTheGround/Bushes" unique_id=1242422762 instance=ExtResource("14_hf4li")] -position = Vector2(2228, 885) -sprite_frames = ExtResource("15_nt6an") - -[node name="Bush5" parent="OnTheGround/Bushes" unique_id=788773308 instance=ExtResource("14_hf4li")] -position = Vector2(2201, 1169) -sprite_frames = ExtResource("15_nt6an") - -[node name="Bush6" parent="OnTheGround/Bushes" unique_id=120018216 instance=ExtResource("14_hf4li")] -position = Vector2(2162, 1153) - -[node name="Bush7" parent="OnTheGround/Bushes" unique_id=796190595 instance=ExtResource("14_hf4li")] -position = Vector2(1513, 708) -sprite_frames = ExtResource("15_nt6an") - -[node name="Bush8" parent="OnTheGround/Bushes" unique_id=359169366 instance=ExtResource("14_hf4li")] -position = Vector2(1475, 689) -sprite_frames = ExtResource("15_nt6an") - -[node name="Bush9" parent="OnTheGround/Bushes" unique_id=1878620482 instance=ExtResource("14_hf4li")] -position = Vector2(1562, 666) - -[node name="Bush10" parent="OnTheGround/Bushes" unique_id=493373271 instance=ExtResource("14_hf4li")] -position = Vector2(326, 431) -sprite_frames = ExtResource("15_nt6an") - -[node name="Bush11" parent="OnTheGround/Bushes" unique_id=1748034569 instance=ExtResource("14_hf4li")] -position = Vector2(284, 467) -sprite_frames = ExtResource("15_nt6an") - -[node name="Bush12" parent="OnTheGround/Bushes" unique_id=2003330087 instance=ExtResource("14_hf4li")] -position = Vector2(374, 416) - -[node name="Bush13" parent="OnTheGround/Bushes" unique_id=1151810530 instance=ExtResource("14_hf4li")] -position = Vector2(1540, 462) -sprite_frames = ExtResource("15_nt6an") - -[node name="Bush14" parent="OnTheGround/Bushes" unique_id=497586474 instance=ExtResource("14_hf4li")] -position = Vector2(261, 440) - -[node name="SwitchModeArea" type="Area2D" parent="." unique_id=523599684] -position = Vector2(1434, 532) -collision_layer = 0 -script = ExtResource("11_ygswq") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="SwitchModeArea" unique_id=553066267] -position = Vector2(-1, 0) -shape = SubResource("RectangleShape2D_b0r3o") - -[node name="SpawnPointEnter" type="Marker2D" parent="." unique_id=1163506455 groups=["spawn_point"]] -position = Vector2(2691, 545) -script = ExtResource("14_j6qjo") -look_at_side_on_spawn = -1 -metadata/_custom_type_script = "uid://0enyu5v4ra34" - -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1646643121] - -[node name="HUD" parent="." unique_id=919464251 instance=ExtResource("12_wrdap")] - -[connection signal="body_entered" from="SwitchModeArea" to="SwitchModeArea" method="_on_body_entered"] -[connection signal="body_exited" from="SwitchModeArea" to="SwitchModeArea" method="_on_body_exited"] diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_needles.tscn b/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_needles.tscn index 3ef70834cc..f4c9ae457f 100644 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_needles.tscn +++ b/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_needles.tscn @@ -2,8 +2,8 @@ [ext_resource type="Script" uid="uid://3eynuk3w4m4a" path="res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_needles.gd" id="1_omyxq"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="2_8ufyd"] +[ext_resource type="AudioStream" uid="uid://bwgtbylflkup2" path="res://scenes/quests/lore_quests/quest_002/components/void_music.tres" id="3_374sg"] [ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="3_mg68y"] -[ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="3_w164g"] [ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="4_7s6jr"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="4_m6xvq"] [ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="5_7iwrw"] @@ -19,13 +19,11 @@ [ext_resource type="PackedScene" uid="uid://cvtty6np3dcv4" path="res://scenes/game_elements/props/all_hooked/all_hooked.tscn" id="10_e0lfj"] [ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="10_qsqmk"] [ext_resource type="PackedScene" uid="uid://evb46lm6ssu2" path="res://scenes/game_elements/props/hookable_pin/hookable_pin.tscn" id="12_qsqmk"] -[ext_resource type="PackedScene" uid="uid://4u7dloafx55f" path="res://scenes/game_elements/props/teleporter/teleporter/teleporter.tscn" id="13_p8sis"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="14_bxmjx"] [ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="14_omyxq"] [ext_resource type="Script" uid="uid://dagrhfrj0f33i" path="res://scenes/game_logic/camera_behaviors/frame_camera_behavior.gd" id="15_dwcg4"] -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="15_mg68y"] -[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="20_ocgpu"] -[ext_resource type="SpriteFrames" uid="uid://2ek86nvw6y28" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_yellow.tres" id="21_qsqmk"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="15_mg68y"] +[ext_resource type="PackedScene" uid="uid://b7h2j0j6jmigc" path="res://scenes/game_elements/props/tree/tree_void_affected.tscn" id="22_374sg"] [ext_resource type="PackedScene" uid="uid://v3usqiwy5wpr" path="res://scenes/game_elements/props/decoration/rock/rock.tscn" id="23_p8sis"] [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="24_7iwrw"] [ext_resource type="SpriteFrames" uid="uid://bapks76u4hipj" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_green_small.tres" id="25_374sg"] @@ -40,7 +38,8 @@ size = Vector2(64, 128) script = ExtResource("1_omyxq") [node name="BackgroundMusic" parent="." unique_id=339196205 instance=ExtResource("2_8ufyd")] -stream = ExtResource("3_w164g") +stream = ExtResource("3_374sg") +clip = &"Creep Loop" [node name="TileMapLayers" type="Node2D" parent="." unique_id=1176626520] @@ -86,7 +85,6 @@ unique_name_in_owner = true position = Vector2(232, 462) scale = Vector2(1.03448, 1) player_name = "Storyweaver" -mode = 2 sprite_frames = ExtResource("5_dwcg4") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1852627393] @@ -300,55 +298,65 @@ position = Vector2(1607, 657) [node name="ButtonItem14" parent="OnTheGround/AwardButtons" unique_id=1506418846 instance=ExtResource("6_w164g")] position = Vector2(1573, 683) -[node name="Tree" parent="OnTheGround" unique_id=1004720975 instance=ExtResource("20_ocgpu")] +[node name="TreeVoidAffected" parent="OnTheGround" unique_id=1182216860 instance=ExtResource("22_374sg")] position = Vector2(859, 866) -scale = Vector2(1.002, 1.002) -sprite_frames = ExtResource("21_qsqmk") +scale = Vector2(0.9499899, 0.9203614) +treetop_variant = 4 +trunk_variant = 1 -[node name="Tree2" parent="OnTheGround" unique_id=113339519 instance=ExtResource("20_ocgpu")] +[node name="TreeVoidAffected2" parent="OnTheGround" unique_id=1910387754 instance=ExtResource("22_374sg")] position = Vector2(1376, 930) scale = Vector2(1.002, 1.002) -sprite_frames = ExtResource("21_qsqmk") +treetop_variant = 4 +trunk_variant = 2 -[node name="Tree3" parent="OnTheGround" unique_id=1804916319 instance=ExtResource("20_ocgpu")] +[node name="TreeVoidAffected3" parent="OnTheGround" unique_id=968249272 instance=ExtResource("22_374sg")] position = Vector2(1912, 802) scale = Vector2(1.002, 1.002) -sprite_frames = ExtResource("21_qsqmk") +treetop_variant = 4 +trunk_variant = 1 -[node name="Tree4" parent="OnTheGround" unique_id=602296316 instance=ExtResource("20_ocgpu")] +[node name="TreeVoidAffected4" parent="OnTheGround" unique_id=713107953 instance=ExtResource("22_374sg")] position = Vector2(1323, 415) scale = Vector2(1.002, 1.002) -sprite_frames = ExtResource("21_qsqmk") +treetop_variant = 4 +trunk_variant = 1 -[node name="Tree5" parent="OnTheGround" unique_id=1074901217 instance=ExtResource("20_ocgpu")] +[node name="TreeVoidAffected5" parent="OnTheGround" unique_id=1715678102 instance=ExtResource("22_374sg")] position = Vector2(980, 230.00002) -scale = Vector2(1.002, 1.002) -sprite_frames = ExtResource("21_qsqmk") +scale = Vector2(1.004004, 1.004004) +treetop_variant = 4 +trunk_variant = 2 -[node name="Tree6" parent="OnTheGround" unique_id=1699215182 instance=ExtResource("20_ocgpu")] +[node name="TreeVoidAffected6" parent="OnTheGround" unique_id=312904696 instance=ExtResource("22_374sg")] position = Vector2(1566.0001, 289) -scale = Vector2(1.002, 1.002) -sprite_frames = ExtResource("21_qsqmk") +scale = Vector2(1.004004, 1.004004) +treetop_variant = 4 +trunk_variant = 2 -[node name="Tree7" parent="OnTheGround" unique_id=718573118 instance=ExtResource("20_ocgpu")] +[node name="TreeVoidAffected7" parent="OnTheGround" unique_id=639927130 instance=ExtResource("22_374sg")] position = Vector2(1701, 353.00003) -scale = Vector2(1.002, 1.002) -sprite_frames = ExtResource("21_qsqmk") +scale = Vector2(1.006012, 1.006012) +treetop_variant = 4 +trunk_variant = 1 -[node name="Tree8" parent="OnTheGround" unique_id=231103680 instance=ExtResource("20_ocgpu")] +[node name="TreeVoidAffected8" parent="OnTheGround" unique_id=690811244 instance=ExtResource("22_374sg")] position = Vector2(1681, 217.00005) -scale = Vector2(1.002, 1.002) -sprite_frames = ExtResource("21_qsqmk") +scale = Vector2(1.004004, 1.004004) +treetop_variant = 4 +trunk_variant = 2 -[node name="Tree9" parent="OnTheGround" unique_id=947744383 instance=ExtResource("20_ocgpu")] +[node name="TreeVoidAffected9" parent="OnTheGround" unique_id=1961796268 instance=ExtResource("22_374sg")] position = Vector2(1567, 106.00001) -scale = Vector2(1.002, 1.002) -sprite_frames = ExtResource("21_qsqmk") +scale = Vector2(1.004004, 1.004004) +treetop_variant = 4 +trunk_variant = 1 -[node name="Tree10" parent="OnTheGround" unique_id=1781478907 instance=ExtResource("20_ocgpu")] +[node name="TreeVoidAffected10" parent="OnTheGround" unique_id=1812876779 instance=ExtResource("22_374sg")] position = Vector2(548.00006, 81) -scale = Vector2(1.002, 1.002) -sprite_frames = ExtResource("21_qsqmk") +scale = Vector2(1.004004, 1.004004) +treetop_variant = 4 +trunk_variant = 1 [node name="Rock" parent="OnTheGround" unique_id=600261013 instance=ExtResource("23_p8sis")] position = Vector2(1351, 917) @@ -383,8 +391,10 @@ sprite_frames = ExtResource("25_374sg") position = Vector2(1429, 923) sprite_frames = ExtResource("25_374sg") -[node name="TeleporterNext" parent="." unique_id=1852093842 instance=ExtResource("13_p8sis")] +[node name="TeleporterNext" type="Area2D" parent="." unique_id=1852093842] position = Vector2(1635, 282) +collision_layer = 4 +script = ExtResource("15_mg68y") next_scene = "uid://bk8rjvfmm20b7" enter_transition = 4 exit_transition = 5 diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_pins.tscn b/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_pins.tscn index cd55a362db..314e07a662 100644 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_pins.tscn +++ b/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_pins.tscn @@ -2,7 +2,7 @@ [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_5vumy"] [ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="2_5vumy"] -[ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="2_w8fse"] +[ext_resource type="AudioStream" uid="uid://bwgtbylflkup2" path="res://scenes/quests/lore_quests/quest_002/components/void_music.tres" id="2_udo54"] [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="3_5vumy"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="3_w8fse"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="4_syhn3"] @@ -13,22 +13,19 @@ [ext_resource type="Script" uid="uid://0enyu5v4ra34" path="res://scenes/game_elements/props/spawn_point/components/spawn_point.gd" id="11_m63nr"] [ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="12_50o53"] [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="12_sqxkk"] -[ext_resource type="PackedScene" uid="uid://4u7dloafx55f" path="res://scenes/game_elements/props/teleporter/teleporter/teleporter.tscn" id="13_6ihfv"] [ext_resource type="SpriteFrames" uid="uid://bapks76u4hipj" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_green_small.tres" id="13_udo54"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="14_nlj8l"] -[ext_resource type="Script" uid="uid://d2m5qm4ranctd" path="res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/switch_mode_area.gd" id="15_8mj0p"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="16_udo54"] [ext_resource type="PackedScene" uid="uid://mruqy04d0vl8" path="res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/buttons_collector.tscn" id="18_udo54"] -[sub_resource type="RectangleShape2D" id="RectangleShape2D_8mj0p"] -size = Vector2(131, 87) - [sub_resource type="RectangleShape2D" id="RectangleShape2D_drlay"] size = Vector2(64, 128) [node name="GrapplingHookPins" type="Node2D" unique_id=1774947121] [node name="BackgroundMusic" parent="." unique_id=1795881165 instance=ExtResource("1_5vumy")] -stream = ExtResource("2_w8fse") +stream = ExtResource("2_udo54") +clip = &"Creep Loop" [node name="TileMapLayers" type="Node2D" parent="." unique_id=1492984305] @@ -54,7 +51,6 @@ unique_name_in_owner = true position = Vector2(174, 1313) scale = Vector2(1.03448, 1) player_name = "Storyweaver" -mode = 2 sprite_frames = ExtResource("4_syhn3") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=64030138] @@ -327,17 +323,10 @@ sprite_frames = ExtResource("13_udo54") [node name="ButtonsCollector" parent="OnTheGround" unique_id=1634175369 instance=ExtResource("18_udo54")] position = Vector2(2451, 1246) -[node name="SwitchModeArea" type="Area2D" parent="OnTheGround/ButtonsCollector" unique_id=167963291] -position = Vector2(1, -12) -collision_layer = 0 -script = ExtResource("15_8mj0p") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/ButtonsCollector/SwitchModeArea" unique_id=1213896799] -position = Vector2(-1, 0) -shape = SubResource("RectangleShape2D_8mj0p") - -[node name="TeleporterNext" parent="." unique_id=1560505035 instance=ExtResource("13_6ihfv")] +[node name="TeleporterNext" type="Area2D" parent="." unique_id=1560505035] position = Vector2(2759, 1281) +collision_layer = 4 +script = ExtResource("16_udo54") next_scene = "uid://c3iv8nbog410p" enter_transition = 2 exit_transition = 1 @@ -355,6 +344,3 @@ metadata/_custom_type_script = "uid://0enyu5v4ra34" [node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1514589793] [node name="HUD" parent="." unique_id=1964030329 instance=ExtResource("14_nlj8l")] - -[connection signal="body_entered" from="OnTheGround/ButtonsCollector/SwitchModeArea" to="OnTheGround/ButtonsCollector/SwitchModeArea" method="_on_body_entered"] -[connection signal="body_exited" from="OnTheGround/ButtonsCollector/SwitchModeArea" to="OnTheGround/ButtonsCollector/SwitchModeArea" method="_on_body_exited"] diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_powerup.tscn b/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_powerup.tscn index c29f9b7742..4a48ef73b2 100644 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_powerup.tscn +++ b/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_powerup.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://ca7w1ib458a7x" path="res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_powerup.gd" id="1_hx14g"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="2_4a5bj"] [ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="2_hx14g"] -[ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="3_vfhbs"] +[ext_resource type="AudioStream" uid="uid://bwgtbylflkup2" path="res://scenes/quests/lore_quests/quest_002/components/void_music.tres" id="3_iu48k"] [ext_resource type="PackedScene" uid="uid://dohb701lxbe5s" path="res://scenes/game_elements/props/hookable_needle/hookable_needle.tscn" id="4_7gbyj"] [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="4_7v23v"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="4_rup4f"] @@ -16,52 +16,17 @@ [ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="8_exmm1"] [ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="8_g2ubw"] [ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="8_iu48k"] -[ext_resource type="PackedScene" uid="uid://4u7dloafx55f" path="res://scenes/game_elements/props/teleporter/teleporter/teleporter.tscn" id="9_4a5bj"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="11_7v23v"] [ext_resource type="PackedScene" uid="uid://cokul8w425pja" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.tscn" id="12_ptg16"] -[ext_resource type="Texture2D" uid="uid://dnwfhdpvdl0gi" path="res://scenes/game_elements/props/button_item/components/button-blue.png" id="13_7gbyj"] [ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="13_vodlh"] [ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="15_rlnni"] +[ext_resource type="PackedScene" uid="uid://dmevaymmt6wco" path="res://scenes/game_elements/props/powerup/powerup.tscn" id="17_a36ca"] +[ext_resource type="SpriteFrames" uid="uid://cfgahyntmtfgu" path="res://scenes/game_elements/props/powerup/components/powerup_thread.tres" id="18_a36ca"] [ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="20_exmm1"] [ext_resource type="SpriteFrames" uid="uid://2ek86nvw6y28" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_yellow.tres" id="21_y6p0v"] [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="22_iu48k"] [ext_resource type="SpriteFrames" uid="uid://bapks76u4hipj" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_green_small.tres" id="23_b7aom"] - -[sub_resource type="AtlasTexture" id="AtlasTexture_rup4f"] -atlas = ExtResource("13_7gbyj") -region = Rect2(0, 0, 64, 64) - -[sub_resource type="AtlasTexture" id="AtlasTexture_ptg16"] -atlas = ExtResource("13_7gbyj") -region = Rect2(64, 0, 64, 64) - -[sub_resource type="AtlasTexture" id="AtlasTexture_vodlh"] -atlas = ExtResource("13_7gbyj") -region = Rect2(128, 0, 64, 64) - -[sub_resource type="AtlasTexture" id="AtlasTexture_rlnni"] -atlas = ExtResource("13_7gbyj") -region = Rect2(192, 0, 64, 64) - -[sub_resource type="SpriteFrames" id="SpriteFrames_g2ubw"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_rup4f") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_ptg16") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_vodlh") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_rlnni") -}], -"loop": true, -"name": &"default", -"speed": 10.0 -}] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="25_iu48k"] [sub_resource type="Resource" id="Resource_rlnni"] script = ExtResource("13_vodlh") @@ -80,7 +45,8 @@ size = Vector2(322.5, 336) script = ExtResource("1_hx14g") [node name="BackgroundMusic" parent="." unique_id=347913426 instance=ExtResource("2_4a5bj")] -stream = ExtResource("3_vfhbs") +stream = ExtResource("3_iu48k") +clip = &"Creep Loop" [node name="TileMapLayers" type="Node2D" parent="." unique_id=706364029] @@ -119,7 +85,6 @@ unique_name_in_owner = true position = Vector2(1632, 2312) scale = Vector2(1.03448, 1) player_name = "Storyweaver" -mode = 2 sprite_frames = ExtResource("5_7gbyj") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1997394979] @@ -257,15 +222,13 @@ position = Vector2(837, -280) position = Vector2(-1581, 1616) text = "Go!" -[node name="LongerStringPowerUp" parent="OnTheGround" unique_id=987233957 instance=ExtResource("7_rlnni")] -position = Vector2(-555, 727) -scale = Vector2(2, 2) - -[node name="ButtonSprite" parent="OnTheGround/LongerStringPowerUp/ButtonItem" parent_id_path=PackedInt32Array(987233957, 1967107361) index="0" unique_id=1194360136] -sprite_frames = SubResource("SpriteFrames_g2ubw") - -[node name="HookableArea" parent="OnTheGround/LongerStringPowerUp" index="2" unique_id=1267513436] -weight = 0.3 +[node name="LongerThreadPowerup" parent="OnTheGround" unique_id=1795462717 instance=ExtResource("17_a36ca")] +position = Vector2(-549, 689) +ability = 32 +ability_name = "Longer Thread" +interact_action = "Collect Longer Thread" +sprite_frames = ExtResource("18_a36ca") +highlight_color = Color(0.8910073, 0.7227245, 0, 1) [node name="VoidPatrolling" parent="OnTheGround" unique_id=2124322919 node_paths=PackedStringArray("void_layer", "idle_patrol_path") instance=ExtResource("12_ptg16")] position = Vector2(-1099, 1758) @@ -384,10 +347,12 @@ sprite_frames = ExtResource("23_b7aom") [node name="Bush20" parent="OnTheGround/Bushes" unique_id=1989757828 instance=ExtResource("22_iu48k")] position = Vector2(1424, 2288) -[node name="Teleporter" parent="." unique_id=970210635 instance=ExtResource("9_4a5bj")] +[node name="Teleporter" type="Area2D" parent="." unique_id=970210635] position = Vector2(-1881, 1735) -next_scene = "uid://bfs26qvdru0ur" -spawn_point_path = NodePath("SpawnPointEnter") +collision_layer = 4 +script = ExtResource("25_iu48k") +next_scene = "uid://b8mfigsd8y5qs" +spawn_point_path = NodePath("SpawnPointFromPowerup") exit_transition = 0 [node name="CollisionShape2D" type="CollisionShape2D" parent="Teleporter" unique_id=769048811] @@ -397,8 +362,4 @@ shape = SubResource("RectangleShape2D_s7yva") [node name="HUD" parent="." unique_id=1267842834 instance=ExtResource("11_7v23v")] -[connection signal="collected" from="OnTheGround/LongerStringPowerUp/ButtonItem" to="." method="_on_button_item_collected"] - -[editable path="OnTheGround/LongerStringPowerUp"] -[editable path="OnTheGround/LongerStringPowerUp/ButtonItem"] [editable path="OnTheGround/VoidPatrolling"] diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_start.tscn b/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_start.tscn index 10e70d492f..0a45c04e5f 100644 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_start.tscn +++ b/scenes/quests/lore_quests/quest_002/2_grappling_hook/grappling_hook_start.tscn @@ -1,13 +1,15 @@ [gd_scene format=4 uid="uid://b8mfigsd8y5qs"] +[ext_resource type="Script" uid="uid://cypo7qnrrj4qq" path="res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/grappling_hook_start.gd" id="1_6n4qp"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_wxpj0"] [ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="2_85rkf"] -[ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="2_p44d7"] +[ext_resource type="AudioStream" uid="uid://bwgtbylflkup2" path="res://scenes/quests/lore_quests/quest_002/components/void_music.tres" id="2_wv4km"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="3_gbtro"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="3_p44d7"] [ext_resource type="Script" uid="uid://d1ly6uhh500xu" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/tile_map_cover.gd" id="3_upilw"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="4_10ahs"] [ext_resource type="Resource" uid="uid://1jkpxbyl7bqk" path="res://scenes/quests/lore_quests/quest_002/2_grappling_hook/intro_start.dialogue" id="4_aiq76"] +[ext_resource type="Script" uid="uid://c2lx7gvkonxaa" path="res://scenes/game_elements/props/background_music/components/clip_switcher.gd" id="4_wv4km"] [ext_resource type="PackedScene" uid="uid://evb46lm6ssu2" path="res://scenes/game_elements/props/hookable_pin/hookable_pin.tscn" id="5_cspw2"] [ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="5_w67qe"] [ext_resource type="PackedScene" uid="uid://dvj15pnuqr2ua" path="res://scenes/game_elements/props/hookable_button_item/hookable_button_item.tscn" id="6_3g3x4"] @@ -17,14 +19,12 @@ [ext_resource type="PackedScene" uid="uid://cokul8w425pja" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/void_spreading_enemy.tscn" id="9_3g3x4"] [ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="9_vdhd3"] [ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="10_upilw"] -[ext_resource type="PackedScene" uid="uid://4u7dloafx55f" path="res://scenes/game_elements/props/teleporter/teleporter/teleporter.tscn" id="10_wxpj0"] -[ext_resource type="PackedScene" uid="uid://cdwf2nmeqns31" path="res://scenes/ui_elements/input_hints/throw_hint.tscn" id="11_10ahs"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="11_p44d7"] -[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="13_3g3x4"] [ext_resource type="Script" uid="uid://0enyu5v4ra34" path="res://scenes/game_elements/props/spawn_point/components/spawn_point.gd" id="14_jqq45"] +[ext_resource type="PackedScene" uid="uid://1vunygl4wpj6" path="res://scenes/game_elements/props/button_item/button_item.tscn" id="15_wv4km"] [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="18_wv4km"] [ext_resource type="SpriteFrames" uid="uid://bapks76u4hipj" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_green_small.tres" id="19_6n4qp"] -[ext_resource type="PackedScene" uid="uid://cqkly1vjd6xhy" path="res://scenes/ui_elements/input_hints/aim_input_hint.tscn" id="23_wv4km"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="20_wv4km"] [sub_resource type="Animation" id="Animation_w67qe"] length = 0.001 @@ -40,30 +40,6 @@ tracks/0/keys = { "update": 1, "values": [4] } -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("ScreenOverlay/InputHint:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("ScreenOverlay/InputHint:modulate") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 1)] -} [sub_resource type="Animation" id="Animation_aiq76"] resource_name = "eat_floor" @@ -81,38 +57,10 @@ tracks/0/keys = { "values": [0] } -[sub_resource type="Animation" id="Animation_ngr1v"] -resource_name = "show_input_hints" -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("ScreenOverlay/InputHint:visible") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(1), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("ScreenOverlay/InputHint:modulate") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 1), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_ngr1v"] _data = { &"RESET": SubResource("Animation_w67qe"), -&"eat_floor": SubResource("Animation_aiq76"), -&"show_input_hints": SubResource("Animation_ngr1v") +&"eat_floor": SubResource("Animation_aiq76") } [sub_resource type="Resource" id="Resource_kr8u1"] @@ -128,22 +76,30 @@ metadata/_custom_type_script = "uid://csev4hv57utxv" [sub_resource type="Curve2D" id="Curve2D_vdhd3"] _data = { -"points": PackedVector2Array(0, 0, 0, 0, -1512, 3, 0, 0, 0, 0, -264, 3, 0, 0, 0, 0, -264, -221, 0, 0, 0, 0, 120, -221, 0, 0, 0, 0, 120, 163, 0, 0, 0, 0, 248, 163, 0, 0, 0, 0, 248, -285, 0, 0, 0, 0, 888, -285) +"points": PackedVector2Array(0, 0, 0, 0, 888, -973, 0, 0, 0, 0, 888, -285, 0, 0, 0, 0, 248, -285, 0, 0, 0, 0, 248, 163, 0, 0, 0, 0, 120, 163, 0, 0, 0, 0, 120, -221, 0, 0, 0, 0, -264, -221, 0, 0, 0, 0, -264, 3, 0, 0, 0, 0, -1512, 3) } -point_count = 8 +point_count = 9 [sub_resource type="RectangleShape2D" id="RectangleShape2D_drlay"] size = Vector2(64, 128) [node name="GrapplingHookStart" type="Node2D" unique_id=462883478] +script = ExtResource("1_6n4qp") [node name="BackgroundMusic" parent="." unique_id=936481265 instance=ExtResource("1_wxpj0")] -stream = ExtResource("2_p44d7") +stream = ExtResource("2_wv4km") +clip = &"Creep Intro" + +[node name="ClipSwitcher" type="Node" parent="BackgroundMusic" unique_id=485319442] +script = ExtResource("4_wv4km") +clip = &"Creep Outro" +metadata/_custom_type_script = "uid://c2lx7gvkonxaa" [node name="Cinematic" type="Node2D" parent="." unique_id=419582141 node_paths=PackedStringArray("animation_player")] script = ExtResource("3_p44d7") dialogue = ExtResource("4_aiq76") animation_player = NodePath("../AnimationPlayer") +autostart = false metadata/_custom_type_script = "uid://x1mxt6bmei2o" [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1296302605] @@ -178,7 +134,6 @@ unique_name_in_owner = true position = Vector2(928, 545) scale = Vector2(1.03448, 1) player_name = "Storyweaver" -mode = 2 sprite_frames = ExtResource("4_10ahs") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1055479648] @@ -190,6 +145,7 @@ position_smoothing_enabled = true editor_draw_limits = true [node name="Pins" type="Node2D" parent="OnTheGround" unique_id=2066460652] +y_sort_enabled = true [node name="HookablePin" parent="OnTheGround/Pins" unique_id=1712001088 instance=ExtResource("5_cspw2")] position = Vector2(975, 854) @@ -257,9 +213,22 @@ position = Vector2(-376, 201) [node name="HookableButtonItem12" parent="OnTheGround/HookableButtons" unique_id=1554954874 instance=ExtResource("6_3g3x4")] position = Vector2(-417, 227) +[node name="NonHookableButtons" type="Node2D" parent="OnTheGround" unique_id=872709428] +unique_name_in_owner = true +y_sort_enabled = true + +[node name="ButtonItem" parent="OnTheGround/NonHookableButtons" unique_id=944394142 instance=ExtResource("15_wv4km")] +position = Vector2(966, 783) + +[node name="ButtonItem2" parent="OnTheGround/NonHookableButtons" unique_id=72748837 instance=ExtResource("15_wv4km")] +position = Vector2(1179, 1124) + +[node name="ButtonItem3" parent="OnTheGround/NonHookableButtons" unique_id=1623745746 instance=ExtResource("15_wv4km")] +position = Vector2(1132, 1079) + [node name="CollectibleItem" parent="OnTheGround" unique_id=317578047 instance=ExtResource("7_upilw")] position = Vector2(1434, 520) -next_scene = "uid://cufkthb25mpxy" +next_scene = "uid://ce7nk8qmi64d2" item = SubResource("Resource_kr8u1") [node name="Sign" parent="OnTheGround" unique_id=516698120 instance=ExtResource("9_vdhd3")] @@ -269,6 +238,7 @@ direction = 1 text = "Go!" [node name="VoidPatrolling" parent="OnTheGround" unique_id=1938075518 node_paths=PackedStringArray("void_layer", "idle_patrol_path") instance=ExtResource("9_3g3x4")] +unique_name_in_owner = true process_mode = 4 position = Vector2(1100, 677) void_layer = NodePath("../../TileMapLayers/Void") @@ -337,8 +307,10 @@ sprite_frames = ExtResource("19_6n4qp") [node name="Bush14" parent="OnTheGround/Bushes" unique_id=391246514 instance=ExtResource("18_wv4km")] position = Vector2(261, 440) -[node name="Teleporter" parent="." unique_id=579212473 instance=ExtResource("10_wxpj0")] +[node name="Teleporter" type="Area2D" parent="." unique_id=579212473] position = Vector2(2704, 1216) +collision_layer = 4 +script = ExtResource("20_wv4km") next_scene = "uid://dpv6x7h2p2i3l" enter_transition = 2 exit_transition = 1 @@ -353,42 +325,17 @@ script = ExtResource("14_jqq45") look_at_side_on_spawn = -1 metadata/_custom_type_script = "uid://0enyu5v4ra34" -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=355832986] +[node name="SpawnPointFromPowerup" type="Marker2D" parent="." unique_id=1553099395 groups=["spawn_point"]] +position = Vector2(2691, 545) +script = ExtResource("14_jqq45") +look_at_side_on_spawn = -1 +metadata/_custom_type_script = "uid://0enyu5v4ra34" -[node name="InputHint" type="Control" parent="ScreenOverlay" unique_id=1843013517] -visible = false -layout_mode = 3 -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -grow_vertical = 0 -size_flags_horizontal = 8 -size_flags_vertical = 8 - -[node name="VBoxContainer" type="VBoxContainer" parent="ScreenOverlay/InputHint" unique_id=1846746589] -layout_mode = 1 -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -offset_top = -100.0 -offset_right = 166.0 -grow_vertical = 0 - -[node name="ThrowHint" parent="ScreenOverlay/InputHint/VBoxContainer" unique_id=2128862251 instance=ExtResource("11_10ahs")] -layout_mode = 2 - -[node name="HBoxContainer2" type="HBoxContainer" parent="ScreenOverlay/InputHint/VBoxContainer" unique_id=676863832] -layout_mode = 2 - -[node name="AimInputHint" parent="ScreenOverlay/InputHint/VBoxContainer/HBoxContainer2" unique_id=1196650566 instance=ExtResource("23_wv4km")] -layout_mode = 2 - -[node name="Label" type="Label" parent="ScreenOverlay/InputHint/VBoxContainer/HBoxContainer2" unique_id=1102684800] -layout_mode = 2 -theme = ExtResource("13_3g3x4") -theme_type_variation = &"HintLabel" -text = "Aim" +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=355832986] [node name="HUD" parent="." unique_id=1590862536 instance=ExtResource("11_p44d7")] +[connection signal="player_teleported" from="SpawnPointFromPowerup" to="." method="_on_spawn_point_from_powerup_player_teleported"] +[connection signal="player_teleported" from="SpawnPointFromPowerup" to="BackgroundMusic/ClipSwitcher" method="switch"] + [editable path="OnTheGround/VoidPatrolling"] diff --git a/scenes/quests/lore_quests/quest_002/2_grappling_hook/intro_start.dialogue b/scenes/quests/lore_quests/quest_002/2_grappling_hook/intro_start.dialogue index 843a65e333..a14765e9c1 100644 --- a/scenes/quests/lore_quests/quest_002/2_grappling_hook/intro_start.dialogue +++ b/scenes/quests/lore_quests/quest_002/2_grappling_hook/intro_start.dialogue @@ -1,10 +1,11 @@ # SPDX-FileCopyrightText: The Threadbare Authors # SPDX-License-Identifier: MPL-2.0 ~ start -Moss the Monk: This thread of Memory will teleport you to the town. +Moss the Monk: This thread of Imagination will take you closer to LinenVille. do animation_player.play(&"eat_floor") do animation_player.animation_finished Moss the Monk: Oh, look! The Void is blooming fast here. -Moss the Monk: You’ll need a [b]grappling hook[/b] to get to LinenVille. Take mine. -do animation_player.play(&"show_input_hints") +Moss the Monk: You can use your [b]grappling hook[/b] to get across... +Moss the Monk: ...but I think you'll need to find some [wave amp=25 freq=5]longer yarn[/wave] before you can reach the thread of Imagination. +Moss the Monk: [wave amp=25 freq=5]Throw[wave] to cross the Void, and see what you can find! => END diff --git a/scenes/quests/lore_quests/quest_002/3_void_grappling/components/void_grapping_round_2.gd b/scenes/quests/lore_quests/quest_002/3_void_grappling/components/void_grapping_round_2.gd index 039a109615..9d77960b14 100644 --- a/scenes/quests/lore_quests/quest_002/3_void_grappling/components/void_grapping_round_2.gd +++ b/scenes/quests/lore_quests/quest_002/3_void_grappling/components/void_grapping_round_2.gd @@ -2,25 +2,31 @@ # SPDX-License-Identifier: MPL-2.0 extends Node2D -const LongerHook = preload( - "res://scenes/quests/lore_quests/quest_002/2_grappling_hook/components/longer_hook.gd" -) +var zoom_tween: Tween @onready var player: Player = %Player -@onready var frame_camera_behavior: FrameCameraBehavior = %FrameCameraBehavior @onready var void_chasing: CharacterBody2D = %VoidChasing func _ready() -> void: - frame_camera_behavior.frame_target = player.get_node("PlayerHook/HookEnding") + GameState.abilities_changed.connect(_on_abilities_changed) + # TODO: This level removes the longer thread modifier when started. + # Otherwise the Void chase can't be triggered. + GameState.set_ability(Enums.PlayerAbilities.ABILITY_B_MODIFIER_1, false) -func _on_button_item_collected() -> void: - LongerHook.grant_longer_hook(player) - # Zoom out the camera when collecting the powerup, because now the player - # can throw a longer thread: +func _on_abilities_changed() -> void: + var has_longer_thread := GameState.has_ability(Enums.PlayerAbilities.ABILITY_B_MODIFIER_1) + var camera_zoom := Vector2(0.5, 0.5) if has_longer_thread else Vector2(1.0, 1.0) + # Zoom out when the player can throw a longer thread: var camera: Camera2D = get_viewport().get_camera_2d() - var zoom_tween := create_tween() - zoom_tween.tween_property(camera, "zoom", Vector2(0.5, 0.5), 1.0) + if camera.zoom != camera_zoom: + if zoom_tween: + zoom_tween.kill() + zoom_tween = create_tween() + zoom_tween.tween_property(camera, "zoom", camera_zoom, 1.0) + + +func _on_longer_thread_powerup_collected() -> void: void_chasing.start(player) diff --git a/scenes/quests/lore_quests/quest_002/3_void_grappling/void_grappling.tscn b/scenes/quests/lore_quests/quest_002/3_void_grappling/void_grappling.tscn index 1aa7bea4d8..c3cd19f112 100644 --- a/scenes/quests/lore_quests/quest_002/3_void_grappling/void_grappling.tscn +++ b/scenes/quests/lore_quests/quest_002/3_void_grappling/void_grappling.tscn @@ -5,8 +5,9 @@ [ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="1_kijyv"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="1_lmfic"] [ext_resource type="Script" uid="uid://d1ly6uhh500xu" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/tile_map_cover.gd" id="1_wd35e"] -[ext_resource type="AudioStream" uid="uid://dgwihwibc8ah6" path="res://assets/first_party/music/Threadbare_Combat.ogg" id="2_ayr6d"] +[ext_resource type="AudioStream" uid="uid://bwgtbylflkup2" path="res://scenes/quests/lore_quests/quest_002/components/void_music.tres" id="2_bcye7"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="2_kmyoj"] +[ext_resource type="Script" uid="uid://c2lx7gvkonxaa" path="res://scenes/game_elements/props/background_music/components/clip_switcher.gd" id="3_4laor"] [ext_resource type="Script" uid="uid://dagrhfrj0f33i" path="res://scenes/game_logic/camera_behaviors/frame_camera_behavior.gd" id="3_jrfsf"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="3_yxlsu"] [ext_resource type="Resource" uid="uid://btx8kdmjsxwyo" path="res://scenes/quests/lore_quests/quest_002/3_void_grappling/components/void_grappling.dialogue" id="4_yxlsu"] @@ -25,7 +26,7 @@ [ext_resource type="SpriteFrames" uid="uid://7yx2vrxg6ytx" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_blue_large.tres" id="20_5axji"] [ext_resource type="SpriteFrames" uid="uid://k4jucjwkxxhc" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_purple_small.tres" id="21_bmrvw"] [ext_resource type="PackedScene" uid="uid://dv4f232y8w8dv" path="res://scenes/game_elements/props/decoration/water_rock/water_rock.tscn" id="21_c6u7c"] -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="22_rk3po"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="22_rk3po"] [ext_resource type="PackedScene" uid="uid://dvj15pnuqr2ua" path="res://scenes/game_elements/props/hookable_button_item/hookable_button_item.tscn" id="23_bcye7"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_wgn4u"] @@ -77,7 +78,14 @@ size = Vector2(128, 320) metadata/_edit_lock_ = true [node name="BackgroundMusic" parent="." unique_id=268347884 instance=ExtResource("1_grfk2")] -stream = ExtResource("2_ayr6d") +stream = ExtResource("2_bcye7") +clip = &"Still" + +[node name="ClipSwitcher" type="Node" parent="BackgroundMusic" unique_id=938722825 node_paths=PackedStringArray("trigger")] +script = ExtResource("3_4laor") +clip = &"Bloom 2" +trigger = NodePath("../../EnemyChaseTrigger") +metadata/_custom_type_script = "uid://c2lx7gvkonxaa" [node name="Cinematic" type="Node2D" parent="." unique_id=2025924955] script = ExtResource("3_yxlsu") @@ -148,7 +156,6 @@ unique_name_in_owner = true position = Vector2(244, 428) scale = Vector2(1.03448, 1) player_name = "Storyweaver" -mode = 2 sprite_frames = ExtResource("2_kmyoj") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=619074048] diff --git a/scenes/quests/lore_quests/quest_002/3_void_grappling/void_grappling_round_2.tscn b/scenes/quests/lore_quests/quest_002/3_void_grappling/void_grappling_round_2.tscn index 21c0bfb757..7e1976aa77 100644 --- a/scenes/quests/lore_quests/quest_002/3_void_grappling/void_grappling_round_2.tscn +++ b/scenes/quests/lore_quests/quest_002/3_void_grappling/void_grappling_round_2.tscn @@ -2,7 +2,7 @@ [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_iot5q"] [ext_resource type="Script" uid="uid://crgkqdcmp27ee" path="res://scenes/quests/lore_quests/quest_002/3_void_grappling/components/void_grapping_round_2.gd" id="1_johb0"] -[ext_resource type="AudioStream" uid="uid://dgwihwibc8ah6" path="res://assets/first_party/music/Threadbare_Combat.ogg" id="2_r7lb1"] +[ext_resource type="AudioStream" uid="uid://bwgtbylflkup2" path="res://scenes/quests/lore_quests/quest_002/components/void_music.tres" id="3_jr6vd"] [ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="4_gvlvr"] [ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="5_jr6vd"] [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="7_lg1kl"] @@ -15,8 +15,8 @@ [ext_resource type="PackedScene" uid="uid://dohb701lxbe5s" path="res://scenes/game_elements/props/hookable_needle/hookable_needle.tscn" id="13_6fnam"] [ext_resource type="Script" uid="uid://dagrhfrj0f33i" path="res://scenes/game_logic/camera_behaviors/frame_camera_behavior.gd" id="13_xwjev"] [ext_resource type="PackedScene" uid="uid://evb46lm6ssu2" path="res://scenes/game_elements/props/hookable_pin/hookable_pin.tscn" id="14_4tdqi"] -[ext_resource type="PackedScene" uid="uid://dvj15pnuqr2ua" path="res://scenes/game_elements/props/hookable_button_item/hookable_button_item.tscn" id="14_lmmn3"] -[ext_resource type="Texture2D" uid="uid://dnwfhdpvdl0gi" path="res://scenes/game_elements/props/button_item/components/button-blue.png" id="15_johb0"] +[ext_resource type="PackedScene" uid="uid://dmevaymmt6wco" path="res://scenes/game_elements/props/powerup/powerup.tscn" id="16_bkul7"] +[ext_resource type="SpriteFrames" uid="uid://cfgahyntmtfgu" path="res://scenes/game_elements/props/powerup/components/powerup_thread.tres" id="17_jr6vd"] [ext_resource type="PackedScene" uid="uid://dv4f232y8w8dv" path="res://scenes/game_elements/props/decoration/water_rock/water_rock.tscn" id="20_q1v2m"] [ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="21_gvlvr"] [ext_resource type="SpriteFrames" uid="uid://2ek86nvw6y28" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_yellow.tres" id="22_siwq5"] @@ -26,7 +26,7 @@ [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="24_wrwcr"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="25_0h87u"] [ext_resource type="SpriteFrames" uid="uid://b6doys1c3yelx" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_red_small.tres" id="25_bkul7"] -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="26_ipgsq"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="26_ipgsq"] [ext_resource type="SpriteFrames" uid="uid://bgckvdkxuxrgh" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_red_large.tres" id="26_jr6vd"] [ext_resource type="SpriteFrames" uid="uid://ckf0ncgsrnhek" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_purple_large.tres" id="27_jr6vd"] [ext_resource type="SpriteFrames" uid="uid://k4jucjwkxxhc" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_purple_small.tres" id="28_hxopk"] @@ -74,42 +74,6 @@ _data = { } point_count = 5 -[sub_resource type="AtlasTexture" id="AtlasTexture_rup4f"] -atlas = ExtResource("15_johb0") -region = Rect2(0, 0, 64, 64) - -[sub_resource type="AtlasTexture" id="AtlasTexture_ptg16"] -atlas = ExtResource("15_johb0") -region = Rect2(64, 0, 64, 64) - -[sub_resource type="AtlasTexture" id="AtlasTexture_vodlh"] -atlas = ExtResource("15_johb0") -region = Rect2(128, 0, 64, 64) - -[sub_resource type="AtlasTexture" id="AtlasTexture_rlnni"] -atlas = ExtResource("15_johb0") -region = Rect2(192, 0, 64, 64) - -[sub_resource type="SpriteFrames" id="SpriteFrames_vbdam"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_rup4f") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_ptg16") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_vodlh") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_rlnni") -}], -"loop": true, -"name": &"default", -"speed": 10.0 -}] - [sub_resource type="NavigationPolygon" id="NavigationPolygon_c2723"] vertices = PackedVector2Array(2921.961, 2408.0469, 2928.9375, 3614.9766, -1572.9609, 3609.0078, -1559.0313, 112, 3734.039, 116.99219, 3742.961, 2105.039) polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3), PackedInt32Array(0, 3, 4, 5)]) @@ -123,7 +87,8 @@ script = ExtResource("1_johb0") metadata/_edit_lock_ = true [node name="BackgroundMusic" parent="." unique_id=1032577005 instance=ExtResource("1_iot5q")] -stream = ExtResource("2_r7lb1") +stream = ExtResource("3_jr6vd") +clip = &"Bloom 2" [node name="TileMapLayers" type="Node2D" parent="." unique_id=1333441298] metadata/_edit_lock_ = true @@ -183,7 +148,6 @@ unique_name_in_owner = true position = Vector2(68, 428) scale = Vector2(1.03448, 1) player_name = "Storyweaver" -mode = 2 sprite_frames = ExtResource("12_80kqf") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=430310865] @@ -246,15 +210,13 @@ scale = Vector2(2.219653, 2.219653) curve = SubResource("Curve2D_nm3ku") metadata/_edit_group_ = true -[node name="LongerStringPowerUp" parent="OnTheGround" unique_id=1151446514 instance=ExtResource("14_lmmn3")] +[node name="LongerThreadPowerup" parent="OnTheGround" unique_id=297202740 instance=ExtResource("16_bkul7")] position = Vector2(2048, 576) -scale = Vector2(2, 2) - -[node name="ButtonSprite" parent="OnTheGround/LongerStringPowerUp/ButtonItem" parent_id_path=PackedInt32Array(1151446514, 1967107361) index="0" unique_id=1194360136] -sprite_frames = SubResource("SpriteFrames_vbdam") - -[node name="HookableArea" parent="OnTheGround/LongerStringPowerUp" index="2" unique_id=1267513436] -weight = 0.3 +ability = 32 +ability_name = "Longer Thread" +interact_action = "Collect Longer Thread" +sprite_frames = ExtResource("17_jr6vd") +highlight_color = Color(0.8910073, 0.7227245, 0, 1) [node name="PinsAndNeedles" type="Node2D" parent="OnTheGround" unique_id=478811176] y_sort_enabled = true @@ -687,9 +649,7 @@ position = Vector2(0, 23) shape = SubResource("RectangleShape2D_rk3po") [connection signal="body_entered" from="EnemyDefeatTrigger" to="OnTheGround/VoidChasing" method="defeat" unbinds=1] -[connection signal="collected" from="OnTheGround/LongerStringPowerUp/ButtonItem" to="." method="_on_button_item_collected"] +[connection signal="collected" from="OnTheGround/LongerThreadPowerup" to="." method="_on_longer_thread_powerup_collected"] [editable path="OnTheGround/VoidPatrolling"] [editable path="OnTheGround/VoidChasing"] -[editable path="OnTheGround/LongerStringPowerUp"] -[editable path="OnTheGround/LongerStringPowerUp/ButtonItem"] diff --git a/scenes/quests/lore_quests/quest_002/4_closing_transition/closing_transition.tscn b/scenes/quests/lore_quests/quest_002/4_closing_transition/closing_transition.tscn index 0fb5b12afb..3829df5dc2 100644 --- a/scenes/quests/lore_quests/quest_002/4_closing_transition/closing_transition.tscn +++ b/scenes/quests/lore_quests/quest_002/4_closing_transition/closing_transition.tscn @@ -16,7 +16,9 @@ [ext_resource type="Texture2D" uid="uid://cy66l5b3uox84" path="res://scenes/game_elements/props/buildings/house/components/House_Patches_Red_Stage2.png" id="9_g6oum"] [ext_resource type="Texture2D" uid="uid://c8xgl7dcju5h7" path="res://scenes/game_elements/props/buildings/house/components/House_Patch_Blue_03.png" id="11_tn5hb"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="12_6i34l"] -[ext_resource type="PackedScene" uid="uid://bs6vm2sdawbhh" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/townie.tscn" id="13_t5n3s"] +[ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="13_wty5d"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="14_5uden"] +[ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="14_pditp"] [ext_resource type="Texture2D" uid="uid://ol20om7xc1o7" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Red_Stage1.png" id="14_tl8te"] [ext_resource type="Texture2D" uid="uid://0xceungm1p8a" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Red_Stage2.png" id="15_hbvq8"] [ext_resource type="Texture2D" uid="uid://be3845r07rhkm" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Red_Stage3.png" id="16_7wffi"] @@ -25,152 +27,160 @@ [ext_resource type="SpriteFrames" uid="uid://2ek86nvw6y28" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_yellow.tres" id="20_7wffi"] [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="21_y3es2"] [ext_resource type="SpriteFrames" uid="uid://bapks76u4hipj" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_green_small.tres" id="22_2yns8"] +[ext_resource type="SpriteFrames" uid="uid://we3g65bpiba4" path="res://scenes/game_elements/characters/components/sprite_frames/capycorn_purple.tres" id="23_2yns8"] +[ext_resource type="PackedScene" uid="uid://de2aceqqvj7dr" path="res://scenes/game_elements/props/decoration/capycorn/capycorn.tscn" id="25_5uden"] +[ext_resource type="SpriteFrames" uid="uid://bq7qvwju02mtx" path="res://scenes/game_elements/characters/components/sprite_frames/bunny_brown.tres" id="25_o57pd"] +[ext_resource type="PackedScene" uid="uid://djmdhrse34vgq" path="res://scenes/game_elements/props/decoration/bunny/bunny.tscn" id="26_sxtjt"] +[ext_resource type="PackedScene" uid="uid://c4vbokn408f2c" path="res://scenes/game_elements/props/decoration/sheep/sheep.tscn" id="27_5uden"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_e2p5u"] +size = Vector2(90, 86) [sub_resource type="Animation" id="Animation_kuea1"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("OnTheGround/Townie3:visible") +tracks/0/path = NodePath("OnTheGround/Houses/House_8:texture") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [false] +"values": [ExtResource("16_7wffi")] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("OnTheGround/Townie4:visible") +tracks/1/path = NodePath("OnTheGround/Houses/House_6:texture") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [false] +"values": [ExtResource("16_7wffi")] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("OnTheGround/Townie5:visible") +tracks/2/path = NodePath("OnTheGround/Houses/House_4:texture") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [false] +"values": [ExtResource("15_hbvq8")] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("OnTheGround/Houses/House_8:texture") +tracks/3/path = NodePath("OnTheGround/Houses/House_3:texture") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [ExtResource("16_7wffi")] +"values": [ExtResource("9_g6oum")] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true -tracks/4/path = NodePath("OnTheGround/Houses/House_6:texture") +tracks/4/path = NodePath("Camera2D:position") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 1, -"values": [ExtResource("16_7wffi")] +"update": 0, +"values": [Vector2(0, 0)] } tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true -tracks/5/path = NodePath("OnTheGround/Houses/House_4:texture") +tracks/5/path = NodePath("TileMapLayers/Void:modulate") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 1, -"values": [ExtResource("15_hbvq8")] +"update": 0, +"values": [Color(1, 1, 1, 1)] } tracks/6/type = "value" tracks/6/imported = false tracks/6/enabled = true -tracks/6/path = NodePath("OnTheGround/Houses/House_3:texture") +tracks/6/path = NodePath("OnTheGround/StoryWeaver-NonPlayable!:position") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 1, -"values": [ExtResource("9_g6oum")] +"update": 0, +"values": [Vector2(757, 404)] } tracks/7/type = "value" tracks/7/imported = false tracks/7/enabled = true -tracks/7/path = NodePath("Camera2D:position") +tracks/7/path = NodePath("OnTheGround/StoryWeaver-NonPlayable!:animation") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, 0)] +"update": 1, +"values": [&"idle"] } tracks/8/type = "value" tracks/8/imported = false tracks/8/enabled = true -tracks/8/path = NodePath("TileMapLayers/Void:modulate") +tracks/8/path = NodePath("OnTheGround/PropsHidden:modulate") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Color(1, 1, 1, 1)] +"values": [Color(1, 1, 1, 0)] } tracks/9/type = "value" tracks/9/imported = false tracks/9/enabled = true -tracks/9/path = NodePath("OnTheGround/StoryWeaver-NonPlayable!:position") +tracks/9/path = NodePath("OnTheGround/Townie3:visible") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(757, 404)] +"update": 1, +"values": [false] } tracks/10/type = "value" tracks/10/imported = false tracks/10/enabled = true -tracks/10/path = NodePath("OnTheGround/StoryWeaver-NonPlayable!:animation") +tracks/10/path = NodePath("OnTheGround/Townie4:visible") tracks/10/interp = 1 tracks/10/loop_wrap = true tracks/10/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [&"idle"] +"values": [false] } tracks/11/type = "value" tracks/11/imported = false tracks/11/enabled = true -tracks/11/path = NodePath("OnTheGround/PropsHidden:modulate") +tracks/11/path = NodePath("OnTheGround/Townie5:visible") tracks/11/interp = 1 tracks/11/loop_wrap = true tracks/11/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 0)] +"update": 1, +"values": [false] } [sub_resource type="Animation" id="Animation_8lys0"] @@ -232,7 +242,7 @@ tracks/1/keys = { [sub_resource type="Animation" id="Animation_tn5hb"] resource_name = "retreat" -length = 6.0 +length = 10.0 step = 0.1 tracks/0/type = "value" tracks/0/imported = false @@ -276,86 +286,86 @@ resource_name = "reveal" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("OnTheGround/Townie3:visible") +tracks/0/path = NodePath("OnTheGround/Houses/House_8:texture") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [true] +"values": [ExtResource("14_tl8te")] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("OnTheGround/Townie4:visible") +tracks/1/path = NodePath("OnTheGround/Houses/House_6:texture") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [true] +"values": [ExtResource("14_tl8te")] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("OnTheGround/Townie5:visible") +tracks/2/path = NodePath("OnTheGround/Houses/House_4:texture") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [true] +"values": [ExtResource("14_tl8te")] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("OnTheGround/Houses/House_8:texture") +tracks/3/path = NodePath("OnTheGround/Houses/House_3:texture") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [ExtResource("14_tl8te")] +"values": [ExtResource("17_g6oum")] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true -tracks/4/path = NodePath("OnTheGround/Houses/House_6:texture") +tracks/4/path = NodePath("OnTheGround/Townie3:visible") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [ExtResource("14_tl8te")] +"values": [true] } tracks/5/type = "value" tracks/5/imported = false tracks/5/enabled = true -tracks/5/path = NodePath("OnTheGround/Houses/House_4:texture") +tracks/5/path = NodePath("OnTheGround/Townie4:visible") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [ExtResource("14_tl8te")] +"values": [true] } tracks/6/type = "value" tracks/6/imported = false tracks/6/enabled = true -tracks/6/path = NodePath("OnTheGround/Houses/House_3:texture") +tracks/6/path = NodePath("OnTheGround/Townie5:visible") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [ExtResource("17_g6oum")] +"values": [true] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_tbkr8"] @@ -416,23 +426,62 @@ sprite_frames = ExtResource("12_6i34l") animation = &"idle" autoplay = "idle" -[node name="Townie" parent="OnTheGround" unique_id=2004155774 instance=ExtResource("13_t5n3s")] -position = Vector2(932, 386) +[node name="Townie" parent="OnTheGround" unique_id=1098678013 instance=ExtResource("13_wty5d")] +position = Vector2(960, 440) +rotation = 3.1415927 +scale = Vector2(1, -1) +character_seed = 1494307959 -[node name="Townie2" parent="OnTheGround" unique_id=535444218 instance=ExtResource("13_t5n3s")] -position = Vector2(964, 444) +[node name="Townie2" parent="OnTheGround" unique_id=1617254333 instance=ExtResource("13_wty5d")] +position = Vector2(928, 384) +rotation = 3.1415927 +scale = Vector2(1, -1) +character_seed = 2682917086 -[node name="Townie3" parent="OnTheGround" unique_id=2086147436 instance=ExtResource("13_t5n3s")] +[node name="Townie3" parent="OnTheGround" unique_id=761264604 instance=ExtResource("13_wty5d")] visible = false -position = Vector2(893, 526) +position = Vector2(896, 528) +rotation = 3.1415927 +scale = Vector2(1, -1) +character_seed = 3087942009 -[node name="Townie4" parent="OnTheGround" unique_id=902884674 instance=ExtResource("13_t5n3s")] +[node name="Townie4" parent="OnTheGround" unique_id=540660933 instance=ExtResource("13_wty5d")] visible = false -position = Vector2(831, 538) +position = Vector2(816, 544) +rotation = 3.1415927 +scale = Vector2(1, -1) +character_seed = 3622649909 -[node name="Townie5" parent="OnTheGround" unique_id=1749778137 instance=ExtResource("13_t5n3s")] +[node name="Townie5" parent="OnTheGround" unique_id=319793089 instance=ExtResource("13_wty5d")] visible = false -position = Vector2(697, 513) +position = Vector2(696, 520) +rotation = 3.1415927 +scale = Vector2(-1, -1) +character_seed = 1897244511 +look_at_side = 1 + +[node name="TalkBehavior" type="Node" parent="OnTheGround" unique_id=1147866878 node_paths=PackedStringArray("interact_area")] +script = ExtResource("14_pditp") +interact_area = NodePath("../InteractArea") +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="InteractArea" type="Area2D" parent="OnTheGround" unique_id=248145530 node_paths=PackedStringArray("marker")] +position = Vector2(928, 424) +rotation = 3.1415927 +scale = Vector2(1, -1) +collision_layer = 32 +collision_mask = 0 +script = ExtResource("14_5uden") +marker = NodePath("Marker") +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/InteractArea" unique_id=153059657] +position = Vector2(-19, -11) +shape = SubResource("RectangleShape2D_e2p5u") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="Marker" type="Marker2D" parent="OnTheGround/InteractArea" unique_id=1764721366] +position = Vector2(0, -100) [node name="Houses" type="Node2D" parent="OnTheGround" unique_id=1300750032] y_sort_enabled = true @@ -514,6 +563,25 @@ sprite_frames = ExtResource("22_2yns8") [node name="Bush2" parent="OnTheGround/Bushes" unique_id=1998070032 instance=ExtResource("21_y3es2")] position = Vector2(971, 246) +[node name="Animals" type="Node2D" parent="OnTheGround" unique_id=502881433] +y_sort_enabled = true + +[node name="Capycorn" parent="OnTheGround/Animals" unique_id=398073521 instance=ExtResource("25_5uden")] +position = Vector2(938, 230) +rotation = 3.1415927 +scale = Vector2(1, -1) + +[node name="Bunny" parent="OnTheGround/Animals" unique_id=20056684 instance=ExtResource("26_sxtjt")] +position = Vector2(702, 264) + +[node name="Sheep" parent="OnTheGround/Animals" unique_id=629956524 instance=ExtResource("27_5uden")] +position = Vector2(256, 470) +rotation = 3.1415927 +scale = Vector2(1, -1) + +[node name="Sheep2" parent="OnTheGround/Animals" unique_id=367348483 instance=ExtResource("27_5uden")] +position = Vector2(200, 502) + [node name="PropsHidden" type="Node2D" parent="OnTheGround" unique_id=576116804] modulate = Color(1, 1, 1, 0) y_sort_enabled = true @@ -551,6 +619,33 @@ sprite_frames = ExtResource("22_2yns8") [node name="Bush11" parent="OnTheGround/PropsHidden" unique_id=2044569790 instance=ExtResource("21_y3es2")] position = Vector2(288, 671) +[node name="Capycorn" parent="OnTheGround/PropsHidden" unique_id=2037025097 instance=ExtResource("25_5uden")] +position = Vector2(822, 702) +sprite_frames = ExtResource("23_2yns8") + +[node name="Bunny" parent="OnTheGround/PropsHidden" unique_id=315805950 instance=ExtResource("26_sxtjt")] +position = Vector2(915, 695) +rotation = 3.1415927 +scale = Vector2(1, -1) +sprite_frames = ExtResource("25_o57pd") + +[node name="Sheep" parent="OnTheGround/PropsHidden" unique_id=2113680453 instance=ExtResource("27_5uden")] +position = Vector2(1064, 622) + +[node name="Sheep2" parent="OnTheGround/PropsHidden" unique_id=781437296 instance=ExtResource("27_5uden")] +position = Vector2(1032, 646) + +[node name="Sheep3" parent="OnTheGround/PropsHidden" unique_id=836391868 instance=ExtResource("27_5uden")] +position = Vector2(1152, 638) +rotation = 3.1415927 +scale = Vector2(1, -1) + +[node name="Sheep4" parent="OnTheGround/PropsHidden" unique_id=307661823 instance=ExtResource("27_5uden")] +position = Vector2(640, 758) + +[node name="Sheep5" parent="OnTheGround/PropsHidden" unique_id=910301965 instance=ExtResource("27_5uden")] +position = Vector2(456, 694) + [node name="HUD" parent="." unique_id=1203174168 instance=ExtResource("3_nphcy")] [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1910663818] @@ -562,3 +657,6 @@ limit_left = 0 limit_top = 0 limit_right = 1280 limit_bottom = 1536 + +[connection signal="interaction_ended" from="OnTheGround/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/InteractArea" to="OnTheGround/Townie" method="_on_interact_area_interaction_started"] diff --git a/scenes/quests/lore_quests/quest_002/components/void_music.tres b/scenes/quests/lore_quests/quest_002/components/void_music.tres new file mode 100644 index 0000000000..6be520335d --- /dev/null +++ b/scenes/quests/lore_quests/quest_002/components/void_music.tres @@ -0,0 +1,86 @@ +[gd_resource type="AudioStreamInteractive" format=3 uid="uid://bwgtbylflkup2"] + +[ext_resource type="AudioStream" uid="uid://1pww50a3f6md" path="res://assets/first_party/music/The_Void_Still.ogg" id="1_5yrs4"] +[ext_resource type="AudioStream" uid="uid://dusykyrco7i2h" path="res://assets/first_party/music/The_Void_Creep_Intro.ogg" id="4_5yrs4"] +[ext_resource type="AudioStream" uid="uid://b376v2gafacfd" path="res://assets/first_party/music/The_Void_Creep_Loop.ogg" id="5_2erif"] +[ext_resource type="AudioStream" uid="uid://m1bbwocr2phc" path="res://assets/first_party/music/The_Void_Bloom.ogg" id="5_s1krv"] +[ext_resource type="AudioStream" uid="uid://ddh4fb6qd6f5d" path="res://assets/first_party/music/The_Void_Creep_Outro.ogg" id="6_4qn37"] + +[resource] +clip_count = 6 +clip_0/name = &"Still" +clip_0/stream = ExtResource("1_5yrs4") +clip_0/auto_advance = 0 +clip_1/name = &"Creep Intro" +clip_1/stream = ExtResource("4_5yrs4") +clip_1/auto_advance = 1 +clip_1/next_clip = 2 +clip_2/name = &"Creep Loop" +clip_2/stream = ExtResource("5_2erif") +clip_2/auto_advance = 0 +clip_3/name = &"Creep Outro" +clip_3/stream = ExtResource("6_4qn37") +clip_3/auto_advance = 1 +clip_3/next_clip = 0 +clip_4/name = &"Bloom" +clip_4/stream = ExtResource("5_s1krv") +clip_4/auto_advance = 0 +clip_5/name = &"Bloom 2" +clip_5/stream = ExtResource("5_s1krv") +clip_5/auto_advance = 0 +_transitions = { +Vector2i(0, 1): { +"fade_beats": 1.0, +"fade_mode": 2, +"from_time": 2, +"to_time": 1 +}, +Vector2i(0, 4): { +"fade_beats": 1.0, +"fade_mode": 4, +"from_time": 0, +"to_time": 2 +}, +Vector2i(0, 5): { +"fade_beats": 1.0, +"fade_mode": 4, +"from_time": 0, +"to_time": 2 +}, +Vector2i(1, 2): { +"fade_beats": 1.0, +"fade_mode": 0, +"from_time": 3, +"to_time": 1 +}, +Vector2i(2, 0): { +"fade_beats": 4.0, +"fade_mode": 3, +"from_time": 1, +"to_time": 1 +}, +Vector2i(2, 3): { +"fade_beats": 1.0, +"fade_mode": 0, +"from_time": 3, +"to_time": 1 +}, +Vector2i(3, 0): { +"fade_beats": 4.0, +"fade_mode": 1, +"from_time": 3, +"to_time": 1 +}, +Vector2i(4, 0): { +"fade_beats": 2.0, +"fade_mode": 4, +"from_time": 1, +"to_time": 2 +}, +Vector2i(5, 0): { +"fade_beats": 2.0, +"fade_mode": 4, +"from_time": 1, +"to_time": 2 +} +} diff --git a/scenes/quests/lore_quests/quest_002/quest.tres b/scenes/quests/lore_quests/quest_002/quest.tres index cdbbd69bf1..b9b2f80fa1 100644 --- a/scenes/quests/lore_quests/quest_002/quest.tres +++ b/scenes/quests/lore_quests/quest_002/quest.tres @@ -16,9 +16,10 @@ animations = [{ [resource] script = ExtResource("1_dlhxi") -title = "A Void" +title = "The Void" description = "StoryWeaver runs away from a growing emptiness that spreads across the land, smothering and swallowing everything it covers." first_scene = "uid://bm4ewr8p48x0i" +is_lore_quest = true sprite_frames = SubResource("SpriteFrames_l1xe8") animation_name = &"default" metadata/_custom_type_script = "uid://dts1hwdy3phin" diff --git a/scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/musician.dialogue b/scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/musician.dialogue new file mode 100644 index 0000000000..eaf8588c3a --- /dev/null +++ b/scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/musician.dialogue @@ -0,0 +1,42 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +if puzzle.is_solved(): + => item_hint + +if puzzle.get_progress() >= 1 or not first_conversation: + => hints + +set first_conversation = false + +{{npc_name}}: We meet again, {{player_name}}! +{{npc_name}}: Once again, you must relight the altars by playing a melody on the colorful rocks. +{{npc_name}}: Each altar contains the memory of a different tune. You must light each one in turn. +{{npc_name}}: Lighting all three altars should reveal a thread of Spirit on the island furthest east from here. +{{npc_name}}: But tread carefully: the altars are guarded by vicious StoryVores. Stay out of their sight! You should be safe if you stand north of the rocks. +{{npc_name}}: You should be safe if you stand north of the rocks. +{{npc_name}}: Good luck! +=> END + +~ hints +match puzzle.get_progress() + when 0 + {{npc_name}}: For the first altar, tap the first rock, then the second rock. + when 1 + {{npc_name}}: For the second altar, tap the second rock, then the third, and finally the first. + {{npc_name}}: The bridge between the second and third rocks broke long ago, so you will have to avoid the StoryVores. + when 2 + {{npc_name}}: For the last altar, tap the third rock, then the second, and finally the fourth. + {{npc_name}}: You will need to move quickly and carefully to reach the fourth rock. + {{npc_name}}: When you have lit the flame, don't come back to me. Head east to find the thread of Spirit. +{{npc_name}}: Good luck! +=> END + +~ item_hint +{{npc_name}}: Thank you, {{player_name}}! But our princess is in another castle! +{{player_name}}: ??? +{{npc_name}}: I don't know where that came from. +{{npc_name}}: I meant to say: the thread of Spirit is on another island. +{{npc_name}}: Evade the StoryVores, and cross the long bridge to the east of here. +{{npc_name}}: Farewell for now, {{player_name}}! +=> END diff --git a/scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/musician.dialogue.import b/scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/musician.dialogue.import new file mode 100644 index 0000000000..6db52be178 --- /dev/null +++ b/scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/musician.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://s4xti5gqmgj7" +path="res://.godot/imported/musician.dialogue-fe1fc040cfb73bb9bd92e08671362fdc.tres" + +[deps] + +source_file="res://scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/musician.dialogue" +dest_files=["res://.godot/imported/musician.dialogue-fe1fc040cfb73bb9bd92e08671362fdc.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/stealth_sequence_combo.tscn b/scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/stealth_sequence_combo.tscn index c7fbb2b1f8..8eec64af9f 100644 --- a/scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/stealth_sequence_combo.tscn +++ b/scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/stealth_sequence_combo.tscn @@ -8,7 +8,6 @@ [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="4_1ewrr"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="4_gssbn"] [ext_resource type="PackedScene" uid="uid://d37mebu7atru7" path="res://scenes/game_elements/characters/enemies/guard/guard.tscn" id="4_t8qi2"] -[ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="5_qwbbk"] [ext_resource type="SpriteFrames" uid="uid://chqrsy2uornaf" path="res://scenes/game_elements/characters/enemies/guard/components/storyvoretorch_frames_red.tres" id="6_gssbn"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="7_axovk"] [ext_resource type="AudioStream" uid="uid://dgpeb1dtmfqud" path="res://assets/third_party/sounds/characters/enemies/guard/AlertSound.ogg" id="7_gssbn"] @@ -23,6 +22,9 @@ [ext_resource type="PackedScene" uid="uid://ymcjwxrqt4e4" path="res://scenes/quests/lore_quests/quest_001/1_music_puzzle/components/musical_rock.tscn" id="15_lxyj7"] [ext_resource type="AudioStream" uid="uid://byi3b8aywp6py" path="res://assets/third_party/nepalese_hand_bells/handBells-a3.ogg" id="17_qhjva"] [ext_resource type="AudioStream" uid="uid://cmtiwg2cylmts" path="res://assets/third_party/nepalese_hand_bells/handBells-e4.ogg" id="18_0cbql"] +[ext_resource type="PackedScene" uid="uid://b3lldk3lo2mwl" path="res://scenes/game_elements/characters/npcs/sequence_puzzle_assistant/sequence_puzzle_assistant.tscn" id="18_gwj3x"] +[ext_resource type="Resource" uid="uid://s4xti5gqmgj7" path="res://scenes/quests/lore_quests/quest_003/1_stealth_sequence_combo/musician.dialogue" id="19_gwj3x"] +[ext_resource type="SpriteFrames" uid="uid://clx8sssi4tw8q" path="res://scenes/game_elements/characters/components/sprite_frames/musician.tres" id="20_1ewrr"] [ext_resource type="SpriteFrames" uid="uid://blhuke03t517u" path="res://scenes/quests/lore_quests/quest_001/1_music_puzzle/components/bonfire_sign/bonfire_sign_blank.tres" id="20_5dmi6"] [ext_resource type="AudioStream" uid="uid://cg57q82pb243w" path="res://assets/third_party/nepalese_hand_bells/handBells-c4.ogg" id="20_46vvk"] [ext_resource type="AudioStream" uid="uid://shckj7dsimyt" path="res://assets/third_party/nepalese_hand_bells/handBells-g#4.ogg" id="20_lxyj7"] @@ -48,139 +50,110 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="StealthSequenceCombo" type="Node2D" unique_id=1761996320] y_sort_enabled = true -metadata/patchwork_id = "e0d6d619601849f5be54868c6b970eb3" [node name="TileMapLayers" type="Node2D" parent="." unique_id=1025468685] y_sort_enabled = true metadata/_edit_lock_ = true -metadata/patchwork_id = "96b3c147dd204b70b4c7ced76179ca57" [node name="Water" type="TileMapLayer" parent="TileMapLayers" unique_id=970252850] z_index = -1 -tile_map_data = PackedByteArray("AAAAABYAAAAAAAAAAAAAABcAAAAAAAAAAAAAABgAAAAAAAAAAAAAABkAAAAAAAAAAAAAABoAAAAAAAAAAAAAABsAAAAAAAAAAAAAABwAAAAAAAAAAAABABYAAAAAAAAAAAABABcAAAAAAAAAAAABABgAAAAAAAAAAAABABkAAAAAAAAAAAABABoAAAAAAAAAAAABABsAAAAAAAAAAAABABwAAAAAAAAAAAACABYAAAAAAAAAAAACABcAAAAAAAAAAAACABgAAAAAAAAAAAACABkAAAAAAAAAAAACABoAAAAAAAAAAAACABsAAAAAAAAAAAACABwAAAAAAAAAAAADABYAAAAAAAAAAAADABcAAAAAAAAAAAADABgAAAAAAAAAAAADABkAAAAAAAAAAAADABoAAAAAAAAAAAADABsAAAAAAAAAAAADABwAAAAAAAAAAAAEABsAAAAAAAAAAAAEABwAAAAAAAAAAAAGABsAAAAAAAAAAAAGABwAAAAAAAAAAAAHABsAAAAAAAAAAAAHABwAAAAAAAAAAAAIABsAAAAAAAAAAAAIABwAAAAAAAAAAAAJABsAAAAAAAAAAAAJABwAAAAAAAAAAAAHABYAAAAAAAAAAAAHABcAAAAAAAAAAAAHABkAAAAAAAAAAAAHABoAAAAAAAAAAAAIABYAAAAAAAAAAAAIABcAAAAAAAAAAAAIABkAAAAAAAAAAAAIABoAAAAAAAAAAAAEABYAAAAAAAAAAAAFABYAAAAAAAAAAAAGABYAAAAAAAAAAAAJABYAAAAAAAAAAAAKABYAAAAAAAAAAAALABYAAAAAAAAAAAAMABYAAAAAAAAAAAANABYAAAAAAAAAAAAOABYAAAAAAAAAAAAPABYAAAAAAAAAAAAQABYAAAAAAAAAAAARABYAAAAAAAAAAAASABYAAAAAAAAAAAATABYAAAAAAAAAAAAUABYAAAAAAAAAAAAVABYAAAAAAAAAAAAWABYAAAAAAAAAAAAWABcAAAAAAAAAAAAWABgAAAAAAAAAAAAWABkAAAAAAAAAAAAWABoAAAAAAAAAAAAWABsAAAAAAAAAAAAWABwAAAAAAAAAAAAXABYAAAAAAAAAAAAXABcAAAAAAAAAAAAXABgAAAAAAAAAAAAXABkAAAAAAAAAAAAXABoAAAAAAAAAAAAXABsAAAAAAAAAAAAXABwAAAAAAAAAAAAYABYAAAAAAAAAAAAYABcAAAAAAAAAAAAYABgAAAAAAAAAAAAYABkAAAAAAAAAAAAYABoAAAAAAAAAAAAYABsAAAAAAAAAAAAYABwAAAAAAAAAAAAZABYAAAAAAAAAAAAZABcAAAAAAAAAAAAZABgAAAAAAAAAAAAZABkAAAAAAAAAAAAZABoAAAAAAAAAAAAZABsAAAAAAAAAAAAZABwAAAAAAAAAAAAVABsAAAAAAAAAAAAVABwAAAAAAAAAAAAQABsAAAAAAAAAAAAQABwAAAAAAAAAAAARABsAAAAAAAAAAAARABwAAAAAAAAAAAASABsAAAAAAAAAAAASABwAAAAAAAAAAAATABsAAAAAAAAAAAATABwAAAAAAAAAAAARABcAAAAAAAAAAAARABkAAAAAAAAAAAARABoAAAAAAAAAAAASABcAAAAAAAAAAAASABkAAAAAAAAAAAASABoAAAAAAAAAAAAMABcAAAAAAAAAAAAMABgAAAAAAAAAAAAMABkAAAAAAAAAAAAMABoAAAAAAAAAAAAMABsAAAAAAAAAAAANABcAAAAAAAAAAAANABgAAAAAAAAAAAANABkAAAAAAAAAAAANABoAAAAAAAAAAAANABsAAAAAAAAAAAALABsAAAAAAAAAAAALABwAAAAAAAAAAAAMABwAAAAAAAAAAAANABwAAAAAAAAAAAAOABsAAAAAAAAAAAAOABwAAAAAAAAAAAAAAB0AAAAAAAAAAAAAAB8AAAAAAAAAAAAAACAAAAAAAAAAAAASACAAAAAAAAAAAAAWACAAAAAAAAAAAAAXACAAAAAAAAAAAAAYACAAAAAAAAAAAAAZACAAAAAAAAAAAAAaACAAAAAAAAAAAAAaABwAAAAAAAAAAAAaAB0AAAAAAAAAAAAaAB8AAAAAAAAAAAD//xQAAAAAAAAAAAAAABQAAAAAAAAAAAABABQAAAAAAAAAAAACABQAAAAAAAAAAAADABQAAAAAAAAAAAAEABQAAAAAAAAAAAD//xUAAAAAAAAAAAD//xYAAAAAAAAAAAD//xcAAAAAAAAAAAD//xgAAAAAAAAAAAD//xkAAAAAAAAAAAD//xoAAAAAAAAAAAD//xsAAAAAAAAAAAD//xwAAAAAAAAAAAD//x0AAAAAAAAAAAD//x8AAAAAAAAAAAAbAB0AAAAAAAAAAAAcAB0AAAAAAAAAAAAdAB0AAAAAAAAAAAAeAB0AAAAAAAAAAAAfAB0AAAAAAAAAAAAgAB0AAAAAAAAAAAAhAB0AAAAAAAAAAAAiAB0AAAAAAAAAAAAjABgAAAAAAAAAAAAjABkAAAAAAAAAAAAjABoAAAAAAAAAAAAjABsAAAAAAAAAAAAjABwAAAAAAAAAAAAjAB0AAAAAAAAAAAAbAB8AAAAAAAAAAAAcAB8AAAAAAAAAAAAdAB8AAAAAAAAAAAAeAB8AAAAAAAAAAAAfAB8AAAAAAAAAAAAgAB8AAAAAAAAAAAAhAB8AAAAAAAAAAAAiAB8AAAAAAAAAAAAjAB8AAAAAAAAAAAAjABQAAAAAAAAAAAAfABQAAAAAAAAAAAAgABQAAAAAAAAAAAAhABQAAAAAAAAAAAAiABQAAAAAAAAAAAASABQAAAAAAAAAAAATABQAAAAAAAAAAAAUABQAAAAAAAAAAAAVABQAAAAAAAAAAAAWABQAAAAAAAAAAAAXABQAAAAAAAAAAAAYABQAAAAAAAAAAAAZABQAAAAAAAAAAAAaABQAAAAAAAAAAAAbABQAAAAAAAAAAAAcABQAAAAAAAAAAAAdABQAAAAAAAAAAAAeABQAAAAAAAAAAAAFABQAAAAAAAAAAAAGABQAAAAAAAAAAAAHABQAAAAAAAAAAAAIABQAAAAAAAAAAAAJABQAAAAAAAAAAAAKABQAAAAAAAAAAAALABQAAAAAAAAAAAAMABQAAAAAAAAAAAANABQAAAAAAAAAAAAOABQAAAAAAAAAAAAPABQAAAAAAAAAAAAQABQAAAAAAAAAAAARABQAAAAAAAAAAAASACEAAAAAAAAAAAASACIAAAAAAAAAAAALACIAAAAAAAAAAAANACIAAAAAAAAAAAAOACIAAAAAAAAAAAAPACIAAAAAAAAAAAAQACIAAAAAAAAAAAARACIAAAAAAAAAAAAKACIAAAAAAAAAAAAKACYAAAAAAAAAAAALACYAAAAAAAAAAAAMACYAAAAAAAAAAAANACYAAAAAAAAAAAAOACYAAAAAAAAAAAAPACYAAAAAAAAAAAAQACYAAAAAAAAAAAARACYAAAAAAAAAAAASACYAAAAAAAAAAAATACYAAAAAAAAAAAAUACYAAAAAAAAAAAAVACYAAAAAAAAAAAAWACEAAAAAAAAAAAAWACIAAAAAAAAAAAAWACMAAAAAAAAAAAAWACQAAAAAAAAAAAAWACUAAAAAAAAAAAAWACYAAAAAAAAAAAATAB0AAAAAAAAAAAATAB4AAAAAAAAAAAATAB8AAAAAAAAAAAALACEAAAAAAAAAAAANACEAAAAAAAAAAAD8/x0AAAAAAAAAAAD9/x0AAAAAAAAAAAD+/x0AAAAAAAAAAAD8/xwAAAAAAAAAAAD9/xwAAAAAAAAAAAD+/xwAAAAAAAAAAAD8/x8AAAAAAAAAAAD9/x8AAAAAAAAAAAD+/x8AAAAAAAAAAAD8/yAAAAAAAAAAAAD8/yEAAAAAAAAAAAAAACIAAAAAAAAAAAABACIAAAAAAAAAAAACACIAAAAAAAAAAAADACIAAAAAAAAAAAAEACIAAAAAAAAAAAAFACIAAAAAAAAAAAAGACIAAAAAAAAAAAAHACIAAAAAAAAAAAAIACIAAAAAAAAAAAAJACIAAAAAAAAAAAAAACMAAAAAAAAAAAAAACQAAAAAAAAAAAAAACUAAAAAAAAAAAAAACYAAAAAAAAAAAABACYAAAAAAAAAAAACACYAAAAAAAAAAAADACYAAAAAAAAAAAAEACYAAAAAAAAAAAAFACYAAAAAAAAAAAAGACYAAAAAAAAAAAAHACYAAAAAAAAAAAAIACYAAAAAAAAAAAAJACYAAAAAAAAAAAASAB8AAAAAAAAAAADy/xEAAAAAAAAAAADy/xIAAAAAAAAAAADy/xMAAAAAAAAAAADy/xQAAAAAAAAAAADy/xUAAAAAAAAAAADy/xYAAAAAAAAAAADy/xcAAAAAAAAAAADy/xgAAAAAAAAAAADy/xkAAAAAAAAAAADy/xoAAAAAAAAAAADy/xsAAAAAAAAAAADz/xEAAAAAAAAAAADz/xIAAAAAAAAAAADz/xMAAAAAAAAAAADz/xQAAAAAAAAAAADz/xUAAAAAAAAAAADz/xYAAAAAAAAAAADz/xcAAAAAAAAAAADz/xgAAAAAAAAAAADz/xkAAAAAAAAAAADz/xoAAAAAAAAAAADz/xsAAAAAAAAAAAD0/xEAAAAAAAAAAAD0/xIAAAAAAAAAAAD0/xMAAAAAAAAAAAD0/xQAAAAAAAAAAAD0/xUAAAAAAAAAAAD0/xYAAAAAAAAAAAD0/xcAAAAAAAAAAAD0/xgAAAAAAAAAAAD0/xkAAAAAAAAAAAD0/xoAAAAAAAAAAAD0/xsAAAAAAAAAAAD1/xEAAAAAAAAAAAD1/xIAAAAAAAAAAAD1/xMAAAAAAAAAAAD1/xQAAAAAAAAAAAD1/xUAAAAAAAAAAAD1/xYAAAAAAAAAAAD1/xcAAAAAAAAAAAD1/xgAAAAAAAAAAAD1/xkAAAAAAAAAAAD1/xoAAAAAAAAAAAD1/xsAAAAAAAAAAAD2/xEAAAAAAAAAAAD2/xIAAAAAAAAAAAD2/xMAAAAAAAAAAAD2/xQAAAAAAAAAAAD2/xUAAAAAAAAAAAD2/xYAAAAAAAAAAAD2/xcAAAAAAAAAAAD2/xgAAAAAAAAAAAD2/xkAAAAAAAAAAAD2/xoAAAAAAAAAAAD2/xsAAAAAAAAAAAD3/xEAAAAAAAAAAAD3/xIAAAAAAAAAAAD3/xMAAAAAAAAAAAD3/xQAAAAAAAAAAAD3/xUAAAAAAAAAAAD3/xYAAAAAAAAAAAD3/xcAAAAAAAAAAAD3/xgAAAAAAAAAAAD3/xkAAAAAAAAAAAD3/xoAAAAAAAAAAAD3/xsAAAAAAAAAAAD4/xEAAAAAAAAAAAD4/xIAAAAAAAAAAAD4/xMAAAAAAAAAAAD4/xQAAAAAAAAAAAD4/xUAAAAAAAAAAAD4/xYAAAAAAAAAAAD4/xcAAAAAAAAAAAD4/xgAAAAAAAAAAAD4/xkAAAAAAAAAAAD4/xoAAAAAAAAAAAD4/xsAAAAAAAAAAAD5/xEAAAAAAAAAAAD5/xIAAAAAAAAAAAD5/xMAAAAAAAAAAAD5/xQAAAAAAAAAAAD5/xUAAAAAAAAAAAD5/xYAAAAAAAAAAAD5/xcAAAAAAAAAAAD5/xgAAAAAAAAAAAD5/xkAAAAAAAAAAAD5/xoAAAAAAAAAAAD5/xsAAAAAAAAAAAD6/xEAAAAAAAAAAAD6/xIAAAAAAAAAAAD6/xMAAAAAAAAAAAD6/xQAAAAAAAAAAAD6/xUAAAAAAAAAAAD6/xYAAAAAAAAAAAD6/xcAAAAAAAAAAAD6/xgAAAAAAAAAAAD6/xkAAAAAAAAAAAD6/xoAAAAAAAAAAAD6/xsAAAAAAAAAAAD7/xEAAAAAAAAAAAD7/xIAAAAAAAAAAAD7/xMAAAAAAAAAAAD7/xQAAAAAAAAAAAD7/xUAAAAAAAAAAAD7/xYAAAAAAAAAAAD7/xcAAAAAAAAAAAD7/xgAAAAAAAAAAAD7/xkAAAAAAAAAAAD7/xoAAAAAAAAAAAD7/xsAAAAAAAAAAAD8/xEAAAAAAAAAAAD8/xIAAAAAAAAAAAD8/xMAAAAAAAAAAAD8/xQAAAAAAAAAAAD8/xUAAAAAAAAAAAD8/xYAAAAAAAAAAAD8/xcAAAAAAAAAAAD8/xgAAAAAAAAAAAD8/xkAAAAAAAAAAAD8/xoAAAAAAAAAAAD8/xsAAAAAAAAAAAD9/xEAAAAAAAAAAAD9/xIAAAAAAAAAAAD9/xMAAAAAAAAAAAD9/xQAAAAAAAAAAAD9/xUAAAAAAAAAAAD9/xYAAAAAAAAAAAD9/xcAAAAAAAAAAAD9/xgAAAAAAAAAAAD9/xkAAAAAAAAAAAD9/xoAAAAAAAAAAAD9/xsAAAAAAAAAAAD+/xEAAAAAAAAAAAD+/xIAAAAAAAAAAAD+/xMAAAAAAAAAAAD+/xQAAAAAAAAAAAD+/xUAAAAAAAAAAAD+/xYAAAAAAAAAAAD+/xcAAAAAAAAAAAD+/xgAAAAAAAAAAAD+/xkAAAAAAAAAAAD+/xoAAAAAAAAAAAD+/xsAAAAAAAAAAADx/xoAAAAAAAAAAADx/xsAAAAAAAAAAADx/xwAAAAAAAAAAADx/x0AAAAAAAAAAADx/x4AAAAAAAAAAADx/x8AAAAAAAAAAADx/yAAAAAAAAAAAADx/yEAAAAAAAAAAADx/yIAAAAAAAAAAADx/yMAAAAAAAAAAADx/yQAAAAAAAAAAADx/yUAAAAAAAAAAADx/yYAAAAAAAAAAADx/ycAAAAAAAAAAADx/ygAAAAAAAAAAADx/ykAAAAAAAAAAADx/yoAAAAAAAAAAADx/ysAAAAAAAAAAADy/xwAAAAAAAAAAADy/x0AAAAAAAAAAADy/x4AAAAAAAAAAADy/x8AAAAAAAAAAADy/yAAAAAAAAAAAADy/yEAAAAAAAAAAADy/yIAAAAAAAAAAADy/yMAAAAAAAAAAADy/yQAAAAAAAAAAADy/yUAAAAAAAAAAADy/yYAAAAAAAAAAADy/ycAAAAAAAAAAADy/ygAAAAAAAAAAADy/ykAAAAAAAAAAADy/yoAAAAAAAAAAADy/ysAAAAAAAAAAADz/xwAAAAAAAAAAADz/x0AAAAAAAAAAADz/x4AAAAAAAAAAADz/x8AAAAAAAAAAADz/yAAAAAAAAAAAADz/yEAAAAAAAAAAADz/yIAAAAAAAAAAADz/yMAAAAAAAAAAADz/yQAAAAAAAAAAADz/yUAAAAAAAAAAADz/yYAAAAAAAAAAADz/ycAAAAAAAAAAADz/ygAAAAAAAAAAADz/ykAAAAAAAAAAADz/yoAAAAAAAAAAADz/ysAAAAAAAAAAAD0/xwAAAAAAAAAAAD0/x0AAAAAAAAAAAD0/x4AAAAAAAAAAAD0/x8AAAAAAAAAAAD0/yAAAAAAAAAAAAD0/yEAAAAAAAAAAAD0/yIAAAAAAAAAAAD0/yMAAAAAAAAAAAD0/yQAAAAAAAAAAAD0/yUAAAAAAAAAAAD0/yYAAAAAAAAAAAD0/ycAAAAAAAAAAAD0/ygAAAAAAAAAAAD0/ykAAAAAAAAAAAD0/yoAAAAAAAAAAAD0/ysAAAAAAAAAAAD1/yEAAAAAAAAAAAD2/yEAAAAAAAAAAAD3/yEAAAAAAAAAAAD4/yEAAAAAAAAAAAD5/yEAAAAAAAAAAAD6/yEAAAAAAAAAAAD7/yEAAAAAAAAAAAAkABoAAAAAAAAAAAAlABoAAAAAAAAAAAAmABoAAAAAAAAAAAAnABoAAAAAAAAAAAAoABoAAAAAAAAAAAApABoAAAAAAAAAAAAoABsAAAAAAAAAAAAoABwAAAAAAAAAAAAoAB0AAAAAAAAAAAAoAB4AAAAAAAAAAAAoAB8AAAAAAAAAAAAoACAAAAAAAAAAAAAoACEAAAAAAAAAAAApABsAAAAAAAAAAAApABwAAAAAAAAAAAApAB0AAAAAAAAAAAApAB4AAAAAAAAAAAApAB8AAAAAAAAAAAApACAAAAAAAAAAAAApACEAAAAAAAAAAAAhACEAAAAAAAAAAAAhACIAAAAAAAAAAAAiACEAAAAAAAAAAAAiACIAAAAAAAAAAAAjACEAAAAAAAAAAAAjACIAAAAAAAAAAAAkACEAAAAAAAAAAAAkACIAAAAAAAAAAAAlACEAAAAAAAAAAAAlACIAAAAAAAAAAAAmACEAAAAAAAAAAAAmACIAAAAAAAAAAAAnACEAAAAAAAAAAAAnACIAAAAAAAAAAAAoACIAAAAAAAAAAAApACIAAAAAAAAAAAAjACAAAAAAAAAAAAAKACEAAAAAAAAAAAAJACEAAAAAAAAAAAAIACEAAAAAAAAAAAAHACEAAAAAAAAAAAAGACEAAAAAAAAAAAAFACEAAAAAAAAAAAAEACEAAAAAAAAAAAADACEAAAAAAAAAAAACACEAAAAAAAAAAAABACEAAAAAAAAAAAAAACEAAAAAAAAAAAAOACEAAAAAAAAAAAAPACEAAAAAAAAAAAAQACEAAAAAAAAAAAARACEAAAAAAAAAAAD8/x4AAAAAAAAAAQD9/x4AAAAAAAAAAQD+/x4AAAAAAAAAAQD//x4AAAAAAAAAAQAAAB4AAAAAAAAAAQAFABsAAAAAAAAAAQAFABwAAAAAAAAAAQAKABsAAAAAAAAAAQAKABwAAAAAAAAAAQAPABsAAAAAAAAAAQAPABwAAAAAAAAAAQAUABsAAAAAAAAAAQAUABwAAAAAAAAAAQAaAB4AAAAAAAAAAQAbAB4AAAAAAAAAAQAcAB4AAAAAAAAAAQAdAB4AAAAAAAAAAQAeAB4AAAAAAAAAAQAfAB4AAAAAAAAAAQAgAB4AAAAAAAAAAQAhAB4AAAAAAAAAAQAiAB4AAAAAAAAAAQAjAB4AAAAAAAAAAQAMACEAAAAAAAAAAQAMACIAAAAAAAAAAQAZACQAAAAAAAAAAAAaACQAAAAAAAAAAAAaACUAAAAAAAAAAAAZACUAAAAAAAAAAAAdACQAAAAAAAAAAAAdACUAAAAAAAAAAAAeACUAAAAAAAAAAAAeACQAAAAAAAAAAAAbACgAAAAAAAAAAAAbACcAAAAAAAAAAAAcACcAAAAAAAAAAAAcACgAAAAAAAAAAAAXACkAAAAAAAAAAAAXACoAAAAAAAAAAAAXACsAAAAAAAAAAAAYACsAAAAAAAAAAAAZACwAAAAAAAAAAAAaACwAAAAAAAAAAAAbACwAAAAAAAAAAAAcACwAAAAAAAAAAAAdACwAAAAAAAAAAAAeACwAAAAAAAAAAAAfACwAAAAAAAAAAAAgACwAAAAAAAAAAAAgACsAAAAAAAAAAAAhACsAAAAAAAAAAAAhACoAAAAAAAAAAAAhACkAAAAAAAAAAAD9/yAAAAAAAAAAAAD9/yEAAAAAAAAAAAD9/yIAAAAAAAAAAAD9/yMAAAAAAAAAAAD9/yQAAAAAAAAAAAD9/yUAAAAAAAAAAAD9/yYAAAAAAAAAAAD9/ycAAAAAAAAAAAD9/ygAAAAAAAAAAAD9/ykAAAAAAAAAAAD9/yoAAAAAAAAAAAD9/ysAAAAAAAAAAAD+/yAAAAAAAAAAAAD+/yEAAAAAAAAAAAD+/yIAAAAAAAAAAAD+/yMAAAAAAAAAAAD+/yQAAAAAAAAAAAD+/yUAAAAAAAAAAAD+/yYAAAAAAAAAAAD+/ycAAAAAAAAAAAD+/ygAAAAAAAAAAAD+/ykAAAAAAAAAAAD+/yoAAAAAAAAAAAD+/ysAAAAAAAAAAAD//yAAAAAAAAAAAAD//yEAAAAAAAAAAAD//yIAAAAAAAAAAAD//yMAAAAAAAAAAAD//yQAAAAAAAAAAAD//yUAAAAAAAAAAAD//yYAAAAAAAAAAAD//ycAAAAAAAAAAAD//ygAAAAAAAAAAAD//ykAAAAAAAAAAAD//yoAAAAAAAAAAAD//ysAAAAAAAAAAAD1/yIAAAAAAAAAAAD1/yMAAAAAAAAAAAD1/yQAAAAAAAAAAAD1/yUAAAAAAAAAAAD1/yYAAAAAAAAAAAD1/ycAAAAAAAAAAAD1/ygAAAAAAAAAAAD1/ykAAAAAAAAAAAD1/yoAAAAAAAAAAAD1/ysAAAAAAAAAAAD2/yIAAAAAAAAAAAD2/yMAAAAAAAAAAAD2/yQAAAAAAAAAAAD2/yUAAAAAAAAAAAD2/yYAAAAAAAAAAAD2/ycAAAAAAAAAAAD2/ygAAAAAAAAAAAD2/ykAAAAAAAAAAAD2/yoAAAAAAAAAAAD2/ysAAAAAAAAAAAD3/yIAAAAAAAAAAAD3/yMAAAAAAAAAAAD3/yQAAAAAAAAAAAD3/yUAAAAAAAAAAAD3/yYAAAAAAAAAAAD3/ycAAAAAAAAAAAD3/ygAAAAAAAAAAAD3/ykAAAAAAAAAAAD3/yoAAAAAAAAAAAD3/ysAAAAAAAAAAAD4/yIAAAAAAAAAAAD4/yMAAAAAAAAAAAD4/yQAAAAAAAAAAAD4/yUAAAAAAAAAAAD4/yYAAAAAAAAAAAD4/ycAAAAAAAAAAAD4/ygAAAAAAAAAAAD4/ykAAAAAAAAAAAD4/yoAAAAAAAAAAAD4/ysAAAAAAAAAAAD5/yIAAAAAAAAAAAD5/yMAAAAAAAAAAAD5/yQAAAAAAAAAAAD5/yUAAAAAAAAAAAD5/yYAAAAAAAAAAAD5/ycAAAAAAAAAAAD5/ygAAAAAAAAAAAD5/ykAAAAAAAAAAAD5/yoAAAAAAAAAAAD5/ysAAAAAAAAAAAD6/yIAAAAAAAAAAAD6/yMAAAAAAAAAAAD6/yQAAAAAAAAAAAD6/yUAAAAAAAAAAAD6/yYAAAAAAAAAAAD6/ycAAAAAAAAAAAD6/ygAAAAAAAAAAAD6/ykAAAAAAAAAAAD6/yoAAAAAAAAAAAD6/ysAAAAAAAAAAAD7/yIAAAAAAAAAAAD7/yMAAAAAAAAAAAD7/yQAAAAAAAAAAAD7/yUAAAAAAAAAAAD7/yYAAAAAAAAAAAD7/ycAAAAAAAAAAAD7/ygAAAAAAAAAAAD7/ykAAAAAAAAAAAD7/yoAAAAAAAAAAAD7/ysAAAAAAAAAAAD8/yIAAAAAAAAAAAD8/yMAAAAAAAAAAAD8/yQAAAAAAAAAAAD8/yUAAAAAAAAAAAD8/yYAAAAAAAAAAAD8/ycAAAAAAAAAAAD8/ygAAAAAAAAAAAD8/ykAAAAAAAAAAAD8/yoAAAAAAAAAAAD8/ysAAAAAAAAAAAAAACcAAAAAAAAAAAAAACgAAAAAAAAAAAAAACkAAAAAAAAAAAAAACoAAAAAAAAAAAAAACsAAAAAAAAAAAABACcAAAAAAAAAAAABACgAAAAAAAAAAAABACkAAAAAAAAAAAABACoAAAAAAAAAAAABACsAAAAAAAAAAAACACcAAAAAAAAAAAACACgAAAAAAAAAAAACACkAAAAAAAAAAAACACoAAAAAAAAAAAACACsAAAAAAAAAAAADACcAAAAAAAAAAAADACgAAAAAAAAAAAADACkAAAAAAAAAAAADACoAAAAAAAAAAAADACsAAAAAAAAAAAAEACcAAAAAAAAAAAAEACgAAAAAAAAAAAAEACkAAAAAAAAAAAAEACoAAAAAAAAAAAAEACsAAAAAAAAAAAAFACcAAAAAAAAAAAAFACgAAAAAAAAAAAAFACkAAAAAAAAAAAAFACoAAAAAAAAAAAAFACsAAAAAAAAAAAAGACcAAAAAAAAAAAAGACgAAAAAAAAAAAAGACkAAAAAAAAAAAAGACoAAAAAAAAAAAAGACsAAAAAAAAAAAAHACcAAAAAAAAAAAAHACgAAAAAAAAAAAAHACkAAAAAAAAAAAAHACoAAAAAAAAAAAAHACsAAAAAAAAAAAAIACcAAAAAAAAAAAAIACgAAAAAAAAAAAAIACkAAAAAAAAAAAAIACoAAAAAAAAAAAAIACsAAAAAAAAAAAAJACcAAAAAAAAAAAAJACgAAAAAAAAAAAAJACkAAAAAAAAAAAAJACoAAAAAAAAAAAAJACsAAAAAAAAAAAAKACcAAAAAAAAAAAAKACgAAAAAAAAAAAAKACkAAAAAAAAAAAAKACoAAAAAAAAAAAAKACsAAAAAAAAAAAALACcAAAAAAAAAAAALACgAAAAAAAAAAAALACkAAAAAAAAAAAALACoAAAAAAAAAAAALACsAAAAAAAAAAAAMACcAAAAAAAAAAAAMACgAAAAAAAAAAAAMACkAAAAAAAAAAAAMACoAAAAAAAAAAAAMACsAAAAAAAAAAAANACcAAAAAAAAAAAANACgAAAAAAAAAAAANACkAAAAAAAAAAAANACoAAAAAAAAAAAANACsAAAAAAAAAAAAOACcAAAAAAAAAAAAOACgAAAAAAAAAAAAOACkAAAAAAAAAAAAOACoAAAAAAAAAAAAOACsAAAAAAAAAAAAPACcAAAAAAAAAAAAPACgAAAAAAAAAAAAPACkAAAAAAAAAAAAPACoAAAAAAAAAAAAPACsAAAAAAAAAAAAQACcAAAAAAAAAAAAQACgAAAAAAAAAAAAQACkAAAAAAAAAAAAQACoAAAAAAAAAAAAQACsAAAAAAAAAAAARACcAAAAAAAAAAAARACgAAAAAAAAAAAARACkAAAAAAAAAAAARACoAAAAAAAAAAAARACsAAAAAAAAAAAASACcAAAAAAAAAAAASACgAAAAAAAAAAAASACkAAAAAAAAAAAASACoAAAAAAAAAAAASACsAAAAAAAAAAAATACcAAAAAAAAAAAATACgAAAAAAAAAAAATACkAAAAAAAAAAAATACoAAAAAAAAAAAATACsAAAAAAAAAAAAUACcAAAAAAAAAAAAUACgAAAAAAAAAAAAUACkAAAAAAAAAAAAUACoAAAAAAAAAAAAUACsAAAAAAAAAAAAVACcAAAAAAAAAAAAVACgAAAAAAAAAAAAVACkAAAAAAAAAAAAVACoAAAAAAAAAAAAVACsAAAAAAAAAAAAWACcAAAAAAAAAAAAWACgAAAAAAAAAAAAWACkAAAAAAAAAAAAWACoAAAAAAAAAAAAWACsAAAAAAAAAAAAXACcAAAAAAAAAAAAXACgAAAAAAAAAAAAYACcAAAAAAAAAAAAYACgAAAAAAAAAAAAYACkAAAAAAAAAAAAYACoAAAAAAAAAAAAZACcAAAAAAAAAAAAZACgAAAAAAAAAAAAZACkAAAAAAAAAAAAZACoAAAAAAAAAAAAZACsAAAAAAAAAAAAaACcAAAAAAAAAAAAaACgAAAAAAAAAAAAaACkAAAAAAAAAAAAaACoAAAAAAAAAAAAaACsAAAAAAAAAAAAbACkAAAAAAAAAAAAbACoAAAAAAAAAAAAbACsAAAAAAAAAAAAcACkAAAAAAAAAAAAcACoAAAAAAAAAAAAcACsAAAAAAAAAAAAdACcAAAAAAAAAAAAdACgAAAAAAAAAAAAdACkAAAAAAAAAAAAdACoAAAAAAAAAAAAdACsAAAAAAAAAAAAeACcAAAAAAAAAAAAeACgAAAAAAAAAAAAeACkAAAAAAAAAAAAeACoAAAAAAAAAAAAeACsAAAAAAAAAAAAfACcAAAAAAAAAAAAfACgAAAAAAAAAAAAfACkAAAAAAAAAAAAfACoAAAAAAAAAAAAfACsAAAAAAAAAAAAgACcAAAAAAAAAAAAgACgAAAAAAAAAAAAgACkAAAAAAAAAAAAgACoAAAAAAAAAAAAhACcAAAAAAAAAAAAhACgAAAAAAAAAAAAiACcAAAAAAAAAAAAiACgAAAAAAAAAAAAiACkAAAAAAAAAAAAiACoAAAAAAAAAAAAiACsAAAAAAAAAAAAWACwAAAAAAAAAAAAXACwAAAAAAAAAAAAYACwAAAAAAAAAAAAhACwAAAAAAAAAAAAiACwAAAAAAAAAAAAjACwAAAAAAAAAAAAbACAAAAAAAAAAAAAbACEAAAAAAAAAAAAbACIAAAAAAAAAAAAbACMAAAAAAAAAAAAbACQAAAAAAAAAAAAbACUAAAAAAAAAAAAbACYAAAAAAAAAAAAcACAAAAAAAAAAAAAcACEAAAAAAAAAAAAcACIAAAAAAAAAAAAcACMAAAAAAAAAAAAcACQAAAAAAAAAAAAcACUAAAAAAAAAAAAcACYAAAAAAAAAAAAdACAAAAAAAAAAAAAdACEAAAAAAAAAAAAdACIAAAAAAAAAAAAdACMAAAAAAAAAAAAdACYAAAAAAAAAAAAeACAAAAAAAAAAAAAeACEAAAAAAAAAAAAeACIAAAAAAAAAAAAeACMAAAAAAAAAAAAeACYAAAAAAAAAAAAfACAAAAAAAAAAAAAfACEAAAAAAAAAAAAfACIAAAAAAAAAAAAfACMAAAAAAAAAAAAfACQAAAAAAAAAAAAfACUAAAAAAAAAAAAfACYAAAAAAAAAAAAgACAAAAAAAAAAAAAgACEAAAAAAAAAAAAgACIAAAAAAAAAAAAgACMAAAAAAAAAAAAgACQAAAAAAAAAAAAgACUAAAAAAAAAAAAgACYAAAAAAAAAAAAhACAAAAAAAAAAAAAhACMAAAAAAAAAAAAhACQAAAAAAAAAAAAhACUAAAAAAAAAAAAhACYAAAAAAAAAAAAiACAAAAAAAAAAAAAiACMAAAAAAAAAAAAiACQAAAAAAAAAAAAiACUAAAAAAAAAAAAiACYAAAAAAAAAAAAXACEAAAAAAAAAAAAXACIAAAAAAAAAAAAXACMAAAAAAAAAAAAXACQAAAAAAAAAAAAXACUAAAAAAAAAAAAXACYAAAAAAAAAAAAYACEAAAAAAAAAAAAYACIAAAAAAAAAAAAYACMAAAAAAAAAAAAYACQAAAAAAAAAAAAYACUAAAAAAAAAAAAYACYAAAAAAAAAAAAZACEAAAAAAAAAAAAZACIAAAAAAAAAAAAZACMAAAAAAAAAAAAZACYAAAAAAAAAAAAaACEAAAAAAAAAAAAaACIAAAAAAAAAAAAaACMAAAAAAAAAAAAaACYAAAAAAAAAAAAjACMAAAAAAAAAAAAjACQAAAAAAAAAAAAjACUAAAAAAAAAAAAjACYAAAAAAAAAAAAjACcAAAAAAAAAAAAjACgAAAAAAAAAAAAkACMAAAAAAAAAAAAkACQAAAAAAAAAAAAkACUAAAAAAAAAAAAkACYAAAAAAAAAAAAkACcAAAAAAAAAAAAkACgAAAAAAAAAAAAlACMAAAAAAAAAAAAlACQAAAAAAAAAAAAlACUAAAAAAAAAAAAlACYAAAAAAAAAAAAlACcAAAAAAAAAAAAlACgAAAAAAAAAAAAmACMAAAAAAAAAAAAmACQAAAAAAAAAAAAmACUAAAAAAAAAAAAmACYAAAAAAAAAAAAmACcAAAAAAAAAAAAmACgAAAAAAAAAAAAnACMAAAAAAAAAAAAnACQAAAAAAAAAAAAnACUAAAAAAAAAAAAnACYAAAAAAAAAAAAnACcAAAAAAAAAAAAnACgAAAAAAAAAAAAoACMAAAAAAAAAAAAoACQAAAAAAAAAAAAoACUAAAAAAAAAAAAoACYAAAAAAAAAAAAoACcAAAAAAAAAAAAoACgAAAAAAAAAAAApACMAAAAAAAAAAAApACQAAAAAAAAAAAApACUAAAAAAAAAAAApACYAAAAAAAAAAAApACcAAAAAAAAAAAApACgAAAAAAAAAAAAaABYAAAAAAAAAAAAaABcAAAAAAAAAAAAaABgAAAAAAAAAAAAaABkAAAAAAAAAAAAaABoAAAAAAAAAAAAbABYAAAAAAAAAAAAbABcAAAAAAAAAAAAbABgAAAAAAAAAAAAbABkAAAAAAAAAAAAbABoAAAAAAAAAAAAcABYAAAAAAAAAAAAcABcAAAAAAAAAAAAcABgAAAAAAAAAAAAcABkAAAAAAAAAAAAcABoAAAAAAAAAAAAdABYAAAAAAAAAAAAdABcAAAAAAAAAAAAdABgAAAAAAAAAAAAdABkAAAAAAAAAAAAdABoAAAAAAAAAAAAeABYAAAAAAAAAAAAeABcAAAAAAAAAAAAeABgAAAAAAAAAAAAeABkAAAAAAAAAAAAeABoAAAAAAAAAAAAfABYAAAAAAAAAAAAfABcAAAAAAAAAAAAfABgAAAAAAAAAAAAfABkAAAAAAAAAAAAfABoAAAAAAAAAAAAgABYAAAAAAAAAAAAgABcAAAAAAAAAAAAgABgAAAAAAAAAAAAgABkAAAAAAAAAAAAgABoAAAAAAAAAAAAhABYAAAAAAAAAAAAhABcAAAAAAAAAAAAhABgAAAAAAAAAAAAhABkAAAAAAAAAAAAhABoAAAAAAAAAAAAiABYAAAAAAAAAAAAiABcAAAAAAAAAAAAiABgAAAAAAAAAAAAiABkAAAAAAAAAAAAiABoAAAAAAAAAAAAjABYAAAAAAAAAAAAjABcAAAAAAAAAAAAkABYAAAAAAAAAAAAkABcAAAAAAAAAAAAkABgAAAAAAAAAAAAkABkAAAAAAAAAAAAlABYAAAAAAAAAAAAlABcAAAAAAAAAAAAlABgAAAAAAAAAAAAlABkAAAAAAAAAAAAmABYAAAAAAAAAAAAmABcAAAAAAAAAAAAmABgAAAAAAAAAAAAmABkAAAAAAAAAAAAnABYAAAAAAAAAAAAnABcAAAAAAAAAAAAnABgAAAAAAAAAAAAnABkAAAAAAAAAAAAoABYAAAAAAAAAAAAoABcAAAAAAAAAAAAoABgAAAAAAAAAAAAoABkAAAAAAAAAAAApABYAAAAAAAAAAAApABcAAAAAAAAAAAApABgAAAAAAAAAAAApABkAAAAAAAAAAAAaABsAAAAAAAAAAAAbABsAAAAAAAAAAAAbABwAAAAAAAAAAAAcABsAAAAAAAAAAAAcABwAAAAAAAAAAAAdABsAAAAAAAAAAAAdABwAAAAAAAAAAAAeABsAAAAAAAAAAAAeABwAAAAAAAAAAAAfABsAAAAAAAAAAAAfABwAAAAAAAAAAAAgABsAAAAAAAAAAAAgABwAAAAAAAAAAAAhABsAAAAAAAAAAAAhABwAAAAAAAAAAAAiABsAAAAAAAAAAAAiABwAAAAAAAAAAAAHABgAAAAAAAAAAQAIABgAAAAAAAAAAQD//xEAAAAAAAAAAAD//xIAAAAAAAAAAAD//xMAAAAAAAAAAAAAABEAAAAAAAAAAAAAABIAAAAAAAAAAAAAABMAAAAAAAAAAAAAABUAAAAAAAAAAAABABEAAAAAAAAAAAABABIAAAAAAAAAAAABABMAAAAAAAAAAAABABUAAAAAAAAAAAACABEAAAAAAAAAAAACABIAAAAAAAAAAAACABMAAAAAAAAAAAACABUAAAAAAAAAAAADABEAAAAAAAAAAAADABIAAAAAAAAAAAADABMAAAAAAAAAAAADABUAAAAAAAAAAAAEABEAAAAAAAAAAAAEABIAAAAAAAAAAAAEABMAAAAAAAAAAAAEABUAAAAAAAAAAAAFABEAAAAAAAAAAAAFABIAAAAAAAAAAAAFABMAAAAAAAAAAAAFABUAAAAAAAAAAAAGABEAAAAAAAAAAAAGABIAAAAAAAAAAAAGABMAAAAAAAAAAAAGABUAAAAAAAAAAAAHABEAAAAAAAAAAAAHABIAAAAAAAAAAAAHABMAAAAAAAAAAAAHABUAAAAAAAAAAAAIABEAAAAAAAAAAAAIABIAAAAAAAAAAAAIABMAAAAAAAAAAAAIABUAAAAAAAAAAAAJABEAAAAAAAAAAAAJABIAAAAAAAAAAAAJABMAAAAAAAAAAAAJABUAAAAAAAAAAAAKABEAAAAAAAAAAAAKABIAAAAAAAAAAAAKABMAAAAAAAAAAAAKABUAAAAAAAAAAAALABEAAAAAAAAAAAALABIAAAAAAAAAAAALABMAAAAAAAAAAAALABUAAAAAAAAAAAAMABEAAAAAAAAAAAAMABIAAAAAAAAAAAAMABMAAAAAAAAAAAAMABUAAAAAAAAAAAANABEAAAAAAAAAAAANABIAAAAAAAAAAAANABMAAAAAAAAAAAANABUAAAAAAAAAAAAOABEAAAAAAAAAAAAOABIAAAAAAAAAAAAOABMAAAAAAAAAAAAOABUAAAAAAAAAAAAPABEAAAAAAAAAAAAPABIAAAAAAAAAAAAPABMAAAAAAAAAAAAPABUAAAAAAAAAAAAQABEAAAAAAAAAAAAQABIAAAAAAAAAAAAQABMAAAAAAAAAAAAQABUAAAAAAAAAAAARABEAAAAAAAAAAAARABIAAAAAAAAAAAARABMAAAAAAAAAAAARABUAAAAAAAAAAAASABEAAAAAAAAAAAASABIAAAAAAAAAAAASABMAAAAAAAAAAAASABUAAAAAAAAAAAATABEAAAAAAAAAAAATABIAAAAAAAAAAAATABMAAAAAAAAAAAATABUAAAAAAAAAAAAUABEAAAAAAAAAAAAUABIAAAAAAAAAAAAUABMAAAAAAAAAAAAUABUAAAAAAAAAAAAVABEAAAAAAAAAAAAVABIAAAAAAAAAAAAVABMAAAAAAAAAAAAVABUAAAAAAAAAAAAWABEAAAAAAAAAAAAWABIAAAAAAAAAAAAWABMAAAAAAAAAAAAWABUAAAAAAAAAAAAXABEAAAAAAAAAAAAXABIAAAAAAAAAAAAXABMAAAAAAAAAAAAXABUAAAAAAAAAAAAYABEAAAAAAAAAAAAYABIAAAAAAAAAAAAYABMAAAAAAAAAAAAYABUAAAAAAAAAAAAZABEAAAAAAAAAAAAZABIAAAAAAAAAAAAZABMAAAAAAAAAAAAZABUAAAAAAAAAAAAaABEAAAAAAAAAAAAaABIAAAAAAAAAAAAaABMAAAAAAAAAAAAaABUAAAAAAAAAAAAbABEAAAAAAAAAAAAbABIAAAAAAAAAAAAbABMAAAAAAAAAAAAbABUAAAAAAAAAAAAcABEAAAAAAAAAAAAcABIAAAAAAAAAAAAcABMAAAAAAAAAAAAcABUAAAAAAAAAAAAdABEAAAAAAAAAAAAdABIAAAAAAAAAAAAdABMAAAAAAAAAAAAdABUAAAAAAAAAAAAeABEAAAAAAAAAAAAeABIAAAAAAAAAAAAeABMAAAAAAAAAAAAeABUAAAAAAAAAAAAfABEAAAAAAAAAAAAfABIAAAAAAAAAAAAfABMAAAAAAAAAAAAfABUAAAAAAAAAAAAgABEAAAAAAAAAAAAgABIAAAAAAAAAAAAgABMAAAAAAAAAAAAgABUAAAAAAAAAAAAhABEAAAAAAAAAAAAhABIAAAAAAAAAAAAhABMAAAAAAAAAAAAhABUAAAAAAAAAAAAiABEAAAAAAAAAAAAiABIAAAAAAAAAAAAiABMAAAAAAAAAAAAiABUAAAAAAAAAAAAjABEAAAAAAAAAAAAjABIAAAAAAAAAAAAjABMAAAAAAAAAAAAjABUAAAAAAAAAAAAkABEAAAAAAAAAAAAkABIAAAAAAAAAAAAkABMAAAAAAAAAAAAkABQAAAAAAAAAAAAkABUAAAAAAAAAAAAlABEAAAAAAAAAAAAlABIAAAAAAAAAAAAlABMAAAAAAAAAAAAlABQAAAAAAAAAAAAlABUAAAAAAAAAAAAmABEAAAAAAAAAAAAmABIAAAAAAAAAAAAmABMAAAAAAAAAAAAmABQAAAAAAAAAAAAmABUAAAAAAAAAAAAnABEAAAAAAAAAAAAnABIAAAAAAAAAAAAnABMAAAAAAAAAAAAnABQAAAAAAAAAAAAnABUAAAAAAAAAAAAoABEAAAAAAAAAAAAoABIAAAAAAAAAAAAoABMAAAAAAAAAAAAoABQAAAAAAAAAAAAoABUAAAAAAAAAAAApABEAAAAAAAAAAAApABIAAAAAAAAAAAApABMAAAAAAAAAAAApABQAAAAAAAAAAAApABUAAAAAAAAAAADx/xEAAAAAAAAAAADx/xIAAAAAAAAAAADx/xMAAAAAAAAAAADx/xQAAAAAAAAAAADx/xUAAAAAAAAAAADx/xYAAAAAAAAAAADx/xcAAAAAAAAAAADx/xgAAAAAAAAAAADx/xkAAAAAAAAAAADx/ywAAAAAAAAAAADx/y0AAAAAAAAAAADx/y4AAAAAAAAAAADy/ywAAAAAAAAAAADy/y0AAAAAAAAAAADy/y4AAAAAAAAAAADz/ywAAAAAAAAAAADz/y0AAAAAAAAAAADz/y4AAAAAAAAAAAD0/ywAAAAAAAAAAAD0/y0AAAAAAAAAAAD0/y4AAAAAAAAAAAD1/ywAAAAAAAAAAAD1/y0AAAAAAAAAAAD1/y4AAAAAAAAAAAD2/ywAAAAAAAAAAAD2/y0AAAAAAAAAAAD2/y4AAAAAAAAAAAD3/ywAAAAAAAAAAAD3/y0AAAAAAAAAAAD3/y4AAAAAAAAAAAD4/ywAAAAAAAAAAAD4/y0AAAAAAAAAAAD4/y4AAAAAAAAAAAD5/ywAAAAAAAAAAAD5/y0AAAAAAAAAAAD5/y4AAAAAAAAAAAD6/ywAAAAAAAAAAAD6/y0AAAAAAAAAAAD6/y4AAAAAAAAAAAD7/ywAAAAAAAAAAAD7/y0AAAAAAAAAAAD7/y4AAAAAAAAAAAD8/ywAAAAAAAAAAAD8/y0AAAAAAAAAAAD8/y4AAAAAAAAAAAD9/ywAAAAAAAAAAAD9/y0AAAAAAAAAAAD9/y4AAAAAAAAAAAD+/ywAAAAAAAAAAAD+/y0AAAAAAAAAAAD+/y4AAAAAAAAAAAD//ywAAAAAAAAAAAD//y0AAAAAAAAAAAD//y4AAAAAAAAAAAAAACwAAAAAAAAAAAAAAC0AAAAAAAAAAAAAAC4AAAAAAAAAAAABACwAAAAAAAAAAAABAC0AAAAAAAAAAAABAC4AAAAAAAAAAAACACwAAAAAAAAAAAACAC0AAAAAAAAAAAACAC4AAAAAAAAAAAADACwAAAAAAAAAAAADAC0AAAAAAAAAAAADAC4AAAAAAAAAAAAEACwAAAAAAAAAAAAEAC0AAAAAAAAAAAAEAC4AAAAAAAAAAAAFACwAAAAAAAAAAAAFAC0AAAAAAAAAAAAFAC4AAAAAAAAAAAAGACwAAAAAAAAAAAAGAC0AAAAAAAAAAAAGAC4AAAAAAAAAAAAHACwAAAAAAAAAAAAHAC0AAAAAAAAAAAAHAC4AAAAAAAAAAAAIACwAAAAAAAAAAAAIAC0AAAAAAAAAAAAIAC4AAAAAAAAAAAAJACwAAAAAAAAAAAAJAC0AAAAAAAAAAAAJAC4AAAAAAAAAAAAKACwAAAAAAAAAAAAKAC0AAAAAAAAAAAAKAC4AAAAAAAAAAAALACwAAAAAAAAAAAALAC0AAAAAAAAAAAALAC4AAAAAAAAAAAAMACwAAAAAAAAAAAAMAC0AAAAAAAAAAAAMAC4AAAAAAAAAAAANACwAAAAAAAAAAAANAC0AAAAAAAAAAAANAC4AAAAAAAAAAAAOACwAAAAAAAAAAAAOAC0AAAAAAAAAAAAOAC4AAAAAAAAAAAAPACwAAAAAAAAAAAAPAC0AAAAAAAAAAAAPAC4AAAAAAAAAAAAQACwAAAAAAAAAAAAQAC0AAAAAAAAAAAAQAC4AAAAAAAAAAAARACwAAAAAAAAAAAARAC0AAAAAAAAAAAARAC4AAAAAAAAAAAASACwAAAAAAAAAAAASAC0AAAAAAAAAAAASAC4AAAAAAAAAAAATACwAAAAAAAAAAAATAC0AAAAAAAAAAAATAC4AAAAAAAAAAAAUACwAAAAAAAAAAAAUAC0AAAAAAAAAAAAUAC4AAAAAAAAAAAAVACwAAAAAAAAAAAAVAC0AAAAAAAAAAAAVAC4AAAAAAAAAAAAWAC0AAAAAAAAAAAAWAC4AAAAAAAAAAAAXAC0AAAAAAAAAAAAXAC4AAAAAAAAAAAAYAC0AAAAAAAAAAAAYAC4AAAAAAAAAAAAZAC0AAAAAAAAAAAAZAC4AAAAAAAAAAAAaAC0AAAAAAAAAAAAaAC4AAAAAAAAAAAAbAC0AAAAAAAAAAAAbAC4AAAAAAAAAAAAcAC0AAAAAAAAAAAAcAC4AAAAAAAAAAAAdAC0AAAAAAAAAAAAdAC4AAAAAAAAAAAAeAC0AAAAAAAAAAAAeAC4AAAAAAAAAAAAfAC0AAAAAAAAAAAAfAC4AAAAAAAAAAAAgAC0AAAAAAAAAAAAgAC4AAAAAAAAAAAAhAC0AAAAAAAAAAAAhAC4AAAAAAAAAAAAiAC0AAAAAAAAAAAAiAC4AAAAAAAAAAAAjACkAAAAAAAAAAAAjACoAAAAAAAAAAAAjACsAAAAAAAAAAAAjAC0AAAAAAAAAAAAjAC4AAAAAAAAAAAAkACkAAAAAAAAAAAAkACoAAAAAAAAAAAAkACsAAAAAAAAAAAAkACwAAAAAAAAAAAAkAC0AAAAAAAAAAAAkAC4AAAAAAAAAAAAlACkAAAAAAAAAAAAlACoAAAAAAAAAAAAlACsAAAAAAAAAAAAlACwAAAAAAAAAAAAlAC0AAAAAAAAAAAAlAC4AAAAAAAAAAAAmACkAAAAAAAAAAAAmACoAAAAAAAAAAAAmACsAAAAAAAAAAAAmACwAAAAAAAAAAAAmAC0AAAAAAAAAAAAmAC4AAAAAAAAAAAAnACkAAAAAAAAAAAAnACoAAAAAAAAAAAAnACsAAAAAAAAAAAAnACwAAAAAAAAAAAAnAC0AAAAAAAAAAAAnAC4AAAAAAAAAAAAoACkAAAAAAAAAAAAoACoAAAAAAAAAAAAoACsAAAAAAAAAAAAoACwAAAAAAAAAAAAoAC0AAAAAAAAAAAAoAC4AAAAAAAAAAAApACkAAAAAAAAAAAApACoAAAAAAAAAAAApACsAAAAAAAAAAAApACwAAAAAAAAAAAApAC0AAAAAAAAAAAApAC4AAAAAAAAAAAASABgAAAAAAAAAAQARABgAAAAAAAAAAQA=") +tile_map_data = PackedByteArray("AAAAABYAAAAAAAAAAAAAABcAAAAAAAAAAAAAABgAAAAAAAAAAAAAABkAAAAAAAAAAAAAABoAAAAAAAAAAAAAABsAAAAAAAAAAAAAABwAAAAAAAAAAAABABYAAAAAAAAAAAABABcAAAAAAAAAAAABABgAAAAAAAAAAAABABkAAAAAAAAAAAABABoAAAAAAAAAAAABABsAAAAAAAAAAAABABwAAAAAAAAAAAACABYAAAAAAAAAAAACABcAAAAAAAAAAAACABgAAAAAAAAAAAACABkAAAAAAAAAAAACABoAAAAAAAAAAAACABsAAAAAAAAAAAACABwAAAAAAAAAAAADABYAAAAAAAAAAAADABcAAAAAAAAAAAADABgAAAAAAAAAAAADABkAAAAAAAAAAAADABoAAAAAAAAAAAADABsAAAAAAAAAAAADABwAAAAAAAAAAAAEABsAAAAAAAAAAAAEABwAAAAAAAAAAAAGABsAAAAAAAAAAAAGABwAAAAAAAAAAAAHABsAAAAAAAAAAAAHABwAAAAAAAAAAAAIABsAAAAAAAAAAAAIABwAAAAAAAAAAAAJABsAAAAAAAAAAAAJABwAAAAAAAAAAAAHABYAAAAAAAAAAAAHABcAAAAAAAAAAAAHABkAAAAAAAAAAAAHABoAAAAAAAAAAAAIABYAAAAAAAAAAAAIABcAAAAAAAAAAAAIABkAAAAAAAAAAAAIABoAAAAAAAAAAAAEABYAAAAAAAAAAAAFABYAAAAAAAAAAAAGABYAAAAAAAAAAAAJABYAAAAAAAAAAAAKABYAAAAAAAAAAAALABYAAAAAAAAAAAAMABYAAAAAAAAAAAANABYAAAAAAAAAAAAOABYAAAAAAAAAAAAPABYAAAAAAAAAAAAQABYAAAAAAAAAAAARABYAAAAAAAAAAAASABYAAAAAAAAAAAATABYAAAAAAAAAAAAUABYAAAAAAAAAAAAVABYAAAAAAAAAAAAWABYAAAAAAAAAAAAWABcAAAAAAAAAAAAWABgAAAAAAAAAAAAWABkAAAAAAAAAAAAWABoAAAAAAAAAAAAWABsAAAAAAAAAAAAWABwAAAAAAAAAAAAXABYAAAAAAAAAAAAXABcAAAAAAAAAAAAXABgAAAAAAAAAAAAXABkAAAAAAAAAAAAXABoAAAAAAAAAAAAXABsAAAAAAAAAAAAXABwAAAAAAAAAAAAYABYAAAAAAAAAAAAYABcAAAAAAAAAAAAYABgAAAAAAAAAAAAYABkAAAAAAAAAAAAYABoAAAAAAAAAAAAYABsAAAAAAAAAAAAYABwAAAAAAAAAAAAZABYAAAAAAAAAAAAZABcAAAAAAAAAAAAZABgAAAAAAAAAAAAZABkAAAAAAAAAAAAZABoAAAAAAAAAAAAZABsAAAAAAAAAAAAZABwAAAAAAAAAAAAVABsAAAAAAAAAAAAVABwAAAAAAAAAAAAQABsAAAAAAAAAAAAQABwAAAAAAAAAAAARABsAAAAAAAAAAAARABwAAAAAAAAAAAASABsAAAAAAAAAAAASABwAAAAAAAAAAAATABsAAAAAAAAAAAATABwAAAAAAAAAAAARABcAAAAAAAAAAAARABkAAAAAAAAAAAARABoAAAAAAAAAAAASABcAAAAAAAAAAAASABkAAAAAAAAAAAASABoAAAAAAAAAAAAMABcAAAAAAAAAAAAMABgAAAAAAAAAAAAMABkAAAAAAAAAAAAMABoAAAAAAAAAAAAMABsAAAAAAAAAAAANABcAAAAAAAAAAAANABgAAAAAAAAAAAANABkAAAAAAAAAAAANABoAAAAAAAAAAAANABsAAAAAAAAAAAALABsAAAAAAAAAAAALABwAAAAAAAAAAAAMABwAAAAAAAAAAAANABwAAAAAAAAAAAAOABsAAAAAAAAAAAAOABwAAAAAAAAAAAAAAB0AAAAAAAAAAAAAAB8AAAAAAAAAAAAAACAAAAAAAAAAAAASACAAAAAAAAAAAAAWACAAAAAAAAAAAAAXACAAAAAAAAAAAAAYACAAAAAAAAAAAAAZACAAAAAAAAAAAAAaACAAAAAAAAAAAAAaABwAAAAAAAAAAAAaAB0AAAAAAAAAAAAaAB8AAAAAAAAAAAD//xQAAAAAAAAAAAAAABQAAAAAAAAAAAABABQAAAAAAAAAAAACABQAAAAAAAAAAAADABQAAAAAAAAAAAAEABQAAAAAAAAAAAD//xUAAAAAAAAAAAD//xYAAAAAAAAAAAD//xcAAAAAAAAAAAD//xgAAAAAAAAAAAD//xkAAAAAAAAAAAD//xoAAAAAAAAAAAD//xsAAAAAAAAAAAD//xwAAAAAAAAAAAD//x0AAAAAAAAAAAD//x8AAAAAAAAAAAAbAB0AAAAAAAAAAAAcAB0AAAAAAAAAAAAdAB0AAAAAAAAAAAAeAB0AAAAAAAAAAAAfAB0AAAAAAAAAAAAgAB0AAAAAAAAAAAAhAB0AAAAAAAAAAAAiAB0AAAAAAAAAAAAjABgAAAAAAAAAAAAjABkAAAAAAAAAAAAjABoAAAAAAAAAAAAjABsAAAAAAAAAAAAjABwAAAAAAAAAAAAjAB0AAAAAAAAAAAAbAB8AAAAAAAAAAAAcAB8AAAAAAAAAAAAdAB8AAAAAAAAAAAAeAB8AAAAAAAAAAAAfAB8AAAAAAAAAAAAgAB8AAAAAAAAAAAAhAB8AAAAAAAAAAAAiAB8AAAAAAAAAAAAjAB8AAAAAAAAAAAAjABQAAAAAAAAAAAAfABQAAAAAAAAAAAAgABQAAAAAAAAAAAAhABQAAAAAAAAAAAAiABQAAAAAAAAAAAASABQAAAAAAAAAAAATABQAAAAAAAAAAAAUABQAAAAAAAAAAAAVABQAAAAAAAAAAAAWABQAAAAAAAAAAAAXABQAAAAAAAAAAAAYABQAAAAAAAAAAAAZABQAAAAAAAAAAAAaABQAAAAAAAAAAAAbABQAAAAAAAAAAAAcABQAAAAAAAAAAAAdABQAAAAAAAAAAAAeABQAAAAAAAAAAAAFABQAAAAAAAAAAAAGABQAAAAAAAAAAAAHABQAAAAAAAAAAAAIABQAAAAAAAAAAAAJABQAAAAAAAAAAAAKABQAAAAAAAAAAAALABQAAAAAAAAAAAAMABQAAAAAAAAAAAANABQAAAAAAAAAAAAOABQAAAAAAAAAAAAPABQAAAAAAAAAAAAQABQAAAAAAAAAAAARABQAAAAAAAAAAAASACEAAAAAAAAAAAASACIAAAAAAAAAAAALACIAAAAAAAAAAAANACIAAAAAAAAAAAAOACIAAAAAAAAAAAAPACIAAAAAAAAAAAAQACIAAAAAAAAAAAARACIAAAAAAAAAAAAKACIAAAAAAAAAAAAKACYAAAAAAAAAAAALACYAAAAAAAAAAAAMACYAAAAAAAAAAAANACYAAAAAAAAAAAAOACYAAAAAAAAAAAAPACYAAAAAAAAAAAAQACYAAAAAAAAAAAARACYAAAAAAAAAAAASACYAAAAAAAAAAAATACYAAAAAAAAAAAAUACYAAAAAAAAAAAAVACYAAAAAAAAAAAAWACEAAAAAAAAAAAAWACIAAAAAAAAAAAAWACMAAAAAAAAAAAAWACQAAAAAAAAAAAAWACUAAAAAAAAAAAAWACYAAAAAAAAAAAATAB0AAAAAAAAAAAATAB4AAAAAAAAAAAATAB8AAAAAAAAAAAALACEAAAAAAAAAAAANACEAAAAAAAAAAAD8/x0AAAAAAAAAAAD9/x0AAAAAAAAAAAD+/x0AAAAAAAAAAAD8/xwAAAAAAAAAAAD9/xwAAAAAAAAAAAD+/xwAAAAAAAAAAAD8/x8AAAAAAAAAAAD9/x8AAAAAAAAAAAD+/x8AAAAAAAAAAAD8/yAAAAAAAAAAAAD8/yEAAAAAAAAAAAAAACIAAAAAAAAAAAABACIAAAAAAAAAAAACACIAAAAAAAAAAAADACIAAAAAAAAAAAAEACIAAAAAAAAAAAAFACIAAAAAAAAAAAAGACIAAAAAAAAAAAAHACIAAAAAAAAAAAAIACIAAAAAAAAAAAAJACIAAAAAAAAAAAAAACMAAAAAAAAAAAAAACQAAAAAAAAAAAAAACUAAAAAAAAAAAAAACYAAAAAAAAAAAABACYAAAAAAAAAAAACACYAAAAAAAAAAAADACYAAAAAAAAAAAAEACYAAAAAAAAAAAAFACYAAAAAAAAAAAAGACYAAAAAAAAAAAAHACYAAAAAAAAAAAAIACYAAAAAAAAAAAAJACYAAAAAAAAAAAASAB8AAAAAAAAAAADy/xEAAAAAAAAAAADy/xIAAAAAAAAAAADy/xMAAAAAAAAAAADy/xQAAAAAAAAAAADy/xUAAAAAAAAAAADy/xYAAAAAAAAAAADy/xcAAAAAAAAAAADy/xgAAAAAAAAAAADy/xkAAAAAAAAAAADy/xoAAAAAAAAAAADy/xsAAAAAAAAAAADz/xEAAAAAAAAAAADz/xIAAAAAAAAAAADz/xMAAAAAAAAAAADz/xQAAAAAAAAAAADz/xUAAAAAAAAAAADz/xYAAAAAAAAAAADz/xcAAAAAAAAAAADz/xgAAAAAAAAAAADz/xkAAAAAAAAAAADz/xoAAAAAAAAAAADz/xsAAAAAAAAAAAD0/xEAAAAAAAAAAAD0/xIAAAAAAAAAAAD0/xMAAAAAAAAAAAD0/xQAAAAAAAAAAAD0/xUAAAAAAAAAAAD0/xYAAAAAAAAAAAD0/xcAAAAAAAAAAAD0/xgAAAAAAAAAAAD0/xkAAAAAAAAAAAD0/xoAAAAAAAAAAAD0/xsAAAAAAAAAAAD1/xEAAAAAAAAAAAD1/xIAAAAAAAAAAAD1/xMAAAAAAAAAAAD1/xQAAAAAAAAAAAD1/xUAAAAAAAAAAAD1/xYAAAAAAAAAAAD1/xcAAAAAAAAAAAD1/xgAAAAAAAAAAAD1/xkAAAAAAAAAAAD1/xoAAAAAAAAAAAD1/xsAAAAAAAAAAAD2/xEAAAAAAAAAAAD2/xIAAAAAAAAAAAD2/xMAAAAAAAAAAAD2/xQAAAAAAAAAAAD2/xUAAAAAAAAAAAD2/xYAAAAAAAAAAAD2/xcAAAAAAAAAAAD2/xgAAAAAAAAAAAD2/xkAAAAAAAAAAAD2/xoAAAAAAAAAAAD2/xsAAAAAAAAAAAD3/xEAAAAAAAAAAAD3/xIAAAAAAAAAAAD3/xMAAAAAAAAAAAD3/xQAAAAAAAAAAAD3/xUAAAAAAAAAAAD3/xYAAAAAAAAAAAD3/xcAAAAAAAAAAAD3/xgAAAAAAAAAAAD3/xkAAAAAAAAAAAD3/xoAAAAAAAAAAAD3/xsAAAAAAAAAAAD4/xEAAAAAAAAAAAD4/xIAAAAAAAAAAAD4/xMAAAAAAAAAAAD4/xQAAAAAAAAAAAD4/xUAAAAAAAAAAAD4/xYAAAAAAAAAAAD4/xcAAAAAAAAAAAD4/xgAAAAAAAAAAAD4/xkAAAAAAAAAAAD4/xoAAAAAAAAAAAD4/xsAAAAAAAAAAAD5/xEAAAAAAAAAAAD5/xIAAAAAAAAAAAD5/xMAAAAAAAAAAAD5/xQAAAAAAAAAAAD5/xUAAAAAAAAAAAD5/xYAAAAAAAAAAAD5/xcAAAAAAAAAAAD5/xgAAAAAAAAAAAD5/xkAAAAAAAAAAAD5/xoAAAAAAAAAAAD5/xsAAAAAAAAAAAD6/xEAAAAAAAAAAAD6/xIAAAAAAAAAAAD6/xMAAAAAAAAAAAD6/xQAAAAAAAAAAAD6/xUAAAAAAAAAAAD6/xYAAAAAAAAAAAD6/xcAAAAAAAAAAAD6/xgAAAAAAAAAAAD6/xkAAAAAAAAAAAD6/xoAAAAAAAAAAAD6/xsAAAAAAAAAAAD7/xEAAAAAAAAAAAD7/xIAAAAAAAAAAAD7/xMAAAAAAAAAAAD7/xQAAAAAAAAAAAD7/xUAAAAAAAAAAAD7/xYAAAAAAAAAAAD7/xcAAAAAAAAAAAD7/xgAAAAAAAAAAAD7/xkAAAAAAAAAAAD7/xoAAAAAAAAAAAD7/xsAAAAAAAAAAAD8/xEAAAAAAAAAAAD8/xIAAAAAAAAAAAD8/xMAAAAAAAAAAAD8/xQAAAAAAAAAAAD8/xUAAAAAAAAAAAD8/xYAAAAAAAAAAAD8/xcAAAAAAAAAAAD8/xgAAAAAAAAAAAD8/xkAAAAAAAAAAAD8/xoAAAAAAAAAAAD8/xsAAAAAAAAAAAD9/xEAAAAAAAAAAAD9/xIAAAAAAAAAAAD9/xMAAAAAAAAAAAD9/xQAAAAAAAAAAAD9/xUAAAAAAAAAAAD9/xYAAAAAAAAAAAD9/xcAAAAAAAAAAAD9/xgAAAAAAAAAAAD9/xkAAAAAAAAAAAD9/xoAAAAAAAAAAAD9/xsAAAAAAAAAAAD+/xEAAAAAAAAAAAD+/xIAAAAAAAAAAAD+/xMAAAAAAAAAAAD+/xQAAAAAAAAAAAD+/xUAAAAAAAAAAAD+/xYAAAAAAAAAAAD+/xcAAAAAAAAAAAD+/xgAAAAAAAAAAAD+/xkAAAAAAAAAAAD+/xoAAAAAAAAAAAD+/xsAAAAAAAAAAADx/xoAAAAAAAAAAADx/xsAAAAAAAAAAADx/xwAAAAAAAAAAADx/x0AAAAAAAAAAADx/x4AAAAAAAAAAADx/x8AAAAAAAAAAADx/yAAAAAAAAAAAADx/yEAAAAAAAAAAADx/yIAAAAAAAAAAADx/yMAAAAAAAAAAADx/yQAAAAAAAAAAADx/yUAAAAAAAAAAADx/yYAAAAAAAAAAADx/ycAAAAAAAAAAADx/ygAAAAAAAAAAADx/ykAAAAAAAAAAADx/yoAAAAAAAAAAADx/ysAAAAAAAAAAADy/xwAAAAAAAAAAADy/x0AAAAAAAAAAADy/x4AAAAAAAAAAADy/x8AAAAAAAAAAADy/yAAAAAAAAAAAADy/yEAAAAAAAAAAADy/yIAAAAAAAAAAADy/yMAAAAAAAAAAADy/yQAAAAAAAAAAADy/yUAAAAAAAAAAADy/yYAAAAAAAAAAADy/ycAAAAAAAAAAADy/ygAAAAAAAAAAADy/ykAAAAAAAAAAADy/yoAAAAAAAAAAADy/ysAAAAAAAAAAADz/xwAAAAAAAAAAADz/x0AAAAAAAAAAADz/x4AAAAAAAAAAADz/x8AAAAAAAAAAADz/yAAAAAAAAAAAADz/yEAAAAAAAAAAADz/yIAAAAAAAAAAADz/yMAAAAAAAAAAADz/yQAAAAAAAAAAADz/yUAAAAAAAAAAADz/yYAAAAAAAAAAADz/ycAAAAAAAAAAADz/ygAAAAAAAAAAADz/ykAAAAAAAAAAADz/yoAAAAAAAAAAADz/ysAAAAAAAAAAAD0/xwAAAAAAAAAAAD0/x0AAAAAAAAAAAD0/x4AAAAAAAAAAAD0/x8AAAAAAAAAAAD0/yAAAAAAAAAAAAD0/yEAAAAAAAAAAAD0/yIAAAAAAAAAAAD0/yMAAAAAAAAAAAD0/yQAAAAAAAAAAAD0/yUAAAAAAAAAAAD0/yYAAAAAAAAAAAD0/ycAAAAAAAAAAAD0/ygAAAAAAAAAAAD0/ykAAAAAAAAAAAD0/yoAAAAAAAAAAAD0/ysAAAAAAAAAAAAkABoAAAAAAAAAAAAlABoAAAAAAAAAAAAmABoAAAAAAAAAAAAnABoAAAAAAAAAAAAoABoAAAAAAAAAAAApABoAAAAAAAAAAAAoABsAAAAAAAAAAAAoABwAAAAAAAAAAAAoAB0AAAAAAAAAAAAoAB4AAAAAAAAAAAAoAB8AAAAAAAAAAAAoACAAAAAAAAAAAAAoACEAAAAAAAAAAAApABsAAAAAAAAAAAApABwAAAAAAAAAAAApAB0AAAAAAAAAAAApAB4AAAAAAAAAAAApAB8AAAAAAAAAAAApACAAAAAAAAAAAAApACEAAAAAAAAAAAAhACEAAAAAAAAAAAAhACIAAAAAAAAAAAAiACEAAAAAAAAAAAAiACIAAAAAAAAAAAAjACEAAAAAAAAAAAAjACIAAAAAAAAAAAAkACEAAAAAAAAAAAAkACIAAAAAAAAAAAAlACEAAAAAAAAAAAAlACIAAAAAAAAAAAAmACEAAAAAAAAAAAAmACIAAAAAAAAAAAAnACEAAAAAAAAAAAAnACIAAAAAAAAAAAAoACIAAAAAAAAAAAApACIAAAAAAAAAAAAjACAAAAAAAAAAAAAKACEAAAAAAAAAAAAJACEAAAAAAAAAAAAIACEAAAAAAAAAAAAHACEAAAAAAAAAAAAGACEAAAAAAAAAAAAFACEAAAAAAAAAAAAEACEAAAAAAAAAAAADACEAAAAAAAAAAAACACEAAAAAAAAAAAABACEAAAAAAAAAAAAAACEAAAAAAAAAAAAOACEAAAAAAAAAAAAPACEAAAAAAAAAAAAQACEAAAAAAAAAAAARACEAAAAAAAAAAAD8/x4AAAAAAAAAAQD9/x4AAAAAAAAAAQD+/x4AAAAAAAAAAQD//x4AAAAAAAAAAQAAAB4AAAAAAAAAAQAFABsAAAAAAAAAAQAFABwAAAAAAAAAAQAKABsAAAAAAAAAAQAKABwAAAAAAAAAAQAPABsAAAAAAAAAAQAPABwAAAAAAAAAAQAUABsAAAAAAAAAAQAUABwAAAAAAAAAAQAaAB4AAAAAAAAAAQAbAB4AAAAAAAAAAQAcAB4AAAAAAAAAAQAdAB4AAAAAAAAAAQAeAB4AAAAAAAAAAQAfAB4AAAAAAAAAAQAgAB4AAAAAAAAAAQAhAB4AAAAAAAAAAQAiAB4AAAAAAAAAAQAjAB4AAAAAAAAAAQAMACEAAAAAAAAAAQAMACIAAAAAAAAAAQAZACQAAAAAAAAAAAAaACQAAAAAAAAAAAAaACUAAAAAAAAAAAAZACUAAAAAAAAAAAAdACQAAAAAAAAAAAAdACUAAAAAAAAAAAAeACUAAAAAAAAAAAAeACQAAAAAAAAAAAAbACgAAAAAAAAAAAAbACcAAAAAAAAAAAAcACcAAAAAAAAAAAAcACgAAAAAAAAAAAAXACkAAAAAAAAAAAAXACoAAAAAAAAAAAAXACsAAAAAAAAAAAAYACsAAAAAAAAAAAAZACwAAAAAAAAAAAAaACwAAAAAAAAAAAAbACwAAAAAAAAAAAAcACwAAAAAAAAAAAAdACwAAAAAAAAAAAAeACwAAAAAAAAAAAAfACwAAAAAAAAAAAAgACwAAAAAAAAAAAAgACsAAAAAAAAAAAAhACsAAAAAAAAAAAAhACoAAAAAAAAAAAAhACkAAAAAAAAAAAD9/yAAAAAAAAAAAAD9/yEAAAAAAAAAAAD9/yIAAAAAAAAAAAD9/yMAAAAAAAAAAAD9/yQAAAAAAAAAAAD9/yUAAAAAAAAAAAD9/yYAAAAAAAAAAAD9/ycAAAAAAAAAAAD9/ygAAAAAAAAAAAD9/ykAAAAAAAAAAAD9/yoAAAAAAAAAAAD9/ysAAAAAAAAAAAD+/yAAAAAAAAAAAAD+/yEAAAAAAAAAAAD+/yIAAAAAAAAAAAD+/yMAAAAAAAAAAAD+/yQAAAAAAAAAAAD+/yUAAAAAAAAAAAD+/yYAAAAAAAAAAAD+/ycAAAAAAAAAAAD+/ygAAAAAAAAAAAD+/ykAAAAAAAAAAAD+/yoAAAAAAAAAAAD+/ysAAAAAAAAAAAD//yAAAAAAAAAAAAD//yEAAAAAAAAAAAD//yIAAAAAAAAAAAD//yMAAAAAAAAAAAD//yQAAAAAAAAAAAD//yUAAAAAAAAAAAD//yYAAAAAAAAAAAD//ycAAAAAAAAAAAD//ygAAAAAAAAAAAD//ykAAAAAAAAAAAD//yoAAAAAAAAAAAD//ysAAAAAAAAAAAD1/yQAAAAAAAAAAAD1/yUAAAAAAAAAAAD1/yYAAAAAAAAAAAD1/ycAAAAAAAAAAAD1/ygAAAAAAAAAAAD1/ykAAAAAAAAAAAD1/yoAAAAAAAAAAAD1/ysAAAAAAAAAAAD2/yQAAAAAAAAAAAD2/yUAAAAAAAAAAAD2/yYAAAAAAAAAAAD2/ycAAAAAAAAAAAD2/ygAAAAAAAAAAAD2/ykAAAAAAAAAAAD2/yoAAAAAAAAAAAD2/ysAAAAAAAAAAAD3/yQAAAAAAAAAAAD3/yUAAAAAAAAAAAD3/yYAAAAAAAAAAAD3/ycAAAAAAAAAAAD3/ygAAAAAAAAAAAD3/ykAAAAAAAAAAAD3/yoAAAAAAAAAAAD3/ysAAAAAAAAAAAD4/yQAAAAAAAAAAAD4/yUAAAAAAAAAAAD4/yYAAAAAAAAAAAD4/ycAAAAAAAAAAAD4/ygAAAAAAAAAAAD4/ykAAAAAAAAAAAD4/yoAAAAAAAAAAAD4/ysAAAAAAAAAAAD5/yQAAAAAAAAAAAD5/yUAAAAAAAAAAAD5/yYAAAAAAAAAAAD5/ycAAAAAAAAAAAD5/ygAAAAAAAAAAAD5/ykAAAAAAAAAAAD5/yoAAAAAAAAAAAD5/ysAAAAAAAAAAAD6/yQAAAAAAAAAAAD6/yUAAAAAAAAAAAD6/yYAAAAAAAAAAAD6/ycAAAAAAAAAAAD6/ygAAAAAAAAAAAD6/ykAAAAAAAAAAAD6/yoAAAAAAAAAAAD6/ysAAAAAAAAAAAD7/yQAAAAAAAAAAAD7/yUAAAAAAAAAAAD7/yYAAAAAAAAAAAD7/ycAAAAAAAAAAAD7/ygAAAAAAAAAAAD7/ykAAAAAAAAAAAD7/yoAAAAAAAAAAAD7/ysAAAAAAAAAAAD8/yIAAAAAAAAAAAD8/yMAAAAAAAAAAAD8/yQAAAAAAAAAAAD8/yUAAAAAAAAAAAD8/yYAAAAAAAAAAAD8/ycAAAAAAAAAAAD8/ygAAAAAAAAAAAD8/ykAAAAAAAAAAAD8/yoAAAAAAAAAAAD8/ysAAAAAAAAAAAAAACcAAAAAAAAAAAAAACgAAAAAAAAAAAAAACkAAAAAAAAAAAAAACoAAAAAAAAAAAAAACsAAAAAAAAAAAABACcAAAAAAAAAAAABACgAAAAAAAAAAAABACkAAAAAAAAAAAABACoAAAAAAAAAAAABACsAAAAAAAAAAAACACcAAAAAAAAAAAACACgAAAAAAAAAAAACACkAAAAAAAAAAAACACoAAAAAAAAAAAACACsAAAAAAAAAAAADACcAAAAAAAAAAAADACgAAAAAAAAAAAADACkAAAAAAAAAAAADACoAAAAAAAAAAAADACsAAAAAAAAAAAAEACcAAAAAAAAAAAAEACgAAAAAAAAAAAAEACkAAAAAAAAAAAAEACoAAAAAAAAAAAAEACsAAAAAAAAAAAAFACcAAAAAAAAAAAAFACgAAAAAAAAAAAAFACkAAAAAAAAAAAAFACoAAAAAAAAAAAAFACsAAAAAAAAAAAAGACcAAAAAAAAAAAAGACgAAAAAAAAAAAAGACkAAAAAAAAAAAAGACoAAAAAAAAAAAAGACsAAAAAAAAAAAAHACcAAAAAAAAAAAAHACgAAAAAAAAAAAAHACkAAAAAAAAAAAAHACoAAAAAAAAAAAAHACsAAAAAAAAAAAAIACcAAAAAAAAAAAAIACgAAAAAAAAAAAAIACkAAAAAAAAAAAAIACoAAAAAAAAAAAAIACsAAAAAAAAAAAAJACcAAAAAAAAAAAAJACgAAAAAAAAAAAAJACkAAAAAAAAAAAAJACoAAAAAAAAAAAAJACsAAAAAAAAAAAAKACcAAAAAAAAAAAAKACgAAAAAAAAAAAAKACkAAAAAAAAAAAAKACoAAAAAAAAAAAAKACsAAAAAAAAAAAALACcAAAAAAAAAAAALACgAAAAAAAAAAAALACkAAAAAAAAAAAALACoAAAAAAAAAAAALACsAAAAAAAAAAAAMACcAAAAAAAAAAAAMACgAAAAAAAAAAAAMACkAAAAAAAAAAAAMACoAAAAAAAAAAAAMACsAAAAAAAAAAAANACcAAAAAAAAAAAANACgAAAAAAAAAAAANACkAAAAAAAAAAAANACoAAAAAAAAAAAANACsAAAAAAAAAAAAOACcAAAAAAAAAAAAOACgAAAAAAAAAAAAOACkAAAAAAAAAAAAOACoAAAAAAAAAAAAOACsAAAAAAAAAAAAPACcAAAAAAAAAAAAPACgAAAAAAAAAAAAPACkAAAAAAAAAAAAPACoAAAAAAAAAAAAPACsAAAAAAAAAAAAQACcAAAAAAAAAAAAQACgAAAAAAAAAAAAQACkAAAAAAAAAAAAQACoAAAAAAAAAAAAQACsAAAAAAAAAAAARACcAAAAAAAAAAAARACgAAAAAAAAAAAARACkAAAAAAAAAAAARACoAAAAAAAAAAAARACsAAAAAAAAAAAASACcAAAAAAAAAAAASACgAAAAAAAAAAAASACkAAAAAAAAAAAASACoAAAAAAAAAAAASACsAAAAAAAAAAAATACcAAAAAAAAAAAATACgAAAAAAAAAAAATACkAAAAAAAAAAAATACoAAAAAAAAAAAATACsAAAAAAAAAAAAUACcAAAAAAAAAAAAUACgAAAAAAAAAAAAUACkAAAAAAAAAAAAUACoAAAAAAAAAAAAUACsAAAAAAAAAAAAVACcAAAAAAAAAAAAVACgAAAAAAAAAAAAVACkAAAAAAAAAAAAVACoAAAAAAAAAAAAVACsAAAAAAAAAAAAWACcAAAAAAAAAAAAWACgAAAAAAAAAAAAWACkAAAAAAAAAAAAWACoAAAAAAAAAAAAWACsAAAAAAAAAAAAXACcAAAAAAAAAAAAXACgAAAAAAAAAAAAYACcAAAAAAAAAAAAYACgAAAAAAAAAAAAYACkAAAAAAAAAAAAYACoAAAAAAAAAAAAZACcAAAAAAAAAAAAZACgAAAAAAAAAAAAZACkAAAAAAAAAAAAZACoAAAAAAAAAAAAZACsAAAAAAAAAAAAaACcAAAAAAAAAAAAaACgAAAAAAAAAAAAaACkAAAAAAAAAAAAaACoAAAAAAAAAAAAaACsAAAAAAAAAAAAbACkAAAAAAAAAAAAbACoAAAAAAAAAAAAbACsAAAAAAAAAAAAcACkAAAAAAAAAAAAcACoAAAAAAAAAAAAcACsAAAAAAAAAAAAdACcAAAAAAAAAAAAdACgAAAAAAAAAAAAdACkAAAAAAAAAAAAdACoAAAAAAAAAAAAdACsAAAAAAAAAAAAeACcAAAAAAAAAAAAeACgAAAAAAAAAAAAeACkAAAAAAAAAAAAeACoAAAAAAAAAAAAeACsAAAAAAAAAAAAfACcAAAAAAAAAAAAfACgAAAAAAAAAAAAfACkAAAAAAAAAAAAfACoAAAAAAAAAAAAfACsAAAAAAAAAAAAgACcAAAAAAAAAAAAgACgAAAAAAAAAAAAgACkAAAAAAAAAAAAgACoAAAAAAAAAAAAhACcAAAAAAAAAAAAhACgAAAAAAAAAAAAiACcAAAAAAAAAAAAiACgAAAAAAAAAAAAiACkAAAAAAAAAAAAiACoAAAAAAAAAAAAiACsAAAAAAAAAAAAWACwAAAAAAAAAAAAXACwAAAAAAAAAAAAYACwAAAAAAAAAAAAhACwAAAAAAAAAAAAiACwAAAAAAAAAAAAjACwAAAAAAAAAAAAbACAAAAAAAAAAAAAbACEAAAAAAAAAAAAbACIAAAAAAAAAAAAbACMAAAAAAAAAAAAbACQAAAAAAAAAAAAbACUAAAAAAAAAAAAbACYAAAAAAAAAAAAcACAAAAAAAAAAAAAcACEAAAAAAAAAAAAcACIAAAAAAAAAAAAcACMAAAAAAAAAAAAcACQAAAAAAAAAAAAcACUAAAAAAAAAAAAcACYAAAAAAAAAAAAdACAAAAAAAAAAAAAdACEAAAAAAAAAAAAdACIAAAAAAAAAAAAdACMAAAAAAAAAAAAdACYAAAAAAAAAAAAeACAAAAAAAAAAAAAeACEAAAAAAAAAAAAeACIAAAAAAAAAAAAeACMAAAAAAAAAAAAeACYAAAAAAAAAAAAfACAAAAAAAAAAAAAfACEAAAAAAAAAAAAfACIAAAAAAAAAAAAfACMAAAAAAAAAAAAfACQAAAAAAAAAAAAfACUAAAAAAAAAAAAfACYAAAAAAAAAAAAgACAAAAAAAAAAAAAgACEAAAAAAAAAAAAgACIAAAAAAAAAAAAgACMAAAAAAAAAAAAgACQAAAAAAAAAAAAgACUAAAAAAAAAAAAgACYAAAAAAAAAAAAhACAAAAAAAAAAAAAhACMAAAAAAAAAAAAhACQAAAAAAAAAAAAhACUAAAAAAAAAAAAhACYAAAAAAAAAAAAiACAAAAAAAAAAAAAiACMAAAAAAAAAAAAiACQAAAAAAAAAAAAiACUAAAAAAAAAAAAiACYAAAAAAAAAAAAXACEAAAAAAAAAAAAXACIAAAAAAAAAAAAXACMAAAAAAAAAAAAXACQAAAAAAAAAAAAXACUAAAAAAAAAAAAXACYAAAAAAAAAAAAYACEAAAAAAAAAAAAYACIAAAAAAAAAAAAYACMAAAAAAAAAAAAYACQAAAAAAAAAAAAYACUAAAAAAAAAAAAYACYAAAAAAAAAAAAZACEAAAAAAAAAAAAZACIAAAAAAAAAAAAZACMAAAAAAAAAAAAZACYAAAAAAAAAAAAaACEAAAAAAAAAAAAaACIAAAAAAAAAAAAaACMAAAAAAAAAAAAaACYAAAAAAAAAAAAjACMAAAAAAAAAAAAjACQAAAAAAAAAAAAjACUAAAAAAAAAAAAjACYAAAAAAAAAAAAjACcAAAAAAAAAAAAjACgAAAAAAAAAAAAkACMAAAAAAAAAAAAkACQAAAAAAAAAAAAkACUAAAAAAAAAAAAkACYAAAAAAAAAAAAkACcAAAAAAAAAAAAkACgAAAAAAAAAAAAlACMAAAAAAAAAAAAlACQAAAAAAAAAAAAlACUAAAAAAAAAAAAlACYAAAAAAAAAAAAlACcAAAAAAAAAAAAlACgAAAAAAAAAAAAmACMAAAAAAAAAAAAmACQAAAAAAAAAAAAmACUAAAAAAAAAAAAmACYAAAAAAAAAAAAmACcAAAAAAAAAAAAmACgAAAAAAAAAAAAnACMAAAAAAAAAAAAnACQAAAAAAAAAAAAnACUAAAAAAAAAAAAnACYAAAAAAAAAAAAnACcAAAAAAAAAAAAnACgAAAAAAAAAAAAoACMAAAAAAAAAAAAoACQAAAAAAAAAAAAoACUAAAAAAAAAAAAoACYAAAAAAAAAAAAoACcAAAAAAAAAAAAoACgAAAAAAAAAAAApACMAAAAAAAAAAAApACQAAAAAAAAAAAApACUAAAAAAAAAAAApACYAAAAAAAAAAAApACcAAAAAAAAAAAApACgAAAAAAAAAAAAaABYAAAAAAAAAAAAaABcAAAAAAAAAAAAaABgAAAAAAAAAAAAaABkAAAAAAAAAAAAaABoAAAAAAAAAAAAbABYAAAAAAAAAAAAbABcAAAAAAAAAAAAbABgAAAAAAAAAAAAbABkAAAAAAAAAAAAbABoAAAAAAAAAAAAcABYAAAAAAAAAAAAcABcAAAAAAAAAAAAcABgAAAAAAAAAAAAcABkAAAAAAAAAAAAcABoAAAAAAAAAAAAdABYAAAAAAAAAAAAdABcAAAAAAAAAAAAdABgAAAAAAAAAAAAdABkAAAAAAAAAAAAdABoAAAAAAAAAAAAeABYAAAAAAAAAAAAeABcAAAAAAAAAAAAeABgAAAAAAAAAAAAeABkAAAAAAAAAAAAeABoAAAAAAAAAAAAfABYAAAAAAAAAAAAfABcAAAAAAAAAAAAfABgAAAAAAAAAAAAfABkAAAAAAAAAAAAfABoAAAAAAAAAAAAgABYAAAAAAAAAAAAgABcAAAAAAAAAAAAgABgAAAAAAAAAAAAgABkAAAAAAAAAAAAgABoAAAAAAAAAAAAhABYAAAAAAAAAAAAhABcAAAAAAAAAAAAhABgAAAAAAAAAAAAhABkAAAAAAAAAAAAhABoAAAAAAAAAAAAiABYAAAAAAAAAAAAiABcAAAAAAAAAAAAiABgAAAAAAAAAAAAiABkAAAAAAAAAAAAiABoAAAAAAAAAAAAjABYAAAAAAAAAAAAjABcAAAAAAAAAAAAkABYAAAAAAAAAAAAkABcAAAAAAAAAAAAkABgAAAAAAAAAAAAkABkAAAAAAAAAAAAlABYAAAAAAAAAAAAlABcAAAAAAAAAAAAlABgAAAAAAAAAAAAlABkAAAAAAAAAAAAmABYAAAAAAAAAAAAmABcAAAAAAAAAAAAmABgAAAAAAAAAAAAmABkAAAAAAAAAAAAnABYAAAAAAAAAAAAnABcAAAAAAAAAAAAnABgAAAAAAAAAAAAnABkAAAAAAAAAAAAoABYAAAAAAAAAAAAoABcAAAAAAAAAAAAoABgAAAAAAAAAAAAoABkAAAAAAAAAAAApABYAAAAAAAAAAAApABcAAAAAAAAAAAApABgAAAAAAAAAAAApABkAAAAAAAAAAAAaABsAAAAAAAAAAAAbABsAAAAAAAAAAAAbABwAAAAAAAAAAAAcABsAAAAAAAAAAAAcABwAAAAAAAAAAAAdABsAAAAAAAAAAAAdABwAAAAAAAAAAAAeABsAAAAAAAAAAAAeABwAAAAAAAAAAAAfABsAAAAAAAAAAAAfABwAAAAAAAAAAAAgABsAAAAAAAAAAAAgABwAAAAAAAAAAAAhABsAAAAAAAAAAAAhABwAAAAAAAAAAAAiABsAAAAAAAAAAAAiABwAAAAAAAAAAAAHABgAAAAAAAAAAQAIABgAAAAAAAAAAQD//xEAAAAAAAAAAAD//xIAAAAAAAAAAAD//xMAAAAAAAAAAAAAABEAAAAAAAAAAAAAABIAAAAAAAAAAAAAABMAAAAAAAAAAAAAABUAAAAAAAAAAAABABEAAAAAAAAAAAABABIAAAAAAAAAAAABABMAAAAAAAAAAAABABUAAAAAAAAAAAACABEAAAAAAAAAAAACABIAAAAAAAAAAAACABMAAAAAAAAAAAACABUAAAAAAAAAAAADABEAAAAAAAAAAAADABIAAAAAAAAAAAADABMAAAAAAAAAAAADABUAAAAAAAAAAAAEABEAAAAAAAAAAAAEABIAAAAAAAAAAAAEABMAAAAAAAAAAAAEABUAAAAAAAAAAAAFABEAAAAAAAAAAAAFABIAAAAAAAAAAAAFABMAAAAAAAAAAAAFABUAAAAAAAAAAAAGABEAAAAAAAAAAAAGABIAAAAAAAAAAAAGABMAAAAAAAAAAAAGABUAAAAAAAAAAAAHABEAAAAAAAAAAAAHABIAAAAAAAAAAAAHABMAAAAAAAAAAAAHABUAAAAAAAAAAAAIABEAAAAAAAAAAAAIABIAAAAAAAAAAAAIABMAAAAAAAAAAAAIABUAAAAAAAAAAAAJABEAAAAAAAAAAAAJABIAAAAAAAAAAAAJABMAAAAAAAAAAAAJABUAAAAAAAAAAAAKABEAAAAAAAAAAAAKABIAAAAAAAAAAAAKABMAAAAAAAAAAAAKABUAAAAAAAAAAAALABEAAAAAAAAAAAALABIAAAAAAAAAAAALABMAAAAAAAAAAAALABUAAAAAAAAAAAAMABEAAAAAAAAAAAAMABIAAAAAAAAAAAAMABMAAAAAAAAAAAAMABUAAAAAAAAAAAANABEAAAAAAAAAAAANABIAAAAAAAAAAAANABMAAAAAAAAAAAANABUAAAAAAAAAAAAOABEAAAAAAAAAAAAOABIAAAAAAAAAAAAOABMAAAAAAAAAAAAOABUAAAAAAAAAAAAPABEAAAAAAAAAAAAPABIAAAAAAAAAAAAPABMAAAAAAAAAAAAPABUAAAAAAAAAAAAQABEAAAAAAAAAAAAQABIAAAAAAAAAAAAQABMAAAAAAAAAAAAQABUAAAAAAAAAAAARABEAAAAAAAAAAAARABIAAAAAAAAAAAARABMAAAAAAAAAAAARABUAAAAAAAAAAAASABEAAAAAAAAAAAASABIAAAAAAAAAAAASABMAAAAAAAAAAAASABUAAAAAAAAAAAATABEAAAAAAAAAAAATABIAAAAAAAAAAAATABMAAAAAAAAAAAATABUAAAAAAAAAAAAUABEAAAAAAAAAAAAUABIAAAAAAAAAAAAUABMAAAAAAAAAAAAUABUAAAAAAAAAAAAVABEAAAAAAAAAAAAVABIAAAAAAAAAAAAVABMAAAAAAAAAAAAVABUAAAAAAAAAAAAWABEAAAAAAAAAAAAWABIAAAAAAAAAAAAWABMAAAAAAAAAAAAWABUAAAAAAAAAAAAXABEAAAAAAAAAAAAXABIAAAAAAAAAAAAXABMAAAAAAAAAAAAXABUAAAAAAAAAAAAYABEAAAAAAAAAAAAYABIAAAAAAAAAAAAYABMAAAAAAAAAAAAYABUAAAAAAAAAAAAZABEAAAAAAAAAAAAZABIAAAAAAAAAAAAZABMAAAAAAAAAAAAZABUAAAAAAAAAAAAaABEAAAAAAAAAAAAaABIAAAAAAAAAAAAaABMAAAAAAAAAAAAaABUAAAAAAAAAAAAbABEAAAAAAAAAAAAbABIAAAAAAAAAAAAbABMAAAAAAAAAAAAbABUAAAAAAAAAAAAcABEAAAAAAAAAAAAcABIAAAAAAAAAAAAcABMAAAAAAAAAAAAcABUAAAAAAAAAAAAdABEAAAAAAAAAAAAdABIAAAAAAAAAAAAdABMAAAAAAAAAAAAdABUAAAAAAAAAAAAeABEAAAAAAAAAAAAeABIAAAAAAAAAAAAeABMAAAAAAAAAAAAeABUAAAAAAAAAAAAfABEAAAAAAAAAAAAfABIAAAAAAAAAAAAfABMAAAAAAAAAAAAfABUAAAAAAAAAAAAgABEAAAAAAAAAAAAgABIAAAAAAAAAAAAgABMAAAAAAAAAAAAgABUAAAAAAAAAAAAhABEAAAAAAAAAAAAhABIAAAAAAAAAAAAhABMAAAAAAAAAAAAhABUAAAAAAAAAAAAiABEAAAAAAAAAAAAiABIAAAAAAAAAAAAiABMAAAAAAAAAAAAiABUAAAAAAAAAAAAjABEAAAAAAAAAAAAjABIAAAAAAAAAAAAjABMAAAAAAAAAAAAjABUAAAAAAAAAAAAkABEAAAAAAAAAAAAkABIAAAAAAAAAAAAkABMAAAAAAAAAAAAkABQAAAAAAAAAAAAkABUAAAAAAAAAAAAlABEAAAAAAAAAAAAlABIAAAAAAAAAAAAlABMAAAAAAAAAAAAlABQAAAAAAAAAAAAlABUAAAAAAAAAAAAmABEAAAAAAAAAAAAmABIAAAAAAAAAAAAmABMAAAAAAAAAAAAmABQAAAAAAAAAAAAmABUAAAAAAAAAAAAnABEAAAAAAAAAAAAnABIAAAAAAAAAAAAnABMAAAAAAAAAAAAnABQAAAAAAAAAAAAnABUAAAAAAAAAAAAoABEAAAAAAAAAAAAoABIAAAAAAAAAAAAoABMAAAAAAAAAAAAoABQAAAAAAAAAAAAoABUAAAAAAAAAAAApABEAAAAAAAAAAAApABIAAAAAAAAAAAApABMAAAAAAAAAAAApABQAAAAAAAAAAAApABUAAAAAAAAAAADx/xEAAAAAAAAAAADx/xIAAAAAAAAAAADx/xMAAAAAAAAAAADx/xQAAAAAAAAAAADx/xUAAAAAAAAAAADx/xYAAAAAAAAAAADx/xcAAAAAAAAAAADx/xgAAAAAAAAAAADx/xkAAAAAAAAAAADx/ywAAAAAAAAAAADx/y0AAAAAAAAAAADx/y4AAAAAAAAAAADy/ywAAAAAAAAAAADy/y0AAAAAAAAAAADy/y4AAAAAAAAAAADz/ywAAAAAAAAAAADz/y0AAAAAAAAAAADz/y4AAAAAAAAAAAD0/ywAAAAAAAAAAAD0/y0AAAAAAAAAAAD0/y4AAAAAAAAAAAD1/ywAAAAAAAAAAAD1/y0AAAAAAAAAAAD1/y4AAAAAAAAAAAD2/ywAAAAAAAAAAAD2/y0AAAAAAAAAAAD2/y4AAAAAAAAAAAD3/ywAAAAAAAAAAAD3/y0AAAAAAAAAAAD3/y4AAAAAAAAAAAD4/ywAAAAAAAAAAAD4/y0AAAAAAAAAAAD4/y4AAAAAAAAAAAD5/ywAAAAAAAAAAAD5/y0AAAAAAAAAAAD5/y4AAAAAAAAAAAD6/ywAAAAAAAAAAAD6/y0AAAAAAAAAAAD6/y4AAAAAAAAAAAD7/ywAAAAAAAAAAAD7/y0AAAAAAAAAAAD7/y4AAAAAAAAAAAD8/ywAAAAAAAAAAAD8/y0AAAAAAAAAAAD8/y4AAAAAAAAAAAD9/ywAAAAAAAAAAAD9/y0AAAAAAAAAAAD9/y4AAAAAAAAAAAD+/ywAAAAAAAAAAAD+/y0AAAAAAAAAAAD+/y4AAAAAAAAAAAD//ywAAAAAAAAAAAD//y0AAAAAAAAAAAD//y4AAAAAAAAAAAAAACwAAAAAAAAAAAAAAC0AAAAAAAAAAAAAAC4AAAAAAAAAAAABACwAAAAAAAAAAAABAC0AAAAAAAAAAAABAC4AAAAAAAAAAAACACwAAAAAAAAAAAACAC0AAAAAAAAAAAACAC4AAAAAAAAAAAADACwAAAAAAAAAAAADAC0AAAAAAAAAAAADAC4AAAAAAAAAAAAEACwAAAAAAAAAAAAEAC0AAAAAAAAAAAAEAC4AAAAAAAAAAAAFACwAAAAAAAAAAAAFAC0AAAAAAAAAAAAFAC4AAAAAAAAAAAAGACwAAAAAAAAAAAAGAC0AAAAAAAAAAAAGAC4AAAAAAAAAAAAHACwAAAAAAAAAAAAHAC0AAAAAAAAAAAAHAC4AAAAAAAAAAAAIACwAAAAAAAAAAAAIAC0AAAAAAAAAAAAIAC4AAAAAAAAAAAAJACwAAAAAAAAAAAAJAC0AAAAAAAAAAAAJAC4AAAAAAAAAAAAKACwAAAAAAAAAAAAKAC0AAAAAAAAAAAAKAC4AAAAAAAAAAAALACwAAAAAAAAAAAALAC0AAAAAAAAAAAALAC4AAAAAAAAAAAAMACwAAAAAAAAAAAAMAC0AAAAAAAAAAAAMAC4AAAAAAAAAAAANACwAAAAAAAAAAAANAC0AAAAAAAAAAAANAC4AAAAAAAAAAAAOACwAAAAAAAAAAAAOAC0AAAAAAAAAAAAOAC4AAAAAAAAAAAAPACwAAAAAAAAAAAAPAC0AAAAAAAAAAAAPAC4AAAAAAAAAAAAQACwAAAAAAAAAAAAQAC0AAAAAAAAAAAAQAC4AAAAAAAAAAAARACwAAAAAAAAAAAARAC0AAAAAAAAAAAARAC4AAAAAAAAAAAASACwAAAAAAAAAAAASAC0AAAAAAAAAAAASAC4AAAAAAAAAAAATACwAAAAAAAAAAAATAC0AAAAAAAAAAAATAC4AAAAAAAAAAAAUACwAAAAAAAAAAAAUAC0AAAAAAAAAAAAUAC4AAAAAAAAAAAAVACwAAAAAAAAAAAAVAC0AAAAAAAAAAAAVAC4AAAAAAAAAAAAWAC0AAAAAAAAAAAAWAC4AAAAAAAAAAAAXAC0AAAAAAAAAAAAXAC4AAAAAAAAAAAAYAC0AAAAAAAAAAAAYAC4AAAAAAAAAAAAZAC0AAAAAAAAAAAAZAC4AAAAAAAAAAAAaAC0AAAAAAAAAAAAaAC4AAAAAAAAAAAAbAC0AAAAAAAAAAAAbAC4AAAAAAAAAAAAcAC0AAAAAAAAAAAAcAC4AAAAAAAAAAAAdAC0AAAAAAAAAAAAdAC4AAAAAAAAAAAAeAC0AAAAAAAAAAAAeAC4AAAAAAAAAAAAfAC0AAAAAAAAAAAAfAC4AAAAAAAAAAAAgAC0AAAAAAAAAAAAgAC4AAAAAAAAAAAAhAC0AAAAAAAAAAAAhAC4AAAAAAAAAAAAiAC0AAAAAAAAAAAAiAC4AAAAAAAAAAAAjACkAAAAAAAAAAAAjACoAAAAAAAAAAAAjACsAAAAAAAAAAAAjAC0AAAAAAAAAAAAjAC4AAAAAAAAAAAAkACkAAAAAAAAAAAAkACoAAAAAAAAAAAAkACsAAAAAAAAAAAAkACwAAAAAAAAAAAAkAC0AAAAAAAAAAAAkAC4AAAAAAAAAAAAlACkAAAAAAAAAAAAlACoAAAAAAAAAAAAlACsAAAAAAAAAAAAlACwAAAAAAAAAAAAlAC0AAAAAAAAAAAAlAC4AAAAAAAAAAAAmACkAAAAAAAAAAAAmACoAAAAAAAAAAAAmACsAAAAAAAAAAAAmACwAAAAAAAAAAAAmAC0AAAAAAAAAAAAmAC4AAAAAAAAAAAAnACkAAAAAAAAAAAAnACoAAAAAAAAAAAAnACsAAAAAAAAAAAAnACwAAAAAAAAAAAAnAC0AAAAAAAAAAAAnAC4AAAAAAAAAAAAoACkAAAAAAAAAAAAoACoAAAAAAAAAAAAoACsAAAAAAAAAAAAoACwAAAAAAAAAAAAoAC0AAAAAAAAAAAAoAC4AAAAAAAAAAAApACkAAAAAAAAAAAApACoAAAAAAAAAAAApACsAAAAAAAAAAAApACwAAAAAAAAAAAApAC0AAAAAAAAAAAApAC4AAAAAAAAAAAASABgAAAAAAAAAAQARABgAAAAAAAAAAQD1/x8AAAAAAAAAAAD1/x4AAAAAAAAAAAD1/x0AAAAAAAAAAAD1/xwAAAAAAAAAAAD2/xwAAAAAAAAAAAD2/x0AAAAAAAAAAAD2/x4AAAAAAAAAAAD3/xwAAAAAAAAAAAD7/xwAAAAAAAAAAAA=") tile_set = ExtResource("1_stmf1") -metadata/patchwork_id = "c30e046ec72e49569a721af2e8bb2059" [node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=1383836085] -tile_map_data = PackedByteArray("AAD1/xwAAgAAAAAAAAD2/xwAAgAAAAAAAAD3/xwAAgAAAAAAAAD4/xwAAgAAAAAAAAD5/xwAAgAAAAAAAAD6/xwAAgAAAAAAAAD7/xwAAgAAAAAAAAD7/x0AAgAAAAAAAAD7/x4AAgAAAAAAAAD7/x8AAgAAAAAAAAD7/yAAAgAAAAAAAAD6/yAAAgAAAAAAAAD5/yAAAgAAAAAAAAD4/yAAAgAAAAAAAAD3/yAAAgAAAAAAAAD2/yAAAgAAAAAAAAD1/yAAAgAAAAAAAAD1/x8AAgAAAAAAAAD1/x4AAgAAAAAAAAD1/x0AAgAAAAAAAAAEABcAAgAAAAAAAAAFABcAAgAAAAAAAAAGABcAAgAAAAAAAAAGABgAAgAAAAAAAAAGABkAAgAAAAAAAAAGABoAAgAAAAAAAAAFABoAAgAAAAAAAAAEABoAAgAAAAAAAAAEABkAAgAAAAAAAAAEABgAAgAAAAAAAAAJABcAAgAAAAAAAAAKABcAAgAAAAAAAAALABcAAgAAAAAAAAALABgAAgAAAAAAAAALABkAAgAAAAAAAAALABoAAgAAAAAAAAAKABoAAgAAAAAAAAAJABoAAgAAAAAAAAAJABkAAgAAAAAAAAAJABgAAgAAAAAAAAAOABcAAgAAAAAAAAAPABcAAgAAAAAAAAAQABcAAgAAAAAAAAAQABgAAgAAAAAAAAAQABkAAgAAAAAAAAAQABoAAgAAAAAAAAAPABoAAgAAAAAAAAAOABoAAgAAAAAAAAAOABkAAgAAAAAAAAAOABgAAgAAAAAAAAATABcAAgAAAAAAAAAUABcAAgAAAAAAAAAVABcAAgAAAAAAAAAVABgAAgAAAAAAAAAVABkAAgAAAAAAAAAVABoAAgAAAAAAAAAUABoAAgAAAAAAAAATABoAAgAAAAAAAAATABkAAgAAAAAAAAATABgAAgAAAAAAAAAkABsAAgAAAAAAAAAlABsAAgAAAAAAAAAmABsAAgAAAAAAAAAnABsAAgAAAAAAAAAnABwAAgAAAAAAAAAnAB0AAgAAAAAAAAAnAB4AAgAAAAAAAAAnAB8AAgAAAAAAAAAnACAAAgAAAAAAAAAmACAAAgAAAAAAAAAlACAAAgAAAAAAAAAkACAAAgAAAAAAAAAkAB8AAgAAAAAAAAAkAB4AAgAAAAAAAAAkAB0AAgAAAAAAAAAkABwAAgAAAAAAAAAZAB0AAgAAAAAAAAAYAB0AAgAAAAAAAAAXAB0AAgAAAAAAAAAWAB0AAgAAAAAAAAAVAB0AAgAAAAAAAAAUAB0AAgAAAAAAAAAUAB4AAgAAAAAAAAAUAB8AAgAAAAAAAAAUACAAAgAAAAAAAAATACAAAgAAAAAAAAATACEAAgAAAAAAAAATACIAAgAAAAAAAAATACMAAgAAAAAAAAASACMAAgAAAAAAAAARACMAAgAAAAAAAAAQACMAAgAAAAAAAAAPACMAAgAAAAAAAAAOACMAAgAAAAAAAAANACMAAgAAAAAAAAAMACMAAgAAAAAAAAALACMAAgAAAAAAAAAKACMAAgAAAAAAAAAJACMAAgAAAAAAAAAIACMAAgAAAAAAAAAHACMAAgAAAAAAAAAGACMAAgAAAAAAAAAFACMAAgAAAAAAAAAEACMAAgAAAAAAAAADACMAAgAAAAAAAAACACMAAgAAAAAAAAABACMAAgAAAAAAAAABACQAAgAAAAAAAAABACUAAgAAAAAAAAACACUAAgAAAAAAAAADACUAAgAAAAAAAAAEACUAAgAAAAAAAAAFACUAAgAAAAAAAAAGACUAAgAAAAAAAAAHACUAAgAAAAAAAAAIACUAAgAAAAAAAAAJACUAAgAAAAAAAAAKACUAAgAAAAAAAAALACUAAgAAAAAAAAAMACUAAgAAAAAAAAANACUAAgAAAAAAAAAOACUAAgAAAAAAAAAPACUAAgAAAAAAAAAQACUAAgAAAAAAAAARACUAAgAAAAAAAAASACUAAgAAAAAAAAATACUAAgAAAAAAAAAUACUAAgAAAAAAAAAVACUAAgAAAAAAAAAVACQAAgAAAAAAAAAVACMAAgAAAAAAAAAVACIAAgAAAAAAAAAVACEAAgAAAAAAAAAVACAAAgAAAAAAAAAVAB8AAgAAAAAAAAAWAB8AAgAAAAAAAAAXAB8AAgAAAAAAAAAZAB4AAgAAAAAAAAAYAB8AAgAAAAAAAAAZAB8AAgAAAAAAAAACAB0AAgAAAAAAAAABAB0AAgAAAAAAAAADAB0AAgAAAAAAAAAEAB0AAgAAAAAAAAAFAB0AAgAAAAAAAAAGAB0AAgAAAAAAAAAHAB0AAgAAAAAAAAAIAB0AAgAAAAAAAAAJAB0AAgAAAAAAAAAKAB0AAgAAAAAAAAALAB0AAgAAAAAAAAAMAB0AAgAAAAAAAAANAB0AAgAAAAAAAAAOAB0AAgAAAAAAAAAPAB0AAgAAAAAAAAAQAB0AAgAAAAAAAAARAB0AAgAAAAAAAAASAB0AAgAAAAAAAAASAB4AAgAAAAAAAAARAB4AAgAAAAAAAAARAB8AAgAAAAAAAAARACAAAgAAAAAAAAAQACAAAgAAAAAAAAAPACAAAgAAAAAAAAAOACAAAgAAAAAAAAANACAAAgAAAAAAAAAMACAAAgAAAAAAAAALACAAAgAAAAAAAAAKACAAAgAAAAAAAAAJACAAAgAAAAAAAAAIACAAAgAAAAAAAAAHACAAAgAAAAAAAAAGACAAAgAAAAAAAAAFACAAAgAAAAAAAAAEACAAAgAAAAAAAAADACAAAgAAAAAAAAACACAAAgAAAAAAAAABACAAAgAAAAAAAAABAB8AAgAAAAAAAAABAB4AAgAAAAAAAAA=") +tile_map_data = PackedByteArray("AAD4/xwAAgAAAAAAAAD5/xwAAgAAAAAAAAD6/xwAAgAAAAAAAAD7/x0AAgAAAAAAAAD7/x4AAgAAAAAAAAD7/x8AAgAAAAAAAAD7/yAAAgAAAAAAAAD1/yAAAgAAAAAAAAAEABcAAgAAAAAAAAAFABcAAgAAAAAAAAAGABcAAgAAAAAAAAAGABgAAgAAAAAAAAAGABkAAgAAAAAAAAAGABoAAgAAAAAAAAAFABoAAgAAAAAAAAAEABoAAgAAAAAAAAAEABkAAgAAAAAAAAAEABgAAgAAAAAAAAAJABcAAgAAAAAAAAAKABcAAgAAAAAAAAALABcAAgAAAAAAAAALABgAAgAAAAAAAAALABkAAgAAAAAAAAALABoAAgAAAAAAAAAKABoAAgAAAAAAAAAJABoAAgAAAAAAAAAJABkAAgAAAAAAAAAJABgAAgAAAAAAAAAOABcAAgAAAAAAAAAPABcAAgAAAAAAAAAQABcAAgAAAAAAAAAQABgAAgAAAAAAAAAQABkAAgAAAAAAAAAQABoAAgAAAAAAAAAPABoAAgAAAAAAAAAOABoAAgAAAAAAAAAOABkAAgAAAAAAAAAOABgAAgAAAAAAAAATABcAAgAAAAAAAAAUABcAAgAAAAAAAAAVABcAAgAAAAAAAAAVABgAAgAAAAAAAAAVABkAAgAAAAAAAAAVABoAAgAAAAAAAAAUABoAAgAAAAAAAAATABoAAgAAAAAAAAATABkAAgAAAAAAAAATABgAAgAAAAAAAAAkABsAAgAAAAAAAAAlABsAAgAAAAAAAAAmABsAAgAAAAAAAAAnABsAAgAAAAAAAAAnABwAAgAAAAAAAAAnAB0AAgAAAAAAAAAnAB4AAgAAAAAAAAAnAB8AAgAAAAAAAAAnACAAAgAAAAAAAAAmACAAAgAAAAAAAAAlACAAAgAAAAAAAAAkACAAAgAAAAAAAAAkAB8AAgAAAAAAAAAkAB4AAgAAAAAAAAAkAB0AAgAAAAAAAAAkABwAAgAAAAAAAAAZAB0AAgAAAAAAAAAYAB0AAgAAAAAAAAAXAB0AAgAAAAAAAAAWAB0AAgAAAAAAAAAVAB0AAgAAAAAAAAAUAB0AAgAAAAAAAAAUAB4AAgAAAAAAAAAUAB8AAgAAAAAAAAAUACAAAgAAAAAAAAATACAAAgAAAAAAAAATACEAAgAAAAAAAAATACIAAgAAAAAAAAATACMAAgAAAAAAAAASACMAAgAAAAAAAAARACMAAgAAAAAAAAAQACMAAgAAAAAAAAAPACMAAgAAAAAAAAAOACMAAgAAAAAAAAANACMAAgAAAAAAAAAMACMAAgAAAAAAAAALACMAAgAAAAAAAAAKACMAAgAAAAAAAAAJACMAAgAAAAAAAAAIACMAAgAAAAAAAAAHACMAAgAAAAAAAAAGACMAAgAAAAAAAAAFACMAAgAAAAAAAAAEACMAAgAAAAAAAAADACMAAgAAAAAAAAACACMAAgAAAAAAAAABACMAAgAAAAAAAAABACQAAgAAAAAAAAABACUAAgAAAAAAAAACACUAAgAAAAAAAAADACUAAgAAAAAAAAAEACUAAgAAAAAAAAAFACUAAgAAAAAAAAAGACUAAgAAAAAAAAAHACUAAgAAAAAAAAAIACUAAgAAAAAAAAAJACUAAgAAAAAAAAAKACUAAgAAAAAAAAALACUAAgAAAAAAAAAMACUAAgAAAAAAAAANACUAAgAAAAAAAAAOACUAAgAAAAAAAAAPACUAAgAAAAAAAAAQACUAAgAAAAAAAAARACUAAgAAAAAAAAASACUAAgAAAAAAAAATACUAAgAAAAAAAAAUACUAAgAAAAAAAAAVACUAAgAAAAAAAAAVACQAAgAAAAAAAAAVACMAAgAAAAAAAAAVACIAAgAAAAAAAAAVACEAAgAAAAAAAAAVACAAAgAAAAAAAAAVAB8AAgAAAAAAAAAWAB8AAgAAAAAAAAAXAB8AAgAAAAAAAAAZAB4AAgAAAAAAAAAYAB8AAgAAAAAAAAAZAB8AAgAAAAAAAAACAB0AAgAAAAAAAAABAB0AAgAAAAAAAAADAB0AAgAAAAAAAAAEAB0AAgAAAAAAAAAFAB0AAgAAAAAAAAAGAB0AAgAAAAAAAAAHAB0AAgAAAAAAAAAIAB0AAgAAAAAAAAAJAB0AAgAAAAAAAAAKAB0AAgAAAAAAAAALAB0AAgAAAAAAAAAMAB0AAgAAAAAAAAANAB0AAgAAAAAAAAAOAB0AAgAAAAAAAAAPAB0AAgAAAAAAAAAQAB0AAgAAAAAAAAARAB0AAgAAAAAAAAASAB0AAgAAAAAAAAASAB4AAgAAAAAAAAARAB4AAgAAAAAAAAARAB8AAgAAAAAAAAARACAAAgAAAAAAAAAQACAAAgAAAAAAAAAPACAAAgAAAAAAAAAOACAAAgAAAAAAAAANACAAAgAAAAAAAAAMACAAAgAAAAAAAAALACAAAgAAAAAAAAAKACAAAgAAAAAAAAAJACAAAgAAAAAAAAAIACAAAgAAAAAAAAAHACAAAgAAAAAAAAAGACAAAgAAAAAAAAAFACAAAgAAAAAAAAAEACAAAgAAAAAAAAADACAAAgAAAAAAAAACACAAAgAAAAAAAAABACAAAgAAAAAAAAABAB8AAgAAAAAAAAABAB4AAgAAAAAAAAD1/yEAAgAAAAAAAAD1/yIAAgAAAAAAAAD1/yMAAgAAAAAAAAD2/yMAAgAAAAAAAAD3/yMAAgAAAAAAAAD4/yMAAgAAAAAAAAD5/yMAAgAAAAAAAAD6/yMAAgAAAAAAAAD7/yMAAgAAAAAAAAD7/yEAAgAAAAAAAAD7/yIAAgAAAAAAAAD2/yAAAgAAAAAAAAD2/x8AAgAAAAAAAAD3/x8AAgAAAAAAAAD3/x4AAgAAAAAAAAD3/x0AAgAAAAAAAAD4/x0AAgAAAAAAAAD6/x0AAgAAAAAAAAA=") tile_set = ExtResource("2_stmf1") -metadata/patchwork_id = "3a1d4805d1324a97a5f5a081f3992606" [node name="BridgeShadows" type="TileMapLayer" parent="TileMapLayers" unique_id=1530477473] tile_map_data = PackedByteArray("AAD8/x4AAwACAAMAAAD9/x4AAwACAAMAAAD+/x4AAwACAAMAAAD//x4AAwACAAMAAAAAAB4AAwACAAMAAAAaAB4AAwACAAMAAAAbAB4AAwACAAMAAAAcAB4AAwACAAMAAAAdAB4AAwACAAMAAAAeAB4AAwACAAMAAAAfAB4AAwACAAMAAAAgAB4AAwACAAMAAAAhAB4AAwACAAMAAAAiAB4AAwACAAMAAAAjAB4AAwACAAMAAAARABgAAwACAAMAAAA=") tile_set = ExtResource("3_f4ekw") -metadata/patchwork_id = "4a35d058c8ca46aba57d013014a2c8c8" [node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=995708699] -tile_map_data = PackedByteArray("AAAGABoAAQACAAIAAAAGABkAAQACAAEAAAAGABgAAQACAAEAAAAGABcAAQACAAAAAAAFABoAAQABAAIAAAAFABkAAQABAAEAAAAFABgAAQABAAEAAAAFABcAAQABAAAAAAAEABoAAQAAAAIAAAAEABkAAQAAAAEAAAAEABgAAQAAAAEAAAAEABcAAQAAAAAAAAALABoAAQACAAIAAAALABkAAQACAAEAAAALABgAAQACAAEAAAALABcAAQACAAAAAAAKABoAAQABAAIAAAAKABkAAQABAAEAAAAKABgAAQABAAEAAAAKABcAAQABAAAAAAAJABoAAQAAAAIAAAAJABkAAQAAAAEAAAAJABgAAQAAAAEAAAAJABcAAQAAAAAAAAAQABoAAQACAAIAAAAQABkAAQACAAEAAAAQABgAAQACAAEAAAAQABcAAQACAAAAAAAPABoAAQABAAIAAAAPABkAAQABAAEAAAAPABgAAQABAAEAAAAPABcAAQABAAAAAAAOABoAAQAAAAIAAAAOABkAAQAAAAEAAAAOABgAAQAAAAEAAAAOABcAAQAAAAAAAAAVABoAAQACAAIAAAAVABkAAQACAAEAAAAVABgAAQACAAEAAAAVABcAAQACAAAAAAAUABoAAQABAAIAAAAUABkAAQABAAEAAAAUABgAAQABAAEAAAAUABcAAQABAAAAAAATABoAAQAAAAIAAAATABkAAQAAAAEAAAATABgAAQAAAAEAAAATABcAAQAAAAAAAAAZAB8AAQACAAIAAAAZAB4AAQACAAEAAAAZAB0AAQACAAAAAAAYAB8AAQABAAIAAAAYAB4AAQABAAEAAAAYAB0AAQABAAAAAAAXAB8AAQABAAIAAAAXAB4AAQABAAEAAAAXAB0AAQABAAAAAAAWAB8AAQABAAIAAAAWAB4AAQABAAEAAAAWAB0AAQABAAAAAAAVAB8AAQABAAEAAAAVAB4AAQABAAEAAAAVAB0AAQABAAAAAAAUAB8AAQAAAAEAAAAUAB4AAQAAAAEAAAAUAB0AAQAAAAAAAAASAB4AAQACAAIAAAASAB0AAQACAAAAAAARAB8AAQACAAEAAAARAB4AAQABAAEAAAARAB0AAQABAAAAAAAQAB8AAQABAAEAAAAQAB4AAQABAAEAAAAQAB0AAQABAAAAAAAPAB8AAQABAAEAAAAPAB4AAQABAAEAAAAPAB0AAQABAAAAAAAOAB8AAQABAAEAAAAOAB4AAQABAAEAAAAOAB0AAQABAAAAAAANAB8AAQABAAEAAAANAB4AAQABAAEAAAANAB0AAQABAAAAAAAMAB8AAQABAAEAAAAMAB4AAQABAAEAAAAMAB0AAQABAAAAAAALAB8AAQABAAEAAAALAB4AAQABAAEAAAALAB0AAQABAAAAAAAKAB8AAQABAAEAAAAKAB4AAQABAAEAAAAKAB0AAQABAAAAAAAJAB8AAQABAAEAAAAJAB4AAQABAAEAAAAJAB0AAQABAAAAAAAIAB8AAQABAAEAAAAIAB4AAQABAAEAAAAIAB0AAQABAAAAAAAHAB8AAQABAAEAAAAHAB4AAQABAAEAAAAHAB0AAQABAAAAAAAGAB8AAQABAAEAAAAGAB4AAQABAAEAAAAGAB0AAQABAAAAAAAFAB8AAQABAAEAAAAFAB4AAQABAAEAAAAFAB0AAQABAAAAAAAEAB8AAQABAAEAAAAEAB4AAQABAAEAAAAEAB0AAQABAAAAAAADAB8AAQABAAEAAAADAB4AAQABAAEAAAADAB0AAQABAAAAAAACAB8AAQABAAEAAAACAB4AAQABAAEAAAACAB0AAQABAAAAAAABAB8AAQAAAAEAAAABAB4AAQAAAAEAAAABAB0AAQAAAAAAAAAUACAAAQABAAEAAAATACAAAQAAAAAAAAAVACAAAQACAAEAAAAUACEAAQABAAEAAAATACEAAQAAAAEAAAAVACEAAQACAAEAAAAVACUAAQACAAIAAAAVACQAAQACAAEAAAAVACMAAQACAAEAAAAVACIAAQACAAEAAAAUACUAAQABAAIAAAAUACQAAQABAAEAAAAUACMAAQABAAEAAAAUACIAAQABAAEAAAATACUAAQABAAIAAAATACQAAQABAAEAAAATACMAAQABAAEAAAATACIAAQAAAAEAAAASACUAAQABAAIAAAASACQAAQABAAEAAAASACMAAQABAAAAAAARACUAAQABAAIAAAARACQAAQABAAEAAAARACMAAQABAAAAAAAQACUAAQABAAIAAAAQACQAAQABAAEAAAAQACMAAQABAAAAAAAPACUAAQABAAIAAAAPACQAAQABAAEAAAAPACMAAQABAAAAAAAOACUAAQABAAIAAAAOACQAAQABAAEAAAAOACMAAQABAAAAAAANACUAAQABAAIAAAANACQAAQABAAEAAAANACMAAQABAAAAAAAMACUAAQABAAIAAAAMACQAAQABAAEAAAAMACMAAQABAAAAAAALACUAAQABAAIAAAALACQAAQABAAEAAAALACMAAQABAAAAAAAKACUAAQABAAIAAAAKACQAAQABAAEAAAAKACMAAQABAAAAAAAJACUAAQABAAIAAAAJACQAAQABAAEAAAAJACMAAQABAAAAAAAIACUAAQABAAIAAAAIACQAAQABAAEAAAAIACMAAQABAAAAAAAHACUAAQABAAIAAAAHACQAAQABAAEAAAAHACMAAQABAAAAAAAGACUAAQABAAIAAAAGACQAAQABAAEAAAAGACMAAQABAAAAAAAFACUAAQABAAIAAAAFACQAAQABAAEAAAAFACMAAQABAAAAAAAEACUAAQABAAIAAAAEACQAAQABAAEAAAAEACMAAQABAAAAAAADACUAAQABAAIAAAADACQAAQABAAEAAAADACMAAQABAAAAAAACACUAAQABAAIAAAACACQAAQABAAEAAAACACMAAQABAAAAAAABACUAAQAAAAIAAAABACQAAQAAAAEAAAABACMAAQAAAAAAAAD7/yAAAQACAAIAAAD7/x8AAQACAAEAAAD7/x4AAQACAAEAAAD7/x0AAQACAAEAAAD7/xwAAQACAAAAAAD6/yAAAQABAAIAAAD6/x8AAQABAAEAAAD6/x4AAQABAAEAAAD6/x0AAQABAAEAAAD6/xwAAQABAAAAAAD5/yAAAQABAAIAAAD5/x8AAQABAAEAAAD5/x4AAQABAAEAAAD5/x0AAQABAAEAAAD5/xwAAQABAAAAAAD4/yAAAQABAAIAAAD4/x8AAQABAAEAAAD4/x4AAQABAAEAAAD4/x0AAQABAAEAAAD4/xwAAQABAAAAAAD3/yAAAQABAAIAAAD3/x8AAQABAAEAAAD3/x4AAQABAAEAAAD3/x0AAQABAAEAAAD3/xwAAQABAAAAAAD2/yAAAQABAAIAAAD2/x8AAQABAAEAAAD2/x4AAQABAAEAAAD2/x0AAQABAAEAAAD2/xwAAQABAAAAAAD1/yAAAQAAAAIAAAD1/x8AAQAAAAEAAAD1/x4AAQAAAAEAAAD1/x0AAQAAAAEAAAD1/xwAAQAAAAAAAAAnACAAAQACAAIAAAAnAB8AAQACAAEAAAAnAB4AAQACAAEAAAAnAB0AAQACAAEAAAAnABwAAQACAAEAAAAnABsAAQACAAAAAAAmACAAAQABAAIAAAAmAB8AAQABAAEAAAAmAB4AAQABAAEAAAAmAB0AAQABAAEAAAAmABwAAQABAAEAAAAmABsAAQABAAAAAAAlACAAAQABAAIAAAAlAB8AAQABAAEAAAAlAB4AAQABAAEAAAAlAB0AAQABAAEAAAAlABwAAQABAAEAAAAlABsAAQABAAAAAAAkACAAAQAAAAIAAAAkAB8AAQAAAAEAAAAkAB4AAQAAAAEAAAAkAB0AAQAAAAEAAAAkABwAAQAAAAEAAAAkABsAAQAAAAAAAAARACAAAQACAAIAAAAQACAAAQABAAIAAAAPACAAAQABAAIAAAAOACAAAQABAAIAAAANACAAAQABAAIAAAAMACAAAQABAAIAAAALACAAAQABAAIAAAAKACAAAQABAAIAAAAJACAAAQABAAIAAAAIACAAAQABAAIAAAAHACAAAQABAAIAAAAGACAAAQABAAIAAAAFACAAAQABAAIAAAAEACAAAQABAAIAAAADACAAAQABAAIAAAACACAAAQABAAIAAAABACAAAQAAAAIAAAA=") +tile_map_data = PackedByteArray("AAAGABoAAQACAAIAAAAGABkAAQACAAEAAAAGABgAAQACAAEAAAAGABcAAQACAAAAAAAFABoAAQABAAIAAAAFABkAAQABAAEAAAAFABgAAQABAAEAAAAFABcAAQABAAAAAAAEABoAAQAAAAIAAAAEABkAAQAAAAEAAAAEABgAAQAAAAEAAAAEABcAAQAAAAAAAAALABoAAQACAAIAAAALABkAAQACAAEAAAALABgAAQACAAEAAAALABcAAQACAAAAAAAKABoAAQABAAIAAAAKABkAAQABAAEAAAAKABgAAQABAAEAAAAKABcAAQABAAAAAAAJABoAAQAAAAIAAAAJABkAAQAAAAEAAAAJABgAAQAAAAEAAAAJABcAAQAAAAAAAAAQABoAAQACAAIAAAAQABkAAQACAAEAAAAQABgAAQACAAEAAAAQABcAAQACAAAAAAAPABoAAQABAAIAAAAPABkAAQABAAEAAAAPABgAAQABAAEAAAAPABcAAQABAAAAAAAOABoAAQAAAAIAAAAOABkAAQAAAAEAAAAOABgAAQAAAAEAAAAOABcAAQAAAAAAAAAVABoAAQACAAIAAAAVABkAAQACAAEAAAAVABgAAQACAAEAAAAVABcAAQACAAAAAAAUABoAAQABAAIAAAAUABkAAQABAAEAAAAUABgAAQABAAEAAAAUABcAAQABAAAAAAATABoAAQAAAAIAAAATABkAAQAAAAEAAAATABgAAQAAAAEAAAATABcAAQAAAAAAAAAZAB8AAQACAAIAAAAZAB4AAQACAAEAAAAZAB0AAQACAAAAAAAYAB8AAQABAAIAAAAYAB4AAQABAAEAAAAYAB0AAQABAAAAAAAXAB8AAQABAAIAAAAXAB4AAQABAAEAAAAXAB0AAQABAAAAAAAWAB8AAQABAAIAAAAWAB4AAQABAAEAAAAWAB0AAQABAAAAAAAVAB8AAQABAAEAAAAVAB4AAQABAAEAAAAVAB0AAQABAAAAAAAUAB8AAQAAAAEAAAAUAB4AAQAAAAEAAAAUAB0AAQAAAAAAAAASAB4AAQACAAIAAAASAB0AAQACAAAAAAARAB8AAQACAAEAAAARAB4AAQABAAEAAAARAB0AAQABAAAAAAAQAB8AAQABAAEAAAAQAB4AAQABAAEAAAAQAB0AAQABAAAAAAAPAB8AAQABAAEAAAAPAB4AAQABAAEAAAAPAB0AAQABAAAAAAAOAB8AAQABAAEAAAAOAB4AAQABAAEAAAAOAB0AAQABAAAAAAANAB8AAQABAAEAAAANAB4AAQABAAEAAAANAB0AAQABAAAAAAAMAB8AAQABAAEAAAAMAB4AAQABAAEAAAAMAB0AAQABAAAAAAALAB8AAQABAAEAAAALAB4AAQABAAEAAAALAB0AAQABAAAAAAAKAB8AAQABAAEAAAAKAB4AAQABAAEAAAAKAB0AAQABAAAAAAAJAB8AAQABAAEAAAAJAB4AAQABAAEAAAAJAB0AAQABAAAAAAAIAB8AAQABAAEAAAAIAB4AAQABAAEAAAAIAB0AAQABAAAAAAAHAB8AAQABAAEAAAAHAB4AAQABAAEAAAAHAB0AAQABAAAAAAAGAB8AAQABAAEAAAAGAB4AAQABAAEAAAAGAB0AAQABAAAAAAAFAB8AAQABAAEAAAAFAB4AAQABAAEAAAAFAB0AAQABAAAAAAAEAB8AAQABAAEAAAAEAB4AAQABAAEAAAAEAB0AAQABAAAAAAADAB8AAQABAAEAAAADAB4AAQABAAEAAAADAB0AAQABAAAAAAACAB8AAQABAAEAAAACAB4AAQABAAEAAAACAB0AAQABAAAAAAABAB8AAQAAAAEAAAABAB4AAQAAAAEAAAABAB0AAQAAAAAAAAAUACAAAQABAAEAAAATACAAAQAAAAAAAAAVACAAAQACAAEAAAAUACEAAQABAAEAAAATACEAAQAAAAEAAAAVACEAAQACAAEAAAAVACUAAQACAAIAAAAVACQAAQACAAEAAAAVACMAAQACAAEAAAAVACIAAQACAAEAAAAUACUAAQABAAIAAAAUACQAAQABAAEAAAAUACMAAQABAAEAAAAUACIAAQABAAEAAAATACUAAQABAAIAAAATACQAAQABAAEAAAATACMAAQABAAEAAAATACIAAQAAAAEAAAASACUAAQABAAIAAAASACQAAQABAAEAAAASACMAAQABAAAAAAARACUAAQABAAIAAAARACQAAQABAAEAAAARACMAAQABAAAAAAAQACUAAQABAAIAAAAQACQAAQABAAEAAAAQACMAAQABAAAAAAAPACUAAQABAAIAAAAPACQAAQABAAEAAAAPACMAAQABAAAAAAAOACUAAQABAAIAAAAOACQAAQABAAEAAAAOACMAAQABAAAAAAANACUAAQABAAIAAAANACQAAQABAAEAAAANACMAAQABAAAAAAAMACUAAQABAAIAAAAMACQAAQABAAEAAAAMACMAAQABAAAAAAALACUAAQABAAIAAAALACQAAQABAAEAAAALACMAAQABAAAAAAAKACUAAQABAAIAAAAKACQAAQABAAEAAAAKACMAAQABAAAAAAAJACUAAQABAAIAAAAJACQAAQABAAEAAAAJACMAAQABAAAAAAAIACUAAQABAAIAAAAIACQAAQABAAEAAAAIACMAAQABAAAAAAAHACUAAQABAAIAAAAHACQAAQABAAEAAAAHACMAAQABAAAAAAAGACUAAQABAAIAAAAGACQAAQABAAEAAAAGACMAAQABAAAAAAAFACUAAQABAAIAAAAFACQAAQABAAEAAAAFACMAAQABAAAAAAAEACUAAQABAAIAAAAEACQAAQABAAEAAAAEACMAAQABAAAAAAADACUAAQABAAIAAAADACQAAQABAAEAAAADACMAAQABAAAAAAACACUAAQABAAIAAAACACQAAQABAAEAAAACACMAAQABAAAAAAABACUAAQAAAAIAAAABACQAAQAAAAEAAAABACMAAQAAAAAAAAD7/yAAAQACAAEAAAD7/x8AAQACAAEAAAD7/x4AAQACAAEAAAD7/x0AAQACAAAAAAD6/yAAAQABAAEAAAD6/x8AAQABAAEAAAD6/x4AAQABAAEAAAD6/x0AAQABAAEAAAD6/xwAAQACAAAAAAD5/yAAAQABAAEAAAD5/x8AAQABAAEAAAD5/x4AAQABAAEAAAD5/x0AAQABAAEAAAD5/xwAAQABAAAAAAD4/yAAAQABAAEAAAD4/x8AAQABAAEAAAD4/x4AAQABAAEAAAD4/x0AAQABAAEAAAD4/xwAAQAAAAAAAAD3/yAAAQABAAEAAAD3/x8AAQABAAEAAAD3/x4AAQAAAAEAAAD3/x0AAQAAAAAAAAD2/yAAAQABAAEAAAD2/x8AAQAAAAAAAAD1/yAAAQAAAAAAAAAnACAAAQACAAIAAAAnAB8AAQACAAEAAAAnAB4AAQACAAEAAAAnAB0AAQACAAEAAAAnABwAAQACAAEAAAAnABsAAQACAAAAAAAmACAAAQABAAIAAAAmAB8AAQABAAEAAAAmAB4AAQABAAEAAAAmAB0AAQABAAEAAAAmABwAAQABAAEAAAAmABsAAQABAAAAAAAlACAAAQABAAIAAAAlAB8AAQABAAEAAAAlAB4AAQABAAEAAAAlAB0AAQABAAEAAAAlABwAAQABAAEAAAAlABsAAQABAAAAAAAkACAAAQAAAAIAAAAkAB8AAQAAAAEAAAAkAB4AAQAAAAEAAAAkAB0AAQAAAAEAAAAkABwAAQAAAAEAAAAkABsAAQAAAAAAAAARACAAAQACAAIAAAAQACAAAQABAAIAAAAPACAAAQABAAIAAAAOACAAAQABAAIAAAANACAAAQABAAIAAAAMACAAAQABAAIAAAALACAAAQABAAIAAAAKACAAAQABAAIAAAAJACAAAQABAAIAAAAIACAAAQABAAIAAAAHACAAAQABAAIAAAAGACAAAQABAAIAAAAFACAAAQABAAIAAAAEACAAAQABAAIAAAADACAAAQABAAIAAAACACAAAQABAAIAAAABACAAAQAAAAIAAAD1/yEAAQAAAAEAAAD2/yEAAQABAAEAAAD2/yIAAQABAAEAAAD3/yIAAQABAAEAAAD3/yMAAQABAAIAAAD4/yMAAQABAAIAAAD7/yMAAQACAAIAAAD7/yIAAQACAAEAAAD7/yEAAQACAAEAAAD6/yMAAQABAAIAAAD6/yIAAQABAAEAAAD6/yEAAQABAAEAAAD5/yMAAQABAAIAAAD5/yIAAQABAAEAAAD5/yEAAQABAAEAAAD4/yIAAQABAAEAAAD4/yEAAQABAAEAAAD3/yEAAQABAAEAAAD2/yMAAQABAAIAAAD1/yMAAQAAAAIAAAD1/yIAAQAAAAEAAAA=") tile_set = ExtResource("4_1ewrr") -metadata/_edit_lock_ = true -metadata/patchwork_id = "b7f5c1228f424302a56f08b275cfe9b8" [node name="DirtPath" type="TileMapLayer" parent="TileMapLayers" unique_id=1769842808] -tile_map_data = PackedByteArray("AAALAB8ABgABAAMAAAAKAB8ABgABAAMAAAAJAB8ABgABAAMAAAAIAB8ABgABAAMAAAAHAB8ABgABAAMAAAAGAB8ABgABAAMAAAAFAB8ABgABAAMAAAAEAB8ABgABAAMAAAADAB8ABgAAAAMAAAAQAB8ABgACAAMAAAAPAB8ABgABAAMAAAAOAB8ABgABAAMAAAANAB8ABgABAAMAAAAMAB8ABgABAAAAAAAMACAABgADAAIAAAAUACQABgACAAIAAAATACQABgABAAMAAAASACQABgABAAMAAAARACQABgABAAMAAAAQACQABgABAAMAAAAPACQABgABAAMAAAAOACQABgABAAMAAAANACQABgABAAMAAAAMACQABgABAAIAAAALACQABgABAAMAAAAKACQABgABAAMAAAAJACQABgABAAMAAAAIACQABgABAAMAAAAHACQABgABAAMAAAAGACQABgABAAMAAAAFACQABgABAAMAAAAEACQABgABAAMAAAADACQABgAAAAMAAAAUACMABgADAAEAAAAUACIABgADAAEAAAAUACEABgADAAEAAAAUACAABgADAAEAAAAUAB8ABgADAAEAAAAUAB4ABgAAAAAAAAAZAB4ABgACAAMAAAAYAB4ABgABAAMAAAAXAB4ABgABAAMAAAAWAB4ABgABAAMAAAAVAB4ABgABAAMAAAAMACMABgADAAAAAAA=") +tile_map_data = PackedByteArray("AAALAB8ABgABAAMAAAAKAB8ABgABAAMAAAAJAB8ABgABAAMAAAAIAB8ABgABAAMAAAAHAB8ABgABAAMAAAAGAB8ABgABAAMAAAAFAB8ABgABAAMAAAAEAB8ABgABAAMAAAADAB8ABgAAAAMAAAAQAB8ABgACAAMAAAAPAB8ABgABAAMAAAAOAB8ABgABAAMAAAANAB8ABgABAAMAAAAMAB8ABgABAAAAAAAMACAABgADAAIAAAAUACQABgACAAIAAAATACQABgABAAMAAAASACQABgABAAMAAAARACQABgABAAMAAAAQACQABgABAAMAAAAPACQABgABAAMAAAAOACQABgABAAMAAAANACQABgABAAMAAAAMACQABgABAAIAAAALACQABgABAAMAAAAKACQABgABAAMAAAAJACQABgABAAMAAAAIACQABgABAAMAAAAHACQABgABAAMAAAAGACQABgABAAMAAAAFACQABgABAAMAAAAEACQABgABAAMAAAADACQABgAAAAMAAAAUACMABgADAAEAAAAUACIABgADAAEAAAAUACEABgADAAEAAAAUACAABgADAAEAAAAUAB8ABgADAAEAAAAUAB4ABgAAAAAAAAAZAB4ABgACAAMAAAAYAB4ABgABAAMAAAAXAB4ABgABAAMAAAAWAB4ABgABAAMAAAAVAB4ABgABAAMAAAAMACMABgADAAAAAAD7/x4AAQAHAAMAAAD6/x4AAQAGAAMAAAD5/x4AAQAGAAMAAAD4/x4AAQAFAAAAAAD4/yIAAQAGAAIAAAD4/yEAAQAGAAEAAAD4/yAAAQAIAAEAAAD4/x8AAQAIAAEAAAD6/yIAAQAHAAIAAAD5/yIAAQAGAAIAAAD3/yIAAQAGAAIAAAD2/yIAAQAFAAIAAAD6/yEAAQAHAAAAAAD5/yEAAQAGAAAAAAD3/yEAAQAGAAAAAAD2/yEAAQAFAAAAAAA=") tile_set = ExtResource("4_1ewrr") -metadata/patchwork_id = "f3a97065d73648f6821dfffb0e54f9c6" [node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=1085906723] tile_map_data = PackedByteArray("AAAFAB0AAwAAAAMAAAAFABwAAwAAAAIAAAAFABsAAwAAAAIAAAAFABoAAwAAAAEAAAAKAB0AAwAAAAMAAAAKABwAAwAAAAIAAAAKABsAAwAAAAIAAAAKABoAAwAAAAEAAAAPAB0AAwAAAAMAAAAPABwAAwAAAAIAAAAPABsAAwAAAAIAAAAPABoAAwAAAAEAAAAUAB0AAwAAAAMAAAAUABwAAwAAAAIAAAAUABsAAwAAAAIAAAAUABoAAwAAAAEAAAABAB4AAwACAAAAAAAAAB4AAwABAAAAAAD//x4AAwABAAAAAAD+/x4AAwABAAAAAAAkAB4AAwACAAAAAAAjAB4AAwABAAAAAAAiAB4AAwABAAAAAAAhAB4AAwABAAAAAAAgAB4AAwABAAAAAAAfAB4AAwABAAAAAAAeAB4AAwABAAAAAAAdAB4AAwABAAAAAAAcAB4AAwABAAAAAAAbAB4AAwABAAAAAAAaAB4AAwABAAAAAAAZAB4AAwAAAAAAAAAMACMAAwAAAAMAAAAMACIAAwAAAAIAAAAMACEAAwAAAAIAAAAMACAAAwAAAAEAAAD9/x4AAwABAAAAAAD8/x4AAwABAAAAAAD7/x4AAwAAAAAAAAAGABgAAwAAAAAAAAAHABgAAwABAAAAAAAIABgAAwABAAAAAAAJABgAAwACAAAAAAALABgAAwACAAEAAAAQABgAAwAAAAAAAAAOABgAAwABAAIAAAATABgAAwACAAAAAAARABgAAwABAAAAAAASABgAAwACAAIAAAA=") tile_set = ExtResource("3_f4ekw") -metadata/patchwork_id = "4a35d058c8ca46aba57d013014a2c8c8" - -[node name="Stone" type="TileMapLayer" parent="TileMapLayers" unique_id=1643532613] -tile_set = ExtResource("5_qwbbk") -metadata/patchwork_id = "bb887ade59a64d27818409a487699363" [node name="StealthGameLogic" type="Node" parent="." unique_id=567289061] script = ExtResource("1_gqxgg") -metadata/patchwork_id = "591e0fdc8b8347bb8c47f544b19d037c" [node name="SequencePuzzle" type="Node2D" parent="." unique_id=1138211408] y_sort_enabled = true script = ExtResource("14_qhjva") metadata/_custom_type_script = "uid://c68oh8dtr21ti" metadata/_edit_lock_ = true -metadata/patchwork_id = "08d9b75c2cba4429b9c2ade261e480a1" [node name="Steps" type="Node2D" parent="SequencePuzzle" unique_id=1148835857] -metadata/patchwork_id = "281ba302545c4ab8a274ce9388202ef7" [node name="SequencePuzzleStep1" type="Node2D" parent="SequencePuzzle/Steps" unique_id=11865420 node_paths=PackedStringArray("sequence", "hint_sign")] script = ExtResource("15_aaq2u") sequence = [NodePath("../../Objects/Rock1"), NodePath("../../Objects/Rock2")] hint_sign = NodePath("../../Hints/SequencePuzzleHintSign1") metadata/_custom_type_script = "uid://ccc78coj2b1li" -metadata/patchwork_id = "024518088f7a4f1b831fa539e616cdfe" [node name="SequencePuzzleStep2" type="Node2D" parent="SequencePuzzle/Steps" unique_id=2066508082 node_paths=PackedStringArray("sequence", "hint_sign")] script = ExtResource("15_aaq2u") sequence = [NodePath("../../Objects/Rock2"), NodePath("../../Objects/Rock3"), NodePath("../../Objects/Rock1")] hint_sign = NodePath("../../Hints/SequencePuzzleHintSign2") metadata/_custom_type_script = "uid://ccc78coj2b1li" -metadata/patchwork_id = "f8c57618767948f5b4e42e4e9752b831" [node name="SequencePuzzleStep3" type="Node2D" parent="SequencePuzzle/Steps" unique_id=2018775464 node_paths=PackedStringArray("sequence", "hint_sign")] script = ExtResource("15_aaq2u") sequence = [NodePath("../../Objects/Rock3"), NodePath("../../Objects/Rock2"), NodePath("../../Objects/Rock4")] hint_sign = NodePath("../../Hints/SequencePuzzleHintSign3") metadata/_custom_type_script = "uid://ccc78coj2b1li" -metadata/patchwork_id = "6c7a9fd2bf2e4ae8af73e2d8ddabfc3e" [node name="Objects" type="Node2D" parent="SequencePuzzle" unique_id=16608040] y_sort_enabled = true -metadata/patchwork_id = "223454254e134ce7bfae13001f873fb5" [node name="Rock1" parent="SequencePuzzle/Objects" unique_id=1453563311 instance=ExtResource("15_lxyj7")] -modulate = Color(1, 0.139475, 0.64391, 1) position = Vector2(352, 1597) +sprite_modulate = Color(1, 0.139475, 0.64391, 1) audio_stream = ExtResource("17_qhjva") -metadata/patchwork_id = "a519ea800c534d56b7689be6cc8c9b41" [node name="Rock2" parent="SequencePuzzle/Objects" unique_id=2009407394 instance=ExtResource("15_lxyj7")] -modulate = Color(0.168667, 0.14, 1, 1) position = Vector2(672, 1597) +sprite_modulate = Color(0.168667, 0.14, 1, 1) audio_stream = ExtResource("20_46vvk") -metadata/patchwork_id = "c5750118d7ee4fa3913f0889507e5476" [node name="Rock3" parent="SequencePuzzle/Objects" unique_id=1849358100 instance=ExtResource("15_lxyj7")] -modulate = Color(0.14, 0.971333, 1, 1) position = Vector2(992, 1592) +sprite_modulate = Color(0.14, 0.971333, 1, 1) audio_stream = ExtResource("18_0cbql") -metadata/patchwork_id = "485c64d9f84749aca416f4376535719e" [node name="Rock4" parent="SequencePuzzle/Objects" unique_id=346315264 instance=ExtResource("15_lxyj7")] -modulate = Color(0.670333, 1, 0.14, 1) position = Vector2(1315, 1593) +sprite_modulate = Color(0.670333, 1, 0.14, 1) audio_stream = ExtResource("20_lxyj7") -metadata/patchwork_id = "dfbb03c7da9f4b78b29c912b15d25197" [node name="Hints" type="Node2D" parent="SequencePuzzle" unique_id=1225714164] y_sort_enabled = true -metadata/patchwork_id = "33629dd42648419cb1cb15f6bfc8c297" [node name="SequencePuzzleHintSign1" parent="SequencePuzzle/Hints" unique_id=139831640 instance=ExtResource("22_4t55h")] position = Vector2(505, 1881) sprite_frames = ExtResource("20_5dmi6") -metadata/patchwork_id = "615dee47078a45438222091971dbba74" [node name="SequencePuzzleHintSign2" parent="SequencePuzzle/Hints" unique_id=235311166 instance=ExtResource("22_4t55h")] position = Vector2(832, 1879) sprite_frames = ExtResource("20_5dmi6") -metadata/patchwork_id = "593891ba24334a9ab6ce21c99bfc8909" [node name="SequencePuzzleHintSign3" parent="SequencePuzzle/Hints" unique_id=918020071 instance=ExtResource("22_4t55h")] position = Vector2(1157, 1877) sprite_frames = ExtResource("20_5dmi6") -metadata/patchwork_id = "ada82b55e5fe4c76b6f0069a2c635592" [node name="OnTheGround" type="Node2D" parent="." unique_id=188079393] y_sort_enabled = true [node name="Player" parent="OnTheGround" unique_id=1231015691 instance=ExtResource("3_82mjw")] -position = Vector2(-360, 1964) +position = Vector2(-619, 2224) player_name = "StoryWeaver" sprite_frames = ExtResource("4_gssbn") -metadata/patchwork_id = "36c9a9c286fa4555bb5b88047ba79484" [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1001959605] process_mode = 3 @@ -191,11 +164,17 @@ limit_right = 2600 limit_bottom = 2500 position_smoothing_enabled = true editor_draw_limits = true -metadata/patchwork_id = "655b203438e044e1908887e080c6db2a" + +[node name="Musician" parent="OnTheGround" unique_id=1639969919 node_paths=PackedStringArray("puzzle") instance=ExtResource("18_gwj3x")] +position = Vector2(-301, 2213) +puzzle = NodePath("../../SequencePuzzle") +dialogue = ExtResource("19_gwj3x") +npc_name = "Musician" +look_at_side = 0 +sprite_frames = ExtResource("20_1ewrr") [node name="EnemyGuards" type="Node2D" parent="OnTheGround" unique_id=253806268] y_sort_enabled = true -metadata/patchwork_id = "d7014591c96b4d88ac1ddfbdcb727b8c" [node name="Guard1-GoingBackAndForth" parent="OnTheGround/EnemyGuards" unique_id=56270479 node_paths=PackedStringArray("patrol_path") instance=ExtResource("4_t8qi2")] position = Vector2(199.99951, 2005.0007) @@ -206,14 +185,12 @@ idle_sound_stream = ExtResource("9_00lb2") alert_others_sound_stream = ExtResource("10_f0rs2") patrol_path = NodePath("../Guard1-PatrolPath") move_speed = 200.0 -metadata/patchwork_id = "fd2665311f364bb9a326f998a5acc416" [node name="Guard1-PatrolPath" type="Path2D" parent="OnTheGround/EnemyGuards" unique_id=282239077] top_level = true position = Vector2(575, 1055) scale = Vector2(0.107143, 0.352768) curve = SubResource("Curve2D_vnsq3") -metadata/patchwork_id = "c32640f611924de39437dd31f687c0cc" [node name="Guard2-GoingBackAndForth" parent="OnTheGround/EnemyGuards" unique_id=1683364649 node_paths=PackedStringArray("patrol_path") instance=ExtResource("4_t8qi2")] position = Vector2(208, 2340) @@ -225,19 +202,16 @@ alert_others_sound_stream = ExtResource("10_f0rs2") patrol_path = NodePath("../Guard2-GoingBackAndForth-PatrolPath") move_speed = 250.0 time_to_detect_player = 0.7 -metadata/patchwork_id = "35452dbd4cd14190b714a0259a784d7c" [node name="Guard2-GoingBackAndForth-PatrolPath" type="Path2D" parent="OnTheGround/EnemyGuards" unique_id=265344336] position = Vector2(208, 2340) curve = SubResource("Curve2D_qhjva") -metadata/patchwork_id = "d18ec323fcf74b079c05c537f026a6ed" [node name="CollectibleItem" parent="OnTheGround" unique_id=1864211007 instance=ExtResource("8_u3d8g")] position = Vector2(2429, 1936) revealed = false next_scene = "uid://dgt78lsdstjrl" item = SubResource("Resource_idy4y") -metadata/patchwork_id = "b4d8599d3c834fa99ea2e23c1a05d61c" [node name="InTheWater" type="Node2D" parent="." unique_id=921358741] z_index = -1 @@ -277,12 +251,9 @@ position = Vector2(1714, 2527) [node name="CanvasModulate" type="CanvasModulate" parent="." unique_id=315080642] color = Color(0.481789, 0.48179, 0.481789, 1) -metadata/patchwork_id = "97c5cb94c6ea4e5d8643dc143296f2d0" - -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1856583425] -metadata/patchwork_id = "6282da80e8ca41ff9035928ff0db765d" [node name="HUD" parent="." unique_id=1968200192 instance=ExtResource("7_axovk")] -metadata/patchwork_id = "540da1730576433da10da24e32088d12" + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1806885507] [connection signal="solved" from="SequencePuzzle" to="OnTheGround/CollectibleItem" method="reveal"] diff --git a/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_glow/barrel_glow.png b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_glow/barrel_glow.png new file mode 100644 index 0000000000..72a5085ca2 --- /dev/null +++ b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_glow/barrel_glow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc7196d40c17d46a59f9edf859b75b9ebb8e9a67f8e06818e1007ce5353fb54f +size 1563 diff --git a/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_glow/barrel_glow.png.import b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_glow/barrel_glow.png.import new file mode 100644 index 0000000000..769174a684 --- /dev/null +++ b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_glow/barrel_glow.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://brranfy51i56n" +path="res://.godot/imported/barrel_glow.png-05ec822d59b536030b7c5094e7b8b456.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_glow/barrel_glow.png" +dest_files=["res://.godot/imported/barrel_glow.png-05ec822d59b536030b7c5094e7b8b456.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/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_unlock_sequence.gd b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_unlock_sequence.gd new file mode 100644 index 0000000000..14066a8957 --- /dev/null +++ b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_unlock_sequence.gd @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +class_name BarrelUnlockSequence +extends Node + +@export var barrels: Array[FillingBarrel] +@export var auto_start: bool = true +@export var randomize_barrel_order: bool = false + +var current_target_index: int = 0 + + +func _ready() -> void: + if auto_start: + start_sequence.call_deferred() + + +func start_sequence() -> void: + if barrels.is_empty(): + push_warning("BarrelUnlockSequence: No barrels assigned.") + return + + if randomize_barrel_order: + barrels.shuffle() + + for barrel in barrels: + if not barrel.completed.is_connected(_on_barrel_completed): + barrel.completed.connect(_on_barrel_completed) + + # Initial state: all locked + barrel.is_locked = true + + unlock_next_barrel() + + +func unlock_next_barrel() -> void: + if current_target_index < barrels.size(): + var target: FillingBarrel = barrels[current_target_index] + target.is_locked = false + + +func _on_barrel_completed() -> void: + current_target_index += 1 + unlock_next_barrel() diff --git a/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_unlock_sequence.gd.uid b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_unlock_sequence.gd.uid new file mode 100644 index 0000000000..e91e94ca31 --- /dev/null +++ b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_unlock_sequence.gd.uid @@ -0,0 +1 @@ +uid://en37d2lad0px diff --git a/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_4.tscn b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_4.tscn index cc5553877c..b215d0f771 100644 --- a/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_4.tscn +++ b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_4.tscn @@ -8,20 +8,16 @@ [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="6_ah6ns"] [ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="6_ubp0p"] [ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="7_ubp0p"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="8_gteq2"] [ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="8_jgk56"] -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="9_jqnd2"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="9_jqnd2"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="10_qh3g1"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="11_bfcsr"] [ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="12_30iwa"] [ext_resource type="SpriteFrames" uid="uid://3ujiuhj7wpm2" path="res://scenes/game_elements/characters/enemies/throwing_enemy/components/ink_drinker_frames_red.tres" id="13_7o6on"] [ext_resource type="PackedScene" uid="uid://c5jedlvvnnbi0" path="res://scenes/game_elements/props/projectile/ink_blob_projectile.tscn" id="14_jgk56"] [ext_resource type="AudioStream" uid="uid://qf2d38rabx8o" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Wings.ogg" id="14_plgxr"] -[ext_resource type="AudioStream" uid="uid://fcmjf1srys7n" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg" id="15_i740e"] -[ext_resource type="SpriteFrames" uid="uid://bhamin2pby7tq" path="res://scenes/game_elements/props/projectile/components/inkblob_spriteframes.tres" id="16_chkjj"] -[ext_resource type="AudioStream" uid="uid://7jlv4wqpihl7" path="res://scenes/game_elements/props/projectile/components/blob_hit.wav" id="17_wrdrp"] -[ext_resource type="PackedScene" uid="uid://clgisducnnh0a" path="res://scenes/game_elements/fx/liquid_small_splat/liquid_small_splat.tscn" id="18_ikvn7"] -[ext_resource type="PackedScene" uid="uid://b4qu6wml5gd7a" path="res://scenes/game_elements/fx/liquid_big_splat/liquid_big_splat.tscn" id="19_xyxfd"] -[ext_resource type="PackedScene" uid="uid://bgce3qns72g3m" path="res://scenes/game_elements/fx/liquid_trail.tscn" id="20_48hph"] +[ext_resource type="AudioStream" uid="uid://bbnj2fog3rdy8" path="res://assets/first_party/sounds/throwing_enemy/Spray.wav" id="15_i740e"] [ext_resource type="SpriteFrames" uid="uid://dxbt7cgoq3dg5" path="res://scenes/game_elements/characters/enemies/throwing_enemy/components/ink_drinker_frames_blue.tres" id="21_jcr1e"] [ext_resource type="PackedScene" uid="uid://y8ha8abfyap2" path="res://scenes/game_elements/props/filling_barrel/filling_barrel.tscn" id="22_ub0fk"] [ext_resource type="PackedScene" uid="uid://dv4f232y8w8dv" path="res://scenes/game_elements/props/decoration/water_rock/water_rock.tscn" id="23_ah6ns"] @@ -99,6 +95,10 @@ tile_set = ExtResource("6_ah6ns") tile_map_data = PackedByteArray("AAAQAAsAAQAIAAIAAAAQAAoAAQAIAAEAAAAQAAkAAQAHAAAAAAAPAAkAAQAGAAMAAAAOAAkAAQAGAAMAAAANAAkAAQAGAAMAAAAMAAkAAQAGAAMAAAALAAkAAQAGAAMAAAAKAAkAAQAGAAMAAAAJAAkAAQAGAAMAAAAIAAkAAQAGAAMAAAAHAAkAAQAGAAMAAAAGAAkAAQAFAAIAAAAGAAgAAQAIAAEAAAAGAAcAAQAIAAEAAAAGAAYAAQAIAAEAAAAGAAUAAQAFAAAAAAAHAAUAAQAGAAMAAAAIAAUAAQAHAAIAAAAIAAQAAQAIAAEAAAAIAAMAAQAIAAEAAAAIAAIAAQAIAAEAAAAIAAEAAQAIAAEAAAAIAAAAAQAIAAEAAAAIAP//AQAIAAEAAAA=") tile_set = ExtResource("6_ah6ns") +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=455492528] +tile_map_data = PackedByteArray("AAADAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAAFAAAAAAAAAAAAAAAGAAEAAAAAAAAAAAAHAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAKAAEAAAAAAAAAAAALAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAARAAEAAAAAAAAAAAARAAIAAAAAAAAAAAARAAMAAAAAAAAAAAARAAQAAAAAAAAAAAARAAUAAAAAAAAAAAARAAYAAAAAAAAAAAASAAUAAAAAAAAAAAATAAUAAAAAAAAAAAATAAQAAAAAAAAAAAATAAMAAAAAAAAAAAATAAIAAAAAAAAAAAATAAEAAAAAAAAAAAATAAAAAAAAAAAAAAARAAkAAAAAAAAAAAARAAoAAAAAAAAAAAASAAoAAAAAAAAAAAAPAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAALAAsAAAAAAAAAAAAKAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAAFAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAADAAsAAAAAAAAAAAACAAsAAAAAAAAAAAAAAAoAAAAAAAAAAAD//woAAAAAAAAAAAD//wkAAAAAAAAAAAAIAAgAAAAAAAAAAAAJAAcAAAAAAAAAAAAKAAcAAAAAAAAAAAAHAAcAAAAAAAAAAAAOAAgAAAAAAAAAAAACAAgAAAAAAAAAAAACAAcAAAAAAAAAAAACAAMAAAAAAAAAAAAOAAQAAAAAAAAAAAAOAAMAAAAAAAAAAAA=") +tile_set = ExtResource("8_gteq2") + [node name="Stones" type="TileMapLayer" parent="TileMapLayers" unique_id=916637736] tile_map_data = PackedByteArray("AAAAAAAABAABAAMAAAABAAAABAABAAMAAAACAAAABAABAAMAAAADAAAABAACAAMAAAAOAP//BAACAAEAAAD//wAABAADAAEAAAD//wEABAADAAEAAAD//wIABAADAAEAAAD//wMABAADAAEAAAASAP//BAABAAAAAAARAP//BAABAAAAAAAQAP//BAABAAEAAAAPAP//BAAAAAEAAAASAAAABAACAAEAAAARAAAABAABAAEAAAAQAAAABAABAAMAAAACAAsABAAAAAMAAAADAAsABAABAAMAAAAEAAsABAABAAMAAAAFAAsABAABAAMAAAAGAAsABAABAAMAAAAKAAsABAABAAMAAAALAAsABAABAAMAAAAMAAsABAABAAMAAAANAAsABAABAAMAAAAOAAsABAABAAMAAAAPAAsABAACAAMAAAAPAAoABAACAAAAAAAOAAoABAABAAQAAAANAAoABAABAAAAAAAMAAoABAABAAQAAAALAAoABAABAAAAAAAKAAoABAABAAQAAAAJAAoABAABAAAAAAAHAAoABAABAAAAAAAGAAoABAABAAQAAAAFAAoABAABAAAAAAAEAAoABAABAAQAAAADAAoABAABAAAAAAACAAoABAAAAAQAAAAPAAAABAABAAMAAAD//wQABAADAAEAAAASAAEABAACAAEAAAARAAEABAAAAAEAAAARAAIABAAAAAEAAAASAAIABAACAAEAAAAOAAAABwABAAMAAAARAAMABAAAAAEAAAASAAMABAABAAAAAAARAAQABAAAAAEAAAASAAQABAADAAIAAAAFAAAABAAAAAMAAAARAAgABAADAAAAAAAGAAAABwABAAAAAAAHAAAABAACAAMAAAAJAAAABAAAAAMAAAAKAAAABwABAAAAAAALAAAABAACAAMAAAANAAAABAAAAAMAAAAIAAoABAABAAAAAAD/////BAAAAAAAAAAAAP//BAABAAAAAAABAP//BAABAAAAAAACAP//BAABAAQAAAADAP//BAACAAQAAAAFAP//BAAAAAQAAAAGAP//BAABAAQAAAAHAP//BAABAAIAAAAJAP//BAABAAQAAAAKAP//BAABAAIAAAALAP//BAACAAQAAAANAP//BAAAAAQAAAD//wUABwACAAIAAAD//wYABAADAAUAAAD//wgABAADAAAAAAD//wkABAAAAAIAAAAAAAkABAACAAAAAAD//woABAAAAAMAAAAAAAoABAACAAMAAAAHAAsABAABAAMAAAAIAAsABAABAAMAAAAJAAsABAABAAMAAAASAAoABAACAAMAAAARAAoABwAAAAUAAAARAAkABAAAAAIAAAASAAkABAACAAAAAAARAAYABAADAAMAAAARAAUABAADAAIAAAASAAUABwABAAMAAAAKAAEABAADAAMAAAAGAAEABAADAAMAAAAOAAIABAADAAAAAAAOAAMABAADAAIAAAAOAAQABwADAAUAAAAOAAgABAADAAMAAAACAAcABAADAAIAAAACAAgABwADAAUAAAACAAYABAADAAAAAAAJAAUABAADAAAAAAAJAAYABAACAAIAAAAIAAgABAADAAMAAAAJAAcABAABAAMAAAAKAAcABAACAAMAAAAKAAYABAACAAAAAAAHAAYABAAAAAQAAAAHAAcABAAAAAMAAAAIAAYABAABAAAAAAAIAAcABAABAAIAAAATAAQABAACAAIAAAATAAMABAABAAEAAAATAAIABAABAAEAAAATAAEABAABAAEAAAATAAAABAABAAEAAAATAP//BAACAAAAAAATAAUABAACAAMAAAACAAIABAADAAQAAAACAAMABAADAAUAAAAOAAcABAADAAQAAAA=") tile_set = ExtResource("7_ubp0p") @@ -130,19 +130,18 @@ shape = SubResource("RectangleShape2D_oj6a4") [node name="Player" parent="OnTheGround" unique_id=702272208 instance=ExtResource("10_qh3g1")] position = Vector2(1050, 627) player_name = "StoryWeaver" -mode = 1 sprite_frames = ExtResource("11_bfcsr") [node name="ThrowingEnemy" parent="OnTheGround" unique_id=1079505207 instance=ExtResource("12_30iwa")] position = Vector2(415, 145) scale = Vector2(-1, 1) -projectile_scene = ExtResource("14_jgk56") +distance = 30.0 throwing_period = 4.0 autostart = true sprite_frames = ExtResource("13_7o6on") idle_sound_stream = ExtResource("14_plgxr") attack_sound_stream = ExtResource("15_i740e") -distance = 30.0 +projectile_scene = ExtResource("14_jgk56") projectile_speed = 20.0 projectile_follows_player = true walking_range = 0.0 @@ -150,14 +149,14 @@ walking_speed = 20.0 [node name="ThrowingEnemy2" parent="OnTheGround" unique_id=2115941003 instance=ExtResource("12_30iwa")] position = Vector2(675, 145) -projectile_scene = ExtResource("14_jgk56") +distance = 30.0 throwing_period = 4.0 odd_shoot = true autostart = true sprite_frames = ExtResource("21_jcr1e") idle_sound_stream = ExtResource("14_plgxr") attack_sound_stream = ExtResource("15_i740e") -distance = 30.0 +projectile_scene = ExtResource("14_jgk56") projectile_speed = 20.0 projectile_follows_player = true walking_range = 0.0 diff --git a/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_5.tscn b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_5.tscn index e72eb53122..ba02b2dc7c 100644 --- a/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_5.tscn +++ b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_5.tscn @@ -13,16 +13,12 @@ [ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="6_brd5j"] [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="8_8bvum"] [ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="9_4cqf2"] -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="10_c2wf5"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="9_xpqp1"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="10_c2wf5"] [ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="13_xpqp1"] [ext_resource type="AudioStream" uid="uid://qf2d38rabx8o" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Wings.ogg" id="15_djbws"] -[ext_resource type="AudioStream" uid="uid://fcmjf1srys7n" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg" id="16_brd5j"] +[ext_resource type="AudioStream" uid="uid://bbnj2fog3rdy8" path="res://assets/first_party/sounds/throwing_enemy/Spray.wav" id="16_brd5j"] [ext_resource type="PackedScene" uid="uid://c5jedlvvnnbi0" path="res://scenes/game_elements/props/projectile/ink_blob_projectile.tscn" id="16_k8ch5"] -[ext_resource type="SpriteFrames" uid="uid://bhamin2pby7tq" path="res://scenes/game_elements/props/projectile/components/inkblob_spriteframes.tres" id="17_k8ch5"] -[ext_resource type="AudioStream" uid="uid://7jlv4wqpihl7" path="res://scenes/game_elements/props/projectile/components/blob_hit.wav" id="18_3urin"] -[ext_resource type="PackedScene" uid="uid://clgisducnnh0a" path="res://scenes/game_elements/fx/liquid_small_splat/liquid_small_splat.tscn" id="19_32m70"] -[ext_resource type="PackedScene" uid="uid://b4qu6wml5gd7a" path="res://scenes/game_elements/fx/liquid_big_splat/liquid_big_splat.tscn" id="20_ai5el"] -[ext_resource type="PackedScene" uid="uid://bgce3qns72g3m" path="res://scenes/game_elements/fx/liquid_trail.tscn" id="21_kqt6a"] [ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="23_fv7ji"] [ext_resource type="SpriteFrames" uid="uid://dxbt7cgoq3dg5" path="res://scenes/game_elements/characters/enemies/throwing_enemy/components/ink_drinker_frames_blue.tres" id="23_ifeq7"] [ext_resource type="PackedScene" uid="uid://dv4f232y8w8dv" path="res://scenes/game_elements/props/decoration/water_rock/water_rock.tscn" id="24_brd5j"] @@ -94,6 +90,10 @@ tile_map_data = PackedByteArray("AAAOAAMAAwABAAEAAAAOAAUAAwABAAEAAAAOAAQAAwABAAI tile_set = ExtResource("4_656tv") metadata/_edit_lock_ = true +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=1237783055] +tile_map_data = PackedByteArray("AAASAAIAAAAAAAAAAAATAAEAAAAAAAAAAAATAAAAAAAAAAAAAAATAP//AAAAAAAAAAASAP//AAAAAAAAAAASAAAAAAAAAAAAAAASAAEAAAAAAAAAAAARAP7/AAAAAAAAAAAQAP7/AAAAAAAAAAAPAP7/AAAAAAAAAAAOAP7/AAAAAAAAAAANAP7/AAAAAAAAAAAMAP7/AAAAAAAAAAALAP//AAAAAAAAAAAKAAAAAAAAAAAAAAAKAP//AAAAAAAAAAAIAAAAAAAAAAAAAAAIAP//AAAAAAAAAAAHAP//AAAAAAAAAAAGAP7/AAAAAAAAAAAFAP7/AAAAAAAAAAAEAP7/AAAAAAAAAAADAP7/AAAAAAAAAAACAP7/AAAAAAAAAAABAP7/AAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAD/////AAAAAAAAAAD//wAAAAAAAAAAAAD//wEAAAAAAAAAAAD//wIAAAAAAAAAAAD//wMAAAAAAAAAAAD//wQAAAAAAAAAAAD//wUAAAAAAAAAAAD//wYAAAAAAAAAAAD//wcAAAAAAAAAAAD//wgAAAAAAAAAAAD//wkAAAAAAAAAAAD//woAAAAAAAAAAAD//wsAAAAAAAAAAAAAAAsAAAAAAAAAAAABAAsAAAAAAAAAAAACAAsAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAIAAoAAAAAAAAAAAAIAAkAAAAAAAAAAAAGAAoAAAAAAAAAAAAKAAkAAAAAAAAAAAAKAAoAAAAAAAAAAAAKAAsAAAAAAAAAAAALAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAOAAsAAAAAAAAAAAAPAAsAAAAAAAAAAAAQAAsAAAAAAAAAAAARAAsAAAAAAAAAAAASAAsAAAAAAAAAAAATAAsAAAAAAAAAAAATAAoAAAAAAAAAAAATAAkAAAAAAAAAAAATAAgAAAAAAAAAAAATAAcAAAAAAAAAAAATAAYAAAAAAAAAAAATAAUAAAAAAAAAAAASAAUAAAAAAAAAAAASAAYAAAAAAAAAAAASAAcAAAAAAAAAAAASAAgAAAAAAAAAAAASAAkAAAAAAAAAAAASAAoAAAAAAAAAAAA=") +tile_set = ExtResource("9_xpqp1") + [node name="Stones" type="TileMapLayer" parent="TileMapLayers" unique_id=2086289956] tile_map_data = PackedByteArray("AAD/////BAAAAAEAAAD//wAABAAAAAEAAAD//wEABAAAAAEAAAD//wIABAAAAAEAAAD//wMABAAAAAEAAAD//wQABAAAAAEAAAD//wUABAADAAEAAAD//wYABAADAAEAAAD//wcABAADAAEAAAD//wgABAADAAEAAAD//wkABAADAAEAAAAAAP//BAACAAEAAAAAAAAABAACAAEAAAAAAAEABAACAAEAAAD//woABAAAAAIAAAD///7/BAAAAAAAAAAAAP7/BAABAAEAAAD//wsABAAAAAMAAAASAAIABAADAAMAAAASAAEABAADAAIAAAASAAAABAADAAEAAAASAP//BAADAAEAAAASAP7/BAABAAAAAAASAAQABAAAAAAAAAASAAUABAAAAAEAAAASAAYABAAAAAEAAAASAAcABAAAAAEAAAASAAgABAAAAAEAAAASAAkABAAAAAEAAAASAAoABAAAAAEAAAASAAsABAABAAMAAAAPAAsABAABAAMAAAAMAAsABAABAAMAAAALAAsABAABAAMAAAANAAsABAABAAMAAAAOAAsABAABAAMAAAAQAAsABAABAAMAAAARAAsABAABAAMAAAAKAAsABAAAAAMAAAARAAoABAACAAAAAAAQAAkABAACAAAAAAANAAgABAACAAAAAAAQAAoABAABAAIAAAAPAAoABAABAAIAAAAOAAoABAABAAIAAAANAAoABAABAAIAAAAMAAoABAABAAIAAAALAAoABAABAAIAAAAKAAoABAAAAAIAAAAPAAkABAABAAAAAAAOAAkABAABAAAAAAANAAkABAABAAEAAAAMAAkABAABAAEAAAALAAkABAABAAEAAAAKAAkABAAAAAEAAAAMAAgABAABAAAAAAALAAgABAABAAAAAAAKAAgABAAAAAAAAAAIAAgABAADAAAAAAAIAAkABAACAAEAAAAIAAoABAACAAIAAAAIAAsABAACAAMAAAAHAAkABAABAAAAAAAGAAkABAAAAAAAAAAGAAoABAAAAAIAAAAHAAoABAABAAIAAAAHAAsABAABAAMAAAAGAAsABAAAAAMAAAATAAsABAACAAMAAAATAAoABAACAAIAAAATAAkABAACAAEAAAATAAgABAACAAEAAAATAAcABAACAAEAAAATAAYABAACAAEAAAATAAUABAACAAEAAAATAAQABAACAAAAAAATAAEABAACAAUAAAATAAAABAADAAIAAAATAP//BAADAAEAAAATAP7/BAACAAAAAAAKAP7/BAAAAAAAAAAKAP//BAAAAAIAAAAIAP7/BAACAAAAAAAIAAAABAADAAMAAAAKAAAABAADAAMAAAAIAP//BAACAAIAAAAHAP//BAAAAAMAAAAHAP7/BAABAAIAAAAHAP3/BAACAAAAAAAGAP3/BAABAAAAAAAFAP3/BAABAAAAAAAEAP3/BAABAAAAAAADAP3/BAABAAAAAAACAP3/BAABAAAAAAABAP3/BAAAAAAAAAABAP7/BAABAAMAAAACAP7/BAABAAMAAAADAP7/BAABAAMAAAAEAP7/BAABAAMAAAAFAP7/BAABAAMAAAAGAP7/BAABAAMAAAALAP3/BAAAAAAAAAAMAP3/BAABAAAAAAANAP3/BAABAAAAAAAOAP3/BAABAAAAAAAPAP3/BAABAAAAAAAQAP3/BAABAAAAAAARAP3/BAACAAAAAAALAP7/BAABAAEAAAAMAP7/BAABAAMAAAANAP7/BAABAAMAAAAOAP7/BAABAAMAAAAPAP7/BAABAAMAAAAQAP7/BAABAAMAAAARAP7/BAABAAMAAAALAP//BAACAAMAAAAEAAsABAACAAMAAAAEAAoABAACAAAAAAADAAoABAABAAAAAAACAAoABAABAAAAAAABAAoABAABAAAAAAAAAAoABAABAAAAAAADAAsABAABAAMAAAACAAsABAABAAMAAAABAAsABAABAAMAAAAAAAsABAABAAMAAAAAAAUABAACAAUAAAAAAAQABAACAAEAAAAAAAIABAACAAEAAAAAAAMABAACAAEAAAA=") tile_set = ExtResource("4_7t80u") @@ -152,7 +152,6 @@ shape = SubResource("RectangleShape2D_l72a8") [node name="Player" parent="OnTheGround" unique_id=594093431 instance=ExtResource("5_4wnvp")] position = Vector2(610, 601) player_name = "StoryWeaver" -mode = 1 sprite_frames = ExtResource("6_7t80u") [node name="Door Enter" parent="OnTheGround" unique_id=1738178916 instance=ExtResource("9_4cqf2")] @@ -160,13 +159,13 @@ position = Vector2(605, 687) [node name="ThrowingEnemy2" parent="OnTheGround" unique_id=1329447299 instance=ExtResource("13_xpqp1")] position = Vector2(737, 291) -projectile_scene = ExtResource("16_k8ch5") throwing_period = 3.0 odd_shoot = true autostart = true sprite_frames = ExtResource("23_ifeq7") idle_sound_stream = ExtResource("15_djbws") attack_sound_stream = ExtResource("16_brd5j") +projectile_scene = ExtResource("16_k8ch5") projectile_duration = 10.0 projectile_follows_player = true walking_range = 0.0 @@ -174,13 +173,13 @@ walking_speed = 20.0 [node name="ThrowingEnemy3" parent="OnTheGround" unique_id=328688235 instance=ExtResource("13_xpqp1")] position = Vector2(412, 291) -projectile_scene = ExtResource("16_k8ch5") throwing_period = 3.0 odd_shoot = true autostart = true sprite_frames = ExtResource("23_ifeq7") idle_sound_stream = ExtResource("15_djbws") attack_sound_stream = ExtResource("16_brd5j") +projectile_scene = ExtResource("16_k8ch5") projectile_duration = 10.0 projectile_follows_player = true walking_range = 0.0 @@ -232,4 +231,6 @@ editor_draw_limits = true [node name="HUD" parent="." unique_id=266218758 instance=ExtResource("25_c2wf5")] +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=2065907666] + [connection signal="goal_reached" from="FillGameLogic" to="FillGameLogic/LevelCompletedAnimation" method="play" binds= ["goal_completed"]] diff --git a/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_6.tscn b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_6.tscn index 7173f58456..cff5bcdc98 100644 --- a/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_6.tscn +++ b/scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/ink_combat_round_6.tscn @@ -6,14 +6,17 @@ [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="2_g1en3"] [ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="2_s2t2y"] [ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="3_1a5yo"] +[ext_resource type="Script" uid="uid://c2lx7gvkonxaa" path="res://scenes/game_elements/props/background_music/components/clip_switcher.gd" id="3_4co4a"] +[ext_resource type="Script" uid="uid://en37d2lad0px" path="res://scenes/quests/lore_quests/quest_003/2_ink_drinker_levels/components/barrel_unlock_sequence.gd" id="3_ihx08"] [ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="5_4co4a"] [ext_resource type="TileSet" uid="uid://do0ffypatd77h" path="res://tiles/bridges.tres" id="5_bl3l0"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="5_pbtyo"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="6_0oabu"] [ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="7_bl3l0"] +[ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="8_ck7cp"] [ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="8_hmvgg"] [ext_resource type="AudioStream" uid="uid://qf2d38rabx8o" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Wings.ogg" id="10_7y6db"] -[ext_resource type="AudioStream" uid="uid://fcmjf1srys7n" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Spit.ogg" id="11_ck7cp"] +[ext_resource type="AudioStream" uid="uid://bbnj2fog3rdy8" path="res://assets/first_party/sounds/throwing_enemy/Spray.wav" id="11_ck7cp"] [ext_resource type="PackedScene" uid="uid://c5jedlvvnnbi0" path="res://scenes/game_elements/props/projectile/ink_blob_projectile.tscn" id="13_ihx08"] [ext_resource type="SpriteFrames" uid="uid://dxbt7cgoq3dg5" path="res://scenes/game_elements/characters/enemies/throwing_enemy/components/ink_drinker_frames_blue.tres" id="17_d8vgr"] [ext_resource type="PackedScene" uid="uid://dv4f232y8w8dv" path="res://scenes/game_elements/props/decoration/water_rock/water_rock.tscn" id="18_yxbgl"] @@ -59,6 +62,15 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="BackgroundMusic" parent="." unique_id=1117240436 instance=ExtResource("1_7y6db")] stream = ExtResource("2_1a5yo") +[node name="ClipSwitcher" type="Node" parent="BackgroundMusic" unique_id=184046629] +script = ExtResource("3_4co4a") +clip = &"cozy" +metadata/_custom_type_script = "uid://c2lx7gvkonxaa" + +[node name="BarrelUnlockSequence" type="Node" parent="." unique_id=961449658 node_paths=PackedStringArray("barrels")] +script = ExtResource("3_ihx08") +barrels = [NodePath("../OnTheGround/FillingBarrel"), NodePath("../OnTheGround/FillingBarrel2"), NodePath("../OnTheGround/FillingBarrel3")] + [node name="FillGameLogic" type="Node" parent="." unique_id=14736843] script = ExtResource("3_1a5yo") barrels_to_win = 3 @@ -82,14 +94,18 @@ tile_set = ExtResource("5_4co4a") tile_map_data = PackedByteArray("AAAAAP//AQAAAAAAAAABAP//AQABAAMAAAACAP//AQABAAMAAAADAP//AQABAAMAAAAEAP//AQABAAAAAAAFAP//AQABAAAAAAAEAAAAAQAAAAEAAAAEAAEAAQAAAAEAAAAEAAIAAQAAAAIAAAAFAAAAAQABAAEAAAAFAAEAAQABAAEAAAAFAAIAAQABAAIAAAAGAAIAAQABAAIAAAAHAAIAAQABAAIAAAAIAAIAAQABAAIAAAAJAAIAAQACAAIAAAAKAAEAAQABAAIAAAALAAEAAQABAAIAAAAMAAEAAQABAAIAAAAMAAAAAQABAAEAAAAMAP//AQABAAAAAAALAP//AQABAAAAAAAKAP//AQABAAAAAAAJAP//AQABAAAAAAAGAP//AQABAAAAAAAIAP//AQABAAAAAAAGAAAAAQABAAEAAAAIAAAAAQABAAEAAAAJAAAAAQABAAEAAAAKAAAAAQABAAEAAAAGAAEAAQABAAEAAAAHAAEAAQABAAEAAAAIAAEAAQABAAEAAAAJAAEAAQABAAEAAAALAAAAAQABAAEAAAABAAQAAQABAAEAAAACAAQAAQABAAEAAAACAAUAAQABAAEAAAACAAYAAQABAAEAAAABAAYAAQABAAEAAAABAAcAAQABAAEAAAABAAgAAQABAAEAAAACAAcAAQABAAEAAAACAAgAAQABAAEAAAADAAkAAQABAAEAAAAEAAkAAQABAAEAAAAFAAkAAQABAAEAAAAGAAkAAQABAAEAAAAHAAkAAQABAAEAAAAIAAkAAQABAAEAAAAJAAkAAQACAAEAAAAJAAoAAQACAAEAAAAJAAsAAQACAAIAAAACAAkAAQABAAEAAAABAAkAAQABAAEAAAACAAoAAQABAAEAAAABAAoAAQABAAEAAAAAAAsAAQAAAAIAAAABAAsAAQABAAIAAAACAAsAAQABAAIAAAADAAsAAQABAAIAAAAEAAsAAQABAAIAAAAFAAsAAQABAAIAAAAGAAsAAQABAAIAAAAHAAsAAQABAAIAAAAIAAsAAQABAAIAAAAMAAsAAQAAAAIAAAAMAAoAAQAAAAEAAAAMAAkAAQAAAAEAAAAMAAgAAQAAAAAAAAANAAgAAQABAAAAAAAOAAgAAQABAAAAAAAPAAkAAQABAAEAAAAQAAkAAQABAAEAAAAOAAkAAQABAAEAAAANAAkAAQABAAEAAAANAAoAAQABAAEAAAAOAAoAAQABAAEAAAAPAAoAAQABAAEAAAAQAAoAAQABAAEAAAANAAsAAQABAAIAAAAOAAsAAQABAAIAAAAPAAsAAQABAAIAAAAQAAsAAQABAAIAAAARAAoAAQABAAEAAAASAAoAAQABAAEAAAATAAoAAQACAAEAAAATAAsAAQACAAIAAAATAAkAAQACAAEAAAATAAgAAQACAAEAAAARAAkAAQABAAEAAAASAAkAAQABAAEAAAARAAgAAQABAAEAAAARAAcAAQABAAEAAAARAAYAAQABAAEAAAARAAUAAQABAAEAAAARAAQAAQABAAEAAAARAAMAAQABAAEAAAARAAIAAQABAAEAAAAQAAEAAQABAAEAAAAQAAAAAQABAAEAAAAQAP//AQABAAAAAAARAP//AQABAAAAAAASAP//AQABAAAAAAATAP//AQACAAAAAAARAAEAAQABAAEAAAARAAAAAQABAAEAAAAOAAEAAQABAAIAAAAPAAcAAQABAAEAAAAHAAUAAQABAAEAAAAIAAUAAQABAAEAAAAJAAUAAQABAAEAAAAKAAUAAQABAAEAAAALAAUAAQABAAEAAAAMAAQAAQACAAAAAAAHAAQAAQABAAAAAAAIAAQAAQABAAAAAAAJAAQAAQABAAAAAAAKAAQAAQABAAAAAAALAAQAAQABAAAAAAAIAAYAAQABAAEAAAAHAAYAAQABAAEAAAAJAAYAAQABAAEAAAAKAAYAAQABAAIAAAALAAYAAQABAAIAAAAMAAYAAQACAAIAAAAMAAUAAQACAAEAAAABAAUAAQABAAEAAAACAAMAAQACAAEAAAABAAMAAQABAAEAAAABAAIAAQABAAEAAAABAAEAAQABAAAAAAACAAIAAQACAAEAAAADAAQAAQABAAAAAAADAAUAAQABAAEAAAAEAAUAAQABAAEAAAAFAAUAAQABAAEAAAAFAAQAAQABAAAAAAAGAAQAAQABAAAAAAAGAAUAAQABAAEAAAAGAAYAAQABAAEAAAAFAAYAAQABAAEAAAAFAAcAAQABAAEAAAAGAAcAAQABAAEAAAAHAAcAAQABAAEAAAAHAAgAAQABAAEAAAAFAAgAAQABAAEAAAAGAAgAAQABAAEAAAANAAAAAQABAAEAAAAOAAAAAQABAAEAAAAPAAAAAQABAAEAAAANAAEAAQABAAIAAAAPAAEAAQABAAEAAAANAP//AQABAAAAAAAOAP//AQABAAAAAAAPAP//AQABAAAAAAAPAAIAAQAAAAEAAAAPAAMAAQAAAAEAAAAQAAMAAQABAAEAAAAQAAIAAQABAAEAAAAQAAQAAQABAAEAAAAQAAUAAQABAAEAAAAQAAYAAQABAAEAAAAEAAQAAQABAAAAAAACAAEAAQACAAAAAAADAAYAAQABAAEAAAAEAAYAAQABAAEAAAADAAcAAQABAAEAAAADAAgAAQABAAEAAAAEAAgAAQABAAEAAAAEAAcAAQABAAEAAAAJAAgAAQACAAEAAAAJAAcAAQACAAEAAAAIAAcAAQABAAEAAAAIAAgAAQABAAEAAAAPAAgAAQABAAEAAAAQAAgAAQABAAEAAAAQAAcAAQABAAEAAAAPAAYAAQABAAEAAAAPAAUAAQABAAEAAAAPAAQAAQABAAEAAAARAAsAAQABAAIAAAASAAsAAQABAAIAAAASAAgAAQABAAEAAAASAAcAAQABAAEAAAASAAYAAQABAAEAAAASAAUAAQABAAEAAAASAAQAAQABAAEAAAASAAMAAQABAAEAAAASAAIAAQABAAEAAAASAAEAAQABAAEAAAASAAAAAQABAAEAAAATAAAAAQACAAEAAAATAAEAAQACAAEAAAATAAIAAQACAAEAAAATAAMAAQACAAEAAAATAAQAAQACAAEAAAATAAUAAQACAAEAAAATAAYAAQACAAEAAAATAAcAAQACAAEAAAADAAoAAQABAAEAAAAEAAoAAQABAAEAAAAFAAoAAQABAAEAAAAGAAoAAQABAAEAAAAHAAoAAQABAAEAAAAIAAoAAQABAAEAAAA=") tile_set = ExtResource("2_g1en3") -[node name="Stones" type="TileMapLayer" parent="TileMapLayers" unique_id=1760636144] -tile_map_data = PackedByteArray("AAAAAAAABAADAAEAAAAAAAEABAADAAEAAAAAAAIABAADAAEAAAAAAAMABAADAAEAAAAAAAQABAADAAEAAAAAAAUABAADAAEAAAAAAAYABAADAAEAAAAAAAcABAADAAEAAAAAAAgABAADAAEAAAAAAAkABAADAAEAAAAAAAoABAADAAIAAAAAAAsABAADAAMAAAAAAP//BAADAAEAAAACAAsABAAAAAUAAAADAAsABAABAAUAAAAEAAsABAABAAUAAAAFAAsABAABAAUAAAAGAAsABAABAAUAAAAHAAsABAABAAUAAAAIAAsABAABAAUAAAAJAAsABAACAAUAAAACAAoABAAAAAQAAAADAAoABAABAAQAAAAEAAoABAABAAQAAAAFAAoABAABAAQAAAAGAAoABAABAAQAAAAHAAoABAABAAQAAAAIAAoABAABAAQAAAAJAAoABAACAAAAAAANAAsABAACAAUAAAAMAAoABAAAAAAAAAANAAoABAACAAQAAAAQAAsABAAAAAQAAAAQAAwABAAAAAUAAAARAAwABAABAAUAAAASAAwABAABAAUAAAATAAwABAACAAUAAAATAAcABAADAAEAAAATAAYABAADAAEAAAATAAUABAADAAEAAAATAAQABAADAAEAAAATAAMABAADAAEAAAATAAIABAADAAEAAAATAAEABAADAAEAAAATAAAABAADAAEAAAATAP//BAADAAEAAAAHAAAABAADAAIAAAAHAAEABAADAAMAAAAIAAAABAACAAMAAAAGAAAABAAAAAMAAAATAAgABAADAAEAAAATAAkABAADAAEAAAATAAoABAADAAEAAAATAAsABAACAAIAAAASAAsABAABAAQAAAARAAsABAABAAQAAAABAP//BAABAAMAAAABAP7/BAABAAAAAAACAP//BAABAAMAAAACAP7/BAABAAAAAAADAP//BAABAAMAAAADAP7/BAABAAAAAAAEAP//BAABAAMAAAAEAP7/BAABAAAAAAAFAP//BAABAAMAAAAFAP7/BAABAAQAAAAJAP//BAABAAMAAAAJAP7/BAABAAQAAAAKAP//BAABAAMAAAAKAP7/BAABAAAAAAALAP//BAABAAMAAAALAP7/BAABAAAAAAAMAP//BAABAAMAAAAMAP7/BAABAAAAAAANAP//BAABAAMAAAANAP7/BAABAAAAAAAOAP//BAABAAMAAAAOAP7/BAABAAAAAAAPAP//BAABAAMAAAAPAP7/BAABAAAAAAAQAP//BAABAAMAAAAQAP7/BAABAAAAAAARAP//BAABAAMAAAARAP7/BAABAAAAAAASAP//BAABAAMAAAASAP7/BAABAAQAAAATAP7/BAACAAAAAAAGAP//BAAAAAIAAAAIAP//BAACAAIAAAAGAP7/BAABAAAAAAAHAP7/BAABAAAAAAAIAP7/BAABAAAAAAAHAP//BAABAAEAAAAAAP7/BAAAAAAAAAAMAAsABAAAAAUAAAA=") -tile_set = ExtResource("2_s2t2y") - [node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=1412587811] tile_map_data = PackedByteArray("AAABAAsAAQAIAAIAAAABAAoAAQAIAAEAAAABAAkAAQAFAAAAAAACAAkAAQAGAAMAAAADAAkAAQAGAAMAAAAEAAkAAQAGAAMAAAAFAAkAAQAGAAMAAAAGAAkAAQAHAAIAAAAGAAgAAQAIAAEAAAAGAAcAAQAIAAEAAAAGAAYAAQAIAAEAAAAGAAUAAQAGAAAAAAAHAAUAAQAGAAMAAAAIAAUAAQAGAAMAAAAJAAUAAQAGAAMAAAAKAAUAAQAGAAMAAAALAAUAAQAGAAMAAAAMAAUAAQAHAAEAAAAMAAYAAQAIAAIAAAAMAAQAAQAIAAAAAAAMAAgAAQAIAAAAAAAMAAkAAQAFAAIAAAANAAkAAQAGAAMAAAAOAAkAAQAHAAAAAAAOAAoAAQAFAAIAAAAPAAoAAQAGAAMAAAAQAAoAAQAGAAMAAAARAAoAAQAGAAMAAAASAAoAAQAHAAMAAAAMAAEAAQAIAAIAAAAMAAAAAQAHAAAAAAALAAAAAQAGAAMAAAAFAAUAAQAFAAIAAAAFAAQAAQAIAAAAAAAFAAIAAQAFAAMAAAAGAAIAAQAGAAMAAAAHAAIAAQAGAAMAAAAIAAIAAQAHAAIAAAAIAAEAAQAFAAAAAAAJAAEAAQAHAAIAAAAJAAAAAQAFAAAAAAAKAAAAAQAGAAMAAAA=") tile_set = ExtResource("2_g1en3") +[node name="Shadows" type="TileMapLayer" parent="TileMapLayers" unique_id=1371557912] +tile_map_data = PackedByteArray("AAATAP//AAAAAAAAAAASAP//AAAAAAAAAAARAP//AAAAAAAAAAAQAP//AAAAAAAAAAAPAP//AAAAAAAAAAAOAP//AAAAAAAAAAANAP//AAAAAAAAAAAMAP//AAAAAAAAAAALAP//AAAAAAAAAAAKAP//AAAAAAAAAAAJAP//AAAAAAAAAAAIAAAAAAAAAAAAAAAHAAEAAAAAAAAAAAAGAAAAAAAAAAAAAAAFAP//AAAAAAAAAAAEAP//AAAAAAAAAAADAP//AAAAAAAAAAACAP//AAAAAAAAAAABAP//AAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAsAAAAAAAAAAAACAAsAAAAAAAAAAAADAAsAAAAAAAAAAAAEAAsAAAAAAAAAAAAFAAsAAAAAAAAAAAAGAAsAAAAAAAAAAAAHAAsAAAAAAAAAAAAIAAsAAAAAAAAAAAAJAAsAAAAAAAAAAAAMAAsAAAAAAAAAAAANAAsAAAAAAAAAAAAQAAwAAAAAAAAAAAARAAwAAAAAAAAAAAASAAwAAAAAAAAAAAATAAwAAAAAAAAAAAATAAsAAAAAAAAAAAATAAoAAAAAAAAAAAATAAkAAAAAAAAAAAATAAgAAAAAAAAAAAATAAcAAAAAAAAAAAATAAYAAAAAAAAAAAATAAUAAAAAAAAAAAATAAQAAAAAAAAAAAATAAMAAAAAAAAAAAATAAIAAAAAAAAAAAATAAEAAAAAAAAAAAATAAAAAAAAAAAAAAA=") +tile_set = ExtResource("8_ck7cp") + +[node name="Stones" type="TileMapLayer" parent="TileMapLayers" unique_id=1760636144] +tile_map_data = PackedByteArray("AAAAAAAABAADAAEAAAAAAAEABAADAAEAAAAAAAIABAADAAEAAAAAAAMABAADAAEAAAAAAAQABAADAAEAAAAAAAUABAADAAEAAAAAAAYABAADAAEAAAAAAAcABAADAAEAAAAAAAgABAADAAEAAAAAAAkABAADAAEAAAAAAAoABAADAAIAAAAAAAsABAADAAMAAAAAAP//BAADAAEAAAACAAsABAAAAAUAAAADAAsABAABAAUAAAAEAAsABAABAAUAAAAFAAsABAABAAUAAAAGAAsABAABAAUAAAAHAAsABAABAAUAAAAIAAsABAABAAUAAAAJAAsABAACAAUAAAACAAoABAAAAAQAAAADAAoABAABAAQAAAAEAAoABAABAAQAAAAFAAoABAABAAQAAAAGAAoABAABAAQAAAAHAAoABAABAAQAAAAIAAoABAABAAQAAAAJAAoABAACAAAAAAANAAsABAACAAUAAAAMAAoABAAAAAAAAAANAAoABAACAAQAAAAQAAsABAAAAAQAAAAQAAwABAAAAAUAAAARAAwABAABAAUAAAASAAwABAABAAUAAAATAAwABAACAAUAAAATAAcABAADAAEAAAATAAYABAADAAEAAAATAAUABAADAAEAAAATAAQABAADAAEAAAATAAMABAADAAEAAAATAAIABAADAAEAAAATAAEABAADAAEAAAATAAAABAADAAEAAAATAP//BAADAAEAAAAHAAAABAADAAIAAAAHAAEABAADAAMAAAAIAAAABAACAAMAAAAGAAAABAAAAAMAAAATAAgABAADAAEAAAATAAkABAADAAEAAAATAAoABAADAAEAAAATAAsABAACAAIAAAASAAsABAABAAQAAAARAAsABAABAAQAAAABAP//BAABAAMAAAABAP7/BAABAAAAAAACAP//BAABAAMAAAACAP7/BAABAAAAAAADAP//BAABAAMAAAADAP7/BAABAAAAAAAEAP//BAABAAMAAAAEAP7/BAABAAAAAAAFAP//BAABAAMAAAAFAP7/BAABAAQAAAAJAP//BAABAAMAAAAJAP7/BAABAAQAAAAKAP//BAABAAMAAAAKAP7/BAABAAAAAAALAP//BAABAAMAAAALAP7/BAABAAAAAAAMAP//BAABAAMAAAAMAP7/BAABAAAAAAANAP//BAABAAMAAAANAP7/BAABAAAAAAAOAP//BAABAAMAAAAOAP7/BAABAAAAAAAPAP//BAABAAMAAAAPAP7/BAABAAAAAAAQAP//BAABAAMAAAAQAP7/BAABAAAAAAARAP//BAABAAMAAAARAP7/BAABAAAAAAASAP//BAABAAMAAAASAP7/BAABAAQAAAATAP7/BAACAAAAAAAGAP//BAAAAAIAAAAIAP//BAACAAIAAAAGAP7/BAABAAAAAAAHAP7/BAABAAAAAAAIAP7/BAABAAAAAAAHAP//BAABAAEAAAAAAP7/BAAAAAAAAAAMAAsABAAAAAUAAAA=") +tile_set = ExtResource("2_s2t2y") + [node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=1898363659] tile_map_data = PackedByteArray("AAAMAAYAAwAAAAEAAAAMAAgAAwAAAAMAAAAMAAcAAwAAAAIAAAAMAAIAAwAAAAIAAAAMAAMAAwAAAAIAAAAMAAEAAwAAAAEAAAAMAAQAAwAAAAMAAAAJAAIAAwABAAEAAAAJAAQAAwABAAEAAAACAAQAAwABAAIAAAAFAAMAAwAAAAIAAAAFAAQAAwAAAAMAAAAFAAIAAwAAAAEAAAA=") tile_set = ExtResource("5_bl3l0") @@ -101,7 +117,6 @@ y_sort_enabled = true [node name="Player" parent="OnTheGround" unique_id=1552830980 instance=ExtResource("5_pbtyo")] position = Vector2(104, 623) player_name = "StoryWeaver" -mode = 1 sprite_frames = ExtResource("6_0oabu") [node name="Door Enter" parent="OnTheGround" unique_id=1697473757 instance=ExtResource("7_bl3l0")] @@ -235,5 +250,5 @@ editor_draw_limits = true [node name="Mothsache" parent="." unique_id=1695758163 instance=ExtResource("30_4co4a")] position = Vector2(800, 362) -[connection signal="goal_reached" from="FillGameLogic" to="BackgroundMusic" method="switch_to_clip" binds= [&"cozy"]] +[connection signal="goal_reached" from="FillGameLogic" to="BackgroundMusic/ClipSwitcher" method="switch"] [connection signal="goal_reached" from="FillGameLogic" to="FillGameLogic/LevelCompletedAnimation" method="play" binds= ["goal_completed"]] diff --git a/scenes/quests/lore_quests/quest_003/quest.tres b/scenes/quests/lore_quests/quest_003/quest.tres index 8cf61a96a9..9ff2350187 100644 --- a/scenes/quests/lore_quests/quest_003/quest.tres +++ b/scenes/quests/lore_quests/quest_003/quest.tres @@ -8,4 +8,5 @@ title = "Placeholder" description = "A quest to hold scenes that don't yet have a permanent home." first_scene = "uid://d2ejk3qrh0fo3" threads_to_collect = 2 +is_lore_quest = true metadata/_custom_type_script = "uid://dts1hwdy3phin" diff --git a/scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part4/afuera_jugando.tscn b/scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part4/afuera_jugando.tscn index 0692a931b2..e509bcf74a 100644 --- a/scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part4/afuera_jugando.tscn +++ b/scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part4/afuera_jugando.tscn @@ -4,7 +4,7 @@ [ext_resource type="SpriteFrames" uid="uid://dbe6l18tss360" path="res://scenes/quests/story_quests/after_the_tremor/charlie_components/after_the_tremor_charlie.tres" id="3_1p1iu"] [ext_resource type="SpriteFrames" uid="uid://dkcv15as5d6gw" path="res://scenes/quests/story_quests/after_the_tremor/bryan_components/after_the_tremor_bryan.tres" id="3_2amn5"] [ext_resource type="Texture2D" uid="uid://cscbwq25mgp2m" path="res://scenes/quests/story_quests/after_the_tremor/0_intro/Imagenes/cut-tree2.png" id="4_jy2m2"] -[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/components/shaker.gd" id="5_ff7m2"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="5_ff7m2"] [ext_resource type="Texture2D" uid="uid://ciwy8mfi0mv65" path="res://scenes/quests/story_quests/after_the_tremor/0_intro/Imagenes/ball_free.png" id="6_5ws3c"] [ext_resource type="Resource" uid="uid://cxkuh283aeqhw" path="res://scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part4/intro_components/dialogue/afuera_jugando.dialogue" id="6_jly1l"] [ext_resource type="Script" uid="uid://skmynvou4l31" path="res://scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part4/intro_components/scripts/cinematicWithShake.gd" id="6_oegj3"] diff --git a/scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part6/escuela.tscn b/scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part6/escuela.tscn index 969d6f4c85..1041cf520c 100644 --- a/scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part6/escuela.tscn +++ b/scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part6/escuela.tscn @@ -5,7 +5,7 @@ [ext_resource type="Script" uid="uid://skmynvou4l31" path="res://scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part4/intro_components/scripts/cinematicWithShake.gd" id="3_mfhaq"] [ext_resource type="SpriteFrames" uid="uid://dbe6l18tss360" path="res://scenes/quests/story_quests/after_the_tremor/charlie_components/after_the_tremor_charlie.tres" id="3_pa5b4"] [ext_resource type="SpriteFrames" uid="uid://nfm4t7txex23" path="res://scenes/quests/story_quests/after_the_tremor/player_components/personajes/ente.tres" id="4_ndyuh"] -[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/components/shaker.gd" id="5_i8ugt"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="5_i8ugt"] [ext_resource type="Resource" uid="uid://bdiq2ur5cwfeu" path="res://scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part6/escuela.dialogue" id="5_vnjc3"] [ext_resource type="AudioStream" uid="uid://caha8luj754tw" path="res://scenes/quests/story_quests/after_the_tremor/music/enteaparece.ogg" id="9_45txo"] [ext_resource type="Shader" uid="uid://dmm7vum4u3k5e" path="res://scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part6/night.gdshader" id="9_pa5b4"] diff --git a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/after_the_tremor_colegiojuego.tscn b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/after_the_tremor_colegiojuego.tscn index 1950f2601d..a5d5a142a9 100644 --- a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/after_the_tremor_colegiojuego.tscn +++ b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/after_the_tremor_colegiojuego.tscn @@ -1,5 +1,6 @@ [gd_scene format=4 uid="uid://brc328pfil6c0"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmxaj"] [ext_resource type="Script" uid="uid://dnp0tjloec2d7" path="res://scenes/game_logic/stealth_game_logic.gd" id="1_wwgeh"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="3_hg8ka"] [ext_resource type="SpriteFrames" uid="uid://dbe6l18tss360" path="res://scenes/quests/story_quests/after_the_tremor/charlie_components/after_the_tremor_charlie.tres" id="3_uy1rd"] @@ -12,17 +13,15 @@ [ext_resource type="Resource" uid="uid://ckjcd1twpgfcw" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/after_the_tremor_collected.dialogue" id="12_6cc12"] [ext_resource type="Script" uid="uid://cujdidbq78hl7" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/zone_focus_1.gd" id="12_h8y0j"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="13_ofhbr"] -[ext_resource type="PackedScene" uid="uid://ekgkd6j30py8" path="res://scenes/game_elements/props/hookable_area/hookable_area.tscn" id="14_6ekeb"] [ext_resource type="Resource" uid="uid://cr4pr512k253l" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/after_the_tremor_stealth.dialogue" id="14_f0etd"] -[ext_resource type="PackedScene" uid="uid://b0dehcnfo68j1" path="res://scenes/game_elements/props/hook_control/hook_control.tscn" id="15_vcfx2"] [ext_resource type="Texture2D" uid="uid://tiivbofnpxou" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/Cable1.png" id="16_0346c"] [ext_resource type="Texture2D" uid="uid://cvt085hooy518" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/cable5.png" id="16_vrucw"] [ext_resource type="Texture2D" uid="uid://ctmd8s7dwld6h" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/cable6.png" id="17_q1aw1"] [ext_resource type="Texture2D" uid="uid://dfofwm2w5if7d" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/cable2.png" id="18_lsxbb"] -[ext_resource type="Script" uid="uid://dg0mpj3hljmo2" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/all_hooked_1.gd" id="19_dm3hp"] [ext_resource type="Texture2D" uid="uid://72x7gmf3raro" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/cable4.png" id="19_q1aw1"] [ext_resource type="Texture2D" uid="uid://boh5l85ulfptl" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/cable3.png" id="20_vrucw"] -[ext_resource type="Script" uid="uid://dx02yocf8sk1a" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable_1.gd" id="20_wjq2d"] +[ext_resource type="Script" uid="uid://b2meftwpi3owb" path="res://scenes/game_elements/props/all_hooked/components/all_hooked.gd" id="21_7vrxi"] +[ext_resource type="PackedScene" uid="uid://dducqjoutx6p2" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/hookable_cable.tscn" id="21_ghglg"] [ext_resource type="Script" uid="uid://hanr8iqo8nrh" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/puzzlemanager.gd" id="23_qmh36"] [ext_resource type="Resource" uid="uid://c47fe74mwp5ug" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/after_the_tremor_puzzlecompletado.dialogue" id="24_uy1rd"] [ext_resource type="AudioStream" uid="uid://dhmgtwerqx3hv" path="res://scenes/quests/story_quests/after_the_tremor/music/minijuego1.ogg" id="26_wjq2d"] @@ -39,13 +38,13 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [sub_resource type="RectangleShape2D" id="RectangleShape2D_dskj3"] size = Vector2(166.65625, 124.5) -[sub_resource type="RectangleShape2D" id="RectangleShape2D_vrucw"] -size = Vector2(50, 76) - -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_lsxbb"] - [node name="Colegio" type="Node2D" unique_id=136947750] +[node name="PlayerMode" type="Node" parent="." unique_id=1553201078] +script = ExtResource("1_pmxaj") +mode = 2 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="StealthGameLogic" type="Node" parent="." unique_id=1737008246] script = ExtResource("1_wwgeh") @@ -56,7 +55,6 @@ color = Color(0.481789, 0.48179, 0.481789, 1) z_index = 1 position = Vector2(511, 521) scale = Vector2(0.75, 0.75) -mode = 2 sprite_frames = ExtResource("3_uy1rd") [node name="Camera2D" type="Camera2D" parent="Player" unique_id=862151622] @@ -299,890 +297,158 @@ shape = SubResource("RectangleShape2D_dskj3") position = Vector2(-314, -54) zoom = Vector2(1.75, 1.75) -[node name="AllHooked1" type="Node2D" parent="." unique_id=554415904 node_paths=PackedStringArray("cables_to_turn_on", "elements") groups=["hook_listener"]] -script = ExtResource("19_dm3hp") -cables_to_turn_on = [NodePath("HookableCable1"), NodePath("HookableCable2"), NodePath("HookableCable3"), NodePath("HookableCable4"), NodePath("HookableCable5"), NodePath("HookableCable6"), NodePath("HookableCable7"), NodePath("HookableCable8"), NodePath("HookableCable9")] +[node name="AllHooked1" type="Node2D" parent="." unique_id=554415904 node_paths=PackedStringArray("elements") groups=["hook_listener"]] +unique_name_in_owner = true +script = ExtResource("21_7vrxi") elements = [NodePath("HookableCable1"), NodePath("HookableCable2"), NodePath("HookableCable3"), NodePath("HookableCable4"), NodePath("HookableCable5"), NodePath("HookableCable6"), NodePath("HookableCable7"), NodePath("HookableCable8"), NodePath("HookableCable9")] metadata/_custom_type_script = "uid://b2meftwpi3owb" -[node name="HookableCable1" type="StaticBody2D" parent="AllHooked1" unique_id=471742001] +[node name="HookableCable1" parent="AllHooked1" unique_id=1507173979 instance=ExtResource("21_ghglg")] position = Vector2(1153, 440) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked1/HookableCable1" unique_id=2004600552 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable1/HookableArea" unique_id=1012588522] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked1/HookableCable1/HookableArea" unique_id=536460399] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked1/HookableCable1/HookableArea" unique_id=1023804394 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable1" unique_id=449853846] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked1/HookableCable1" unique_id=39865925] -position = Vector2(0, -29) texture = ExtResource("16_vrucw") -[node name="HookableCable2" type="StaticBody2D" parent="AllHooked1" unique_id=1193703570] +[node name="HookableCable2" parent="AllHooked1" unique_id=1166213814 instance=ExtResource("21_ghglg")] position = Vector2(1304, 220) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked1/HookableCable2" unique_id=1785690389 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable2/HookableArea" unique_id=1880134153] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked1/HookableCable2/HookableArea" unique_id=1312499004] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked1/HookableCable2/HookableArea" unique_id=1116867096 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable2" unique_id=714813252] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked1/HookableCable2" unique_id=986178265] -position = Vector2(0, -29) texture = ExtResource("16_0346c") -[node name="HookableCable3" type="StaticBody2D" parent="AllHooked1" unique_id=1925351180] +[node name="HookableCable3" parent="AllHooked1" unique_id=209445907 instance=ExtResource("21_ghglg")] position = Vector2(1502, 335) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked1/HookableCable3" unique_id=712556270 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable3/HookableArea" unique_id=1620240342] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked1/HookableCable3/HookableArea" unique_id=597789819] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked1/HookableCable3/HookableArea" unique_id=876095388 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable3" unique_id=1371552442] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked1/HookableCable3" unique_id=1385248416] -position = Vector2(0, -29) texture = ExtResource("18_lsxbb") -[node name="HookableCable4" type="StaticBody2D" parent="AllHooked1" unique_id=575676440] +[node name="HookableCable4" parent="AllHooked1" unique_id=285725742 instance=ExtResource("21_ghglg")] position = Vector2(1880, 442) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked1/HookableCable4" unique_id=1151743511 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable4/HookableArea" unique_id=1096013205] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked1/HookableCable4/HookableArea" unique_id=1787977273] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked1/HookableCable4/HookableArea" unique_id=2122740415 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable4" unique_id=1253017357] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked1/HookableCable4" unique_id=1608502927] -position = Vector2(0, -29) texture = ExtResource("16_vrucw") -[node name="HookableCable5" type="StaticBody2D" parent="AllHooked1" unique_id=1321667551] +[node name="HookableCable5" parent="AllHooked1" unique_id=1424277386 instance=ExtResource("21_ghglg")] position = Vector2(1723, 219) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked1/HookableCable5" unique_id=1521007737 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable5/HookableArea" unique_id=693354094] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked1/HookableCable5/HookableArea" unique_id=71030020] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked1/HookableCable5/HookableArea" unique_id=528962645 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable5" unique_id=466309170] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked1/HookableCable5" unique_id=1251703450] -position = Vector2(0, -29) texture = ExtResource("16_0346c") -[node name="HookableCable6" type="StaticBody2D" parent="AllHooked1" unique_id=1425797929] +[node name="HookableCable6" parent="AllHooked1" unique_id=1426610389 instance=ExtResource("21_ghglg")] position = Vector2(1811, 613) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked1/HookableCable6" unique_id=453129805 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable6/HookableArea" unique_id=937315820] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked1/HookableCable6/HookableArea" unique_id=366071163] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked1/HookableCable6/HookableArea" unique_id=746724825 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable6" unique_id=560921936] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked1/HookableCable6" unique_id=678179998] -position = Vector2(0, -29) texture = ExtResource("19_q1aw1") -[node name="HookableCable7" type="StaticBody2D" parent="AllHooked1" unique_id=1593511450] +[node name="HookableCable7" parent="AllHooked1" unique_id=1292642539 instance=ExtResource("21_ghglg")] position = Vector2(1629, 734) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked1/HookableCable7" unique_id=1709596060 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable7/HookableArea" unique_id=1745600001] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked1/HookableCable7/HookableArea" unique_id=896347250] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked1/HookableCable7/HookableArea" unique_id=1329253550 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable7" unique_id=1635146719] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked1/HookableCable7" unique_id=171905630] -position = Vector2(0, -29) texture = ExtResource("19_q1aw1") -[node name="HookableCable8" type="StaticBody2D" parent="AllHooked1" unique_id=129080006] +[node name="HookableCable8" parent="AllHooked1" unique_id=13115031 instance=ExtResource("21_ghglg")] position = Vector2(1332, 735) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked1/HookableCable8" unique_id=741703168 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable8/HookableArea" unique_id=74546848] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked1/HookableCable8/HookableArea" unique_id=2140756400] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked1/HookableCable8/HookableArea" unique_id=470536896 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable8" unique_id=571289803] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked1/HookableCable8" unique_id=1883748476] -position = Vector2(0, -29) texture = ExtResource("19_q1aw1") -[node name="HookableCable9" type="StaticBody2D" parent="AllHooked1" unique_id=2012494528] +[node name="HookableCable9" parent="AllHooked1" unique_id=1837025491 instance=ExtResource("21_ghglg")] position = Vector2(1174, 660) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked1/HookableCable9" unique_id=222870437 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable9/HookableArea" unique_id=1424660314] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked1/HookableCable9/HookableArea" unique_id=1763626595] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked1/HookableCable9/HookableArea" unique_id=17928773 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked1/HookableCable9" unique_id=1304921672] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked1/HookableCable9" unique_id=1824874247] -position = Vector2(0, -29) texture = ExtResource("19_q1aw1") -[node name="AllHooked2" type="Node2D" parent="." unique_id=649697472 node_paths=PackedStringArray("cables_to_turn_on", "elements") groups=["hook_listener"]] -script = ExtResource("19_dm3hp") -cables_to_turn_on = [NodePath("HookableCable1"), NodePath("HookableCable2"), NodePath("HookableCable3"), NodePath("HookableCable4"), NodePath("HookableCable5"), NodePath("HookableCable6"), NodePath("HookableCable7"), NodePath("HookableCable8"), NodePath("HookableCable9"), NodePath("HookableCable10"), NodePath("HookableCable11"), NodePath("HookableCable12"), NodePath("HookableCable13")] +[node name="AllHooked2" type="Node2D" parent="." unique_id=649697472 node_paths=PackedStringArray("elements") groups=["hook_listener"]] +unique_name_in_owner = true +script = ExtResource("21_7vrxi") elements = [NodePath("HookableCable1"), NodePath("HookableCable2"), NodePath("HookableCable3"), NodePath("HookableCable4"), NodePath("HookableCable5"), NodePath("HookableCable6"), NodePath("HookableCable7"), NodePath("HookableCable8"), NodePath("HookableCable9"), NodePath("HookableCable10"), NodePath("HookableCable11"), NodePath("HookableCable12"), NodePath("HookableCable13")] metadata/_custom_type_script = "uid://b2meftwpi3owb" -[node name="HookableCable1" type="StaticBody2D" parent="AllHooked2" unique_id=1772813657] +[node name="HookableCable1" parent="AllHooked2" unique_id=381133691 instance=ExtResource("21_ghglg")] position = Vector2(1052, 931) scale = Vector2(0.62361753, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable1" unique_id=1677027843 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable1/HookableArea" unique_id=653200566] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable1/HookableArea" unique_id=2042450250] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked2/HookableCable1/HookableArea" unique_id=1455941114 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable1" unique_id=138289288] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable1" unique_id=2014416193] -position = Vector2(0, -29) texture = ExtResource("16_vrucw") -[node name="HookableCable2" type="StaticBody2D" parent="AllHooked2" unique_id=1844316486] +[node name="HookableCable2" parent="AllHooked2" unique_id=1656271777 instance=ExtResource("21_ghglg")] position = Vector2(1187.0001, 933.00006) -scale = Vector2(0.6236176, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable2" unique_id=137380703 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable2/HookableArea" unique_id=1036906753] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable2/HookableArea" unique_id=1309219618] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked2/HookableCable2/HookableArea" unique_id=230698233 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable2" unique_id=1801560470] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable2" unique_id=1698281060] -position = Vector2(0, -29) +scale = Vector2(0.62361753, 0.5157845) texture = ExtResource("20_vrucw") -[node name="HookableCable3" type="StaticBody2D" parent="AllHooked2" unique_id=1003730715] +[node name="HookableCable3" parent="AllHooked2" unique_id=2107617067 instance=ExtResource("21_ghglg")] position = Vector2(1186, 797.00006) -scale = Vector2(0.6236176, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable3" unique_id=825954763 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable3/HookableArea" unique_id=658218960] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable3/HookableArea" unique_id=156919749] -position = Vector2(1.6035469, -3.877758) - -[node name="HookControl" parent="AllHooked2/HookableCable3/HookableArea" unique_id=1756545328 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable3" unique_id=2089715492] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable3" unique_id=1948263752] -position = Vector2(0, -29) -rotation = 3.1415927 +scale = Vector2(0.62361753, 0.5157845) texture = ExtResource("20_vrucw") -[node name="HookableCable4" type="StaticBody2D" parent="AllHooked2" unique_id=1127703740] +[node name="HookableCable4" parent="AllHooked2" unique_id=579647771 instance=ExtResource("21_ghglg")] position = Vector2(1498, 905.00006) scale = Vector2(0.62361753, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable4" unique_id=63889739 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable4/HookableArea" unique_id=1017540349] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable4/HookableArea" unique_id=1059020530] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked2/HookableCable4/HookableArea" unique_id=1005285013 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable4" unique_id=25808012] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable4" unique_id=1659968165] -position = Vector2(0, -29) texture = ExtResource("16_0346c") -[node name="HookableCable5" type="StaticBody2D" parent="AllHooked2" unique_id=699620393] +[node name="HookableCable5" parent="AllHooked2" unique_id=2086162749 instance=ExtResource("21_ghglg")] position = Vector2(1370, 797.00006) -scale = Vector2(0.6236176, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable5" unique_id=2144187452 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable5/HookableArea" unique_id=210163608] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable5/HookableArea" unique_id=273796450] -position = Vector2(0, -1.9389648) - -[node name="HookControl" parent="AllHooked2/HookableCable5/HookableArea" unique_id=54332097 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable5" unique_id=1057877078] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable5" unique_id=1427355998] -position = Vector2(0, -29) -rotation = 3.1415927 +scale = Vector2(0.62361753, 0.5157845) texture = ExtResource("16_0346c") -[node name="HookableCable6" type="StaticBody2D" parent="AllHooked2" unique_id=203719816] +[node name="HookableCable6" parent="AllHooked2" unique_id=1882709855 instance=ExtResource("21_ghglg")] position = Vector2(1578, 1045) -scale = Vector2(0.6236176, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable6" unique_id=1685756451 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable6/HookableArea" unique_id=1018657806] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable6/HookableArea" unique_id=561657699] -position = Vector2(-24.053204, -29.081846) - -[node name="HookControl" parent="AllHooked2/HookableCable6/HookableArea" unique_id=296578742 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable6" unique_id=1687396121] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable6" unique_id=1036049898] -position = Vector2(0, -29) -rotation = -1.5707964 +scale = Vector2(0.62361753, 0.5157845) texture = ExtResource("19_q1aw1") -[node name="HookableCable7" type="StaticBody2D" parent="AllHooked2" unique_id=15402921] +[node name="HookableCable7" parent="AllHooked2" unique_id=56692608 instance=ExtResource("21_ghglg")] position = Vector2(1453, 1188.0001) -scale = Vector2(0.6236176, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable7" unique_id=1028412396 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable7/HookableArea" unique_id=1478954042] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable7/HookableArea" unique_id=1782092769] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked2/HookableCable7/HookableArea" unique_id=1856233524 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable7" unique_id=701217119] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable7" unique_id=1409929818] -position = Vector2(0, -29) +scale = Vector2(0.62361753, 0.5157845) texture = ExtResource("18_lsxbb") -[node name="HookableCable8" type="StaticBody2D" parent="AllHooked2" unique_id=475039719] +[node name="HookableCable8" parent="AllHooked2" unique_id=11446731 instance=ExtResource("21_ghglg")] position = Vector2(1268, 1188) -scale = Vector2(0.6236176, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable8" unique_id=1622113325 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable8/HookableArea" unique_id=735684069] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable8/HookableArea" unique_id=427437506] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked2/HookableCable8/HookableArea" unique_id=1881549863 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable8" unique_id=1129476493] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable8" unique_id=571455654] -position = Vector2(0, -29) +scale = Vector2(0.62361753, 0.5157845) texture = ExtResource("20_vrucw") -[node name="HookableCable9" type="StaticBody2D" parent="AllHooked2" unique_id=953958924] +[node name="HookableCable9" parent="AllHooked2" unique_id=471147353 instance=ExtResource("21_ghglg")] position = Vector2(1081, 1188.0001) scale = Vector2(0.62361753, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable9" unique_id=95039692 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable9/HookableArea" unique_id=1524145430] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable9/HookableArea" unique_id=8381678] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked2/HookableCable9/HookableArea" unique_id=176266852 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable9" unique_id=1544560658] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable9" unique_id=1024194053] -position = Vector2(0, -29) texture = ExtResource("19_q1aw1") -[node name="HookableCable10" type="StaticBody2D" parent="AllHooked2" unique_id=1683772418] +[node name="HookableCable10" parent="AllHooked2" unique_id=1204339167 instance=ExtResource("21_ghglg")] position = Vector2(898.00006, 1188) -scale = Vector2(0.6236176, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable10" unique_id=1606974158 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable10/HookableArea" unique_id=2012257092] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable10/HookableArea" unique_id=1566855466] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked2/HookableCable10/HookableArea" unique_id=1818014427 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable10" unique_id=1831897026] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable10" unique_id=1507844227] -position = Vector2(0, -29) +scale = Vector2(0.62361753, 0.5157845) texture = ExtResource("20_vrucw") -[node name="HookableCable11" type="StaticBody2D" parent="AllHooked2" unique_id=1342472101] +[node name="HookableCable11" parent="AllHooked2" unique_id=182157959 instance=ExtResource("21_ghglg")] position = Vector2(864, 1073.0001) scale = Vector2(0.62361753, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable11" unique_id=1019138553 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable11/HookableArea" unique_id=818910583] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable11/HookableArea" unique_id=1309031048] -position = Vector2(22.449657, -29.082083) - -[node name="HookControl" parent="AllHooked2/HookableCable11/HookableArea" unique_id=536176628 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(22.449657, -29.082083) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable11" unique_id=1052646723] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable11" unique_id=1204645480] -position = Vector2(0, -29) -rotation = 1.5707964 texture = ExtResource("16_vrucw") -[node name="HookableCable12" type="StaticBody2D" parent="AllHooked2" unique_id=1672608462] +[node name="HookableCable12" parent="AllHooked2" unique_id=1315180376 instance=ExtResource("21_ghglg")] position = Vector2(864, 931.00006) scale = Vector2(0.62361753, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable12" unique_id=1409825568 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable12/HookableArea" unique_id=1811903488] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable12/HookableArea" unique_id=738318747] -position = Vector2(17.639017, -29.082083) - -[node name="HookControl" parent="AllHooked2/HookableCable12/HookableArea" unique_id=1424147586 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable12" unique_id=986263178] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable12" unique_id=432652380] -position = Vector2(0, -29) -rotation = 1.5707964 texture = ExtResource("16_0346c") -[node name="HookableCable13" type="StaticBody2D" parent="AllHooked2" unique_id=951990337] +[node name="HookableCable13" parent="AllHooked2" unique_id=2047155065 instance=ExtResource("21_ghglg")] position = Vector2(1586, 1188.0001) scale = Vector2(0.62361753, 0.5157845) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked2/HookableCable13" unique_id=2095565489 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable13/HookableArea" unique_id=1458255079] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked2/HookableCable13/HookableArea" unique_id=1965778236] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked2/HookableCable13/HookableArea" unique_id=630767208 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked2/HookableCable13" unique_id=651578411] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked2/HookableCable13" unique_id=1601912156] -position = Vector2(0, -29) texture = ExtResource("19_q1aw1") [node name="AllHooked3" type="Node2D" parent="." unique_id=436124300 node_paths=PackedStringArray("elements") groups=["hook_listener"]] -script = ExtResource("19_dm3hp") -elements = [NodePath("HookableCable1"), NodePath("HookableCable3"), NodePath("HookableCable4"), NodePath("HookableCable6"), NodePath("HookableCable7"), NodePath("HookableCable9")] +unique_name_in_owner = true +script = ExtResource("21_7vrxi") +elements = [NodePath("HookableCable1"), NodePath("HookableCable2"), NodePath("HookableCable3"), NodePath("HookableCable4"), NodePath("HookableCable5"), NodePath("HookableCable6")] metadata/_custom_type_script = "uid://b2meftwpi3owb" -[node name="HookableCable1" type="StaticBody2D" parent="AllHooked3" unique_id=1730139796] +[node name="HookableCable1" parent="AllHooked3" unique_id=954369125 instance=ExtResource("21_ghglg")] position = Vector2(-423, 844) scale = Vector2(0.79686296, 0.63857657) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked3/HookableCable1" unique_id=950538892 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable1/HookableArea" unique_id=2076940983] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked3/HookableCable1/HookableArea" unique_id=202752179] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked3/HookableCable1/HookableArea" unique_id=271735169 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable1" unique_id=64255722] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked3/HookableCable1" unique_id=1673867362] -position = Vector2(0, -29) texture = ExtResource("16_vrucw") -[node name="HookableCable3" type="StaticBody2D" parent="AllHooked3" unique_id=129425136] +[node name="HookableCable2" parent="AllHooked3" unique_id=358096912 instance=ExtResource("21_ghglg")] position = Vector2(-279.00003, 570) scale = Vector2(0.79686296, 0.63857657) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked3/HookableCable3" unique_id=692041239 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable3/HookableArea" unique_id=84412131] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked3/HookableCable3/HookableArea" unique_id=298810040] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked3/HookableCable3/HookableArea" unique_id=1426199892 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable3" unique_id=1720126432] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked3/HookableCable3" unique_id=1719083700] -position = Vector2(0, -29) texture = ExtResource("16_vrucw") -[node name="HookableCable4" type="StaticBody2D" parent="AllHooked3" unique_id=1339250294] +[node name="HookableCable3" parent="AllHooked3" unique_id=636387815 instance=ExtResource("21_ghglg")] position = Vector2(-429.99997, 685) scale = Vector2(0.79686296, 0.63857657) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked3/HookableCable4" unique_id=1786700998 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable4/HookableArea" unique_id=571511668] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked3/HookableCable4/HookableArea" unique_id=559660887] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked3/HookableCable4/HookableArea" unique_id=411113040 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable4" unique_id=1030175418] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked3/HookableCable4" unique_id=605738345] -position = Vector2(0, -29) texture = ExtResource("16_vrucw") -[node name="HookableCable6" type="StaticBody2D" parent="AllHooked3" unique_id=510927721] +[node name="HookableCable4" parent="AllHooked3" unique_id=814327575 instance=ExtResource("21_ghglg")] position = Vector2(-123.99999, 848) scale = Vector2(0.79686296, 0.63857657) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked3/HookableCable6" unique_id=1352602839 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable6/HookableArea" unique_id=1839669471] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked3/HookableCable6/HookableArea" unique_id=1866992431] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked3/HookableCable6/HookableArea" unique_id=547464693 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable6" unique_id=1890591079] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked3/HookableCable6" unique_id=891633339] -position = Vector2(0, -29) texture = ExtResource("16_vrucw") -[node name="HookableCable7" type="StaticBody2D" parent="AllHooked3" unique_id=2093898282] +[node name="HookableCable5" parent="AllHooked3" unique_id=589090050 instance=ExtResource("21_ghglg")] position = Vector2(-122.00003, 694.00006) scale = Vector2(0.79686296, 0.63857657) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked3/HookableCable7" unique_id=334404853 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable7/HookableArea" unique_id=677644690] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked3/HookableCable7/HookableArea" unique_id=451961385] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked3/HookableCable7/HookableArea" unique_id=1878623623 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable7" unique_id=2139168990] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked3/HookableCable7" unique_id=366217679] -position = Vector2(0, -29) texture = ExtResource("16_vrucw") -[node name="HookableCable9" type="StaticBody2D" parent="AllHooked3" unique_id=838319962] +[node name="HookableCable6" parent="AllHooked3" unique_id=1353669430 instance=ExtResource("21_ghglg")] position = Vector2(-278.00003, 733) scale = Vector2(0.79686296, 0.63857657) -script = ExtResource("20_wjq2d") - -[node name="HookableArea" parent="AllHooked3/HookableCable9" unique_id=2005579489 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point") instance=ExtResource("14_6ekeb")] -controlled_entity = NodePath("..") -hook_control = NodePath("HookControl") -anchor_point = NodePath("Marker2D") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable9/HookableArea" unique_id=950286040] -position = Vector2(0, -28) -shape = SubResource("RectangleShape2D_vrucw") -debug_color = Color(0.689707, 0.288376, 1, 0.42) - -[node name="Marker2D" type="Marker2D" parent="AllHooked3/HookableCable9/HookableArea" unique_id=872254713] -position = Vector2(0, -48) - -[node name="HookControl" parent="AllHooked3/HookableCable9/HookableArea" unique_id=804822090 node_paths=PackedStringArray("hook_area") instance=ExtResource("15_vcfx2")] -position = Vector2(0, -48) -hook_area = NodePath("..") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="AllHooked3/HookableCable9" unique_id=1573372995] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_lsxbb") -disabled = true - -[node name="Sprite2D" type="Sprite2D" parent="AllHooked3/HookableCable9" unique_id=1270446248] -position = Vector2(0, -29) texture = ExtResource("16_vrucw") -[node name="puzzlemanager" type="Node" parent="." unique_id=359730209] +[node name="puzzlemanager" type="Node" parent="." unique_id=359730209 node_paths=PackedStringArray("zone_nodes")] script = ExtResource("23_qmh36") -zone_nodes = Array[NodePath]([NodePath("../AllHooked1"), NodePath("../AllHooked2"), NodePath("../AllHooked3")]) +zone_nodes = [NodePath("../AllHooked1"), NodePath("../AllHooked2"), NodePath("../AllHooked3")] timer_node = NodePath("PuzzleTimer") timer_label = NodePath("../HUD/TimerLabel") final_collectible = NodePath("../CollectibleItem") diff --git a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/all_hooked_1.gd b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/all_hooked_1.gd deleted file mode 100644 index 158bed4293..0000000000 --- a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/all_hooked_1.gd +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends AllHooked -@export var cables_to_turn_on: Array[Node2D] - - -func _ready() -> void: - super._ready() - all_hooked.connect(_on_all_hooked) - -func _on_all_hooked() -> void: - for c in cables_to_turn_on: - if c.has_method("turn_on"): - c.turn_on() - -func _process(delta: float) -> void: - pass diff --git a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/all_hooked_1.gd.uid b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/all_hooked_1.gd.uid deleted file mode 100644 index 80031e74fb..0000000000 --- a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/all_hooked_1.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dg0mpj3hljmo2 diff --git a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable.gd b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable.gd new file mode 100644 index 0000000000..c52bba8c30 --- /dev/null +++ b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable.gd @@ -0,0 +1,35 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +extends StaticBody2D + +## Texture of the inner node %Sprite2D of type Sprite2D +@export var texture: Texture2D: + set = _set_texture + +var is_on: bool = false + +@onready var sprite_2d: Sprite2D = %Sprite2D + +func _set_texture(new_texture: Texture2D) -> void: + texture = new_texture + if not is_node_ready(): + return + if texture != null: + sprite_2d.texture = texture + + +func _ready() -> void: + _set_texture(texture) + + +func turn_on() -> void: + is_on = true + sprite_2d.modulate = Color(3, 3, 3) + + +func turn_off() -> void: + if not is_on: + return + is_on = false + sprite_2d.modulate = Color(0.6, 0.6, 0.6) # apagado (fallback) diff --git a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable_1.gd.uid b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable.gd.uid similarity index 100% rename from scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable_1.gd.uid rename to scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable.gd.uid diff --git a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable_1.gd b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable_1.gd deleted file mode 100644 index b50ae607c7..0000000000 --- a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable_1.gd +++ /dev/null @@ -1,19 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends StaticBody2D - -var is_on: bool = false - -func turn_on() -> void: - is_on = true - print("TURN ON REAL:", get_path(), " · visible=", visible) - $Sprite2D.self_modulate = Color(3, 3, 3) - - - -func turn_off() -> void: - if not is_on: - return - is_on = false - if has_node("Sprite2D"): - $Sprite2D.modulate = Color(0.6, 0.6, 0.6) # apagado (fallback) diff --git a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/puzzlemanager.gd b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/puzzlemanager.gd index 4af908e7ce..7a0e427b2a 100644 --- a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/puzzlemanager.gd +++ b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/puzzlemanager.gd @@ -2,7 +2,7 @@ # SPDX-License-Identifier: MPL-2.0 extends Node -@export var zone_nodes: Array[NodePath] = [] +@export var zone_nodes: Array[AllHooked] = [] @export var timer_node: NodePath @export var timer_seconds: int = 180 @export var timer_label: NodePath = NodePath("") @@ -25,13 +25,9 @@ var _running: bool = false func _ready() -> void: - for p in zone_nodes: - var n := get_node_or_null(p) - if n: - var cb := Callable(self, "_on_zone_all_hooked").bind(n) - if not n.is_connected("all_hooked", cb): - n.connect("all_hooked", cb) - _zones_done[n] = false + for n in zone_nodes: + n.all_hooked.connect(_on_zone_all_hooked.bind(n)) + _zones_done[n] = false _timer = get_node_or_null(timer_node) as Timer @@ -101,9 +97,6 @@ func _success() -> void: await DialogueManager.dialogue_ended - _set_player_mode_to_cozy() - - if final_collectible != NodePath(""): var col := get_node_or_null(final_collectible) if col and col.has_method("reveal"): @@ -142,34 +135,8 @@ func _on_timer_timeout() -> void: func _reset_zones_state() -> void: - for p in zone_nodes: - var n := get_node_or_null(p) - if not n: - continue - - + for n in zone_nodes: _reset_cables(n) - - var areas: Array = [] - - - var temp = null - if n and n.has_method("get"): - - temp = n.get("areas_to_hook") - else: - - temp = n.get("areas_to_hook") - - if temp is Array: - areas = temp - - for area in areas: - if area and n.has_method("released"): - - n.released(area) - - _zones_done[n] = false @@ -187,26 +154,6 @@ func _update_timer_label(seconds_left: int) -> void: lab.text = _zero(m) + ":" + _zero(s) -func _set_player_mode_to_cozy() -> void: - var player := _get_player_node() - if not player: - print("PuzzleManager: no se encontró Player.") - return - - player.mode = 0 # COZY - print("PuzzleManager: player.mode = COZY (0)") - - -func _get_player_node() -> Node: - if player_node != NodePath("") and get_node_or_null(player_node): - return get_node_or_null(player_node) - - var group_nodes := get_tree().get_nodes_in_group("player") - if group_nodes.size() > 0: - return group_nodes[0] - - return null - func _zero(n: int) -> String: return str(n) if n >= 10 else "0" + str(n) @@ -228,47 +175,14 @@ func _collect_cables_recursive(node: Node, out_array: Array) -> void: -func _light_up_cables(zone_node: Node) -> void: - if not zone_node: - return - - var cables: Array = [] - _collect_cables_recursive(zone_node, cables) - - - var seen := {} - for c in cables: - if not c: - continue - if seen.has(c): - continue - seen[c] = true - - +func _light_up_cables(zone_node: AllHooked) -> void: + for c in zone_node.elements: if c.has_method("turn_on"): c.turn_on() print("PuzzleManager: encendiendo cable -> ", c.get_path()) - elif c.has_node("Sprite2D"): - var spr = c.get_node("Sprite2D") as CanvasItem - if spr: - spr.modulate = Color(1, 1, 1) - print("PuzzleManager: encendiendo (modulate) -> ", c.get_path()) - else: - print("PuzzleManager: candidato cable sin método ni Sprite2D -> ", c.get_path()) - -func _reset_cables(zone_node: Node) -> void: - if not zone_node: - return - var cables: Array = [] - _collect_cables_recursive(zone_node, cables) - for c in cables: - if not c: - continue +func _reset_cables(zone_node: AllHooked) -> void: + for c in zone_node.elements: if c.has_method("turn_off"): c.turn_off() - elif c.has_node("Sprite2D"): - var spr = c.get_node("Sprite2D") as CanvasItem - if spr: - spr.modulate = Color(0.6, 0.6, 0.6) diff --git a/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/hookable_cable.tscn b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/hookable_cable.tscn new file mode 100644 index 0000000000..442a70edc5 --- /dev/null +++ b/scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/hookable_cable.tscn @@ -0,0 +1,45 @@ +[gd_scene format=3 uid="uid://dducqjoutx6p2"] + +[ext_resource type="Script" uid="uid://dx02yocf8sk1a" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/hookable_cable.gd" id="1_3bbus"] +[ext_resource type="Script" uid="uid://dabvr3pqmyya4" path="res://scenes/game_elements/props/hookable_area/components/hookable_area.gd" id="2_3bbus"] +[ext_resource type="PackedScene" uid="uid://b0dehcnfo68j1" path="res://scenes/game_elements/props/hook_control/hook_control.tscn" id="3_o6882"] +[ext_resource type="Texture2D" uid="uid://cvt085hooy518" path="res://scenes/quests/story_quests/after_the_tremor/2_colegiojuego/stealth_components/cable5.png" id="4_25nu8"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_vrucw"] +size = Vector2(50, 76) + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_lsxbb"] + +[node name="HookableCable" type="StaticBody2D" unique_id=1507173979] +script = ExtResource("1_3bbus") + +[node name="HookableArea" type="Area2D" parent="." unique_id=1167593557 node_paths=PackedStringArray("controlled_entity", "hook_control", "anchor_point")] +collision_layer = 4096 +collision_mask = 0 +script = ExtResource("2_3bbus") +controlled_entity = NodePath("..") +hook_control = NodePath("HookControl") +anchor_point = NodePath("Marker2D") +metadata/_custom_type_script = "uid://dabvr3pqmyya4" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="HookableArea" unique_id=1356949742] +position = Vector2(0, -28) +shape = SubResource("RectangleShape2D_vrucw") +debug_color = Color(0.689707, 0.288376, 1, 0.42) + +[node name="Marker2D" type="Marker2D" parent="HookableArea" unique_id=1674666531] +position = Vector2(0, -48) + +[node name="HookControl" parent="HookableArea" unique_id=1022482491 node_paths=PackedStringArray("hook_area") instance=ExtResource("3_o6882")] +position = Vector2(0, -48) +hook_area = NodePath("..") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=2132118589] +rotation = -1.5708 +shape = SubResource("CapsuleShape2D_lsxbb") +disabled = true + +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=839901088] +unique_name_in_owner = true +position = Vector2(0, -29) +texture = ExtResource("4_25nu8") diff --git a/scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_cinematicaprevia/colegiofinal.tscn b/scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_cinematicaprevia/colegiofinal.tscn index 974fcc8f52..54106c59cd 100644 --- a/scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_cinematicaprevia/colegiofinal.tscn +++ b/scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_cinematicaprevia/colegiofinal.tscn @@ -7,7 +7,7 @@ [ext_resource type="Texture2D" uid="uid://cmdljoeqpsnti" path="res://scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_cinematicaprevia/tile/Silla.png" id="4_ll2sc"] [ext_resource type="AudioStream" uid="uid://dhosvd6p07qb3" path="res://scenes/quests/story_quests/after_the_tremor/music/sounds/kick.wav" id="6_nqfbb"] [ext_resource type="Resource" uid="uid://bps45nlj5ayqa" path="res://scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_cinematicaprevia/colegiofinaldialogo.dialogue" id="6_q068a"] -[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/components/shaker.gd" id="7_ll2sc"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="7_ll2sc"] [ext_resource type="AudioStream" uid="uid://ci3w7uock1wf3" path="res://scenes/quests/story_quests/after_the_tremor/music/sounds/break.wav" id="7_xowxx"] [ext_resource type="Script" uid="uid://skmynvou4l31" path="res://scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part4/intro_components/scripts/cinematicWithShake.gd" id="8_nqfbb"] diff --git a/scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_tallerjuego/minijuego2.tscn b/scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_tallerjuego/minijuego2.tscn index e2c03151ba..4b1602e96c 100644 --- a/scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_tallerjuego/minijuego2.tscn +++ b/scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_tallerjuego/minijuego2.tscn @@ -1,6 +1,7 @@ [gd_scene format=4 uid="uid://g64l65moc1sx"] [ext_resource type="TileSet" uid="uid://4ewcvb1sibsf" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/2_cinematicacombate/tile/tilestaller.tres" id="1_8drhf"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm0tv"] [ext_resource type="Shader" uid="uid://dmm7vum4u3k5e" path="res://scenes/quests/story_quests/after_the_tremor/0_intro/0_intro_part6/night.gdshader" id="2_ps5ij"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="3_a1j0i"] [ext_resource type="Resource" uid="uid://x8dfau2t48gw" path="res://scenes/quests/story_quests/after_the_tremor/2_sequence_puzzle/2_tallerjuego/dialogojuego2.dialogue" id="4_ilpog"] @@ -52,6 +53,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="Minijuego2" type="Node2D" unique_id=1172299557] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=599635468] +script = ExtResource("1_pm0tv") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="TileMapLayers" type="Node2D" parent="." unique_id=208114943] [node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=798335763] @@ -100,7 +105,7 @@ sprite_frames = ExtResource("9_cbqvq") position = Vector2(-2.6667075, -73.333336) sprite_frames = ExtResource("9_cbqvq") -[node name="CollisionShape2D" parent="Player/PlayerInteraction/InteractZone" parent_id_path=PackedInt32Array(894731746, 888605377) index="0" unique_id=255765935] +[node name="CollisionShape2D" parent="Player/PlayerInteraction/CharacterSight" parent_id_path=PackedInt32Array(894731746, 888605377) index="0" unique_id=255765935] position = Vector2(53.333294, -73.333336) [node name="Camera2D" type="Camera2D" parent="Player" unique_id=1018623546] diff --git a/scenes/quests/story_quests/after_the_tremor/3_combat/2_cinematicacombate/cinematicacombate.tscn b/scenes/quests/story_quests/after_the_tremor/3_combat/2_cinematicacombate/cinematicacombate.tscn index e5c79a6a59..1708aef978 100644 --- a/scenes/quests/story_quests/after_the_tremor/3_combat/2_cinematicacombate/cinematicacombate.tscn +++ b/scenes/quests/story_quests/after_the_tremor/3_combat/2_cinematicacombate/cinematicacombate.tscn @@ -4,7 +4,7 @@ [ext_resource type="SpriteFrames" uid="uid://dbe6l18tss360" path="res://scenes/quests/story_quests/after_the_tremor/charlie_components/after_the_tremor_charlie.tres" id="2_7y0v5"] [ext_resource type="SpriteFrames" uid="uid://dkcv15as5d6gw" path="res://scenes/quests/story_quests/after_the_tremor/bryan_components/after_the_tremor_bryan.tres" id="3_valf8"] [ext_resource type="SpriteFrames" uid="uid://caou2u7vffhei" path="res://scenes/game_elements/characters/npcs/cat/components/cat.tres" id="4_bls6q"] -[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/components/shaker.gd" id="5_0p5t1"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="5_0p5t1"] [ext_resource type="Script" uid="uid://1mgrptmmbiat" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/2_cinematicacombate/cinematic.gd" id="5_886kd"] [ext_resource type="Resource" uid="uid://ck3hd5riwhlmv" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/2_cinematicacombate/combatedialogo.dialogue" id="6_bls6q"] [ext_resource type="SpriteFrames" uid="uid://wdv3k3hudj1h" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/componentes/charliegato.tres" id="7_886kd"] diff --git a/scenes/quests/story_quests/after_the_tremor/3_combat/after_the_tremor_combat.tscn b/scenes/quests/story_quests/after_the_tremor/3_combat/after_the_tremor_combat.tscn index 31b78253c0..02c4278176 100644 --- a/scenes/quests/story_quests/after_the_tremor/3_combat/after_the_tremor_combat.tscn +++ b/scenes/quests/story_quests/after_the_tremor/3_combat/after_the_tremor_combat.tscn @@ -3,9 +3,10 @@ [ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="1_ine85"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="1_n5amm"] [ext_resource type="Script" uid="uid://da5eiigxh4x7e" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/scripts/combat.gd" id="1_omu5o"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmsah"] [ext_resource type="TileSet" uid="uid://4ewcvb1sibsf" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/2_cinematicacombate/tile/tilestaller.tres" id="4_05iye"] -[ext_resource type="Script" uid="uid://db4o0p7nc3svv" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/scripts/charlie_fighting.gd" id="4_kiv56"] [ext_resource type="SpriteFrames" uid="uid://wdv3k3hudj1h" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/componentes/charliegato.tres" id="4_uft25"] +[ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="5_aisso"] [ext_resource type="SpriteFrames" uid="uid://x5dyax1ulw8f" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/componentes/boss.tres" id="7_f4d1w"] [ext_resource type="PackedScene" uid="uid://y8ha8abfyap2" path="res://scenes/game_elements/props/filling_barrel/filling_barrel.tscn" id="8_tmljt"] [ext_resource type="Resource" uid="uid://cblaldkf38re3" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/componentes/dialogocomienzo.dialogue" id="10_ilkny"] @@ -24,6 +25,14 @@ [ext_resource type="Script" uid="uid://d31cxd03praji" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/scripts/MusicFix.gd" id="22_ilkny"] [ext_resource type="AudioStream" uid="uid://bnnmm5oppg6nr" path="res://scenes/quests/story_quests/after_the_tremor/music/sounds/defeat.wav" id="23_ilkny"] +[sub_resource type="Resource" id="Resource_cvb4d"] +script = ExtResource("5_aisso") +metadata/_custom_type_script = "uid://csev4hv57utxv" + +[sub_resource type="Resource" id="Resource_aisso"] +script = ExtResource("5_aisso") +metadata/_custom_type_script = "uid://csev4hv57utxv" + [sub_resource type="Resource" id="Resource_ilkny"] script = ExtResource("16_epny2") metadata/_custom_type_script = "uid://bgmwplmj3bfls" @@ -46,6 +55,11 @@ subpixel_positioning = 0 y_sort_enabled = true script = ExtResource("1_omu5o") +[node name="PlayerMode" type="Node" parent="." unique_id=573392624] +unique_name_in_owner = true +script = ExtResource("1_pmsah") +mode = 1 + [node name="PlayersContainer" type="Node2D" parent="." unique_id=1961030992] modulate = Color(0.7919991, 0.79199916, 0.7919991, 1) @@ -53,60 +67,52 @@ modulate = Color(0.7919991, 0.79199916, 0.7919991, 1) z_index = 1 position = Vector2(472, 639) scale = Vector2(0.5, 0.5) -mode = 1 -walk_speed = 10.0 -run_speed = 10.0 sprite_frames = ExtResource("4_uft25") +[node name="InputWalkBehavior" parent="PlayersContainer/charlie" index="0" unique_id=1817340985] +speeds = SubResource("Resource_cvb4d") + [node name="PlayerSprite" parent="PlayersContainer/charlie" index="2" unique_id=1785485617] sprite_frames = ExtResource("4_uft25") -[node name="PlayerInteraction" parent="PlayersContainer/charlie" index="4" unique_id=1260226520] -process_mode = 4 -visible = false +[node name="PlayerInteraction" parent="PlayersContainer/charlie" index="5" unique_id=1260226520] position = Vector2(-126, 3554) [node name="InteractLabel" parent="PlayersContainer/charlie/PlayerInteraction/InteractMarker" parent_id_path=PackedInt32Array(1453346405, 439387414) index="0" unique_id=554498577] visible = false -[node name="PlayerFighting" parent="PlayersContainer/charlie" index="5" unique_id=1745412343] -process_mode = 0 -visible = true -script = ExtResource("4_kiv56") -input_action = "move_left" - -[node name="AudioStreamPlayer2D" parent="PlayersContainer/charlie/PlayerFighting/AirStream" parent_id_path=PackedInt32Array(1453346405, 642627191) index="2" unique_id=25920746] -bus = &"SFX" +[node name="PlayerRepel" parent="PlayersContainer/charlie" index="6" unique_id=1745412343] +input_action = &"move_left" [node name="bryan" parent="PlayersContainer" unique_id=1722313202 instance=ExtResource("1_n5amm")] z_index = 1 position = Vector2(920, 638) scale = Vector2(0.5, 0.5) -mode = 1 -walk_speed = 10.0 -run_speed = 10.0 +speeds = SubResource("Resource_aisso") sprite_frames = ExtResource("16_ilkny") +[node name="InputWalkBehavior" parent="PlayersContainer/bryan" index="0" unique_id=1817340985] +speeds = SubResource("Resource_aisso") + +[node name="PlayerDustParticles" parent="PlayersContainer/bryan" index="1" unique_id=785276606] +process_mode = 4 +visible = false + [node name="PlayerSprite" parent="PlayersContainer/bryan" index="2" unique_id=1785485617] sprite_frames = ExtResource("16_ilkny") flip_h = true -[node name="PlayerInteraction" parent="PlayersContainer/bryan" index="4" unique_id=1260226520] -process_mode = 4 -visible = false +[node name="PlayerInteraction" parent="PlayersContainer/bryan" index="5" unique_id=1260226520] position = Vector2(2674, 182) [node name="LabelContainer" parent="PlayersContainer/bryan/PlayerInteraction/InteractMarker/InteractLabel" parent_id_path=PackedInt32Array(1722313202, 554498577) index="0" unique_id=640967064] -offset_right = 32.0 +offset_left = -68.0 +offset_top = -46.0 +offset_right = 0.0 +offset_bottom = 0.0 -[node name="PlayerFighting" parent="PlayersContainer/bryan" index="5" unique_id=1745412343] -process_mode = 0 -visible = true -script = ExtResource("4_kiv56") -input_action = "move_right" - -[node name="AudioStreamPlayer2D" parent="PlayersContainer/bryan/PlayerFighting/AirStream" parent_id_path=PackedInt32Array(1722313202, 642627191) index="2" unique_id=25920746] -bus = &"SFX" +[node name="PlayerRepel" parent="PlayersContainer/bryan" index="6" unique_id=1745412343] +input_action = &"move_right" [node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=609593329] @@ -203,7 +209,7 @@ position = Vector2(716, 392) script = ExtResource("18_fq20r") needed_amount = 50 -[node name="HitBox" parent="BossHealth" index="1" unique_id=1847617565] +[node name="HitBox" parent="BossHealth" index="2" unique_id=1847617565] position = Vector2(-2, 54) [node name="CollisionShape2D" parent="BossHealth/HitBox" index="0" unique_id=426954511] diff --git a/scenes/quests/story_quests/after_the_tremor/3_combat/scripts/charlie_fighting.gd b/scenes/quests/story_quests/after_the_tremor/3_combat/scripts/charlie_fighting.gd deleted file mode 100644 index 9a71c39e97..0000000000 --- a/scenes/quests/story_quests/after_the_tremor/3_combat/scripts/charlie_fighting.gd +++ /dev/null @@ -1,18 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends "res://scenes/game_elements/characters/player/components/player_fighting.gd" - -@export var input_action: String = "repel" - -func _ready() -> void: - hit_box.body_entered.connect(_on_body_entered) - air_stream.body_entered.connect(_on_air_stream_body_entered) - -func _unhandled_input(_event: InputEvent) -> void: - - if Input.is_action_just_pressed(input_action): - is_fighting = true - elif Input.is_action_just_released(input_action): - is_fighting = false - - diff --git a/scenes/quests/story_quests/after_the_tremor/3_combat/scripts/charlie_fighting.gd.uid b/scenes/quests/story_quests/after_the_tremor/3_combat/scripts/charlie_fighting.gd.uid deleted file mode 100644 index f2bc18d341..0000000000 --- a/scenes/quests/story_quests/after_the_tremor/3_combat/scripts/charlie_fighting.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://db4o0p7nc3svv diff --git a/scenes/quests/story_quests/after_the_tremor/3_combat/scripts/combat.gd b/scenes/quests/story_quests/after_the_tremor/3_combat/scripts/combat.gd index f393c1ee7c..7e59c63371 100644 --- a/scenes/quests/story_quests/after_the_tremor/3_combat/scripts/combat.gd +++ b/scenes/quests/story_quests/after_the_tremor/3_combat/scripts/combat.gd @@ -17,6 +17,8 @@ extends Node2D @onready var boss_info = $UI/BossInfo @onready var health_bar = $UI/BossInfo/BossBar +@onready var player_mode: PlayerMode = %PlayerMode + func _ready(): if collectible: collectible.revealed = false @@ -33,18 +35,13 @@ func _ready(): health_bar.value = boss_health.needed_amount if boss: boss.start() - if charlie: _setup_combat_player(charlie, "move_left") - if bryan: _setup_combat_player(bryan, "move_right") + if charlie: _setup_combat_player(charlie) + if bryan: _setup_combat_player(bryan) if music and not music.playing: music.play() -func _setup_combat_player(p_node, action_name): - p_node.walk_speed = 0.0 - p_node.run_speed = 0.0 - var fighting_comp = p_node.get_node_or_null("PlayerFighting") - if fighting_comp: fighting_comp.input_action = action_name - p_node.mode = p_node.Mode.FIGHTING - var interaction = p_node.get_node_or_null("PlayerInteraction") - if interaction: interaction.position = Vector2(99999, 99999) +func _setup_combat_player(p_node): + p_node.speeds.walk_speed = 0.0 + p_node.speeds.run_speed = 0.0 func _update_health_bar(current_damage_taken): @@ -60,22 +57,15 @@ func _on_boss_defeated(): if tile_grass: tile_grass.modulate = Color.WHITE if tile_stones: tile_stones.modulate = Color.WHITE + player_mode.mode = PlayerMode.Mode.COZY + if boss_info: boss_info.visible = false if charlie: - var fighting = charlie.get_node_or_null("PlayerFighting") - if fighting: - fighting.set_process_unhandled_input(false) - fighting.is_fighting = false var sprite = charlie.get_node_or_null("PlayerSprite") if not sprite: sprite = charlie.find_child("AnimatedSprite2D", true, false) if sprite: sprite.play("idle"); sprite.stop() if bryan: - bryan.walk_speed = 300.0 - bryan.run_speed = 500.0 - bryan.mode = bryan.Mode.COZY - var fighting = bryan.get_node_or_null("PlayerFighting") - if fighting: fighting.set_process_unhandled_input(false); fighting.is_fighting = false - var interaction = bryan.get_node_or_null("PlayerInteraction") - if interaction: interaction.position = Vector2.ZERO + bryan.speeds.walk_speed = 300.0 + bryan.speeds.run_speed = 500.0 diff --git a/scenes/quests/story_quests/after_the_tremor/4_outro/outro_1.tscn b/scenes/quests/story_quests/after_the_tremor/4_outro/outro_1.tscn index 6b5d1224f4..f08ed1aa45 100644 --- a/scenes/quests/story_quests/after_the_tremor/4_outro/outro_1.tscn +++ b/scenes/quests/story_quests/after_the_tremor/4_outro/outro_1.tscn @@ -5,7 +5,7 @@ [ext_resource type="SpriteFrames" uid="uid://wdv3k3hudj1h" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/componentes/charliegato.tres" id="4_wc4s3"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="5_wc4s3"] [ext_resource type="Resource" uid="uid://mwd8h2q2p0ob" path="res://scenes/quests/story_quests/after_the_tremor/4_outro/outro_components/outro_1.dialogue" id="6_3bxfr"] -[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/components/shaker.gd" id="7_askxw"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="7_askxw"] [ext_resource type="Shader" uid="uid://uutv10gct3oe" path="res://scenes/quests/story_quests/after_the_tremor/4_outro/dusk.gdshader" id="8_wc4s3"] [sub_resource type="Animation" id="Animation_wc4s3"] diff --git a/scenes/quests/story_quests/after_the_tremor/4_outro/outrofinal/outro_3.tscn b/scenes/quests/story_quests/after_the_tremor/4_outro/outrofinal/outro_3.tscn index a3dff4da89..eb2b08fd71 100644 --- a/scenes/quests/story_quests/after_the_tremor/4_outro/outrofinal/outro_3.tscn +++ b/scenes/quests/story_quests/after_the_tremor/4_outro/outrofinal/outro_3.tscn @@ -5,7 +5,7 @@ [ext_resource type="SpriteFrames" uid="uid://wdv3k3hudj1h" path="res://scenes/quests/story_quests/after_the_tremor/3_combat/componentes/charliegato.tres" id="4_sl46f"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="5_ui13s"] [ext_resource type="Resource" uid="uid://d34mr63yhmqf0" path="res://scenes/quests/story_quests/after_the_tremor/4_outro/outrofinal/dialogofinal.dialogue" id="6_2f23v"] -[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/components/shaker.gd" id="7_dj5ql"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="7_dj5ql"] [ext_resource type="Shader" uid="uid://uutv10gct3oe" path="res://scenes/quests/story_quests/after_the_tremor/4_outro/dusk.gdshader" id="8_tslcs"] [sub_resource type="Animation" id="Animation_wc4s3"] diff --git a/scenes/quests/story_quests/after_the_tremor/4_outro/outrotransicion/outro_2.tscn b/scenes/quests/story_quests/after_the_tremor/4_outro/outrotransicion/outro_2.tscn index 0ee4651c03..84a532b19f 100644 --- a/scenes/quests/story_quests/after_the_tremor/4_outro/outrotransicion/outro_2.tscn +++ b/scenes/quests/story_quests/after_the_tremor/4_outro/outrotransicion/outro_2.tscn @@ -4,7 +4,7 @@ [ext_resource type="Resource" uid="uid://c0mybf5tyip0" path="res://scenes/quests/story_quests/after_the_tremor/4_outro/outrotransicion/dialogovacio.dialogue" id="3_atfsv"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="5_o55hu"] [ext_resource type="Texture2D" uid="uid://c1h4p8y25ta6u" path="res://scenes/quests/story_quests/after_the_tremor/4_outro/mamaatada.png" id="6_atfsv"] -[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/components/shaker.gd" id="7_2wdiv"] +[ext_resource type="Script" uid="uid://dunsvrhq42214" path="res://scenes/game_elements/fx/shaker/shaker.gd" id="7_2wdiv"] [ext_resource type="SpriteFrames" uid="uid://nfm4t7txex23" path="res://scenes/quests/story_quests/after_the_tremor/player_components/personajes/ente.tres" id="7_okvgb"] [ext_resource type="Shader" uid="uid://uutv10gct3oe" path="res://scenes/quests/story_quests/after_the_tremor/4_outro/dusk.gdshader" id="8_c1f80"] diff --git a/scenes/quests/story_quests/champ/1_combat/champ_combat.tscn b/scenes/quests/story_quests/champ/1_combat/champ_combat.tscn index a2ec3f0cae..5449338050 100644 --- a/scenes/quests/story_quests/champ/1_combat/champ_combat.tscn +++ b/scenes/quests/story_quests/champ/1_combat/champ_combat.tscn @@ -3,6 +3,7 @@ [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="1_1fuoe"] [ext_resource type="AudioStream" uid="uid://df7ldbesilfry" path="res://assets/first_party/music/Threadbare Loop_Main_Bridge_02.ogg" id="1_a16ge"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_p0sed"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmqk5"] [ext_resource type="Resource" uid="uid://cvuitsm15yyaw" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat.dialogue" id="2_sm7tj"] [ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="3_sv8bg"] [ext_resource type="TileSet" uid="uid://djck8217try86" path="res://scenes/quests/story_quests/champ/tiles/champ_elevation.tres" id="5_sv8bg"] @@ -10,15 +11,19 @@ [ext_resource type="TileSet" uid="uid://bo4jyvl3lcww1" path="res://scenes/quests/story_quests/champ/champ_tileset.tres" id="6_sm7tj"] [ext_resource type="SpriteFrames" uid="uid://ctjbkxw0r2f2i" path="res://scenes/quests/story_quests/champ/player_components/champ_player.tres" id="7_utai8"] [ext_resource type="PackedScene" uid="uid://c481vrtlq627b" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_throwing_enemy.tscn" id="8_yidpm"] +[ext_resource type="PackedScene" uid="uid://dcm505t3resui" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_1.tscn" id="11_j60m7"] [ext_resource type="PackedScene" uid="uid://y8ha8abfyap2" path="res://scenes/game_elements/props/filling_barrel/filling_barrel.tscn" id="11_p0sed"] +[ext_resource type="PackedScene" uid="uid://c5k6fap2ic04l" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_2.tscn" id="12_8ja4x"] [ext_resource type="SpriteFrames" uid="uid://0kjkk0ekjgcd" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_target_spriteframes.tres" id="12_x632n"] [ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="13_45tp4"] +[ext_resource type="PackedScene" uid="uid://driu5llb873ns" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_3.tscn" id="13_418m7"] +[ext_resource type="Texture2D" uid="uid://dyyu8w3qtm6q5" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat_bait_sign.png" id="14_1o4lf"] [ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="14_bn425"] +[ext_resource type="Texture2D" uid="uid://ckjior4vavgpy" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.png" id="15_nn4ti"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="15_qewm5"] [ext_resource type="PackedScene" uid="uid://cd24crxnn6c3n" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/buoy.tscn" id="15_sm7tj"] -[ext_resource type="Texture2D" uid="uid://deck2r88iqbd7" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/placeholder_bait_sign_1.png" id="17_r6jc5"] -[ext_resource type="Texture2D" uid="uid://b4f7rwxe4w45h" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/placeholder_bait_sign_2.png" id="18_utai8"] -[ext_resource type="Texture2D" uid="uid://e8g4e5k3mjyq" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/placeholder_bait_sign_3.png" id="19_yidpm"] +[ext_resource type="Texture2D" uid="uid://d18ih8m6cmx8d" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png" id="16_wkm6s"] +[ext_resource type="Texture2D" uid="uid://ct7ux8rnh0gyo" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png" id="17_j60m7"] [ext_resource type="Texture2D" uid="uid://b8bo7js8fgtvq" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/circular_ripples.png" id="21_yidpm"] [ext_resource type="Texture2D" uid="uid://bopnrtenvp4sm" path="res://scenes/quests/story_quests/champ/tiles/assets/water_ripples.png" id="22_hv7kx"] @@ -202,6 +207,11 @@ animations = [{ [node name="Combat" type="Node2D" unique_id=603310857] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1007557512] +script = ExtResource("1_pmqk5") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="BackgroundMusic" parent="." unique_id=1461759951 instance=ExtResource("1_p0sed")] stream = ExtResource("1_a16ge") @@ -243,7 +253,6 @@ editor_draw_limits = true [node name="Player" parent="OnTheGround" unique_id=1168823940 instance=ExtResource("6_r6jc5")] position = Vector2(1004, 797) -mode = 1 sprite_frames = ExtResource("7_utai8") [node name="ThrowingEnemies" type="Node2D" parent="OnTheGround" unique_id=1014610845] @@ -251,13 +260,23 @@ sprite_frames = ExtResource("7_utai8") [node name="ThrowingNPC2" parent="OnTheGround/ThrowingEnemies" unique_id=481399762 instance=ExtResource("8_yidpm")] position = Vector2(1537, 673) odd_shoot = true +projectile_scene_for_label = Dictionary[String, PackedScene]({ +"a": ExtResource("11_j60m7"), +"b": ExtResource("12_8ja4x"), +"c": ExtResource("13_418m7") +}) [node name="ThrowingNPC4" parent="OnTheGround/ThrowingEnemies" unique_id=774333023 instance=ExtResource("8_yidpm")] position = Vector2(414, 695) +projectile_scene_for_label = Dictionary[String, PackedScene]({ +"a": ExtResource("11_j60m7"), +"b": ExtResource("12_8ja4x"), +"c": ExtResource("13_418m7") +}) [node name="Targets" type="Node2D" parent="OnTheGround" unique_id=60590667] -[node name="Target" parent="OnTheGround/Targets" unique_id=510399694 instance=ExtResource("11_p0sed")] +[node name="Target1" parent="OnTheGround/Targets" unique_id=510399694 instance=ExtResource("11_p0sed")] z_index = 1 position = Vector2(233, 518) scale = Vector2(2, 2) @@ -299,15 +318,27 @@ scale = Vector2(1.5, 1.5) [node name="PlaceholderBaitSign1" type="Sprite2D" parent="OnTheGround/Signs" unique_id=1362706441] position = Vector2(175, 711) -texture = ExtResource("17_r6jc5") +texture = ExtResource("14_1o4lf") -[node name="PlaceholderBaitSign2" type="Sprite2D" parent="OnTheGround/Signs" unique_id=1334877674] -position = Vector2(1541, 695) -texture = ExtResource("18_utai8") +[node name="BaitSprite1" type="Sprite2D" parent="OnTheGround/Signs/PlaceholderBaitSign1" unique_id=2081143706] +texture = ExtResource("15_nn4ti") +offset = Vector2(-1, -10) -[node name="PlaceholderBaitSign3" type="Sprite2D" parent="OnTheGround/Signs" unique_id=715278387] +[node name="PlaceholderBaitSign2" type="Sprite2D" parent="OnTheGround/Signs" unique_id=715278387] position = Vector2(773, 688) -texture = ExtResource("19_yidpm") +texture = ExtResource("14_1o4lf") + +[node name="BaitSprite2" type="Sprite2D" parent="OnTheGround/Signs/PlaceholderBaitSign2" unique_id=1687502515] +texture = ExtResource("16_wkm6s") +offset = Vector2(-1, -10) + +[node name="PlaceholderBaitSign3" type="Sprite2D" parent="OnTheGround/Signs" unique_id=1334877674] +position = Vector2(1541, 695) +texture = ExtResource("14_1o4lf") + +[node name="BaitSprite3" type="Sprite2D" parent="OnTheGround/Signs/PlaceholderBaitSign3" unique_id=1249786011] +texture = ExtResource("17_j60m7") +offset = Vector2(-1, -10) [node name="CollectibleItem" parent="OnTheGround" unique_id=1968420657 instance=ExtResource("13_45tp4")] unique_name_in_owner = true diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.png b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.png index 19bbce4e93..e6b2d9392c 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.png +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:697f4d0abc6ae3709ff0e98e34ace36a0830db278a09c336e2e271cd07a989ef -size 430 +oid sha256:3af4b87d6bc675f53694d1b41122d36a925074e26dc5e00f974e1737c300cf93 +size 424 diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.tres b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.tres index 7af9227769..edd9bb79a6 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.tres +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.tres @@ -1,16 +1,16 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://5puy1xk3bfva"] -[ext_resource type="Texture2D" uid="uid://ckjior4vavgpy" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.png" id="1_1w4xd"] +[ext_resource type="Texture2D" uid="uid://ckjior4vavgpy" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_1.png" id="1_alduf"] -[sub_resource type="AtlasTexture" id="AtlasTexture_a16ge"] -atlas = ExtResource("1_1w4xd") +[sub_resource type="AtlasTexture" id="AtlasTexture_3pi73"] +atlas = ExtResource("1_alduf") region = Rect2(0, 0, 64, 64) [resource] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_a16ge") +"texture": SubResource("AtlasTexture_3pi73") }], "loop": true, "name": &"default", diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png index 300c8991df..194bd33705 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1eaedcc20cd8c787ccc9bf43d962c63c5db41130e0eb6c725624dcc7ccc45c75 -size 435 +oid sha256:7f760a966c00e6d51e3d6e81f3b5ac57c8a8858db32256be7e15bd69372156ab +size 427 diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png.import b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png.import index 60086c961a..328d0864d6 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png.import +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://xioplli70d2n" +uid="uid://d18ih8m6cmx8d" path="res://.godot/imported/champ_bait_projectile_2.png-2b98f49fde6da92537b7539cef2af7ce.ctex" metadata={ "vram_texture": false diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.tres b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.tres index da81029810..03000c789a 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.tres +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.tres @@ -1,16 +1,16 @@ -[gd_resource type="SpriteFrames" format=3 uid="uid://dv3cyx0ecly3y"] +[gd_resource type="SpriteFrames" format=3 uid="uid://q0v1wdnrygas"] -[ext_resource type="Texture2D" uid="uid://xioplli70d2n" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png" id="1_3fh6q"] +[ext_resource type="Texture2D" uid="uid://d18ih8m6cmx8d" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.png" id="1_ogufj"] -[sub_resource type="AtlasTexture" id="AtlasTexture_qwcmc"] -atlas = ExtResource("1_3fh6q") +[sub_resource type="AtlasTexture" id="AtlasTexture_eraii"] +atlas = ExtResource("1_ogufj") region = Rect2(0, 0, 64, 64) [resource] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_qwcmc") +"texture": SubResource("AtlasTexture_eraii") }], "loop": true, "name": &"default", diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png index d83cb8f6ff..6ffc9ce85f 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb89824682f55f9776313c88237f0886f1ac390cba85d4d898716bddcaa9f3f9 -size 425 +oid sha256:1efcaffb65ba231a23cd0da7a50e4cee7bbcaa4e027059e3c8df9042d2c4540e +size 426 diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png.import b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png.import index 5ec647ba52..a40dbfd0a6 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png.import +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cayqkmu2ruwq8" +uid="uid://ct7ux8rnh0gyo" path="res://.godot/imported/champ_bait_projectile_3.png-3ed85c91311c06678fd1cfe5a03b4e6b.ctex" metadata={ "vram_texture": false diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.tres b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.tres index 8c0dd652a0..af049234a8 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.tres +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.tres @@ -1,16 +1,16 @@ -[gd_resource type="SpriteFrames" format=3 uid="uid://c4pkc6rmrg566"] +[gd_resource type="SpriteFrames" format=3 uid="uid://iyjta1h3tu4a"] -[ext_resource type="Texture2D" uid="uid://cayqkmu2ruwq8" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png" id="1_wb7p7"] +[ext_resource type="Texture2D" uid="uid://ct7ux8rnh0gyo" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.png" id="1_swyxf"] -[sub_resource type="AtlasTexture" id="AtlasTexture_yidpm"] -atlas = ExtResource("1_wb7p7") +[sub_resource type="AtlasTexture" id="AtlasTexture_cupop"] +atlas = ExtResource("1_swyxf") region = Rect2(0, 0, 64, 64) [resource] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_yidpm") +"texture": SubResource("AtlasTexture_cupop") }], "loop": true, "name": &"default", diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat.dialogue b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat.dialogue index c63b0c57fc..c39084dbfe 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat.dialogue +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat.dialogue @@ -5,8 +5,8 @@ Evan finds himself near Lake Champlain with three mysterious circles of air bubbles just off the shore. Curious what could be making these bubbles, he decides to throw bait at each of them to try and lure it out. He notices there are signs labeling the three bubble circles with the bait that might work best! -He believe he will only need to fill at least two of those to entice whatever lurk beneath it. -Of course, he could always experiment with something else that might be more enticing. (If so, be sure to change the Sprite Frames for each of the throwing enemies) +He believes he will only need to fill two of those to entice whatever lurk beneath it. +But...Oh no! The baits are missing some of their color!! Color in the `champ_bait_projectile` pngs so that Evan can better tell them apart! (Or draw an entirely new bait that Champ might want instead!) => END ~ well_done diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat_bait_sign.png b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat_bait_sign.png new file mode 100644 index 0000000000..0b4682e785 --- /dev/null +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat_bait_sign.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:611dd02a9531de8d92bff660ed802147f6f2cb372e54b20b5ea9c01089910acd +size 625 diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat_bait_sign.png.import b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat_bait_sign.png.import new file mode 100644 index 0000000000..351d4c8210 --- /dev/null +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat_bait_sign.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dyyu8w3qtm6q5" +path="res://.godot/imported/champ_combat_bait_sign.png-5d10a1204c3cfab2fab2756d1c1f50a5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_combat_bait_sign.png" +dest_files=["res://.godot/imported/champ_combat_bait_sign.png-5d10a1204c3cfab2fab2756d1c1f50a5.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/champ/1_combat/combat_components/champ_projectile_1.tscn b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_1.tscn index f7d8ea892b..b7f1dfc6b5 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_1.tscn +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_1.tscn @@ -21,6 +21,7 @@ continuous_cd = 2 contact_monitor = true max_contacts_reported = 1 script = ExtResource("1_7n1yb") +label = "a" [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1499726276] shape = SubResource("RectangleShape2D_o6xl0") diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_2.tscn b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_2.tscn index 8a509cbad7..baa26ee1ab 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_2.tscn +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_2.tscn @@ -1,7 +1,7 @@ [gd_scene format=3 uid="uid://c5k6fap2ic04l"] [ext_resource type="Script" uid="uid://bofv3bcwj3rx2" path="res://scenes/game_elements/props/projectile/components/projectile.gd" id="1_vo5mr"] -[ext_resource type="SpriteFrames" uid="uid://dv3cyx0ecly3y" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.tres" id="2_vo5mr"] +[ext_resource type="SpriteFrames" uid="uid://q0v1wdnrygas" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_2.tres" id="2_vo5mr"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_tbgi4"] friction = 0.0 @@ -21,6 +21,7 @@ continuous_cd = 2 contact_monitor = true max_contacts_reported = 1 script = ExtResource("1_vo5mr") +label = "b" [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1499726276] shape = SubResource("RectangleShape2D_o6xl0") diff --git a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_3.tscn b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_3.tscn index 02e40ea432..db9a9a5e24 100644 --- a/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_3.tscn +++ b/scenes/quests/story_quests/champ/1_combat/combat_components/champ_projectile_3.tscn @@ -1,7 +1,7 @@ [gd_scene format=3 uid="uid://driu5llb873ns"] [ext_resource type="Script" uid="uid://bofv3bcwj3rx2" path="res://scenes/game_elements/props/projectile/components/projectile.gd" id="1_vo5mr"] -[ext_resource type="SpriteFrames" uid="uid://c4pkc6rmrg566" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.tres" id="2_k63yj"] +[ext_resource type="SpriteFrames" uid="uid://iyjta1h3tu4a" path="res://scenes/quests/story_quests/champ/1_combat/combat_components/champ_bait_projectile_3.tres" id="2_k63yj"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_tbgi4"] friction = 0.0 @@ -21,6 +21,7 @@ continuous_cd = 2 contact_monitor = true max_contacts_reported = 1 script = ExtResource("1_vo5mr") +label = "c" [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1499726276] shape = SubResource("RectangleShape2D_o6xl0") diff --git a/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_long_rock.gd b/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_long_rock.gd index c73122c279..468b4ffac5 100644 --- a/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_long_rock.gd +++ b/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_long_rock.gd @@ -30,7 +30,6 @@ func _ready() -> void: ## Function to tell champ sequence puzzle script the player guessed wrong and must be moved back func _on_area_2d_body_entered(_body: Node2D) -> void: audio_player.play() - await get_tree().create_timer(1.5).timeout water_entered.emit() diff --git a/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle.gd b/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle.gd index 729d29b500..92869df593 100644 --- a/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle.gd +++ b/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle.gd @@ -130,7 +130,7 @@ func _on_champ_long_rock_water_entered() -> void: if sequences[0].sequence.has(objs[i]) or sequences[1].sequence.has(objs[i]): objs[i].interact_area.disabled = false solve_progress = 0 # redundant? - player.mode = Player.Mode.COZY + player.mode = Player.Mode.USER_CONTROLLED ## Overrides the parent function so we can continue to do logic after sequence ends func _on_demonstrate_sequence(step: SequencePuzzleStep) -> void: @@ -142,6 +142,7 @@ func _on_hint_sign_hint_sequence_finished() -> void: await get_tree().create_timer(RESPAWN_DELAY).timeout camera.global_position = player.global_position player._toggle_player_behavior(player.player_interaction, true) + reset_all() ## Function to rest all sequence objets after displaying via hint sequence func reset_all() -> void: diff --git a/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle.tscn b/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle.tscn index bd591ea8a0..355d5c5339 100644 --- a/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle.tscn +++ b/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle.tscn @@ -1,6 +1,7 @@ [gd_scene format=4 uid="uid://gr7ykelwh6u1"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_27hsp"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmmf8"] [ext_resource type="TileSet" uid="uid://bo4jyvl3lcww1" path="res://scenes/quests/story_quests/champ/champ_tileset.tres" id="2_6wj4q"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="2_ey61o"] [ext_resource type="SpriteFrames" uid="uid://ctjbkxw0r2f2i" path="res://scenes/quests/story_quests/champ/player_components/champ_player.tres" id="3_6wj4q"] @@ -29,6 +30,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="SequencePuzzleTemplate" type="Node2D" unique_id=489705438] +[node name="PlayerMode" type="Node" parent="." unique_id=307696843] +script = ExtResource("1_pmmf8") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="BackgroundMusic" parent="." unique_id=1461759951 instance=ExtResource("1_27hsp")] stream = ExtResource("13_5ciwr") diff --git a/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle_object.tscn b/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle_object.tscn index b5de2be7fd..730677ecff 100644 --- a/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle_object.tscn +++ b/scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle_object.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://br3of3tj8lb8p" path="res://scenes/quests/story_quests/champ/2_sequence_puzzle/champ_sequence_puzzle_object.gd" id="1_flhem"] [ext_resource type="SpriteFrames" uid="uid://c2m3tplriqe2s" path="res://scenes/quests/story_quests/champ/2_sequence_puzzle/champ_object.tres" id="2_as5uj"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="4_g5jna"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="4_g5jna"] [ext_resource type="AudioStream" uid="uid://b1qhmlf8hcbnv" path="res://scenes/quests/story_quests/champ/2_sequence_puzzle/champ_rock_sound.ogg" id="5_as5uj"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_flhem"] @@ -28,12 +28,12 @@ position = Vector2(3, 7) rotation = 1.5708 shape = SubResource("RectangleShape2D_flhem") -[node name="InteractArea" type="Area2D" parent="." unique_id=560626341] +[node name="InteractArea" type="Area2D" parent="." unique_id=560626341 node_paths=PackedStringArray("marker")] unique_name_in_owner = true collision_layer = 32 collision_mask = 0 script = ExtResource("4_g5jna") -interact_label_position = Vector2(0, 30) +marker = NodePath("Marker") action = "Tap" [node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=1674431163] @@ -41,6 +41,9 @@ position = Vector2(3, -11) shape = SubResource("RectangleShape2D_kw7av") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=626671535] +position = Vector2(0, -30) + [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="." unique_id=661787463] unique_name_in_owner = true stream = ExtResource("5_as5uj") diff --git a/scenes/quests/story_quests/champ/3_stealth/champ_incomplete_character.gd b/scenes/quests/story_quests/champ/3_stealth/champ_incomplete_character.gd index b577bde393..ddeb95193b 100644 --- a/scenes/quests/story_quests/champ/3_stealth/champ_incomplete_character.gd +++ b/scenes/quests/story_quests/champ/3_stealth/champ_incomplete_character.gd @@ -4,6 +4,25 @@ extends CharacterBody2D const SPEED = 300.0 var input_vector: Vector2 +## How fast does the player transition from walking/running to stopped. +## A low value will make the character look as slipping on ice. +## A high value will stop the character immediately. +@export_range(10, 100000, 10) var stopping_step: float = 1500.0 + +## How fast does the player transition from stopped to walking/running. +@export_range(10, 100000, 10) var moving_step: float = 4000.0 + +@export var tile_layer: TileMapLayer +@export_group("Blink") +## The hitbox that is used to determine a valid blink location. +@export var blink_check: Area2D +## The sprite that moves with the dummy hitbox to show valid blink locations. +@export var blink_check_sprite: Sprite2D + +## The area of the level that the player can blink to (should be equivalent to the bounds of the level). +@export var blink_bounds: Area2D +## How many 64px tiles the player should teleport when the blink key (c) is pressed. +@export_range(0,24,0.5,"suffix:tiles") var blink_distance = 3.0 ## Controls how the player can interact with the world around them. @@ -16,16 +35,9 @@ enum Mode { } var mode: Mode = Mode.COZY -## How fast does the player transition from walking/running to stopped. -## A low value will make the character look as slipping on ice. -## A high value will stop the character immediately. -@export_range(10, 100000, 10) var stopping_step: float = 1500.0 -## How fast does the player transition from stopped to walking/running. -@export_range(10, 100000, 10) var moving_step: float = 4000.0 -## How many 64px tiles the player should teleport when the blink key (c) is pressed. -@export_range(0,24,0.5,"suffix:tiles") var blink_distance = 3.0 + ## Function that is called every "tick" that is constantly listening @@ -55,23 +67,22 @@ func _apply_blink() -> void: var blink_direction := input_vector.normalized() var target_coordinates: Vector2 = global_position # Missing parts of calculation! # Move dummy to coordinates and force physics update - var dummy := $BlinkCheck - dummy.global_position = target_coordinates - dummy.force_update_transform() + blink_check.global_position = target_coordinates + blink_check.force_update_transform() # Show visual - $BlinkCheck/Sprite2D.show() + blink_check_sprite.show() # Delay is for visuals and to allow time for physics to update await get_tree().create_timer(0.1).timeout # Ensure dummy is within bounds - if $"../Bounds/Blink Bounds".overlaps_area(dummy): + if blink_bounds.overlaps_area(blink_check): # If there are no collisions, move the player to the new position. - if not dummy.has_overlapping_bodies(): + if not blink_check.has_overlapping_bodies(): #TODO: Teleport the player instantly to the desired location return # Reset dummy - $BlinkCheck.global_position = global_position - $BlinkCheck/Sprite2D.hide() + blink_check.global_position = global_position + blink_check_sprite.hide() # TODO: (Optional) Add a cooldown so you can’t blink every frame. # Start a timer or use a variable that counts down. @@ -83,7 +94,7 @@ func _apply_blink() -> void: ## Function to remove collisions, allowing the player to walk on water tiles func _walk_on_water() -> void: #remove the collision of the Water_border, allowing player to "walk" on "water" - $"../TileMapLayers/Water_border".enabled = false + tile_layer.enabled = false # TODO do you think having the border permanently in that state is a good idea? # TODO you can try to come up with a way to ensure it get enabled again after a while # TODO (Optional) add a visual indicator that the function was activated diff --git a/scenes/quests/story_quests/champ/3_stealth/champ_stealth.tscn b/scenes/quests/story_quests/champ/3_stealth/champ_stealth.tscn index e36529ed18..a56f389a9c 100644 --- a/scenes/quests/story_quests/champ/3_stealth/champ_stealth.tscn +++ b/scenes/quests/story_quests/champ/3_stealth/champ_stealth.tscn @@ -32,10 +32,9 @@ [ext_resource type="Texture2D" uid="uid://c1vlj61hnl1dx" path="res://scenes/quests/story_quests/champ/tiles/assets/shore_and_lake_tiles.png" id="15_wbd51"] [ext_resource type="Texture2D" uid="uid://cexg7otw5enpu" path="res://assets/third_party/tiny-swords/Terrain/Water/Foam/Foam.png" id="16_40h7x"] [ext_resource type="Script" uid="uid://dwd8vjl5h6nxy" path="res://scenes/quests/story_quests/champ/3_stealth/champ_incomplete_character.gd" id="16_fw64s"] -[ext_resource type="Script" uid="uid://necvar42rnih" path="res://scenes/game_elements/characters/player/components/interact_zone.gd" id="16_g11k1"] +[ext_resource type="Script" uid="uid://necvar42rnih" path="res://scenes/game_elements/props/character_sight/character_sight.gd" id="16_g11k1"] [ext_resource type="PackedScene" uid="uid://ipvcfv2g0oi1" path="res://scenes/game_elements/characters/npcs/talker/talker.tscn" id="16_ol5cv"] [ext_resource type="Resource" uid="uid://c3yuq52k21sga" path="res://scenes/quests/story_quests/champ/3_stealth/stealth_components/champ_incomplete_stealth_guard_path_hint.dialogue" id="17_8qkne"] -[ext_resource type="PackedScene" uid="uid://4u7dloafx55f" path="res://scenes/game_elements/props/teleporter/teleporter/teleporter.tscn" id="17_24qmm"] [ext_resource type="Texture2D" uid="uid://cnmmh3uq7rkla" path="res://assets/third_party/tiny-swords/Terrain/Bridge/Bridge_All.png" id="17_g2bud"] [ext_resource type="SpriteFrames" uid="uid://h85time5ateg" path="res://scenes/quests/story_quests/champ/2_sequence_puzzle/learner_edits/champ_default_npc.tres" id="17_ol5cv"] [ext_resource type="PackedScene" uid="uid://yfpfno276rol" path="res://scenes/game_elements/props/fixed_size_label/fixed_size_label.tscn" id="17_saf7v"] @@ -44,7 +43,7 @@ [ext_resource type="Texture2D" uid="uid://dcq6v7mx3h1fl" path="res://assets/first_party/tiles/Dirt_Tiles.png" id="20_f2fbo"] [ext_resource type="Texture2D" uid="uid://cledckq31klvq" path="res://assets/first_party/tiles/Cliff_Mines_Tiles.png" id="21_30j1l"] [ext_resource type="Texture2D" uid="uid://r7scukca5yro" path="res://assets/first_party/tiles/Void_Tiles_Empty.png" id="22_o0p2s"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="23_g11k1"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="23_g11k1"] [ext_resource type="Texture2D" uid="uid://cn2j018vohdap" path="res://assets/first_party/tiles/Void_Tiles_Stars_Level1.png" id="23_i7mvb"] [ext_resource type="PackedScene" uid="uid://bq31w6gn30a8q" path="res://scenes/quests/story_quests/champ/3_stealth/stealth_components/water ripples/ripples.tscn" id="24_immbe"] [ext_resource type="Texture2D" uid="uid://s57e12850k6e" path="res://assets/third_party/tiny-swords-non-cc0/Terrain/Decorations/Rocks/Rock4.png" id="24_oswsn"] @@ -55,10 +54,11 @@ [ext_resource type="Resource" uid="uid://dl6n1ifa5ktnp" path="res://scenes/quests/story_quests/champ/3_stealth/stealth_components/champ_incomplete_stealth_movement_hint.dialogue" id="28_fqjr6"] [ext_resource type="PackedScene" uid="uid://drew54gcfpekn" path="res://scenes/quests/story_quests/champ/3_stealth/stealth_components/champ_water_rock/champ_water_rock.tscn" id="29_rik0t"] [ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="30_nyycj"] +[ext_resource type="Texture2D" uid="uid://c63g4rx3fvw4o" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_c_outline.tres" id="31_8k5n0"] +[ext_resource type="Texture2D" uid="uid://djen1whwwin1w" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_f_outline.tres" id="33_1n21b"] [ext_resource type="Resource" uid="uid://bmharix12w26t" path="res://scenes/quests/story_quests/champ/3_stealth/stealth_components/champ_blink.dialogue" id="34_g76pt"] -[ext_resource type="Texture2D" uid="uid://djen1whwwin1w" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_f_outline.tres" id="37_yfmpo"] -[ext_resource type="Texture2D" uid="uid://c63g4rx3fvw4o" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_c_outline.tres" id="38_wbd51"] [ext_resource type="Texture2D" uid="uid://h606ovawbm0x" path="res://scenes/quests/story_quests/champ/3_stealth/stealth_components/BlinkMarker.png" id="44_onp74"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="46_8k5n0"] [ext_resource type="Resource" uid="uid://cxjgjjb44ssnm" path="res://scenes/quests/story_quests/champ/3_stealth/stealth_components/champ_walking_on_water.dialogue" id="55_rosy4"] [sub_resource type="TileMapPattern" id="TileMapPattern_0wfyh"] @@ -1752,7 +1752,7 @@ layout_mode = 2 [node name="Interaction_hint" type="TextureRect" parent="ScreenOverlay/Hint/Blink_Hint" unique_id=207495647] layout_mode = 2 -texture = ExtResource("38_wbd51") +texture = ExtResource("31_8k5n0") script = ExtResource("30_nyycj") action_name = &"champ_blink" @@ -1765,7 +1765,7 @@ layout_mode = 2 [node name="Water_hint" type="TextureRect" parent="ScreenOverlay/Hint/walking_on_water" unique_id=506122502] layout_mode = 2 -texture = ExtResource("37_yfmpo") +texture = ExtResource("33_1n21b") script = ExtResource("30_nyycj") action_name = &"champ_walk_on_water" @@ -1796,11 +1796,15 @@ script = ExtResource("14_fqjr6") dialogue = ExtResource("15_sfcyb") metadata/_custom_type_script = "uid://x1mxt6bmei2o" -[node name="Incomplete Character" type="CharacterBody2D" parent="." unique_id=94949845] +[node name="Incomplete Character" type="CharacterBody2D" parent="." unique_id=94949845 node_paths=PackedStringArray("tile_layer", "blink_check", "blink_check_sprite", "blink_bounds")] y_sort_enabled = true position = Vector2(100, 500) collision_mask = 19 script = ExtResource("16_fw64s") +tile_layer = NodePath("../TileMapLayers/Water_border") +blink_check = NodePath("BlinkCheck") +blink_check_sprite = NodePath("BlinkCheck/Sprite2D") +blink_bounds = NodePath("../Bounds/Blink Bounds") [node name="CollisionShape2D" type="CollisionShape2D" parent="Incomplete Character" unique_id=130718626] position = Vector2(110, 34) @@ -1821,17 +1825,19 @@ limit_bottom = 9999999 position_smoothing_enabled = true editor_draw_limits = true -[node name="PlayerInteraction" type="Node2D" parent="Incomplete Character" unique_id=161308293] +[node name="PlayerInteraction" type="Node2D" parent="Incomplete Character" unique_id=161308293 node_paths=PackedStringArray("character")] unique_name_in_owner = true script = ExtResource("15_ecrvd") +character = NodePath("..") -[node name="InteractZone" type="Area2D" parent="Incomplete Character/PlayerInteraction" unique_id=826531250] +[node name="CharacterSight" type="Area2D" parent="Incomplete Character/PlayerInteraction" unique_id=826531250 node_paths=PackedStringArray("character")] unique_name_in_owner = true collision_layer = 0 collision_mask = 32 script = ExtResource("16_g11k1") +character = NodePath("../..") -[node name="CollisionShape2D" type="CollisionShape2D" parent="Incomplete Character/PlayerInteraction/InteractZone" unique_id=663814065] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Incomplete Character/PlayerInteraction/CharacterSight" unique_id=663814065] position = Vector2(167, 5) shape = SubResource("RectangleShape2D_680ig") debug_color = Color(0.600391, 0.54335, 0, 0.42) @@ -1866,8 +1872,10 @@ position = Vector2(110, 34) scale = Vector2(0.75, 0.75) texture = ExtResource("44_onp74") -[node name="Teleporter" parent="." unique_id=1237177419 instance=ExtResource("17_24qmm")] +[node name="Teleporter" type="Area2D" parent="." unique_id=1237177419] position = Vector2(1676, 519) +collision_layer = 4 +script = ExtResource("46_8k5n0") next_scene = "uid://bbjh0yoqbchuo" [node name="CollisionShape2D" type="CollisionShape2D" parent="Teleporter" unique_id=2026668028] @@ -2025,82 +2033,97 @@ position = Vector2(420, 332) dialogue = ExtResource("17_8qkne") sprite_frames = ExtResource("17_ol5cv") -[node name="InteractArea2" type="Area2D" parent="Hints/Hint NPC" unique_id=361224625] +[node name="InteractArea2" type="Area2D" parent="Hints/Hint NPC" unique_id=361224625 node_paths=PackedStringArray("marker")] unique_name_in_owner = true collision_layer = 32 collision_mask = 0 script = ExtResource("23_g11k1") -interact_label_position = Vector2(0, -100) +marker = NodePath("Marker") [node name="CollisionShape2D" type="CollisionShape2D" parent="Hints/Hint NPC/InteractArea2" unique_id=1465528784] position = Vector2(0, -29) shape = SubResource("RectangleShape2D_3eksq") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="Hints/Hint NPC/InteractArea2" unique_id=1321770066] +position = Vector2(0, -100) + [node name="Hint NPC2" parent="Hints" unique_id=1943896578 instance=ExtResource("16_ol5cv")] position = Vector2(905, -247) dialogue = ExtResource("27_oswsn") sprite_frames = ExtResource("17_ol5cv") -[node name="InteractArea2" type="Area2D" parent="Hints/Hint NPC2" unique_id=1366808935] +[node name="InteractArea2" type="Area2D" parent="Hints/Hint NPC2" unique_id=1366808935 node_paths=PackedStringArray("marker")] collision_layer = 32 collision_mask = 0 script = ExtResource("23_g11k1") -interact_label_position = Vector2(0, -100) +marker = NodePath("Marker") [node name="CollisionShape2D" type="CollisionShape2D" parent="Hints/Hint NPC2/InteractArea2" unique_id=1365930728] position = Vector2(0, -29) shape = SubResource("RectangleShape2D_3eksq") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="Hints/Hint NPC2/InteractArea2" unique_id=749163149] +position = Vector2(0, -100) + [node name="Hint NPC3" parent="Hints" unique_id=773804935 instance=ExtResource("16_ol5cv")] position = Vector2(550, 499) dialogue = ExtResource("28_fqjr6") sprite_frames = ExtResource("17_ol5cv") -[node name="InteractArea2" type="Area2D" parent="Hints/Hint NPC3" unique_id=1866041881] +[node name="InteractArea2" type="Area2D" parent="Hints/Hint NPC3" unique_id=1866041881 node_paths=PackedStringArray("marker")] collision_layer = 32 collision_mask = 0 script = ExtResource("23_g11k1") -interact_label_position = Vector2(0, -100) +marker = NodePath("Marker") [node name="CollisionShape2D" type="CollisionShape2D" parent="Hints/Hint NPC3/InteractArea2" unique_id=179206779] position = Vector2(0, -29) shape = SubResource("RectangleShape2D_3eksq") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="Hints/Hint NPC3/InteractArea2" unique_id=2011078540] +position = Vector2(0, -100) + [node name="Hint NPC4 - Blink" parent="Hints" unique_id=1086241914 instance=ExtResource("16_ol5cv")] position = Vector2(531, 8) dialogue = ExtResource("34_g76pt") sprite_frames = ExtResource("17_ol5cv") -[node name="InteractArea2" type="Area2D" parent="Hints/Hint NPC4 - Blink" unique_id=1459826347] +[node name="InteractArea2" type="Area2D" parent="Hints/Hint NPC4 - Blink" unique_id=1459826347 node_paths=PackedStringArray("marker")] collision_layer = 32 collision_mask = 0 script = ExtResource("23_g11k1") -interact_label_position = Vector2(0, -100) +marker = NodePath("Marker") [node name="CollisionShape2D" type="CollisionShape2D" parent="Hints/Hint NPC4 - Blink/InteractArea2" unique_id=1414287729] position = Vector2(0, -29) shape = SubResource("RectangleShape2D_3eksq") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="Hints/Hint NPC4 - Blink/InteractArea2" unique_id=1202881832] +position = Vector2(0, -100) + [node name="Hint NPC5 - Water_walking" parent="Hints" unique_id=989809667 instance=ExtResource("16_ol5cv")] position = Vector2(65, 195) dialogue = ExtResource("55_rosy4") sprite_frames = ExtResource("17_ol5cv") -[node name="InteractArea2" type="Area2D" parent="Hints/Hint NPC5 - Water_walking" unique_id=726533834] +[node name="InteractArea2" type="Area2D" parent="Hints/Hint NPC5 - Water_walking" unique_id=726533834 node_paths=PackedStringArray("marker")] collision_layer = 32 collision_mask = 0 script = ExtResource("23_g11k1") -interact_label_position = Vector2(0, -100) +marker = NodePath("Marker") [node name="CollisionShape2D" type="CollisionShape2D" parent="Hints/Hint NPC5 - Water_walking/InteractArea2" unique_id=1379546799] position = Vector2(0, -29) shape = SubResource("RectangleShape2D_3eksq") debug_color = Color(0.600391, 0.54335, 0, 0.42) +[node name="Marker" type="Marker2D" parent="Hints/Hint NPC5 - Water_walking/InteractArea2" unique_id=804980487] +position = Vector2(0, -100) + [node name="Bounds" type="StaticBody2D" parent="." unique_id=1900412124] collision_layer = 8208 diff --git a/scenes/quests/story_quests/champ/4_outro/champ_animation.gd b/scenes/quests/story_quests/champ/4_outro/champ_animation.gd index 216ad2e74c..27fb24f1a8 100644 --- a/scenes/quests/story_quests/champ/4_outro/champ_animation.gd +++ b/scenes/quests/story_quests/champ/4_outro/champ_animation.gd @@ -4,6 +4,7 @@ extends CharacterBody2D @onready var champ_animation: AnimatedSprite2D = $"Champ Animation" +## How fast champ should swim in pixels per physics tick @export var swim_speed: int = 100 func _ready() -> void: @@ -14,8 +15,8 @@ func _physics_process(_delta: float) -> void: # Make sure Champ doesn't swim out of the water! # If he gets too close, turn him around and start swimming the other direction if position.x > 400 or position.x < 0: - champ_animation.scale.x *= -1 velocity.x *= -1 + champ_animation.flip_h = velocity.x < 0 # TODO: Can we make Champ swim in a more interesting pattern? # Can we change the way Champ swims vertically? Can we accelerate? diff --git a/scenes/quests/story_quests/champ/4_outro/champ_outro.tscn b/scenes/quests/story_quests/champ/4_outro/champ_outro.tscn index a7d15cd62c..0d7d30209d 100644 --- a/scenes/quests/story_quests/champ/4_outro/champ_outro.tscn +++ b/scenes/quests/story_quests/champ/4_outro/champ_outro.tscn @@ -15,10 +15,7 @@ [sub_resource type="SpriteFrames" id="SpriteFrames_6d3de"] animations = [{ "frames": [{ -"duration": 1.0, -"texture": ExtResource("7_276wt") -}, { -"duration": 1.0, +"duration": 2.0, "texture": ExtResource("7_276wt") }, { "duration": 1.0, diff --git a/scenes/quests/story_quests/el_abrigo/1_el_abrigo_sequence_puzzle/el_abrigo_sequence_puzzle.tscn b/scenes/quests/story_quests/el_abrigo/1_el_abrigo_sequence_puzzle/el_abrigo_sequence_puzzle.tscn index 58cc7cf04f..b9c2d0ec6b 100644 --- a/scenes/quests/story_quests/el_abrigo/1_el_abrigo_sequence_puzzle/el_abrigo_sequence_puzzle.tscn +++ b/scenes/quests/story_quests/el_abrigo/1_el_abrigo_sequence_puzzle/el_abrigo_sequence_puzzle.tscn @@ -22,6 +22,7 @@ [ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="20_5lqbj"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="21_ls5ve"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="22_k8jmo"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmmmj"] [sub_resource type="Resource" id="Resource_wsnfe"] script = ExtResource("18_13w3u") @@ -31,6 +32,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="SequencePuzzleTemplate" type="Node2D" unique_id=341518395] position = Vector2(0, 47) +[node name="PlayerMode" type="Node" parent="." unique_id=368062140] +script = ExtResource("1_pmmmj") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="TileMapLayers" type="Node2D" parent="." unique_id=1858573359] [node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=1179094848] @@ -214,33 +219,33 @@ y_sort_enabled = true position = Vector2(183, 987) [node name="Blue" parent="OnTheGround/SequencePuzzle/Objects" unique_id=984965369 instance=ExtResource("5_cuqvo")] -modulate = Color(0, 0.4, 0.6, 1) position = Vector2(-79, -215) +sprite_modulate = Color(0, 0.4, 0.6, 1) audio_stream = ExtResource("7_661lj") [node name="Pink" parent="OnTheGround/SequencePuzzle/Objects" unique_id=102221486 instance=ExtResource("5_cuqvo")] -modulate = Color(0.89, 0.2937, 0.804817, 1) position = Vector2(200, -320) +sprite_modulate = Color(0.89, 0.2937, 0.804817, 1) audio_stream = ExtResource("8_jlwkv") [node name="Yellow" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1591554924 instance=ExtResource("5_cuqvo")] -modulate = Color(0.89, 0.804817, 0.2937, 1) position = Vector2(481, -209) +sprite_modulate = Color(0.89, 0.804817, 0.2937, 1) audio_stream = ExtResource("9_hl6ap") [node name="Green" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1191614102 instance=ExtResource("5_cuqvo")] -modulate = Color(0.188235, 0.717647, 0, 1) position = Vector2(-81, -16) +sprite_modulate = Color(0.188235, 0.717647, 0, 1) audio_stream = ExtResource("10_vlj61") [node name="Purple" parent="OnTheGround/SequencePuzzle/Objects" unique_id=2112479200 instance=ExtResource("5_cuqvo")] -modulate = Color(0.464066, 0.2937, 0.89, 1) position = Vector2(206, 90) +sprite_modulate = Color(0.464066, 0.2937, 0.89, 1) audio_stream = ExtResource("11_kni54") [node name="Red" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1598962089 instance=ExtResource("5_cuqvo")] -modulate = Color(0.89, 0.2937, 0.2937, 1) position = Vector2(484, -11) +sprite_modulate = Color(0.89, 0.2937, 0.2937, 1) audio_stream = ExtResource("12_lnhun") [node name="Signs" type="Node2D" parent="OnTheGround/SequencePuzzle" unique_id=487683127] diff --git a/scenes/quests/story_quests/el_abrigo/2_el_abrigo_stealth/el_abrigo_stealth1.tscn b/scenes/quests/story_quests/el_abrigo/2_el_abrigo_stealth/el_abrigo_stealth1.tscn index 74f83b04c2..4f3a7f3916 100644 --- a/scenes/quests/story_quests/el_abrigo/2_el_abrigo_stealth/el_abrigo_stealth1.tscn +++ b/scenes/quests/story_quests/el_abrigo/2_el_abrigo_stealth/el_abrigo_stealth1.tscn @@ -14,6 +14,7 @@ [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="12_cflgt"] [ext_resource type="Resource" uid="uid://ci5vw13idgxl4" path="res://scenes/quests/story_quests/el_abrigo/2_el_abrigo_stealth/el_abrigo_stealth1components/champ_stealth.dialogue" id="13_eh4r8"] [ext_resource type="AudioStream" uid="uid://qnqpd21qyfnc" path="res://assets/first_party/music/Threadbare_Stealth.ogg" id="14_ns4g4"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm9nt"] [sub_resource type="Curve2D" id="Curve2D_2hewv"] _data = { @@ -34,6 +35,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="StealthTemplateLevel" type="Node2D" unique_id=1915503757] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1950501472] +script = ExtResource("1_pm9nt") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="StealthGameLogic" type="Node" parent="." unique_id=2017457938] script = ExtResource("1_8bqyi") diff --git a/scenes/quests/story_quests/el_abrigo/3_el_abrigo_runner/el_abrigo_runner.tscn b/scenes/quests/story_quests/el_abrigo/3_el_abrigo_runner/el_abrigo_runner.tscn index 3d30d0cef7..506d684853 100644 --- a/scenes/quests/story_quests/el_abrigo/3_el_abrigo_runner/el_abrigo_runner.tscn +++ b/scenes/quests/story_quests/el_abrigo/3_el_abrigo_runner/el_abrigo_runner.tscn @@ -31,6 +31,7 @@ [ext_resource type="PackedScene" uid="uid://c78fj5em5tpm5" path="res://scenes/game_elements/props/decoration/crops/carrot.tscn" id="23_udqck"] [ext_resource type="Script" uid="uid://cj5gw0bqwm326" path="res://scenes/quests/story_quests/el_abrigo/3_el_abrigo_runner/el_abrigo_runner_components/carrot_trap.gd" id="26_c45fb"] [ext_resource type="AudioStream" uid="uid://kc657macgib4" path="res://assets/first_party/music/Threadbare_Main_Loud.ogg" id="31_0ldiv"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmngc"] [sub_resource type="CircleShape2D" id="CircleShape2D_vqv4d"] @@ -161,6 +162,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="StealthTemplateLevel" type="Node2D" unique_id=1958537541] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=271351960] +script = ExtResource("1_pmngc") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="StealthGameLogic" type="Node" parent="." unique_id=336177032] script = ExtResource("1_gfmo2") diff --git a/scenes/quests/story_quests/el_abrigo/el_abrigo_player_components/player_abrigo.gd b/scenes/quests/story_quests/el_abrigo/el_abrigo_player_components/player_abrigo.gd deleted file mode 100644 index 6808030c39..0000000000 --- a/scenes/quests/story_quests/el_abrigo/el_abrigo_player_components/player_abrigo.gd +++ /dev/null @@ -1,19 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends "res://scenes/game_elements/characters/player/components/player.gd" - -var posicion_inicial: Vector2 - -func _ready() -> void: - super._ready() - add_to_group("player") - posicion_inicial = global_position - -func _process(delta: float) -> void: - super._process(delta) - for i in range(get_slide_collision_count()): - var collision = get_slide_collision(i) - var collider = collision.get_collider() - if collider.is_in_group("obstacle"): - defeat() - return diff --git a/scenes/quests/story_quests/el_abrigo/el_abrigo_player_components/player_abrigo.gd.uid b/scenes/quests/story_quests/el_abrigo/el_abrigo_player_components/player_abrigo.gd.uid deleted file mode 100644 index c6fcc947af..0000000000 --- a/scenes/quests/story_quests/el_abrigo/el_abrigo_player_components/player_abrigo.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bi17ttb16lrn1 diff --git a/scenes/quests/story_quests/el_juguete_perdido/0_intro/intro.tscn b/scenes/quests/story_quests/el_juguete_perdido/0_intro/intro.tscn index c679eba2ec..040d67adda 100644 --- a/scenes/quests/story_quests/el_juguete_perdido/0_intro/intro.tscn +++ b/scenes/quests/story_quests/el_juguete_perdido/0_intro/intro.tscn @@ -12,8 +12,8 @@ [ext_resource type="Texture2D" uid="uid://bdhfcs6igu6di" path="res://assets/third_party/tiny-swords/Deco/14.png" id="7_8nl5e"] [ext_resource type="PackedScene" uid="uid://boc4ibh8o13d2" path="res://scenes/quests/story_quests/el_juguete_perdido/0_intro/components/trees1.tscn" id="8_5dkvu"] [ext_resource type="PackedScene" uid="uid://bvpd7flewjkle" path="res://scenes/quests/story_quests/el_juguete_perdido/player_components/npcs_components/fray_idle.tscn" id="8_y05yi"] -[ext_resource type="PackedScene" uid="uid://cf5a4ramrfe7y" path="res://scenes/quests/story_quests/el_juguete_perdido/player_components/npcs_components/sheep.tscn" id="9_nwk3t"] [ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="10_nf7lg"] +[ext_resource type="PackedScene" uid="uid://c4vbokn408f2c" path="res://scenes/game_elements/props/decoration/sheep/sheep.tscn" id="11_rlbfu"] [sub_resource type="Animation" id="Animation_ld06i"] length = 0.001 @@ -166,7 +166,7 @@ texture = ExtResource("7_8nl5e") position = Vector2(282, 329) look_at_side = 1 -[node name="sheep_idle" parent="TileMapLayers/People" unique_id=1822705027 instance=ExtResource("9_nwk3t")] +[node name="Sheep" parent="TileMapLayers/People" unique_id=398073521 instance=ExtResource("11_rlbfu")] position = Vector2(417, 327) [node name="Camera2D" type="Camera2D" parent="." unique_id=102060091] diff --git a/scenes/quests/story_quests/el_juguete_perdido/1_stealth/stealth.tscn b/scenes/quests/story_quests/el_juguete_perdido/1_stealth/stealth.tscn index 50dffc4f03..793e92f2a2 100644 --- a/scenes/quests/story_quests/el_juguete_perdido/1_stealth/stealth.tscn +++ b/scenes/quests/story_quests/el_juguete_perdido/1_stealth/stealth.tscn @@ -18,6 +18,7 @@ [ext_resource type="Resource" uid="uid://cn16ax75gxewu" path="res://scenes/quests/story_quests/el_juguete_perdido/1_stealth/components/collected.dialogue" id="15_bfns3"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="16_xanj6"] [ext_resource type="Resource" uid="uid://dekuveqofa52e" path="res://scenes/quests/story_quests/el_juguete_perdido/1_stealth/components/stealth.dialogue" id="17_rcrkg"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm45n"] [sub_resource type="Curve2D" id="Curve2D_vnsq3"] _data = { @@ -69,6 +70,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="StealthTemplateLevel" type="Node2D" unique_id=1461105729] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=449297012] +script = ExtResource("1_pm45n") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="StealthGameLogic" type="Node" parent="." unique_id=755460346] script = ExtResource("1_ppx7f") diff --git a/scenes/quests/story_quests/el_juguete_perdido/2_combat/combat.tscn b/scenes/quests/story_quests/el_juguete_perdido/2_combat/combat.tscn index 2d97c5fce3..c996ffe2af 100644 --- a/scenes/quests/story_quests/el_juguete_perdido/2_combat/combat.tscn +++ b/scenes/quests/story_quests/el_juguete_perdido/2_combat/combat.tscn @@ -1,5 +1,6 @@ [gd_scene format=4 uid="uid://be2gr1lptrhxu"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmnhj"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="1_prg73"] [ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="1_t3ulp"] [ext_resource type="Resource" uid="uid://c2svjynjjcnrv" path="res://scenes/quests/story_quests/el_juguete_perdido/2_combat/components/combat.dialogue" id="2_j6s2f"] @@ -91,6 +92,11 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="Combat" type="Node2D" unique_id=1428810130] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1408098873] +script = ExtResource("1_pmnhj") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="Cinematic" type="Node2D" parent="." unique_id=1850964517] script = ExtResource("1_prg73") dialogue = ExtResource("2_j6s2f") @@ -375,7 +381,6 @@ y_sort_enabled = true [node name="Player" parent="OnTheGround" unique_id=85667060 instance=ExtResource("4_grvmp")] position = Vector2(551, 303) -mode = 1 sprite_frames = ExtResource("14_3qwhi") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1102934756] diff --git a/scenes/quests/story_quests/el_juguete_perdido/3_sequence_puzzle/sequence_puzzle.tscn b/scenes/quests/story_quests/el_juguete_perdido/3_sequence_puzzle/sequence_puzzle.tscn index 6cb3b6e81e..bf8a30632a 100644 --- a/scenes/quests/story_quests/el_juguete_perdido/3_sequence_puzzle/sequence_puzzle.tscn +++ b/scenes/quests/story_quests/el_juguete_perdido/3_sequence_puzzle/sequence_puzzle.tscn @@ -1,12 +1,12 @@ [gd_scene format=4 uid="uid://7hehs33no2j3"] [ext_resource type="TileSet" uid="uid://dfp36ffpanjq2" path="res://tiles/elevation.tres" id="1_acxkl"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmwti"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="2_2paq5"] [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="2_io7px"] [ext_resource type="PackedScene" uid="uid://boc4ibh8o13d2" path="res://scenes/quests/story_quests/el_juguete_perdido/0_intro/components/trees1.tscn" id="2_yiahn"] [ext_resource type="SpriteFrames" uid="uid://b7oxscw47ykwj" path="res://scenes/quests/story_quests/el_juguete_perdido/player_components/player_with_apolo_components/storyweaver_apolo.tres" id="3_yiahn"] -[ext_resource type="PackedScene" uid="uid://cf5a4ramrfe7y" path="res://scenes/quests/story_quests/el_juguete_perdido/player_components/npcs_components/sheep.tscn" id="8_brm1x"] -[ext_resource type="SpriteFrames" uid="uid://dl5x4d40a8p1t" path="res://scenes/quests/story_quests/el_juguete_perdido/3_sequence_puzzle/components/sheeptoy_idle.tres" id="9_uwvkc"] +[ext_resource type="PackedScene" uid="uid://c4vbokn408f2c" path="res://scenes/game_elements/props/decoration/sheep/sheep.tscn" id="10_acxkl"] [ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="14_y2gkn"] [ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="15_i80sc"] [ext_resource type="Resource" uid="uid://b6umdn3fee6tf" path="res://scenes/quests/story_quests/el_juguete_perdido/3_sequence_puzzle/components/sequence_puzzle.dialogue" id="16_6jc5p"] @@ -19,8 +19,15 @@ script = ExtResource("15_i80sc") type = 2 metadata/_custom_type_script = "uid://bgmwplmj3bfls" +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_acxkl"] +height = 42.0 + [node name="SequencePuzzleTemplate" type="Node2D" unique_id=1912634357] +[node name="PlayerMode" type="Node" parent="." unique_id=2087262417] +script = ExtResource("1_pmwti") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="TileMapLayers" type="Node2D" parent="." unique_id=248194001] modulate = Color(0.880496, 0.880496, 0.880496, 1) @@ -78,9 +85,16 @@ item = SubResource("Resource_u8qfb") collected_dialogue = ExtResource("16_6jc5p") dialogue_title = &"well_done" -[node name="sheep_idle" parent="OnTheGround" unique_id=2038844619 instance=ExtResource("8_brm1x")] +[node name="Sheep" parent="OnTheGround" unique_id=398073521 instance=ExtResource("10_acxkl")] position = Vector2(1481, 389) -sprite_frames = ExtResource("9_uwvkc") +scale = Vector2(-1, 1) + +[node name="StaticBody2D" type="StaticBody2D" parent="OnTheGround/Sheep" unique_id=1499841164] +collision_layer = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Sheep/StaticBody2D" unique_id=899751853] +rotation = -1.5708 +shape = SubResource("CapsuleShape2D_acxkl") [node name="Sign" parent="OnTheGround" unique_id=999258150 instance=ExtResource("17_64xko")] position = Vector2(230, 92) diff --git a/scenes/quests/story_quests/el_juguete_perdido/player_components/npcs_components/sheep.tscn b/scenes/quests/story_quests/el_juguete_perdido/player_components/npcs_components/sheep.tscn deleted file mode 100644 index 1ab58ca7ad..0000000000 --- a/scenes/quests/story_quests/el_juguete_perdido/player_components/npcs_components/sheep.tscn +++ /dev/null @@ -1,25 +0,0 @@ -[gd_scene format=3 uid="uid://cf5a4ramrfe7y"] - -[ext_resource type="Script" uid="uid://dv11604x2etuq" path="res://scenes/game_elements/characters/npcs/components/npc.gd" id="1_n541d"] -[ext_resource type="SpriteFrames" uid="uid://vay3whr8g5la" path="res://scenes/quests/story_quests/el_juguete_perdido/player_components/npcs_components/sheep_idle.tres" id="2_0pwn2"] - -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_3vyb7"] -height = 42.0 - -[node name="sheep_idle" type="CharacterBody2D" unique_id=1405924601] -collision_layer = 2 -motion_mode = 1 -script = ExtResource("1_n541d") -sprite_frames = ExtResource("2_0pwn2") - -[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=503887007] -unique_name_in_owner = true -position = Vector2(-1, -17) -sprite_frames = ExtResource("2_0pwn2") -animation = &"idle" -frame_progress = 0.780232 -flip_h = true - -[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1356777800] -rotation = -1.5708 -shape = SubResource("CapsuleShape2D_3vyb7") diff --git a/scenes/quests/story_quests/el_juguete_perdido/player_components/npcs_components/sheep_idle.tres b/scenes/quests/story_quests/el_juguete_perdido/player_components/npcs_components/sheep_idle.tres deleted file mode 100644 index 9696580738..0000000000 --- a/scenes/quests/story_quests/el_juguete_perdido/player_components/npcs_components/sheep_idle.tres +++ /dev/null @@ -1,67 +0,0 @@ -[gd_resource type="SpriteFrames" format=3 uid="uid://vay3whr8g5la"] - -[ext_resource type="Texture2D" uid="uid://bh6kqda3mgmfg" path="res://assets/third_party/tiny-swords/Resources/Sheep/HappySheep_Idle.png" id="1_226yy"] - -[sub_resource type="AtlasTexture" id="AtlasTexture_a00f0"] -atlas = ExtResource("1_226yy") -region = Rect2(0, 0, 128, 128) - -[sub_resource type="AtlasTexture" id="AtlasTexture_k2jq8"] -atlas = ExtResource("1_226yy") -region = Rect2(128, 0, 128, 128) - -[sub_resource type="AtlasTexture" id="AtlasTexture_waa6g"] -atlas = ExtResource("1_226yy") -region = Rect2(256, 0, 128, 128) - -[sub_resource type="AtlasTexture" id="AtlasTexture_ry4uh"] -atlas = ExtResource("1_226yy") -region = Rect2(384, 0, 128, 128) - -[sub_resource type="AtlasTexture" id="AtlasTexture_2v8w7"] -atlas = ExtResource("1_226yy") -region = Rect2(512, 0, 128, 128) - -[sub_resource type="AtlasTexture" id="AtlasTexture_4h2yu"] -atlas = ExtResource("1_226yy") -region = Rect2(640, 0, 128, 128) - -[sub_resource type="AtlasTexture" id="AtlasTexture_62scv"] -atlas = ExtResource("1_226yy") -region = Rect2(768, 0, 128, 128) - -[sub_resource type="AtlasTexture" id="AtlasTexture_23fu3"] -atlas = ExtResource("1_226yy") -region = Rect2(896, 0, 128, 128) - -[resource] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_a00f0") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_k2jq8") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_waa6g") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_ry4uh") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_2v8w7") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_4h2yu") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_62scv") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_23fu3") -}], -"loop": true, -"name": &"idle", -"speed": 10.0 -}] diff --git a/scenes/quests/story_quests/el_ojo_revelador/1_stealth/el_ojo_revelador_stealth.tscn b/scenes/quests/story_quests/el_ojo_revelador/1_stealth/el_ojo_revelador_stealth.tscn index f59099dfd5..b9725eb32c 100644 --- a/scenes/quests/story_quests/el_ojo_revelador/1_stealth/el_ojo_revelador_stealth.tscn +++ b/scenes/quests/story_quests/el_ojo_revelador/1_stealth/el_ojo_revelador_stealth.tscn @@ -18,6 +18,7 @@ [ext_resource type="Resource" uid="uid://4jyo5vuumh23" path="res://scenes/quests/story_quests/el_ojo_revelador/1_stealth/stealth_components/el_ojo_revelador_stealth.dialogue" id="14_0rw02"] [ext_resource type="Texture2D" uid="uid://daf2ilk2ingia" path="res://scenes/quests/story_quests/el_ojo_revelador/0_intro/intro_components/luz.png" id="15_jkgkj"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="16_xvtq7"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmxuy"] [sub_resource type="Curve2D" id="Curve2D_sqg5n"] _data = { @@ -65,6 +66,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="StealthTemplateLevel" type="Node2D" unique_id=1974814176] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=591876988] +script = ExtResource("1_pmxuy") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="StealthGameLogic" type="Node" parent="." unique_id=796974648] script = ExtResource("1_yk8jy") diff --git a/scenes/quests/story_quests/el_ojo_revelador/2_combat/el_ojo_revelador_combat.tscn b/scenes/quests/story_quests/el_ojo_revelador/2_combat/el_ojo_revelador_combat.tscn index 09f4a7e5cb..8b28f30ab3 100644 --- a/scenes/quests/story_quests/el_ojo_revelador/2_combat/el_ojo_revelador_combat.tscn +++ b/scenes/quests/story_quests/el_ojo_revelador/2_combat/el_ojo_revelador_combat.tscn @@ -1,6 +1,7 @@ [gd_scene format=4 uid="uid://oos7ity34uiy"] [ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="1_gcfas"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm32o"] [ext_resource type="Resource" uid="uid://bnbhlw1umovwn" path="res://scenes/quests/story_quests/el_ojo_revelador/2_combat/combat_components/el_ojo_revelador_combat.dialogue" id="2_7k2ib"] [ext_resource type="TileSet" uid="uid://2lmejfj6w3o5" path="res://scenes/quests/story_quests/el_ojo_revelador/el_ojo_revelador_tileset.tres" id="3_gcfas"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="4_3otej"] @@ -27,6 +28,11 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="Combat" type="Node2D" unique_id=1120252753] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1318009887] +script = ExtResource("1_pm32o") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="CanvasModulate" type="CanvasModulate" parent="." unique_id=1116553111] color = Color(0.47397625, 0.47397554, 0.47397572, 1) @@ -57,7 +63,6 @@ tile_set = ExtResource("3_gcfas") [node name="Player" parent="." unique_id=2140286703 instance=ExtResource("4_3otej")] position = Vector2(293, 262) scale = Vector2(1.5, 1.5) -mode = 1 sprite_frames = ExtResource("5_t1ovd") [node name="Camera2D" type="Camera2D" parent="Player" unique_id=990651902] diff --git a/scenes/quests/story_quests/el_ojo_revelador/el_ojo_revelador_audios/Ambiente1_03.ogg b/scenes/quests/story_quests/el_ojo_revelador/el_ojo_revelador_audios/Ambiente1_03.ogg index 2fbaaa35da..985ce19eae 100644 --- a/scenes/quests/story_quests/el_ojo_revelador/el_ojo_revelador_audios/Ambiente1_03.ogg +++ b/scenes/quests/story_quests/el_ojo_revelador/el_ojo_revelador_audios/Ambiente1_03.ogg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8dbb7b87646586e0c7145f24359d38e4d6f30ecc460c7719d80751ec4967ea64 -size 5744141 +oid sha256:4c825fb3d71ae632ccf52df0e4d22370b2f2ea784593d69ff1245a026e228057 +size 1502756 diff --git a/scenes/quests/story_quests/el_ojo_revelador/el_ojo_revelador_audios/Ambiente2_01.ogg b/scenes/quests/story_quests/el_ojo_revelador/el_ojo_revelador_audios/Ambiente2_01.ogg index a9a42f7d28..e889a35b9f 100644 --- a/scenes/quests/story_quests/el_ojo_revelador/el_ojo_revelador_audios/Ambiente2_01.ogg +++ b/scenes/quests/story_quests/el_ojo_revelador/el_ojo_revelador_audios/Ambiente2_01.ogg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d24eb950903ebffa3a6fe413c5a7f3845b08db89fca1186978c9a6af911bbe0b -size 1727556 +oid sha256:e265a366a1cf6be3a19d782078e18895ae72cf34c0b3a7bd71cc3763650d1613 +size 554332 diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/wizzy_quest_intro.tscn b/scenes/quests/story_quests/eldrune/0_intro/eldrune_intro.tscn similarity index 86% rename from scenes/quests/story_quests/wizzy_quest/0_intro/wizzy_quest_intro.tscn rename to scenes/quests/story_quests/eldrune/0_intro/eldrune_intro.tscn index 22a9fafce8..dff18979fd 100644 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/wizzy_quest_intro.tscn +++ b/scenes/quests/story_quests/eldrune/0_intro/eldrune_intro.tscn @@ -1,17 +1,18 @@ [gd_scene format=4 uid="uid://bsn51v3gfmtvn"] -[ext_resource type="TileSet" uid="uid://kfeh06bf30lu" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_main_tileset.tres" id="1_ipjqv"] -[ext_resource type="PackedScene" uid="uid://bc3n4pbbrevxm" path="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/arboles1.tscn" id="2_6qcmh"] -[ext_resource type="Texture2D" uid="uid://2cqgyp3qyys2" path="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/mago.png" id="3_3rlya"] -[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player.tres" id="3_6qcmh"] +[ext_resource type="TileSet" uid="uid://kfeh06bf30lu" path="res://scenes/quests/story_quests/eldrune/eldrune_main_tileset.tres" id="1_ipjqv"] +[ext_resource type="PackedScene" uid="uid://bc3n4pbbrevxm" path="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/arboles1.tscn" id="2_6qcmh"] +[ext_resource type="Texture2D" uid="uid://2cqgyp3qyys2" path="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/mago.png" id="3_3rlya"] +[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/eldrune/player_components/eldrune_player.tres" id="3_6qcmh"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="4_qgyin"] -[ext_resource type="AudioStream" uid="uid://bcbsnow6xac0j" path="res://scenes/quests/story_quests/wizzy_quest/Musica/Minstrel_Dance.mp3" id="5_etpm5"] -[ext_resource type="Resource" uid="uid://br7l03ywmnj1i" path="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro.dialogue" id="5_olulc"] -[ext_resource type="SpriteFrames" uid="uid://uwdjwgblgvjr" path="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_fuego.tres" id="8_3rlya"] -[ext_resource type="PackedScene" uid="uid://bdba78m76jb57" path="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa.tscn" id="8_6qcmh"] -[ext_resource type="SpriteFrames" uid="uid://bxh8altsecw3n" path="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_luz.tres" id="9_etpm5"] -[ext_resource type="SpriteFrames" uid="uid://blud6sa110r1r" path="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_oscuridad.tres" id="10_aj5jk"] -[ext_resource type="SpriteFrames" uid="uid://ccm3187a53jko" path="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_agua.tres" id="11_vvxkt"] +[ext_resource type="Resource" uid="uid://br7l03ywmnj1i" path="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/eldrune_intro.dialogue" id="5_olulc"] +[ext_resource type="SpriteFrames" uid="uid://uwdjwgblgvjr" path="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_fuego.tres" id="8_3rlya"] +[ext_resource type="PackedScene" uid="uid://bdba78m76jb57" path="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa.tscn" id="8_6qcmh"] +[ext_resource type="SpriteFrames" uid="uid://bxh8altsecw3n" path="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_luz.tres" id="9_etpm5"] +[ext_resource type="SpriteFrames" uid="uid://blud6sa110r1r" path="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_oscuridad.tres" id="10_aj5jk"] +[ext_resource type="SpriteFrames" uid="uid://ccm3187a53jko" path="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_agua.tres" id="11_vvxkt"] +[ext_resource type="Script" uid="uid://c8405c212rbn6" path="res://scenes/game_elements/props/background_music/components/background_music.gd" id="12_naske"] +[ext_resource type="AudioStream" uid="uid://cbk3756m7uhuy" path="res://scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg" id="13_naske"] [sub_resource type="Animation" id="Animation_etpm5"] length = 0.001 @@ -184,11 +185,6 @@ autoplay = "idle" root_node = NodePath("../..") libraries/ = SubResource("AnimationLibrary_w30kv") -[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="OnTheGround" unique_id=2118804480] -stream = ExtResource("5_etpm5") -volume_db = -20.0 -autoplay = true - [node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=2029623860] [node name="Cinematic" type="Node2D" parent="." unique_id=1931206514 node_paths=PackedStringArray("animation_player")] @@ -217,3 +213,8 @@ sprite_frames = ExtResource("10_aj5jk") position = Vector2(418, 287) scale = Vector2(0.8, 0.8) sprite_frames = ExtResource("11_vvxkt") + +[node name="BackgroundMusic" type="Node" parent="." unique_id=1953072275] +script = ExtResource("12_naske") +stream = ExtResource("13_naske") +metadata/_custom_type_script = "uid://c8405c212rbn6" diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png b/scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png.import b/scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png.import rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png.import index 3f2c12be45..3b340adf92 100644 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png.import +++ b/scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b2cxbx3tr56ow" -path="res://.godot/imported/Fuente_intro.png-86604f4d8a47ae1ea4150f0c6077e172.ctex" +path="res://.godot/imported/Fuente_intro.png-2b96673003ebdb064b63cb41a2a0b972.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png" -dest_files=["res://.godot/imported/Fuente_intro.png-86604f4d8a47ae1ea4150f0c6077e172.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png" +dest_files=["res://.godot/imported/Fuente_intro.png-2b96673003ebdb064b63cb41a2a0b972.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/mago.png b/scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/mago.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/mago.png rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/mago.png diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/mago.png.import b/scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/mago.png.import similarity index 72% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/mago.png.import rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/mago.png.import index 3f6eeab53f..64ee4e3a66 100644 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/mago.png.import +++ b/scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/mago.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://2cqgyp3qyys2" -path="res://.godot/imported/mago.png-e9e29b9756f2b0be56d439c604b4630f.ctex" +path="res://.godot/imported/mago.png-7bb25a5ca3d6deb52caf68ab61d41c14.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/mago.png" -dest_files=["res://.godot/imported/mago.png-e9e29b9756f2b0be56d439c604b4630f.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/mago.png" +dest_files=["res://.godot/imported/mago.png-7bb25a5ca3d6deb52caf68ab61d41c14.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png b/scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png.import b/scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png.import rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png.import index c75fc268ca..61be30012b 100644 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png.import +++ b/scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b5xsdc7856p50" -path="res://.godot/imported/tumba_intro.png-0ad79d0bee75ccd70713afb9702014a2.ctex" +path="res://.godot/imported/tumba_intro.png-1bf14da0d66b82af5f45da7be9f3740d.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png" -dest_files=["res://.godot/imported/tumba_intro.png-0ad79d0bee75ccd70713afb9702014a2.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png" +dest_files=["res://.godot/imported/tumba_intro.png-1bf14da0d66b82af5f45da7be9f3740d.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro.dialogue b/scenes/quests/story_quests/eldrune/0_intro/intro_components/eldrune_intro.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro.dialogue rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/eldrune_intro.dialogue diff --git a/scenes/quests/story_quests/eldrune/0_intro/intro_components/eldrune_intro.dialogue.import b/scenes/quests/story_quests/eldrune/0_intro/intro_components/eldrune_intro.dialogue.import new file mode 100644 index 0000000000..625a8b13be --- /dev/null +++ b/scenes/quests/story_quests/eldrune/0_intro/intro_components/eldrune_intro.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://br7l03ywmnj1i" +path="res://.godot/imported/eldrune_intro.dialogue-91d0038d77177a0f9d736ffa35667e13.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/eldrune_intro.dialogue" +dest_files=["res://.godot/imported/eldrune_intro.dialogue-91d0038d77177a0f9d736ffa35667e13.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/arboles1.tscn b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/arboles1.tscn similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/arboles1.tscn rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/arboles1.tscn diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa.tscn b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa.tscn similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa.tscn rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa.tscn diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_agua.tres b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_agua.tres similarity index 88% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_agua.tres rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_agua.tres index f80cb2acb2..2fc98aa4bc 100644 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_agua.tres +++ b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_agua.tres @@ -1,6 +1,6 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://ccm3187a53jko"] -[ext_resource type="Texture2D" uid="uid://c3vcxf570qknr" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/imagen de las gemas mejoradas .png" id="1_3ogjp"] +[ext_resource type="Texture2D" uid="uid://c3vcxf570qknr" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/imagen de las gemas mejoradas .png" id="1_3ogjp"] [sub_resource type="AtlasTexture" id="AtlasTexture_5568h"] atlas = ExtResource("1_3ogjp") diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_fuego.tres b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_fuego.tres similarity index 88% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_fuego.tres rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_fuego.tres index 3012d13d04..52c69e19cd 100644 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_fuego.tres +++ b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_fuego.tres @@ -1,6 +1,6 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://uwdjwgblgvjr"] -[ext_resource type="Texture2D" uid="uid://c3vcxf570qknr" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/imagen de las gemas mejoradas .png" id="1_88tct"] +[ext_resource type="Texture2D" uid="uid://c3vcxf570qknr" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/imagen de las gemas mejoradas .png" id="1_88tct"] [sub_resource type="AtlasTexture" id="AtlasTexture_qhsrk"] atlas = ExtResource("1_88tct") diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_luz.tres b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_luz.tres similarity index 88% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_luz.tres rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_luz.tres index ff5553b096..ff1604d7e8 100644 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_luz.tres +++ b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_luz.tres @@ -1,6 +1,6 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://bxh8altsecw3n"] -[ext_resource type="Texture2D" uid="uid://c3vcxf570qknr" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/imagen de las gemas mejoradas .png" id="1_w58x7"] +[ext_resource type="Texture2D" uid="uid://c3vcxf570qknr" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/imagen de las gemas mejoradas .png" id="1_w58x7"] [sub_resource type="AtlasTexture" id="AtlasTexture_mekvi"] atlas = ExtResource("1_w58x7") diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_oscuridad.tres b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_oscuridad.tres similarity index 88% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_oscuridad.tres rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_oscuridad.tres index e14ae24b09..39371b276b 100644 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runa_oscuridad.tres +++ b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runa_oscuridad.tres @@ -1,6 +1,6 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://blud6sa110r1r"] -[ext_resource type="Texture2D" uid="uid://c3vcxf570qknr" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/imagen de las gemas mejoradas .png" id="1_3wvev"] +[ext_resource type="Texture2D" uid="uid://c3vcxf570qknr" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/imagen de las gemas mejoradas .png" id="1_3wvev"] [sub_resource type="AtlasTexture" id="AtlasTexture_3lqwb"] atlas = ExtResource("1_3wvev") diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runas.png b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runas.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runas.png rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runas.png diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runas.png.import b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runas.png.import similarity index 73% rename from scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runas.png.import rename to scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runas.png.import index c448df88e1..2fc90ef02e 100644 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runas.png.import +++ b/scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runas.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://def3s2dlxq77y" -path="res://.godot/imported/runas.png-57a227a9fffda4b89d8f40d1c55d0822.ctex" +path="res://.godot/imported/runas.png-9b1ceda842b5c6e11edc0681db3ed4a7.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/elementos/runas.png" -dest_files=["res://.godot/imported/runas.png-57a227a9fffda4b89d8f40d1c55d0822.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/elementos/runas.png" +dest_files=["res://.godot/imported/runas.png-9b1ceda842b5c6e11edc0681db3ed4a7.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/wizzy_quest_stealth.tscn b/scenes/quests/story_quests/eldrune/1_stealth/eldrune_stealth.tscn similarity index 97% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/wizzy_quest_stealth.tscn rename to scenes/quests/story_quests/eldrune/1_stealth/eldrune_stealth.tscn index c4a1ebf616..bb5438111d 100644 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/wizzy_quest_stealth.tscn +++ b/scenes/quests/story_quests/eldrune/1_stealth/eldrune_stealth.tscn @@ -1,32 +1,33 @@ [gd_scene format=4 uid="uid://g118barl1mcy"] -[ext_resource type="Script" uid="uid://bvdmin15878w6" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_stealth_game_logic.gd" id="1_la7g5"] +[ext_resource type="Script" uid="uid://bvdmin15878w6" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth_game_logic.gd" id="1_la7g5"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_p6mhu"] -[ext_resource type="AudioStream" uid="uid://cksommwm3nvko" path="res://scenes/quests/story_quests/wizzy_quest/Musica/opening_theme.mp3" id="2_dq3if"] -[ext_resource type="TileSet" uid="uid://b30mp2rngaixn" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_tileset.tres" id="2_ifr6t"] +[ext_resource type="AudioStream" uid="uid://cksommwm3nvko" path="res://scenes/quests/story_quests/eldrune/Musica/opening_theme.mp3" id="2_dq3if"] +[ext_resource type="TileSet" uid="uid://b30mp2rngaixn" path="res://scenes/quests/story_quests/eldrune/eldrune_tileset.tres" id="2_ifr6t"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="3_fy2qe"] -[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player.tres" id="4_la7g5"] +[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/eldrune/player_components/eldrune_player.tres" id="4_la7g5"] [ext_resource type="PackedScene" uid="uid://d37mebu7atru7" path="res://scenes/game_elements/characters/enemies/guard/guard.tscn" id="5_bewgq"] -[ext_resource type="SpriteFrames" uid="uid://belcothvu2lat" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy.tres" id="6_wot55"] +[ext_resource type="SpriteFrames" uid="uid://belcothvu2lat" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_guard_enemy.tres" id="6_wot55"] [ext_resource type="PackedScene" uid="uid://dua6mynlw2ptw" path="res://scenes/game_elements/props/checkpoint/checkpoint.tscn" id="7_p0b5d"] -[ext_resource type="Resource" uid="uid://dwoljw1ukn3ni" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint1.dialogue" id="8_3w5vk"] -[ext_resource type="SpriteFrames" uid="uid://cjvv4invjxssd" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_shark.tres" id="8_fy2qe"] -[ext_resource type="Resource" uid="uid://d1edvtgj82phd" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint.dialogue" id="8_gksxr"] -[ext_resource type="AudioStream" uid="uid://bpbgs3ewtm5xt" path="res://scenes/quests/story_quests/wizzy_quest/Musica/qubodupImpactMeat01.ogg" id="9_dojuq"] +[ext_resource type="Resource" uid="uid://dwoljw1ukn3ni" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint1.dialogue" id="8_3w5vk"] +[ext_resource type="SpriteFrames" uid="uid://cjvv4invjxssd" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_guard_enemy_shark.tres" id="8_fy2qe"] +[ext_resource type="Resource" uid="uid://d1edvtgj82phd" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint.dialogue" id="8_gksxr"] +[ext_resource type="AudioStream" uid="uid://bpbgs3ewtm5xt" path="res://scenes/quests/story_quests/eldrune/Musica/qubodupImpactMeat01.ogg" id="9_dojuq"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="9_p6mhu"] -[ext_resource type="AudioStream" uid="uid://b8c84emih5wu1" path="res://scenes/quests/story_quests/wizzy_quest/Musica/stone01.ogg" id="9_v71t3"] -[ext_resource type="AudioStream" uid="uid://cf5mt3dlgmhoo" path="res://scenes/quests/story_quests/wizzy_quest/Musica/gravel.ogg" id="9_ycvx8"] +[ext_resource type="AudioStream" uid="uid://b8c84emih5wu1" path="res://scenes/quests/story_quests/eldrune/Musica/stone01.ogg" id="9_v71t3"] +[ext_resource type="AudioStream" uid="uid://cf5mt3dlgmhoo" path="res://scenes/quests/story_quests/eldrune/Musica/gravel.ogg" id="9_ycvx8"] [ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="10_8bwwe"] -[ext_resource type="Resource" uid="uid://bbfxjku2ka16q" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint2.dialogue" id="10_p0b5d"] -[ext_resource type="SpriteFrames" uid="uid://cal8squrkef" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/wizzy_knitwitch_frames_purple.tres" id="11_8bwwe"] -[ext_resource type="Resource" uid="uid://dwx8skx5dms6a" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint4.dialogue" id="11_gksxr"] +[ext_resource type="Resource" uid="uid://bbfxjku2ka16q" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint2.dialogue" id="10_p0b5d"] +[ext_resource type="SpriteFrames" uid="uid://cal8squrkef" path="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/eldrune_knitwitch_frames_purple.tres" id="11_8bwwe"] +[ext_resource type="Resource" uid="uid://dwx8skx5dms6a" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint4.dialogue" id="11_gksxr"] [ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="11_ycvx8"] -[ext_resource type="Resource" uid="uid://b8l6wf0v8qui6" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_collected.dialogue" id="12_dojuq"] -[ext_resource type="Resource" uid="uid://batfvm4hnf05w" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint3.dialogue" id="12_p6mhu"] -[ext_resource type="Resource" uid="uid://ddu51fy1a7xow" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint5.dialogue" id="13_8bwwe"] -[ext_resource type="AudioStream" uid="uid://da0ptap0tsujw" path="res://scenes/quests/story_quests/wizzy_quest/Musica/Construction.mp3" id="13_dq3if"] +[ext_resource type="Resource" uid="uid://b8l6wf0v8qui6" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_collected.dialogue" id="12_dojuq"] +[ext_resource type="Resource" uid="uid://batfvm4hnf05w" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint3.dialogue" id="12_p6mhu"] +[ext_resource type="Resource" uid="uid://ddu51fy1a7xow" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint5.dialogue" id="13_8bwwe"] +[ext_resource type="AudioStream" uid="uid://da0ptap0tsujw" path="res://scenes/quests/story_quests/eldrune/Musica/Construction.mp3" id="13_dq3if"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="13_hsvk0"] -[ext_resource type="Resource" uid="uid://de765vp54x228" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_stealth.dialogue" id="14_dq3if"] +[ext_resource type="Resource" uid="uid://de765vp54x228" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth.dialogue" id="14_dq3if"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmcwi"] [sub_resource type="Curve2D" id="Curve2D_v71t3"] _data = { @@ -140,6 +141,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="StealthTemplateLevel" type="Node2D" unique_id=936922053] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=252165001] +script = ExtResource("1_pmcwi") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="BackgroundMusic" parent="." unique_id=1151503219 instance=ExtResource("1_p6mhu")] stream = ExtResource("2_dq3if") diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno1_minijuego1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno1_minijuego1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno1_minijuego1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno1_minijuego1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno1_minijuego1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno1_minijuego1.png.import" similarity index 70% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno1_minijuego1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno1_minijuego1.png.import" index 367cbe4c86..1bde398460 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno1_minijuego1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno1_minijuego1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c1xtp172tf37b" -path="res://.godot/imported/Adorno1_minijuego1.png-5ef152a5cd1aeec7284bb913aa6dcd26.ctex" +path="res://.godot/imported/Adorno1_minijuego1.png-d5ed77cf2434fd5b012029e99f61c837.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Adorno1_minijuego1.png" -dest_files=["res://.godot/imported/Adorno1_minijuego1.png-5ef152a5cd1aeec7284bb913aa6dcd26.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Adorno1_minijuego1.png" +dest_files=["res://.godot/imported/Adorno1_minijuego1.png-d5ed77cf2434fd5b012029e99f61c837.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno2_minijuego1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno2_minijuego1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno2_minijuego1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno2_minijuego1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno2_minijuego1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno2_minijuego1.png.import" similarity index 70% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno2_minijuego1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno2_minijuego1.png.import" index e0e299a31b..f1bef780fa 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno2_minijuego1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno2_minijuego1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://y7g4whyhs0hv" -path="res://.godot/imported/Adorno2_minijuego1.png-5e289eefc329890c0007b044f7bf5980.ctex" +path="res://.godot/imported/Adorno2_minijuego1.png-c5408445aa099ea55b39d5e332997862.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Adorno2_minijuego1.png" -dest_files=["res://.godot/imported/Adorno2_minijuego1.png-5e289eefc329890c0007b044f7bf5980.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Adorno2_minijuego1.png" +dest_files=["res://.godot/imported/Adorno2_minijuego1.png-c5408445aa099ea55b39d5e332997862.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno3_minjuego1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno3_minjuego1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno3_minjuego1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno3_minjuego1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno3_minjuego1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno3_minjuego1.png.import" similarity index 70% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno3_minjuego1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno3_minjuego1.png.import" index 4fbb2d087e..5852ffd0c8 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno3_minjuego1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno3_minjuego1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://l76ybtpiq0ol" -path="res://.godot/imported/Adorno3_minjuego1.png-e02aa2e232afdcda369b771cd6406990.ctex" +path="res://.godot/imported/Adorno3_minjuego1.png-ab8afee1666b23c51b2d88fdd2c0732c.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Adorno3_minjuego1.png" -dest_files=["res://.godot/imported/Adorno3_minjuego1.png-e02aa2e232afdcda369b771cd6406990.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Adorno3_minjuego1.png" +dest_files=["res://.godot/imported/Adorno3_minjuego1.png-ab8afee1666b23c51b2d88fdd2c0732c.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno4_minijuego1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno4_minijuego1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno4_minijuego1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno4_minijuego1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno4_minijuego1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno4_minijuego1.png.import" similarity index 70% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno4_minijuego1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno4_minijuego1.png.import" index 333f94a2fc..eea00b2707 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Adorno4_minijuego1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Adorno4_minijuego1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c18xnk0i6s4ja" -path="res://.godot/imported/Adorno4_minijuego1.png-918135d5bc705d62e8ab5f612ae84c52.ctex" +path="res://.godot/imported/Adorno4_minijuego1.png-263c513bd65b6da5ee5b879e429c258b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Adorno4_minijuego1.png" -dest_files=["res://.godot/imported/Adorno4_minijuego1.png-918135d5bc705d62e8ab5f612ae84c52.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Adorno4_minijuego1.png" +dest_files=["res://.godot/imported/Adorno4_minijuego1.png-263c513bd65b6da5ee5b879e429c258b.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque1.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque1.png.import" index 5764c41d7f..4985d1b0ab 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://o561uv2ptx1w" -path="res://.godot/imported/Guaria_ataque1.png-3a983f957fa23d924c7ce710936c4539.ctex" +path="res://.godot/imported/Guaria_ataque1.png-0de2a6700da5fa8c7b4754b73d9b9a67.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque1.png" -dest_files=["res://.godot/imported/Guaria_ataque1.png-3a983f957fa23d924c7ce710936c4539.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque1.png" +dest_files=["res://.godot/imported/Guaria_ataque1.png-0de2a6700da5fa8c7b4754b73d9b9a67.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque2.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque2.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque2.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque2.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque2.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque2.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque2.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque2.png.import" index 501631df9c..7373dfd9f3 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque2.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque2.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dl5jdhvxkvw16" -path="res://.godot/imported/Guaria_ataque2.png-58e441e59d34ae999c7478a82a75f8b7.ctex" +path="res://.godot/imported/Guaria_ataque2.png-496f5fe8ef82f28eb0a3cf41d5abb604.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque2.png" -dest_files=["res://.godot/imported/Guaria_ataque2.png-58e441e59d34ae999c7478a82a75f8b7.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque2.png" +dest_files=["res://.godot/imported/Guaria_ataque2.png-496f5fe8ef82f28eb0a3cf41d5abb604.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque3.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque3.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque3.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque3.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque3.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque3.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque3.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque3.png.import" index 3e2d494613..9a517fa39d 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque3.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque3.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ctbrjolkmhb35" -path="res://.godot/imported/Guaria_ataque3.png-86c3470a5b5cba1221974906940d079d.ctex" +path="res://.godot/imported/Guaria_ataque3.png-1f896fb979a535eeb19ab53b91e948f9.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque3.png" -dest_files=["res://.godot/imported/Guaria_ataque3.png-86c3470a5b5cba1221974906940d079d.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque3.png" +dest_files=["res://.godot/imported/Guaria_ataque3.png-1f896fb979a535eeb19ab53b91e948f9.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque4.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque4.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque4.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque4.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque4.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque4.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque4.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque4.png.import" index 1cb2c59176..515067e2e7 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque4.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque4.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dt1fu40dhbad0" -path="res://.godot/imported/Guaria_ataque4.png-8e5378fce530189cad4a3ac07fbe4d8a.ctex" +path="res://.godot/imported/Guaria_ataque4.png-20be6a7992d5624145557ef8f81a6c9b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque4.png" -dest_files=["res://.godot/imported/Guaria_ataque4.png-8e5378fce530189cad4a3ac07fbe4d8a.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque4.png" +dest_files=["res://.godot/imported/Guaria_ataque4.png-20be6a7992d5624145557ef8f81a6c9b.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque5.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque5.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque5.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque5.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque5.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque5.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque5.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque5.png.import" index c50baf2b53..c6e9c22e9e 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque5.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque5.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bqwntmmql33r" -path="res://.godot/imported/Guaria_ataque5.png-ecaa91b3cb67207eeb537526e2422b12.ctex" +path="res://.godot/imported/Guaria_ataque5.png-c58ed65528a09631a116a5b564568095.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque5.png" -dest_files=["res://.godot/imported/Guaria_ataque5.png-ecaa91b3cb67207eeb537526e2422b12.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque5.png" +dest_files=["res://.godot/imported/Guaria_ataque5.png-c58ed65528a09631a116a5b564568095.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque6.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque6.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque6.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque6.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque6.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque6.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque6.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque6.png.import" index 7322e374cd..3ddee74a77 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque6.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque6.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ddv8wbqc4bejo" -path="res://.godot/imported/Guaria_ataque6.png-9e89f8c6472cd1eccba5c000a93da550.ctex" +path="res://.godot/imported/Guaria_ataque6.png-03a9361368945275a624e278fc8a3781.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque6.png" -dest_files=["res://.godot/imported/Guaria_ataque6.png-9e89f8c6472cd1eccba5c000a93da550.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque6.png" +dest_files=["res://.godot/imported/Guaria_ataque6.png-03a9361368945275a624e278fc8a3781.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque7.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque7.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque7.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque7.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque7.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque7.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque7.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque7.png.import" index 31f72b338e..5dff13acdc 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque7.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque7.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://xhac7xnnrihi" -path="res://.godot/imported/Guaria_ataque7.png-27dac2c84b99af1606e98d30ac47508e.ctex" +path="res://.godot/imported/Guaria_ataque7.png-45790c872e2f39a77cc28892acab9dc7.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque7.png" -dest_files=["res://.godot/imported/Guaria_ataque7.png-27dac2c84b99af1606e98d30ac47508e.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque7.png" +dest_files=["res://.godot/imported/Guaria_ataque7.png-45790c872e2f39a77cc28892acab9dc7.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque8.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque8.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque8.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque8.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque8.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque8.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque8.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque8.png.import" index 7538d91fa8..c5e42f306b 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque8.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque8.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://d20pcppn47nb1" -path="res://.godot/imported/Guaria_ataque8.png-0a6773b24250b935c0a9c8dd8648ceaa.ctex" +path="res://.godot/imported/Guaria_ataque8.png-d4648dc69d43402845f62b931a234fa7.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque8.png" -dest_files=["res://.godot/imported/Guaria_ataque8.png-0a6773b24250b935c0a9c8dd8648ceaa.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque8.png" +dest_files=["res://.godot/imported/Guaria_ataque8.png-d4648dc69d43402845f62b931a234fa7.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque9.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque9.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque9.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque9.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque9.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque9.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque9.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque9.png.import" index b573ce166d..4d31dd1338 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Guaria_ataque9.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Guaria_ataque9.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cfjoogafuud7v" -path="res://.godot/imported/Guaria_ataque9.png-4d974360eaeee018b965e9452f01c4d9.ctex" +path="res://.godot/imported/Guaria_ataque9.png-7c62effe629d901789826a7cd6391c10.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque9.png" -dest_files=["res://.godot/imported/Guaria_ataque9.png-4d974360eaeee018b965e9452f01c4d9.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque9.png" +dest_files=["res://.godot/imported/Guaria_ataque9.png-7c62effe629d901789826a7cd6391c10.ctex"] [params] diff --git "a/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/REUSE.toml" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/REUSE.toml" new file mode 100644 index 0000000000..5bca7d6d3a --- /dev/null +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/REUSE.toml" @@ -0,0 +1,14 @@ +version = 1 + +[[annotations]] +path = [ + "crystal stone (1).png", + "oldstone (1).png", + "stone (1).png", + "underwaterstone.png", +] +SPDX-FileCopyrightText = [ + "2018 Melissa Krautheim" +] +SPDX-License-Identifier = "CC0-1.0" +# https://opengameart.org/content/handpainted-stone-texture diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Titleset_suelo2_minijuego1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Titleset_suelo2_minijuego1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Titleset_suelo2_minijuego1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Titleset_suelo2_minijuego1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Titleset_suelo2_minijuego1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Titleset_suelo2_minijuego1.png.import" similarity index 74% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Titleset_suelo2_minijuego1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Titleset_suelo2_minijuego1.png.import" index 353be5767e..95fe33bb54 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Titleset_suelo2_minijuego1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Titleset_suelo2_minijuego1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dbefu0c4j8bm1" -path="res://.godot/imported/Titleset_suelo2_minijuego1.png-8d82a63a3378e76c5b8e635b0d1ff733.ctex" +path="res://.godot/imported/Titleset_suelo2_minijuego1.png-95e2c78833590ae3231f1d8531fa7492.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Titleset_suelo2_minijuego1.png" -dest_files=["res://.godot/imported/Titleset_suelo2_minijuego1.png-8d82a63a3378e76c5b8e635b0d1ff733.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Titleset_suelo2_minijuego1.png" +dest_files=["res://.godot/imported/Titleset_suelo2_minijuego1.png-95e2c78833590ae3231f1d8531fa7492.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Titleset_suelo_minijuego1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Titleset_suelo_minijuego1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Titleset_suelo_minijuego1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Titleset_suelo_minijuego1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Titleset_suelo_minijuego1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Titleset_suelo_minijuego1.png.import" similarity index 74% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Titleset_suelo_minijuego1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Titleset_suelo_minijuego1.png.import" index d87a43d5ce..aa204c00d5 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/Titleset_suelo_minijuego1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/Titleset_suelo_minijuego1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://3n1lx6u1lv1i" -path="res://.godot/imported/Titleset_suelo_minijuego1.png-f4e8bbe765abce73da31c5330a565e49.ctex" +path="res://.godot/imported/Titleset_suelo_minijuego1.png-94dbc53a3a9b6da623fef6600ecb1ccb.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Titleset_suelo_minijuego1.png" -dest_files=["res://.godot/imported/Titleset_suelo_minijuego1.png-f4e8bbe765abce73da31c5330a565e49.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Titleset_suelo_minijuego1.png" +dest_files=["res://.godot/imported/Titleset_suelo_minijuego1.png-94dbc53a3a9b6da623fef6600ecb1ccb.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno5_mini1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno5_mini1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno5_mini1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno5_mini1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno5_mini1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno5_mini1.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno5_mini1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno5_mini1.png.import" index 023aafe155..b4df787e21 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno5_mini1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno5_mini1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dxnw7beou0cwf" -path="res://.godot/imported/adorno5_mini1.png-57f5b5f96b5f67db6b19c3829d275a6b.ctex" +path="res://.godot/imported/adorno5_mini1.png-b73bc950fb4c2053750ec90a33a213b8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/adorno5_mini1.png" -dest_files=["res://.godot/imported/adorno5_mini1.png-57f5b5f96b5f67db6b19c3829d275a6b.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/adorno5_mini1.png" +dest_files=["res://.godot/imported/adorno5_mini1.png-b73bc950fb4c2053750ec90a33a213b8.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno6_mini1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno6_mini1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno6_mini1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno6_mini1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno6_mini1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno6_mini1.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno6_mini1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno6_mini1.png.import" index 8f41af77fd..6cf54e96eb 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno6_mini1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno6_mini1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ctmgr5bjhwhab" -path="res://.godot/imported/adorno6_mini1.png-7f0c70b869d06aff3a657dce320895fb.ctex" +path="res://.godot/imported/adorno6_mini1.png-410bbc06e80732cbdb445c5d034ec947.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/adorno6_mini1.png" -dest_files=["res://.godot/imported/adorno6_mini1.png-7f0c70b869d06aff3a657dce320895fb.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/adorno6_mini1.png" +dest_files=["res://.godot/imported/adorno6_mini1.png-410bbc06e80732cbdb445c5d034ec947.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno7_mini1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno7_mini1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno7_mini1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno7_mini1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno7_mini1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno7_mini1.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno7_mini1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno7_mini1.png.import" index 3af108f3cf..6b26828bff 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/adorno7_mini1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/adorno7_mini1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ldnldnanq7ii" -path="res://.godot/imported/adorno7_mini1.png-42804a1c1d770075eabfdd96422e3eb8.ctex" +path="res://.godot/imported/adorno7_mini1.png-49ce885274ff112972ee068476b366a9.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/adorno7_mini1.png" -dest_files=["res://.godot/imported/adorno7_mini1.png-42804a1c1d770075eabfdd96422e3eb8.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/adorno7_mini1.png" +dest_files=["res://.godot/imported/adorno7_mini1.png-49ce885274ff112972ee068476b366a9.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/crystal stone (1).png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/crystal stone (1).png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/crystal stone (1).png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/crystal stone (1).png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/crystal stone (1).png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/crystal stone (1).png.import" similarity index 70% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/crystal stone (1).png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/crystal stone (1).png.import" index 1811ba7cb1..483c3e7c9f 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/crystal stone (1).png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/crystal stone (1).png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cj18ovtdrp1tw" -path="res://.godot/imported/crystal stone (1).png-3007f048406a236043a6c441d62c700a.ctex" +path="res://.godot/imported/crystal stone (1).png-f62c7e40ed029ae55982ca5c40d8d54b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/crystal stone (1).png" -dest_files=["res://.godot/imported/crystal stone (1).png-3007f048406a236043a6c441d62c700a.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/crystal stone (1).png" +dest_files=["res://.godot/imported/crystal stone (1).png-f62c7e40ed029ae55982ca5c40d8d54b.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted.png.import" similarity index 69% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted.png.import" index b16ae33a82..247053653f 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bq24klmibj1to" -path="res://.godot/imported/guardia_tiburon_alerted.png-a26c7776e8d06471e252636cfafbe440.ctex" +path="res://.godot/imported/guardia_tiburon_alerted.png-f90131d1853794d5988b94a0c3a6cdf5.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/guardia_tiburon_alerted.png" -dest_files=["res://.godot/imported/guardia_tiburon_alerted.png-a26c7776e8d06471e252636cfafbe440.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/guardia_tiburon_alerted.png" +dest_files=["res://.godot/imported/guardia_tiburon_alerted.png-f90131d1853794d5988b94a0c3a6cdf5.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted2.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted2.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted2.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted2.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted2.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted2.png.import" similarity index 75% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted2.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted2.png.import" index e876a985e5..c23379bd8f 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted2.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_alerted2.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://da2v0bpi3mrfv" -path="res://.godot/imported/guardia_tiburon_alerted2.png-8c0a6642330f33e2c2f0bf8589b20f4e.ctex" +path="res://.godot/imported/guardia_tiburon_alerted2.png-284e7962b0b0215e83cc84bcaf1c88b2.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/guardia_tiburon_alerted2.png" -dest_files=["res://.godot/imported/guardia_tiburon_alerted2.png-8c0a6642330f33e2c2f0bf8589b20f4e.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/guardia_tiburon_alerted2.png" +dest_files=["res://.godot/imported/guardia_tiburon_alerted2.png-284e7962b0b0215e83cc84bcaf1c88b2.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_idle.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_idle.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_idle.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_idle.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_idle.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_idle.png.import" similarity index 69% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_idle.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_idle.png.import" index e2f945e5c9..1bb4e094f1 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_idle.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_idle.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cdj4n6wkmwp5d" -path="res://.godot/imported/guardia_tiburon_idle.png-2908c7d2c9c6e3f31cea736e46cad910.ctex" +path="res://.godot/imported/guardia_tiburon_idle.png-42121ae000d2c5f8aa58e0cb78fc3ecd.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/guardia_tiburon_idle.png" -dest_files=["res://.godot/imported/guardia_tiburon_idle.png-2908c7d2c9c6e3f31cea736e46cad910.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/guardia_tiburon_idle.png" +dest_files=["res://.godot/imported/guardia_tiburon_idle.png-42121ae000d2c5f8aa58e0cb78fc3ecd.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking1.png.import" similarity index 75% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking1.png.import" index d97fd77849..d7d96f6a72 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c04vwnrhodvqj" -path="res://.godot/imported/guardia_tiburon_walking1.png-5c9256fae734e3592cc6b5af65d158f3.ctex" +path="res://.godot/imported/guardia_tiburon_walking1.png-0b479d5cd5eaad5924c5b209c40ae0de.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/guardia_tiburon_walking1.png" -dest_files=["res://.godot/imported/guardia_tiburon_walking1.png-5c9256fae734e3592cc6b5af65d158f3.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/guardia_tiburon_walking1.png" +dest_files=["res://.godot/imported/guardia_tiburon_walking1.png-0b479d5cd5eaad5924c5b209c40ae0de.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking2.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking2.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking2.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking2.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking2.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking2.png.import" similarity index 75% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking2.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking2.png.import" index dca51f382c..6a2da41924 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking2.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking2.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ducomswr47su7" -path="res://.godot/imported/guardia_tiburon_walking2.png-e040fcc2d2dd3a080e0565dae3ee23cc.ctex" +path="res://.godot/imported/guardia_tiburon_walking2.png-e17ee00a2c5288ba4718c49dec9f1721.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/guardia_tiburon_walking2.png" -dest_files=["res://.godot/imported/guardia_tiburon_walking2.png-e040fcc2d2dd3a080e0565dae3ee23cc.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/guardia_tiburon_walking2.png" +dest_files=["res://.godot/imported/guardia_tiburon_walking2.png-e17ee00a2c5288ba4718c49dec9f1721.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking3.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking3.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking3.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking3.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking3.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking3.png.import" similarity index 75% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking3.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking3.png.import" index 973155719d..f5e024a706 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking3.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/guardia_tiburon_walking3.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://d4iwgwqts6i0v" -path="res://.godot/imported/guardia_tiburon_walking3.png-62362f97836c200ba877f8c1466aa35e.ctex" +path="res://.godot/imported/guardia_tiburon_walking3.png-4f0bac1caac33a19afc864fa5f6bf435.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/guardia_tiburon_walking3.png" -dest_files=["res://.godot/imported/guardia_tiburon_walking3.png-62362f97836c200ba877f8c1466aa35e.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/guardia_tiburon_walking3.png" +dest_files=["res://.godot/imported/guardia_tiburon_walking3.png-4f0bac1caac33a19afc864fa5f6bf435.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/imagen de las gemas mejoradas .png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/imagen de las gemas mejoradas .png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/imagen de las gemas mejoradas .png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/imagen de las gemas mejoradas .png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/imagen de las gemas mejoradas .png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/imagen de las gemas mejoradas .png.import" similarity index 73% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/imagen de las gemas mejoradas .png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/imagen de las gemas mejoradas .png.import" index 52990f58f4..fbf862f4d7 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/imagen de las gemas mejoradas .png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/imagen de las gemas mejoradas .png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c3vcxf570qknr" -path="res://.godot/imported/imagen de las gemas mejoradas .png-abd1175af472e0e3c36b63eea29dadd3.ctex" +path="res://.godot/imported/imagen de las gemas mejoradas .png-2a3f11b3f37593aa135921b87b343867.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/imagen de las gemas mejoradas .png" -dest_files=["res://.godot/imported/imagen de las gemas mejoradas .png-abd1175af472e0e3c36b63eea29dadd3.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/imagen de las gemas mejoradas .png" +dest_files=["res://.godot/imported/imagen de las gemas mejoradas .png-2a3f11b3f37593aa135921b87b343867.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/oldstone (1).png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/oldstone (1).png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/oldstone (1).png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/oldstone (1).png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/oldstone (1).png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/oldstone (1).png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/oldstone (1).png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/oldstone (1).png.import" index 4c7063a376..04334690d7 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/oldstone (1).png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/oldstone (1).png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b0lofa54xt2hj" -path="res://.godot/imported/oldstone (1).png-beff08a0693396fa27eab03e63badba4.ctex" +path="res://.godot/imported/oldstone (1).png-9eaa48b214af261f206acefb8e0e47f6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/oldstone (1).png" -dest_files=["res://.godot/imported/oldstone (1).png-beff08a0693396fa27eab03e63badba4.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/oldstone (1).png" +dest_files=["res://.godot/imported/oldstone (1).png-9eaa48b214af261f206acefb8e0e47f6.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/pulpo mejorado.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/pulpo mejorado.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/pulpo mejorado.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/pulpo mejorado.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/pulpo mejorado.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/pulpo mejorado.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/pulpo mejorado.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/pulpo mejorado.png.import" index 084142266a..fe562dae03 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/pulpo mejorado.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/pulpo mejorado.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://kvdlvtg0crt6" -path="res://.godot/imported/pulpo mejorado.png-10310452c0020f646491fd9bc2dfc4eb.ctex" +path="res://.godot/imported/pulpo mejorado.png-7667e7a61b9de1b8604385f9e132febb.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/pulpo mejorado.png" -dest_files=["res://.godot/imported/pulpo mejorado.png-10310452c0020f646491fd9bc2dfc4eb.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/pulpo mejorado.png" +dest_files=["res://.godot/imported/pulpo mejorado.png-7667e7a61b9de1b8604385f9e132febb.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al1_mini1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al1_mini1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al1_mini1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al1_mini1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al1_mini1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al1_mini1.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al1_mini1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al1_mini1.png.import" index c81f1a58dc..dfcdbf33d8 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al1_mini1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al1_mini1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bfnfq2c1tapcj" -path="res://.godot/imported/señal1_mini1.png-4775bc6fe5f4cb26b504032079e16624.ctex" +path="res://.godot/imported/señal1_mini1.png-5e6456314889411eee21c2cda2c00ec1.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/señal1_mini1.png" -dest_files=["res://.godot/imported/señal1_mini1.png-4775bc6fe5f4cb26b504032079e16624.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/señal1_mini1.png" +dest_files=["res://.godot/imported/señal1_mini1.png-5e6456314889411eee21c2cda2c00ec1.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al2_mini1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al2_mini1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al2_mini1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al2_mini1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al2_mini1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al2_mini1.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al2_mini1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al2_mini1.png.import" index 62c5733016..4026f1e4d2 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al2_mini1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al2_mini1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://s6ygelrs3pln" -path="res://.godot/imported/señal2_mini1.png-c899a2a3f52d0c2b07b777ed3424109b.ctex" +path="res://.godot/imported/señal2_mini1.png-c921d2d01eb2101e317b6470608e9288.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/señal2_mini1.png" -dest_files=["res://.godot/imported/señal2_mini1.png-c899a2a3f52d0c2b07b777ed3424109b.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/señal2_mini1.png" +dest_files=["res://.godot/imported/señal2_mini1.png-c921d2d01eb2101e317b6470608e9288.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al3_mini1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al3_mini1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al3_mini1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al3_mini1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al3_mini1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al3_mini1.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al3_mini1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al3_mini1.png.import" index f87b03c867..f4085b1095 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al3_mini1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al3_mini1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b23oin3qjpweo" -path="res://.godot/imported/señal3_mini1.png-9a0b095ecdd934a62f360eca6c33edec.ctex" +path="res://.godot/imported/señal3_mini1.png-dcf226043a7ad94cea898fc2cb37de65.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/señal3_mini1.png" -dest_files=["res://.godot/imported/señal3_mini1.png-9a0b095ecdd934a62f360eca6c33edec.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/señal3_mini1.png" +dest_files=["res://.godot/imported/señal3_mini1.png-dcf226043a7ad94cea898fc2cb37de65.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al4_mini1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al4_mini1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al4_mini1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al4_mini1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al4_mini1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al4_mini1.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al4_mini1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al4_mini1.png.import" index baf38a8552..954fd9cfd1 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al4_mini1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al4_mini1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cxsphxbg12d04" -path="res://.godot/imported/señal4_mini1.png-05103e9b9d6d3cc5b97234a0472e0cda.ctex" +path="res://.godot/imported/señal4_mini1.png-8f9678a277473cf37c739a8544c05679.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/señal4_mini1.png" -dest_files=["res://.godot/imported/señal4_mini1.png-05103e9b9d6d3cc5b97234a0472e0cda.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/señal4_mini1.png" +dest_files=["res://.godot/imported/señal4_mini1.png-8f9678a277473cf37c739a8544c05679.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al5_mini1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al5_mini1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al5_mini1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al5_mini1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al5_mini1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al5_mini1.png.import" similarity index 71% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al5_mini1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al5_mini1.png.import" index 04968a91a3..0bb373d31a 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/se\303\261al5_mini1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/se\303\261al5_mini1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bw70hnmiiq3g0" -path="res://.godot/imported/señal5_mini1.png-58c6453a82a6a09a43b0b3f6a6e75c85.ctex" +path="res://.godot/imported/señal5_mini1.png-e5294b1d61a2b07f37caa672623128ef.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/señal5_mini1.png" -dest_files=["res://.godot/imported/señal5_mini1.png-58c6453a82a6a09a43b0b3f6a6e75c85.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/señal5_mini1.png" +dest_files=["res://.godot/imported/señal5_mini1.png-e5294b1d61a2b07f37caa672623128ef.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/stone (1).png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/stone (1).png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/stone (1).png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/stone (1).png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/stone (1).png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/stone (1).png.import" similarity index 72% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/stone (1).png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/stone (1).png.import" index 604bf73139..da69ee8269 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/stone (1).png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/stone (1).png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://px6v3fuo0o2a" -path="res://.godot/imported/stone (1).png-0c33d97db15d880e98261113db4d63c3.ctex" +path="res://.godot/imported/stone (1).png-a640b0745c8272c608bf1b7bc6f923ef.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/stone (1).png" -dest_files=["res://.godot/imported/stone (1).png-0c33d97db15d880e98261113db4d63c3.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/stone (1).png" +dest_files=["res://.godot/imported/stone (1).png-a640b0745c8272c608bf1b7bc6f923ef.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/titleset_adorno_minijuego1.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/titleset_adorno_minijuego1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/titleset_adorno_minijuego1.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/titleset_adorno_minijuego1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/titleset_adorno_minijuego1.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/titleset_adorno_minijuego1.png.import" similarity index 74% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/titleset_adorno_minijuego1.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/titleset_adorno_minijuego1.png.import" index bd53dc7aa6..4d88ce5b02 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/titleset_adorno_minijuego1.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/titleset_adorno_minijuego1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c2cbps6x1tsuw" -path="res://.godot/imported/titleset_adorno_minijuego1.png-3539d4999e4ae5e9f9d0082c29c2d512.ctex" +path="res://.godot/imported/titleset_adorno_minijuego1.png-4e733a78177ec63b1d5e0743508cb5b1.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/titleset_adorno_minijuego1.png" -dest_files=["res://.godot/imported/titleset_adorno_minijuego1.png-3539d4999e4ae5e9f9d0082c29c2d512.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/titleset_adorno_minijuego1.png" +dest_files=["res://.godot/imported/titleset_adorno_minijuego1.png-4e733a78177ec63b1d5e0743508cb5b1.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/underwaterstone.png" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/underwaterstone.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/underwaterstone.png" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/underwaterstone.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/underwaterstone.png.import" "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/underwaterstone.png.import" similarity index 70% rename from "scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/underwaterstone.png.import" rename to "scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/underwaterstone.png.import" index dfe3bead07..c34c9ae5b2 100644 --- "a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/dise\303\261os/underwaterstone.png.import" +++ "b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/dise\303\261os/underwaterstone.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b7xbhj6l7tx4q" -path="res://.godot/imported/underwaterstone.png-196a5342b9523fa8d3159b91105bb345.ctex" +path="res://.godot/imported/underwaterstone.png-6f785610cb5b34b6f24aecf8a2703726.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/underwaterstone.png" -dest_files=["res://.godot/imported/underwaterstone.png-196a5342b9523fa8d3159b91105bb345.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/underwaterstone.png" +dest_files=["res://.godot/imported/underwaterstone.png-6f785610cb5b34b6f24aecf8a2703726.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint.dialogue b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint.dialogue rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint.dialogue diff --git a/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint.dialogue.import b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint.dialogue.import new file mode 100644 index 0000000000..e13ad216ab --- /dev/null +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://d1edvtgj82phd" +path="res://.godot/imported/eldrune_checkpoint.dialogue-f788919b5b7facde19e95b1fb2bb7dc3.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint.dialogue" +dest_files=["res://.godot/imported/eldrune_checkpoint.dialogue-f788919b5b7facde19e95b1fb2bb7dc3.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint1.dialogue b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint1.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint1.dialogue rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint1.dialogue diff --git a/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint1.dialogue.import b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint1.dialogue.import new file mode 100644 index 0000000000..649dfe0594 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint1.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://dwoljw1ukn3ni" +path="res://.godot/imported/eldrune_checkpoint1.dialogue-1c93cd21790c878649f239ebbf8ced54.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint1.dialogue" +dest_files=["res://.godot/imported/eldrune_checkpoint1.dialogue-1c93cd21790c878649f239ebbf8ced54.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint2.dialogue b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint2.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint2.dialogue rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint2.dialogue diff --git a/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint2.dialogue.import b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint2.dialogue.import new file mode 100644 index 0000000000..720006b081 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint2.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://bbfxjku2ka16q" +path="res://.godot/imported/eldrune_checkpoint2.dialogue-a390746928d76de858b059106b30335a.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint2.dialogue" +dest_files=["res://.godot/imported/eldrune_checkpoint2.dialogue-a390746928d76de858b059106b30335a.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint3.dialogue b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint3.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint3.dialogue rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint3.dialogue diff --git a/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint3.dialogue.import b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint3.dialogue.import new file mode 100644 index 0000000000..a408bdd394 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint3.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://batfvm4hnf05w" +path="res://.godot/imported/eldrune_checkpoint3.dialogue-6978995f9a322c4ce446a5a4e39753f8.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint3.dialogue" +dest_files=["res://.godot/imported/eldrune_checkpoint3.dialogue-6978995f9a322c4ce446a5a4e39753f8.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint4.dialogue b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint4.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint4.dialogue rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint4.dialogue diff --git a/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint4.dialogue.import b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint4.dialogue.import new file mode 100644 index 0000000000..224c95a52e --- /dev/null +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint4.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://dwx8skx5dms6a" +path="res://.godot/imported/eldrune_checkpoint4.dialogue-a7bc2de39888e497039906ae06461617.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint4.dialogue" +dest_files=["res://.godot/imported/eldrune_checkpoint4.dialogue-a7bc2de39888e497039906ae06461617.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint5.dialogue b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint5.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint5.dialogue rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint5.dialogue diff --git a/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint5.dialogue.import b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint5.dialogue.import new file mode 100644 index 0000000000..518e7e10b9 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint5.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://ddu51fy1a7xow" +path="res://.godot/imported/eldrune_checkpoint5.dialogue-08044907f98c1a7e9cf13ffc968c55c3.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_checkpoint5.dialogue" +dest_files=["res://.godot/imported/eldrune_checkpoint5.dialogue-08044907f98c1a7e9cf13ffc968c55c3.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_collected.dialogue b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_collected.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_collected.dialogue rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_collected.dialogue diff --git a/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_collected.dialogue.import b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_collected.dialogue.import new file mode 100644 index 0000000000..215ce9dcba --- /dev/null +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_collected.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://b8l6wf0v8qui6" +path="res://.godot/imported/eldrune_collected.dialogue-0510dd603781d8a8d667945648759afe.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_collected.dialogue" +dest_files=["res://.godot/imported/eldrune_collected.dialogue-0510dd603781d8a8d667945648759afe.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy.tres b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_guard_enemy.tres similarity index 97% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy.tres rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_guard_enemy.tres index ca0a918328..b0a7a2edc1 100644 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy.tres +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_guard_enemy.tres @@ -1,6 +1,6 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://belcothvu2lat"] -[ext_resource type="Texture2D" uid="uid://kvdlvtg0crt6" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/pulpo mejorado.png" id="1_cjtwv"] +[ext_resource type="Texture2D" uid="uid://kvdlvtg0crt6" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/pulpo mejorado.png" id="1_cjtwv"] [sub_resource type="AtlasTexture" id="AtlasTexture_cjtwv"] atlas = ExtResource("1_cjtwv") diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_shark.tres b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_guard_enemy_shark.tres similarity index 59% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_shark.tres rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_guard_enemy_shark.tres index fce38afcb0..ebb33a16e7 100644 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_shark.tres +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_guard_enemy_shark.tres @@ -1,18 +1,18 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://cjvv4invjxssd"] -[ext_resource type="Texture2D" uid="uid://o561uv2ptx1w" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque1.png" id="1_0ofmx"] -[ext_resource type="Texture2D" uid="uid://dl5jdhvxkvw16" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque2.png" id="2_ohgq6"] -[ext_resource type="Texture2D" uid="uid://ctbrjolkmhb35" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque3.png" id="3_oopim"] -[ext_resource type="Texture2D" uid="uid://dt1fu40dhbad0" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque4.png" id="4_wtqek"] -[ext_resource type="Texture2D" uid="uid://bqwntmmql33r" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque5.png" id="5_04snf"] -[ext_resource type="Texture2D" uid="uid://ddv8wbqc4bejo" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque6.png" id="6_wio31"] -[ext_resource type="Texture2D" uid="uid://xhac7xnnrihi" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque7.png" id="7_sw7oa"] -[ext_resource type="Texture2D" uid="uid://d20pcppn47nb1" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque8.png" id="8_iy8ov"] -[ext_resource type="Texture2D" uid="uid://cfjoogafuud7v" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Guaria_ataque9.png" id="9_cy22o"] -[ext_resource type="Texture2D" uid="uid://cdj4n6wkmwp5d" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/guardia_tiburon_idle.png" id="10_rh6ig"] -[ext_resource type="Texture2D" uid="uid://c04vwnrhodvqj" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/guardia_tiburon_walking1.png" id="11_6mxa7"] -[ext_resource type="Texture2D" uid="uid://ducomswr47su7" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/guardia_tiburon_walking2.png" id="12_p536c"] -[ext_resource type="Texture2D" uid="uid://d4iwgwqts6i0v" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/guardia_tiburon_walking3.png" id="13_66ob4"] +[ext_resource type="Texture2D" uid="uid://o561uv2ptx1w" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque1.png" id="1_0ofmx"] +[ext_resource type="Texture2D" uid="uid://dl5jdhvxkvw16" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque2.png" id="2_ohgq6"] +[ext_resource type="Texture2D" uid="uid://ctbrjolkmhb35" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque3.png" id="3_oopim"] +[ext_resource type="Texture2D" uid="uid://dt1fu40dhbad0" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque4.png" id="4_wtqek"] +[ext_resource type="Texture2D" uid="uid://bqwntmmql33r" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque5.png" id="5_04snf"] +[ext_resource type="Texture2D" uid="uid://ddv8wbqc4bejo" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque6.png" id="6_wio31"] +[ext_resource type="Texture2D" uid="uid://xhac7xnnrihi" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque7.png" id="7_sw7oa"] +[ext_resource type="Texture2D" uid="uid://d20pcppn47nb1" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque8.png" id="8_iy8ov"] +[ext_resource type="Texture2D" uid="uid://cfjoogafuud7v" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Guaria_ataque9.png" id="9_cy22o"] +[ext_resource type="Texture2D" uid="uid://cdj4n6wkmwp5d" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/guardia_tiburon_idle.png" id="10_rh6ig"] +[ext_resource type="Texture2D" uid="uid://c04vwnrhodvqj" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/guardia_tiburon_walking1.png" id="11_6mxa7"] +[ext_resource type="Texture2D" uid="uid://ducomswr47su7" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/guardia_tiburon_walking2.png" id="12_p536c"] +[ext_resource type="Texture2D" uid="uid://d4iwgwqts6i0v" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/guardia_tiburon_walking3.png" id="13_66ob4"] [resource] animations = [{ diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_stealth.dialogue b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_stealth.dialogue rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth.dialogue diff --git a/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth.dialogue.import b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth.dialogue.import new file mode 100644 index 0000000000..7ff79ee14c --- /dev/null +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://de765vp54x228" +path="res://.godot/imported/eldrune_stealth.dialogue-935844c2535700c726d48b2f2782ec40.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth.dialogue" +dest_files=["res://.godot/imported/eldrune_stealth.dialogue-935844c2535700c726d48b2f2782ec40.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_stealth_game_logic.gd b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth_game_logic.gd similarity index 95% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_stealth_game_logic.gd rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth_game_logic.gd index 61bcfb4057..e0fed5f41b 100644 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_stealth_game_logic.gd +++ b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth_game_logic.gd @@ -2,7 +2,7 @@ # SPDX-License-Identifier: MPL-2.0 extends StealthGameLogic -## Custom Stealth Logic for Wizzy Quest +## Custom Stealth Logic for Eldrune ## ## Handles custom defeat animations based on enemy type: ## - Shark enemies trigger "defeated2" animation @@ -58,7 +58,7 @@ func _play_defeat_sequence(player: Player, use_shark_animation: bool) -> void: # Validate nodes exist if not animation_player or not player_sprite: - push_warning("Wizzy Quest: Could not find player AnimationPlayer or Sprite nodes") + push_warning("Eldrune: Could not find player AnimationPlayer or Sprite nodes") return # Stop AnimationPlayer to prevent it from overriding the sprite animation diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_stealth_game_logic.gd.uid b/scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth_game_logic.gd.uid similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_stealth_game_logic.gd.uid rename to scenes/quests/story_quests/eldrune/1_stealth/stealth_components/eldrune_stealth_game_logic.gd.uid diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lava.png b/scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lava.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lava.png rename to scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lava.png diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lava.png.import b/scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lava.png.import similarity index 74% rename from scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lava.png.import rename to scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lava.png.import index d5f0d37494..0d4f29a6ce 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lava.png.import +++ b/scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lava.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://5hg6knr8csmc" -path="res://.godot/imported/lava.png-94725468307050b14418d51bd66e7e78.ctex" +path="res://.godot/imported/lava.png-f4ee0ca15b64adea7f5a8f34def2c133.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lava.png" -dest_files=["res://.godot/imported/lava.png-94725468307050b14418d51bd66e7e78.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lava.png" +dest_files=["res://.godot/imported/lava.png-f4ee0ca15b64adea7f5a8f34def2c133.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lavastone.png b/scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lavastone.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lavastone.png rename to scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lavastone.png diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lavastone.png.import b/scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lavastone.png.import similarity index 73% rename from scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lavastone.png.import rename to scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lavastone.png.import index e0cea16ede..23a5c90647 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lavastone.png.import +++ b/scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lavastone.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://5nqyuaxxtyyi" -path="res://.godot/imported/lavastone.png-f61cbde2e630713073139dfc0ffc8d19.ctex" +path="res://.godot/imported/lavastone.png-e0dab6a7f429acad753e90d9949c4142.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lavastone.png" -dest_files=["res://.godot/imported/lavastone.png-f61cbde2e630713073139dfc0ffc8d19.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lavastone.png" +dest_files=["res://.godot/imported/lavastone.png-e0dab6a7f429acad753e90d9949c4142.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/objetivo_mini3.png b/scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/objetivo_mini3.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/objetivo_mini3.png rename to scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/objetivo_mini3.png diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/objetivo_mini3.png.import b/scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/objetivo_mini3.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/objetivo_mini3.png.import rename to scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/objetivo_mini3.png.import index d9b9ac71e5..9590922574 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/objetivo_mini3.png.import +++ b/scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/objetivo_mini3.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c5trojurpiunh" -path="res://.godot/imported/objetivo_mini3.png-4e5a811a10b6ee778bbc29e76956ad36.ctex" +path="res://.godot/imported/objetivo_mini3.png-22a4e65cd3c65a3f58d69579ec3b2081.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/objetivo_mini3.png" -dest_files=["res://.godot/imported/objetivo_mini3.png-4e5a811a10b6ee778bbc29e76956ad36.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/objetivo_mini3.png" +dest_files=["res://.godot/imported/objetivo_mini3.png-22a4e65cd3c65a3f58d69579ec3b2081.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav b/scenes/quests/story_quests/eldrune/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav.import b/scenes/quests/story_quests/eldrune/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav.import similarity index 62% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav.import rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav.import index 67f3197442..af02f6e850 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav.import +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav.import @@ -3,12 +3,12 @@ importer="wav" type="AudioStreamWAV" uid="uid://ypjhn8v4omvq" -path="res://.godot/imported/105016__julien-matthey__jm-fx-fireball-01.wav-caa41eb10bee374b62a15143f7b31836.sample" +path="res://.godot/imported/105016__julien-matthey__jm-fx-fireball-01.wav-ab9413df5134797d10a9f1c6cd6faa14.sample" [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav" -dest_files=["res://.godot/imported/105016__julien-matthey__jm-fx-fireball-01.wav-caa41eb10bee374b62a15143f7b31836.sample"] +source_file="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav" +dest_files=["res://.godot/imported/105016__julien-matthey__jm-fx-fireball-01.wav-ab9413df5134797d10a9f1c6cd6faa14.sample"] [params] diff --git a/scenes/quests/story_quests/eldrune/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav.license b/scenes/quests/story_quests/eldrune/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav.license new file mode 100644 index 0000000000..f228e18b31 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: Julien_Matthey +SPDX-License-Identifier: CC0-1.0 + +https://freesound.org/people/Julien_Matthey/sounds/105016/ diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_combat.dialogue b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_combat.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_combat.dialogue rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_combat.dialogue diff --git a/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_combat.dialogue.import b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_combat.dialogue.import new file mode 100644 index 0000000000..c99345e8bd --- /dev/null +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_combat.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://dl7tk62id5pox" +path="res://.godot/imported/eldrune_combat.dialogue-58fd8a7057093cebaa99ce860a3585ff.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_combat.dialogue" +dest_files=["res://.godot/imported/eldrune_combat.dialogue-58fd8a7057093cebaa99ce860a3585ff.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_fill_game_logic.gd b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_fill_game_logic.gd similarity index 88% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_fill_game_logic.gd rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_fill_game_logic.gd index 8c4a167b15..e793bbc246 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_fill_game_logic.gd +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_fill_game_logic.gd @@ -2,13 +2,13 @@ # SPDX-License-Identifier: MPL-2.0 extends FillGameLogic -## Wizzy Quest combat puzzle game logic +## Eldrune combat puzzle game logic ## ## Extends base FillGameLogic with custom features: ## - Custom barrel win condition (2 barrels instead of 3) ## - Enemy shake feedback when barrel is completed ## -## The inverted barrel mechanic is handled in wizzy_filling_barrel.gd +## The inverted barrel mechanic is handled in eldrune_filling_barrel.gd ## Number of barrels that must be emptied to win (inverted mechanic) @export var custom_barrels_to_win: int = 4 diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_fill_game_logic.gd.uid b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_fill_game_logic.gd.uid similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_fill_game_logic.gd.uid rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_fill_game_logic.gd.uid diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_filling_barrel.gd b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_filling_barrel.gd similarity index 97% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_filling_barrel.gd rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_filling_barrel.gd index eb380064a9..13e2b7b9c5 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_filling_barrel.gd +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_filling_barrel.gd @@ -2,7 +2,7 @@ # SPDX-License-Identifier: MPL-2.0 extends FillingBarrel -## Inverted barrel mechanic for Wizzy Quest combat puzzle +## Inverted barrel mechanic for Eldrune combat puzzle ## ## Unlike standard barrels: ## - Starts FULL (frame 0) diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_filling_barrel.gd.uid b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_filling_barrel.gd.uid similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_filling_barrel.gd.uid rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_filling_barrel.gd.uid diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_projectile.gd b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile.gd similarity index 95% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_projectile.gd rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile.gd index 7af2e76171..c385ff01a8 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_projectile.gd +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile.gd @@ -2,7 +2,7 @@ # SPDX-License-Identifier: MPL-2.0 extends Projectile -## Two-state sliding projectile for Wizzy Quest combat puzzle +## Two-state sliding projectile for Eldrune combat puzzle ## ## Two-state projectile system: ## - ACTIVE: Bounces and damages player when hit @@ -61,7 +61,7 @@ func _process(_delta: float) -> void: ## Returns the player if they're in fighting mode, null otherwise func _get_fighting_player() -> Player: var player: Player = get_tree().get_first_node_in_group("player") - if player and player.mode == Player.Mode.FIGHTING: + if player and GameState.has_ability(Enums.PlayerAbilities.ABILITY_A): return player return null @@ -87,7 +87,7 @@ func _physics_process(_delta: float) -> void: _is_sliding = false -func got_hit(player: Player) -> void: +func got_repelled(_direction: Vector2) -> void: if _is_disabled: return @@ -123,13 +123,13 @@ func _configure_disabled_collision_layers() -> void: set_collision_mask_value(Enums.CollisionLayers.PLAYERS_HITBOX, false) # Change from PROJECTILES to NON_WALKABLE_FLOOR layer - set_collision_layer_value(Enums.CollisionLayers.PROJECTILES, false) + set_collision_layer_value(Enums.CollisionLayers.REPELLABLE, false) set_collision_layer_value(Enums.CollisionLayers.NON_WALKABLE_FLOOR, true) # Enable collisions with environment and entities set_collision_mask_value(Enums.CollisionLayers.WALLS, true) set_collision_mask_value(Enums.CollisionLayers.PLAYERS, true) - set_collision_mask_value(Enums.CollisionLayers.PROJECTILES, true) + set_collision_mask_value(Enums.CollisionLayers.REPELLABLE, true) set_collision_mask_value(Enums.CollisionLayers.NON_WALKABLE_FLOOR, true) set_collision_mask_value(Enums.CollisionLayers.ENEMIES_HITBOX, false) diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_projectile.gd.uid b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile.gd.uid similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_projectile.gd.uid rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile.gd.uid diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_projectile.tscn b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile.tscn similarity index 65% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_projectile.tscn rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile.tscn index 008b5919d8..2875e60a46 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_projectile.tscn +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile.tscn @@ -1,9 +1,9 @@ [gd_scene format=3 uid="uid://bavegg30er3gy"] [ext_resource type="PackedScene" uid="uid://j8mqjkg0rvai" path="res://scenes/quests/template_quests/NO_EDIT/2_NO_EDIT_combat/NO_EDIT_combat_components/NO_EDIT_projectile.tscn" id="1_swlmp"] -[ext_resource type="Script" uid="uid://caqcdu756xi7o" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_projectile.gd" id="2_mqlkx"] -[ext_resource type="SpriteFrames" uid="uid://20a8ydck76qd" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_spriteframes.tres" id="3_5vdwf"] -[ext_resource type="AudioStream" uid="uid://gm5atlrt33kq" path="res://scenes/quests/story_quests/wizzy_quest/Musica/105016__julien-matthey__jm-fx-fireball-01.mp3" id="3_u8fki"] +[ext_resource type="Script" uid="uid://caqcdu756xi7o" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile.gd" id="2_mqlkx"] +[ext_resource type="SpriteFrames" uid="uid://20a8ydck76qd" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_spriteframes.tres" id="3_5vdwf"] +[ext_resource type="AudioStream" uid="uid://ypjhn8v4omvq" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/105016__julien-matthey__jm-fx-fireball-01.wav" id="3_u8fki"] [node name="Projectile" unique_id=1437397755 instance=ExtResource("1_swlmp")] script = ExtResource("2_mqlkx") diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_lava.png b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_lava.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_lava.png rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_lava.png diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_lava.png.import b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_lava.png.import similarity index 69% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_lava.png.import rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_lava.png.import index 2db00d6afe..5022c15a6b 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_lava.png.import +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_lava.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ce50setc6pkx" -path="res://.godot/imported/wizzy_quest_projectile_lava.png-becb39738dc78c4a3b9587f6efc71ed7.ctex" +path="res://.godot/imported/eldrune_projectile_lava.png-a2b1ba315d4ea406d2408c489e7211a6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_lava.png" -dest_files=["res://.godot/imported/wizzy_quest_projectile_lava.png-becb39738dc78c4a3b9587f6efc71ed7.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_lava.png" +dest_files=["res://.godot/imported/eldrune_projectile_lava.png-a2b1ba315d4ea406d2408c489e7211a6.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_spriteframes.tres b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_spriteframes.tres similarity index 85% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_spriteframes.tres rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_spriteframes.tres index db04a63e6b..7be499a1f8 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_spriteframes.tres +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_spriteframes.tres @@ -1,7 +1,7 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://20a8ydck76qd"] -[ext_resource type="Texture2D" uid="uid://ce50setc6pkx" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_lava.png" id="1_y76uf"] -[ext_resource type="Texture2D" uid="uid://bs1devaawgwdv" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_stone-modified.png" id="2_3qie2"] +[ext_resource type="Texture2D" uid="uid://ce50setc6pkx" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_lava.png" id="1_y76uf"] +[ext_resource type="Texture2D" uid="uid://bs1devaawgwdv" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_stone-modified.png" id="2_3qie2"] [sub_resource type="AtlasTexture" id="AtlasTexture_3qie2"] atlas = ExtResource("1_y76uf") diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_stone-modified.png b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_stone-modified.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_stone-modified.png rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_stone-modified.png diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_stone-modified.png.import b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_stone-modified.png.import similarity index 67% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_stone-modified.png.import rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_stone-modified.png.import index 8b6aa30176..445312f3c9 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_stone-modified.png.import +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_stone-modified.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bs1devaawgwdv" -path="res://.godot/imported/wizzy_quest_projectile_stone-modified.png-a2be62e3eacfb91862a5cdb9110fba13.ctex" +path="res://.godot/imported/eldrune_projectile_stone-modified.png-fac31a7e953348f640508db6917f3220.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_projectile_stone-modified.png" -dest_files=["res://.godot/imported/wizzy_quest_projectile_stone-modified.png-a2be62e3eacfb91862a5cdb9110fba13.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile_stone-modified.png" +dest_files=["res://.godot/imported/eldrune_projectile_stone-modified.png-fac31a7e953348f640508db6917f3220.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target_spriteframes.tres b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_target_spriteframes.tres similarity index 90% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target_spriteframes.tres rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_target_spriteframes.tres index 0a3ca24ee2..7f4ba4197f 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target_spriteframes.tres +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_target_spriteframes.tres @@ -1,6 +1,6 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://lrhngrxfpq7i"] -[ext_resource type="Texture2D" uid="uid://c5trojurpiunh" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/objetivo_mini3.png" id="1_phpdr"] +[ext_resource type="Texture2D" uid="uid://c5trojurpiunh" path="res://scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/objetivo_mini3.png" id="1_phpdr"] [sub_resource type="AtlasTexture" id="AtlasTexture_phpdr"] atlas = ExtResource("1_phpdr") diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_throwing_enemy.gd b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.gd similarity index 96% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_throwing_enemy.gd rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.gd index 62185cc559..6d2aeb0c1a 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_throwing_enemy.gd +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.gd @@ -2,7 +2,7 @@ # SPDX-License-Identifier: MPL-2.0 @tool extends ThrowingEnemy -## Wizzy Quest throwing enemy with visual feedback +## Eldrune throwing enemy with visual feedback ## ## Extends base ThrowingEnemy with: ## - Shake animation when player completes a barrel (visual feedback) diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_throwing_enemy.gd.uid b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.gd.uid similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_throwing_enemy.gd.uid rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.gd.uid diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.png b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.png rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.png diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.png.import b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.png.import similarity index 69% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.png.import rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.png.import index a189664cbb..3843eb63aa 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.png.import +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ynmcb8x5baf6" -path="res://.godot/imported/wizzy_quest_throwing_enemy.png-864662719e26b3be49b275265ecf51d0.ctex" +path="res://.godot/imported/eldrune_throwing_enemy.png-0f759c0b7048a646a226c2666fb5d9e3.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.png" -dest_files=["res://.godot/imported/wizzy_quest_throwing_enemy.png-864662719e26b3be49b275265ecf51d0.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.png" +dest_files=["res://.godot/imported/eldrune_throwing_enemy.png-0f759c0b7048a646a226c2666fb5d9e3.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.tres b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.tres similarity index 94% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.tres rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.tres index a7487170e1..b989e4c69f 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.tres +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.tres @@ -1,7 +1,7 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://bdop8df62qlht"] -[ext_resource type="Texture2D" uid="uid://ynmcb8x5baf6" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.png" id="1_mdauf"] -[ext_resource type="Texture2D" uid="uid://dx8ef16djoa7n" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy_defeated.png" id="2_te73e"] +[ext_resource type="Texture2D" uid="uid://ynmcb8x5baf6" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.png" id="1_mdauf"] +[ext_resource type="Texture2D" uid="uid://dx8ef16djoa7n" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy_defeated.png" id="2_te73e"] [sub_resource type="AtlasTexture" id="AtlasTexture_r65a1"] atlas = ExtResource("1_mdauf") diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_throwing_enemy.tscn b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.tscn similarity index 96% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_throwing_enemy.tscn rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.tscn index 557cfe509f..b93cf65657 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_throwing_enemy.tscn +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.tscn @@ -1,7 +1,7 @@ [gd_scene format=3 uid="uid://dn0mwsgc1mevf"] -[ext_resource type="Script" uid="uid://cf2qq4u0k3mdg" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_throwing_enemy.gd" id="1_078bi"] -[ext_resource type="SpriteFrames" uid="uid://bdop8df62qlht" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy.tres" id="2_0f22l"] +[ext_resource type="Script" uid="uid://cf2qq4u0k3mdg" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.gd" id="1_078bi"] +[ext_resource type="SpriteFrames" uid="uid://bdop8df62qlht" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.tres" id="2_0f22l"] [ext_resource type="PackedScene" uid="uid://j8mqjkg0rvai" path="res://scenes/quests/template_quests/NO_EDIT/2_NO_EDIT_combat/NO_EDIT_combat_components/NO_EDIT_projectile.tscn" id="3_ebctp"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_3vyb7"] @@ -240,7 +240,7 @@ _data = { &"remove": SubResource("Animation_lx56l") } -[node name="WizzyThrowingEnemy" type="CharacterBody2D" unique_id=1533088104 groups=["throwing_enemy"]] +[node name="EldruneThrowingEnemy" type="CharacterBody2D" unique_id=1533088104 groups=["throwing_enemy"]] collision_layer = 2 collision_mask = 17 motion_mode = 1 diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy_defeated.png b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy_defeated.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy_defeated.png rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy_defeated.png diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy_defeated.png.import b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy_defeated.png.import similarity index 67% rename from scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy_defeated.png.import rename to scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy_defeated.png.import index d970e907f9..17156bac58 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy_defeated.png.import +++ b/scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy_defeated.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dx8ef16djoa7n" -path="res://.godot/imported/wizzy_quest_throwing_enemy_defeated.png-2f373e71cd2e2d0569622fdf9d0a2332.ctex" +path="res://.godot/imported/eldrune_throwing_enemy_defeated.png-5174a955c908c2e4d058c6dd84274ab7.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_throwing_enemy_defeated.png" -dest_files=["res://.godot/imported/wizzy_quest_throwing_enemy_defeated.png-2f373e71cd2e2d0569622fdf9d0a2332.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy_defeated.png" +dest_files=["res://.godot/imported/eldrune_throwing_enemy_defeated.png-5174a955c908c2e4d058c6dd84274ab7.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/wizzy_quest_combat.tscn b/scenes/quests/story_quests/eldrune/2_combat/eldrune_combat.tscn similarity index 90% rename from scenes/quests/story_quests/wizzy_quest/2_combat/wizzy_quest_combat.tscn rename to scenes/quests/story_quests/eldrune/2_combat/eldrune_combat.tscn index dde3b65faf..56fcacdb35 100644 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/wizzy_quest_combat.tscn +++ b/scenes/quests/story_quests/eldrune/2_combat/eldrune_combat.tscn @@ -1,21 +1,22 @@ [gd_scene format=4 uid="uid://cfi1hvtuesjjk"] -[ext_resource type="Script" uid="uid://h0vulwxku6p" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_fill_game_logic.gd" id="1_wub6u"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmskr"] +[ext_resource type="Script" uid="uid://h0vulwxku6p" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_fill_game_logic.gd" id="1_wub6u"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="1_ylc4e"] -[ext_resource type="Resource" uid="uid://dl7tk62id5pox" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_combat.dialogue" id="2_evre0"] -[ext_resource type="TileSet" uid="uid://kfeh06bf30lu" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_main_tileset.tres" id="3_dsveo"] +[ext_resource type="Resource" uid="uid://dl7tk62id5pox" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_combat.dialogue" id="2_evre0"] +[ext_resource type="TileSet" uid="uid://kfeh06bf30lu" path="res://scenes/quests/story_quests/eldrune/eldrune_main_tileset.tres" id="3_dsveo"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="4_flf2v"] -[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player.tres" id="5_flf2v"] -[ext_resource type="PackedScene" uid="uid://dn0mwsgc1mevf" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_throwing_enemy.tscn" id="6_ylc4e"] -[ext_resource type="PackedScene" uid="uid://bavegg30er3gy" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_projectile.tscn" id="8_dsveo"] +[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/eldrune/player_components/eldrune_player.tres" id="5_flf2v"] +[ext_resource type="PackedScene" uid="uid://dn0mwsgc1mevf" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_throwing_enemy.tscn" id="6_ylc4e"] +[ext_resource type="PackedScene" uid="uid://bavegg30er3gy" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_projectile.tscn" id="8_dsveo"] [ext_resource type="PackedScene" uid="uid://y8ha8abfyap2" path="res://scenes/game_elements/props/filling_barrel/filling_barrel.tscn" id="9_525xp"] -[ext_resource type="SpriteFrames" uid="uid://lrhngrxfpq7i" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target_spriteframes.tres" id="10_51j36"] +[ext_resource type="SpriteFrames" uid="uid://lrhngrxfpq7i" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_target_spriteframes.tres" id="10_51j36"] [ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="11_1wb1m"] -[ext_resource type="Script" uid="uid://cjt2u8fd0b2hp" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_filling_barrel.gd" id="12_flf2v"] +[ext_resource type="Script" uid="uid://cjt2u8fd0b2hp" path="res://scenes/quests/story_quests/eldrune/2_combat/combat_components/eldrune_filling_barrel.gd" id="12_flf2v"] [ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="12_t7msw"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="13_1o1pe"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="16_as4dr"] -[ext_resource type="AudioStream" uid="uid://b5d1eexymi57m" path="res://scenes/quests/story_quests/wizzy_quest/Musica/Fantasy Choir 3.mp3" id="17_as4dr"] +[ext_resource type="AudioStream" uid="uid://b5d1eexymi57m" path="res://scenes/quests/story_quests/eldrune/Musica/Fantasy Choir 3.mp3" id="17_as4dr"] [sub_resource type="Resource" id="Resource_3tuwf"] script = ExtResource("12_t7msw") @@ -25,6 +26,11 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="Combat" type="Node2D" unique_id=65657651] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1994903217] +script = ExtResource("1_pmskr") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="Cinematic" type="Node2D" parent="." unique_id=198114372] script = ExtResource("1_ylc4e") dialogue = ExtResource("2_evre0") @@ -51,7 +57,6 @@ y_sort_enabled = true [node name="Player" parent="OnTheGround" unique_id=1152631127 instance=ExtResource("4_flf2v")] position = Vector2(122, 310) -mode = 1 sprite_frames = ExtResource("5_flf2v") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=215920830] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png.import index eeace71bcc..82da596076 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ducaac04xxhjd" -path="res://.godot/imported/FONDO MARINO.png-c60431b606589ca0ff92706c7092c468.ctex" +path="res://.godot/imported/FONDO MARINO.png-5eb3b0f146c9e856d39406fdfd272316.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png" -dest_files=["res://.godot/imported/FONDO MARINO.png-c60431b606589ca0ff92706c7092c468.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png" +dest_files=["res://.godot/imported/FONDO MARINO.png-5eb3b0f146c9e856d39406fdfd272316.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png.import index 1e8fb2e146..856e4394eb 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://d2gwvmfr6cv56" -path="res://.godot/imported/Guardia_minijuego1.png-486ec08e76ddf3a55180f4c09ed8c251.ctex" +path="res://.godot/imported/Guardia_minijuego1.png-620a20d7c3ffcd8686ed5a8c96c00501.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png" -dest_files=["res://.godot/imported/Guardia_minijuego1.png-486ec08e76ddf3a55180f4c09ed8c251.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png" +dest_files=["res://.godot/imported/Guardia_minijuego1.png-620a20d7c3ffcd8686ed5a8c96c00501.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png.import index fd76270c00..52d42b7dcc 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cslqfj05d1xvq" -path="res://.godot/imported/Guardia_minijuego2.png-991568d0771b2ab2824d97a4f796c2ac.ctex" +path="res://.godot/imported/Guardia_minijuego2.png-d2bffa767bb259512087be6e7f71dde2.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png" -dest_files=["res://.godot/imported/Guardia_minijuego2.png-991568d0771b2ab2824d97a4f796c2ac.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png" +dest_files=["res://.godot/imported/Guardia_minijuego2.png-d2bffa767bb259512087be6e7f71dde2.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png.import index 89f8c95000..f20dd6dd1d 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bppqn0ppc2sak" -path="res://.godot/imported/Guardia_minijuego3.png-87176819f2391fdf97e2dcb21a4df6da.ctex" +path="res://.godot/imported/Guardia_minijuego3.png-a7de214863c2de84afb0b033ee101797.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png" -dest_files=["res://.godot/imported/Guardia_minijuego3.png-87176819f2391fdf97e2dcb21a4df6da.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png" +dest_files=["res://.godot/imported/Guardia_minijuego3.png-a7de214863c2de84afb0b033ee101797.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png.import index 43e89648a8..3283be8d78 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://uy8xtio15qyr" -path="res://.godot/imported/I1_arpa_solucionl1.png-9ae95d799787d36052d5c2cd0e431cb0.ctex" +path="res://.godot/imported/I1_arpa_solucionl1.png-992caca5c79bcc53ba121704eb182c19.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png" -dest_files=["res://.godot/imported/I1_arpa_solucionl1.png-9ae95d799787d36052d5c2cd0e431cb0.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png" +dest_files=["res://.godot/imported/I1_arpa_solucionl1.png-992caca5c79bcc53ba121704eb182c19.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png.import index 4cb987aba2..e39f3d293a 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c7o1r1hccpqtv" -path="res://.godot/imported/I1_arpa_solucionl2.png-359cb7c0fef5b27d2f5b33265a9efd9f.ctex" +path="res://.godot/imported/I1_arpa_solucionl2.png-219e42460435c3e2a5dee7f74229b0d6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png" -dest_files=["res://.godot/imported/I1_arpa_solucionl2.png-359cb7c0fef5b27d2f5b33265a9efd9f.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png" +dest_files=["res://.godot/imported/I1_arpa_solucionl2.png-219e42460435c3e2a5dee7f74229b0d6.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png.import similarity index 69% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png.import index 056380b3a0..d24b012509 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cd5ooo2n0kng3" -path="res://.godot/imported/I2_liradorada_solucion1.png-f187dcc9352f893066c2feea2b930285.ctex" +path="res://.godot/imported/I2_liradorada_solucion1.png-15cd1eb5a289c17a0a645d7d8c88e0eb.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png" -dest_files=["res://.godot/imported/I2_liradorada_solucion1.png-f187dcc9352f893066c2feea2b930285.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png" +dest_files=["res://.godot/imported/I2_liradorada_solucion1.png-15cd1eb5a289c17a0a645d7d8c88e0eb.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png.import similarity index 69% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png.import index 993b7f52f4..422801d3fa 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c08j0kuftdp2x" -path="res://.godot/imported/I2_liradorada_solucion2.png-e94a38625f057e387b403c4612d4f38e.ctex" +path="res://.godot/imported/I2_liradorada_solucion2.png-2a7807791cd683bd4feb2539ce029ac5.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png" -dest_files=["res://.godot/imported/I2_liradorada_solucion2.png-e94a38625f057e387b403c4612d4f38e.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png" +dest_files=["res://.godot/imported/I2_liradorada_solucion2.png-2a7807791cd683bd4feb2539ce029ac5.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion1.png" "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion1.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion1.png" rename to "scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion1.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion1.png.import" "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion1.png.import" similarity index 69% rename from "scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion1.png.import" rename to "scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion1.png.import" index 27f2cc02f4..69a3784c2d 100644 --- "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion1.png.import" +++ "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion1.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ccfhot10c01l" -path="res://.godot/imported/I3_sampoña_solucion1.png-79288055370d59137f20f1c540efcdf7.ctex" +path="res://.godot/imported/I3_sampoña_solucion1.png-77b52d8fde7ce291522a285344314138.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampoña_solucion1.png" -dest_files=["res://.godot/imported/I3_sampoña_solucion1.png-79288055370d59137f20f1c540efcdf7.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampoña_solucion1.png" +dest_files=["res://.godot/imported/I3_sampoña_solucion1.png-77b52d8fde7ce291522a285344314138.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion2.png" "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion2.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion2.png" rename to "scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion2.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion2.png.import" "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion2.png.import" similarity index 69% rename from "scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion2.png.import" rename to "scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion2.png.import" index 5c153a55eb..94289484d3 100644 --- "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion2.png.import" +++ "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampo\303\261a_solucion2.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b4mni5b2teo0" -path="res://.godot/imported/I3_sampoña_solucion2.png-d3313dfb0600686c0950ac790677678c.ctex" +path="res://.godot/imported/I3_sampoña_solucion2.png-df1e7d4d75cd22f8bd755fe3e0b37372.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampoña_solucion2.png" -dest_files=["res://.godot/imported/I3_sampoña_solucion2.png-d3313dfb0600686c0950ac790677678c.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampoña_solucion2.png" +dest_files=["res://.godot/imported/I3_sampoña_solucion2.png-df1e7d4d75cd22f8bd755fe3e0b37372.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png.import index 181994e298..d0dd928f33 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bq3kh2gtm1mk7" -path="res://.godot/imported/Reproduccion_arpa.png-23245211ca0814ab480cc429841d9554.ctex" +path="res://.godot/imported/Reproduccion_arpa.png-99caf1d8e6f619a570e0fc658da9b05e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png" -dest_files=["res://.godot/imported/Reproduccion_arpa.png-23245211ca0814ab480cc429841d9554.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png" +dest_files=["res://.godot/imported/Reproduccion_arpa.png-99caf1d8e6f619a570e0fc658da9b05e.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png.import index a48b345dc2..24f894e55f 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bff16oy75sdsm" -path="res://.godot/imported/Reproduccion_lira.png-afa7426ba34e048ba5b725618e6f61a6.ctex" +path="res://.godot/imported/Reproduccion_lira.png-542d47f4107dafa2e083816cfc82abb9.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png" -dest_files=["res://.godot/imported/Reproduccion_lira.png-afa7426ba34e048ba5b725618e6f61a6.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png" +dest_files=["res://.godot/imported/Reproduccion_lira.png-542d47f4107dafa2e083816cfc82abb9.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampo\303\261a.png" "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampo\303\261a.png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampo\303\261a.png" rename to "scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampo\303\261a.png" diff --git "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampo\303\261a.png.import" "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampo\303\261a.png.import" similarity index 69% rename from "scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampo\303\261a.png.import" rename to "scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampo\303\261a.png.import" index 4ff7319f19..08e3860e5d 100644 --- "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampo\303\261a.png.import" +++ "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampo\303\261a.png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://6k8hut7j4kse" -path="res://.godot/imported/Reproduccion_sampoña.png-0195a937302e05424dff0ef9691659c1.ctex" +path="res://.godot/imported/Reproduccion_sampoña.png-c1168d37c96008ed23894b8abb295259.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampoña.png" -dest_files=["res://.godot/imported/Reproduccion_sampoña.png-0195a937302e05424dff0ef9691659c1.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampoña.png" +dest_files=["res://.godot/imported/Reproduccion_sampoña.png-c1168d37c96008ed23894b8abb295259.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png.import similarity index 79% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png.import index 89daff3cc3..4e2d7b9a63 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://drp57sd7hcor3" -path="res://.godot/imported/Rey_marino_durmiendo_minijuego1.png-a0974e1bc037a9779345aba9666a5fe9.ctex" +path="res://.godot/imported/Rey_marino_durmiendo_minijuego1.png-5a7e4e93709cba71f422bee201077050.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png" -dest_files=["res://.godot/imported/Rey_marino_durmiendo_minijuego1.png-a0974e1bc037a9779345aba9666a5fe9.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png" +dest_files=["res://.godot/imported/Rey_marino_durmiendo_minijuego1.png-5a7e4e93709cba71f422bee201077050.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png.import similarity index 79% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png.import index ed2be38ad3..0fa18e0821 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bphs4adyna6nb" -path="res://.godot/imported/Rey_marino_durmiendo_minijuego2.png-c4e9215b4d8726c63bc43dab84297b31.ctex" +path="res://.godot/imported/Rey_marino_durmiendo_minijuego2.png-bd4ee62502c20db5d205a6511b524c73.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png" -dest_files=["res://.godot/imported/Rey_marino_durmiendo_minijuego2.png-c4e9215b4d8726c63bc43dab84297b31.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png" +dest_files=["res://.godot/imported/Rey_marino_durmiendo_minijuego2.png-bd4ee62502c20db5d205a6511b524c73.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png.import similarity index 79% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png.import index 21c2d02564..f2349c33ff 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bqtsylwcoqe2o" -path="res://.godot/imported/Rey_marino_durmiendo_minijuego3.png-702fc9597a18304a259e950f40be59c0.ctex" +path="res://.godot/imported/Rey_marino_durmiendo_minijuego3.png-89beb71f6fa18657da3dd9d0c520a373.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png" -dest_files=["res://.godot/imported/Rey_marino_durmiendo_minijuego3.png-702fc9597a18304a259e950f40be59c0.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png" +dest_files=["res://.godot/imported/Rey_marino_durmiendo_minijuego3.png-89beb71f6fa18657da3dd9d0c520a373.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png.import similarity index 79% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png.import index 5182defab5..ed80c2185f 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bf1ro2talag1j" -path="res://.godot/imported/Rey_marino_durmiendo_minijuego4.png-93762afbcf25629e6a901f4892a6c805.ctex" +path="res://.godot/imported/Rey_marino_durmiendo_minijuego4.png-1e5e30ffae8ae7dc96813576eb92d6ca.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png" -dest_files=["res://.godot/imported/Rey_marino_durmiendo_minijuego4.png-93762afbcf25629e6a901f4892a6c805.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png" +dest_files=["res://.godot/imported/Rey_marino_durmiendo_minijuego4.png-1e5e30ffae8ae7dc96813576eb92d6ca.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png.import index 8964de474d..69ec7a7b66 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ck1opqhtn6jay" -path="res://.godot/imported/adorno5_mini1.png-5b8ccd93148be6ff2246a04cfa15c544.ctex" +path="res://.godot/imported/adorno5_mini1.png-cff2b51f2e7508ede5bd14e5a716f924.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png" -dest_files=["res://.godot/imported/adorno5_mini1.png-5b8ccd93148be6ff2246a04cfa15c544.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/adorno5_mini1.png" +dest_files=["res://.godot/imported/adorno5_mini1.png-cff2b51f2e7508ede5bd14e5a716f924.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png.import similarity index 74% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png.import index 5c96c3aa1f..4877f7d7ee 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c7hg6rdivsrhv" -path="res://.godot/imported/arpa intrumento musical .png-63cc7fe07193bc3d6e5075bfbbe77670.ctex" +path="res://.godot/imported/arpa intrumento musical .png-9d41816c8be968a5b280ac14acc21764.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png" -dest_files=["res://.godot/imported/arpa intrumento musical .png-63cc7fe07193bc3d6e5075bfbbe77670.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png" +dest_files=["res://.godot/imported/arpa intrumento musical .png-9d41816c8be968a5b280ac14acc21764.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png.import similarity index 74% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png.import index 3a4582980d..408d0e8a01 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dthpy5xucbnia" -path="res://.godot/imported/caracola 1 color amaraillo.png-e687f3a1b645ccdcc0ff893ffa0e1a63.ctex" +path="res://.godot/imported/caracola 1 color amaraillo.png-08b20576a232f8b6255bab45001d3e5a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png" -dest_files=["res://.godot/imported/caracola 1 color amaraillo.png-e687f3a1b645ccdcc0ff893ffa0e1a63.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png" +dest_files=["res://.godot/imported/caracola 1 color amaraillo.png-08b20576a232f8b6255bab45001d3e5a.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png.import similarity index 69% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png.import index c4b8764cc9..818168e259 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cqj8tvg21atf4" -path="res://.godot/imported/caracola 2 color rojo.png-a6e884cf57c97d8c6e660c48964db560.ctex" +path="res://.godot/imported/caracola 2 color rojo.png-01e6c7b8045e0bb68a6e4595aa052559.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png" -dest_files=["res://.godot/imported/caracola 2 color rojo.png-a6e884cf57c97d8c6e660c48964db560.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 2 color rojo.png" +dest_files=["res://.godot/imported/caracola 2 color rojo.png-01e6c7b8045e0bb68a6e4595aa052559.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png.import index d8365786ce..5efeb3ba09 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://tutgft3mg0ik" -path="res://.godot/imported/guardiavolteado1.png-6f428d1436b641eeb1e35c557e50cb33.ctex" +path="res://.godot/imported/guardiavolteado1.png-720860fc3b70754c8728c7bdd6fc0729.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png" -dest_files=["res://.godot/imported/guardiavolteado1.png-6f428d1436b641eeb1e35c557e50cb33.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png" +dest_files=["res://.godot/imported/guardiavolteado1.png-720860fc3b70754c8728c7bdd6fc0729.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png.import index 7df98d90ec..0529550420 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cilagj0wadfet" -path="res://.godot/imported/guardiavolteado2.png-a073d55674766321fb24b615460b1192.ctex" +path="res://.godot/imported/guardiavolteado2.png-f7ee1c4af18962a69e0c7d505ba705c5.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png" -dest_files=["res://.godot/imported/guardiavolteado2.png-a073d55674766321fb24b615460b1192.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png" +dest_files=["res://.godot/imported/guardiavolteado2.png-f7ee1c4af18962a69e0c7d505ba705c5.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png.import similarity index 73% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png.import rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png.import index 28d160e959..ce89b4f076 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png.import +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://4j4any6raada" -path="res://.godot/imported/lira dorada intrumento musical.png-0ecb72805d51a260928d3f6c76b9b4a1.ctex" +path="res://.godot/imported/lira dorada intrumento musical.png-d9393e12ae253a9a3d4081960b76edb8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png" -dest_files=["res://.godot/imported/lira dorada intrumento musical.png-0ecb72805d51a260928d3f6c76b9b4a1.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png" +dest_files=["res://.godot/imported/lira dorada intrumento musical.png-d9393e12ae253a9a3d4081960b76edb8.ctex"] [params] diff --git "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/sampo\303\261a intrumeto musical .png" "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/sampo\303\261a intrumeto musical .png" similarity index 100% rename from "scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/sampo\303\261a intrumeto musical .png" rename to "scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/sampo\303\261a intrumeto musical .png" diff --git "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/sampo\303\261a intrumeto musical .png.import" "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/sampo\303\261a intrumeto musical .png.import" similarity index 74% rename from "scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/sampo\303\261a intrumeto musical .png.import" rename to "scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/sampo\303\261a intrumeto musical .png.import" index bcac2872da..abdc5d44b4 100644 --- "a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/sampo\303\261a intrumeto musical .png.import" +++ "b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/sampo\303\261a intrumeto musical .png.import" @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b2mvaokstvwhh" -path="res://.godot/imported/sampoña intrumeto musical .png-9210276a9da9a9b16a2079b0033a28c5.ctex" +path="res://.godot/imported/sampoña intrumeto musical .png-23e3b9ab63296559cbab04e2e91eaa03.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/sampoña intrumeto musical .png" -dest_files=["res://.godot/imported/sampoña intrumeto musical .png-9210276a9da9a9b16a2079b0033a28c5.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/sampoña intrumeto musical .png" +dest_files=["res://.godot/imported/sampoña intrumeto musical .png-23e3b9ab63296559cbab04e2e91eaa03.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_object.tres b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_object.tres similarity index 88% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_object.tres rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_object.tres index f1dba7e167..518bca7af0 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_object.tres +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_object.tres @@ -1,6 +1,6 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://6fat4o2fv3x2"] -[ext_resource type="Texture2D" uid="uid://dthpy5xucbnia" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png" id="1_87fvq"] +[ext_resource type="Texture2D" uid="uid://dthpy5xucbnia" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/caracola 1 color amaraillo.png" id="1_87fvq"] [sub_resource type="AtlasTexture" id="AtlasTexture_qp2ue"] atlas = ExtResource("1_87fvq") diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_puzzle_2.tscn b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_puzzle_2.tscn similarity index 84% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_puzzle_2.tscn rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_puzzle_2.tscn index 6a51375d66..3321dd90a5 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_puzzle_2.tscn +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_puzzle_2.tscn @@ -1,39 +1,41 @@ [gd_scene format=4 uid="uid://cakexw1g553y1"] -[ext_resource type="TileSet" uid="uid://kfeh06bf30lu" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_main_tileset.tres" id="1_g8btr"] +[ext_resource type="TileSet" uid="uid://kfeh06bf30lu" path="res://scenes/quests/story_quests/eldrune/eldrune_main_tileset.tres" id="1_g8btr"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmur2"] [ext_resource type="PackedScene" uid="uid://be4o3ythda4cu" path="res://scenes/game_elements/props/sequence_puzzle_hint_sign/sequence_puzzle_hint_sign.tscn" id="2_1kch1"] -[ext_resource type="AudioStream" uid="uid://bu56362rlkk3r" path="res://scenes/quests/story_quests/wizzy_quest/Musica/Win sound.mp3" id="2_p0bkw"] +[ext_resource type="AudioStream" uid="uid://bu56362rlkk3r" path="res://scenes/quests/story_quests/eldrune/Musica/Win sound.mp3" id="2_p0bkw"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="2_pqp3w"] -[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player.tres" id="3_5y1i1"] -[ext_resource type="SpriteFrames" uid="uid://ciplxknjgb3by" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign_3.tres" id="3_oefbf"] +[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/eldrune/player_components/eldrune_player.tres" id="3_5y1i1"] +[ext_resource type="SpriteFrames" uid="uid://ciplxknjgb3by" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign_3.tres" id="3_oefbf"] [ext_resource type="Script" uid="uid://c68oh8dtr21ti" path="res://scenes/game_logic/sequence_puzzle.gd" id="4_cpets"] [ext_resource type="Script" uid="uid://ccc78coj2b1li" path="res://scenes/game_logic/sequence_puzzle_step.gd" id="4_ircmh"] -[ext_resource type="Texture2D" uid="uid://drp57sd7hcor3" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png" id="5_a1u3m"] +[ext_resource type="Texture2D" uid="uid://drp57sd7hcor3" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego1.png" id="5_a1u3m"] [ext_resource type="PackedScene" uid="uid://b8sok264erfoc" path="res://scenes/game_elements/props/sequence_puzzle_object/sequence_puzzle_object.tscn" id="5_a4p44"] -[ext_resource type="SpriteFrames" uid="uid://6fat4o2fv3x2" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_object.tres" id="6_ex0e8"] -[ext_resource type="Texture2D" uid="uid://bphs4adyna6nb" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png" id="6_xjwyw"] -[ext_resource type="Texture2D" uid="uid://bqtsylwcoqe2o" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png" id="7_d0sll"] +[ext_resource type="SpriteFrames" uid="uid://6fat4o2fv3x2" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_object.tres" id="6_ex0e8"] +[ext_resource type="Texture2D" uid="uid://bphs4adyna6nb" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego2.png" id="6_xjwyw"] +[ext_resource type="Texture2D" uid="uid://bqtsylwcoqe2o" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego3.png" id="7_d0sll"] [ext_resource type="AudioStream" uid="uid://cg57q82pb243w" path="res://assets/third_party/nepalese_hand_bells/handBells-c4.ogg" id="7_laaar"] [ext_resource type="AudioStream" uid="uid://b83x8h0ob5mpq" path="res://assets/third_party/nepalese_hand_bells/handBells-d4.ogg" id="8_usl7p"] -[ext_resource type="Texture2D" uid="uid://bf1ro2talag1j" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png" id="8_vjrxq"] -[ext_resource type="Texture2D" uid="uid://d2gwvmfr6cv56" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png" id="9_maes3"] +[ext_resource type="Texture2D" uid="uid://bf1ro2talag1j" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Rey_marino_durmiendo_minijuego4.png" id="8_vjrxq"] +[ext_resource type="Texture2D" uid="uid://d2gwvmfr6cv56" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego1.png" id="9_maes3"] [ext_resource type="AudioStream" uid="uid://cmtiwg2cylmts" path="res://assets/third_party/nepalese_hand_bells/handBells-e4.ogg" id="9_thq1a"] -[ext_resource type="Texture2D" uid="uid://cslqfj05d1xvq" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png" id="10_ircmh"] -[ext_resource type="AudioStream" uid="uid://8k1hyi4gjae4" path="res://assets/third_party/nepalese_hand_bells/handBells-f4.ogg" id="10_v2k26"] +[ext_resource type="Texture2D" uid="uid://cslqfj05d1xvq" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego2.png" id="10_ircmh"] [ext_resource type="AudioStream" uid="uid://6oahn2ucxxjv" path="res://assets/third_party/nepalese_hand_bells/handBells-g4.ogg" id="11_1leum"] -[ext_resource type="Texture2D" uid="uid://bppqn0ppc2sak" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png" id="11_p0bkw"] +[ext_resource type="Texture2D" uid="uid://bppqn0ppc2sak" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Guardia_minijuego3.png" id="11_p0bkw"] +[ext_resource type="AudioStream" uid="uid://bvgb768sririk" path="res://assets/third_party/nepalese_hand_bells/handBells-f#4.ogg" id="11_vel5v"] [ext_resource type="AudioStream" uid="uid://bdboi4ndapqec" path="res://assets/third_party/nepalese_hand_bells/handBells-a4.ogg" id="12_2bc3v"] -[ext_resource type="Texture2D" uid="uid://tutgft3mg0ik" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png" id="12_f2qw8"] -[ext_resource type="Texture2D" uid="uid://cilagj0wadfet" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png" id="13_eb3eo"] -[ext_resource type="AudioStream" uid="uid://cu5wkx8t4dlj2" path="res://scenes/quests/story_quests/wizzy_quest/Musica/TownTheme.mp3" id="13_maes3"] -[ext_resource type="SpriteFrames" uid="uid://cs30ce3ijcp2e" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.tres" id="14_uvao7"] -[ext_resource type="SpriteFrames" uid="uid://m1prpwp3v5nb" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign_2.tres" id="16_wwgta"] +[ext_resource type="Texture2D" uid="uid://tutgft3mg0ik" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado1.png" id="12_f2qw8"] +[ext_resource type="Texture2D" uid="uid://cilagj0wadfet" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/guardiavolteado2.png" id="13_eb3eo"] +[ext_resource type="SpriteFrames" uid="uid://cs30ce3ijcp2e" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign.tres" id="14_uvao7"] +[ext_resource type="SpriteFrames" uid="uid://m1prpwp3v5nb" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign_2.tres" id="16_wwgta"] [ext_resource type="PackedScene" uid="uid://fuhl3l6gxq5k" path="res://scenes/game_elements/props/collectible_item/collectible_item.tscn" id="19_qse1j"] [ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="20_j4pla"] -[ext_resource type="Resource" uid="uid://t8ki7hxqccco" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sequence_puzzle.dialogue" id="21_eovs1"] +[ext_resource type="Resource" uid="uid://t8ki7hxqccco" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sequence_puzzle.dialogue" id="21_eovs1"] [ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="22_vwra0"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="33_h8wpy"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="34_urqxy"] +[ext_resource type="Script" uid="uid://c8405c212rbn6" path="res://scenes/game_elements/props/background_music/components/background_music.gd" id="35_vel5v"] +[ext_resource type="AudioStream" uid="uid://ddhhyo7lojhuu" path="res://scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg" id="36_vel5v"] [sub_resource type="Resource" id="Resource_lyrk4"] script = ExtResource("20_j4pla") @@ -96,6 +98,10 @@ animations = [{ [node name="SequencePuzzleTemplate" type="Node2D" unique_id=472284115] +[node name="PlayerMode" type="Node" parent="." unique_id=308157333] +script = ExtResource("1_pmur2") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="TileMapLayers" type="Node2D" parent="." unique_id=345464982] [node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=1376759918] @@ -125,39 +131,39 @@ y_sort_enabled = true position = Vector2(356, 453) [node name="Blue" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1714110091 instance=ExtResource("5_a4p44")] -modulate = Color(0, 0.4, 0.6, 1) position = Vector2(417, 364) sprite_frames = ExtResource("6_ex0e8") +sprite_modulate = Color(0, 0.4, 0.6, 1) audio_stream = ExtResource("7_laaar") [node name="Pink" parent="OnTheGround/SequencePuzzle/Objects" unique_id=26079988 instance=ExtResource("5_a4p44")] -modulate = Color(0.89, 0.2937, 0.804817, 1) position = Vector2(636, 370) sprite_frames = ExtResource("6_ex0e8") +sprite_modulate = Color(0.89, 0.2937, 0.804817, 1) audio_stream = ExtResource("8_usl7p") [node name="Yellow" parent="OnTheGround/SequencePuzzle/Objects" unique_id=4576570 instance=ExtResource("5_a4p44")] -modulate = Color(0.89, 0.804817, 0.2937, 1) position = Vector2(815, 368) sprite_frames = ExtResource("6_ex0e8") +sprite_modulate = Color(0.89, 0.804817, 0.2937, 1) audio_stream = ExtResource("9_thq1a") [node name="Green" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1858198744 instance=ExtResource("5_a4p44")] -modulate = Color(0.8774063, 0, 0.009362971, 1) position = Vector2(627, 167) sprite_frames = ExtResource("6_ex0e8") -audio_stream = ExtResource("10_v2k26") +sprite_modulate = Color(0.8774063, 0, 0.009362971, 1) +audio_stream = ExtResource("11_vel5v") [node name="Purple" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1368268198 instance=ExtResource("5_a4p44")] -modulate = Color(0.26699603, 0.6539098, 0.40640903, 1) position = Vector2(817, 170) sprite_frames = ExtResource("6_ex0e8") +sprite_modulate = Color(0.26699603, 0.6539098, 0.40640903, 1) audio_stream = ExtResource("11_1leum") [node name="Red" parent="OnTheGround/SequencePuzzle/Objects" unique_id=870925294 instance=ExtResource("5_a4p44")] -modulate = Color(0.87539595, 0.60444057, 0.5018247, 1) position = Vector2(414, 171) sprite_frames = ExtResource("6_ex0e8") +sprite_modulate = Color(0.87539595, 0.60444057, 0.5018247, 1) audio_stream = ExtResource("12_2bc3v") [node name="Signs" type="Node2D" parent="OnTheGround/SequencePuzzle" unique_id=632013650] @@ -234,11 +240,6 @@ autoplay = "default" frame = 2 frame_progress = 0.5697749 -[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="OnTheGround" unique_id=355624371] -stream = ExtResource("13_maes3") -volume_db = -10.0 -autoplay = true - [node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=169705098] [node name="HUD" parent="." unique_id=311840103 instance=ExtResource("33_h8wpy")] @@ -254,4 +255,9 @@ script = ExtResource("34_urqxy") dialogue = ExtResource("21_eovs1") metadata/_custom_type_script = "uid://x1mxt6bmei2o" +[node name="BackgroundMusic" type="Node" parent="." unique_id=1409888244] +script = ExtResource("35_vel5v") +stream = ExtResource("36_vel5v") +metadata/_custom_type_script = "uid://c8405c212rbn6" + [connection signal="solved" from="OnTheGround/SequencePuzzle" to="OnTheGround/CollectibleItem" method="reveal"] diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sequence_puzzle.dialogue b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sequence_puzzle.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sequence_puzzle.dialogue rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sequence_puzzle.dialogue diff --git a/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sequence_puzzle.dialogue.import b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sequence_puzzle.dialogue.import new file mode 100644 index 0000000000..2b7dfc6959 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sequence_puzzle.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://t8ki7hxqccco" +path="res://.godot/imported/eldrune_sequence_puzzle.dialogue-e7d1e9224a98583aa8778e93c2f88897.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sequence_puzzle.dialogue" +dest_files=["res://.godot/imported/eldrune_sequence_puzzle.dialogue-e7d1e9224a98583aa8778e93c2f88897.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.tres b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign.tres similarity index 79% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.tres rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign.tres index e070bdf7ae..a7e62a00aa 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.tres +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign.tres @@ -1,9 +1,9 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://cs30ce3ijcp2e"] -[ext_resource type="Texture2D" uid="uid://bq3kh2gtm1mk7" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png" id="1_g4l3d"] -[ext_resource type="Texture2D" uid="uid://c7hg6rdivsrhv" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png" id="2_4mxjw"] -[ext_resource type="Texture2D" uid="uid://uy8xtio15qyr" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png" id="3_g4l3d"] -[ext_resource type="Texture2D" uid="uid://c7o1r1hccpqtv" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png" id="4_eu2yp"] +[ext_resource type="Texture2D" uid="uid://bq3kh2gtm1mk7" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_arpa.png" id="1_g4l3d"] +[ext_resource type="Texture2D" uid="uid://c7hg6rdivsrhv" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/arpa intrumento musical .png" id="2_4mxjw"] +[ext_resource type="Texture2D" uid="uid://uy8xtio15qyr" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl1.png" id="3_g4l3d"] +[ext_resource type="Texture2D" uid="uid://c7o1r1hccpqtv" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I1_arpa_solucionl2.png" id="4_eu2yp"] [sub_resource type="AtlasTexture" id="AtlasTexture_g4l3d"] atlas = ExtResource("1_g4l3d") diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign_2.tres b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign_2.tres similarity index 83% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign_2.tres rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign_2.tres index a3b0b6c622..5bc622a3e4 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign_2.tres +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign_2.tres @@ -1,9 +1,9 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://m1prpwp3v5nb"] -[ext_resource type="Texture2D" uid="uid://6k8hut7j4kse" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampoña.png" id="1_8yhyl"] -[ext_resource type="Texture2D" uid="uid://b2mvaokstvwhh" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/sampoña intrumeto musical .png" id="2_2krir"] -[ext_resource type="Texture2D" uid="uid://ccfhot10c01l" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampoña_solucion1.png" id="3_8yhyl"] -[ext_resource type="Texture2D" uid="uid://b4mni5b2teo0" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I3_sampoña_solucion2.png" id="4_smjs3"] +[ext_resource type="Texture2D" uid="uid://6k8hut7j4kse" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_sampoña.png" id="1_8yhyl"] +[ext_resource type="Texture2D" uid="uid://b2mvaokstvwhh" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/sampoña intrumeto musical .png" id="2_2krir"] +[ext_resource type="Texture2D" uid="uid://ccfhot10c01l" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampoña_solucion1.png" id="3_8yhyl"] +[ext_resource type="Texture2D" uid="uid://b4mni5b2teo0" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I3_sampoña_solucion2.png" id="4_smjs3"] [sub_resource type="AtlasTexture" id="AtlasTexture_smjs3"] atlas = ExtResource("1_8yhyl") diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign_3.tres b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign_3.tres similarity index 86% rename from scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign_3.tres rename to scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign_3.tres index 91151f5a7b..290ffb0067 100644 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign_3.tres +++ b/scenes/quests/story_quests/eldrune/3_sequence_puzzle/eldrune_sign_3.tres @@ -1,9 +1,9 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://ciplxknjgb3by"] -[ext_resource type="Texture2D" uid="uid://bff16oy75sdsm" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png" id="1_t8usc"] -[ext_resource type="Texture2D" uid="uid://4j4any6raada" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png" id="2_t8usc"] -[ext_resource type="Texture2D" uid="uid://cd5ooo2n0kng3" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png" id="3_mglkb"] -[ext_resource type="Texture2D" uid="uid://c08j0kuftdp2x" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png" id="4_8gtbs"] +[ext_resource type="Texture2D" uid="uid://bff16oy75sdsm" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/Reproduccion_lira.png" id="1_t8usc"] +[ext_resource type="Texture2D" uid="uid://4j4any6raada" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/lira dorada intrumento musical.png" id="2_t8usc"] +[ext_resource type="Texture2D" uid="uid://cd5ooo2n0kng3" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion1.png" id="3_mglkb"] +[ext_resource type="Texture2D" uid="uid://c08j0kuftdp2x" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/I2_liradorada_solucion2.png" id="4_8gtbs"] [sub_resource type="AtlasTexture" id="AtlasTexture_e1stp"] atlas = ExtResource("1_t8usc") diff --git a/scenes/quests/story_quests/wizzy_quest/4_outro/wizzy_quest_outro.tscn b/scenes/quests/story_quests/eldrune/4_outro/eldrune_outro.tscn similarity index 81% rename from scenes/quests/story_quests/wizzy_quest/4_outro/wizzy_quest_outro.tscn rename to scenes/quests/story_quests/eldrune/4_outro/eldrune_outro.tscn index 82054d8247..161d2314e9 100644 --- a/scenes/quests/story_quests/wizzy_quest/4_outro/wizzy_quest_outro.tscn +++ b/scenes/quests/story_quests/eldrune/4_outro/eldrune_outro.tscn @@ -1,11 +1,12 @@ [gd_scene format=4 uid="uid://d2ao3ikovpb26"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="1_jgatn"] -[ext_resource type="TileSet" uid="uid://kfeh06bf30lu" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_main_tileset.tres" id="2_f6n73"] -[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player.tres" id="3_th1v8"] -[ext_resource type="AudioStream" uid="uid://dhwko1x6tfuvu" path="res://scenes/quests/story_quests/wizzy_quest/Musica/Memoraphile - Up in the Sky.mp3" id="4_f6n73"] +[ext_resource type="TileSet" uid="uid://kfeh06bf30lu" path="res://scenes/quests/story_quests/eldrune/eldrune_main_tileset.tres" id="2_f6n73"] +[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/eldrune/player_components/eldrune_player.tres" id="3_th1v8"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="4_lc4pr"] -[ext_resource type="Resource" uid="uid://b560x2686htil" path="res://scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/wizzy_quest_outro.dialogue" id="5_kf28u"] +[ext_resource type="Resource" uid="uid://b560x2686htil" path="res://scenes/quests/story_quests/eldrune/4_outro/outro_components/eldrune_outro.dialogue" id="5_kf28u"] +[ext_resource type="Script" uid="uid://c8405c212rbn6" path="res://scenes/game_elements/props/background_music/components/background_music.gd" id="6_dpn8c"] +[ext_resource type="AudioStream" uid="uid://dc41y1tihki78" path="res://scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg" id="7_7cni0"] [node name="Outro" type="Node2D" unique_id=1203398884] @@ -38,10 +39,6 @@ sprite_frames = ExtResource("3_th1v8") animation = &"idle" autoplay = "idle" -[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="OnTheGround" unique_id=2105240606] -stream = ExtResource("4_f6n73") -autoplay = true - [node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1410265990] [node name="Cinematic" type="Node2D" parent="." unique_id=705688625] @@ -49,3 +46,8 @@ script = ExtResource("4_lc4pr") dialogue = ExtResource("5_kf28u") next_scene = "uid://cufkthb25mpxy" metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="BackgroundMusic" type="Node" parent="." unique_id=426613615] +script = ExtResource("6_dpn8c") +stream = ExtResource("7_7cni0") +metadata/_custom_type_script = "uid://c8405c212rbn6" diff --git a/scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png b/scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png rename to scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png diff --git a/scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png.import b/scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png.import rename to scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png.import index 6c47ae6286..ff875ca80c 100644 --- a/scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png.import +++ b/scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ii3q20xe34j3" -path="res://.godot/imported/Adorno2_minijuego1.png-2586a0992eaf4c9bdc0e1d90696aa1f1.ctex" +path="res://.godot/imported/Adorno2_minijuego1.png-263cf106c7a7e0313d41385bd059d76d.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png" -dest_files=["res://.godot/imported/Adorno2_minijuego1.png-2586a0992eaf4c9bdc0e1d90696aa1f1.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Adorno2_minijuego1.png" +dest_files=["res://.godot/imported/Adorno2_minijuego1.png-263cf106c7a7e0313d41385bd059d76d.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png b/scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png rename to scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png diff --git a/scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png.import b/scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png.import rename to scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png.import index f9a8ff6752..d6bb7c5f41 100644 --- a/scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png.import +++ b/scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b0tli7ldgxw40" -path="res://.godot/imported/Fondooutri.png-62154ec4ef4bc035e09654d5c8352a76.ctex" +path="res://.godot/imported/Fondooutri.png-8c21a9d0e67ea2102671b9f75acd0f51.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png" -dest_files=["res://.godot/imported/Fondooutri.png-62154ec4ef4bc035e09654d5c8352a76.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png" +dest_files=["res://.godot/imported/Fondooutri.png-8c21a9d0e67ea2102671b9f75acd0f51.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/wizzy_quest_outro.dialogue b/scenes/quests/story_quests/eldrune/4_outro/outro_components/eldrune_outro.dialogue similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/wizzy_quest_outro.dialogue rename to scenes/quests/story_quests/eldrune/4_outro/outro_components/eldrune_outro.dialogue diff --git a/scenes/quests/story_quests/eldrune/4_outro/outro_components/eldrune_outro.dialogue.import b/scenes/quests/story_quests/eldrune/4_outro/outro_components/eldrune_outro.dialogue.import new file mode 100644 index 0000000000..40ca2faaa1 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/4_outro/outro_components/eldrune_outro.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://b560x2686htil" +path="res://.godot/imported/eldrune_outro.dialogue-e10858aad8ec8a9a527b5881813e3931.tres" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/4_outro/outro_components/eldrune_outro.dialogue" +dest_files=["res://.godot/imported/eldrune_outro.dialogue-e10858aad8ec8a9a527b5881813e3931.tres"] + +[params] + +defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/Construction.mp3 b/scenes/quests/story_quests/eldrune/Musica/Construction.mp3 similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/Musica/Construction.mp3 rename to scenes/quests/story_quests/eldrune/Musica/Construction.mp3 diff --git a/scenes/quests/story_quests/eldrune/Musica/Construction.mp3.import b/scenes/quests/story_quests/eldrune/Musica/Construction.mp3.import new file mode 100644 index 0000000000..04ae9a3ef4 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Construction.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://da0ptap0tsujw" +path="res://.godot/imported/Construction.mp3-3147c8ac79389b48d41069c96f351aaa.mp3str" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/Musica/Construction.mp3" +dest_files=["res://.godot/imported/Construction.mp3-3147c8ac79389b48d41069c96f351aaa.mp3str"] + +[params] + +loop=true +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/eldrune/Musica/Construction.mp3.license b/scenes/quests/story_quests/eldrune/Musica/Construction.mp3.license new file mode 100644 index 0000000000..b8fb44d949 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Construction.mp3.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2010 pauliuw +SPDX-License-Identifier: CC0-1.0 + +https://opengameart.org/content/action-sounds diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/Fantasy Choir 3.mp3 b/scenes/quests/story_quests/eldrune/Musica/Fantasy Choir 3.mp3 similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/Musica/Fantasy Choir 3.mp3 rename to scenes/quests/story_quests/eldrune/Musica/Fantasy Choir 3.mp3 diff --git a/scenes/quests/story_quests/eldrune/Musica/Fantasy Choir 3.mp3.import b/scenes/quests/story_quests/eldrune/Musica/Fantasy Choir 3.mp3.import new file mode 100644 index 0000000000..8770d24378 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Fantasy Choir 3.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://b5d1eexymi57m" +path="res://.godot/imported/Fantasy Choir 3.mp3-07ae4bccd4ebf03d9cb14f6d15ad40c2.mp3str" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/Musica/Fantasy Choir 3.mp3" +dest_files=["res://.godot/imported/Fantasy Choir 3.mp3-07ae4bccd4ebf03d9cb14f6d15ad40c2.mp3str"] + +[params] + +loop=true +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/eldrune/Musica/Fantasy Choir 3.mp3.license b/scenes/quests/story_quests/eldrune/Musica/Fantasy Choir 3.mp3.license new file mode 100644 index 0000000000..23e3ab6f38 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Fantasy Choir 3.mp3.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: César da Rocha +SPDX-License-Identifier: CC0-1.0 + +https://opengameart.org/content/fantasy-choir-3-orchestral-pieces diff --git a/scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg b/scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg new file mode 100644 index 0000000000..c29a2fd179 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21b2832b4fd69998ab9ff648ce199c255d3b762aaae562fa911f3d925642c565 +size 2407631 diff --git a/scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg.import b/scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg.import new file mode 100644 index 0000000000..3e457d8eb0 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dc41y1tihki78" +path="res://.godot/imported/Memoraphile - Up in the Sky.ogg-cb8e2f8cd863e46139cc3d0f1be9f096.oggvorbisstr" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg" +dest_files=["res://.godot/imported/Memoraphile - Up in the Sky.ogg-cb8e2f8cd863e46139cc3d0f1be9f096.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg.license b/scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg.license new file mode 100644 index 0000000000..84eeda676c --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Memoraphile - Up in the Sky.ogg.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: Memoraphile @ You're Perfect Studio +SPDX-License-Identifier: CC0-1.0 + +https://opengameart.org/content/up-in-the-sky diff --git a/scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg b/scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg new file mode 100644 index 0000000000..8884f64105 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6627cde3c2ef7b8c9797e4305e02482a8e595c1f4b7fd106d5ff344f4bdf0665 +size 1818814 diff --git a/scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg.import b/scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg.import new file mode 100644 index 0000000000..5513decbc2 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://cbk3756m7uhuy" +path="res://.godot/imported/Minstrel_Dance.ogg-1da7c8526cfeca17ff6c99543e9b29c2.oggvorbisstr" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg" +dest_files=["res://.godot/imported/Minstrel_Dance.ogg-1da7c8526cfeca17ff6c99543e9b29c2.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=130.0 +beat_count=0 +bar_beats=3 diff --git a/scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg.license b/scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg.license new file mode 100644 index 0000000000..69292eed0e --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Minstrel_Dance.ogg.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: RandomMind +SPDX-License-Identifier: CC0-1.0 + +https://opengameart.org/content/medieval-minstrel-dance diff --git a/scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg b/scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg new file mode 100644 index 0000000000..e577b3c224 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc64cab77423d6f6fc8322f883bad7b7980b4496f7b7b8a8582543fa5c9cf52f +size 1136407 diff --git a/scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg.import b/scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg.import new file mode 100644 index 0000000000..f8c3aa0b2b --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://ddhhyo7lojhuu" +path="res://.godot/imported/TownTheme.ogg-bc4086e0b1c5c91ce688c40568db8b3c.oggvorbisstr" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg" +dest_files=["res://.godot/imported/TownTheme.ogg-bc4086e0b1c5c91ce688c40568db8b3c.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg.license b/scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg.license new file mode 100644 index 0000000000..bb67d2a8e2 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/TownTheme.ogg.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: cynicmusic.com pixelsphere.org +SPDX-License-Identifier: CC0-1.0 + +https://opengameart.org/content/town-theme-rpg diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/Win sound.mp3 b/scenes/quests/story_quests/eldrune/Musica/Win sound.mp3 similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/Musica/Win sound.mp3 rename to scenes/quests/story_quests/eldrune/Musica/Win sound.mp3 diff --git a/scenes/quests/story_quests/eldrune/Musica/Win sound.mp3.import b/scenes/quests/story_quests/eldrune/Musica/Win sound.mp3.import new file mode 100644 index 0000000000..8bdc021527 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Win sound.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://bu56362rlkk3r" +path="res://.godot/imported/Win sound.mp3-4c45dadce256c1bfa77d3a84cd6720e4.mp3str" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/Musica/Win sound.mp3" +dest_files=["res://.godot/imported/Win sound.mp3-4c45dadce256c1bfa77d3a84cd6720e4.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/eldrune/Musica/Win sound.mp3.license b/scenes/quests/story_quests/eldrune/Musica/Win sound.mp3.license new file mode 100644 index 0000000000..fcb819333c --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/Win sound.mp3.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: listener4me / Mariia Zhulanova +SPDX-License-Identifier: CC0-1.0 + +https://opengameart.org/content/win-sound-effect diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/gravel.ogg b/scenes/quests/story_quests/eldrune/Musica/gravel.ogg similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/Musica/gravel.ogg rename to scenes/quests/story_quests/eldrune/Musica/gravel.ogg diff --git a/scenes/quests/story_quests/eldrune/Musica/gravel.ogg.import b/scenes/quests/story_quests/eldrune/Musica/gravel.ogg.import new file mode 100644 index 0000000000..1d170138aa --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/gravel.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://cf5mt3dlgmhoo" +path="res://.godot/imported/gravel.ogg-1858064d14054e569bfe2a65e123213f.oggvorbisstr" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/Musica/gravel.ogg" +dest_files=["res://.godot/imported/gravel.ogg-1858064d14054e569bfe2a65e123213f.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/eldrune/Musica/gravel.ogg.license b/scenes/quests/story_quests/eldrune/Musica/gravel.ogg.license new file mode 100644 index 0000000000..f7bf049bb3 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/gravel.ogg.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: TinyWorlds +SPDX-License-Identifier: CC0-1.0 + +https://opengameart.org/content/different-steps-on-wood-stone-leaves-gravel-and-mud diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/opening_theme.mp3 b/scenes/quests/story_quests/eldrune/Musica/opening_theme.mp3 similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/Musica/opening_theme.mp3 rename to scenes/quests/story_quests/eldrune/Musica/opening_theme.mp3 diff --git a/scenes/quests/story_quests/eldrune/Musica/opening_theme.mp3.import b/scenes/quests/story_quests/eldrune/Musica/opening_theme.mp3.import new file mode 100644 index 0000000000..e91fdc143c --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/opening_theme.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://cksommwm3nvko" +path="res://.godot/imported/opening_theme.mp3-6249a82e880283cdf8dec45cb83b4aff.mp3str" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/Musica/opening_theme.mp3" +dest_files=["res://.godot/imported/opening_theme.mp3-6249a82e880283cdf8dec45cb83b4aff.mp3str"] + +[params] + +loop=true +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/eldrune/Musica/opening_theme.mp3.license b/scenes/quests/story_quests/eldrune/Musica/opening_theme.mp3.license new file mode 100644 index 0000000000..e4290359e0 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/opening_theme.mp3.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: nene +SPDX-License-Identifier: CC0-1.0 + +https://opengameart.org/content/opening-theme-actionsuspense diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/qubodupImpactMeat01.ogg b/scenes/quests/story_quests/eldrune/Musica/qubodupImpactMeat01.ogg similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/Musica/qubodupImpactMeat01.ogg rename to scenes/quests/story_quests/eldrune/Musica/qubodupImpactMeat01.ogg diff --git a/scenes/quests/story_quests/eldrune/Musica/qubodupImpactMeat01.ogg.import b/scenes/quests/story_quests/eldrune/Musica/qubodupImpactMeat01.ogg.import new file mode 100644 index 0000000000..d571cf0d49 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/qubodupImpactMeat01.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bpbgs3ewtm5xt" +path="res://.godot/imported/qubodupImpactMeat01.ogg-c926c692636b3941329839a306c537e1.oggvorbisstr" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/Musica/qubodupImpactMeat01.ogg" +dest_files=["res://.godot/imported/qubodupImpactMeat01.ogg-c926c692636b3941329839a306c537e1.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/eldrune/Musica/qubodupImpactMeat01.ogg.license b/scenes/quests/story_quests/eldrune/Musica/qubodupImpactMeat01.ogg.license new file mode 100644 index 0000000000..c58e215620 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/qubodupImpactMeat01.ogg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: qubodup aka Iwan Gabovitch | qubodup@gmail.com +SPDX-License-Identifier: CC0-1.0 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/stone01.ogg b/scenes/quests/story_quests/eldrune/Musica/stone01.ogg similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/Musica/stone01.ogg rename to scenes/quests/story_quests/eldrune/Musica/stone01.ogg diff --git a/scenes/quests/story_quests/eldrune/Musica/stone01.ogg.import b/scenes/quests/story_quests/eldrune/Musica/stone01.ogg.import new file mode 100644 index 0000000000..cd738df0bd --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/stone01.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://b8c84emih5wu1" +path="res://.godot/imported/stone01.ogg-67b62913a341be987f9e8c4afc01fb15.oggvorbisstr" + +[deps] + +source_file="res://scenes/quests/story_quests/eldrune/Musica/stone01.ogg" +dest_files=["res://.godot/imported/stone01.ogg-67b62913a341be987f9e8c4afc01fb15.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/scenes/quests/story_quests/eldrune/Musica/stone01.ogg.license b/scenes/quests/story_quests/eldrune/Musica/stone01.ogg.license new file mode 100644 index 0000000000..f7bf049bb3 --- /dev/null +++ b/scenes/quests/story_quests/eldrune/Musica/stone01.ogg.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: TinyWorlds +SPDX-License-Identifier: CC0-1.0 + +https://opengameart.org/content/different-steps-on-wood-stone-leaves-gravel-and-mud diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Appear.png b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Appear.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Appear.png rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Appear.png diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Appear.png.import b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Appear.png.import similarity index 72% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Appear.png.import rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Appear.png.import index ea7a2da28f..e48d785cef 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Appear.png.import +++ b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Appear.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b004algjmtcs4" -path="res://.godot/imported/Knitwitch_Appear.png-61b4971501c30fcbbb5ea29a56730f7d.ctex" +path="res://.godot/imported/Knitwitch_Appear.png-ba7dee301a529cd84184d1615af072f8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Appear.png" -dest_files=["res://.godot/imported/Knitwitch_Appear.png-61b4971501c30fcbbb5ea29a56730f7d.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Appear.png" +dest_files=["res://.godot/imported/Knitwitch_Appear.png-ba7dee301a529cd84184d1615af072f8.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Idle.png b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Idle.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Idle.png rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Idle.png diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Idle.png.import b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Idle.png.import similarity index 72% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Idle.png.import rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Idle.png.import index 031bed4ebe..94a440e3d8 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Idle.png.import +++ b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Idle.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://brcupfcahsjoq" -path="res://.godot/imported/Knitwitch_Idle.png-950cecaa2b27cf70242514c5eade9580.ctex" +path="res://.godot/imported/Knitwitch_Idle.png-36313cdca384f4a04ad67b6ffe22d1d5.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Knitwitch_Idle.png" -dest_files=["res://.godot/imported/Knitwitch_Idle.png-950cecaa2b27cf70242514c5eade9580.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Knitwitch_Idle.png" +dest_files=["res://.godot/imported/Knitwitch_Idle.png-36313cdca384f4a04ad67b6ffe22d1d5.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_Appear.png b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_Appear.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_Appear.png rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_Appear.png diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_Appear.png.import b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_Appear.png.import similarity index 72% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_Appear.png.import rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_Appear.png.import index 3de4033576..46734e77dc 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_Appear.png.import +++ b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_Appear.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bissfwumsuf3i" -path="res://.godot/imported/Witch_Appear.png-2fe547c7743f2726c13f86eee9a8f43d.ctex" +path="res://.godot/imported/Witch_Appear.png-29691441715d2c37435f311f21b1891e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_Appear.png" -dest_files=["res://.godot/imported/Witch_Appear.png-2fe547c7743f2726c13f86eee9a8f43d.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_Appear.png" +dest_files=["res://.godot/imported/Witch_Appear.png-29691441715d2c37435f311f21b1891e.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle1.png b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle1.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle1.png rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle1.png diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle1.png.import b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle1.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle1.png.import rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle1.png.import index a37442e5cd..eeb407ee4c 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle1.png.import +++ b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bl3gmrj7wlw4a" -path="res://.godot/imported/Witch_musician_idle1.png-738a2d359b9c6809987239d017029a34.ctex" +path="res://.godot/imported/Witch_musician_idle1.png-00c10fb8160f90ce40dd1e8460a2d208.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle1.png" -dest_files=["res://.godot/imported/Witch_musician_idle1.png-738a2d359b9c6809987239d017029a34.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle1.png" +dest_files=["res://.godot/imported/Witch_musician_idle1.png-00c10fb8160f90ce40dd1e8460a2d208.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle2.png b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle2.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle2.png rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle2.png diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle2.png.import b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle2.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle2.png.import rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle2.png.import index a676498b3c..901e5f8e0e 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle2.png.import +++ b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://67safv2hi61p" -path="res://.godot/imported/Witch_musician_idle2.png-fed0a84db30599a6956913b7d20cdc77.ctex" +path="res://.godot/imported/Witch_musician_idle2.png-e6b912365d5a203026ed70fed4a7bf7d.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle2.png" -dest_files=["res://.godot/imported/Witch_musician_idle2.png-fed0a84db30599a6956913b7d20cdc77.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle2.png" +dest_files=["res://.godot/imported/Witch_musician_idle2.png-e6b912365d5a203026ed70fed4a7bf7d.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle3.png b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle3.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle3.png rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle3.png diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle3.png.import b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle3.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle3.png.import rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle3.png.import index e592c9c21e..640ea30361 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle3.png.import +++ b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle3.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bvonp8npcasoy" -path="res://.godot/imported/Witch_musician_idle3.png-43d009903d805fc13728d27f7b7d5ae4.ctex" +path="res://.godot/imported/Witch_musician_idle3.png-d124d5e8a34221b6e4fbd512210d15c4.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle3.png" -dest_files=["res://.godot/imported/Witch_musician_idle3.png-43d009903d805fc13728d27f7b7d5ae4.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle3.png" +dest_files=["res://.godot/imported/Witch_musician_idle3.png-d124d5e8a34221b6e4fbd512210d15c4.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle4.png b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle4.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle4.png rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle4.png diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle4.png.import b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle4.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle4.png.import rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle4.png.import index fc11b60998..99b804e630 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle4.png.import +++ b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle4.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b54n5m3mub47c" -path="res://.godot/imported/Witch_musician_idle4.png-67f03d8ec340e8fd1af9958c8f835556.ctex" +path="res://.godot/imported/Witch_musician_idle4.png-257c3553fda19b73b90c87b94be6ab4c.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle4.png" -dest_files=["res://.godot/imported/Witch_musician_idle4.png-67f03d8ec340e8fd1af9958c8f835556.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle4.png" +dest_files=["res://.godot/imported/Witch_musician_idle4.png-257c3553fda19b73b90c87b94be6ab4c.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle5.png b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle5.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle5.png rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle5.png diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle5.png.import b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle5.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle5.png.import rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle5.png.import index aa522fe02e..4b9550df65 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle5.png.import +++ b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle5.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b8j6d4old8oai" -path="res://.godot/imported/Witch_musician_idle5.png-a246155f5ba101e074408f354f39b024.ctex" +path="res://.godot/imported/Witch_musician_idle5.png-6c0b5d148b6f18cbd1c63f55796ccf05.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle5.png" -dest_files=["res://.godot/imported/Witch_musician_idle5.png-a246155f5ba101e074408f354f39b024.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle5.png" +dest_files=["res://.godot/imported/Witch_musician_idle5.png-6c0b5d148b6f18cbd1c63f55796ccf05.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/wizzy_knitwitch_frames_purple.tres b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/eldrune_knitwitch_frames_purple.tres similarity index 81% rename from scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/wizzy_knitwitch_frames_purple.tres rename to scenes/quests/story_quests/eldrune/eldrune_checkpoint/eldrune_knitwitch_frames_purple.tres index cb19133849..41ede3543e 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/wizzy_knitwitch_frames_purple.tres +++ b/scenes/quests/story_quests/eldrune/eldrune_checkpoint/eldrune_knitwitch_frames_purple.tres @@ -1,12 +1,12 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://cal8squrkef"] [ext_resource type="Texture2D" uid="uid://bk4w7fw4mg131" path="res://scenes/game_elements/props/checkpoint/components/Purple/Knitwitch_Appear.png" id="1_jxv7d"] -[ext_resource type="Texture2D" uid="uid://bissfwumsuf3i" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_Appear.png" id="2_omvqk"] -[ext_resource type="Texture2D" uid="uid://bl3gmrj7wlw4a" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle1.png" id="3_6y7kk"] -[ext_resource type="Texture2D" uid="uid://67safv2hi61p" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle2.png" id="4_ar6a7"] -[ext_resource type="Texture2D" uid="uid://bvonp8npcasoy" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle3.png" id="5_58sm0"] -[ext_resource type="Texture2D" uid="uid://b54n5m3mub47c" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle4.png" id="6_gls3y"] -[ext_resource type="Texture2D" uid="uid://b8j6d4old8oai" path="res://scenes/quests/story_quests/wizzy_quest/wizzy_checkpoint/Witch_musician_idle5.png" id="7_nuhuo"] +[ext_resource type="Texture2D" uid="uid://bissfwumsuf3i" path="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_Appear.png" id="2_omvqk"] +[ext_resource type="Texture2D" uid="uid://bl3gmrj7wlw4a" path="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle1.png" id="3_6y7kk"] +[ext_resource type="Texture2D" uid="uid://67safv2hi61p" path="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle2.png" id="4_ar6a7"] +[ext_resource type="Texture2D" uid="uid://bvonp8npcasoy" path="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle3.png" id="5_58sm0"] +[ext_resource type="Texture2D" uid="uid://b54n5m3mub47c" path="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle4.png" id="6_gls3y"] +[ext_resource type="Texture2D" uid="uid://b8j6d4old8oai" path="res://scenes/quests/story_quests/eldrune/eldrune_checkpoint/Witch_musician_idle5.png" id="7_nuhuo"] [sub_resource type="AtlasTexture" id="AtlasTexture_5080t"] atlas = ExtResource("1_jxv7d") diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_main_tileset.tres b/scenes/quests/story_quests/eldrune/eldrune_main_tileset.tres similarity index 98% rename from scenes/quests/story_quests/wizzy_quest/wizzy_main_tileset.tres rename to scenes/quests/story_quests/eldrune/eldrune_main_tileset.tres index 6fb9297a12..276b26db25 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_main_tileset.tres +++ b/scenes/quests/story_quests/eldrune/eldrune_main_tileset.tres @@ -11,16 +11,16 @@ [ext_resource type="Texture2D" uid="uid://d0156jkhip32" path="res://assets/first_party/tiles/Void_Tiles_Chromakey.png" id="6_qhdiu"] [ext_resource type="Texture2D" uid="uid://pkm6smjl8861" path="res://assets/first_party/tiles/Grass_Tiles_Light.png" id="6_yc5yt"] [ext_resource type="Texture2D" uid="uid://dcq6v7mx3h1fl" path="res://assets/first_party/tiles/Dirt_Tiles.png" id="7_1srhd"] -[ext_resource type="Texture2D" uid="uid://5nqyuaxxtyyi" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lavastone.png" id="7_qwkka"] -[ext_resource type="Texture2D" uid="uid://px6v3fuo0o2a" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/stone (1).png" id="7_rtrav"] -[ext_resource type="Texture2D" uid="uid://b2cxbx3tr56ow" path="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png" id="7_rtvgy"] +[ext_resource type="Texture2D" uid="uid://5nqyuaxxtyyi" path="res://scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lavastone.png" id="7_qwkka"] +[ext_resource type="Texture2D" uid="uid://px6v3fuo0o2a" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/stone (1).png" id="7_rtrav"] +[ext_resource type="Texture2D" uid="uid://b2cxbx3tr56ow" path="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/Fuente_intro.png" id="7_rtvgy"] [ext_resource type="Texture2D" uid="uid://cledckq31klvq" path="res://assets/first_party/tiles/Cliff_Mines_Tiles.png" id="8_l50s2"] [ext_resource type="Texture2D" uid="uid://r7scukca5yro" path="res://assets/first_party/tiles/Void_Tiles_Empty.png" id="9_hqjx3"] -[ext_resource type="Texture2D" uid="uid://5hg6knr8csmc" path="res://scenes/quests/story_quests/wizzy_quest/2_combat/Fondo y adornos/lava.png" id="9_n0usd"] -[ext_resource type="Texture2D" uid="uid://b5xsdc7856p50" path="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png" id="9_nwor3"] +[ext_resource type="Texture2D" uid="uid://5hg6knr8csmc" path="res://scenes/quests/story_quests/eldrune/2_combat/Fondo y adornos/lava.png" id="9_n0usd"] +[ext_resource type="Texture2D" uid="uid://b5xsdc7856p50" path="res://scenes/quests/story_quests/eldrune/0_intro/intro_components/Fondo_y_adornos/tumba_intro.png" id="9_nwor3"] [ext_resource type="Texture2D" uid="uid://cn2j018vohdap" path="res://assets/first_party/tiles/Void_Tiles_Stars_Level1.png" id="10_kbenk"] -[ext_resource type="Texture2D" uid="uid://ducaac04xxhjd" path="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png" id="10_nwor3"] -[ext_resource type="Texture2D" uid="uid://b0tli7ldgxw40" path="res://scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png" id="11_b6t53"] +[ext_resource type="Texture2D" uid="uid://ducaac04xxhjd" path="res://scenes/quests/story_quests/eldrune/3_sequence_puzzle/Adornos_y_animaciones/FONDO MARINO.png" id="10_nwor3"] +[ext_resource type="Texture2D" uid="uid://b0tli7ldgxw40" path="res://scenes/quests/story_quests/eldrune/4_outro/outro_components/Fondo_y_adornos/Fondooutri.png" id="11_b6t53"] [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) diff --git a/scenes/quests/story_quests/wizzy_quest/wizzy_tileset.tres b/scenes/quests/story_quests/eldrune/eldrune_tileset.tres similarity index 96% rename from scenes/quests/story_quests/wizzy_quest/wizzy_tileset.tres rename to scenes/quests/story_quests/eldrune/eldrune_tileset.tres index f9ab21fbe9..e678c5377b 100644 --- a/scenes/quests/story_quests/wizzy_quest/wizzy_tileset.tres +++ b/scenes/quests/story_quests/eldrune/eldrune_tileset.tres @@ -6,33 +6,33 @@ [ext_resource type="Texture2D" uid="uid://td3y2vjom24f" path="res://assets/first_party/tiles/Void_Tiles_Stars_Level3.png" id="4_jjs4u"] [ext_resource type="Texture2D" uid="uid://brnsfo2pejt7i" path="res://assets/first_party/tiles/Void_Tiles_Stars_Level4.png" id="5_qeo4k"] [ext_resource type="Texture2D" uid="uid://d0156jkhip32" path="res://assets/first_party/tiles/Void_Tiles_Chromakey.png" id="6_uwnpm"] -[ext_resource type="Texture2D" uid="uid://3n1lx6u1lv1i" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Titleset_suelo_minijuego1.png" id="7_a5hdt"] +[ext_resource type="Texture2D" uid="uid://3n1lx6u1lv1i" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Titleset_suelo_minijuego1.png" id="7_a5hdt"] [ext_resource type="Texture2D" uid="uid://cexg7otw5enpu" path="res://assets/third_party/tiny-swords/Terrain/Water/Foam/Foam.png" id="7_lo0un"] -[ext_resource type="Texture2D" uid="uid://dbefu0c4j8bm1" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Titleset_suelo2_minijuego1.png" id="8_5417a"] +[ext_resource type="Texture2D" uid="uid://dbefu0c4j8bm1" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Titleset_suelo2_minijuego1.png" id="8_5417a"] [ext_resource type="Texture2D" uid="uid://cnmmh3uq7rkla" path="res://assets/third_party/tiny-swords/Terrain/Bridge/Bridge_All.png" id="8_hxcta"] -[ext_resource type="Texture2D" uid="uid://c2cbps6x1tsuw" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/titleset_adorno_minijuego1.png" id="9_8sfwj"] +[ext_resource type="Texture2D" uid="uid://c2cbps6x1tsuw" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/titleset_adorno_minijuego1.png" id="9_8sfwj"] [ext_resource type="Texture2D" uid="uid://c7oht7wudd8wa" path="res://assets/first_party/tiles/Cliff_Tiles.png" id="9_32kyh"] -[ext_resource type="Texture2D" uid="uid://c1xtp172tf37b" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Adorno1_minijuego1.png" id="10_1sc2o"] +[ext_resource type="Texture2D" uid="uid://c1xtp172tf37b" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Adorno1_minijuego1.png" id="10_1sc2o"] [ext_resource type="Texture2D" uid="uid://pkm6smjl8861" path="res://assets/first_party/tiles/Grass_Tiles_Light.png" id="10_8dm1x"] [ext_resource type="Texture2D" uid="uid://dcq6v7mx3h1fl" path="res://assets/first_party/tiles/Dirt_Tiles.png" id="11_ntoyf"] -[ext_resource type="Texture2D" uid="uid://b7xbhj6l7tx4q" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/underwaterstone.png" id="11_s2jst"] -[ext_resource type="Texture2D" uid="uid://cj18ovtdrp1tw" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/crystal stone (1).png" id="12_ucfli"] +[ext_resource type="Texture2D" uid="uid://b7xbhj6l7tx4q" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/underwaterstone.png" id="11_s2jst"] +[ext_resource type="Texture2D" uid="uid://cj18ovtdrp1tw" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/crystal stone (1).png" id="12_ucfli"] [ext_resource type="Texture2D" uid="uid://cledckq31klvq" path="res://assets/first_party/tiles/Cliff_Mines_Tiles.png" id="12_vp1h7"] [ext_resource type="Texture2D" uid="uid://r7scukca5yro" path="res://assets/first_party/tiles/Void_Tiles_Empty.png" id="13_tiw2a"] -[ext_resource type="Texture2D" uid="uid://b0lofa54xt2hj" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/oldstone (1).png" id="14_4di4d"] +[ext_resource type="Texture2D" uid="uid://b0lofa54xt2hj" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/oldstone (1).png" id="14_4di4d"] [ext_resource type="Texture2D" uid="uid://cn2j018vohdap" path="res://assets/first_party/tiles/Void_Tiles_Stars_Level1.png" id="14_elkxt"] -[ext_resource type="Texture2D" uid="uid://px6v3fuo0o2a" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/stone (1).png" id="15_c08ye"] -[ext_resource type="Texture2D" uid="uid://y7g4whyhs0hv" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Adorno2_minijuego1.png" id="16_yvfld"] -[ext_resource type="Texture2D" uid="uid://l76ybtpiq0ol" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Adorno3_minjuego1.png" id="17_oyjth"] -[ext_resource type="Texture2D" uid="uid://c18xnk0i6s4ja" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/Adorno4_minijuego1.png" id="18_s4qon"] -[ext_resource type="Texture2D" uid="uid://dxnw7beou0cwf" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/adorno5_mini1.png" id="19_yu8e4"] -[ext_resource type="Texture2D" uid="uid://ctmgr5bjhwhab" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/adorno6_mini1.png" id="20_l8jow"] -[ext_resource type="Texture2D" uid="uid://ldnldnanq7ii" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/adorno7_mini1.png" id="21_x0kqw"] -[ext_resource type="Texture2D" uid="uid://bfnfq2c1tapcj" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/señal1_mini1.png" id="22_3egq4"] -[ext_resource type="Texture2D" uid="uid://s6ygelrs3pln" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/señal2_mini1.png" id="23_51hqw"] -[ext_resource type="Texture2D" uid="uid://b23oin3qjpweo" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/señal3_mini1.png" id="25_ej5w6"] -[ext_resource type="Texture2D" uid="uid://cxsphxbg12d04" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/señal4_mini1.png" id="26_85m7w"] -[ext_resource type="Texture2D" uid="uid://bw70hnmiiq3g0" path="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/diseños/señal5_mini1.png" id="27_2cefo"] +[ext_resource type="Texture2D" uid="uid://px6v3fuo0o2a" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/stone (1).png" id="15_c08ye"] +[ext_resource type="Texture2D" uid="uid://y7g4whyhs0hv" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Adorno2_minijuego1.png" id="16_yvfld"] +[ext_resource type="Texture2D" uid="uid://l76ybtpiq0ol" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Adorno3_minjuego1.png" id="17_oyjth"] +[ext_resource type="Texture2D" uid="uid://c18xnk0i6s4ja" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/Adorno4_minijuego1.png" id="18_s4qon"] +[ext_resource type="Texture2D" uid="uid://dxnw7beou0cwf" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/adorno5_mini1.png" id="19_yu8e4"] +[ext_resource type="Texture2D" uid="uid://ctmgr5bjhwhab" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/adorno6_mini1.png" id="20_l8jow"] +[ext_resource type="Texture2D" uid="uid://ldnldnanq7ii" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/adorno7_mini1.png" id="21_x0kqw"] +[ext_resource type="Texture2D" uid="uid://bfnfq2c1tapcj" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/señal1_mini1.png" id="22_3egq4"] +[ext_resource type="Texture2D" uid="uid://s6ygelrs3pln" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/señal2_mini1.png" id="23_51hqw"] +[ext_resource type="Texture2D" uid="uid://b23oin3qjpweo" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/señal3_mini1.png" id="25_ej5w6"] +[ext_resource type="Texture2D" uid="uid://cxsphxbg12d04" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/señal4_mini1.png" id="26_85m7w"] +[ext_resource type="Texture2D" uid="uid://bw70hnmiiq3g0" path="res://scenes/quests/story_quests/eldrune/1_stealth/stealth_components/diseños/señal5_mini1.png" id="27_2cefo"] [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) diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego1.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego1.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego1.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego1.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego1.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego1.png.import similarity index 75% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego1.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego1.png.import index 0af0c3f527..100f3d7dc8 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego1.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://beew7jdumeyar" -path="res://.godot/imported/Vencido_pulpo_minijuego1.png-aa85fb2d994bbbc8a45941432bc758e9.ctex" +path="res://.godot/imported/Vencido_pulpo_minijuego1.png-113d297e3319d192cd6380ea0a883639.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego1.png" -dest_files=["res://.godot/imported/Vencido_pulpo_minijuego1.png-aa85fb2d994bbbc8a45941432bc758e9.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego1.png" +dest_files=["res://.godot/imported/Vencido_pulpo_minijuego1.png-113d297e3319d192cd6380ea0a883639.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego2.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego2.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego2.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego2.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego2.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego2.png.import similarity index 75% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego2.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego2.png.import index d8b61729ad..cb161abbaf 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego2.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ngo3dit55eac" -path="res://.godot/imported/Vencido_pulpo_minijuego2.png-104d9be5728d37a8150e90e0f0b7aab5.ctex" +path="res://.godot/imported/Vencido_pulpo_minijuego2.png-39cbf22a3a6317bb7247a1a7b5731e37.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego2.png" -dest_files=["res://.godot/imported/Vencido_pulpo_minijuego2.png-104d9be5728d37a8150e90e0f0b7aab5.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego2.png" +dest_files=["res://.godot/imported/Vencido_pulpo_minijuego2.png-39cbf22a3a6317bb7247a1a7b5731e37.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego3.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego3.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego3.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego3.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego3.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego3.png.import similarity index 75% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego3.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego3.png.import index a8957022ae..3d93f27783 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego3.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego3.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://duis7dnlx5oo8" -path="res://.godot/imported/Vencido_pulpo_minijuego3.png-600e766489aec8ab17c0332fb75a8cda.ctex" +path="res://.godot/imported/Vencido_pulpo_minijuego3.png-7a5d67e8bf80ed735f1d7a473d519c59.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego3.png" -dest_files=["res://.godot/imported/Vencido_pulpo_minijuego3.png-600e766489aec8ab17c0332fb75a8cda.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego3.png" +dest_files=["res://.godot/imported/Vencido_pulpo_minijuego3.png-7a5d67e8bf80ed735f1d7a473d519c59.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego4.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego4.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego4.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego4.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego4.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego4.png.import similarity index 75% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego4.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego4.png.import index 32394e4061..b95f734994 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego4.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego4.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dlbly160wgony" -path="res://.godot/imported/Vencido_pulpo_minijuego4.png-49abb16920a97262306c4b1359bf7df5.ctex" +path="res://.godot/imported/Vencido_pulpo_minijuego4.png-5ea82ce567a2b74820077609787df57e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego4.png" -dest_files=["res://.godot/imported/Vencido_pulpo_minijuego4.png-49abb16920a97262306c4b1359bf7df5.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego4.png" +dest_files=["res://.godot/imported/Vencido_pulpo_minijuego4.png-5ea82ce567a2b74820077609787df57e.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego5.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego5.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego5.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego5.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego5.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego5.png.import similarity index 75% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego5.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego5.png.import index afbde78cfb..cbd657099f 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego5.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego5.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cii5kgucbrxr8" -path="res://.godot/imported/Vencido_pulpo_minijuego5.png-af7370cf7d9a96bc56a45515d023998f.ctex" +path="res://.godot/imported/Vencido_pulpo_minijuego5.png-5e3b906af36d277197664d001cca2d26.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego5.png" -dest_files=["res://.godot/imported/Vencido_pulpo_minijuego5.png-af7370cf7d9a96bc56a45515d023998f.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego5.png" +dest_files=["res://.godot/imported/Vencido_pulpo_minijuego5.png-5e3b906af36d277197664d001cca2d26.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego6.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego6.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego6.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego6.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego6.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego6.png.import similarity index 75% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego6.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego6.png.import index 71f150f283..8d5073da15 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego6.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego6.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://vcvl6t81l7ox" -path="res://.godot/imported/Vencido_pulpo_minijuego6.png-441462c1faeeffe49fe3c73c2e899114.ctex" +path="res://.godot/imported/Vencido_pulpo_minijuego6.png-6021e5f70101c93ca19a37de25aeebb0.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego6.png" -dest_files=["res://.godot/imported/Vencido_pulpo_minijuego6.png-441462c1faeeffe49fe3c73c2e899114.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego6.png" +dest_files=["res://.godot/imported/Vencido_pulpo_minijuego6.png-6021e5f70101c93ca19a37de25aeebb0.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego7.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego7.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego7.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego7.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego7.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego7.png.import similarity index 75% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego7.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego7.png.import index 901e8769a4..7bf1ecf605 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego7.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego7.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dx5mjj5ubf7v2" -path="res://.godot/imported/Vencido_pulpo_minijuego7.png-60f6510de5a81acb0dc04b294ba57e55.ctex" +path="res://.godot/imported/Vencido_pulpo_minijuego7.png-632007150c194d70d90f6beb4bdff1a8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego7.png" -dest_files=["res://.godot/imported/Vencido_pulpo_minijuego7.png-60f6510de5a81acb0dc04b294ba57e55.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego7.png" +dest_files=["res://.godot/imported/Vencido_pulpo_minijuego7.png-632007150c194d70d90f6beb4bdff1a8.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego8.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego8.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego8.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego8.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego8.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego8.png.import similarity index 75% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego8.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego8.png.import index cb0086c682..624c44422c 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego8.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego8.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dosgrsaq4f3s2" -path="res://.godot/imported/Vencido_pulpo_minijuego8.png-b06fc79f7b7ca5e94431b000f698a7b2.ctex" +path="res://.godot/imported/Vencido_pulpo_minijuego8.png-5317f517de903ebf54b1142607ba9b17.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego8.png" -dest_files=["res://.godot/imported/Vencido_pulpo_minijuego8.png-b06fc79f7b7ca5e94431b000f698a7b2.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego8.png" +dest_files=["res://.godot/imported/Vencido_pulpo_minijuego8.png-5317f517de903ebf54b1142607ba9b17.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego9.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego9.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego9.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego9.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego9.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego9.png.import similarity index 75% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego9.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego9.png.import index 3d0405153c..8797daa84d 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego9.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego9.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://mhml235ucul6" -path="res://.godot/imported/Vencido_pulpo_minijuego9.png-642431ce1f7ee7222af2c6fd7c6d2cf7.ctex" +path="res://.godot/imported/Vencido_pulpo_minijuego9.png-b3be23e79eec479d6ec954a059bd8a3b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego9.png" -dest_files=["res://.godot/imported/Vencido_pulpo_minijuego9.png-642431ce1f7ee7222af2c6fd7c6d2cf7.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego9.png" +dest_files=["res://.godot/imported/Vencido_pulpo_minijuego9.png-b3be23e79eec479d6ec954a059bd8a3b.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/ataque2.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/ataque2.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/ataque2.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/ataque2.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/ataque2.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/ataque2.png.import similarity index 73% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/ataque2.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/ataque2.png.import index 2fe9b7a0dc..ed6f9b31ea 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/ataque2.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/ataque2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cklw30xbd0apy" -path="res://.godot/imported/ataque2.png-26a4da72451536aa2e1bbd90e15f7a42.ctex" +path="res://.godot/imported/ataque2.png-ec78b0ff488ec82d5844638d7e9c848b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/ataque2.png" -dest_files=["res://.godot/imported/ataque2.png-26a4da72451536aa2e1bbd90e15f7a42.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/ataque2.png" +dest_files=["res://.godot/imported/ataque2.png-ec78b0ff488ec82d5844638d7e9c848b.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego1.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego1.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego1.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego1.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego1.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego1.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego1.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego1.png.import index 5512d91c1a..c815315824 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego1.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b6hsr68vnw5p5" -path="res://.godot/imported/derrota2_minijuego1.png-f60976fe377058754307405aee5b6278.ctex" +path="res://.godot/imported/derrota2_minijuego1.png-e5bf6528c71b2cdab9160ebac1353f98.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego1.png" -dest_files=["res://.godot/imported/derrota2_minijuego1.png-f60976fe377058754307405aee5b6278.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego1.png" +dest_files=["res://.godot/imported/derrota2_minijuego1.png-e5bf6528c71b2cdab9160ebac1353f98.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego10.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego10.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego10.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego10.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego10.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego10.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego10.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego10.png.import index be5ef7be71..b9550b9535 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego10.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego10.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cagpp4814730h" -path="res://.godot/imported/derrota2_minijuego10.png-afe45e715eacb19bfb6fa193f444b1e1.ctex" +path="res://.godot/imported/derrota2_minijuego10.png-376c419e87011cc034ae850ed1fe810d.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego10.png" -dest_files=["res://.godot/imported/derrota2_minijuego10.png-afe45e715eacb19bfb6fa193f444b1e1.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego10.png" +dest_files=["res://.godot/imported/derrota2_minijuego10.png-376c419e87011cc034ae850ed1fe810d.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego11.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego11.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego11.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego11.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego11.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego11.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego11.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego11.png.import index 35d7a718ee..3ea7bf9b3c 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego11.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego11.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dnubt1cgg2s5c" -path="res://.godot/imported/derrota2_minijuego11.png-268d096d7465a824a7efef792c049628.ctex" +path="res://.godot/imported/derrota2_minijuego11.png-62ca9ab1d18e8a4c22ec4b4255511089.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego11.png" -dest_files=["res://.godot/imported/derrota2_minijuego11.png-268d096d7465a824a7efef792c049628.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego11.png" +dest_files=["res://.godot/imported/derrota2_minijuego11.png-62ca9ab1d18e8a4c22ec4b4255511089.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego2.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego2.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego2.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego2.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego2.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego2.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego2.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego2.png.import index 7a86e0973e..e313c251dd 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego2.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego2.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dlknijxope6sy" -path="res://.godot/imported/derrota2_minijuego2.png-9d0b82ef6b115df415ef7ef6cfb6134d.ctex" +path="res://.godot/imported/derrota2_minijuego2.png-0aeb488992692ba2125578b2b53c39c1.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego2.png" -dest_files=["res://.godot/imported/derrota2_minijuego2.png-9d0b82ef6b115df415ef7ef6cfb6134d.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego2.png" +dest_files=["res://.godot/imported/derrota2_minijuego2.png-0aeb488992692ba2125578b2b53c39c1.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego3.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego3.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego3.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego3.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego3.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego3.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego3.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego3.png.import index b71a705e74..2693e29149 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego3.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego3.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dwwbb8kuk3fqc" -path="res://.godot/imported/derrota2_minijuego3.png-50baacc6474bd2c6b240d0d999935735.ctex" +path="res://.godot/imported/derrota2_minijuego3.png-617d3f5a69ce7f2be2371ae474e51857.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego3.png" -dest_files=["res://.godot/imported/derrota2_minijuego3.png-50baacc6474bd2c6b240d0d999935735.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego3.png" +dest_files=["res://.godot/imported/derrota2_minijuego3.png-617d3f5a69ce7f2be2371ae474e51857.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego4.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego4.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego4.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego4.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego4.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego4.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego4.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego4.png.import index 4d6eeecdca..9b308c9b08 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego4.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego4.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://sj5t4fnj1cww" -path="res://.godot/imported/derrota2_minijuego4.png-9952b44e6d93c2452db98c50d760682f.ctex" +path="res://.godot/imported/derrota2_minijuego4.png-dd7d1beaa4b93bfbbdf633b005c2fd85.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego4.png" -dest_files=["res://.godot/imported/derrota2_minijuego4.png-9952b44e6d93c2452db98c50d760682f.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego4.png" +dest_files=["res://.godot/imported/derrota2_minijuego4.png-dd7d1beaa4b93bfbbdf633b005c2fd85.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego5.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego5.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego5.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego5.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego5.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego5.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego5.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego5.png.import index 671fe07d3d..f9a22fce36 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego5.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego5.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://birtad8a5tip6" -path="res://.godot/imported/derrota2_minijuego5.png-5f6032d97bd509d097918e238650800d.ctex" +path="res://.godot/imported/derrota2_minijuego5.png-2fb7ccb11b54dfaa8cc53206800a6b7a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego5.png" -dest_files=["res://.godot/imported/derrota2_minijuego5.png-5f6032d97bd509d097918e238650800d.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego5.png" +dest_files=["res://.godot/imported/derrota2_minijuego5.png-2fb7ccb11b54dfaa8cc53206800a6b7a.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego6.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego6.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego6.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego6.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego6.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego6.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego6.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego6.png.import index 1313fd0015..b777401f1f 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego6.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego6.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://br1hpwm4vakv4" -path="res://.godot/imported/derrota2_minijuego6.png-07f34a73f0003a633e57e41c8afb5cc8.ctex" +path="res://.godot/imported/derrota2_minijuego6.png-2fd46fd4bf8158a13b611a1545ff3857.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego6.png" -dest_files=["res://.godot/imported/derrota2_minijuego6.png-07f34a73f0003a633e57e41c8afb5cc8.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego6.png" +dest_files=["res://.godot/imported/derrota2_minijuego6.png-2fd46fd4bf8158a13b611a1545ff3857.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego7.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego7.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego7.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego7.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego7.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego7.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego7.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego7.png.import index f33be1d730..2584809e78 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego7.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego7.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c2yr1a5awvrag" -path="res://.godot/imported/derrota2_minijuego7.png-dfadc5ff779b0e1b7e3ed70b47128bcd.ctex" +path="res://.godot/imported/derrota2_minijuego7.png-025094bc9544698c533130038e466d68.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego7.png" -dest_files=["res://.godot/imported/derrota2_minijuego7.png-dfadc5ff779b0e1b7e3ed70b47128bcd.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego7.png" +dest_files=["res://.godot/imported/derrota2_minijuego7.png-025094bc9544698c533130038e466d68.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego8.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego8.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego8.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego8.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego8.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego8.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego8.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego8.png.import index 28148faee1..25c39b6acd 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego8.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego8.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bh56i2vqtytln" -path="res://.godot/imported/derrota2_minijuego8.png-c451bdda26576f4abc86d8591603a512.ctex" +path="res://.godot/imported/derrota2_minijuego8.png-e8f6fdf692a450a681f48f17a1a9738e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego8.png" -dest_files=["res://.godot/imported/derrota2_minijuego8.png-c451bdda26576f4abc86d8591603a512.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego8.png" +dest_files=["res://.godot/imported/derrota2_minijuego8.png-e8f6fdf692a450a681f48f17a1a9738e.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego9.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego9.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego9.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego9.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego9.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego9.png.import similarity index 70% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego9.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego9.png.import index 40a7124c54..375d27accb 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego9.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego9.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cx4hsg3hysbir" -path="res://.godot/imported/derrota2_minijuego9.png-453cd92e98873fbdfbf91435fa0ce606.ctex" +path="res://.godot/imported/derrota2_minijuego9.png-925a0561c7b109b8bdf8b44cf4a26770.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego9.png" -dest_files=["res://.godot/imported/derrota2_minijuego9.png-453cd92e98873fbdfbf91435fa0ce606.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego9.png" +dest_files=["res://.godot/imported/derrota2_minijuego9.png-925a0561c7b109b8bdf8b44cf4a26770.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/idle-sin-fondo.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/idle-sin-fondo.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/idle-sin-fondo.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/idle-sin-fondo.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/idle-sin-fondo.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/idle-sin-fondo.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/idle-sin-fondo.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/idle-sin-fondo.png.import index 9b58b9c557..2397977eb9 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/idle-sin-fondo.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/idle-sin-fondo.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cs5j6cugjy1oa" -path="res://.godot/imported/idle-sin-fondo.png-9db11de8370cda6586d7638920f55061.ctex" +path="res://.godot/imported/idle-sin-fondo.png-60674db8f249392d7afc90b9920420fb.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/idle-sin-fondo.png" -dest_files=["res://.godot/imported/idle-sin-fondo.png-9db11de8370cda6586d7638920f55061.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/idle-sin-fondo.png" +dest_files=["res://.godot/imported/idle-sin-fondo.png-60674db8f249392d7afc90b9920420fb.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/walk-sin-fondo.png b/scenes/quests/story_quests/eldrune/player_components/Animaciones/walk-sin-fondo.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/walk-sin-fondo.png rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/walk-sin-fondo.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/walk-sin-fondo.png.import b/scenes/quests/story_quests/eldrune/player_components/Animaciones/walk-sin-fondo.png.import similarity index 71% rename from scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/walk-sin-fondo.png.import rename to scenes/quests/story_quests/eldrune/player_components/Animaciones/walk-sin-fondo.png.import index 3992d44d1e..cb7d7d04c7 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/walk-sin-fondo.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/Animaciones/walk-sin-fondo.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://qrkeomhjrs8r" -path="res://.godot/imported/walk-sin-fondo.png-8bbd5a1cacc0807c71c10c0bc759ac8b.ctex" +path="res://.godot/imported/walk-sin-fondo.png-2858cd1c574f9cc39246641bae98792e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/walk-sin-fondo.png" -dest_files=["res://.godot/imported/walk-sin-fondo.png-8bbd5a1cacc0807c71c10c0bc759ac8b.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/walk-sin-fondo.png" +dest_files=["res://.godot/imported/walk-sin-fondo.png-2858cd1c574f9cc39246641bae98792e.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player.tres b/scenes/quests/story_quests/eldrune/player_components/eldrune_player.tres similarity index 72% rename from scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player.tres rename to scenes/quests/story_quests/eldrune/player_components/eldrune_player.tres index ff396c7713..c7f71612d7 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player.tres +++ b/scenes/quests/story_quests/eldrune/player_components/eldrune_player.tres @@ -1,29 +1,29 @@ [gd_resource type="SpriteFrames" format=3 uid="uid://b1sol6f5xak4b"] -[ext_resource type="Texture2D" uid="uid://bal6raxd3rji1" path="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_01.png" id="1_ifimc"] -[ext_resource type="Texture2D" uid="uid://cklw30xbd0apy" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/ataque2.png" id="2_oxuor"] -[ext_resource type="Texture2D" uid="uid://beew7jdumeyar" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego1.png" id="7_mygp3"] -[ext_resource type="Texture2D" uid="uid://ngo3dit55eac" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego2.png" id="8_434qc"] -[ext_resource type="Texture2D" uid="uid://duis7dnlx5oo8" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego3.png" id="9_f0tji"] -[ext_resource type="Texture2D" uid="uid://dlbly160wgony" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego4.png" id="10_kfpxs"] -[ext_resource type="Texture2D" uid="uid://cii5kgucbrxr8" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego5.png" id="11_njqcj"] -[ext_resource type="Texture2D" uid="uid://vcvl6t81l7ox" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego6.png" id="12_eot40"] -[ext_resource type="Texture2D" uid="uid://dx5mjj5ubf7v2" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego7.png" id="13_0acp0"] -[ext_resource type="Texture2D" uid="uid://dosgrsaq4f3s2" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego8.png" id="14_01nke"] -[ext_resource type="Texture2D" uid="uid://mhml235ucul6" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/Vencido_pulpo_minijuego9.png" id="15_8rayl"] -[ext_resource type="Texture2D" uid="uid://b6hsr68vnw5p5" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego1.png" id="16_wvo3e"] -[ext_resource type="Texture2D" uid="uid://dlknijxope6sy" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego2.png" id="17_jreis"] -[ext_resource type="Texture2D" uid="uid://dwwbb8kuk3fqc" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego3.png" id="18_qwv5s"] -[ext_resource type="Texture2D" uid="uid://sj5t4fnj1cww" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego4.png" id="19_58xpg"] -[ext_resource type="Texture2D" uid="uid://birtad8a5tip6" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego5.png" id="20_f2mv5"] -[ext_resource type="Texture2D" uid="uid://br1hpwm4vakv4" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego6.png" id="21_cblth"] -[ext_resource type="Texture2D" uid="uid://c2yr1a5awvrag" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego7.png" id="22_qcxgl"] -[ext_resource type="Texture2D" uid="uid://bh56i2vqtytln" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego8.png" id="23_0jsd7"] -[ext_resource type="Texture2D" uid="uid://cx4hsg3hysbir" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego9.png" id="24_i3ah3"] -[ext_resource type="Texture2D" uid="uid://cagpp4814730h" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego10.png" id="25_ayo8l"] -[ext_resource type="Texture2D" uid="uid://dnubt1cgg2s5c" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/derrota2_minijuego11.png" id="26_2aq5v"] -[ext_resource type="Texture2D" uid="uid://cs5j6cugjy1oa" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/idle-sin-fondo.png" id="27_e51y6"] -[ext_resource type="Texture2D" uid="uid://qrkeomhjrs8r" path="res://scenes/quests/story_quests/wizzy_quest/player_components/Animaciones/walk-sin-fondo.png" id="28_er7fj"] +[ext_resource type="Texture2D" uid="uid://bal6raxd3rji1" path="res://scenes/quests/story_quests/eldrune/player_components/eldrune_player_attack_01.png" id="1_ifimc"] +[ext_resource type="Texture2D" uid="uid://cklw30xbd0apy" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/ataque2.png" id="2_oxuor"] +[ext_resource type="Texture2D" uid="uid://beew7jdumeyar" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego1.png" id="7_mygp3"] +[ext_resource type="Texture2D" uid="uid://ngo3dit55eac" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego2.png" id="8_434qc"] +[ext_resource type="Texture2D" uid="uid://duis7dnlx5oo8" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego3.png" id="9_f0tji"] +[ext_resource type="Texture2D" uid="uid://dlbly160wgony" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego4.png" id="10_kfpxs"] +[ext_resource type="Texture2D" uid="uid://cii5kgucbrxr8" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego5.png" id="11_njqcj"] +[ext_resource type="Texture2D" uid="uid://vcvl6t81l7ox" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego6.png" id="12_eot40"] +[ext_resource type="Texture2D" uid="uid://dx5mjj5ubf7v2" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego7.png" id="13_0acp0"] +[ext_resource type="Texture2D" uid="uid://dosgrsaq4f3s2" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego8.png" id="14_01nke"] +[ext_resource type="Texture2D" uid="uid://mhml235ucul6" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/Vencido_pulpo_minijuego9.png" id="15_8rayl"] +[ext_resource type="Texture2D" uid="uid://b6hsr68vnw5p5" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego1.png" id="16_wvo3e"] +[ext_resource type="Texture2D" uid="uid://dlknijxope6sy" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego2.png" id="17_jreis"] +[ext_resource type="Texture2D" uid="uid://dwwbb8kuk3fqc" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego3.png" id="18_qwv5s"] +[ext_resource type="Texture2D" uid="uid://sj5t4fnj1cww" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego4.png" id="19_58xpg"] +[ext_resource type="Texture2D" uid="uid://birtad8a5tip6" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego5.png" id="20_f2mv5"] +[ext_resource type="Texture2D" uid="uid://br1hpwm4vakv4" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego6.png" id="21_cblth"] +[ext_resource type="Texture2D" uid="uid://c2yr1a5awvrag" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego7.png" id="22_qcxgl"] +[ext_resource type="Texture2D" uid="uid://bh56i2vqtytln" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego8.png" id="23_0jsd7"] +[ext_resource type="Texture2D" uid="uid://cx4hsg3hysbir" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego9.png" id="24_i3ah3"] +[ext_resource type="Texture2D" uid="uid://cagpp4814730h" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego10.png" id="25_ayo8l"] +[ext_resource type="Texture2D" uid="uid://dnubt1cgg2s5c" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/derrota2_minijuego11.png" id="26_2aq5v"] +[ext_resource type="Texture2D" uid="uid://cs5j6cugjy1oa" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/idle-sin-fondo.png" id="27_e51y6"] +[ext_resource type="Texture2D" uid="uid://qrkeomhjrs8r" path="res://scenes/quests/story_quests/eldrune/player_components/Animaciones/walk-sin-fondo.png" id="28_er7fj"] [sub_resource type="AtlasTexture" id="AtlasTexture_yg72c"] atlas = ExtResource("1_ifimc") diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_01.png b/scenes/quests/story_quests/eldrune/player_components/eldrune_player_attack_01.png similarity index 100% rename from scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_01.png rename to scenes/quests/story_quests/eldrune/player_components/eldrune_player_attack_01.png diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_01.png.import b/scenes/quests/story_quests/eldrune/player_components/eldrune_player_attack_01.png.import similarity index 69% rename from scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_01.png.import rename to scenes/quests/story_quests/eldrune/player_components/eldrune_player_attack_01.png.import index 099523cb31..8fa9f2752c 100644 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_01.png.import +++ b/scenes/quests/story_quests/eldrune/player_components/eldrune_player_attack_01.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bal6raxd3rji1" -path="res://.godot/imported/wizzy_quest_player_attack_01.png-23f440dd14c0369e701ad93b947dd0c3.ctex" +path="res://.godot/imported/eldrune_player_attack_01.png-1dc22656b7a74903f9e0c9ea09a1b668.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_01.png" -dest_files=["res://.godot/imported/wizzy_quest_player_attack_01.png-23f440dd14c0369e701ad93b947dd0c3.ctex"] +source_file="res://scenes/quests/story_quests/eldrune/player_components/eldrune_player_attack_01.png" +dest_files=["res://.godot/imported/eldrune_player_attack_01.png-1dc22656b7a74903f9e0c9ea09a1b668.ctex"] [params] diff --git a/scenes/quests/story_quests/wizzy_quest/quest.tres b/scenes/quests/story_quests/eldrune/quest.tres similarity index 91% rename from scenes/quests/story_quests/wizzy_quest/quest.tres rename to scenes/quests/story_quests/eldrune/quest.tres index e6c7120d1a..6d3e1f2559 100644 --- a/scenes/quests/story_quests/wizzy_quest/quest.tres +++ b/scenes/quests/story_quests/eldrune/quest.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="Quest" format=3 uid="uid://onwaocv0de6e"] [ext_resource type="Script" uid="uid://dts1hwdy3phin" path="res://scenes/menus/storybook/components/quest.gd" id="1_ukbr7"] -[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player.tres" id="2_8cyu4"] +[ext_resource type="SpriteFrames" uid="uid://b1sol6f5xak4b" path="res://scenes/quests/story_quests/eldrune/player_components/eldrune_player.tres" id="2_8cyu4"] [resource] script = ExtResource("1_ukbr7") diff --git a/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_1.tscn b/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_1.tscn index 020fdc5b27..91a90fec40 100644 --- a/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_1.tscn +++ b/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_1.tscn @@ -1,6 +1,7 @@ [gd_scene format=4 uid="uid://cqia8wihr6512"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_0sehy"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm5lx"] [ext_resource type="AudioStream" uid="uid://676ese8fg2qm" path="res://scenes/quests/story_quests/renya_beyond_sorrow/Complementos/music/7. Silent Longing (Loop).ogg" id="2_63j25"] [ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="3_fmi44"] [ext_resource type="Resource" uid="uid://ctmbv8jkb5j48" path="res://scenes/quests/story_quests/renya_beyond_sorrow/1_combat/components/dialogues/renya_combat.dialogue" id="4_75x6t"] @@ -8,7 +9,7 @@ [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="6_ulko6"] [ext_resource type="SpriteFrames" uid="uid://ckf0ncgsrnhek" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_purple_large.tres" id="7_5mbgn"] [ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="7_ilmvt"] -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="8_gdj00"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="8_gdj00"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="9_d7n4r"] [ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="11_28os0"] [ext_resource type="SpriteFrames" uid="uid://oggfoxxcn6ft" path="res://scenes/quests/story_quests/renya_beyond_sorrow/player_components/renya_player_combat.tres" id="11_bl6pj"] @@ -50,6 +51,11 @@ size = Vector2(101, 49) [node name="InkCombat" type="Node2D" unique_id=1383576457] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1085376852] +script = ExtResource("1_pm5lx") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="BackgroundMusic" parent="." unique_id=1953829043 instance=ExtResource("1_0sehy")] stream = ExtResource("2_63j25") @@ -146,7 +152,6 @@ shape = SubResource("RectangleShape2D_lmnu5") [node name="Player" parent="OnTheGround" unique_id=1416564784 instance=ExtResource("9_d7n4r")] position = Vector2(351, -56) player_name = "StoryWeaver" -mode = 1 sprite_frames = ExtResource("11_bl6pj") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1897581183] diff --git a/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_2.tscn b/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_2.tscn index 64efa7e673..6a4be9e97c 100644 --- a/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_2.tscn +++ b/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_2.tscn @@ -1,13 +1,14 @@ [gd_scene format=4 uid="uid://buvo0sgtr3qeg"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_igvqa"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmff0"] [ext_resource type="AudioStream" uid="uid://676ese8fg2qm" path="res://scenes/quests/story_quests/renya_beyond_sorrow/Complementos/music/7. Silent Longing (Loop).ogg" id="2_rqh7d"] [ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="3_s61i2"] [ext_resource type="TileSet" uid="uid://dmg13wgcc7so5" path="res://scenes/quests/story_quests/renya_beyond_sorrow/renya_tileset.tres" id="4_kr32a"] [ext_resource type="SpriteFrames" uid="uid://ckf0ncgsrnhek" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_purple_large.tres" id="6_2o143"] [ext_resource type="PackedScene" uid="uid://lgu7aeqa7o3r" path="res://scenes/game_elements/props/door/door.tscn" id="6_tm1ho"] [ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="7_0ow6i"] -[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter/components/teleporter.gd" id="7_odyqf"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="7_odyqf"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="8_fhg3o"] [ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="10_krssa"] [ext_resource type="SpriteFrames" uid="uid://oggfoxxcn6ft" path="res://scenes/quests/story_quests/renya_beyond_sorrow/player_components/renya_player_combat.tres" id="11_rqh7d"] @@ -44,6 +45,11 @@ size = Vector2(101, 49) [node name="InkCombat" type="Node2D" unique_id=1007367827] +[node name="PlayerMode" type="Node" parent="." unique_id=1020054627] +script = ExtResource("1_pmff0") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="BackgroundMusic" parent="." unique_id=1956929768 instance=ExtResource("1_igvqa")] stream = ExtResource("2_rqh7d") @@ -126,7 +132,6 @@ shape = SubResource("RectangleShape2D_e81yh") [node name="Player" parent="OnTheGround" unique_id=524940182 instance=ExtResource("8_fhg3o")] position = Vector2(162, 615) player_name = "StoryWeaver" -mode = 1 sprite_frames = ExtResource("11_rqh7d") [node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=489668817] diff --git a/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_3.tscn b/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_3.tscn index e63c159d57..85b627d6f2 100644 --- a/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_3.tscn +++ b/scenes/quests/story_quests/renya_beyond_sorrow/1_combat/renya_combat_round_3.tscn @@ -1,6 +1,7 @@ [gd_scene format=4 uid="uid://c2rc2y662wko0"] [ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="1_6o0ro"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm6oh"] [ext_resource type="AudioStream" uid="uid://676ese8fg2qm" path="res://scenes/quests/story_quests/renya_beyond_sorrow/Complementos/music/7. Silent Longing (Loop).ogg" id="2_nre7n"] [ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="3_3pvue"] [ext_resource type="TileSet" uid="uid://dmg13wgcc7so5" path="res://scenes/quests/story_quests/renya_beyond_sorrow/renya_tileset.tres" id="4_gf3wj"] @@ -50,6 +51,11 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="InkCombat" type="Node2D" unique_id=441167742] +[node name="PlayerMode" type="Node" parent="." unique_id=295226476] +script = ExtResource("1_pm6oh") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="BackgroundMusic" parent="." unique_id=627050264 instance=ExtResource("1_6o0ro")] stream = ExtResource("2_nre7n") @@ -133,7 +139,6 @@ position = Vector2(1248, 759) [node name="Player" parent="OnTheGround" unique_id=1666077879 instance=ExtResource("6_d3cq8")] position = Vector2(1245, 677) player_name = "StoryWeaver" -mode = 1 sprite_frames = ExtResource("10_nre7n") [node name="ThrowingEnemy" parent="OnTheGround" unique_id=196185173 instance=ExtResource("8_s2oo3")] diff --git a/scenes/quests/story_quests/renya_beyond_sorrow/2_sequence_puzzle/renya_sequence_puzzle.tscn b/scenes/quests/story_quests/renya_beyond_sorrow/2_sequence_puzzle/renya_sequence_puzzle.tscn index b8bb4a6881..412b07703b 100644 --- a/scenes/quests/story_quests/renya_beyond_sorrow/2_sequence_puzzle/renya_sequence_puzzle.tscn +++ b/scenes/quests/story_quests/renya_beyond_sorrow/2_sequence_puzzle/renya_sequence_puzzle.tscn @@ -25,6 +25,7 @@ [ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="20_68hfe"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="21_vm8rx"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="22_l45x2"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm14f"] [sub_resource type="Resource" id="Resource_344oq"] script = ExtResource("18_xxhkl") @@ -33,6 +34,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="SequencePuzzleTemplate" type="Node2D" unique_id=130441569] +[node name="PlayerMode" type="Node" parent="." unique_id=1380778650] +script = ExtResource("1_pm14f") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="BackgroundMusic" parent="." unique_id=840406244 instance=ExtResource("1_d7j0d")] stream = ExtResource("2_d7j0d") @@ -83,37 +88,36 @@ y_sort_enabled = true position = Vector2(523, 1183) [node name="Blue" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1375771381 instance=ExtResource("5_jo4hc")] -modulate = Color(0, 0.4, 0.6, 1) position = Vector2(-126, -315) sprite_frames = ExtResource("6_aircv") +sprite_modulate = Color(0, 0.4, 0.6, 1) audio_stream = ExtResource("7_nwtka") [node name="Pink" parent="OnTheGround/SequencePuzzle/Objects" unique_id=241389614 instance=ExtResource("5_jo4hc")] -modulate = Color(0.89, 0.2937, 0.804817, 1) position = Vector2(338, -89) sprite_frames = ExtResource("6_s3vv2") +sprite_modulate = Color(0.89, 0.2937, 0.804817, 1) audio_stream = ExtResource("8_yw2dt") [node name="Yellow" parent="OnTheGround/SequencePuzzle/Objects" unique_id=878136001 instance=ExtResource("5_jo4hc")] -modulate = Color(0.89, 0.804817, 0.2937, 1) position = Vector2(-370, -84) sprite_frames = ExtResource("6_aircv") +sprite_modulate = Color(0.89, 0.804817, 0.2937, 1) audio_stream = ExtResource("9_63qpu") [node name="Green" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1601100548 instance=ExtResource("5_jo4hc")] -modulate = Color(0.188235, 0.717647, 0, 1) position = Vector2(248, -221) sprite_frames = ExtResource("6_aircv") +sprite_modulate = Color(0.188235, 0.717647, 0, 1) audio_stream = ExtResource("10_ytm8d") [node name="Purple" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1865130574 instance=ExtResource("5_jo4hc")] -modulate = Color(0.464066, 0.2937, 0.89, 1) position = Vector2(94, -318) sprite_frames = ExtResource("6_s3vv2") +sprite_modulate = Color(0.464066, 0.2937, 0.89, 1) audio_stream = ExtResource("11_wejiw") [node name="Red" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1539764264 instance=ExtResource("5_jo4hc")] -modulate = Color(0.89, 0.2937, 0.2937, 1) position = Vector2(-298, -218) sprite_frames = ExtResource("6_s3vv2") audio_stream = ExtResource("12_kcyae") diff --git a/scenes/quests/story_quests/renya_beyond_sorrow/3_stealth/renya_beyond_sorrow_stealth.tscn b/scenes/quests/story_quests/renya_beyond_sorrow/3_stealth/renya_beyond_sorrow_stealth.tscn index 5bd4538290..059d94d033 100644 --- a/scenes/quests/story_quests/renya_beyond_sorrow/3_stealth/renya_beyond_sorrow_stealth.tscn +++ b/scenes/quests/story_quests/renya_beyond_sorrow/3_stealth/renya_beyond_sorrow_stealth.tscn @@ -16,6 +16,7 @@ [ext_resource type="Resource" uid="uid://c1gowkhyn68ih" path="res://scenes/quests/story_quests/renya_beyond_sorrow/3_stealth/stealth_components/dialogue/renya_beyond_sorrow_collected.dialogue" id="12_1cfkr"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="13_m7vwu"] [ext_resource type="Resource" uid="uid://c3ljyi2iw3duc" path="res://scenes/quests/story_quests/renya_beyond_sorrow/3_stealth/stealth_components/dialogue/renya_beyond_sorrow_stealth.dialogue" id="14_ooi2f"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmcn9"] [sub_resource type="Curve2D" id="Curve2D_r7y04"] _data = { @@ -93,6 +94,10 @@ size = Vector2(133.5, 112) [node name="StealthTemplateLevel" type="Node2D" unique_id=1801029989] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1948510326] +script = ExtResource("1_pmcn9") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="BackgroundMusic" parent="." unique_id=407352425 instance=ExtResource("1_pjol6")] stream = ExtResource("2_wnbgt") diff --git a/scenes/quests/story_quests/shjourney/0_IntroVideo/saltar_video.gd b/scenes/quests/story_quests/shjourney/0_IntroVideo/saltar_video.gd index 2da87a1ecf..2813c72972 100644 --- a/scenes/quests/story_quests/shjourney/0_IntroVideo/saltar_video.gd +++ b/scenes/quests/story_quests/shjourney/0_IntroVideo/saltar_video.gd @@ -3,5 +3,7 @@ extends VideoStreamPlayer func _input(event): - if event.is_action_pressed("ui_select"): - get_tree().change_scene_to_file("res://scenes/quests/story_quests/shjourney/1_IntroAnimacion/SleepingBros.tscn") + if event.is_action_pressed(&"interact"): + SceneSwitcher.change_to_file( + "res://scenes/quests/story_quests/shjourney/1_IntroAnimacion/SleepingBros.tscn" + ) diff --git a/scenes/quests/story_quests/shjourney/1_IntroAnimacion/SleepingBros.tscn b/scenes/quests/story_quests/shjourney/1_IntroAnimacion/SleepingBros.tscn index c7933c5c0b..b1a8d88cf6 100644 --- a/scenes/quests/story_quests/shjourney/1_IntroAnimacion/SleepingBros.tscn +++ b/scenes/quests/story_quests/shjourney/1_IntroAnimacion/SleepingBros.tscn @@ -10,687 +10,687 @@ [ext_resource type="Script" uid="uid://dgfhfulwcprar" path="res://scenes/quests/story_quests/shjourney/1_IntroAnimacion/cinematicSprite.gd" id="8_f6rwu"] [ext_resource type="PackedScene" uid="uid://bdlaxkehg7vd6" path="res://scenes/quests/story_quests/shjourney/saltar_cinematica_hint.tscn" id="9_xcuh4"] -[sub_resource type="AtlasTexture" id="AtlasTexture_shlmy"] +[sub_resource type="AtlasTexture" id="AtlasTexture_xcuh4"] atlas = ExtResource("1_5qws3") region = Rect2(0, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_fcqpt"] +[sub_resource type="AtlasTexture" id="AtlasTexture_2buwu"] atlas = ExtResource("1_5qws3") region = Rect2(132, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_0y5ta"] +[sub_resource type="AtlasTexture" id="AtlasTexture_f6rwu"] atlas = ExtResource("1_5qws3") region = Rect2(264, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_5qskq"] +[sub_resource type="AtlasTexture" id="AtlasTexture_u1rls"] atlas = ExtResource("1_5qws3") region = Rect2(396, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_n5boy"] +[sub_resource type="AtlasTexture" id="AtlasTexture_rrck4"] atlas = ExtResource("1_5qws3") region = Rect2(528, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_6sgmx"] +[sub_resource type="AtlasTexture" id="AtlasTexture_su3c6"] atlas = ExtResource("1_5qws3") region = Rect2(660, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_cih3n"] +[sub_resource type="AtlasTexture" id="AtlasTexture_fdyhq"] atlas = ExtResource("1_5qws3") region = Rect2(792, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_7for4"] +[sub_resource type="AtlasTexture" id="AtlasTexture_8v1h6"] atlas = ExtResource("1_5qws3") region = Rect2(924, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_0pdcr"] +[sub_resource type="AtlasTexture" id="AtlasTexture_dgql2"] atlas = ExtResource("1_5qws3") region = Rect2(1056, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_tgx72"] +[sub_resource type="AtlasTexture" id="AtlasTexture_x054r"] atlas = ExtResource("1_5qws3") region = Rect2(1188, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_xwdfy"] +[sub_resource type="AtlasTexture" id="AtlasTexture_w4mso"] atlas = ExtResource("1_5qws3") region = Rect2(1320, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_tkyul"] +[sub_resource type="AtlasTexture" id="AtlasTexture_im4rb"] atlas = ExtResource("1_5qws3") region = Rect2(1452, 0, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_bvm4l"] +[sub_resource type="AtlasTexture" id="AtlasTexture_sxjjj"] atlas = ExtResource("1_5qws3") -region = Rect2(1584, 0, 132, 80) +region = Rect2(0, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_rf17x"] +[sub_resource type="AtlasTexture" id="AtlasTexture_y1dc6"] atlas = ExtResource("1_5qws3") -region = Rect2(1716, 0, 132, 80) +region = Rect2(132, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_tkrql"] +[sub_resource type="AtlasTexture" id="AtlasTexture_jwkw8"] atlas = ExtResource("1_5qws3") -region = Rect2(1848, 0, 132, 80) +region = Rect2(264, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_61mta"] +[sub_resource type="AtlasTexture" id="AtlasTexture_t8gq6"] atlas = ExtResource("1_5qws3") -region = Rect2(1980, 0, 132, 80) +region = Rect2(396, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_sx5lo"] +[sub_resource type="AtlasTexture" id="AtlasTexture_rrbqh"] atlas = ExtResource("1_5qws3") -region = Rect2(2112, 0, 132, 80) +region = Rect2(528, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_x7rww"] +[sub_resource type="AtlasTexture" id="AtlasTexture_oe8wj"] atlas = ExtResource("1_5qws3") -region = Rect2(2244, 0, 132, 80) +region = Rect2(660, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_wa32g"] +[sub_resource type="AtlasTexture" id="AtlasTexture_6eich"] atlas = ExtResource("1_5qws3") -region = Rect2(2376, 0, 132, 80) +region = Rect2(792, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_tmt8a"] +[sub_resource type="AtlasTexture" id="AtlasTexture_qjmr7"] atlas = ExtResource("1_5qws3") -region = Rect2(2508, 0, 132, 80) +region = Rect2(924, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_luyug"] +[sub_resource type="AtlasTexture" id="AtlasTexture_4f2nm"] atlas = ExtResource("1_5qws3") -region = Rect2(2640, 0, 132, 80) +region = Rect2(1056, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_73v77"] +[sub_resource type="AtlasTexture" id="AtlasTexture_eh0mi"] atlas = ExtResource("1_5qws3") -region = Rect2(2772, 0, 132, 80) +region = Rect2(1188, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_qqmv6"] +[sub_resource type="AtlasTexture" id="AtlasTexture_tbblr"] atlas = ExtResource("1_5qws3") -region = Rect2(2904, 0, 132, 80) +region = Rect2(1320, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_yt348"] +[sub_resource type="AtlasTexture" id="AtlasTexture_b6br4"] atlas = ExtResource("1_5qws3") -region = Rect2(3036, 0, 132, 80) +region = Rect2(1452, 80, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_adyv4"] +[sub_resource type="AtlasTexture" id="AtlasTexture_4ndlc"] atlas = ExtResource("1_5qws3") -region = Rect2(3168, 0, 132, 80) +region = Rect2(0, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_a0mep"] +[sub_resource type="AtlasTexture" id="AtlasTexture_wv8h6"] atlas = ExtResource("1_5qws3") -region = Rect2(3300, 0, 132, 80) +region = Rect2(132, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_2t4w0"] +[sub_resource type="AtlasTexture" id="AtlasTexture_e8aqq"] atlas = ExtResource("1_5qws3") -region = Rect2(3432, 0, 132, 80) +region = Rect2(264, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_lyrfd"] +[sub_resource type="AtlasTexture" id="AtlasTexture_056ug"] atlas = ExtResource("1_5qws3") -region = Rect2(3564, 0, 132, 80) +region = Rect2(396, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_vqlhw"] +[sub_resource type="AtlasTexture" id="AtlasTexture_34xh6"] atlas = ExtResource("1_5qws3") -region = Rect2(3696, 0, 132, 80) +region = Rect2(528, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_dbiqn"] +[sub_resource type="AtlasTexture" id="AtlasTexture_6ml05"] atlas = ExtResource("1_5qws3") -region = Rect2(3828, 0, 132, 80) +region = Rect2(660, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_8scdf"] +[sub_resource type="AtlasTexture" id="AtlasTexture_51dwp"] atlas = ExtResource("1_5qws3") -region = Rect2(3960, 0, 132, 80) +region = Rect2(792, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_caex4"] +[sub_resource type="AtlasTexture" id="AtlasTexture_f76d5"] atlas = ExtResource("1_5qws3") -region = Rect2(4092, 0, 132, 80) +region = Rect2(924, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_nvlgs"] +[sub_resource type="AtlasTexture" id="AtlasTexture_rvy2n"] atlas = ExtResource("1_5qws3") -region = Rect2(4224, 0, 132, 80) +region = Rect2(1056, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_t6bhk"] +[sub_resource type="AtlasTexture" id="AtlasTexture_1sdry"] atlas = ExtResource("1_5qws3") -region = Rect2(4356, 0, 132, 80) +region = Rect2(1188, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_udjew"] +[sub_resource type="AtlasTexture" id="AtlasTexture_5pxkm"] atlas = ExtResource("1_5qws3") -region = Rect2(4488, 0, 132, 80) +region = Rect2(1320, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_1icdc"] +[sub_resource type="AtlasTexture" id="AtlasTexture_4e2pq"] atlas = ExtResource("1_5qws3") -region = Rect2(4620, 0, 132, 80) +region = Rect2(1452, 160, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_s1rvo"] +[sub_resource type="AtlasTexture" id="AtlasTexture_lsin7"] atlas = ExtResource("1_5qws3") -region = Rect2(4752, 0, 132, 80) +region = Rect2(0, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_83k8e"] +[sub_resource type="AtlasTexture" id="AtlasTexture_7c70e"] atlas = ExtResource("1_5qws3") -region = Rect2(4884, 0, 132, 80) +region = Rect2(132, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_rw0tn"] +[sub_resource type="AtlasTexture" id="AtlasTexture_sqd4i"] atlas = ExtResource("1_5qws3") -region = Rect2(5016, 0, 132, 80) +region = Rect2(264, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_wvqx8"] +[sub_resource type="AtlasTexture" id="AtlasTexture_jhw4l"] atlas = ExtResource("1_5qws3") -region = Rect2(5148, 0, 132, 80) +region = Rect2(396, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_2aax4"] +[sub_resource type="AtlasTexture" id="AtlasTexture_0bis0"] atlas = ExtResource("1_5qws3") -region = Rect2(5280, 0, 132, 80) +region = Rect2(528, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_6ke17"] +[sub_resource type="AtlasTexture" id="AtlasTexture_bx28t"] atlas = ExtResource("1_5qws3") -region = Rect2(5412, 0, 132, 80) +region = Rect2(660, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_xvvow"] +[sub_resource type="AtlasTexture" id="AtlasTexture_fvot5"] atlas = ExtResource("1_5qws3") -region = Rect2(5544, 0, 132, 80) +region = Rect2(792, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_7e3lf"] +[sub_resource type="AtlasTexture" id="AtlasTexture_4teob"] atlas = ExtResource("1_5qws3") -region = Rect2(5676, 0, 132, 80) +region = Rect2(924, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_4ldtg"] +[sub_resource type="AtlasTexture" id="AtlasTexture_v15me"] atlas = ExtResource("1_5qws3") -region = Rect2(5808, 0, 132, 80) +region = Rect2(1056, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_lb0nl"] +[sub_resource type="AtlasTexture" id="AtlasTexture_6ff36"] atlas = ExtResource("1_5qws3") -region = Rect2(5940, 0, 132, 80) +region = Rect2(1188, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_pu4wp"] +[sub_resource type="AtlasTexture" id="AtlasTexture_tyn7i"] atlas = ExtResource("1_5qws3") -region = Rect2(6072, 0, 132, 80) +region = Rect2(1320, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_pmnad"] +[sub_resource type="AtlasTexture" id="AtlasTexture_omlaw"] atlas = ExtResource("1_5qws3") -region = Rect2(6204, 0, 132, 80) +region = Rect2(1452, 240, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_11im6"] +[sub_resource type="AtlasTexture" id="AtlasTexture_b4pdi"] atlas = ExtResource("1_5qws3") -region = Rect2(6336, 0, 132, 80) +region = Rect2(0, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_ndm7j"] +[sub_resource type="AtlasTexture" id="AtlasTexture_hajnd"] atlas = ExtResource("1_5qws3") -region = Rect2(6468, 0, 132, 80) +region = Rect2(132, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_c8qv2"] +[sub_resource type="AtlasTexture" id="AtlasTexture_iy4h8"] atlas = ExtResource("1_5qws3") -region = Rect2(6600, 0, 132, 80) +region = Rect2(264, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_215bh"] +[sub_resource type="AtlasTexture" id="AtlasTexture_0byi8"] atlas = ExtResource("1_5qws3") -region = Rect2(6732, 0, 132, 80) +region = Rect2(396, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_61e0f"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ibuyh"] atlas = ExtResource("1_5qws3") -region = Rect2(6864, 0, 132, 80) +region = Rect2(528, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_idala"] +[sub_resource type="AtlasTexture" id="AtlasTexture_6b10t"] atlas = ExtResource("1_5qws3") -region = Rect2(6996, 0, 132, 80) +region = Rect2(660, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_d11tc"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ajwpw"] atlas = ExtResource("1_5qws3") -region = Rect2(7128, 0, 132, 80) +region = Rect2(792, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_ftt28"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ad26x"] atlas = ExtResource("1_5qws3") -region = Rect2(7260, 0, 132, 80) +region = Rect2(924, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_f2n6e"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ik83p"] atlas = ExtResource("1_5qws3") -region = Rect2(7392, 0, 132, 80) +region = Rect2(1056, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_x7lck"] +[sub_resource type="AtlasTexture" id="AtlasTexture_6j11a"] atlas = ExtResource("1_5qws3") -region = Rect2(7524, 0, 132, 80) +region = Rect2(1188, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_8n4wt"] +[sub_resource type="AtlasTexture" id="AtlasTexture_hvpsc"] atlas = ExtResource("1_5qws3") -region = Rect2(7656, 0, 132, 80) +region = Rect2(1320, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_2fuxo"] +[sub_resource type="AtlasTexture" id="AtlasTexture_31tpk"] atlas = ExtResource("1_5qws3") -region = Rect2(7788, 0, 132, 80) +region = Rect2(1452, 320, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_wju7h"] +[sub_resource type="AtlasTexture" id="AtlasTexture_v8xpt"] atlas = ExtResource("1_5qws3") -region = Rect2(7920, 0, 132, 80) +region = Rect2(0, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_fopsx"] +[sub_resource type="AtlasTexture" id="AtlasTexture_1l3a4"] atlas = ExtResource("1_5qws3") -region = Rect2(8052, 0, 132, 80) +region = Rect2(132, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_3pkjs"] +[sub_resource type="AtlasTexture" id="AtlasTexture_jw0xv"] atlas = ExtResource("1_5qws3") -region = Rect2(8184, 0, 132, 80) +region = Rect2(264, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_3ntye"] +[sub_resource type="AtlasTexture" id="AtlasTexture_vras8"] atlas = ExtResource("1_5qws3") -region = Rect2(8316, 0, 132, 80) +region = Rect2(396, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_m6ilt"] +[sub_resource type="AtlasTexture" id="AtlasTexture_lycsw"] atlas = ExtResource("1_5qws3") -region = Rect2(8448, 0, 132, 80) +region = Rect2(528, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_vr1cy"] +[sub_resource type="AtlasTexture" id="AtlasTexture_v5v2f"] atlas = ExtResource("1_5qws3") -region = Rect2(8580, 0, 132, 80) +region = Rect2(660, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_f4atw"] +[sub_resource type="AtlasTexture" id="AtlasTexture_hjmys"] atlas = ExtResource("1_5qws3") -region = Rect2(8712, 0, 132, 80) +region = Rect2(792, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_xa5en"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ey3gr"] atlas = ExtResource("1_5qws3") -region = Rect2(8844, 0, 132, 80) +region = Rect2(924, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_0e4wv"] +[sub_resource type="AtlasTexture" id="AtlasTexture_5myy8"] atlas = ExtResource("1_5qws3") -region = Rect2(8976, 0, 132, 80) +region = Rect2(1056, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_ljncy"] +[sub_resource type="AtlasTexture" id="AtlasTexture_1c4vw"] atlas = ExtResource("1_5qws3") -region = Rect2(9108, 0, 132, 80) +region = Rect2(1188, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_mbj3q"] +[sub_resource type="AtlasTexture" id="AtlasTexture_72yku"] atlas = ExtResource("1_5qws3") -region = Rect2(9240, 0, 132, 80) +region = Rect2(1320, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_t0pbk"] +[sub_resource type="AtlasTexture" id="AtlasTexture_svmiu"] atlas = ExtResource("1_5qws3") -region = Rect2(9372, 0, 132, 80) +region = Rect2(1452, 400, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_1f2va"] +[sub_resource type="AtlasTexture" id="AtlasTexture_m0m4c"] atlas = ExtResource("1_5qws3") -region = Rect2(9504, 0, 132, 80) +region = Rect2(0, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_iquwp"] +[sub_resource type="AtlasTexture" id="AtlasTexture_ussah"] atlas = ExtResource("1_5qws3") -region = Rect2(9636, 0, 132, 80) +region = Rect2(132, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_qs4sx"] +[sub_resource type="AtlasTexture" id="AtlasTexture_be2gw"] atlas = ExtResource("1_5qws3") -region = Rect2(9768, 0, 132, 80) +region = Rect2(264, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_60q0x"] +[sub_resource type="AtlasTexture" id="AtlasTexture_aw0b1"] atlas = ExtResource("1_5qws3") -region = Rect2(9900, 0, 132, 80) +region = Rect2(396, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_riohf"] +[sub_resource type="AtlasTexture" id="AtlasTexture_gw8rd"] atlas = ExtResource("1_5qws3") -region = Rect2(10032, 0, 132, 80) +region = Rect2(528, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_tstik"] +[sub_resource type="AtlasTexture" id="AtlasTexture_etntf"] atlas = ExtResource("1_5qws3") -region = Rect2(10164, 0, 132, 80) +region = Rect2(660, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_2o7gj"] +[sub_resource type="AtlasTexture" id="AtlasTexture_nu4od"] atlas = ExtResource("1_5qws3") -region = Rect2(10296, 0, 132, 80) +region = Rect2(792, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_t7x2s"] +[sub_resource type="AtlasTexture" id="AtlasTexture_a3ild"] atlas = ExtResource("1_5qws3") -region = Rect2(10428, 0, 132, 80) +region = Rect2(924, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_osb53"] +[sub_resource type="AtlasTexture" id="AtlasTexture_q4crd"] atlas = ExtResource("1_5qws3") -region = Rect2(10560, 0, 132, 80) +region = Rect2(1056, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_tcpof"] +[sub_resource type="AtlasTexture" id="AtlasTexture_qd41j"] atlas = ExtResource("1_5qws3") -region = Rect2(10692, 0, 132, 80) +region = Rect2(1188, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_phv7w"] +[sub_resource type="AtlasTexture" id="AtlasTexture_7crl1"] atlas = ExtResource("1_5qws3") -region = Rect2(10824, 0, 132, 80) +region = Rect2(1320, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_1oc6g"] +[sub_resource type="AtlasTexture" id="AtlasTexture_k8bd7"] atlas = ExtResource("1_5qws3") -region = Rect2(10956, 0, 132, 80) +region = Rect2(1452, 480, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_2jpc2"] +[sub_resource type="AtlasTexture" id="AtlasTexture_q3uik"] atlas = ExtResource("1_5qws3") -region = Rect2(11088, 0, 132, 80) +region = Rect2(0, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_w7s8n"] +[sub_resource type="AtlasTexture" id="AtlasTexture_vs7e1"] atlas = ExtResource("1_5qws3") -region = Rect2(11220, 0, 132, 80) +region = Rect2(132, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_kqrjn"] +[sub_resource type="AtlasTexture" id="AtlasTexture_0ejrm"] atlas = ExtResource("1_5qws3") -region = Rect2(11352, 0, 132, 80) +region = Rect2(264, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_0irhh"] +[sub_resource type="AtlasTexture" id="AtlasTexture_arul3"] atlas = ExtResource("1_5qws3") -region = Rect2(11484, 0, 132, 80) +region = Rect2(396, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_8bxj2"] +[sub_resource type="AtlasTexture" id="AtlasTexture_oba24"] atlas = ExtResource("1_5qws3") -region = Rect2(11616, 0, 132, 80) +region = Rect2(528, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_qnwap"] +[sub_resource type="AtlasTexture" id="AtlasTexture_nhvuk"] atlas = ExtResource("1_5qws3") -region = Rect2(11748, 0, 132, 80) +region = Rect2(660, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_pg781"] +[sub_resource type="AtlasTexture" id="AtlasTexture_bb1eb"] atlas = ExtResource("1_5qws3") -region = Rect2(11880, 0, 132, 80) +region = Rect2(792, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_s6rhb"] +[sub_resource type="AtlasTexture" id="AtlasTexture_1c2la"] atlas = ExtResource("1_5qws3") -region = Rect2(12012, 0, 132, 80) +region = Rect2(924, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_fbvlk"] +[sub_resource type="AtlasTexture" id="AtlasTexture_mb6j8"] atlas = ExtResource("1_5qws3") -region = Rect2(12144, 0, 132, 80) +region = Rect2(1056, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_r3u3w"] +[sub_resource type="AtlasTexture" id="AtlasTexture_n1jmn"] atlas = ExtResource("1_5qws3") -region = Rect2(12276, 0, 132, 80) +region = Rect2(1188, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_t1dex"] +[sub_resource type="AtlasTexture" id="AtlasTexture_c1ugv"] atlas = ExtResource("1_5qws3") -region = Rect2(12408, 0, 132, 80) +region = Rect2(1320, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_3blxh"] +[sub_resource type="AtlasTexture" id="AtlasTexture_62up3"] atlas = ExtResource("1_5qws3") -region = Rect2(12540, 0, 132, 80) +region = Rect2(1452, 560, 132, 80) -[sub_resource type="AtlasTexture" id="AtlasTexture_jmluu"] +[sub_resource type="AtlasTexture" id="AtlasTexture_651u2"] atlas = ExtResource("1_5qws3") -region = Rect2(12672, 0, 132, 80) +region = Rect2(0, 640, 132, 80) [sub_resource type="SpriteFrames" id="SpriteFrames_tsa12"] animations = [{ "frames": [{ "duration": 1.0, -"texture": SubResource("AtlasTexture_shlmy") +"texture": SubResource("AtlasTexture_xcuh4") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_fcqpt") +"texture": SubResource("AtlasTexture_2buwu") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_0y5ta") +"texture": SubResource("AtlasTexture_f6rwu") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_5qskq") +"texture": SubResource("AtlasTexture_u1rls") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_n5boy") +"texture": SubResource("AtlasTexture_rrck4") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_6sgmx") +"texture": SubResource("AtlasTexture_su3c6") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_cih3n") +"texture": SubResource("AtlasTexture_fdyhq") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_7for4") +"texture": SubResource("AtlasTexture_8v1h6") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_0pdcr") +"texture": SubResource("AtlasTexture_dgql2") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_tgx72") +"texture": SubResource("AtlasTexture_x054r") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_xwdfy") +"texture": SubResource("AtlasTexture_w4mso") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_tkyul") +"texture": SubResource("AtlasTexture_im4rb") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_bvm4l") +"texture": SubResource("AtlasTexture_sxjjj") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_rf17x") +"texture": SubResource("AtlasTexture_y1dc6") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_tkrql") +"texture": SubResource("AtlasTexture_jwkw8") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_61mta") +"texture": SubResource("AtlasTexture_t8gq6") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_sx5lo") +"texture": SubResource("AtlasTexture_rrbqh") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_x7rww") +"texture": SubResource("AtlasTexture_oe8wj") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_wa32g") +"texture": SubResource("AtlasTexture_6eich") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_tmt8a") +"texture": SubResource("AtlasTexture_qjmr7") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_luyug") +"texture": SubResource("AtlasTexture_4f2nm") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_73v77") +"texture": SubResource("AtlasTexture_eh0mi") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_qqmv6") +"texture": SubResource("AtlasTexture_tbblr") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_yt348") +"texture": SubResource("AtlasTexture_b6br4") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_adyv4") +"texture": SubResource("AtlasTexture_4ndlc") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_a0mep") +"texture": SubResource("AtlasTexture_wv8h6") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_2t4w0") +"texture": SubResource("AtlasTexture_e8aqq") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_lyrfd") +"texture": SubResource("AtlasTexture_056ug") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_vqlhw") +"texture": SubResource("AtlasTexture_34xh6") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_dbiqn") +"texture": SubResource("AtlasTexture_6ml05") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_8scdf") +"texture": SubResource("AtlasTexture_51dwp") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_caex4") +"texture": SubResource("AtlasTexture_f76d5") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_nvlgs") +"texture": SubResource("AtlasTexture_rvy2n") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_t6bhk") +"texture": SubResource("AtlasTexture_1sdry") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_udjew") +"texture": SubResource("AtlasTexture_5pxkm") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_1icdc") +"texture": SubResource("AtlasTexture_4e2pq") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_s1rvo") +"texture": SubResource("AtlasTexture_lsin7") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_83k8e") +"texture": SubResource("AtlasTexture_7c70e") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_rw0tn") +"texture": SubResource("AtlasTexture_sqd4i") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_wvqx8") +"texture": SubResource("AtlasTexture_jhw4l") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_2aax4") +"texture": SubResource("AtlasTexture_0bis0") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_6ke17") +"texture": SubResource("AtlasTexture_bx28t") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_xvvow") +"texture": SubResource("AtlasTexture_fvot5") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_7e3lf") +"texture": SubResource("AtlasTexture_4teob") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_4ldtg") +"texture": SubResource("AtlasTexture_v15me") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_lb0nl") +"texture": SubResource("AtlasTexture_6ff36") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_pu4wp") +"texture": SubResource("AtlasTexture_tyn7i") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_pmnad") +"texture": SubResource("AtlasTexture_omlaw") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_11im6") +"texture": SubResource("AtlasTexture_b4pdi") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_ndm7j") +"texture": SubResource("AtlasTexture_hajnd") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_c8qv2") +"texture": SubResource("AtlasTexture_iy4h8") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_215bh") +"texture": SubResource("AtlasTexture_0byi8") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_61e0f") +"texture": SubResource("AtlasTexture_ibuyh") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_idala") +"texture": SubResource("AtlasTexture_6b10t") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_d11tc") +"texture": SubResource("AtlasTexture_ajwpw") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_ftt28") +"texture": SubResource("AtlasTexture_ad26x") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_f2n6e") +"texture": SubResource("AtlasTexture_ik83p") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_x7lck") +"texture": SubResource("AtlasTexture_6j11a") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_8n4wt") +"texture": SubResource("AtlasTexture_hvpsc") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_2fuxo") +"texture": SubResource("AtlasTexture_31tpk") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_wju7h") +"texture": SubResource("AtlasTexture_v8xpt") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_fopsx") +"texture": SubResource("AtlasTexture_1l3a4") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_3pkjs") +"texture": SubResource("AtlasTexture_jw0xv") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_3ntye") +"texture": SubResource("AtlasTexture_vras8") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_m6ilt") +"texture": SubResource("AtlasTexture_lycsw") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_vr1cy") +"texture": SubResource("AtlasTexture_v5v2f") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_f4atw") +"texture": SubResource("AtlasTexture_hjmys") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_xa5en") +"texture": SubResource("AtlasTexture_ey3gr") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_0e4wv") +"texture": SubResource("AtlasTexture_5myy8") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_ljncy") +"texture": SubResource("AtlasTexture_1c4vw") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_mbj3q") +"texture": SubResource("AtlasTexture_72yku") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_t0pbk") +"texture": SubResource("AtlasTexture_svmiu") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_1f2va") +"texture": SubResource("AtlasTexture_m0m4c") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_iquwp") +"texture": SubResource("AtlasTexture_ussah") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_qs4sx") +"texture": SubResource("AtlasTexture_be2gw") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_60q0x") +"texture": SubResource("AtlasTexture_aw0b1") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_riohf") +"texture": SubResource("AtlasTexture_gw8rd") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_tstik") +"texture": SubResource("AtlasTexture_etntf") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_2o7gj") +"texture": SubResource("AtlasTexture_nu4od") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_t7x2s") +"texture": SubResource("AtlasTexture_a3ild") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_osb53") +"texture": SubResource("AtlasTexture_q4crd") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_tcpof") +"texture": SubResource("AtlasTexture_qd41j") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_phv7w") +"texture": SubResource("AtlasTexture_7crl1") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_1oc6g") +"texture": SubResource("AtlasTexture_k8bd7") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_2jpc2") +"texture": SubResource("AtlasTexture_q3uik") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_w7s8n") +"texture": SubResource("AtlasTexture_vs7e1") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_kqrjn") +"texture": SubResource("AtlasTexture_0ejrm") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_0irhh") +"texture": SubResource("AtlasTexture_arul3") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_8bxj2") +"texture": SubResource("AtlasTexture_oba24") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_qnwap") +"texture": SubResource("AtlasTexture_nhvuk") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_pg781") +"texture": SubResource("AtlasTexture_bb1eb") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_s6rhb") +"texture": SubResource("AtlasTexture_1c2la") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_fbvlk") +"texture": SubResource("AtlasTexture_mb6j8") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_r3u3w") +"texture": SubResource("AtlasTexture_n1jmn") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_t1dex") +"texture": SubResource("AtlasTexture_c1ugv") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_3blxh") +"texture": SubResource("AtlasTexture_62up3") }, { "duration": 1.0, -"texture": SubResource("AtlasTexture_jmluu") +"texture": SubResource("AtlasTexture_651u2") }], "loop": false, "name": &"default", diff --git a/scenes/quests/story_quests/shjourney/1_IntroAnimacion/saltar_escena.gd b/scenes/quests/story_quests/shjourney/1_IntroAnimacion/saltar_escena.gd index 2eac36c4b4..f52fea498d 100644 --- a/scenes/quests/story_quests/shjourney/1_IntroAnimacion/saltar_escena.gd +++ b/scenes/quests/story_quests/shjourney/1_IntroAnimacion/saltar_escena.gd @@ -3,5 +3,5 @@ extends AnimatedSprite2D func _input(event): - if event.is_action_pressed("ui_select"): - get_tree().change_scene_to_file("res://scenes/quests/story_quests/shjourney/2_shjourney_intro/template_intro.tscn") + if event.is_action_pressed("interact"): + SceneSwitcher.change_to_file("res://scenes/quests/story_quests/shjourney/2_shjourney_intro/template_intro.tscn") diff --git a/scenes/quests/story_quests/shjourney/1_IntroAnimacion/timysuhermanadurmiendo-Sheet.png b/scenes/quests/story_quests/shjourney/1_IntroAnimacion/timysuhermanadurmiendo-Sheet.png index 6bad77c0f7..6d3d38bffe 100644 --- a/scenes/quests/story_quests/shjourney/1_IntroAnimacion/timysuhermanadurmiendo-Sheet.png +++ b/scenes/quests/story_quests/shjourney/1_IntroAnimacion/timysuhermanadurmiendo-Sheet.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:970a4602e1f171e0ff17dbea7a2d35e26dfe813a9ec4b7679aa2e3054e2f772f -size 38338 +oid sha256:db7cfae2898b2819af2cc220b52186259e268befb5642b14ec5acb1d42c6b587 +size 55600 diff --git a/scenes/quests/story_quests/shjourney/3_shjourney_intro/template_intro0.2.tscn b/scenes/quests/story_quests/shjourney/3_shjourney_intro/template_intro0.2.tscn index 2cb234af59..4943e99c80 100644 --- a/scenes/quests/story_quests/shjourney/3_shjourney_intro/template_intro0.2.tscn +++ b/scenes/quests/story_quests/shjourney/3_shjourney_intro/template_intro0.2.tscn @@ -24,6 +24,7 @@ [ext_resource type="PackedScene" uid="uid://dpbsi065gmh8a" path="res://scenes/game_elements/fx/fog/fog.tscn" id="25_0hk53"] [ext_resource type="PackedScene" uid="uid://ccoqpcy371psq" path="res://scenes/quests/story_quests/shjourney/3_shjourney_intro/sign.tscn" id="29_oixsc"] [ext_resource type="PackedScene" uid="uid://due8sqsrtdke1" path="res://scenes/quests/story_quests/shjourney/Otros_componentes/fire_fly.tscn" id="30_g2jpu"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm7ye"] [sub_resource type="Curve2D" id="Curve2D_s8exg"] _data = { @@ -117,6 +118,10 @@ size = Vector2(168.25, 122) [node name="StealthTemplateLevel" type="Node2D" unique_id=1303886523] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1750553201] +script = ExtResource("1_pm7ye") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="StealthGameLogic" type="Node" parent="." unique_id=1587041485] script = ExtResource("1_mtosg") diff --git a/scenes/quests/story_quests/shjourney/4_Laberinto/Laberinto.tscn b/scenes/quests/story_quests/shjourney/4_Laberinto/Laberinto.tscn index 0099d8b32f..c2f171c4f0 100644 --- a/scenes/quests/story_quests/shjourney/4_Laberinto/Laberinto.tscn +++ b/scenes/quests/story_quests/shjourney/4_Laberinto/Laberinto.tscn @@ -1,15 +1,14 @@ [gd_scene format=4 uid="uid://dyx8toyemw2vx"] [ext_resource type="Script" uid="uid://bb15xji6f5syf" path="res://scenes/quests/story_quests/shjourney/4_Laberinto/ScripBase.gd" id="1_f2sr3"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmxep"] [ext_resource type="Script" uid="uid://dnp0tjloec2d7" path="res://scenes/game_logic/stealth_game_logic.gd" id="1_wjmvn"] [ext_resource type="TileSet" uid="uid://d30304ne3bph" path="res://scenes/quests/story_quests/shjourney/4_Laberinto/tileselaberinto.tres" id="2_n2lu8"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="4_atgg6"] [ext_resource type="Texture2D" uid="uid://b3dqcmrmx0070" path="res://scenes/quests/story_quests/shjourney/4_Laberinto/personajes/presentacion/arbusto1.png" id="4_y5vmk"] [ext_resource type="PackedScene" uid="uid://cx3f86a11gutc" path="res://scenes/quests/story_quests/shjourney/4_Laberinto/personajes/mapa3/puertadungeon.tscn" id="5_6ha8o"] -[ext_resource type="Texture2D" uid="uid://d188e1afiloh3" path="res://scenes/quests/story_quests/shjourney/2_shjourney_intro/TilesIntro/GrassTileSH4Bigger.png" id="5_bw2w6"] [ext_resource type="PackedScene" uid="uid://d37mebu7atru7" path="res://scenes/game_elements/characters/enemies/guard/guard.tscn" id="5_mv628"] [ext_resource type="Texture2D" uid="uid://iptiy3bqigrh" path="res://scenes/quests/story_quests/shjourney/4_Laberinto/personajes/presentacion/rosaazul1.png" id="6_4cnrr"] -[ext_resource type="Script" uid="uid://d1ly6uhh500xu" path="res://scenes/quests/lore_quests/quest_002/1_void_runner/components/tile_map_cover.gd" id="6_lna1e"] [ext_resource type="PackedScene" uid="uid://dua6mynlw2ptw" path="res://scenes/game_elements/props/checkpoint/checkpoint.tscn" id="6_ndujb"] [ext_resource type="PackedScene" uid="uid://p6q2uo2us0il" path="res://scenes/quests/story_quests/shjourney/light.tscn" id="7_bolto"] [ext_resource type="PackedScene" uid="uid://xf8f0824nmp5" path="res://scenes/quests/story_quests/shjourney/4_Laberinto/personajes/mapa3/espiritu.tscn" id="8_6ha8o"] @@ -20,6 +19,7 @@ [ext_resource type="SpriteFrames" uid="uid://vrthlt7kah8w" path="res://scenes/quests/story_quests/shjourney/Otros_componentes/tim_sprite_frames.tres" id="11_38eo7"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="12_37aoh"] [ext_resource type="SpriteFrames" uid="uid://bjfl1ii3am8ll" path="res://scenes/quests/story_quests/shjourney/Otros_componentes/guardia_sprite_frames.tres" id="13_656p3"] +[ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="14_3ri7t"] [ext_resource type="Script" uid="uid://d1gt3e47m6nts" path="res://scenes/quests/story_quests/shjourney/4_Laberinto/UI-KEYS.gd" id="14_u1x3w"] [ext_resource type="Texture2D" uid="uid://5wscjc8yqqts" path="res://assets/first_party/collectibles/world_memory.png" id="16_7ve7e"] [ext_resource type="SpriteFrames" uid="uid://bshou7t46r4nu" path="res://scenes/quests/story_quests/shjourney/Angel/components/angel.tres" id="16_656p3"] @@ -42,797 +42,11 @@ [ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="40_u1x3w"] [ext_resource type="PackedScene" uid="uid://dpbsi065gmh8a" path="res://scenes/game_elements/fx/fog/fog.tscn" id="43_3ri7t"] -[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_sdlc6"] -texture = ExtResource("5_bw2w6") -texture_region_size = Vector2i(64, 64) -0:0/0 = 0 -1:0/0 = 0 -2:0/0 = 0 -3:0/0 = 0 -4:0/0 = 0 -5:0/0 = 0 -6:0/0 = 0 -7:0/0 = 0 -8:0/0 = 0 -9:0/0 = 0 -10:0/0 = 0 -11:0/0 = 0 -12:0/0 = 0 -13:0/0 = 0 -14:0/0 = 0 -15:0/0 = 0 -16:0/0 = 0 -17:0/0 = 0 -18:0/0 = 0 -19:0/0 = 0 -20:0/0 = 0 -21:0/0 = 0 -22:0/0 = 0 -23:0/0 = 0 -24:0/0 = 0 -25:0/0 = 0 -26:0/0 = 0 -27:0/0 = 0 -0:1/0 = 0 -1:1/0 = 0 -2:1/0 = 0 -3:1/0 = 0 -4:1/0 = 0 -5:1/0 = 0 -6:1/0 = 0 -7:1/0 = 0 -8:1/0 = 0 -9:1/0 = 0 -10:1/0 = 0 -11:1/0 = 0 -12:1/0 = 0 -13:1/0 = 0 -14:1/0 = 0 -15:1/0 = 0 -16:1/0 = 0 -17:1/0 = 0 -18:1/0 = 0 -19:1/0 = 0 -20:1/0 = 0 -21:1/0 = 0 -22:1/0 = 0 -23:1/0 = 0 -24:1/0 = 0 -25:1/0 = 0 -26:1/0 = 0 -27:1/0 = 0 -0:2/0 = 0 -1:2/0 = 0 -2:2/0 = 0 -3:2/0 = 0 -4:2/0 = 0 -5:2/0 = 0 -6:2/0 = 0 -7:2/0 = 0 -8:2/0 = 0 -9:2/0 = 0 -10:2/0 = 0 -11:2/0 = 0 -12:2/0 = 0 -13:2/0 = 0 -14:2/0 = 0 -15:2/0 = 0 -16:2/0 = 0 -17:2/0 = 0 -18:2/0 = 0 -19:2/0 = 0 -20:2/0 = 0 -21:2/0 = 0 -22:2/0 = 0 -23:2/0 = 0 -24:2/0 = 0 -25:2/0 = 0 -26:2/0 = 0 -27:2/0 = 0 -0:3/0 = 0 -1:3/0 = 0 -2:3/0 = 0 -3:3/0 = 0 -4:3/0 = 0 -5:3/0 = 0 -6:3/0 = 0 -7:3/0 = 0 -8:3/0 = 0 -9:3/0 = 0 -10:3/0 = 0 -11:3/0 = 0 -12:3/0 = 0 -13:3/0 = 0 -14:3/0 = 0 -15:3/0 = 0 -16:3/0 = 0 -17:3/0 = 0 -18:3/0 = 0 -19:3/0 = 0 -20:3/0 = 0 -21:3/0 = 0 -22:3/0 = 0 -23:3/0 = 0 -24:3/0 = 0 -25:3/0 = 0 -26:3/0 = 0 -27:3/0 = 0 -0:4/0 = 0 -1:4/0 = 0 -2:4/0 = 0 -3:4/0 = 0 -4:4/0 = 0 -5:4/0 = 0 -6:4/0 = 0 -7:4/0 = 0 -8:4/0 = 0 -9:4/0 = 0 -10:4/0 = 0 -11:4/0 = 0 -12:4/0 = 0 -13:4/0 = 0 -14:4/0 = 0 -15:4/0 = 0 -16:4/0 = 0 -17:4/0 = 0 -18:4/0 = 0 -19:4/0 = 0 -20:4/0 = 0 -21:4/0 = 0 -22:4/0 = 0 -23:4/0 = 0 -24:4/0 = 0 -25:4/0 = 0 -26:4/0 = 0 -27:4/0 = 0 -0:5/0 = 0 -1:5/0 = 0 -2:5/0 = 0 -3:5/0 = 0 -4:5/0 = 0 -5:5/0 = 0 -6:5/0 = 0 -7:5/0 = 0 -8:5/0 = 0 -9:5/0 = 0 -10:5/0 = 0 -11:5/0 = 0 -12:5/0 = 0 -13:5/0 = 0 -14:5/0 = 0 -15:5/0 = 0 -16:5/0 = 0 -17:5/0 = 0 -18:5/0 = 0 -19:5/0 = 0 -20:5/0 = 0 -21:5/0 = 0 -22:5/0 = 0 -23:5/0 = 0 -24:5/0 = 0 -25:5/0 = 0 -26:5/0 = 0 -27:5/0 = 0 -0:6/0 = 0 -1:6/0 = 0 -2:6/0 = 0 -3:6/0 = 0 -4:6/0 = 0 -5:6/0 = 0 -6:6/0 = 0 -7:6/0 = 0 -8:6/0 = 0 -9:6/0 = 0 -10:6/0 = 0 -11:6/0 = 0 -12:6/0 = 0 -13:6/0 = 0 -14:6/0 = 0 -15:6/0 = 0 -16:6/0 = 0 -17:6/0 = 0 -18:6/0 = 0 -19:6/0 = 0 -20:6/0 = 0 -21:6/0 = 0 -22:6/0 = 0 -23:6/0 = 0 -24:6/0 = 0 -25:6/0 = 0 -26:6/0 = 0 -27:6/0 = 0 -0:7/0 = 0 -1:7/0 = 0 -2:7/0 = 0 -3:7/0 = 0 -4:7/0 = 0 -5:7/0 = 0 -6:7/0 = 0 -7:7/0 = 0 -8:7/0 = 0 -9:7/0 = 0 -10:7/0 = 0 -11:7/0 = 0 -12:7/0 = 0 -13:7/0 = 0 -14:7/0 = 0 -15:7/0 = 0 -16:7/0 = 0 -17:7/0 = 0 -18:7/0 = 0 -19:7/0 = 0 -20:7/0 = 0 -21:7/0 = 0 -22:7/0 = 0 -23:7/0 = 0 -24:7/0 = 0 -25:7/0 = 0 -26:7/0 = 0 -27:7/0 = 0 -0:8/0 = 0 -1:8/0 = 0 -2:8/0 = 0 -3:8/0 = 0 -4:8/0 = 0 -5:8/0 = 0 -6:8/0 = 0 -7:8/0 = 0 -8:8/0 = 0 -9:8/0 = 0 -10:8/0 = 0 -11:8/0 = 0 -12:8/0 = 0 -13:8/0 = 0 -14:8/0 = 0 -15:8/0 = 0 -16:8/0 = 0 -17:8/0 = 0 -18:8/0 = 0 -19:8/0 = 0 -20:8/0 = 0 -21:8/0 = 0 -22:8/0 = 0 -23:8/0 = 0 -24:8/0 = 0 -25:8/0 = 0 -26:8/0 = 0 -27:8/0 = 0 -0:9/0 = 0 -1:9/0 = 0 -2:9/0 = 0 -3:9/0 = 0 -4:9/0 = 0 -5:9/0 = 0 -6:9/0 = 0 -7:9/0 = 0 -8:9/0 = 0 -9:9/0 = 0 -10:9/0 = 0 -11:9/0 = 0 -12:9/0 = 0 -13:9/0 = 0 -14:9/0 = 0 -15:9/0 = 0 -16:9/0 = 0 -17:9/0 = 0 -18:9/0 = 0 -19:9/0 = 0 -20:9/0 = 0 -21:9/0 = 0 -22:9/0 = 0 -23:9/0 = 0 -24:9/0 = 0 -25:9/0 = 0 -26:9/0 = 0 -27:9/0 = 0 -0:10/0 = 0 -1:10/0 = 0 -2:10/0 = 0 -3:10/0 = 0 -4:10/0 = 0 -5:10/0 = 0 -6:10/0 = 0 -7:10/0 = 0 -8:10/0 = 0 -9:10/0 = 0 -10:10/0 = 0 -11:10/0 = 0 -12:10/0 = 0 -13:10/0 = 0 -14:10/0 = 0 -15:10/0 = 0 -16:10/0 = 0 -17:10/0 = 0 -18:10/0 = 0 -19:10/0 = 0 -20:10/0 = 0 -21:10/0 = 0 -22:10/0 = 0 -23:10/0 = 0 -24:10/0 = 0 -25:10/0 = 0 -26:10/0 = 0 -27:10/0 = 0 -0:11/0 = 0 -1:11/0 = 0 -2:11/0 = 0 -3:11/0 = 0 -4:11/0 = 0 -5:11/0 = 0 -6:11/0 = 0 -7:11/0 = 0 -8:11/0 = 0 -9:11/0 = 0 -10:11/0 = 0 -11:11/0 = 0 -12:11/0 = 0 -13:11/0 = 0 -14:11/0 = 0 -15:11/0 = 0 -16:11/0 = 0 -17:11/0 = 0 -18:11/0 = 0 -19:11/0 = 0 -20:11/0 = 0 -21:11/0 = 0 -22:11/0 = 0 -23:11/0 = 0 -24:11/0 = 0 -25:11/0 = 0 -26:11/0 = 0 -27:11/0 = 0 -0:12/0 = 0 -1:12/0 = 0 -2:12/0 = 0 -3:12/0 = 0 -4:12/0 = 0 -5:12/0 = 0 -6:12/0 = 0 -7:12/0 = 0 -8:12/0 = 0 -9:12/0 = 0 -10:12/0 = 0 -11:12/0 = 0 -12:12/0 = 0 -13:12/0 = 0 -14:12/0 = 0 -15:12/0 = 0 -16:12/0 = 0 -17:12/0 = 0 -18:12/0 = 0 -19:12/0 = 0 -20:12/0 = 0 -21:12/0 = 0 -22:12/0 = 0 -23:12/0 = 0 -24:12/0 = 0 -25:12/0 = 0 -26:12/0 = 0 -27:12/0 = 0 -0:13/0 = 0 -1:13/0 = 0 -2:13/0 = 0 -3:13/0 = 0 -4:13/0 = 0 -5:13/0 = 0 -6:13/0 = 0 -7:13/0 = 0 -8:13/0 = 0 -9:13/0 = 0 -10:13/0 = 0 -11:13/0 = 0 -12:13/0 = 0 -13:13/0 = 0 -14:13/0 = 0 -15:13/0 = 0 -16:13/0 = 0 -17:13/0 = 0 -18:13/0 = 0 -19:13/0 = 0 -20:13/0 = 0 -21:13/0 = 0 -22:13/0 = 0 -23:13/0 = 0 -24:13/0 = 0 -25:13/0 = 0 -26:13/0 = 0 -27:13/0 = 0 -0:14/0 = 0 -1:14/0 = 0 -2:14/0 = 0 -3:14/0 = 0 -4:14/0 = 0 -5:14/0 = 0 -6:14/0 = 0 -7:14/0 = 0 -8:14/0 = 0 -9:14/0 = 0 -10:14/0 = 0 -11:14/0 = 0 -12:14/0 = 0 -13:14/0 = 0 -14:14/0 = 0 -15:14/0 = 0 -16:14/0 = 0 -17:14/0 = 0 -18:14/0 = 0 -19:14/0 = 0 -20:14/0 = 0 -21:14/0 = 0 -22:14/0 = 0 -23:14/0 = 0 -24:14/0 = 0 -25:14/0 = 0 -26:14/0 = 0 -27:14/0 = 0 -0:15/0 = 0 -1:15/0 = 0 -2:15/0 = 0 -3:15/0 = 0 -4:15/0 = 0 -5:15/0 = 0 -6:15/0 = 0 -7:15/0 = 0 -8:15/0 = 0 -9:15/0 = 0 -10:15/0 = 0 -11:15/0 = 0 -12:15/0 = 0 -13:15/0 = 0 -14:15/0 = 0 -15:15/0 = 0 -16:15/0 = 0 -17:15/0 = 0 -18:15/0 = 0 -19:15/0 = 0 -20:15/0 = 0 -21:15/0 = 0 -22:15/0 = 0 -23:15/0 = 0 -24:15/0 = 0 -25:15/0 = 0 -26:15/0 = 0 -27:15/0 = 0 -0:16/0 = 0 -1:16/0 = 0 -2:16/0 = 0 -3:16/0 = 0 -4:16/0 = 0 -5:16/0 = 0 -6:16/0 = 0 -7:16/0 = 0 -8:16/0 = 0 -9:16/0 = 0 -10:16/0 = 0 -11:16/0 = 0 -12:16/0 = 0 -13:16/0 = 0 -14:16/0 = 0 -15:16/0 = 0 -16:16/0 = 0 -17:16/0 = 0 -18:16/0 = 0 -19:16/0 = 0 -20:16/0 = 0 -21:16/0 = 0 -22:16/0 = 0 -23:16/0 = 0 -24:16/0 = 0 -25:16/0 = 0 -26:16/0 = 0 -27:16/0 = 0 -0:17/0 = 0 -1:17/0 = 0 -2:17/0 = 0 -3:17/0 = 0 -4:17/0 = 0 -5:17/0 = 0 -6:17/0 = 0 -7:17/0 = 0 -8:17/0 = 0 -9:17/0 = 0 -10:17/0 = 0 -11:17/0 = 0 -12:17/0 = 0 -13:17/0 = 0 -14:17/0 = 0 -15:17/0 = 0 -16:17/0 = 0 -17:17/0 = 0 -18:17/0 = 0 -19:17/0 = 0 -20:17/0 = 0 -21:17/0 = 0 -22:17/0 = 0 -23:17/0 = 0 -24:17/0 = 0 -25:17/0 = 0 -26:17/0 = 0 -27:17/0 = 0 -0:18/0 = 0 -1:18/0 = 0 -2:18/0 = 0 -3:18/0 = 0 -4:18/0 = 0 -5:18/0 = 0 -6:18/0 = 0 -7:18/0 = 0 -8:18/0 = 0 -9:18/0 = 0 -10:18/0 = 0 -11:18/0 = 0 -12:18/0 = 0 -13:18/0 = 0 -14:18/0 = 0 -15:18/0 = 0 -16:18/0 = 0 -17:18/0 = 0 -18:18/0 = 0 -19:18/0 = 0 -20:18/0 = 0 -21:18/0 = 0 -22:18/0 = 0 -23:18/0 = 0 -24:18/0 = 0 -25:18/0 = 0 -26:18/0 = 0 -27:18/0 = 0 -0:19/0 = 0 -1:19/0 = 0 -2:19/0 = 0 -3:19/0 = 0 -4:19/0 = 0 -5:19/0 = 0 -6:19/0 = 0 -7:19/0 = 0 -8:19/0 = 0 -9:19/0 = 0 -10:19/0 = 0 -11:19/0 = 0 -12:19/0 = 0 -13:19/0 = 0 -14:19/0 = 0 -15:19/0 = 0 -16:19/0 = 0 -17:19/0 = 0 -18:19/0 = 0 -19:19/0 = 0 -20:19/0 = 0 -21:19/0 = 0 -22:19/0 = 0 -23:19/0 = 0 -24:19/0 = 0 -25:19/0 = 0 -26:19/0 = 0 -27:19/0 = 0 -0:20/0 = 0 -1:20/0 = 0 -2:20/0 = 0 -3:20/0 = 0 -4:20/0 = 0 -5:20/0 = 0 -6:20/0 = 0 -7:20/0 = 0 -8:20/0 = 0 -9:20/0 = 0 -10:20/0 = 0 -11:20/0 = 0 -12:20/0 = 0 -13:20/0 = 0 -14:20/0 = 0 -15:20/0 = 0 -16:20/0 = 0 -17:20/0 = 0 -18:20/0 = 0 -19:20/0 = 0 -20:20/0 = 0 -21:20/0 = 0 -22:20/0 = 0 -23:20/0 = 0 -24:20/0 = 0 -25:20/0 = 0 -26:20/0 = 0 -27:20/0 = 0 -0:21/0 = 0 -1:21/0 = 0 -2:21/0 = 0 -3:21/0 = 0 -4:21/0 = 0 -5:21/0 = 0 -6:21/0 = 0 -7:21/0 = 0 -8:21/0 = 0 -9:21/0 = 0 -10:21/0 = 0 -11:21/0 = 0 -12:21/0 = 0 -13:21/0 = 0 -14:21/0 = 0 -15:21/0 = 0 -16:21/0 = 0 -17:21/0 = 0 -18:21/0 = 0 -19:21/0 = 0 -20:21/0 = 0 -21:21/0 = 0 -22:21/0 = 0 -23:21/0 = 0 -24:21/0 = 0 -25:21/0 = 0 -26:21/0 = 0 -27:21/0 = 0 -0:22/0 = 0 -1:22/0 = 0 -2:22/0 = 0 -3:22/0 = 0 -4:22/0 = 0 -5:22/0 = 0 -6:22/0 = 0 -7:22/0 = 0 -8:22/0 = 0 -9:22/0 = 0 -10:22/0 = 0 -11:22/0 = 0 -12:22/0 = 0 -13:22/0 = 0 -14:22/0 = 0 -15:22/0 = 0 -16:22/0 = 0 -17:22/0 = 0 -18:22/0 = 0 -19:22/0 = 0 -20:22/0 = 0 -21:22/0 = 0 -22:22/0 = 0 -23:22/0 = 0 -24:22/0 = 0 -25:22/0 = 0 -26:22/0 = 0 -27:22/0 = 0 -0:23/0 = 0 -1:23/0 = 0 -2:23/0 = 0 -3:23/0 = 0 -4:23/0 = 0 -5:23/0 = 0 -6:23/0 = 0 -7:23/0 = 0 -8:23/0 = 0 -9:23/0 = 0 -10:23/0 = 0 -11:23/0 = 0 -12:23/0 = 0 -13:23/0 = 0 -14:23/0 = 0 -15:23/0 = 0 -16:23/0 = 0 -17:23/0 = 0 -18:23/0 = 0 -19:23/0 = 0 -20:23/0 = 0 -21:23/0 = 0 -22:23/0 = 0 -23:23/0 = 0 -24:23/0 = 0 -25:23/0 = 0 -26:23/0 = 0 -27:23/0 = 0 -0:24/0 = 0 -1:24/0 = 0 -2:24/0 = 0 -3:24/0 = 0 -4:24/0 = 0 -5:24/0 = 0 -6:24/0 = 0 -7:24/0 = 0 -8:24/0 = 0 -9:24/0 = 0 -10:24/0 = 0 -11:24/0 = 0 -12:24/0 = 0 -13:24/0 = 0 -14:24/0 = 0 -15:24/0 = 0 -16:24/0 = 0 -17:24/0 = 0 -18:24/0 = 0 -19:24/0 = 0 -20:24/0 = 0 -21:24/0 = 0 -22:24/0 = 0 -23:24/0 = 0 -24:24/0 = 0 -25:24/0 = 0 -26:24/0 = 0 -27:24/0 = 0 -0:25/0 = 0 -1:25/0 = 0 -2:25/0 = 0 -3:25/0 = 0 -4:25/0 = 0 -5:25/0 = 0 -6:25/0 = 0 -7:25/0 = 0 -8:25/0 = 0 -9:25/0 = 0 -10:25/0 = 0 -11:25/0 = 0 -12:25/0 = 0 -13:25/0 = 0 -14:25/0 = 0 -15:25/0 = 0 -16:25/0 = 0 -17:25/0 = 0 -18:25/0 = 0 -19:25/0 = 0 -20:25/0 = 0 -21:25/0 = 0 -22:25/0 = 0 -23:25/0 = 0 -24:25/0 = 0 -25:25/0 = 0 -26:25/0 = 0 -27:25/0 = 0 -0:26/0 = 0 -1:26/0 = 0 -2:26/0 = 0 -3:26/0 = 0 -4:26/0 = 0 -5:26/0 = 0 -6:26/0 = 0 -7:26/0 = 0 -8:26/0 = 0 -9:26/0 = 0 -10:26/0 = 0 -11:26/0 = 0 -12:26/0 = 0 -13:26/0 = 0 -14:26/0 = 0 -15:26/0 = 0 -16:26/0 = 0 -17:26/0 = 0 -18:26/0 = 0 -19:26/0 = 0 -20:26/0 = 0 -21:26/0 = 0 -22:26/0 = 0 -23:26/0 = 0 -24:26/0 = 0 -25:26/0 = 0 -26:26/0 = 0 -27:26/0 = 0 -0:27/0 = 0 -1:27/0 = 0 -2:27/0 = 0 -3:27/0 = 0 -4:27/0 = 0 -5:27/0 = 0 -6:27/0 = 0 -7:27/0 = 0 -8:27/0 = 0 -9:27/0 = 0 -10:27/0 = 0 -11:27/0 = 0 -12:27/0 = 0 -13:27/0 = 0 -14:27/0 = 0 -15:27/0 = 0 -16:27/0 = 0 -17:27/0 = 0 -18:27/0 = 0 -19:27/0 = 0 -20:27/0 = 0 -21:27/0 = 0 -22:27/0 = 0 -23:27/0 = 0 -24:27/0 = 0 -25:27/0 = 0 -26:27/0 = 0 -27:27/0 = 0 - -[sub_resource type="TileSet" id="TileSet_jg4bf"] -tile_size = Vector2i(64, 64) -sources/0 = SubResource("TileSetAtlasSource_sdlc6") +[sub_resource type="Resource" id="Resource_b8bcu"] +script = ExtResource("14_3ri7t") +walk_speed = 200.0 +run_speed = 350.0 +metadata/_custom_type_script = "uid://csev4hv57utxv" [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qn20b"] bg_color = Color(0.6, 0.6, 0.6, 0.309804) @@ -1119,6 +333,10 @@ radius = 70.5762 y_sort_enabled = true script = ExtResource("1_f2sr3") +[node name="PlayerMode" type="Node" parent="." unique_id=1980879862] +script = ExtResource("1_pmxep") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="StealthGameLogic" type="Node" parent="." unique_id=1943064280] script = ExtResource("1_wjmvn") @@ -1144,12 +362,6 @@ scale = Vector2(3.64516, 3.64516) position = Vector2(43.0105, -44.6237) scale = Vector2(3.64516, 3.64516) -[node name="TileMapCover" type="TileMapLayer" parent="TileMapLayers" unique_id=1973615202] -tile_map_data = PackedByteArray("AAALAOgAAAAKAA0AAAAKAOgAAAAKAA0AAAAMAOcAAAAKAA0AAAANAOcAAAAKAA0AAAALAOcAAAAKAA0AAAACADsAAAADAAIAAAA=") -tile_set = SubResource("TileSet_jg4bf") -script = ExtResource("6_lna1e") -metadata/_custom_type_script = "uid://d1ly6uhh500xu" - [node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=239327014] tile_map_data = PackedByteArray("AAAfAAUADQABAAEAAAAfAAQADQABAAEAAAAfAAMADQABAAEAAAAeAAUADQABAAEAAAAeAAQADQABAAEAAAAeAAMADQABAAEAAAAdAAoADQABAAEAAAAdAAkADQABAAEAAAAdAAgADQABAAEAAAAdAAYADQABAAEAAAAdAAUADQABAAEAAAAdAAQADQABAAEAAAAdAAMADQABAAEAAAAcAAoADQABAAEAAAAcAAkADQABAAEAAAAcAAgADQABAAEAAAAcAAYADQABAAEAAAAcAAUADQABAAEAAAAcAAQADQABAAEAAAAcAAMADQABAAEAAAAbAAoADQABAAEAAAAbAAkADQABAAEAAAAbAAgADQABAAEAAAAbAAYADQABAAEAAAAbAAUADQABAAEAAAAbAAQADQABAAEAAAAbAAMADQABAAEAAAAaAAoADQABAAEAAAAaAAkADQABAAEAAAAaAAgADQABAAEAAAAaAAYADQABAAEAAAAaAAUADQABAAEAAAAaAAQADQABAAEAAAAaAAMADQABAAEAAAAZAAoADQABAAEAAAAZAAkADQABAAEAAAAZAAgADQABAAEAAAAZAAcADQABAAEAAAAZAAYADQABAAEAAAAZAAUADQABAAEAAAAZAAQADQABAAEAAAAZAAMADQABAAEAAAAYAAoADQABAAEAAAAYAAkADQABAAEAAAAYAAgADQABAAEAAAAYAAcADQABAAEAAAAYAAYADQABAAEAAAAYAAUADQABAAEAAAAYAAQADQABAAEAAAAYAAMADQABAAEAAAAXAAoADQABAAEAAAAXAAkADQABAAEAAAAXAAgADQABAAEAAAAXAAcADQABAAEAAAAXAAYADQABAAEAAAAXAAUADQABAAEAAAAXAAQADQABAAEAAAAXAAMADQABAAEAAAAWAAoADQABAAEAAAAWAAkADQABAAEAAAAWAAgADQABAAEAAAAWAAcADQABAAEAAAAWAAYADQABAAEAAAAWAAUADQABAAEAAAAWAAQADQABAAEAAAAWAAMADQABAAEAAAAVAAoADQABAAEAAAAVAAkADQABAAEAAAAVAAgADQABAAEAAAAVAAcADQABAAEAAAAVAAYADQABAAEAAAAVAAUADQABAAEAAAAVAAQADQABAAEAAAAVAAMADQABAAEAAAAUAAoADQABAAEAAAAUAAkADQABAAEAAAAUAAgADQABAAEAAAAUAAcADQABAAEAAAAUAAYADQABAAEAAAAUAAQADQABAAEAAAAUAAMADQABAAEAAAATAAoADQABAAEAAAATAAkADQABAAEAAAATAAgADQABAAEAAAATAAcADQABAAEAAAATAAYADQABAAEAAAATAAUADQABAAEAAAATAAQADQABAAEAAAATAAMADQABAAEAAAASAAoADQABAAEAAAASAAkADQABAAEAAAASAAgADQABAAEAAAASAAcADQABAAEAAAASAAYADQABAAEAAAASAAUADQABAAEAAAASAAQADQABAAEAAAASAAMADQABAAEAAAARAAkADQABAAEAAAARAAgADQABAAEAAAARAAcADQABAAEAAAARAAYADQABAAEAAAARAAUADQABAAEAAAARAAQADQABAAEAAAARAAMADQABAAEAAAAQAAoADQABAAEAAAAQAAcADQABAAEAAAAQAAYADQABAAEAAAAQAAUADQABAAEAAAAQAAQADQABAAEAAAAQAAMADQABAAEAAAAAAAoADQABAAEAAAAAAAkADQABAAEAAAAAAAgADQABAAEAAAAAAAcADQABAAEAAAAAAAYADQABAAEAAAAAAAUADQABAAEAAAAAAAQADQABAAEAAAAAAAMADQABAAEAAAAdAAcADQABAAEAAAAcAAcADQABAAEAAAAbAAcADQABAAEAAAAaAAcADQABAAEAAAAgAAMADQABAAEAAAAgAAQADQABAAEAAAAhAAQADQABAAEAAAAhAAUADQABAAEAAAAjAAUADQABAAEAAAAjAAQADQABAAEAAAAiAAQADQABAAEAAAAhAAMADQABAAEAAAAiAAMADQABAAEAAAAjAAMADQABAAEAAAAkAAMADQABAAEAAAAkAAQADQABAAEAAAAkAAUADQABAAEAAAAkABQADQABAAEAAAAkABMADQABAAEAAAAkABIADQABAAEAAAAkABEADQABAAEAAAAkABAADQABAAEAAAAjABQADQABAAEAAAAjABMADQABAAEAAAAjABIADQABAAEAAAAjABEADQABAAEAAAAjABAADQABAAEAAAAiABQADQABAAEAAAAiABMADQABAAEAAAAiABIADQABAAEAAAAiABEADQABAAEAAAAiABAADQABAAEAAAAiAAUADQABAAEAAAAhABQADQABAAEAAAAhABMADQABAAEAAAAhABIADQABAAEAAAAhABEADQABAAEAAAAhABAADQABAAEAAAAgABQADQABAAEAAAAgABMADQABAAEAAAAgABIADQABAAEAAAAgABEADQABAAEAAAAgABAADQABAAEAAAAgAAUADQABAAEAAAAlABQADQABAAEAAAAlABMADQABAAEAAAAlABIADQABAAEAAAAlABEADQABAAEAAAAlABAADQABAAEAAAAlAAUADQABAAEAAAAlAAQADQABAAEAAAAlAAMADQABAAEAAAAmABQADQABAAEAAAAmABMADQABAAEAAAAmABIADQABAAEAAAAmABEADQABAAEAAAAmABAADQABAAEAAAAmAAUADQABAAEAAAAmAAQADQABAAEAAAAmAAMADQABAAEAAAAnABQADQABAAEAAAAnABMADQABAAEAAAAnABIADQABAAEAAAAnABEADQABAAEAAAAnABAADQABAAEAAAAnAAUADQABAAEAAAAnAAQADQABAAEAAAAnAAMADQABAAEAAAAAAAsADQABAAEAAAAOAA0ADQABAAEAAAAPAA0ADQABAAEAAAAQAA0ADQABAAEAAAARAA0ADQABAAEAAAASAA0ADQABAAEAAAATAA0ADQABAAEAAAAUAA0ADQABAAEAAAAVAA0ADQABAAEAAAAVAA4ADQABAAEAAAAWAA4ADQABAAEAAAAXAA4ADQABAAEAAAAYAA4ADQABAAEAAAAZAA4ADQABAAEAAAAAAAwADQABAAEAAAAAAA0ADQABAAEAAAAAAA4ADQABAAEAAAAAAA8ADQABAAEAAAAAABAADQABAAEAAAAAABEADQABAAEAAAAAABIADQABAAEAAAAAABMADQABAAEAAAAAABQADQABAAEAAAAAABUADQABAAEAAAAAABYADQABAAEAAAAAABcADQABAAEAAAAAABgADQABAAEAAAAAABkADQABAAEAAAABAA0ADQABAAEAAAABAA4ADQABAAEAAAABAA8ADQABAAEAAAABABAADQABAAEAAAABABEADQABAAEAAAABABIADQABAAEAAAABABMADQABAAEAAAABABQADQABAAEAAAABABUADQABAAEAAAABABYADQABAAEAAAABABcADQABAAEAAAABABgADQABAAEAAAABABkADQABAAEAAAACAA0ADQABAAEAAAACAA4ADQABAAEAAAACAA8ADQABAAEAAAACABAADQABAAEAAAACABEADQABAAEAAAACABIADQABAAEAAAACABMADQABAAEAAAACABQADQABAAEAAAACABUADQABAAEAAAACABYADQABAAEAAAACABcADQABAAEAAAACABgADQABAAEAAAACABkADQABAAEAAAADAA0ADQABAAEAAAADAA4ADQABAAEAAAADAA8ADQABAAEAAAADABAADQABAAEAAAADABEADQABAAEAAAADABIADQABAAEAAAADABMADQABAAEAAAADABQADQABAAEAAAADABUADQABAAEAAAADABYADQABAAEAAAADABcADQABAAEAAAADABgADQABAAEAAAADABkADQABAAEAAAAEAA0ADQABAAEAAAAEAA4ADQABAAEAAAAEAA8ADQABAAEAAAAEABAADQABAAEAAAAEABEADQABAAEAAAAEABIADQABAAEAAAAEABMADQABAAEAAAAEABQADQABAAEAAAAEABUADQABAAEAAAAEABYADQABAAEAAAAEABcADQABAAEAAAAEABgADQABAAEAAAAEABkADQABAAEAAAAFAA0ADQABAAEAAAAFAA4ADQABAAEAAAAFAA8ADQABAAEAAAAFABAADQABAAEAAAAFABEADQABAAEAAAAFABIADQABAAEAAAAFABMADQABAAEAAAAFABQADQABAAEAAAAFABUADQABAAEAAAAFABYADQABAAEAAAAFABcADQABAAEAAAAFABgADQABAAEAAAAFABkADQABAAEAAAAGAA0ADQABAAEAAAAGAA4ADQABAAEAAAAGAA8ADQABAAEAAAAGABAADQABAAEAAAAGABEADQABAAEAAAAGABIADQABAAEAAAAGABMADQABAAEAAAAGABQADQABAAEAAAAGABUADQABAAEAAAAGABYADQABAAEAAAAGABcADQABAAEAAAAGABgADQABAAEAAAAGABkADQABAAEAAAAHAA0ADQABAAEAAAAHAA4ADQABAAEAAAAHAA8ADQABAAEAAAAHABAADQABAAEAAAAHABEADQABAAEAAAAHABIADQABAAEAAAAHABMADQABAAEAAAAHABQADQABAAEAAAAHABUADQABAAEAAAAHABYADQABAAEAAAAHABcADQABAAEAAAAHABgADQABAAEAAAAHABkADQABAAEAAAAIAA0ADQABAAEAAAAIAA4ADQABAAEAAAAIAA8ADQABAAEAAAAIABAADQABAAEAAAAIABEADQABAAEAAAAIABIADQABAAEAAAAIABMADQABAAEAAAAIABQADQABAAEAAAAIABUADQABAAEAAAAIABYADQABAAEAAAAIABcADQABAAEAAAAIABgADQABAAEAAAAIABkADQABAAEAAAAJAA0ADQABAAEAAAAJAA4ADQABAAEAAAAJAA8ADQABAAEAAAAJABAADQABAAEAAAAJABEADQABAAEAAAAJABIADQABAAEAAAAJABMADQABAAEAAAAJABQADQABAAEAAAAJABUADQABAAEAAAAJABYADQABAAEAAAAJABcADQABAAEAAAAJABgADQABAAEAAAAJABkADQABAAEAAAAKAA0ADQABAAEAAAAKAA4ADQABAAEAAAAKAA8ADQABAAEAAAAKABAADQABAAEAAAAKABEADQABAAEAAAAKABIADQABAAEAAAAKABMADQABAAEAAAAKABQADQABAAEAAAAKABUADQABAAEAAAAKABYADQABAAEAAAAKABcADQABAAEAAAAKABgADQABAAEAAAAKABkADQABAAEAAAALAA0ADQABAAEAAAALAA4ADQABAAEAAAALAA8ADQABAAEAAAALABAADQABAAEAAAALABEADQABAAEAAAALABIADQABAAEAAAALABMADQABAAEAAAALABQADQABAAEAAAALABUADQABAAEAAAALABYADQABAAEAAAALABcADQABAAEAAAALABgADQABAAEAAAALABkADQABAAEAAAAMAA0ADQABAAEAAAAMAA4ADQABAAEAAAAMAA8ADQABAAEAAAAMABAADQABAAEAAAAMABEADQABAAEAAAAMABIADQABAAEAAAAMABMADQABAAEAAAAMABQADQABAAEAAAAMABUADQABAAEAAAAMABYADQABAAEAAAAMABcADQABAAEAAAAMABgADQABAAEAAAAMABkADQABAAEAAAANAA0ADQABAAEAAAANAA4ADQABAAEAAAANAA8ADQABAAEAAAANABAADQABAAEAAAANABEADQABAAEAAAANABIADQABAAEAAAANABMADQABAAEAAAANABQADQABAAEAAAANABUADQABAAEAAAANABYADQABAAEAAAANABcADQABAAEAAAANABgADQABAAEAAAANABkADQABAAEAAAAOAA4ADQABAAEAAAAOAA8ADQABAAEAAAAOABAADQABAAEAAAAOABEADQABAAEAAAAOABIADQABAAEAAAAOABMADQABAAEAAAAOABQADQABAAEAAAAOABUADQABAAEAAAAOABYADQABAAEAAAAOABcADQABAAEAAAAOABgADQABAAEAAAAOABkADQABAAEAAAAPAA4ADQABAAEAAAAPAA8ADQABAAEAAAAPABAADQABAAEAAAAPABEADQABAAEAAAAPABIADQABAAEAAAAPABMADQABAAEAAAAPABQADQABAAEAAAAPABUADQABAAEAAAAPABYADQABAAEAAAAPABcADQABAAEAAAAPABgADQABAAEAAAAPABkADQABAAEAAAAQAAsADQABAAEAAAAQAAwADQABAAEAAAAQAA4ADQABAAEAAAAQAA8ADQABAAEAAAAQABAADQABAAEAAAAQABEADQABAAEAAAAQABIADQABAAEAAAAQABMADQABAAEAAAAQABQADQABAAEAAAAQABUADQABAAEAAAAQABYADQABAAEAAAAQABcADQABAAEAAAAQABgADQABAAEAAAAQABkADQABAAEAAAARAAsADQABAAEAAAARAAwADQABAAEAAAARAA4ADQABAAEAAAARAA8ADQABAAEAAAARABAADQABAAEAAAARABEADQABAAEAAAARABIADQABAAEAAAARABMADQABAAEAAAARABQADQABAAEAAAARABUADQABAAEAAAARABYADQABAAEAAAARABcADQABAAEAAAARABgADQABAAEAAAARABkADQABAAEAAAASAAsADQABAAEAAAASAAwADQABAAEAAAASAA4ADQABAAEAAAASAA8ADQABAAEAAAASABAADQABAAEAAAASABEADQABAAEAAAASABIADQABAAEAAAASABMADQABAAEAAAASABQADQABAAEAAAASABUADQABAAEAAAASABYADQABAAEAAAASABcADQABAAEAAAASABgADQABAAEAAAASABkADQABAAEAAAATAAsADQABAAEAAAATAAwADQABAAEAAAATAA4ADQABAAEAAAATAA8ADQABAAEAAAATABAADQABAAEAAAATABEADQABAAEAAAATABIADQABAAEAAAATABMADQABAAEAAAATABQADQABAAEAAAATABUADQABAAEAAAATABYADQABAAEAAAATABcADQABAAEAAAATABgADQABAAEAAAATABkADQABAAEAAAAUAAsADQABAAEAAAAUAAwADQABAAEAAAAUAA4ADQABAAEAAAAUAA8ADQABAAEAAAAUABAADQABAAEAAAAUABEADQABAAEAAAAUABIADQABAAEAAAAUABMADQABAAEAAAAUABQADQABAAEAAAAUABUADQABAAEAAAAUABYADQABAAEAAAAUABcADQABAAEAAAAUABgADQABAAEAAAAUABkADQABAAEAAAAVAAsADQABAAEAAAAVAAwADQABAAEAAAAVAA8ADQABAAEAAAAVABAADQABAAEAAAAVABEADQABAAEAAAAVABIADQABAAEAAAAVABMADQABAAEAAAAVABQADQABAAEAAAAVABUADQABAAEAAAAVABYADQABAAEAAAAVABcADQABAAEAAAAVABgADQABAAEAAAAVABkADQABAAEAAAAWAAsADQABAAEAAAAWAAwADQABAAEAAAAWAA0ADQABAAEAAAAWAA8ADQABAAEAAAAWABAADQABAAEAAAAWABEADQABAAEAAAAWABIADQABAAEAAAAWABMADQABAAEAAAAWABQADQABAAEAAAAWABUADQABAAEAAAAWABYADQABAAEAAAAWABcADQABAAEAAAAWABgADQABAAEAAAAWABkADQABAAEAAAAXAAsADQABAAEAAAAXAAwADQABAAEAAAAXAA0ADQABAAEAAAAXAA8ADQABAAEAAAAXABAADQABAAEAAAAXABEADQABAAEAAAAXABIADQABAAEAAAAXABMADQABAAEAAAAXABQADQABAAEAAAAXABUADQABAAEAAAAXABYADQABAAEAAAAXABcADQABAAEAAAAXABgADQABAAEAAAAXABkADQABAAEAAAAYAAsADQABAAEAAAAYAAwADQABAAEAAAAYAA0ADQABAAEAAAAYAA8ADQABAAEAAAAYABAADQABAAEAAAAYABEADQABAAEAAAAYABIADQABAAEAAAAYABMADQABAAEAAAAYABQADQABAAEAAAAYABUADQABAAEAAAAYABYADQABAAEAAAAYABcADQABAAEAAAAYABgADQABAAEAAAAYABkADQABAAEAAAAZAAsADQABAAEAAAAZAAwADQABAAEAAAAZAA0ADQABAAEAAAAZAA8ADQABAAEAAAAZABAADQABAAEAAAAZABEADQABAAEAAAAZABIADQABAAEAAAAZABMADQABAAEAAAAZABQADQABAAEAAAAZABUADQABAAEAAAAZABYADQABAAEAAAAZABcADQABAAEAAAAZABgADQABAAEAAAAZABkADQABAAEAAAAaAAsADQABAAEAAAAaAAwADQABAAEAAAAaAA0ADQABAAEAAAAaAA4ADQABAAEAAAAaAA8ADQABAAEAAAAaABAADQABAAEAAAAaABEADQABAAEAAAAaABIADQABAAEAAAAaABMADQABAAEAAAAaABQADQABAAEAAAAaABUADQABAAEAAAAaABYADQABAAEAAAAaABcADQABAAEAAAAaABgADQABAAEAAAAaABkADQABAAEAAAAbAAsADQABAAEAAAAbAAwADQABAAEAAAAbAA0ADQABAAEAAAAbAA4ADQABAAEAAAAbAA8ADQABAAEAAAAbABAADQABAAEAAAAbABEADQABAAEAAAAbABIADQABAAEAAAAbABMADQABAAEAAAAbABQADQABAAEAAAAbABUADQABAAEAAAAbABYADQABAAEAAAAbABcADQABAAEAAAAbABgADQABAAEAAAAbABkADQABAAEAAAAcAAsADQABAAEAAAAcAAwADQABAAEAAAAcAA0ADQABAAEAAAAcAA4ADQABAAEAAAAcAA8ADQABAAEAAAAcABAADQABAAEAAAAcABEADQABAAEAAAAcABIADQABAAEAAAAcABMADQABAAEAAAAcABQADQABAAEAAAAcABUADQABAAEAAAAcABYADQABAAEAAAAcABcADQABAAEAAAAcABgADQABAAEAAAAcABkADQABAAEAAAAdAAsADQABAAEAAAAdAAwADQABAAEAAAAdAA0ADQABAAEAAAAdAA4ADQABAAEAAAAdAA8ADQABAAEAAAAdABAADQABAAEAAAAdABEADQABAAEAAAAdABIADQABAAEAAAAdABMADQABAAEAAAAdABQADQABAAEAAAAdABUADQABAAEAAAAdABYADQABAAEAAAAdABcADQABAAEAAAAdABgADQABAAEAAAAdABkADQABAAEAAAAeABAADQABAAEAAAAeABEADQABAAEAAAAeABIADQABAAEAAAAeABMADQABAAEAAAAeABQADQABAAEAAAAeABUADQABAAEAAAAeABYADQABAAEAAAAeABcADQABAAEAAAAeABgADQABAAEAAAAeABkADQABAAEAAAAfABAADQABAAEAAAAfABEADQABAAEAAAAfABIADQABAAEAAAAfABMADQABAAEAAAAfABQADQABAAEAAAAfABUADQABAAEAAAAfABYADQABAAEAAAAfABcADQABAAEAAAAfABgADQABAAEAAAAfABkADQABAAEAAAAgABUADQABAAEAAAAgABYADQABAAEAAAAgABcADQABAAEAAAAgABgADQABAAEAAAAgABkADQABAAEAAAAhABUADQABAAEAAAAhABYADQABAAEAAAAhABcADQABAAEAAAAhABgADQABAAEAAAAhABkADQABAAEAAAAiABUADQABAAEAAAAiABYADQABAAEAAAAiABcADQABAAEAAAAiABgADQABAAEAAAAiABkADQABAAEAAAAjABUADQABAAEAAAAjABYADQABAAEAAAAjABcADQABAAEAAAAjABgADQABAAEAAAAjABkADQABAAEAAAAkABUADQABAAEAAAAkABYADQABAAEAAAAkABcADQABAAEAAAAkABgADQABAAEAAAAkABkADQABAAEAAAAlABUADQABAAEAAAAlABYADQABAAEAAAAlABcADQABAAEAAAAlABgADQABAAEAAAAlABkADQABAAEAAAAmABUADQABAAEAAAAmABYADQABAAEAAAAmABcADQABAAEAAAAmABgADQABAAEAAAAmABkADQABAAEAAAAnABUADQABAAEAAAAnABYADQABAAEAAAAnABcADQABAAEAAAAnABgADQABAAEAAAAnABkADQABAAEAAAAAAAAADQABAAEAAAAAAAEADQABAAEAAAAAAAIADQABAAEAAAAAABoADQABAAEAAAAAABsADQABAAEAAAAAABwADQABAAEAAAAAAB0ADQABAAEAAAAAAB4ADQABAAEAAAAAAB8ADQABAAEAAAAAACAADQABAAEAAAABAAAADQABAAEAAAABAAEADQABAAEAAAABAAIADQABAAEAAAABABoADQABAAEAAAABABsADQABAAEAAAABABwADQABAAEAAAABAB0ADQABAAEAAAABAB4ADQABAAEAAAABAB8ADQABAAEAAAABACAADQABAAEAAAACAAAADQABAAEAAAACAAEADQABAAEAAAACAAIADQABAAEAAAACABoADQABAAEAAAACABsADQABAAEAAAACABwADQABAAEAAAACAB0ADQABAAEAAAACAB4ADQABAAEAAAACAB8ADQABAAEAAAACACAADQABAAEAAAADAAAADQABAAEAAAADAAEADQABAAEAAAADAAIADQABAAEAAAADABoADQABAAEAAAADABsADQABAAEAAAADABwADQABAAEAAAADAB0ADQABAAEAAAADAB4ADQABAAEAAAADAB8ADQABAAEAAAADACAADQABAAEAAAAEAAAADQABAAEAAAAEAAEADQABAAEAAAAEAAIADQABAAEAAAAEABoADQABAAEAAAAEABsADQABAAEAAAAEABwADQABAAEAAAAEAB0ADQABAAEAAAAEAB4ADQABAAEAAAAEAB8ADQABAAEAAAAEACAADQABAAEAAAAFAAAADQABAAEAAAAFAAEADQABAAEAAAAFAAIADQABAAEAAAAFABoADQABAAEAAAAFABsADQABAAEAAAAFABwADQABAAEAAAAFAB0ADQABAAEAAAAFAB4ADQABAAEAAAAFAB8ADQABAAEAAAAFACAADQABAAEAAAAGAAAADQABAAEAAAAGAAEADQABAAEAAAAGAAIADQABAAEAAAAGABoADQABAAEAAAAGABsADQABAAEAAAAGABwADQABAAEAAAAGAB0ADQABAAEAAAAGAB4ADQABAAEAAAAGAB8ADQABAAEAAAAGACAADQABAAEAAAAHAAAADQABAAEAAAAHAAEADQABAAEAAAAHAAIADQABAAEAAAAHABoADQABAAEAAAAHABsADQABAAEAAAAHABwADQABAAEAAAAHAB0ADQABAAEAAAAHAB4ADQABAAEAAAAHAB8ADQABAAEAAAAHACAADQABAAEAAAAIAAAADQABAAEAAAAIAAEADQABAAEAAAAIAAIADQABAAEAAAAIABoADQABAAEAAAAIABsADQABAAEAAAAIABwADQABAAEAAAAIAB0ADQABAAEAAAAIAB4ADQABAAEAAAAIAB8ADQABAAEAAAAIACAADQABAAEAAAAJAAAADQABAAEAAAAJAAEADQABAAEAAAAJAAIADQABAAEAAAAJABoADQABAAEAAAAJABsADQABAAEAAAAJABwADQABAAEAAAAJAB0ADQABAAEAAAAJAB4ADQABAAEAAAAJAB8ADQABAAEAAAAJACAADQABAAEAAAAKAAAADQABAAEAAAAKAAEADQABAAEAAAAKAAIADQABAAEAAAAKABoADQABAAEAAAAKABsADQABAAEAAAAKABwADQABAAEAAAAKAB0ADQABAAEAAAAKAB4ADQABAAEAAAAKAB8ADQABAAEAAAAKACAADQABAAEAAAALAAAADQABAAEAAAALAAEADQABAAEAAAALAAIADQABAAEAAAALABoADQABAAEAAAALABsADQABAAEAAAALABwADQABAAEAAAALAB0ADQABAAEAAAALAB4ADQABAAEAAAALAB8ADQABAAEAAAALACAADQABAAEAAAAMAAAADQABAAEAAAAMAAEADQABAAEAAAAMAAIADQABAAEAAAAMABoADQABAAEAAAAMABsADQABAAEAAAAMABwADQABAAEAAAAMAB0ADQABAAEAAAAMAB4ADQABAAEAAAAMAB8ADQABAAEAAAAMACAADQABAAEAAAANAAAADQABAAEAAAANAAEADQABAAEAAAANAAIADQABAAEAAAANABoADQABAAEAAAANABsADQABAAEAAAANABwADQABAAEAAAANAB0ADQABAAEAAAANAB4ADQABAAEAAAANAB8ADQABAAEAAAANACAADQABAAEAAAAOAAAADQABAAEAAAAOAAEADQABAAEAAAAOAAIADQABAAEAAAAOABoADQABAAEAAAAOABsADQABAAEAAAAOABwADQABAAEAAAAOAB0ADQABAAEAAAAOAB4ADQABAAEAAAAOAB8ADQABAAEAAAAOACAADQABAAEAAAAPAAAADQABAAEAAAAPAAEADQABAAEAAAAPAAIADQABAAEAAAAPABoADQABAAEAAAAPABsADQABAAEAAAAPABwADQABAAEAAAAPAB0ADQABAAEAAAAPAB4ADQABAAEAAAAPAB8ADQABAAEAAAAPACAADQABAAEAAAAQAAAADQABAAEAAAAQAAEADQABAAEAAAAQAAIADQABAAEAAAAQABoADQABAAEAAAAQABsADQABAAEAAAAQABwADQABAAEAAAAQAB0ADQABAAEAAAAQAB4ADQABAAEAAAAQAB8ADQABAAEAAAAQACAADQABAAEAAAARAAAADQABAAEAAAARAAEADQABAAEAAAARAAIADQABAAEAAAARABsADQABAAEAAAARABwADQABAAEAAAARAB0ADQABAAEAAAARAB4ADQABAAEAAAARAB8ADQABAAEAAAARACAADQABAAEAAAASAAAADQABAAEAAAASAAEADQABAAEAAAASAAIADQABAAEAAAASABoADQABAAEAAAASABsADQABAAEAAAASABwADQABAAEAAAASAB0ADQABAAEAAAASAB4ADQABAAEAAAASAB8ADQABAAEAAAASACAADQABAAEAAAATAAAADQABAAEAAAATAAEADQABAAEAAAATAAIADQABAAEAAAATABoADQABAAEAAAATABsADQABAAEAAAATABwADQABAAEAAAATAB0ADQABAAEAAAATAB4ADQABAAEAAAATAB8ADQABAAEAAAATACAADQABAAEAAAAUAAAADQABAAEAAAAUAAEADQABAAEAAAAUAAIADQABAAEAAAAUABoADQABAAEAAAAUABsADQABAAEAAAAUABwADQABAAEAAAAUAB0ADQABAAEAAAAUAB4ADQABAAEAAAAUAB8ADQABAAEAAAAUACAADQABAAEAAAAVAAAADQABAAEAAAAVAAEADQABAAEAAAAVAAIADQABAAEAAAAVABoADQABAAEAAAAVABsADQABAAEAAAAVABwADQABAAEAAAAVAB0ADQABAAEAAAAVAB4ADQABAAEAAAAVAB8ADQABAAEAAAAVACAADQABAAEAAAAWAAAADQABAAEAAAAWAAEADQABAAEAAAAWAAIADQABAAEAAAAWABoADQABAAEAAAAWABsADQABAAEAAAAWABwADQABAAEAAAAWAB0ADQABAAEAAAAWAB4ADQABAAEAAAAWAB8ADQABAAEAAAAWACAADQABAAEAAAAXAAAADQABAAEAAAAXAAEADQABAAEAAAAXAAIADQABAAEAAAAXABoADQABAAEAAAAXABsADQABAAEAAAAXABwADQABAAEAAAAXAB0ADQABAAEAAAAXAB4ADQABAAEAAAAXAB8ADQABAAEAAAAXACAADQABAAEAAAAYAAAADQABAAEAAAAYAAEADQABAAEAAAAYAAIADQABAAEAAAAYABoADQABAAEAAAAYABsADQABAAEAAAAYABwADQABAAEAAAAYAB0ADQABAAEAAAAYAB4ADQABAAEAAAAYAB8ADQABAAEAAAAYACAADQABAAEAAAAZAAAADQABAAEAAAAZAAEADQABAAEAAAAZAAIADQABAAEAAAAZABoADQABAAEAAAAZABsADQABAAEAAAAZABwADQABAAEAAAAZAB0ADQABAAEAAAAZAB4ADQABAAEAAAAZAB8ADQABAAEAAAAZACAADQABAAEAAAAaAAAADQABAAEAAAAaAAEADQABAAEAAAAaAAIADQABAAEAAAAaABoADQABAAEAAAAaABsADQABAAEAAAAaABwADQABAAEAAAAaAB0ADQABAAEAAAAaAB4ADQABAAEAAAAaAB8ADQABAAEAAAAaACAADQABAAEAAAAbAAAADQABAAEAAAAbAAEADQABAAEAAAAbAAIADQABAAEAAAAbABoADQABAAEAAAAbABsADQABAAEAAAAbABwADQABAAEAAAAbAB0ADQABAAEAAAAbAB4ADQABAAEAAAAbAB8ADQABAAEAAAAbACAADQABAAEAAAAcAAAADQABAAEAAAAcAAEADQABAAEAAAAcAAIADQABAAEAAAAcABoADQABAAEAAAAcABsADQABAAEAAAAcABwADQABAAEAAAAcAB0ADQABAAEAAAAcAB4ADQABAAEAAAAcAB8ADQABAAEAAAAcACAADQABAAEAAAAdAAAADQABAAEAAAAdAAEADQABAAEAAAAdAAIADQABAAEAAAAdABoADQABAAEAAAAdABsADQABAAEAAAAdABwADQABAAEAAAAdAB0ADQABAAEAAAAdAB4ADQABAAEAAAAdAB8ADQABAAEAAAAdACAADQABAAEAAAAeAAAADQABAAEAAAAeAAEADQABAAEAAAAeAAIADQABAAEAAAAeABoADQABAAEAAAAeABsADQABAAEAAAAeABwADQABAAEAAAAeAB0ADQABAAEAAAAeAB4ADQABAAEAAAAeAB8ADQABAAEAAAAeACAADQABAAEAAAAfAAAADQABAAEAAAAfAAEADQABAAEAAAAfAAIADQABAAEAAAAfABoADQABAAEAAAAfABsADQABAAEAAAAfABwADQABAAEAAAAfAB0ADQABAAEAAAAfAB4ADQABAAEAAAAfAB8ADQABAAEAAAAfACAADQABAAEAAAAgAAAADQABAAEAAAAgAAEADQABAAEAAAAgAAIADQABAAEAAAAgABoADQABAAEAAAAgABsADQABAAEAAAAgABwADQABAAEAAAAgAB0ADQABAAEAAAAgAB4ADQABAAEAAAAgAB8ADQABAAEAAAAgACAADQABAAEAAAAhAAAADQABAAEAAAAhAAEADQABAAEAAAAhAAIADQABAAEAAAAhABoADQABAAEAAAAhABsADQABAAEAAAAhABwADQABAAEAAAAhAB0ADQABAAEAAAAhAB4ADQABAAEAAAAhAB8ADQABAAEAAAAhACAADQABAAEAAAAiAAAADQABAAEAAAAiAAEADQABAAEAAAAiAAIADQABAAEAAAAiABoADQABAAEAAAAiABsADQABAAEAAAAiABwADQABAAEAAAAiAB0ADQABAAEAAAAiAB4ADQABAAEAAAAiAB8ADQABAAEAAAAiACAADQABAAEAAAAjAAAADQABAAEAAAAjAAEADQABAAEAAAAjAAIADQABAAEAAAAjABoADQABAAEAAAAjABsADQABAAEAAAAjABwADQABAAEAAAAjAB0ADQABAAEAAAAjAB4ADQABAAEAAAAjAB8ADQABAAEAAAAjACAADQABAAEAAAAkAAAADQABAAEAAAAkAAEADQABAAEAAAAkAAIADQABAAEAAAAkABoADQABAAEAAAAkABsADQABAAEAAAAkABwADQABAAEAAAAkAB0ADQABAAEAAAAkAB4ADQABAAEAAAAkAB8ADQABAAEAAAAkACAADQABAAEAAAAlAAAADQABAAEAAAAlAAEADQABAAEAAAAlAAIADQABAAEAAAAlABoADQABAAEAAAAlABsADQABAAEAAAAlABwADQABAAEAAAAlAB0ADQABAAEAAAAlAB4ADQABAAEAAAAlAB8ADQABAAEAAAAlACAADQABAAEAAAAmAAAADQABAAEAAAAmAAEADQABAAEAAAAmAAIADQABAAEAAAAmABoADQABAAEAAAAmABsADQABAAEAAAAmABwADQABAAEAAAAmAB0ADQABAAEAAAAmAB4ADQABAAEAAAAmAB8ADQABAAEAAAAmACAADQABAAEAAAAnAAAADQABAAEAAAAnAAEADQABAAEAAAAnAAIADQABAAEAAAAnABoADQABAAEAAAAnABsADQABAAEAAAAnABwADQABAAEAAAAnAB0ADQABAAEAAAAnAB4ADQABAAEAAAAnAB8ADQABAAEAAAAnACAADQABAAEAAAAoAAAADQABAAEAAAAoAAEADQABAAEAAAAoAAIADQABAAEAAAAoAAMADQABAAEAAAAoAAQADQABAAEAAAAoAAUADQABAAEAAAAoABAADQABAAEAAAAoABEADQABAAEAAAAoABIADQABAAEAAAAoABMADQABAAEAAAAoABQADQABAAEAAAAoABUADQABAAEAAAAoABYADQABAAEAAAAoABcADQABAAEAAAAoABgADQABAAEAAAAoABkADQABAAEAAAAoABoADQABAAEAAAAoABsADQABAAEAAAAoABwADQABAAEAAAAoAB0ADQABAAEAAAAoAB4ADQABAAEAAAAoAB8ADQABAAEAAAAoACAADQABAAEAAAApAAAADQABAAEAAAApAAEADQABAAEAAAApAAIADQABAAEAAAApAAMADQABAAEAAAApAAQADQABAAEAAAApAAUADQABAAEAAAApABAADQABAAEAAAApABEADQABAAEAAAApABIADQABAAEAAAApABMADQABAAEAAAApABQADQABAAEAAAApABUADQABAAEAAAApABYADQABAAEAAAApABcADQABAAEAAAApABgADQABAAEAAAApABkADQABAAEAAAApABoADQABAAEAAAApABsADQABAAEAAAApABwADQABAAEAAAApAB0ADQABAAEAAAApAB4ADQABAAEAAAApAB8ADQABAAEAAAApACAADQABAAEAAAAqAAAADQABAAEAAAAqAAEADQABAAEAAAAqAAIADQABAAEAAAAqAAMADQABAAEAAAAqAAQADQABAAEAAAAqAAUADQABAAEAAAAqABAADQABAAEAAAAqABEADQABAAEAAAAqABIADQABAAEAAAAqABMADQABAAEAAAAqABQADQABAAEAAAAqABUADQABAAEAAAAqABYADQABAAEAAAAqABcADQABAAEAAAAqABgADQABAAEAAAAqABkADQABAAEAAAAqABoADQABAAEAAAAqABsADQABAAEAAAAqABwADQABAAEAAAAqAB0ADQABAAEAAAAqAB4ADQABAAEAAAAqAB8ADQABAAEAAAAqACAADQABAAEAAAArAAAADQABAAEAAAArAAEADQABAAEAAAArAAIADQABAAEAAAArAAMADQABAAEAAAArAAQADQABAAEAAAArAAUADQABAAEAAAArABAADQABAAEAAAArABEADQABAAEAAAArABIADQABAAEAAAArABMADQABAAEAAAArABQADQABAAEAAAArABUADQABAAEAAAArABYADQABAAEAAAArABcADQABAAEAAAArABgADQABAAEAAAArABkADQABAAEAAAArABoADQABAAEAAAArABsADQABAAEAAAArABwADQABAAEAAAArAB0ADQABAAEAAAArAB4ADQABAAEAAAArAB8ADQABAAEAAAArACAADQABAAEAAAAsAAAADQABAAEAAAAsAAEADQABAAEAAAAsAAIADQABAAEAAAAsAAMADQABAAEAAAAsAAQADQABAAEAAAAsAAUADQABAAEAAAAsABAADQABAAEAAAAsABEADQABAAEAAAAsABIADQABAAEAAAAsABMADQABAAEAAAAsABQADQABAAEAAAAsABUADQABAAEAAAAsABYADQABAAEAAAAsABcADQABAAEAAAAsABgADQABAAEAAAAsABkADQABAAEAAAAsABoADQABAAEAAAAsABsADQABAAEAAAAsABwADQABAAEAAAAsAB0ADQABAAEAAAAsAB4ADQABAAEAAAAsAB8ADQABAAEAAAAsACAADQABAAEAAAAtAAAADQABAAEAAAAtAAEADQABAAEAAAAtAAIADQABAAEAAAAtAAMADQABAAEAAAAtAAQADQABAAEAAAAtAAUADQABAAEAAAAtABAAIgAAAAAAAAAtABEAIgAAAAAAAAAtABIAIgAAAAAAAAAtABMAIgAAAAAAAAAtABQAIgAAAAAAAAAtABUAIgAAAAAAAAAtABYAIgAAAAAAAAAtABcAIgAAAAAAAAAtABgAIgAAAAAAAAAtABkAIgAAAAAAAAAtABoAIgAAAAAAAAAtABsAIgAAAAAAAAAtABwAIgAAAAAAAAAtAB0AIgAAAAAAAAAtAB4AIgAAAAAAAAAtAB8AIgAAAAAAAAAtACAAIgAAAAAAAAAuAAAADQABAAEAAAAuAAEAIgAAAAAAAAAuAAIAIgAAAAAAAAAuAAMAIgAAAAAAAAAuAAQAIgAAAAAAAAAuAAUAIgAAAAAAAAAuABAAIgAAAAAAAAAuABEAIgAAAAAAAAAuABIAIgAAAAAAAAAuABMAIgAAAAAAAAAuABQAIgAAAAAAAAAuABUAIgAAAAAAAAAuABYAIgAAAAAAAAAuABcAIgAAAAAAAAAuABgAIgAAAAAAAAAuABkAIgAAAAAAAAAuABoAIgAAAAAAAAAuABsAIgAAAAAAAAAuABwAIgAAAAAAAAAuAB0AIgAAAAAAAAAuAB4AIgAAAAAAAAAuAB8AIgAAAAAAAAAuACAAIgAAAAAAAAAvAAAADQABAAEAAAAvAAEAIgAAAAAAAAAvAAIAIgAAAAAAAAAvAAMAIgAAAAAAAAAvAAQAIgAAAAAAAAAvAAUAIgAAAAAAAAAvABAAIgAAAAAAAAAvABEAIgAAAAAAAAAvABIAIgAAAAAAAAAvABMAIgAAAAAAAAAvABQAIgAAAAAAAAAvABUAIgAAAAAAAAAvABYAIgAAAAAAAAAvABcAIgAAAAAAAAAvABgAIgAAAAAAAAAvABkAIgAAAAAAAAAvABoAIgAAAAAAAAAvABsAIgAAAAAAAAAvABwAIgAAAAAAAAAvAB0AIgAAAAAAAAAvAB4AIgAAAAAAAAAvAB8AIgAAAAAAAAAvACAAIgAAAAAAAAAQAAgADQABAAEAAAAQAAkADQABAAEAAAARAAoADQABAAEAAAAAACEADQABAAEAAAABACEADQABAAEAAAACACEADQABAAEAAAADACIADQABAAEAAAAEACIADQABAAEAAAAFACIADQABAAEAAAAGACIADQABAAEAAAAHACIADQABAAEAAAAIACIADQABAAEAAAAJACIADQABAAEAAAAKACIADQABAAEAAAALACMADQABAAEAAAAMACMADQABAAEAAAANACMADQABAAEAAAAOACMADQABAAEAAAAPACMADQABAAEAAAAQACMADQABAAEAAAARACMADQABAAEAAAAAACIADQABAAEAAAAAACMADQABAAEAAAAAACQADQABAAEAAAAAACUADQABAAEAAAAAACYADQABAAEAAAAAACcADQABAAEAAAAAACgADQABAAEAAAAAACkADQABAAEAAAAAACoADQABAAEAAAAAACsADQABAAEAAAAAACwADQABAAEAAAABACIADQABAAEAAAABACMADQABAAEAAAABACQADQABAAEAAAABACUADQABAAEAAAABACYADQABAAEAAAABACcADQABAAEAAAABACgADQABAAEAAAABACkADQABAAEAAAABACoADQABAAEAAAABACsADQABAAEAAAABACwADQABAAEAAAACACIADQABAAEAAAACACMADQABAAEAAAACACQADQABAAEAAAACACUADQABAAEAAAACACYADQABAAEAAAACACcADQABAAEAAAACACgADQABAAEAAAACACkADQABAAEAAAACACoADQABAAEAAAACACsADQABAAEAAAACACwADQABAAEAAAADACEADQABAAEAAAADACMADQABAAEAAAADACQADQABAAEAAAADACUADQABAAEAAAADACYADQABAAEAAAADACcADQABAAEAAAADACgADQABAAEAAAADACkADQABAAEAAAADACoADQABAAEAAAADACsADQABAAEAAAADACwADQABAAEAAAAEACEADQABAAEAAAAEACMADQABAAEAAAAEACQADQABAAEAAAAEACUADQABAAEAAAAEACYADQABAAEAAAAEACcADQABAAEAAAAEACgADQABAAEAAAAEACkADQABAAEAAAAEACoADQABAAEAAAAEACsADQABAAEAAAAEACwADQABAAEAAAAFACEADQABAAEAAAAFACMADQABAAEAAAAFACQADQABAAEAAAAFACUADQABAAEAAAAFACYADQABAAEAAAAFACcADQABAAEAAAAFACgADQABAAEAAAAFACkADQABAAEAAAAFACoADQABAAEAAAAFACsADQABAAEAAAAFACwADQABAAEAAAAGACEADQABAAEAAAAGACMADQABAAEAAAAGACQADQABAAEAAAAGACUADQABAAEAAAAGACYADQABAAEAAAAGACcADQABAAEAAAAGACgADQABAAEAAAAGACkADQABAAEAAAAGACoADQABAAEAAAAGACsADQABAAEAAAAGACwADQABAAEAAAAHACEADQABAAEAAAAHACMADQABAAEAAAAHACQADQABAAEAAAAHACUADQABAAEAAAAHACYADQABAAEAAAAHACcADQABAAEAAAAHACgADQABAAEAAAAHACkADQABAAEAAAAHACoADQABAAEAAAAHACsADQABAAEAAAAHACwADQABAAEAAAAIACEADQABAAEAAAAIACMADQABAAEAAAAIACQADQABAAEAAAAIACUADQABAAEAAAAIACYADQABAAEAAAAIACcADQABAAEAAAAIACgADQABAAEAAAAIACkADQABAAEAAAAIACoADQABAAEAAAAIACsADQABAAEAAAAIACwADQABAAEAAAAJACEADQABAAEAAAAJACMADQABAAEAAAAJACQADQABAAEAAAAJACUADQABAAEAAAAJACYADQABAAEAAAAJACcADQABAAEAAAAJACgADQABAAEAAAAJACkADQABAAEAAAAJACoADQABAAEAAAAJACsADQABAAEAAAAJACwADQABAAEAAAAKACEADQABAAEAAAAKACMADQABAAEAAAAKACQADQABAAEAAAAKACUADQABAAEAAAAKACYADQABAAEAAAAKACcADQABAAEAAAAKACgADQABAAEAAAAKACkADQABAAEAAAAKACoADQABAAEAAAAKACsADQABAAEAAAAKACwADQABAAEAAAALACEADQABAAEAAAALACIADQABAAEAAAALACQADQABAAEAAAALACUADQABAAEAAAALACYADQABAAEAAAALACcADQABAAEAAAALACgADQABAAEAAAALACkADQABAAEAAAALACoADQABAAEAAAALACsADQABAAEAAAALACwADQABAAEAAAAMACEADQABAAEAAAAMACIADQABAAEAAAAMACQADQABAAEAAAAMACUADQABAAEAAAAMACYADQABAAEAAAAMACcADQABAAEAAAAMACgADQABAAEAAAAMACkADQABAAEAAAAMACoADQABAAEAAAAMACsADQABAAEAAAAMACwADQABAAEAAAANACEADQABAAEAAAANACIADQABAAEAAAANACQADQABAAEAAAANACUADQABAAEAAAANACYADQABAAEAAAANACcADQABAAEAAAANACgADQABAAEAAAANACkADQABAAEAAAANACoADQABAAEAAAANACsADQABAAEAAAANACwADQABAAEAAAAOACEADQABAAEAAAAOACIADQABAAEAAAAOACQADQABAAEAAAAOACUADQABAAEAAAAOACYADQABAAEAAAAOACcADQABAAEAAAAOACgADQABAAEAAAAOACkADQABAAEAAAAOACoADQABAAEAAAAOACsADQABAAEAAAAOACwADQABAAEAAAAPACEADQABAAEAAAAPACIADQABAAEAAAAPACQADQABAAEAAAAPACUADQABAAEAAAAPACYADQABAAEAAAAPACcADQABAAEAAAAPACgADQABAAEAAAAPACkADQABAAEAAAAPACoADQABAAEAAAAPACsADQABAAEAAAAPACwADQABAAEAAAAQACEADQABAAEAAAAQACIADQABAAEAAAAQACQADQABAAEAAAAQACUADQABAAEAAAAQACYADQABAAEAAAAQACcADQABAAEAAAAQACgADQABAAEAAAAQACkADQABAAEAAAAQACoADQABAAEAAAAQACsADQABAAEAAAAQACwADQABAAEAAAARACEADQABAAEAAAARACIADQABAAEAAAARACQADQABAAEAAAARACUADQABAAEAAAARACYADQABAAEAAAARACcADQABAAEAAAARACgADQABAAEAAAARACkADQABAAEAAAARACoADQABAAEAAAARACsADQABAAEAAAARACwADQABAAEAAAASACEADQABAAEAAAASACIADQABAAEAAAASACMADQABAAEAAAASACQADQABAAEAAAASACUADQABAAEAAAASACYADQABAAEAAAASACcADQABAAEAAAASACgADQABAAEAAAASACkADQABAAEAAAASACoADQABAAEAAAASACsADQABAAEAAAASACwADQABAAEAAAATACEADQABAAEAAAATACIADQABAAEAAAATACMADQABAAEAAAATACQADQABAAEAAAATACUADQABAAEAAAATACYADQABAAEAAAATACcADQABAAEAAAATACgADQABAAEAAAATACkADQABAAEAAAATACoADQABAAEAAAATACsADQABAAEAAAATACwADQABAAEAAAAUACEADQABAAEAAAAUACIADQABAAEAAAAUACMADQABAAEAAAAUACQADQABAAEAAAAUACUADQABAAEAAAAUACYADQABAAEAAAAUACcADQABAAEAAAAUACgADQABAAEAAAAUACkADQABAAEAAAAUACoADQABAAEAAAAUACsADQABAAEAAAAUACwADQABAAEAAAAVACEADQABAAEAAAAVACIADQABAAEAAAAVACMADQABAAEAAAAVACQADQABAAEAAAAVACUADQABAAEAAAAVACYADQABAAEAAAAVACcADQABAAEAAAAVACgADQABAAEAAAAVACkADQABAAEAAAAVACoADQABAAEAAAAVACsADQABAAEAAAAVACwADQABAAEAAAAWACEADQABAAEAAAAWACIADQABAAEAAAAWACMADQABAAEAAAAWACQADQABAAEAAAAWACUADQABAAEAAAAWACYADQABAAEAAAAWACcADQABAAEAAAAWACgADQABAAEAAAAWACkADQABAAEAAAAWACoADQABAAEAAAAWACsADQABAAEAAAAWACwADQABAAEAAAAXACEADQABAAEAAAAXACIADQABAAEAAAAXACMADQABAAEAAAAXACQADQABAAEAAAAXACUADQABAAEAAAAXACYADQABAAEAAAAXACcADQABAAEAAAAXACgADQABAAEAAAAXACkADQABAAEAAAAXACoADQABAAEAAAAXACsADQABAAEAAAAXACwADQABAAEAAAAYACEADQABAAEAAAAYACIADQABAAEAAAAYACMADQABAAEAAAAYACQADQABAAEAAAAYACUADQABAAEAAAAYACYADQABAAEAAAAYACcADQABAAEAAAAYACgADQABAAEAAAAYACkADQABAAEAAAAYACoADQABAAEAAAAYACsADQABAAEAAAAYACwADQABAAEAAAAZACEADQABAAEAAAAZACIADQABAAEAAAAZACMADQABAAEAAAAZACQADQABAAEAAAAZACUADQABAAEAAAAZACYADQABAAEAAAAZACcADQABAAEAAAAZACgADQABAAEAAAAZACkADQABAAEAAAAZACoADQABAAEAAAAZACsADQABAAEAAAAZACwADQABAAEAAAAaACEADQABAAEAAAAaACIADQABAAEAAAAaACMADQABAAEAAAAaACQADQABAAEAAAAaACUADQABAAEAAAAaACYADQABAAEAAAAaACcADQABAAEAAAAaACgADQABAAEAAAAaACkADQABAAEAAAAaACoADQABAAEAAAAaACsADQABAAEAAAAaACwADQABAAEAAAAbACEADQABAAEAAAAbACIADQABAAEAAAAbACMADQABAAEAAAAbACQADQABAAEAAAAbACUADQABAAEAAAAbACYADQABAAEAAAAbACcADQABAAEAAAAbACgADQABAAEAAAAbACkADQABAAEAAAAbACoADQABAAEAAAAbACsADQABAAEAAAAbACwADQABAAEAAAAcACEADQABAAEAAAAcACIADQABAAEAAAAcACMADQABAAEAAAAcACQADQABAAEAAAAcACUADQABAAEAAAAcACYADQABAAEAAAAcACcADQABAAEAAAAcACgADQABAAEAAAAcACkADQABAAEAAAAcACoADQABAAEAAAAcACsADQABAAEAAAAcACwADQABAAEAAAAdACEADQABAAEAAAAdACIADQABAAEAAAAdACMADQABAAEAAAAdACQADQABAAEAAAAdACUADQABAAEAAAAdACYADQABAAEAAAAdACcADQABAAEAAAAdACgADQABAAEAAAAdACkADQABAAEAAAAdACoADQABAAEAAAAdACsADQABAAEAAAAdACwADQABAAEAAAAeACEADQABAAEAAAAeACIADQABAAEAAAAeACMADQABAAEAAAAeACQADQABAAEAAAAeACUADQABAAEAAAAeACYADQABAAEAAAAeACcADQABAAEAAAAeACgADQABAAEAAAAeACkADQABAAEAAAAeACoADQABAAEAAAAeACsADQABAAEAAAAeACwADQABAAEAAAAfACEADQABAAEAAAAfACIADQABAAEAAAAfACMADQABAAEAAAAfACQADQABAAEAAAAfACUADQABAAEAAAAfACYADQABAAEAAAAfACcADQABAAEAAAAfACgADQABAAEAAAAfACkADQABAAEAAAAfACoADQABAAEAAAAfACsADQABAAEAAAAfACwADQABAAEAAAAgACEADQABAAEAAAAgACIADQABAAEAAAAgACMADQABAAEAAAAgACQADQABAAEAAAAgACUADQABAAEAAAAgACYADQABAAEAAAAgACcADQABAAEAAAAgACgADQABAAEAAAAgACkADQABAAEAAAAgACoADQABAAEAAAAgACsADQABAAEAAAAgACwADQABAAEAAAAhACEADQABAAEAAAAhACIADQABAAEAAAAhACMADQABAAEAAAAhACQADQABAAEAAAAhACUADQABAAEAAAAhACYADQABAAEAAAAhACcADQABAAEAAAAhACgADQABAAEAAAAhACkADQABAAEAAAAhACoADQABAAEAAAAhACsADQABAAEAAAAhACwADQABAAEAAAAiACEADQABAAEAAAAiACIADQABAAEAAAAiACMADQABAAEAAAAiACQADQABAAEAAAAiACUADQABAAEAAAAiACYADQABAAEAAAAiACcADQABAAEAAAAiACgADQABAAEAAAAiACkADQABAAEAAAAiACoADQABAAEAAAAiACsADQABAAEAAAAiACwADQABAAEAAAAjACEADQABAAEAAAAjACIADQABAAEAAAAjACMADQABAAEAAAAjACQADQABAAEAAAAjACUADQABAAEAAAAjACYADQABAAEAAAAjACcADQABAAEAAAAjACgADQABAAEAAAAjACkADQABAAEAAAAjACoADQABAAEAAAAjACsADQABAAEAAAAjACwADQABAAEAAAAkACEADQABAAEAAAAkACIADQABAAEAAAAkACMADQABAAEAAAAkACQADQABAAEAAAAkACUADQABAAEAAAAkACYADQABAAEAAAAkACcADQABAAEAAAAkACgADQABAAEAAAAkACkADQABAAEAAAAkACoADQABAAEAAAAkACsADQABAAEAAAAkACwADQABAAEAAAAlACEADQABAAEAAAAlACIADQABAAEAAAAlACMADQABAAEAAAAlACQADQABAAEAAAAlACUADQABAAEAAAAlACYADQABAAEAAAAlACcADQABAAEAAAAlACgADQABAAEAAAAlACkADQABAAEAAAAlACoADQABAAEAAAAlACsADQABAAEAAAAlACwADQABAAEAAAAmACEADQABAAEAAAAmACIADQABAAEAAAAmACMADQABAAEAAAAmACQADQABAAEAAAAmACUADQABAAEAAAAmACYADQABAAEAAAAmACcADQABAAEAAAAmACgADQABAAEAAAAmACkADQABAAEAAAAmACoADQABAAEAAAAmACsADQABAAEAAAAmACwADQABAAEAAAAnACEADQABAAEAAAAnACIADQABAAEAAAAnACMADQABAAEAAAAnACQADQABAAEAAAAnACUADQABAAEAAAAnACYADQABAAEAAAAnACcADQABAAEAAAAnACgADQABAAEAAAAnACkADQABAAEAAAAnACoADQABAAEAAAAnACsADQABAAEAAAAnACwADQABAAEAAAAoACEADQABAAEAAAAoACIADQABAAEAAAAoACMADQABAAEAAAAoACQADQABAAEAAAAoACUADQABAAEAAAAoACYADQABAAEAAAAoACcADQABAAEAAAAoACgADQABAAEAAAAoACkADQABAAEAAAAoACoADQABAAEAAAAoACsADQABAAEAAAAoACwADQABAAEAAAApACEADQABAAEAAAApACIADQABAAEAAAApACMADQABAAEAAAApACQADQABAAEAAAApACUADQABAAEAAAApACYADQABAAEAAAApACcADQABAAEAAAApACgADQABAAEAAAApACkADQABAAEAAAApACoADQABAAEAAAApACsADQABAAEAAAApACwADQABAAEAAAAqACEADQABAAEAAAAqACIADQABAAEAAAAqACMADQABAAEAAAAqACQADQABAAEAAAAqACUADQABAAEAAAAqACYADQABAAEAAAAqACcADQABAAEAAAAqACgADQABAAEAAAAqACkADQABAAEAAAAqACoADQABAAEAAAAqACsADQABAAEAAAAqACwADQABAAEAAAArACEADQABAAEAAAArACIADQABAAEAAAArACMADQABAAEAAAArACQADQABAAEAAAArACUADQABAAEAAAArACYADQABAAEAAAArACcADQABAAEAAAArACgADQABAAEAAAArACkADQABAAEAAAArACoADQABAAEAAAArACsADQABAAEAAAArACwADQABAAEAAAAsACEADQABAAEAAAAsACIADQABAAEAAAAsACMADQABAAEAAAAsACQADQABAAEAAAAsACUADQABAAEAAAAsACYADQABAAEAAAAsACcADQABAAEAAAAsACgADQABAAEAAAAsACkADQABAAEAAAAsACoADQABAAEAAAAsACsADQABAAEAAAAsACwADQABAAEAAAAtACEAIgAAAAAAAAAtACIAIgAAAAAAAAAtACMAIgAAAAAAAAAtACQAIgAAAAAAAAAtACUAIgAAAAAAAAAtACYAIgAAAAAAAAAtACcAIgAAAAAAAAAtACgAIgAAAAAAAAAtACkAIgAAAAAAAAAtACoAIgAAAAAAAAAtACsAIgAAAAAAAAAtACwAIgAAAAAAAAAuACEAIgAAAAAAAAAuACIAIgAAAAAAAAAuACMAIgAAAAAAAAAuACQAIgAAAAAAAAAuACUAIgAAAAAAAAAuACYAIgAAAAAAAAAuACcAIgAAAAAAAAAuACgAIgAAAAAAAAAuACkAIgAAAAAAAAAuACoAIgAAAAAAAAAuACsAIgAAAAAAAAAuACwAIgAAAAAAAAAvACEAIgAAAAAAAAAvACIAIgAAAAAAAAAvACMAIgAAAAAAAAAvACQAIgAAAAAAAAAvACUAIgAAAAAAAAAvACYAIgAAAAAAAAAvACcAIgAAAAAAAAAvACgAIgAAAAAAAAAvACkAIgAAAAAAAAAvACoAIgAAAAAAAAAvACsAIgAAAAAAAAAvACwAIgAAAAAAAAAwACEAIgAAAAAAAAAwACIAIgAAAAAAAAAwACMAIgAAAAAAAAAwACQAIgAAAAAAAAAwACUAIgAAAAAAAAAwACYAIgAAAAAAAAAwACcAIgAAAAAAAAAwACgAIgAAAAAAAAAwACkAIgAAAAAAAAAwACoAIgAAAAAAAAAwACsAIgAAAAAAAAAwACwAIgAAAAAAAAAxACEAIgAAAAAAAAAxACIAIgAAAAAAAAAxACMAIgAAAAAAAAAxACQAIgAAAAAAAAAxACUAIgAAAAAAAAAxACYAIgAAAAAAAAAxACcAIgAAAAAAAAAxACgAIgAAAAAAAAAxACkAIgAAAAAAAAAxACoAIgAAAAAAAAAxACsAIgAAAAAAAAAxACwAIgAAAAAAAAAyACEAIgAAAAAAAAAyACIAIgAAAAAAAAAyACMAIgAAAAAAAAAyACQAIgAAAAAAAAAyACUAIgAAAAAAAAAyACYAIgAAAAAAAAAyACcAIgAAAAAAAAAyACgAIgAAAAAAAAAyACkAIgAAAAAAAAAyACoAIgAAAAAAAAAyACsAIgAAAAAAAAAyACwAIgAAAAAAAAAzACEAIgAAAAAAAAAzACIAIgAAAAAAAAAzACMAIgAAAAAAAAAzACQAIgAAAAAAAAAzACUAIgAAAAAAAAAzACYAIgAAAAAAAAAzACcAIgAAAAAAAAAzACgAIgAAAAAAAAAzACkAIgAAAAAAAAAzACoAIgAAAAAAAAAzACsAIgAAAAAAAAAzACwAIgAAAAAAAAA0ACEAIgAAAAAAAAA0ACIAIgAAAAAAAAA0ACMAIgAAAAAAAAA0ACQAIgAAAAAAAAA0ACUAIgAAAAAAAAA0ACYAIgAAAAAAAAA0ACcAIgAAAAAAAAA0ACgAIgAAAAAAAAA0ACkAIgAAAAAAAAA0ACoAIgAAAAAAAAA0ACsAIgAAAAAAAAA0ACwAIgAAAAAAAAA1ACEAIgAAAAAAAAA1ACIAIgAAAAAAAAA1ACMAIgAAAAAAAAA1ACQAIgAAAAAAAAA1ACUAIgAAAAAAAAA1ACYAIgAAAAAAAAA1ACcAIgAAAAAAAAA1ACgAIgAAAAAAAAA1ACkAIgAAAAAAAAA1ACoAIgAAAAAAAAA1ACsAIgAAAAAAAAA1ACwAIgAAAAAAAAA2ACEAIgAAAAAAAAA2ACIAIgAAAAAAAAA2ACMAIgAAAAAAAAA2ACQAIgAAAAAAAAA2ACUAIgAAAAAAAAA2ACYAIgAAAAAAAAA2ACcAIgAAAAAAAAA2ACgAIgAAAAAAAAA2ACkAIgAAAAAAAAA2ACoAIgAAAAAAAAA2ACsAIgAAAAAAAAA2ACwAIgAAAAAAAAA3ACEAIgAAAAAAAAA3ACIAIgAAAAAAAAA3ACMAIgAAAAAAAAA3ACQAIgAAAAAAAAA3ACUAIgAAAAAAAAA3ACYAIgAAAAAAAAA3ACcAIgAAAAAAAAA3ACgAIgAAAAAAAAA3ACkAIgAAAAAAAAA3ACoAIgAAAAAAAAA3ACsAIgAAAAAAAAA3ACwAIgAAAAAAAAA4ACEAIgAAAAAAAAA4ACIAIgAAAAAAAAA4ACMAIgAAAAAAAAA4ACQAIgAAAAAAAAA4ACUAIgAAAAAAAAA4ACYAIgAAAAAAAAA4ACcAIgAAAAAAAAA4ACgAIgAAAAAAAAA4ACkAIgAAAAAAAAA4ACoAIgAAAAAAAAA4ACsAIgAAAAAAAAA4ACwAIgAAAAAAAAA5ACEAIgAAAAAAAAA5ACIAIgAAAAAAAAA5ACMAIgAAAAAAAAA5ACQAIgAAAAAAAAA5ACUAIgAAAAAAAAA5ACYAIgAAAAAAAAA5ACcAIgAAAAAAAAA5ACgAIgAAAAAAAAA5ACkAIgAAAAAAAAA5ACoAIgAAAAAAAAA5ACsAIgAAAAAAAAA5ACwAIgAAAAAAAAA6ACEAIgAAAAAAAAA6ACIAIgAAAAAAAAA6ACMAIgAAAAAAAAA6ACQAIgAAAAAAAAA6ACUAIgAAAAAAAAA6ACYAIgAAAAAAAAA6ACcAIgAAAAAAAAA6ACgAIgAAAAAAAAA6ACkAIgAAAAAAAAA6ACoAIgAAAAAAAAA6ACsAIgAAAAAAAAA6ACwAIgAAAAAAAAA7ACEAIgAAAAAAAAA7ACIAIgAAAAAAAAA7ACMAIgAAAAAAAAA7ACQAIgAAAAAAAAA7ACUAIgAAAAAAAAA7ACYAGAABAAEAAAA7ACcAIgAAAAAAAAA7ACgAIgAAAAAAAAA7ACkAIgAAAAAAAAA7ACoAIgAAAAAAAAA7ACsAIgAAAAAAAAA7ACwAIgAAAAAAAAA8ACEAIgAAAAAAAAA8ACIAIgAAAAAAAAA8ACMAIgAAAAAAAAA8ACQAIgAAAAAAAAA8ACUAIgAAAAAAAAA8ACYAGAABAAEAAAA8ACcAIgAAAAAAAAA8ACgAIgAAAAAAAAA8ACkAIgAAAAAAAAA8ACoAIgAAAAAAAAA8ACsAIgAAAAAAAAA8ACwAIgAAAAAAAAA9ACEAIgAAAAAAAAA9ACIAIgAAAAAAAAA9ACMAIgAAAAAAAAA9ACQAIgAAAAAAAAA9ACUAIgAAAAAAAAA9ACYAGAABAAEAAAA9ACcAIgAAAAAAAAA9ACgAIgAAAAAAAAA9ACkAIgAAAAAAAAA9ACoAIgAAAAAAAAA9ACsAIgAAAAAAAAA9ACwAIgAAAAAAAAA+ACEAIgAAAAAAAAA+ACIAIgAAAAAAAAA+ACMAIgAAAAAAAAA+ACQAIgAAAAAAAAA+ACUAIgAAAAAAAAA+ACYAGAABAAEAAAA+ACcAIgAAAAAAAAA+ACgAIgAAAAAAAAA+ACkAIgAAAAAAAAA+ACoAIgAAAAAAAAA+ACsAIgAAAAAAAAA+ACwAIgAAAAAAAAA/ACEAIgAAAAAAAAA/ACIAIgAAAAAAAAA/ACMAIgAAAAAAAAA/ACQAIgAAAAAAAAA/ACUAIgAAAAAAAAA/ACYAIgAAAAAAAAA/ACcAIgAAAAAAAAA/ACgAIgAAAAAAAAA/ACkAIgAAAAAAAAA/ACoAIgAAAAAAAAA/ACsAIgAAAAAAAAA/ACwAIgAAAAAAAAAwAAAADQABAAEAAAAwAAEAIgAAAAAAAAAwAAIAIgAAAAAAAAAwAAMAIgAAAAAAAAAwAAQAIgAAAAAAAAAwAAUAIgAAAAAAAAAwABAAIgAAAAAAAAAwABEAIgAAAAAAAAAwABIAIgAAAAAAAAAwABMAIgAAAAAAAAAwABQAIgAAAAAAAAAwABUAIgAAAAAAAAAwABYAIgAAAAAAAAAwABcAIgAAAAAAAAAwABgAIgAAAAAAAAAwABkAIgAAAAAAAAAwABoAIgAAAAAAAAAwABsAIgAAAAAAAAAwABwAIgAAAAAAAAAwAB0AIgAAAAAAAAAwAB4AIgAAAAAAAAAwAB8AIgAAAAAAAAAwACAAIgAAAAAAAAAxAAAADQABAAEAAAAxAAEAIgAAAAAAAAAxAAIAIgAAAAAAAAAxAAMAIgAAAAAAAAAxAAQAIgAAAAAAAAAxAAUAIgAAAAAAAAAxABAAIgAAAAAAAAAxABEAIgAAAAAAAAAxABIAIgAAAAAAAAAxABMAIgAAAAAAAAAxABQAIgAAAAAAAAAxABUAIgAAAAAAAAAxABYAIgAAAAAAAAAxABcAIgAAAAAAAAAxABgAIgAAAAAAAAAxABkAIgAAAAAAAAAxABoAIgAAAAAAAAAxABsAIgAAAAAAAAAxABwAIgAAAAAAAAAxAB0AIgAAAAAAAAAxAB4AIgAAAAAAAAAxAB8AIgAAAAAAAAAxACAAIgAAAAAAAAAyAAAADQABAAEAAAAyAAEAIgAAAAAAAAAyAAIAIgAAAAAAAAAyAAMAIgAAAAAAAAAyAAQAIgAAAAAAAAAyAAUAIgAAAAAAAAAyABAAIgAAAAAAAAAyABEAIgAAAAAAAAAyABIAIgAAAAAAAAAyABMAIgAAAAAAAAAyABQAIgAAAAAAAAAyABUAIgAAAAAAAAAyABYAIgAAAAAAAAAyABcAIgAAAAAAAAAyABgAIgAAAAAAAAAyABkAIgAAAAAAAAAyABoAIgAAAAAAAAAyABsAIgAAAAAAAAAyABwAIgAAAAAAAAAyAB0AIgAAAAAAAAAyAB4AIgAAAAAAAAAyAB8AIgAAAAAAAAAyACAAIgAAAAAAAAAzAAAADQABAAEAAAAzAAEAIgAAAAAAAAAzAAIAIgAAAAAAAAAzAAMAIgAAAAAAAAAzAAQAIgAAAAAAAAAzAAUAIgAAAAAAAAAzABAAIgAAAAAAAAAzABEAIgAAAAAAAAAzABIAIgAAAAAAAAAzABMAIgAAAAAAAAAzABQAIgAAAAAAAAAzABUAIgAAAAAAAAAzABYAIgAAAAAAAAAzABcAIgAAAAAAAAAzABgAIgAAAAAAAAAzABkAIgAAAAAAAAAzABoAIgAAAAAAAAAzABsAIgAAAAAAAAAzABwAIgAAAAAAAAAzAB0AIgAAAAAAAAAzAB4AIgAAAAAAAAAzAB8AIgAAAAAAAAAzACAAIgAAAAAAAAA0AAAADQABAAEAAAA0AAEAIgAAAAAAAAA0AAIAIgAAAAAAAAA0AAMAIgAAAAAAAAA0AAQAIgAAAAAAAAA0AAUAIgAAAAAAAAA0ABAAIgAAAAAAAAA0ABEAIgAAAAAAAAA0ABIAIgAAAAAAAAA0ABMAIgAAAAAAAAA0ABQAIgAAAAAAAAA0ABUAIgAAAAAAAAA0ABYAIgAAAAAAAAA0ABcAIgAAAAAAAAA0ABgAIgAAAAAAAAA0ABkAIgAAAAAAAAA0ABoAIgAAAAAAAAA0ABsAIgAAAAAAAAA0ABwAIgAAAAAAAAA0AB0AIgAAAAAAAAA0AB4AIgAAAAAAAAA0AB8AIgAAAAAAAAA0ACAAIgAAAAAAAAA1AAAADQABAAEAAAA1AAEAIgAAAAAAAAA1AAIAIgAAAAAAAAA1AAMAIgAAAAAAAAA1AAQAIgAAAAAAAAA1AAUAIgAAAAAAAAA1ABAAIgAAAAAAAAA1ABEAIgAAAAAAAAA1ABIAIgAAAAAAAAA1ABMAIgAAAAAAAAA1ABQAIgAAAAAAAAA1ABUAIgAAAAAAAAA1ABYAIgAAAAAAAAA1ABcAIgAAAAAAAAA1ABgAIgAAAAAAAAA1ABkAIgAAAAAAAAA1ABoAIgAAAAAAAAA1ABsAIgAAAAAAAAA1ABwAIgAAAAAAAAA1AB0AIgAAAAAAAAA1AB4AIgAAAAAAAAA1AB8AIgAAAAAAAAA1ACAAIgAAAAAAAAA2AAAADQABAAEAAAA2AAEAIgAAAAAAAAA2AAIAIgAAAAAAAAA2AAMAIgAAAAAAAAA2AAQAIgAAAAAAAAA2AAUAIgAAAAAAAAA2ABAAIgAAAAAAAAA2ABEAIgAAAAAAAAA2ABIAIgAAAAAAAAA2ABMAIgAAAAAAAAA2ABQAIgAAAAAAAAA2ABUAIgAAAAAAAAA2ABYAIgAAAAAAAAA2ABcAIgAAAAAAAAA2ABgAIgAAAAAAAAA2ABkAIgAAAAAAAAA2ABoAIgAAAAAAAAA2ABsAIgAAAAAAAAA2ABwAIgAAAAAAAAA2AB0AIgAAAAAAAAA2AB4AIgAAAAAAAAA2AB8AIgAAAAAAAAA2ACAAIgAAAAAAAAA3AAAADQABAAEAAAA3AAEAIgAAAAAAAAA3AAIAIgAAAAAAAAA3AAMAIgAAAAAAAAA3AAQAIgAAAAAAAAA3AAUAIgAAAAAAAAA3ABAAIgAAAAAAAAA3ABEAIgAAAAAAAAA3ABIAIgAAAAAAAAA3ABMAIgAAAAAAAAA3ABQAIgAAAAAAAAA3ABUAIgAAAAAAAAA3ABYAIgAAAAAAAAA3ABcAIgAAAAAAAAA3ABgAIgAAAAAAAAA3ABkAIgAAAAAAAAA3ABoAIgAAAAAAAAA3ABsAIgAAAAAAAAA3ABwAIgAAAAAAAAA3AB0AIgAAAAAAAAA3AB4AIgAAAAAAAAA3AB8AIgAAAAAAAAA3ACAAIgAAAAAAAAA4AAAADQABAAEAAAA4AAEAIgAAAAAAAAA4AAIAIgAAAAAAAAA4AAMAIgAAAAAAAAA4AAQAIgAAAAAAAAA4AAUAIgAAAAAAAAA4AAYAIgAAAAAAAAA4AAcAIgAAAAAAAAA4AAgAIgAAAAAAAAA4AAkAIgAAAAAAAAA4AAoAIgAAAAAAAAA4AAsAIgAAAAAAAAA4AAwAIgAAAAAAAAA4AA0AIgAAAAAAAAA4AA4AIgAAAAAAAAA4AA8AIgAAAAAAAAA4ABAAIgAAAAAAAAA4ABEAIgAAAAAAAAA4ABIAIgAAAAAAAAA4ABMAIgAAAAAAAAA4ABQAIgAAAAAAAAA4ABUAIgAAAAAAAAA4ABYAIgAAAAAAAAA4ABcAIgAAAAAAAAA4ABgAIgAAAAAAAAA4ABkAIgAAAAAAAAA4ABoAIgAAAAAAAAA4ABsAIgAAAAAAAAA4ABwAIgAAAAAAAAA4AB0AIgAAAAAAAAA4AB4AIgAAAAAAAAA4AB8AIgAAAAAAAAA4ACAAIgAAAAAAAAA5AAAADQABAAEAAAA5AAEAIgAAAAAAAAA5AAIAIgAAAAAAAAA5AAMAIgAAAAAAAAA5AAQAIgAAAAAAAAA5AAUAIgAAAAAAAAA5AAYAIgAAAAAAAAA5AAcAIgAAAAAAAAA5AAgAIgAAAAAAAAA5AAkAIgAAAAAAAAA5AAoAIgAAAAAAAAA5AAsAIgAAAAAAAAA5AAwAIgAAAAAAAAA5AA0AIgAAAAAAAAA5AA4AIgAAAAAAAAA5AA8AIgAAAAAAAAA5ABAAIgAAAAAAAAA5ABEAIgAAAAAAAAA5ABIAIgAAAAAAAAA5ABMAIgAAAAAAAAA5ABQAIgAAAAAAAAA5ABUAIgAAAAAAAAA5ABYAIgAAAAAAAAA5ABcAIgAAAAAAAAA5ABgAIgAAAAAAAAA5ABkAIgAAAAAAAAA5ABoAIgAAAAAAAAA5ABsAIgAAAAAAAAA5ABwAIgAAAAAAAAA5AB0AIgAAAAAAAAA5AB4AIgAAAAAAAAA5AB8AIgAAAAAAAAA5ACAAIgAAAAAAAAA6AAAADQABAAEAAAA6AAEAIgAAAAAAAAA6AAIAIgAAAAAAAAA6AAMAIgAAAAAAAAA6AAQAIgAAAAAAAAA6AAUAIgAAAAAAAAA6AAYAIgAAAAAAAAA6AAcAIgAAAAAAAAA6AAgAIgAAAAAAAAA6AAkAIgAAAAAAAAA6AAoAIgAAAAAAAAA6AAsAIgAAAAAAAAA6AAwAIgAAAAAAAAA6AA0AIgAAAAAAAAA6AA4AIgAAAAAAAAA6AA8AIgAAAAAAAAA6ABAAIgAAAAAAAAA6ABEAIgAAAAAAAAA6ABIAIgAAAAAAAAA6ABMAIgAAAAAAAAA6ABQAIgAAAAAAAAA6ABUAIgAAAAAAAAA6ABYAIgAAAAAAAAA6ABcAIgAAAAAAAAA6ABgAIgAAAAAAAAA6ABkAIgAAAAAAAAA6ABoAIgAAAAAAAAA6ABsAIgAAAAAAAAA6ABwAIgAAAAAAAAA6AB0AIgAAAAAAAAA6AB4AIgAAAAAAAAA6AB8AIgAAAAAAAAA6ACAAIgAAAAAAAAA7AAAADQABAAEAAAA7AAEAIgAAAAAAAAA7AAIAIgAAAAAAAAA7AAMAIgAAAAAAAAA7AAQAIgAAAAAAAAA7AAUAIgAAAAAAAAA7AAYAIgAAAAAAAAA7AAcAIgAAAAAAAAA7AAgAIgAAAAAAAAA7AAkAIgAAAAAAAAA7AAoAIgAAAAAAAAA7AAsAIgAAAAAAAAA7AAwAIgAAAAAAAAA7AA0AIgAAAAAAAAA7AA4AIgAAAAAAAAA7AA8AIgAAAAAAAAA7ABAAIgAAAAAAAAA7ABEAIgAAAAAAAAA7ABIAIgAAAAAAAAA7ABMAIgAAAAAAAAA7ABQAIgAAAAAAAAA7ABUAIgAAAAAAAAA7ABYAIgAAAAAAAAA7ABcAIgAAAAAAAAA7ABgAIgAAAAAAAAA7ABkAIgAAAAAAAAA7ABoAIgAAAAAAAAA7ABsAIgAAAAAAAAA7ABwAIgAAAAAAAAA7AB0AIgAAAAAAAAA7AB4AIgAAAAAAAAA7AB8AIgAAAAAAAAA7ACAAIgAAAAAAAAA8AAAADQABAAEAAAA8AAEAIgAAAAAAAAA8AAIAIgAAAAAAAAA8AAMAIgAAAAAAAAA8AAQAIgAAAAAAAAA8AAUAIgAAAAAAAAA8AAYAIgAAAAAAAAA8AAcAIgAAAAAAAAA8AAgAIgAAAAAAAAA8AAkAIgAAAAAAAAA8AAoAIgAAAAAAAAA8AAsAIgAAAAAAAAA8AAwAIgAAAAAAAAA8AA0AIgAAAAAAAAA8AA4AIgAAAAAAAAA8AA8AIgAAAAAAAAA8ABAAIgAAAAAAAAA8ABEAIgAAAAAAAAA8ABIAIgAAAAAAAAA8ABMAIgAAAAAAAAA8ABQAIgAAAAAAAAA8ABUAIgAAAAAAAAA8ABYAIgAAAAAAAAA8ABcAIgAAAAAAAAA8ABgAIgAAAAAAAAA8ABkAIgAAAAAAAAA8ABoAIgAAAAAAAAA8ABsAIgAAAAAAAAA8ABwAIgAAAAAAAAA8AB0AIgAAAAAAAAA8AB4AIgAAAAAAAAA8AB8AIgAAAAAAAAA8ACAAIgAAAAAAAAA9AAAADQABAAEAAAA9AAEAIgAAAAAAAAA9AAIAIgAAAAAAAAA9AAMAIgAAAAAAAAA9AAQAIgAAAAAAAAA9AAUAIgAAAAAAAAA9AAYAIgAAAAAAAAA9AAcAIgAAAAAAAAA9AAgAIgAAAAAAAAA9AAkAIgAAAAAAAAA9AAoAIgAAAAAAAAA9AAsAIgAAAAAAAAA9AAwAIgAAAAAAAAA9AA0AIgAAAAAAAAA9AA4AIgAAAAAAAAA9AA8AIgAAAAAAAAA9ABAAIgAAAAAAAAA9ABEAIgAAAAAAAAA9ABIAIgAAAAAAAAA9ABMAIgAAAAAAAAA9ABQAIgAAAAAAAAA9ABUAIgAAAAAAAAA9ABYAIgAAAAAAAAA9ABcAIgAAAAAAAAA9ABgAIgAAAAAAAAA9ABkAIgAAAAAAAAA9ABoAIgAAAAAAAAA9ABsAIgAAAAAAAAA9ABwAIgAAAAAAAAA9AB0AIgAAAAAAAAA9AB4AIgAAAAAAAAA9AB8AIgAAAAAAAAA9ACAAIgAAAAAAAAA+AAAADQABAAEAAAA+AAEAIgAAAAAAAAA+AAIAIgAAAAAAAAA+AAMAIgAAAAAAAAA+AAQAIgAAAAAAAAA+AAUAIgAAAAAAAAA+AAYAIgAAAAAAAAA+AAcAIgAAAAAAAAA+AAgAIgAAAAAAAAA+AAkAIgAAAAAAAAA+AAoAIgAAAAAAAAA+AAsAIgAAAAAAAAA+AAwAIgAAAAAAAAA+AA0AIgAAAAAAAAA+AA4AIgAAAAAAAAA+AA8AIgAAAAAAAAA+ABAAIgAAAAAAAAA+ABEAIgAAAAAAAAA+ABIAIgAAAAAAAAA+ABMAIgAAAAAAAAA+ABQAIgAAAAAAAAA+ABUAIgAAAAAAAAA+ABYAIgAAAAAAAAA+ABcAIgAAAAAAAAA+ABgAIgAAAAAAAAA+ABkAIgAAAAAAAAA+ABoAIgAAAAAAAAA+ABsAIgAAAAAAAAA+ABwAIgAAAAAAAAA+AB0AIgAAAAAAAAA+AB4AIgAAAAAAAAA+AB8AIgAAAAAAAAA+ACAAIgAAAAAAAAA/AAAADQABAAEAAAA/AAEAIgAAAAAAAAA/AAIAIgAAAAAAAAA/AAMAIgAAAAAAAAA/AAQAIgAAAAAAAAA/AAUAIgAAAAAAAAA/AAYAIgAAAAAAAAA/AAcAIgAAAAAAAAA/AAgAIgAAAAAAAAA/AAkAIgAAAAAAAAA/AAoAIgAAAAAAAAA/AAsAIgAAAAAAAAA/AAwAIgAAAAAAAAA/AA0AIgAAAAAAAAA/AA4AIgAAAAAAAAA/AA8AIgAAAAAAAAA/ABAAIgAAAAAAAAA/ABEAIgAAAAAAAAA/ABIAIgAAAAAAAAA/ABMAIgAAAAAAAAA/ABQAIgAAAAAAAAA/ABUAIgAAAAAAAAA/ABYAIgAAAAAAAAA/ABcAIgAAAAAAAAA/ABgAIgAAAAAAAAA/ABkAIgAAAAAAAAA/ABoAIgAAAAAAAAA/ABsAIgAAAAAAAAA/ABwAIgAAAAAAAAA/AB0AIgAAAAAAAAA/AB4AIgAAAAAAAAA/AB8AIgAAAAAAAAA/ACAAIgAAAAAAAABAAAAADQABAAEAAABAAAEAIgAAAAAAAABAAAIAIgAAAAAAAABAAAMAIgAAAAAAAABAAAQAIgAAAAAAAABAAAUAIgAAAAAAAABAAAYAIgAAAAAAAABAAAcAIgAAAAAAAABAAAgAIgAAAAAAAABAAAkAIgAAAAAAAABAAAoAIgAAAAAAAABAAAsAIgAAAAAAAABAAAwAIgAAAAAAAABAAA0AIgAAAAAAAABAAA4AIgAAAAAAAABAAA8AIgAAAAAAAABAABAAIgAAAAAAAABAABEAIgAAAAAAAABAABIAIgAAAAAAAABAABMAIgAAAAAAAABAABQAIgAAAAAAAABAABUAIgAAAAAAAABAABYAIgAAAAAAAABAABcAIgAAAAAAAABAABgAIgAAAAAAAABAABkAIgAAAAAAAABAABoAIgAAAAAAAABAABsAIgAAAAAAAABAABwAIgAAAAAAAABAAB0AIgAAAAAAAABAAB4AIgAAAAAAAABAAB8AIgAAAAAAAABAACAAIgAAAAAAAABAACEAIgAAAAAAAABAACIAIgAAAAAAAABAACMAIgAAAAAAAABAACQAIgAAAAAAAABAACUAIgAAAAAAAABAACYAIgAAAAAAAABAACcAIgAAAAAAAABAACgAIgAAAAAAAABAACkAIgAAAAAAAABAACoAIgAAAAAAAABAACsAIgAAAAAAAABAACwAIgAAAAAAAABBAAAADQABAAEAAABBAAEAIgAAAAAAAABBAAIAIgAAAAAAAABBAAMAIgAAAAAAAABBAAQAIgAAAAAAAABBAAUAIgAAAAAAAABBAAYAIgAAAAAAAABBAAcAIgAAAAAAAABBAAgAIgAAAAAAAABBAAkAIgAAAAAAAABBAAoAIgAAAAAAAABBAAsAIgAAAAAAAABBAAwAIgAAAAAAAABBAA0AIgAAAAAAAABBAA4AIgAAAAAAAABBAA8AIgAAAAAAAABBABAAIgAAAAAAAABBABEAIgAAAAAAAABBABIAIgAAAAAAAABBABMAIgAAAAAAAABBABQAIgAAAAAAAABBABUAIgAAAAAAAABBABYAIgAAAAAAAABBABcAIgAAAAAAAABBABgAIgAAAAAAAABBABkAIgAAAAAAAABBABoAIgAAAAAAAABBABsAIgAAAAAAAABBABwAIgAAAAAAAABBAB0AIgAAAAAAAABBAB4AIgAAAAAAAABBAB8AIgAAAAAAAABBACAAIgAAAAAAAABBACEAIgAAAAAAAABBACIAIgAAAAAAAABBACMAIgAAAAAAAABBACQAIgAAAAAAAABBACUAIgAAAAAAAABBACYAIgAAAAAAAABBACcAIgAAAAAAAABBACgAIgAAAAAAAABBACkAIgAAAAAAAABBACoAIgAAAAAAAABBACsAIgAAAAAAAABBACwAIgAAAAAAAABCAAAADQABAAEAAABCAAEAIgAAAAAAAABCAAIAIgAAAAAAAABCAAMAIgAAAAAAAABCAAQAIgAAAAAAAABCAAUAIgAAAAAAAABCAAYAIgAAAAAAAABCAAcAIgAAAAAAAABCAAgAIgAAAAAAAABCAAkAIgAAAAAAAABCAAoAIgAAAAAAAABCAAsAIgAAAAAAAABCAAwAIgAAAAAAAABCAA0AIgAAAAAAAABCAA4AIgAAAAAAAABCAA8AIgAAAAAAAABCABAAIgAAAAAAAABCABEAIgAAAAAAAABCABIAIgAAAAAAAABCABMAIgAAAAAAAABCABQAIgAAAAAAAABCABUAIgAAAAAAAABCABYAIgAAAAAAAABCABcAIgAAAAAAAABCABgAIgAAAAAAAABCABkAIgAAAAAAAABCABoAIgAAAAAAAABCABsAIgAAAAAAAABCABwAIgAAAAAAAABCAB0AIgAAAAAAAABCAB4AIgAAAAAAAABCAB8AIgAAAAAAAABCACAAIgAAAAAAAABCACEAIgAAAAAAAABCACIAIgAAAAAAAABCACMAIgAAAAAAAABCACQAIgAAAAAAAABCACUAIgAAAAAAAABCACYAIgAAAAAAAABCACcAIgAAAAAAAABCACgAIgAAAAAAAABCACkAIgAAAAAAAABCACoAIgAAAAAAAABCACsAIgAAAAAAAABCACwAIgAAAAAAAABDAAAADQABAAEAAABDAAEAIgAAAAAAAABDAAIAIgAAAAAAAABDAAMAIgAAAAAAAABDAAQAIgAAAAAAAABDAAUAIgAAAAAAAABDAAYAIgAAAAAAAABDAAcAIgAAAAAAAABDAAgAIgAAAAAAAABDAAkAIgAAAAAAAABDAAoAIgAAAAAAAABDAAsAIgAAAAAAAABDAAwAIgAAAAAAAABDAA0AIgAAAAAAAABDAA4AIgAAAAAAAABDAA8AIgAAAAAAAABDABAAIgAAAAAAAABDABEAIgAAAAAAAABDABIAIgAAAAAAAABDABMAIgAAAAAAAABDABQAIgAAAAAAAABDABUAIgAAAAAAAABDABYAIgAAAAAAAABDABcAIgAAAAAAAABDABgAIgAAAAAAAABDABkAIgAAAAAAAABDABoAIgAAAAAAAABDABsAIgAAAAAAAABDABwAIgAAAAAAAABDAB0AIgAAAAAAAABDAB4AIgAAAAAAAABDAB8AIgAAAAAAAABDACAAIgAAAAAAAABDACEAIgAAAAAAAABDACIAIgAAAAAAAABDACMAIgAAAAAAAABDACQAIgAAAAAAAABDACUAIgAAAAAAAABDACYAIgAAAAAAAABDACcAIgAAAAAAAABDACgAIgAAAAAAAABDACkAIgAAAAAAAABDACoAIgAAAAAAAABDACsAIgAAAAAAAABDACwAIgAAAAAAAABEAAAADQABAAEAAABEAAEAIgAAAAAAAABEAAIAIgAAAAAAAABEAAMAIgAAAAAAAABEAAQAIgAAAAAAAABEAAUAIgAAAAAAAABEAAYAIgAAAAAAAABEAAcAIgAAAAAAAABEAAgAIgAAAAAAAABEAAkAIgAAAAAAAABEAAoAIgAAAAAAAABEAAsAIgAAAAAAAABEAAwAIgAAAAAAAABEAA0AIgAAAAAAAABEAA4AIgAAAAAAAABEAA8AIgAAAAAAAABEABAAIgAAAAAAAABEABEAIgAAAAAAAABEABIAIgAAAAAAAABEABMAIgAAAAAAAABEABQAIgAAAAAAAABEABUAIgAAAAAAAABEABYAIgAAAAAAAABEABcAIgAAAAAAAABEABgAIgAAAAAAAABEABkAIgAAAAAAAABEABoAIgAAAAAAAABEABsAIgAAAAAAAABEABwAIgAAAAAAAABEAB0AIgAAAAAAAABEAB4AIgAAAAAAAABEAB8AIgAAAAAAAABEACAAIgAAAAAAAABEACEAIgAAAAAAAABEACIAIgAAAAAAAABEACMAIgAAAAAAAABEACQAIgAAAAAAAABEACUAIgAAAAAAAABEACYAIgAAAAAAAABEACcAIgAAAAAAAABEACgAIgAAAAAAAABEACkAIgAAAAAAAABEACoAIgAAAAAAAABEACsAIgAAAAAAAABEACwAIgAAAAAAAABFAAAADQABAAEAAABFAAEAIgAAAAAAAABFAAIAIgAAAAAAAABFAAMAIgAAAAAAAABFAAQAIgAAAAAAAABFAAUAIgAAAAAAAABFAAYAIgAAAAAAAABFAAcAIgAAAAAAAABFAAgAIgAAAAAAAABFAAkAIgAAAAAAAABFAAoAIgAAAAAAAABFAAsAIgAAAAAAAABFAAwAIgAAAAAAAABFAA0AIgAAAAAAAABFAA4AIgAAAAAAAABFAA8AIgAAAAAAAABFABAAIgAAAAAAAABFABEAIgAAAAAAAABFABIAIgAAAAAAAABFABMAIgAAAAAAAABFABQAIgAAAAAAAABFABUAIgAAAAAAAABFABYAIgAAAAAAAABFABcAIgAAAAAAAABFABgAIgAAAAAAAABFABkAIgAAAAAAAABFABoAIgAAAAAAAABFABsAIgAAAAAAAABFABwAIgAAAAAAAABFAB0AIgAAAAAAAABFAB4AIgAAAAAAAABFAB8AIgAAAAAAAABFACAAIgAAAAAAAABFACEAIgAAAAAAAABFACIAIgAAAAAAAABFACMAIgAAAAAAAABFACQAIgAAAAAAAABFACUAIgAAAAAAAABFACYAIgAAAAAAAABFACcAIgAAAAAAAABFACgAIgAAAAAAAABFACkAIgAAAAAAAABFACoAIgAAAAAAAABFACsAIgAAAAAAAABFACwAIgAAAAAAAABGAAAADQABAAEAAABGAAEAIgAAAAAAAABGAAIAIgAAAAAAAABGAAMAIgAAAAAAAABGAAQAIgAAAAAAAABGAAUAIgAAAAAAAABGAAYAIgAAAAAAAABGAAcAIgAAAAAAAABGAAgAIgAAAAAAAABGAAkAIgAAAAAAAABGAAoAIgAAAAAAAABGAAsAIgAAAAAAAABGAAwAIgAAAAAAAABGAA0AIgAAAAAAAABGAA4AIgAAAAAAAABGAA8AIgAAAAAAAABGABAAIgAAAAAAAABGABEAIgAAAAAAAABGABIAIgAAAAAAAABGABMAIgAAAAAAAABGABQAIgAAAAAAAABGABUAIgAAAAAAAABGABYAIgAAAAAAAABGABcAIgAAAAAAAABGABgAIgAAAAAAAABGABkAIgAAAAAAAABGABoAIgAAAAAAAABGABsAIgAAAAAAAABGABwAIgAAAAAAAABGAB0AIgAAAAAAAABGAB4AIgAAAAAAAABGAB8AIgAAAAAAAABGACAAIgAAAAAAAABGACEAIgAAAAAAAABGACIAIgAAAAAAAABGACMAIgAAAAAAAABGACQAIgAAAAAAAABGACUAIgAAAAAAAABGACYAIgAAAAAAAABGACcAIgAAAAAAAABGACgAIgAAAAAAAABGACkAIgAAAAAAAABGACoAIgAAAAAAAABGACsAIgAAAAAAAABGACwAIgAAAAAAAABHAAAADQABAAEAAABHAAEAIgAAAAAAAABHAAIAIgAAAAAAAABHAAMAIgAAAAAAAABHAAQAIgAAAAAAAABHAAUAIgAAAAAAAABHAAYAIgAAAAAAAABHAAcAIgAAAAAAAABHAAgAIgAAAAAAAABHAAkAIgAAAAAAAABHAAoAIgAAAAAAAABHAAsAIgAAAAAAAABHAAwAIgAAAAAAAABHAA0AIgAAAAAAAABHAA4AIgAAAAAAAABHAA8AIgAAAAAAAABHABAAIgAAAAAAAABHABEAIgAAAAAAAABHABIAIgAAAAAAAABHABMAIgAAAAAAAABHABQAIgAAAAAAAABHABUAIgAAAAAAAABHABYAIgAAAAAAAABHABcAIgAAAAAAAABHABgAIgAAAAAAAABHABkAIgAAAAAAAABHABoAIgAAAAAAAABHABsAIgAAAAAAAABHABwAIgAAAAAAAABHAB0AIgAAAAAAAABHAB4AIgAAAAAAAABHAB8AIgAAAAAAAABHACAAIgAAAAAAAABHACEAIgAAAAAAAABHACIAIgAAAAAAAABHACMAIgAAAAAAAABHACQAIgAAAAAAAABHACUAIgAAAAAAAABHACYAIgAAAAAAAABHACcAIgAAAAAAAABHACgAIgAAAAAAAABHACkAIgAAAAAAAABHACoAIgAAAAAAAABHACsAIgAAAAAAAABHACwAIgAAAAAAAABIAAAADQABAAEAAABIAAEAIgAAAAAAAABIAAIAIgAAAAAAAABIAAMAIgAAAAAAAABIAAQAIgAAAAAAAABIAAUAIgAAAAAAAABIAAYAIgAAAAAAAABIAAcAIgAAAAAAAABIAAgAIgAAAAAAAABIAAkAIgAAAAAAAABIAAoAIgAAAAAAAABIAAsAIgAAAAAAAABIAAwAIgAAAAAAAABIAA0AIgAAAAAAAABIAA4AIgAAAAAAAABIAA8AIgAAAAAAAABIABAAIgAAAAAAAABIABEAIgAAAAAAAABIABIAIgAAAAAAAABIABMAIgAAAAAAAABIABQAIgAAAAAAAABIABUAIgAAAAAAAABIABYAIgAAAAAAAABIABcAIgAAAAAAAABIABgAIgAAAAAAAABIABkAIgAAAAAAAABIABoAIgAAAAAAAABIABsAIgAAAAAAAABIABwAIgAAAAAAAABIAB0AIgAAAAAAAABIAB4AIgAAAAAAAABIAB8AIgAAAAAAAABIACAAIgAAAAAAAABIACEAIgAAAAAAAABIACIAIgAAAAAAAABIACMAIgAAAAAAAABIACQAIgAAAAAAAABIACUAIgAAAAAAAABIACYAIgAAAAAAAABIACcAIgAAAAAAAABIACgAIgAAAAAAAABIACkAIgAAAAAAAABIACoAIgAAAAAAAABIACsAIgAAAAAAAABIACwAIgAAAAAAAABJAAAADQABAAEAAABJAAEAIgAAAAAAAABJAAIAIgAAAAAAAABJAAMAIgAAAAAAAABJAAQAIgAAAAAAAABJAAUAIgAAAAAAAABJAAYAIgAAAAAAAABJAAcAIgAAAAAAAABJAAgAIgAAAAAAAABJAAkAIgAAAAAAAABJAAoAIgAAAAAAAABJAAsAIgAAAAAAAABJAAwAIgAAAAAAAABJAA0AIgAAAAAAAABJAA4AIgAAAAAAAABJAA8AIgAAAAAAAABJABAAIgAAAAAAAABJABEAIgAAAAAAAABJABIAIgAAAAAAAABJABMAIgAAAAAAAABJABQAIgAAAAAAAABJABUAIgAAAAAAAABJABYAIgAAAAAAAABJABcAIgAAAAAAAABJABgAIgAAAAAAAABJABkAIgAAAAAAAABJABoAIgAAAAAAAABJABsAIgAAAAAAAABJABwAIgAAAAAAAABJAB0AIgAAAAAAAABJAB4AIgAAAAAAAABJAB8AIgAAAAAAAABJACAAIgAAAAAAAABJACEAIgAAAAAAAABJACIAIgAAAAAAAABJACMAIgAAAAAAAABJACQAIgAAAAAAAABJACUAIgAAAAAAAABJACYAIgAAAAAAAABJACcAIgAAAAAAAABJACgAIgAAAAAAAABJACkAIgAAAAAAAABJACoAIgAAAAAAAABJACsAIgAAAAAAAABJACwAIgAAAAAAAABKAAAADQABAAEAAABKAAEAIgAAAAAAAABKAAIAIgAAAAAAAABKAAMAIgAAAAAAAABKAAQAIgAAAAAAAABKAAUAIgAAAAAAAABKAAYAIgAAAAAAAABKAAcAIgAAAAAAAABKAAgAIgAAAAAAAABKAAkAIgAAAAAAAABKAAoAIgAAAAAAAABKAAsAIgAAAAAAAABKAAwAIgAAAAAAAABKAA0AIgAAAAAAAABKAA4AIgAAAAAAAABKAA8AIgAAAAAAAABKABAAIgAAAAAAAABKABEAIgAAAAAAAABKABIAIgAAAAAAAABKABMAIgAAAAAAAABKABQAIgAAAAAAAABKABUAIgAAAAAAAABKABYAIgAAAAAAAABKABcAIgAAAAAAAABKABgAIgAAAAAAAABKABkAIgAAAAAAAABKABoAIgAAAAAAAABKABsAIgAAAAAAAABKABwAIgAAAAAAAABKAB0AIgAAAAAAAABKAB4AIgAAAAAAAABKAB8AIgAAAAAAAABKACAAIgAAAAAAAABKACEAIgAAAAAAAABKACIAIgAAAAAAAABKACMAIgAAAAAAAABKACQAIgAAAAAAAABKACUAIgAAAAAAAABKACYAIgAAAAAAAABKACcAIgAAAAAAAABKACgAIgAAAAAAAABKACkAIgAAAAAAAABKACoAIgAAAAAAAABKACsAIgAAAAAAAABKACwAIgAAAAAAAABLAAAADQABAAEAAABLAAEAIgAAAAAAAABLAAIAIgAAAAAAAABLAAMAIgAAAAAAAABLAAQAIgAAAAAAAABLAAUAIgAAAAAAAABLAAYAIgAAAAAAAABLAAcAIgAAAAAAAABLAAgAIgAAAAAAAABLAAkAIgAAAAAAAABLAAoAIgAAAAAAAABLAAsAIgAAAAAAAABLAAwAIgAAAAAAAABLAA0AIgAAAAAAAABLAA4AIgAAAAAAAABLAA8AIgAAAAAAAABLABAAIgAAAAAAAABLABEAIgAAAAAAAABLABIAIgAAAAAAAABLABMAIgAAAAAAAABLABQAIgAAAAAAAABLABUAIgAAAAAAAABLABYAIgAAAAAAAABLABcAIgAAAAAAAABLABgAIgAAAAAAAABLABkAIgAAAAAAAABLABoAIgAAAAAAAABLABsAIgAAAAAAAABLABwAIgAAAAAAAABLAB0AIgAAAAAAAABLAB4AIgAAAAAAAABLAB8AIgAAAAAAAABLACAAIgAAAAAAAABLACEAIgAAAAAAAABLACIAIgAAAAAAAABLACMAIgAAAAAAAABLACQAIgAAAAAAAABLACUAIgAAAAAAAABLACYAIgAAAAAAAABLACcAIgAAAAAAAABLACgAIgAAAAAAAABLACkAIgAAAAAAAABLACoAIgAAAAAAAABLACsAIgAAAAAAAABLACwAIgAAAAAAAABMAAAADQABAAEAAABMAAEAIgAAAAAAAABMAAIAIgAAAAAAAABMAAMAIgAAAAAAAABMAAQAIgAAAAAAAABMAAUAIgAAAAAAAABMAAYAIgAAAAAAAABMAAcAIgAAAAAAAABMAAgAIgAAAAAAAABMAAkAIgAAAAAAAABMAAoAIgAAAAAAAABMAAsAIgAAAAAAAABMAAwAIgAAAAAAAABMAA0AIgAAAAAAAABMAA4AIgAAAAAAAABMAA8AIgAAAAAAAABMABAAIgAAAAAAAABMABEAIgAAAAAAAABMABIAIgAAAAAAAABMABMAIgAAAAAAAABMABQAIgAAAAAAAABMABUAIgAAAAAAAABMABYAIgAAAAAAAABMABcAIgAAAAAAAABMABgAIgAAAAAAAABMABkAIgAAAAAAAABMABoAIgAAAAAAAABMABsAIgAAAAAAAABMABwAIgAAAAAAAABMAB0AIgAAAAAAAABMAB4AIgAAAAAAAABMAB8AIgAAAAAAAABMACAAIgAAAAAAAABMACEAIgAAAAAAAABMACIAIgAAAAAAAABMACMAIgAAAAAAAABMACQAIgAAAAAAAABMACUAIgAAAAAAAABMACYAIgAAAAAAAABMACcAIgAAAAAAAABMACgAIgAAAAAAAABMACkAIgAAAAAAAABMACoAIgAAAAAAAABMACsAIgAAAAAAAABMACwAIgAAAAAAAABNAAAADQABAAEAAABNAAEAIgAAAAAAAABNAAIAIgAAAAAAAABNAAMAIgAAAAAAAABNAAQAIgAAAAAAAABNAAUAIgAAAAAAAABNAAYAIgAAAAAAAABNAAcAIgAAAAAAAABNAAgAIgAAAAAAAABNAAkAIgAAAAAAAABNAAoAIgAAAAAAAABNAAsAIgAAAAAAAABNAAwAIgAAAAAAAABNAA0AIgAAAAAAAABNAA4AIgAAAAAAAABNAA8AIgAAAAAAAABNABAAIgAAAAAAAABNABEAIgAAAAAAAABNABIAIgAAAAAAAABNABMAIgAAAAAAAABNABQAIgAAAAAAAABNABUAIgAAAAAAAABNABYAIgAAAAAAAABNABcAIgAAAAAAAABNABgAIgAAAAAAAABNABkAIgAAAAAAAABNABoAIgAAAAAAAABNABsAIgAAAAAAAABNABwAIgAAAAAAAABNAB0AIgAAAAAAAABNAB4AIgAAAAAAAABNAB8AIgAAAAAAAABNACAAIgAAAAAAAABNACEAIgAAAAAAAABNACIAIgAAAAAAAABNACMAIgAAAAAAAABNACQAIgAAAAAAAABNACUAIgAAAAAAAABNACYAIgAAAAAAAABNACcAIgAAAAAAAABNACgAIgAAAAAAAABNACkAIgAAAAAAAABNACoAIgAAAAAAAABNACsAIgAAAAAAAABNACwAIgAAAAAAAABOAAAADQABAAEAAABOAAEAIgAAAAAAAABOAAIAIgAAAAAAAABOAAMAIgAAAAAAAABOAAQAIgAAAAAAAABOAAUAIgAAAAAAAABOAAYAIgAAAAAAAABOAAcAIgAAAAAAAABOAAgAIgAAAAAAAABOAAkAIgAAAAAAAABOAAoAIgAAAAAAAABOAAsAIgAAAAAAAABOAAwAIgAAAAAAAABOAA0AIgAAAAAAAABOAA4AIgAAAAAAAABOAA8AIgAAAAAAAABOABAAIgAAAAAAAABOABEAIgAAAAAAAABOABIAIgAAAAAAAABOABMAIgAAAAAAAABOABQAIgAAAAAAAABOABUAIgAAAAAAAABOABYAIgAAAAAAAABOABcAIgAAAAAAAABOABgAIgAAAAAAAABOABkAIgAAAAAAAABOABoAIgAAAAAAAABOABsAIgAAAAAAAABOABwAIgAAAAAAAABOAB0AIgAAAAAAAABOAB4AIgAAAAAAAABOAB8AIgAAAAAAAABOACAAIgAAAAAAAABOACEAIgAAAAAAAABOACIAIgAAAAAAAABOACMAIgAAAAAAAABOACQAIgAAAAAAAABOACUAIgAAAAAAAABOACYAIgAAAAAAAABOACcAIgAAAAAAAABOACgAIgAAAAAAAABOACkAIgAAAAAAAABOACoAIgAAAAAAAABOACsAIgAAAAAAAABOACwAIgAAAAAAAABPAAAADQABAAEAAABPAAEAIgAAAAAAAABPAAIAIgAAAAAAAABPAAMAIgAAAAAAAABPAAQAIgAAAAAAAABPAAUAIgAAAAAAAABPAAYAIgAAAAAAAABPAAcAIgAAAAAAAABPAAgAIgAAAAAAAABPAAkAIgAAAAAAAABPAAoAIgAAAAAAAABPAAsAIgAAAAAAAABPAAwAIgAAAAAAAABPAA0AIgAAAAAAAABPAA4AIgAAAAAAAABPAA8AIgAAAAAAAABPABAAIgAAAAAAAABPABEAIgAAAAAAAABPABIAIgAAAAAAAABPABMAIgAAAAAAAABPABQAIgAAAAAAAABPABUAIgAAAAAAAABPABYAIgAAAAAAAABPABcAIgAAAAAAAABPABgAIgAAAAAAAABPABkAIgAAAAAAAABPABoAIgAAAAAAAABPABsAIgAAAAAAAABPABwAIgAAAAAAAABPAB0AIgAAAAAAAABPAB4AIgAAAAAAAABPAB8AIgAAAAAAAABPACAAIgAAAAAAAABPACEAIgAAAAAAAABPACIAIgAAAAAAAABPACMAIgAAAAAAAABPACQAIgAAAAAAAABPACUAIgAAAAAAAABPACYAIgAAAAAAAABPACcAIgAAAAAAAABPACgAIgAAAAAAAABPACkAIgAAAAAAAABPACoAIgAAAAAAAABPACsAIgAAAAAAAABPACwAIgAAAAAAAABQAAAADQABAAEAAABQAAEAIgAAAAAAAABQAAIAIgAAAAAAAABQAAMAIgAAAAAAAABQAAQAIgAAAAAAAABQAAUAIgAAAAAAAABQAAYAIgAAAAAAAABQAAcAIgAAAAAAAABQAAgAIgAAAAAAAABQAAkAIgAAAAAAAABQAAoAIgAAAAAAAABQAAsAIgAAAAAAAABQAAwAIgAAAAAAAABQAA0AIgAAAAAAAABQAA4AIgAAAAAAAABQAA8AIgAAAAAAAABQABAAIgAAAAAAAABQABEAIgAAAAAAAABQABIAIgAAAAAAAABQABMAIgAAAAAAAABQABQAIgAAAAAAAABQABUAIgAAAAAAAABQABYAIgAAAAAAAABQABcAIgAAAAAAAABQABgAIgAAAAAAAABQABkAIgAAAAAAAABQABoAGAABAAEAAABQABsAGAABAAEAAABQABwAIgAAAAAAAABQAB0AIgAAAAAAAABQAB4AIgAAAAAAAABQAB8AIgAAAAAAAABQACAAIgAAAAAAAABQACEAIgAAAAAAAABQACIAIgAAAAAAAABQACMAIgAAAAAAAABQACQAIgAAAAAAAABQACUAIgAAAAAAAABQACYAIgAAAAAAAABQACcAIgAAAAAAAABQACgAIgAAAAAAAABQACkAIgAAAAAAAABQACoAIgAAAAAAAABQACsAIgAAAAAAAABQACwAIgAAAAAAAABRAAAADQABAAEAAABRAAEAIgAAAAAAAABRAAIAIgAAAAAAAABRAAMAIgAAAAAAAABRAAQAIgAAAAAAAABRAAUAIgAAAAAAAABRAAYAIgAAAAAAAABRAAcAIgAAAAAAAABRAAgAIgAAAAAAAABRAAkAIgAAAAAAAABRAAoAIgAAAAAAAABRAAsAIgAAAAAAAABRAAwAIgAAAAAAAABRAA0AIgAAAAAAAABRAA4AIgAAAAAAAABRAA8AIgAAAAAAAABRABAAIgAAAAAAAABRABEAIgAAAAAAAABRABIAIgAAAAAAAABRABMAIgAAAAAAAABRABQAIgAAAAAAAABRABUAIgAAAAAAAABRABYAIgAAAAAAAABRABcAIgAAAAAAAABRABgAIgAAAAAAAABRABkAIgAAAAAAAABRABoAIgAAAAAAAABRABsAIgAAAAAAAABRABwAIgAAAAAAAABRAB0AIgAAAAAAAABRAB4AIgAAAAAAAABRAB8AIgAAAAAAAABRACAAIgAAAAAAAABRACEAIgAAAAAAAABRACIAIgAAAAAAAABRACMAIgAAAAAAAABRACQAIgAAAAAAAABRACUAIgAAAAAAAABRACYAIgAAAAAAAABRACcAIgAAAAAAAABRACgAIgAAAAAAAABRACkAIgAAAAAAAABRACoAIgAAAAAAAABRACsAIgAAAAAAAABRACwAIgAAAAAAAAAAAC0ADQABAAEAAAAAAC4ADQABAAEAAAAAAC8ADQABAAEAAAAAADAADQABAAEAAAAAADEADQABAAEAAAAAADIADQABAAEAAAAAADMADQABAAEAAAABAC0ADQABAAEAAAABAC4ADQABAAEAAAABAC8ADQABAAEAAAABADAADQABAAEAAAABADEADQABAAEAAAABADIADQABAAEAAAABADMADQABAAEAAAACAC0ADQABAAEAAAACAC4ADQABAAEAAAACAC8ADQABAAEAAAACADAADQABAAEAAAACADEADQABAAEAAAACADIADQABAAEAAAACADMADQABAAEAAAADAC0ADQABAAEAAAADAC4ADQABAAEAAAADAC8ADQABAAEAAAADADAADQABAAEAAAADADEADQABAAEAAAADADIADQABAAEAAAADADMADQABAAEAAAAEAC0ADQABAAEAAAAEAC4ADQABAAEAAAAEAC8ADQABAAEAAAAEADAADQABAAEAAAAEADEADQABAAEAAAAEADIADQABAAEAAAAEADMADQABAAEAAAAFAC0ADQABAAEAAAAFAC4ADQABAAEAAAAFAC8ADQABAAEAAAAFADAADQABAAEAAAAFADEADQABAAEAAAAFADIADQABAAEAAAAFADMADQABAAEAAAAGAC0ADQABAAEAAAAGAC4ADQABAAEAAAAGAC8ADQABAAEAAAAGADAADQABAAEAAAAGADEADQABAAEAAAAGADIADQABAAEAAAAGADMADQABAAEAAAAHAC0ADQABAAEAAAAHAC4ADQABAAEAAAAHAC8ADQABAAEAAAAHADAADQABAAEAAAAHADEADQABAAEAAAAHADIADQABAAEAAAAHADMADQABAAEAAAAIAC0ADQABAAEAAAAIAC4ADQABAAEAAAAIAC8ADQABAAEAAAAIADAADQABAAEAAAAIADEADQABAAEAAAAIADIADQABAAEAAAAIADMADQABAAEAAAAJAC0ADQABAAEAAAAJAC4ADQABAAEAAAAJAC8ADQABAAEAAAAJADAADQABAAEAAAAJADEADQABAAEAAAAJADIADQABAAEAAAAJADMADQABAAEAAAAKAC0ADQABAAEAAAAKAC4ADQABAAEAAAAKAC8ADQABAAEAAAAKADAADQABAAEAAAAKADEADQABAAEAAAAKADIADQABAAEAAAAKADMADQABAAEAAAALAC0ADQABAAEAAAALAC4ADQABAAEAAAALAC8ADQABAAEAAAALADAADQABAAEAAAALADEADQABAAEAAAALADIADQABAAEAAAALADMADQABAAEAAAAMAC0ADQABAAEAAAAMAC4ADQABAAEAAAAMAC8ADQABAAEAAAAMADAADQABAAEAAAAMADEADQABAAEAAAAMADIADQABAAEAAAAMADMADQABAAEAAAANAC0ADQABAAEAAAANAC4ADQABAAEAAAANAC8ADQABAAEAAAANADAADQABAAEAAAANADEADQABAAEAAAANADIADQABAAEAAAANADMADQABAAEAAAAOAC0ADQABAAEAAAAOAC4ADQABAAEAAAAOAC8ADQABAAEAAAAOADAADQABAAEAAAAOADEADQABAAEAAAAOADIADQABAAEAAAAOADMADQABAAEAAAAPAC0ADQABAAEAAAAPAC4ADQABAAEAAAAPAC8ADQABAAEAAAAPADAADQABAAEAAAAPADEADQABAAEAAAAPADIADQABAAEAAAAPADMADQABAAEAAAAQAC0ADQABAAEAAAAQAC4ADQABAAEAAAAQAC8ADQABAAEAAAAQADAADQABAAEAAAAQADEADQABAAEAAAAQADIADQABAAEAAAAQADMADQABAAEAAAARAC0ADQABAAEAAAARAC4ADQABAAEAAAARAC8ADQABAAEAAAARADAADQABAAEAAAARADEADQABAAEAAAARADIADQABAAEAAAARADMADQABAAEAAAASAC0ADQABAAEAAAASAC4ADQABAAEAAAASAC8ADQABAAEAAAASADAADQABAAEAAAASADEADQABAAEAAAASADIADQABAAEAAAASADMADQABAAEAAAATAC0ADQABAAEAAAATAC4ADQABAAEAAAATAC8ADQABAAEAAAATADAADQABAAEAAAATADEADQABAAEAAAATADIADQABAAEAAAATADMADQABAAEAAAAUAC0ADQABAAEAAAAUAC4ADQABAAEAAAAUAC8ADQABAAEAAAAUADAADQABAAEAAAAUADEADQABAAEAAAAUADIADQABAAEAAAAUADMADQABAAEAAAAVAC0ADQABAAEAAAAVAC4ADQABAAEAAAAVAC8ADQABAAEAAAAVADAADQABAAEAAAAVADEADQABAAEAAAAVADIADQABAAEAAAAVADMADQABAAEAAAAWAC0ADQABAAEAAAAWAC4ADQABAAEAAAAWAC8ADQABAAEAAAAWADAADQABAAEAAAAWADEADQABAAEAAAAWADIADQABAAEAAAAWADMADQABAAEAAAAXAC0ADQABAAEAAAAXAC4ADQABAAEAAAAXAC8ADQABAAEAAAAXADAADQABAAEAAAAXADEADQABAAEAAAAXADIADQABAAEAAAAXADMADQABAAEAAAAYAC0ADQABAAEAAAAYAC4ADQABAAEAAAAYAC8ADQABAAEAAAAYADAADQABAAEAAAAYADEADQABAAEAAAAYADIADQABAAEAAAAYADMADQABAAEAAAAZAC0ADQABAAEAAAAZAC4ADQABAAEAAAAZAC8ADQABAAEAAAAZADAADQABAAEAAAAZADEADQABAAEAAAAZADIADQABAAEAAAAZADMADQABAAEAAAAaAC0ADQABAAEAAAAaAC4ADQABAAEAAAAaAC8ADQABAAEAAAAaADAADQABAAEAAAAaADEADQABAAEAAAAaADIADQABAAEAAAAaADMADQABAAEAAAAbAC0ADQABAAEAAAAbAC4ADQABAAEAAAAbAC8ADQABAAEAAAAbADAADQABAAEAAAAbADEADQABAAEAAAAbADIADQABAAEAAAAbADMADQABAAEAAAAcAC0ADQABAAEAAAAcAC4ADQABAAEAAAAcAC8ADQABAAEAAAAcADAADQABAAEAAAAcADEADQABAAEAAAAcADIADQABAAEAAAAcADMAGAABAAEAAAAdAC0ADQABAAEAAAAdAC4ADQABAAEAAAAdAC8ADQABAAEAAAAdADAADQABAAEAAAAdADEADQABAAEAAAAdADIADQABAAEAAAAdADMAGAABAAEAAAAeAC0ADQABAAEAAAAeAC4ADQABAAEAAAAeAC8ADQABAAEAAAAeADAADQABAAEAAAAeADEADQABAAEAAAAeADIADQABAAEAAAAeADMAGAABAAEAAAAfAC0ADQABAAEAAAAfAC4ADQABAAEAAAAfAC8ADQABAAEAAAAfADAADQABAAEAAAAfADEADQABAAEAAAAfADIADQABAAEAAAAfADMAGAABAAEAAAAgAC0ADQABAAEAAAAgAC4ADQABAAEAAAAgAC8ADQABAAEAAAAgADAADQABAAEAAAAgADEADQABAAEAAAAgADIAGAABAAEAAAAgADMAEgAAAAAAAAAhAC0ADQABAAEAAAAhAC4ADQABAAEAAAAhAC8ADQABAAEAAAAhADAADQABAAEAAAAhADEADQABAAEAAAAhADIAGAABAAEAAAAhADMAEgAAAAAAAAAiAC0ADQABAAEAAAAiAC4ADQABAAEAAAAiAC8ADQABAAEAAAAiADAADQABAAEAAAAiADEAGAABAAEAAAAiADIAEgAAAAAAAAAiADMAEgAAAAAAAAAjAC0ADQABAAEAAAAjAC4ADQABAAEAAAAjAC8ADQABAAEAAAAjADAADQABAAEAAAAjADEAGAABAAEAAAAjADIAEgAAAAAAAAAjADMAEgAAAAAAAAAkAC0ADQABAAEAAAAkAC4ADQABAAEAAAAkAC8ADQABAAEAAAAkADAAGAABAAEAAAAkADEAEgAAAAAAAAAkADIAEgAAAAAAAAAkADMAEgAAAAAAAAAlAC0ADQABAAEAAAAlAC4ADQABAAEAAAAlAC8ADQABAAEAAAAlADAAGAABAAEAAAAlADEAEgAAAAAAAAAlADIAEgAAAAAAAAAlADMAEgAAAAAAAAAmAC0ADQABAAEAAAAmAC4AGAABAAEAAAAmAC8AGAABAAEAAAAmADAAEgAAAAAAAAAmADEAEgAAAAAAAAAmADIAEgAAAAAAAAAmADMAEgAAAAAAAAAnAC0ADQABAAEAAAAnAC4AEgAAAAAAAAAnAC8AEgAAAAAAAAAnADAAEgAAAAAAAAAnADEAEgAAAAAAAAAnADIAEgAAAAAAAAAnADMAEgAAAAAAAAAoAC0ADQABAAEAAAAoAC4AEgAAAAAAAAAoAC8AEgAAAAAAAAAoADAAEgAAAAAAAAAoADEAEgAAAAAAAAAoADIAEgAAAAAAAAAoADMAEgAAAAAAAAApAC0ADQABAAEAAAApAC4AEgAAAAAAAAApAC8AEgAAAAAAAAApADAAEgAAAAAAAAApADEAEgAAAAAAAAApADIAGAABAAEAAAApADMAGAABAAEAAAAqAC0ADQABAAEAAAAqAC4AEgAAAAAAAAAqAC8AEgAAAAAAAAAqADAAGAABAAEAAAAqADEAGAABAAEAAAAqADIADQABAAEAAAAqADMADQABAAEAAAArAC0ADQABAAEAAAArAC4AGAABAAEAAAArAC8AGAABAAEAAAArADAAGAABAAEAAAArADEADQABAAEAAAArADIADQABAAEAAAArADMADQABAAEAAAAsAC0ADQABAAEAAAAsAC4ADQABAAEAAAAsAC8ADQABAAEAAAAsADAADQABAAEAAAAsADEADQABAAEAAAAsADIADQABAAEAAAAsADMADQABAAEAAAAtAC0ADQABAAEAAAAtAC4ADQABAAEAAAAtAC8ADQABAAEAAAAtADAADQABAAEAAAAtADEADQABAAEAAAAtADIADQABAAEAAAAtADMADQABAAEAAAAuAC0ADQABAAEAAAAuAC4ADQABAAEAAAAuAC8ADQABAAEAAAAuADAADQABAAEAAAAuADEADQABAAEAAAAuADIADQABAAEAAAAuADMADQABAAEAAAAvAC0ADQABAAEAAAAvAC4ADQABAAEAAAAvAC8ADQABAAEAAAAvADAADQABAAEAAAAvADEADQABAAEAAAAvADIADQABAAEAAAAvADMADQABAAEAAAAwAC0ADQABAAEAAAAwAC4ADQABAAEAAAAwAC8ADQABAAEAAAAwADAADQABAAEAAAAwADEADQABAAEAAAAwADIADQABAAEAAAAwADMADQABAAEAAAAxAC0ADQABAAEAAAAxAC4ADQABAAEAAAAxAC8ADQABAAEAAAAxADAADQABAAEAAAAxADEADQABAAEAAAAxADIADQABAAEAAAAxADMADQABAAEAAAAyAC0ADQABAAEAAAAyAC4ADQABAAEAAAAyAC8ADQABAAEAAAAyADAADQABAAEAAAAyADEADQABAAEAAAAyADIADQABAAEAAAAyADMADQABAAEAAAAzAC0ADQABAAEAAAAzAC4ADQABAAEAAAAzAC8ADQABAAEAAAAzADAADQABAAEAAAAzADEADQABAAEAAAAzADIADQABAAEAAAAzADMADQABAAEAAAA0AC0ADQABAAEAAAA0AC4ADQABAAEAAAA0AC8ADQABAAEAAAA0ADAADQABAAEAAAA0ADEADQABAAEAAAA0ADIADQABAAEAAAA0ADMADQABAAEAAAA1AC0ADQABAAEAAAA1AC4ADQABAAEAAAA1AC8ADQABAAEAAAA1ADAADQABAAEAAAA1ADEADQABAAEAAAA1ADIADQABAAEAAAA1ADMADQABAAEAAAA2AC0AIgAAAAAAAAA2AC4AIgAAAAAAAAA2AC8AIgAAAAAAAAA2ADAAIgAAAAAAAAA2ADEADQABAAEAAAA2ADIADQABAAEAAAA2ADMADQABAAEAAAA3AC0AIgAAAAAAAAA3AC4AIgAAAAAAAAA3AC8AIgAAAAAAAAA3ADAAIgAAAAAAAAA3ADEAIgAAAAAAAAA3ADIAIgAAAAAAAAA3ADMAIgAAAAAAAAA4AC0AIgAAAAAAAAA4AC4AIgAAAAAAAAA4AC8AIgAAAAAAAAA4ADAAIgAAAAAAAAA4ADEAIgAAAAAAAAA4ADIAIgAAAAAAAAA4ADMAIgAAAAAAAAA5AC0AIgAAAAAAAAA5AC4AIgAAAAAAAAA5AC8AIgAAAAAAAAA5ADAAIgAAAAAAAAA5ADEAIgAAAAAAAAA5ADIAIgAAAAAAAAA5ADMAIgAAAAAAAAA6AC0AIgAAAAAAAAA6AC4AIgAAAAAAAAA6AC8AIgAAAAAAAAA6ADAAIgAAAAAAAAA6ADEAIgAAAAAAAAA6ADIAIgAAAAAAAAA6ADMAIgAAAAAAAAA7AC0AIgAAAAAAAAA7AC4AIgAAAAAAAAA7AC8AIgAAAAAAAAA7ADAAIgAAAAAAAAA7ADEAIgAAAAAAAAA7ADIAIgAAAAAAAAA7ADMAIgAAAAAAAAA8AC0AIgAAAAAAAAA8AC4AIgAAAAAAAAA8AC8AIgAAAAAAAAA8ADAAIgAAAAAAAAA8ADEAIgAAAAAAAAA8ADIAIgAAAAAAAAA8ADMAIgAAAAAAAAA9AC0AIgAAAAAAAAA9AC4AIgAAAAAAAAA9AC8AIgAAAAAAAAA9ADAAIgAAAAAAAAA9ADEAIgAAAAAAAAA9ADIAIgAAAAAAAAA9ADMAIgAAAAAAAAA+AC0AIgAAAAAAAAA+AC4AIgAAAAAAAAA+AC8AIgAAAAAAAAA+ADAAIgAAAAAAAAA+ADEAIgAAAAAAAAA+ADIAIgAAAAAAAAA+ADMAIgAAAAAAAAA/AC0AIgAAAAAAAAA/AC4AIgAAAAAAAAA/AC8AIgAAAAAAAAA/ADAAIgAAAAAAAAA/ADEAIgAAAAAAAAA/ADIAIgAAAAAAAAA/ADMAIgAAAAAAAABAAC0AIgAAAAAAAABAAC4AIgAAAAAAAABAAC8AIgAAAAAAAABAADAAIgAAAAAAAABAADEAIgAAAAAAAABAADIAIgAAAAAAAABAADMAIgAAAAAAAABBAC0AIgAAAAAAAABBAC4AIgAAAAAAAABBAC8AIgAAAAAAAABBADAAIgAAAAAAAABBADEAIgAAAAAAAABBADIAIgAAAAAAAABBADMAIgAAAAAAAABCAC0AIgAAAAAAAABCAC4AIgAAAAAAAABCAC8AIgAAAAAAAABCADAAIgAAAAAAAABCADEAIgAAAAAAAABCADIAIgAAAAAAAABCADMAIgAAAAAAAABDAC0AIgAAAAAAAABDAC4AIgAAAAAAAABDAC8AIgAAAAAAAABDADAAIgAAAAAAAABDADEAIgAAAAAAAABDADIAIgAAAAAAAABDADMAIgAAAAAAAABEAC0AIgAAAAAAAABEAC4AIgAAAAAAAABEAC8AIgAAAAAAAABEADAAIgAAAAAAAABEADEAIgAAAAAAAABEADIAIgAAAAAAAABEADMAIgAAAAAAAABFAC0AIgAAAAAAAABFAC4AIgAAAAAAAABFAC8AIgAAAAAAAABFADAAIgAAAAAAAABFADEAIgAAAAAAAABFADIAIgAAAAAAAABFADMAIgAAAAAAAABGAC0AIgAAAAAAAABGAC4AIgAAAAAAAABGAC8AIgAAAAAAAABGADAAIgAAAAAAAABGADEAIgAAAAAAAABGADIAIgAAAAAAAABGADMAIgAAAAAAAABHAC0AIgAAAAAAAABHAC4AIgAAAAAAAABHAC8AIgAAAAAAAABHADAAIgAAAAAAAABHADEAIgAAAAAAAABHADIAIgAAAAAAAABHADMAIgAAAAAAAABIAC0AIgAAAAAAAABIAC4AIgAAAAAAAABIAC8AIgAAAAAAAABIADAAIgAAAAAAAABIADEAIgAAAAAAAABIADIAIgAAAAAAAABIADMAIgAAAAAAAABJAC0AIgAAAAAAAABJAC4AIgAAAAAAAABJAC8AIgAAAAAAAABJADAAIgAAAAAAAABJADEAIgAAAAAAAABJADIAIgAAAAAAAABJADMAIgAAAAAAAABKAC0AIgAAAAAAAABKAC4AIgAAAAAAAABKAC8AIgAAAAAAAABKADAAIgAAAAAAAABKADEAIgAAAAAAAABKADIAIgAAAAAAAABKADMAIgAAAAAAAABLAC0AIgAAAAAAAABLAC4AIgAAAAAAAABLAC8AIgAAAAAAAABLADAAIgAAAAAAAABLADEAIgAAAAAAAABLADIAIgAAAAAAAABLADMAIgAAAAAAAABMAC0AIgAAAAAAAABMAC4AIgAAAAAAAABMAC8AIgAAAAAAAABMADAAIgAAAAAAAABMADEAIgAAAAAAAABMADIAIgAAAAAAAABMADMAIgAAAAAAAABNAC0AIgAAAAAAAABNAC4AIgAAAAAAAABNAC8AIgAAAAAAAABNADAAIgAAAAAAAABNADEAIgAAAAAAAABNADIAIgAAAAAAAABNADMAIgAAAAAAAABOAC0AIgAAAAAAAABOAC4AIgAAAAAAAABOAC8AIgAAAAAAAABOADAAIgAAAAAAAABOADEAIgAAAAAAAABOADIAIgAAAAAAAABOADMAIgAAAAAAAABPAC0AIgAAAAAAAABPAC4AIgAAAAAAAABPAC8AIgAAAAAAAABPADAAIgAAAAAAAABPADEAIgAAAAAAAABPADIAIgAAAAAAAABPADMAIgAAAAAAAABQAC0AIgAAAAAAAABQAC4AIgAAAAAAAABQAC8AIgAAAAAAAABQADAAIgAAAAAAAABQADEAIgAAAAAAAABQADIAIgAAAAAAAABQADMAIgAAAAAAAABRAC0AIgAAAAAAAABRAC4AIgAAAAAAAABRAC8AIgAAAAAAAABRADAAIgAAAAAAAABRADEAIgAAAAAAAABRADIAIgAAAAAAAABRADMAIgAAAAAAAABSAC0AIgAAAAAAAABSAC4AIgAAAAAAAABSAC8AIgAAAAAAAABSADAAIgAAAAAAAABSADEAIgAAAAAAAABSADIAIgAAAAAAAABSADMAIgAAAAAAAABTAC0AIgAAAAAAAABTAC4AIgAAAAAAAABTAC8AIgAAAAAAAABTADAAIgAAAAAAAABTADEAIgAAAAAAAABTADIAIgAAAAAAAABTADMAIgAAAAAAAABUAC0AIgAAAAAAAABUAC4AIgAAAAAAAABUAC8AIgAAAAAAAABUADAAIgAAAAAAAABUADEAIgAAAAAAAABUADIAIgAAAAAAAABUADMAIgAAAAAAAABVAC0AIgAAAAAAAABVAC4AIgAAAAAAAABVAC8AIgAAAAAAAABVADAAIgAAAAAAAABVADEAIgAAAAAAAABVADIAIgAAAAAAAABVADMAIgAAAAAAAABWAC0AIgAAAAAAAABWAC4AIgAAAAAAAABWAC8AIgAAAAAAAABWADAAIgAAAAAAAABWADEAIgAAAAAAAABWADIAIgAAAAAAAABWADMAIgAAAAAAAABXAC0AIgAAAAAAAABXAC4AIgAAAAAAAABXAC8AIgAAAAAAAABXADAAIgAAAAAAAABXADEAIgAAAAAAAABXADIAIgAAAAAAAABXADMAIgAAAAAAAABYAC0AIgAAAAAAAABYAC4AIgAAAAAAAABYAC8AIgAAAAAAAABYADAAIgAAAAAAAABYADEAIgAAAAAAAABYADIAIgAAAAAAAABYADMAIgAAAAAAAABSABsAIgAAAAAAAABSABwAIgAAAAAAAABSAB0AIgAAAAAAAABSAB4AIgAAAAAAAABSAB8AIgAAAAAAAABSACAAIgAAAAAAAABSACEAIgAAAAAAAABSACIAIgAAAAAAAABSACMAIgAAAAAAAABSACQAIgAAAAAAAABSACUAIgAAAAAAAABSACYAIgAAAAAAAABSACcAIgAAAAAAAABSACgAIgAAAAAAAABSACkAIgAAAAAAAABSACoAIgAAAAAAAABSACsAIgAAAAAAAABSACwAIgAAAAAAAABTABsAIgAAAAAAAABTABwAIgAAAAAAAABTAB0AIgAAAAAAAABTAB4AIgAAAAAAAABTAB8AIgAAAAAAAABTACAAIgAAAAAAAABTACEAIgAAAAAAAABTACIAIgAAAAAAAABTACMAIgAAAAAAAABTACQAIgAAAAAAAABTACUAIgAAAAAAAABTACYAIgAAAAAAAABTACcAIgAAAAAAAABTACgAIgAAAAAAAABTACkAIgAAAAAAAABTACoAIgAAAAAAAABTACsAIgAAAAAAAABTACwAIgAAAAAAAABUABsAIgAAAAAAAABUABwAIgAAAAAAAABUAB0AIgAAAAAAAABUAB4AIgAAAAAAAABUAB8AIgAAAAAAAABUACAAIgAAAAAAAABUACEAIgAAAAAAAABUACIAIgAAAAAAAABUACMAIgAAAAAAAABUACQAIgAAAAAAAABUACUAIgAAAAAAAABUACYAIgAAAAAAAABUACcAIgAAAAAAAABUACgAIgAAAAAAAABUACkAIgAAAAAAAABUACoAIgAAAAAAAABUACsAIgAAAAAAAABUACwAIgAAAAAAAABVABsAIgAAAAAAAABVABwAIgAAAAAAAABVAB0AIgAAAAAAAABVAB4AIgAAAAAAAABVAB8AIgAAAAAAAABVACAAIgAAAAAAAABVACEAIgAAAAAAAABVACIAIgAAAAAAAABVACMAIgAAAAAAAABVACQAIgAAAAAAAABVACUAIgAAAAAAAABVACYAIgAAAAAAAABVACcAIgAAAAAAAABVACgAIgAAAAAAAABVACkAIgAAAAAAAABVACoAIgAAAAAAAABVACsAIgAAAAAAAABVACwAIgAAAAAAAABWABsAIgAAAAAAAABWABwAIgAAAAAAAABWAB0AIgAAAAAAAABWAB4AIgAAAAAAAABWAB8AIgAAAAAAAABWACAAIgAAAAAAAABWACEAIgAAAAAAAABWACIAIgAAAAAAAABWACMAIgAAAAAAAABWACQAIgAAAAAAAABWACUAIgAAAAAAAABWACYAIgAAAAAAAABWACcAIgAAAAAAAABWACgAIgAAAAAAAABWACkAIgAAAAAAAABWACoAIgAAAAAAAABWACsAIgAAAAAAAABWACwAIgAAAAAAAABXABsAIgAAAAAAAABXABwAIgAAAAAAAABXAB0AIgAAAAAAAABXAB4AIgAAAAAAAABXAB8AIgAAAAAAAABXACAAIgAAAAAAAABXACEAIgAAAAAAAABXACIAIgAAAAAAAABXACMAIgAAAAAAAABXACQAIgAAAAAAAABXACUAIgAAAAAAAABXACYAIgAAAAAAAABXACcAIgAAAAAAAABXACgAIgAAAAAAAABXACkAIgAAAAAAAABXACoAIgAAAAAAAABXACsAIgAAAAAAAABXACwAIgAAAAAAAABYABsAIgAAAAAAAABYABwAIgAAAAAAAABYAB0AIgAAAAAAAABYAB4AIgAAAAAAAABYAB8AIgAAAAAAAABYACAAIgAAAAAAAABYACEAIgAAAAAAAABYACIAIgAAAAAAAABYACMAIgAAAAAAAABYACQAIgAAAAAAAABYACUAIgAAAAAAAABYACYAIgAAAAAAAABYACcAIgAAAAAAAABYACgAIgAAAAAAAABYACkAIgAAAAAAAABYACoAIgAAAAAAAABYACsAIgAAAAAAAABYACwAIgAAAAAAAABSAAkAIgAAAAAAAABSAAoAIgAAAAAAAABSAAsAIgAAAAAAAABSAAwAIgAAAAAAAABSAA0AIgAAAAAAAABSAA4AIgAAAAAAAABSAA8AIgAAAAAAAABSABAAIgAAAAAAAABSABEAIgAAAAAAAABSABIAIgAAAAAAAABSABMAIgAAAAAAAABSABQAIgAAAAAAAABSABUAIgAAAAAAAABSABYAIgAAAAAAAABSABcAIgAAAAAAAABSABgAIgAAAAAAAABSABkAIgAAAAAAAABSABoAIgAAAAAAAABTAAkAIgAAAAAAAABTAAoAIgAAAAAAAABTAAsAIgAAAAAAAABTAAwAIgAAAAAAAABTAA0AIgAAAAAAAABTAA4AIgAAAAAAAABTAA8AIgAAAAAAAABTABAAIgAAAAAAAABTABEAIgAAAAAAAABTABIAIgAAAAAAAABTABMAIgAAAAAAAABTABQAIgAAAAAAAABTABUAIgAAAAAAAABTABYAIgAAAAAAAABTABcAIgAAAAAAAABTABgAIgAAAAAAAABTABkAIgAAAAAAAABTABoAIgAAAAAAAABUAAkAIgAAAAAAAABUAAoAIgAAAAAAAABUAAsAIgAAAAAAAABUAAwAIgAAAAAAAABUAA0AIgAAAAAAAABUAA4AIgAAAAAAAABUAA8AIgAAAAAAAABUABAAIgAAAAAAAABUABEAIgAAAAAAAABUABIAIgAAAAAAAABUABMAIgAAAAAAAABUABQAIgAAAAAAAABUABUAIgAAAAAAAABUABYAIgAAAAAAAABUABcAIgAAAAAAAABUABgAIgAAAAAAAABUABkAIgAAAAAAAABUABoAIgAAAAAAAABVAAkAIgAAAAAAAABVAAoAIgAAAAAAAABVAAsAIgAAAAAAAABVAAwAIgAAAAAAAABVAA0AIgAAAAAAAABVAA4AIgAAAAAAAABVAA8AIgAAAAAAAABVABAAIgAAAAAAAABVABEAIgAAAAAAAABVABIAIgAAAAAAAABVABMAIgAAAAAAAABVABQAIgAAAAAAAABVABUAIgAAAAAAAABVABYAIgAAAAAAAABVABcAIgAAAAAAAABVABgAIgAAAAAAAABVABkAIgAAAAAAAABVABoAIgAAAAAAAABWAAkAIgAAAAAAAABWAAoAIgAAAAAAAABWAAsAIgAAAAAAAABWAAwAIgAAAAAAAABWAA0AIgAAAAAAAABWAA4AIgAAAAAAAABWAA8AIgAAAAAAAABWABAAIgAAAAAAAABWABEAIgAAAAAAAABWABIAIgAAAAAAAABWABMAIgAAAAAAAABWABQAIgAAAAAAAABWABUAIgAAAAAAAABWABYAIgAAAAAAAABWABcAIgAAAAAAAABWABgAIgAAAAAAAABWABkAIgAAAAAAAABWABoAIgAAAAAAAABXAAkAIgAAAAAAAABXAAoAIgAAAAAAAABXAAsAIgAAAAAAAABXAAwAIgAAAAAAAABXAA0AIgAAAAAAAABXAA4AIgAAAAAAAABXAA8AIgAAAAAAAABXABAAIgAAAAAAAABXABEAIgAAAAAAAABXABIAIgAAAAAAAABXABMAIgAAAAAAAABXABQAIgAAAAAAAABXABUAIgAAAAAAAABXABYAIgAAAAAAAABXABcAIgAAAAAAAABXABgAIgAAAAAAAABXABkAIgAAAAAAAABXABoAIgAAAAAAAABYAAkAIgAAAAAAAABYAAoAIgAAAAAAAABYAAsAIgAAAAAAAABYAAwAIgAAAAAAAABYAA0AIgAAAAAAAABYAA4AIgAAAAAAAABYAA8AIgAAAAAAAABYABAAIgAAAAAAAABYABEAIgAAAAAAAABYABIAIgAAAAAAAABYABMAIgAAAAAAAABYABQAIgAAAAAAAABYABUAIgAAAAAAAABYABYAIgAAAAAAAABYABcAIgAAAAAAAABYABgAIgAAAAAAAABYABkAIgAAAAAAAABYABoAIgAAAAAAAABSAP//DQABAAEAAABSAAAADQABAAEAAABSAAEAIgAAAAAAAABSAAIAIgAAAAAAAABSAAMAIgAAAAAAAABSAAQAIgAAAAAAAABSAAUAIgAAAAAAAABSAAYAIgAAAAAAAABSAAcAIgAAAAAAAABSAAgAIgAAAAAAAABTAP//DQABAAEAAABTAAAADQABAAEAAABTAAEAIgAAAAAAAABTAAIAIgAAAAAAAABTAAMAIgAAAAAAAABTAAQAIgAAAAAAAABTAAUAIgAAAAAAAABTAAYAIgAAAAAAAABTAAcAIgAAAAAAAABTAAgAIgAAAAAAAABUAP//DQABAAEAAABUAAAADQABAAEAAABUAAEAIgAAAAAAAABUAAIAIgAAAAAAAABUAAMAIgAAAAAAAABUAAQAIgAAAAAAAABUAAUAIgAAAAAAAABUAAYAIgAAAAAAAABUAAcAIgAAAAAAAABUAAgAIgAAAAAAAABVAP//DQABAAEAAABVAAAADQABAAEAAABVAAEAIgAAAAAAAABVAAIAIgAAAAAAAABVAAMAIgAAAAAAAABVAAQAIgAAAAAAAABVAAUAIgAAAAAAAABVAAYAIgAAAAAAAABVAAcAIgAAAAAAAABVAAgAIgAAAAAAAABWAP//DQABAAEAAABWAAAADQABAAEAAABWAAEAIgAAAAAAAABWAAIAIgAAAAAAAABWAAMAIgAAAAAAAABWAAQAIgAAAAAAAABWAAUAIgAAAAAAAABWAAYAIgAAAAAAAABWAAcAIgAAAAAAAABWAAgAIgAAAAAAAABXAP//DQABAAEAAABXAAAADQABAAEAAABXAAEAIgAAAAAAAABXAAIAIgAAAAAAAABXAAMAIgAAAAAAAABXAAQAIgAAAAAAAABXAAUAIgAAAAAAAABXAAYAIgAAAAAAAABXAAcAIgAAAAAAAABXAAgAIgAAAAAAAABYAP//DQABAAEAAABYAAAADQABAAEAAABYAAEAIgAAAAAAAABYAAIAIgAAAAAAAABYAAMAIgAAAAAAAABYAAQAIgAAAAAAAABYAAUAIgAAAAAAAABYAAYAIgAAAAAAAABYAAcAIgAAAAAAAABYAAgAIgAAAAAAAAAtAP//DQABAAEAAAAuAP//DQABAAEAAAAvAP//DQABAAEAAAAwAP//DQABAAEAAAAxAP//DQABAAEAAAAyAP//DQABAAEAAAAzAP//DQABAAEAAAA0AP//DQABAAEAAAA1AP//DQABAAEAAAA2AP//DQABAAEAAAA3AP//DQABAAEAAAA4AP//DQABAAEAAAA5AP//DQABAAEAAAA6AP//DQABAAEAAAA7AP//DQABAAEAAAA8AP//DQABAAEAAAA9AP//DQABAAEAAAA+AP//DQABAAEAAAA/AP//DQABAAEAAABAAP//DQABAAEAAABBAP//DQABAAEAAABCAP//DQABAAEAAABDAP//DQABAAEAAABEAP//DQABAAEAAABFAP//DQABAAEAAABGAP//DQABAAEAAABHAP//DQABAAEAAABIAP//DQABAAEAAABJAP//DQABAAEAAABKAP//DQABAAEAAABLAP//DQABAAEAAABMAP//DQABAAEAAABNAP//DQABAAEAAABOAP//DQABAAEAAABPAP//DQABAAEAAABQAP//DQABAAEAAABRAP//DQABAAEAAAAAAP//DQABAAEAAAABAP//DQABAAEAAAACAP//DQABAAEAAAADAP//DQABAAEAAAAEAP//DQABAAEAAAAFAP//DQABAAEAAAAGAP//DQABAAEAAAAHAP//DQABAAEAAAAIAP//DQABAAEAAAAJAP//DQABAAEAAAAKAP//DQABAAEAAAALAP//DQABAAEAAAAMAP//DQABAAEAAAANAP//DQABAAEAAAAOAP//DQABAAEAAAAPAP//DQABAAEAAAAQAP//DQABAAEAAAARAP//DQABAAEAAAASAP//DQABAAEAAAATAP//DQABAAEAAAAUAP//DQABAAEAAAAVAP//DQABAAEAAAAWAP//DQABAAEAAAAXAP//DQABAAEAAAAYAP//DQABAAEAAAAZAP//DQABAAEAAAAaAP//DQABAAEAAAAbAP//DQABAAEAAAAcAP//DQABAAEAAAAdAP//DQABAAEAAAAeAP//DQABAAEAAAAfAP//DQABAAEAAAAgAP//DQABAAEAAAAhAP//DQABAAEAAAAiAP//DQABAAEAAAAjAP//DQABAAEAAAAkAP//DQABAAEAAAAlAP//DQABAAEAAAAmAP//DQABAAEAAAAnAP//DQABAAEAAAAoAP//DQABAAEAAAApAP//DQABAAEAAAAqAP//DQABAAEAAAArAP//DQABAAEAAAAsAP//DQABAAEAAAAUAAUADQABAAEAAABZAP//DQACAAAAAABZAAAADQACAAEAAABZAAEAIgAAAAAAAABZAAIAIgAAAAAAAABZAAMAIgAAAAAAAABZAAQAIgAAAAAAAABZAAUAIgAAAAAAAABZAAYAIgAAAAAAAABZAAcAIgAAAAAAAABZAAgAIgAAAAAAAABZAAkAIgAAAAAAAABZAAoAIgAAAAAAAABZAAsAIgAAAAAAAABZAAwAIgAAAAAAAABZAA0AIgAAAAAAAABZAA4AIgAAAAAAAABZAA8AIgAAAAAAAABZABAAIgAAAAAAAABZABEAIgAAAAAAAABZABIAIgAAAAAAAABZABMAIgAAAAAAAABZABQAIgAAAAAAAABZABUAIgAAAAAAAABZABYAIgAAAAAAAABZABcAIgAAAAAAAABZABgAIgAAAAAAAABZABkAIgAAAAAAAABZABoAIgAAAAAAAABZABsAIgAAAAAAAABZABwAIgAAAAAAAABZAB0AIgAAAAAAAABZAB4AIgAAAAAAAABZAB8AIgAAAAAAAABZACAAIgAAAAAAAABZACEAIgAAAAAAAABZACIAIgAAAAAAAABZACMAIgAAAAAAAABZACQAIgAAAAAAAABZACUAIgAAAAAAAABZACYAIgAAAAAAAABZACcAIgAAAAAAAABZACgAIgAAAAAAAABZACkAIgAAAAAAAABZACoAIgAAAAAAAABZACsAIgAAAAAAAABZACwAIgAAAAAAAABZAC0AIgAAAAAAAABZAC4AIgAAAAAAAABZAC8AIgAAAAAAAABZADAAIgAAAAAAAABZADEAIgAAAAAAAABZADIAIgAAAAAAAABZADMAIgAAAAAAAAAAADQAGAABAAEAAAAAADwAGAABAAEAAAAAAD0AEgAAAAAAAAAAAD4AGAABAAEAAAAAAD8ADQABAAEAAAABADQAGAABAAEAAAABADgAGAABAAEAAAABADkAGAABAAEAAAABADoAGAABAAEAAAABADsAGAABAAEAAAABADwAGAABAAEAAAABAD0AEgAAAAAAAAABAD4AGAABAAEAAAABAD8ADQABAAEAAAACADQAGAABAAEAAAACADgAEgAAAAAAAAACADkAEgAAAAAAAAACADoAEgAAAAAAAAACADsAEgAAAAAAAAACADwAEgAAAAAAAAACAD0AEgAAAAAAAAACAD4AGAABAAEAAAACAD8ADQABAAEAAAADADQADQABAAEAAAADADUAGAABAAEAAAADADYAEgAAAAAAAAADADcAEgAAAAAAAAADADgAEgAAAAAAAAADADkAEgAAAAAAAAADADoAEgAAAAAAAAADADsAEgAAAAAAAAADADwAEgAAAAAAAAADAD0AGAABAAEAAAADAD4ADQABAAEAAAADAD8ADQABAAEAAAAEADQADQABAAEAAAAEADUADQABAAEAAAAEADYAGAABAAEAAAAEADcAEgAAAAAAAAAEADgAEgAAAAAAAAAEADkAEgAAAAAAAAAEADoAEgAAAAAAAAAEADsAEgAAAAAAAAAEADwAGAABAAEAAAAEAD0ADQABAAEAAAAEAD4ADQABAAEAAAAEAD8ADQABAAEAAAAFADQADQABAAEAAAAFADUADQABAAEAAAAFADYADQABAAEAAAAFADcAGAABAAEAAAAFADgAEgAAAAAAAAAFADkAEgAAAAAAAAAFADoAEgAAAAAAAAAFADsAEgAAAAAAAAAFADwAGAABAAEAAAAFAD0ADQABAAEAAAAFAD4ADQABAAEAAAAFAD8ADQABAAEAAAAGADQADQABAAEAAAAGADUADQABAAEAAAAGADYADQABAAEAAAAGADcAGAABAAEAAAAGADgAEgAAAAAAAAAGADkAEgAAAAAAAAAGADoAEgAAAAAAAAAGADsAEgAAAAAAAAAGADwAGAABAAEAAAAGAD0ADQABAAEAAAAGAD4ADQABAAEAAAAGAD8ADQABAAEAAAAHADQADQABAAEAAAAHADUADQABAAEAAAAHADYADQABAAEAAAAHADcAGAABAAEAAAAHADgAEgAAAAAAAAAHADkAEgAAAAAAAAAHADoAEgAAAAAAAAAHADsAEgAAAAAAAAAHADwAGAABAAEAAAAHAD0ADQABAAEAAAAHAD4ADQABAAEAAAAHAD8ADQABAAEAAAAIADQADQABAAEAAAAIADUADQABAAEAAAAIADYADQABAAEAAAAIADcAGAABAAEAAAAIADgAEgAAAAAAAAAIADkAEgAAAAAAAAAIADoAEgAAAAAAAAAIADsAEgAAAAAAAAAIADwAGAABAAEAAAAIAD0ADQABAAEAAAAIAD4ADQABAAEAAAAIAD8ADQABAAEAAAAJADQADQABAAEAAAAJADUADQABAAEAAAAJADYADQABAAEAAAAJADcAGAABAAEAAAAJADgAEgAAAAAAAAAJADkAEgAAAAAAAAAJADoAEgAAAAAAAAAJADsAEgAAAAAAAAAJADwAGAABAAEAAAAJAD0ADQABAAEAAAAJAD4ADQABAAEAAAAJAD8ADQABAAEAAAAKADQADQABAAEAAAAKADUADQABAAEAAAAKADYADQABAAEAAAAKADcAGAABAAEAAAAKADgAEgAAAAAAAAAKADkAEgAAAAAAAAAKADoAEgAAAAAAAAAKADsAEgAAAAAAAAAKADwAGAABAAEAAAAKAD0ADQABAAEAAAAKAD4ADQABAAEAAAAKAD8ADQABAAEAAAALADQADQABAAEAAAALADUADQABAAEAAAALADYADQABAAEAAAALADcAGAABAAEAAAALADgAEgAAAAAAAAALADkAEgAAAAAAAAALADoAEgAAAAAAAAALADsAEgAAAAAAAAALADwAGAABAAEAAAALAD0ADQABAAEAAAALAD4ADQABAAEAAAALAD8ADQABAAEAAAAMADQADQABAAEAAAAMADUADQABAAEAAAAMADYADQABAAEAAAAMADcAGAABAAEAAAAMADgAEgAAAAAAAAAMADkAEgAAAAAAAAAMADoAEgAAAAAAAAAMADsAEgAAAAAAAAAMADwAGAABAAEAAAAMAD0ADQABAAEAAAAMAD4ADQABAAEAAAAMAD8ADQABAAEAAAANADQADQABAAEAAAANADUADQABAAEAAAANADYADQABAAEAAAANADcAGAABAAEAAAANADgAGAABAAEAAAANADkAEgAAAAAAAAANADoAEgAAAAAAAAANADsAEgAAAAAAAAANADwAGAABAAEAAAANAD0ADQABAAEAAAANAD4ADQABAAEAAAANAD8ADQABAAEAAAAOADQADQABAAEAAAAOADUADQABAAEAAAAOADYADQABAAEAAAAOADcAGAABAAEAAAAOADgAGAABAAEAAAAOADkAEgAAAAAAAAAOADoAEgAAAAAAAAAOADsAEgAAAAAAAAAOADwAGAABAAEAAAAOAD0ADQABAAEAAAAOAD4ADQABAAEAAAAOAD8ADQABAAEAAAAPADQADQABAAEAAAAPADUADQABAAEAAAAPADYADQABAAEAAAAPADcAGAABAAEAAAAPADgAEgAAAAAAAAAPADkAEgAAAAAAAAAPADoAEgAAAAAAAAAPADsAEgAAAAAAAAAPADwAGAABAAEAAAAPAD0ADQABAAEAAAAPAD4ADQABAAEAAAAPAD8ADQABAAEAAAAQADQADQABAAEAAAAQADUADQABAAEAAAAQADYADQABAAEAAAAQADcAGAABAAEAAAAQADgAEgAAAAAAAAAQADkAEgAAAAAAAAAQADoAEgAAAAAAAAAQADsAEgAAAAAAAAAQADwAGAABAAEAAAAQAD0ADQABAAEAAAAQAD4ADQABAAEAAAAQAD8ADQABAAEAAAARADQADQABAAEAAAARADUADQABAAEAAAARADYADQABAAEAAAARADcAGAABAAEAAAARADgAEgAAAAAAAAARADkAEgAAAAAAAAARADoAEgAAAAAAAAARADsAGAABAAEAAAARADwAGAABAAEAAAARAD0ADQABAAEAAAARAD4ADQABAAEAAAARAD8ADQABAAEAAAASADQADQABAAEAAAASADUADQABAAEAAAASADYAGAABAAEAAAASADcAGAABAAEAAAASADgAEgAAAAAAAAASADkAEgAAAAAAAAASADoAEgAAAAAAAAASADsAGAABAAEAAAASADwADQABAAEAAAASAD0ADQABAAEAAAASAD4ADQABAAEAAAASAD8ADQABAAEAAAATADQADQABAAEAAAATADUADQABAAEAAAATADYAGAABAAEAAAATADcAEgAAAAAAAAATADgAEgAAAAAAAAATADkAEgAAAAAAAAATADoAEgAAAAAAAAATADsAGAABAAEAAAATADwADQABAAEAAAATAD0ADQABAAEAAAATAD4ADQABAAEAAAATAD8ADQABAAEAAAAUADQADQABAAEAAAAUADUADQABAAEAAAAUADYAGAABAAEAAAAUADcAEgAAAAAAAAAUADgAEgAAAAAAAAAUADkAEgAAAAAAAAAUADoAEgAAAAAAAAAUADsAGAABAAEAAAAUADwADQABAAEAAAAUAD0ADQABAAEAAAAUAD4ADQABAAEAAAAUAD8ADQABAAEAAAAVADQADQABAAEAAAAVADUADQABAAEAAAAVADYAGAABAAEAAAAVADcAEgAAAAAAAAAVADgAEgAAAAAAAAAVADkAEgAAAAAAAAAVADoAEgAAAAAAAAAVADsAGAABAAEAAAAVADwADQABAAEAAAAVAD0ADQABAAEAAAAVAD4ADQABAAEAAAAVAD8ADQABAAEAAAAWADQADQABAAEAAAAWADUADQABAAEAAAAWADYAGAABAAEAAAAWADcAEgAAAAAAAAAWADgAEgAAAAAAAAAWADkAEgAAAAAAAAAWADoAGAABAAEAAAAWADsADQABAAEAAAAWADwADQABAAEAAAAWAD0ADQABAAEAAAAWAD4ADQABAAEAAAAWAD8ADQABAAEAAAAXADQADQABAAEAAAAXADUAGAABAAEAAAAXADYAEgAAAAAAAAAXADcAEgAAAAAAAAAXADgAEgAAAAAAAAAXADkAEgAAAAAAAAAXADoAGAABAAEAAAAXADsADQABAAEAAAAXADwADQABAAEAAAAXAD0ADQABAAEAAAAXAD4ADQABAAEAAAAXAD8ADQABAAEAAAAYADQADQABAAEAAAAYADUAGAABAAEAAAAYADYAEgAAAAAAAAAYADcAEgAAAAAAAAAYADgAEgAAAAAAAAAYADkAEgAAAAAAAAAYADoAGAABAAEAAAAYADsADQABAAEAAAAYADwADQABAAEAAAAYAD0ADQABAAEAAAAYAD4ADQABAAEAAAAYAD8ADQABAAEAAAAZADQAGAABAAEAAAAZADUAEgAAAAAAAAAZADYAEgAAAAAAAAAZADcAEgAAAAAAAAAZADgAEgAAAAAAAAAZADkAGAABAAEAAAAZADoADQABAAEAAAAZADsADQABAAEAAAAZADwADQABAAEAAAAZAD0ADQABAAEAAAAZAD4ADQABAAEAAAAZAD8ADQABAAEAAAAaADQAGAABAAEAAAAaADUAEgAAAAAAAAAaADYAEgAAAAAAAAAaADcAEgAAAAAAAAAaADgAEgAAAAAAAAAaADkAGAABAAEAAAAaADoADQABAAEAAAAaADsADQABAAEAAAAaADwADQABAAEAAAAaAD0ADQABAAEAAAAaAD4ADQABAAEAAAAaAD8ADQABAAEAAAAbADQAGAABAAEAAAAbADUAEgAAAAAAAAAbADYAEgAAAAAAAAAbADcAEgAAAAAAAAAbADgAGAABAAEAAAAbADkADQABAAEAAAAbADoADQABAAEAAAAbADsADQABAAEAAAAbADwADQABAAEAAAAbAD0ADQABAAEAAAAbAD4ADQABAAEAAAAbAD8ADQABAAEAAAAcADQAEgAAAAAAAAAcADUAEgAAAAAAAAAcADYAEgAAAAAAAAAcADcAEgAAAAAAAAAcADgAGAABAAEAAAAcADkADQABAAEAAAAcADoADQABAAEAAAAcADsADQABAAEAAAAcADwADQABAAEAAAAcAD0ADQABAAEAAAAcAD4ADQABAAEAAAAcAD8ADQABAAEAAAAdADQAEgAAAAAAAAAdADUAEgAAAAAAAAAdADYAEgAAAAAAAAAdADcAEgAAAAAAAAAdADgAGAABAAEAAAAdADkADQABAAEAAAAdADoADQABAAEAAAAdADsADQABAAEAAAAdADwADQABAAEAAAAdAD0ADQABAAEAAAAdAD4ADQABAAEAAAAdAD8ADQABAAEAAAAeADQAEgAAAAAAAAAeADUAEgAAAAAAAAAeADYAEgAAAAAAAAAeADcAGAABAAEAAAAeADgADQABAAEAAAAeADkADQABAAEAAAAeADoADQABAAEAAAAeADsADQABAAEAAAAeADwADQABAAEAAAAeAD0ADQABAAEAAAAeAD4ADQABAAEAAAAeAD8ADQABAAEAAAAfADQAEgAAAAAAAAAfADUAEgAAAAAAAAAfADYAEgAAAAAAAAAfADcAGAABAAEAAAAfADgADQABAAEAAAAfADkADQABAAEAAAAfADoADQABAAEAAAAfADsADQABAAEAAAAfADwADQABAAEAAAAfAD0ADQABAAEAAAAfAD4ADQABAAEAAAAfAD8ADQABAAEAAAAgADQAEgAAAAAAAAAgADUAEgAAAAAAAAAgADYAEgAAAAAAAAAgADcAGAABAAEAAAAgADgADQABAAEAAAAgADkADQABAAEAAAAgADoADQABAAEAAAAgADsADQABAAEAAAAgADwADQABAAEAAAAgAD0ADQABAAEAAAAgAD4ADQABAAEAAAAgAD8ADQABAAEAAAAhADQAEgAAAAAAAAAhADUAEgAAAAAAAAAhADYAEgAAAAAAAAAhADcAGAABAAEAAAAhADgADQABAAEAAAAhADkADQABAAEAAAAhADoADQABAAEAAAAhADsADQABAAEAAAAhADwADQABAAEAAAAhAD0ADQABAAEAAAAhAD4ADQABAAEAAAAhAD8ADQABAAEAAAAiADQAEgAAAAAAAAAiADUAEgAAAAAAAAAiADYAEgAAAAAAAAAiADcAGAABAAEAAAAiADgADQABAAEAAAAiADkADQABAAEAAAAiADoADQABAAEAAAAiADsADQABAAEAAAAiADwADQABAAEAAAAiAD0ADQABAAEAAAAiAD4ADQABAAEAAAAiAD8ADQABAAEAAAAjADQAEgAAAAAAAAAjADUAEgAAAAAAAAAjADYAGAABAAEAAAAjADcADQABAAEAAAAjADgADQABAAEAAAAjADkADQABAAEAAAAjADoADQABAAEAAAAjADsADQABAAEAAAAjADwADQABAAEAAAAjAD0ADQABAAEAAAAjAD4ADQABAAEAAAAjAD8ADQABAAEAAAAkADQAEgAAAAAAAAAkADUAGAABAAEAAAAkADYAGAABAAEAAAAkADcADQABAAEAAAAkADgADQABAAEAAAAkADkADQABAAEAAAAkADoADQABAAEAAAAkADsADQABAAEAAAAkADwADQABAAEAAAAkAD0ADQABAAEAAAAkAD4ADQABAAEAAAAkAD8ADQABAAEAAAAlADQAEgAAAAAAAAAlADUAGAABAAEAAAAlADYADQABAAEAAAAlADcADQABAAEAAAAlADgADQABAAEAAAAlADkADQABAAEAAAAlADoADQABAAEAAAAlADsADQABAAEAAAAlADwADQABAAEAAAAlAD0ADQABAAEAAAAlAD4ADQABAAEAAAAlAD8ADQABAAEAAAAmADQAGAABAAEAAAAmADUADQABAAEAAAAmADYADQABAAEAAAAmADcADQABAAEAAAAmADgADQABAAEAAAAmADkADQABAAEAAAAmADoADQABAAEAAAAmADsADQABAAEAAAAmADwADQABAAEAAAAmAD0ADQABAAEAAAAmAD4ADQABAAEAAAAmAD8ADQABAAEAAAAnADQAGAABAAEAAAAnADUADQABAAEAAAAnADYADQABAAEAAAAnADcADQABAAEAAAAnADgADQABAAEAAAAnADkADQABAAEAAAAnADoADQABAAEAAAAnADsADQABAAEAAAAnADwADQABAAEAAAAnAD0ADQABAAEAAAAnAD4ADQABAAEAAAAnAD8ADQABAAEAAAAoADQAGAABAAEAAAAoADUADQABAAEAAAAoADYADQABAAEAAAAoADcADQABAAEAAAAoADgADQABAAEAAAAoADkADQABAAEAAAAoADoADQABAAEAAAAoADsADQABAAEAAAAoADwADQABAAEAAAAoAD0ADQABAAEAAAAoAD4ADQABAAEAAAAoAD8ADQABAAEAAAApADQADQABAAEAAAApADUADQABAAEAAAApADYADQABAAEAAAApADcADQABAAEAAAApADgADQABAAEAAAApADkADQABAAEAAAApADoADQABAAEAAAApADsADQABAAEAAAApADwADQABAAEAAAApAD0ADQABAAEAAAApAD4ADQABAAEAAAApAD8ADQABAAEAAAAqADQADQABAAEAAAAqADUADQABAAEAAAAqADYADQABAAEAAAAqADcADQABAAEAAAAqADgADQABAAEAAAAqADkADQABAAEAAAAqADoADQABAAEAAAAqADsADQABAAEAAAAqADwADQABAAEAAAAqAD0ADQABAAEAAAAqAD4ADQABAAEAAAAqAD8ADQABAAEAAAArADQADQABAAEAAAArADUADQABAAEAAAArADYADQABAAEAAAArADcADQABAAEAAAArADgADQABAAEAAAArADkADQABAAEAAAArADoADQABAAEAAAArADsADQABAAEAAAArADwADQABAAEAAAArAD0ADQABAAEAAAArAD4ADQABAAEAAAArAD8ADQABAAEAAAAsADQADQABAAEAAAAsADUADQABAAEAAAAsADYADQABAAEAAAAsADcADQABAAEAAAAsADgADQABAAEAAAAsADkADQABAAEAAAAsADoADQABAAEAAAAsADsADQABAAEAAAAsADwADQABAAEAAAAsAD0ADQABAAEAAAAsAD4ADQABAAEAAAAsAD8ADQABAAEAAAAtADQADQABAAEAAAAtADUADQABAAEAAAAtADYADQABAAEAAAAtADcADQABAAEAAAAtADgADQABAAEAAAAtADkADQABAAEAAAAtADoADQABAAEAAAAtADsADQABAAEAAAAtADwADQABAAEAAAAtAD0ADQABAAEAAAAtAD4ADQABAAEAAAAtAD8ADQABAAEAAAAuADQADQABAAEAAAAuADUADQABAAEAAAAuADYADQABAAEAAAAuADcADQABAAEAAAAuADgADQABAAEAAAAuADkADQABAAEAAAAuADoADQABAAEAAAAuADsADQABAAEAAAAuADwADQABAAEAAAAuAD0ADQABAAEAAAAuAD4ADQABAAEAAAAuAD8ADQABAAEAAAAvADQADQABAAEAAAAvADUADQABAAEAAAAvADYADQABAAEAAAAvADcADQABAAEAAAAvADgADQABAAEAAAAvADkADQABAAEAAAAvADoADQABAAEAAAAvADsADQABAAEAAAAvADwADQABAAEAAAAvAD0ADQABAAEAAAAvAD4ADQABAAEAAAAvAD8ADQABAAEAAAAwADQADQABAAEAAAAwADUADQABAAEAAAAwADYADQABAAEAAAAwADcADQABAAEAAAAwADgADQABAAEAAAAwADkADQABAAEAAAAwADoADQABAAEAAAAwADsADQABAAEAAAAwADwADQABAAEAAAAwAD0ADQABAAEAAAAwAD4ADQABAAEAAAAwAD8ADQABAAEAAAAxADQADQABAAEAAAAxADUADQABAAEAAAAxADYADQABAAEAAAAxADcADQABAAEAAAAxADgADQABAAEAAAAxADkADQABAAEAAAAxADoADQABAAEAAAAxADsADQABAAEAAAAxADwADQABAAEAAAAxAD0ADQABAAEAAAAxAD4ADQABAAEAAAAxAD8ADQABAAEAAAAyADQADQABAAEAAAAyADUADQABAAEAAAAyADYADQABAAEAAAAyADcADQABAAEAAAAyADgADQABAAEAAAAyADkADQABAAEAAAAyADoADQABAAEAAAAyADsADQABAAEAAAAyADwADQABAAEAAAAyAD0ADQABAAEAAAAyAD4ADQABAAEAAAAyAD8ADQABAAEAAAAzADQADQABAAEAAAAzADUADQABAAEAAAAzADYADQABAAEAAAAzADcADQABAAEAAAAzADgADQABAAEAAAAzADkADQABAAEAAAAzADoADQABAAEAAAAzADsADQABAAEAAAAzADwADQABAAEAAAAzAD0ADQABAAEAAAAzAD4ADQABAAEAAAAzAD8ADQABAAEAAAA0ADQADQABAAEAAAA0ADUADQABAAEAAAA0ADYADQABAAEAAAA0ADcADQABAAEAAAA0ADgADQABAAEAAAA0ADkADQABAAEAAAA0ADoADQABAAEAAAA0ADsADQABAAEAAAA0ADwADQABAAEAAAA0AD0ADQABAAEAAAA0AD4ADQABAAEAAAA0AD8ADQABAAEAAAA1ADQADQABAAEAAAA1ADUADQABAAEAAAA1ADYADQABAAEAAAA1ADcADQABAAEAAAA1ADgADQABAAEAAAA1ADkADQABAAEAAAA1ADoADQABAAEAAAA1ADsADQABAAEAAAA1ADwADQABAAEAAAA1AD0ADQABAAEAAAA1AD4ADQABAAEAAAA1AD8ADQABAAEAAAA2ADQADQABAAEAAAA2ADUADQABAAEAAAA2ADYADQABAAEAAAA2ADcADQABAAEAAAA2ADgADQABAAEAAAA2ADkADQABAAEAAAA2ADoADQABAAEAAAA2ADsADQABAAEAAAA2ADwADQABAAEAAAA2AD0ADQABAAEAAAA2AD4ADQABAAEAAAA2AD8ADQABAAEAAAA3ADQAIgAAAAAAAAA3ADUAIgAAAAAAAAA3ADYAIgAAAAAAAAA3ADcAIgAAAAAAAAA3ADgAIgAAAAAAAAA3ADkAIgAAAAAAAAA3ADoAIgAAAAAAAAA3ADsAIgAAAAAAAAA3ADwAIgAAAAAAAAA3AD0AIgAAAAAAAAA3AD4AIgAAAAAAAAA3AD8AIgAAAAAAAAA4ADQAIgAAAAAAAAA4ADUAIgAAAAAAAAA4ADYAIgAAAAAAAAA4ADcAIgAAAAAAAAA4ADgAIgAAAAAAAAA4ADkAIgAAAAAAAAA4ADoAIgAAAAAAAAA4ADsAIgAAAAAAAAA4ADwAIgAAAAAAAAA4AD0AIgAAAAAAAAA4AD4AIgAAAAAAAAA4AD8AIgAAAAAAAAA5ADQAIgAAAAAAAAA5ADUAIgAAAAAAAAA5ADYAIgAAAAAAAAA5ADcAIgAAAAAAAAA5ADgAIgAAAAAAAAA5ADkAIgAAAAAAAAA5ADoAIgAAAAAAAAA5ADsAIgAAAAAAAAA5ADwAIgAAAAAAAAA5AD0AIgAAAAAAAAA5AD4AIgAAAAAAAAA5AD8AIgAAAAAAAAA6ADQAIgAAAAAAAAA6ADUAIgAAAAAAAAA6ADYAIgAAAAAAAAA6ADcAIgAAAAAAAAA6ADgAIgAAAAAAAAA6ADkAIgAAAAAAAAA6ADoAIgAAAAAAAAA6ADsAIgAAAAAAAAA6ADwAIgAAAAAAAAA6AD0AIgAAAAAAAAA6AD4AIgAAAAAAAAA6AD8AIgAAAAAAAAA7ADQAIgAAAAAAAAA7ADUAIgAAAAAAAAA7ADYAIgAAAAAAAAA7ADcAIgAAAAAAAAA7ADgAIgAAAAAAAAA7ADkAIgAAAAAAAAA7ADoAIgAAAAAAAAA7ADsAIgAAAAAAAAA7ADwAIgAAAAAAAAA7AD0AIgAAAAAAAAA7AD4AIgAAAAAAAAA7AD8AIgAAAAAAAAA8ADQAIgAAAAAAAAA8ADUAIgAAAAAAAAA8ADYAIgAAAAAAAAA8ADcAIgAAAAAAAAA8ADgAIgAAAAAAAAA8ADkAIgAAAAAAAAA8ADoAIgAAAAAAAAA8ADsAIgAAAAAAAAA8ADwAIgAAAAAAAAA8AD0AIgAAAAAAAAA8AD4AIgAAAAAAAAA8AD8AIgAAAAAAAAA9ADQAIgAAAAAAAAA9ADUAIgAAAAAAAAA9ADYAIgAAAAAAAAA9ADcAIgAAAAAAAAA9ADgAIgAAAAAAAAA9ADkAIgAAAAAAAAA9ADoAIgAAAAAAAAA9ADsAIgAAAAAAAAA9ADwAIgAAAAAAAAA9AD0AIgAAAAAAAAA9AD4AIgAAAAAAAAA9AD8AIgAAAAAAAAA+ADQAIgAAAAAAAAA+ADUAIgAAAAAAAAA+ADYAIgAAAAAAAAA+ADcAIgAAAAAAAAA+ADgAIgAAAAAAAAA+ADkAIgAAAAAAAAA+ADoAIgAAAAAAAAA+ADsAIgAAAAAAAAA+ADwAIgAAAAAAAAA+AD0AIgAAAAAAAAA+AD4AIgAAAAAAAAA+AD8AIgAAAAAAAAA/ADQAIgAAAAAAAAA/ADUAIgAAAAAAAAA/ADYAIgAAAAAAAAA/ADcAIgAAAAAAAAA/ADgAIgAAAAAAAAA/ADkAIgAAAAAAAAA/ADoAIgAAAAAAAAA/ADsAIgAAAAAAAAA/ADwAIgAAAAAAAAA/AD0AIgAAAAAAAAA/AD4AIgAAAAAAAAA/AD8AIgAAAAAAAABAADQAIgAAAAAAAABAADUAIgAAAAAAAABAADYAIgAAAAAAAABAADcAIgAAAAAAAABAADgAIgAAAAAAAABAADkAIgAAAAAAAABAADoAIgAAAAAAAABAADsAIgAAAAAAAABAADwAIgAAAAAAAABAAD0AIgAAAAAAAABAAD4AIgAAAAAAAABAAD8AIgAAAAAAAABBADQAIgAAAAAAAABBADUAIgAAAAAAAABBADYAIgAAAAAAAABBADcAIgAAAAAAAABBADgAIgAAAAAAAABBADkAIgAAAAAAAABBADoAIgAAAAAAAABBADsAIgAAAAAAAABBADwAIgAAAAAAAABBAD0AIgAAAAAAAABBAD4AIgAAAAAAAABBAD8AIgAAAAAAAABCADQAIgAAAAAAAABCADUAIgAAAAAAAABCADYAIgAAAAAAAABCADcAIgAAAAAAAABCADgAIgAAAAAAAABCADkAIgAAAAAAAABCADoAIgAAAAAAAABCADsAIgAAAAAAAABCADwAIgAAAAAAAABCAD0AIgAAAAAAAABCAD4AIgAAAAAAAABCAD8AIgAAAAAAAABDADQAIgAAAAAAAABDADUAIgAAAAAAAABDADYAIgAAAAAAAABDADcAIgAAAAAAAABDADgAIgAAAAAAAABDADkAIgAAAAAAAABDADoAIgAAAAAAAABDADsAIgAAAAAAAABDADwAIgAAAAAAAABDAD0AIgAAAAAAAABDAD4AIgAAAAAAAABDAD8AIgAAAAAAAABEADQAIgAAAAAAAABEADUAIgAAAAAAAABEADYAIgAAAAAAAABEADcAIgAAAAAAAABEADgAIgAAAAAAAABEADkAIgAAAAAAAABEADoAIgAAAAAAAABEADsAIgAAAAAAAABEADwAIgAAAAAAAABEAD0AIgAAAAAAAABEAD4AIgAAAAAAAABEAD8AIgAAAAAAAABFADQAIgAAAAAAAABFADUAIgAAAAAAAABFADYAIgAAAAAAAABFADcAIgAAAAAAAABFADgAIgAAAAAAAABFADkAIgAAAAAAAABFADoAIgAAAAAAAABFADsAIgAAAAAAAABFADwAIgAAAAAAAABFAD0AIgAAAAAAAABFAD4AIgAAAAAAAABFAD8AIgAAAAAAAABGADQAIgAAAAAAAABGADUAIgAAAAAAAABGADYAIgAAAAAAAABGADcAIgAAAAAAAABGADgAIgAAAAAAAABGADkAIgAAAAAAAABGADoAIgAAAAAAAABGADsAIgAAAAAAAABGADwAIgAAAAAAAABGAD0AIgAAAAAAAABGAD4AIgAAAAAAAABGAD8AIgAAAAAAAABHADQAIgAAAAAAAABHADUAIgAAAAAAAABHADYAIgAAAAAAAABHADcAIgAAAAAAAABHADgAIgAAAAAAAABHADkAIgAAAAAAAABHADoAIgAAAAAAAABHADsAIgAAAAAAAABHADwAIgAAAAAAAABHAD0AIgAAAAAAAABHAD4AIgAAAAAAAABHAD8AIgAAAAAAAABIADQAIgAAAAAAAABIADUAIgAAAAAAAABIADYAIgAAAAAAAABIADcAIgAAAAAAAABIADgAIgAAAAAAAABIADkAIgAAAAAAAABIADoAIgAAAAAAAABIADsAIgAAAAAAAABIADwAIgAAAAAAAABIAD0AIgAAAAAAAABIAD4AIgAAAAAAAABIAD8AIgAAAAAAAABJADQAIgAAAAAAAABJADUAIgAAAAAAAABJADYAIgAAAAAAAABJADcAIgAAAAAAAABJADgAIgAAAAAAAABJADkAIgAAAAAAAABJADoAIgAAAAAAAABJADsAIgAAAAAAAABJADwAIgAAAAAAAABJAD0AIgAAAAAAAABJAD4AIgAAAAAAAABJAD8AIgAAAAAAAABKADQAIgAAAAAAAABKADUAIgAAAAAAAABKADYAIgAAAAAAAABKADcAIgAAAAAAAABKADgAIgAAAAAAAABKADkAIgAAAAAAAABKADoAIgAAAAAAAABKADsAIgAAAAAAAABKADwAIgAAAAAAAABKAD0AIgAAAAAAAABKAD4AIgAAAAAAAABKAD8AIgAAAAAAAABLADQAIgAAAAAAAABLADUAIgAAAAAAAABLADYAIgAAAAAAAABLADcAIgAAAAAAAABLADgAIgAAAAAAAABLADkAIgAAAAAAAABLADoAIgAAAAAAAABLADsAIgAAAAAAAABLADwAIgAAAAAAAABLAD0AIgAAAAAAAABLAD4AIgAAAAAAAABLAD8AIgAAAAAAAABMADQAIgAAAAAAAABMADUAIgAAAAAAAABMADYAIgAAAAAAAABMADcAIgAAAAAAAABMADgAIgAAAAAAAABMADkAIgAAAAAAAABMADoAIgAAAAAAAABMADsAIgAAAAAAAABMADwAIgAAAAAAAABMAD0AIgAAAAAAAABMAD4AIgAAAAAAAABMAD8AIgAAAAAAAABNADQAIgAAAAAAAABNADUAIgAAAAAAAABNADYAIgAAAAAAAABNADcAIgAAAAAAAABNADgAIgAAAAAAAABNADkAIgAAAAAAAABNADoAIgAAAAAAAABNADsAIgAAAAAAAABNADwAIgAAAAAAAABNAD0AIgAAAAAAAABNAD4AIgAAAAAAAABNAD8AIgAAAAAAAABOADQAIgAAAAAAAABOADUAIgAAAAAAAABOADYAIgAAAAAAAABOADcAIgAAAAAAAABOADgAIgAAAAAAAABOADkAIgAAAAAAAABOADoAIgAAAAAAAABOADsAIgAAAAAAAABOADwAIgAAAAAAAABOAD0AIgAAAAAAAABOAD4AIgAAAAAAAABOAD8AIgAAAAAAAABPADQAIgAAAAAAAABPADUAIgAAAAAAAABPADYAIgAAAAAAAABPADcAIgAAAAAAAABPADgAIgAAAAAAAABPADkAIgAAAAAAAABPADoAIgAAAAAAAABPADsAIgAAAAAAAABPADwAIgAAAAAAAABPAD0AIgAAAAAAAABPAD4AIgAAAAAAAABPAD8AIgAAAAAAAABQADQAIgAAAAAAAABQADUAIgAAAAAAAABQADYAIgAAAAAAAABQADcAIgAAAAAAAABQADgAIgAAAAAAAABQADkAIgAAAAAAAABQADoAIgAAAAAAAABQADsAIgAAAAAAAABQADwAIgAAAAAAAABQAD0AIgAAAAAAAABQAD4AIgAAAAAAAABQAD8AIgAAAAAAAABRADQAIgAAAAAAAABRADUAIgAAAAAAAABRADYAIgAAAAAAAABRADcAIgAAAAAAAABRADgAIgAAAAAAAABRADkAIgAAAAAAAABRADoAIgAAAAAAAABRADsAIgAAAAAAAABRADwAIgAAAAAAAABRAD0AIgAAAAAAAABRAD4AIgAAAAAAAABRAD8AIgAAAAAAAABSADQAIgAAAAAAAABSADUAIgAAAAAAAABSADYAIgAAAAAAAABSADcAIgAAAAAAAABSADgAIgAAAAAAAABSADkAIgAAAAAAAABSADoAIgAAAAAAAABSADsAIgAAAAAAAABSADwAIgAAAAAAAABSAD0AIgAAAAAAAABSAD4AIgAAAAAAAABSAD8AIgAAAAAAAABTADQAIgAAAAAAAABTADUAIgAAAAAAAABTADYAIgAAAAAAAABTADcAIgAAAAAAAABTADgAIgAAAAAAAABTADkAIgAAAAAAAABTADoAIgAAAAAAAABTADsAIgAAAAAAAABTADwAIgAAAAAAAABTAD0AIgAAAAAAAABTAD4AIgAAAAAAAABTAD8AIgAAAAAAAABUADQAIgAAAAAAAABUADUAIgAAAAAAAABUADYAIgAAAAAAAABUADcAIgAAAAAAAABUADgAIgAAAAAAAABUADkAIgAAAAAAAABUADoAIgAAAAAAAABUADsAIgAAAAAAAABUADwAIgAAAAAAAABUAD0AIgAAAAAAAABUAD4AIgAAAAAAAABUAD8AIgAAAAAAAABVADQAIgAAAAAAAABVADUAIgAAAAAAAABVADYAIgAAAAAAAABVADcAIgAAAAAAAABVADgAIgAAAAAAAABVADkAIgAAAAAAAABVADoAIgAAAAAAAABVADsAIgAAAAAAAABVADwAIgAAAAAAAABVAD0AIgAAAAAAAABVAD4AIgAAAAAAAABVAD8AIgAAAAAAAABWADQAIgAAAAAAAABWADUAIgAAAAAAAABWADYAIgAAAAAAAABWADcAIgAAAAAAAABWADgAIgAAAAAAAABWADkAIgAAAAAAAABWADoAIgAAAAAAAABWADsAIgAAAAAAAABWADwAIgAAAAAAAABWAD0AIgAAAAAAAABWAD4AIgAAAAAAAABWAD8AIgAAAAAAAABXADQAIgAAAAAAAABXADUAIgAAAAAAAABXADYAIgAAAAAAAABXADcAIgAAAAAAAABXADgAIgAAAAAAAABXADkAIgAAAAAAAABXADoAIgAAAAAAAABXADsAIgAAAAAAAABXADwAIgAAAAAAAABXAD0AIgAAAAAAAABXAD4AIgAAAAAAAABXAD8AIgAAAAAAAABYADQAIgAAAAAAAABYADUAIgAAAAAAAABYADYAIgAAAAAAAABYADcAIgAAAAAAAABYADgAIgAAAAAAAABYADkAIgAAAAAAAABYADoAIgAAAAAAAABYADsAIgAAAAAAAABYADwAIgAAAAAAAABYAD0AIgAAAAAAAABYAD4AIgAAAAAAAABYAD8AIgAAAAAAAABZADQAIgAAAAAAAABZADUAIgAAAAAAAABZADYAIgAAAAAAAABZADcAIgAAAAAAAABZADgAIgAAAAAAAABZADkAIgAAAAAAAABZADoAIgAAAAAAAABZADsAIgAAAAAAAABZADwAIgAAAAAAAABZAD0AIgAAAAAAAABZAD4AIgAAAAAAAABZAD8AIgAAAAAAAABaAP//DQABAAEAAABaAAAADQABAAEAAABaAAEAIgAAAAAAAABaAAIAIgAAAAAAAABaAAMAIgAAAAAAAABaAAQAIgAAAAAAAABaAAUAIgAAAAAAAABaAAYAIgAAAAAAAABaAAcAIgAAAAAAAABaAAgAIgAAAAAAAABaAAkAIgAAAAAAAABaAAoAIgAAAAAAAABaAAsAIgAAAAAAAABaAAwAIgAAAAAAAABaAA0AIgAAAAAAAABaAA4AIgAAAAAAAABaAA8AIgAAAAAAAABaABAAIgAAAAAAAABaABEAIgAAAAAAAABaABIAIgAAAAAAAABaABMAIgAAAAAAAABaABQAIgAAAAAAAABaABUAIgAAAAAAAABaABYAIgAAAAAAAABbAP//DQABAAEAAABbAAAADQABAAEAAABbAAEAIgAAAAAAAABbAAIAIgAAAAAAAABbAAMAIgAAAAAAAABbAAQAIgAAAAAAAABbAAUAIgAAAAAAAABbAAYAIgAAAAAAAABbAAcAIgAAAAAAAABbAAgAIgAAAAAAAABbAAkAIgAAAAAAAABbAAoAIgAAAAAAAABbAAsAIgAAAAAAAABbAAwAIgAAAAAAAABbAA0AIgAAAAAAAABbAA4AIgAAAAAAAABbAA8AIgAAAAAAAABbABAAIgAAAAAAAABbABEAIgAAAAAAAABbABIAIgAAAAAAAABbABMAIgAAAAAAAABbABQAIgAAAAAAAABbABUAIgAAAAAAAABbABYAIgAAAAAAAABcAP//DQABAAEAAABcAAAADQABAAEAAABcAAEAIgAAAAAAAABcAAIAIgAAAAAAAABcAAMAIgAAAAAAAABcAAQAIgAAAAAAAABcAAUAIgAAAAAAAABcAAYAIgAAAAAAAABcAAcAIgAAAAAAAABcAAgAIgAAAAAAAABcAAkAIgAAAAAAAABcAAoAIgAAAAAAAABcAAsAIgAAAAAAAABcAAwAIgAAAAAAAABcAA0AIgAAAAAAAABcAA4AIgAAAAAAAABcAA8AIgAAAAAAAABcABAAIgAAAAAAAABcABEAIgAAAAAAAABcABIAIgAAAAAAAABcABMAIgAAAAAAAABcABQAIgAAAAAAAABcABUAIgAAAAAAAABcABYAIgAAAAAAAABdAP//DQABAAEAAABdAAAADQABAAEAAABdAAEAIgAAAAAAAABdAAIAIgAAAAAAAABdAAMAIgAAAAAAAABdAAQAIgAAAAAAAABdAAUAIgAAAAAAAABdAAYAIgAAAAAAAABdAAcAIgAAAAAAAABdAAgAIgAAAAAAAABdAAkAIgAAAAAAAABdAAoAIgAAAAAAAABdAAsAIgAAAAAAAABdAAwAIgAAAAAAAABdAA0AIgAAAAAAAABdAA4AIgAAAAAAAABdAA8AIgAAAAAAAABdABAAIgAAAAAAAABdABEAIgAAAAAAAABdABIAIgAAAAAAAABdABMAIgAAAAAAAABdABQAIgAAAAAAAABdABUAIgAAAAAAAABdABYAIgAAAAAAAABeAP//DQABAAEAAABeAAAADQABAAEAAABeAAEAIgAAAAAAAABeAAIAIgAAAAAAAABeAAMAIgAAAAAAAABeAAQAIgAAAAAAAABeAAUAIgAAAAAAAABeAAYAIgAAAAAAAABeAAcAIgAAAAAAAABeAAgAIgAAAAAAAABeAAkAIgAAAAAAAABeAAoAIgAAAAAAAABeAAsAIgAAAAAAAABeAAwAIgAAAAAAAABeAA0AIgAAAAAAAABeAA4AIgAAAAAAAABeAA8AIgAAAAAAAABeABAAIgAAAAAAAABeABEAIgAAAAAAAABeABIAIgAAAAAAAABeABMAIgAAAAAAAABeABQAIgAAAAAAAABeABUAIgAAAAAAAABeABYAIgAAAAAAAABfAP//DQABAAEAAABfAAAADQABAAEAAABfAAEAIgAAAAAAAABfAAIAIgAAAAAAAABfAAMAIgAAAAAAAABfAAQAIgAAAAAAAABfAAUAIgAAAAAAAABfAAYAIgAAAAAAAABfAAcAIgAAAAAAAABfAAgAIgAAAAAAAABfAAkAIgAAAAAAAABfAAoAIgAAAAAAAABfAAsAIgAAAAAAAABfAAwAIgAAAAAAAABfAA0AIgAAAAAAAABfAA4AIgAAAAAAAABfAA8AIgAAAAAAAABfABAAIgAAAAAAAABfABEAIgAAAAAAAABfABIAIgAAAAAAAABfABMAIgAAAAAAAABfABQAIgAAAAAAAABfABUAIgAAAAAAAABfABYAIgAAAAAAAABgAP//DQABAAEAAABgAAAADQABAAEAAABgAAEAIgAAAAAAAABgAAIAIgAAAAAAAABgAAMAIgAAAAAAAABgAAQAIgAAAAAAAABgAAUAIgAAAAAAAABgAAYAIgAAAAAAAABgAAcAIgAAAAAAAABgAAgAIgAAAAAAAABgAAkAIgAAAAAAAABgAAoAIgAAAAAAAABgAAsAIgAAAAAAAABgAAwAIgAAAAAAAABgAA0AIgAAAAAAAABgAA4AIgAAAAAAAABgAA8AIgAAAAAAAABgABAAIgAAAAAAAABgABEAIgAAAAAAAABgABIAIgAAAAAAAABgABMAIgAAAAAAAABgABQAIgAAAAAAAABgABUAIgAAAAAAAABgABYAIgAAAAAAAABhAP//DQABAAEAAABhAAAADQABAAEAAABhAAEAIgAAAAAAAABhAAIAIgAAAAAAAABhAAMAIgAAAAAAAABhAAQAIgAAAAAAAABhAAUAIgAAAAAAAABhAAYAIgAAAAAAAABhAAcAIgAAAAAAAABhAAgAIgAAAAAAAABhAAkAIgAAAAAAAABhAAoAIgAAAAAAAABhAAsAIgAAAAAAAABhAAwAIgAAAAAAAABhAA0AIgAAAAAAAABhAA4AIgAAAAAAAABhAA8AIgAAAAAAAABhABAAIgAAAAAAAABhABEAIgAAAAAAAABhABIAIgAAAAAAAABhABMAIgAAAAAAAABhABQAIgAAAAAAAABhABUAIgAAAAAAAABhABYAIgAAAAAAAABiAP//DQABAAEAAABiAAAADQABAAEAAABiAAEAIgAAAAAAAABiAAIAIgAAAAAAAABiAAMAIgAAAAAAAABiAAQAIgAAAAAAAABiAAUAIgAAAAAAAABiAAYAIgAAAAAAAABiAAcAIgAAAAAAAABiAAgAIgAAAAAAAABiAAkAIgAAAAAAAABiAAoAIgAAAAAAAABiAAsAIgAAAAAAAABiAAwAIgAAAAAAAABiAA0AIgAAAAAAAABiAA4AIgAAAAAAAABiAA8AIgAAAAAAAABiABAAIgAAAAAAAABiABEAIgAAAAAAAABiABIAIgAAAAAAAABiABMAIgAAAAAAAABiABQAIgAAAAAAAABiABUAIgAAAAAAAABiABYAIgAAAAAAAABjAP//DQABAAEAAABjAAAADQABAAEAAABjAAEAIgAAAAAAAABjAAIAIgAAAAAAAABjAAMAIgAAAAAAAABjAAQAIgAAAAAAAABjAAUAIgAAAAAAAABjAAYAIgAAAAAAAABjAAcAIgAAAAAAAABjAAgAIgAAAAAAAABjAAkAIgAAAAAAAABjAAoAIgAAAAAAAABjAAsAIgAAAAAAAABjAAwAIgAAAAAAAABjAA0AIgAAAAAAAABjAA4AIgAAAAAAAABjAA8AIgAAAAAAAABjABAAIgAAAAAAAABjABEAIgAAAAAAAABjABIAIgAAAAAAAABjABMAIgAAAAAAAABjABQAIgAAAAAAAABjABUAIgAAAAAAAABjABYAIgAAAAAAAABkAP//DQABAAEAAABkAAAADQABAAEAAABkAAEAIgAAAAAAAABkAAIAIgAAAAAAAABkAAMAIgAAAAAAAABkAAQAIgAAAAAAAABkAAUAIgAAAAAAAABkAAYAIgAAAAAAAABkAAcAIgAAAAAAAABkAAgAIgAAAAAAAABkAAkAIgAAAAAAAABkAAoAIgAAAAAAAABkAAsAIgAAAAAAAABkAAwAIgAAAAAAAABkAA0AIgAAAAAAAABkAA4AIgAAAAAAAABkAA8AIgAAAAAAAABkABAAIgAAAAAAAABkABEAIgAAAAAAAABkABIAIgAAAAAAAABkABMAIgAAAAAAAABkABQAIgAAAAAAAABkABUAIgAAAAAAAABkABYAIgAAAAAAAABlAP//DQABAAEAAABlAAAADQABAAEAAABlAAEAIgAAAAAAAABlAAIAIgAAAAAAAABlAAMAIgAAAAAAAABlAAQAIgAAAAAAAABlAAUAIgAAAAAAAABlAAYAIgAAAAAAAABlAAcAIgAAAAAAAABlAAgAIgAAAAAAAABlAAkAIgAAAAAAAABlAAoAIgAAAAAAAABlAAsAIgAAAAAAAABlAAwAIgAAAAAAAABlAA0AIgAAAAAAAABlAA4AIgAAAAAAAABlAA8AIgAAAAAAAABlABAAIgAAAAAAAABlABEAIgAAAAAAAABlABIAIgAAAAAAAABlABMAIgAAAAAAAABlABQAIgAAAAAAAABlABUAIgAAAAAAAABlABYAIgAAAAAAAABmAP//DQABAAEAAABmAAAADQABAAEAAABmAAEAIgAAAAAAAABmAAIAIgAAAAAAAABmAAMAIgAAAAAAAABmAAQAIgAAAAAAAABmAAUAIgAAAAAAAABmAAYAIgAAAAAAAABmAAcAIgAAAAAAAABmAAgAIgAAAAAAAABmAAkAIgAAAAAAAABmAAoAIgAAAAAAAABmAAsAIgAAAAAAAABmAAwAIgAAAAAAAABmAA0AIgAAAAAAAABmAA4AIgAAAAAAAABmAA8AIgAAAAAAAABmABAAIgAAAAAAAABmABEAIgAAAAAAAABmABIAIgAAAAAAAABmABMAIgAAAAAAAABmABQAIgAAAAAAAABmABUAIgAAAAAAAABmABYAIgAAAAAAAABnAP//DQABAAEAAABnAAAADQABAAEAAABnAAEAIgAAAAAAAABnAAIAIgAAAAAAAABnAAMAIgAAAAAAAABnAAQAIgAAAAAAAABnAAUAIgAAAAAAAABnAAYAIgAAAAAAAABnAAcAIgAAAAAAAABnAAgAIgAAAAAAAABnAAkAIgAAAAAAAABnAAoAIgAAAAAAAABnAAsAIgAAAAAAAABnAAwAIgAAAAAAAABnAA0AIgAAAAAAAABnAA4AIgAAAAAAAABnAA8AIgAAAAAAAABnABAAIgAAAAAAAABnABEAIgAAAAAAAABnABIAIgAAAAAAAABnABMAIgAAAAAAAABnABQAIgAAAAAAAABnABUAIgAAAAAAAABnABYAIgAAAAAAAABoAP//DQABAAEAAABoAAAADQABAAEAAABoAAEAIgAAAAAAAABoAAIAIgAAAAAAAABoAAMAIgAAAAAAAABoAAQAIgAAAAAAAABoAAUAIgAAAAAAAABoAAYAIgAAAAAAAABoAAcAIgAAAAAAAABoAAgAIgAAAAAAAABoAAkAIgAAAAAAAABoAAoAIgAAAAAAAABoAAsAIgAAAAAAAABoAAwAIgAAAAAAAABoAA0AIgAAAAAAAABoAA4AIgAAAAAAAABoAA8AIgAAAAAAAABoABAAIgAAAAAAAABoABEAIgAAAAAAAABoABIAIgAAAAAAAABoABMAIgAAAAAAAABoABQAIgAAAAAAAABoABUAIgAAAAAAAABoABYAIgAAAAAAAABpAP//DQABAAEAAABpAAAADQABAAEAAABpAAEAIgAAAAAAAABpAAIAIgAAAAAAAABpAAMAIgAAAAAAAABpAAQAIgAAAAAAAABpAAUAIgAAAAAAAABpAAYAIgAAAAAAAABpAAcAIgAAAAAAAABpAAgAIgAAAAAAAABpAAkAIgAAAAAAAABpAAoAIgAAAAAAAABpAAsAIgAAAAAAAABpAAwAIgAAAAAAAABpAA0AIgAAAAAAAABpAA4AIgAAAAAAAABpAA8AIgAAAAAAAABpABAAIgAAAAAAAABpABEAIgAAAAAAAABpABIAIgAAAAAAAABpABMAIgAAAAAAAABpABQAIgAAAAAAAABpABUAIgAAAAAAAABpABYAIgAAAAAAAABqAP//DQABAAEAAABqAAAADQABAAEAAABqAAEAIgAAAAAAAABqAAIAIgAAAAAAAABqAAMAIgAAAAAAAABqAAQAIgAAAAAAAABqAAUAIgAAAAAAAABqAAYAIgAAAAAAAABqAAcAIgAAAAAAAABqAAgAIgAAAAAAAABqAAkAIgAAAAAAAABqAAoAIgAAAAAAAABqAAsAIgAAAAAAAABqAAwAIgAAAAAAAABqAA0AIgAAAAAAAABqAA4AIgAAAAAAAABqAA8AIgAAAAAAAABqABAAIgAAAAAAAABqABEAIgAAAAAAAABqABIAIgAAAAAAAABqABMAIgAAAAAAAABqABQAIgAAAAAAAABqABUAIgAAAAAAAABqABYAIgAAAAAAAABrAP//DQABAAEAAABrAAAADQABAAEAAABrAAEAIgAAAAAAAABrAAIAIgAAAAAAAABrAAMAIgAAAAAAAABrAAQAIgAAAAAAAABrAAUAIgAAAAAAAABrAAYAIgAAAAAAAABrAAcAIgAAAAAAAABrAAgAIgAAAAAAAABrAAkAIgAAAAAAAABrAAoAIgAAAAAAAABrAAsAIgAAAAAAAABrAAwAIgAAAAAAAABrAA0AIgAAAAAAAABrAA4AIgAAAAAAAABrAA8AIgAAAAAAAABrABAAIgAAAAAAAABrABEAIgAAAAAAAABrABIAIgAAAAAAAABrABMAIgAAAAAAAABrABQAIgAAAAAAAABrABUAIgAAAAAAAABrABYAIgAAAAAAAABaABcAIgAAAAAAAABaABgAIgAAAAAAAABaABkAIgAAAAAAAABaABoAIgAAAAAAAABaABsAIgAAAAAAAABaABwAIgAAAAAAAABaAB0AIgAAAAAAAABaAB4AIgAAAAAAAABaAB8AIgAAAAAAAABaACAAIgAAAAAAAABaACEAIgAAAAAAAABaACIAIgAAAAAAAABaACMAIgAAAAAAAABaACQAIgAAAAAAAABaACUAIgAAAAAAAABaACYAIgAAAAAAAABaACcAIgAAAAAAAABaACgAIgAAAAAAAABaACkAIgAAAAAAAABaACoAIgAAAAAAAABaACsAIgAAAAAAAABaACwAIgAAAAAAAABaAC0AIgAAAAAAAABaAC4AIgAAAAAAAABaAC8AIgAAAAAAAABaADAAIgAAAAAAAABaADEAIgAAAAAAAABaADIAIgAAAAAAAABaADMAIgAAAAAAAABaADQAIgAAAAAAAABaADUAIgAAAAAAAABaADYAIgAAAAAAAABaADcAIgAAAAAAAABaADgAIgAAAAAAAABaADkAIgAAAAAAAABaADoAIgAAAAAAAABaADsAIgAAAAAAAABaADwAIgAAAAAAAABaAD0AIgAAAAAAAABaAD4AIgAAAAAAAABaAD8AIgAAAAAAAABbABcAIgAAAAAAAABbABgAIgAAAAAAAABbABkAIgAAAAAAAABbABoAIgAAAAAAAABbABsAIgAAAAAAAABbABwAIgAAAAAAAABbAB0AIgAAAAAAAABbAB4AIgAAAAAAAABbAB8AIgAAAAAAAABbACAAIgAAAAAAAABbACEAIgAAAAAAAABbACIAIgAAAAAAAABbACMAIgAAAAAAAABbACQAIgAAAAAAAABbACUAIgAAAAAAAABbACYAIgAAAAAAAABbACcAIgAAAAAAAABbACgAIgAAAAAAAABbACkAIgAAAAAAAABbACoAIgAAAAAAAABbACsAIgAAAAAAAABbACwAIgAAAAAAAABbAC0AIgAAAAAAAABbAC4AIgAAAAAAAABbAC8AIgAAAAAAAABbADAAIgAAAAAAAABbADEAIgAAAAAAAABbADIAIgAAAAAAAABbADMAIgAAAAAAAABbADQAIgAAAAAAAABbADUAIgAAAAAAAABbADYAIgAAAAAAAABbADcAIgAAAAAAAABbADgAIgAAAAAAAABbADkAIgAAAAAAAABbADoAIgAAAAAAAABbADsAIgAAAAAAAABbADwAIgAAAAAAAABbAD0AIgAAAAAAAABbAD4AIgAAAAAAAABbAD8AIgAAAAAAAABcABcAIgAAAAAAAABcABgAIgAAAAAAAABcABkAIgAAAAAAAABcABoAIgAAAAAAAABcABsAIgAAAAAAAABcABwAIgAAAAAAAABcAB0AIgAAAAAAAABcAB4AIgAAAAAAAABcAB8AIgAAAAAAAABcACAAIgAAAAAAAABcACEAIgAAAAAAAABcACIAIgAAAAAAAABcACMAIgAAAAAAAABcACQAIgAAAAAAAABcACUAIgAAAAAAAABcACYAIgAAAAAAAABcACcAIgAAAAAAAABcACgAIgAAAAAAAABcACkAIgAAAAAAAABcACoAIgAAAAAAAABcACsAIgAAAAAAAABcACwAIgAAAAAAAABcAC0AIgAAAAAAAABcAC4AIgAAAAAAAABcAC8AIgAAAAAAAABcADAAIgAAAAAAAABcADEAIgAAAAAAAABcADIAIgAAAAAAAABcADMAIgAAAAAAAABcADQAIgAAAAAAAABcADUAIgAAAAAAAABcADYAIgAAAAAAAABcADcAIgAAAAAAAABcADgAIgAAAAAAAABcADkAIgAAAAAAAABcADoAIgAAAAAAAABcADsAIgAAAAAAAABcADwAIgAAAAAAAABcAD0AIgAAAAAAAABcAD4AIgAAAAAAAABcAD8AIgAAAAAAAABdABcAIgAAAAAAAABdABgAIgAAAAAAAABdABkAIgAAAAAAAABdABoAIgAAAAAAAABdABsAIgAAAAAAAABdABwAIgAAAAAAAABdAB0AIgAAAAAAAABdAB4AIgAAAAAAAABdAB8AIgAAAAAAAABdACAAIgAAAAAAAABdACEAIgAAAAAAAABdACIAIgAAAAAAAABdACMAIgAAAAAAAABdACQAIgAAAAAAAABdACUAIgAAAAAAAABdACYAIgAAAAAAAABdACcAIgAAAAAAAABdACgAIgAAAAAAAABdACkAIgAAAAAAAABdACoAIgAAAAAAAABdACsAIgAAAAAAAABdACwAIgAAAAAAAABdAC0AIgAAAAAAAABdAC4AIgAAAAAAAABdAC8AIgAAAAAAAABdADAAIgAAAAAAAABdADEAIgAAAAAAAABdADIAIgAAAAAAAABdADMAIgAAAAAAAABdADQAIgAAAAAAAABdADUAIgAAAAAAAABdADYAIgAAAAAAAABdADcAIgAAAAAAAABdADgAIgAAAAAAAABdADkAIgAAAAAAAABdADoAIgAAAAAAAABdADsAIgAAAAAAAABdADwAIgAAAAAAAABdAD0AIgAAAAAAAABdAD4AIgAAAAAAAABdAD8AIgAAAAAAAABeABcAIgAAAAAAAABeABgAIgAAAAAAAABeABkAIgAAAAAAAABeABoAIgAAAAAAAABeABsAIgAAAAAAAABeABwAIgAAAAAAAABeAB0AIgAAAAAAAABeAB4AIgAAAAAAAABeAB8AIgAAAAAAAABeACAAIgAAAAAAAABeACEAIgAAAAAAAABeACIAIgAAAAAAAABeACMAIgAAAAAAAABeACQAIgAAAAAAAABeACUAIgAAAAAAAABeACYAIgAAAAAAAABeACcAIgAAAAAAAABeACgAIgAAAAAAAABeACkAIgAAAAAAAABeACoAIgAAAAAAAABeACsAIgAAAAAAAABeACwAIgAAAAAAAABeAC0AIgAAAAAAAABeAC4AIgAAAAAAAABeAC8AIgAAAAAAAABeADAAIgAAAAAAAABeADEAIgAAAAAAAABeADIAIgAAAAAAAABeADMAIgAAAAAAAABeADQAIgAAAAAAAABeADUAIgAAAAAAAABeADYAIgAAAAAAAABeADcAIgAAAAAAAABeADgAIgAAAAAAAABeADkAIgAAAAAAAABeADoAIgAAAAAAAABeADsAIgAAAAAAAABeADwAIgAAAAAAAABeAD0AIgAAAAAAAABeAD4AIgAAAAAAAABeAD8AIgAAAAAAAABfABcAIgAAAAAAAABfABgAIgAAAAAAAABfABkAIgAAAAAAAABfABoAIgAAAAAAAABfABsAIgAAAAAAAABfABwAIgAAAAAAAABfAB0AIgAAAAAAAABfAB4AIgAAAAAAAABfAB8AIgAAAAAAAABfACAAIgAAAAAAAABfACEAIgAAAAAAAABfACIAIgAAAAAAAABfACMAIgAAAAAAAABfACQAIgAAAAAAAABfACUAIgAAAAAAAABfACYAIgAAAAAAAABfACcAIgAAAAAAAABfACgAIgAAAAAAAABfACkAIgAAAAAAAABfACoAIgAAAAAAAABfACsAIgAAAAAAAABfACwAIgAAAAAAAABfAC0AIgAAAAAAAABfAC4AIgAAAAAAAABfAC8AIgAAAAAAAABfADAAIgAAAAAAAABfADEAIgAAAAAAAABfADIAIgAAAAAAAABfADMAIgAAAAAAAABfADQAIgAAAAAAAABfADUAIgAAAAAAAABfADYAIgAAAAAAAABfADcAIgAAAAAAAABfADgAIgAAAAAAAABfADkAIgAAAAAAAABfADoAIgAAAAAAAABfADsAIgAAAAAAAABfADwAIgAAAAAAAABfAD0AIgAAAAAAAABfAD4AIgAAAAAAAABfAD8AIgAAAAAAAABgABcAIgAAAAAAAABgABgAIgAAAAAAAABgABkAIgAAAAAAAABgABoAIgAAAAAAAABgABsAIgAAAAAAAABgABwAIgAAAAAAAABgAB0AIgAAAAAAAABgAB4AIgAAAAAAAABgAB8AIgAAAAAAAABgACAAIgAAAAAAAABgACEAIgAAAAAAAABgACIAIgAAAAAAAABgACMAIgAAAAAAAABgACQAIgAAAAAAAABgACUAIgAAAAAAAABgACYAIgAAAAAAAABgACcAIgAAAAAAAABgACgAIgAAAAAAAABgACkAIgAAAAAAAABgACoAIgAAAAAAAABgACsAIgAAAAAAAABgACwAIgAAAAAAAABgAC0AIgAAAAAAAABgAC4AIgAAAAAAAABgAC8AIgAAAAAAAABgADAAIgAAAAAAAABgADEAIgAAAAAAAABgADIAIgAAAAAAAABgADMAIgAAAAAAAABgADQAIgAAAAAAAABgADUAIgAAAAAAAABgADYAIgAAAAAAAABgADcAIgAAAAAAAABgADgAIgAAAAAAAABgADkAIgAAAAAAAABgADoAIgAAAAAAAABgADsAIgAAAAAAAABgADwAIgAAAAAAAABgAD0AIgAAAAAAAABgAD4AIgAAAAAAAABgAD8AIgAAAAAAAABhABcAIgAAAAAAAABhABgAIgAAAAAAAABhABkAIgAAAAAAAABhABoAIgAAAAAAAABhABsAIgAAAAAAAABhABwAIgAAAAAAAABhAB0AIgAAAAAAAABhAB4AIgAAAAAAAABhAB8AIgAAAAAAAABhACAAIgAAAAAAAABhACEAIgAAAAAAAABhACIAIgAAAAAAAABhACMAIgAAAAAAAABhACQAIgAAAAAAAABhACUAIgAAAAAAAABhACYAIgAAAAAAAABhACcAIgAAAAAAAABhACgAIgAAAAAAAABhACkAIgAAAAAAAABhACoAIgAAAAAAAABhACsAIgAAAAAAAABhACwAIgAAAAAAAABhAC0AIgAAAAAAAABhAC4AIgAAAAAAAABhAC8AIgAAAAAAAABhADAAIgAAAAAAAABhADEAIgAAAAAAAABhADIAIgAAAAAAAABhADMAIgAAAAAAAABhADQAIgAAAAAAAABhADUAIgAAAAAAAABhADYAIgAAAAAAAABhADcAIgAAAAAAAABhADgAIgAAAAAAAABhADkAIgAAAAAAAABhADoAIgAAAAAAAABhADsAIgAAAAAAAABhADwAIgAAAAAAAABhAD0AIgAAAAAAAABhAD4AIgAAAAAAAABhAD8AIgAAAAAAAABiABcAIgAAAAAAAABiABgAIgAAAAAAAABiABkAIgAAAAAAAABiABoAIgAAAAAAAABiABsAIgAAAAAAAABiABwAIgAAAAAAAABiAB0AIgAAAAAAAABiAB4AIgAAAAAAAABiAB8AIgAAAAAAAABiACAAIgAAAAAAAABiACEAIgAAAAAAAABiACIAIgAAAAAAAABiACMAIgAAAAAAAABiACQAIgAAAAAAAABiACUAIgAAAAAAAABiACYAIgAAAAAAAABiACcAIgAAAAAAAABiACgAIgAAAAAAAABiACkAIgAAAAAAAABiACoAIgAAAAAAAABiACsAIgAAAAAAAABiACwAIgAAAAAAAABiAC0AIgAAAAAAAABiAC4AIgAAAAAAAABiAC8AIgAAAAAAAABiADAAIgAAAAAAAABiADEAIgAAAAAAAABiADIAIgAAAAAAAABiADMAIgAAAAAAAABiADQAIgAAAAAAAABiADUAIgAAAAAAAABiADYAIgAAAAAAAABiADcAIgAAAAAAAABiADgAIgAAAAAAAABiADkAIgAAAAAAAABiADoAIgAAAAAAAABiADsAIgAAAAAAAABiADwAIgAAAAAAAABiAD0AIgAAAAAAAABiAD4AIgAAAAAAAABiAD8AIgAAAAAAAABjABcAIgAAAAAAAABjABgAIgAAAAAAAABjABkAIgAAAAAAAABjABoAIgAAAAAAAABjABsAIgAAAAAAAABjABwAIgAAAAAAAABjAB0AIgAAAAAAAABjAB4AIgAAAAAAAABjAB8AIgAAAAAAAABjACAAIgAAAAAAAABjACEAIgAAAAAAAABjACIAIgAAAAAAAABjACMAIgAAAAAAAABjACQAIgAAAAAAAABjACUAIgAAAAAAAABjACYAIgAAAAAAAABjACcAIgAAAAAAAABjACgAIgAAAAAAAABjACkAIgAAAAAAAABjACoAIgAAAAAAAABjACsAIgAAAAAAAABjACwAIgAAAAAAAABjAC0AIgAAAAAAAABjAC4AIgAAAAAAAABjAC8AIgAAAAAAAABjADAAIgAAAAAAAABjADEAIgAAAAAAAABjADIAIgAAAAAAAABjADMAIgAAAAAAAABjADQAIgAAAAAAAABjADUAIgAAAAAAAABjADYAIgAAAAAAAABjADcAIgAAAAAAAABjADgAIgAAAAAAAABjADkAIgAAAAAAAABjADoAIgAAAAAAAABjADsAIgAAAAAAAABjADwAIgAAAAAAAABjAD0AIgAAAAAAAABjAD4AIgAAAAAAAABjAD8AIgAAAAAAAABkABcAIgAAAAAAAABkABgAIgAAAAAAAABkABkAIgAAAAAAAABkABoAIgAAAAAAAABkABsAIgAAAAAAAABkABwAIgAAAAAAAABkAB0AIgAAAAAAAABkAB4AIgAAAAAAAABkAB8AIgAAAAAAAABkACAAIgAAAAAAAABkACEAIgAAAAAAAABkACIAIgAAAAAAAABkACMAIgAAAAAAAABkACQAIgAAAAAAAABkACUAIgAAAAAAAABkACYAIgAAAAAAAABkACcAIgAAAAAAAABkACgAIgAAAAAAAABkACkAIgAAAAAAAABkACoAIgAAAAAAAABkACsAIgAAAAAAAABkACwAIgAAAAAAAABkAC0AIgAAAAAAAABkAC4AIgAAAAAAAABkAC8AIgAAAAAAAABkADAAIgAAAAAAAABkADEAIgAAAAAAAABkADIAIgAAAAAAAABkADMAIgAAAAAAAABkADQAIgAAAAAAAABkADUAIgAAAAAAAABkADYAIgAAAAAAAABkADcAIgAAAAAAAABkADgAIgAAAAAAAABkADkAIgAAAAAAAABkADoAIgAAAAAAAABkADsAIgAAAAAAAABkADwAIgAAAAAAAABkAD0AIgAAAAAAAABkAD4AIgAAAAAAAABkAD8AIgAAAAAAAABlABcAIgAAAAAAAABlABgAIgAAAAAAAABlABkAIgAAAAAAAABlABoAIgAAAAAAAABlABsAIgAAAAAAAABlABwAIgAAAAAAAABlAB0AIgAAAAAAAABlAB4AIgAAAAAAAABlAB8AIgAAAAAAAABlACAAIgAAAAAAAABlACEAIgAAAAAAAABlACIAIgAAAAAAAABlACMAIgAAAAAAAABlACQAIgAAAAAAAABlACUAIgAAAAAAAABlACYAIgAAAAAAAABlACcAIgAAAAAAAABlACgAIgAAAAAAAABlACkAIgAAAAAAAABlACoAIgAAAAAAAABlACsAIgAAAAAAAABlACwAIgAAAAAAAABlAC0AIgAAAAAAAABlAC4AIgAAAAAAAABlAC8AIgAAAAAAAABlADAAIgAAAAAAAABlADEAIgAAAAAAAABlADIAIgAAAAAAAABlADMAIgAAAAAAAABlADQAIgAAAAAAAABlADUAIgAAAAAAAABlADYAIgAAAAAAAABlADcAIgAAAAAAAABlADgAIgAAAAAAAABlADkAIgAAAAAAAABlADoAIgAAAAAAAABlADsAIgAAAAAAAABlADwAIgAAAAAAAABlAD0AIgAAAAAAAABlAD4AIgAAAAAAAABlAD8AIgAAAAAAAABmABcAIgAAAAAAAABmABgAIgAAAAAAAABmABkAIgAAAAAAAABmABoAIgAAAAAAAABmABsAIgAAAAAAAABmABwAIgAAAAAAAABmAB0AIgAAAAAAAABmAB4AIgAAAAAAAABmAB8AIgAAAAAAAABmACAAIgAAAAAAAABmACEAIgAAAAAAAABmACIAIgAAAAAAAABmACMAIgAAAAAAAABmACQAIgAAAAAAAABmACUAIgAAAAAAAABmACYAIgAAAAAAAABmACcAIgAAAAAAAABmACgAIgAAAAAAAABmACkAIgAAAAAAAABmACoAIgAAAAAAAABmACsAIgAAAAAAAABmACwAIgAAAAAAAABmAC0AIgAAAAAAAABmAC4AIgAAAAAAAABmAC8AIgAAAAAAAABmADAAIgAAAAAAAABmADEAIgAAAAAAAABmADIAIgAAAAAAAABmADMAIgAAAAAAAABmADQAIgAAAAAAAABmADUAIgAAAAAAAABmADYAIgAAAAAAAABmADcAIgAAAAAAAABmADgAIgAAAAAAAABmADkAIgAAAAAAAABmADoAIgAAAAAAAABmADsAIgAAAAAAAABmADwAIgAAAAAAAABmAD0AIgAAAAAAAABmAD4AIgAAAAAAAABmAD8AIgAAAAAAAABnABcAIgAAAAAAAABnABgAIgAAAAAAAABnABkAIgAAAAAAAABnABoAIgAAAAAAAABnABsAIgAAAAAAAABnABwAIgAAAAAAAABnAB0AIgAAAAAAAABnAB4AIgAAAAAAAABnAB8AIgAAAAAAAABnACAAIgAAAAAAAABnACEAIgAAAAAAAABnACIAIgAAAAAAAABnACMAIgAAAAAAAABnACQAIgAAAAAAAABnACUAIgAAAAAAAABnACYAIgAAAAAAAABnACcAIgAAAAAAAABnACgAIgAAAAAAAABnACkAIgAAAAAAAABnACoAIgAAAAAAAABnACsAIgAAAAAAAABnACwAIgAAAAAAAABnAC0AIgAAAAAAAABnAC4AIgAAAAAAAABnAC8AIgAAAAAAAABnADAAIgAAAAAAAABnADEAIgAAAAAAAABnADIAIgAAAAAAAABnADMAIgAAAAAAAABnADQAIgAAAAAAAABnADUAIgAAAAAAAABnADYAIgAAAAAAAABnADcAIgAAAAAAAABnADgAIgAAAAAAAABnADkAIgAAAAAAAABnADoAIgAAAAAAAABnADsAIgAAAAAAAABnADwAIgAAAAAAAABnAD0AIgAAAAAAAABnAD4AIgAAAAAAAABnAD8AIgAAAAAAAABoABcAIgAAAAAAAABoABgAIgAAAAAAAABoABkAIgAAAAAAAABoABoAIgAAAAAAAABoABsAIgAAAAAAAABoABwAIgAAAAAAAABoAB0AIgAAAAAAAABoAB4AIgAAAAAAAABoAB8AIgAAAAAAAABoACAAIgAAAAAAAABoACEAIgAAAAAAAABoACIAIgAAAAAAAABoACMAIgAAAAAAAABoACQAIgAAAAAAAABoACUAIgAAAAAAAABoACYAIgAAAAAAAABoACcAIgAAAAAAAABoACgAIgAAAAAAAABoACkAIgAAAAAAAABoACoAIgAAAAAAAABoACsAIgAAAAAAAABoACwAIgAAAAAAAABoAC0AIgAAAAAAAABoAC4AIgAAAAAAAABoAC8AIgAAAAAAAABoADAAIgAAAAAAAABoADEAIgAAAAAAAABoADIAIgAAAAAAAABoADMAIgAAAAAAAABoADQAIgAAAAAAAABoADUAIgAAAAAAAABoADYAIgAAAAAAAABoADcAIgAAAAAAAABoADgAIgAAAAAAAABoADkAIgAAAAAAAABoADoAIgAAAAAAAABoADsAIgAAAAAAAABoADwAIgAAAAAAAABoAD0AIgAAAAAAAABoAD4AIgAAAAAAAABoAD8AIgAAAAAAAABpABcAIgAAAAAAAABpABgAIgAAAAAAAABpABkAIgAAAAAAAABpABoAIgAAAAAAAABpABsAIgAAAAAAAABpABwAIgAAAAAAAABpAB0AIgAAAAAAAABpAB4AIgAAAAAAAABpAB8AIgAAAAAAAABpACAAIgAAAAAAAABpACEAIgAAAAAAAABpACIAIgAAAAAAAABpACMAIgAAAAAAAABpACQAIgAAAAAAAABpACUAIgAAAAAAAABpACYAIgAAAAAAAABpACcAIgAAAAAAAABpACgAIgAAAAAAAABpACkAIgAAAAAAAABpACoAIgAAAAAAAABpACsAIgAAAAAAAABpACwAIgAAAAAAAABpAC0AIgAAAAAAAABpAC4AIgAAAAAAAABpAC8AIgAAAAAAAABpADAAIgAAAAAAAABpADEAIgAAAAAAAABpADIAIgAAAAAAAABpADMAIgAAAAAAAABpADQAIgAAAAAAAABpADUAIgAAAAAAAABpADYAIgAAAAAAAABpADcAIgAAAAAAAABpADgAIgAAAAAAAABpADkAIgAAAAAAAABpADoAIgAAAAAAAABpADsAIgAAAAAAAABpADwAIgAAAAAAAABpAD0AIgAAAAAAAABpAD4AIgAAAAAAAABpAD8AIgAAAAAAAABqABcAIgAAAAAAAABqABgAIgAAAAAAAABqABkAIgAAAAAAAABqABoAIgAAAAAAAABqABsAIgAAAAAAAABqABwAIgAAAAAAAABqAB0AIgAAAAAAAABqAB4AIgAAAAAAAABqAB8AIgAAAAAAAABqACAAIgAAAAAAAABqACEAIgAAAAAAAABqACIAIgAAAAAAAABqACMAIgAAAAAAAABqACQAIgAAAAAAAABqACUAIgAAAAAAAABqACYAIgAAAAAAAABqACcAIgAAAAAAAABqACgAIgAAAAAAAABqACkAIgAAAAAAAABqACoAIgAAAAAAAABqACsAIgAAAAAAAABqACwAIgAAAAAAAABqAC0AIgAAAAAAAABqAC4AIgAAAAAAAABqAC8AIgAAAAAAAABqADAAIgAAAAAAAABqADEAIgAAAAAAAABqADIAIgAAAAAAAABqADMAIgAAAAAAAABqADQAIgAAAAAAAABqADUAIgAAAAAAAABqADYAIgAAAAAAAABqADcAIgAAAAAAAABqADgAIgAAAAAAAABqADkAIgAAAAAAAABqADoAIgAAAAAAAABqADsAIgAAAAAAAABqADwAIgAAAAAAAABqAD0AIgAAAAAAAABqAD4AIgAAAAAAAABqAD8AIgAAAAAAAABrABcAIgAAAAAAAABrABgAIgAAAAAAAABrABkAIgAAAAAAAABrABoAIgAAAAAAAABrABsAIgAAAAAAAABrABwAIgAAAAAAAABrAB0AIgAAAAAAAABrAB4AIgAAAAAAAABrAB8AIgAAAAAAAABrACAAIgAAAAAAAABrACEAIgAAAAAAAABrACIAIgAAAAAAAABrACMAIgAAAAAAAABrACQAIgAAAAAAAABrACUAIgAAAAAAAABrACYAIgAAAAAAAABrACcAIgAAAAAAAABrACgAIgAAAAAAAABrACkAIgAAAAAAAABrACoAIgAAAAAAAABrACsAIgAAAAAAAABrACwAIgAAAAAAAABrAC0AIgAAAAAAAABrAC4AIgAAAAAAAABrAC8AIgAAAAAAAABrADAAIgAAAAAAAABrADEAIgAAAAAAAABrADIAIgAAAAAAAABrADMAIgAAAAAAAABrADQAIgAAAAAAAABrADUAIgAAAAAAAABrADYAIgAAAAAAAABrADcAIgAAAAAAAABrADgAIgAAAAAAAABrADkAIgAAAAAAAABrADoAIgAAAAAAAABrADsAIgAAAAAAAABrADwAIgAAAAAAAABrAD0AIgAAAAAAAABrAD4AIgAAAAAAAABrAD8AIgAAAAAAAAAnAPn/DQABAAEAAAAnAPr/DQABAAEAAAAnAPv/DQABAAEAAAAnAPz/DQABAAEAAAAnAP3/DQABAAEAAAAnAP7/DQABAAEAAAAoAPn/DQABAAEAAAAoAPr/DQABAAEAAAAoAPv/DQABAAEAAAAoAPz/DQABAAEAAAAoAP3/DQABAAEAAAAoAP7/DQABAAEAAAApAPn/DQABAAEAAAApAPr/DQABAAEAAAApAPv/DQABAAEAAAApAPz/DQABAAEAAAApAP3/DQABAAEAAAApAP7/DQABAAEAAAAqAPn/DQABAAEAAAAqAPr/DQABAAEAAAAqAPv/DQABAAEAAAAqAPz/DQABAAEAAAAqAP3/DQABAAEAAAAqAP7/DQABAAEAAAArAPn/DQABAAEAAAArAPr/DQABAAEAAAArAPv/DQABAAEAAAArAPz/DQABAAEAAAArAP3/DQABAAEAAAArAP7/DQABAAEAAAAsAPn/DQABAAEAAAAsAPr/DQABAAEAAAAsAPv/DQABAAEAAAAsAPz/DQABAAEAAAAsAP3/DQABAAEAAAAsAP7/DQABAAEAAAAtAPn/DQABAAEAAAAtAPr/DQABAAEAAAAtAPv/DQABAAEAAAAtAPz/DQABAAEAAAAtAP3/DQABAAEAAAAtAP7/DQABAAEAAAAuAPn/DQABAAEAAAAuAPr/DQABAAEAAAAuAPv/DQABAAEAAAAuAPz/DQABAAEAAAAuAP3/DQABAAEAAAAuAP7/DQABAAEAAAAvAPn/DQABAAEAAAAvAPr/DQABAAEAAAAvAPv/DQABAAEAAAAvAPz/DQABAAEAAAAvAP3/DQABAAEAAAAvAP7/DQABAAEAAAAwAPn/DQABAAEAAAAwAPr/DQABAAEAAAAwAPv/DQABAAEAAAAwAPz/DQABAAEAAAAwAP3/DQABAAEAAAAwAP7/DQABAAEAAAAxAPn/DQABAAEAAAAxAPr/DQABAAEAAAAxAPv/DQABAAEAAAAxAPz/DQABAAEAAAAxAP3/DQABAAEAAAAxAP7/DQABAAEAAAAyAPn/DQABAAEAAAAyAPr/DQABAAEAAAAyAPv/DQABAAEAAAAyAPz/DQABAAEAAAAyAP3/DQABAAEAAAAyAP7/DQABAAEAAAAzAPn/DQABAAEAAAAzAPr/DQABAAEAAAAzAPv/DQABAAEAAAAzAPz/DQABAAEAAAAzAP3/DQABAAEAAAAzAP7/DQABAAEAAAA0APn/DQABAAEAAAA0APr/DQABAAEAAAA0APv/DQABAAEAAAA0APz/DQABAAEAAAA0AP3/DQABAAEAAAA0AP7/DQABAAEAAAA1APn/DQABAAEAAAA1APr/DQABAAEAAAA1APv/DQABAAEAAAA1APz/DQABAAEAAAA1AP3/DQABAAEAAAA1AP7/DQABAAEAAAA2APn/DQABAAEAAAA2APr/DQABAAEAAAA2APv/DQABAAEAAAA2APz/DQABAAEAAAA2AP3/DQABAAEAAAA2AP7/DQABAAEAAAA3APn/DQABAAEAAAA3APr/DQABAAEAAAA3APv/DQABAAEAAAA3APz/DQABAAEAAAA3AP3/DQABAAEAAAA3AP7/DQABAAEAAAA4APn/DQABAAEAAAA4APr/DQABAAEAAAA4APv/DQABAAEAAAA4APz/DQABAAEAAAA4AP3/DQABAAEAAAA4AP7/DQABAAEAAAA5APn/DQABAAEAAAA5APr/DQABAAEAAAA5APv/DQABAAEAAAA5APz/DQABAAEAAAA5AP3/DQABAAEAAAA5AP7/DQABAAEAAAA6APn/DQABAAEAAAA6APr/DQABAAEAAAA6APv/DQABAAEAAAA6APz/DQABAAEAAAA6AP3/DQABAAEAAAA6AP7/DQABAAEAAAA7APn/DQABAAEAAAA7APr/DQABAAEAAAA7APv/DQABAAEAAAA7APz/DQABAAEAAAA7AP3/DQABAAEAAAA7AP7/DQABAAEAAAA8APn/DQABAAEAAAA8APr/DQABAAEAAAA8APv/DQABAAEAAAA8APz/DQABAAEAAAA8AP3/DQABAAEAAAA8AP7/DQABAAEAAAA9APn/DQABAAEAAAA9APr/DQABAAEAAAA9APv/DQABAAEAAAA9APz/DQABAAEAAAA9AP3/DQABAAEAAAA9AP7/DQABAAEAAAA+APn/DQABAAEAAAA+APr/DQABAAEAAAA+APv/DQABAAEAAAA+APz/DQABAAEAAAA+AP3/DQABAAEAAAA+AP7/DQABAAEAAAA/APn/DQABAAEAAAA/APr/DQABAAEAAAA/APv/DQABAAEAAAA/APz/DQABAAEAAAA/AP3/DQABAAEAAAA/AP7/DQABAAEAAABAAPn/DQABAAEAAABAAPr/DQABAAEAAABAAPv/DQABAAEAAABAAPz/DQABAAEAAABAAP3/DQABAAEAAABAAP7/DQABAAEAAABBAPn/DQABAAEAAABBAPr/DQABAAEAAABBAPv/DQABAAEAAABBAPz/DQABAAEAAABBAP3/DQABAAEAAABBAP7/DQABAAEAAABCAPn/DQABAAEAAABCAPr/DQABAAEAAABCAPv/DQABAAEAAABCAPz/DQABAAEAAABCAP3/DQABAAEAAABCAP7/DQABAAEAAABDAPn/DQABAAEAAABDAPr/DQABAAEAAABDAPv/DQABAAEAAABDAPz/DQABAAEAAABDAP3/DQABAAEAAABDAP7/DQABAAEAAABEAPn/DQABAAEAAABEAPr/DQABAAEAAABEAPv/DQABAAEAAABEAPz/DQABAAEAAABEAP3/DQABAAEAAABEAP7/DQABAAEAAABFAPn/DQABAAEAAABFAPr/DQABAAEAAABFAPv/DQABAAEAAABFAPz/DQABAAEAAABFAP3/DQABAAEAAABFAP7/DQABAAEAAABGAPn/DQABAAEAAABGAPr/DQABAAEAAABGAPv/DQABAAEAAABGAPz/DQABAAEAAABGAP3/DQABAAEAAABGAP7/DQABAAEAAABHAPn/DQABAAEAAABHAPr/DQABAAEAAABHAPv/DQABAAEAAABHAPz/DQABAAEAAABHAP3/DQABAAEAAABHAP7/DQABAAEAAABIAPn/DQABAAEAAABIAPr/DQABAAEAAABIAPv/DQABAAEAAABIAPz/DQABAAEAAABIAP3/DQABAAEAAABIAP7/DQABAAEAAABJAPn/DQABAAEAAABJAPr/DQABAAEAAABJAPv/DQABAAEAAABJAPz/DQABAAEAAABJAP3/DQABAAEAAABJAP7/DQABAAEAAABKAPn/DQABAAEAAABKAPr/DQABAAEAAABKAPv/DQABAAEAAABKAPz/DQABAAEAAABKAP3/DQABAAEAAABKAP7/DQABAAEAAABLAPn/DQABAAEAAABLAPr/DQABAAEAAABLAPv/DQABAAEAAABLAPz/DQABAAEAAABLAP3/DQABAAEAAABLAP7/DQABAAEAAABMAPn/DQABAAEAAABMAPr/DQABAAEAAABMAPv/DQABAAEAAABMAPz/DQABAAEAAABMAP3/DQABAAEAAABMAP7/DQABAAEAAABNAPn/DQABAAEAAABNAPr/DQABAAEAAABNAPv/DQABAAEAAABNAPz/DQABAAEAAABNAP3/DQABAAEAAABNAP7/DQABAAEAAABOAPn/DQABAAEAAABOAPr/DQABAAEAAABOAPv/DQABAAEAAABOAPz/DQABAAEAAABOAP3/DQABAAEAAABOAP7/DQABAAEAAABPAPn/DQABAAEAAABPAPr/DQABAAEAAABPAPv/DQABAAEAAABPAPz/DQABAAEAAABPAP3/DQABAAEAAABPAP7/DQABAAEAAABQAPn/DQABAAEAAABQAPr/DQABAAEAAABQAPv/DQABAAEAAABQAPz/DQABAAEAAABQAP3/DQABAAEAAABQAP7/DQABAAEAAABRAPn/DQABAAEAAABRAPr/DQABAAEAAABRAPv/DQABAAEAAABRAPz/DQABAAEAAABRAP3/DQABAAEAAABRAP7/DQABAAEAAABSAPn/DQABAAEAAABSAPr/DQABAAEAAABSAPv/DQABAAEAAABSAPz/DQABAAEAAABSAP3/DQABAAEAAABSAP7/DQABAAEAAABTAPn/DQABAAEAAABTAPr/DQABAAEAAABTAPv/DQABAAEAAABTAPz/DQABAAEAAABTAP3/DQABAAEAAABTAP7/DQABAAEAAABUAPn/DQABAAEAAABUAPr/DQABAAEAAABUAPv/DQABAAEAAABUAPz/DQABAAEAAABUAP3/DQABAAEAAABUAP7/DQABAAEAAABVAPn/DQABAAEAAABVAPr/DQABAAEAAABVAPv/DQABAAEAAABVAPz/DQABAAEAAABVAP3/DQABAAEAAABVAP7/DQABAAEAAAAlAPj/DQABAAEAAAAlAPn/DQABAAEAAAAlAPr/DQABAAEAAAAlAPv/DQABAAEAAAAlAPz/DQABAAEAAAAlAP3/DQABAAEAAAAlAP7/DQABAAEAAAAmAPj/DQABAAEAAAAmAPn/DQABAAEAAAAmAPr/DQABAAEAAAAmAPv/DQABAAEAAAAmAPz/DQABAAEAAAAmAP3/DQABAAEAAAAmAP7/DQABAAEAAAAnAPj/DQABAAEAAAAoAPj/DQABAAEAAAApAPj/DQABAAEAAAAqAPj/DQABAAEAAAArAPj/DQABAAEAAAAsAPj/DQABAAEAAAAtAPj/DQABAAEAAAAuAPj/DQABAAEAAAAvAPj/DQABAAEAAAAwAPj/DQABAAEAAAAxAPj/DQABAAEAAAAyAPj/DQABAAEAAAAzAPj/DQABAAEAAAA0APj/DQABAAEAAAA1APj/DQABAAEAAAA2APj/DQABAAEAAAA3APj/DQABAAEAAAA4APj/DQABAAEAAAA5APj/DQABAAEAAAA6APj/DQABAAEAAAA7APj/DQABAAEAAAA8APj/DQABAAEAAAA9APj/DQABAAEAAAA+APj/DQABAAEAAAA/APj/DQABAAEAAABAAPj/DQABAAEAAABBAPj/DQABAAEAAABCAPj/DQABAAEAAABDAPj/DQABAAEAAABEAPj/DQABAAEAAABFAPj/DQABAAEAAABGAPj/DQABAAEAAABHAPj/DQABAAEAAABIAPj/DQABAAEAAABJAPj/DQABAAEAAABKAPj/DQABAAEAAABLAPj/DQABAAEAAABMAPj/DQABAAEAAABNAPj/DQABAAEAAABOAPj/DQABAAEAAABPAPj/DQABAAEAAABQAPj/DQABAAEAAABRAPj/DQABAAEAAABSAPj/DQABAAEAAABTAPj/DQABAAEAAABUAPj/DQABAAEAAABVAPj/DQABAAEAAABWAPj/DQABAAEAAABWAPn/DQABAAEAAABWAPr/DQABAAEAAABWAPv/DQABAAEAAABWAPz/DQABAAEAAABWAP3/DQABAAEAAABWAP7/DQABAAEAAABXAPj/DQABAAEAAABXAPn/DQABAAEAAABXAPr/DQABAAEAAABXAPv/DQABAAEAAABXAPz/DQABAAEAAABXAP3/DQABAAEAAABXAP7/DQABAAEAAABYAPj/DQABAAEAAABYAPn/DQABAAEAAABYAPr/DQABAAEAAABYAPv/DQABAAEAAABYAPz/DQABAAEAAABYAP3/DQABAAEAAABYAP7/DQABAAEAAABZAPj/DQABAAEAAABZAPn/DQABAAEAAABZAPr/DQABAAEAAABZAPv/DQABAAEAAABZAPz/DQABAAEAAABZAP3/DQABAAEAAABZAP7/DQABAAEAAABaAPj/DQABAAEAAABaAPn/DQABAAEAAABaAPr/DQABAAEAAABaAPv/DQABAAEAAABaAPz/DQABAAEAAABaAP3/DQABAAEAAABaAP7/FgAAAAAAAABbAPj/DQABAAEAAABbAPn/DQABAAEAAABbAPr/DQABAAEAAABbAPv/DQABAAEAAABbAPz/DQABAAEAAABbAP3/DQABAAEAAABbAP7/FgAAAAAAAABcAPj/DQABAAEAAABcAPn/DQABAAEAAABcAPr/DQABAAEAAABcAPv/DQABAAEAAABcAPz/DQABAAEAAABcAP3/DQABAAEAAABcAP7/FgAAAAAAAABdAPj/DQABAAEAAABdAPn/DQABAAEAAABdAPr/DQABAAEAAABdAPv/DQABAAEAAABdAPz/DQABAAEAAABdAP3/DQABAAEAAABdAP7/FgAAAAAAAABeAPj/DQABAAEAAABeAPn/DQABAAEAAABeAPr/DQABAAEAAABeAPv/DQABAAEAAABeAPz/DQABAAEAAABeAP3/DQABAAEAAABeAP7/FgAAAAAAAABfAPj/DQABAAEAAABfAPn/DQABAAEAAABfAPr/DQABAAEAAABfAPv/DQABAAEAAABfAPz/DQABAAEAAABfAP3/DQABAAEAAABfAP7/FgAAAAAAAABgAPj/DQABAAEAAABgAPn/DQABAAEAAABgAPr/DQABAAEAAABgAPv/DQABAAEAAABgAPz/DQABAAEAAABgAP3/DQABAAEAAABgAP7/FgAAAAAAAABhAPj/DQABAAEAAABhAPn/DQABAAEAAABhAPr/DQABAAEAAABhAPv/DQABAAEAAABhAPz/DQABAAEAAABhAP3/DQABAAEAAABhAP7/FgAAAAAAAABiAPj/DQABAAEAAABiAPn/DQABAAEAAABiAPr/DQABAAEAAABiAPv/DQABAAEAAABiAPz/DQABAAEAAABiAP3/DQABAAEAAABiAP7/FgAAAAAAAABjAPj/DQABAAEAAABjAPn/DQABAAEAAABjAPr/DQABAAEAAABjAPv/DQABAAEAAABjAPz/DQABAAEAAABjAP3/DQABAAEAAABjAP7/FgAAAAAAAABkAPj/DQABAAEAAABkAPn/DQABAAEAAABkAPr/DQABAAEAAABkAPv/DQABAAEAAABkAPz/DQABAAEAAABkAP3/DQABAAEAAABkAP7/FgAAAAAAAABlAPj/DQABAAEAAABlAPn/DQABAAEAAABlAPr/DQABAAEAAABlAPv/DQABAAEAAABlAPz/DQABAAEAAABlAP3/DQABAAEAAABlAP7/FgAAAAAAAABmAPj/DQABAAEAAABmAPn/DQABAAEAAABmAPr/DQABAAEAAABmAPv/DQABAAEAAABmAPz/DQABAAEAAABmAP3/DQABAAEAAABmAP7/FgAAAAAAAABnAPj/DQABAAEAAABnAPn/DQABAAEAAABnAPr/DQABAAEAAABnAPv/DQABAAEAAABnAPz/DQABAAEAAABnAP3/DQABAAEAAABnAP7/FgAAAAAAAABoAPj/DQABAAEAAABoAPn/DQABAAEAAABoAPr/DQABAAEAAABoAPv/DQABAAEAAABoAPz/DQABAAEAAABoAP3/DQABAAEAAABoAP7/FgAAAAAAAABpAPj/DQABAAEAAABpAPn/DQABAAEAAABpAPr/DQABAAEAAABpAPv/DQABAAEAAABpAPz/DQABAAEAAABpAP3/DQABAAEAAABpAP7/FgAAAAAAAABqAPj/DQABAAEAAABqAPn/DQABAAEAAABqAPr/DQABAAEAAABqAPv/DQABAAEAAABqAPz/DQABAAEAAABqAP3/DQABAAEAAABqAP7/FgAAAAAAAABrAPj/DQABAAEAAABrAPn/DQABAAEAAABrAPr/DQABAAEAAABrAPv/DQABAAEAAABrAPz/DQABAAEAAABrAP3/DQABAAEAAABrAP7/FgAAAAAAAAAkAPf/DQABAAEAAAAkAPj/DQABAAEAAAAkAPn/DQABAAEAAAAkAPr/DQABAAEAAAAkAPv/DQABAAEAAAAkAPz/DQABAAEAAAAkAP3/DQABAAEAAAAkAP7/DQABAAEAAAAlAPf/DQABAAEAAAAmAPf/DQABAAEAAAAnAPf/DQABAAEAAAAoAPf/DQABAAEAAAApAPf/DQABAAEAAAAqAPf/DQABAAEAAAArAPf/DQABAAEAAAAsAPf/DQABAAEAAAAtAPf/DQABAAEAAAAuAPf/DQABAAEAAAAvAPf/DQABAAEAAAAwAPf/DQABAAEAAAAxAPf/DQABAAEAAAAyAPf/DQABAAEAAAAzAPf/DQABAAEAAAA0APf/DQABAAEAAAA1APf/DQABAAEAAAA2APf/DQABAAEAAAA3APf/DQABAAEAAAA4APf/DQABAAEAAAA5APf/DQABAAEAAAA6APf/DQABAAEAAAA7APf/DQABAAEAAAA8APf/DQABAAEAAAA9APf/DQABAAEAAAA+APf/DQABAAEAAAA/APf/DQABAAEAAABAAPf/DQABAAEAAABBAPf/DQABAAEAAABCAPf/DQABAAEAAABDAPf/DQABAAEAAABEAPf/DQABAAEAAABFAPf/DQABAAEAAABGAPf/DQABAAEAAABHAPf/DQABAAEAAABIAPf/DQABAAEAAABJAPf/DQABAAEAAABKAPf/DQABAAEAAABLAPf/DQABAAEAAABMAPf/DQABAAEAAABNAPf/DQABAAEAAABOAPf/DQABAAEAAABPAPf/DQABAAEAAABQAPf/DQABAAEAAABRAPf/DQABAAEAAABSAPf/DQABAAEAAABTAPf/DQABAAEAAABUAPf/DQABAAEAAABVAPf/DQABAAEAAABWAPf/DQABAAEAAABXAPf/DQABAAEAAABYAPf/DQABAAEAAABZAPf/DQABAAEAAABaAPf/DQABAAEAAABbAPf/DQABAAEAAABcAPf/DQABAAEAAABdAPf/DQABAAEAAABeAPf/DQABAAEAAABfAPf/DQABAAEAAABgAPf/DQABAAEAAABhAPf/DQABAAEAAABiAPf/DQABAAEAAABjAPf/DQABAAEAAABkAPf/DQABAAEAAABlAPf/DQABAAEAAABmAPf/DQABAAEAAABnAPf/DQABAAEAAABoAPf/DQABAAEAAABpAPf/DQABAAEAAABqAPf/DQABAAEAAAAhAPj/DQABAAEAAAAhAPn/DQABAAEAAAAhAPr/DQABAAEAAAAhAPv/DQABAAEAAAAhAPz/DQABAAEAAAAhAP3/DQABAAEAAAAhAP7/DQABAAEAAAAiAPj/DQABAAEAAAAiAPn/DQABAAEAAAAiAPr/DQABAAEAAAAiAPv/DQABAAEAAAAiAPz/DQABAAEAAAAiAP3/DQABAAEAAAAiAP7/DQABAAEAAAAjAPj/DQABAAEAAAAjAPn/DQABAAEAAAAjAPr/DQABAAEAAAAjAPv/DQABAAEAAAAjAPz/DQABAAEAAAAjAP3/DQABAAEAAAAjAP7/DQABAAEAAAAhAPb/DQABAAEAAAAhAPf/DQABAAEAAAAiAPb/DQABAAEAAAAiAPf/DQABAAEAAAAjAPb/DQABAAEAAAAjAPf/DQABAAEAAAAkAPb/DQABAAEAAAAlAPb/DQABAAEAAAAmAPb/DQABAAEAAAAnAPb/DQABAAEAAAAoAPb/DQABAAEAAAApAPb/DQABAAEAAAAqAPb/DQABAAEAAAArAPb/DQABAAEAAAAsAPb/DQABAAEAAAAtAPb/DQABAAEAAAAuAPb/DQABAAEAAAAvAPb/DQABAAEAAAAwAPb/DQABAAEAAAAxAPb/DQABAAEAAAAyAPb/DQABAAEAAAAzAPb/DQABAAEAAAA0APb/DQABAAEAAAA1APb/DQABAAEAAAA2APb/DQABAAEAAAA3APb/DQABAAEAAAA4APb/DQABAAEAAAA5APb/DQABAAEAAAA6APb/DQABAAEAAAA7APb/DQABAAEAAAA8APb/DQABAAEAAAA9APb/DQABAAEAAAA+APb/DQABAAEAAAA/APb/DQABAAEAAABAAPb/DQABAAEAAABBAPb/DQABAAEAAABCAPb/DQABAAEAAABDAPb/DQABAAEAAABEAPb/DQABAAEAAABFAPb/DQABAAEAAABGAPb/DQABAAEAAABHAPb/DQABAAEAAABIAPb/DQABAAEAAABJAPb/DQABAAEAAABKAPb/DQABAAEAAABLAPb/DQABAAEAAABMAPb/DQABAAEAAABNAPb/DQABAAEAAABOAPb/DQABAAEAAABPAPb/DQABAAEAAABQAPb/DQABAAEAAABRAPb/DQABAAEAAABSAPb/DQABAAEAAABTAPb/DQABAAEAAABUAPb/DQABAAEAAABVAPb/DQABAAEAAABWAPb/DQABAAEAAABXAPb/DQABAAEAAABYAPb/DQABAAEAAABZAPb/DQABAAEAAABaAPb/DQABAAEAAABbAPb/DQABAAEAAABcAPb/DQABAAEAAABdAPb/DQABAAEAAABeAPb/DQABAAEAAABfAPb/DQABAAEAAABgAPb/DQABAAEAAABhAPb/DQABAAEAAABiAPb/DQABAAEAAABjAPb/DQABAAEAAABkAPb/DQABAAEAAABlAPb/DQABAAEAAABmAPb/DQABAAEAAABnAPb/DQABAAEAAABoAPb/DQABAAEAAABpAPb/DQABAAEAAABqAPb/DQABAAEAAABrAPb/DQABAAEAAABrAPf/DQABAAEAAAAcAPb/DQABAAEAAAAcAPf/DQABAAEAAAAcAPj/DQABAAEAAAAcAPn/DQABAAEAAAAcAPr/DQABAAEAAAAcAPv/DQABAAEAAAAcAPz/DQABAAEAAAAcAP3/DQABAAEAAAAcAP7/DQABAAEAAAAdAPb/DQABAAEAAAAdAPf/DQABAAEAAAAdAPj/DQABAAEAAAAdAPn/DQABAAEAAAAdAPr/DQABAAEAAAAdAPv/DQABAAEAAAAdAPz/DQABAAEAAAAdAP3/DQABAAEAAAAdAP7/DQABAAEAAAAeAPb/DQABAAEAAAAeAPf/DQABAAEAAAAeAPj/DQABAAEAAAAeAPn/DQABAAEAAAAeAPr/DQABAAEAAAAeAPv/DQABAAEAAAAeAPz/DQABAAEAAAAeAP3/DQABAAEAAAAeAP7/DQABAAEAAAAfAPb/DQABAAEAAAAfAPf/DQABAAEAAAAfAPj/DQABAAEAAAAfAPn/DQABAAEAAAAfAPr/DQABAAEAAAAfAPv/DQABAAEAAAAfAPz/DQABAAEAAAAfAP3/DQABAAEAAAAfAP7/DQABAAEAAAAgAPb/DQABAAEAAAAgAPf/DQABAAEAAAAgAPj/DQABAAEAAAAgAPn/DQABAAEAAAAgAPr/DQABAAEAAAAgAPv/DQABAAEAAAAgAPz/DQABAAEAAAAgAP3/DQABAAEAAAAgAP7/DQABAAEAAAAdAPT/DQABAAEAAAAdAPX/DQABAAEAAAAeAPT/DQABAAEAAAAeAPX/DQABAAEAAAAfAPT/DQABAAEAAAAfAPX/DQABAAEAAAAgAPT/DQABAAEAAAAgAPX/DQABAAEAAAAhAPT/DQABAAEAAAAhAPX/DQABAAEAAAAiAPT/DQABAAEAAAAiAPX/DQABAAEAAAAjAPT/DQABAAEAAAAjAPX/DQABAAEAAAAcAPT/DQABAAEAAAAcAPX/DQABAAEAAAAkAPT/DQABAAEAAAAkAPX/DQABAAEAAAAlAPT/DQABAAEAAAAlAPX/DQABAAEAAAAmAPT/DQABAAEAAAAmAPX/DQABAAEAAAAnAPT/DQABAAEAAAAnAPX/DQABAAEAAAAoAPT/DQABAAEAAAAoAPX/DQABAAEAAAApAPT/DQABAAEAAAApAPX/DQABAAEAAAAqAPT/DQABAAEAAAAqAPX/DQABAAEAAAArAPT/DQABAAEAAAArAPX/DQABAAEAAAAsAPT/DQABAAEAAAAsAPX/DQABAAEAAAAtAPT/DQABAAEAAAAtAPX/DQABAAEAAAAuAPT/DQABAAEAAAAuAPX/DQABAAEAAAAvAPT/DQABAAEAAAAvAPX/DQABAAEAAAAwAPT/DQABAAEAAAAwAPX/DQABAAEAAAAxAPT/DQABAAEAAAAxAPX/DQABAAEAAAAyAPT/DQABAAEAAAAyAPX/DQABAAEAAAAzAPT/DQABAAEAAAAzAPX/DQABAAEAAAA0APT/DQABAAEAAAA0APX/DQABAAEAAAA1APT/DQABAAEAAAA1APX/DQABAAEAAAA2APT/DQABAAEAAAA2APX/DQABAAEAAAA3APT/DQABAAEAAAA3APX/DQABAAEAAAA4APT/DQABAAEAAAA4APX/DQABAAEAAAA5APT/DQABAAEAAAA5APX/DQABAAEAAAA6APT/DQABAAEAAAA6APX/DQABAAEAAAA7APT/DQABAAEAAAA7APX/DQABAAEAAAA8APT/DQABAAEAAAA8APX/DQABAAEAAAA9APT/DQABAAEAAAA9APX/DQABAAEAAAA+APT/DQABAAEAAAA+APX/DQABAAEAAAA/APT/DQABAAEAAAA/APX/DQABAAEAAABAAPT/DQABAAEAAABAAPX/DQABAAEAAABBAPT/DQABAAEAAABBAPX/DQABAAEAAABCAPT/DQABAAEAAABCAPX/DQABAAEAAABDAPT/DQABAAEAAABDAPX/DQABAAEAAABEAPT/DQABAAEAAABEAPX/DQABAAEAAABFAPT/DQABAAEAAABFAPX/DQABAAEAAABGAPT/DQABAAEAAABGAPX/DQABAAEAAABHAPT/DQABAAEAAABHAPX/DQABAAEAAABIAPT/DQABAAEAAABIAPX/DQABAAEAAABJAPT/DQABAAEAAABJAPX/DQABAAEAAABKAPT/DQABAAEAAABKAPX/DQABAAEAAABLAPT/DQABAAEAAABLAPX/DQABAAEAAABMAPT/DQABAAEAAABMAPX/DQABAAEAAABNAPT/DQABAAEAAABNAPX/DQABAAEAAABOAPT/DQABAAEAAABOAPX/DQABAAEAAABPAPT/DQABAAEAAABPAPX/DQABAAEAAABQAPT/DQABAAEAAABQAPX/DQABAAEAAABRAPT/DQABAAEAAABRAPX/DQABAAEAAABSAPT/DQABAAEAAABSAPX/DQABAAEAAABTAPT/DQABAAEAAABTAPX/DQABAAEAAABUAPT/DQABAAEAAABUAPX/DQABAAEAAABVAPT/DQABAAEAAABVAPX/DQABAAEAAABWAPT/DQABAAEAAABWAPX/DQABAAEAAABXAPT/DQABAAEAAABXAPX/DQABAAEAAABYAPT/DQABAAEAAABYAPX/DQABAAEAAABZAPT/DQABAAEAAABZAPX/DQABAAEAAABaAPT/DQABAAEAAABaAPX/DQABAAEAAABbAPT/DQABAAEAAABbAPX/DQABAAEAAABcAPT/DQABAAEAAABcAPX/DQABAAEAAABdAPT/DQABAAEAAABdAPX/DQABAAEAAABeAPT/DQABAAEAAABeAPX/DQABAAEAAABfAPT/DQABAAEAAABfAPX/DQABAAEAAABgAPT/DQABAAEAAABgAPX/DQABAAEAAABhAPT/DQABAAEAAABhAPX/DQABAAEAAABiAPT/DQABAAEAAABiAPX/DQABAAEAAABjAPT/DQABAAEAAABjAPX/DQABAAEAAABkAPT/DQABAAEAAABkAPX/DQABAAEAAABlAPT/DQABAAEAAABlAPX/DQABAAEAAABmAPT/DQABAAEAAABmAPX/DQABAAEAAABnAPT/DQABAAEAAABnAPX/DQABAAEAAABoAPT/DQABAAEAAABoAPX/DQABAAEAAABpAPT/DQABAAEAAABpAPX/DQABAAEAAABqAPT/DQABAAEAAABqAPX/DQABAAEAAABrAPT/DQABAAEAAABrAPX/DQABAAEAAAAaAPP/DQABAAEAAAAaAPT/DQABAAEAAAAaAPX/DQABAAEAAAAaAPb/DQABAAEAAAAaAPf/DQABAAEAAAAaAPj/DQABAAEAAAAaAPn/DQABAAEAAAAaAPr/DQABAAEAAAAaAPv/DQABAAEAAAAaAPz/DQABAAEAAAAaAP3/DQABAAEAAAAaAP7/DQABAAEAAAAbAPP/DQABAAEAAAAbAPT/DQABAAEAAAAbAPX/DQABAAEAAAAbAPb/DQABAAEAAAAbAPf/DQABAAEAAAAbAPj/DQABAAEAAAAbAPn/DQABAAEAAAAbAPr/DQABAAEAAAAbAPv/DQABAAEAAAAbAPz/DQABAAEAAAAbAP3/DQABAAEAAAAbAP7/DQABAAEAAAAcAPP/DQABAAEAAAAdAPP/DQABAAEAAAAeAPP/DQABAAEAAAAfAPP/DQABAAEAAAAgAPP/DQABAAEAAAAhAPP/DQABAAEAAAAiAPP/DQABAAEAAAAjAPP/DQABAAEAAAAkAPP/DQABAAEAAAAlAPP/DQABAAEAAAAmAPP/DQABAAEAAAAnAPP/DQABAAEAAAAoAPP/DQABAAEAAAApAPP/DQABAAEAAAAqAPP/DQABAAEAAAArAPP/DQABAAEAAAAsAPP/DQABAAEAAAAtAPP/DQABAAEAAAAuAPP/DQABAAEAAAAvAPP/DQABAAEAAAAwAPP/DQABAAEAAAAxAPP/DQABAAEAAAAyAPP/DQABAAEAAAAzAPP/DQABAAEAAAA0APP/DQABAAEAAAA1APP/DQABAAEAAAA2APP/DQABAAEAAAA3APP/DQABAAEAAAA4APP/DQABAAEAAAA5APP/DQABAAEAAAA6APP/DQABAAEAAAA7APP/DQABAAEAAAA8APP/DQABAAEAAAA9APP/DQABAAEAAAA+APP/DQABAAEAAAA/APP/DQABAAEAAABAAPP/DQABAAEAAABBAPP/DQABAAEAAABCAPP/DQABAAEAAABDAPP/DQABAAEAAABEAPP/DQABAAEAAABFAPP/DQABAAEAAABGAPP/DQABAAEAAABHAPP/DQABAAEAAABIAPP/DQABAAEAAABJAPP/DQABAAEAAABKAPP/DQABAAEAAABLAPP/DQABAAEAAABMAPP/DQABAAEAAABNAPP/DQABAAEAAABOAPP/DQABAAEAAABPAPP/DQABAAEAAABQAPP/DQABAAEAAABRAPP/DQABAAEAAABSAPP/DQABAAEAAABTAPP/DQABAAEAAABUAPP/DQABAAEAAABVAPP/DQABAAEAAABWAPP/DQABAAEAAABXAPP/DQABAAEAAABYAPP/DQABAAEAAABZAPP/DQABAAEAAABaAPP/DQABAAEAAABbAPP/DQABAAEAAABcAPP/DQABAAEAAABdAPP/DQABAAEAAABeAPP/DQABAAEAAABfAPP/DQABAAEAAABgAPP/DQABAAEAAABhAPP/DQABAAEAAABiAPP/DQABAAEAAABjAPP/DQABAAEAAABkAPP/DQABAAEAAABlAPP/DQABAAEAAABmAPP/DQABAAEAAABnAPP/DQABAAEAAABoAPP/DQABAAEAAABpAPP/DQABAAEAAABqAPP/DQABAAEAAABrAPP/DQABAAEAAAAAAEAADQABAAEAAAAAAEEADQABAAEAAAABAEAADQABAAEAAAABAEEADQABAAEAAAACAEAADQABAAEAAAACAEEADQABAAEAAAADAEAADQABAAEAAAADAEEADQABAAEAAAAEAEAADQABAAEAAAAEAEEADQABAAEAAAAFAEAADQABAAEAAAAFAEEADQABAAEAAAAGAEAADQABAAEAAAAGAEEADQABAAEAAAAHAEAADQABAAEAAAAHAEEADQABAAEAAAAIAEAADQABAAEAAAAIAEEADQABAAEAAAAJAEAADQABAAEAAAAJAEEADQABAAEAAAAKAEAADQABAAEAAAAKAEEADQABAAEAAAALAEAADQABAAEAAAALAEEADQABAAEAAAAMAEAADQABAAEAAAAMAEEADQABAAEAAAANAEAADQABAAEAAAANAEEADQABAAEAAAAOAEAADQABAAEAAAAOAEEADQABAAEAAAAPAEAADQABAAEAAAAPAEEADQABAAEAAAAQAEAADQABAAEAAAAQAEEADQABAAEAAAARAEAADQABAAEAAAARAEEADQABAAEAAAASAEAADQABAAEAAAASAEEADQABAAEAAAATAEAADQABAAEAAAATAEEADQABAAEAAAAUAEAADQABAAEAAAAUAEEADQABAAEAAAAVAEAADQABAAEAAAAVAEEADQABAAEAAAAWAEAADQABAAEAAAAWAEEADQABAAEAAAAXAEAADQABAAEAAAAXAEEADQABAAEAAAAYAEAADQABAAEAAAAYAEEADQABAAEAAAAZAEAADQABAAEAAAAZAEEADQABAAEAAAAaAEAADQABAAEAAAAaAEEADQABAAEAAAAbAEAADQABAAEAAAAbAEEADQABAAEAAAAcAEAADQABAAEAAAAcAEEADQABAAEAAAAdAEAADQABAAEAAAAdAEEADQABAAEAAAAeAEAADQABAAEAAAAeAEEADQABAAEAAAAfAEAADQABAAEAAAAfAEEADQABAAEAAAAgAEAADQABAAEAAAAgAEEADQABAAEAAAAhAEAADQABAAEAAAAhAEEADQABAAEAAAAiAEAADQABAAEAAAAiAEEADQABAAEAAAAjAEAADQABAAEAAAAjAEEADQABAAEAAAAkAEAADQABAAEAAAAkAEEADQABAAEAAAAlAEAADQABAAEAAAAlAEEADQABAAEAAAAmAEAADQABAAEAAAAmAEEADQABAAEAAAAnAEAADQABAAEAAAAnAEEADQABAAEAAAAoAEAADQABAAEAAAAoAEEADQABAAEAAAApAEAADQABAAEAAAApAEEADQABAAEAAAAqAEAADQABAAEAAAAqAEEADQABAAEAAAArAEAADQABAAEAAAArAEEADQABAAEAAAAsAEAADQABAAEAAAAsAEEADQABAAEAAAAtAEAADQABAAEAAAAtAEEADQABAAEAAAAuAEAADQABAAEAAAAuAEEADQABAAEAAAAvAEAADQABAAEAAAAvAEEADQABAAEAAAAwAEAADQABAAEAAAAwAEEADQABAAEAAAAxAEAADQABAAEAAAAxAEEADQABAAEAAAAyAEAADQABAAEAAAAyAEEADQABAAEAAAAzAEAADQABAAEAAAAzAEEADQABAAEAAAA0AEAADQABAAEAAAA0AEEADQABAAEAAAA1AEAADQABAAEAAAA1AEEADQABAAEAAAA2AEAADQABAAEAAAA2AEEADQABAAEAAAA3AEAAIgAAAAAAAAA3AEEAIgAAAAAAAAA4AEAAIgAAAAAAAAA4AEEAIgAAAAAAAAA5AEAAIgAAAAAAAAA5AEEAIgAAAAAAAAA6AEAAIgAAAAAAAAA6AEEAIgAAAAAAAAA7AEAAIgAAAAAAAAA7AEEAIgAAAAAAAAA8AEAAIgAAAAAAAAA8AEEAIgAAAAAAAAA9AEAAIgAAAAAAAAA9AEEAIgAAAAAAAAA+AEAAIgAAAAAAAAA+AEEAIgAAAAAAAAA/AEAAIgAAAAAAAAA/AEEAIgAAAAAAAABAAEAAIgAAAAAAAABAAEEAIgAAAAAAAABBAEAAIgAAAAAAAABBAEEAIgAAAAAAAABCAEAAIgAAAAAAAABCAEEAIgAAAAAAAABDAEAAIgAAAAAAAABDAEEAIgAAAAAAAABEAEAAIgAAAAAAAABEAEEAIgAAAAAAAABFAEAAIgAAAAAAAABFAEEAIgAAAAAAAABGAEAAIgAAAAAAAABGAEEAIgAAAAAAAABHAEAAIgAAAAAAAABHAEEAIgAAAAAAAABIAEAAIgAAAAAAAABIAEEAIgAAAAAAAABJAEAAIgAAAAAAAABJAEEAIgAAAAAAAABKAEAAIgAAAAAAAABKAEEAIgAAAAAAAABLAEAAIgAAAAAAAABLAEEAIgAAAAAAAABMAEAAIgAAAAAAAABMAEEAIgAAAAAAAABNAEAAIgAAAAAAAABNAEEAIgAAAAAAAABOAEAAIgAAAAAAAABOAEEAIgAAAAAAAABPAEAAIgAAAAAAAABPAEEAIgAAAAAAAABQAEAAIgAAAAAAAABQAEEAIgAAAAAAAABRAEAAIgAAAAAAAABRAEEAIgAAAAAAAABSAEAAIgAAAAAAAABSAEEAIgAAAAAAAABTAEAAIgAAAAAAAABTAEEAIgAAAAAAAABUAEAAIgAAAAAAAABUAEEAIgAAAAAAAABVAEAAIgAAAAAAAABVAEEAIgAAAAAAAABWAEAAIgAAAAAAAABWAEEAIgAAAAAAAABXAEAAIgAAAAAAAABXAEEAIgAAAAAAAABYAEAAIgAAAAAAAABYAEEAIgAAAAAAAABZAEAAIgAAAAAAAABZAEEAIgAAAAAAAABaAEAAIgAAAAAAAABaAEEAIgAAAAAAAABbAEAAIgAAAAAAAABbAEEAIgAAAAAAAABcAEAAIgAAAAAAAABcAEEAIgAAAAAAAABdAEAAIgAAAAAAAABdAEEAIgAAAAAAAABeAEAAIgAAAAAAAABeAEEAIgAAAAAAAABfAEAAIgAAAAAAAABfAEEAIgAAAAAAAABgAEAAIgAAAAAAAABgAEEAIgAAAAAAAABhAEAAIgAAAAAAAABhAEEAIgAAAAAAAABiAEAAIgAAAAAAAABiAEEAIgAAAAAAAABjAEAAIgAAAAAAAABjAEEAIgAAAAAAAABkAEAAIgAAAAAAAABkAEEAIgAAAAAAAABlAEAAIgAAAAAAAABlAEEAIgAAAAAAAABmAEAAIgAAAAAAAABmAEEAIgAAAAAAAABnAEAAIgAAAAAAAABnAEEAIgAAAAAAAABoAEAAIgAAAAAAAABoAEEAIgAAAAAAAABpAEAAIgAAAAAAAABpAEEAIgAAAAAAAABqAEAAIgAAAAAAAABqAEEAIgAAAAAAAABrAEAAIgAAAAAAAABrAEEAIgAAAAAAAAARABoADQABAAEAAAAAADUAEgAAAAAAAAAAADYAGAABAAEAAAABADUAEgAAAAAAAAABADYAGAABAAEAAAABADcAGAABAAEAAAACADUAEgAAAAAAAAACADYAEgAAAAAAAAACADcAEgAAAAAAAAACAAMADQABAAEAAAACAAQADQABAAEAAAACAAUADQABAAEAAAACAAYADQABAAEAAAACAAcADQABAAEAAAACAAgADQABAAEAAAACAAkADQABAAEAAAACAAoADQABAAEAAAACAAsADQABAAEAAAACAAwADQABAAEAAAADAAMADQABAAEAAAADAAQADQABAAEAAAADAAUADQABAAEAAAADAAYADQABAAEAAAADAAcADQABAAEAAAADAAgADQABAAEAAAADAAkADQABAAEAAAAEAAMADQABAAEAAAAEAAQADQABAAEAAAAEAAUADQABAAEAAAAEAAYADQABAAEAAAAEAAcADQABAAEAAAAEAAgADQABAAEAAAAEAAkADQABAAEAAAAEAAoADQABAAEAAAAEAAsADQABAAEAAAAFAAMADQABAAEAAAAFAAQADQABAAEAAAAFAAUADQABAAEAAAAFAAYADQABAAEAAAAFAAcADQABAAEAAAAFAAgADQABAAEAAAAFAAkADQABAAEAAAAFAAoADQABAAEAAAAFAAsADQABAAEAAAAGAAMADQABAAEAAAAGAAQADQABAAEAAAAGAAUADQABAAEAAAAGAAYADQABAAEAAAAGAAcADQABAAEAAAAGAAgADQABAAEAAAAGAAkADQABAAEAAAAGAAoADQABAAEAAAAGAAsADQABAAEAAAAHAAMADQABAAEAAAAHAAQADQABAAEAAAAHAAUADQABAAEAAAAHAAYADQABAAEAAAAHAAcADQABAAEAAAAHAAgADQABAAEAAAAHAAkADQABAAEAAAAIAAMADQABAAEAAAAIAAQADQABAAEAAAAIAAUADQABAAEAAAAIAAYADQABAAEAAAAIAAcADQABAAEAAAAIAAgADQABAAEAAAAIAAkADQABAAEAAAAIAAsADQABAAEAAAAIAAwADQABAAEAAAAJAAMADQABAAEAAAAJAAQADQABAAEAAAAJAAUADQABAAEAAAAJAAYADQABAAEAAAAJAAcADQABAAEAAAAJAAgADQABAAEAAAAJAAkADQABAAEAAAAJAAsADQABAAEAAAAJAAwADQABAAEAAAAKAAMADQABAAEAAAAKAAQADQABAAEAAAAKAAUADQABAAEAAAAKAAYADQABAAEAAAAKAAcADQABAAEAAAAKAAgADQABAAEAAAAKAAkADQABAAEAAAAKAAsADQABAAEAAAAKAAwADQABAAEAAAALAAMADQABAAEAAAALAAQADQABAAEAAAALAAUADQABAAEAAAALAAYADQABAAEAAAALAAcADQABAAEAAAALAAgADQABAAEAAAALAAkADQABAAEAAAALAAsADQABAAEAAAALAAwADQABAAEAAAAMAAMADQABAAEAAAAMAAQADQABAAEAAAAMAAUADQABAAEAAAAMAAYADQABAAEAAAAMAAcADQABAAEAAAAMAAgADQABAAEAAAAMAAkADQABAAEAAAAMAAsADQABAAEAAAAMAAwADQABAAEAAAANAAMADQABAAEAAAANAAQADQABAAEAAAANAAUADQABAAEAAAANAAYADQABAAEAAAANAAcADQABAAEAAAANAAgADQABAAEAAAANAAkADQABAAEAAAANAAsADQABAAEAAAANAAwADQABAAEAAAAOAAMADQABAAEAAAAOAAQADQABAAEAAAAOAAUADQABAAEAAAAOAAYADQABAAEAAAAOAAcADQABAAEAAAAOAAgADQABAAEAAAAOAAkADQABAAEAAAAOAAsADQABAAEAAAAOAAwADQABAAEAAAAPAAMADQABAAEAAAAPAAQADQABAAEAAAAPAAUADQABAAEAAAAPAAYADQABAAEAAAAPAAcADQABAAEAAAAPAAgADQABAAEAAAAPAAkADQABAAEAAAAPAAsADQABAAEAAAAPAAwADQABAAEAAAABAAMADQABAAEAAAABAAQADQABAAEAAAABAAUADQABAAEAAAABAAYADQABAAEAAAABAAcADQABAAEAAAABAAgADQABAAEAAAABAAkADQABAAEAAAABAAoADQABAAEAAAABAAsADQABAAEAAAABAAwADQABAAEAAAAeAAYADQABAAEAAAAfAAYADQABAAEAAAAfAAcADQABAAEAAAAgAAcADQABAAEAAAAgAAgADQABAAEAAAAhAAgADQABAAEAAAAiAAgADQABAAEAAAAjAAkAHwABAAEAAAAkAAkAHwABAAEAAAAlAAoADQABAAEAAAAmAAoADQABAAEAAAAnAAsAHwABAAEAAAAoAAsADQABAAEAAAApAAsADQABAAEAAAAqAAwADQABAAEAAAArAAwADQABAAEAAAAsAAwAHwABAAEAAAAtAA0AIgAAAAAAAAAuAA0AIgAAAAAAAAAvAA0AIgAAAAAAAAAwAA0AIgAAAAAAAAAxAA0AIgAAAAAAAAAxAA4AIgAAAAAAAAAyAA4AIgAAAAAAAAAzAA4AIgAAAAAAAAA0AA4AIgAAAAAAAAAeAAcADQABAAEAAAAeAAgADQABAAEAAAAeAAkADQABAAEAAAAeAAoADQABAAEAAAAeAAsADQABAAEAAAAeAAwADQABAAEAAAAeAA0ADQABAAEAAAAeAA4ADQABAAEAAAAeAA8ADQABAAEAAAAfAAgADQABAAEAAAAfAAkADQABAAEAAAAfAAoADQABAAEAAAAfAAsADQABAAEAAAAfAAwADQABAAEAAAAfAA0ADQABAAEAAAAfAA4ADQABAAEAAAAfAA8ADQABAAEAAAAgAAYADQABAAEAAAAgAAkAHwABAAEAAAAgAAoADQABAAEAAAAgAAsADQABAAEAAAAgAAwADQABAAEAAAAgAA0ADQABAAEAAAAgAA4ADQABAAEAAAAgAA8ADQABAAEAAAAhAAYADQABAAEAAAAhAAcADQABAAEAAAAhAAkAHwABAAEAAAAhAAoAHwABAAEAAAAhAAsADQABAAEAAAAhAAwADQABAAEAAAAhAA0ADQABAAEAAAAhAA4ADQABAAEAAAAhAA8ADQABAAEAAAAiAAYADQABAAEAAAAiAAcADQABAAEAAAAiAAkAHwABAAEAAAAiAAoAHwABAAEAAAAiAAsAHwABAAEAAAAiAAwADQABAAEAAAAiAA0ADQABAAEAAAAiAA4ADQABAAEAAAAiAA8ADQABAAEAAAAjAAYADQABAAEAAAAjAAcADQABAAEAAAAjAAgADQABAAEAAAAjAAoADQABAAEAAAAjAAsAHwABAAEAAAAjAAwADQABAAEAAAAjAA0ADQABAAEAAAAjAA4ADQABAAEAAAAjAA8ADQABAAEAAAAkAAYADQABAAEAAAAkAAcADQABAAEAAAAkAAgADQABAAEAAAAkAAoADQABAAEAAAAkAAsAHwABAAEAAAAkAAwADQABAAEAAAAkAA0ADQABAAEAAAAkAA4ADQABAAEAAAAkAA8ADQABAAEAAAAlAAYADQABAAEAAAAlAAcADQABAAEAAAAlAAgADQABAAEAAAAlAAkAHwABAAEAAAAlAAsAHwABAAEAAAAlAAwADQABAAEAAAAlAA0ADQABAAEAAAAlAA4ADQABAAEAAAAlAA8ADQABAAEAAAAmAAYADQABAAEAAAAmAAcADQABAAEAAAAmAAgADQABAAEAAAAmAAkAHwABAAEAAAAmAAsAHwABAAEAAAAmAAwADQABAAEAAAAmAA0ADQABAAEAAAAmAA4ADQABAAEAAAAmAA8ADQABAAEAAAAnAAYADQABAAEAAAAnAAcADQABAAEAAAAnAAgADQABAAEAAAAnAAkADQABAAEAAAAnAAoADQABAAEAAAAnAAwAHwABAAAAAAAnAA0ADQABAAEAAAAnAA4ADQABAAEAAAAnAA8ADQABAAEAAAAoAAYADQABAAEAAAAoAAcADQABAAEAAAAoAAgADQABAAEAAAAoAAkADQABAAEAAAAoAAoADQABAAEAAAAoAAwAHwABAAEAAAAoAA0AHwABAAEAAAAoAA4AHwABAAEAAAAoAA8ADQABAAEAAAApAAYADQABAAEAAAApAAcADQABAAEAAAApAAgADQABAAEAAAApAAkADQABAAEAAAApAAoADQABAAEAAAApAAwADQABAAEAAAApAA0ADQABAAEAAAApAA4ADQABAAEAAAApAA8ADQABAAEAAAAqAAYADQABAAEAAAAqAAcADQABAAEAAAAqAAgADQABAAEAAAAqAAkADQABAAEAAAAqAAoADQABAAEAAAAqAAsADQABAAEAAAAqAA0ADQABAAEAAAAqAA4ADQABAAEAAAAqAA8ADQABAAEAAAArAAYADQABAAEAAAArAAcADQABAAEAAAArAAgADQABAAEAAAArAAkADQABAAEAAAArAAoADQABAAEAAAArAAsADQABAAEAAAArAA0ADQABAAEAAAArAA4ADQABAAEAAAArAA8ADQABAAEAAAAsAAYADQABAAEAAAAsAAcADQABAAEAAAAsAAgADQABAAEAAAAsAAkADQABAAEAAAAsAAoADQABAAEAAAAsAAsADQABAAEAAAAsAA0AHwABAAEAAAAsAA4AHwABAAEAAAAsAA8AHwABAAEAAAAtAAYADQABAAEAAAAtAAcADQABAAEAAAAtAAgADQABAAEAAAAtAAkADQABAAEAAAAtAAoADQABAAEAAAAtAAsADQABAAEAAAAtAAwADQABAAEAAAAtAA4AIgAAAAAAAAAtAA8AIgAAAAAAAAAuAAYADQABAAEAAAAuAAcADQABAAEAAAAuAAgADQABAAEAAAAuAAkADQABAAEAAAAuAAoADQABAAEAAAAuAAsADQABAAEAAAAuAAwAIgAAAAAAAAAuAA4AIgAAAAAAAAAuAA8AIgAAAAAAAAAvAAYAIgAAAAAAAAAvAAcAIgAAAAAAAAAvAAgAIgAAAAAAAAAvAAkADQABAAEAAAAvAAoADQABAAEAAAAvAAsAIgAAAAAAAAAvAAwAIgAAAAAAAAAvAA4AIgAAAAAAAAAvAA8AIgAAAAAAAAAwAAYAIgAAAAAAAAAwAAcAIgAAAAAAAAAwAAgAIgAAAAAAAAAwAAkAIgAAAAAAAAAwAAoAIgAAAAAAAAAwAAsAIgAAAAAAAAAwAAwAIgAAAAAAAAAwAA4AIgAAAAAAAAAwAA8AIgAAAAAAAAAxAAYAIgAAAAAAAAAxAAcAIgAAAAAAAAAxAAgAIgAAAAAAAAAxAAkAIgAAAAAAAAAxAAoAIgAAAAAAAAAxAAsAIgAAAAAAAAAxAAwAIgAAAAAAAAAxAA8AIgAAAAAAAAAyAAYAIgAAAAAAAAAyAAcAIgAAAAAAAAAyAAgAIgAAAAAAAAAyAAkAIgAAAAAAAAAyAAoAIgAAAAAAAAAyAAsAIgAAAAAAAAAyAAwAIgAAAAAAAAAyAA0AIgAAAAAAAAAyAA8AIgAAAAAAAAAzAAYAIgAAAAAAAAAzAAcAIgAAAAAAAAAzAAgAIgAAAAAAAAAzAAkAIgAAAAAAAAAzAAoAIgAAAAAAAAAzAAsAIgAAAAAAAAAzAAwAIgAAAAAAAAAzAA0AIgAAAAAAAAAzAA8AIgAAAAAAAAA0AAYAIgAAAAAAAAA0AAcAIgAAAAAAAAA0AAgAIgAAAAAAAAA0AAkAIgAAAAAAAAA0AAoAIgAAAAAAAAA0AAsAIgAAAAAAAAA0AAwAIgAAAAAAAAA0AA0AIgAAAAAAAAA0AA8AIgAAAAAAAAA1AAYAIgAAAAAAAAA1AAcAIgAAAAAAAAA1AAgAIgAAAAAAAAA1AAkAIgAAAAAAAAA1AAoAIgAAAAAAAAA1AAsAIgAAAAAAAAA1AAwAIgAAAAAAAAA1AA0AIgAAAAAAAAA1AA4AIgAAAAAAAAA1AA8AIgAAAAAAAAA2AAYAIgAAAAAAAAA2AAcAIgAAAAAAAAA2AAgAIgAAAAAAAAA2AAkAIgAAAAAAAAA2AAoAIgAAAAAAAAA2AAsAIgAAAAAAAAA2AAwAIgAAAAAAAAA2AA0AIgAAAAAAAAA2AA4AIgAAAAAAAAA2AA8AIgAAAAAAAAA3AAYAIgAAAAAAAAA3AAcAIgAAAAAAAAA3AAgAIgAAAAAAAAA3AAkAIgAAAAAAAAA3AAoAIgAAAAAAAAA3AAsAIgAAAAAAAAA3AAwAIgAAAAAAAAA3AA0AIgAAAAAAAAA3AA4AIgAAAAAAAAA3AA8AIgAAAAAAAAADAAoADQABAAEAAAADAAsADQABAAEAAAADAAwADQABAAEAAAAEAAwADQABAAEAAAAFAAwADQABAAEAAAAGAAwADQABAAEAAAAHAAwADQABAAEAAAAHAAsADQABAAEAAAAHAAoADQABAAEAAAAIAAoADQABAAEAAAAJAAoADQABAAEAAAAKAAoADQABAAEAAAALAAoADQABAAEAAAAMAAoADQABAAEAAAANAAoADQABAAEAAAAOAAoADQABAAEAAAAPAAoADQABAAEAAABsABIAIgAAAAAAAABsABMAIgAAAAAAAABsABQAIgAAAAAAAABsABUAIgAAAAAAAABsABYAIgAAAAAAAABsABcAIgAAAAAAAABsABgAIgAAAAAAAABsABkAIgAAAAAAAABsABoAIgAAAAAAAABsABsAIgAAAAAAAABsABwAIgAAAAAAAABsAB0AIgAAAAAAAABsAB4AIgAAAAAAAABsAB8AIgAAAAAAAABsACAAIgAAAAAAAABsACEAIgAAAAAAAABsACIAIgAAAAAAAABsACMAIgAAAAAAAABsACQAIgAAAAAAAABsACUAIgAAAAAAAABsACYAIgAAAAAAAABsACcAIgAAAAAAAABsACgAIgAAAAAAAABsACkAIgAAAAAAAABsACoAIgAAAAAAAABsACsAIgAAAAAAAABsACwAIgAAAAAAAABsAC0AIgAAAAAAAABsAC4AIgAAAAAAAABsAC8AIgAAAAAAAABsADAAIgAAAAAAAABsADEAIgAAAAAAAABsADIAIgAAAAAAAABsADMAIgAAAAAAAABsADQAIgAAAAAAAABsADUAIgAAAAAAAABsADYAIgAAAAAAAABsADcAIgAAAAAAAABsADgAIgAAAAAAAABsADkAIgAAAAAAAABsADoAIgAAAAAAAABsADsAIgAAAAAAAABsADwAIgAAAAAAAABsAAEAIgAAAAAAAABsAAIAIgAAAAAAAABsAAMAIgAAAAAAAABsAAQAIgAAAAAAAABsAAUAIgAAAAAAAABsAAYAIgAAAAAAAABsAAcAIgAAAAAAAABsAAgAIgAAAAAAAABsAAkAIgAAAAAAAABsAAoAIgAAAAAAAABsAAsAIgAAAAAAAABsAAwAIgAAAAAAAABsAA0AIgAAAAAAAABsAA4AIgAAAAAAAABsAA8AIgAAAAAAAABsABAAIgAAAAAAAABsABEAIgAAAAAAAAA3AEIAIgAAAAAAAAA3AEMAIgAAAAAAAAA3AEQAIgAAAAAAAAA3AEUAIgAAAAAAAAA3AEYAIgAAAAAAAAA3AEcAIgAAAAAAAAA3AEgAIgAAAAAAAAA3AEkAFgAAAAAAAAA4AEIAIgAAAAAAAAA4AEMAIgAAAAAAAAA4AEQAIgAAAAAAAAA4AEUAIgAAAAAAAAA4AEYAIgAAAAAAAAA4AEcAIgAAAAAAAAA4AEgAIgAAAAAAAAA4AEkAFgAAAAAAAAA5AEIAIgAAAAAAAAA5AEMAIgAAAAAAAAA5AEQAIgAAAAAAAAA5AEUAIgAAAAAAAAA5AEYAIgAAAAAAAAA5AEcAIgAAAAAAAAA5AEgAIgAAAAAAAAA5AEkAFgAAAAAAAAA6AEIAIgAAAAAAAAA6AEMAIgAAAAAAAAA6AEQAIgAAAAAAAAA6AEUAIgAAAAAAAAA6AEYAIgAAAAAAAAA6AEcAIgAAAAAAAAA6AEgAIgAAAAAAAAA6AEkAFgAAAAAAAAA7AEIAIgAAAAAAAAA7AEMAIgAAAAAAAAA7AEQAIgAAAAAAAAA7AEUAIgAAAAAAAAA7AEYAIgAAAAAAAAA7AEcAIgAAAAAAAAA7AEgAIgAAAAAAAAA7AEkAFgAAAAAAAAA8AEIAIgAAAAAAAAA8AEMAIgAAAAAAAAA8AEQAIgAAAAAAAAA8AEUAIgAAAAAAAAA8AEYAIgAAAAAAAAA8AEcAIgAAAAAAAAA8AEgAIgAAAAAAAAA8AEkAFgAAAAAAAAA9AEIAIgAAAAAAAAA9AEMAIgAAAAAAAAA9AEQAIgAAAAAAAAA9AEUAIgAAAAAAAAA9AEYAIgAAAAAAAAA9AEcAIgAAAAAAAAA9AEgAIgAAAAAAAAA9AEkAFgAAAAAAAAA+AEIAIgAAAAAAAAA+AEMAIgAAAAAAAAA+AEQAIgAAAAAAAAA+AEUAIgAAAAAAAAA+AEYAIgAAAAAAAAA+AEcAIgAAAAAAAAA+AEgAIgAAAAAAAAA+AEkAFgAAAAAAAAA/AEIAIgAAAAAAAAA/AEMAIgAAAAAAAAA/AEQAIgAAAAAAAAA/AEUAIgAAAAAAAAA/AEYAIgAAAAAAAAA/AEcAIgAAAAAAAAA/AEgAIgAAAAAAAAA/AEkAFgAAAAAAAABAAEIAIgAAAAAAAABAAEMAIgAAAAAAAABAAEQAIgAAAAAAAABAAEUAIgAAAAAAAABAAEYAIgAAAAAAAABAAEcAIgAAAAAAAABAAEgAIgAAAAAAAABAAEkAFgAAAAAAAABBAEIAIgAAAAAAAABBAEMAIgAAAAAAAABBAEQAIgAAAAAAAABBAEUAIgAAAAAAAABBAEYAIgAAAAAAAABBAEcAIgAAAAAAAABBAEgAIgAAAAAAAABBAEkAFgAAAAAAAABCAEIAIgAAAAAAAABCAEMAIgAAAAAAAABCAEQAIgAAAAAAAABCAEUAIgAAAAAAAABCAEYAIgAAAAAAAABCAEcAIgAAAAAAAABCAEgAIgAAAAAAAABCAEkAFgAAAAAAAABDAEIAIgAAAAAAAABDAEMAIgAAAAAAAABDAEQAIgAAAAAAAABDAEUAIgAAAAAAAABDAEYAIgAAAAAAAABDAEcAIgAAAAAAAABDAEgAIgAAAAAAAABDAEkAFgAAAAAAAABEAEIAIgAAAAAAAABEAEMAIgAAAAAAAABEAEQAIgAAAAAAAABEAEUAIgAAAAAAAABEAEYAIgAAAAAAAABEAEcAIgAAAAAAAABEAEgAIgAAAAAAAABEAEkAFgAAAAAAAABFAEIAIgAAAAAAAABFAEMAIgAAAAAAAABFAEQAIgAAAAAAAABFAEUAIgAAAAAAAABFAEYAIgAAAAAAAABFAEcAIgAAAAAAAABFAEgAIgAAAAAAAABFAEkAFgAAAAAAAABGAEIAIgAAAAAAAABGAEMAIgAAAAAAAABGAEQAIgAAAAAAAABGAEUAIgAAAAAAAABGAEYAIgAAAAAAAABGAEcAIgAAAAAAAABGAEgAIgAAAAAAAABGAEkAFgAAAAAAAABHAEIAIgAAAAAAAABHAEMAIgAAAAAAAABHAEQAIgAAAAAAAABHAEUAIgAAAAAAAABHAEYAIgAAAAAAAABHAEcAIgAAAAAAAABHAEgAIgAAAAAAAABHAEkAFgAAAAAAAABIAEIAIgAAAAAAAABIAEMAIgAAAAAAAABIAEQAIgAAAAAAAABIAEUAIgAAAAAAAABIAEYAIgAAAAAAAABIAEcAIgAAAAAAAABIAEgAIgAAAAAAAABIAEkAFgAAAAAAAABJAEIAIgAAAAAAAABJAEMAIgAAAAAAAABJAEQAIgAAAAAAAABJAEUAIgAAAAAAAABJAEYAIgAAAAAAAABJAEcAIgAAAAAAAABJAEgAIgAAAAAAAABJAEkAFgAAAAAAAABKAEIAIgAAAAAAAABKAEMAIgAAAAAAAABKAEQAIgAAAAAAAABKAEUAIgAAAAAAAABKAEYAIgAAAAAAAABKAEcAIgAAAAAAAABKAEgAIgAAAAAAAABKAEkAFgAAAAAAAABLAEIAIgAAAAAAAABLAEMAIgAAAAAAAABLAEQAIgAAAAAAAABLAEUAIgAAAAAAAABLAEYAIgAAAAAAAABLAEcAIgAAAAAAAABLAEgAIgAAAAAAAABLAEkAFgAAAAAAAABMAEIAIgAAAAAAAABMAEMAIgAAAAAAAABMAEQAIgAAAAAAAABMAEUAIgAAAAAAAABMAEYAIgAAAAAAAABMAEcAIgAAAAAAAABMAEgAIgAAAAAAAABMAEkAFgAAAAAAAABNAEIAIgAAAAAAAABNAEMAIgAAAAAAAABNAEQAIgAAAAAAAABNAEUAIgAAAAAAAABNAEYAIgAAAAAAAABNAEcAIgAAAAAAAABNAEgAIgAAAAAAAABNAEkAFgAAAAAAAABOAEIAIgAAAAAAAABOAEMAIgAAAAAAAABOAEQAIgAAAAAAAABOAEUAIgAAAAAAAABOAEYAIgAAAAAAAABOAEcAIgAAAAAAAABOAEgAIgAAAAAAAABOAEkAFgAAAAAAAABPAEIAIgAAAAAAAABPAEMAIgAAAAAAAABPAEQAIgAAAAAAAABPAEUAIgAAAAAAAABPAEYAIgAAAAAAAABPAEcAIgAAAAAAAABPAEgAIgAAAAAAAABPAEkAFgAAAAAAAABQAEIAIgAAAAAAAABQAEMAIgAAAAAAAABQAEQAIgAAAAAAAABQAEUAIgAAAAAAAABQAEYAIgAAAAAAAABQAEcAIgAAAAAAAABQAEgAIgAAAAAAAABQAEkAFgAAAAAAAABRAEIAIgAAAAAAAABRAEMAIgAAAAAAAABRAEQAIgAAAAAAAABRAEUAIgAAAAAAAABRAEYAIgAAAAAAAABRAEcAIgAAAAAAAABRAEgAIgAAAAAAAABRAEkAFgAAAAAAAABSAEIAIgAAAAAAAABSAEMAIgAAAAAAAABSAEQAIgAAAAAAAABSAEUAIgAAAAAAAABSAEYAIgAAAAAAAABSAEcAIgAAAAAAAABSAEgAIgAAAAAAAABSAEkAFgAAAAAAAABTAEIAIgAAAAAAAABTAEMAIgAAAAAAAABTAEQAIgAAAAAAAABTAEUAIgAAAAAAAABTAEYAIgAAAAAAAABTAEcAIgAAAAAAAABTAEgAIgAAAAAAAABTAEkAFgAAAAAAAABUAEIAIgAAAAAAAABUAEMAIgAAAAAAAABUAEQAIgAAAAAAAABUAEUAIgAAAAAAAABUAEYAIgAAAAAAAABUAEcAIgAAAAAAAABUAEgAIgAAAAAAAABUAEkAFgAAAAAAAABVAEIAIgAAAAAAAABVAEMAIgAAAAAAAABVAEQAIgAAAAAAAABVAEUAIgAAAAAAAABVAEYAIgAAAAAAAABVAEcAIgAAAAAAAABVAEgAIgAAAAAAAABVAEkAFgAAAAAAAABWAEIAIgAAAAAAAABWAEMAIgAAAAAAAABWAEQAIgAAAAAAAABWAEUAIgAAAAAAAABWAEYAIgAAAAAAAABWAEcAIgAAAAAAAABWAEgAIgAAAAAAAABWAEkAFgAAAAAAAABXAEIAIgAAAAAAAABXAEMAIgAAAAAAAABXAEQAIgAAAAAAAABXAEUAIgAAAAAAAABXAEYAIgAAAAAAAABXAEcAIgAAAAAAAABXAEgAIgAAAAAAAABXAEkAFgAAAAAAAABYAEIAIgAAAAAAAABYAEMAIgAAAAAAAABYAEQAIgAAAAAAAABYAEUAIgAAAAAAAABYAEYAIgAAAAAAAABYAEcAIgAAAAAAAABYAEgAIgAAAAAAAABYAEkAFgAAAAAAAABZAEIAIgAAAAAAAABZAEMAIgAAAAAAAABZAEQAIgAAAAAAAABZAEUAIgAAAAAAAABZAEYAIgAAAAAAAABZAEcAIgAAAAAAAABZAEgAIgAAAAAAAABZAEkAFgAAAAAAAABaAEIAIgAAAAAAAABaAEMAIgAAAAAAAABaAEQAIgAAAAAAAABaAEUAIgAAAAAAAABaAEYAIgAAAAAAAABaAEcAIgAAAAAAAABaAEgAIgAAAAAAAABaAEkAFgAAAAAAAABbAEIAIgAAAAAAAABbAEMAIgAAAAAAAABbAEQAIgAAAAAAAABbAEUAIgAAAAAAAABbAEYAIgAAAAAAAABbAEcAIgAAAAAAAABbAEgAIgAAAAAAAABbAEkAFgAAAAAAAABcAEIAIgAAAAAAAABcAEMAIgAAAAAAAABcAEQAIgAAAAAAAABcAEUAIgAAAAAAAABcAEYAIgAAAAAAAABcAEcAIgAAAAAAAABcAEgAIgAAAAAAAABcAEkAFgAAAAAAAABdAEIAIgAAAAAAAABdAEMAIgAAAAAAAABdAEQAIgAAAAAAAABdAEUAIgAAAAAAAABdAEYAIgAAAAAAAABdAEcAIgAAAAAAAABdAEgAIgAAAAAAAABdAEkAFgAAAAAAAABeAEIAIgAAAAAAAABeAEMAIgAAAAAAAABeAEQAIgAAAAAAAABeAEUAIgAAAAAAAABeAEYAIgAAAAAAAABeAEcAIgAAAAAAAABeAEgAIgAAAAAAAABeAEkAFgAAAAAAAABfAEIAIgAAAAAAAABfAEMAIgAAAAAAAABfAEQAIgAAAAAAAABfAEUAIgAAAAAAAABfAEYAIgAAAAAAAABfAEcAIgAAAAAAAABfAEgAIgAAAAAAAABfAEkAFgAAAAAAAABgAEIAIgAAAAAAAABgAEMAIgAAAAAAAABgAEQAIgAAAAAAAABgAEUAIgAAAAAAAABgAEYAIgAAAAAAAABgAEcAIgAAAAAAAABgAEgAIgAAAAAAAABgAEkAFgAAAAAAAABhAEIAIgAAAAAAAABhAEMAIgAAAAAAAABhAEQAIgAAAAAAAABhAEUAIgAAAAAAAABhAEYAIgAAAAAAAABhAEcAIgAAAAAAAABhAEgAIgAAAAAAAABhAEkAFgAAAAAAAABiAEIAIgAAAAAAAABiAEMAIgAAAAAAAABiAEQAIgAAAAAAAABiAEUAIgAAAAAAAABiAEYAIgAAAAAAAABiAEcAIgAAAAAAAABiAEgAIgAAAAAAAABiAEkAFgAAAAAAAABjAEIAIgAAAAAAAABjAEMAIgAAAAAAAABjAEQAIgAAAAAAAABjAEUAIgAAAAAAAABjAEYAIgAAAAAAAABjAEcAIgAAAAAAAABjAEgAIgAAAAAAAABjAEkAFgAAAAAAAABkAEIAIgAAAAAAAABkAEMAIgAAAAAAAABkAEQAIgAAAAAAAABkAEUAIgAAAAAAAABkAEYAIgAAAAAAAABkAEcAIgAAAAAAAABkAEgAIgAAAAAAAABkAEkAFgAAAAAAAABlAEIAIgAAAAAAAABlAEMAIgAAAAAAAABlAEQAIgAAAAAAAABlAEUAIgAAAAAAAABlAEYAIgAAAAAAAABlAEcAIgAAAAAAAABlAEgAIgAAAAAAAABlAEkAFgAAAAAAAABmAEIAIgAAAAAAAABmAEMAIgAAAAAAAABmAEQAIgAAAAAAAABmAEUAIgAAAAAAAABmAEYAIgAAAAAAAABmAEcAIgAAAAAAAABmAEgAIgAAAAAAAABmAEkAFgAAAAAAAABnAEIAIgAAAAAAAABnAEMAIgAAAAAAAABnAEQAIgAAAAAAAABnAEUAIgAAAAAAAABnAEYAIgAAAAAAAABnAEcAIgAAAAAAAABnAEgAIgAAAAAAAABnAEkAFgAAAAAAAABoAEIAIgAAAAAAAABoAEMAIgAAAAAAAABoAEQAIgAAAAAAAABoAEUAIgAAAAAAAABoAEYAIgAAAAAAAABoAEcAIgAAAAAAAABoAEgAIgAAAAAAAABoAEkAFgAAAAAAAABpAEIAIgAAAAAAAABpAEMAIgAAAAAAAABpAEQAIgAAAAAAAABpAEUAIgAAAAAAAABpAEYAIgAAAAAAAABpAEcAIgAAAAAAAABpAEgAIgAAAAAAAABpAEkAFgAAAAAAAABqAEIAIgAAAAAAAABqAEMAIgAAAAAAAABqAEQAIgAAAAAAAABqAEUAIgAAAAAAAABqAEYAIgAAAAAAAABqAEcAIgAAAAAAAABqAEgAIgAAAAAAAABqAEkAFgAAAAAAAABrAEIAIgAAAAAAAABrAEMAIgAAAAAAAABrAEQAIgAAAAAAAABrAEUAIgAAAAAAAABrAEYAIgAAAAAAAABrAEcAIgAAAAAAAABrAEgAIgAAAAAAAABrAEkAFgAAAAAAAABsAD0AIgAAAAAAAABsAD4AIgAAAAAAAABsAD8AIgAAAAAAAABsAEAAIgAAAAAAAABsAEEAIgAAAAAAAABsAEIAIgAAAAAAAABsAEMAIgAAAAAAAABsAEQAIgAAAAAAAABsAEUAIgAAAAAAAABsAEYAIgAAAAAAAABsAEcAIgAAAAAAAABsAEgAIgAAAAAAAABsAEkAFgAAAAAAAABtACgAIgAAAAAAAABtACkAIgAAAAAAAABtACoAIgAAAAAAAABtACsAIgAAAAAAAABtACwAIgAAAAAAAABtAC0AIgAAAAAAAABtAC4AIgAAAAAAAABtAC8AIgAAAAAAAABtADAAIgAAAAAAAABtADEAIgAAAAAAAABtADIAIgAAAAAAAABtADMAIgAAAAAAAABtADQAIgAAAAAAAABtADUAIgAAAAAAAABtADYAIgAAAAAAAABtADcAIgAAAAAAAABtADgAIgAAAAAAAABtADkAIgAAAAAAAABtADoAIgAAAAAAAABtADsAIgAAAAAAAABtADwAIgAAAAAAAABtAD0AIgAAAAAAAABtAD4AIgAAAAAAAABtAD8AIgAAAAAAAABtAEAAIgAAAAAAAABtAEEAIgAAAAAAAABtAEIAIgAAAAAAAABtAEMAIgAAAAAAAABtAEQAIgAAAAAAAABtAEUAIgAAAAAAAABtAEYAIgAAAAAAAABtAEcAIgAAAAAAAABtAEgAIgAAAAAAAABtAEkAFgAAAAAAAABuACgAIgAAAAAAAABuACkAIgAAAAAAAABuACoAIgAAAAAAAABuACsAIgAAAAAAAABuACwAIgAAAAAAAABuAC0AIgAAAAAAAABuAC4AIgAAAAAAAABuAC8AIgAAAAAAAABuADAAIgAAAAAAAABuADEAIgAAAAAAAABuADIAIgAAAAAAAABuADMAIgAAAAAAAABuADQAIgAAAAAAAABuADUAIgAAAAAAAABuADYAIgAAAAAAAABuADcAIgAAAAAAAABuADgAIgAAAAAAAABuADkAIgAAAAAAAABuADoAIgAAAAAAAABuADsAIgAAAAAAAABuADwAIgAAAAAAAABuAD0AIgAAAAAAAABuAD4AIgAAAAAAAABuAD8AIgAAAAAAAABuAEAAIgAAAAAAAABuAEEAIgAAAAAAAABuAEIAIgAAAAAAAABuAEMAIgAAAAAAAABuAEQAIgAAAAAAAABuAEUAIgAAAAAAAABuAEYAIgAAAAAAAABuAEcAIgAAAAAAAABuAEgAIgAAAAAAAABuAEkAFgAAAAAAAABvACgAIgAAAAAAAABvACkAIgAAAAAAAABvACoAIgAAAAAAAABvACsAIgAAAAAAAABvACwAIgAAAAAAAABvAC0AIgAAAAAAAABvAC4AIgAAAAAAAABvAC8AIgAAAAAAAABvADAAIgAAAAAAAABvADEAIgAAAAAAAABvADIAIgAAAAAAAABvADMAIgAAAAAAAABvADQAIgAAAAAAAABvADUAIgAAAAAAAABvADYAIgAAAAAAAABvADcAIgAAAAAAAABvADgAIgAAAAAAAABvADkAIgAAAAAAAABvADoAIgAAAAAAAABvADsAIgAAAAAAAABvADwAIgAAAAAAAABvAD0AIgAAAAAAAABvAD4AIgAAAAAAAABvAD8AIgAAAAAAAABvAEAAIgAAAAAAAABvAEEAIgAAAAAAAABvAEIAIgAAAAAAAABvAEMAIgAAAAAAAABvAEQAIgAAAAAAAABvAEUAIgAAAAAAAABvAEYAIgAAAAAAAABvAEcAIgAAAAAAAABvAEgAIgAAAAAAAABvAEkAFgAAAAAAAABwACgAFgAAAAAAAABwACkAFgAAAAAAAABwACoAFgAAAAAAAABwACsAFgAAAAAAAABwACwAFgAAAAAAAABwAC0AFgAAAAAAAABwAC4AFgAAAAAAAABwAC8AFgAAAAAAAABwADAAFgAAAAAAAABwADEAFgAAAAAAAABwADIAFgAAAAAAAABwADMAFgAAAAAAAABwADQAFgAAAAAAAABwADUAFgAAAAAAAABwADYAFgAAAAAAAABwADcAFgAAAAAAAABwADgAFgAAAAAAAABwADkAFgAAAAAAAABwADoAFgAAAAAAAABwADsAFgAAAAAAAABwADwAFgAAAAAAAABwAD0AFgAAAAAAAABwAD4AFgAAAAAAAABwAD8AFgAAAAAAAABwAEAAFgAAAAAAAABwAEEAFgAAAAAAAABwAEIAFgAAAAAAAABwAEMAFgAAAAAAAABwAEQAFgAAAAAAAABwAEUAFgAAAAAAAABwAEYAFgAAAAAAAABwAEcAFgAAAAAAAABwAEgAFgAAAAAAAABwAEkAFgAAAAAAAABxACgAFgAAAAAAAABxACkAFgAAAAAAAABxACoAFgAAAAAAAABxACsAFgAAAAAAAABxACwAFgAAAAAAAABxAC0AFgAAAAAAAABxAC4AFgAAAAAAAABxAC8AFgAAAAAAAABxADAAFgAAAAAAAABxADEAFgAAAAAAAABxADIAFgAAAAAAAABxADMAFgAAAAAAAABxADQAFgAAAAAAAABxADUAFgAAAAAAAABxADYAFgAAAAAAAABxADcAFgAAAAAAAABxADgAFgAAAAAAAABxADkAFgAAAAAAAABxADoAFgAAAAAAAABxADsAFgAAAAAAAABxADwAFgAAAAAAAABxAD0AFgAAAAAAAABxAD4AFgAAAAAAAABxAD8AFgAAAAAAAABxAEAAFgAAAAAAAABxAEEAFgAAAAAAAABxAEIAFgAAAAAAAABxAEMAFgAAAAAAAABxAEQAFgAAAAAAAABxAEUAFgAAAAAAAABxAEYAFgAAAAAAAABxAEcAFgAAAAAAAABxAEgAFgAAAAAAAABxAEkAFgAAAAAAAAByACgAFgAAAAAAAAByACkAFgAAAAAAAAByACoAFgAAAAAAAAByACsAFgAAAAAAAAByACwAFgAAAAAAAAByAC0AFgAAAAAAAAByAC4AFgAAAAAAAAByAC8AFgAAAAAAAAByADAAFgAAAAAAAAByADEAFgAAAAAAAAByADIAFgAAAAAAAAByADMAFgAAAAAAAAByADQAFgAAAAAAAAByADUAFgAAAAAAAAByADYAFgAAAAAAAAByADcAFgAAAAAAAAByADgAFgAAAAAAAAByADkAFgAAAAAAAAByADoAFgAAAAAAAAByADsAFgAAAAAAAAByADwAFgAAAAAAAAByAD0AFgAAAAAAAAByAD4AFgAAAAAAAAByAD8AFgAAAAAAAAByAEAAFgAAAAAAAAByAEEAFgAAAAAAAAByAEIAFgAAAAAAAAByAEMAFgAAAAAAAAByAEQAFgAAAAAAAAByAEUAFgAAAAAAAAByAEYAFgAAAAAAAAByAEcAFgAAAAAAAAByAEgAFgAAAAAAAAByAEkAFgAAAAAAAABzACgAFgAAAAAAAABzACkAFgAAAAAAAABzACoAFgAAAAAAAABzACsAFgAAAAAAAABzACwAFgAAAAAAAABzAC0AFgAAAAAAAABzAC4AFgAAAAAAAABzAC8AFgAAAAAAAABzADAAFgAAAAAAAABzADEAFgAAAAAAAABzADIAFgAAAAAAAABzADMAFgAAAAAAAABzADQAFgAAAAAAAABzADUAFgAAAAAAAABzADYAFgAAAAAAAABzADcAFgAAAAAAAABzADgAFgAAAAAAAABzADkAFgAAAAAAAABzADoAFgAAAAAAAABzADsAFgAAAAAAAABzADwAFgAAAAAAAABzAD0AFgAAAAAAAABzAD4AFgAAAAAAAABzAD8AFgAAAAAAAABzAEAAFgAAAAAAAABzAEEAFgAAAAAAAABzAEIAFgAAAAAAAABzAEMAFgAAAAAAAABzAEQAFgAAAAAAAABzAEUAFgAAAAAAAABzAEYAFgAAAAAAAABzAEcAFgAAAAAAAABzAEgAFgAAAAAAAABzAEkAFgAAAAAAAAB0ACgAFgAAAAAAAAB0ACkAFgAAAAAAAAB0ACoAFgAAAAAAAAB0ACsAFgAAAAAAAAB0ACwAFgAAAAAAAAB0AC0AFgAAAAAAAAB0AC4AFgAAAAAAAAB0AC8AFgAAAAAAAAB0ADAAFgAAAAAAAAB0ADEAFgAAAAAAAAB0ADIAFgAAAAAAAAB0ADMAFgAAAAAAAAB0ADQAFgAAAAAAAAB0ADUAFgAAAAAAAAB0ADYAFgAAAAAAAAB0ADcAFgAAAAAAAAB0ADgAFgAAAAAAAAB0ADkAFgAAAAAAAAB0ADoAFgAAAAAAAAB0ADsAFgAAAAAAAAB0ADwAFgAAAAAAAAB0AD0AFgAAAAAAAAB0AD4AFgAAAAAAAAB0AD8AFgAAAAAAAAB0AEAAFgAAAAAAAAB0AEEAFgAAAAAAAAB0AEIAFgAAAAAAAAB0AEMAFgAAAAAAAAB0AEQAFgAAAAAAAAB0AEUAFgAAAAAAAAB0AEYAFgAAAAAAAAB0AEcAFgAAAAAAAAB0AEgAFgAAAAAAAAB0AEkAFgAAAAAAAAB1ACgAIgAAAAAAAAB1ACkAIgAAAAAAAAB1ACoAIgAAAAAAAAB1ACsAIgAAAAAAAAB1ACwAIgAAAAAAAAB1AC0AIgAAAAAAAAB1AC4AIgAAAAAAAAB1AC8AIgAAAAAAAAB1ADAAIgAAAAAAAAB1ADEAIgAAAAAAAAB1ADIAIgAAAAAAAAB1ADMAIgAAAAAAAAB1ADQAIgAAAAAAAAB1ADUAIgAAAAAAAAB1ADYAIgAAAAAAAAB1ADcAIgAAAAAAAAB1ADgAIgAAAAAAAAB1ADkAIgAAAAAAAAB1ADoAIgAAAAAAAAB1ADsAIgAAAAAAAAB1ADwAIgAAAAAAAAB1AD0AIgAAAAAAAAB1AD4AIgAAAAAAAAB1AD8AIgAAAAAAAAB1AEAAIgAAAAAAAAB1AEEAIgAAAAAAAAB1AEIAIgAAAAAAAAB1AEMAIgAAAAAAAAB1AEQAIgAAAAAAAAB1AEUAIgAAAAAAAAB1AEYAIgAAAAAAAAB1AEcAIgAAAAAAAAB1AEgAIgAAAAAAAAB1AEkAIgAAAAAAAAB2ACgAIgAAAAAAAAB2ACkAIgAAAAAAAAB2ACoAIgAAAAAAAAB2ACsAIgAAAAAAAAB2ACwAIgAAAAAAAAB2AC0AIgAAAAAAAAB2AC4AIgAAAAAAAAB2AC8AIgAAAAAAAAB2ADAAIgAAAAAAAAB2ADEAIgAAAAAAAAB2ADIAIgAAAAAAAAB2ADMAIgAAAAAAAAB2ADQAIgAAAAAAAAB2ADUAIgAAAAAAAAB2ADYAIgAAAAAAAAB2ADcAIgAAAAAAAAB2ADgAIgAAAAAAAAB2ADkAIgAAAAAAAAB2ADoAIgAAAAAAAAB2ADsAIgAAAAAAAAB2ADwAIgAAAAAAAAB2AD0AIgAAAAAAAAB2AD4AIgAAAAAAAAB2AD8AIgAAAAAAAAB2AEAAIgAAAAAAAAB2AEEAIgAAAAAAAAB2AEIAIgAAAAAAAAB2AEMAIgAAAAAAAAB2AEQAIgAAAAAAAAB2AEUAIgAAAAAAAAB2AEYAIgAAAAAAAAB2AEcAIgAAAAAAAAB2AEgAIgAAAAAAAAB2AEkAIgAAAAAAAAB3ACgAIgAAAAAAAAB3ACkAIgAAAAAAAAB3ACoAIgAAAAAAAAB3ACsAIgAAAAAAAAB3ACwAIgAAAAAAAAB3AC0AIgAAAAAAAAB3AC4AIgAAAAAAAAB3AC8AIgAAAAAAAAB3ADAAIgAAAAAAAAB3ADEAIgAAAAAAAAB3ADIAIgAAAAAAAAB3ADMAIgAAAAAAAAB3ADQAIgAAAAAAAAB3ADUAIgAAAAAAAAB3ADYAIgAAAAAAAAB3ADcAIgAAAAAAAAB3ADgAIgAAAAAAAAB3ADkAIgAAAAAAAAB3ADoAIgAAAAAAAAB3ADsAIgAAAAAAAAB3ADwAIgAAAAAAAAB3AD0AIgAAAAAAAAB3AD4AIgAAAAAAAAB3AD8AIgAAAAAAAAB3AEAAIgAAAAAAAAB3AEEAIgAAAAAAAAB3AEIAIgAAAAAAAAB3AEMAIgAAAAAAAAB3AEQAIgAAAAAAAAB3AEUAIgAAAAAAAAB3AEYAIgAAAAAAAAB3AEcAIgAAAAAAAAB3AEgAIgAAAAAAAAB3AEkAIgAAAAAAAAB4ACgAIgAAAAAAAAB4ACkAIgAAAAAAAAB4ACoAIgAAAAAAAAB4ACsAIgAAAAAAAAB4ACwAIgAAAAAAAAB4AC0AIgAAAAAAAAB4AC4AIgAAAAAAAAB4AC8AIgAAAAAAAAB4ADAAIgAAAAAAAAB4ADEAIgAAAAAAAAB4ADIAIgAAAAAAAAB4ADMAIgAAAAAAAAB4ADQAIgAAAAAAAAB4ADUAIgAAAAAAAAB4ADYAIgAAAAAAAAB4ADcAIgAAAAAAAAB4ADgAIgAAAAAAAAB4ADkAIgAAAAAAAAB4ADoAIgAAAAAAAAB4ADsAIgAAAAAAAAB4ADwAIgAAAAAAAAB4AD0AIgAAAAAAAAB4AD4AIgAAAAAAAAB4AD8AIgAAAAAAAAB4AEAAIgAAAAAAAAB4AEEAIgAAAAAAAAB4AEIAIgAAAAAAAAB4AEMAIgAAAAAAAAB4AEQAIgAAAAAAAAB4AEUAIgAAAAAAAAB4AEYAIgAAAAAAAAB4AEcAIgAAAAAAAAB4AEgAIgAAAAAAAAB4AEkAIgAAAAAAAAB5ACgAIgAAAAAAAAB5ACkAIgAAAAAAAAB5ACoAIgAAAAAAAAB5ACsAIgAAAAAAAAB5ACwAIgAAAAAAAAB5AC0AIgAAAAAAAAB5AC4AIgAAAAAAAAB5AC8AIgAAAAAAAAB5ADAAIgAAAAAAAAB5ADEAIgAAAAAAAAB5ADIAIgAAAAAAAAB5ADMAIgAAAAAAAAB5ADQAIgAAAAAAAAB5ADUAIgAAAAAAAAB5ADYAIgAAAAAAAAB5ADcAIgAAAAAAAAB5ADgAIgAAAAAAAAB5ADkAIgAAAAAAAAB5ADoAIgAAAAAAAAB5ADsAIgAAAAAAAAB5ADwAIgAAAAAAAAB5AD0AIgAAAAAAAAB5AD4AIgAAAAAAAAB5AD8AIgAAAAAAAAB5AEAAIgAAAAAAAAB5AEEAIgAAAAAAAAB5AEIAIgAAAAAAAAB5AEMAIgAAAAAAAAB5AEQAIgAAAAAAAAB5AEUAIgAAAAAAAAB5AEYAIgAAAAAAAAB5AEcAIgAAAAAAAAB5AEgAIgAAAAAAAAB5AEkAIgAAAAAAAAB6ACgAIgAAAAAAAAB6ACkAIgAAAAAAAAB6ACoAIgAAAAAAAAB6ACsAIgAAAAAAAAB6ACwAIgAAAAAAAAB6AC0AIgAAAAAAAAB6AC4AIgAAAAAAAAB6AC8AIgAAAAAAAAB6ADAAIgAAAAAAAAB6ADEAIgAAAAAAAAB6ADIAIgAAAAAAAAB6ADMAIgAAAAAAAAB6ADQAIgAAAAAAAAB6ADUAIgAAAAAAAAB6ADYAIgAAAAAAAAB6ADcAIgAAAAAAAAB6ADgAIgAAAAAAAAB6ADkAIgAAAAAAAAB6ADoAIgAAAAAAAAB6ADsAIgAAAAAAAAB6ADwAIgAAAAAAAAB6AD0AIgAAAAAAAAB6AD4AIgAAAAAAAAB6AD8AIgAAAAAAAAB6AEAAIgAAAAAAAAB6AEEAIgAAAAAAAAB6AEIAIgAAAAAAAAB6AEMAIgAAAAAAAAB6AEQAIgAAAAAAAAB6AEUAIgAAAAAAAAB6AEYAIgAAAAAAAAB6AEcAIgAAAAAAAAB6AEgAIgAAAAAAAAB6AEkAIgAAAAAAAAB7ACgAIgAAAAAAAAB7ACkAIgAAAAAAAAB7ACoAIgAAAAAAAAB7ACsAIgAAAAAAAAB7ACwAIgAAAAAAAAB7AC0AIgAAAAAAAAB7AC4AIgAAAAAAAAB7AC8AIgAAAAAAAAB7ADAAIgAAAAAAAAB7ADEAIgAAAAAAAAB7ADIAIgAAAAAAAAB7ADMAIgAAAAAAAAB7ADQAIgAAAAAAAAB7ADUAIgAAAAAAAAB7ADYAIgAAAAAAAAB7ADcAIgAAAAAAAAB7ADgAIgAAAAAAAAB7ADkAIgAAAAAAAAB7ADoAIgAAAAAAAAB7ADsAIgAAAAAAAAB7ADwAIgAAAAAAAAB7AD0AIgAAAAAAAAB7AD4AIgAAAAAAAAB7AD8AIgAAAAAAAAB7AEAAIgAAAAAAAAB7AEEAIgAAAAAAAAB7AEIAIgAAAAAAAAB7AEMAIgAAAAAAAAB7AEQAIgAAAAAAAAB7AEUAIgAAAAAAAAB7AEYAIgAAAAAAAAB7AEcAIgAAAAAAAAB7AEgAIgAAAAAAAAB7AEkAIgAAAAAAAAB8ACgAIgAAAAAAAAB8ACkAIgAAAAAAAAB8ACoAIgAAAAAAAAB8ACsAIgAAAAAAAAB8ACwAIgAAAAAAAAB8AC0AIgAAAAAAAAB8AC4AIgAAAAAAAAB8AC8AIgAAAAAAAAB8ADAAIgAAAAAAAAB8ADEAIgAAAAAAAAB8ADIAIgAAAAAAAAB8ADMAIgAAAAAAAAB8ADQAIgAAAAAAAAB8ADUAIgAAAAAAAAB8ADYAIgAAAAAAAAB8ADcAIgAAAAAAAAB8ADgAIgAAAAAAAAB8ADkAIgAAAAAAAAB8ADoAIgAAAAAAAAB8ADsAIgAAAAAAAAB8ADwAIgAAAAAAAAB8AD0AIgAAAAAAAAB8AD4AIgAAAAAAAAB8AD8AIgAAAAAAAAB8AEAAIgAAAAAAAAB8AEEAIgAAAAAAAAB8AEIAIgAAAAAAAAB8AEMAIgAAAAAAAAB8AEQAIgAAAAAAAAB8AEUAIgAAAAAAAAB8AEYAIgAAAAAAAAB8AEcAIgAAAAAAAAB8AEgAIgAAAAAAAAB8AEkAIgAAAAAAAAB9ACgAIgAAAAAAAAB9ACkAIgAAAAAAAAB9ACoAIgAAAAAAAAB9ACsAIgAAAAAAAAB9ACwAIgAAAAAAAAB9AC0AIgAAAAAAAAB9AC4AIgAAAAAAAAB9AC8AIgAAAAAAAAB9ADAAIgAAAAAAAAB9ADEAIgAAAAAAAAB9ADIAIgAAAAAAAAB9ADMAIgAAAAAAAAB9ADQAIgAAAAAAAAB9ADUAIgAAAAAAAAB9ADYAIgAAAAAAAAB9ADcAIgAAAAAAAAB9ADgAIgAAAAAAAAB9ADkAIgAAAAAAAAB9ADoAIgAAAAAAAAB9ADsAIgAAAAAAAAB9ADwAIgAAAAAAAAB9AD0AIgAAAAAAAAB9AD4AIgAAAAAAAAB9AD8AIgAAAAAAAAB9AEAAIgAAAAAAAAB9AEEAIgAAAAAAAAB9AEIAIgAAAAAAAAB9AEMAIgAAAAAAAAB9AEQAIgAAAAAAAAB9AEUAIgAAAAAAAAB9AEYAIgAAAAAAAAB9AEcAIgAAAAAAAAB9AEgAIgAAAAAAAAB9AEkAIgAAAAAAAAB+ACgAIgAAAAAAAAB+ACkAIgAAAAAAAAB+ACoAIgAAAAAAAAB+ACsAIgAAAAAAAAB+ACwAIgAAAAAAAAB+AC0AIgAAAAAAAAB+AC4AIgAAAAAAAAB+AC8AIgAAAAAAAAB+ADAAIgAAAAAAAAB+ADEAIgAAAAAAAAB+ADIAIgAAAAAAAAB+ADMAIgAAAAAAAAB+ADQAIgAAAAAAAAB+ADUAIgAAAAAAAAB+ADYAIgAAAAAAAAB+ADcAIgAAAAAAAAB+ADgAIgAAAAAAAAB+ADkAIgAAAAAAAAB+ADoAIgAAAAAAAAB+ADsAIgAAAAAAAAB+ADwAIgAAAAAAAAB+AD0AIgAAAAAAAAB+AD4AIgAAAAAAAAB+AD8AIgAAAAAAAAB+AEAAIgAAAAAAAAB+AEEAIgAAAAAAAAB+AEIAIgAAAAAAAAB+AEMAIgAAAAAAAAB+AEQAIgAAAAAAAAB+AEUAIgAAAAAAAAB+AEYAIgAAAAAAAAB+AEcAIgAAAAAAAAB+AEgAIgAAAAAAAAB+AEkAIgAAAAAAAAB/ACgAIgAAAAAAAAB/ACkAIgAAAAAAAAB/ACoAIgAAAAAAAAB/ACsAIgAAAAAAAAB/ACwAIgAAAAAAAAB/AC0AIgAAAAAAAAB/AC4AIgAAAAAAAAB/AC8AIgAAAAAAAAB/ADAAIgAAAAAAAAB/ADEAIgAAAAAAAAB/ADIAIgAAAAAAAAB/ADMAIgAAAAAAAAB/ADQAIgAAAAAAAAB/ADUAIgAAAAAAAAB/ADYAIgAAAAAAAAB/ADcAIgAAAAAAAAB/ADgAIgAAAAAAAAB/ADkAIgAAAAAAAAB/ADoAIgAAAAAAAAB/ADsAIgAAAAAAAAB/ADwAIgAAAAAAAAB/AD0AIgAAAAAAAAB/AD4AIgAAAAAAAAB/AD8AIgAAAAAAAAB/AEAAIgAAAAAAAAB/AEEAIgAAAAAAAAB/AEIAIgAAAAAAAAB/AEMAIgAAAAAAAAB/AEQAIgAAAAAAAAB/AEUAIgAAAAAAAAB/AEYAIgAAAAAAAAB/AEcAIgAAAAAAAAB/AEgAIgAAAAAAAAB/AEkAIgAAAAAAAACAACgAIgAAAAAAAACAACkAIgAAAAAAAACAACoAIgAAAAAAAACAACsAIgAAAAAAAACAACwAIgAAAAAAAACAAC0AIgAAAAAAAACAAC4AIgAAAAAAAACAAC8AIgAAAAAAAACAADAAIgAAAAAAAACAADEAIgAAAAAAAACAADIAIgAAAAAAAACAADMAIgAAAAAAAACAADQAIgAAAAAAAACAADUAIgAAAAAAAACAADYAIgAAAAAAAACAADcAIgAAAAAAAACAADgAIgAAAAAAAACAADkAIgAAAAAAAACAADoAIgAAAAAAAACAADsAIgAAAAAAAACAADwAIgAAAAAAAACAAD0AIgAAAAAAAACAAD4AIgAAAAAAAACAAD8AIgAAAAAAAACAAEAAIgAAAAAAAACAAEEAIgAAAAAAAACAAEIAIgAAAAAAAACAAEMAIgAAAAAAAACAAEQAIgAAAAAAAACAAEUAIgAAAAAAAACAAEYAIgAAAAAAAACAAEcAIgAAAAAAAACAAEgAIgAAAAAAAACAAEkAIgAAAAAAAABtAAEAIgAAAAAAAABtAAIAIgAAAAAAAABtAAMAIgAAAAAAAABtAAQAIgAAAAAAAABtAAUAIgAAAAAAAABtAAYAIgAAAAAAAABtAAcAIgAAAAAAAABtAAgAIgAAAAAAAABtAAkAIgAAAAAAAABtAAoAIgAAAAAAAABtAAsAIgAAAAAAAABtAAwAIgAAAAAAAABtAA0AIgAAAAAAAABtAA4AIgAAAAAAAABtAA8AIgAAAAAAAABtABAAIgAAAAAAAABtABEAIgAAAAAAAABtABIAIgAAAAAAAABtABMAIgAAAAAAAABtABQAIgAAAAAAAABtABUAIgAAAAAAAABtABYAIgAAAAAAAABtABcAIgAAAAAAAABtABgAIgAAAAAAAABtABkAIgAAAAAAAABtABoAIgAAAAAAAABtABsAIgAAAAAAAABtABwAIgAAAAAAAABtAB0AIgAAAAAAAABtAB4AIgAAAAAAAABtAB8AIgAAAAAAAABtACAAIgAAAAAAAABtACEAIgAAAAAAAABtACIAIgAAAAAAAABtACMAIgAAAAAAAABtACQAIgAAAAAAAABtACUAIgAAAAAAAABtACYAIgAAAAAAAABtACcAIgAAAAAAAABuAAEAIgAAAAAAAABuAAIAIgAAAAAAAABuAAMAIgAAAAAAAABuAAQAIgAAAAAAAABuAAUAIgAAAAAAAABuAAYAIgAAAAAAAABuAAcAIgAAAAAAAABuAAgAIgAAAAAAAABuAAkAIgAAAAAAAABuAAoAIgAAAAAAAABuAAsAIgAAAAAAAABuAAwAIgAAAAAAAABuAA0AIgAAAAAAAABuAA4AIgAAAAAAAABuAA8AIgAAAAAAAABuABAAIgAAAAAAAABuABEAIgAAAAAAAABuABIAIgAAAAAAAABuABMAIgAAAAAAAABuABQAIgAAAAAAAABuABUAIgAAAAAAAABuABYAIgAAAAAAAABuABcAIgAAAAAAAABuABgAIgAAAAAAAABuABkAIgAAAAAAAABuABoAIgAAAAAAAABuABsAIgAAAAAAAABuABwAIgAAAAAAAABuAB0AIgAAAAAAAABuAB4AIgAAAAAAAABuAB8AIgAAAAAAAABuACAAIgAAAAAAAABuACEAIgAAAAAAAABuACIAIgAAAAAAAABuACMAIgAAAAAAAABuACQAIgAAAAAAAABuACUAIgAAAAAAAABuACYAIgAAAAAAAABuACcAIgAAAAAAAABvAAEAIgAAAAAAAABvAAIAIgAAAAAAAABvAAMAIgAAAAAAAABvAAQAIgAAAAAAAABvAAUAIgAAAAAAAABvAAYAIgAAAAAAAABvAAcAIgAAAAAAAABvAAgAIgAAAAAAAABvAAkAIgAAAAAAAABvAAoAIgAAAAAAAABvAAsAIgAAAAAAAABvAAwAIgAAAAAAAABvAA0AIgAAAAAAAABvAA4AIgAAAAAAAABvAA8AIgAAAAAAAABvABAAIgAAAAAAAABvABEAIgAAAAAAAABvABIAIgAAAAAAAABvABMAIgAAAAAAAABvABQAIgAAAAAAAABvABUAIgAAAAAAAABvABYAIgAAAAAAAABvABcAIgAAAAAAAABvABgAIgAAAAAAAABvABkAIgAAAAAAAABvABoAIgAAAAAAAABvABsAIgAAAAAAAABvABwAIgAAAAAAAABvAB0AIgAAAAAAAABvAB4AIgAAAAAAAABvAB8AIgAAAAAAAABvACAAIgAAAAAAAABvACEAIgAAAAAAAABvACIAIgAAAAAAAABvACMAIgAAAAAAAABvACQAIgAAAAAAAABvACUAIgAAAAAAAABvACYAIgAAAAAAAABvACcAIgAAAAAAAABwAAEAFgAAAAAAAABwAAIAFgAAAAAAAABwAAMAFgAAAAAAAABwAAQAFgAAAAAAAABwAAUAFgAAAAAAAABwAAYAFgAAAAAAAABwAAcAFgAAAAAAAABwAAgAFgAAAAAAAABwAAkAFgAAAAAAAABwAAoAFgAAAAAAAABwAAsAFgAAAAAAAABwAAwAFgAAAAAAAABwAA0AFgAAAAAAAABwAA4AFgAAAAAAAABwAA8AFgAAAAAAAABwABAAFgAAAAAAAABwABEAFgAAAAAAAABwABIAFgAAAAAAAABwABMAFgAAAAAAAABwABQAFgAAAAAAAABwABUAFgAAAAAAAABwABYAFgAAAAAAAABwABcAFgAAAAAAAABwABgAFgAAAAAAAABwABkAFgAAAAAAAABwABoAFgAAAAAAAABwABsAFgAAAAAAAABwABwAFgAAAAAAAABwAB0AFgAAAAAAAABwAB4AFgAAAAAAAABwAB8AFgAAAAAAAABwACAAFgAAAAAAAABwACEAFgAAAAAAAABwACIAFgAAAAAAAABwACMAFgAAAAAAAABwACQAFgAAAAAAAABwACUAFgAAAAAAAABwACYAFgAAAAAAAABwACcAFgAAAAAAAABxAAEAFgAAAAAAAABxAAIAFgAAAAAAAABxAAMAFgAAAAAAAABxAAQAFgAAAAAAAABxAAUAFgAAAAAAAABxAAYAFgAAAAAAAABxAAcAFgAAAAAAAABxAAgAFgAAAAAAAABxAAkAFgAAAAAAAABxAAoAFgAAAAAAAABxAAsAFgAAAAAAAABxAAwAFgAAAAAAAABxAA0AFgAAAAAAAABxAA4AFgAAAAAAAABxAA8AFgAAAAAAAABxABAAFgAAAAAAAABxABEAFgAAAAAAAABxABIAFgAAAAAAAABxABMAFgAAAAAAAABxABQAFgAAAAAAAABxABUAFgAAAAAAAABxABYAFgAAAAAAAABxABcAFgAAAAAAAABxABgAFgAAAAAAAABxABkAFgAAAAAAAABxABoAFgAAAAAAAABxABsAFgAAAAAAAABxABwAFgAAAAAAAABxAB0AFgAAAAAAAABxAB4AFgAAAAAAAABxAB8AFgAAAAAAAABxACAAFgAAAAAAAABxACEAFgAAAAAAAABxACIAFgAAAAAAAABxACMAFgAAAAAAAABxACQAFgAAAAAAAABxACUAFgAAAAAAAABxACYAFgAAAAAAAABxACcAFgAAAAAAAAByAAEAFgAAAAAAAAByAAIAFgAAAAAAAAByAAMAFgAAAAAAAAByAAQAFgAAAAAAAAByAAUAFgAAAAAAAAByAAYAFgAAAAAAAAByAAcAFgAAAAAAAAByAAgAFgAAAAAAAAByAAkAFgAAAAAAAAByAAoAFgAAAAAAAAByAAsAFgAAAAAAAAByAAwAFgAAAAAAAAByAA0AFgAAAAAAAAByAA4AFgAAAAAAAAByAA8AFgAAAAAAAAByABAAFgAAAAAAAAByABEAFgAAAAAAAAByABIAFgAAAAAAAAByABMAFgAAAAAAAAByABQAFgAAAAAAAAByABUAFgAAAAAAAAByABYAFgAAAAAAAAByABcAFgAAAAAAAAByABgAFgAAAAAAAAByABkAFgAAAAAAAAByABoAFgAAAAAAAAByABsAFgAAAAAAAAByABwAFgAAAAAAAAByAB0AFgAAAAAAAAByAB4AFgAAAAAAAAByAB8AFgAAAAAAAAByACAAFgAAAAAAAAByACEAFgAAAAAAAAByACIAFgAAAAAAAAByACMAFgAAAAAAAAByACQAFgAAAAAAAAByACUAFgAAAAAAAAByACYAFgAAAAAAAAByACcAFgAAAAAAAABzAAEAFgAAAAAAAABzAAIAFgAAAAAAAABzAAMAFgAAAAAAAABzAAQAFgAAAAAAAABzAAUAFgAAAAAAAABzAAYAFgAAAAAAAABzAAcAFgAAAAAAAABzAAgAFgAAAAAAAABzAAkAFgAAAAAAAABzAAoAFgAAAAAAAABzAAsAFgAAAAAAAABzAAwAFgAAAAAAAABzAA0AFgAAAAAAAABzAA4AFgAAAAAAAABzAA8AFgAAAAAAAABzABAAFgAAAAAAAABzABEAFgAAAAAAAABzABIAFgAAAAAAAABzABMAFgAAAAAAAABzABQAFgAAAAAAAABzABUAFgAAAAAAAABzABYAFgAAAAAAAABzABcAFgAAAAAAAABzABgAFgAAAAAAAABzABkAFgAAAAAAAABzABoAFgAAAAAAAABzABsAFgAAAAAAAABzABwAFgAAAAAAAABzAB0AFgAAAAAAAABzAB4AFgAAAAAAAABzAB8AFgAAAAAAAABzACAAFgAAAAAAAABzACEAFgAAAAAAAABzACIAFgAAAAAAAABzACMAFgAAAAAAAABzACQAFgAAAAAAAABzACUAFgAAAAAAAABzACYAFgAAAAAAAABzACcAFgAAAAAAAAB0AAEAFgAAAAAAAAB0AAIAFgAAAAAAAAB0AAMAFgAAAAAAAAB0AAQAFgAAAAAAAAB0AAUAFgAAAAAAAAB0AAYAFgAAAAAAAAB0AAcAFgAAAAAAAAB0AAgAFgAAAAAAAAB0AAkAFgAAAAAAAAB0AAoAFgAAAAAAAAB0AAsAFgAAAAAAAAB0AAwAFgAAAAAAAAB0AA0AFgAAAAAAAAB0AA4AFgAAAAAAAAB0AA8AFgAAAAAAAAB0ABAAFgAAAAAAAAB0ABEAFgAAAAAAAAB0ABIAFgAAAAAAAAB0ABMAFgAAAAAAAAB0ABQAFgAAAAAAAAB0ABUAFgAAAAAAAAB0ABYAFgAAAAAAAAB0ABcAFgAAAAAAAAB0ABgAFgAAAAAAAAB0ABkAFgAAAAAAAAB0ABoAFgAAAAAAAAB0ABsAFgAAAAAAAAB0ABwAFgAAAAAAAAB0AB0AFgAAAAAAAAB0AB4AFgAAAAAAAAB0AB8AFgAAAAAAAAB0ACAAFgAAAAAAAAB0ACEAFgAAAAAAAAB0ACIAFgAAAAAAAAB0ACMAFgAAAAAAAAB0ACQAFgAAAAAAAAB0ACUAFgAAAAAAAAB0ACYAFgAAAAAAAAB0ACcAFgAAAAAAAAB1AAEAIgAAAAAAAAB1AAIAIgAAAAAAAAB1AAMAIgAAAAAAAAB1AAQAIgAAAAAAAAB1AAUAIgAAAAAAAAB1AAYAIgAAAAAAAAB1AAcAIgAAAAAAAAB1AAgAIgAAAAAAAAB1AAkAIgAAAAAAAAB1AAoAIgAAAAAAAAB1AAsAIgAAAAAAAAB1AAwAIgAAAAAAAAB1AA0AIgAAAAAAAAB1AA4AIgAAAAAAAAB1AA8AIgAAAAAAAAB1ABAAIgAAAAAAAAB1ABEAIgAAAAAAAAB1ABIAIgAAAAAAAAB1ABMAIgAAAAAAAAB1ABQAIgAAAAAAAAB1ABUAIgAAAAAAAAB1ABYAIgAAAAAAAAB1ABcAIgAAAAAAAAB1ABgAIgAAAAAAAAB1ABkAIgAAAAAAAAB1ABoAIgAAAAAAAAB1ABsAIgAAAAAAAAB1ABwAIgAAAAAAAAB1AB0AIgAAAAAAAAB1AB4AIgAAAAAAAAB1AB8AIgAAAAAAAAB1ACAAIgAAAAAAAAB1ACEAIgAAAAAAAAB1ACIAIgAAAAAAAAB1ACMAIgAAAAAAAAB1ACQAIgAAAAAAAAB1ACUAIgAAAAAAAAB1ACYAIgAAAAAAAAB1ACcAIgAAAAAAAAB2AAEAIgAAAAAAAAB2AAIAIgAAAAAAAAB2AAMAIgAAAAAAAAB2AAQAIgAAAAAAAAB2AAUAIgAAAAAAAAB2AAYAIgAAAAAAAAB2AAcAIgAAAAAAAAB2AAgAIgAAAAAAAAB2AAkAIgAAAAAAAAB2AAoAIgAAAAAAAAB2AAsAIgAAAAAAAAB2AAwAIgAAAAAAAAB2AA0AIgAAAAAAAAB2AA4AIgAAAAAAAAB2AA8AIgAAAAAAAAB2ABAAIgAAAAAAAAB2ABEAIgAAAAAAAAB2ABIAIgAAAAAAAAB2ABMAIgAAAAAAAAB2ABQAIgAAAAAAAAB2ABUAIgAAAAAAAAB2ABYAIgAAAAAAAAB2ABcAIgAAAAAAAAB2ABgAIgAAAAAAAAB2ABkAIgAAAAAAAAB2ABoAIgAAAAAAAAB2ABsAIgAAAAAAAAB2ABwAIgAAAAAAAAB2AB0AIgAAAAAAAAB2AB4AIgAAAAAAAAB2AB8AIgAAAAAAAAB2ACAAIgAAAAAAAAB2ACEAIgAAAAAAAAB2ACIAIgAAAAAAAAB2ACMAIgAAAAAAAAB2ACQAIgAAAAAAAAB2ACUAIgAAAAAAAAB2ACYAIgAAAAAAAAB2ACcAIgAAAAAAAAB3AAEAIgAAAAAAAAB3AAIAIgAAAAAAAAB3AAMAIgAAAAAAAAB3AAQAIgAAAAAAAAB3AAUAIgAAAAAAAAB3AAYAIgAAAAAAAAB3AAcAIgAAAAAAAAB3AAgAIgAAAAAAAAB3AAkAIgAAAAAAAAB3AAoAIgAAAAAAAAB3AAsAIgAAAAAAAAB3AAwAIgAAAAAAAAB3AA0AIgAAAAAAAAB3AA4AIgAAAAAAAAB3AA8AIgAAAAAAAAB3ABAAIgAAAAAAAAB3ABEAIgAAAAAAAAB3ABIAIgAAAAAAAAB3ABMAIgAAAAAAAAB3ABQAIgAAAAAAAAB3ABUAIgAAAAAAAAB3ABYAIgAAAAAAAAB3ABcAIgAAAAAAAAB3ABgAIgAAAAAAAAB3ABkAIgAAAAAAAAB3ABoAIgAAAAAAAAB3ABsAIgAAAAAAAAB3ABwAIgAAAAAAAAB3AB0AIgAAAAAAAAB3AB4AIgAAAAAAAAB3AB8AIgAAAAAAAAB3ACAAIgAAAAAAAAB3ACEAIgAAAAAAAAB3ACIAIgAAAAAAAAB3ACMAIgAAAAAAAAB3ACQAIgAAAAAAAAB3ACUAIgAAAAAAAAB3ACYAIgAAAAAAAAB3ACcAIgAAAAAAAAB4AAEAIgAAAAAAAAB4AAIAIgAAAAAAAAB4AAMAIgAAAAAAAAB4AAQAIgAAAAAAAAB4AAUAIgAAAAAAAAB4AAYAIgAAAAAAAAB4AAcAIgAAAAAAAAB4AAgAIgAAAAAAAAB4AAkAIgAAAAAAAAB4AAoAIgAAAAAAAAB4AAsAIgAAAAAAAAB4AAwAIgAAAAAAAAB4AA0AIgAAAAAAAAB4AA4AIgAAAAAAAAB4AA8AIgAAAAAAAAB4ABAAIgAAAAAAAAB4ABEAIgAAAAAAAAB4ABIAIgAAAAAAAAB4ABMAIgAAAAAAAAB4ABQAIgAAAAAAAAB4ABUAIgAAAAAAAAB4ABYAIgAAAAAAAAB4ABcAIgAAAAAAAAB4ABgAIgAAAAAAAAB4ABkAIgAAAAAAAAB4ABoAIgAAAAAAAAB4ABsAIgAAAAAAAAB4ABwAIgAAAAAAAAB4AB0AIgAAAAAAAAB4AB4AIgAAAAAAAAB4AB8AIgAAAAAAAAB4ACAAIgAAAAAAAAB4ACEAIgAAAAAAAAB4ACIAIgAAAAAAAAB4ACMAIgAAAAAAAAB4ACQAIgAAAAAAAAB4ACUAIgAAAAAAAAB4ACYAIgAAAAAAAAB4ACcAIgAAAAAAAAB5AAEAIgAAAAAAAAB5AAIAIgAAAAAAAAB5AAMAIgAAAAAAAAB5AAQAIgAAAAAAAAB5AAUAIgAAAAAAAAB5AAYAIgAAAAAAAAB5AAcAIgAAAAAAAAB5AAgAIgAAAAAAAAB5AAkAIgAAAAAAAAB5AAoAIgAAAAAAAAB5AAsAIgAAAAAAAAB5AAwAIgAAAAAAAAB5AA0AIgAAAAAAAAB5AA4AIgAAAAAAAAB5AA8AIgAAAAAAAAB5ABAAIgAAAAAAAAB5ABEAIgAAAAAAAAB5ABIAIgAAAAAAAAB5ABMAIgAAAAAAAAB5ABQAIgAAAAAAAAB5ABUAIgAAAAAAAAB5ABYAIgAAAAAAAAB5ABcAIgAAAAAAAAB5ABgAIgAAAAAAAAB5ABkAIgAAAAAAAAB5ABoAIgAAAAAAAAB5ABsAIgAAAAAAAAB5ABwAIgAAAAAAAAB5AB0AIgAAAAAAAAB5AB4AIgAAAAAAAAB5AB8AIgAAAAAAAAB5ACAAIgAAAAAAAAB5ACEAIgAAAAAAAAB5ACIAIgAAAAAAAAB5ACMAIgAAAAAAAAB5ACQAIgAAAAAAAAB5ACUAIgAAAAAAAAB5ACYAIgAAAAAAAAB5ACcAIgAAAAAAAAB6AAEAIgAAAAAAAAB6AAIAIgAAAAAAAAB6AAMAIgAAAAAAAAB6AAQAIgAAAAAAAAB6AAUAIgAAAAAAAAB6AAYAIgAAAAAAAAB6AAcAIgAAAAAAAAB6AAgAIgAAAAAAAAB6AAkAIgAAAAAAAAB6AAoAIgAAAAAAAAB6AAsAIgAAAAAAAAB6AAwAIgAAAAAAAAB6AA0AIgAAAAAAAAB6AA4AIgAAAAAAAAB6AA8AIgAAAAAAAAB6ABAAIgAAAAAAAAB6ABEAIgAAAAAAAAB6ABIAIgAAAAAAAAB6ABMAIgAAAAAAAAB6ABQAIgAAAAAAAAB6ABUAIgAAAAAAAAB6ABYAIgAAAAAAAAB6ABcAIgAAAAAAAAB6ABgAIgAAAAAAAAB6ABkAIgAAAAAAAAB6ABoAIgAAAAAAAAB6ABsAIgAAAAAAAAB6ABwAIgAAAAAAAAB6AB0AIgAAAAAAAAB6AB4AIgAAAAAAAAB6AB8AIgAAAAAAAAB6ACAAIgAAAAAAAAB6ACEAIgAAAAAAAAB6ACIAIgAAAAAAAAB6ACMAIgAAAAAAAAB6ACQAIgAAAAAAAAB6ACUAIgAAAAAAAAB6ACYAIgAAAAAAAAB6ACcAIgAAAAAAAAB7AAEAIgAAAAAAAAB7AAIAIgAAAAAAAAB7AAMAIgAAAAAAAAB7AAQAIgAAAAAAAAB7AAUAIgAAAAAAAAB7AAYAIgAAAAAAAAB7AAcAIgAAAAAAAAB7AAgAIgAAAAAAAAB7AAkAIgAAAAAAAAB7AAoAIgAAAAAAAAB7AAsAIgAAAAAAAAB7AAwAIgAAAAAAAAB7AA0AIgAAAAAAAAB7AA4AIgAAAAAAAAB7AA8AIgAAAAAAAAB7ABAAIgAAAAAAAAB7ABEAIgAAAAAAAAB7ABIAIgAAAAAAAAB7ABMAIgAAAAAAAAB7ABQAIgAAAAAAAAB7ABUAIgAAAAAAAAB7ABYAIgAAAAAAAAB7ABcAIgAAAAAAAAB7ABgAIgAAAAAAAAB7ABkAIgAAAAAAAAB7ABoAIgAAAAAAAAB7ABsAIgAAAAAAAAB7ABwAIgAAAAAAAAB7AB0AIgAAAAAAAAB7AB4AIgAAAAAAAAB7AB8AIgAAAAAAAAB7ACAAIgAAAAAAAAB7ACEAIgAAAAAAAAB7ACIAIgAAAAAAAAB7ACMAIgAAAAAAAAB7ACQAIgAAAAAAAAB7ACUAIgAAAAAAAAB7ACYAIgAAAAAAAAB7ACcAIgAAAAAAAAB8AAEAIgAAAAAAAAB8AAIAIgAAAAAAAAB8AAMAIgAAAAAAAAB8AAQAIgAAAAAAAAB8AAUAIgAAAAAAAAB8AAYAIgAAAAAAAAB8AAcAIgAAAAAAAAB8AAgAIgAAAAAAAAB8AAkAIgAAAAAAAAB8AAoAIgAAAAAAAAB8AAsAIgAAAAAAAAB8AAwAIgAAAAAAAAB8AA0AIgAAAAAAAAB8AA4AIgAAAAAAAAB8AA8AIgAAAAAAAAB8ABAAIgAAAAAAAAB8ABEAIgAAAAAAAAB8ABIAIgAAAAAAAAB8ABMAIgAAAAAAAAB8ABQAIgAAAAAAAAB8ABUAIgAAAAAAAAB8ABYAIgAAAAAAAAB8ABcAIgAAAAAAAAB8ABgAIgAAAAAAAAB8ABkAIgAAAAAAAAB8ABoAIgAAAAAAAAB8ABsAIgAAAAAAAAB8ABwAIgAAAAAAAAB8AB0AIgAAAAAAAAB8AB4AIgAAAAAAAAB8AB8AIgAAAAAAAAB8ACAAIgAAAAAAAAB8ACEAIgAAAAAAAAB8ACIAIgAAAAAAAAB8ACMAIgAAAAAAAAB8ACQAIgAAAAAAAAB8ACUAIgAAAAAAAAB8ACYAIgAAAAAAAAB8ACcAIgAAAAAAAAB9AAEAIgAAAAAAAAB9AAIAIgAAAAAAAAB9AAMAIgAAAAAAAAB9AAQAIgAAAAAAAAB9AAUAIgAAAAAAAAB9AAYAIgAAAAAAAAB9AAcAIgAAAAAAAAB9AAgAIgAAAAAAAAB9AAkAIgAAAAAAAAB9AAoAIgAAAAAAAAB9AAsAIgAAAAAAAAB9AAwAIgAAAAAAAAB9AA0AIgAAAAAAAAB9AA4AIgAAAAAAAAB9AA8AIgAAAAAAAAB9ABAAIgAAAAAAAAB9ABEAIgAAAAAAAAB9ABIAIgAAAAAAAAB9ABMAIgAAAAAAAAB9ABQAIgAAAAAAAAB9ABUAIgAAAAAAAAB9ABYAIgAAAAAAAAB9ABcAIgAAAAAAAAB9ABgAIgAAAAAAAAB9ABkAIgAAAAAAAAB9ABoAIgAAAAAAAAB9ABsAIgAAAAAAAAB9ABwAIgAAAAAAAAB9AB0AIgAAAAAAAAB9AB4AIgAAAAAAAAB9AB8AIgAAAAAAAAB9ACAAIgAAAAAAAAB9ACEAIgAAAAAAAAB9ACIAIgAAAAAAAAB9ACMAIgAAAAAAAAB9ACQAIgAAAAAAAAB9ACUAIgAAAAAAAAB9ACYAIgAAAAAAAAB9ACcAIgAAAAAAAAB+AAEAIgAAAAAAAAB+AAIAIgAAAAAAAAB+AAMAIgAAAAAAAAB+AAQAIgAAAAAAAAB+AAUAIgAAAAAAAAB+AAYAIgAAAAAAAAB+AAcAIgAAAAAAAAB+AAgAIgAAAAAAAAB+AAkAIgAAAAAAAAB+AAoAIgAAAAAAAAB+AAsAIgAAAAAAAAB+AAwAIgAAAAAAAAB+AA0AIgAAAAAAAAB+AA4AIgAAAAAAAAB+AA8AIgAAAAAAAAB+ABAAIgAAAAAAAAB+ABEAIgAAAAAAAAB+ABIAIgAAAAAAAAB+ABMAIgAAAAAAAAB+ABQAIgAAAAAAAAB+ABUAIgAAAAAAAAB+ABYAIgAAAAAAAAB+ABcAIgAAAAAAAAB+ABgAIgAAAAAAAAB+ABkAIgAAAAAAAAB+ABoAIgAAAAAAAAB+ABsAIgAAAAAAAAB+ABwAIgAAAAAAAAB+AB0AIgAAAAAAAAB+AB4AIgAAAAAAAAB+AB8AIgAAAAAAAAB+ACAAIgAAAAAAAAB+ACEAIgAAAAAAAAB+ACIAIgAAAAAAAAB+ACMAIgAAAAAAAAB+ACQAIgAAAAAAAAB+ACUAIgAAAAAAAAB+ACYAIgAAAAAAAAB+ACcAIgAAAAAAAAB/AAEAIgAAAAAAAAB/AAIAIgAAAAAAAAB/AAMAIgAAAAAAAAB/AAQAIgAAAAAAAAB/AAUAIgAAAAAAAAB/AAYAIgAAAAAAAAB/AAcAIgAAAAAAAAB/AAgAIgAAAAAAAAB/AAkAIgAAAAAAAAB/AAoAIgAAAAAAAAB/AAsAIgAAAAAAAAB/AAwAIgAAAAAAAAB/AA0AIgAAAAAAAAB/AA4AIgAAAAAAAAB/AA8AIgAAAAAAAAB/ABAAIgAAAAAAAAB/ABEAIgAAAAAAAAB/ABIAIgAAAAAAAAB/ABMAIgAAAAAAAAB/ABQAIgAAAAAAAAB/ABUAIgAAAAAAAAB/ABYAIgAAAAAAAAB/ABcAIgAAAAAAAAB/ABgAIgAAAAAAAAB/ABkAIgAAAAAAAAB/ABoAIgAAAAAAAAB/ABsAIgAAAAAAAAB/ABwAIgAAAAAAAAB/AB0AIgAAAAAAAAB/AB4AIgAAAAAAAAB/AB8AIgAAAAAAAAB/ACAAIgAAAAAAAAB/ACEAIgAAAAAAAAB/ACIAIgAAAAAAAAB/ACMAIgAAAAAAAAB/ACQAIgAAAAAAAAB/ACUAIgAAAAAAAAB/ACYAIgAAAAAAAAB/ACcAIgAAAAAAAACAAAEAIgAAAAAAAACAAAIAIgAAAAAAAACAAAMAIgAAAAAAAACAAAQAIgAAAAAAAACAAAUAIgAAAAAAAACAAAYAIgAAAAAAAACAAAcAIgAAAAAAAACAAAgAIgAAAAAAAACAAAkAIgAAAAAAAACAAAoAIgAAAAAAAACAAAsAIgAAAAAAAACAAAwAIgAAAAAAAACAAA0AIgAAAAAAAACAAA4AIgAAAAAAAACAAA8AIgAAAAAAAACAABAAIgAAAAAAAACAABEAIgAAAAAAAACAABIAIgAAAAAAAACAABMAIgAAAAAAAACAABQAIgAAAAAAAACAABUAIgAAAAAAAACAABYAIgAAAAAAAACAABcAIgAAAAAAAACAABgAIgAAAAAAAACAABkAIgAAAAAAAACAABoAIgAAAAAAAACAABsAIgAAAAAAAACAABwAIgAAAAAAAACAAB0AIgAAAAAAAACAAB4AIgAAAAAAAACAAB8AIgAAAAAAAACAACAAIgAAAAAAAACAACEAIgAAAAAAAACAACIAIgAAAAAAAACAACMAIgAAAAAAAACAACQAIgAAAAAAAACAACUAIgAAAAAAAACAACYAIgAAAAAAAACAACcAIgAAAAAAAAA3AEoAFgAAAAAAAAA3AEsAFgAAAAAAAAA3AEwAFgAAAAAAAAA3AE0AFgAAAAAAAAA4AEoAFgAAAAAAAAA4AEsAFgAAAAAAAAA4AEwAFgAAAAAAAAA4AE0AFgAAAAAAAAA5AEoAFgAAAAAAAAA5AEsAFgAAAAAAAAA5AEwAFgAAAAAAAAA5AE0AFgAAAAAAAAA6AEoAFgAAAAAAAAA6AEsAFgAAAAAAAAA6AEwAFgAAAAAAAAA6AE0AFgAAAAAAAAA7AEoAFgAAAAAAAAA7AEsAFgAAAAAAAAA7AEwAFgAAAAAAAAA7AE0AFgAAAAAAAAA8AEoAFgAAAAAAAAA8AEsAFgAAAAAAAAA8AEwAFgAAAAAAAAA8AE0AFgAAAAAAAAA9AEoAFgAAAAAAAAA9AEsAFgAAAAAAAAA9AEwAFgAAAAAAAAA9AE0AFgAAAAAAAAA+AEoAFgAAAAAAAAA+AEsAFgAAAAAAAAA+AEwAFgAAAAAAAAA+AE0AFgAAAAAAAAA/AEoAFgAAAAAAAAA/AEsAFgAAAAAAAAA/AEwAFgAAAAAAAAA/AE0AFgAAAAAAAABAAEoAFgAAAAAAAABAAEsAFgAAAAAAAABAAEwAFgAAAAAAAABAAE0AFgAAAAAAAABBAEoAFgAAAAAAAABBAEsAFgAAAAAAAABBAEwAFgAAAAAAAABBAE0AFgAAAAAAAABCAEoAFgAAAAAAAABCAEsAFgAAAAAAAABCAEwAFgAAAAAAAABCAE0AFgAAAAAAAABDAEoAFgAAAAAAAABDAEsAFgAAAAAAAABDAEwAFgAAAAAAAABDAE0AFgAAAAAAAABEAEoAFgAAAAAAAABEAEsAFgAAAAAAAABEAEwAFgAAAAAAAABEAE0AFgAAAAAAAABFAEoAFgAAAAAAAABFAEsAFgAAAAAAAABFAEwAFgAAAAAAAABFAE0AFgAAAAAAAABGAEoAFgAAAAAAAABGAEsAFgAAAAAAAABGAEwAFgAAAAAAAABGAE0AFgAAAAAAAABHAEoAFgAAAAAAAABHAEsAFgAAAAAAAABHAEwAFgAAAAAAAABHAE0AFgAAAAAAAABIAEoAFgAAAAAAAABIAEsAFgAAAAAAAABIAEwAFgAAAAAAAABIAE0AFgAAAAAAAABJAEoAFgAAAAAAAABJAEsAFgAAAAAAAABJAEwAFgAAAAAAAABJAE0AFgAAAAAAAABKAEoAFgAAAAAAAABKAEsAFgAAAAAAAABKAEwAFgAAAAAAAABKAE0AFgAAAAAAAABLAEoAFgAAAAAAAABLAEsAFgAAAAAAAABLAEwAFgAAAAAAAABLAE0AFgAAAAAAAABMAEoAFgAAAAAAAABMAEsAFgAAAAAAAABMAEwAFgAAAAAAAABMAE0AFgAAAAAAAABNAEoAFgAAAAAAAABNAEsAFgAAAAAAAABNAEwAFgAAAAAAAABNAE0AFgAAAAAAAABOAEoAFgAAAAAAAABOAEsAFgAAAAAAAABOAEwAFgAAAAAAAABOAE0AFgAAAAAAAABPAEoAFgAAAAAAAABPAEsAFgAAAAAAAABPAEwAFgAAAAAAAABPAE0AFgAAAAAAAABQAEoAFgAAAAAAAABQAEsAFgAAAAAAAABQAEwAFgAAAAAAAABQAE0AFgAAAAAAAABRAEoAFgAAAAAAAABRAEsAFgAAAAAAAABRAEwAFgAAAAAAAABRAE0AFgAAAAAAAABSAEoAFgAAAAAAAABSAEsAFgAAAAAAAABSAEwAFgAAAAAAAABSAE0AFgAAAAAAAABTAEoAFgAAAAAAAABTAEsAFgAAAAAAAABTAEwAFgAAAAAAAABTAE0AFgAAAAAAAABUAEoAFgAAAAAAAABUAEsAFgAAAAAAAABUAEwAFgAAAAAAAABUAE0AFgAAAAAAAABVAEoAFgAAAAAAAABVAEsAFgAAAAAAAABVAEwAFgAAAAAAAABVAE0AFgAAAAAAAABWAEoAFgAAAAAAAABWAEsAFgAAAAAAAABWAEwAFgAAAAAAAABWAE0AFgAAAAAAAABXAEoAFgAAAAAAAABXAEsAFgAAAAAAAABXAEwAFgAAAAAAAABXAE0AFgAAAAAAAABYAEoAFgAAAAAAAABYAEsAFgAAAAAAAABYAEwAFgAAAAAAAABYAE0AFgAAAAAAAABZAEoAFgAAAAAAAABZAEsAFgAAAAAAAABZAEwAFgAAAAAAAABZAE0AFgAAAAAAAABaAEoAFgAAAAAAAABaAEsAFgAAAAAAAABaAEwAFgAAAAAAAABaAE0AFgAAAAAAAABbAEoAFgAAAAAAAABbAEsAFgAAAAAAAABbAEwAFgAAAAAAAABbAE0AFgAAAAAAAABcAEoAFgAAAAAAAABcAEsAFgAAAAAAAABcAEwAFgAAAAAAAABcAE0AFgAAAAAAAABdAEoAFgAAAAAAAABdAEsAFgAAAAAAAABdAEwAFgAAAAAAAABdAE0AFgAAAAAAAABeAEoAFgAAAAAAAABeAEsAFgAAAAAAAABeAEwAFgAAAAAAAABeAE0AFgAAAAAAAABfAEoAFgAAAAAAAABfAEsAFgAAAAAAAABfAEwAFgAAAAAAAABfAE0AFgAAAAAAAABgAEoAFgAAAAAAAABgAEsAFgAAAAAAAABgAEwAFgAAAAAAAABgAE0AFgAAAAAAAABhAEoAFgAAAAAAAABhAEsAFgAAAAAAAABhAEwAFgAAAAAAAABhAE0AFgAAAAAAAABiAEoAFgAAAAAAAABiAEsAFgAAAAAAAABiAEwAFgAAAAAAAABiAE0AFgAAAAAAAABjAEoAFgAAAAAAAABjAEsAFgAAAAAAAABjAEwAFgAAAAAAAABjAE0AFgAAAAAAAABkAEoAFgAAAAAAAABkAEsAFgAAAAAAAABkAEwAFgAAAAAAAABkAE0AFgAAAAAAAABlAEoAFgAAAAAAAABlAEsAFgAAAAAAAABlAEwAFgAAAAAAAABlAE0AFgAAAAAAAABmAEoAFgAAAAAAAABmAEsAFgAAAAAAAABmAEwAFgAAAAAAAABmAE0AFgAAAAAAAABnAEoAFgAAAAAAAABnAEsAFgAAAAAAAABnAEwAFgAAAAAAAABnAE0AFgAAAAAAAABoAEoAFgAAAAAAAABoAEsAFgAAAAAAAABoAEwAFgAAAAAAAABoAE0AFgAAAAAAAABpAEoAFgAAAAAAAABpAEsAFgAAAAAAAABpAEwAFgAAAAAAAABpAE0AFgAAAAAAAABqAEoAFgAAAAAAAABqAEsAFgAAAAAAAABqAEwAFgAAAAAAAABqAE0AFgAAAAAAAABrAEoAFgAAAAAAAABrAEsAFgAAAAAAAABrAEwAFgAAAAAAAABrAE0AFgAAAAAAAABsAEoAFgAAAAAAAABsAEsAFgAAAAAAAABsAEwAFgAAAAAAAABsAE0AFgAAAAAAAABtAEoAFgAAAAAAAABtAEsAFgAAAAAAAABtAEwAFgAAAAAAAABtAE0AFgAAAAAAAABuAEoAFgAAAAAAAABuAEsAFgAAAAAAAABuAEwAFgAAAAAAAABuAE0AFgAAAAAAAABvAEoAFgAAAAAAAABvAEsAFgAAAAAAAABvAEwAFgAAAAAAAABvAE0AFgAAAAAAAABwAEoAFgAAAAAAAABwAEsAFgAAAAAAAABwAEwAFgAAAAAAAABwAE0AFgAAAAAAAABxAEoAFgAAAAAAAABxAEsAFgAAAAAAAABxAEwAFgAAAAAAAABxAE0AFgAAAAAAAAByAEoAFgAAAAAAAAByAEsAFgAAAAAAAAByAEwAFgAAAAAAAAByAE0AFgAAAAAAAABzAEoAFgAAAAAAAABzAEsAFgAAAAAAAABzAEwAFgAAAAAAAABzAE0AFgAAAAAAAAB0AEoAFgAAAAAAAAB0AEsAFgAAAAAAAAB0AEwAFgAAAAAAAAB0AE0AFgAAAAAAAAB1AEoAIgAAAAAAAAB1AEsAIgAAAAAAAAB1AEwAIgAAAAAAAAB1AE0AIgAAAAAAAAB2AEoAIgAAAAAAAAB2AEsAIgAAAAAAAAB2AEwAIgAAAAAAAAB2AE0AIgAAAAAAAAB3AEoAIgAAAAAAAAB3AEsAIgAAAAAAAAB3AEwAIgAAAAAAAAB3AE0AIgAAAAAAAAB4AEoAIgAAAAAAAAB4AEsAIgAAAAAAAAB4AEwAIgAAAAAAAAB4AE0AIgAAAAAAAAB5AEoAIgAAAAAAAAB5AEsAIgAAAAAAAAB5AEwAIgAAAAAAAAB5AE0AIgAAAAAAAAB6AEoAIgAAAAAAAAB6AEsAIgAAAAAAAAB6AEwAIgAAAAAAAAB6AE0AIgAAAAAAAAB7AEoAIgAAAAAAAAB7AEsAIgAAAAAAAAB7AEwAIgAAAAAAAAB7AE0AIgAAAAAAAAB8AEoAIgAAAAAAAAB8AEsAIgAAAAAAAAB8AEwAIgAAAAAAAAB8AE0AIgAAAAAAAAB9AEoAIgAAAAAAAAB9AEsAIgAAAAAAAAB9AEwAIgAAAAAAAAB9AE0AIgAAAAAAAAB+AEoAIgAAAAAAAAB+AEsAIgAAAAAAAAB+AEwAIgAAAAAAAAB+AE0AIgAAAAAAAAB/AEoAIgAAAAAAAAB/AEsAIgAAAAAAAAB/AEwAIgAAAAAAAAB/AE0AIgAAAAAAAACAAEoAIgAAAAAAAACAAEsAIgAAAAAAAACAAEwAIgAAAAAAAACAAE0AIgAAAAAAAAA2AEIADQABAAEAAAA1AEIADQABAAEAAAA0AEIADQABAAEAAAAzAEIADQABAAEAAAAzAEMADQABAAEAAAAyAEMADQABAAEAAAAyAEQADQABAAEAAAAyAEUADQABAAEAAAAyAEYADQABAAEAAAAyAEcADQABAAEAAAAxAEMADQABAAEAAAAxAEIADQABAAEAAAAyAEIADQABAAEAAAAxAEQADQABAAEAAAAxAEUADQABAAEAAAAxAEYADQABAAEAAAAxAEcADQABAAEAAAAxAEgADQABAAEAAAAxAEkADQABAAEAAAAxAEoADQABAAEAAAAxAEsADQABAAEAAAAxAEwADQABAAEAAAAxAE0ADQABAAEAAAAyAEgADQABAAEAAAAyAEkADQABAAEAAAAyAEoADQABAAEAAAAyAEsADQABAAEAAAAyAEwADQABAAEAAAAyAE0ADQABAAEAAAAzAEQADQABAAEAAAAzAEUADQABAAEAAAAzAEYADQABAAEAAAAzAEcADQABAAEAAAAzAEgADQABAAEAAAAzAEkADQABAAEAAAAzAEoADQABAAEAAAAzAEsADQABAAEAAAAzAEwADQABAAEAAAAzAE0ADQABAAEAAAA0AEMADQABAAEAAAA0AEQADQABAAEAAAA0AEUADQABAAEAAAA0AEYADQABAAEAAAA0AEcADQABAAEAAAA0AEgADQABAAEAAAA0AEkADQABAAEAAAA0AEoADQABAAEAAAA0AEsADQABAAEAAAA0AEwADQABAAEAAAA0AE0ADQABAAEAAAA1AEMADQABAAEAAAA1AEQADQABAAEAAAA1AEUADQABAAEAAAA1AEYADQABAAEAAAA1AEcADQABAAEAAAA1AEgADQABAAEAAAA1AEkADQABAAEAAAA1AEoADQABAAEAAAA1AEsADQABAAEAAAA1AEwADQABAAEAAAA1AE0ADQABAAEAAAA2AEMADQABAAEAAAA2AEQADQABAAEAAAA2AEUADQABAAEAAAA2AEYADQABAAEAAAA2AEcADQABAAEAAAA2AEgADQABAAEAAAA2AEkADQABAAEAAAA2AEoADQABAAEAAAA2AEsADQABAAEAAAA2AEwADQABAAEAAAA2AE0ADQABAAEAAAAvAEIADQABAAEAAAAvAEMADQABAAEAAAAvAEQADQABAAEAAAAvAEUADQABAAEAAAAvAEYADQABAAEAAAAvAEcADQABAAEAAAAvAEgADQABAAEAAAAvAEkADQABAAEAAAAvAEoADQABAAEAAAAvAEsADQABAAEAAAAvAEwADQABAAEAAAAvAE0ADQABAAEAAAAwAEIADQABAAEAAAAwAEMADQABAAEAAAAwAEQADQABAAEAAAAwAEUADQABAAEAAAAwAEYADQABAAEAAAAwAEcADQABAAEAAAAwAEgADQABAAEAAAAwAEkADQABAAEAAAAwAEoADQABAAEAAAAwAEsADQABAAEAAAAwAEwADQABAAEAAAAwAE0ADQABAAEAAAAvAE4ADQABAAEAAAAvAE8ADQABAAEAAAAvAFAADQABAAEAAAAwAE4ADQABAAEAAAAwAE8ADQABAAEAAAAwAFAADQABAAEAAAAxAE4ADQABAAEAAAAxAE8ADQABAAEAAAAxAFAADQABAAEAAAAyAE4ADQABAAEAAAAyAE8ADQABAAEAAAAyAFAADQABAAEAAAAzAE4ADQABAAEAAAAzAE8ADQABAAEAAAAzAFAADQABAAEAAAA0AE4ADQABAAEAAAA0AE8ADQABAAEAAAA0AFAADQABAAEAAAA1AE4ADQABAAEAAAA1AE8ADQABAAEAAAA1AFAADQABAAEAAAA2AE4ADQABAAEAAAA2AE8ADQABAAEAAAA2AFAADQABAAEAAAA3AE4ADQABAAEAAAA3AE8ADQABAAEAAAA3AFAADQABAAEAAAA4AE4ADQABAAEAAAA4AE8ADQABAAEAAAA4AFAADQABAAEAAAA5AE4ADQABAAEAAAA5AE8ADQABAAEAAAA5AFAADQABAAEAAAA6AE4ADQABAAEAAAA6AE8ADQABAAEAAAA6AFAADQABAAEAAAA7AE4ADQABAAEAAAA7AE8ADQABAAEAAAA7AFAADQABAAEAAAA8AE4ADQABAAEAAAA8AE8ADQABAAEAAAA8AFAADQABAAEAAAA9AE4ADQABAAEAAAA9AE8ADQABAAEAAAA9AFAADQABAAEAAAA+AE4ADQABAAEAAAA+AE8ADQABAAEAAAA+AFAADQABAAEAAAA/AE4ADQABAAEAAAA/AE8ADQABAAEAAAA/AFAADQABAAEAAABAAE4ADQABAAEAAABAAE8ADQABAAEAAABAAFAADQABAAEAAABBAE4ADQABAAEAAABBAE8ADQABAAEAAABBAFAADQABAAEAAABCAE4ADQABAAEAAABCAE8ADQABAAEAAABCAFAADQABAAEAAABDAE4ADQABAAEAAABDAE8ADQABAAEAAABDAFAADQABAAEAAABEAE4ADQABAAEAAABEAE8ADQABAAEAAABEAFAADQABAAEAAABFAE4ADQABAAEAAABFAE8ADQABAAEAAABFAFAADQABAAEAAABGAE4ADQABAAEAAABGAE8ADQABAAEAAABGAFAADQABAAEAAABHAE4ADQABAAEAAABHAE8ADQABAAEAAABHAFAADQABAAEAAABIAE4ADQABAAEAAABIAE8ADQABAAEAAABIAFAADQABAAEAAABJAE4ADQABAAEAAABJAE8ADQABAAEAAABJAFAADQABAAEAAABKAE4ADQABAAEAAABKAE8ADQABAAEAAABKAFAADQABAAEAAABLAE4ADQABAAEAAABLAE8ADQABAAEAAABLAFAADQABAAEAAABMAE4ADQABAAEAAABMAE8ADQABAAEAAABMAFAADQABAAEAAABNAE4ADQABAAEAAABNAE8ADQABAAEAAABNAFAADQABAAEAAABOAE4ADQABAAEAAABOAE8ADQABAAEAAABOAFAADQABAAEAAABPAE4ADQABAAEAAABPAE8ADQABAAEAAABPAFAADQABAAEAAABQAE4ADQABAAEAAABQAE8ADQABAAEAAABQAFAADQABAAEAAABRAE4ADQABAAEAAABRAE8ADQABAAEAAABRAFAADQABAAEAAABSAE4ADQABAAEAAABSAE8ADQABAAEAAABSAFAADQABAAEAAABTAE4ADQABAAEAAABTAE8ADQABAAEAAABTAFAADQABAAEAAABUAE4ADQABAAEAAABUAE8ADQABAAEAAABUAFAADQABAAEAAABVAE4ADQABAAEAAABVAE8ADQABAAEAAABVAFAADQABAAEAAABWAE4ADQABAAEAAABWAE8ADQABAAEAAABWAFAADQABAAEAAABXAE4ADQABAAEAAABXAE8ADQABAAEAAABXAFAADQABAAEAAABZAE4ADQABAAEAAABZAE8ADQABAAEAAABZAFAADQABAAEAAABaAE4ADQABAAEAAABaAE8ADQABAAEAAABaAFAADQABAAEAAABbAE4ADQABAAEAAABbAE8ADQABAAEAAABbAFAADQABAAEAAABcAE4ADQABAAEAAABcAE8ADQABAAEAAABcAFAADQABAAEAAABdAE4ADQABAAEAAABdAE8ADQABAAEAAABdAFAADQABAAEAAABeAE4ADQABAAEAAABeAE8ADQABAAEAAABeAFAADQABAAEAAABfAE4ADQABAAEAAABfAE8ADQABAAEAAABfAFAADQABAAEAAABgAE4ADQABAAEAAABgAE8ADQABAAEAAABgAFAADQABAAEAAABhAE4ADQABAAEAAABhAE8ADQABAAEAAABhAFAADQABAAEAAABiAE4ADQABAAEAAABiAE8ADQABAAEAAABiAFAADQABAAEAAABjAE4ADQABAAEAAABjAE8ADQABAAEAAABjAFAADQABAAEAAABkAE4ADQABAAEAAABkAE8ADQABAAEAAABkAFAADQABAAEAAABlAE4ADQABAAEAAABlAE8ADQABAAEAAABlAFAADQABAAEAAABmAE4ADQABAAEAAABmAE8ADQABAAEAAABmAFAADQABAAEAAABnAE4ADQABAAEAAABnAE8ADQABAAEAAABnAFAADQABAAEAAABoAE4ADQABAAEAAABoAE8ADQABAAEAAABoAFAADQABAAEAAABpAE4ADQABAAEAAABpAE8ADQABAAEAAABpAFAADQABAAEAAABqAE4ADQABAAEAAABqAE8ADQABAAEAAABqAFAADQABAAEAAABrAE4ADQABAAEAAABrAE8ADQABAAEAAABrAFAADQABAAEAAABsAE4ADQABAAEAAABsAE8ADQABAAEAAABsAFAADQABAAEAAABtAE4ADQABAAEAAABtAE8ADQABAAEAAABtAFAADQABAAEAAABuAE4ADQABAAEAAABuAE8ADQABAAEAAABuAFAADQABAAEAAABvAE4ADQABAAEAAABvAE8ADQABAAEAAABvAFAADQABAAEAAABwAE4ADQABAAEAAABwAE8ADQABAAEAAABwAFAADQABAAEAAABxAE4ADQABAAEAAABxAE8ADQABAAEAAABxAFAADQABAAEAAAByAE4ADQABAAEAAAByAE8ADQABAAEAAAByAFAADQABAAEAAABzAE4ADQABAAEAAABzAE8ADQABAAEAAABzAFAADQABAAEAAAB0AE4ADQABAAEAAAB0AE8ADQABAAEAAAB0AFAADQABAAEAAAB1AE4ADQABAAEAAAB1AE8ADQABAAEAAAB1AFAADQABAAEAAAB2AE4ADQABAAEAAAB2AE8ADQABAAEAAAB2AFAADQABAAEAAAB3AE4ADQABAAEAAAB3AE8ADQABAAEAAAB3AFAADQABAAEAAAB4AE4ADQABAAEAAAB4AE8ADQABAAEAAAB4AFAADQABAAEAAAB5AE4ADQABAAEAAAB5AE8ADQABAAEAAAB5AFAADQABAAEAAAB6AE4ADQABAAEAAAB6AE8ADQABAAEAAAB6AFAADQABAAEAAAB7AE4ADQABAAEAAAB7AE8ADQABAAEAAAB7AFAADQABAAEAAAB8AE4ADQABAAEAAAB8AE8ADQABAAEAAAB8AFAADQABAAEAAAB9AE4ADQABAAEAAAB9AE8ADQABAAEAAAB9AFAADQABAAEAAAB+AE4ADQABAAEAAAB+AE8ADQABAAEAAAB+AFAADQABAAEAAAB/AE4ADQABAAEAAAB/AE8ADQABAAEAAAB/AFAADQABAAEAAACAAE4ADQABAAEAAACAAE8ADQABAAEAAACAAFAADQABAAEAAABYAE4ADQABAAEAAABYAE8ADQABAAEAAABYAFAADQABAAEAAABwAP//FgAAAAAAAABwAAAAFgAAAAAAAABxAP//FgAAAAAAAABxAAAAFgAAAAAAAAByAP//FgAAAAAAAAByAAAAFgAAAAAAAABzAP//FgAAAAAAAABzAAAAFgAAAAAAAAB0AP//FgAAAAAAAAB0AAAAFgAAAAAAAABsAP7/FgAAAAAAAABtAP7/FgAAAAAAAABuAP7/FgAAAAAAAABvAP7/FgAAAAAAAABwAP7/FgAAAAAAAABxAP7/FgAAAAAAAAByAP7/FgAAAAAAAABzAP7/FgAAAAAAAAB0AP7/FgAAAAAAAAAAADsAAgABAAEAAAAAADoAAgABAAEAAAAAADkAAgABAAEAAAAAADgAAgABAAEAAAAAADcAAgABAAEAAAA=") tile_set = ExtResource("2_n2lu8") @@ -2106,8 +1318,7 @@ z_index = 1 position = Vector2(165, 3692) scale = Vector2(1.34, 1.34) player_name = "Tim" -walk_speed = 200.0 -run_speed = 350.0 +speeds = SubResource("Resource_b8bcu") sprite_frames = ExtResource("11_38eo7") [node name="Camera2D" type="Camera2D" parent="Player" unique_id=2068490872] diff --git a/scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/Objetos/Portal.tscn b/scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/Objetos/Portal.tscn deleted file mode 100644 index 272a077100..0000000000 --- a/scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/Objetos/Portal.tscn +++ /dev/null @@ -1,299 +0,0 @@ -[gd_scene format=3 uid="uid://c6hnrmigaj2q0"] - -[ext_resource type="Script" uid="uid://be7lr8ty24cix" path="res://scenes/game_elements/props/collectible_item/components/collectible_item.gd" id="1_7vpni"] -[ext_resource type="PackedScene" uid="uid://dutgnbiy7xalb" path="res://scenes/game_elements/props/interact_area/interact_area.tscn" id="2_ts8dp"] -[ext_resource type="AudioStream" uid="uid://bhgpds38q0j4r" path="res://assets/third_party/sounds/collectibles/MemoryCollectable.ogg" id="3_m83vn"] -[ext_resource type="AudioStream" uid="uid://38xwdjm46478" path="res://assets/third_party/sounds/collectibles/CollectibleAppear.ogg" id="4_vo6kd"] - -[sub_resource type="CircleShape2D" id="CircleShape2D_ghwae"] -radius = 20.0 - -[sub_resource type="Animation" id="Animation_i0615"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, 0)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite2D:scale") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(1, 1)] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Sprite2D:modulate") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Color(1, 1, 1, 0)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Sprite2D:visible") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [false] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Sprite2D:rotation") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath(".:scale") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(1, 1)] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("CollectedSound:volume_db") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} - -[sub_resource type="Animation" id="Animation_7ff3m"] -resource_name = "collected" -length = 1.2 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, 0)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite2D:rotation") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [0.0] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Sprite2D:scale") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0, 0.133333, 0.366667, 0.6), -"transitions": PackedFloat32Array(-2, -2, -2, -2), -"update": 0, -"values": [Vector2(1, 1), Vector2(1.1, 0.9), Vector2(0.95, 1.05), Vector2(1, 1)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Sprite2D:visible") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0, 0.566667, 0.6), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 1, -"values": [true, true, false] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Sprite2D:modulate") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0, 0.4, 0.6), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath(".:scale") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0, 0.6), -"transitions": PackedFloat32Array(0.5, 0.5), -"update": 0, -"values": [Vector2(1, 1), Vector2(1.5, 1.5)] -} -tracks/6/type = "audio" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("CollectedSound") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"clips": [{ -"end_offset": 1.23, -"start_offset": 0.0, -"stream": ExtResource("3_m83vn") -}], -"times": PackedFloat32Array(0) -} -tracks/6/use_blend = false -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("CollectedSound:volume_db") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0, 0.933333, 1.2), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [0.0, 0.0, -12.0] -} - -[sub_resource type="Animation" id="Animation_qy0vu"] -resource_name = "reveal" -length = 0.5 -step = 0.1 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Sprite2D:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(0, 0)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Sprite2D:visible") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 0.1, 0.5), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 1, -"values": [false, true, true] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Sprite2D:modulate") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0, 0.5), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Sprite2D:scale") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0, 0.5), -"transitions": PackedFloat32Array(0.5, 0.5), -"update": 0, -"values": [Vector2(0.8, 0.8), Vector2(1, 1)] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Sprite2D:rotation") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.5), -"transitions": PackedFloat32Array(-2, -2, -2, -2, -2), -"update": 0, -"values": [0.0, -0.122173, 0.122173, -0.0523599, 0.0] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_8dm1m"] -_data = { -&"RESET": SubResource("Animation_i0615"), -&"collected": SubResource("Animation_7ff3m"), -&"reveal": SubResource("Animation_qy0vu") -} - -[node name="Portal" type="Node2D" unique_id=523344057] -z_index = 1 -script = ExtResource("1_7vpni") - -[node name="InteractArea" parent="." unique_id=4305944 instance=ExtResource("2_ts8dp")] -interact_label_position = Vector2(0, -71) -action = "Collect" - -[node name="CollisionShape2D" type="CollisionShape2D" parent="InteractArea" unique_id=2085044314] -shape = SubResource("CircleShape2D_ghwae") - -[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=259186385] -libraries/ = SubResource("AnimationLibrary_8dm1m") - -[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1287739376] -visible = false -modulate = Color(1, 1, 1, 0) -texture_filter = 1 - -[node name="CollectedSound" type="AudioStreamPlayer" parent="." unique_id=37564226] -unique_name_in_owner = true -bus = &"SFX" - -[node name="AppearSound" type="AudioStreamPlayer" parent="." unique_id=1699891504] -unique_name_in_owner = true -stream = ExtResource("4_vo6kd") -bus = &"SFX" diff --git a/scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/shjourney_sequence_puzzle.tscn b/scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/shjourney_sequence_puzzle.tscn index a01b0a6bdb..f3a00213fa 100644 --- a/scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/shjourney_sequence_puzzle.tscn +++ b/scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/shjourney_sequence_puzzle.tscn @@ -1,6 +1,7 @@ [gd_scene format=4 uid="uid://b2e7wpdr7ebsp"] [ext_resource type="TileSet" uid="uid://c0bgp226varsk" path="res://scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/tilesetMinijuego02.tres" id="1_3wc2e"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmz81"] [ext_resource type="PackedScene" uid="uid://bkm7k4cqs6bbe" path="res://scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/shjourney_sequence_components/shjourney_Dragon.tscn" id="2_0x02o"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="2_24uth"] [ext_resource type="Script" uid="uid://c68oh8dtr21ti" path="res://scenes/game_logic/sequence_puzzle.gd" id="3_pwbbg"] @@ -10,6 +11,7 @@ [ext_resource type="SpriteFrames" uid="uid://bt7rx4p6q8dof" path="res://scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/shjourney_sequence_components/shjourney_Eye1.tres" id="6_m6vwj"] [ext_resource type="SpriteFrames" uid="uid://vrthlt7kah8w" path="res://scenes/quests/story_quests/shjourney/Otros_componentes/tim_sprite_frames.tres" id="8_at0ry"] [ext_resource type="SpriteFrames" uid="uid://fnv8rakr1qfd" path="res://scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/shjourney_sequence_components/shjourney_Eye2.tres" id="8_rijqc"] +[ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="9_it68j"] [ext_resource type="SpriteFrames" uid="uid://2gsf2tg6nyy7" path="res://scenes/quests/story_quests/shjourney/5_shjourney_sequence_puzzle/shjourney_sequence_components/shjourney_Eye3.tres" id="10_m0770"] [ext_resource type="PackedScene" uid="uid://be4o3ythda4cu" path="res://scenes/game_elements/props/sequence_puzzle_hint_sign/sequence_puzzle_hint_sign.tscn" id="11_l8oes"] [ext_resource type="AudioStream" uid="uid://cg57q82pb243w" path="res://assets/third_party/nepalese_hand_bells/handBells-c4.ogg" id="12_at0ry"] @@ -35,6 +37,12 @@ [ext_resource type="AudioStream" uid="uid://wh36l3rfb7xa" path="res://scenes/quests/story_quests/shjourney/Otros_componentes/musicas/Mind's Eye Full.ogg" id="33_at0ry"] [ext_resource type="PackedScene" uid="uid://dpbsi065gmh8a" path="res://scenes/game_elements/fx/fog/fog.tscn" id="35_at0ry"] +[sub_resource type="Resource" id="Resource_8ckgm"] +script = ExtResource("9_it68j") +walk_speed = 190.0 +run_speed = 200.0 +metadata/_custom_type_script = "uid://csev4hv57utxv" + [sub_resource type="Resource" id="Resource_u8qfb"] script = ExtResource("15_daurq") type = 2 @@ -42,6 +50,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="SequencePuzzleTemplate" type="Node2D" unique_id=1909753078] +[node name="PlayerMode" type="Node" parent="." unique_id=1442821943] +script = ExtResource("1_pmz81") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="TileMapLayers" type="Node2D" parent="." unique_id=39861968] [node name="Darkness" type="TileMapLayer" parent="TileMapLayers" unique_id=537987926] @@ -239,8 +251,7 @@ position = Vector2(29, 349) scale = Vector2(1.34, 1.34) collision_mask = 513 player_name = "Tim" -walk_speed = 190.0 -run_speed = 200.0 +speeds = SubResource("Resource_8ckgm") sprite_frames = ExtResource("8_at0ry") [node name="SequencePuzzle" type="Node2D" parent="OnTheGround" unique_id=941913753 node_paths=PackedStringArray("steps")] @@ -255,40 +266,40 @@ y_sort_enabled = true position = Vector2(356, 453) [node name="Blue" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1946621471 instance=ExtResource("4_8l7t1")] -modulate = Color(0, 0.4, 0.6, 1) position = Vector2(123, -320) sprite_frames = ExtResource("6_m6vwj") +sprite_modulate = Color(0, 0.4, 0.6, 1) audio_stream = ExtResource("12_at0ry") [node name="Orange" parent="OnTheGround/SequencePuzzle/Objects" unique_id=901852933 instance=ExtResource("4_8l7t1")] -modulate = Color(0.917454, 0.399473, 0.227027, 1) texture_filter = 1 position = Vector2(117, -213) sprite_frames = ExtResource("8_rijqc") +sprite_modulate = Color(0.917454, 0.399473, 0.227027, 1) audio_stream = ExtResource("14_it68j") [node name="Yellow" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1303985235 instance=ExtResource("4_8l7t1")] -modulate = Color(0.89, 0.804817, 0.2937, 1) position = Vector2(193, -153) sprite_frames = ExtResource("10_m0770") +sprite_modulate = Color(0.89, 0.804817, 0.2937, 1) audio_stream = ExtResource("16_at0ry") [node name="Green" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1089572290 instance=ExtResource("4_8l7t1")] -modulate = Color(0.188235, 0.717647, 0, 1) position = Vector2(298, -136) sprite_frames = ExtResource("12_vpkld") +sprite_modulate = Color(0.188235, 0.717647, 0, 1) audio_stream = ExtResource("18_it68j") [node name="Purple" parent="OnTheGround/SequencePuzzle/Objects" unique_id=756329808 instance=ExtResource("4_8l7t1")] -modulate = Color(0.464066, 0.2937, 0.89, 1) position = Vector2(383, -65) sprite_frames = ExtResource("6_0qchv") +sprite_modulate = Color(0.464066, 0.2937, 0.89, 1) audio_stream = ExtResource("20_8ckgm") [node name="Red" parent="OnTheGround/SequencePuzzle/Objects" unique_id=10023335 instance=ExtResource("4_8l7t1")] -modulate = Color(0.89, 0.2937, 0.2937, 1) position = Vector2(483, -67) sprite_frames = ExtResource("16_hvqie") +sprite_modulate = Color(0.89, 0.2937, 0.2937, 1) audio_stream = ExtResource("22_het1f") [node name="Signs" type="Node2D" parent="OnTheGround/SequencePuzzle" unique_id=2064854387] diff --git a/scenes/quests/story_quests/shjourney/7_shjourney_combate/Combate.tscn b/scenes/quests/story_quests/shjourney/7_shjourney_combate/Combate.tscn index ac7695cec9..b70f51bdb0 100644 --- a/scenes/quests/story_quests/shjourney/7_shjourney_combate/Combate.tscn +++ b/scenes/quests/story_quests/shjourney/7_shjourney_combate/Combate.tscn @@ -1,9 +1,11 @@ [gd_scene format=4 uid="uid://detarlsgchyx3"] -[ext_resource type="Script" uid="uid://cli0ni1rah58q" path="res://scenes/quests/story_quests/shjourney/7_shjourney_combate/fill_game_logic2.gd" id="1_ymgo3"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmkxv"] [ext_resource type="TileSet" uid="uid://cff3wffsnp02" path="res://scenes/quests/story_quests/shjourney/7_shjourney_combate/tilesetMinijuego03.tres" id="2_l82d5"] +[ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="2_mtgbq"] [ext_resource type="Resource" uid="uid://dnhietnxc72ks" path="res://scenes/quests/story_quests/shjourney/7_shjourney_combate/template_combat_components/CombateDialogo.dialogue" id="2_ymgo3"] [ext_resource type="SpriteFrames" uid="uid://blbgeo0jjttf4" path="res://scenes/quests/story_quests/shjourney/7_shjourney_combate/template_playerFight.tres" id="4_l82d5"] +[ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="4_r2vdt"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="4_w4e0j"] [ext_resource type="Shader" uid="uid://bvb4l5wskqwhf" path="res://scenes/quests/story_quests/shjourney/3_shjourney_intro/intro0.2.gdshader" id="4_ydosg"] [ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="5_xtx35"] @@ -88,9 +90,18 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="Combat" type="Node2D" unique_id=1753395573] y_sort_enabled = true -[node name="FillGameLogic2" type="Node" parent="." unique_id=1440674695] -script = ExtResource("1_ymgo3") -intro_dialogue = ExtResource("2_ymgo3") +[node name="PlayerMode" type="Node" parent="." unique_id=1258307633] +script = ExtResource("1_pmkxv") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + +[node name="Cinematic" type="Node2D" parent="." unique_id=114199410] +script = ExtResource("2_mtgbq") +dialogue = ExtResource("2_ymgo3") +metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="FillGameLogic" type="Node" parent="." unique_id=1332397917] +script = ExtResource("4_r2vdt") metadata/_custom_type_script = "uid://cp54mgi54nywo" [node name="TileMapLayers" type="Node2D" parent="." unique_id=478372880] @@ -225,4 +236,5 @@ scale = Vector2(5.625, 5.625) stream = ExtResource("22_r2vdt") autoplay = true -[connection signal="goal_reached" from="FillGameLogic2" to="OnTheGround/CollectibleItem" method="reveal"] +[connection signal="cinematic_finished" from="Cinematic" to="FillGameLogic" method="start"] +[connection signal="goal_reached" from="FillGameLogic" to="OnTheGround/CollectibleItem" method="reveal"] diff --git a/scenes/quests/story_quests/shjourney/7_shjourney_combate/fill_game_logic2.gd b/scenes/quests/story_quests/shjourney/7_shjourney_combate/fill_game_logic2.gd deleted file mode 100644 index 5770062038..0000000000 --- a/scenes/quests/story_quests/shjourney/7_shjourney_combate/fill_game_logic2.gd +++ /dev/null @@ -1,59 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends Node - -signal goal_reached - -@export var barrels_to_win: int = 1 -@export var intro_dialogue: DialogueResource - -var barrels_completed: int = 0 - - -func start() -> void: - var player: Player = get_tree().get_first_node_in_group("player") - if player: - player.mode = Player.Mode.FIGHTING - get_tree().call_group("throwing_enemy", "start") - for filling_barrel: FillingBarrel in get_tree().get_nodes_in_group("filling_barrels"): - filling_barrel.completed.connect(_on_barrel_completed) - _update_allowed_colors() - - -func _ready() -> void: - var filling_barrels: Array = get_tree().get_nodes_in_group("filling_barrels") - barrels_to_win = clampi(barrels_to_win, 0, filling_barrels.size()) - if intro_dialogue: - var player: Player = get_tree().get_first_node_in_group("player") - DialogueManager.show_dialogue_balloon(intro_dialogue, "", [self, player]) - await DialogueManager.dialogue_ended - start() - - -func _update_allowed_colors() -> void: - var allowed_labels: Array[String] = [] - var color_per_label: Dictionary[String, Color] - for filling_barrel: FillingBarrel in get_tree().get_nodes_in_group("filling_barrels"): - if filling_barrel.is_queued_for_deletion(): - continue - if filling_barrel.label not in allowed_labels: - allowed_labels.append(filling_barrel.label) - if not filling_barrel.color: - continue - color_per_label[filling_barrel.label] = filling_barrel.color - for enemy: ThrowingEnemy in get_tree().get_nodes_in_group("throwing_enemy"): - enemy.allowed_labels = allowed_labels - enemy.color_per_label = color_per_label - - -func _on_barrel_completed() -> void: - barrels_completed += 1 - _update_allowed_colors() - if barrels_completed < barrels_to_win: - return - get_tree().call_group("throwing_enemy", "remove") - get_tree().call_group("projectiles", "remove") - var player: Player = get_tree().get_first_node_in_group("player") - if player: - player.mode = Player.Mode.COZY - goal_reached.emit() diff --git a/scenes/quests/story_quests/shjourney/7_shjourney_combate/fill_game_logic2.gd.uid b/scenes/quests/story_quests/shjourney/7_shjourney_combate/fill_game_logic2.gd.uid deleted file mode 100644 index b28eea7d6f..0000000000 --- a/scenes/quests/story_quests/shjourney/7_shjourney_combate/fill_game_logic2.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cli0ni1rah58q diff --git a/scenes/quests/story_quests/shjourney/7_shjourney_combate/template_combat_components/CombateDialogo.dialogue b/scenes/quests/story_quests/shjourney/7_shjourney_combate/template_combat_components/CombateDialogo.dialogue index 4b1afa9602..c6b046f99e 100644 --- a/scenes/quests/story_quests/shjourney/7_shjourney_combate/template_combat_components/CombateDialogo.dialogue +++ b/scenes/quests/story_quests/shjourney/7_shjourney_combate/template_combat_components/CombateDialogo.dialogue @@ -7,10 +7,10 @@ Tim aparece en un mausoleo se encuentra con el Guardián Dios del Inframundo Sup Demonio supay: ¡La oscuridad te llama, mi presa tan gentil! Demonio supay: ¡Ah… ese fulgor azul! ¿Crees que tu aura te protegerá, niño soñador? Demonio supay: no habrá escape ni adiós, Tu alma será un adorno en mis oscuros patios. -{{player_name}}: Tu mundo está hecho de sombras... pero yo tengo una luz que tú jamás entenderás. -{{player_name}}: Ya veo tu corazón, expuesto, enorme… no late como el mío, pero igual se puede romper. +Tim: Tu mundo está hecho de sombras... pero yo tengo una luz que tú jamás entenderás. +Tim: Ya veo tu corazón, expuesto, enorme… no late como el mío, pero igual se puede romper. => END ~ well_done -{{player_name}}: Tus recuerdos brillan en este mundo roto, y eso me basta para seguir. +Tim: Tus recuerdos brillan en este mundo roto, y eso me basta para seguir. => END diff --git a/scenes/quests/story_quests/shjourney/8_shjourney_outro/Outro.tscn b/scenes/quests/story_quests/shjourney/8_shjourney_outro/Outro.tscn index 2338ecac83..2162ab6589 100644 --- a/scenes/quests/story_quests/shjourney/8_shjourney_outro/Outro.tscn +++ b/scenes/quests/story_quests/shjourney/8_shjourney_outro/Outro.tscn @@ -1,12 +1,13 @@ [gd_scene format=4 uid="uid://b4dotq384vljq"] [ext_resource type="TileSet" uid="uid://birttlb0sk74i" path="res://scenes/quests/story_quests/shjourney/8_shjourney_outro/tilesetOutro.tres" id="1_0jcvd"] -[ext_resource type="Script" uid="uid://c3lamv6dvbldv" path="res://scenes/quests/story_quests/shjourney/8_shjourney_outro/fill_game_logic_outro.gd" id="1_v1avb"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm877"] [ext_resource type="TileSet" uid="uid://bpyv8qhmeyo6l" path="res://scenes/quests/story_quests/shjourney/3_shjourney_intro/tilesetIntro.tres" id="2_r1lym"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="3_14vr6"] [ext_resource type="PackedScene" uid="uid://p6q2uo2us0il" path="res://scenes/quests/story_quests/shjourney/light.tscn" id="5_14vr6"] [ext_resource type="PackedScene" uid="uid://ipvcfv2g0oi1" path="res://scenes/game_elements/characters/npcs/talker/talker.tscn" id="6_s07u0"] [ext_resource type="Texture2D" uid="uid://bnfq0mr48gai7" path="res://assets/third_party/tiny-swords/Factions/Knights/Buildings/House/House_Blue.png" id="7_qomnf"] +[ext_resource type="Script" uid="uid://csev4hv57utxv" path="res://scenes/game_logic/walk_behaviors/character_speeds.gd" id="8_43lgm"] [ext_resource type="Material" uid="uid://bmwe2wu7hxepf" path="res://scenes/game_elements/props/tree/components/wind_affected_material.tres" id="8_bov4k"] [ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="9_3dk7l"] [ext_resource type="SpriteFrames" uid="uid://vrthlt7kah8w" path="res://scenes/quests/story_quests/shjourney/Otros_componentes/tim_sprite_frames.tres" id="9_kdw2l"] @@ -32,6 +33,12 @@ [ext_resource type="Texture2D" uid="uid://cpeefsvw0r68s" path="res://scenes/quests/story_quests/shjourney/8_shjourney_outro/marco_.png" id="29_3urrv"] [ext_resource type="PackedScene" uid="uid://dpbsi065gmh8a" path="res://scenes/game_elements/fx/fog/fog.tscn" id="32_43lgm"] +[sub_resource type="Resource" id="Resource_qomnf"] +script = ExtResource("8_43lgm") +walk_speed = 200.0 +run_speed = 300.0 +metadata/_custom_type_script = "uid://csev4hv57utxv" + [sub_resource type="AtlasTexture" id="AtlasTexture_rdjet"] atlas = ExtResource("16_3urrv") region = Rect2(0, 0, 84, 110) @@ -89,9 +96,9 @@ size = Vector2(134, 143) [node name="Outro" type="Node2D" unique_id=1533349729] -[node name="FillGameLogic_outro" type="Node" parent="." unique_id=700980534] -script = ExtResource("1_v1avb") -metadata/_custom_type_script = "uid://cp54mgi54nywo" +[node name="PlayerMode" type="Node" parent="." unique_id=340234109] +script = ExtResource("1_pm877") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" [node name="TileMapLayers" type="Node2D" parent="." unique_id=2070144937] @@ -229,8 +236,7 @@ z_index = 1 position = Vector2(113, 5326) scale = Vector2(1.199, 1.199) player_name = "Tim" -walk_speed = 200.0 -run_speed = 300.0 +speeds = SubResource("Resource_qomnf") sprite_frames = ExtResource("9_kdw2l") [node name="Camera2D" type="Camera2D" parent="Player" unique_id=516284963] @@ -482,11 +488,11 @@ position = Vector2(1431, 1314) [node name="FireFly26" parent="." unique_id=1657380025 instance=ExtResource("9_v1avb")] position = Vector2(963, 2556) -[connection signal="dialogo_terminado" from="quest_arbol/ArbolFantasma1" to="." method="reportar_arbol_contactado"] -[connection signal="dialogo_terminado" from="quest_arbol/ArbolFantasma1" to="." method="_on_arbol_fantasma_1_dialogo_terminado"] [connection signal="dialogo_terminado" from="quest_arbol/ArbolFantasma1" to="." method="_on_arbol_dialogo_terminado"] -[connection signal="dialogo_terminado2" from="quest_arbol2/ArbolFantasma2" to="quest_arbol2" method="_on_arbol_fantasma_2_dialogo_terminado_2"] +[connection signal="dialogo_terminado" from="quest_arbol/ArbolFantasma1" to="." method="_on_arbol_fantasma_1_dialogo_terminado"] +[connection signal="dialogo_terminado" from="quest_arbol/ArbolFantasma1" to="." method="reportar_arbol_contactado"] [connection signal="dialogo_terminado2" from="quest_arbol2/ArbolFantasma2" to="quest_arbol2" method="reportar_arbol_contactado2"] +[connection signal="dialogo_terminado2" from="quest_arbol2/ArbolFantasma2" to="quest_arbol2" method="_on_arbol_fantasma_2_dialogo_terminado_2"] [connection signal="dialogo_terminado3" from="quest_arbol3/ArbolFantasma3" to="quest_arbol3" method="reportar_arbol_contactado3"] [connection signal="dialogo_terminado3" from="quest_arbol3/ArbolFantasma3" to="quest_arbol3" method="_on_arbol_fantasma_3_dialogo_terminado_3"] [connection signal="body_entered" from="Area2D" to="Area2D" method="_on_Area2D_body_entered"] diff --git a/scenes/quests/story_quests/shjourney/8_shjourney_outro/fill_game_logic_outro.gd b/scenes/quests/story_quests/shjourney/8_shjourney_outro/fill_game_logic_outro.gd deleted file mode 100644 index 47ffb76eb5..0000000000 --- a/scenes/quests/story_quests/shjourney/8_shjourney_outro/fill_game_logic_outro.gd +++ /dev/null @@ -1,11 +0,0 @@ -# SPDX-FileCopyrightText: The Threadbare Authors -# SPDX-License-Identifier: MPL-2.0 -extends Node - -signal goal_reached - - -func _ready() -> void: - var player: Player = get_tree().get_first_node_in_group("player") - if player: - player.mode = Player.Mode.FIGHTING diff --git a/scenes/quests/story_quests/shjourney/8_shjourney_outro/fill_game_logic_outro.gd.uid b/scenes/quests/story_quests/shjourney/8_shjourney_outro/fill_game_logic_outro.gd.uid deleted file mode 100644 index fb54df9941..0000000000 --- a/scenes/quests/story_quests/shjourney/8_shjourney_outro/fill_game_logic_outro.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c3lamv6dvbldv diff --git a/scenes/quests/story_quests/shjourney/8_shjourney_outro/puerta.gd b/scenes/quests/story_quests/shjourney/8_shjourney_outro/puerta.gd index 14d2ccd318..b0a3f5b643 100644 --- a/scenes/quests/story_quests/shjourney/8_shjourney_outro/puerta.gd +++ b/scenes/quests/story_quests/shjourney/8_shjourney_outro/puerta.gd @@ -42,11 +42,6 @@ func open() -> void: door_sound.play() set_toggled(true) - # ✅ Esto debe ir dentro de la función, indentado correctamente - var player = get_tree().get_first_node_in_group("player") - if player: - player.mode = Player.Mode.COZY - func close() -> void: set_toggled(false) diff --git a/scenes/quests/story_quests/shjourney/Angel/checkpoint-angel.tscn b/scenes/quests/story_quests/shjourney/Angel/checkpoint-angel.tscn deleted file mode 100644 index d93f3d085c..0000000000 --- a/scenes/quests/story_quests/shjourney/Angel/checkpoint-angel.tscn +++ /dev/null @@ -1,37 +0,0 @@ -[gd_scene format=3 uid="uid://ceghga7v5oexc"] - -[ext_resource type="Script" uid="uid://nk2711d2tse2" path="res://scenes/quests/story_quests/shjourney/Angel/components/checkpoint-angel.gd" id="1_do1yu"] -[ext_resource type="SpriteFrames" uid="uid://bshou7t46r4nu" path="res://scenes/quests/story_quests/shjourney/Angel/components/angel.tres" id="2_0f17b"] -[ext_resource type="Script" uid="uid://0enyu5v4ra34" path="res://scenes/game_elements/props/spawn_point/components/spawn_point.gd" id="4_ptf7d"] -[ext_resource type="PackedScene" uid="uid://dutgnbiy7xalb" path="res://scenes/game_elements/props/interact_area/interact_area.tscn" id="6_k6fdi"] - -[sub_resource type="CircleShape2D" id="CircleShape2D_3xcwf"] -radius = 48.0 - -[node name="Checkpoint" type="Area2D" unique_id=1144340311] -collision_layer = 0 -script = ExtResource("1_do1yu") - -[node name="SpawnPoint" type="Marker2D" parent="." unique_id=1440666193 groups=["spawn_point"]] -unique_name_in_owner = true -script = ExtResource("4_ptf7d") - -[node name="Sprite" type="AnimatedSprite2D" parent="." unique_id=921891391] -unique_name_in_owner = true -position = Vector2(0, -40) -scale = Vector2(1.34, 1.34) -sprite_frames = ExtResource("2_0f17b") -animation = &"idle" -autoplay = "idle" - -[node name="InteractArea" parent="." unique_id=1228272158 instance=ExtResource("6_k6fdi")] -unique_name_in_owner = true -collision_layer = 0 -interact_label_position = Vector2(0, -128) -disabled = true -action = "Admire" - -[node name="CollisionShape" type="CollisionShape2D" parent="InteractArea" unique_id=1616791245] -position = Vector2(1, -4) -shape = SubResource("CircleShape2D_3xcwf") -debug_color = Color(0, 0.606449, 0.661205, 0.42) diff --git a/scenes/quests/story_quests/shjourney/saltar_cinematica_hint.tscn b/scenes/quests/story_quests/shjourney/saltar_cinematica_hint.tscn index f32da15d09..f06390842a 100644 --- a/scenes/quests/story_quests/shjourney/saltar_cinematica_hint.tscn +++ b/scenes/quests/story_quests/shjourney/saltar_cinematica_hint.tscn @@ -1,11 +1,8 @@ [gd_scene format=3 uid="uid://bdlaxkehg7vd6"] -[ext_resource type="Texture2D" uid="uid://c6fggds355rko" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_space_outline.tres" id="1_0n78t"] +[ext_resource type="Texture2D" uid="uid://d2s8w7any6x45" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_space.tres" id="1_x4qh5"] [ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="2_lbtwt"] -[ext_resource type="Texture2D" uid="uid://cxnx628qkf1br" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_color_a.tres" id="3_lbtwt"] -[ext_resource type="Texture2D" uid="uid://da6qvcr5sq71n" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_button_color_cross_outline.tres" id="4_2ul1c"] -[ext_resource type="Texture2D" uid="uid://upt0tmtsk3y2" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_a.tres" id="5_2k2oy"] -[ext_resource type="Texture2D" uid="uid://d223ajwmavjy8" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_a_outline.tres" id="6_gaoc7"] +[ext_resource type="Resource" uid="uid://c1beocky1qjxi" path="res://scenes/game_elements/props/hint/resources/devices.tres" id="3_7cupx"] [ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="7_07epa"] [node name="SaltarCinematicaHint" type="HBoxContainer" unique_id=1402783077] @@ -15,14 +12,10 @@ offset_bottom = 100.0 [node name="TextureRect" type="TextureRect" parent="." unique_id=281216563] layout_mode = 2 size_flags_vertical = 8 -texture = ExtResource("1_0n78t") +texture = ExtResource("1_x4qh5") script = ExtResource("2_lbtwt") action_name = &"interact" -keyboard_texture = ExtResource("1_0n78t") -xbox_controller_texture = ExtResource("3_lbtwt") -playstation_controller_texture = ExtResource("4_2ul1c") -nintendo_controller_texture = ExtResource("5_2k2oy") -steam_controller_texture = ExtResource("6_gaoc7") +devices = ExtResource("3_7cupx") [node name="Label" type="Label" parent="." unique_id=107845220] layout_mode = 2 diff --git a/scenes/quests/story_quests/stella/1_stella_stealth/stella_stealth.tscn b/scenes/quests/story_quests/stella/1_stella_stealth/stella_stealth.tscn index 7555cf7596..2792e479e4 100644 --- a/scenes/quests/story_quests/stella/1_stella_stealth/stella_stealth.tscn +++ b/scenes/quests/story_quests/stella/1_stella_stealth/stella_stealth.tscn @@ -23,6 +23,7 @@ [ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="16_0ownb"] [ext_resource type="Resource" uid="uid://fgepu5pdp6wu" path="res://scenes/quests/story_quests/stella/1_stella_stealth/stella_stealth_components/stella_firekeeper.dialogue" id="16_rlkm0"] [ext_resource type="SpriteFrames" uid="uid://dktcbyom7px88" path="res://scenes/quests/story_quests/stella/1_stella_stealth/stella_stealth_components/stella_firekeeper.tres" id="17_0ownb"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm753"] [sub_resource type="Curve2D" id="Curve2D_vnsq3"] _data = { @@ -175,6 +176,10 @@ animations = [{ [node name="StealthTemplateLevel" type="Node2D" unique_id=598491198] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1985511260] +script = ExtResource("1_pm753") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="StealthGameLogic" type="Node" parent="." unique_id=1268577311] script = ExtResource("1_hmya5") diff --git a/scenes/quests/story_quests/stella/2_stella_combat/stella_combat.tscn b/scenes/quests/story_quests/stella/2_stella_combat/stella_combat.tscn index 107bf36d9f..bc236c2c32 100644 --- a/scenes/quests/story_quests/stella/2_stella_combat/stella_combat.tscn +++ b/scenes/quests/story_quests/stella/2_stella_combat/stella_combat.tscn @@ -1,6 +1,7 @@ [gd_scene format=4 uid="uid://bfr7svwx5hqkf"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="1_ndyje"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmuc0"] [ext_resource type="Script" uid="uid://cp54mgi54nywo" path="res://scenes/game_logic/fill_game_logic.gd" id="1_xf1x3"] [ext_resource type="Resource" uid="uid://bx08jgaq2ruin" path="res://scenes/quests/story_quests/stella/2_stella_combat/stella_combat_components/stella_combat.dialogue" id="2_awu4o"] [ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="4_a535v"] @@ -67,6 +68,11 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="Combat" type="Node2D" unique_id=1263390013] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1243977779] +script = ExtResource("1_pmuc0") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="Cinematic" type="Node2D" parent="." unique_id=554644145] script = ExtResource("1_ndyje") dialogue = ExtResource("2_awu4o") @@ -121,7 +127,6 @@ y_sort_enabled = true [node name="Player" parent="OnTheGround" unique_id=999710366 instance=ExtResource("4_kirjo")] position = Vector2(1209, 283) player_name = "Stella" -mode = 1 sprite_frames = ExtResource("5_e46so") [node name="ThrowingNPC" parent="OnTheGround" unique_id=1111990181 instance=ExtResource("5_1o8f3")] diff --git a/scenes/quests/story_quests/stella/2_stella_combat/stella_combat_components/stella_projectile_starfish.tscn b/scenes/quests/story_quests/stella/2_stella_combat/stella_combat_components/stella_projectile_starfish.tscn index 0fe17725ba..2803ac28a3 100644 --- a/scenes/quests/story_quests/stella/2_stella_combat/stella_combat_components/stella_projectile_starfish.tscn +++ b/scenes/quests/story_quests/stella/2_stella_combat/stella_combat_components/stella_projectile_starfish.tscn @@ -7,27 +7,19 @@ friction = 0.0 bounce = 1.0 -[sub_resource type="RectangleShape2D" id="RectangleShape2D_o6xl0"] -size = Vector2(44, 44) - [node name="StellaProjectileStarfish" type="RigidBody2D" unique_id=1611529190 groups=["projectiles"]] collision_layer = 256 collision_mask = 80 mass = 0.3 physics_material_override = SubResource("PhysicsMaterial_tbgi4") gravity_scale = 0.0 -lock_rotation = true continuous_cd = 2 contact_monitor = true max_contacts_reported = 1 script = ExtResource("1_uhkiy") -[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1499726276] -shape = SubResource("RectangleShape2D_o6xl0") - [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 @@ -38,6 +30,10 @@ autoplay = "default" unique_name_in_owner = true position = Vector2(-40, 0) +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="." unique_id=173284507] +position = Vector2(3, 0) +polygon = PackedVector2Array(19, -9, 2, -6, -3, -21, -7, -6, -25, -9, -12, 4, -19, 21, -3, 11, 14, 21, 8, 5) + [node name="DurationTimer" type="Timer" parent="." unique_id=259732970] unique_name_in_owner = true diff --git a/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_components/stella_tortoise.tscn b/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_components/stella_tortoise.tscn index ea00899a1a..b3fc59cbdd 100644 --- a/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_components/stella_tortoise.tscn +++ b/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_components/stella_tortoise.tscn @@ -32,105 +32,105 @@ polygon = PackedVector2Array(-47, -75, -76, -69, -71, -42, -59, -28, -72, 22, -6 [node name="Gem 1" parent="." unique_id=258730506 instance=ExtResource("2_ohnjq")] audio_stream = ExtResource("3_1ig7o") -[node name="InteractArea" parent="Gem 1" index="1"] -interact_label_position = Vector2(-50, -64) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 1/InteractArea" index="0" unique_id=151105060] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 1/InteractArea" parent_id_path=PackedInt32Array(258730506, 600627691) index="0" unique_id=151105060] position = Vector2(-60, -64.5) shape = SubResource("RectangleShape2D_4sftv") debug_color = Color(0.600391, 0.54335, 0, 0.42) -[node name="AudioStreamPlayer2D" parent="Gem 1" index="2"] +[node name="Marker" parent="Gem 1/InteractArea" parent_id_path=PackedInt32Array(258730506, 600627691) index="1" unique_id=1868145125] +position = Vector2(-30, -57) + +[node name="AudioStreamPlayer2D" parent="Gem 1" index="2" unique_id=80765450] stream = ExtResource("3_1ig7o") [node name="Gem 2" parent="." unique_id=1055701984 instance=ExtResource("2_ohnjq")] sprite_frames = ExtResource("4_c23wd") audio_stream = ExtResource("5_2w8tf") -[node name="AnimatedSprite2D" parent="Gem 2" index="0"] +[node name="AnimatedSprite2D" parent="Gem 2" index="0" unique_id=394248375] sprite_frames = ExtResource("4_c23wd") -[node name="InteractArea" parent="Gem 2" index="1"] -interact_label_position = Vector2(50, -66) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 2/InteractArea" index="0" unique_id=638900854] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 2/InteractArea" parent_id_path=PackedInt32Array(1055701984, 600627691) index="0" unique_id=638900854] position = Vector2(71, -65) shape = SubResource("RectangleShape2D_4sftv") debug_color = Color(0.600391, 0.54335, 0, 0.42) -[node name="AudioStreamPlayer2D" parent="Gem 2" index="2"] +[node name="Marker" parent="Gem 2/InteractArea" parent_id_path=PackedInt32Array(1055701984, 600627691) index="1" unique_id=1868145125] +position = Vector2(22, -59) + +[node name="AudioStreamPlayer2D" parent="Gem 2" index="2" unique_id=80765450] stream = ExtResource("5_2w8tf") [node name="Gem 3" parent="." unique_id=2138779555 instance=ExtResource("2_ohnjq")] sprite_frames = ExtResource("6_0gbug") audio_stream = ExtResource("7_mmng5") -[node name="AnimatedSprite2D" parent="Gem 3" index="0"] +[node name="AnimatedSprite2D" parent="Gem 3" index="0" unique_id=394248375] sprite_frames = ExtResource("6_0gbug") -[node name="InteractArea" parent="Gem 3" index="1"] -interact_label_position = Vector2(67, -9) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 3/InteractArea" index="0" unique_id=552092954] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 3/InteractArea" parent_id_path=PackedInt32Array(2138779555, 600627691) index="0" unique_id=552092954] position = Vector2(91, 17) shape = SubResource("RectangleShape2D_4sftv") debug_color = Color(0.600391, 0.54335, 0, 0.42) -[node name="AudioStreamPlayer2D" parent="Gem 3" index="2"] +[node name="Marker" parent="Gem 3/InteractArea" parent_id_path=PackedInt32Array(2138779555, 600627691) index="1" unique_id=1868145125] +position = Vector2(45, -20) + +[node name="AudioStreamPlayer2D" parent="Gem 3" index="2" unique_id=80765450] stream = ExtResource("7_mmng5") [node name="Gem 4" parent="." unique_id=1768612363 instance=ExtResource("2_ohnjq")] sprite_frames = ExtResource("8_4sftv") audio_stream = ExtResource("9_lsn5i") -[node name="AnimatedSprite2D" parent="Gem 4" index="0"] +[node name="AnimatedSprite2D" parent="Gem 4" index="0" unique_id=394248375] sprite_frames = ExtResource("8_4sftv") -[node name="InteractArea" parent="Gem 4" index="1"] -interact_label_position = Vector2(52, 49) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 4/InteractArea" index="0" unique_id=1647526025] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 4/InteractArea" parent_id_path=PackedInt32Array(1768612363, 600627691) index="0" unique_id=1647526025] position = Vector2(61, 90) shape = SubResource("RectangleShape2D_4sftv") debug_color = Color(0.600391, 0.54335, 0, 0.42) -[node name="AudioStreamPlayer2D" parent="Gem 4" index="2"] +[node name="Marker" parent="Gem 4/InteractArea" parent_id_path=PackedInt32Array(1768612363, 600627691) index="1" unique_id=1868145125] +position = Vector2(14, 27) + +[node name="AudioStreamPlayer2D" parent="Gem 4" index="2" unique_id=80765450] stream = ExtResource("9_lsn5i") [node name="Gem 5" parent="." unique_id=956843827 instance=ExtResource("2_ohnjq")] sprite_frames = ExtResource("10_lgrp6") audio_stream = ExtResource("11_21pp6") -[node name="AnimatedSprite2D" parent="Gem 5" index="0"] +[node name="AnimatedSprite2D" parent="Gem 5" index="0" unique_id=394248375] sprite_frames = ExtResource("10_lgrp6") -[node name="InteractArea" parent="Gem 5" index="1"] -interact_label_position = Vector2(-52, 51) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 5/InteractArea" index="0" unique_id=870763098] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 5/InteractArea" parent_id_path=PackedInt32Array(956843827, 600627691) index="0" unique_id=870763098] position = Vector2(-61, 91) shape = SubResource("RectangleShape2D_4sftv") debug_color = Color(0.600391, 0.54335, 0, 0.42) -[node name="AudioStreamPlayer2D" parent="Gem 5" index="2"] +[node name="Marker" parent="Gem 5/InteractArea" parent_id_path=PackedInt32Array(956843827, 600627691) index="1" unique_id=1868145125] +position = Vector2(-20, 26) + +[node name="AudioStreamPlayer2D" parent="Gem 5" index="2" unique_id=80765450] stream = ExtResource("11_21pp6") [node name="Gem 6" parent="." unique_id=1546822710 instance=ExtResource("2_ohnjq")] sprite_frames = ExtResource("12_ejecx") audio_stream = ExtResource("13_m5xp2") -[node name="AnimatedSprite2D" parent="Gem 6" index="0"] +[node name="AnimatedSprite2D" parent="Gem 6" index="0" unique_id=394248375] sprite_frames = ExtResource("12_ejecx") -[node name="InteractArea" parent="Gem 6" index="1"] -interact_label_position = Vector2(-78, -9) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 6/InteractArea" index="0" unique_id=782843500] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Gem 6/InteractArea" parent_id_path=PackedInt32Array(1546822710, 600627691) index="0" unique_id=782843500] position = Vector2(-87, 16) shape = SubResource("RectangleShape2D_4sftv") debug_color = Color(0.600391, 0.54335, 0, 0.42) -[node name="AudioStreamPlayer2D" parent="Gem 6" index="2"] +[node name="Marker" parent="Gem 6/InteractArea" parent_id_path=PackedInt32Array(1546822710, 600627691) index="1" unique_id=1868145125] +position = Vector2(-45, -20) + +[node name="AudioStreamPlayer2D" parent="Gem 6" index="2" unique_id=80765450] stream = ExtResource("13_m5xp2") [editable path="Gem 1"] diff --git a/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_components/stella_tortoise_shell_gem.tscn b/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_components/stella_tortoise_shell_gem.tscn index b9246ea0bc..5f83f2edb1 100644 --- a/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_components/stella_tortoise_shell_gem.tscn +++ b/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_components/stella_tortoise_shell_gem.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://bjl6cydoln71k" path="res://scenes/game_elements/props/sequence_puzzle_object/components/sequence_puzzle_object.gd" id="1_elj1l"] [ext_resource type="SpriteFrames" uid="uid://cwd3k4451bn6i" path="res://scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_components/stella_gem1.tres" id="2_dwqaf"] -[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/components/interact_area.gd" id="3_wah4k"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="3_wah4k"] [node name="StellaTortoiseShellGem" type="Node2D" unique_id=1352205418 groups=["sequence_object"]] editor_description = "The main tortoise scene should instantiate this scene once for each segment of the shell; enable editable children; and configure the InteractArea as appropriate." @@ -14,14 +14,17 @@ unique_name_in_owner = true scale = Vector2(2, 2) sprite_frames = ExtResource("2_dwqaf") -[node name="InteractArea" type="Area2D" parent="." unique_id=600627691] +[node name="InteractArea" type="Area2D" parent="." unique_id=600627691 node_paths=PackedStringArray("marker")] unique_name_in_owner = true collision_layer = 32 collision_mask = 0 script = ExtResource("3_wah4k") +marker = NodePath("Marker") action = "Tap" metadata/_custom_type_script = "uid://du8wfijr35r35" +[node name="Marker" type="Marker2D" parent="InteractArea" unique_id=1868145125] + [node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="." unique_id=80765450] unique_name_in_owner = true bus = &"SFX" diff --git a/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_puzzle.tscn b/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_puzzle.tscn index 3eb7759f3e..2690cb52a1 100644 --- a/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_puzzle.tscn +++ b/scenes/quests/story_quests/stella/3_stella_sequence_puzzle/stella_sequence_puzzle.tscn @@ -1,6 +1,7 @@ [gd_scene format=4 uid="uid://b7j5em2h1m2j7"] [ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="1_koksn"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pm1er"] [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="2_g4uwj"] [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="2_sl1lr"] [ext_resource type="Script" uid="uid://c68oh8dtr21ti" path="res://scenes/game_logic/sequence_puzzle.gd" id="3_an7xq"] @@ -27,6 +28,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="SequencePuzzleTemplate" type="Node2D" unique_id=1076373484] +[node name="PlayerMode" type="Node" parent="." unique_id=1973535693] +script = ExtResource("1_pm1er") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="TileMapLayers" type="Node2D" parent="." unique_id=2124819364] [node name="Water_Level1" type="TileMapLayer" parent="TileMapLayers" unique_id=1314417509] diff --git a/scenes/quests/story_quests/verso/1_verso_combat_anger/defeat_enemy.gd b/scenes/quests/story_quests/verso/1_verso_combat_anger/defeat_enemy.gd index 8c6ce3b9c6..8f5d84c4b4 100644 --- a/scenes/quests/story_quests/verso/1_verso_combat_anger/defeat_enemy.gd +++ b/scenes/quests/story_quests/verso/1_verso_combat_anger/defeat_enemy.gd @@ -8,9 +8,6 @@ var enemies_left: int = 6 signal goal_reached func start() -> void: - var player: Player = get_tree().get_first_node_in_group("player") - if player: - player.mode = Player.Mode.FIGHTING get_tree().call_group("throwing_enemy", "start") @@ -32,7 +29,4 @@ func _update_allowed_colors() -> void: func _on_enemy_defeated() -> void: enemies_left -= 1 if enemies_left <= 0: - var player: Player = get_tree().get_first_node_in_group("player") - if player: - player.mode = Player.Mode.COZY goal_reached.emit() diff --git a/scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat.tscn b/scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat.tscn index d690c1d6f8..3d2e5896f7 100644 --- a/scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat.tscn +++ b/scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat.tscn @@ -1,6 +1,7 @@ [gd_scene format=4 uid="uid://csils82h5vm3d"] [ext_resource type="Script" uid="uid://c7mhyw74ssjpy" path="res://scenes/quests/story_quests/verso/1_verso_combat_anger/defeat_enemy.gd" id="1_2bah4"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmv87"] [ext_resource type="Texture2D" uid="uid://cnlp5ijrpt33" path="res://scenes/quests/story_quests/verso/assets/Desk_Tiles.png" id="3_5sxs3"] [ext_resource type="Texture2D" uid="uid://fg81hso7a3fn" path="res://scenes/quests/story_quests/verso/assets/Right_Border_Desk_Tiles.png" id="3_gbl6x"] [ext_resource type="Texture2D" uid="uid://c0b6fehp1xr2l" path="res://scenes/quests/story_quests/verso/assets/Border_Desk_Tiles.png" id="4_gcgby"] @@ -318,6 +319,11 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="Combat" type="Node2D" unique_id=139364543] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=1631046259] +script = ExtResource("1_pmv87") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="defeatGameLogic" type="Node" parent="." unique_id=1210284106] script = ExtResource("1_2bah4") intro_dialogue = ExtResource("26_m5ihe") diff --git a/scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat_components/ThrowingEnemyHealth.tscn b/scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat_components/ThrowingEnemyHealth.tscn index f2e9b2f4f7..1b19f7f657 100644 --- a/scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat_components/ThrowingEnemyHealth.tscn +++ b/scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat_components/ThrowingEnemyHealth.tscn @@ -1,7 +1,7 @@ [gd_scene format=3 uid="uid://dcoas3imo10p5"] [ext_resource type="Script" uid="uid://djmphyxuypgn1" path="res://scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat_components/throwing_enemy_health.gd" id="1_88n2w"] -[ext_resource type="PackedScene" uid="uid://gonywq78u3xd" path="res://scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat_components/verso_projectile.tscn" id="2_1njs3"] +[ext_resource type="PackedScene" uid="uid://cwfsydjtknnsn" path="res://scenes/quests/story_quests/verso/1_verso_combat_anger/verso_combat_components/verso_projectile.tscn" id="2_1njs3"] [ext_resource type="SpriteFrames" uid="uid://deosvk5k4su5f" path="res://scenes/quests/template_quests/NO_EDIT/2_NO_EDIT_combat/NO_EDIT_combat_components/NO_EDIT_throwing_enemy.tres" id="2_88n2w"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_3vyb7"] diff --git a/scenes/quests/story_quests/verso/2_verso_stealth_sadness/verso_stealth.tscn b/scenes/quests/story_quests/verso/2_verso_stealth_sadness/verso_stealth.tscn index 9fb2daaeea..981b22fc4a 100644 --- a/scenes/quests/story_quests/verso/2_verso_stealth_sadness/verso_stealth.tscn +++ b/scenes/quests/story_quests/verso/2_verso_stealth_sadness/verso_stealth.tscn @@ -23,6 +23,7 @@ [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="11_0lwn1"] [ext_resource type="SpriteFrames" uid="uid://dy4hi40ctxeno" path="res://scenes/quests/story_quests/verso/verso_player_components/verso_player.tres" id="13_4e5pa"] [ext_resource type="Resource" uid="uid://de1u8st6lbktc" path="res://scenes/quests/story_quests/verso/2_verso_stealth_sadness/verso_stealth_components/verso_stealth.dialogue" id="21_lsgvj"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pml9x"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_lib0f"] texture = ExtResource("4_6m3nq") @@ -570,6 +571,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="StealthTemplateLevel2" type="Node2D" unique_id=884215565] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=359854539] +script = ExtResource("1_pml9x") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="StealthGameLogic" type="Node" parent="." unique_id=2076659766] script = ExtResource("1_g84g0") diff --git a/scenes/quests/story_quests/verso/3_verso_sequence_puzzle_happiness/verso_sequence_puzzle.tscn b/scenes/quests/story_quests/verso/3_verso_sequence_puzzle_happiness/verso_sequence_puzzle.tscn index f5844d7dc2..248eb62fcf 100644 --- a/scenes/quests/story_quests/verso/3_verso_sequence_puzzle_happiness/verso_sequence_puzzle.tscn +++ b/scenes/quests/story_quests/verso/3_verso_sequence_puzzle_happiness/verso_sequence_puzzle.tscn @@ -19,6 +19,7 @@ [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="18_g781g"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="19_w3ler"] [ext_resource type="Resource" uid="uid://buibv2w6d1mjg" path="res://scenes/quests/story_quests/verso/3_verso_sequence_puzzle_happiness/verso_sequence_puzzle.dialogue" id="20_x86hm"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_pmica"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_wnk0x"] texture = ExtResource("2_x86hm") @@ -95,6 +96,10 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="SequencePuzzleTemplate" type="Node2D" unique_id=1071676546] +[node name="PlayerMode" type="Node" parent="." unique_id=115442219] +script = ExtResource("1_pmica") +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="TileMapLayers" type="Node2D" parent="." unique_id=622078381] [node name="Paper Floor" type="TileMapLayer" parent="TileMapLayers" unique_id=1562166136] @@ -128,163 +133,163 @@ y_sort_enabled = true position = Vector2(356, 477) [node name="Blue-A" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1413748821 instance=ExtResource("4_xjexm")] -modulate = Color(0, 0.4, 0.6, 1) position = Vector2(-203, -255) +sprite_modulate = Color(0, 0.4, 0.6, 1) audio_stream = ExtResource("6_s6j3y") [node name="Blue-B" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1054074109 instance=ExtResource("4_xjexm")] -modulate = Color(0, 0.4, 0.6, 1) position = Vector2(-132, -256) +sprite_modulate = Color(0, 0.4, 0.6, 1) audio_stream = ExtResource("6_s6j3y") [node name="Blue-C" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1123751243 instance=ExtResource("4_xjexm")] -modulate = Color(0, 0.4, 0.6, 1) position = Vector2(-64, -255) +sprite_modulate = Color(0, 0.4, 0.6, 1) audio_stream = ExtResource("6_s6j3y") [node name="Blue-D" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1678232760 instance=ExtResource("4_xjexm")] -modulate = Color(0, 0.4, 0.6, 1) position = Vector2(3, -255) +sprite_modulate = Color(0, 0.4, 0.6, 1) audio_stream = ExtResource("6_s6j3y") [node name="Orange-A" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1933845443 instance=ExtResource("4_xjexm")] -modulate = Color(0.921569, 0.376471, 0.054902, 1) position = Vector2(308, 1) +sprite_modulate = Color(0.921569, 0.376471, 0.054902, 1) audio_stream = ExtResource("6_s6j3y") [node name="Orange-B" parent="OnTheGround/SequencePuzzle/Objects" unique_id=929685039 instance=ExtResource("4_xjexm")] -modulate = Color(0.921569, 0.376471, 0.054902, 1) position = Vector2(383, 1) +sprite_modulate = Color(0.921569, 0.376471, 0.054902, 1) audio_stream = ExtResource("6_s6j3y") [node name="Orange-C" parent="OnTheGround/SequencePuzzle/Objects" unique_id=2066541135 instance=ExtResource("4_xjexm")] -modulate = Color(0.921569, 0.376471, 0.054902, 1) position = Vector2(449, 1) +sprite_modulate = Color(0.921569, 0.376471, 0.054902, 1) audio_stream = ExtResource("6_s6j3y") [node name="Orange-D" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1747611984 instance=ExtResource("4_xjexm")] -modulate = Color(0.921569, 0.376471, 0.054902, 1) position = Vector2(517, 1) +sprite_modulate = Color(0.921569, 0.376471, 0.054902, 1) audio_stream = ExtResource("6_s6j3y") [node name="Pink-A" parent="OnTheGround/SequencePuzzle/Objects" unique_id=534635230 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.2937, 0.804817, 1) position = Vector2(309, -255) +sprite_modulate = Color(0.89, 0.2937, 0.804817, 1) audio_stream = ExtResource("7_x86hm") [node name="Pink-B" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1563306123 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.2937, 0.804817, 1) position = Vector2(382, -255) +sprite_modulate = Color(0.89, 0.2937, 0.804817, 1) audio_stream = ExtResource("7_x86hm") [node name="Pink-C" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1117287534 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.2937, 0.804817, 1) position = Vector2(448, -255) +sprite_modulate = Color(0.89, 0.2937, 0.804817, 1) audio_stream = ExtResource("7_x86hm") [node name="Pink-D" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1988271274 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.2937, 0.804817, 1) position = Vector2(515, -254) +sprite_modulate = Color(0.89, 0.2937, 0.804817, 1) audio_stream = ExtResource("7_x86hm") [node name="Yellow-A" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1473069242 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.804817, 0.2937, 1) position = Vector2(-203, 513) +sprite_modulate = Color(0.89, 0.804817, 0.2937, 1) audio_stream = ExtResource("8_wnk0x") [node name="Yellow-B" parent="OnTheGround/SequencePuzzle/Objects" unique_id=840892090 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.804817, 0.2937, 1) position = Vector2(-129, 513) +sprite_modulate = Color(0.89, 0.804817, 0.2937, 1) audio_stream = ExtResource("8_wnk0x") [node name="Yellow-C" parent="OnTheGround/SequencePuzzle/Objects" unique_id=574464313 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.804817, 0.2937, 1) position = Vector2(-62, 513) +sprite_modulate = Color(0.89, 0.804817, 0.2937, 1) audio_stream = ExtResource("8_wnk0x") [node name="Yellow-D" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1546738903 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.804817, 0.2937, 1) position = Vector2(7, 512) +sprite_modulate = Color(0.89, 0.804817, 0.2937, 1) audio_stream = ExtResource("8_wnk0x") [node name="Green-A" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1020679212 instance=ExtResource("4_xjexm")] -modulate = Color(0.188235, 0.717647, 0, 1) position = Vector2(-200, 257) +sprite_modulate = Color(0.188235, 0.717647, 0, 1) audio_stream = ExtResource("9_85rm0") [node name="Green-B" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1954061251 instance=ExtResource("4_xjexm")] -modulate = Color(0.188235, 0.717647, 0, 1) position = Vector2(-130, 257) +sprite_modulate = Color(0.188235, 0.717647, 0, 1) audio_stream = ExtResource("9_85rm0") [node name="Green-C" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1809163742 instance=ExtResource("4_xjexm")] -modulate = Color(0.188235, 0.717647, 0, 1) position = Vector2(-61, 257) +sprite_modulate = Color(0.188235, 0.717647, 0, 1) audio_stream = ExtResource("9_85rm0") [node name="Green-D" parent="OnTheGround/SequencePuzzle/Objects" unique_id=601733256 instance=ExtResource("4_xjexm")] -modulate = Color(0.188235, 0.717647, 0, 1) position = Vector2(2, 257) +sprite_modulate = Color(0.188235, 0.717647, 0, 1) audio_stream = ExtResource("9_85rm0") [node name="Purple-A" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1020630675 instance=ExtResource("4_xjexm")] -modulate = Color(0.464066, 0.2937, 0.89, 1) position = Vector2(310, 322) +sprite_modulate = Color(0.464066, 0.2937, 0.89, 1) audio_stream = ExtResource("10_6bstu") [node name="Purple-B" parent="OnTheGround/SequencePuzzle/Objects" unique_id=2122563024 instance=ExtResource("4_xjexm")] -modulate = Color(0.464066, 0.2937, 0.89, 1) position = Vector2(382, 322) +sprite_modulate = Color(0.464066, 0.2937, 0.89, 1) audio_stream = ExtResource("10_6bstu") [node name="Purple-C" parent="OnTheGround/SequencePuzzle/Objects" unique_id=145104056 instance=ExtResource("4_xjexm")] -modulate = Color(0.464066, 0.2937, 0.89, 1) position = Vector2(447, 321) +sprite_modulate = Color(0.464066, 0.2937, 0.89, 1) audio_stream = ExtResource("10_6bstu") [node name="Purple-D" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1545623190 instance=ExtResource("4_xjexm")] -modulate = Color(0.464066, 0.2937, 0.89, 1) position = Vector2(517, 321) +sprite_modulate = Color(0.464066, 0.2937, 0.89, 1) audio_stream = ExtResource("10_6bstu") [node name="Red-A" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1596166043 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.2937, 0.2937, 1) position = Vector2(-203, 1) +sprite_modulate = Color(0.89, 0.2937, 0.2937, 1) audio_stream = ExtResource("11_oxk7y") [node name="Red-B" parent="OnTheGround/SequencePuzzle/Objects" unique_id=2026812242 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.2937, 0.2937, 1) position = Vector2(-130, 1) +sprite_modulate = Color(0.89, 0.2937, 0.2937, 1) audio_stream = ExtResource("11_oxk7y") [node name="Red-C" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1855725487 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.2937, 0.2937, 1) position = Vector2(-64, 1) +sprite_modulate = Color(0.89, 0.2937, 0.2937, 1) audio_stream = ExtResource("11_oxk7y") [node name="Red-D" parent="OnTheGround/SequencePuzzle/Objects" unique_id=581412990 instance=ExtResource("4_xjexm")] -modulate = Color(0.89, 0.2937, 0.2937, 1) position = Vector2(3, 1) +sprite_modulate = Color(0.89, 0.2937, 0.2937, 1) audio_stream = ExtResource("11_oxk7y") [node name="Aqua-A" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1566301102 instance=ExtResource("4_xjexm")] -modulate = Color(0.157524, 0.609595, 0.547946, 1) position = Vector2(310, 514) +sprite_modulate = Color(0.157524, 0.609595, 0.547946, 1) audio_stream = ExtResource("11_oxk7y") [node name="Aqua-B" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1935404781 instance=ExtResource("4_xjexm")] -modulate = Color(0.157524, 0.609595, 0.547946, 1) position = Vector2(384, 514) +sprite_modulate = Color(0.157524, 0.609595, 0.547946, 1) audio_stream = ExtResource("11_oxk7y") [node name="Aqua-C" parent="OnTheGround/SequencePuzzle/Objects" unique_id=1993277622 instance=ExtResource("4_xjexm")] -modulate = Color(0.157524, 0.609595, 0.547946, 1) position = Vector2(451, 514) +sprite_modulate = Color(0.157524, 0.609595, 0.547946, 1) audio_stream = ExtResource("11_oxk7y") [node name="Aqua-D" parent="OnTheGround/SequencePuzzle/Objects" unique_id=2121565449 instance=ExtResource("4_xjexm")] -modulate = Color(0.157524, 0.609595, 0.547946, 1) position = Vector2(517, 514) +sprite_modulate = Color(0.157524, 0.609595, 0.547946, 1) audio_stream = ExtResource("11_oxk7y") [node name="Signs" type="Node2D" parent="OnTheGround/SequencePuzzle" unique_id=1266414709] diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro.dialogue.import b/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro.dialogue.import deleted file mode 100644 index ed011170bb..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://br7l03ywmnj1i" -path="res://.godot/imported/wizzy_quest_intro.dialogue-bd42da4b70322c6e9c4a0bb72b7b5f23.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_intro.dialogue-bd42da4b70322c6e9c4a0bb72b7b5f23.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro_image.png b/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro_image.png deleted file mode 100644 index be304234d6..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro_image.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e3135b6964d0eff604425d69c61fe85796f45f20171f24a07ddfa18b51994429 -size 3434 diff --git a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro_image.png.import b/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro_image.png.import deleted file mode 100644 index 5667e80cac..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro_image.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cc4ekgexr11ui" -path="res://.godot/imported/wizzy_quest_intro_image.png-4a6a6966c1f84d2ccd1a9c93c4b6fbce.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/0_intro/intro_components/wizzy_quest_intro_image.png" -dest_files=["res://.godot/imported/wizzy_quest_intro_image.png-4a6a6966c1f84d2ccd1a9c93c4b6fbce.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/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint.dialogue.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint.dialogue.import deleted file mode 100644 index 89807e833d..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://d1edvtgj82phd" -path="res://.godot/imported/wizzy_quest_checkpoint.dialogue-5b4c992946edab7fa635944eb975f659.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_checkpoint.dialogue-5b4c992946edab7fa635944eb975f659.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint1.dialogue.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint1.dialogue.import deleted file mode 100644 index e022c32f6d..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint1.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://dwoljw1ukn3ni" -path="res://.godot/imported/wizzy_quest_checkpoint1.dialogue-0a90acdf488619ed6e403a5e01275d26.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint1.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_checkpoint1.dialogue-0a90acdf488619ed6e403a5e01275d26.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint2.dialogue.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint2.dialogue.import deleted file mode 100644 index a769aae22a..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint2.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://bbfxjku2ka16q" -path="res://.godot/imported/wizzy_quest_checkpoint2.dialogue-163e613c0d05333f270f5a20b667d2c7.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint2.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_checkpoint2.dialogue-163e613c0d05333f270f5a20b667d2c7.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint3.dialogue.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint3.dialogue.import deleted file mode 100644 index bda7735eb0..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint3.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://batfvm4hnf05w" -path="res://.godot/imported/wizzy_quest_checkpoint3.dialogue-39fefbdd4ab326a950282ca57d490f53.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint3.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_checkpoint3.dialogue-39fefbdd4ab326a950282ca57d490f53.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint4.dialogue.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint4.dialogue.import deleted file mode 100644 index b752caaad8..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint4.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://dwx8skx5dms6a" -path="res://.godot/imported/wizzy_quest_checkpoint4.dialogue-f491f57b3fea359f7f5d6a6d6e635981.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint4.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_checkpoint4.dialogue-f491f57b3fea359f7f5d6a6d6e635981.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint5.dialogue.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint5.dialogue.import deleted file mode 100644 index e6f0561d7c..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint5.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://ddu51fy1a7xow" -path="res://.godot/imported/wizzy_quest_checkpoint5.dialogue-692221654b408ea7b49f1cab6dbf9ef4.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_checkpoint5.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_checkpoint5.dialogue-692221654b408ea7b49f1cab6dbf9ef4.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_collected.dialogue.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_collected.dialogue.import deleted file mode 100644 index 5eaefcf02b..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_collected.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://b8l6wf0v8qui6" -path="res://.godot/imported/wizzy_quest_collected.dialogue-5ff8fdbac5063b064380cd7a6bec3fbd.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_collected.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_collected.dialogue-5ff8fdbac5063b064380cd7a6bec3fbd.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_alerted.png b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_alerted.png deleted file mode 100644 index d9cd19d587..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_alerted.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6edf52d1710c2a689ad7b1f394644415acb2f2cf13c2a1d557493a230bb5b0ca -size 4655 diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_alerted.png.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_alerted.png.import deleted file mode 100644 index ee6f2669a7..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_alerted.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bnrowigoaf6vq" -path="res://.godot/imported/wizzy_quest_guard_enemy_alerted.png-976b6135705e070677789abad3c06d11.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_alerted.png" -dest_files=["res://.godot/imported/wizzy_quest_guard_enemy_alerted.png-976b6135705e070677789abad3c06d11.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/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_idle.png b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_idle.png deleted file mode 100644 index e6f0cd4fa0..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_idle.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9200662d05ca05e6d22563e5f184b416cfc20a186d6c16620df75f73c0be1eb0 -size 2280 diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_idle.png.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_idle.png.import deleted file mode 100644 index d59638cee4..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_idle.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://06omqckbs1p6" -path="res://.godot/imported/wizzy_quest_guard_enemy_idle.png-6274cbf027a3113f9e5ab2623628e81e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_idle.png" -dest_files=["res://.godot/imported/wizzy_quest_guard_enemy_idle.png-6274cbf027a3113f9e5ab2623628e81e.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/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_walk.png b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_walk.png deleted file mode 100644 index 1aea580932..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_walk.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0b8b725ffa9829b3095e3b830ca0eec894771cfee0a39d2e80e98e2964591581 -size 2803 diff --git a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_walk.png.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_walk.png.import deleted file mode 100644 index 215912efe2..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_walk.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bhy61v8j65xqc" -path="res://.godot/imported/wizzy_quest_guard_enemy_walk.png-a48c6df9f710d5b2d51039bfb8e017b7.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_guard_enemy_walk.png" -dest_files=["res://.godot/imported/wizzy_quest_guard_enemy_walk.png-a48c6df9f710d5b2d51039bfb8e017b7.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/wizzy_quest/1_stealth/stealth_components/wizzy_quest_stealth.dialogue.import b/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_stealth.dialogue.import deleted file mode 100644 index 8539b7ac0d..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_stealth.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://de765vp54x228" -path="res://.godot/imported/wizzy_quest_stealth.dialogue-6be67b44f7fc55cb48f8edb09be931c0.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/1_stealth/stealth_components/wizzy_quest_stealth.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_stealth.dialogue-6be67b44f7fc55cb48f8edb09be931c0.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_combat.dialogue.import b/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_combat.dialogue.import deleted file mode 100644 index b6cbe6e492..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_combat.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://dl7tk62id5pox" -path="res://.godot/imported/wizzy_quest_combat.dialogue-1aa5934ad9cb322945c7ad76021c0957.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_combat.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_combat.dialogue-1aa5934ad9cb322945c7ad76021c0957.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target.png b/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target.png deleted file mode 100644 index d1664b1573..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72f1df056417d9683047297f83a6bd8096be8bf2481a836745f4cb090f880c9d -size 1970 diff --git a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target.png.import b/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target.png.import deleted file mode 100644 index 6b520d6bda..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bx8nx80f27vq7" -path="res://.godot/imported/wizzy_quest_target.png-8c61b8e04fd534a056d8144187f89299.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/2_combat/combat_components/wizzy_quest_target.png" -dest_files=["res://.godot/imported/wizzy_quest_target.png-8c61b8e04fd534a056d8144187f89299.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/wizzy_quest/3_sequence_puzzle/wizzy_quest_sequence_puzzle.dialogue.import b/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sequence_puzzle.dialogue.import deleted file mode 100644 index 126c7ce138..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sequence_puzzle.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://t8ki7hxqccco" -path="res://.godot/imported/wizzy_quest_sequence_puzzle.dialogue-620b607d66dc49700cc5d9cd37e71688.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sequence_puzzle.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_sequence_puzzle.dialogue-620b607d66dc49700cc5d9cd37e71688.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.png b/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.png deleted file mode 100644 index af3508def7..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:965e0b889866da6208997a3b9200a6dad6d4f6b5237acfe096fa44886e3f0d61 -size 2354 diff --git a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.png.import b/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.png.import deleted file mode 100644 index 59c5760b2b..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cmc863gl7r1g8" -path="res://.godot/imported/wizzy_quest_sign.png-fe1eef963a1d720b9dca33585c386a0e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/3_sequence_puzzle/wizzy_quest_sign.png" -dest_files=["res://.godot/imported/wizzy_quest_sign.png-fe1eef963a1d720b9dca33585c386a0e.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/wizzy_quest/4_outro/outro_components/wizzy_quest_outro.dialogue.import b/scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/wizzy_quest_outro.dialogue.import deleted file mode 100644 index f8256e29fc..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/wizzy_quest_outro.dialogue.import +++ /dev/null @@ -1,16 +0,0 @@ -[remap] - -importer="dialogue_manager" -importer_version=15 -type="Resource" -uid="uid://b560x2686htil" -path="res://.godot/imported/wizzy_quest_outro.dialogue-5468e7360d348835750a554a712916c3.tres" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/4_outro/outro_components/wizzy_quest_outro.dialogue" -dest_files=["res://.godot/imported/wizzy_quest_outro.dialogue-5468e7360d348835750a554a712916c3.tres"] - -[params] - -defaults=true diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/105016__julien-matthey__jm-fx-fireball-01.mp3 b/scenes/quests/story_quests/wizzy_quest/Musica/105016__julien-matthey__jm-fx-fireball-01.mp3 deleted file mode 100644 index 761b30336f..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/105016__julien-matthey__jm-fx-fireball-01.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63f414de1c23b22ea03c03194040ed6f88b1db0b6377552a8bbeb3a7f7375bfb -size 32644 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/105016__julien-matthey__jm-fx-fireball-01.mp3.import b/scenes/quests/story_quests/wizzy_quest/Musica/105016__julien-matthey__jm-fx-fireball-01.mp3.import deleted file mode 100644 index 8050f6d7f6..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/105016__julien-matthey__jm-fx-fireball-01.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://gm5atlrt33kq" -path="res://.godot/imported/105016__julien-matthey__jm-fx-fireball-01.mp3-1233741ed0670652afce00d1ec634f7c.mp3str" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/105016__julien-matthey__jm-fx-fireball-01.mp3" -dest_files=["res://.godot/imported/105016__julien-matthey__jm-fx-fireball-01.mp3-1233741ed0670652afce00d1ec634f7c.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/Construction.mp3.import b/scenes/quests/story_quests/wizzy_quest/Musica/Construction.mp3.import deleted file mode 100644 index 5d29c74183..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/Construction.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://da0ptap0tsujw" -path="res://.godot/imported/Construction.mp3-32e4a7c3eb1f4e028408f943c43a8a79.mp3str" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/Construction.mp3" -dest_files=["res://.godot/imported/Construction.mp3-32e4a7c3eb1f4e028408f943c43a8a79.mp3str"] - -[params] - -loop=true -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/Fantasy Choir 3.mp3.import b/scenes/quests/story_quests/wizzy_quest/Musica/Fantasy Choir 3.mp3.import deleted file mode 100644 index d5436b8eb2..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/Fantasy Choir 3.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://b5d1eexymi57m" -path="res://.godot/imported/Fantasy Choir 3.mp3-1df2f318f8befe015de70e209c8e293e.mp3str" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/Fantasy Choir 3.mp3" -dest_files=["res://.godot/imported/Fantasy Choir 3.mp3-1df2f318f8befe015de70e209c8e293e.mp3str"] - -[params] - -loop=true -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/Memoraphile - Up in the Sky.mp3 b/scenes/quests/story_quests/wizzy_quest/Musica/Memoraphile - Up in the Sky.mp3 deleted file mode 100644 index bf27f0894e..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/Memoraphile - Up in the Sky.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c4c86cfd62e137ef8ff08a770e1aa067e118d0eabbcc83bca2e72a113ff7b424 -size 3163738 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/Memoraphile - Up in the Sky.mp3.import b/scenes/quests/story_quests/wizzy_quest/Musica/Memoraphile - Up in the Sky.mp3.import deleted file mode 100644 index 9cd1d3aad8..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/Memoraphile - Up in the Sky.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://dhwko1x6tfuvu" -path="res://.godot/imported/Memoraphile - Up in the Sky.mp3-4610643acedb2337ced9bb5205a1add1.mp3str" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/Memoraphile - Up in the Sky.mp3" -dest_files=["res://.godot/imported/Memoraphile - Up in the Sky.mp3-4610643acedb2337ced9bb5205a1add1.mp3str"] - -[params] - -loop=true -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/Minstrel_Dance.mp3 b/scenes/quests/story_quests/wizzy_quest/Musica/Minstrel_Dance.mp3 deleted file mode 100644 index ac4db6ba8c..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/Minstrel_Dance.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b01ff311b30a6cba5c12220d2171d903c73ba463e2ba45400223175ea00b8296 -size 5548500 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/Minstrel_Dance.mp3.import b/scenes/quests/story_quests/wizzy_quest/Musica/Minstrel_Dance.mp3.import deleted file mode 100644 index e62796e89c..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/Minstrel_Dance.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://bcbsnow6xac0j" -path="res://.godot/imported/Minstrel_Dance.mp3-3b3c121a2f4326b95f80a6d5fdcb288b.mp3str" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/Minstrel_Dance.mp3" -dest_files=["res://.godot/imported/Minstrel_Dance.mp3-3b3c121a2f4326b95f80a6d5fdcb288b.mp3str"] - -[params] - -loop=true -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/TownTheme.mp3 b/scenes/quests/story_quests/wizzy_quest/Musica/TownTheme.mp3 deleted file mode 100644 index 1fc28803af..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/TownTheme.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2657861d5107d4a3c01ef81cb6a4d61ddd5e7a054b6da57e658373d79d0c3466 -size 1316581 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/TownTheme.mp3.import b/scenes/quests/story_quests/wizzy_quest/Musica/TownTheme.mp3.import deleted file mode 100644 index aea9d2292d..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/TownTheme.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://cu5wkx8t4dlj2" -path="res://.godot/imported/TownTheme.mp3-ce700583e8a070aed21b24d2735573b7.mp3str" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/TownTheme.mp3" -dest_files=["res://.godot/imported/TownTheme.mp3-ce700583e8a070aed21b24d2735573b7.mp3str"] - -[params] - -loop=true -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/Win sound.mp3.import b/scenes/quests/story_quests/wizzy_quest/Musica/Win sound.mp3.import deleted file mode 100644 index 9776745aae..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/Win sound.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://bu56362rlkk3r" -path="res://.godot/imported/Win sound.mp3-6d4a21ca74819278c86e458c42fd1848.mp3str" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/Win sound.mp3" -dest_files=["res://.godot/imported/Win sound.mp3-6d4a21ca74819278c86e458c42fd1848.mp3str"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/gravel.ogg.import b/scenes/quests/story_quests/wizzy_quest/Musica/gravel.ogg.import deleted file mode 100644 index c52203c19e..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/gravel.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://cf5mt3dlgmhoo" -path="res://.godot/imported/gravel.ogg-8a5ee3aded0ce2bfb0f9cda5a9c4e487.oggvorbisstr" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/gravel.ogg" -dest_files=["res://.godot/imported/gravel.ogg-8a5ee3aded0ce2bfb0f9cda5a9c4e487.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/opening_theme.mp3.import b/scenes/quests/story_quests/wizzy_quest/Musica/opening_theme.mp3.import deleted file mode 100644 index d28f9fec6c..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/opening_theme.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://cksommwm3nvko" -path="res://.godot/imported/opening_theme.mp3-d2275880e3849ad1d3a8b80d7bda9f5c.mp3str" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/opening_theme.mp3" -dest_files=["res://.godot/imported/opening_theme.mp3-d2275880e3849ad1d3a8b80d7bda9f5c.mp3str"] - -[params] - -loop=true -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/qubodupImpactMeat01.ogg.import b/scenes/quests/story_quests/wizzy_quest/Musica/qubodupImpactMeat01.ogg.import deleted file mode 100644 index b4750a2eab..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/qubodupImpactMeat01.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://bpbgs3ewtm5xt" -path="res://.godot/imported/qubodupImpactMeat01.ogg-ba79ec31549a3cd545f179d655e46a56.oggvorbisstr" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/qubodupImpactMeat01.ogg" -dest_files=["res://.godot/imported/qubodupImpactMeat01.ogg-ba79ec31549a3cd545f179d655e46a56.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Musica/stone01.ogg.import b/scenes/quests/story_quests/wizzy_quest/Musica/stone01.ogg.import deleted file mode 100644 index b87f4c9215..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Musica/stone01.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://b8c84emih5wu1" -path="res://.godot/imported/stone01.ogg-a785cd0b62aacba84a4cfd7542384e74.oggvorbisstr" - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/Musica/stone01.ogg" -dest_files=["res://.godot/imported/stone01.ogg-a785cd0b62aacba84a4cfd7542384e74.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/scenes/quests/story_quests/wizzy_quest/Wizzy_guard_enemy.tres b/scenes/quests/story_quests/wizzy_quest/Wizzy_guard_enemy.tres deleted file mode 100644 index 738e9063d9..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/Wizzy_guard_enemy.tres +++ /dev/null @@ -1,128 +0,0 @@ -[gd_resource type="SpriteFrames" format=3 uid="uid://u0673qsf2i0u"] - -[ext_resource type="Texture2D" uid="uid://coddjxvahn4uy" path="res://assets/first_party/templates/guard_enemy/NO_EDIT_guard_enemy_alerted.png" id="1_ec4w6"] -[ext_resource type="Texture2D" uid="uid://dgci3qn52ul5r" path="res://assets/first_party/templates/guard_enemy/NO_EDIT_guard_enemy_idle.png" id="2_34t47"] -[ext_resource type="Texture2D" uid="uid://ylj56k2u3u6u" path="res://assets/first_party/templates/guard_enemy/NO_EDIT_guard_enemy_walk.png" id="3_xwl5b"] - -[sub_resource type="AtlasTexture" id="AtlasTexture_7yuat"] -atlas = ExtResource("1_ec4w6") -region = Rect2(0, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_jl6rj"] -atlas = ExtResource("1_ec4w6") -region = Rect2(384, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_xwccc"] -atlas = ExtResource("1_ec4w6") -region = Rect2(576, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_le63u"] -atlas = ExtResource("1_ec4w6") -region = Rect2(768, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_r2l1b"] -atlas = ExtResource("1_ec4w6") -region = Rect2(960, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_rn2a8"] -atlas = ExtResource("2_34t47") -region = Rect2(0, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_dhpc8"] -atlas = ExtResource("2_34t47") -region = Rect2(192, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_xpsa5"] -atlas = ExtResource("2_34t47") -region = Rect2(384, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_ty311"] -atlas = ExtResource("2_34t47") -region = Rect2(192, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_15ngm"] -atlas = ExtResource("3_xwl5b") -region = Rect2(0, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_vxxya"] -atlas = ExtResource("3_xwl5b") -region = Rect2(192, 0, 192, 192) - -[sub_resource type="AtlasTexture" id="AtlasTexture_s662v"] -atlas = ExtResource("3_xwl5b") -region = Rect2(384, 0, 192, 192) - -[resource] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_7yuat") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_jl6rj") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_xwccc") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_le63u") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_r2l1b") -}], -"loop": true, -"name": &"alerted", -"speed": 10.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_rn2a8") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_rn2a8") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_rn2a8") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_dhpc8") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_xpsa5") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_xpsa5") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_xpsa5") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_ty311") -}], -"loop": true, -"name": &"idle", -"speed": 10.0 -}, { -"frames": [{ -"duration": 1.0, -"texture": SubResource("AtlasTexture_15ngm") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_vxxya") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_s662v") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_15ngm") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_vxxya") -}, { -"duration": 1.0, -"texture": SubResource("AtlasTexture_s662v") -}], -"loop": true, -"name": &"walk", -"speed": 10.0 -}] diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_player.gd b/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_player.gd deleted file mode 100644 index 0a8c172435..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_player.gd +++ /dev/null @@ -1,26 +0,0 @@ -# SPDX-FileCopyrightText: 2025 Game-Lab-5-0-UTP-Group-1-Team-1 Contributors -# SPDX-License-Identifier: MPL-2.0 - -@tool -extends "res://scenes/game_elements/characters/player/components/player.gd" -## Custom player configuration for Wizzy Quest -## -## Applies custom scale and initial position offset specific to Wizzy Quest gameplay. -## The defeat animation logic is handled by wizzy_stealth_game_logic.gd. - -## Visual scale factor for the player sprite -@export var custom_scale: Vector2 = Vector2(0.8, 0.8) - -## Initial position offset (Vector2.ZERO means no offset) -@export var custom_position: Vector2 = Vector2.ZERO - - -func _ready() -> void: - super._ready() - - # Apply custom scale - #scale = custom_scale - - # Apply position offset if specified - #if custom_position != Vector2.ZERO: - #position = custom_position diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_player.gd.uid b/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_player.gd.uid deleted file mode 100644 index ebf1d7ebb1..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_player.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b58cbva7sgg4j diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_02.png b/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_02.png deleted file mode 100644 index 232e30e267..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_02.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:80698e94400e11e6937777db3bb377a2d4d9bb22f8155495647bb90bb0ecd80f -size 8103 diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_02.png.import b/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_02.png.import deleted file mode 100644 index 11ca2d7847..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_02.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dx8wi8jl2dejs" -path="res://.godot/imported/wizzy_quest_player_attack_02.png-1f9022ae56863c0cbffb22f00d2d56e9.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_attack_02.png" -dest_files=["res://.godot/imported/wizzy_quest_player_attack_02.png-1f9022ae56863c0cbffb22f00d2d56e9.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/wizzy_quest/player_components/wizzy_quest_player_defeated.png b/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_defeated.png deleted file mode 100644 index 43d41b4618..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_defeated.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2a0259035ce3a7e0e8ba6c6b7b8701c5c727ffa786a2281237dde23e28bd4d0e -size 1445 diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_defeated.png.import b/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_defeated.png.import deleted file mode 100644 index 74afb6bb95..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_defeated.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dytrm3d4jlpb3" -path="res://.godot/imported/wizzy_quest_player_defeated.png-d2d3ac0ec3f1c1f8de7caff24a3e52cd.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_defeated.png" -dest_files=["res://.godot/imported/wizzy_quest_player_defeated.png-d2d3ac0ec3f1c1f8de7caff24a3e52cd.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/wizzy_quest/player_components/wizzy_quest_player_idle.png b/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_idle.png deleted file mode 100644 index 45494eab05..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_idle.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ea0f06d116f50f9f2cbfd2ea6612d91a3666bf42412dbcc16e221b00b1a627a -size 5944 diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_idle.png.import b/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_idle.png.import deleted file mode 100644 index 6830574538..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_idle.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cs1edg0ljuqt0" -path="res://.godot/imported/wizzy_quest_player_idle.png-007d3148af71eba589a29e19a488f89c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_idle.png" -dest_files=["res://.godot/imported/wizzy_quest_player_idle.png-007d3148af71eba589a29e19a488f89c.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/wizzy_quest/player_components/wizzy_quest_player_walk.png b/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_walk.png deleted file mode 100644 index 28e35c23ff..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_walk.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:529016b59a9b4922ca23b2b0f425d964253f22f8a1ca549bce663ad1be1cc6f8 -size 6401 diff --git a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_walk.png.import b/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_walk.png.import deleted file mode 100644 index 76a670c3da..0000000000 --- a/scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_walk.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dnk1xkv0rbu0s" -path="res://.godot/imported/wizzy_quest_player_walk.png-5bb17789d7ff6469b358fb07ac9777a1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/quests/story_quests/wizzy_quest/player_components/wizzy_quest_player_walk.png" -dest_files=["res://.godot/imported/wizzy_quest_player_walk.png-5bb17789d7ff6469b358fb07ac9777a1.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/template_quests/NO_EDIT/2_NO_EDIT_combat/NO_EDIT_combat.tscn b/scenes/quests/template_quests/NO_EDIT/2_NO_EDIT_combat/NO_EDIT_combat.tscn index 144bf5e9e2..1178c811df 100644 --- a/scenes/quests/template_quests/NO_EDIT/2_NO_EDIT_combat/NO_EDIT_combat.tscn +++ b/scenes/quests/template_quests/NO_EDIT/2_NO_EDIT_combat/NO_EDIT_combat.tscn @@ -1,5 +1,6 @@ [gd_scene format=4 uid="uid://thwcu5akkqp5"] +[ext_resource type="Script" uid="uid://pk3ucq7e2eah" path="res://scenes/game_logic/player_mode.gd" id="1_dc7xv"] [ext_resource type="Script" uid="uid://x1mxt6bmei2o" path="res://scenes/ui_elements/cinematic/cinematic.gd" id="1_n2hj7"] [ext_resource type="Resource" uid="uid://3vrn5jdxov37" path="res://scenes/quests/template_quests/NO_EDIT/2_NO_EDIT_combat/NO_EDIT_combat_components/NO_EDIT_combat.dialogue" id="2_3qn31"] [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="4_5rr74"] @@ -12,7 +13,9 @@ [ext_resource type="Script" uid="uid://bgmwplmj3bfls" path="res://scenes/globals/game_state/inventory/inventory_item.gd" id="11_4lmqk"] [ext_resource type="PackedScene" uid="uid://b82nsrh332syj" path="res://scenes/game_elements/characters/enemies/throwing_enemy/throwing_enemy.tscn" id="11_64btt"] [ext_resource type="PackedScene" uid="uid://y8ha8abfyap2" path="res://scenes/game_elements/props/filling_barrel/filling_barrel.tscn" id="12_2eyq6"] +[ext_resource type="PackedScene" uid="uid://dmevaymmt6wco" path="res://scenes/game_elements/props/powerup/powerup.tscn" id="14_6xf5p"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="14_ttfgd"] +[ext_resource type="SpriteFrames" uid="uid://cualgrcaaggcm" path="res://scenes/game_elements/props/powerup/components/powerup_default.tres" id="15_kdldn"] [sub_resource type="Resource" id="Resource_a51xm"] script = ExtResource("11_4lmqk") @@ -22,6 +25,11 @@ metadata/_custom_type_script = "uid://bgmwplmj3bfls" [node name="NoEditCombat" type="Node2D" unique_id=1610054737] y_sort_enabled = true +[node name="PlayerMode" type="Node" parent="." unique_id=969358735] +script = ExtResource("1_dc7xv") +mode = 1 +metadata/_custom_type_script = "uid://pk3ucq7e2eah" + [node name="Cinematic" type="Node2D" parent="." unique_id=951341763] script = ExtResource("1_n2hj7") dialogue = ExtResource("2_3qn31") @@ -50,7 +58,6 @@ y_sort_enabled = true [node name="Player" parent="OnTheGround" unique_id=1799818537 instance=ExtResource("10_rcv3t")] position = Vector2(348, 335) -mode = 1 [node name="ThrowingNPC" parent="OnTheGround" unique_id=2065424633 instance=ExtResource("11_64btt")] position = Vector2(857, 300) @@ -100,6 +107,11 @@ item = SubResource("Resource_a51xm") collected_dialogue = ExtResource("2_3qn31") dialogue_title = &"well_done" +[node name="RepelPowerup" parent="OnTheGround" unique_id=1795462717 instance=ExtResource("14_6xf5p")] +position = Vector2(114, 488) +sprite_frames = ExtResource("15_kdldn") +highlight_color = Color(0, 0.4392157, 1, 1) + [node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1277924950] [node name="HUD" parent="." unique_id=1216951978 instance=ExtResource("14_ttfgd")] diff --git a/scenes/quests/template_quests/NO_EDIT/3_NO_EDIT_sequence_puzzle/NO_EDIT_sequence_puzzle.tscn b/scenes/quests/template_quests/NO_EDIT/3_NO_EDIT_sequence_puzzle/NO_EDIT_sequence_puzzle.tscn index ff7e6ac1ae..332f6117d3 100644 --- a/scenes/quests/template_quests/NO_EDIT/3_NO_EDIT_sequence_puzzle/NO_EDIT_sequence_puzzle.tscn +++ b/scenes/quests/template_quests/NO_EDIT/3_NO_EDIT_sequence_puzzle/NO_EDIT_sequence_puzzle.tscn @@ -74,32 +74,32 @@ y_sort_enabled = true position = Vector2(326, 489) [node name="Blue" parent="OnTheGround/SequencePuzzle/Objects" unique_id=288264421 instance=ExtResource("4_886p4")] -modulate = Color(0, 0.4, 0.6, 1) +sprite_modulate = Color(0, 0.4, 0.6, 1) audio_stream = ExtResource("5_5gydq") [node name="Pink" parent="OnTheGround/SequencePuzzle/Objects" unique_id=947200111 instance=ExtResource("4_886p4")] -modulate = Color(0.89, 0.2937, 0.804817, 1) position = Vector2(88, -10) +sprite_modulate = Color(0.89, 0.2937, 0.804817, 1) audio_stream = ExtResource("6_fpg8s") [node name="Yellow" parent="OnTheGround/SequencePuzzle/Objects" unique_id=883789242 instance=ExtResource("4_886p4")] -modulate = Color(0.89, 0.804817, 0.2937, 1) position = Vector2(176, -20) +sprite_modulate = Color(0.89, 0.804817, 0.2937, 1) audio_stream = ExtResource("7_abdni") [node name="Green" parent="OnTheGround/SequencePuzzle/Objects" unique_id=472811334 instance=ExtResource("4_886p4")] -modulate = Color(0.188235, 0.717647, 0, 1) position = Vector2(264, -30) +sprite_modulate = Color(0.188235, 0.717647, 0, 1) audio_stream = ExtResource("8_mka24") [node name="Purple" parent="OnTheGround/SequencePuzzle/Objects" unique_id=699569316 instance=ExtResource("4_886p4")] -modulate = Color(0.464066, 0.2937, 0.89, 1) position = Vector2(352, -40) +sprite_modulate = Color(0.464066, 0.2937, 0.89, 1) audio_stream = ExtResource("9_mmoxj") [node name="Red" parent="OnTheGround/SequencePuzzle/Objects" unique_id=141148153 instance=ExtResource("4_886p4")] -modulate = Color(0.89, 0.2937, 0.2937, 1) position = Vector2(440, -50) +sprite_modulate = Color(0.89, 0.2937, 0.2937, 1) audio_stream = ExtResource("10_ka56f") [node name="Signs" type="Node2D" parent="OnTheGround/SequencePuzzle" unique_id=1795857144] diff --git a/scenes/quests/template_quests/NO_EDIT/4_NO_EDIT_outro/NO_EDIT_outro.tscn b/scenes/quests/template_quests/NO_EDIT/4_NO_EDIT_outro/NO_EDIT_outro.tscn index d87caa7d09..8cec3fe2a5 100644 --- a/scenes/quests/template_quests/NO_EDIT/4_NO_EDIT_outro/NO_EDIT_outro.tscn +++ b/scenes/quests/template_quests/NO_EDIT/4_NO_EDIT_outro/NO_EDIT_outro.tscn @@ -5,6 +5,13 @@ [ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="2_1oaof"] [ext_resource type="SpriteFrames" uid="uid://vwf8e1v8brdp" path="res://scenes/quests/template_quests/NO_EDIT/NO_EDIT_player_components/NO_EDIT_player.tres" id="2_ka28e"] [ext_resource type="Resource" uid="uid://qceybl5dvpcp" path="res://scenes/quests/template_quests/NO_EDIT/4_NO_EDIT_outro/NO_EDIT_outro_components/NO_EDIT_outro.dialogue" id="2_wgmu0"] +[ext_resource type="Script" uid="uid://bdhjixygupit1" path="res://scenes/game_elements/props/area_filler/area_filler.gd" id="6_srdr1"] +[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="7_skqne"] +[ext_resource type="SpriteFrames" uid="uid://2ek86nvw6y28" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_yellow.tres" id="8_srdr1"] +[ext_resource type="SpriteFrames" uid="uid://d36eq8tqdaxdy" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_green.tres" id="9_skqne"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_0e5tb"] +size = Vector2(1205, 431) [node name="NoEditOutro" type="Node2D" unique_id=1273842832] @@ -46,3 +53,386 @@ script = ExtResource("1_wgmu0") dialogue = ExtResource("2_wgmu0") next_scene = "uid://cufkthb25mpxy" metadata/_custom_type_script = "uid://x1mxt6bmei2o" + +[node name="Forest" type="StaticBody2D" parent="." unique_id=1541633486] +editor_description = "This uses Threadbare's \"AreaFiller\" component to place trees randomly in a given area. Try adjusting the parameters on the AreaFiller node and press \"Refill\"." +y_sort_enabled = true +collision_layer = 16 +collision_mask = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Forest" unique_id=993919054] +position = Vector2(468, 76) +shape = SubResource("RectangleShape2D_0e5tb") + +[node name="AreaFiller" type="Node" parent="Forest" unique_id=1967072165] +script = ExtResource("6_srdr1") +scenes = Array[PackedScene]([ExtResource("7_skqne")]) +sprite_frames = Array[SpriteFrames]([ExtResource("8_srdr1"), ExtResource("9_skqne"), ExtResource("9_skqne"), ExtResource("9_skqne")]) +metadata/_custom_type_script = "uid://bdhjixygupit1" + +[node name="Tree" parent="Forest" unique_id=1182216860 instance=ExtResource("7_skqne")] +position = Vector2(-134.5, 29.312988) +scale = Vector2(0.9436444, 1.0067108) + +[node name="Tree2" parent="Forest" unique_id=1029692172 instance=ExtResource("7_skqne")] +position = Vector2(-33.856163, 73.79311) +scale = Vector2(1.113184, 1.1827277) + +[node name="Tree3" parent="Forest" unique_id=884474271 instance=ExtResource("7_skqne")] +position = Vector2(-98.66641, 142.2037) +scale = Vector2(0.9079491, 0.89297915) + +[node name="Tree4" parent="Forest" unique_id=955509437 instance=ExtResource("7_skqne")] +position = Vector2(-32.555416, 154.65326) +scale = Vector2(1.094416, 1.1684742) + +[node name="Tree5" parent="Forest" unique_id=585952425 instance=ExtResource("7_skqne")] +position = Vector2(-95.59292, -25.405144) +scale = Vector2(0.98880094, 1.0183204) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree6" parent="Forest" unique_id=909881077 instance=ExtResource("7_skqne")] +position = Vector2(29.976124, -12.600311) +scale = Vector2(1.0008545, 0.9437981) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree7" parent="Forest" unique_id=499287593 instance=ExtResource("7_skqne")] +position = Vector2(-114.95415, -127.28391) +scale = Vector2(1.1843371, 1.0949713) + +[node name="Tree8" parent="Forest" unique_id=1842273849 instance=ExtResource("7_skqne")] +position = Vector2(126.75061, -82.571144) +scale = Vector2(0.96559054, 1.0651643) + +[node name="Tree9" parent="Forest" unique_id=1084363194 instance=ExtResource("7_skqne")] +position = Vector2(-52.05436, 241.94772) +scale = Vector2(1.002877, 0.9765011) + +[node name="Tree10" parent="Forest" unique_id=1636164458 instance=ExtResource("7_skqne")] +position = Vector2(62.6756, 239.02135) +scale = Vector2(1.117693, 1.0874206) + +[node name="Tree11" parent="Forest" unique_id=895164361 instance=ExtResource("7_skqne")] +position = Vector2(-132.86728, 234.3855) +scale = Vector2(1.0381949, 1.0544606) + +[node name="Tree12" parent="Forest" unique_id=1356986763 instance=ExtResource("7_skqne")] +position = Vector2(-41.627945, -96.08947) +scale = Vector2(0.978142, 1.0348583) + +[node name="Tree13" parent="Forest" unique_id=184854836 instance=ExtResource("7_skqne")] +position = Vector2(15.340748, -137.30919) +scale = Vector2(0.9844353, 1.0476297) + +[node name="Tree14" parent="Forest" unique_id=470414552 instance=ExtResource("7_skqne")] +position = Vector2(183.38521, 204.33644) +scale = Vector2(1.0602809, 1.0239228) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree15" parent="Forest" unique_id=52995768 instance=ExtResource("7_skqne")] +position = Vector2(69.54943, 108.15143) +scale = Vector2(1.0580077, 1.0457476) + +[node name="Tree16" parent="Forest" unique_id=1761511357 instance=ExtResource("7_skqne")] +position = Vector2(241.19507, -34.185955) +scale = Vector2(1.1031436, 1.1967103) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree17" parent="Forest" unique_id=927952209 instance=ExtResource("7_skqne")] +position = Vector2(30.239857, 51.481262) +scale = Vector2(0.88363844, 0.8252952) + +[node name="Tree18" parent="Forest" unique_id=2028111176 instance=ExtResource("7_skqne")] +position = Vector2(140.60526, 42.702507) +scale = Vector2(0.81033456, 0.84401214) + +[node name="Tree19" parent="Forest" unique_id=1511987762 instance=ExtResource("7_skqne")] +position = Vector2(45.170464, 169.35323) +scale = Vector2(0.85733956, 0.92838824) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree20" parent="Forest" unique_id=1431821957 instance=ExtResource("7_skqne")] +position = Vector2(113.20367, 282.97287) +scale = Vector2(1.0311427, 1.038447) + +[node name="Tree21" parent="Forest" unique_id=390950160 instance=ExtResource("7_skqne")] +position = Vector2(197.85796, 85.88806) +scale = Vector2(1.1616871, 1.0655842) + +[node name="Tree22" parent="Forest" unique_id=1750576734 instance=ExtResource("7_skqne")] +position = Vector2(151.54352, 148.52206) +scale = Vector2(0.86864305, 0.9299557) + +[node name="Tree23" parent="Forest" unique_id=1917935742 instance=ExtResource("7_skqne")] +position = Vector2(339.03198, -7.323471) +scale = Vector2(0.96201044, 0.9151595) + +[node name="Tree24" parent="Forest" unique_id=190800120 instance=ExtResource("7_skqne")] +position = Vector2(79.95763, -138.9119) +scale = Vector2(1.0670353, 1.1737987) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree25" parent="Forest" unique_id=605636623 instance=ExtResource("7_skqne")] +position = Vector2(179.41022, 289.3844) +scale = Vector2(0.96739507, 0.95261586) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree26" parent="Forest" unique_id=612912990 instance=ExtResource("7_skqne")] +position = Vector2(7.153347, 271.36307) +scale = Vector2(1.1526139, 1.1974825) + +[node name="Tree27" parent="Forest" unique_id=1259775730 instance=ExtResource("7_skqne")] +position = Vector2(284.4489, 147.55801) +scale = Vector2(1.0065422, 1.0803994) + +[node name="Tree28" parent="Forest" unique_id=1620817876 instance=ExtResource("7_skqne")] +position = Vector2(459.67792, 28.936611) +scale = Vector2(1.0790955, 1.0632309) + +[node name="Tree29" parent="Forest" unique_id=679120749 instance=ExtResource("7_skqne")] +position = Vector2(265.90576, 239.39372) +scale = Vector2(1.0231422, 0.9937232) + +[node name="Tree30" parent="Forest" unique_id=330095770 instance=ExtResource("7_skqne")] +position = Vector2(384.97662, -64.782715) +scale = Vector2(1.2998596, 1.1824818) + +[node name="Tree31" parent="Forest" unique_id=1620979670 instance=ExtResource("7_skqne")] +position = Vector2(316.75488, 74.72743) +scale = Vector2(0.9387665, 0.8754183) + +[node name="Tree32" parent="Forest" unique_id=1091258289 instance=ExtResource("7_skqne")] +position = Vector2(539.60394, -67.804276) +scale = Vector2(1.0461669, 1.0291582) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree33" parent="Forest" unique_id=957147275 instance=ExtResource("7_skqne")] +position = Vector2(615.2034, -98.0556) +scale = Vector2(1.0364168, 0.9924647) + +[node name="Tree34" parent="Forest" unique_id=13041936 instance=ExtResource("7_skqne")] +position = Vector2(563.84625, 36.110687) +scale = Vector2(0.9444068, 1.0238725) + +[node name="Tree35" parent="Forest" unique_id=998504414 instance=ExtResource("7_skqne")] +position = Vector2(343.1781, 282.12503) +scale = Vector2(0.9821974, 1.0447962) + +[node name="Tree36" parent="Forest" unique_id=21545210 instance=ExtResource("7_skqne")] +position = Vector2(708.67926, -64.661316) +scale = Vector2(0.8227171, 0.84662884) + +[node name="Tree37" parent="Forest" unique_id=1212603744 instance=ExtResource("7_skqne")] +position = Vector2(261.76334, -113.55063) +scale = Vector2(1.1422975, 1.1544138) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree38" parent="Forest" unique_id=2132313783 instance=ExtResource("7_skqne")] +position = Vector2(390.5647, 119.08969) +scale = Vector2(0.9104163, 0.92448384) + +[node name="Tree39" parent="Forest" unique_id=1384114981 instance=ExtResource("7_skqne")] +position = Vector2(361.24524, 194.41162) +scale = Vector2(0.8350715, 0.8931964) + +[node name="Tree40" parent="Forest" unique_id=1300998146 instance=ExtResource("7_skqne")] +position = Vector2(447.9682, -36.430153) +scale = Vector2(1.2120489, 1.1548411) + +[node name="Tree41" parent="Forest" unique_id=1011352153 instance=ExtResource("7_skqne")] +position = Vector2(194.31424, -87.19996) +scale = Vector2(1.1514823, 1.0825572) + +[node name="Tree42" parent="Forest" unique_id=1744140347 instance=ExtResource("7_skqne")] +position = Vector2(664.6819, 7.1543636) +scale = Vector2(0.9748106, 0.9679873) + +[node name="Tree43" parent="Forest" unique_id=2017190457 instance=ExtResource("7_skqne")] +position = Vector2(460.0891, 262.448) +scale = Vector2(1.0436357, 1.096538) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree44" parent="Forest" unique_id=1399669268 instance=ExtResource("7_skqne")] +position = Vector2(451.05997, -138.89368) +scale = Vector2(1.2118458, 1.187988) + +[node name="Tree45" parent="Forest" unique_id=913898865 instance=ExtResource("7_skqne")] +position = Vector2(445.76334, 193.07227) +scale = Vector2(0.8612578, 0.9037653) + +[node name="Tree46" parent="Forest" unique_id=876219326 instance=ExtResource("7_skqne")] +position = Vector2(536.2084, 203.29436) +scale = Vector2(0.9916459, 1.080711) + +[node name="Tree47" parent="Forest" unique_id=593225992 instance=ExtResource("7_skqne")] +position = Vector2(373.8241, -138.66309) +scale = Vector2(1.0857643, 1.0913429) + +[node name="Tree48" parent="Forest" unique_id=427435192 instance=ExtResource("7_skqne")] +position = Vector2(573.9232, 287.15823) +scale = Vector2(0.7914543, 0.8055921) + +[node name="Tree49" parent="Forest" unique_id=1320319017 instance=ExtResource("7_skqne")] +position = Vector2(396.8912, 44.271004) +scale = Vector2(0.97601926, 0.90482444) + +[node name="Tree50" parent="Forest" unique_id=1473332897 instance=ExtResource("7_skqne")] +position = Vector2(454.7281, 126.57288) +scale = Vector2(1.0258154, 1.0038793) + +[node name="Tree51" parent="Forest" unique_id=1110401912 instance=ExtResource("7_skqne")] +position = Vector2(550.0525, -134.28957) +scale = Vector2(1.1917449, 1.1268523) + +[node name="Tree52" parent="Forest" unique_id=1376181751 instance=ExtResource("7_skqne")] +position = Vector2(251.724, 38.09079) +scale = Vector2(0.75124043, 0.82121533) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree53" parent="Forest" unique_id=943889456 instance=ExtResource("7_skqne")] +position = Vector2(646.5388, 70.40961) +scale = Vector2(1.0954036, 1.0545138) + +[node name="Tree54" parent="Forest" unique_id=720804500 instance=ExtResource("7_skqne")] +position = Vector2(319.52994, -71.23583) +scale = Vector2(1.0721462, 1.1488492) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree55" parent="Forest" unique_id=1312447704 instance=ExtResource("7_skqne")] +position = Vector2(105.61249, -13.94154) +scale = Vector2(0.9677507, 0.9177646) + +[node name="Tree56" parent="Forest" unique_id=302322622 instance=ExtResource("7_skqne")] +position = Vector2(599.5595, 174.08086) +scale = Vector2(1.0315936, 1.0713472) + +[node name="Tree57" parent="Forest" unique_id=1784194626 instance=ExtResource("7_skqne")] +position = Vector2(595.26324, -35.46531) +scale = Vector2(1.000803, 1.0681803) + +[node name="Tree58" parent="Forest" unique_id=1589135074 instance=ExtResource("7_skqne")] +position = Vector2(544.8839, 133.90744) +scale = Vector2(0.8916407, 0.9103164) + +[node name="Tree59" parent="Forest" unique_id=224469784 instance=ExtResource("7_skqne")] +position = Vector2(725.4814, 192.2187) +scale = Vector2(0.92671424, 0.9521191) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree60" parent="Forest" unique_id=680715434 instance=ExtResource("7_skqne")] +position = Vector2(656.2242, 141.2435) +scale = Vector2(0.92301464, 0.9273033) + +[node name="Tree61" parent="Forest" unique_id=630570767 instance=ExtResource("7_skqne")] +position = Vector2(659.0734, 220.35179) +scale = Vector2(0.99410814, 0.9377908) + +[node name="Tree62" parent="Forest" unique_id=1605148098 instance=ExtResource("7_skqne")] +position = Vector2(738.88873, 50.73876) +scale = Vector2(1.1967351, 1.1055331) + +[node name="Tree63" parent="Forest" unique_id=1796070759 instance=ExtResource("7_skqne")] +position = Vector2(728.9966, 123.94755) +scale = Vector2(0.802388, 0.8563258) + +[node name="Tree64" parent="Forest" unique_id=2032525191 instance=ExtResource("7_skqne")] +position = Vector2(812.93256, 28.283005) +scale = Vector2(1.2428144, 1.183866) + +[node name="Tree65" parent="Forest" unique_id=1843099729 instance=ExtResource("7_skqne")] +position = Vector2(809.1381, 219.65874) +scale = Vector2(0.9372784, 0.859087) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree66" parent="Forest" unique_id=302262897 instance=ExtResource("7_skqne")] +position = Vector2(785.437, -38.855484) +scale = Vector2(1.1650894, 1.1027207) + +[node name="Tree67" parent="Forest" unique_id=418414748 instance=ExtResource("7_skqne")] +position = Vector2(692.19904, 289.17303) +scale = Vector2(0.84976095, 0.84610724) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree68" parent="Forest" unique_id=657909238 instance=ExtResource("7_skqne")] +position = Vector2(733.00336, -130.22266) +scale = Vector2(1.2356795, 1.1426313) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree69" parent="Forest" unique_id=2139026090 instance=ExtResource("7_skqne")] +position = Vector2(889.5211, 5.8428574) +scale = Vector2(0.8889678, 0.8271292) + +[node name="Tree70" parent="Forest" unique_id=1091760958 instance=ExtResource("7_skqne")] +position = Vector2(850.4721, 102.9041) +scale = Vector2(1.1543899, 1.0792053) + +[node name="Tree71" parent="Forest" unique_id=1056156635 instance=ExtResource("7_skqne")] +position = Vector2(944.99084, 65.57212) +scale = Vector2(1.1204253, 1.0844281) + +[node name="Tree72" parent="Forest" unique_id=65698928 instance=ExtResource("7_skqne")] +position = Vector2(865.87744, -97.17461) +scale = Vector2(1.0099723, 1.0769176) + +[node name="Tree73" parent="Forest" unique_id=610639831 instance=ExtResource("7_skqne")] +position = Vector2(798.1452, -124.866776) +scale = Vector2(0.81302536, 0.8925839) + +[node name="Tree74" parent="Forest" unique_id=1547463111 instance=ExtResource("7_skqne")] +position = Vector2(972.74054, -39.967968) +scale = Vector2(1.0657846, 1.1625344) + +[node name="Tree75" parent="Forest" unique_id=1283672125 instance=ExtResource("7_skqne")] +position = Vector2(904.30096, 167.05644) +scale = Vector2(0.88601166, 0.98139626) + +[node name="Tree76" parent="Forest" unique_id=64562302 instance=ExtResource("7_skqne")] +position = Vector2(816.12976, 284.85608) +scale = Vector2(1.1483678, 1.0605124) + +[node name="Tree77" parent="Forest" unique_id=364488893 instance=ExtResource("7_skqne")] +position = Vector2(921.76746, 249.26942) +scale = Vector2(0.99793696, 0.9381673) + +[node name="Tree78" parent="Forest" unique_id=1134392504 instance=ExtResource("7_skqne")] +position = Vector2(507.0583, 72.03578) +scale = Vector2(0.95707214, 0.9085272) + +[node name="Tree79" parent="Forest" unique_id=991637983 instance=ExtResource("7_skqne")] +position = Vector2(794.5368, 156.93163) +scale = Vector2(1.2042282, 1.1630253) + +[node name="Tree80" parent="Forest" unique_id=1412752416 instance=ExtResource("7_skqne")] +position = Vector2(1031.5326, 54.71153) +scale = Vector2(1.2455566, 1.1908455) + +[node name="Tree81" parent="Forest" unique_id=1516137243 instance=ExtResource("7_skqne")] +position = Vector2(1059.8826, -99.3994) +scale = Vector2(0.8901185, 0.88946646) + +[node name="Tree82" parent="Forest" unique_id=527174680 instance=ExtResource("7_skqne")] +position = Vector2(1032.1313, 127.08353) +scale = Vector2(0.77366775, 0.8220842) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree83" parent="Forest" unique_id=37939051 instance=ExtResource("7_skqne")] +position = Vector2(982.5354, -113.30713) +scale = Vector2(0.89498067, 0.8793378) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree84" parent="Forest" unique_id=1886195231 instance=ExtResource("7_skqne")] +position = Vector2(1049.3785, -20.898186) +scale = Vector2(1.1789399, 1.181437) + +[node name="Tree85" parent="Forest" unique_id=298636511 instance=ExtResource("7_skqne")] +position = Vector2(974.59296, 177.9414) +scale = Vector2(0.8917542, 0.9298732) + +[node name="Tree86" parent="Forest" unique_id=1559459914 instance=ExtResource("7_skqne")] +position = Vector2(1055.876, 249.39133) +scale = Vector2(1.0741869, 1.1028868) +sprite_frames = ExtResource("8_srdr1") + +[node name="Tree87" parent="Forest" unique_id=2091134076 instance=ExtResource("7_skqne")] +position = Vector2(985.18787, 284.2967) +scale = Vector2(1.0405519, 1.1536475) diff --git a/scenes/ui_elements/cinematic/cinematic.gd b/scenes/ui_elements/cinematic/cinematic.gd index 1ed7b70fe3..977405692f 100644 --- a/scenes/ui_elements/cinematic/cinematic.gd +++ b/scenes/ui_elements/cinematic/cinematic.gd @@ -25,8 +25,16 @@ signal cinematic_finished ## leave this blank. @export var spawn_point_path: String +## Wether to automatically start the cinematic. +@export var autostart: bool = true + func _ready() -> void: + if autostart: + start() + + +func start() -> void: if not GameState.intro_dialogue_shown: DialogueManager.show_dialogue_balloon(dialogue, "", [self]) await DialogueManager.dialogue_ended diff --git a/scenes/ui_elements/components/theme.tres b/scenes/ui_elements/components/theme.tres index 6adc91ce56..4014183a7c 100644 --- a/scenes/ui_elements/components/theme.tres +++ b/scenes/ui_elements/components/theme.tres @@ -143,6 +143,16 @@ texture_margin_right = 64.0 axis_stretch_horizontal = 2 axis_stretch_vertical = 2 +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_cjtkl"] + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_cjtkl"] +texture_margin_left = 64.0 +texture_margin_top = 12.0 +texture_margin_right = 64.0 +texture_margin_bottom = 12.0 +axis_stretch_horizontal = 1 +axis_stretch_vertical = 1 + [resource] default_font = ExtResource("9_ig61n") default_font_size = 27 @@ -162,6 +172,7 @@ Button/styles/normal = SubResource("StyleBoxTexture_rcupm") Button/styles/pressed = SubResource("StyleBoxTexture_w6oc6") CheckButton/styles/focus = SubResource("StyleBoxFlat_lerkg") CheckButton/styles/hover = SubResource("StyleBoxFlat_lerkg") +CheckButton/styles/hover_pressed = SubResource("StyleBoxFlat_lerkg") CheckButton/styles/normal = SubResource("StyleBoxEmpty_7k42u") CheckButton/styles/pressed = SubResource("StyleBoxEmpty_lerkg") FixedSizeLabel/base_type = &"Label" @@ -195,4 +206,9 @@ PlayerRibbon/base_type = &"PanelContainer" PlayerRibbon/styles/panel = SubResource("StyleBoxTexture_qmeow") RichTextLabel/colors/default_color = Color(0, 0, 0, 1) RichTextLabel/constants/line_separation = 3 +TabContainer/colors/font_unselected_color = Color(0, 0, 0, 1) +TabContainer/styles/panel = SubResource("StyleBoxEmpty_cjtkl") +TabContainer/styles/tab_hovered = SubResource("StyleBoxTexture_q6hjb") +TabContainer/styles/tab_selected = SubResource("StyleBoxTexture_lerkg") +TabContainer/styles/tab_unselected = SubResource("StyleBoxTexture_cjtkl") VBoxContainer/constants/separation = 21 diff --git a/scenes/ui_elements/input_hints/aim_input_hint.tscn b/scenes/ui_elements/input_hints/aim_input_hint.tscn index ee7f3f26af..ea54775411 100644 --- a/scenes/ui_elements/input_hints/aim_input_hint.tscn +++ b/scenes/ui_elements/input_hints/aim_input_hint.tscn @@ -1,11 +1,24 @@ [gd_scene format=3 uid="uid://cqkly1vjd6xhy"] +[ext_resource type="Material" uid="uid://cruf3tlajs4jo" path="res://scenes/ui_elements/input_hints/components/drop_shadow_material.tres" id="1_65rvq"] [ext_resource type="Texture2D" uid="uid://bc8ffgelnq2nn" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_arrows_none.tres" id="1_yljil"] [ext_resource type="Script" uid="uid://bcx7jadxu27en" path="res://scenes/game_elements/props/hint/input_key/directional_input_hint.gd" id="2_k7hqe"] +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="3_k7hqe"] -[node name="AimInputHint" type="TextureRect" unique_id=2095395309] -offset_right = 64.0 -offset_bottom = 64.0 +[node name="AimInputHint" type="HBoxContainer" unique_id=108528711] +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="AimHint" type="TextureRect" parent="." unique_id=2095395309] +material = ExtResource("1_65rvq") +layout_mode = 2 texture = ExtResource("1_yljil") script = ExtResource("2_k7hqe") action_prefix = &"aim" + +[node name="Label" type="Label" parent="." unique_id=1863729748] +layout_mode = 2 +theme = ExtResource("3_k7hqe") +theme_type_variation = &"HintLabel" +theme_override_font_sizes/font_size = 25 +text = "Aim" diff --git a/scenes/ui_elements/input_hints/components/drop_shadow.gdshader b/scenes/ui_elements/input_hints/components/drop_shadow.gdshader new file mode 100644 index 0000000000..6c2b66de2f --- /dev/null +++ b/scenes/ui_elements/input_hints/components/drop_shadow.gdshader @@ -0,0 +1,27 @@ +/** + * Drop shadow shader + * + * This shader drops a shadow. Intended for button textures + * in the input HUD. + * + * SPDX-FileCopyrightText: The Threadbare Authors + * SPDX-License-Identifier: MPL-2.0 + */ +shader_type canvas_item; + +uniform vec2 offset = vec2(2.0, 2.0); +uniform vec4 shadow_color: source_color = vec4(0.0, 0.0, 0.0, 1.0); + +varying vec4 modulate; + +void vertex() { + modulate = COLOR; +} + +void fragment() { + vec4 color = texture(TEXTURE, UV); + vec4 shadow = texture(TEXTURE, UV - offset * TEXTURE_PIXEL_SIZE); + shadow.rgb = shadow_color.rgb; + shadow.a *= shadow_color.a; + COLOR = mix(shadow, modulate * color, color.a); +} diff --git a/scenes/ui_elements/input_hints/components/drop_shadow.gdshader.uid b/scenes/ui_elements/input_hints/components/drop_shadow.gdshader.uid new file mode 100644 index 0000000000..917aab672c --- /dev/null +++ b/scenes/ui_elements/input_hints/components/drop_shadow.gdshader.uid @@ -0,0 +1 @@ +uid://ddrxo4iq6cxk7 diff --git a/scenes/ui_elements/input_hints/components/drop_shadow_material.tres b/scenes/ui_elements/input_hints/components/drop_shadow_material.tres new file mode 100644 index 0000000000..71f7b5680d --- /dev/null +++ b/scenes/ui_elements/input_hints/components/drop_shadow_material.tres @@ -0,0 +1,8 @@ +[gd_resource type="ShaderMaterial" format=3 uid="uid://cruf3tlajs4jo"] + +[ext_resource type="Shader" uid="uid://ddrxo4iq6cxk7" path="res://scenes/ui_elements/input_hints/components/drop_shadow.gdshader" id="1_k7b6b"] + +[resource] +shader = ExtResource("1_k7b6b") +shader_parameter/offset = Vector2(2, 2) +shader_parameter/shadow_color = Color(0, 0, 0, 1) diff --git a/scenes/ui_elements/input_hints/components/input_hud.gd b/scenes/ui_elements/input_hints/components/input_hud.gd new file mode 100644 index 0000000000..9064fa70ac --- /dev/null +++ b/scenes/ui_elements/input_hints/components/input_hud.gd @@ -0,0 +1,95 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +extends CanvasLayer + +var player: CharacterBody2D +var player_interaction: PlayerInteraction +var player_repel: PlayerRepel +var player_hook: PlayerHook + +var sokoban_ruleset: RuleEngine + +@onready var normal_controls := %NormalControls +@onready var interact_input_hint: LabeledInputHint = %InteractInputHint +@onready var aim_input_hint := %AimInputHint +@onready var throw_input_hint := %ThrowInputHint +@onready var repel_input_hint := %RepelInputHint + +@onready var sokoban_controls := %SokobanControls +@onready var skip_input_hint := %SkipInputHint + + +func _ready() -> void: + get_tree().scene_changed.connect(_on_scene_changed) + + Transitions.started.connect(_update_visibility) + Transitions.finished.connect(_update_visibility) + + # When running a scene that contains a player directly, this node becomes + # ready before the player. Defer the initial setup so that we can assume the + # whole scene (and in particular the player) is ready in + # _on_scene_changed(). This does not occur in normal gameplay because the + # main scene does not have a player (or sokoban ruleset), but is harmless in + # that case. + _on_scene_changed.call_deferred() + + +func _on_scene_changed() -> void: + player = get_tree().get_first_node_in_group("player") + sokoban_ruleset = get_tree().get_first_node_in_group("sokoban_ruleset") + + _update_visibility() + + if player: + normal_controls.visible = true + + player_interaction = player.get("player_interaction") as PlayerInteraction + if player_interaction: + player_interaction.interact_action_changed.connect(_update_player_state) + + player_repel = player.get("player_repel") as PlayerRepel + if player_repel: + player_repel.visibility_changed.connect(_update_player_state) + + player_hook = player.get("player_hook") as PlayerHook + if player_hook: + player_hook.visibility_changed.connect(_update_player_state) + + _update_player_state() + elif sokoban_ruleset: + sokoban_controls.visible = true + skip_input_hint.visible = false + sokoban_ruleset.skip_enabled.connect(_display_skip) + + +func _update_visibility() -> void: + visible = ( + Settings.show_input_hud + and not get_tree().paused + and not Transitions.is_running() + and (player or sokoban_ruleset) + ) + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_PAUSED, NOTIFICATION_UNPAUSED: + _update_visibility() + + +func _update_player_state() -> void: + if player_interaction: + var action := player_interaction.get_interact_action() + interact_input_hint.visible = not action.is_empty() + interact_input_hint.text = action + else: + interact_input_hint.visible = false + + repel_input_hint.visible = player_repel and player_repel.visible + + throw_input_hint.visible = player_hook and player_hook.visible + aim_input_hint.visible = player_hook and player_hook.visible + + +func _display_skip() -> void: + skip_input_hint.visible = true diff --git a/scenes/ui_elements/input_hints/components/input_hud.gd.uid b/scenes/ui_elements/input_hints/components/input_hud.gd.uid new file mode 100644 index 0000000000..6ebe301420 --- /dev/null +++ b/scenes/ui_elements/input_hints/components/input_hud.gd.uid @@ -0,0 +1 @@ +uid://bxl20vw5nxss6 diff --git a/scenes/ui_elements/input_hints/components/labeled_input_hint.gd b/scenes/ui_elements/input_hints/components/labeled_input_hint.gd new file mode 100644 index 0000000000..d082e25551 --- /dev/null +++ b/scenes/ui_elements/input_hints/components/labeled_input_hint.gd @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +class_name LabeledInputHint +extends Control + +## The text shown to the user for this hint. +var text: String: + get = get_text, + set = set_text + +@onready var label: Label = %Label + + +func get_text() -> String: + return label.text + + +func set_text(new_value: String) -> void: + label.text = new_value diff --git a/scenes/ui_elements/input_hints/components/labeled_input_hint.gd.uid b/scenes/ui_elements/input_hints/components/labeled_input_hint.gd.uid new file mode 100644 index 0000000000..1dba69c2c6 --- /dev/null +++ b/scenes/ui_elements/input_hints/components/labeled_input_hint.gd.uid @@ -0,0 +1 @@ +uid://ntkyy7hnkwh7 diff --git a/scenes/ui_elements/input_hints/input_hud.tscn b/scenes/ui_elements/input_hints/input_hud.tscn new file mode 100644 index 0000000000..6ed18e564c --- /dev/null +++ b/scenes/ui_elements/input_hints/input_hud.tscn @@ -0,0 +1,92 @@ +[gd_scene format=3 uid="uid://dfu3rocpande8"] + +[ext_resource type="Script" uid="uid://bxl20vw5nxss6" path="res://scenes/ui_elements/input_hints/components/input_hud.gd" id="1_bewlk"] +[ext_resource type="PackedScene" uid="uid://cqkly1vjd6xhy" path="res://scenes/ui_elements/input_hints/aim_input_hint.tscn" id="1_u1put"] +[ext_resource type="PackedScene" uid="uid://dt1y8odxq0xys" path="res://scenes/ui_elements/input_hints/movement_input_hint.tscn" id="2_bewlk"] +[ext_resource type="PackedScene" uid="uid://dkx3dgc1br3b4" path="res://scenes/ui_elements/input_hints/repel_input_hint.tscn" id="3_xu7en"] +[ext_resource type="PackedScene" uid="uid://b2r2pvcppbl4v" path="res://scenes/ui_elements/input_hints/interact_input_hint.tscn" id="4_ae80x"] +[ext_resource type="PackedScene" uid="uid://badjtfhkj7gbt" path="res://scenes/ui_elements/input_hints/run_input_hint.tscn" id="4_i3pcn"] +[ext_resource type="PackedScene" uid="uid://cdwf2nmeqns31" path="res://scenes/ui_elements/input_hints/throw_input_hint.tscn" id="5_ke286"] +[ext_resource type="PackedScene" uid="uid://bl3pt0n5r8tm5" path="res://scenes/ui_elements/input_hints/undo_input_hint.tscn" id="7_ke286"] +[ext_resource type="PackedScene" uid="uid://cjg3rptgsh0lf" path="res://scenes/ui_elements/input_hints/reset_input_hint.tscn" id="8_ae80x"] +[ext_resource type="PackedScene" uid="uid://b50dfpi7c1sdw" path="res://scenes/ui_elements/input_hints/skip_input_hint.tscn" id="9_ofrnu"] + +[node name="InputHud" type="CanvasLayer" unique_id=203487218] +layer = 36 +script = ExtResource("1_bewlk") + +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=176382299] +editor_description = "The 8px right margin is chosen to match the 8px margin in the dpad & keyboard-arrows icons." +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -64.0 +grow_horizontal = 2 +grow_vertical = 0 +mouse_behavior_recursive = 1 +theme_override_constants/margin_right = 8 + +[node name="TabContainer" type="TabContainer" parent="MarginContainer" unique_id=2133091109] +self_modulate = Color(1, 1, 1, 0) +layout_mode = 2 +current_tab = 0 +tabs_visible = false + +[node name="NormalControls" type="HBoxContainer" parent="MarginContainer/TabContainer" unique_id=2094239495] +unique_name_in_owner = true +z_index = 38 +layout_mode = 2 +metadata/_tab_index = 0 + +[node name="MovementInputHint" parent="MarginContainer/TabContainer/NormalControls" unique_id=30281671 instance=ExtResource("2_bewlk")] +layout_mode = 2 + +[node name="RunInputHint" parent="MarginContainer/TabContainer/NormalControls" unique_id=204428787 instance=ExtResource("4_i3pcn")] +layout_mode = 2 + +[node name="InteractInputHint" parent="MarginContainer/TabContainer/NormalControls" unique_id=1438993105 instance=ExtResource("4_ae80x")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Spacer" type="Control" parent="MarginContainer/TabContainer/NormalControls" unique_id=1059909765] +editor_description = "This empty control expands to fill the center of the hbox, pushing any controls packed after it to the right margin." +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="AimInputHint" parent="MarginContainer/TabContainer/NormalControls" unique_id=2095395309 instance=ExtResource("1_u1put")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="ThrowInputHint" parent="MarginContainer/TabContainer/NormalControls" unique_id=1113313011 instance=ExtResource("5_ke286")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="RepelInputHint" parent="MarginContainer/TabContainer/NormalControls" unique_id=1938432601 instance=ExtResource("3_xu7en")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="SokobanControls" type="HBoxContainer" parent="MarginContainer/TabContainer" unique_id=1543053795] +unique_name_in_owner = true +visible = false +layout_mode = 2 +metadata/_tab_index = 1 + +[node name="MovementInputHints" parent="MarginContainer/TabContainer/SokobanControls" unique_id=1797965313 instance=ExtResource("2_bewlk")] +layout_mode = 2 + +[node name="Spacer" type="Control" parent="MarginContainer/TabContainer/SokobanControls" unique_id=1667129251] +editor_description = "This empty control expands to fill the center of the hbox, pushing any controls packed after it to the right margin." +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SkipInputHint" parent="MarginContainer/TabContainer/SokobanControls" unique_id=2102034377 instance=ExtResource("9_ofrnu")] +unique_name_in_owner = true +visible = false +layout_mode = 2 + +[node name="ResetInputHint" parent="MarginContainer/TabContainer/SokobanControls" unique_id=1042096726 instance=ExtResource("8_ae80x")] +layout_mode = 2 + +[node name="UndoInputHint" parent="MarginContainer/TabContainer/SokobanControls" unique_id=1063563018 instance=ExtResource("7_ke286")] +layout_mode = 2 diff --git a/scenes/ui_elements/input_hints/interact_input_hint.tscn b/scenes/ui_elements/input_hints/interact_input_hint.tscn new file mode 100644 index 0000000000..26303d782b --- /dev/null +++ b/scenes/ui_elements/input_hints/interact_input_hint.tscn @@ -0,0 +1,28 @@ +[gd_scene format=3 uid="uid://b2r2pvcppbl4v"] + +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_txh2t"] +[ext_resource type="Script" uid="uid://ntkyy7hnkwh7" path="res://scenes/ui_elements/input_hints/components/labeled_input_hint.gd" id="2_y4ddx"] +[ext_resource type="Material" uid="uid://cruf3tlajs4jo" path="res://scenes/ui_elements/input_hints/components/drop_shadow_material.tres" id="3_pwflt"] +[ext_resource type="Texture2D" uid="uid://d2s8w7any6x45" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_space.tres" id="3_vvpol"] +[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="3_y4ddx"] +[ext_resource type="Resource" uid="uid://c1beocky1qjxi" path="res://scenes/game_elements/props/hint/resources/devices.tres" id="5_gekfg"] + +[node name="InteractInputHint" type="HBoxContainer" unique_id=1438993105] +theme = ExtResource("1_txh2t") +script = ExtResource("2_y4ddx") + +[node name="RepelHint" type="TextureRect" parent="." unique_id=492172300] +material = ExtResource("3_pwflt") +layout_mode = 2 +size_flags_vertical = 8 +texture = ExtResource("3_vvpol") +script = ExtResource("3_y4ddx") +action_name = &"interact" +devices = ExtResource("5_gekfg") + +[node name="Label" type="Label" parent="." unique_id=2095697003] +unique_name_in_owner = true +layout_mode = 2 +theme_type_variation = &"HintLabel" +theme_override_font_sizes/font_size = 25 +text = "Interact" diff --git a/scenes/ui_elements/input_hints/movement_input_hints.tscn b/scenes/ui_elements/input_hints/movement_input_hint.tscn similarity index 53% rename from scenes/ui_elements/input_hints/movement_input_hints.tscn rename to scenes/ui_elements/input_hints/movement_input_hint.tscn index eaedf068fd..2a58805b16 100644 --- a/scenes/ui_elements/input_hints/movement_input_hints.tscn +++ b/scenes/ui_elements/input_hints/movement_input_hint.tscn @@ -1,9 +1,11 @@ [gd_scene format=3 uid="uid://dt1y8odxq0xys"] [ext_resource type="Texture2D" uid="uid://bc8ffgelnq2nn" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_arrows_none.tres" id="1_wvg1n"] +[ext_resource type="Material" uid="uid://cruf3tlajs4jo" path="res://scenes/ui_elements/input_hints/components/drop_shadow_material.tres" id="1_yv88g"] +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="3_ie8jv"] [ext_resource type="Script" uid="uid://bcx7jadxu27en" path="res://scenes/game_elements/props/hint/input_key/directional_input_hint.gd" id="27_vxq6f"] -[node name="MovementInputHints" type="HBoxContainer" unique_id=30281671] +[node name="MovementInputHint" type="HBoxContainer" unique_id=30281671] texture_filter = 2 custom_minimum_size = Vector2(64, 64) offset_right = 64.0 @@ -11,6 +13,14 @@ offset_bottom = 64.0 size_flags_horizontal = 0 [node name="DirectionalInputHint" type="TextureRect" parent="." unique_id=883529731] +material = ExtResource("1_yv88g") layout_mode = 2 texture = ExtResource("1_wvg1n") script = ExtResource("27_vxq6f") + +[node name="Label" type="Label" parent="." unique_id=1745810665] +layout_mode = 2 +theme = ExtResource("3_ie8jv") +theme_type_variation = &"HintLabel" +theme_override_font_sizes/font_size = 25 +text = "Move" diff --git a/scenes/ui_elements/input_hints/repel_hint.tscn b/scenes/ui_elements/input_hints/repel_hint.tscn deleted file mode 100644 index 3c22671066..0000000000 --- a/scenes/ui_elements/input_hints/repel_hint.tscn +++ /dev/null @@ -1,30 +0,0 @@ -[gd_scene format=3 uid="uid://dkx3dgc1br3b4"] - -[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_ts6v2"] -[ext_resource type="Texture2D" uid="uid://cxnx628qkf1br" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_color_a.tres" id="2_ts6v2"] -[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="3_af5s8"] -[ext_resource type="Texture2D" uid="uid://c6fggds355rko" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_space_outline.tres" id="4_4cmwu"] -[ext_resource type="Texture2D" uid="uid://da6qvcr5sq71n" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_button_color_cross_outline.tres" id="5_af5s8"] -[ext_resource type="Texture2D" uid="uid://upt0tmtsk3y2" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_a.tres" id="6_dmgl2"] -[ext_resource type="Texture2D" uid="uid://d223ajwmavjy8" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_a_outline.tres" id="7_qr1ly"] - -[node name="RepelHint" type="HBoxContainer" unique_id=736303687] -theme = ExtResource("1_ts6v2") - -[node name="TextureRect" type="TextureRect" parent="." unique_id=142530974] -layout_mode = 2 -size_flags_vertical = 8 -texture = ExtResource("4_4cmwu") -script = ExtResource("3_af5s8") -action_name = &"interact" -keyboard_texture = ExtResource("4_4cmwu") -xbox_controller_texture = ExtResource("2_ts6v2") -playstation_controller_texture = ExtResource("5_af5s8") -nintendo_controller_texture = ExtResource("6_dmgl2") -steam_controller_texture = ExtResource("7_qr1ly") - -[node name="Label" type="Label" parent="." unique_id=1879289720] -layout_mode = 2 -theme_type_variation = &"HintLabel" -theme_override_font_sizes/font_size = 25 -text = "Repel" diff --git a/scenes/ui_elements/input_hints/repel_input_hint.tscn b/scenes/ui_elements/input_hints/repel_input_hint.tscn new file mode 100644 index 0000000000..b192b9eb57 --- /dev/null +++ b/scenes/ui_elements/input_hints/repel_input_hint.tscn @@ -0,0 +1,36 @@ +[gd_scene format=3 uid="uid://dkx3dgc1br3b4"] + +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_ts6v2"] +[ext_resource type="Material" uid="uid://cruf3tlajs4jo" path="res://scenes/ui_elements/input_hints/components/drop_shadow_material.tres" id="2_4govd"] +[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="3_af5s8"] +[ext_resource type="Resource" uid="uid://c1beocky1qjxi" path="res://scenes/game_elements/props/hint/resources/devices.tres" id="4_07f5k"] +[ext_resource type="Texture2D" uid="uid://dsre3bn521s4n" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/mouse_right_outline.tres" id="4_af5s8"] +[ext_resource type="Texture2D" uid="uid://bry0q0k1nmmyh" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_z.tres" id="8_j3y3l"] + +[node name="RepelInputHint" type="HBoxContainer" unique_id=736303687] +theme = ExtResource("1_ts6v2") + +[node name="RepelHint" type="TextureRect" parent="." unique_id=142530974] +material = ExtResource("2_4govd") +layout_mode = 2 +size_flags_vertical = 8 +texture = ExtResource("4_af5s8") +script = ExtResource("3_af5s8") +action_name = &"repel" +devices = ExtResource("4_07f5k") + +[node name="TextureRectAlt" type="TextureRect" parent="." unique_id=53201882] +material = ExtResource("2_4govd") +layout_mode = 2 +size_flags_vertical = 8 +texture = ExtResource("8_j3y3l") +script = ExtResource("3_af5s8") +action_name = &"repel" +alternative = true +devices = ExtResource("4_07f5k") + +[node name="Label" type="Label" parent="." unique_id=1879289720] +layout_mode = 2 +theme_type_variation = &"HintLabel" +theme_override_font_sizes/font_size = 25 +text = "Repel" diff --git a/scenes/ui_elements/input_hints/reset_input_hint.tscn b/scenes/ui_elements/input_hints/reset_input_hint.tscn new file mode 100644 index 0000000000..ae082935f8 --- /dev/null +++ b/scenes/ui_elements/input_hints/reset_input_hint.tscn @@ -0,0 +1,29 @@ +[gd_scene format=3 uid="uid://cjg3rptgsh0lf"] + +[ext_resource type="Texture2D" uid="uid://do0gp3uj3iiw3" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_r.tres" id="1_qfkb4"] +[ext_resource type="Material" uid="uid://cruf3tlajs4jo" path="res://scenes/ui_elements/input_hints/components/drop_shadow_material.tres" id="1_ykdc3"] +[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="2_jc2yi"] +[ext_resource type="Resource" uid="uid://c1beocky1qjxi" path="res://scenes/game_elements/props/hint/resources/devices.tres" id="3_qoa1j"] +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="7_ut24o"] + +[node name="ResettInputHint" type="HBoxContainer" unique_id=1042096726] +texture_filter = 2 +custom_minimum_size = Vector2(64, 64) +size_flags_horizontal = 0 + +[node name="ResetHint" type="TextureRect" parent="." unique_id=1319844575] +material = ExtResource("1_ykdc3") +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 8 +texture = ExtResource("1_qfkb4") +script = ExtResource("2_jc2yi") +action_name = &"sokoban_reset" +devices = ExtResource("3_qoa1j") + +[node name="Label" type="Label" parent="." unique_id=2059219668] +layout_mode = 2 +theme = ExtResource("7_ut24o") +theme_type_variation = &"HintLabel" +theme_override_font_sizes/font_size = 25 +text = "Reset" diff --git a/scenes/ui_elements/input_hints/run_hint.tscn b/scenes/ui_elements/input_hints/run_hint.tscn deleted file mode 100644 index cf8ab9e166..0000000000 --- a/scenes/ui_elements/input_hints/run_hint.tscn +++ /dev/null @@ -1,30 +0,0 @@ -[gd_scene format=3 uid="uid://badjtfhkj7gbt"] - -[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_fw67w"] -[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="2_fw67w"] -[ext_resource type="Texture2D" uid="uid://crjsc68he8u5s" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_shift_outline.tres" id="2_lfnk4"] -[ext_resource type="Texture2D" uid="uid://i8ml62flydha" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_color_lb_outline.tres" id="4_3yb1f"] -[ext_resource type="Texture2D" uid="uid://dfbsi8lsnorsm" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_trigger_l1_alternative_outline.tres" id="5_dr0c4"] -[ext_resource type="Texture2D" uid="uid://d3xcwvn1am5pi" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_l.tres" id="6_5kmqj"] -[ext_resource type="Texture2D" uid="uid://c2dy27tlmsigy" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_l1_outline.tres" id="7_ak3lp"] - -[node name="RunHint" type="HBoxContainer" unique_id=204428787] -custom_minimum_size = Vector2(64, 64) -theme = ExtResource("1_fw67w") - -[node name="TextureRect" type="TextureRect" parent="." unique_id=809781428] -custom_minimum_size = Vector2(64, 64) -layout_mode = 2 -texture = ExtResource("2_lfnk4") -script = ExtResource("2_fw67w") -action_name = &"running" -keyboard_texture = ExtResource("2_lfnk4") -xbox_controller_texture = ExtResource("4_3yb1f") -playstation_controller_texture = ExtResource("5_dr0c4") -nintendo_controller_texture = ExtResource("6_5kmqj") -steam_controller_texture = ExtResource("7_ak3lp") - -[node name="Label" type="Label" parent="." unique_id=779915588] -layout_mode = 2 -theme_type_variation = &"HintLabel" -text = "Run" diff --git a/scenes/ui_elements/input_hints/run_input_hint.tscn b/scenes/ui_elements/input_hints/run_input_hint.tscn new file mode 100644 index 0000000000..7774e81462 --- /dev/null +++ b/scenes/ui_elements/input_hints/run_input_hint.tscn @@ -0,0 +1,26 @@ +[gd_scene format=3 uid="uid://badjtfhkj7gbt"] + +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_fw67w"] +[ext_resource type="Material" uid="uid://cruf3tlajs4jo" path="res://scenes/ui_elements/input_hints/components/hint_button_material.tres" id="2_4tvpx"] +[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="2_fw67w"] +[ext_resource type="Texture2D" uid="uid://dnttje26if8fw" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_shift_icon.tres" id="2_l8qil"] +[ext_resource type="Resource" uid="uid://c1beocky1qjxi" path="res://scenes/game_elements/props/hint/resources/devices.tres" id="4_1lsuh"] + +[node name="RunInputHint" type="HBoxContainer" unique_id=204428787] +custom_minimum_size = Vector2(64, 64) +theme = ExtResource("1_fw67w") + +[node name="RunHint" type="TextureRect" parent="." unique_id=809781428] +material = ExtResource("2_4tvpx") +custom_minimum_size = Vector2(64, 64) +layout_mode = 2 +texture = ExtResource("2_l8qil") +script = ExtResource("2_fw67w") +action_name = &"running" +alternative = null +devices = ExtResource("4_1lsuh") + +[node name="Label" type="Label" parent="." unique_id=779915588] +layout_mode = 2 +theme_type_variation = &"HintLabel" +text = "Run" diff --git a/scenes/ui_elements/input_hints/skip_input_hint.tscn b/scenes/ui_elements/input_hints/skip_input_hint.tscn new file mode 100644 index 0000000000..397d075e99 --- /dev/null +++ b/scenes/ui_elements/input_hints/skip_input_hint.tscn @@ -0,0 +1,29 @@ +[gd_scene format=3 uid="uid://b50dfpi7c1sdw"] + +[ext_resource type="Material" uid="uid://cruf3tlajs4jo" path="res://scenes/ui_elements/input_hints/components/drop_shadow_material.tres" id="1_grytx"] +[ext_resource type="Texture2D" uid="uid://be8kao32d16ao" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_x.tres" id="1_sb40v"] +[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="2_6gqhh"] +[ext_resource type="Resource" uid="uid://c1beocky1qjxi" path="res://scenes/game_elements/props/hint/resources/devices.tres" id="3_86k3p"] +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="7_3w1ni"] + +[node name="SkipInputHint" type="HBoxContainer" unique_id=2102034377] +texture_filter = 2 +custom_minimum_size = Vector2(64, 64) +size_flags_horizontal = 0 + +[node name="InteractInput" type="TextureRect" parent="." unique_id=2083489092] +material = ExtResource("1_grytx") +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 8 +texture = ExtResource("1_sb40v") +script = ExtResource("2_6gqhh") +action_name = &"sokoban_skip" +devices = ExtResource("3_86k3p") + +[node name="Label" type="Label" parent="." unique_id=574082432] +layout_mode = 2 +theme = ExtResource("7_3w1ni") +theme_type_variation = &"HintLabel" +theme_override_font_sizes/font_size = 25 +text = "Skip" diff --git a/scenes/ui_elements/input_hints/throw_hint.tscn b/scenes/ui_elements/input_hints/throw_hint.tscn deleted file mode 100644 index 9a0f73b3a0..0000000000 --- a/scenes/ui_elements/input_hints/throw_hint.tscn +++ /dev/null @@ -1,29 +0,0 @@ -[gd_scene format=3 uid="uid://cdwf2nmeqns31"] - -[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_hvmxk"] -[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="3_g0g4i"] -[ext_resource type="Texture2D" uid="uid://bowdggq0c1ir4" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_rt_outline.tres" id="4_cgyew"] -[ext_resource type="Texture2D" uid="uid://c6fggds355rko" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_space_outline.tres" id="4_g0g4i"] -[ext_resource type="Texture2D" uid="uid://bpbe2jg7uiaf6" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_trigger_r2_alternative_outline.tres" id="5_g0g4i"] -[ext_resource type="Texture2D" uid="uid://dawyfturb2nwq" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_zr_outline.tres" id="6_81p17"] -[ext_resource type="Texture2D" uid="uid://jp3e3lyaan40" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_r2_outline.tres" id="7_vu6nt"] - -[node name="ThrowHint" type="HBoxContainer" unique_id=1113313011] -theme = ExtResource("1_hvmxk") - -[node name="TextureRect" type="TextureRect" parent="." unique_id=2113188219] -layout_mode = 2 -size_flags_vertical = 8 -texture = ExtResource("4_g0g4i") -script = ExtResource("3_g0g4i") -action_name = &"throw" -keyboard_texture = ExtResource("4_g0g4i") -xbox_controller_texture = ExtResource("4_cgyew") -playstation_controller_texture = ExtResource("5_g0g4i") -nintendo_controller_texture = ExtResource("6_81p17") -steam_controller_texture = ExtResource("7_vu6nt") - -[node name="Label" type="Label" parent="." unique_id=114048661] -layout_mode = 2 -theme_type_variation = &"HintLabel" -text = "Throw" diff --git a/scenes/ui_elements/input_hints/throw_input_hint.tscn b/scenes/ui_elements/input_hints/throw_input_hint.tscn new file mode 100644 index 0000000000..e5c17ba9d9 --- /dev/null +++ b/scenes/ui_elements/input_hints/throw_input_hint.tscn @@ -0,0 +1,35 @@ +[gd_scene format=3 uid="uid://cdwf2nmeqns31"] + +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="1_hvmxk"] +[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="3_g0g4i"] +[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="4_81p17"] +[ext_resource type="Resource" uid="uid://c1beocky1qjxi" path="res://scenes/game_elements/props/hint/resources/devices.tres" id="4_aei35"] +[ext_resource type="Material" uid="uid://cruf3tlajs4jo" path="res://scenes/ui_elements/input_hints/components/drop_shadow_material.tres" id="5_dwmin"] +[ext_resource type="Texture2D" uid="uid://be8kao32d16ao" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_x.tres" id="8_5pjl8"] + +[node name="ThrowInputHint" type="HBoxContainer" unique_id=1113313011] +theme = ExtResource("1_hvmxk") + +[node name="ThrowHint" type="TextureRect" parent="." unique_id=2113188219] +material = ExtResource("5_dwmin") +layout_mode = 2 +size_flags_vertical = 8 +texture = ExtResource("4_81p17") +script = ExtResource("3_g0g4i") +action_name = &"throw" +devices = ExtResource("4_aei35") + +[node name="TextureRect2" type="TextureRect" parent="." unique_id=2115622263] +material = ExtResource("5_dwmin") +layout_mode = 2 +size_flags_vertical = 8 +texture = ExtResource("8_5pjl8") +script = ExtResource("3_g0g4i") +action_name = &"throw" +alternative = true +devices = ExtResource("4_aei35") + +[node name="Label" type="Label" parent="." unique_id=114048661] +layout_mode = 2 +theme_type_variation = &"HintLabel" +text = "Throw" diff --git a/scenes/ui_elements/input_hints/undo_input_hint.tscn b/scenes/ui_elements/input_hints/undo_input_hint.tscn new file mode 100644 index 0000000000..d43279bbb6 --- /dev/null +++ b/scenes/ui_elements/input_hints/undo_input_hint.tscn @@ -0,0 +1,29 @@ +[gd_scene format=3 uid="uid://bl3pt0n5r8tm5"] + +[ext_resource type="Material" uid="uid://cruf3tlajs4jo" path="res://scenes/ui_elements/input_hints/components/drop_shadow_material.tres" id="1_22y0p"] +[ext_resource type="Texture2D" uid="uid://bry0q0k1nmmyh" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_z.tres" id="1_jkby0"] +[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="2_ewe37"] +[ext_resource type="Resource" uid="uid://c1beocky1qjxi" path="res://scenes/game_elements/props/hint/resources/devices.tres" id="3_xqpg3"] +[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="7_mx5dm"] + +[node name="UndoInputHint" type="HBoxContainer" unique_id=1063563018] +texture_filter = 2 +custom_minimum_size = Vector2(64, 64) +size_flags_horizontal = 0 + +[node name="UndoInput" type="TextureRect" parent="." unique_id=2101272366] +material = ExtResource("1_22y0p") +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_vertical = 8 +texture = ExtResource("1_jkby0") +script = ExtResource("2_ewe37") +action_name = &"sokoban_undo" +devices = ExtResource("3_xqpg3") + +[node name="Label" type="Label" parent="." unique_id=1638305220] +layout_mode = 2 +theme = ExtResource("7_mx5dm") +theme_type_variation = &"HintLabel" +theme_override_font_sizes/font_size = 25 +text = "Undo" diff --git a/scenes/ui_elements/story_quest_progress/components/story_quest_progress.gd b/scenes/ui_elements/story_quest_progress/components/story_quest_progress.gd index 8a92912468..8c09d5ec68 100644 --- a/scenes/ui_elements/story_quest_progress/components/story_quest_progress.gd +++ b/scenes/ui_elements/story_quest_progress/components/story_quest_progress.gd @@ -9,7 +9,6 @@ const ITEM_SLOT: PackedScene = preload("uid://1mjm4atk2j6e") func _ready() -> void: if not GameState.current_quest: - push_warning("No current quest") return if GameState.current_quest.threads_to_collect == 0: diff --git a/scenes/world_map/components/ToggleableTileMapLayer.gd b/scenes/world_map/components/ToggleableTileMapLayer.gd new file mode 100644 index 0000000000..b1dd69655f --- /dev/null +++ b/scenes/world_map/components/ToggleableTileMapLayer.gd @@ -0,0 +1,53 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +@tool +class_name ToggleableTileMapLayer +extends Toggleable +## Use a [TileMapLayer] as an unlockable door/barrier +## +## A [Toggleable] that disables a [TileMapLayer] when enabled, and enables it +## when disabled. Use this, for example, together with [QuestProgressUnlocker] +## to block off sections of Fray's End with water or void until the player has +## completed certain quests. (Depending on the level design, a door may be more +## appropriate.) +## [br][br] +## This script may be attached to a [TileMapLayer] directly; instantiated as a +## child of a [TileMapLayer]; or instantiated elsewhere in the tree, in which +## case [member target] must be set. + +## The [TileMapLayer] to be toggled. If this script is attached directly to a +## [TileMapLayer], this property cannot be changed. +@export var target: TileMapLayer: + set = _set_target + + +func _enter_tree() -> void: + if not target: + if (self as Node2D) is TileMapLayer: + target = (self as Node2D) as TileMapLayer + elif get_parent() is TileMapLayer: + target = get_parent() + + +func _validate_property(property: Dictionary) -> void: + match property.name: + "target": + if target == self: + property.usage |= PROPERTY_USAGE_READ_ONLY + + +func _set_target(value: TileMapLayer) -> void: + target = value + notify_property_list_changed() + update_configuration_warnings() + + +func _get_configuration_warnings() -> PackedStringArray: + var warnings := PackedStringArray() + if not target and (self as Node2D) is not TileMapLayer: + warnings.push_back("Target is not set") + return warnings + + +func set_toggled(value: bool) -> void: + target.enabled = not value diff --git a/scenes/world_map/components/ToggleableTileMapLayer.gd.uid b/scenes/world_map/components/ToggleableTileMapLayer.gd.uid new file mode 100644 index 0000000000..81ddc900d8 --- /dev/null +++ b/scenes/world_map/components/ToggleableTileMapLayer.gd.uid @@ -0,0 +1 @@ +uid://c5jp8y8mpge4w diff --git a/scenes/world_map/components/gardener_a.dialogue b/scenes/world_map/components/gardener_a.dialogue new file mode 100644 index 0000000000..8ff65e83b1 --- /dev/null +++ b/scenes/world_map/components/gardener_a.dialogue @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +if Unlocker.is_satisfied(): + Marie: You must have been to visit Moss! + Marie: We saw the Void retreating from the West End path! +else: + Marie: Oh, are you trying to get to the West End? + Marie: That path has been blocked by the Void for years. + Marie: Our cat is really upset about it. She used to love going over there. + Marie: Please find Moss the Monk. She might be able to help you push back the Void! +=> END diff --git a/scenes/world_map/components/gardener_a.dialogue.import b/scenes/world_map/components/gardener_a.dialogue.import new file mode 100644 index 0000000000..dd17a967ec --- /dev/null +++ b/scenes/world_map/components/gardener_a.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://d3lavmvhbfknp" +path="res://.godot/imported/gardener_a.dialogue-c05a6aa2f36aaf8040935d52dbf2d212.tres" + +[deps] + +source_file="res://scenes/world_map/components/gardener_a.dialogue" +dest_files=["res://.godot/imported/gardener_a.dialogue-c05a6aa2f36aaf8040935d52dbf2d212.tres"] + +[params] + +defaults=true diff --git a/scenes/world_map/components/oscar.dialogue b/scenes/world_map/components/oscar.dialogue new file mode 100644 index 0000000000..01af876a51 --- /dev/null +++ b/scenes/world_map/components/oscar.dialogue @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +Óscar: At last! I can go back to Fray’s End and talk to someone other than Sigurd! +Óscar: I can’t wait to see Marie again! +Sigurd: Hmph. +=> END diff --git a/scenes/world_map/components/oscar.dialogue.import b/scenes/world_map/components/oscar.dialogue.import new file mode 100644 index 0000000000..19fc397500 --- /dev/null +++ b/scenes/world_map/components/oscar.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://dx773k0ovb35j" +path="res://.godot/imported/oscar.dialogue-1309d45357e418cd7f84801936d5e6a4.tres" + +[deps] + +source_file="res://scenes/world_map/components/oscar.dialogue" +dest_files=["res://.godot/imported/oscar.dialogue-1309d45357e418cd7f84801936d5e6a4.tres"] + +[params] + +defaults=true diff --git a/scenes/world_map/components/quest_progress_unlocker.gd b/scenes/world_map/components/quest_progress_unlocker.gd new file mode 100644 index 0000000000..ad5b395cfa --- /dev/null +++ b/scenes/world_map/components/quest_progress_unlocker.gd @@ -0,0 +1,71 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +class_name QuestProgressUnlocker +extends Node +## Toggle game elements when certain quests have been completed +## +## This can be used to unlock a door, or paired with [ToggleableTileMapLayer] to +## disable some tiles, once the player has completed certain quests, opening +## a new region of the map. + +## Emitted when the scene starts, indicating the initial state of this unlocker. +signal initialized(satisfied: bool) + +## Emitted when all quests in [member required_quests] have become completed. +## [param satisfied] matches the current value of [member is_satisfied]. +## (In development, it is also possible for a quest to be un-completed and +## therefore for an unlocker to become unsatisfied.) +signal toggled(satisfied: bool) + +## Nodes to toggle on scene start & when the completion state changes. +## (You can also connect to [signal toggled] and [signal initialized] directly.) +@export var targets: Array[Toggleable] + +## Quests which must be completed to unlock [member targets]. +@export var required_quests: Array[Quest]: + set = _set_required_quests + + +func _set_required_quests(new_value: Array[Quest]) -> void: + required_quests = new_value + update_configuration_warnings() + + +func _get_configuration_warnings() -> PackedStringArray: + var warnings: PackedStringArray + if not required_quests: + warnings.append("At least one required quest should be set") + return warnings + + +func _ready() -> void: + _connect_targets() + + GameState.completed_quests_changed.connect(_on_completed_quests_changed) + + # To ensure the targets are ready, we do a "call_deferred" + _initialize_toggle_state.call_deferred() + + +func _connect_targets() -> void: + for target: Toggleable in targets: + initialized.connect(target.initialize_with_value) + toggled.connect(target.set_toggled) + + +func _initialize_toggle_state() -> void: + initialized.emit(is_satisfied()) + + +func _on_completed_quests_changed() -> void: + toggled.emit(is_satisfied()) + + +## Returns whether all quests in [member required_quests] have been completed. +func is_satisfied() -> bool: + for quest: Quest in required_quests: + # TODO: would be better if completed_quests held the Quest resources... + if quest.resource_path not in GameState.completed_quests: + return false + + return true diff --git a/scenes/world_map/components/quest_progress_unlocker.gd.uid b/scenes/world_map/components/quest_progress_unlocker.gd.uid new file mode 100644 index 0000000000..e81e92ba6b --- /dev/null +++ b/scenes/world_map/components/quest_progress_unlocker.gd.uid @@ -0,0 +1 @@ +uid://uaaaiviytliw diff --git a/scenes/world_map/components/sigurd.dialogue b/scenes/world_map/components/sigurd.dialogue new file mode 100644 index 0000000000..2ab34c2183 --- /dev/null +++ b/scenes/world_map/components/sigurd.dialogue @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +~ start +Sigurd: Thank goodness you reopened the path! +Sigurd: I’m so sick of only having Óscar for company. +Óscar: Hmph. +=> END diff --git a/scenes/world_map/components/sigurd.dialogue.import b/scenes/world_map/components/sigurd.dialogue.import new file mode 100644 index 0000000000..a61dfcb959 --- /dev/null +++ b/scenes/world_map/components/sigurd.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://d4kkr5cifitfm" +path="res://.godot/imported/sigurd.dialogue-67f8ed1ece9f4eaf5bcea1ce81ce2cd0.tres" + +[deps] + +source_file="res://scenes/world_map/components/sigurd.dialogue" +dest_files=["res://.godot/imported/sigurd.dialogue-67f8ed1ece9f4eaf5bcea1ce81ce2cd0.tres"] + +[params] + +defaults=true diff --git a/scenes/world_map/frays_end.tscn b/scenes/world_map/frays_end.tscn index 694bfd0bb1..7c2ddd3d8d 100644 --- a/scenes/world_map/frays_end.tscn +++ b/scenes/world_map/frays_end.tscn @@ -6,6 +6,7 @@ [ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="3_tp7qs"] [ext_resource type="TileSet" uid="uid://oynx002hv8tl" path="res://tiles/water.tres" id="4_6ss6a"] [ext_resource type="PackedScene" uid="uid://lfvn4u30s4yf" path="res://scenes/game_elements/props/buildings/house/house_1.tscn" id="5_5jg1p"] +[ext_resource type="Script" uid="uid://ctko5bdas16ah" path="res://scenes/game_logic/canvasitem_behaviors/modulate_as_sky_behavior.gd" id="5_duxxr"] [ext_resource type="TileSet" uid="uid://bjx3gvah0ycl1" path="res://tiles/foam_2.tres" id="5_ppslc"] [ext_resource type="Texture2D" uid="uid://dsh7g1nlaitvv" path="res://scenes/game_elements/props/buildings/house/components/House_Patch_Blue_02.png" id="5_uhynt"] [ext_resource type="Texture2D" uid="uid://d2kjk3oiu5o6o" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Blue_02.png" id="5_uojly"] @@ -19,8 +20,11 @@ [ext_resource type="TileSet" uid="uid://bdc7ucso7bx0s" path="res://tiles/shadows.tres" id="8_r1ek1"] [ext_resource type="TileSet" uid="uid://cxw7t41wfur2m" path="res://tiles/decoration.tres" id="9_duxxr"] [ext_resource type="PackedScene" uid="uid://bbsc3wssndtfe" path="res://scenes/game_elements/props/decoration/hiding_mushroom/hiding_mushroom.tscn" id="11_jqkod"] +[ext_resource type="Material" uid="uid://64aeyjitacv3" path="res://scenes/game_elements/props/void/void_chromakey_material.tres" id="11_wymun"] [ext_resource type="PackedScene" uid="uid://ccp4ayow34e7g" path="res://scenes/game_elements/props/decoration/books/books.tscn" id="12_06x6x"] +[ext_resource type="TileSet" uid="uid://ciq5guijvlyb0" path="res://tiles/void_chromakey.tres" id="12_f3823"] [ext_resource type="Texture2D" uid="uid://cyvi71ryavsld" path="res://scenes/game_elements/props/decoration/books/components/Books_2.png" id="13_xt3dw"] +[ext_resource type="Script" uid="uid://c5jp8y8mpge4w" path="res://scenes/world_map/components/ToggleableTileMapLayer.gd" id="14_f3823"] [ext_resource type="PackedScene" uid="uid://bp20cjimwi8l0" path="res://scenes/game_elements/props/buildings/house/house_2.tscn" id="15_uhynt"] [ext_resource type="PackedScene" uid="uid://712saqgof3kf" path="res://scenes/game_elements/props/eternal_loom/eternal_loom.tscn" id="16_ojp30"] [ext_resource type="PackedScene" uid="uid://cpaplgh708bc3" path="res://scenes/game_elements/characters/npcs/npc_prop/fray_axeman.tscn" id="17_0a1i7"] @@ -30,20 +34,14 @@ [ext_resource type="PackedScene" uid="uid://v2uakefmp67y" path="res://scenes/game_elements/characters/npcs/elder/story_quest_elder.tscn" id="20_jqkod"] [ext_resource type="PackedScene" uid="uid://bytkm0r5fe5xb" path="res://scenes/game_elements/characters/npcs/elder/lore_quest_elder.tscn" id="20_xt3dw"] [ext_resource type="Resource" uid="uid://qva3nnhkgirm" path="res://scenes/world_map/components/farmer_npc.dialogue" id="25_6r0j2"] -[ext_resource type="PackedScene" uid="uid://hafqgtdg2nvp" path="res://scenes/game_elements/props/hint/hint.tscn" id="26_w8iew"] [ext_resource type="PackedScene" uid="uid://cfcgrfvtn04yp" path="res://scenes/ui_elements/hud/hud.tscn" id="27_aj6tp"] [ext_resource type="Texture2D" uid="uid://drfnq08l2wbgy" path="res://assets/third_party/tiny-swords/Deco/03.png" id="28_6r0j2"] -[ext_resource type="PackedScene" uid="uid://dt1y8odxq0xys" path="res://scenes/ui_elements/input_hints/movement_input_hints.tscn" id="28_lftgk"] [ext_resource type="Resource" uid="uid://byhqan5a7vkgg" path="res://scenes/world_map/components/tutorial_npc.dialogue" id="32_djq26"] -[ext_resource type="Theme" uid="uid://cvitou84ni7qe" path="res://scenes/ui_elements/components/theme.tres" id="35_ljovl"] -[ext_resource type="Texture2D" uid="uid://c6fggds355rko" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/keyboard/keyboard_space_outline.tres" id="36_ns5r3"] -[ext_resource type="Texture2D" uid="uid://cxnx628qkf1br" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/xbox/xbox_button_color_a.tres" id="36_r1ek1"] -[ext_resource type="Texture2D" uid="uid://da6qvcr5sq71n" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/playstation/playstation_button_color_cross_outline.tres" id="37_ns5r3"] +[ext_resource type="Resource" uid="uid://d3lavmvhbfknp" path="res://scenes/world_map/components/gardener_a.dialogue" id="34_ulm71"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="37_f3823"] [ext_resource type="PackedScene" uid="uid://d0c4l7ev6ca3c" path="res://scenes/game_elements/props/spawn_point/spawn_point.tscn" id="37_thm8h"] -[ext_resource type="Texture2D" uid="uid://upt0tmtsk3y2" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/nintendo_switch/switch_button_a.tres" id="38_5j6h7"] [ext_resource type="Script" uid="uid://bdhjixygupit1" path="res://scenes/game_elements/props/area_filler/area_filler.gd" id="38_cjmkx"] [ext_resource type="PackedScene" uid="uid://dv4f232y8w8dv" path="res://scenes/game_elements/props/decoration/water_rock/water_rock.tscn" id="38_jqkod"] -[ext_resource type="Texture2D" uid="uid://d223ajwmavjy8" path="res://assets/third_party/inputs/atlas_kenney_input_prompts_1.4/steam-deck/steamdeck_button_a_outline.tres" id="39_duxxr"] [ext_resource type="PackedScene" uid="uid://bqkui35x5ly0" path="res://scenes/game_elements/props/decoration/crops/tomato.tscn" id="39_ljovl"] [ext_resource type="PackedScene" uid="uid://ccpgw7k4rlmea" path="res://scenes/game_elements/props/decoration/crops/barley.tscn" id="42_eodqy"] [ext_resource type="PackedScene" uid="uid://c78fj5em5tpm5" path="res://scenes/game_elements/props/decoration/crops/carrot.tscn" id="42_ljovl"] @@ -51,25 +49,25 @@ [ext_resource type="PackedScene" uid="uid://c0104ickpm3ru" path="res://scenes/game_elements/props/decoration/flower/flower.tscn" id="45_cjmkx"] [ext_resource type="PackedScene" uid="uid://cr65lmm5b0ueo" path="res://scenes/game_elements/characters/npcs/cat/cat.tscn" id="52_ppslc"] [ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="54_duxxr"] -[ext_resource type="PackedScene" uid="uid://c0374lgarm8gj" path="res://scenes/game_elements/fx/clouds_shadow/clouds_shadow.tscn" id="54_ns5r3"] -[ext_resource type="PackedScene" uid="uid://dutgnbiy7xalb" path="res://scenes/game_elements/props/interact_area/interact_area.tscn" id="55_2vvub"] -[ext_resource type="Script" uid="uid://cbj0406q05dly" path="res://scenes/game_elements/props/hint/input_key/interact_input.gd" id="55_wymun"] +[ext_resource type="PackedScene" uid="uid://daqd67aro1o1m" path="res://scenes/game_elements/fx/time_and_weather/time_and_weather.tscn" id="55_ojao8"] [ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="56_ojao8"] +[ext_resource type="Script" uid="uid://uaaaiviytliw" path="res://scenes/world_map/components/quest_progress_unlocker.gd" id="58_ojao8"] +[ext_resource type="Script" uid="uid://dts1hwdy3phin" path="res://scenes/menus/storybook/components/quest.gd" id="59_qgpx3"] +[ext_resource type="Resource" uid="uid://t50glay2iqhg" path="res://scenes/quests/lore_quests/quest_002/quest.tres" id="60_6b07c"] +[ext_resource type="Script" uid="uid://0enyu5v4ra34" path="res://scenes/game_elements/props/spawn_point/components/spawn_point.gd" id="61_6b07c"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="62_t7c6s"] +[ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="64_uxfrp"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_duxxr"] size = Vector2(52, 61) -[sub_resource type="RectangleShape2D" id="RectangleShape2D_h30yx"] -size = Vector2(2070, 585) - -[sub_resource type="RectangleShape2D" id="RectangleShape2D_djq26"] -size = Vector2(161, 95) - [sub_resource type="RectangleShape2D" id="RectangleShape2D_2vvub"] size = Vector2(52, 61) +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ulm71"] +size = Vector2(128, 128) + [node name="FraysEnd" type="Node2D" unique_id=1849947277] -y_sort_enabled = true script = ExtResource("1_4gse6") metadata/_edit_lock_ = true @@ -83,6 +81,11 @@ position = Vector2(0, 8) tile_map_data = PackedByteArray("AAABABcAAAAAAAAAAAABABYAAAAAAAAAAAACABcAAAAAAAAAAAACABYAAAAAAAAAAAACABUAAAAAAAAAAAADABUAAAAAAAAAAAAEABUAAAAAAAAAAAADABYAAAAAAAAAAAAEABYAAAAAAAAAAAAFABYAAAAAAAAAAAAFABUAAAAAAAAAAAAGABYAAAAAAAAAAAAGABUAAAAAAAAAAAAHABUAAAAAAAAAAAAHABYAAAAAAAAAAAAIABUAAAAAAAAAAAAIABQAAAAAAAAAAAAJABQAAAAAAAAAAAAKABQAAAAAAAAAAAAKABUAAAAAAAAAAAAJABUAAAAAAAAAAAALABUAAAAAAAAAAAAMABUAAAAAAAAAAAANABUAAAAAAAAAAAANABQAAAAAAAAAAAAMABQAAAAAAAAAAAALABQAAAAAAAAAAAAOABQAAAAAAAAAAAAOABUAAAAAAAAAAAAQABUAAAAAAAAAAAARABUAAAAAAAAAAAARABQAAAAAAAAAAAAQABQAAAAAAAAAAAASABQAAAAAAAAAAAATABQAAAAAAAAAAAAUABQAAAAAAAAAAAAVABQAAAAAAAAAAAAWABQAAAAAAAAAAAAXABQAAAAAAAAAAAAYABQAAAAAAAAAAAAZABQAAAAAAAAAAAAaABQAAAAAAAAAAAAaABUAAAAAAAAAAAAZABUAAAAAAAAAAAAYABUAAAAAAAAAAAAXABUAAAAAAAAAAAAWABUAAAAAAAAAAAAVABUAAAAAAAAAAAAUABUAAAAAAAAAAAATABUAAAAAAAAAAAASABUAAAAAAAAAAAAZABYAAAAAAAAAAAAaABYAAAAAAAAAAAAaABcAAAAAAAAAAAAbABcAAAAAAAAAAAAcABcAAAAAAAAAAAAbABgAAAAAAAAAAAAcABgAAAAAAAAAAAAdABgAAAAAAAAAAAAcABkAAAAAAAAAAAAdABkAAAAAAAAAAAAeABkAAAAAAAAAAAAfABkAAAAAAAAAAAAdABoAAAAAAAAAAAAeABoAAAAAAAAAAAAfABoAAAAAAAAAAAADABcAAAAAAAAAAAAEABcAAAAAAAAAAAAFABcAAAAAAAAAAAAGABcAAAAAAAAAAAAHABcAAAAAAAAAAAAIABYAAAAAAAAAAAAJABYAAAAAAAAAAAAKABYAAAAAAAAAAAALABYAAAAAAAAAAAAMABYAAAAAAAAAAAANABYAAAAAAAAAAAAOABYAAAAAAAAAAAAQABYAAAAAAAAAAAARABYAAAAAAAAAAAASABYAAAAAAAAAAAATABYAAAAAAAAAAAAUABYAAAAAAAAAAAAVABYAAAAAAAAAAAAWABYAAAAAAAAAAAAXABYAAAAAAAAAAAAYABYAAAAAAAAAAAAZABcAAAAAAAAAAAAaABgAAAAAAAAAAAAaABkAAAAAAAAAAAAbABkAAAAAAAAAAAAbABoAAAAAAAAAAAAcABoAAAAAAAAAAAAcABQAAAAAAAAAAAAdABQAAAAAAAAAAAAcABUAAAAAAAAAAAAdABUAAAAAAAAAAAAeABUAAAAAAAAAAAAfABUAAAAAAAAAAAAfABYAAAAAAAAAAAAeABYAAAAAAAAAAAAdABYAAAAAAAAAAAAcABYAAAAAAAAAAAAdABcAAAAAAAAAAAAeABcAAAAAAAAAAAAfABcAAAAAAAAAAAAeABgAAAAAAAAAAAAfABgAAAAAAAAAAAAWABcAAAAAAAAAAAAWABgAAAAAAAAAAAAXABgAAAAAAAAAAAAYABgAAAAAAAAAAAAYABcAAAAAAAAAAAAXABcAAAAAAAAAAAAYABkAAAAAAAAAAAAXABkAAAAAAAAAAAAYABoAAAAAAAAAAAAZABkAAAAAAAAAAAAZABgAAAAAAAAAAAAZABoAAAAAAAAAAAAaABoAAAAAAAAAAAAXABoAAAAAAAAAAAAYABsAAAAAAAAAAAAZABsAAAAAAAAAAAAaABsAAAAAAAAAAAAbABsAAAAAAAAAAAAcABsAAAAAAAAAAAAdABsAAAAAAAAAAQAeABsAAAAAAAAAAQAfABsAAAAAAAAAAQAdABwAAAAAAAAAAQAeABwAAAAAAAAAAAAfABwAAAAAAAAAAAAAABYAAAAAAAAAAAAAABcAAAAAAAAAAAABABUAAAAAAAAAAgAAABUAAAAAAAAAAgAbABYAAAAAAAAAAgD//xcAAAAAAAAAAAD//xgAAAAAAAAAAAD//xkAAAAAAAAAAAD//xoAAAAAAAAAAAD//xsAAAAAAAAAAAD//xwAAAAAAAAAAAAPABQAAAAAAAAAAQAPABUAAAAAAAAAAQAPABYAAAAAAAAAAQAbABQAAAAAAAAAAQAbABUAAAAAAAAAAQAAABgAAAAAAAAAAQABABgAAAAAAAAAAQACABgAAAAAAAAAAQADABgAAAAAAAAAAQAEABgAAAAAAAAAAQAFABgAAAAAAAAAAQAGABgAAAAAAAAAAQAHABgAAAAAAAAAAQAIABcAAAAAAAAAAQAJABcAAAAAAAAAAQAKABcAAAAAAAAAAQALABcAAAAAAAAAAQAMABcAAAAAAAAAAQANABcAAAAAAAAAAQAOABcAAAAAAAAAAQAPABcAAAAAAAAAAQAQABcAAAAAAAAAAQARABcAAAAAAAAAAQASABcAAAAAAAAAAQATABcAAAAAAAAAAQAUABcAAAAAAAAAAQAVABcAAAAAAAAAAQAVABgAAAAAAAAAAQAWABkAAAAAAAAAAQAWABoAAAAAAAAAAQAXABsAAAAAAAAAAQAXABwAAAAAAAAAAQAYABwAAAAAAAAAAQAZABwAAAAAAAAAAQAaABwAAAAAAAAAAQAbABwAAAAAAAAAAQAcABwAAAAAAAAAAQA=") tile_set = ExtResource("4_6ss6a") +[node name="ModulateAsSkyBehavior" type="Node" parent="TileMapLayers/Water" unique_id=1052174442 node_paths=PackedStringArray("canvas_item")] +script = ExtResource("5_duxxr") +canvas_item = NodePath("..") +metadata/_custom_type_script = "uid://ctko5bdas16ah" + [node name="Foam" type="TileMapLayer" parent="TileMapLayers" unique_id=632936150] scale = Vector2(1.00113, 1) tile_map_data = PackedByteArray("AAAAABUAAgAAAAAAAAABABUAAgAAAAAAAAACABUAAgAAAAAAAAADABUAAgAAAAAAAAAEABUAAgAAAAAAAAAFABUAAgAAAAAAAAAGABUAAgAAAAAAAAAHABUAAgAAAAAAAAAHABQAAgAAAAAAAAAIABQAAgAAAAAAAAAJABQAAgAAAAAAAAAKABQAAgAAAAAAAAALABQAAgAAAAAAAAAMABQAAgAAAAAAAAANABQAAgAAAAAAAAAOABQAAgAAAAAAAAAPABQAAgAAAAAAAAAQABQAAgAAAAAAAAARABQAAgAAAAAAAAASABQAAgAAAAAAAAATABQAAgAAAAAAAAAUABQAAgAAAAAAAAAVABQAAgAAAAAAAAAWABQAAgAAAAAAAAAXABQAAgAAAAAAAAAYABQAAgAAAAAAAAAZABQAAgAAAAAAAAAaABQAAgAAAAAAAAAbABQAAgAAAAAAAAAcABQAAgAAAAAAAAAdABQAAgAAAAAAAAAeABQAAgAAAAAAAAAeABUAAgAAAAAAAAAfABUAAgAAAAAAAAAVABgAAgAAAAAAAAAAABkAAgAAAAAAAAAAABoAAgAAAAAAAAAAABsAAgAAAAAAAAAAABwAAgAAAAAAAAAAAB0AAgAAAAAAAAAAAB4AAgAAAAAAAAAAAB8AAgAAAAAAAAAVABkAAgAAAAAAAAAWABoAAgAAAAAAAAAVABoAAgAAAAAAAAAWABsAAgAAAAAAAAAfABwAAgAAAAAAAAAfAB0AAgAAAAAAAAAfAB4AAgAAAAAAAAAfAB8AAgAAAAAAAAA=") @@ -111,20 +114,19 @@ tile_map_data = PackedByteArray("AAARAA0AAQAHAAIAAAARAAwAAQAHAAEAAAAQAA0AAQAGAAI tile_set = ExtResource("7_r1ek1") [node name="Paths_Level2" type="TileMapLayer" parent="TileMapLayers" unique_id=1784740911] -tile_map_data = PackedByteArray("AAAWAA4ABQACAAIAAAAWAA0ABQABAAEAAAAWAAwABQACAAAAAAAVAA4ABQABAAEAAAAVAA0ABQABAAEAAAAVAAwABQABAAEAAAAUAA4ABQABAAEAAAAUAA0ABQABAAEAAAAUAAwABQABAAEAAAATAA4ABQABAAEAAAATAA0ABQABAAEAAAATAAwABQABAAEAAAASAA4ABQABAAEAAAASAA0ABQAAAAEAAAASAAwABQAAAAEAAAARAA4ABQABAAAAAAAQAA4ABQAAAAAAAAAOAA4ABQACAAAAAAANAA4ABQABAAAAAAAMAA4ABQABAAEAAAAMAA0ABQACAAEAAAAMAAwABQACAAEAAAALAA4ABQABAAEAAAALAA0ABQABAAEAAAALAAwABQABAAEAAAAKAA4ABQABAAEAAAAKAA0ABQABAAEAAAAKAAwABQABAAEAAAAJAA4ABQAAAAEAAAAJAA0ABQABAAEAAAAJAAwABQAAAAEAAAAIAA0ABQABAAMAAAARABEABQACAAIAAAARABAABQABAAEAAAARAA8ABQABAAEAAAAQABEABQAAAAIAAAAQABAABQAAAAEAAAAQAA8ABQAAAAEAAAAOABEABQACAAIAAAAOABAABQACAAEAAAAOAA8ABQACAAEAAAANABEABQAAAAIAAAANABAABQABAAEAAAANAA8ABQABAAEAAAAVAA8ABQACAAIAAAAVAAsABQACAAAAAAAUAA8ABQABAAEAAAAUAAsABQABAAAAAAATAA8ABQABAAEAAAATAAsABQABAAAAAAASAA8ABQABAAEAAAASAAsABQAAAAAAAAAMAA8ABQABAAEAAAAMAAsABQACAAAAAAALAA8ABQABAAEAAAALAAsABQABAAAAAAAKAA8ABQABAAEAAAAJAA8ABQAAAAEAAAAUABAABQACAAEAAAATABAABQABAAIAAAASABAABQABAAIAAAAMABAABQABAAEAAAALABAABQABAAEAAAAKABAABQABAAEAAAAbAA0ABQABAAIAAAAaAA0ABQABAAMAAAAZAA0ABQABAAIAAAAYAA0ABQABAAIAAAAXAA0ABQABAAMAAAAZAAwABQACAAAAAAAYAAwABQAAAAAAAAAcAA0ABQACAAMAAAAbAAwABQADAAAAAAAKABEABQACAAIAAAAJABEABQABAAIAAAAJABAABQAAAAEAAAAIABEABQABAAMAAAAHABEABQABAAIAAAAGABEABQABAAMAAAAFABEABQABAAIAAAAEABEABQAAAAIAAAAFABAABQACAAAAAAAEABAABQAAAAAAAAAHABAABQADAAAAAAAbABIABQACAAAAAAAbABMABQADAAIAAAAaABIABQABAAMAAAAZABIABQABAAMAAAAYABIABQABAAIAAAAXABIABQABAAMAAAAWABIABQABAAMAAAAVABIABQABAAMAAAAUABIABQAAAAIAAAAUABEABQADAAEAAAAYABEABQADAAAAAAAHAA0ABQABAAMAAAAGAA0ABQABAAMAAAAFAA0ABQABAAMAAAAEAA0ABQABAAMAAAAFAAoABQADAAAAAAAFAAsABQABAAIAAAAGAAsABQABAAMAAAAHAAsABQABAAMAAAAIAAsABQABAAIAAAAIAAoABQADAAAAAAAJAAsABQABAAAAAAAKAAsABQABAAAAAAADAAwABQADAAEAAAADAA0ABQAAAAIAAAABAAoABQADAAAAAAABAAsABQAAAAIAAAACAAsABQABAAMAAAADAAsABQABAAAAAAAEAAsABQABAAMAAAA=") +tile_map_data = PackedByteArray("AAAWAA4ABQACAAIAAAAWAA0ABQABAAEAAAAWAAwABQACAAAAAAAVAA4ABQABAAEAAAAVAA0ABQABAAEAAAAVAAwABQABAAEAAAAUAA4ABQABAAEAAAAUAA0ABQABAAEAAAAUAAwABQABAAEAAAATAA4ABQABAAEAAAATAA0ABQABAAEAAAATAAwABQABAAEAAAASAA4ABQABAAEAAAASAA0ABQAAAAEAAAASAAwABQAAAAEAAAARAA4ABQABAAAAAAAQAA4ABQAAAAAAAAAOAA4ABQACAAAAAAANAA4ABQABAAAAAAAMAA4ABQABAAEAAAAMAA0ABQACAAEAAAAMAAwABQACAAEAAAALAA4ABQABAAEAAAALAA0ABQABAAEAAAALAAwABQABAAEAAAAKAA4ABQABAAEAAAAKAA0ABQABAAEAAAAKAAwABQABAAEAAAAJAA4ABQAAAAEAAAAJAA0ABQABAAEAAAAJAAwABQAAAAEAAAAIAA0ABQABAAMAAAARABEABQACAAIAAAARABAABQABAAEAAAARAA8ABQABAAEAAAAQABEABQAAAAIAAAAQABAABQAAAAEAAAAQAA8ABQAAAAEAAAAOABEABQACAAIAAAAOABAABQACAAEAAAAOAA8ABQACAAEAAAANABEABQAAAAIAAAANABAABQABAAEAAAANAA8ABQABAAEAAAAVAA8ABQACAAIAAAAVAAsABQACAAAAAAAUAA8ABQABAAEAAAAUAAsABQABAAAAAAATAA8ABQABAAEAAAATAAsABQABAAAAAAASAA8ABQABAAEAAAASAAsABQAAAAAAAAAMAA8ABQABAAEAAAAMAAsABQACAAAAAAALAA8ABQABAAEAAAALAAsABQABAAAAAAAKAA8ABQABAAEAAAAJAA8ABQAAAAEAAAAUABAABQACAAEAAAATABAABQABAAIAAAASABAABQABAAIAAAAMABAABQABAAEAAAALABAABQABAAEAAAAKABAABQABAAEAAAAbAA0ABQABAAIAAAAaAA0ABQABAAMAAAAZAA0ABQABAAIAAAAYAA0ABQABAAIAAAAXAA0ABQABAAMAAAAZAAwABQACAAAAAAAYAAwABQAAAAAAAAAcAA0ABQACAAMAAAAbAAwABQADAAAAAAAKABEABQACAAIAAAAJABEABQABAAIAAAAJABAABQAAAAEAAAAIABEABQABAAMAAAAHABEABQABAAIAAAAGABEABQABAAMAAAAFABEABQABAAIAAAAEABEABQAAAAIAAAAFABAABQACAAAAAAAEABAABQAAAAAAAAAHABAABQADAAAAAAAbABIABQACAAAAAAAbABMABQADAAIAAAAaABIABQABAAMAAAAZABIABQABAAMAAAAYABIABQABAAIAAAAXABIABQABAAMAAAAWABIABQABAAMAAAAVABIABQABAAMAAAAUABIABQAAAAIAAAAUABEABQADAAEAAAAYABEABQADAAAAAAAHAA0ABQABAAMAAAAGAA0ABQABAAMAAAAFAA0ABQABAAMAAAAEAA0ABQABAAMAAAAFAAoABQADAAAAAAAFAAsABQABAAIAAAAGAAsABQABAAMAAAAHAAsABQABAAMAAAAIAAsABQABAAIAAAAIAAoABQADAAAAAAAJAAsABQABAAAAAAAKAAsABQABAAAAAAADAAwABQADAAEAAAADAA0ABQAAAAIAAAABAAoABQACAAAAAAABAAsABQABAAIAAAACAAsABQABAAMAAAADAAsABQABAAAAAAAEAAsABQABAAMAAAAAAAsABQABAAIAAAAAAAoABQABAAAAAAD//woABQAAAAAAAAD//wsABQAAAAIAAAA=") tile_set = ExtResource("7_r1ek1") [node name="Shadows_Level1" type="TileMapLayer" parent="TileMapLayers" unique_id=1770570523] -tile_map_data = PackedByteArray("AAABAAkAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA0AAAAAAAAAAAABAA8AAAAAAAAAAAACABEAAAAAAAAAAAACABIAAAAAAAAAAAACABMAAAAAAAAAAAABABQAAAAAAAAAAAAEABMAAAAAAAAAAAAEABIAAAAAAAAAAAAFABIAAAAAAAAAAAAFABMAAAAAAAAAAAABAAgAAAAAAAAAAAABAAcAAAAAAAAAAAACAAcAAAAAAAAAAAACAAYAAAAAAAAAAAACAAUAAAAAAAAAAAABAAQAAAAAAAAAAAABAAMAAAAAAAAAAAACAAMAAAAAAAAAAAADAAMAAAAAAAAAAAAEAAMAAAAAAAAAAAAFAAMAAAAAAAAAAAAGAAMAAAAAAAAAAAAHAAMAAAAAAAAAAAAIAAMAAAAAAAAAAAAJAAMAAAAAAAAAAAAKAAMAAAAAAAAAAAAKAAQAAAAAAAAAAAALAAQAAAAAAAAAAAAMAAQAAAAAAAAAAAAMAAMAAAAAAAAAAAANAAMAAAAAAAAAAAAOAAMAAAAAAAAAAAAOAAQAAAAAAAAAAAAPAAQAAAAAAAAAAAAQAAQAAAAAAAAAAAARAAQAAAAAAAAAAAASAAQAAAAAAAAAAAATAAQAAAAAAAAAAAATAAMAAAAAAAAAAAAUAAMAAAAAAAAAAAAVAAMAAAAAAAAAAAAWAAMAAAAAAAAAAAAXAAMAAAAAAAAAAAAXAAIAAAAAAAAAAAAXAAEAAAAAAAAAAAAYAAEAAAAAAAAAAAAZAAEAAAAAAAAAAAAaAAEAAAAAAAAAAAAbAAEAAAAAAAAAAAAcAAEAAAAAAAAAAAAcAAIAAAAAAAAAAAAdAAIAAAAAAAAAAAAdAAMAAAAAAAAAAAAdAAQAAAAAAAAAAAAeAAQAAAAAAAAAAAAeAAUAAAAAAAAAAAAeAAYAAAAAAAAAAAAeAAcAAAAAAAAAAAAdAAcAAAAAAAAAAAAcAAgAAAAAAAAAAAAcAAkAAAAAAAAAAAAcAAoAAAAAAAAAAAAdAAoAAAAAAAAAAAAdAAsAAAAAAAAAAAAeAAsAAAAAAAAAAAAeAAwAAAAAAAAAAAAeAA0AAAAAAAAAAAAeAA4AAAAAAAAAAAAeAA8AAAAAAAAAAAAeABAAAAAAAAAAAAAeABEAAAAAAAAAAAAdABEAAAAAAAAAAAAdABIAAAAAAAAAAAAdABMAAAAAAAAAAAAeABMAAAAAAAAAAAAfABMAAAAAAAAAAAAdABwAAAAAAAAAAAAdAB0AAAAAAAAAAAAeAB0AAAAAAAAAAAAeAB4AAAAAAAAAAAAfAB4AAAAAAAAAAAAfAB0AAAAAAAAAAAAfABwAAAAAAAAAAAAAABQAAAAAAAAAAAA=") +tile_map_data = PackedByteArray("AAABAAkAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAA0AAAAAAAAAAAABAA8AAAAAAAAAAAACABEAAAAAAAAAAAACABIAAAAAAAAAAAACABMAAAAAAAAAAAABABQAAAAAAAAAAAAEABMAAAAAAAAAAAAEABIAAAAAAAAAAAAFABIAAAAAAAAAAAAFABMAAAAAAAAAAAABAAgAAAAAAAAAAAABAAcAAAAAAAAAAAACAAcAAAAAAAAAAAACAAYAAAAAAAAAAAACAAUAAAAAAAAAAAABAAQAAAAAAAAAAAABAAMAAAAAAAAAAAACAAMAAAAAAAAAAAADAAMAAAAAAAAAAAAEAAMAAAAAAAAAAAAFAAMAAAAAAAAAAAAGAAMAAAAAAAAAAAAHAAMAAAAAAAAAAAAIAAMAAAAAAAAAAAAJAAMAAAAAAAAAAAAKAAMAAAAAAAAAAAAKAAQAAAAAAAAAAAALAAQAAAAAAAAAAAAMAAQAAAAAAAAAAAAMAAMAAAAAAAAAAAANAAMAAAAAAAAAAAAOAAMAAAAAAAAAAAAOAAQAAAAAAAAAAAAPAAQAAAAAAAAAAAAQAAQAAAAAAAAAAAARAAQAAAAAAAAAAAASAAQAAAAAAAAAAAATAAQAAAAAAAAAAAATAAMAAAAAAAAAAAAUAAMAAAAAAAAAAAAVAAMAAAAAAAAAAAAWAAMAAAAAAAAAAAAXAAMAAAAAAAAAAAAXAAIAAAAAAAAAAAAXAAEAAAAAAAAAAAAYAAEAAAAAAAAAAAAZAAEAAAAAAAAAAAAaAAEAAAAAAAAAAAAbAAEAAAAAAAAAAAAcAAEAAAAAAAAAAAAcAAIAAAAAAAAAAAAdAAIAAAAAAAAAAAAdAAMAAAAAAAAAAAAdAAQAAAAAAAAAAAAeAAQAAAAAAAAAAAAeAAUAAAAAAAAAAAAeAAYAAAAAAAAAAAAeAAcAAAAAAAAAAAAdAAcAAAAAAAAAAAAcAAgAAAAAAAAAAAAcAAkAAAAAAAAAAAAcAAoAAAAAAAAAAAAdAAoAAAAAAAAAAAAdAAsAAAAAAAAAAAAeAAsAAAAAAAAAAAAeAAwAAAAAAAAAAAAeAA0AAAAAAAAAAAAeAA4AAAAAAAAAAAAeAA8AAAAAAAAAAAAeABAAAAAAAAAAAAAeABEAAAAAAAAAAAAdABEAAAAAAAAAAAAdABIAAAAAAAAAAAAdABMAAAAAAAAAAAAeABMAAAAAAAAAAAAfABMAAAAAAAAAAAAdABwAAAAAAAAAAAAdAB0AAAAAAAAAAAAeAB0AAAAAAAAAAAAeAB4AAAAAAAAAAAAfAB4AAAAAAAAAAAAfAB0AAAAAAAAAAAAfABwAAAAAAAAAAAAAABQAAAAAAAAAAAA=") tile_set = ExtResource("8_r1ek1") [node name="Stone_Level1" type="TileMapLayer" parent="TileMapLayers" unique_id=2081875038] -tile_map_data = PackedByteArray("AAAMAAAABAABAAEAAAALAAAABAABAAEAAAAKAAAABAABAAEAAAAJAAAABAABAAEAAAAIAAAABAABAAEAAAAHAAAABAABAAEAAAAGAAAABAABAAEAAAAFAAAABAABAAEAAAAAAAAABAAAAAEAAAABAAAABAABAAEAAAACAAAABAABAAEAAAADAAAABAABAAEAAAAEAAAABAABAAEAAAAQAAAABAABAAEAAAARAAAABAABAAEAAAAcAAAABAABAAEAAAAAAAEABAAAAAEAAAAAAAIABAAAAAEAAAAAAAMABAAAAAEAAAAAAAQABAAAAAEAAAAAAAUABAAAAAEAAAAAAAYABAAAAAEAAAAAAAcABAAAAAEAAAAAAAgABAAAAAEAAAAAAAkABAADAAEAAAAAAAoABAADAAIAAAAAAAsABAADAAEAAAAAAAwABAADAAEAAAAAAA0ABAADAAEAAAAAAA4ABAAAAAEAAAAAAA8ABAAAAAEAAAAAABAABAAAAAEAAAAAABEABAAAAAEAAAAAABIABAAAAAEAAAAAABMABAABAAQAAAAMAP//BAABAAAAAAALAP//BAABAAAAAAAKAP//BAABAAAAAAAJAP//BAABAAAAAAAIAP//BAABAAAAAAAHAP//BAABAAAAAAAGAP//BAABAAAAAAAFAP//BAABAAAAAAAEAP//BAABAAAAAAADAP//BAABAAAAAAACAP//BAABAAAAAAABAP//BAABAAAAAAAAAP//BAAAAAAAAAATAP//BAABAAAAAAASAP//BAABAAAAAAARAP//BAABAAAAAAAQAP//BAABAAAAAAAeAP//BAABAAAAAAAdAP//BAABAAAAAAAcAP//BAABAAAAAAAbAP//BAABAAAAAAAaAP//BAABAAAAAAAZAP//BAABAAAAAAAYAP//BAABAAAAAAAXAP//BAABAAAAAAAWAP//BAABAAAAAAAVAP//BAABAAAAAAAUAP//BAABAAAAAAANAAAABAABAAEAAAANAP//BAABAAAAAAAfAAAABAACAAEAAAAfAP//BAACAAAAAAAeAAAABAABAAEAAAAdAAAABAABAAEAAAAfABIABAABAAIAAAAfAA4ABAACAAEAAAAfAA0ABAADAAEAAAAfAAwABAACAAEAAAAfAAsABAACAAEAAAAfAAoABAAAAAEAAAAfAAkABAACAAEAAAAfAAgABAABAAEAAAAfAAcABAACAAEAAAAfAAYABAACAAEAAAAfAAUABAAAAAEAAAAfAAQABAACAAEAAAAfAAMABAABAAIAAAAfAAIABAAAAAEAAAAfAAEABAACAAEAAAAPAAAABAABAAEAAAAPAP//BAABAAAAAAAOAAAABAABAAEAAAAOAP//BAABAAAAAAAeAAEABAABAAEAAAAeAAIABAABAAEAAAAeAAMABAABAAEAAAAdAAEABAABAAEAAAAcAAEABAAAAAIAAAAdAAIABAAAAAEAAAAdAAMABAAAAAIAAAAeAAQABAAAAAEAAAAeAAUABAAAAAEAAAAdAAYABAAAAAAAAAAdAAcABAABAAEAAAAcAAcABAAAAAAAAAAcAAgABAAAAAEAAAAcAAkABAAAAAIAAAAdAAkABAABAAEAAAAeAAoABAACAAEAAAAeAAkABAABAAEAAAAeAAgABAABAAEAAAAdAAgABAABAAEAAAAeAAYABAABAAEAAAAeAAcABAABAAEAAAAdAAoABAAAAAIAAAAeAAsABAAAAAEAAAAeAAwABAAAAAEAAAAeAA0ABAAAAAEAAAAeAA4ABAAAAAEAAAAfAA8ABAADAAEAAAAfABAABAABAAIAAAAeAA8ABAAAAAEAAAAeABAABAABAAEAAAAfABEABAABAAAAAAAdABAABAAAAAAAAAAdABEABAAAAAEAAAAdABIABAAAAAIAAAAeABEABAABAAEAAAAeABIABAABAAIAAAADAAEABAABAAEAAAAEAAEABAABAAEAAAAFAAEABAABAAEAAAAGAAEABAABAAEAAAAHAAEABAABAAEAAAAIAAEABAABAAEAAAALAAEABAABAAEAAAAMAAEABAABAAEAAAANAAEABAABAAEAAAAOAAEABAABAAEAAAABAAEABAABAAEAAAABAAIABAABAAEAAAABAAMABAACAAEAAAABAAQABAABAAEAAAABAAUABAABAAEAAAABAAYABAABAAEAAAABAAgABAACAAIAAAABAAcABAACAAEAAAACAAUABAACAAEAAAACAAQABAACAAAAAAACAAYABAACAAIAAAABAA4ABAACAAAAAAABAA8ABAACAAEAAAABABAABAABAAEAAAACABAABAACAAAAAAACABEABAACAAEAAAACABIABAACAAIAAAABABIABAABAAEAAAABABEABAABAAEAAAABABMABAACAAIAAAAeABsABAABAAAAAAAfABsABAACAAAAAAAdABwABAAAAAIAAAAeABwABAABAAEAAAAfABwABAACAAEAAAAeAB0ABAABAAIAAAAfAB0ABAACAAIAAAAeAB4ABAAAAAMAAAAfAB4ABAACAAMAAAAdAB0ABAABAAMAAAAEABEABAAAAAAAAAAEABIABAAAAAIAAAAFABEABAACAAAAAAAFABIABAACAAIAAAACAAEABAABAAEAAAACAAIABAABAAIAAAADAAIABAABAAIAAAAEAAIABAABAAIAAAAFAAIABAABAAIAAAAGAAIABAABAAIAAAAHAAIABAABAAIAAAAIAAIABAABAAIAAAAJAAIABAABAAIAAAAJAAEABAABAAEAAAAKAAEABAABAAEAAAAKAAIABAABAAEAAAAKAAMABAAAAAIAAAALAAMABAABAAIAAAAMAAMABAACAAIAAAAMAAIABAABAAEAAAALAAIABAABAAEAAAANAAIABAABAAIAAAAOAAIABAABAAEAAAAPAAIABAABAAEAAAAOAAMABAAAAAIAAAAPAAMABAABAAIAAAAQAAMABAABAAIAAAARAAMABAABAAIAAAARAAIABAABAAEAAAAQAAIABAABAAEAAAAQAAEABAABAAEAAAAPAAEABAABAAEAAAARAAEABAABAAEAAAASAAAABAABAAEAAAASAAEABAABAAEAAAASAAIABAABAAEAAAASAAMABAABAAIAAAATAAMABAACAAIAAAATAAIABAABAAEAAAATAAEABAABAAEAAAAUAAEABAABAAEAAAAUAAIABAABAAIAAAAVAAIABAABAAIAAAAWAAIABAABAAIAAAAXAAIABAACAAIAAAAXAAEABAACAAEAAAAWAAEABAABAAEAAAAVAAEABAABAAEAAAAUAAAABAABAAEAAAATAAAABAABAAEAAAAVAAAABAABAAEAAAAWAAAABAABAAEAAAAXAAAABAABAAEAAAAYAAAABAABAAIAAAAZAAAABAABAAIAAAAaAAAABAABAAIAAAAbAAAABAABAAIAAAAdABsABAAAAAQAAAA=") +tile_map_data = PackedByteArray("AAAMAAAABAABAAEAAAALAAAABAABAAEAAAAKAAAABAABAAEAAAAJAAAABAABAAEAAAAIAAAABAABAAEAAAAHAAAABAABAAEAAAAGAAAABAABAAEAAAAFAAAABAABAAEAAAAAAAAABAAAAAEAAAABAAAABAABAAEAAAACAAAABAABAAEAAAADAAAABAABAAEAAAAEAAAABAABAAEAAAAQAAAABAABAAEAAAARAAAABAABAAEAAAAcAAAABAABAAEAAAAAAAEABAAAAAEAAAAAAAIABAAAAAEAAAAAAAMABAAAAAEAAAAAAAQABAABAAEAAAAAAAUABAABAAEAAAAAAAYABAABAAEAAAAAAAcABAABAAEAAAAAAAgABAABAAIAAAAAAAwABAACAAAAAAAAAA0ABAACAAEAAAAAAA4ABAAAAAEAAAAAAA8ABAAAAAEAAAAAABAABAAAAAEAAAAAABEABAAAAAEAAAAAABIABAAAAAEAAAAAABMABAABAAQAAAAMAP//BAABAAAAAAALAP//BAABAAAAAAAKAP//BAABAAAAAAAJAP//BAABAAAAAAAIAP//BAABAAAAAAAHAP//BAABAAAAAAAGAP//BAABAAAAAAAFAP//BAABAAAAAAAEAP//BAABAAAAAAADAP//BAABAAAAAAACAP//BAABAAAAAAABAP//BAABAAAAAAAAAP//BAAAAAAAAAATAP//BAABAAAAAAASAP//BAABAAAAAAARAP//BAABAAAAAAAQAP//BAABAAAAAAAeAP//BAABAAAAAAAdAP//BAABAAAAAAAcAP//BAABAAAAAAAbAP//BAABAAAAAAAaAP//BAABAAAAAAAZAP//BAABAAAAAAAYAP//BAABAAAAAAAXAP//BAABAAAAAAAWAP//BAABAAAAAAAVAP//BAABAAAAAAAUAP//BAABAAAAAAANAAAABAABAAEAAAANAP//BAABAAAAAAAfAAAABAACAAEAAAAfAP//BAACAAAAAAAeAAAABAABAAEAAAAdAAAABAABAAEAAAAfABIABAABAAIAAAAfAA4ABAACAAEAAAAfAA0ABAADAAEAAAAfAAwABAACAAEAAAAfAAsABAACAAEAAAAfAAoABAAAAAEAAAAfAAkABAACAAEAAAAfAAgABAABAAEAAAAfAAcABAACAAEAAAAfAAYABAACAAEAAAAfAAUABAAAAAEAAAAfAAQABAACAAEAAAAfAAMABAABAAIAAAAfAAIABAAAAAEAAAAfAAEABAACAAEAAAAPAAAABAABAAEAAAAPAP//BAABAAAAAAAOAAAABAABAAEAAAAOAP//BAABAAAAAAAeAAEABAABAAEAAAAeAAIABAABAAEAAAAeAAMABAABAAEAAAAdAAEABAABAAEAAAAcAAEABAAAAAIAAAAdAAIABAAAAAEAAAAdAAMABAAAAAIAAAAeAAQABAAAAAEAAAAeAAUABAAAAAEAAAAdAAYABAAAAAAAAAAdAAcABAABAAEAAAAcAAcABAAAAAAAAAAcAAgABAAAAAEAAAAcAAkABAAAAAIAAAAdAAkABAABAAEAAAAeAAoABAACAAEAAAAeAAkABAABAAEAAAAeAAgABAABAAEAAAAdAAgABAABAAEAAAAeAAYABAABAAEAAAAeAAcABAABAAEAAAAdAAoABAAAAAIAAAAeAAsABAAAAAEAAAAeAAwABAAAAAEAAAAeAA0ABAAAAAEAAAAeAA4ABAAAAAEAAAAfAA8ABAADAAEAAAAfABAABAABAAIAAAAeAA8ABAAAAAEAAAAeABAABAABAAEAAAAfABEABAABAAAAAAAdABAABAAAAAAAAAAdABEABAAAAAEAAAAdABIABAAAAAIAAAAeABEABAABAAEAAAAeABIABAABAAIAAAADAAEABAABAAEAAAAEAAEABAABAAEAAAAFAAEABAABAAEAAAAGAAEABAABAAEAAAAHAAEABAABAAEAAAAIAAEABAABAAEAAAALAAEABAABAAEAAAAMAAEABAABAAEAAAANAAEABAABAAEAAAAOAAEABAABAAEAAAABAAEABAABAAEAAAABAAIABAABAAEAAAABAAMABAACAAEAAAABAAQABAABAAEAAAABAAUABAABAAEAAAABAAYABAABAAEAAAABAAgABAACAAIAAAABAAcABAACAAEAAAACAAUABAACAAEAAAACAAQABAACAAAAAAACAAYABAACAAIAAAABAA4ABAACAAAAAAABAA8ABAACAAEAAAABABAABAABAAEAAAACABAABAACAAAAAAACABEABAACAAEAAAACABIABAACAAIAAAABABIABAABAAEAAAABABEABAABAAEAAAABABMABAACAAIAAAAeABsABAABAAAAAAAfABsABAACAAAAAAAdABwABAAAAAIAAAAeABwABAABAAEAAAAfABwABAACAAEAAAAeAB0ABAABAAIAAAAfAB0ABAACAAIAAAAeAB4ABAAAAAMAAAAfAB4ABAACAAMAAAAdAB0ABAABAAMAAAAEABEABAAAAAAAAAAEABIABAAAAAIAAAAFABEABAACAAAAAAAFABIABAACAAIAAAACAAEABAABAAEAAAACAAIABAABAAIAAAADAAIABAABAAIAAAAEAAIABAABAAIAAAAFAAIABAABAAIAAAAGAAIABAABAAIAAAAHAAIABAABAAIAAAAIAAIABAABAAIAAAAJAAIABAABAAIAAAAJAAEABAABAAEAAAAKAAEABAABAAEAAAAKAAIABAABAAEAAAAKAAMABAAAAAIAAAALAAMABAABAAIAAAAMAAMABAACAAIAAAAMAAIABAABAAEAAAALAAIABAABAAEAAAANAAIABAABAAIAAAAOAAIABAABAAEAAAAPAAIABAABAAEAAAAOAAMABAAAAAIAAAAPAAMABAABAAIAAAAQAAMABAABAAIAAAARAAMABAABAAIAAAARAAIABAABAAEAAAAQAAIABAABAAEAAAAQAAEABAABAAEAAAAPAAEABAABAAEAAAARAAEABAABAAEAAAASAAAABAABAAEAAAASAAEABAABAAEAAAASAAIABAABAAEAAAASAAMABAABAAIAAAATAAMABAACAAIAAAATAAIABAABAAEAAAATAAEABAABAAEAAAAUAAEABAABAAEAAAAUAAIABAABAAIAAAAVAAIABAABAAIAAAAWAAIABAABAAIAAAAXAAIABAACAAIAAAAXAAEABAACAAEAAAAWAAEABAABAAEAAAAVAAEABAABAAEAAAAUAAAABAABAAEAAAATAAAABAABAAEAAAAVAAAABAABAAEAAAAWAAAABAABAAEAAAAXAAAABAABAAEAAAAYAAAABAABAAIAAAAZAAAABAABAAIAAAAaAAAABAABAAIAAAAbAAAABAABAAIAAAAdABsABAAAAAQAAAD//wgABAAAAAIAAAD//wcABAAAAAEAAAD//wYABAAAAAEAAAD//wUABAAAAAEAAAD//wQABAAAAAAAAAD//w0ABAAAAAIAAAD//wwABAAAAAAAAAA=") tile_set = ExtResource("6_5j6h7") -metadata/_edit_lock_ = true [node name="Stone_Decorations_Level1" type="TileMapLayer" parent="TileMapLayers" unique_id=238726618] -tile_map_data = PackedByteArray("AAAeABEAAAACAAEAAAABAAkAAAADAAMAAAA=") +tile_map_data = PackedByteArray("AAAeABEAAAACAAEAAAA=") tile_set = ExtResource("9_duxxr") [node name="Bridges" type="TileMapLayer" parent="TileMapLayers" unique_id=569695556] @@ -147,12 +149,23 @@ tile_set = ExtResource("6_5j6h7") tile_map_data = PackedByteArray("AAAEAP//AQAAAAMAAAAFAP//AQABAAMAAAAGAP//AQABAAMAAAAHAP//AQACAAMAAAAeAAgAAQADAAMAAAA=") tile_set = ExtResource("7_r1ek1") -[node name="Player" parent="." unique_id=322121009 instance=ExtResource("3_tp7qs")] +[node name="WestPathBarrierVoid" type="TileMapLayer" parent="TileMapLayers" unique_id=1715727017 node_paths=PackedStringArray("target")] +y_sort_enabled = true +material = ExtResource("11_wymun") +tile_map_data = PackedByteArray("AAAAAAsADQACAAEAAAD//wsADQAAAAEAAAD//woADQAAAAEAAAAAAAoADQACAAEAAAAAAAkADQACAAEAAAD//wkADQAAAAEAAAD//wgADQAAAAEAAAAAAAgADQACAAEAAAAAAAcADQACAAEAAAD//wcADQAAAAEAAAD//wYADQAAAAEAAAAAAAYADQACAAEAAAAAAAUADQABAAAAAAABAAUADQACAAMAAAD//wUADQAAAAAAAAAAAAwADQACAAEAAAD//wwADQAAAAEAAAAAAA0ADQACAAEAAAAAAA4ADQACAAIAAAD//w4ADQAAAAIAAAD//w0ADQAAAAEAAAA=") +tile_set = ExtResource("12_f3823") +script = ExtResource("14_f3823") +target = NodePath(".") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=444049774] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=322121009 instance=ExtResource("3_tp7qs")] position = Vector2(985, 871) player_name = "StoryWeaver" sprite_frames = ExtResource("6_06x6x") -[node name="Camera2D" type="Camera2D" parent="Player" unique_id=1804658839] +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1804658839] limit_left = 0 limit_top = 0 limit_right = 2048 @@ -160,965 +173,958 @@ limit_bottom = 1950 position_smoothing_enabled = true editor_draw_limits = true -[node name="Props" type="Node2D" parent="." unique_id=1456259135] +[node name="Props" type="Node2D" parent="OnTheGround" unique_id=1456259135] y_sort_enabled = true -[node name="Flowerbed" type="Area2D" parent="Props" unique_id=1756580895] +[node name="Flowerbed" type="Area2D" parent="OnTheGround/Props" unique_id=1756580895] y_sort_enabled = true position = Vector2(1358.05, 1693.82) -[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Props/Flowerbed" unique_id=1572957504] +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="OnTheGround/Props/Flowerbed" unique_id=1572957504] polygon = PackedVector2Array(80.9502, -52.8169, 81.9502, 73.1831, 145.95, 74.1831, 146.95, 134.183, 476.95, 136.183, 480.95, 204.183, -87.05, 210.18, -91.05, -178.82, 10.95, -176.82, 11.649, -54.5072) disabled = true -[node name="AreaFiller" type="Node" parent="Props/Flowerbed" unique_id=2112962760] +[node name="AreaFiller" type="Node" parent="OnTheGround/Props/Flowerbed" unique_id=2112962760] script = ExtResource("38_cjmkx") scenes = Array[PackedScene]([ExtResource("45_cjmkx")]) metadata/_custom_type_script = "uid://bdhjixygupit1" -[node name="Flower" parent="Props/Flowerbed" unique_id=1988763718 instance=ExtResource("45_cjmkx")] +[node name="Flower" parent="OnTheGround/Props/Flowerbed" unique_id=1988763718 instance=ExtResource("45_cjmkx")] position = Vector2(145.987, 76.4082) -[node name="Flower2" parent="Props/Flowerbed" unique_id=1548333974 instance=ExtResource("45_cjmkx")] +[node name="Flower2" parent="OnTheGround/Props/Flowerbed" unique_id=1548333974 instance=ExtResource("45_cjmkx")] position = Vector2(162.489, 161.379) -[node name="Flower3" parent="Props/Flowerbed" unique_id=2134303870 instance=ExtResource("45_cjmkx")] +[node name="Flower3" parent="OnTheGround/Props/Flowerbed" unique_id=2134303870 instance=ExtResource("45_cjmkx")] position = Vector2(57.5313, 127.062) -[node name="Flower4" parent="Props/Flowerbed" unique_id=1752128493 instance=ExtResource("45_cjmkx")] +[node name="Flower4" parent="OnTheGround/Props/Flowerbed" unique_id=1752128493 instance=ExtResource("45_cjmkx")] position = Vector2(82.1759, 198.141) -[node name="Flower5" parent="Props/Flowerbed" unique_id=1943009921 instance=ExtResource("45_cjmkx")] +[node name="Flower5" parent="OnTheGround/Props/Flowerbed" unique_id=1943009921 instance=ExtResource("45_cjmkx")] position = Vector2(80.8003, -8.4669) -[node name="Flower6" parent="Props/Flowerbed" unique_id=745432647 instance=ExtResource("45_cjmkx")] +[node name="Flower6" parent="OnTheGround/Props/Flowerbed" unique_id=745432647 instance=ExtResource("45_cjmkx")] position = Vector2(74.8754, 58.9827) -[node name="Flower7" parent="Props/Flowerbed" unique_id=138652301 instance=ExtResource("45_cjmkx")] +[node name="Flower7" parent="OnTheGround/Props/Flowerbed" unique_id=138652301 instance=ExtResource("45_cjmkx")] position = Vector2(-4.8579, -36.5672) -[node name="Flower8" parent="Props/Flowerbed" unique_id=1436937558 instance=ExtResource("45_cjmkx")] +[node name="Flower8" parent="OnTheGround/Props/Flowerbed" unique_id=1436937558 instance=ExtResource("45_cjmkx")] position = Vector2(-32.8836, 174.97) -[node name="Flower9" parent="Props/Flowerbed" unique_id=1859873472 instance=ExtResource("45_cjmkx")] +[node name="Flower9" parent="OnTheGround/Props/Flowerbed" unique_id=1859873472 instance=ExtResource("45_cjmkx")] position = Vector2(-15.228, 43.4394) -[node name="Flower10" parent="Props/Flowerbed" unique_id=1386057877 instance=ExtResource("45_cjmkx")] +[node name="Flower10" parent="OnTheGround/Props/Flowerbed" unique_id=1386057877 instance=ExtResource("45_cjmkx")] position = Vector2(2.49678, -154.987) -[node name="Flower11" parent="Props/Flowerbed" unique_id=1994124578 instance=ExtResource("45_cjmkx")] +[node name="Flower11" parent="OnTheGround/Props/Flowerbed" unique_id=1994124578 instance=ExtResource("45_cjmkx")] position = Vector2(-88.8473, -124.21) -[node name="Flower12" parent="Props/Flowerbed" unique_id=1382502556 instance=ExtResource("45_cjmkx")] +[node name="Flower12" parent="OnTheGround/Props/Flowerbed" unique_id=1382502556 instance=ExtResource("45_cjmkx")] position = Vector2(-69.4298, -27.7301) -[node name="Flower13" parent="Props/Flowerbed" unique_id=1907674779 instance=ExtResource("45_cjmkx")] +[node name="Flower13" parent="OnTheGround/Props/Flowerbed" unique_id=1907674779 instance=ExtResource("45_cjmkx")] position = Vector2(-58.1484, 99.4569) -[node name="Flower14" parent="Props/Flowerbed" unique_id=695590111 instance=ExtResource("45_cjmkx")] +[node name="Flower14" parent="OnTheGround/Props/Flowerbed" unique_id=695590111 instance=ExtResource("45_cjmkx")] position = Vector2(242.783, 153.786) -[node name="Flower15" parent="Props/Flowerbed" unique_id=115557080 instance=ExtResource("45_cjmkx")] +[node name="Flower15" parent="OnTheGround/Props/Flowerbed" unique_id=115557080 instance=ExtResource("45_cjmkx")] position = Vector2(360.015, 195.757) -[node name="Flower16" parent="Props/Flowerbed" unique_id=1528302531 instance=ExtResource("45_cjmkx")] +[node name="Flower16" parent="OnTheGround/Props/Flowerbed" unique_id=1528302531 instance=ExtResource("45_cjmkx")] position = Vector2(290.57, 206.026) -[node name="Flower17" parent="Props/Flowerbed" unique_id=1997626178 instance=ExtResource("45_cjmkx")] +[node name="Flower17" parent="OnTheGround/Props/Flowerbed" unique_id=1997626178 instance=ExtResource("45_cjmkx")] position = Vector2(465.862, 159.547) -[node name="HidingMushroom" parent="Props" unique_id=806733559 instance=ExtResource("11_jqkod")] +[node name="HidingMushroom" parent="OnTheGround/Props" unique_id=806733559 instance=ExtResource("11_jqkod")] position = Vector2(906, 1516) -[node name="HidingMushroom2" parent="Props" unique_id=320834486 instance=ExtResource("11_jqkod")] +[node name="HidingMushroom2" parent="OnTheGround/Props" unique_id=320834486 instance=ExtResource("11_jqkod")] position = Vector2(1061, 1643) -[node name="HidingMushroom3" parent="Props" unique_id=47733831 instance=ExtResource("11_jqkod")] +[node name="HidingMushroom3" parent="OnTheGround/Props" unique_id=47733831 instance=ExtResource("11_jqkod")] position = Vector2(929, 1235) -[node name="HidingMushroom4" parent="Props" unique_id=631928334 instance=ExtResource("11_jqkod")] +[node name="HidingMushroom4" parent="OnTheGround/Props" unique_id=631928334 instance=ExtResource("11_jqkod")] position = Vector2(1049, 1193) -[node name="Books" parent="Props" unique_id=605503809 instance=ExtResource("12_06x6x")] +[node name="Books" parent="OnTheGround/Props" unique_id=605503809 instance=ExtResource("12_06x6x")] position = Vector2(616, 611) flip_h = true -[node name="Books2" parent="Props" unique_id=684398653 instance=ExtResource("12_06x6x")] +[node name="Books2" parent="OnTheGround/Props" unique_id=684398653 instance=ExtResource("12_06x6x")] position = Vector2(584, 597) -[node name="Books3" parent="Props" unique_id=78212091 instance=ExtResource("12_06x6x")] +[node name="Books3" parent="OnTheGround/Props" unique_id=78212091 instance=ExtResource("12_06x6x")] position = Vector2(625, 587) -[node name="Books4" parent="Props" unique_id=1621819696 instance=ExtResource("12_06x6x")] +[node name="Books4" parent="OnTheGround/Props" unique_id=1621819696 instance=ExtResource("12_06x6x")] position = Vector2(615, 611) texture = ExtResource("13_xt3dw") offset = Vector2(0, -32) -[node name="Books5" parent="Props" unique_id=392060181 instance=ExtResource("12_06x6x")] +[node name="Books5" parent="OnTheGround/Props" unique_id=392060181 instance=ExtResource("12_06x6x")] position = Vector2(1390, 607) texture = ExtResource("13_xt3dw") flip_h = true -[node name="Books6" parent="Props" unique_id=2006272186 instance=ExtResource("12_06x6x")] +[node name="Books6" parent="OnTheGround/Props" unique_id=2006272186 instance=ExtResource("12_06x6x")] position = Vector2(1380, 606) offset = Vector2(0, -38.745) -[node name="Books7" parent="Props" unique_id=895530811 instance=ExtResource("12_06x6x")] +[node name="Books7" parent="OnTheGround/Props" unique_id=895530811 instance=ExtResource("12_06x6x")] position = Vector2(1217, 596) texture = ExtResource("13_xt3dw") -[node name="Books8" parent="Props" unique_id=109380584 instance=ExtResource("12_06x6x")] +[node name="Books8" parent="OnTheGround/Props" unique_id=109380584 instance=ExtResource("12_06x6x")] position = Vector2(1247, 583) flip_h = true -[node name="Books9" parent="Props" unique_id=725853317 instance=ExtResource("12_06x6x")] +[node name="Books9" parent="OnTheGround/Props" unique_id=725853317 instance=ExtResource("12_06x6x")] position = Vector2(764, 593) texture = ExtResource("13_xt3dw") flip_h = true -[node name="Books10" parent="Props" unique_id=275297103 instance=ExtResource("12_06x6x")] +[node name="Books10" parent="OnTheGround/Props" unique_id=275297103 instance=ExtResource("12_06x6x")] position = Vector2(781, 614) -[node name="Mushroom" type="Sprite2D" parent="Props" unique_id=1958366461] +[node name="Mushroom" type="Sprite2D" parent="OnTheGround/Props" unique_id=1958366461] position = Vector2(501, 679) texture = ExtResource("28_6r0j2") -[node name="Buildings" type="Node2D" parent="." unique_id=1875429791] +[node name="Buildings" type="Node2D" parent="OnTheGround" unique_id=1875429791] y_sort_enabled = true -[node name="House_1" parent="Buildings" unique_id=1159586657 instance=ExtResource("5_5jg1p")] +[node name="House_1" parent="OnTheGround/Buildings" unique_id=1159586657 instance=ExtResource("5_5jg1p")] position = Vector2(1600, 815) texture = ExtResource("5_uhynt") -[node name="House_2" parent="Buildings" unique_id=821648560 instance=ExtResource("15_uhynt")] +[node name="House_2" parent="OnTheGround/Buildings" unique_id=821648560 instance=ExtResource("15_uhynt")] position = Vector2(1760, 810) texture = ExtResource("5_uojly") -[node name="House_3" parent="Buildings" unique_id=2108055439 instance=ExtResource("5_5jg1p")] +[node name="House_3" parent="OnTheGround/Buildings" unique_id=2108055439 instance=ExtResource("5_5jg1p")] position = Vector2(316, 1043) -[node name="House_4" parent="Buildings" unique_id=1336347029 instance=ExtResource("15_uhynt")] +[node name="House_4" parent="OnTheGround/Buildings" unique_id=1336347029 instance=ExtResource("15_uhynt")] position = Vector2(352, 673) texture = ExtResource("6_uhynt") -[node name="House_5" parent="Buildings" unique_id=32389067 instance=ExtResource("5_5jg1p")] +[node name="House_5" parent="OnTheGround/Buildings" unique_id=32389067 instance=ExtResource("5_5jg1p")] position = Vector2(176, 626) texture = ExtResource("6_ojp30") -[node name="House_6" parent="Buildings" unique_id=1538226071 instance=ExtResource("5_5jg1p")] +[node name="House_6" parent="OnTheGround/Buildings" unique_id=1538226071 instance=ExtResource("5_5jg1p")] position = Vector2(227, 832) texture = ExtResource("5_uhynt") -[node name="House_7" parent="Buildings" unique_id=2109293750 instance=ExtResource("5_5jg1p")] +[node name="House_7" parent="OnTheGround/Buildings" unique_id=2109293750 instance=ExtResource("5_5jg1p")] position = Vector2(1565, 1110) -[node name="House_8" parent="Buildings" unique_id=2122984790 instance=ExtResource("15_uhynt")] +[node name="House_8" parent="OnTheGround/Buildings" unique_id=2122984790 instance=ExtResource("15_uhynt")] position = Vector2(480, 1043) -[node name="House_9" parent="Buildings" unique_id=679799188 instance=ExtResource("5_5jg1p")] +[node name="House_9" parent="OnTheGround/Buildings" unique_id=679799188 instance=ExtResource("5_5jg1p")] position = Vector2(781, 1095) texture = ExtResource("5_uhynt") -[node name="House_10" parent="Buildings" unique_id=1796299989 instance=ExtResource("5_5jg1p")] +[node name="House_10" parent="OnTheGround/Buildings" unique_id=1796299989 instance=ExtResource("5_5jg1p")] position = Vector2(1758, 1185) texture = ExtResource("5_uhynt") -[node name="NPCs" type="Node2D" parent="." unique_id=1415886134] +[node name="NPCs" type="Node2D" parent="OnTheGround" unique_id=1415886134] y_sort_enabled = true -[node name="LoreQuestElder" parent="NPCs" unique_id=1976657330 node_paths=PackedStringArray("eternal_loom") instance=ExtResource("20_xt3dw")] +[node name="LoreQuestElder" parent="OnTheGround/NPCs" unique_id=1976657330 node_paths=PackedStringArray("eternal_loom") instance=ExtResource("20_xt3dw")] position = Vector2(690, 600) eternal_loom = NodePath("../../EternalLoom") -[node name="StoryQuestElder" parent="NPCs" unique_id=481001643 node_paths=PackedStringArray("eternal_loom") instance=ExtResource("20_jqkod")] +[node name="StoryQuestElder" parent="OnTheGround/NPCs" unique_id=481001643 node_paths=PackedStringArray("eternal_loom") instance=ExtResource("20_jqkod")] position = Vector2(1310, 598) eternal_loom = NodePath("../../EternalLoom") -[node name="TemplateElder" parent="NPCs" unique_id=45322364 node_paths=PackedStringArray("eternal_loom") instance=ExtResource("43_ppslc")] +[node name="TemplateElder" parent="OnTheGround/NPCs" unique_id=45322364 node_paths=PackedStringArray("eternal_loom") instance=ExtResource("43_ppslc")] position = Vector2(1455, 493) eternal_loom = NodePath("../../EternalLoom") -[node name="Axeman" parent="NPCs" unique_id=1020611644 instance=ExtResource("17_0a1i7")] +[node name="Axeman" parent="OnTheGround/NPCs" unique_id=1020611644 instance=ExtResource("17_0a1i7")] position = Vector2(1506, 1263) -[node name="Hammerman" parent="NPCs" unique_id=1228849708 instance=ExtResource("19_yntpr")] +[node name="Hammerman" parent="OnTheGround/NPCs" unique_id=1228849708 instance=ExtResource("19_yntpr")] position = Vector2(1663, 1102) -[node name="Farmer" parent="NPCs" unique_id=1098678013 instance=ExtResource("54_duxxr")] +[node name="Farmer" parent="OnTheGround/NPCs" unique_id=1098678013 instance=ExtResource("54_duxxr")] position = Vector2(1625, 625) scale = Vector2(-1, 1) character_seed = 3442244821 look_at_side = 1 -[node name="TalkBehavior" type="Node" parent="NPCs/Farmer" unique_id=732454003 node_paths=PackedStringArray("interact_area")] +[node name="TalkBehavior" type="Node" parent="OnTheGround/NPCs/Farmer" unique_id=732454003 node_paths=PackedStringArray("interact_area")] script = ExtResource("56_ojao8") dialogue = ExtResource("25_6r0j2") interact_area = NodePath("../InteractArea") metadata/_custom_type_script = "uid://edcifob4jc4s" -[node name="InteractArea" parent="NPCs/Farmer" unique_id=248145530 instance=ExtResource("55_2vvub")] -visible = false -interact_label_position = Vector2(0, -100) +[node name="InteractArea" type="Area2D" parent="OnTheGround/NPCs/Farmer" unique_id=248145530] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("37_f3823") +metadata/_custom_type_script = "uid://du8wfijr35r35" -[node name="CollisionShape2D" type="CollisionShape2D" parent="NPCs/Farmer/InteractArea" unique_id=1727136394] +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/NPCs/Farmer/InteractArea" unique_id=1727136394] +visible = false position = Vector2(0, -23.5) shape = SubResource("RectangleShape2D_duxxr") debug_color = Color(0.600391, 0.54335, 0, 0.42) -[node name="FarmersPartner" parent="NPCs" unique_id=1246028381 instance=ExtResource("54_duxxr")] +[node name="FarmersPartner" parent="OnTheGround/NPCs" unique_id=1246028381 instance=ExtResource("54_duxxr")] position = Vector2(1638, 841) scale = Vector2(-1, 1) character_seed = 3260235337 look_at_side = 1 -[node name="GardenerA" parent="NPCs" unique_id=1887606289 instance=ExtResource("54_duxxr")] +[node name="GardenerA" parent="OnTheGround/NPCs" unique_id=1887606289 instance=ExtResource("54_duxxr")] position = Vector2(199, 899) character_seed = 2422434786 -[node name="GardenerB" parent="NPCs" unique_id=514890698 instance=ExtResource("54_duxxr")] +[node name="TalkBehavior" type="Node" parent="OnTheGround/NPCs/GardenerA" unique_id=1669484224 node_paths=PackedStringArray("interact_area", "extra_context")] +script = ExtResource("56_ojao8") +dialogue = ExtResource("34_ulm71") +interact_area = NodePath("../InteractArea") +extra_context = [NodePath("../../../WestPath/Unlocker")] +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="InteractArea" type="Area2D" parent="OnTheGround/NPCs/GardenerA" unique_id=1100609138] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("37_f3823") +action = "Talk to Marie" +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/NPCs/GardenerA/InteractArea" unique_id=1159647598] +visible = false +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_duxxr") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="GardenerB" parent="OnTheGround/NPCs" unique_id=514890698 instance=ExtResource("54_duxxr")] position = Vector2(268, 894) scale = Vector2(-1, 1) character_seed = 3363471871 look_at_side = 1 -[node name="Cat" parent="NPCs" unique_id=1091997689 instance=ExtResource("52_ppslc")] +[node name="Cat" parent="OnTheGround/NPCs" unique_id=1091997689 instance=ExtResource("52_ppslc")] position = Vector2(267, 650) -[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1144668032] - -[node name="HBoxContainer" type="HBoxContainer" parent="ScreenOverlay" unique_id=1583452192] -anchors_preset = 2 -anchor_top = 1.0 -anchor_bottom = 1.0 -offset_top = -204.0 -offset_right = 312.0 -grow_vertical = 0 - -[node name="MovementInputHints" parent="ScreenOverlay/HBoxContainer" unique_id=1177139186 instance=ExtResource("28_lftgk")] -layout_mode = 2 -size_flags_vertical = 8 - -[node name="Label" type="Label" parent="ScreenOverlay/HBoxContainer/MovementInputHints" unique_id=305959218] -layout_mode = 2 -theme = ExtResource("35_ljovl") -theme_type_variation = &"HintLabel" -theme_override_font_sizes/font_size = 25 -text = "Move" - -[node name="Repel_hint" type="HBoxContainer" parent="ScreenOverlay/HBoxContainer" unique_id=1999907467] -layout_mode = 2 -size_flags_vertical = 8 - -[node name="InteractionInputHints" type="CenterContainer" parent="ScreenOverlay/HBoxContainer/Repel_hint" unique_id=413031927] -layout_mode = 2 -size_flags_vertical = 8 - -[node name="InteractionInputHint" type="TextureRect" parent="ScreenOverlay/HBoxContainer/Repel_hint/InteractionInputHints" unique_id=922596843] -layout_mode = 2 -size_flags_vertical = 8 -texture = ExtResource("36_ns5r3") -script = ExtResource("55_wymun") -action_name = &"interact" -keyboard_texture = ExtResource("36_ns5r3") -xbox_controller_texture = ExtResource("36_r1ek1") -playstation_controller_texture = ExtResource("37_ns5r3") -nintendo_controller_texture = ExtResource("38_5j6h7") -steam_controller_texture = ExtResource("39_duxxr") - -[node name="Label" type="Label" parent="ScreenOverlay/HBoxContainer/Repel_hint/InteractionInputHints/InteractionInputHint" unique_id=1350330617] -layout_mode = 0 -offset_left = 65.0 -offset_top = 17.0 -offset_right = 118.0 -offset_bottom = 44.0 -theme = ExtResource("35_ljovl") -theme_type_variation = &"HintLabel" -text = "Interact" - -[node name="HUD" parent="." unique_id=1876437396 instance=ExtResource("27_aj6tp")] -unique_name_in_owner = true - -[node name="EternalLoom" parent="." unique_id=17061783 instance=ExtResource("16_ojp30")] +[node name="EternalLoom" parent="OnTheGround" unique_id=17061783 instance=ExtResource("16_ojp30")] unique_name_in_owner = true position = Vector2(993, 485) scale = Vector2(0.9, 0.9) -[node name="ForestLimit" type="StaticBody2D" parent="." unique_id=1908977889] +[node name="ForestLimit" type="StaticBody2D" parent="OnTheGround" unique_id=1908977889] position = Vector2(972, 2047) scale = Vector2(1.10441, 1.00725) collision_layer = 16 collision_mask = 0 -[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="ForestLimit" unique_id=748237013] +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="OnTheGround/ForestLimit" unique_id=748237013] position = Vector2(-2.33667, 6.93182) scale = Vector2(1.00152, 1.02166) polygon = PackedVector2Array(-877.343, -208.91, -817.673, -167.124, -758.004, -191.418, -697.43, -150.605, -638.664, -170.04, -579.899, -209.882, -460.559, -201.136, -390.04, -228.345, -324.042, -206.966, -255.332, -160.322, -168.539, -205.023, -99.8287, -193.362, -2.18738, -175.87, 55.6742, -183.644, 109.919, -223.486, 171.397, -226.401, 217.506, -200.164, 320.572, -186.559, 404.652, -186.559, 505.005, -189.475, 517.662, -237.091, 589.455, -238.273, 670.946, -241.251, 812.201, -217.423, 889.163, -140.978, 974.222, 0.017334, -874.675, -0.992798) -[node name="CollisionPolygon2D2" type="CollisionPolygon2D" parent="ForestLimit" unique_id=188105721] +[node name="CollisionPolygon2D2" type="CollisionPolygon2D" parent="OnTheGround/ForestLimit" unique_id=188105721] position = Vector2(6.10352e-05, -1792.01) scale = Vector2(1.00305, 1) polygon = PackedVector2Array(-873.82, 17.8702, -689.668, 200.546, -618.354, 169.769, -545.235, 221.395, -473.921, 218.416, -396.288, 198.56, -292.477, 203.524, -221.163, 234.301, -112.838, 248.2, 16.2487, 229.337, 102.908, 234.301, 180.541, 220.402, 250.952, 228.344, 366.499, 163.812, 447.742, 157.855, 557.873, 112.186, 637.311, 51.6255, 710.43, 88.3592, 853.058, 87.3664, 974.02, -238.273, -881.944, -234.302) -[node name="Trees" type="Node2D" parent="." unique_id=378434157] +[node name="Trees" type="Node2D" parent="OnTheGround" unique_id=378434157] y_sort_enabled = true metadata/_edit_lock_ = true -[node name="Tree" parent="Trees" unique_id=1932501761 instance=ExtResource("7_7v00g")] +[node name="Tree" parent="OnTheGround/Trees" unique_id=1932501761 instance=ExtResource("7_7v00g")] position = Vector2(1376, 405) scale = Vector2(1.001, 1.001) -[node name="Tree3" parent="Trees" unique_id=1678596388 instance=ExtResource("7_7v00g")] +[node name="Tree3" parent="OnTheGround/Trees" unique_id=1678596388 instance=ExtResource("7_7v00g")] position = Vector2(323.669, 1963.03) scale = Vector2(1.002, 1.002) -[node name="Tree4" parent="Trees" unique_id=530347632 instance=ExtResource("7_7v00g")] +[node name="Tree4" parent="OnTheGround/Trees" unique_id=530347632 instance=ExtResource("7_7v00g")] position = Vector2(689.696, 2027.02) scale = Vector2(1.002, 1.002) -[node name="Tree5" parent="Trees" unique_id=1674843860 instance=ExtResource("7_7v00g")] +[node name="Tree5" parent="OnTheGround/Trees" unique_id=1674843860 instance=ExtResource("7_7v00g")] position = Vector2(552.436, 1940.99) scale = Vector2(1.002, 1.002) -[node name="Tree6" parent="Trees" unique_id=79446423 instance=ExtResource("7_7v00g")] +[node name="Tree6" parent="OnTheGround/Trees" unique_id=79446423 instance=ExtResource("7_7v00g")] position = Vector2(802.62, 1968.27) scale = Vector2(1.002, 1.002) -[node name="Tree7" parent="Trees" unique_id=649963827 instance=ExtResource("7_7v00g")] +[node name="Tree7" parent="OnTheGround/Trees" unique_id=649963827 instance=ExtResource("7_7v00g")] position = Vector2(948.642, 1993.45) scale = Vector2(1.002, 1.002) -[node name="Tree8" parent="Trees" unique_id=500116567 instance=ExtResource("7_7v00g")] +[node name="Tree8" parent="OnTheGround/Trees" unique_id=500116567 instance=ExtResource("7_7v00g")] position = Vector2(1178.38, 2021.78) scale = Vector2(1.002, 1.002) -[node name="Tree10" parent="Trees" unique_id=1207688304 instance=ExtResource("7_7v00g")] +[node name="Tree10" parent="OnTheGround/Trees" unique_id=1207688304 instance=ExtResource("7_7v00g")] position = Vector2(1064.49, 2012.34) scale = Vector2(1.002, 1.002) -[node name="Tree11" parent="Trees" unique_id=1813349792 instance=ExtResource("7_7v00g")] +[node name="Tree11" parent="OnTheGround/Trees" unique_id=1813349792 instance=ExtResource("7_7v00g")] position = Vector2(1669.99, 253.919) scale = Vector2(1.002, 1.002) -[node name="Tree12" parent="Trees" unique_id=142989831 instance=ExtResource("7_7v00g")] +[node name="Tree12" parent="OnTheGround/Trees" unique_id=142989831 instance=ExtResource("7_7v00g")] position = Vector2(1083.96, 1949.38) scale = Vector2(1.002, 1.002) -[node name="Tree13" parent="Trees" unique_id=831282679 instance=ExtResource("7_7v00g")] +[node name="Tree13" parent="OnTheGround/Trees" unique_id=831282679 instance=ExtResource("7_7v00g")] position = Vector2(1234.84, 2008.14) scale = Vector2(1.002, 1.002) -[node name="Tree14" parent="Trees" unique_id=1307485281 instance=ExtResource("7_7v00g")] +[node name="Tree14" parent="OnTheGround/Trees" unique_id=1307485281 instance=ExtResource("7_7v00g")] position = Vector2(1875.39, 905.457) scale = Vector2(1.002, 1.002) -[node name="Tree15" parent="Trees" unique_id=2053677081 instance=ExtResource("7_7v00g")] +[node name="Tree15" parent="OnTheGround/Trees" unique_id=2053677081 instance=ExtResource("7_7v00g")] position = Vector2(1389.63, 1982.96) scale = Vector2(1.002, 1.002) -[node name="Tree16" parent="Trees" unique_id=2124166383 instance=ExtResource("7_7v00g")] +[node name="Tree16" parent="OnTheGround/Trees" unique_id=2124166383 instance=ExtResource("7_7v00g")] position = Vector2(403.493, 416.541) scale = Vector2(1.002, 1.002) -[node name="Tree17" parent="Trees" unique_id=1427257925 instance=ExtResource("7_7v00g")] +[node name="Tree17" parent="OnTheGround/Trees" unique_id=1427257925 instance=ExtResource("7_7v00g")] position = Vector2(402.52, 467.951) scale = Vector2(1.002, 1.002) -[node name="Tree74" parent="Trees" unique_id=1148920514 instance=ExtResource("7_7v00g")] +[node name="Tree74" parent="OnTheGround/Trees" unique_id=1148920514 instance=ExtResource("7_7v00g")] position = Vector2(702, 529) scale = Vector2(1.002, 1.002) -[node name="Tree18" parent="Trees" unique_id=1024302850 instance=ExtResource("7_7v00g")] +[node name="Tree18" parent="OnTheGround/Trees" unique_id=1024302850 instance=ExtResource("7_7v00g")] position = Vector2(479.425, 461.655) scale = Vector2(1.002, 1.002) -[node name="Tree19" parent="Trees" unique_id=549093584 instance=ExtResource("7_7v00g")] +[node name="Tree19" parent="OnTheGround/Trees" unique_id=549093584 instance=ExtResource("7_7v00g")] position = Vector2(489.16, 403.951) scale = Vector2(1.002, 1.002) -[node name="Tree73" parent="Trees" unique_id=202446030 instance=ExtResource("7_7v00g")] +[node name="Tree73" parent="OnTheGround/Trees" unique_id=202446030 instance=ExtResource("7_7v00g")] position = Vector2(489.16, 403.951) scale = Vector2(1.002, 1.002) -[node name="Tree20" parent="Trees" unique_id=1987312795 instance=ExtResource("7_7v00g")] +[node name="Tree20" parent="OnTheGround/Trees" unique_id=1987312795 instance=ExtResource("7_7v00g")] position = Vector2(747.132, 464.803) scale = Vector2(1.002, 1.002) -[node name="Tree21" parent="Trees" unique_id=1909086150 instance=ExtResource("7_7v00g")] +[node name="Tree21" parent="OnTheGround/Trees" unique_id=1909086150 instance=ExtResource("7_7v00g")] position = Vector2(548.542, 376.672) scale = Vector2(1.002, 1.002) -[node name="Tree23" parent="Trees" unique_id=565373046 instance=ExtResource("7_7v00g")] +[node name="Tree23" parent="OnTheGround/Trees" unique_id=565373046 instance=ExtResource("7_7v00g")] position = Vector2(559.25, 445.918) scale = Vector2(1.002, 1.002) -[node name="Tree71" parent="Trees" unique_id=508746342 instance=ExtResource("7_7v00g")] +[node name="Tree71" parent="OnTheGround/Trees" unique_id=508746342 instance=ExtResource("7_7v00g")] position = Vector2(1322, 535) scale = Vector2(1.002, 1.002) -[node name="Tree24" parent="Trees" unique_id=1413823818 instance=ExtResource("7_7v00g")] +[node name="Tree24" parent="OnTheGround/Trees" unique_id=1413823818 instance=ExtResource("7_7v00g")] position = Vector2(411.281, 1993.45) scale = Vector2(1.002, 1.002) -[node name="Tree25" parent="Trees" unique_id=622131440 instance=ExtResource("7_7v00g")] +[node name="Tree25" parent="OnTheGround/Trees" unique_id=622131440 instance=ExtResource("7_7v00g")] position = Vector2(1426.62, 377.721) scale = Vector2(1.002, 1.002) -[node name="Tree26" parent="Trees" unique_id=1149585713 instance=ExtResource("7_7v00g")] +[node name="Tree26" parent="OnTheGround/Trees" unique_id=1149585713 instance=ExtResource("7_7v00g")] position = Vector2(878.552, 2013.39) scale = Vector2(1.002, 1.002) -[node name="Tree30" parent="Trees" unique_id=1360494059 instance=ExtResource("7_7v00g")] +[node name="Tree30" parent="OnTheGround/Trees" unique_id=1360494059 instance=ExtResource("7_7v00g")] position = Vector2(960.324, 2041.72) scale = Vector2(1.002, 1.002) -[node name="Tree31" parent="Trees" unique_id=217219671 instance=ExtResource("7_7v00g")] +[node name="Tree31" parent="OnTheGround/Trees" unique_id=217219671 instance=ExtResource("7_7v00g")] position = Vector2(1377.95, 1170.9) scale = Vector2(1.002, 1.002) -[node name="Tree32" parent="Trees" unique_id=921811469 instance=ExtResource("7_7v00g")] +[node name="Tree32" parent="OnTheGround/Trees" unique_id=921811469 instance=ExtResource("7_7v00g")] position = Vector2(1160.86, 1940.99) scale = Vector2(1.002, 1.002) -[node name="Tree33" parent="Trees" unique_id=275476476 instance=ExtResource("7_7v00g")] +[node name="Tree33" parent="OnTheGround/Trees" unique_id=275476476 instance=ExtResource("7_7v00g")] position = Vector2(1744.95, 308.476) scale = Vector2(1.002, 1.002) -[node name="Tree36" parent="Trees" unique_id=1997957129 instance=ExtResource("7_7v00g")] +[node name="Tree36" parent="OnTheGround/Trees" unique_id=1997957129 instance=ExtResource("7_7v00g")] position = Vector2(1510.34, 380.869) scale = Vector2(1.002, 1.002) -[node name="Tree37" parent="Trees" unique_id=1733761308 instance=ExtResource("7_7v00g")] +[node name="Tree37" parent="OnTheGround/Trees" unique_id=1733761308 instance=ExtResource("7_7v00g")] position = Vector2(1579.46, 346.246) scale = Vector2(1.002, 1.002) -[node name="Tree38" parent="Trees" unique_id=794097989 instance=ExtResource("7_7v00g")] +[node name="Tree38" parent="OnTheGround/Trees" unique_id=794097989 instance=ExtResource("7_7v00g")] position = Vector2(78.3536, 2020.73) scale = Vector2(1.002, 1.002) -[node name="Tree39" parent="Trees" unique_id=1427896511 instance=ExtResource("7_7v00g")] +[node name="Tree39" parent="OnTheGround/Trees" unique_id=1427896511 instance=ExtResource("7_7v00g")] position = Vector2(1289.36, 410.246) scale = Vector2(1.002, 1.002) -[node name="Tree41" parent="Trees" unique_id=1126274595 instance=ExtResource("7_7v00g")] +[node name="Tree41" parent="OnTheGround/Trees" unique_id=1126274595 instance=ExtResource("7_7v00g")] position = Vector2(1093.69, 352.541) scale = Vector2(1.002, 1.002) -[node name="Tree42" parent="Trees" unique_id=1219058508 instance=ExtResource("7_7v00g")] +[node name="Tree42" parent="OnTheGround/Trees" unique_id=1219058508 instance=ExtResource("7_7v00g")] position = Vector2(240.926, 446.967) scale = Vector2(1.002, 1.002) -[node name="Tree45" parent="Trees" unique_id=1331885057 instance=ExtResource("7_7v00g")] +[node name="Tree45" parent="OnTheGround/Trees" unique_id=1331885057 instance=ExtResource("7_7v00g")] position = Vector2(343.138, 414.443) scale = Vector2(1.002, 1.002) -[node name="Tree46" parent="Trees" unique_id=1299102072 instance=ExtResource("7_7v00g")] +[node name="Tree46" parent="OnTheGround/Trees" unique_id=1299102072 instance=ExtResource("7_7v00g")] position = Vector2(281.807, 405) scale = Vector2(1.002, 1.002) -[node name="Tree47" parent="Trees" unique_id=1431325735 instance=ExtResource("7_7v00g")] +[node name="Tree47" parent="OnTheGround/Trees" unique_id=1431325735 instance=ExtResource("7_7v00g")] position = Vector2(743.238, 1993.45) scale = Vector2(1.002, 1.002) -[node name="Tree48" parent="Trees" unique_id=512917549 instance=ExtResource("7_7v00g")] +[node name="Tree48" parent="OnTheGround/Trees" unique_id=512917549 instance=ExtResource("7_7v00g")] position = Vector2(129.945, 1990.3) scale = Vector2(1.002, 1.002) -[node name="Tree49" parent="Trees" unique_id=984311786 instance=ExtResource("7_7v00g")] +[node name="Tree49" parent="OnTheGround/Trees" unique_id=984311786 instance=ExtResource("7_7v00g")] position = Vector2(1439, 1255) scale = Vector2(1.002, 1.002) -[node name="Tree76" parent="Trees" unique_id=371398351 instance=ExtResource("7_7v00g")] +[node name="Tree76" parent="OnTheGround/Trees" unique_id=371398351 instance=ExtResource("7_7v00g")] position = Vector2(740.431, 174.365) scale = Vector2(1.003, 1.003) -[node name="Tree50" parent="Trees" unique_id=1448306675 instance=ExtResource("7_7v00g")] +[node name="Tree50" parent="OnTheGround/Trees" unique_id=1448306675 instance=ExtResource("7_7v00g")] position = Vector2(1249.45, 467.951) scale = Vector2(1.002, 1.002) -[node name="Tree51" parent="Trees" unique_id=1240948872 instance=ExtResource("7_7v00g")] +[node name="Tree51" parent="OnTheGround/Trees" unique_id=1240948872 instance=ExtResource("7_7v00g")] position = Vector2(1339.01, 374.574) scale = Vector2(1.002, 1.002) -[node name="Tree52" parent="Trees" unique_id=233056165 instance=ExtResource("7_7v00g")] +[node name="Tree52" parent="OnTheGround/Trees" unique_id=233056165 instance=ExtResource("7_7v00g")] position = Vector2(224.37, 2044.86) scale = Vector2(1.002, 1.002) -[node name="Tree53" parent="Trees" unique_id=1003033914 instance=ExtResource("7_7v00g")] +[node name="Tree53" parent="OnTheGround/Trees" unique_id=1003033914 instance=ExtResource("7_7v00g")] position = Vector2(614.738, 1989.25) scale = Vector2(1.002, 1.002) -[node name="Tree54" parent="Trees" unique_id=2052048686 instance=ExtResource("7_7v00g")] +[node name="Tree54" parent="OnTheGround/Trees" unique_id=2052048686 instance=ExtResource("7_7v00g")] position = Vector2(1807.25, 354.64) scale = Vector2(1.002, 1.002) -[node name="Tree55" parent="Trees" unique_id=539355872 instance=ExtResource("7_7v00g")] +[node name="Tree55" parent="OnTheGround/Trees" unique_id=539355872 instance=ExtResource("7_7v00g")] position = Vector2(1610.61, 248.673) scale = Vector2(1.002, 1.002) -[node name="Tree56" parent="Trees" unique_id=1903601485 instance=ExtResource("7_7v00g")] +[node name="Tree56" parent="OnTheGround/Trees" unique_id=1903601485 instance=ExtResource("7_7v00g")] position = Vector2(1850, 829) scale = Vector2(1.002, 1.002) -[node name="Tree57" parent="Trees" unique_id=1346125759 instance=ExtResource("7_7v00g")] +[node name="Tree57" parent="OnTheGround/Trees" unique_id=1346125759 instance=ExtResource("7_7v00g")] position = Vector2(1464.59, 1990.3) scale = Vector2(1.002, 1.002) -[node name="Tree58" parent="Trees" unique_id=2117949852 instance=ExtResource("7_7v00g")] +[node name="Tree58" parent="OnTheGround/Trees" unique_id=2117949852 instance=ExtResource("7_7v00g")] position = Vector2(1318.56, 1994.5) scale = Vector2(1.002, 1.002) -[node name="Tree59" parent="Trees" unique_id=1111374746 instance=ExtResource("7_7v00g")] +[node name="Tree59" parent="OnTheGround/Trees" unique_id=1111374746 instance=ExtResource("7_7v00g")] position = Vector2(1617.42, 1995.55) scale = Vector2(1.002, 1.002) -[node name="Tree60" parent="Trees" unique_id=1733767052 instance=ExtResource("7_7v00g")] +[node name="Tree60" parent="OnTheGround/Trees" unique_id=1733767052 instance=ExtResource("7_7v00g")] position = Vector2(1494.76, 1998.69) scale = Vector2(1.002, 1.002) -[node name="Tree61" parent="Trees" unique_id=1069014224 instance=ExtResource("7_7v00g")] +[node name="Tree61" parent="OnTheGround/Trees" unique_id=1069014224 instance=ExtResource("7_7v00g")] position = Vector2(1816.99, 1967.22) scale = Vector2(1.002, 1.002) -[node name="Tree62" parent="Trees" unique_id=161458005 instance=ExtResource("7_7v00g")] +[node name="Tree62" parent="OnTheGround/Trees" unique_id=161458005 instance=ExtResource("7_7v00g")] position = Vector2(1758.58, 1981.91) scale = Vector2(1.002, 1.002) -[node name="Tree63" parent="Trees" unique_id=2128417183 instance=ExtResource("7_7v00g")] +[node name="Tree63" parent="OnTheGround/Trees" unique_id=2128417183 instance=ExtResource("7_7v00g")] position = Vector2(695.537, 431.229) scale = Vector2(1.002, 1.002) -[node name="Tree64" parent="Trees" unique_id=1470271340 instance=ExtResource("7_7v00g")] +[node name="Tree64" parent="OnTheGround/Trees" unique_id=1470271340 instance=ExtResource("7_7v00g")] position = Vector2(630.314, 421.787) scale = Vector2(1.002, 1.002) -[node name="Tree65" parent="Trees" unique_id=1237537773 instance=ExtResource("7_7v00g")] +[node name="Tree65" parent="OnTheGround/Trees" unique_id=1237537773 instance=ExtResource("7_7v00g")] position = Vector2(873.684, 459.557) scale = Vector2(1.002, 1.002) -[node name="Tree66" parent="Trees" unique_id=192479901 instance=ExtResource("7_7v00g")] +[node name="Tree66" parent="OnTheGround/Trees" unique_id=192479901 instance=ExtResource("7_7v00g")] position = Vector2(814.302, 473.196) scale = Vector2(1.002, 1.002) -[node name="Tree72" parent="Trees" unique_id=30595985 instance=ExtResource("7_7v00g")] +[node name="Tree72" parent="OnTheGround/Trees" unique_id=30595985 instance=ExtResource("7_7v00g")] position = Vector2(138.704, 1164.6) scale = Vector2(1.002, 1.002) -[node name="Tree75" parent="Trees" unique_id=1265010944 instance=ExtResource("7_7v00g")] +[node name="Tree75" parent="OnTheGround/Trees" unique_id=1265010944 instance=ExtResource("7_7v00g")] position = Vector2(384.998, 1028.21) scale = Vector2(1.002, 1.002) -[node name="Tree67" parent="Trees" unique_id=1384953353 instance=ExtResource("7_7v00g")] +[node name="Tree67" parent="OnTheGround/Trees" unique_id=1384953353 instance=ExtResource("7_7v00g")] position = Vector2(1951, 552) scale = Vector2(1.002, 1.002) -[node name="Tree68" parent="Trees" unique_id=2100997314 instance=ExtResource("7_7v00g")] +[node name="Tree68" parent="OnTheGround/Trees" unique_id=2100997314 instance=ExtResource("7_7v00g")] position = Vector2(478.451, 1988.2) scale = Vector2(1.002, 1.002) -[node name="Tree69" parent="Trees" unique_id=877766008 instance=ExtResource("7_7v00g")] +[node name="Tree69" parent="OnTheGround/Trees" unique_id=877766008 instance=ExtResource("7_7v00g")] position = Vector2(176.672, 2049.05) scale = Vector2(1.002, 1.002) -[node name="Tree70" parent="Trees" unique_id=1280154167 instance=ExtResource("7_7v00g")] +[node name="Tree70" parent="OnTheGround/Trees" unique_id=1280154167 instance=ExtResource("7_7v00g")] position = Vector2(1173.52, 441.721) scale = Vector2(1.002, 1.002) -[node name="Bushes" type="Node2D" parent="." unique_id=2142789308] +[node name="Bushes" type="Node2D" parent="OnTheGround" unique_id=2142789308] y_sort_enabled = true metadata/_edit_lock_ = true -[node name="Bush" parent="Bushes" unique_id=691594667 instance=ExtResource("18_yntpr")] +[node name="Bush" parent="OnTheGround/Bushes" unique_id=691594667 instance=ExtResource("18_yntpr")] position = Vector2(720, 1111) -[node name="Bush2" parent="Bushes" unique_id=674809064 instance=ExtResource("18_yntpr")] +[node name="Bush2" parent="OnTheGround/Bushes" unique_id=674809064 instance=ExtResource("18_yntpr")] position = Vector2(702, 1128) scale = Vector2(0.4, 0.4) -[node name="Bush3" parent="Bushes" unique_id=1790836883 instance=ExtResource("18_yntpr")] +[node name="Bush3" parent="OnTheGround/Bushes" unique_id=1790836883 instance=ExtResource("18_yntpr")] position = Vector2(1813, 1197) -[node name="Bush4" parent="Bushes" unique_id=685970372 instance=ExtResource("18_yntpr")] +[node name="Bush4" parent="OnTheGround/Bushes" unique_id=685970372 instance=ExtResource("18_yntpr")] position = Vector2(1828, 1225) scale = Vector2(0.8, 0.8) -[node name="Bush5" parent="Bushes" unique_id=1814837063 instance=ExtResource("18_yntpr")] +[node name="Bush5" parent="OnTheGround/Bushes" unique_id=1814837063 instance=ExtResource("18_yntpr")] position = Vector2(1803, 1275) scale = Vector2(0.6, 0.6) -[node name="Bush6" parent="Bushes" unique_id=681414570 instance=ExtResource("18_yntpr")] +[node name="Bush6" parent="OnTheGround/Bushes" unique_id=681414570 instance=ExtResource("18_yntpr")] position = Vector2(225, 469) -[node name="Bush7" parent="Bushes" unique_id=507391137 instance=ExtResource("18_yntpr")] +[node name="Bush7" parent="OnTheGround/Bushes" unique_id=507391137 instance=ExtResource("18_yntpr")] position = Vector2(242, 480) scale = Vector2(0.6, 0.6) -[node name="Bush8" parent="Bushes" unique_id=113159105 instance=ExtResource("18_yntpr")] +[node name="Bush8" parent="OnTheGround/Bushes" unique_id=113159105 instance=ExtResource("18_yntpr")] position = Vector2(364, 480) scale = Vector2(0.6, 0.6) -[node name="Bush9" parent="Bushes" unique_id=991872612 instance=ExtResource("18_yntpr")] +[node name="Bush9" parent="OnTheGround/Bushes" unique_id=991872612 instance=ExtResource("18_yntpr")] position = Vector2(192, 521) scale = Vector2(0.6, 0.6) -[node name="Bush10" parent="Bushes" unique_id=1741388599 instance=ExtResource("18_yntpr")] +[node name="Bush10" parent="OnTheGround/Bushes" unique_id=1741388599 instance=ExtResource("18_yntpr")] position = Vector2(383, 485) scale = Vector2(0.6, 0.6) -[node name="Bush11" parent="Bushes" unique_id=258553976 instance=ExtResource("18_yntpr")] +[node name="Bush11" parent="OnTheGround/Bushes" unique_id=258553976 instance=ExtResource("18_yntpr")] position = Vector2(593, 402) -[node name="Bush12" parent="Bushes" unique_id=331374579 instance=ExtResource("18_yntpr")] +[node name="Bush12" parent="OnTheGround/Bushes" unique_id=331374579 instance=ExtResource("18_yntpr")] position = Vector2(618, 392) -[node name="Bush13" parent="Bushes" unique_id=1819127771 instance=ExtResource("18_yntpr")] +[node name="Bush13" parent="OnTheGround/Bushes" unique_id=1819127771 instance=ExtResource("18_yntpr")] position = Vector2(703, 401) -[node name="Bush14" parent="Bushes" unique_id=1799152780 instance=ExtResource("18_yntpr")] +[node name="Bush14" parent="OnTheGround/Bushes" unique_id=1799152780 instance=ExtResource("18_yntpr")] position = Vector2(838, 479) -[node name="Bush15" parent="Bushes" unique_id=907391532 instance=ExtResource("18_yntpr")] +[node name="Bush15" parent="OnTheGround/Bushes" unique_id=907391532 instance=ExtResource("18_yntpr")] position = Vector2(777, 572) scale = Vector2(0.8, 0.8) -[node name="Bush17" parent="Bushes" unique_id=2079878338 instance=ExtResource("18_yntpr")] +[node name="Bush17" parent="OnTheGround/Bushes" unique_id=2079878338 instance=ExtResource("18_yntpr")] position = Vector2(346, 1052) scale = Vector2(0.5, 0.5) -[node name="Bush18" parent="Bushes" unique_id=500874609 instance=ExtResource("18_yntpr")] +[node name="Bush18" parent="OnTheGround/Bushes" unique_id=500874609 instance=ExtResource("18_yntpr")] position = Vector2(346, 1066) scale = Vector2(0.4, 0.4) -[node name="Bush19" parent="Bushes" unique_id=920262933 instance=ExtResource("18_yntpr")] +[node name="Bush19" parent="OnTheGround/Bushes" unique_id=920262933 instance=ExtResource("18_yntpr")] position = Vector2(363, 1057) scale = Vector2(0.6, 0.6) -[node name="Bush20" parent="Bushes" unique_id=39430491 instance=ExtResource("18_yntpr")] +[node name="Bush20" parent="OnTheGround/Bushes" unique_id=39430491 instance=ExtResource("18_yntpr")] position = Vector2(287, 1050) scale = Vector2(0.5, 0.5) -[node name="Bush21" parent="Bushes" unique_id=1989598020 instance=ExtResource("18_yntpr")] +[node name="Bush21" parent="OnTheGround/Bushes" unique_id=1989598020 instance=ExtResource("18_yntpr")] position = Vector2(265, 1047) scale = Vector2(0.65, 0.65) -[node name="Bush22" parent="Bushes" unique_id=1585214049 instance=ExtResource("18_yntpr")] +[node name="Bush22" parent="OnTheGround/Bushes" unique_id=1585214049 instance=ExtResource("18_yntpr")] position = Vector2(255, 1033) scale = Vector2(0.5, 0.5) -[node name="Bush23" parent="Bushes" unique_id=1086059623 instance=ExtResource("18_yntpr")] +[node name="Bush23" parent="OnTheGround/Bushes" unique_id=1086059623 instance=ExtResource("18_yntpr")] position = Vector2(370, 1035) scale = Vector2(0.5, 0.5) -[node name="Bush16" parent="Bushes" unique_id=1299614484 instance=ExtResource("18_yntpr")] +[node name="Bush16" parent="OnTheGround/Bushes" unique_id=1299614484 instance=ExtResource("18_yntpr")] position = Vector2(663, 439) scale = Vector2(0.3, 0.3) -[node name="Bush24" parent="Bushes" unique_id=2096690297 instance=ExtResource("18_yntpr")] +[node name="Bush24" parent="OnTheGround/Bushes" unique_id=2096690297 instance=ExtResource("18_yntpr")] position = Vector2(298, 691) scale = Vector2(1.1, 1.1) -[node name="Bush25" parent="Bushes" unique_id=1620262277 instance=ExtResource("18_yntpr")] +[node name="Bush25" parent="OnTheGround/Bushes" unique_id=1620262277 instance=ExtResource("18_yntpr")] position = Vector2(263, 991) scale = Vector2(1.1, 1.1) -[node name="Bush26" parent="Bushes" unique_id=1628581492 instance=ExtResource("18_yntpr")] +[node name="Bush26" parent="OnTheGround/Bushes" unique_id=1628581492 instance=ExtResource("18_yntpr")] position = Vector2(127, 1149) scale = Vector2(1.1, 1.1) -[node name="Bush27" parent="Bushes" unique_id=825955768 instance=ExtResource("18_yntpr")] +[node name="Bush27" parent="OnTheGround/Bushes" unique_id=825955768 instance=ExtResource("18_yntpr")] position = Vector2(1054, 1520) scale = Vector2(1.1, 1.1) -[node name="Bush30" parent="Bushes" unique_id=1876568460 instance=ExtResource("18_yntpr")] +[node name="Bush30" parent="OnTheGround/Bushes" unique_id=1876568460 instance=ExtResource("18_yntpr")] y_sort_enabled = true position = Vector2(1166, 1155) scale = Vector2(1.1, 1.1) -[node name="Bush31" parent="Bushes" unique_id=274647831 instance=ExtResource("18_yntpr")] +[node name="Bush31" parent="OnTheGround/Bushes" unique_id=274647831 instance=ExtResource("18_yntpr")] y_sort_enabled = true position = Vector2(1150, 1120) scale = Vector2(0.9, 0.9) -[node name="Bush32" parent="Bushes" unique_id=1448795033 instance=ExtResource("18_yntpr")] +[node name="Bush32" parent="OnTheGround/Bushes" unique_id=1448795033 instance=ExtResource("18_yntpr")] y_sort_enabled = true position = Vector2(1253, 1134) scale = Vector2(1.1, 1.1) -[node name="Bush28" parent="Bushes" unique_id=2046022114 instance=ExtResource("18_yntpr")] +[node name="Bush28" parent="OnTheGround/Bushes" unique_id=2046022114 instance=ExtResource("18_yntpr")] position = Vector2(1074, 1548) scale = Vector2(0.8, 0.8) -[node name="Bush29" parent="Bushes" unique_id=1996658338 instance=ExtResource("18_yntpr")] +[node name="Bush29" parent="OnTheGround/Bushes" unique_id=1996658338 instance=ExtResource("18_yntpr")] position = Vector2(280, 1698) scale = Vector2(1.1, 1.1) -[node name="Bush65" parent="Bushes" unique_id=1084107524 instance=ExtResource("18_yntpr")] +[node name="Bush65" parent="OnTheGround/Bushes" unique_id=1084107524 instance=ExtResource("18_yntpr")] position = Vector2(270, 1729) scale = Vector2(0.8, 0.8) -[node name="Tomatoes" type="Node2D" parent="." unique_id=1216935970] +[node name="Tomatoes" type="Node2D" parent="OnTheGround" unique_id=1216935970] y_sort_enabled = true -[node name="Tomato" parent="Tomatoes" unique_id=1417180670 instance=ExtResource("39_ljovl")] +[node name="Tomato" parent="OnTheGround/Tomatoes" unique_id=1417180670 instance=ExtResource("39_ljovl")] position = Vector2(1571, 619) -[node name="Tomato2" parent="Tomatoes" unique_id=414353665 instance=ExtResource("39_ljovl")] +[node name="Tomato2" parent="OnTheGround/Tomatoes" unique_id=414353665 instance=ExtResource("39_ljovl")] position = Vector2(310, 807) -[node name="Tomato3" parent="Tomatoes" unique_id=563242510 instance=ExtResource("39_ljovl")] +[node name="Tomato3" parent="OnTheGround/Tomatoes" unique_id=563242510 instance=ExtResource("39_ljovl")] position = Vector2(348, 819) -[node name="Carrots" type="Node2D" parent="." unique_id=1524389710] +[node name="Carrots" type="Node2D" parent="OnTheGround" unique_id=1524389710] y_sort_enabled = true -[node name="Carrot" parent="Carrots" unique_id=1056869770 instance=ExtResource("42_ljovl")] +[node name="Carrot" parent="OnTheGround/Carrots" unique_id=1056869770 instance=ExtResource("42_ljovl")] position = Vector2(1563, 417) -[node name="Carrot2" parent="Carrots" unique_id=1916365556 instance=ExtResource("42_ljovl")] +[node name="Carrot2" parent="OnTheGround/Carrots" unique_id=1916365556 instance=ExtResource("42_ljovl")] position = Vector2(1700, 417) -[node name="Carrot3" parent="Carrots" unique_id=2132997827 instance=ExtResource("42_ljovl")] +[node name="Carrot3" parent="OnTheGround/Carrots" unique_id=2132997827 instance=ExtResource("42_ljovl")] position = Vector2(1667, 417) -[node name="Carrot4" parent="Carrots" unique_id=109758211 instance=ExtResource("42_ljovl")] +[node name="Carrot4" parent="OnTheGround/Carrots" unique_id=109758211 instance=ExtResource("42_ljovl")] position = Vector2(1632, 417) -[node name="Carrot5" parent="Carrots" unique_id=610508846 instance=ExtResource("42_ljovl")] +[node name="Carrot5" parent="OnTheGround/Carrots" unique_id=610508846 instance=ExtResource("42_ljovl")] position = Vector2(1599, 417) -[node name="Carrot6" parent="Carrots" unique_id=1940457300 instance=ExtResource("42_ljovl")] +[node name="Carrot6" parent="OnTheGround/Carrots" unique_id=1940457300 instance=ExtResource("42_ljovl")] position = Vector2(1667, 468) -[node name="Carrot7" parent="Carrots" unique_id=222111516 instance=ExtResource("42_ljovl")] +[node name="Carrot7" parent="OnTheGround/Carrots" unique_id=222111516 instance=ExtResource("42_ljovl")] position = Vector2(1599, 443) -[node name="Carrot8" parent="Carrots" unique_id=844021272 instance=ExtResource("42_ljovl")] +[node name="Carrot8" parent="OnTheGround/Carrots" unique_id=844021272 instance=ExtResource("42_ljovl")] position = Vector2(1700, 443) -[node name="Carrot9" parent="Carrots" unique_id=1267982260 instance=ExtResource("42_ljovl")] +[node name="Carrot9" parent="OnTheGround/Carrots" unique_id=1267982260 instance=ExtResource("42_ljovl")] position = Vector2(1632, 443) -[node name="Carrot10" parent="Carrots" unique_id=1863703007 instance=ExtResource("42_ljovl")] +[node name="Carrot10" parent="OnTheGround/Carrots" unique_id=1863703007 instance=ExtResource("42_ljovl")] position = Vector2(1632, 468) -[node name="Carrot11" parent="Carrots" unique_id=1394205731 instance=ExtResource("42_ljovl")] +[node name="Carrot11" parent="OnTheGround/Carrots" unique_id=1394205731 instance=ExtResource("42_ljovl")] position = Vector2(1667, 443) -[node name="Carrot12" parent="Carrots" unique_id=1624450720 instance=ExtResource("42_ljovl")] +[node name="Carrot12" parent="OnTheGround/Carrots" unique_id=1624450720 instance=ExtResource("42_ljovl")] position = Vector2(1700, 469) -[node name="Carrot13" parent="Carrots" unique_id=1059663737 instance=ExtResource("42_ljovl")] +[node name="Carrot13" parent="OnTheGround/Carrots" unique_id=1059663737 instance=ExtResource("42_ljovl")] position = Vector2(1632, 495) -[node name="Carrot14" parent="Carrots" unique_id=418701471 instance=ExtResource("42_ljovl")] +[node name="Carrot14" parent="OnTheGround/Carrots" unique_id=418701471 instance=ExtResource("42_ljovl")] position = Vector2(1563, 495) -[node name="Carrot15" parent="Carrots" unique_id=1760950291 instance=ExtResource("42_ljovl")] +[node name="Carrot15" parent="OnTheGround/Carrots" unique_id=1760950291 instance=ExtResource("42_ljovl")] position = Vector2(1599, 495) -[node name="Carrot16" parent="Carrots" unique_id=1488315489 instance=ExtResource("42_ljovl")] +[node name="Carrot16" parent="OnTheGround/Carrots" unique_id=1488315489 instance=ExtResource("42_ljovl")] position = Vector2(1563, 443) -[node name="Carrot17" parent="Carrots" unique_id=1581919746 instance=ExtResource("42_ljovl")] +[node name="Carrot17" parent="OnTheGround/Carrots" unique_id=1581919746 instance=ExtResource("42_ljovl")] position = Vector2(1700, 495) -[node name="Carrot18" parent="Carrots" unique_id=911076394 instance=ExtResource("42_ljovl")] +[node name="Carrot18" parent="OnTheGround/Carrots" unique_id=911076394 instance=ExtResource("42_ljovl")] position = Vector2(1668, 495) -[node name="Carrot19" parent="Carrots" unique_id=44580834 instance=ExtResource("42_ljovl")] +[node name="Carrot19" parent="OnTheGround/Carrots" unique_id=44580834 instance=ExtResource("42_ljovl")] position = Vector2(1563, 469) -[node name="Carrot20" parent="Carrots" unique_id=1299594892 instance=ExtResource("42_ljovl")] +[node name="Carrot20" parent="OnTheGround/Carrots" unique_id=1299594892 instance=ExtResource("42_ljovl")] position = Vector2(1599, 468) -[node name="BarleyField" type="Node2D" parent="." unique_id=1870831195] +[node name="BarleyField" type="Node2D" parent="OnTheGround" unique_id=1870831195] y_sort_enabled = true -[node name="Barley" parent="BarleyField" unique_id=1837240364 instance=ExtResource("42_eodqy")] +[node name="Barley" parent="OnTheGround/BarleyField" unique_id=1837240364 instance=ExtResource("42_eodqy")] position = Vector2(400, 1176) -[node name="Barley2" parent="BarleyField" unique_id=1289698623 instance=ExtResource("42_eodqy")] +[node name="Barley2" parent="OnTheGround/BarleyField" unique_id=1289698623 instance=ExtResource("42_eodqy")] position = Vector2(432, 1176) -[node name="Barley3" parent="BarleyField" unique_id=1975880228 instance=ExtResource("42_eodqy")] +[node name="Barley3" parent="OnTheGround/BarleyField" unique_id=1975880228 instance=ExtResource("42_eodqy")] position = Vector2(464, 1176) -[node name="Barley4" parent="BarleyField" unique_id=839588657 instance=ExtResource("42_eodqy")] +[node name="Barley4" parent="OnTheGround/BarleyField" unique_id=839588657 instance=ExtResource("42_eodqy")] position = Vector2(496, 1176) -[node name="Barley5" parent="BarleyField" unique_id=224088482 instance=ExtResource("42_eodqy")] +[node name="Barley5" parent="OnTheGround/BarleyField" unique_id=224088482 instance=ExtResource("42_eodqy")] position = Vector2(400, 1208) -[node name="Barley6" parent="BarleyField" unique_id=1934226171 instance=ExtResource("42_eodqy")] +[node name="Barley6" parent="OnTheGround/BarleyField" unique_id=1934226171 instance=ExtResource("42_eodqy")] position = Vector2(432, 1208) -[node name="Barley7" parent="BarleyField" unique_id=549737272 instance=ExtResource("42_eodqy")] +[node name="Barley7" parent="OnTheGround/BarleyField" unique_id=549737272 instance=ExtResource("42_eodqy")] position = Vector2(464, 1208) -[node name="Barley8" parent="BarleyField" unique_id=2045741632 instance=ExtResource("42_eodqy")] +[node name="Barley8" parent="OnTheGround/BarleyField" unique_id=2045741632 instance=ExtResource("42_eodqy")] position = Vector2(496, 1208) -[node name="Barley9" parent="BarleyField" unique_id=538175638 instance=ExtResource("42_eodqy")] +[node name="Barley9" parent="OnTheGround/BarleyField" unique_id=538175638 instance=ExtResource("42_eodqy")] position = Vector2(416, 1192) -[node name="Barley10" parent="BarleyField" unique_id=1071950050 instance=ExtResource("42_eodqy")] +[node name="Barley10" parent="OnTheGround/BarleyField" unique_id=1071950050 instance=ExtResource("42_eodqy")] position = Vector2(448, 1192) -[node name="Barley11" parent="BarleyField" unique_id=1825484614 instance=ExtResource("42_eodqy")] +[node name="Barley11" parent="OnTheGround/BarleyField" unique_id=1825484614 instance=ExtResource("42_eodqy")] position = Vector2(480, 1192) -[node name="Barley12" parent="BarleyField" unique_id=375805475 instance=ExtResource("42_eodqy")] +[node name="Barley12" parent="OnTheGround/BarleyField" unique_id=375805475 instance=ExtResource("42_eodqy")] position = Vector2(512, 1192) -[node name="Barley13" parent="BarleyField" unique_id=471895812 instance=ExtResource("42_eodqy")] +[node name="Barley13" parent="OnTheGround/BarleyField" unique_id=471895812 instance=ExtResource("42_eodqy")] position = Vector2(528, 1176) -[node name="Barley15" parent="BarleyField" unique_id=685489223 instance=ExtResource("42_eodqy")] +[node name="Barley15" parent="OnTheGround/BarleyField" unique_id=685489223 instance=ExtResource("42_eodqy")] position = Vector2(560, 1176) -[node name="Barley16" parent="BarleyField" unique_id=1341055599 instance=ExtResource("42_eodqy")] +[node name="Barley16" parent="OnTheGround/BarleyField" unique_id=1341055599 instance=ExtResource("42_eodqy")] position = Vector2(592, 1176) -[node name="Barley17" parent="BarleyField" unique_id=87788605 instance=ExtResource("42_eodqy")] +[node name="Barley17" parent="OnTheGround/BarleyField" unique_id=87788605 instance=ExtResource("42_eodqy")] position = Vector2(624, 1176) -[node name="Barley18" parent="BarleyField" unique_id=1352773935 instance=ExtResource("42_eodqy")] +[node name="Barley18" parent="OnTheGround/BarleyField" unique_id=1352773935 instance=ExtResource("42_eodqy")] position = Vector2(528, 1208) -[node name="Barley19" parent="BarleyField" unique_id=79238951 instance=ExtResource("42_eodqy")] +[node name="Barley19" parent="OnTheGround/BarleyField" unique_id=79238951 instance=ExtResource("42_eodqy")] position = Vector2(560, 1208) -[node name="Barley20" parent="BarleyField" unique_id=751860807 instance=ExtResource("42_eodqy")] +[node name="Barley20" parent="OnTheGround/BarleyField" unique_id=751860807 instance=ExtResource("42_eodqy")] position = Vector2(592, 1208) -[node name="Barley21" parent="BarleyField" unique_id=1102146350 instance=ExtResource("42_eodqy")] +[node name="Barley21" parent="OnTheGround/BarleyField" unique_id=1102146350 instance=ExtResource("42_eodqy")] position = Vector2(624, 1208) -[node name="Barley22" parent="BarleyField" unique_id=614595146 instance=ExtResource("42_eodqy")] +[node name="Barley22" parent="OnTheGround/BarleyField" unique_id=614595146 instance=ExtResource("42_eodqy")] position = Vector2(544, 1192) -[node name="Barley23" parent="BarleyField" unique_id=198452717 instance=ExtResource("42_eodqy")] +[node name="Barley23" parent="OnTheGround/BarleyField" unique_id=198452717 instance=ExtResource("42_eodqy")] position = Vector2(576, 1192) -[node name="Barley24" parent="BarleyField" unique_id=835543798 instance=ExtResource("42_eodqy")] +[node name="Barley24" parent="OnTheGround/BarleyField" unique_id=835543798 instance=ExtResource("42_eodqy")] position = Vector2(608, 1192) -[node name="Barley25" parent="BarleyField" unique_id=526955960 instance=ExtResource("42_eodqy")] +[node name="Barley25" parent="OnTheGround/BarleyField" unique_id=526955960 instance=ExtResource("42_eodqy")] position = Vector2(640, 1192) -[node name="Barley14" parent="BarleyField" unique_id=83830217 instance=ExtResource("42_eodqy")] +[node name="Barley14" parent="OnTheGround/BarleyField" unique_id=83830217 instance=ExtResource("42_eodqy")] position = Vector2(656, 1176) -[node name="Barley26" parent="BarleyField" unique_id=2072105437 instance=ExtResource("42_eodqy")] +[node name="Barley26" parent="OnTheGround/BarleyField" unique_id=2072105437 instance=ExtResource("42_eodqy")] position = Vector2(688, 1176) -[node name="Barley27" parent="BarleyField" unique_id=1155363070 instance=ExtResource("42_eodqy")] +[node name="Barley27" parent="OnTheGround/BarleyField" unique_id=1155363070 instance=ExtResource("42_eodqy")] position = Vector2(656, 1208) -[node name="Barley28" parent="BarleyField" unique_id=1542366425 instance=ExtResource("42_eodqy")] +[node name="Barley28" parent="OnTheGround/BarleyField" unique_id=1542366425 instance=ExtResource("42_eodqy")] position = Vector2(688, 1208) -[node name="Barley29" parent="BarleyField" unique_id=1961323276 instance=ExtResource("42_eodqy")] +[node name="Barley29" parent="OnTheGround/BarleyField" unique_id=1961323276 instance=ExtResource("42_eodqy")] position = Vector2(672, 1192) -[node name="Rocks" type="Node2D" parent="." unique_id=1924548706] +[node name="Rocks" type="Node2D" parent="OnTheGround" unique_id=1924548706] y_sort_enabled = true -[node name="Rock" parent="Rocks" unique_id=890604313 instance=ExtResource("18_jbsab")] +[node name="Rock" parent="OnTheGround/Rocks" unique_id=890604313 instance=ExtResource("18_jbsab")] position = Vector2(91, 1256) -[node name="Rock2" parent="Rocks" unique_id=762180858 instance=ExtResource("18_jbsab")] +[node name="Rock2" parent="OnTheGround/Rocks" unique_id=762180858 instance=ExtResource("18_jbsab")] position = Vector2(97, 1240) scale = Vector2(1.1, 1.1) -[node name="Rock3" parent="Rocks" unique_id=1836828759 instance=ExtResource("18_jbsab")] +[node name="Rock3" parent="OnTheGround/Rocks" unique_id=1836828759 instance=ExtResource("18_jbsab")] position = Vector2(97, 1240) rotation = -1.04809 scale = Vector2(1.1, 1.1) -[node name="Rock4" parent="Rocks" unique_id=1590479870 instance=ExtResource("18_jbsab")] +[node name="Rock4" parent="OnTheGround/Rocks" unique_id=1590479870 instance=ExtResource("18_jbsab")] position = Vector2(422, 1045) scale = Vector2(0.9, 0.9) -[node name="Rock5" parent="Rocks" unique_id=626363495 instance=ExtResource("18_jbsab")] +[node name="Rock5" parent="OnTheGround/Rocks" unique_id=626363495 instance=ExtResource("18_jbsab")] position = Vector2(1720, 513) scale = Vector2(0.9, 0.9) -[node name="Rock6" parent="Rocks" unique_id=2113232597 instance=ExtResource("18_jbsab")] +[node name="Rock6" parent="OnTheGround/Rocks" unique_id=2113232597 instance=ExtResource("18_jbsab")] position = Vector2(1960, 1075) scale = Vector2(0.9, 0.9) -[node name="Rock7" parent="Rocks" unique_id=861958038 instance=ExtResource("18_jbsab")] +[node name="Rock7" parent="OnTheGround/Rocks" unique_id=861958038 instance=ExtResource("18_jbsab")] position = Vector2(1948, 1063) scale = Vector2(1.1, 1.1) -[node name="Rock8" parent="Rocks" unique_id=307232558 instance=ExtResource("18_jbsab")] +[node name="Rock8" parent="OnTheGround/Rocks" unique_id=307232558 instance=ExtResource("18_jbsab")] position = Vector2(1529, 828) scale = Vector2(1.05, 1.05) -[node name="WaterRocks" type="Node2D" parent="." unique_id=493156613] +[node name="WaterRocks" type="Node2D" parent="OnTheGround" unique_id=493156613] editor_description = "Holds rocks that are in the water." y_sort_enabled = true -[node name="WaterRock" parent="WaterRocks" unique_id=198443660 instance=ExtResource("38_jqkod")] +[node name="WaterRock" parent="OnTheGround/WaterRocks" unique_id=198443660 instance=ExtResource("38_jqkod")] position = Vector2(931, 1378) -[node name="WaterRock2" parent="WaterRocks" unique_id=286434874 instance=ExtResource("38_jqkod")] +[node name="WaterRock2" parent="OnTheGround/WaterRocks" unique_id=286434874 instance=ExtResource("38_jqkod")] position = Vector2(708, 1437) -[node name="WaterRock3" parent="WaterRocks" unique_id=1901788172 instance=ExtResource("38_jqkod")] +[node name="WaterRock3" parent="OnTheGround/WaterRocks" unique_id=1901788172 instance=ExtResource("38_jqkod")] position = Vector2(1578, 1477) -[node name="WaterRock4" parent="WaterRocks" unique_id=1688358840 instance=ExtResource("38_jqkod")] +[node name="WaterRock4" parent="OnTheGround/WaterRocks" unique_id=1688358840 instance=ExtResource("38_jqkod")] position = Vector2(1689, 1694) -[node name="Tutorial" type="Node2D" parent="." unique_id=1760774148] +[node name="Tutorial" type="Node2D" parent="OnTheGround" unique_id=1760774148] y_sort_enabled = true -[node name="MovementInputHint" parent="Tutorial" unique_id=1630623962 node_paths=PackedStringArray("hint_node") instance=ExtResource("26_w8iew")] -position = Vector2(474, 1658) -hint_node = NodePath("../../ScreenOverlay/HBoxContainer/MovementInputHints") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Tutorial/MovementInputHint" unique_id=1450943447] -visible = false -position = Vector2(552, 112.5) -shape = SubResource("RectangleShape2D_h30yx") - -[node name="InteractInputHint" parent="Tutorial/MovementInputHint" unique_id=1614272832 node_paths=PackedStringArray("hint_node") instance=ExtResource("26_w8iew")] -position = Vector2(40, -45) -hint_node = NodePath("../../../ScreenOverlay/HBoxContainer/Repel_hint/InteractionInputHints") - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Tutorial/MovementInputHint/InteractInputHint" unique_id=9243216] -position = Vector2(0.5, -8.5) -shape = SubResource("RectangleShape2D_djq26") - -[node name="TutorialGuy" parent="Tutorial" unique_id=618221375 instance=ExtResource("54_duxxr")] +[node name="TutorialGuy" parent="OnTheGround/Tutorial" unique_id=618221375 instance=ExtResource("54_duxxr")] position = Vector2(514, 1613) scale = Vector2(-1, 1) character_seed = 2433932515 look_at_side = 1 -[node name="InteractArea" parent="Tutorial/TutorialGuy" unique_id=226800588 instance=ExtResource("55_2vvub")] -visible = false -interact_label_position = Vector2(0, -100) +[node name="InteractArea" type="Area2D" parent="OnTheGround/Tutorial/TutorialGuy" unique_id=226800588 node_paths=PackedStringArray("marker")] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("37_f3823") +marker = NodePath("Marker") +metadata/_custom_type_script = "uid://du8wfijr35r35" -[node name="CollisionShape2D" type="CollisionShape2D" parent="Tutorial/TutorialGuy/InteractArea" unique_id=1652917244] +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Tutorial/TutorialGuy/InteractArea" unique_id=1652917244] position = Vector2(0, -23.5) shape = SubResource("RectangleShape2D_2vvub") debug_color = Color(0.600391, 0.54335, 0, 0.42) -[node name="TalkBehavior" type="Node" parent="Tutorial/TutorialGuy" unique_id=283277394 node_paths=PackedStringArray("interact_area")] +[node name="Marker" type="Marker2D" parent="OnTheGround/Tutorial/TutorialGuy/InteractArea" unique_id=1432505873] +position = Vector2(0, -100) + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Tutorial/TutorialGuy" unique_id=283277394 node_paths=PackedStringArray("interact_area")] script = ExtResource("56_ojao8") dialogue = ExtResource("32_djq26") interact_area = NodePath("../InteractArea") metadata/_custom_type_script = "uid://edcifob4jc4s" +[node name="WestPath" type="Node2D" parent="OnTheGround" unique_id=2042146768] +y_sort_enabled = true + +[node name="Unlocker" type="Node" parent="OnTheGround/WestPath" unique_id=1461023268 node_paths=PackedStringArray("targets")] +script = ExtResource("58_ojao8") +targets = [NodePath("../../../TileMapLayers/WestPathBarrierVoid")] +required_quests = Array[ExtResource("59_qgpx3")]([ExtResource("60_6b07c")]) + +[node name="SpawnPointWestPath" type="Marker2D" parent="OnTheGround/WestPath" unique_id=730185770 groups=["spawn_point"]] +position = Vector2(57, 719) +script = ExtResource("61_6b07c") +look_at_side_on_spawn = 1 +metadata/_custom_type_script = "uid://0enyu5v4ra34" + +[node name="Teleporter" type="Area2D" parent="OnTheGround/WestPath" unique_id=39493186] +position = Vector2(-63, 712) +collision_layer = 4 +script = ExtResource("62_t7c6s") +next_scene = "uid://c3pi5sjiy5tlg" +spawn_point_path = NodePath("SpawnPoint") +metadata/_custom_type_script = "uid://hqdquinbimce" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/WestPath/Teleporter" unique_id=1827344313] +shape = SubResource("RectangleShape2D_ulm71") + +[node name="Sign" parent="OnTheGround/WestPath" unique_id=1579530966 instance=ExtResource("64_uxfrp")] +position = Vector2(95, 664) +text = "West End" + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=1752283368] + +[node name="HUD" parent="." unique_id=1876437396 instance=ExtResource("27_aj6tp")] +unique_name_in_owner = true + [node name="SpawnPointAfterIntro" parent="." unique_id=69976262 instance=ExtResource("37_thm8h")] position = Vector2(62, 1747) -[node name="CloudsShadow" parent="." unique_id=1515275591 instance=ExtResource("54_ns5r3")] -metadata/_edit_lock_ = true +[node name="TimeAndWeather" parent="." unique_id=1446545037 instance=ExtResource("55_ojao8")] -[connection signal="interaction_ended" from="NPCs/Farmer/InteractArea" to="NPCs/Farmer" method="_on_interact_area_interaction_ended"] -[connection signal="interaction_started" from="NPCs/Farmer/InteractArea" to="NPCs/Farmer" method="_on_interact_area_interaction_started"] -[connection signal="interaction_ended" from="Tutorial/TutorialGuy/InteractArea" to="Tutorial/TutorialGuy" method="_on_interact_area_interaction_ended"] -[connection signal="interaction_started" from="Tutorial/TutorialGuy/InteractArea" to="Tutorial/TutorialGuy" method="_on_interact_area_interaction_started"] +[connection signal="interaction_ended" from="OnTheGround/NPCs/Farmer/InteractArea" to="OnTheGround/NPCs/Farmer" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/NPCs/Farmer/InteractArea" to="OnTheGround/NPCs/Farmer" method="_on_interact_area_interaction_started"] +[connection signal="interaction_ended" from="OnTheGround/NPCs/GardenerA/InteractArea" to="OnTheGround/NPCs/GardenerA" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/NPCs/GardenerA/InteractArea" to="OnTheGround/NPCs/GardenerA" method="_on_interact_area_interaction_started"] +[connection signal="interaction_ended" from="OnTheGround/Tutorial/TutorialGuy/InteractArea" to="OnTheGround/Tutorial/TutorialGuy" method="_on_interact_area_interaction_ended"] +[connection signal="interaction_started" from="OnTheGround/Tutorial/TutorialGuy/InteractArea" to="OnTheGround/Tutorial/TutorialGuy" method="_on_interact_area_interaction_started"] diff --git a/scenes/world_map/frays_end_west.tscn b/scenes/world_map/frays_end_west.tscn new file mode 100644 index 0000000000..e84b8d88c8 --- /dev/null +++ b/scenes/world_map/frays_end_west.tscn @@ -0,0 +1,1498 @@ +[gd_scene format=4 uid="uid://c3pi5sjiy5tlg"] + +[ext_resource type="TileSet" uid="uid://b8qnr0owsbhhn" path="res://tiles/exterior_floors.tres" id="1_6wkkr"] +[ext_resource type="TileSet" uid="uid://b778cuoftt88r" path="res://tiles/elevation_2.tres" id="2_eitnf"] +[ext_resource type="PackedScene" uid="uid://iu2q66clupc6" path="res://scenes/game_elements/characters/player/player.tscn" id="3_7dntp"] +[ext_resource type="SpriteFrames" uid="uid://dtoylirwywk0j" path="res://scenes/game_elements/characters/components/sprite_frames/storyweaver_blue.tres" id="4_ltemt"] +[ext_resource type="PackedScene" uid="uid://dgrrudegturnw" path="res://scenes/game_elements/characters/npcs/townie.tscn" id="5_wf3xu"] +[ext_resource type="Script" uid="uid://hqdquinbimce" path="res://scenes/game_elements/props/teleporter/teleporter.gd" id="6_bp1pg"] +[ext_resource type="PackedScene" uid="uid://covsdqqsd6rsy" path="res://scenes/game_elements/props/sign/sign.tscn" id="6_eitnf"] +[ext_resource type="TileSet" uid="uid://41pk6xbhypue" path="res://tiles/fence.tres" id="7_2x7c2"] +[ext_resource type="PackedScene" uid="uid://crqjcicx0vdu" path="res://scenes/game_elements/props/decoration/bush/bush.tscn" id="7_feqgw"] +[ext_resource type="Script" uid="uid://bdhjixygupit1" path="res://scenes/game_elements/props/area_filler/area_filler.gd" id="7_ltemt"] +[ext_resource type="Script" uid="uid://0enyu5v4ra34" path="res://scenes/game_elements/props/spawn_point/components/spawn_point.gd" id="7_q3i8o"] +[ext_resource type="PackedScene" uid="uid://2rbpl811wlv1" path="res://scenes/game_elements/props/background_music/background_music.tscn" id="8_svupf"] +[ext_resource type="PackedScene" uid="uid://7873qa54birk" path="res://scenes/game_elements/props/tree/tree.tscn" id="8_wf3xu"] +[ext_resource type="AudioStream" uid="uid://bbamdm6wtjjcn" path="res://assets/first_party/music/Threadbare_Bed.ogg" id="9_8d0tu"] +[ext_resource type="SpriteFrames" uid="uid://brspwu70qbdaf" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_blue.tres" id="9_htidp"] +[ext_resource type="SpriteFrames" uid="uid://d36eq8tqdaxdy" path="res://scenes/game_elements/props/tree/components/tree_spriteframes_green.tres" id="10_wps5n"] +[ext_resource type="PackedScene" uid="uid://lfvn4u30s4yf" path="res://scenes/game_elements/props/buildings/house/house_1.tscn" id="11_2x7c2"] +[ext_resource type="Script" uid="uid://edcifob4jc4s" path="res://scenes/game_logic/talk_behavior.gd" id="11_ovokv"] +[ext_resource type="Texture2D" uid="uid://cvm2x4fhekowd" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Blue_03.png" id="12_feqgw"] +[ext_resource type="Resource" uid="uid://dx773k0ovb35j" path="res://scenes/world_map/components/oscar.dialogue" id="12_otyi0"] +[ext_resource type="PackedScene" uid="uid://daqd67aro1o1m" path="res://scenes/game_elements/fx/time_and_weather/time_and_weather.tscn" id="13_ltemt"] +[ext_resource type="Script" uid="uid://du8wfijr35r35" path="res://scenes/game_elements/props/interact_area/interact_area.gd" id="13_otyi0"] +[ext_resource type="Texture2D" uid="uid://d2kjk3oiu5o6o" path="res://scenes/game_elements/props/buildings/house/components/House_Wool_Blue_02.png" id="13_qm4wv"] +[ext_resource type="Resource" uid="uid://d4kkr5cifitfm" path="res://scenes/world_map/components/sigurd.dialogue" id="14_otyi0"] +[ext_resource type="SpriteFrames" uid="uid://7yx2vrxg6ytx" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_blue_large.tres" id="22_y5day"] +[ext_resource type="SpriteFrames" uid="uid://c4da2w5tt3u7j" path="res://scenes/game_elements/props/decoration/bush/components/bush_spriteframes_blue_small.tres" id="23_5eaun"] +[ext_resource type="PackedScene" uid="uid://c4vbokn408f2c" path="res://scenes/game_elements/props/decoration/sheep/sheep.tscn" id="23_8o6qx"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_8hv4q"] +size = Vector2(128, 128) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_kxo1k"] +size = Vector2(52, 61) + +[node name="FraysEndWest" type="Node2D" unique_id=1575051889] +metadata/_edit_vertical_guides_ = [1281.0] +metadata/_edit_horizontal_guides_ = [772.0] + +[node name="Teleporter" type="Area2D" parent="." unique_id=1813334975] +position = Vector2(1349, 705) +collision_layer = 4 +script = ExtResource("6_bp1pg") +next_scene = "uid://cufkthb25mpxy" +spawn_point_path = NodePath("WestPath/SpawnPointWestPath") +enter_transition = 2 +exit_transition = 1 +metadata/_custom_type_script = "uid://hqdquinbimce" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Teleporter" unique_id=1496141142] +shape = SubResource("RectangleShape2D_8hv4q") + +[node name="SpawnPoint" type="Marker2D" parent="." unique_id=1903956882 groups=["spawn_point"]] +position = Vector2(1223, 706) +script = ExtResource("7_q3i8o") +look_at_side_on_spawn = -1 +metadata/_custom_type_script = "uid://0enyu5v4ra34" + +[node name="BackgroundMusic" parent="." unique_id=1461759951 instance=ExtResource("8_svupf")] +stream = ExtResource("9_8d0tu") + +[node name="TileMapLayers" type="Node2D" parent="." unique_id=2145698181] + +[node name="Grass" type="TileMapLayer" parent="TileMapLayers" unique_id=514205713] +tile_map_data = PackedByteArray("AAATAAoAAQABAAEAAAATAAkAAQABAAEAAAATAAgAAQABAAEAAAATAAcAAQABAAEAAAATAAYAAQABAAEAAAATAAUAAQABAAEAAAATAAQAAQABAAEAAAATAAMAAQABAAEAAAATAAIAAQABAAEAAAATAAEAAQABAAEAAAATAAAAAQABAAEAAAASAAoAAQABAAEAAAASAAkAAQABAAEAAAASAAgAAQABAAEAAAASAAcAAQABAAEAAAASAAYAAQABAAEAAAASAAUAAQABAAEAAAASAAQAAQABAAEAAAASAAMAAQABAAEAAAASAAIAAQABAAEAAAASAAEAAQABAAEAAAASAAAAAQABAAEAAAARAAoAAQABAAEAAAARAAkAAQABAAEAAAARAAgAAQABAAEAAAARAAcAAQABAAEAAAARAAYAAQABAAEAAAARAAUAAQABAAEAAAARAAQAAQABAAEAAAARAAMAAQABAAEAAAARAAIAAQABAAEAAAARAAEAAQABAAEAAAARAAAAAQABAAEAAAAQAAoAAQABAAEAAAAQAAkAAQABAAEAAAAQAAgAAQABAAEAAAAQAAcAAQABAAEAAAAQAAYAAQABAAEAAAAQAAUAAQABAAEAAAAQAAQAAQABAAEAAAAQAAMAAQABAAEAAAAQAAIAAQABAAEAAAAQAAEAAQABAAEAAAAQAAAAAQABAAEAAAAPAAoAAQABAAEAAAAPAAkAAQABAAEAAAAPAAgAAQABAAEAAAAPAAcAAQABAAEAAAAPAAYAAQABAAEAAAAPAAUAAQABAAEAAAAPAAQAAQABAAEAAAAPAAMAAQABAAEAAAAPAAIAAQABAAEAAAAPAAEAAQABAAEAAAAPAAAAAQABAAEAAAAOAAoAAQABAAEAAAAOAAkAAQABAAEAAAAOAAgAAQABAAEAAAAOAAcAAQABAAEAAAAOAAYAAQABAAEAAAAOAAUAAQABAAEAAAAOAAQAAQABAAEAAAAOAAMAAQABAAEAAAAOAAIAAQABAAEAAAAOAAEAAQABAAEAAAAOAAAAAQABAAEAAAANAAoAAQABAAEAAAANAAkAAQABAAEAAAANAAgAAQABAAEAAAANAAcAAQABAAEAAAANAAYAAQABAAEAAAANAAUAAQABAAEAAAANAAQAAQABAAEAAAANAAMAAQABAAEAAAANAAIAAQABAAEAAAANAAEAAQABAAEAAAANAAAAAQABAAEAAAAMAAoAAQABAAEAAAAMAAkAAQABAAEAAAAMAAgAAQABAAEAAAAMAAcAAQABAAEAAAAMAAYAAQABAAEAAAAMAAUAAQABAAEAAAAMAAQAAQABAAEAAAAMAAMAAQABAAEAAAAMAAIAAQABAAEAAAAMAAEAAQABAAEAAAAMAAAAAQABAAEAAAALAAoAAQABAAEAAAALAAkAAQABAAEAAAALAAgAAQABAAEAAAALAAcAAQABAAEAAAALAAYAAQABAAEAAAALAAUAAQABAAEAAAALAAQAAQABAAEAAAALAAMAAQABAAEAAAALAAIAAQABAAEAAAALAAEAAQABAAEAAAALAAAAAQABAAEAAAAKAAoAAQABAAEAAAAKAAkAAQABAAEAAAAKAAgAAQABAAEAAAAKAAcAAQABAAEAAAAKAAYAAQABAAEAAAAKAAUAAQABAAEAAAAKAAQAAQABAAEAAAAKAAMAAQABAAEAAAAKAAIAAQABAAEAAAAKAAEAAQABAAEAAAAKAAAAAQABAAEAAAAJAAoAAQABAAEAAAAJAAkAAQABAAEAAAAJAAgAAQABAAEAAAAJAAcAAQABAAEAAAAJAAYAAQABAAEAAAAJAAUAAQABAAEAAAAJAAQAAQABAAEAAAAJAAMAAQABAAEAAAAJAAIAAQABAAEAAAAJAAEAAQABAAEAAAAJAAAAAQABAAEAAAAIAAoAAQABAAEAAAAIAAkAAQABAAEAAAAIAAgAAQABAAEAAAAIAAcAAQABAAEAAAAIAAYAAQABAAEAAAAIAAUAAQABAAEAAAAIAAQAAQABAAEAAAAIAAMAAQABAAEAAAAIAAIAAQABAAEAAAAIAAEAAQABAAEAAAAIAAAAAQABAAEAAAAHAAoAAQABAAEAAAAHAAkAAQABAAEAAAAHAAgAAQABAAEAAAAHAAcAAQABAAEAAAAHAAYAAQABAAEAAAAHAAUAAQABAAEAAAAHAAQAAQABAAEAAAAHAAMAAQABAAEAAAAHAAIAAQABAAEAAAAHAAEAAQABAAEAAAAHAAAAAQABAAEAAAAGAAoAAQABAAEAAAAGAAkAAQABAAEAAAAGAAgAAQABAAEAAAAGAAcAAQABAAEAAAAGAAYAAQABAAEAAAAGAAUAAQABAAEAAAAGAAQAAQABAAEAAAAGAAMAAQABAAEAAAAGAAIAAQABAAEAAAAGAAEAAQABAAEAAAAGAAAAAQABAAEAAAAFAAoAAQABAAEAAAAFAAkAAQABAAEAAAAFAAgAAQABAAEAAAAFAAcAAQABAAEAAAAFAAYAAQABAAEAAAAFAAUAAQABAAEAAAAFAAQAAQABAAEAAAAFAAMAAQABAAEAAAAFAAIAAQABAAEAAAAFAAEAAQABAAEAAAAFAAAAAQABAAEAAAAEAAoAAQABAAEAAAAEAAkAAQABAAEAAAAEAAgAAQABAAEAAAAEAAcAAQABAAEAAAAEAAYAAQABAAEAAAAEAAUAAQABAAEAAAAEAAQAAQABAAEAAAAEAAMAAQABAAEAAAAEAAIAAQABAAEAAAAEAAEAAQABAAEAAAAEAAAAAQABAAEAAAADAAoAAQABAAEAAAADAAkAAQABAAEAAAADAAgAAQABAAEAAAADAAcAAQABAAEAAAADAAYAAQABAAEAAAADAAUAAQABAAEAAAADAAQAAQABAAEAAAADAAMAAQABAAEAAAADAAIAAQABAAEAAAADAAEAAQABAAEAAAADAAAAAQABAAEAAAACAAoAAQABAAEAAAACAAkAAQABAAEAAAACAAgAAQABAAEAAAACAAcAAQABAAEAAAACAAYAAQABAAEAAAACAAUAAQABAAEAAAACAAQAAQABAAEAAAACAAMAAQABAAEAAAACAAIAAQABAAEAAAACAAEAAQABAAEAAAACAAAAAQABAAEAAAABAAoAAQABAAEAAAABAAkAAQABAAEAAAABAAgAAQABAAEAAAABAAcAAQABAAEAAAABAAYAAQABAAEAAAABAAUAAQABAAEAAAABAAQAAQABAAEAAAABAAMAAQABAAEAAAABAAIAAQABAAEAAAABAAEAAQABAAEAAAABAAAAAQABAAEAAAAAAAoAAQABAAEAAAAAAAkAAQABAAEAAAAAAAgAAQABAAEAAAAAAAcAAQABAAEAAAAAAAYAAQABAAEAAAAAAAUAAQABAAEAAAAAAAQAAQABAAEAAAAAAAMAAQABAAEAAAAAAAIAAQABAAEAAAAAAAEAAQABAAEAAAAAAAAAAQABAAEAAAAVAA4AAQACAAEAAAAVAA0AAQACAAEAAAAVAAwAAQACAAEAAAAVAAsAAQACAAEAAAAVAAoAAQACAAEAAAAVAAkAAQACAAEAAAAVAAgAAQACAAEAAAAVAAcAAQACAAEAAAAVAAYAAQACAAEAAAAVAAUAAQACAAEAAAAVAAQAAQACAAEAAAAVAAMAAQACAAEAAAAVAAIAAQACAAEAAAAVAAEAAQACAAEAAAAVAAAAAQACAAEAAAAVAP//AQACAAEAAAAVAP7/AQACAAEAAAAVAP3/AQACAAEAAAAVAPz/AQACAAEAAAAUAA4AAQABAAEAAAAUAA0AAQABAAEAAAAUAAwAAQABAAEAAAAUAAsAAQABAAEAAAAUAAoAAQABAAEAAAAUAAkAAQABAAEAAAAUAAgAAQABAAEAAAAUAAcAAQABAAEAAAAUAAYAAQABAAEAAAAUAAUAAQABAAEAAAAUAAQAAQABAAEAAAAUAAMAAQABAAEAAAAUAAIAAQABAAEAAAAUAAEAAQABAAEAAAAUAAAAAQABAAEAAAAUAP//AQABAAEAAAAUAP7/AQABAAEAAAAUAP3/AQABAAEAAAAUAPz/AQABAAEAAAATAA4AAQABAAEAAAATAA0AAQABAAEAAAATAAwAAQABAAEAAAATAAsAAQABAAEAAAATAP//AQABAAEAAAATAP7/AQABAAEAAAATAP3/AQABAAEAAAATAPz/AQABAAEAAAASAA4AAQABAAEAAAASAA0AAQABAAEAAAASAAwAAQABAAEAAAASAAsAAQABAAEAAAASAP//AQABAAEAAAASAP7/AQABAAEAAAASAP3/AQABAAEAAAASAPz/AQABAAEAAAARAA4AAQABAAEAAAARAA0AAQABAAEAAAARAAwAAQABAAEAAAARAAsAAQABAAEAAAARAP//AQABAAEAAAARAP7/AQABAAEAAAARAP3/AQABAAEAAAARAPz/AQABAAEAAAAQAA4AAQABAAEAAAAQAA0AAQABAAEAAAAQAAwAAQABAAEAAAAQAAsAAQABAAEAAAAQAP//AQABAAEAAAAQAP7/AQABAAEAAAAQAP3/AQABAAEAAAAQAPz/AQABAAEAAAAPAA4AAQABAAEAAAAPAA0AAQABAAEAAAAPAAwAAQABAAEAAAAPAAsAAQABAAEAAAAPAP//AQABAAEAAAAPAP7/AQABAAEAAAAPAP3/AQABAAEAAAAPAPz/AQABAAEAAAAOAA4AAQABAAEAAAAOAA0AAQABAAEAAAAOAAwAAQABAAEAAAAOAAsAAQABAAEAAAAOAP//AQABAAEAAAAOAP7/AQABAAEAAAAOAP3/AQABAAEAAAAOAPz/AQABAAEAAAANAA4AAQABAAEAAAANAA0AAQABAAEAAAANAAwAAQABAAEAAAANAAsAAQABAAEAAAANAP//AQABAAEAAAANAP7/AQABAAEAAAANAP3/AQABAAEAAAANAPz/AQABAAEAAAAMAA4AAQABAAEAAAAMAA0AAQABAAEAAAAMAAwAAQABAAEAAAAMAAsAAQABAAEAAAAMAP//AQABAAEAAAAMAP7/AQABAAEAAAAMAP3/AQABAAEAAAAMAPz/AQABAAEAAAALAA4AAQABAAEAAAALAA0AAQABAAEAAAALAAwAAQABAAEAAAALAAsAAQABAAEAAAALAP//AQABAAEAAAALAP7/AQABAAEAAAALAP3/AQABAAEAAAALAPz/AQABAAEAAAAKAA4AAQABAAEAAAAKAA0AAQABAAEAAAAKAAwAAQABAAEAAAAKAAsAAQABAAEAAAAKAP//AQABAAEAAAAKAP7/AQABAAEAAAAKAP3/AQABAAEAAAAKAPz/AQABAAEAAAAJAA4AAQABAAEAAAAJAA0AAQABAAEAAAAJAAwAAQABAAEAAAAJAAsAAQABAAEAAAAJAP//AQABAAEAAAAJAP7/AQABAAEAAAAJAP3/AQABAAEAAAAJAPz/AQABAAEAAAAIAA4AAQABAAEAAAAIAA0AAQABAAEAAAAIAAwAAQABAAEAAAAIAAsAAQABAAEAAAAIAP//AQABAAEAAAAIAP7/AQABAAEAAAAIAP3/AQABAAEAAAAIAPz/AQABAAEAAAAHAA4AAQABAAEAAAAHAA0AAQABAAEAAAAHAAwAAQABAAEAAAAHAAsAAQABAAEAAAAHAP//AQABAAEAAAAHAP7/AQABAAEAAAAHAP3/AQABAAEAAAAHAPz/AQABAAEAAAAGAA4AAQABAAEAAAAGAA0AAQABAAEAAAAGAAwAAQABAAEAAAAGAAsAAQABAAEAAAAGAP//AQABAAEAAAAGAP7/AQABAAEAAAAGAP3/AQABAAEAAAAGAPz/AQABAAEAAAAFAA4AAQABAAEAAAAFAA0AAQABAAEAAAAFAAwAAQABAAEAAAAFAAsAAQABAAEAAAAFAP//AQABAAEAAAAFAP7/AQABAAEAAAAFAP3/AQABAAEAAAAFAPz/AQABAAEAAAAEAA4AAQABAAEAAAAEAA0AAQABAAEAAAAEAAwAAQABAAEAAAAEAAsAAQABAAEAAAAEAP//AQABAAEAAAAEAP7/AQABAAEAAAAEAP3/AQABAAEAAAAEAPz/AQABAAEAAAADAA4AAQABAAEAAAADAA0AAQABAAEAAAADAAwAAQABAAEAAAADAAsAAQABAAEAAAADAP//AQABAAEAAAADAP7/AQABAAEAAAADAP3/AQABAAEAAAADAPz/AQABAAEAAAACAA4AAQABAAEAAAACAA0AAQABAAEAAAACAAwAAQABAAEAAAACAAsAAQABAAEAAAACAP//AQABAAEAAAACAP7/AQABAAEAAAACAP3/AQABAAEAAAACAPz/AQABAAEAAAABAA4AAQABAAEAAAABAA0AAQABAAEAAAABAAwAAQABAAEAAAABAAsAAQABAAEAAAABAP//AQABAAEAAAABAP7/AQABAAEAAAABAP3/AQABAAEAAAABAPz/AQABAAEAAAAAAA4AAQABAAEAAAAAAA0AAQABAAEAAAAAAAwAAQABAAEAAAAAAAsAAQABAAEAAAAAAP//AQABAAEAAAAAAP7/AQABAAEAAAAAAP3/AQABAAEAAAAAAPz/AQABAAEAAAD//w4AAQABAAEAAAD//w0AAQABAAEAAAD//wwAAQABAAEAAAD//wsAAQABAAEAAAD//woAAQABAAEAAAD//wkAAQABAAEAAAD//wgAAQABAAEAAAD//wcAAQABAAEAAAD//wYAAQABAAEAAAD//wUAAQABAAEAAAD//wQAAQABAAEAAAD//wMAAQABAAEAAAD//wIAAQABAAEAAAD//wEAAQABAAEAAAD//wAAAQABAAEAAAD/////AQABAAEAAAD///7/AQABAAEAAAD///3/AQABAAEAAAD///z/AQABAAEAAAD+/w4AAQABAAEAAAD+/w0AAQABAAEAAAD+/wwAAQABAAEAAAD+/wsAAQABAAEAAAD+/woAAQABAAEAAAD+/wkAAQABAAEAAAD+/wgAAQABAAEAAAD+/wcAAQABAAEAAAD+/wYAAQABAAEAAAD+/wUAAQABAAEAAAD+/wQAAQABAAEAAAD+/wMAAQABAAEAAAD+/wIAAQABAAEAAAD+/wEAAQABAAEAAAD+/wAAAQABAAEAAAD+////AQABAAEAAAD+//7/AQABAAEAAAD+//3/AQABAAEAAAD+//z/AQABAAEAAAAVABAAAQACAAIAAAAVAA8AAQACAAEAAAAVAPv/AQACAAEAAAAVAPr/AQACAAEAAAAVAPn/AQACAAEAAAAVAPj/AQACAAEAAAAVAPf/AQACAAAAAAAUABAAAQABAAIAAAAUAA8AAQABAAEAAAAUAPv/AQABAAEAAAAUAPr/AQABAAEAAAAUAPn/AQABAAEAAAAUAPj/AQABAAEAAAAUAPf/AQABAAAAAAATABAAAQABAAIAAAATAA8AAQABAAEAAAATAPv/AQABAAEAAAATAPr/AQABAAEAAAATAPn/AQABAAEAAAATAPj/AQABAAEAAAATAPf/AQABAAAAAAASABAAAQABAAIAAAASAA8AAQABAAEAAAASAPv/AQABAAEAAAASAPr/AQABAAEAAAASAPn/AQABAAEAAAASAPj/AQABAAEAAAASAPf/AQABAAAAAAARABAAAQABAAIAAAARAA8AAQABAAEAAAARAPv/AQABAAEAAAARAPr/AQABAAEAAAARAPn/AQABAAEAAAARAPj/AQABAAEAAAARAPf/AQABAAAAAAAQABAAAQABAAIAAAAQAA8AAQABAAEAAAAQAPv/AQABAAEAAAAQAPr/AQABAAEAAAAQAPn/AQABAAEAAAAQAPj/AQABAAEAAAAQAPf/AQABAAAAAAAPABAAAQABAAIAAAAPAA8AAQABAAEAAAAPAPv/AQABAAEAAAAPAPr/AQABAAEAAAAPAPn/AQABAAEAAAAPAPj/AQABAAEAAAAPAPf/AQABAAAAAAAOABAAAQABAAIAAAAOAA8AAQABAAEAAAAOAPv/AQABAAEAAAAOAPr/AQABAAEAAAAOAPn/AQABAAEAAAAOAPj/AQABAAEAAAAOAPf/AQABAAAAAAANABAAAQABAAIAAAANAA8AAQABAAEAAAANAPv/AQABAAEAAAANAPr/AQABAAEAAAANAPn/AQABAAEAAAANAPj/AQABAAEAAAANAPf/AQABAAAAAAAMABAAAQABAAIAAAAMAA8AAQABAAEAAAAMAPv/AQABAAEAAAAMAPr/AQABAAEAAAAMAPn/AQABAAEAAAAMAPj/AQABAAEAAAAMAPf/AQABAAAAAAALABAAAQABAAIAAAALAA8AAQABAAEAAAALAPv/AQABAAEAAAALAPr/AQABAAEAAAALAPn/AQABAAEAAAALAPj/AQABAAEAAAALAPf/AQABAAAAAAAKABAAAQABAAIAAAAKAA8AAQABAAEAAAAKAPv/AQABAAEAAAAKAPr/AQABAAEAAAAKAPn/AQABAAEAAAAKAPj/AQABAAEAAAAKAPf/AQABAAAAAAAJABAAAQABAAIAAAAJAA8AAQABAAEAAAAJAPv/AQABAAEAAAAJAPr/AQABAAEAAAAJAPn/AQABAAEAAAAJAPj/AQABAAEAAAAJAPf/AQABAAAAAAAIABAAAQABAAIAAAAIAA8AAQABAAEAAAAIAPv/AQABAAEAAAAIAPr/AQABAAEAAAAIAPn/AQABAAEAAAAIAPj/AQABAAEAAAAIAPf/AQABAAAAAAAHABAAAQABAAIAAAAHAA8AAQABAAEAAAAHAPv/AQABAAEAAAAHAPr/AQABAAEAAAAHAPn/AQABAAEAAAAHAPj/AQABAAEAAAAHAPf/AQABAAAAAAAGABAAAQABAAIAAAAGAA8AAQABAAEAAAAGAPv/AQABAAEAAAAGAPr/AQABAAEAAAAGAPn/AQABAAEAAAAGAPj/AQABAAEAAAAGAPf/AQABAAAAAAAFABAAAQABAAIAAAAFAA8AAQABAAEAAAAFAPv/AQABAAEAAAAFAPr/AQABAAEAAAAFAPn/AQABAAEAAAAFAPj/AQABAAEAAAAFAPf/AQABAAAAAAAEABAAAQABAAIAAAAEAA8AAQABAAEAAAAEAPv/AQABAAEAAAAEAPr/AQABAAEAAAAEAPn/AQABAAEAAAAEAPj/AQABAAEAAAAEAPf/AQABAAAAAAADABAAAQABAAIAAAADAA8AAQABAAEAAAADAPv/AQABAAEAAAADAPr/AQABAAEAAAADAPn/AQABAAEAAAADAPj/AQABAAEAAAADAPf/AQABAAAAAAACABAAAQABAAIAAAACAA8AAQABAAEAAAACAPv/AQABAAEAAAACAPr/AQABAAEAAAACAPn/AQABAAEAAAACAPj/AQABAAEAAAACAPf/AQABAAAAAAABABAAAQABAAIAAAABAA8AAQABAAEAAAABAPv/AQABAAEAAAABAPr/AQABAAEAAAABAPn/AQABAAEAAAABAPj/AQABAAEAAAABAPf/AQABAAAAAAAAABAAAQABAAIAAAAAAA8AAQABAAEAAAAAAPv/AQABAAEAAAAAAPr/AQABAAEAAAAAAPn/AQABAAEAAAAAAPj/AQABAAEAAAAAAPf/AQABAAAAAAD//xAAAQABAAIAAAD//w8AAQABAAEAAAD///v/AQABAAEAAAD///r/AQABAAEAAAD///n/AQABAAEAAAD///j/AQABAAEAAAD///f/AQABAAAAAAD+/xAAAQABAAIAAAD+/w8AAQABAAEAAAD+//v/AQABAAEAAAD+//r/AQABAAEAAAD+//n/AQABAAEAAAD+//j/AQABAAEAAAD+//f/AQABAAAAAAD9/xAAAQABAAIAAAD9/w8AAQABAAEAAAD9/w4AAQABAAEAAAD9/w0AAQABAAEAAAD9/wwAAQABAAEAAAD9/wsAAQABAAEAAAD9/woAAQABAAEAAAD9/wkAAQABAAEAAAD9/wgAAQABAAEAAAD9/wcAAQABAAEAAAD9/wYAAQABAAEAAAD9/wUAAQABAAEAAAD9/wQAAQABAAEAAAD9/wMAAQABAAEAAAD9/wIAAQABAAEAAAD9/wEAAQABAAEAAAD9/wAAAQABAAEAAAD9////AQABAAEAAAD9//7/AQABAAEAAAD9//3/AQABAAEAAAD9//z/AQABAAEAAAD9//v/AQABAAEAAAD9//r/AQABAAEAAAD9//n/AQABAAEAAAD9//j/AQABAAEAAAD9//f/AQABAAAAAAD8/xAAAQABAAIAAAD8/w8AAQABAAEAAAD8/w4AAQABAAEAAAD8/w0AAQABAAEAAAD8/wwAAQABAAEAAAD8/wsAAQABAAEAAAD8/woAAQABAAEAAAD8/wkAAQABAAEAAAD8/wgAAQABAAEAAAD8/wcAAQABAAEAAAD8/wYAAQABAAEAAAD8/wUAAQABAAEAAAD8/wQAAQABAAEAAAD8/wMAAQABAAEAAAD8/wIAAQABAAEAAAD8/wEAAQABAAEAAAD8/wAAAQABAAEAAAD8////AQABAAEAAAD8//7/AQABAAEAAAD8//3/AQABAAEAAAD8//z/AQABAAEAAAD8//v/AQABAAEAAAD8//r/AQABAAEAAAD8//n/AQABAAEAAAD8//j/AQABAAEAAAD8//f/AQABAAAAAAD7/xAAAQABAAIAAAD7/w8AAQABAAEAAAD7/w4AAQABAAEAAAD7/w0AAQABAAEAAAD7/wwAAQABAAEAAAD7/wsAAQABAAEAAAD7/woAAQABAAEAAAD7/wkAAQABAAEAAAD7/wgAAQABAAEAAAD7/wcAAQABAAEAAAD7/wYAAQABAAEAAAD7/wUAAQABAAEAAAD7/wQAAQABAAEAAAD7/wMAAQABAAEAAAD7/wIAAQABAAEAAAD7/wEAAQABAAEAAAD7/wAAAQABAAEAAAD7////AQABAAEAAAD7//7/AQABAAEAAAD7//3/AQABAAEAAAD7//z/AQABAAEAAAD7//v/AQABAAEAAAD7//r/AQABAAEAAAD7//n/AQABAAEAAAD7//j/AQABAAEAAAD7//f/AQABAAAAAAD6/xAAAQABAAIAAAD6/w8AAQABAAEAAAD6/w4AAQABAAEAAAD6/w0AAQABAAEAAAD6/wwAAQABAAEAAAD6/wsAAQABAAEAAAD6/woAAQABAAEAAAD6/wkAAQABAAEAAAD6/wgAAQABAAEAAAD6/wcAAQABAAEAAAD6/wYAAQABAAEAAAD6/wUAAQABAAEAAAD6/wQAAQABAAEAAAD6/wMAAQABAAEAAAD6/wIAAQABAAEAAAD6/wEAAQABAAEAAAD6/wAAAQABAAEAAAD6////AQABAAEAAAD6//7/AQABAAEAAAD6//3/AQABAAEAAAD6//z/AQABAAEAAAD6//v/AQABAAEAAAD6//r/AQABAAEAAAD6//n/AQABAAEAAAD6//j/AQABAAEAAAD6//f/AQABAAAAAAD5/xAAAQABAAIAAAD5/w8AAQABAAEAAAD5/w4AAQABAAEAAAD5/w0AAQABAAEAAAD5/wwAAQABAAEAAAD5/wsAAQABAAEAAAD5/woAAQABAAEAAAD5/wkAAQABAAEAAAD5/wgAAQABAAEAAAD5/wcAAQABAAEAAAD5/wYAAQABAAEAAAD5/wUAAQABAAEAAAD5/wQAAQABAAEAAAD5/wMAAQABAAEAAAD5/wIAAQABAAEAAAD5/wEAAQABAAEAAAD5/wAAAQABAAEAAAD5////AQABAAEAAAD5//7/AQABAAEAAAD5//3/AQABAAEAAAD5//z/AQABAAEAAAD5//v/AQABAAEAAAD5//r/AQABAAEAAAD5//n/AQABAAEAAAD5//j/AQABAAEAAAD5//f/AQABAAAAAAD4/xAAAQABAAIAAAD4/w8AAQABAAEAAAD4/w4AAQABAAEAAAD4/w0AAQABAAEAAAD4/wwAAQABAAEAAAD4/wsAAQABAAEAAAD4/woAAQABAAEAAAD4/wkAAQABAAEAAAD4/wgAAQABAAEAAAD4/wcAAQABAAEAAAD4/wYAAQABAAEAAAD4/wUAAQABAAEAAAD4/wQAAQABAAEAAAD4/wMAAQABAAEAAAD4/wIAAQABAAEAAAD4/wEAAQABAAEAAAD4/wAAAQABAAEAAAD4////AQABAAEAAAD4//7/AQABAAEAAAD4//3/AQABAAEAAAD4//z/AQABAAEAAAD4//v/AQABAAEAAAD4//r/AQABAAEAAAD4//n/AQABAAEAAAD4//j/AQABAAEAAAD4//f/AQABAAAAAAD3/xAAAQABAAIAAAD3/w8AAQABAAEAAAD3/w4AAQABAAEAAAD3/w0AAQABAAEAAAD3/wwAAQABAAEAAAD3/wsAAQABAAEAAAD3/woAAQABAAEAAAD3/wkAAQABAAEAAAD3/wgAAQABAAEAAAD3/wcAAQABAAEAAAD3/wYAAQABAAEAAAD3/wUAAQABAAEAAAD3/wQAAQABAAEAAAD3/wMAAQABAAEAAAD3/wIAAQABAAEAAAD3/wEAAQABAAEAAAD3/wAAAQABAAEAAAD3////AQABAAEAAAD3//7/AQABAAEAAAD3//3/AQABAAEAAAD3//z/AQABAAEAAAD3//v/AQABAAEAAAD3//r/AQABAAEAAAD3//n/AQABAAEAAAD3//j/AQABAAEAAAD3//f/AQABAAAAAAD2/xAAAQABAAIAAAD2/w8AAQABAAEAAAD2/w4AAQABAAEAAAD2/w0AAQABAAEAAAD2/wwAAQABAAEAAAD2/wsAAQABAAEAAAD2/woAAQABAAEAAAD2/wkAAQABAAEAAAD2/wgAAQABAAEAAAD2/wcAAQABAAEAAAD2/wYAAQABAAEAAAD2/wUAAQABAAEAAAD2/wQAAQABAAEAAAD2/wMAAQABAAEAAAD2/wIAAQABAAEAAAD2/wEAAQABAAEAAAD2/wAAAQABAAEAAAD2////AQABAAEAAAD2//7/AQABAAEAAAD2//3/AQABAAEAAAD2//z/AQABAAEAAAD2//v/AQABAAEAAAD2//r/AQABAAEAAAD2//n/AQABAAEAAAD2//j/AQABAAEAAAD2//f/AQABAAAAAAD1/xAAAQAAAAIAAAD1/w8AAQAAAAEAAAD1/w4AAQAAAAEAAAD1/w0AAQAAAAEAAAD1/wwAAQAAAAEAAAD1/wsAAQAAAAEAAAD1/woAAQAAAAEAAAD1/wkAAQAAAAEAAAD1/wgAAQAAAAEAAAD1/wcAAQAAAAEAAAD1/wYAAQAAAAEAAAD1/wUAAQAAAAEAAAD1/wQAAQAAAAEAAAD1/wMAAQAAAAEAAAD1/wIAAQAAAAEAAAD1/wEAAQAAAAEAAAD1/wAAAQAAAAEAAAD1////AQAAAAEAAAD1//7/AQAAAAEAAAD1//3/AQAAAAEAAAD1//z/AQAAAAEAAAD1//v/AQAAAAEAAAD1//r/AQAAAAEAAAD1//n/AQAAAAEAAAD1//j/AQAAAAEAAAD1//f/AQAAAAAAAAA=") +tile_set = ExtResource("1_6wkkr") + +[node name="Paths" type="TileMapLayer" parent="TileMapLayers" unique_id=1663042993] +tile_map_data = PackedByteArray("AAAVAAsABQACAAIAAAAVAAoABQACAAAAAAAUAAsABQABAAIAAAAUAAoABQABAAAAAAATAAsABQABAAIAAAATAAoABQABAAAAAAASAAsABQAAAAIAAAASAAoABQABAAAAAAARAAoABQABAAMAAAAQAAoABQABAAMAAAAPAAoABQABAAMAAAAOAAoABQAAAAIAAAAOAAkABQADAAEAAAAOAAgABQACAAEAAAAOAAcABQADAAEAAAAOAAYABQADAAEAAAAOAAUABQADAAEAAAANAAQABQABAAMAAAAOAAQABQACAAEAAAAMAAQABQABAAMAAAALAAQABQABAAMAAAAKAAQABQABAAMAAAAJAAQABQABAAMAAAAIAAQABQABAAMAAAAHAAQABQAAAAIAAAAHAAMABQADAAAAAAAEAAgABQAAAAEAAAAEAAcABQADAAAAAAAGAAgABQABAAMAAAAFAAgABQABAAMAAAAHAAgABQABAAMAAAAIAAgABQABAAMAAAAJAAgABQABAAMAAAAKAAgABQABAAMAAAALAAgABQABAAMAAAAMAAgABQABAAMAAAANAAgABQABAAMAAAAOAAMABQADAAAAAAAMAAIABQADAAIAAAAMAAEABQABAAAAAAALAAEABQAAAAMAAAANAAEABQACAAMAAAAQAAIABQADAAAAAAAQAAMABQADAAIAAAAEAAkABQADAAEAAAAEAAoABQAAAAIAAAAFAAoABQACAAAAAAAFAAsABQAAAAIAAAAGAAsABQACAAAAAAAIAAsABQADAAMAAAAKAAoABQADAAAAAAAKAAsABQAAAAEAAAALAAsABQABAAAAAAALAAwABQACAAIAAAAKAAwABQAAAAIAAAAMAAsABQACAAMAAAAGAAwABQADAAIAAAA=") +tile_set = ExtResource("1_6wkkr") + +[node name="Paths2" type="TileMapLayer" parent="TileMapLayers" unique_id=1400951136] +tile_map_data = PackedByteArray("AAAOAAIABgAAAAAAAAAOAAMABgADAAIAAAAPAAIABgABAAMAAAAQAAIABgACAAMAAAAFAAoABgABAAAAAAAGAAoABgABAAMAAAAHAAoABgACAAMAAAAEAAoABgAAAAAAAAAFAAsABgACAAIAAAAEAAsABgAAAAIAAAA=") +tile_set = ExtResource("1_6wkkr") + +[node name="Fences" type="TileMapLayer" parent="TileMapLayers" unique_id=1121657372] +tile_map_data = PackedByteArray("AAAKAAAAAAAAAAAAAAAKAAEAAAAAAAEAAAAKAAIAAAAAAAEAAAALAAMAAAABAAAAAAAMAAMAAAABAAIAAAAPAAMAAAADAAEAAAARAAMAAAAAAAEAAAARAAIAAAAAAAEAAAARAAEAAAAAAAEAAAARAAAAAAACAAAAAAAQAAAAAAABAAIAAAAPAAAAAAABAAAAAAAOAAAAAAABAAAAAAANAAAAAAABAAAAAAAMAAAAAAABAAIAAAALAAAAAAABAAIAAAAPAAQAAAAAAAEAAAAPAAUAAAAAAAEAAAAPAAYAAAACAAEAAAAPAAcAAAAAAAIAAAAQAAcAAAABAAAAAAARAAcAAAACAAIAAAARAAYAAAACAAEAAAARAAUAAAACAAEAAAARAAQAAAAAAAEAAAANAAMAAAAEAAAAAAANAAkAAAACAAAAAAANAAoAAAAAAAEAAAANAAsAAAAAAAEAAAANAAwAAAADAAIAAAAMAAkAAAABAAIAAAALAAkAAAABAAAAAAAKAAkAAAABAAIAAAAJAAkAAAABAAAAAAAIAAkAAAABAAAAAAAHAAkAAAABAAAAAAAGAAkAAAABAAIAAAAFAAkAAAADAAAAAAADAAkAAAADAAEAAAADAAoAAAAAAAEAAAADAAsAAAAAAAEAAAADAAwAAAADAAIAAAAKAAMAAAAAAAIAAAA=") +tile_set = ExtResource("7_2x7c2") + +[node name="Stone" type="TileMapLayer" parent="TileMapLayers" unique_id=446735443] +tile_map_data = PackedByteArray("AAAUAA0ABAACAAEAAAAUAAwABAACAAAAAAATAA0ABAABAAEAAAATAAwABAABAAAAAAASAA0ABAABAAEAAAASAAwABAABAAAAAAARAA0ABAABAAEAAAARAAwABAABAAAAAAAQAA0ABAABAAEAAAAQAAwABAABAAAAAAAPAA0ABAABAAEAAAAPAAwABAABAAAAAAAOAA0ABAABAAEAAAAOAAwABAABAAAAAAANAA0ABAABAAEAAAANAAwABAABAAAAAAAMAA0ABAABAAEAAAAMAAwABAABAAAAAAALAA0ABAABAAEAAAALAAwABAABAAAAAAAKAA0ABAABAAEAAAAKAAwABAABAAAAAAAJAA0ABAABAAEAAAAJAAwABAABAAAAAAAIAA0ABAABAAEAAAAIAAwABAABAAAAAAAUAAgABAACAAIAAAAUAAcABAACAAEAAAAUAAYABAACAAEAAAAUAAUABAACAAEAAAAUAAQABAACAAEAAAAUAAMABAACAAEAAAAUAAIABAACAAEAAAAUAAEABAACAAEAAAAUAAAABAACAAEAAAAUAP//BAACAAEAAAAUAP7/BAACAAEAAAAUAP3/BAACAAEAAAAUAPz/BAACAAEAAAATAAgABAAAAAIAAAATAAcABAAAAAEAAAATAAYABAAAAAEAAAATAAUABAAAAAEAAAATAAQABAAAAAEAAAATAAMABAAAAAEAAAATAAIABAAAAAEAAAATAAEABAAAAAEAAAATAAAABAAAAAEAAAATAP//BAAAAAEAAAATAP7/BAAAAAEAAAATAP3/BAAAAAEAAAATAPz/BAAAAAEAAAAIAA4ABAABAAEAAAAHAA4ABAABAAEAAAAHAA0ABAABAAEAAAAHAAwABAABAAAAAAAGAA4ABAABAAEAAAAGAA0ABAABAAEAAAAGAAwABAABAAAAAAAFAA4ABAABAAEAAAAFAA0ABAABAAEAAAAFAAwABAABAAAAAAAEAA4ABAABAAEAAAAEAA0ABAABAAEAAAAEAAwABAABAAAAAAADAA4ABAABAAEAAAADAA0ABAABAAEAAAADAAwABAABAAAAAAACAA4ABAABAAEAAAACAA0ABAABAAEAAAACAAwABAABAAAAAAABAA4ABAABAAEAAAABAA0ABAABAAEAAAABAAwABAABAAAAAAAAAA4ABAABAAEAAAAAAA0ABAABAAEAAAAAAAwABAABAAAAAAD//w4ABAABAAEAAAD//w0ABAABAAEAAAD//wwABAABAAAAAAD+/w4ABAABAAEAAAD+/w0ABAABAAEAAAD+/wwABAABAAAAAAAUAPv/BAACAAEAAAATAPv/BAAAAAEAAAAUAA8ABAACAAIAAAAUAA4ABAACAAEAAAATAA8ABAABAAIAAAATAA4ABAABAAEAAAASAA8ABAABAAIAAAASAA4ABAABAAEAAAARAA8ABAABAAIAAAARAA4ABAABAAEAAAAQAA8ABAABAAIAAAAQAA4ABAABAAEAAAAPAA8ABAABAAIAAAAPAA4ABAABAAEAAAAOAA8ABAABAAIAAAAOAA4ABAABAAEAAAANAA8ABAABAAIAAAANAA4ABAABAAEAAAAMAA8ABAABAAIAAAAMAA4ABAABAAEAAAALAA8ABAABAAIAAAALAA4ABAABAAEAAAAKAA8ABAABAAIAAAAKAA4ABAABAAEAAAAJAA8ABAABAAIAAAAJAA4ABAABAAEAAAAIAA8ABAABAAIAAAAHAA8ABAABAAIAAAAGAA8ABAABAAIAAAAFAA8ABAABAAIAAAAEAA8ABAABAAIAAAADAA8ABAABAAIAAAACAA8ABAABAAIAAAABAA8ABAABAAIAAAAAAA8ABAABAAIAAAD//w8ABAABAAIAAAD+/w8ABAABAAIAAAD9/w8ABAABAAIAAAD9/w4ABAABAAEAAAD9/w0ABAABAAEAAAD9/wwABAABAAAAAAD8/w8ABAABAAIAAAD8/w4ABAABAAEAAAD8/w0ABAABAAEAAAD8/wwABAABAAAAAAD7/w8ABAABAAIAAAD7/w4ABAABAAEAAAD7/w0ABAABAAEAAAD7/wwABAABAAAAAAD6/w8ABAABAAIAAAD6/w4ABAABAAEAAAD6/w0ABAABAAEAAAD6/wwABAABAAAAAAD5/w8ABAABAAIAAAD5/w4ABAABAAEAAAD5/w0ABAABAAEAAAD5/wwABAABAAAAAAD4/w8ABAABAAIAAAD4/w4ABAABAAEAAAD4/w0ABAABAAEAAAD4/wwABAABAAAAAAD3/w8ABAABAAIAAAD3/w4ABAABAAEAAAD3/w0ABAABAAEAAAD3/wwABAABAAAAAAD2/w8ABAABAAIAAAD2/w4ABAABAAEAAAD2/w0ABAABAAEAAAD2/wwABAABAAAAAAD1/w8ABAAAAAIAAAD1/w4ABAAAAAEAAAD1/w0ABAAAAAEAAAD1/wwABAAAAAAAAAAUAPr/BAACAAEAAAAUAPn/BAACAAEAAAAUAPj/BAACAAEAAAAUAPf/BAACAAAAAAATAPr/BAAAAAEAAAATAPn/BAAAAAEAAAATAPj/BAAAAAEAAAATAPf/BAAAAAAAAAA=") +tile_set = ExtResource("2_eitnf") + +[node name="Grass_Level1" type="TileMapLayer" parent="TileMapLayers" unique_id=187188864] +tile_map_data = PackedByteArray("AAAAAA0ABQAAAAAAAAABAA0ABQACAAAAAAAHAA0ABQABAAAAAAAQAA0ABQADAAAAAAD//w4ABQAAAAMAAAAAAA4ABQABAAIAAAABAA4ABQACAAIAAAAEAA0ABQAAAAAAAAAFAA0ABQABAAAAAAAGAA0ABQABAAAAAAAHAA4ABQABAAIAAAAIAA0ABQABAAAAAAAJAA0ABQACAAMAAAAPAA4ABQAAAAMAAAAQAA4ABQACAAIAAAAIAA4ABQACAAIAAAAGAA4ABQABAAIAAAAFAA4ABQABAAIAAAAEAA4ABQAAAAIAAAD9/w0ABQACAAAAAAD8/w0ABQABAAAAAAD7/w0ABQABAAAAAAD6/w0ABQABAAAAAAD5/w0ABQABAAAAAAD4/w0ABQABAAMAAAD3/w0ABQABAAMAAAD2/w0ABQAAAAMAAAD9/w4ABQACAAIAAAD8/w4ABQABAAIAAAD7/w4ABQABAAIAAAD6/w4ABQABAAIAAAD5/w4ABQAAAAIAAAA=") +tile_set = ExtResource("1_6wkkr") + +[node name="OnTheGround" type="Node2D" parent="." unique_id=1327031355] +y_sort_enabled = true + +[node name="Player" parent="OnTheGround" unique_id=296354958 instance=ExtResource("3_7dntp")] +position = Vector2(1216, 720) +player_name = "StoryWeaver" +sprite_frames = ExtResource("4_ltemt") + +[node name="Camera2D" type="Camera2D" parent="OnTheGround/Player" unique_id=1423571988] +limit_left = -384 +limit_top = -384 +limit_right = 1280 +limit_bottom = 896 +position_smoothing_enabled = true +editor_draw_limits = true + +[node name="Oscar" parent="OnTheGround" unique_id=1098678013 instance=ExtResource("5_wf3xu")] +position = Vector2(544, 255) +character_seed = 2842990351 + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Oscar" unique_id=1625775301 node_paths=PackedStringArray("interact_area")] +script = ExtResource("11_ovokv") +dialogue = ExtResource("12_otyi0") +interact_area = NodePath("../InteractArea") +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Oscar" unique_id=248145530 node_paths=PackedStringArray("marker")] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("13_otyi0") +marker = NodePath("Marker") +action = "Talk to Óscar" +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Oscar/InteractArea" unique_id=1380061781] +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_kxo1k") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="Marker" type="Marker2D" parent="OnTheGround/Oscar/InteractArea" unique_id=1409355159] +position = Vector2(0, -72) + +[node name="Sigurd" parent="OnTheGround" unique_id=1735084916 instance=ExtResource("5_wf3xu")] +position = Vector2(429, 271) +scale = Vector2(-1, 1) +character_seed = 3839842409 +look_at_side = 1 + +[node name="TalkBehavior" type="Node" parent="OnTheGround/Sigurd" unique_id=1769151024 node_paths=PackedStringArray("interact_area")] +script = ExtResource("11_ovokv") +dialogue = ExtResource("14_otyi0") +interact_area = NodePath("../InteractArea") +metadata/_custom_type_script = "uid://edcifob4jc4s" + +[node name="InteractArea" type="Area2D" parent="OnTheGround/Sigurd" unique_id=113255734 node_paths=PackedStringArray("marker")] +collision_layer = 32 +collision_mask = 0 +script = ExtResource("13_otyi0") +marker = NodePath("Marker") +action = "Talk to Sigurd" +metadata/_custom_type_script = "uid://du8wfijr35r35" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="OnTheGround/Sigurd/InteractArea" unique_id=728137002] +position = Vector2(0, -23.5) +shape = SubResource("RectangleShape2D_kxo1k") +debug_color = Color(0.600391, 0.54335, 0, 0.42) + +[node name="Marker" type="Marker2D" parent="OnTheGround/Sigurd/InteractArea" unique_id=2031504100] +position = Vector2(0, -100) + +[node name="Sign" parent="OnTheGround" unique_id=1579530966 instance=ExtResource("6_eitnf")] +position = Vector2(1171, 621) +direction = 1 +text = "Eternal Loom" + +[node name="Houses" type="Node2D" parent="OnTheGround" unique_id=1443466890] +y_sort_enabled = true + +[node name="House_1" parent="OnTheGround/Houses" unique_id=593509202 instance=ExtResource("11_2x7c2")] +position = Vector2(479, 208) +texture = ExtResource("12_feqgw") + +[node name="House_2" parent="OnTheGround/Houses" unique_id=1419774411 instance=ExtResource("11_2x7c2")] +position = Vector2(287, 468) +texture = ExtResource("13_qm4wv") + +[node name="RaisedTrees" type="Node2D" parent="OnTheGround" unique_id=1745451251] +y_sort_enabled = true + +[node name="Tree" parent="OnTheGround/RaisedTrees" unique_id=1182216860 instance=ExtResource("8_wf3xu")] +position = Vector2(1037.0001, 917.00006) +scale = Vector2(1.2678173, 1.198607) + +[node name="Tree2" parent="OnTheGround/RaisedTrees" unique_id=1788460453 instance=ExtResource("8_wf3xu")] +position = Vector2(582.99994, 862) +scale = Vector2(0.9164894, 1.0109252) + +[node name="Tree3" parent="OnTheGround/RaisedTrees" unique_id=1757436428 instance=ExtResource("8_wf3xu")] +position = Vector2(474, 929.00006) +scale = Vector2(1.1957495, 1.1520458) + +[node name="Tree4" parent="OnTheGround/RaisedTrees" unique_id=599536433 instance=ExtResource("8_wf3xu")] +position = Vector2(311.00003, 863.00006) +scale = Vector2(1.1317912, 1.0692457) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree5" parent="OnTheGround/RaisedTrees" unique_id=1636740499 instance=ExtResource("8_wf3xu")] +position = Vector2(53, 911.00006) +scale = Vector2(0.896641, 0.92042136) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree6" parent="OnTheGround/RaisedTrees" unique_id=771697437 instance=ExtResource("8_wf3xu")] +position = Vector2(-189, 908.00006) +scale = Vector2(0.7894665, 0.86321133) + +[node name="Tree7" parent="OnTheGround/RaisedTrees" unique_id=728383486 instance=ExtResource("8_wf3xu")] +position = Vector2(-289, 935.99994) +scale = Vector2(0.8471238, 0.90025306) + +[node name="Tree8" parent="OnTheGround/RaisedTrees" unique_id=1621470522 instance=ExtResource("8_wf3xu")] +position = Vector2(-382.99997, 893.99994) +scale = Vector2(1.0863388, 1.1038334) + +[node name="Tree9" parent="OnTheGround/RaisedTrees" unique_id=781573525 instance=ExtResource("8_wf3xu")] +position = Vector2(-537, 872) +scale = Vector2(1.0253335, 1.0274945) + +[node name="Forest" type="StaticBody2D" parent="OnTheGround" unique_id=2126418376] +y_sort_enabled = true + +[node name="AreaFiller" type="Node" parent="OnTheGround/Forest" unique_id=940815448] +script = ExtResource("7_ltemt") +scenes = Array[PackedScene]([ExtResource("8_wf3xu")]) +sprite_frames = Array[SpriteFrames]([ExtResource("9_htidp"), ExtResource("10_wps5n")]) +metadata/_custom_type_script = "uid://bdhjixygupit1" + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="OnTheGround/Forest" unique_id=1547085708] +polygon = PackedVector2Array(1192, -36, 1192, -542, -688, -554, -688, 763, 82, 753, 150, 465, 241, 214, 507, -48) + +[node name="Tree" parent="OnTheGround/Forest" unique_id=778491064 instance=ExtResource("8_wf3xu")] +position = Vector2(159.66095, 438.35275) +scale = Vector2(0.86004066, 0.8585061) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree2" parent="OnTheGround/Forest" unique_id=1938107775 instance=ExtResource("8_wf3xu")] +position = Vector2(63.55966, 373.05328) +scale = Vector2(0.87669754, 0.8273925) + +[node name="Tree3" parent="OnTheGround/Forest" unique_id=1260662999 instance=ExtResource("8_wf3xu")] +position = Vector2(138.15326, 326.06778) +scale = Vector2(0.84982073, 0.81889087) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree4" parent="OnTheGround/Forest" unique_id=1313323756 instance=ExtResource("8_wf3xu")] +position = Vector2(179.38734, 248.6036) +scale = Vector2(1.0417024, 1.1194874) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree5" parent="OnTheGround/Forest" unique_id=1213237950 instance=ExtResource("8_wf3xu")] +position = Vector2(113.548416, 230.97131) +scale = Vector2(1.0229285, 1.1044995) + +[node name="Tree6" parent="OnTheGround/Forest" unique_id=2021825327 instance=ExtResource("8_wf3xu")] +position = Vector2(80.67931, 453.33554) +scale = Vector2(1.0771656, 0.9823021) + +[node name="Tree7" parent="OnTheGround/Forest" unique_id=1341775335 instance=ExtResource("8_wf3xu")] +position = Vector2(20.100899, 321.20905) +scale = Vector2(1.0479138, 1.0649827) + +[node name="Tree8" parent="OnTheGround/Forest" unique_id=1703537653 instance=ExtResource("8_wf3xu")] +position = Vector2(138.12549, 144.44266) +scale = Vector2(0.96251523, 0.97246563) + +[node name="Tree9" parent="OnTheGround/Forest" unique_id=1691639545 instance=ExtResource("8_wf3xu")] +position = Vector2(200.88316, 123.31611) +scale = Vector2(1.0491804, 1.0788546) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree10" parent="OnTheGround/Forest" unique_id=735177379 instance=ExtResource("8_wf3xu")] +position = Vector2(5.2201004, 519.5328) +scale = Vector2(1.0297824, 1.111391) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree11" parent="OnTheGround/Forest" unique_id=715555394 instance=ExtResource("8_wf3xu")] +position = Vector2(-25.772491, 401.56238) +scale = Vector2(0.9176795, 0.86824113) + +[node name="Tree12" parent="OnTheGround/Forest" unique_id=1185100400 instance=ExtResource("8_wf3xu")] +position = Vector2(121.005424, 519.8536) +scale = Vector2(0.8746478, 0.85931814) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree13" parent="OnTheGround/Forest" unique_id=991622759 instance=ExtResource("8_wf3xu")] +position = Vector2(-4.3438034, 231.73775) +scale = Vector2(0.76476467, 0.8272439) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree14" parent="OnTheGround/Forest" unique_id=393947305 instance=ExtResource("8_wf3xu")] +position = Vector2(-106.33467, 394.45755) +scale = Vector2(1.1203755, 1.1090813) + +[node name="Tree15" parent="OnTheGround/Forest" unique_id=562926490 instance=ExtResource("8_wf3xu")] +position = Vector2(60.95576, 569.45557) +scale = Vector2(0.9682841, 1.0287123) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree16" parent="OnTheGround/Forest" unique_id=1013473017 instance=ExtResource("8_wf3xu")] +position = Vector2(-56.364113, 295.68915) +scale = Vector2(0.98004043, 1.0875492) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree17" parent="OnTheGround/Forest" unique_id=1283098914 instance=ExtResource("8_wf3xu")] +position = Vector2(177.71082, 376.40372) +scale = Vector2(0.8049863, 0.8435616) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree18" parent="OnTheGround/Forest" unique_id=1299769062 instance=ExtResource("8_wf3xu")] +position = Vector2(-2.5057487, 660.71783) +scale = Vector2(1.1869736, 1.1872046) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree19" parent="OnTheGround/Forest" unique_id=1107992244 instance=ExtResource("8_wf3xu")] +position = Vector2(113.17438, 611.66583) +scale = Vector2(1.0590259, 0.9668085) + +[node name="Tree20" parent="OnTheGround/Forest" unique_id=1207124401 instance=ExtResource("8_wf3xu")] +position = Vector2(262.2728, 88.045944) +scale = Vector2(0.9799695, 1.0016508) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree21" parent="OnTheGround/Forest" unique_id=165808894 instance=ExtResource("8_wf3xu")] +position = Vector2(-147.40373, 478.69702) +scale = Vector2(0.9563012, 1.0024288) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree22" parent="OnTheGround/Forest" unique_id=1379368042 instance=ExtResource("8_wf3xu")] +position = Vector2(168.12204, 6.827881) +scale = Vector2(1.1271391, 1.1321772) + +[node name="Tree23" parent="OnTheGround/Forest" unique_id=1636172786 instance=ExtResource("8_wf3xu")] +position = Vector2(67.78522, 134.8357) +scale = Vector2(0.81823385, 0.83547723) + +[node name="Tree24" parent="OnTheGround/Forest" unique_id=730022136 instance=ExtResource("8_wf3xu")] +position = Vector2(74.708595, 688.29376) +scale = Vector2(1.1668999, 1.1999096) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree25" parent="OnTheGround/Forest" unique_id=1189821976 instance=ExtResource("8_wf3xu")] +position = Vector2(-79.49761, 226.4905) +scale = Vector2(0.9658169, 0.961374) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree26" parent="OnTheGround/Forest" unique_id=64750041 instance=ExtResource("8_wf3xu")] +position = Vector2(-34.415077, 115.38558) +scale = Vector2(0.82808536, 0.83271515) + +[node name="Tree27" parent="OnTheGround/Forest" unique_id=212468057 instance=ExtResource("8_wf3xu")] +position = Vector2(116.560555, 78.0196) +scale = Vector2(0.9012564, 0.9869385) + +[node name="Tree28" parent="OnTheGround/Forest" unique_id=1538345739 instance=ExtResource("8_wf3xu")] +position = Vector2(-181.0192, 283.941) +scale = Vector2(0.95756996, 0.88214576) + +[node name="Tree29" parent="OnTheGround/Forest" unique_id=891701431 instance=ExtResource("8_wf3xu")] +position = Vector2(-90.43895, 574.3589) +scale = Vector2(0.9726088, 1.0570283) + +[node name="Tree30" parent="OnTheGround/Forest" unique_id=2047740994 instance=ExtResource("8_wf3xu")] +position = Vector2(-185.50992, 155.80466) +scale = Vector2(1.032111, 0.97163945) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree31" parent="OnTheGround/Forest" unique_id=9480760 instance=ExtResource("8_wf3xu")] +position = Vector2(-277.7337, 357.1953) +scale = Vector2(0.9582869, 0.9434441) + +[node name="Tree32" parent="OnTheGround/Forest" unique_id=1856756286 instance=ExtResource("8_wf3xu")] +position = Vector2(-351.39856, 344.07745) +scale = Vector2(1.1538796, 1.1353567) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree33" parent="OnTheGround/Forest" unique_id=600388812 instance=ExtResource("8_wf3xu")] +position = Vector2(214.44485, 188.53206) +scale = Vector2(0.9207478, 0.8952641) + +[node name="Tree34" parent="OnTheGround/Forest" unique_id=821865987 instance=ExtResource("8_wf3xu")] +position = Vector2(-27.159573, 591.47754) +scale = Vector2(0.96917874, 0.9369299) + +[node name="Tree35" parent="OnTheGround/Forest" unique_id=1275780068 instance=ExtResource("8_wf3xu")] +position = Vector2(-270.43466, 248.71716) +scale = Vector2(0.9640548, 1.0460645) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree36" parent="OnTheGround/Forest" unique_id=440892032 instance=ExtResource("8_wf3xu")] +position = Vector2(-92.34378, 659.5833) +scale = Vector2(0.93796676, 0.9271841) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree37" parent="OnTheGround/Forest" unique_id=1841828016 instance=ExtResource("8_wf3xu")] +position = Vector2(-214.66132, 419.04865) +scale = Vector2(1.2247003, 1.1738633) + +[node name="Tree38" parent="OnTheGround/Forest" unique_id=1144240430 instance=ExtResource("8_wf3xu")] +position = Vector2(355.11047, 58.41095) +scale = Vector2(0.895083, 0.9164096) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree39" parent="OnTheGround/Forest" unique_id=1063005251 instance=ExtResource("8_wf3xu")] +position = Vector2(5.070965, 39.76541) +scale = Vector2(1.0390968, 1.0358928) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree40" parent="OnTheGround/Forest" unique_id=1308645835 instance=ExtResource("8_wf3xu")] +position = Vector2(-26.155327, 745.9934) +scale = Vector2(1.2337044, 1.1915829) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree41" parent="OnTheGround/Forest" unique_id=991155525 instance=ExtResource("8_wf3xu")] +position = Vector2(79.873184, 296.65872) +scale = Vector2(1.0989505, 1.0317231) + +[node name="Tree42" parent="OnTheGround/Forest" unique_id=446376459 instance=ExtResource("8_wf3xu")] +position = Vector2(-142.97482, 55.132557) +scale = Vector2(0.927422, 0.9725865) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree43" parent="OnTheGround/Forest" unique_id=1975478779 instance=ExtResource("8_wf3xu")] +position = Vector2(-195.85342, 659.556) +scale = Vector2(1.1427575, 1.0466622) + +[node name="Tree44" parent="OnTheGround/Forest" unique_id=279827484 instance=ExtResource("8_wf3xu")] +position = Vector2(128.66284, -59.443703) +scale = Vector2(0.91728467, 0.9460088) + +[node name="Tree45" parent="OnTheGround/Forest" unique_id=235502465 instance=ExtResource("8_wf3xu")] +position = Vector2(-118.480484, 324.88174) +scale = Vector2(0.7685142, 0.8180609) + +[node name="Tree46" parent="OnTheGround/Forest" unique_id=1427831455 instance=ExtResource("8_wf3xu")] +position = Vector2(322.9853, 117.807076) +scale = Vector2(1.1229997, 1.1449735) + +[node name="Tree47" parent="OnTheGround/Forest" unique_id=74153625 instance=ExtResource("8_wf3xu")] +position = Vector2(-76.027016, 8.690777) +scale = Vector2(0.7674774, 0.8179016) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree48" parent="OnTheGround/Forest" unique_id=759054423 instance=ExtResource("8_wf3xu")] +position = Vector2(39.82016, -92.150665) +scale = Vector2(1.0178292, 0.94148904) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree49" parent="OnTheGround/Forest" unique_id=1769574704 instance=ExtResource("8_wf3xu")] +position = Vector2(7.0622826, 166.93173) +scale = Vector2(0.97077036, 0.8973149) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree50" parent="OnTheGround/Forest" unique_id=152843767 instance=ExtResource("8_wf3xu")] +position = Vector2(-45.953094, 478.95966) +scale = Vector2(0.870022, 0.8234032) + +[node name="Tree51" parent="OnTheGround/Forest" unique_id=220612863 instance=ExtResource("8_wf3xu")] +position = Vector2(60.946323, -15.504662) +scale = Vector2(0.93186307, 0.9902541) + +[node name="Tree52" parent="OnTheGround/Forest" unique_id=895740543 instance=ExtResource("8_wf3xu")] +position = Vector2(-23.830402, -50.511192) +scale = Vector2(0.8571651, 0.8783284) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree53" parent="OnTheGround/Forest" unique_id=1045232124 instance=ExtResource("8_wf3xu")] +position = Vector2(9.918652, -151.19788) +scale = Vector2(1.1731421, 1.1263747) + +[node name="Tree54" parent="OnTheGround/Forest" unique_id=1205205552 instance=ExtResource("8_wf3xu")] +position = Vector2(305.89487, -5.644348) +scale = Vector2(1.0417728, 1.044542) + +[node name="Tree55" parent="OnTheGround/Forest" unique_id=1022148744 instance=ExtResource("8_wf3xu")] +position = Vector2(75.757324, -188.97379) +scale = Vector2(1.1672541, 1.1650103) + +[node name="Tree56" parent="OnTheGround/Forest" unique_id=14323794 instance=ExtResource("8_wf3xu")] +position = Vector2(-202.1153, 533.60596) +scale = Vector2(0.9136242, 0.92887527) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree57" parent="OnTheGround/Forest" unique_id=1635512029 instance=ExtResource("8_wf3xu")] +position = Vector2(-205.91428, 216.81686) +scale = Vector2(1.0478795, 1.1543453) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree58" parent="OnTheGround/Forest" unique_id=366609224 instance=ExtResource("8_wf3xu")] +position = Vector2(-292.8856, 568.73285) +scale = Vector2(1.1434621, 1.1572684) + +[node name="Tree59" parent="OnTheGround/Forest" unique_id=55067559 instance=ExtResource("8_wf3xu")] +position = Vector2(-322.3988, 148.60309) +scale = Vector2(0.89818794, 0.9030654) + +[node name="Tree60" parent="OnTheGround/Forest" unique_id=1150815217 instance=ExtResource("8_wf3xu")] +position = Vector2(-187.83173, 737.7951) +scale = Vector2(0.90683997, 0.8570379) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree61" parent="OnTheGround/Forest" unique_id=649692674 instance=ExtResource("8_wf3xu")] +position = Vector2(380.725, -58.84449) +scale = Vector2(0.9385318, 0.9880356) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree62" parent="OnTheGround/Forest" unique_id=309644892 instance=ExtResource("8_wf3xu")] +position = Vector2(171.32494, -118.72608) +scale = Vector2(1.1071451, 1.0909004) + +[node name="Tree63" parent="OnTheGround/Forest" unique_id=1582632279 instance=ExtResource("8_wf3xu")] +position = Vector2(-418.8862, 408.59958) +scale = Vector2(0.7991217, 0.87715876) + +[node name="Tree64" parent="OnTheGround/Forest" unique_id=884647857 instance=ExtResource("8_wf3xu")] +position = Vector2(180.23717, -182.40202) +scale = Vector2(0.82154346, 0.81320745) + +[node name="Tree65" parent="OnTheGround/Forest" unique_id=2063764001 instance=ExtResource("8_wf3xu")] +position = Vector2(-362.93118, 271.29) +scale = Vector2(1.0272986, 0.9776567) + +[node name="Tree66" parent="OnTheGround/Forest" unique_id=1457424678 instance=ExtResource("8_wf3xu")] +position = Vector2(425.04858, 7.1274185) +scale = Vector2(0.96697646, 1.0103022) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree67" parent="OnTheGround/Forest" unique_id=1728009974 instance=ExtResource("8_wf3xu")] +position = Vector2(-444.27136, 204.37473) +scale = Vector2(0.75371987, 0.8097152) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree68" parent="OnTheGround/Forest" unique_id=1838704842 instance=ExtResource("8_wf3xu")] +position = Vector2(-285.94995, 445.6553) +scale = Vector2(0.8548692, 0.8568398) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree69" parent="OnTheGround/Forest" unique_id=990846323 instance=ExtResource("8_wf3xu")] +position = Vector2(274.01288, -83.702934) +scale = Vector2(1.0274541, 1.0489239) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree70" parent="OnTheGround/Forest" unique_id=261407298 instance=ExtResource("8_wf3xu")] +position = Vector2(-461.54102, 339.81036) +scale = Vector2(1.1469421, 1.1706853) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree71" parent="OnTheGround/Forest" unique_id=138570486 instance=ExtResource("8_wf3xu")] +position = Vector2(-160.01115, 583.8489) +scale = Vector2(0.91745675, 0.85779595) + +[node name="Tree72" parent="OnTheGround/Forest" unique_id=954196433 instance=ExtResource("8_wf3xu")] +position = Vector2(247.73032, -166.29639) +scale = Vector2(0.81203824, 0.89562) + +[node name="Tree73" parent="OnTheGround/Forest" unique_id=596357014 instance=ExtResource("8_wf3xu")] +position = Vector2(-278.59, 662.2422) +scale = Vector2(0.9450697, 1.0143555) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree74" parent="OnTheGround/Forest" unique_id=1988062860 instance=ExtResource("8_wf3xu")] +position = Vector2(-98.63568, 157.7347) +scale = Vector2(1.0096645, 1.1201376) + +[node name="Tree75" parent="OnTheGround/Forest" unique_id=515848014 instance=ExtResource("8_wf3xu")] +position = Vector2(-266.21625, 78.97592) +scale = Vector2(0.8586678, 0.8841406) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree76" parent="OnTheGround/Forest" unique_id=631259696 instance=ExtResource("8_wf3xu")] +position = Vector2(-527.8149, 286.46637) +scale = Vector2(0.8585339, 0.9261079) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree77" parent="OnTheGround/Forest" unique_id=750632739 instance=ExtResource("8_wf3xu")] +position = Vector2(-22.114273, -258.8606) +scale = Vector2(0.89798605, 0.81719685) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree78" parent="OnTheGround/Forest" unique_id=1704372563 instance=ExtResource("8_wf3xu")] +position = Vector2(-263.44064, 751.79065) +scale = Vector2(0.9311227, 0.96219677) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree79" parent="OnTheGround/Forest" unique_id=222048213 instance=ExtResource("8_wf3xu")] +position = Vector2(-250.0026, 145.83836) +scale = Vector2(0.9515742, 1.0499141) + +[node name="Tree80" parent="OnTheGround/Forest" unique_id=2100744774 instance=ExtResource("8_wf3xu")] +position = Vector2(495.8147, -49.062004) +scale = Vector2(0.8358099, 0.8061565) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree81" parent="OnTheGround/Forest" unique_id=823708176 instance=ExtResource("8_wf3xu")] +position = Vector2(-324.7849, 51.871002) +scale = Vector2(1.1446805, 1.106977) + +[node name="Tree82" parent="OnTheGround/Forest" unique_id=1754845513 instance=ExtResource("8_wf3xu")] +position = Vector2(365.53116, -137.98438) +scale = Vector2(1.1384363, 1.057473) + +[node name="Tree83" parent="OnTheGround/Forest" unique_id=849465906 instance=ExtResource("8_wf3xu")] +position = Vector2(233.5817, -31.330124) +scale = Vector2(0.97922564, 0.9854519) + +[node name="Tree84" parent="OnTheGround/Forest" unique_id=1104883023 instance=ExtResource("8_wf3xu")] +position = Vector2(433.7146, -98.58522) +scale = Vector2(0.8261287, 0.8644027) + +[node name="Tree85" parent="OnTheGround/Forest" unique_id=386394853 instance=ExtResource("8_wf3xu")] +position = Vector2(59.94814, -252.675) +scale = Vector2(1.0823563, 0.9916571) + +[node name="Tree86" parent="OnTheGround/Forest" unique_id=2147367693 instance=ExtResource("8_wf3xu")] +position = Vector2(-389.206, 508.98914) +scale = Vector2(0.90620834, 0.99545646) + +[node name="Tree87" parent="OnTheGround/Forest" unique_id=1146670212 instance=ExtResource("8_wf3xu")] +position = Vector2(-534.2535, 412.56204) +scale = Vector2(0.8377195, 0.9233083) + +[node name="Tree88" parent="OnTheGround/Forest" unique_id=49564092 instance=ExtResource("8_wf3xu")] +position = Vector2(401.32062, -250.8092) +scale = Vector2(0.99669576, 1.0820838) + +[node name="Tree89" parent="OnTheGround/Forest" unique_id=1725222314 instance=ExtResource("8_wf3xu")] +position = Vector2(135.03752, -263.1577) +scale = Vector2(0.857798, 0.86777496) + +[node name="Tree90" parent="OnTheGround/Forest" unique_id=1782257323 instance=ExtResource("8_wf3xu")] +position = Vector2(-581.9451, 332.0626) +scale = Vector2(1.0366223, 0.9742582) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree91" parent="OnTheGround/Forest" unique_id=1587296835 instance=ExtResource("8_wf3xu")] +position = Vector2(-85.96735, -71.377914) +scale = Vector2(1.1295742, 1.1949909) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree92" parent="OnTheGround/Forest" unique_id=892089532 instance=ExtResource("8_wf3xu")] +position = Vector2(334.57516, -256.3346) +scale = Vector2(1.1423002, 1.1248479) + +[node name="Tree93" parent="OnTheGround/Forest" unique_id=1948339178 instance=ExtResource("8_wf3xu")] +position = Vector2(312.25568, -181.64807) +scale = Vector2(0.8461607, 0.93657905) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree94" parent="OnTheGround/Forest" unique_id=1731158593 instance=ExtResource("8_wf3xu")] +position = Vector2(497.98352, -136.56137) +scale = Vector2(1.0967693, 1.012975) + +[node name="Tree95" parent="OnTheGround/Forest" unique_id=109977200 instance=ExtResource("8_wf3xu")] +position = Vector2(103.00426, -336.27405) +scale = Vector2(0.8350884, 0.8903091) + +[node name="Tree96" parent="OnTheGround/Forest" unique_id=208421717 instance=ExtResource("8_wf3xu")] +position = Vector2(-326.96594, 213.61023) +scale = Vector2(1.1150615, 1.0420685) + +[node name="Tree97" parent="OnTheGround/Forest" unique_id=733779035 instance=ExtResource("8_wf3xu")] +position = Vector2(412.28925, -350.78632) +scale = Vector2(1.2688918, 1.1845676) + +[node name="Tree98" parent="OnTheGround/Forest" unique_id=332676332 instance=ExtResource("8_wf3xu")] +position = Vector2(-476.12762, 489.30743) +scale = Vector2(0.9826964, 0.906188) + +[node name="Tree99" parent="OnTheGround/Forest" unique_id=1571421456 instance=ExtResource("8_wf3xu")] +position = Vector2(-512.5383, 189.93732) +scale = Vector2(0.91651314, 0.8744988) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree100" parent="OnTheGround/Forest" unique_id=1604869717 instance=ExtResource("8_wf3xu")] +position = Vector2(-351.7739, 440.8451) +scale = Vector2(0.81943166, 0.8800868) + +[node name="Tree101" parent="OnTheGround/Forest" unique_id=1666292434 instance=ExtResource("8_wf3xu")] +position = Vector2(-396.96786, 142.11292) +scale = Vector2(1.125646, 1.1989853) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree102" parent="OnTheGround/Forest" unique_id=311037670 instance=ExtResource("8_wf3xu")] +position = Vector2(333.3518, -368.10486) +scale = Vector2(0.9449701, 0.892299) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree103" parent="OnTheGround/Forest" unique_id=947464191 instance=ExtResource("8_wf3xu")] +position = Vector2(260.72794, -310.34375) +scale = Vector2(1.2298442, 1.1787311) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree104" parent="OnTheGround/Forest" unique_id=27364574 instance=ExtResource("8_wf3xu")] +position = Vector2(20.941502, -335.56656) +scale = Vector2(0.90930754, 0.85034454) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree105" parent="OnTheGround/Forest" unique_id=1856425434 instance=ExtResource("8_wf3xu")] +position = Vector2(603.07166, -73.249176) +scale = Vector2(0.8714032, 0.86211896) + +[node name="Tree106" parent="OnTheGround/Forest" unique_id=2013723522 instance=ExtResource("8_wf3xu")] +position = Vector2(574.31323, -142.58926) +scale = Vector2(0.85676587, 0.8678462) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree107" parent="OnTheGround/Forest" unique_id=951914624 instance=ExtResource("8_wf3xu")] +position = Vector2(-186.35658, 358.83014) +scale = Vector2(0.9792291, 0.8941752) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree108" parent="OnTheGround/Forest" unique_id=1222079579 instance=ExtResource("8_wf3xu")] +position = Vector2(-546.0127, 101.143135) +scale = Vector2(0.9981568, 0.90925735) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree109" parent="OnTheGround/Forest" unique_id=767882352 instance=ExtResource("8_wf3xu")] +position = Vector2(539.25024, -244.28662) +scale = Vector2(1.0281032, 1.0944649) + +[node name="Tree110" parent="OnTheGround/Forest" unique_id=645536260 instance=ExtResource("8_wf3xu")] +position = Vector2(-86.87651, -224.37405) +scale = Vector2(0.9074556, 0.9443834) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree111" parent="OnTheGround/Forest" unique_id=829356166 instance=ExtResource("8_wf3xu")] +position = Vector2(-184.91847, -273.11914) +scale = Vector2(0.8990924, 0.9142981) + +[node name="Tree112" parent="OnTheGround/Forest" unique_id=1993988493 instance=ExtResource("8_wf3xu")] +position = Vector2(643.96674, -258.4129) +scale = Vector2(0.8215291, 0.8027151) + +[node name="Tree113" parent="OnTheGround/Forest" unique_id=1479674559 instance=ExtResource("8_wf3xu")] +position = Vector2(76.7139, -423.16998) +scale = Vector2(1.1777996, 1.1256871) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree114" parent="OnTheGround/Forest" unique_id=1011347132 instance=ExtResource("8_wf3xu")] +position = Vector2(198.58011, -284.5678) +scale = Vector2(0.9371419, 0.9688509) + +[node name="Tree115" parent="OnTheGround/Forest" unique_id=814897081 instance=ExtResource("8_wf3xu")] +position = Vector2(472.22214, -202.7474) +scale = Vector2(0.8571571, 0.94294554) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree116" parent="OnTheGround/Forest" unique_id=497419734 instance=ExtResource("8_wf3xu")] +position = Vector2(-462.00177, 267.10364) +scale = Vector2(0.8896539, 0.9732439) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree117" parent="OnTheGround/Forest" unique_id=1199356833 instance=ExtResource("8_wf3xu")] +position = Vector2(-271.12622, -35.321823) +scale = Vector2(1.1889899, 1.1575454) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree118" parent="OnTheGround/Forest" unique_id=1725549707 instance=ExtResource("8_wf3xu")] +position = Vector2(-617.8349, 219.4097) +scale = Vector2(0.90760726, 0.901122) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree119" parent="OnTheGround/Forest" unique_id=455065645 instance=ExtResource("8_wf3xu")] +position = Vector2(-105.94142, -302.63907) +scale = Vector2(1.1992774, 1.1601368) + +[node name="Tree120" parent="OnTheGround/Forest" unique_id=1540098391 instance=ExtResource("8_wf3xu")] +position = Vector2(-215.68265, 14.714752) +scale = Vector2(0.7661872, 0.82548493) + +[node name="Tree121" parent="OnTheGround/Forest" unique_id=411588036 instance=ExtResource("8_wf3xu")] +position = Vector2(-557.12524, 499.47577) +scale = Vector2(1.0820596, 1.1397822) + +[node name="Tree122" parent="OnTheGround/Forest" unique_id=308302336 instance=ExtResource("8_wf3xu")] +position = Vector2(294.22266, -468.33685) +scale = Vector2(1.019808, 1.1055074) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree123" parent="OnTheGround/Forest" unique_id=1295176787 instance=ExtResource("8_wf3xu")] +position = Vector2(-389.76965, 619.55023) +scale = Vector2(1.1142632, 1.1170062) + +[node name="Tree124" parent="OnTheGround/Forest" unique_id=1337864966 instance=ExtResource("8_wf3xu")] +position = Vector2(651.5775, -131.62259) +scale = Vector2(0.863071, 0.8595984) + +[node name="Tree125" parent="OnTheGround/Forest" unique_id=1199214843 instance=ExtResource("8_wf3xu")] +position = Vector2(-668.4819, 314.50897) +scale = Vector2(1.1995705, 1.1782646) + +[node name="Tree126" parent="OnTheGround/Forest" unique_id=1671045080 instance=ExtResource("8_wf3xu")] +position = Vector2(-53.648052, -391.9837) +scale = Vector2(1.0760199, 1.0080653) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree127" parent="OnTheGround/Forest" unique_id=1720133905 instance=ExtResource("8_wf3xu")] +position = Vector2(259.94196, -229.60808) +scale = Vector2(0.85396445, 0.9424387) + +[node name="Tree128" parent="OnTheGround/Forest" unique_id=1688357768 instance=ExtResource("8_wf3xu")] +position = Vector2(-598.37537, 410.7186) +scale = Vector2(1.075081, 1.1522628) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree129" parent="OnTheGround/Forest" unique_id=2019734088 instance=ExtResource("8_wf3xu")] +position = Vector2(-112.52488, 746.2476) +scale = Vector2(1.0777577, 0.9815604) + +[node name="Tree130" parent="OnTheGround/Forest" unique_id=1620455018 instance=ExtResource("8_wf3xu")] +position = Vector2(219.64609, -477.14438) +scale = Vector2(0.97874707, 1.0109786) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree131" parent="OnTheGround/Forest" unique_id=598611982 instance=ExtResource("8_wf3xu")] +position = Vector2(-631.3036, 495.33655) +scale = Vector2(0.940018, 0.967164) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree132" parent="OnTheGround/Forest" unique_id=1051612442 instance=ExtResource("8_wf3xu")] +position = Vector2(202.7413, -357.45203) +scale = Vector2(0.9685279, 1.0547076) + +[node name="Tree133" parent="OnTheGround/Forest" unique_id=975836812 instance=ExtResource("8_wf3xu")] +position = Vector2(-487.37463, 558.6925) +scale = Vector2(0.88220054, 0.9762977) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree134" parent="OnTheGround/Forest" unique_id=682232896 instance=ExtResource("8_wf3xu")] +position = Vector2(603.9319, -344.06586) +scale = Vector2(1.0129429, 0.99818194) + +[node name="Tree135" parent="OnTheGround/Forest" unique_id=340209447 instance=ExtResource("8_wf3xu")] +position = Vector2(-452.19653, 43.145596) +scale = Vector2(1.0163127, 1.055641) + +[node name="Tree136" parent="OnTheGround/Forest" unique_id=34175715 instance=ExtResource("8_wf3xu")] +position = Vector2(-184.06267, -155.8313) +scale = Vector2(1.0723861, 1.0325391) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree137" parent="OnTheGround/Forest" unique_id=390051385 instance=ExtResource("8_wf3xu")] +position = Vector2(620.1231, -189.00049) +scale = Vector2(1.1427251, 1.1419003) + +[node name="Tree138" parent="OnTheGround/Forest" unique_id=2086202020 instance=ExtResource("8_wf3xu")] +position = Vector2(-595.51434, 552.19385) +scale = Vector2(0.7385148, 0.80113375) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree139" parent="OnTheGround/Forest" unique_id=2075789172 instance=ExtResource("8_wf3xu")] +position = Vector2(-412.5889, -68.88965) +scale = Vector2(0.8093304, 0.85747534) + +[node name="Tree140" parent="OnTheGround/Forest" unique_id=763920729 instance=ExtResource("8_wf3xu")] +position = Vector2(468.95737, -278.5318) +scale = Vector2(0.76800364, 0.80820346) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree141" parent="OnTheGround/Forest" unique_id=742426867 instance=ExtResource("8_wf3xu")] +position = Vector2(-552.4863, 619.2237) +scale = Vector2(1.0980862, 1.0047947) + +[node name="Tree142" parent="OnTheGround/Forest" unique_id=214794748 instance=ExtResource("8_wf3xu")] +position = Vector2(461.70886, -397.9583) +scale = Vector2(0.8720614, 0.8312573) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree143" parent="OnTheGround/Forest" unique_id=441180356 instance=ExtResource("8_wf3xu")] +position = Vector2(-486.3441, -93.1316) +scale = Vector2(0.8146066, 0.8164426) + +[node name="Tree144" parent="OnTheGround/Forest" unique_id=1243077737 instance=ExtResource("8_wf3xu")] +position = Vector2(-687.6066, 233.17163) +scale = Vector2(0.9941778, 0.981743) + +[node name="Tree145" parent="OnTheGround/Forest" unique_id=1812020653 instance=ExtResource("8_wf3xu")] +position = Vector2(-199.13269, -399.7182) +scale = Vector2(1.0176138, 1.0668253) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree146" parent="OnTheGround/Forest" unique_id=1613851828 instance=ExtResource("8_wf3xu")] +position = Vector2(-351.91895, -113.96127) +scale = Vector2(0.902344, 0.84449595) + +[node name="Tree147" parent="OnTheGround/Forest" unique_id=1992823677 instance=ExtResource("8_wf3xu")] +position = Vector2(-461.91858, 108.52306) +scale = Vector2(1.0462632, 1.0540217) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree148" parent="OnTheGround/Forest" unique_id=513534376 instance=ExtResource("8_wf3xu")] +position = Vector2(-631.00024, 621.80365) +scale = Vector2(0.83060926, 0.85345364) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree149" parent="OnTheGround/Forest" unique_id=1316426674 instance=ExtResource("8_wf3xu")] +position = Vector2(-345.19022, -13.977707) +scale = Vector2(1.1927869, 1.1672074) + +[node name="Tree150" parent="OnTheGround/Forest" unique_id=1821005913 instance=ExtResource("8_wf3xu")] +position = Vector2(-338.42438, 711.8143) +scale = Vector2(1.1184118, 1.1729645) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree151" parent="OnTheGround/Forest" unique_id=104893571 instance=ExtResource("8_wf3xu")] +position = Vector2(-677.13885, 440.80072) +scale = Vector2(1.1143503, 1.1203237) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree152" parent="OnTheGround/Forest" unique_id=182710121 instance=ExtResource("8_wf3xu")] +position = Vector2(-169.89606, -50.280895) +scale = Vector2(1.0982271, 1.1250509) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree153" parent="OnTheGround/Forest" unique_id=1849567468 instance=ExtResource("8_wf3xu")] +position = Vector2(566.902, -450.43793) +scale = Vector2(0.8948408, 0.897701) + +[node name="Tree154" parent="OnTheGround/Forest" unique_id=1836460587 instance=ExtResource("8_wf3xu")] +position = Vector2(-273.02576, -99.58154) +scale = Vector2(0.97944444, 0.9855038) + +[node name="Tree155" parent="OnTheGround/Forest" unique_id=259451570 instance=ExtResource("8_wf3xu")] +position = Vector2(750.8537, -153.99113) +scale = Vector2(0.95929855, 0.91890603) + +[node name="Tree156" parent="OnTheGround/Forest" unique_id=1388723040 instance=ExtResource("8_wf3xu")] +position = Vector2(-151.3552, -214.63898) +scale = Vector2(0.90679353, 1.0050113) + +[node name="Tree157" parent="OnTheGround/Forest" unique_id=18434318 instance=ExtResource("8_wf3xu")] +position = Vector2(240.55058, -414.48593) +scale = Vector2(1.220971, 1.1550579) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree158" parent="OnTheGround/Forest" unique_id=1477616646 instance=ExtResource("8_wf3xu")] +position = Vector2(-119.62602, -127.805435) +scale = Vector2(0.9438274, 0.96571755) + +[node name="Tree159" parent="OnTheGround/Forest" unique_id=1739660002 instance=ExtResource("8_wf3xu")] +position = Vector2(-596.52625, 691.70245) +scale = Vector2(0.89595616, 0.8772654) + +[node name="Tree160" parent="OnTheGround/Forest" unique_id=866252035 instance=ExtResource("8_wf3xu")] +position = Vector2(-141.20627, 208.77946) +scale = Vector2(0.9096695, 0.8547239) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree161" parent="OnTheGround/Forest" unique_id=2099613312 instance=ExtResource("8_wf3xu")] +position = Vector2(769.8971, -86.13837) +scale = Vector2(1.3158695, 1.1984642) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree162" parent="OnTheGround/Forest" unique_id=1757104172 instance=ExtResource("8_wf3xu")] +position = Vector2(-630.6822, 110.2232) +scale = Vector2(0.7982997, 0.82488334) + +[node name="Tree163" parent="OnTheGround/Forest" unique_id=125347909 instance=ExtResource("8_wf3xu")] +position = Vector2(-273.3429, -185.05942) +scale = Vector2(1.0695692, 1.0565602) + +[node name="Tree164" parent="OnTheGround/Forest" unique_id=1876202393 instance=ExtResource("8_wf3xu")] +position = Vector2(675.39136, -65.34794) +scale = Vector2(0.9937007, 1.04371) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree165" parent="OnTheGround/Forest" unique_id=782272557 instance=ExtResource("8_wf3xu")] +position = Vector2(540.7533, -383.97708) +scale = Vector2(0.90347403, 0.9234997) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree166" parent="OnTheGround/Forest" unique_id=781896459 instance=ExtResource("8_wf3xu")] +position = Vector2(-134.33656, -383.61346) +scale = Vector2(1.0558497, 1.0089417) + +[node name="Tree167" parent="OnTheGround/Forest" unique_id=1878648539 instance=ExtResource("8_wf3xu")] +position = Vector2(-512.7551, -9.632557) +scale = Vector2(1.0456179, 1.1539563) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree168" parent="OnTheGround/Forest" unique_id=295699534 instance=ExtResource("8_wf3xu")] +position = Vector2(-226.40677, -323.12476) +scale = Vector2(1.1661963, 1.1495479) + +[node name="Tree169" parent="OnTheGround/Forest" unique_id=1113283464 instance=ExtResource("8_wf3xu")] +position = Vector2(-671.32794, 561.1299) +scale = Vector2(0.88806766, 0.9821287) + +[node name="Tree170" parent="OnTheGround/Forest" unique_id=1441880985 instance=ExtResource("8_wf3xu")] +position = Vector2(-299.95956, -317.12558) +scale = Vector2(1.1327151, 1.065234) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree171" parent="OnTheGround/Forest" unique_id=226821788 instance=ExtResource("8_wf3xu")] +position = Vector2(502.82565, -456.1471) +scale = Vector2(0.8485021, 0.92154175) + +[node name="Tree172" parent="OnTheGround/Forest" unique_id=966261072 instance=ExtResource("8_wf3xu")] +position = Vector2(654.1731, -404.06622) +scale = Vector2(0.78633916, 0.85219073) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree173" parent="OnTheGround/Forest" unique_id=818056466 instance=ExtResource("8_wf3xu")] +position = Vector2(-475.96533, 691.2864) +scale = Vector2(0.79788584, 0.84659505) + +[node name="Tree174" parent="OnTheGround/Forest" unique_id=1265301614 instance=ExtResource("8_wf3xu")] +position = Vector2(-406.00262, 715.1411) +scale = Vector2(0.9688659, 0.9333527) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree175" parent="OnTheGround/Forest" unique_id=72797268 instance=ExtResource("8_wf3xu")] +position = Vector2(688.5329, -186.75134) +scale = Vector2(1.2070786, 1.1146792) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree176" parent="OnTheGround/Forest" unique_id=1880416197 instance=ExtResource("8_wf3xu")] +position = Vector2(728.46814, -332.58273) +scale = Vector2(1.2291057, 1.1936431) + +[node name="Tree177" parent="OnTheGround/Forest" unique_id=2030712630 instance=ExtResource("8_wf3xu")] +position = Vector2(526.6417, -307.80115) +scale = Vector2(0.9492607, 1.0339519) + +[node name="Tree178" parent="OnTheGround/Forest" unique_id=781752642 instance=ExtResource("8_wf3xu")] +position = Vector2(-437.49133, -148.62668) +scale = Vector2(1.0368273, 0.9668646) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree179" parent="OnTheGround/Forest" unique_id=30756480 instance=ExtResource("8_wf3xu")] +position = Vector2(-670.47345, 686.8903) +scale = Vector2(1.0700977, 1.0487274) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree180" parent="OnTheGround/Forest" unique_id=870859365 instance=ExtResource("8_wf3xu")] +position = Vector2(-629.5842, 748.4637) +scale = Vector2(0.8261825, 0.8998191) + +[node name="Tree181" parent="OnTheGround/Forest" unique_id=1189377928 instance=ExtResource("8_wf3xu")] +position = Vector2(-401.10175, -336.8334) +scale = Vector2(1.0297166, 0.9734338) + +[node name="Tree182" parent="OnTheGround/Forest" unique_id=1946223463 instance=ExtResource("8_wf3xu")] +position = Vector2(719.92096, -396.12836) +scale = Vector2(0.9862414, 1.0057857) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree183" parent="OnTheGround/Forest" unique_id=1530924582 instance=ExtResource("8_wf3xu")] +position = Vector2(100.63832, -518.45135) +scale = Vector2(1.1784886, 1.0957565) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree184" parent="OnTheGround/Forest" unique_id=7904314 instance=ExtResource("8_wf3xu")] +position = Vector2(-522.2278, -188.22205) +scale = Vector2(0.85227233, 0.905486) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree185" parent="OnTheGround/Forest" unique_id=128472595 instance=ExtResource("8_wf3xu")] +position = Vector2(729.64276, -506.72482) +scale = Vector2(0.9152674, 0.9858425) + +[node name="Tree186" parent="OnTheGround/Forest" unique_id=693490671 instance=ExtResource("8_wf3xu")] +position = Vector2(322.66785, -538.66016) +scale = Vector2(1.1074641, 1.0069426) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree187" parent="OnTheGround/Forest" unique_id=1346874326 instance=ExtResource("8_wf3xu")] +position = Vector2(-585.3307, -219.09145) +scale = Vector2(1.0295151, 0.99406195) + +[node name="Tree188" parent="OnTheGround/Forest" unique_id=77045834 instance=ExtResource("8_wf3xu")] +position = Vector2(596.1077, -532.80975) +scale = Vector2(0.9216194, 0.9684026) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree189" parent="OnTheGround/Forest" unique_id=937120534 instance=ExtResource("8_wf3xu")] +position = Vector2(-608.382, -133.14851) +scale = Vector2(1.149684, 1.1787698) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree190" parent="OnTheGround/Forest" unique_id=2022245220 instance=ExtResource("8_wf3xu")] +position = Vector2(756.81177, -227.45096) +scale = Vector2(1.2827321, 1.1835545) + +[node name="Tree191" parent="OnTheGround/Forest" unique_id=2134702574 instance=ExtResource("8_wf3xu")] +position = Vector2(15.471199, -501.30496) +scale = Vector2(1.0261406, 0.94020957) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree192" parent="OnTheGround/Forest" unique_id=492248989 instance=ExtResource("8_wf3xu")] +position = Vector2(-211.22675, -485.86682) +scale = Vector2(0.99489295, 1.0568705) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree193" parent="OnTheGround/Forest" unique_id=176410012 instance=ExtResource("8_wf3xu")] +position = Vector2(353.38336, -432.31927) +scale = Vector2(0.90520775, 0.9965668) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree194" parent="OnTheGround/Forest" unique_id=1771229748 instance=ExtResource("8_wf3xu")] +position = Vector2(522.8147, -535.5198) +scale = Vector2(1.0338321, 1.0313324) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree195" parent="OnTheGround/Forest" unique_id=1684226504 instance=ExtResource("8_wf3xu")] +position = Vector2(-408.6428, -238.0198) +scale = Vector2(1.0888776, 1.0785131) + +[node name="Tree196" parent="OnTheGround/Forest" unique_id=2047516635 instance=ExtResource("8_wf3xu")] +position = Vector2(-305.26996, -243.05417) +scale = Vector2(1.2391323, 1.1914469) + +[node name="Tree197" parent="OnTheGround/Forest" unique_id=515116783 instance=ExtResource("8_wf3xu")] +position = Vector2(-96.83468, -451.60532) +scale = Vector2(1.0708807, 1.159127) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree198" parent="OnTheGround/Forest" unique_id=2105195054 instance=ExtResource("8_wf3xu")] +position = Vector2(-496.83014, -273.5267) +scale = Vector2(1.2510928, 1.1596944) + +[node name="Tree199" parent="OnTheGround/Forest" unique_id=604796393 instance=ExtResource("8_wf3xu")] +position = Vector2(-668.0891, -53.726402) +scale = Vector2(1.0553576, 1.0350976) + +[node name="Tree200" parent="OnTheGround/Forest" unique_id=740020132 instance=ExtResource("8_wf3xu")] +position = Vector2(405.601, -469.87534) +scale = Vector2(1.0313706, 0.9694095) + +[node name="Tree201" parent="OnTheGround/Forest" unique_id=1345033568 instance=ExtResource("8_wf3xu")] +position = Vector2(-453.3156, 759.4941) +scale = Vector2(1.0077493, 1.0202405) + +[node name="Tree202" parent="OnTheGround/Forest" unique_id=1969690216 instance=ExtResource("8_wf3xu")] +position = Vector2(-632.8001, 31.06321) +scale = Vector2(1.2411863, 1.1869558) + +[node name="Tree203" parent="OnTheGround/Forest" unique_id=203590542 instance=ExtResource("8_wf3xu")] +position = Vector2(-589.71686, -48.409924) +scale = Vector2(0.8063733, 0.8789062) + +[node name="Tree204" parent="OnTheGround/Forest" unique_id=1488433913 instance=ExtResource("8_wf3xu")] +position = Vector2(142.87549, -461.5311) +scale = Vector2(1.1073239, 1.087258) + +[node name="Tree205" parent="OnTheGround/Forest" unique_id=991590212 instance=ExtResource("8_wf3xu")] +position = Vector2(676.5184, -467.9227) +scale = Vector2(1.133001, 1.1953417) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree206" parent="OnTheGround/Forest" unique_id=803995922 instance=ExtResource("8_wf3xu")] +position = Vector2(817.5319, -262.53766) +scale = Vector2(0.99754775, 0.95513755) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree207" parent="OnTheGround/Forest" unique_id=1187695206 instance=ExtResource("8_wf3xu")] +position = Vector2(-581.39606, 165.1803) +scale = Vector2(0.93037707, 0.8581593) + +[node name="Tree208" parent="OnTheGround/Forest" unique_id=74133213 instance=ExtResource("8_wf3xu")] +position = Vector2(-349.23694, -396.87885) +scale = Vector2(0.934172, 0.90064317) + +[node name="Tree209" parent="OnTheGround/Forest" unique_id=2129149018 instance=ExtResource("8_wf3xu")] +position = Vector2(-663.65924, 172.18913) +scale = Vector2(0.95953095, 0.87865) + +[node name="Tree210" parent="OnTheGround/Forest" unique_id=62538435 instance=ExtResource("8_wf3xu")] +position = Vector2(-554.1334, 759.2294) +scale = Vector2(1.2580223, 1.157168) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree211" parent="OnTheGround/Forest" unique_id=1013501789 instance=ExtResource("8_wf3xu")] +position = Vector2(243.00052, -547.01337) +scale = Vector2(0.8848527, 0.8896901) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree212" parent="OnTheGround/Forest" unique_id=708536640 instance=ExtResource("8_wf3xu")] +position = Vector2(-556.68896, -308.53882) +scale = Vector2(1.0910997, 1.0616959) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree213" parent="OnTheGround/Forest" unique_id=1707341273 instance=ExtResource("8_wf3xu")] +position = Vector2(855.88135, -317.4597) +scale = Vector2(0.84241873, 0.8401524) + +[node name="Tree214" parent="OnTheGround/Forest" unique_id=841073882 instance=ExtResource("8_wf3xu")] +position = Vector2(-361.89978, -178.61426) +scale = Vector2(0.99084103, 1.0101146) + +[node name="Tree215" parent="OnTheGround/Forest" unique_id=1383054240 instance=ExtResource("8_wf3xu")] +position = Vector2(-269.2874, -531.87695) +scale = Vector2(0.8193743, 0.90066326) + +[node name="Tree216" parent="OnTheGround/Forest" unique_id=1063096009 instance=ExtResource("8_wf3xu")] +position = Vector2(842.5336, -176.46814) +scale = Vector2(0.9066396, 0.845057) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree217" parent="OnTheGround/Forest" unique_id=207156799 instance=ExtResource("8_wf3xu")] +position = Vector2(-270.18048, -384.1679) +scale = Vector2(1.232867, 1.1970339) + +[node name="Tree218" parent="OnTheGround/Forest" unique_id=929532874 instance=ExtResource("8_wf3xu")] +position = Vector2(921.64606, -256.80536) +scale = Vector2(1.049139, 1.0854913) + +[node name="Tree219" parent="OnTheGround/Forest" unique_id=22143594 instance=ExtResource("8_wf3xu")] +position = Vector2(925.3287, -115.52118) +scale = Vector2(0.8271776, 0.8479477) + +[node name="Tree220" parent="OnTheGround/Forest" unique_id=1551627728 instance=ExtResource("8_wf3xu")] +position = Vector2(-47.843044, -534.69836) +scale = Vector2(1.1994805, 1.0956546) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree221" parent="OnTheGround/Forest" unique_id=943155822 instance=ExtResource("8_wf3xu")] +position = Vector2(950.9636, -340.28418) +scale = Vector2(0.87250465, 0.834189) + +[node name="Tree222" parent="OnTheGround/Forest" unique_id=475031310 instance=ExtResource("8_wf3xu")] +position = Vector2(1008.71606, -222.98172) +scale = Vector2(1.1371315, 1.0961616) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree223" parent="OnTheGround/Forest" unique_id=508301765 instance=ExtResource("8_wf3xu")] +position = Vector2(1016.4899, -337.31564) +scale = Vector2(0.84700555, 0.8721268) + +[node name="Tree224" parent="OnTheGround/Forest" unique_id=726668181 instance=ExtResource("8_wf3xu")] +position = Vector2(989.0013, -153.89145) +scale = Vector2(1.0092157, 1.0371686) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree225" parent="OnTheGround/Forest" unique_id=1658726726 instance=ExtResource("8_wf3xu")] +position = Vector2(917.371, -183.27663) +scale = Vector2(1.0834669, 1.0709885) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree226" parent="OnTheGround/Forest" unique_id=1159955275 instance=ExtResource("8_wf3xu")] +position = Vector2(833.3272, -103.399704) +scale = Vector2(0.8712958, 0.9261085) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree227" parent="OnTheGround/Forest" unique_id=1960095263 instance=ExtResource("8_wf3xu")] +position = Vector2(-171.52907, -548.5113) +scale = Vector2(0.75692636, 0.8061233) + +[node name="Tree228" parent="OnTheGround/Forest" unique_id=1172380172 instance=ExtResource("8_wf3xu")] +position = Vector2(961.79, -59.025703) +scale = Vector2(0.87623537, 0.96945286) + +[node name="Tree229" parent="OnTheGround/Forest" unique_id=1539138073 instance=ExtResource("8_wf3xu")] +position = Vector2(9.477337, -422.0296) +scale = Vector2(1.049535, 0.99829936) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree230" parent="OnTheGround/Forest" unique_id=1669642603 instance=ExtResource("8_wf3xu")] +position = Vector2(442.0028, -534.6733) +scale = Vector2(0.82936585, 0.8170813) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree231" parent="OnTheGround/Forest" unique_id=1948468588 instance=ExtResource("8_wf3xu")] +position = Vector2(942.9312, -404.19263) +scale = Vector2(0.76542085, 0.8004907) + +[node name="Tree232" parent="OnTheGround/Forest" unique_id=393556420 instance=ExtResource("8_wf3xu")] +position = Vector2(788.1598, -406.78152) +scale = Vector2(1.2448015, 1.1447961) + +[node name="Tree233" parent="OnTheGround/Forest" unique_id=1988036353 instance=ExtResource("8_wf3xu")] +position = Vector2(1077.4783, -243.40602) +scale = Vector2(1.0695744, 1.1140394) + +[node name="Tree234" parent="OnTheGround/Forest" unique_id=1474856002 instance=ExtResource("8_wf3xu")] +position = Vector2(-647.0631, -189.04892) +scale = Vector2(1.0959946, 1.0924472) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree235" parent="OnTheGround/Forest" unique_id=287244394 instance=ExtResource("8_wf3xu")] +position = Vector2(-673.7348, -117.76715) +scale = Vector2(1.168461, 1.1563478) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree236" parent="OnTheGround/Forest" unique_id=1237031685 instance=ExtResource("8_wf3xu")] +position = Vector2(1158.9786, -339.66602) +scale = Vector2(0.98597157, 0.9434187) + +[node name="Tree237" parent="OnTheGround/Forest" unique_id=832783810 instance=ExtResource("8_wf3xu")] +position = Vector2(794.49036, -498.60767) +scale = Vector2(1.0614867, 1.1545229) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree238" parent="OnTheGround/Forest" unique_id=1606613004 instance=ExtResource("8_wf3xu")] +position = Vector2(862.6572, -473.37335) +scale = Vector2(1.0972812, 1.1029865) + +[node name="Tree239" parent="OnTheGround/Forest" unique_id=9731595 instance=ExtResource("8_wf3xu")] +position = Vector2(-475.60898, -412.5897) +scale = Vector2(1.1149038, 1.1278021) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree240" parent="OnTheGround/Forest" unique_id=998641527 instance=ExtResource("8_wf3xu")] +position = Vector2(-405.37927, -433.0971) +scale = Vector2(1.2168943, 1.1393421) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree241" parent="OnTheGround/Forest" unique_id=1000360028 instance=ExtResource("8_wf3xu")] +position = Vector2(-492.65405, -337.94128) +scale = Vector2(1.1297151, 1.1880368) + +[node name="Tree242" parent="OnTheGround/Forest" unique_id=1245837050 instance=ExtResource("8_wf3xu")] +position = Vector2(-358.71268, -499.23697) +scale = Vector2(1.1230154, 1.1574241) + +[node name="Tree243" parent="OnTheGround/Forest" unique_id=1690478433 instance=ExtResource("8_wf3xu")] +position = Vector2(1030.5892, -86.567696) +scale = Vector2(1.0620843, 1.0927768) + +[node name="Tree244" parent="OnTheGround/Forest" unique_id=1300504326 instance=ExtResource("8_wf3xu")] +position = Vector2(885.3834, -47.434372) +scale = Vector2(0.9937014, 1.0478631) + +[node name="Tree245" parent="OnTheGround/Forest" unique_id=681222083 instance=ExtResource("8_wf3xu")] +position = Vector2(852.8747, -405.4346) +scale = Vector2(1.0644624, 1.1357274) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree246" parent="OnTheGround/Forest" unique_id=1763123998 instance=ExtResource("8_wf3xu")] +position = Vector2(-57.415867, -164.82321) +scale = Vector2(0.87767637, 0.8090187) + +[node name="Tree247" parent="OnTheGround/Forest" unique_id=635394714 instance=ExtResource("8_wf3xu")] +position = Vector2(-642.21747, -308.05627) +scale = Vector2(1.1082085, 1.0312194) + +[node name="Tree248" parent="OnTheGround/Forest" unique_id=476936124 instance=ExtResource("8_wf3xu")] +position = Vector2(1100.306, -305.43478) +scale = Vector2(1.0706105, 1.0380701) + +[node name="Tree249" parent="OnTheGround/Forest" unique_id=181708186 instance=ExtResource("8_wf3xu")] +position = Vector2(-516.412, -493.34235) +scale = Vector2(1.0396057, 1.0278709) + +[node name="Tree250" parent="OnTheGround/Forest" unique_id=2087511239 instance=ExtResource("8_wf3xu")] +position = Vector2(1154.1642, -409.04602) +scale = Vector2(1.0179461, 0.9449668) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree251" parent="OnTheGround/Forest" unique_id=1701292074 instance=ExtResource("8_wf3xu")] +position = Vector2(-432.08957, -545.616) +scale = Vector2(1.1438873, 1.1440148) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree252" parent="OnTheGround/Forest" unique_id=2026326112 instance=ExtResource("8_wf3xu")] +position = Vector2(-293.43954, -464.50073) +scale = Vector2(0.84091944, 0.92970496) + +[node name="Tree253" parent="OnTheGround/Forest" unique_id=706620919 instance=ExtResource("8_wf3xu")] +position = Vector2(672.4919, -543.9181) +scale = Vector2(1.1234597, 1.0940406) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree254" parent="OnTheGround/Forest" unique_id=516406144 instance=ExtResource("8_wf3xu")] +position = Vector2(-562.5118, -373.7714) +scale = Vector2(0.78461105, 0.81926095) + +[node name="Tree255" parent="OnTheGround/Forest" unique_id=1774112087 instance=ExtResource("8_wf3xu")] +position = Vector2(-615.3258, -419.949) +scale = Vector2(0.9004625, 0.97475374) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree256" parent="OnTheGround/Forest" unique_id=844097131 instance=ExtResource("8_wf3xu")] +position = Vector2(-659.8748, -510.42703) +scale = Vector2(0.81258583, 0.8270542) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree257" parent="OnTheGround/Forest" unique_id=488587352 instance=ExtResource("8_wf3xu")] +position = Vector2(962.4712, -490.7448) +scale = Vector2(0.9251949, 0.9270376) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree258" parent="OnTheGround/Forest" unique_id=1859814246 instance=ExtResource("8_wf3xu")] +position = Vector2(1026.1913, -414.34195) +scale = Vector2(0.82452613, 0.83276194) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree259" parent="OnTheGround/Forest" unique_id=961347951 instance=ExtResource("8_wf3xu")] +position = Vector2(1143.9156, -208.28003) +scale = Vector2(0.8847324, 0.9711376) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree260" parent="OnTheGround/Forest" unique_id=1542695577 instance=ExtResource("8_wf3xu")] +position = Vector2(1083.965, -160.07211) +scale = Vector2(0.9957716, 0.9311931) + +[node name="Tree261" parent="OnTheGround/Forest" unique_id=747969707 instance=ExtResource("8_wf3xu")] +position = Vector2(1049.7622, -540.52936) +scale = Vector2(0.8050613, 0.86639225) + +[node name="Tree262" parent="OnTheGround/Forest" unique_id=616169099 instance=ExtResource("8_wf3xu")] +position = Vector2(1089.1478, -488.8174) +scale = Vector2(1.2304837, 1.1312132) + +[node name="Tree263" parent="OnTheGround/Forest" unique_id=367115701 instance=ExtResource("8_wf3xu")] +position = Vector2(1097.9231, -88.96062) +scale = Vector2(0.75264233, 0.8329479) + +[node name="Tree264" parent="OnTheGround/Forest" unique_id=1318415520 instance=ExtResource("8_wf3xu")] +position = Vector2(167.39671, -528.9773) +scale = Vector2(1.0325072, 0.9954272) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree265" parent="OnTheGround/Forest" unique_id=1716502119 instance=ExtResource("8_wf3xu")] +position = Vector2(-582.8445, -551.3212) +scale = Vector2(1.1336669, 1.0403225) + +[node name="Tree266" parent="OnTheGround/Forest" unique_id=197521291 instance=ExtResource("8_wf3xu")] +position = Vector2(-559.93445, 35.062172) +scale = Vector2(0.89939076, 0.91566867) + +[node name="Tree267" parent="OnTheGround/Forest" unique_id=1972820679 instance=ExtResource("8_wf3xu")] +position = Vector2(1184.1128, -105.69613) +scale = Vector2(1.0553955, 1.0842644) + +[node name="Tree268" parent="OnTheGround/Forest" unique_id=718781505 instance=ExtResource("8_wf3xu")] +position = Vector2(1145.3971, -37.795876) +scale = Vector2(1.1449509, 1.0667983) + +[node name="Tree269" parent="OnTheGround/Forest" unique_id=1487290235 instance=ExtResource("8_wf3xu")] +position = Vector2(1183.0089, -278.61377) +scale = Vector2(0.96629214, 1.0057337) + +[node name="Tree270" parent="OnTheGround/Forest" unique_id=585168730 instance=ExtResource("8_wf3xu")] +position = Vector2(-360.41083, -286.27502) +scale = Vector2(0.90541774, 0.9452859) + +[node name="Tree271" parent="OnTheGround/Forest" unique_id=1657694948 instance=ExtResource("8_wf3xu")] +position = Vector2(1090.0098, -404.7576) +scale = Vector2(1.0808656, 0.98542285) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree272" parent="OnTheGround/Forest" unique_id=640740578 instance=ExtResource("8_wf3xu")] +position = Vector2(-685.4392, -431.05432) +scale = Vector2(0.930339, 0.9723112) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree273" parent="OnTheGround/Forest" unique_id=1800881818 instance=ExtResource("8_wf3xu")] +position = Vector2(-590.47015, -479.38657) +scale = Vector2(0.7567055, 0.82993394) +sprite_frames = ExtResource("9_htidp") + +[node name="Tree274" parent="OnTheGround/Forest" unique_id=1452390493 instance=ExtResource("8_wf3xu")] +position = Vector2(1158.4875, -520.89264) +scale = Vector2(0.8196271, 0.82665163) + +[node name="Tree275" parent="OnTheGround/Forest" unique_id=1895605652 instance=ExtResource("8_wf3xu")] +position = Vector2(919.1119, -538.26556) +scale = Vector2(1.0555549, 1.0745053) + +[node name="Tree276" parent="OnTheGround/Forest" unique_id=908218448 instance=ExtResource("8_wf3xu")] +position = Vector2(-687.12573, -241.89369) +scale = Vector2(0.9058032, 0.91305906) +sprite_frames = ExtResource("9_htidp") + +[node name="Fauna" type="Node2D" parent="OnTheGround" unique_id=785049589] +y_sort_enabled = true + +[node name="Sheep" parent="OnTheGround/Fauna" unique_id=398073521 instance=ExtResource("23_8o6qx")] +position = Vector2(803, 107) + +[node name="Sheep3" parent="OnTheGround/Fauna" unique_id=1031583292 instance=ExtResource("23_8o6qx")] +position = Vector2(707, 681) + +[node name="Sheep4" parent="OnTheGround/Fauna" unique_id=338693904 instance=ExtResource("23_8o6qx")] +position = Vector2(515, 729) +scale = Vector2(-1, 1) + +[node name="Sheep2" parent="OnTheGround/Fauna" unique_id=30495692 instance=ExtResource("23_8o6qx")] +position = Vector2(1064, 368) +scale = Vector2(-1, 1) + +[node name="Flora" type="Node2D" parent="OnTheGround" unique_id=1349352909] +y_sort_enabled = true + +[node name="Bush" parent="OnTheGround/Flora" unique_id=1924859315 instance=ExtResource("7_feqgw")] +position = Vector2(827, 383) + +[node name="Bush2" parent="OnTheGround/Flora" unique_id=2075229383 instance=ExtResource("7_feqgw")] +position = Vector2(1068, 523) + +[node name="Bush3" parent="OnTheGround/Flora" unique_id=1582540092 instance=ExtResource("7_feqgw")] +position = Vector2(442, 470) +sprite_frames = ExtResource("22_y5day") + +[node name="Bush4" parent="OnTheGround/Flora" unique_id=685525545 instance=ExtResource("7_feqgw")] +position = Vector2(400, 430) +sprite_frames = ExtResource("23_5eaun") + +[node name="ScreenOverlay" type="CanvasLayer" parent="." unique_id=459703015] + +[node name="TimeAndWeather" parent="." unique_id=1446545037 instance=ExtResource("13_ltemt")] diff --git a/tiles/fence.tres b/tiles/fence.tres new file mode 100644 index 0000000000..4403cbdc71 --- /dev/null +++ b/tiles/fence.tres @@ -0,0 +1,84 @@ +[gd_resource type="TileSet" format=3 uid="uid://41pk6xbhypue"] + +[ext_resource type="Texture2D" uid="uid://sjfket0x1tvr" path="res://assets/first_party/tiles/fence.png" id="1_pfl2m"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_4d7sh"] +texture = ExtResource("1_pfl2m") +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_4d7sh") diff --git a/tools/check-gdscript-lsp-diagnostics.py b/tools/check-gdscript-lsp-diagnostics.py new file mode 100644 index 0000000000..dd7da5d55d --- /dev/null +++ b/tools/check-gdscript-lsp-diagnostics.py @@ -0,0 +1,291 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: The Threadbare Authors +# SPDX-License-Identifier: MPL-2.0 +""" +Check GDScript files for diagnostics using Godot's built-in LSP server. + +Usage: + python tools/check-gdscript-lsp-diagnostics.py [--godot GODOT] [--port PORT] [file1.gd ...] + +If no files are given, all .gd files under the current directory are checked, +except for a hardcoded list of exceptions. +""" + +import argparse +import json +import os +import pathlib +import select +import signal +import socket +import subprocess +import sys +import time +from contextlib import contextmanager + +LSP_INITIALIZE_TIMEOUT = 10 # seconds to wait for Godot LSP to accept connections +DIAGNOSTIC_TIMEOUT = 5 # seconds to wait for diagnostics after last message +EXCLUDED = [ + "script_templates", + "scenes/quests/story_quests", +] + + +@contextmanager +def godot_lsp(executable: str, port: int, project_root: pathlib.Path): + """Launch Godot as a headless LSP server and terminate it on exit.""" + cmd = [ + executable, + "--headless", + "--editor", + "--lsp-port", + str(port), + "--path", + str(project_root), + ] + print(f"Launching: {' '.join(cmd)}", file=sys.stderr) + proc = subprocess.Popen(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + try: + yield proc + finally: + proc.send_signal(signal.SIGTERM) + try: + proc.wait(timeout=5) + except subprocess.TimeoutExpired: + proc.kill() + + +def path_to_uri(path: pathlib.Path) -> str: + return path.absolute().as_uri() + + +class LspClient: + def __init__(self, sock: socket.socket): + self._sock = sock + self._msg_id = 0 + + def __enter__(self): + return self + + def __exit__(self, *_): + try: + self._sock.close() + except OSError: + pass + + def _send(self, msg: dict) -> None: + body = json.dumps(msg, separators=(",", ":")) + frame = f"Content-Length: {len(body)}\r\n\r\n{body}".encode() + self._sock.sendall(frame) + + def request(self, method: str, params: dict) -> int: + self._msg_id += 1 + self._send( + {"jsonrpc": "2.0", "id": self._msg_id, "method": method, "params": params} + ) + return self._msg_id + + def notify(self, method: str, params: dict) -> None: + self._send({"jsonrpc": "2.0", "method": method, "params": params}) + + def recv(self) -> dict | None: + """Read one LSP message. Returns None on EOF.""" + raw = b"" + while b"\r\n\r\n" not in raw: + chunk = self._sock.recv(1) + if not chunk: + return None + raw += chunk + + header, _ = raw.split(b"\r\n\r\n", 1) + content_length = None + for line in header.split(b"\r\n"): + if line.lower().startswith(b"content-length:"): + content_length = int(line.split(b":", 1)[1].strip()) + if content_length is None: + raise ValueError(f"No Content-Length in LSP header: {header!r}") + + body = b"" + while len(body) < content_length: + chunk = self._sock.recv(content_length - len(body)) + if not chunk: + return None + body += chunk + + return json.loads(body) + + def recv_until_idle(self, timeout: float) -> list[dict]: + """Collect messages until no new message arrives within timeout seconds.""" + messages = [] + last_message_time = time.monotonic() + while True: + remaining = timeout - (time.monotonic() - last_message_time) + if remaining <= 0: + break + ready = select.select([self._sock], [], [], remaining) + if not ready[0]: + break + msg = self.recv() + if msg is None: + break + last_message_time = time.monotonic() + messages.append(msg) + return messages + + +def connect_with_retry(port: int, deadline: float, proc=None) -> socket.socket: + while True: + try: + return socket.create_connection(("127.0.0.1", port), timeout=1) + except (ConnectionRefusedError, TimeoutError, OSError): + if time.monotonic() > deadline: + raise TimeoutError(f"Timed out waiting for Godot LSP on port {port}.") + if proc is not None and proc.poll() is not None: + raise RuntimeError(f"Godot exited early (code {proc.returncode}).") + time.sleep(0.2) + + +def run( + port: int, project_root: pathlib.Path, gd_files: list[pathlib.Path], proc=None +) -> dict[str, list]: + deadline = time.monotonic() + LSP_INITIALIZE_TIMEOUT + sock = connect_with_retry(port, deadline, proc) + sock.setblocking(False) + + with LspClient(sock) as lsp: + # Handshake + init_id = lsp.request( + "initialize", + { + "processId": os.getpid(), + "rootUri": path_to_uri(project_root), + "capabilities": { + "textDocument": { + "publishDiagnostics": {"relatedInformation": False} + } + }, + }, + ) + + # Wait for initialize response + while True: + ready = select.select([sock], [], [], 10) + if not ready[0]: + raise TimeoutError("No response to initialize request.") + msg = lsp.recv() + if msg is None: + raise RuntimeError("LSP server closed connection.") + if msg.get("id") == init_id: + break + + lsp.notify("initialized", {}) + + for path in gd_files: + lsp.notify( + "textDocument/didOpen", + { + "textDocument": { + "uri": path_to_uri(path), + "languageId": "gdscript", + "version": 1, + "text": path.read_text(encoding="utf-8"), + } + }, + ) + + diagnostics: dict[str, list] = {} + for msg in lsp.recv_until_idle(DIAGNOSTIC_TIMEOUT): + if msg.get("method") == "textDocument/publishDiagnostics": + params = msg.get("params", {}) + uri = params.get("uri", "") + diags = params.get("diagnostics", []) + if diags: + diagnostics[uri] = diags + elif uri in diagnostics: + del diagnostics[uri] + + for path in gd_files: + lsp.notify( + "textDocument/didClose", {"textDocument": {"uri": path_to_uri(path)}} + ) + + return diagnostics + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "--godot", default="godot", help="Godot executable (default: godot)" + ) + parser.add_argument( + "--port", type=int, default=6005, help="LSP port (default: 6005)" + ) + parser.add_argument( + "--no-launch", + action="store_true", + help="Don't launch Godot; connect to an already-running LSP server", + ) + parser.add_argument("files", nargs="*", help=".gd files to check") + args = parser.parse_args() + + project_root = pathlib.Path(".").absolute() + + if args.files: + gd_files = [pathlib.Path(f).absolute() for f in args.files] + else: + gd_files = sorted( + p + for p in project_root.rglob("*.gd") + if not any(p.is_relative_to(project_root / e) for e in EXCLUDED) + ) + + if not gd_files: + print("No .gd files found.", file=sys.stderr) + return 0 + + try: + if args.no_launch: + diagnostics = run(args.port, project_root, gd_files) + else: + with godot_lsp(args.godot, args.port, project_root) as proc: + diagnostics = run(args.port, project_root, gd_files, proc) + except (TimeoutError, RuntimeError) as e: + print(str(e), file=sys.stderr) + return 1 + + if not diagnostics: + print(f"No diagnostics in {len(gd_files)} files.") + return 0 + + # Severity 1=error, 2=warning, 3=info, 4=hint + severity_names = {1: "error", 2: "warning", 3: "info", 4: "hint"} + # GitHub Actions workflow command levels (info/hint fall back to "notice") + gha_levels = {1: "error", 2: "warning", 3: "notice", 4: "notice"} + in_gha = "GITHUB_ACTIONS" in os.environ + exit_code = 0 + + for uri, diags in sorted(diagnostics.items()): + try: + rel = pathlib.Path(uri.removeprefix("file://")).relative_to(project_root) + except ValueError: + rel = uri + for d in diags: + severity = d.get("severity", 1) + name = severity_names.get(severity, "diagnostic") + start = d.get("range", {}).get("start", {}) + line = start.get("line", 0) + 1 + col = start.get("character", 0) + 1 + message = d.get("message", "") + if in_gha: + level = gha_levels.get(severity, "notice") + print(f"::{level} file={rel},line={line},col={col}::{message}") + else: + print(f"{rel}:{line}:{col}: {name}: {message}") + if severity <= 2: # error or warning + exit_code = 1 + + return exit_code + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/web/full-size.html b/web/full-size.html index 92b2b82ee7..0e184f9a74 100644 --- a/web/full-size.html +++ b/web/full-size.html @@ -26,7 +26,7 @@ outline: none; } -#status, #status-splash, #status-progress { +#status, #status-splash, #status-progress, #status-ready { position: absolute; left: 0; right: 0; @@ -46,6 +46,10 @@ visibility: hidden; } +#status.is-ready { + cursor: pointer; +} + #status-splash { max-height: 100%; max-width: 100%; @@ -66,7 +70,7 @@ image-rendering: pixelated; } -#status-progress, #status-notice { +#status-progress, #status-notice, #status-ready { display: none; } @@ -76,6 +80,18 @@ margin: 0 auto; } +#status-ready { + bottom: 10%; + width: 25%; + margin: 0 auto; + text-align: center; + font-family: "Jersey 25", sans-serif; + font-weight: 400; + font-style: normal; + font-size: 41px; + text-decoration: underline; +} + #status-notice { background-color: #5b3943; border-radius: 0.5rem; @@ -91,6 +107,9 @@ } $GODOT_HEAD_INCLUDE + + + @@ -105,6 +124,7 @@
+
Play Threadbare
@@ -117,6 +137,7 @@ const statusOverlay = document.getElementById('status'); const statusProgress = document.getElementById('status-progress'); const statusNotice = document.getElementById('status-notice'); + const statusReady = document.getElementById('status-ready'); let initializing = true; let statusMode = ''; @@ -133,6 +154,8 @@ statusOverlay.style.visibility = 'visible'; statusProgress.style.display = mode === 'progress' ? 'block' : 'none'; statusNotice.style.display = mode === 'notice' ? 'block' : 'none'; + statusReady.style.display = mode === 'ready' ? 'block' : 'none'; + statusOverlay.classList.toggle('is-ready', mode === 'ready'); statusMode = mode; } @@ -197,7 +220,7 @@ } } else { setStatusMode('progress'); - engine.startGame({ + engine.config.update({ 'onProgress': function (current, total) { if (current > 0 && total > 0) { statusProgress.value = current; @@ -207,6 +230,21 @@ statusProgress.removeAttribute('max'); } }, + }); + const exe = engine.config.executable; + const pack = engine.config.mainPack || `${exe}.pck`; + engine.config.args = ['--main-pack', pack].concat(engine.config.args); + Promise.all([ + engine.init(exe), + engine.preloadFile(pack, pack), + ]).then(() => { + return new Promise((resolve) => { + setStatusMode('ready'); + // Wait for a click anywhere on the page, then resolve the promise. + statusOverlay.addEventListener('click', resolve, {once: true}); + }); + }).then(() => { + return engine.start(); }).then(() => { setStatusMode('hidden'); }, displayFailureNotice);