diff --git a/TestScene.tscn b/TestScene.tscn index bb56518..e092b82 100644 --- a/TestScene.tscn +++ b/TestScene.tscn @@ -1,27 +1,54 @@ -[gd_scene load_steps=4 format=3 uid="uid://datin7yogkbf3"] +[gd_scene load_steps=6 format=3 uid="uid://datin7yogkbf3"] [ext_resource type="Material" uid="uid://bjhdc2pxcui3" path="res://content/cardboard_material.tres" id="1_64ce8"] [ext_resource type="PackedScene" uid="uid://ctu0cdqcefrwg" path="res://prefabs/player.tscn" id="2_k3l6b"] +[ext_resource type="PackedScene" uid="uid://b1l8fvlceolf8" path="res://content/enemies/enemy.tscn" id="3_1edqv"] + +[sub_resource type="NavigationMesh" id="NavigationMesh_qn8f1"] +vertices = PackedVector3Array(-169.26, 0.02, -115.898, -169.26, 0.02, 59.6022, 77.9896, 0.02, 59.6022, 77.9896, 0.02, -115.898) +polygons = [PackedInt32Array(3, 2, 0), PackedInt32Array(0, 2, 1)] +cell_height = 0.01 [sub_resource type="BoxShape3D" id="BoxShape3D_jbkga"] size = Vector3(248.301, 1, 176.535) [node name="TestScene" type="Node3D"] -[node name="StaticBody3D" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -45.5868, -0.5, -28.2159) - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"] -shape = SubResource("BoxShape3D_jbkga") - -[node name="CSGBox3D" type="CSGBox3D" parent="StaticBody3D"] -material_override = ExtResource("1_64ce8") -size = Vector3(248.301, 1, 176.535) - [node name="Node3D" parent="." instance=ExtResource("2_k3l6b")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0230917, 0, -0.0855939) [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] transform = Transform3D(0.951466, 0.283282, -0.120267, 0.221829, -0.360404, 0.906036, 0.213319, -0.888741, -0.405752, 0, 39.7095, 0) -light_energy = 1.861 +light_energy = 0.0 +shadow_enabled = true +shadow_opacity = 0.46 directional_shadow_pancake_size = 12.9 + +[node name="Enemy" parent="." instance=ExtResource("3_1edqv")] +transform = Transform3D(-0.294991, 0, -0.9555, 0, 1, 0, 0.9555, 0, -0.294991, 7.75343, 0, 4.05556) + +[node name="Enemy2" parent="." instance=ExtResource("3_1edqv")] +transform = Transform3D(-0.294991, 0, -0.9555, 0, 1, 0, 0.9555, 0, -0.294991, 7.75343, 0, -1.44918) + +[node name="Enemy3" parent="." instance=ExtResource("3_1edqv")] +transform = Transform3D(-0.294991, 0, -0.9555, 0, 1, 0, 0.9555, 0, -0.294991, 7.75343, 0, -8.40638) + +[node name="Enemy4" parent="." instance=ExtResource("3_1edqv")] +transform = Transform3D(-0.294991, 0, -0.9555, 0, 1, 0, 0.9555, 0, -0.294991, 11.7836, -4.76837e-07, -1.21838) + +[node name="Enemy5" parent="." instance=ExtResource("3_1edqv")] +transform = Transform3D(-0.294991, 0, -0.9555, 0, 1, 0, 0.9555, 0, -0.294991, 12.7053, 0, 4.63715) + +[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0230917, 0, -0.0855939) +navigation_mesh = SubResource("NavigationMesh_qn8f1") + +[node name="StaticBody3D" type="StaticBody3D" parent="NavigationRegion3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -45.6099, -0.5, -28.1303) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/StaticBody3D"] +shape = SubResource("BoxShape3D_jbkga") + +[node name="CSGBox3D" type="CSGBox3D" parent="NavigationRegion3D/StaticBody3D"] +material_override = ExtResource("1_64ce8") +size = Vector3(248.301, 1, 176.535) diff --git a/addons/limboai/LICENSE.md b/addons/limboai/LICENSE.md new file mode 100644 index 0000000..07c690f --- /dev/null +++ b/addons/limboai/LICENSE.md @@ -0,0 +1,7 @@ +Copyright (c) 2023-2025 Serhii Snitsaruk and the LimboAI contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the βSoftwareβ), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED βAS ISβ, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/addons/limboai/LOGO_LICENSE.md b/addons/limboai/LOGO_LICENSE.md new file mode 100644 index 0000000..cd0de07 --- /dev/null +++ b/addons/limboai/LOGO_LICENSE.md @@ -0,0 +1,5 @@ +LimboAI Logo +Copyright (c) 2023 Aleksandra Snitsaruk + +This work is licensed under the Creative Commons Attribution 4.0 International +license (CC BY 4.0 International): https://creativecommons.org/licenses/by/4.0/ \ No newline at end of file diff --git a/addons/limboai/README.md b/addons/limboai/README.md new file mode 100644 index 0000000..186c676 --- /dev/null +++ b/addons/limboai/README.md @@ -0,0 +1,139 @@ +
+
+
+
+
+
+
+## Features
+
+- **Behavior Trees (BT):**
+ - Easily create, edit, and save `BehaviorTree` resources in the editor.
+ - Execute `BehaviorTree` resources using the `BTPlayer` node.
+ - Create complex behaviors by combining and nesting tasks in a hierarchy.
+ - Control execution flow using composite, decorator, and condition tasks.
+ - [Create custom tasks](https://limboai.readthedocs.io/en/stable/getting-started/custom-tasks.html) by extending core classes: `BTAction`, `BTCondition`, `BTDecorator`, and `BTComposite`.
+ - Built-in class documentation.
+ - Blackboard system: Share data seamlessly between tasks using the `Blackboard`.
+ - Blackboard plans: Define variables in the BehaviorTree resource and override their values in the BTPlayer node.
+ - Plan editor: Manage variables, their data types and property hints.
+ - Blackboard scopes: Prevent name conflicts and enable advanced techniques like [sharing data between several agents](https://limboai.readthedocs.io/en/stable/getting-started/using-blackboard.html#sharing-data-between-several-agents).
+ - Blackboard parameters: [Export a BB parameter](https://limboai.readthedocs.io/en/stable/getting-started/using-blackboard.html#task-parameters), for which user can provide a value or bind it to a blackboard variable (can be used in custom tasks).
+ - Inspector support for specifying blackboard variables (custom editor for exported `StringName` properties ending with "_var").
+ - Use the `BTSubtree` task to execute a tree from a different resource file, promoting organization and reusability.
+ - Visual Debugger: Inspect the execution of any BT in a running scene to identify and troubleshoot issues.
+ - Visualize BT in-game using `BehaviorTreeView` node (for custom in-game tools).
+ - Monitor tree performance with custom performance monitors.
+
+- **Hierarchical State Machines (HSM):**
+ - Extend the `LimboState` class to implement state logic.
+ - `LimboHSM` node serves as a state machine that manages `LimboState` instances and transitions.
+ - `LimboHSM` is a state itself and can be nested within other `LimboHSM` instances.
+ - [Event-based](https://limboai.readthedocs.io/en/stable/getting-started/hsm.html#events-and-transitions): Transitions are associated with events and are triggered by the state machine when the relevant event is dispatched, allowing for better decoupling of transitions from state logic.
+ - Combine state machines with behavior trees using `BTState` for advanced reactive AI.
+ - Delegation Option: Using the vanilla `LimboState`, [delegate the implementation](https://limboai.readthedocs.io/en/stable/getting-started/hsm.html#single-file-state-machine-setup) to your callback functions, making it perfect for rapid prototyping and game jams.
+ - π Note: State machine setup and initialization require code; there is no GUI editor.
+
+- **Tested:** Behavior tree tasks and HSM are covered by unit tests.
+
+- **GDExtension:** LimboAI can be [used as extension](https://limboai.readthedocs.io/en/stable/getting-started/gdextension.html). Custom engine builds are not necessary.
+
+- **Demo + Tutorial:** Check out our extensive demo project, which includes an introduction to behavior trees using examples.
+
+## First steps
+
+Follow the [First steps](https://limboai.readthedocs.io/en/stable/index.html#first-steps) guide to learn how to get started with LimboAI and the demo project.
+
+## Getting LimboAI
+
+LimboAI can be used as either a C++ module or as a GDExtension shared library. GDExtension version is more convenient to use but somewhat limited in features. Whichever you choose to use, your project will stay compatible with both and you can switch from one to the other any time. See [Using GDExtension](https://limboai.readthedocs.io/en/stable/getting-started/gdextension.html).
+
+### Precompiled builds
+
+- For the most recent builds, navigate to **Actions** β [**All Builds**](https://github.com/limbonaut/limboai/actions/workflows/all_builds.yml), select a build from the list, and scroll down until you find the **Artifacts** section.
+- For release builds, check [**Releases**](https://github.com/limbonaut/limboai/releases).
+
+### Compiling from source
+
+- Download the Godot Engine source code and put this module source into the `modules/limboai` directory.
+- Consult the Godot Engine documentation for instructions on [how to build from source code](https://docs.godotengine.org/en/stable/contributing/development/compiling/index.html).
+- If you plan to export a game utilizing the LimboAI module, you'll also need to build export templates.
+- To execute unit tests, compile the engine with `tests=yes` and run it with `--test --tc="*[LimboAI]*"`.
+
+#### For GDExtension
+
+- You'll need SCons build tool and a C++ compiler. See also [Compiling](https://docs.godotengine.org/en/stable/contributing/development/compiling/index.html).
+- Run `scons target=editor` to build the plugin library for your current platform.
+ - SCons will automatically clone the godot-cpp/ repository if it doesn't already exist in the `limboai/godot-cpp` directory.
+ - By default, built targets are placed in the demo project: `demo/addons/limboai/bin/`
+- Check `scons -h` for other options and targets.
+
+## Using the plugin
+
+- Online Documentation: [stable](https://limboai.readthedocs.io/en/stable/index.html), [latest](https://limboai.readthedocs.io/en/latest/index.html)
+- [First steps](https://limboai.readthedocs.io/en/stable/index.html#first-steps)
+- [Introduction to Behavior Trees](https://limboai.readthedocs.io/en/stable/getting-started/introduction.html)
+- [Creating custom tasks in GDScript](https://limboai.readthedocs.io/en/stable/getting-started/custom-tasks.html)
+- [Sharing data using Blackboard](https://limboai.readthedocs.io/en/stable/getting-started/using-blackboard.html)
+- [Accessing nodes in the scene tree](https://limboai.readthedocs.io/en/stable/getting-started/accessing-nodes.html)
+- [State machines](https://limboai.readthedocs.io/en/stable/getting-started/hsm.html)
+- [Using GDExtension](https://limboai.readthedocs.io/en/stable/getting-started/gdextension.html)
+- [Using LimboAI with C#](https://limboai.readthedocs.io/en/stable/getting-started/c-sharp.html)
+- [Class reference](https://limboai.readthedocs.io/en/stable/getting-started/featured-classes.html)
+
+## Contributing
+
+Contributions are welcome! Please open issues for bug reports, feature requests, or code changes.
+For detailed guidelines on contributing to code or documentation, check out our [Contributing](https://limboai.readthedocs.io/en/latest/getting-started/contributing.html) page.
+
+If you have an idea for a behavior tree task or a feature that could be useful in a variety of projects, open an issue to discuss it.
+
+## Social
+
+Need help? We have a Discord server: https://discord.gg/N5MGC95GpP
+
+I write about LimboAI development on Mastodon: https://mastodon.gamedev.place/@limbo.
+
+## License
+
+Use of this source code is governed by an MIT-style license that can be found in the LICENSE file or at https://opensource.org/licenses/MIT
+
+LimboAI logo and demo project art assets are licensed under the Creative Commons Attribution 4.0 International license that can be found at https://creativecommons.org/licenses/by/4.0/
diff --git a/addons/limboai/bin/libliblimboai.windows.editor.x86_64.a b/addons/limboai/bin/libliblimboai.windows.editor.x86_64.a
new file mode 100644
index 0000000..d2631b4
Binary files /dev/null and b/addons/limboai/bin/libliblimboai.windows.editor.x86_64.a differ
diff --git a/addons/limboai/bin/libliblimboai.windows.template_release.x86_64.a b/addons/limboai/bin/libliblimboai.windows.template_release.x86_64.a
new file mode 100644
index 0000000..b51ed53
Binary files /dev/null and b/addons/limboai/bin/libliblimboai.windows.template_release.x86_64.a differ
diff --git a/addons/limboai/bin/liblimboai.android.template_debug.arm32.so b/addons/limboai/bin/liblimboai.android.template_debug.arm32.so
new file mode 100644
index 0000000..6e22804
Binary files /dev/null and b/addons/limboai/bin/liblimboai.android.template_debug.arm32.so differ
diff --git a/addons/limboai/bin/liblimboai.android.template_debug.arm64.so b/addons/limboai/bin/liblimboai.android.template_debug.arm64.so
new file mode 100644
index 0000000..c5cceb2
Binary files /dev/null and b/addons/limboai/bin/liblimboai.android.template_debug.arm64.so differ
diff --git a/addons/limboai/bin/liblimboai.android.template_debug.x86_32.so b/addons/limboai/bin/liblimboai.android.template_debug.x86_32.so
new file mode 100644
index 0000000..6d8eab7
Binary files /dev/null and b/addons/limboai/bin/liblimboai.android.template_debug.x86_32.so differ
diff --git a/addons/limboai/bin/liblimboai.android.template_debug.x86_64.so b/addons/limboai/bin/liblimboai.android.template_debug.x86_64.so
new file mode 100644
index 0000000..ab0def7
Binary files /dev/null and b/addons/limboai/bin/liblimboai.android.template_debug.x86_64.so differ
diff --git a/addons/limboai/bin/liblimboai.android.template_release.arm32.so b/addons/limboai/bin/liblimboai.android.template_release.arm32.so
new file mode 100644
index 0000000..4db8355
Binary files /dev/null and b/addons/limboai/bin/liblimboai.android.template_release.arm32.so differ
diff --git a/addons/limboai/bin/liblimboai.android.template_release.arm64.so b/addons/limboai/bin/liblimboai.android.template_release.arm64.so
new file mode 100644
index 0000000..2b739dc
Binary files /dev/null and b/addons/limboai/bin/liblimboai.android.template_release.arm64.so differ
diff --git a/addons/limboai/bin/liblimboai.android.template_release.x86_32.so b/addons/limboai/bin/liblimboai.android.template_release.x86_32.so
new file mode 100644
index 0000000..12cf743
Binary files /dev/null and b/addons/limboai/bin/liblimboai.android.template_release.x86_32.so differ
diff --git a/addons/limboai/bin/liblimboai.android.template_release.x86_64.so b/addons/limboai/bin/liblimboai.android.template_release.x86_64.so
new file mode 100644
index 0000000..9a4291d
Binary files /dev/null and b/addons/limboai/bin/liblimboai.android.template_release.x86_64.so differ
diff --git a/addons/limboai/bin/liblimboai.ios.template_debug.arm64.dylib b/addons/limboai/bin/liblimboai.ios.template_debug.arm64.dylib
new file mode 100644
index 0000000..6cbbacd
Binary files /dev/null and b/addons/limboai/bin/liblimboai.ios.template_debug.arm64.dylib differ
diff --git a/addons/limboai/bin/liblimboai.ios.template_debug.universal.simulator.dylib b/addons/limboai/bin/liblimboai.ios.template_debug.universal.simulator.dylib
new file mode 100644
index 0000000..f0bd59d
Binary files /dev/null and b/addons/limboai/bin/liblimboai.ios.template_debug.universal.simulator.dylib differ
diff --git a/addons/limboai/bin/liblimboai.ios.template_release.arm64.dylib b/addons/limboai/bin/liblimboai.ios.template_release.arm64.dylib
new file mode 100644
index 0000000..8a1e4f8
Binary files /dev/null and b/addons/limboai/bin/liblimboai.ios.template_release.arm64.dylib differ
diff --git a/addons/limboai/bin/liblimboai.ios.template_release.universal.simulator.dylib b/addons/limboai/bin/liblimboai.ios.template_release.universal.simulator.dylib
new file mode 100644
index 0000000..92a4f68
Binary files /dev/null and b/addons/limboai/bin/liblimboai.ios.template_release.universal.simulator.dylib differ
diff --git a/addons/limboai/bin/liblimboai.linux.editor.x86_64.so b/addons/limboai/bin/liblimboai.linux.editor.x86_64.so
new file mode 100644
index 0000000..caa8dc5
Binary files /dev/null and b/addons/limboai/bin/liblimboai.linux.editor.x86_64.so differ
diff --git a/addons/limboai/bin/liblimboai.linux.template_release.x86_64.so b/addons/limboai/bin/liblimboai.linux.template_release.x86_64.so
new file mode 100644
index 0000000..ec6348f
Binary files /dev/null and b/addons/limboai/bin/liblimboai.linux.template_release.x86_64.so differ
diff --git a/addons/limboai/bin/liblimboai.macos.editor.framework/liblimboai.macos.editor b/addons/limboai/bin/liblimboai.macos.editor.framework/liblimboai.macos.editor
new file mode 100644
index 0000000..718c609
Binary files /dev/null and b/addons/limboai/bin/liblimboai.macos.editor.framework/liblimboai.macos.editor differ
diff --git a/addons/limboai/bin/liblimboai.macos.template_release.framework/liblimboai.macos.template_release b/addons/limboai/bin/liblimboai.macos.template_release.framework/liblimboai.macos.template_release
new file mode 100644
index 0000000..3dfa508
Binary files /dev/null and b/addons/limboai/bin/liblimboai.macos.template_release.framework/liblimboai.macos.template_release differ
diff --git a/addons/limboai/bin/liblimboai.web.template_debug.wasm32.wasm b/addons/limboai/bin/liblimboai.web.template_debug.wasm32.wasm
new file mode 100644
index 0000000..dd4fe80
Binary files /dev/null and b/addons/limboai/bin/liblimboai.web.template_debug.wasm32.wasm differ
diff --git a/addons/limboai/bin/liblimboai.web.template_release.wasm32.wasm b/addons/limboai/bin/liblimboai.web.template_release.wasm32.wasm
new file mode 100644
index 0000000..3f9986f
Binary files /dev/null and b/addons/limboai/bin/liblimboai.web.template_release.wasm32.wasm differ
diff --git a/addons/limboai/bin/liblimboai.windows.editor.x86_64.dll b/addons/limboai/bin/liblimboai.windows.editor.x86_64.dll
new file mode 100644
index 0000000..a4435cc
Binary files /dev/null and b/addons/limboai/bin/liblimboai.windows.editor.x86_64.dll differ
diff --git a/addons/limboai/bin/liblimboai.windows.template_release.x86_64.dll b/addons/limboai/bin/liblimboai.windows.template_release.x86_64.dll
new file mode 100644
index 0000000..242b0cc
Binary files /dev/null and b/addons/limboai/bin/liblimboai.windows.template_release.x86_64.dll differ
diff --git a/addons/limboai/bin/limboai.gdextension b/addons/limboai/bin/limboai.gdextension
new file mode 100644
index 0000000..50915a5
--- /dev/null
+++ b/addons/limboai/bin/limboai.gdextension
@@ -0,0 +1,100 @@
+[configuration]
+
+entry_symbol = "limboai_init"
+compatibility_minimum = "4.2"
+
+[libraries]
+
+macos.debug = "res://addons/limboai/bin/liblimboai.macos.editor.framework"
+macos.release = "res://addons/limboai/bin/liblimboai.macos.template_release.framework"
+windows.debug.x86_32 = "res://addons/limboai/bin/liblimboai.windows.editor.x86_32.dll"
+windows.release.x86_32 = "res://addons/limboai/bin/liblimboai.windows.template_release.x86_32.dll"
+windows.debug.x86_64 = "res://addons/limboai/bin/liblimboai.windows.editor.x86_64.dll"
+windows.release.x86_64 = "res://addons/limboai/bin/liblimboai.windows.template_release.x86_64.dll"
+linux.debug.x86_64 = "res://addons/limboai/bin/liblimboai.linux.editor.x86_64.so"
+linux.release.x86_64 = "res://addons/limboai/bin/liblimboai.linux.template_release.x86_64.so"
+linux.debug.arm64 = "res://addons/limboai/bin/liblimboai.linux.editor.arm64.so"
+linux.release.arm64 = "res://addons/limboai/bin/liblimboai.linux.template_release.arm64.so"
+linux.debug.rv64 = "res://addons/limboai/bin/liblimboai.linux.editor.rv64.so"
+linux.release.rv64 = "res://addons/limboai/bin/liblimboai.linux.template_release.rv64.so"
+android.debug.arm64 = "res://addons/limboai/bin/liblimboai.android.template_debug.arm64.so"
+android.release.arm64 = "res://addons/limboai/bin/liblimboai.android.template_release.arm64.so"
+android.debug.arm32 = "res://addons/limboai/bin/liblimboai.android.template_debug.arm32.so"
+android.release.arm32 = "res://addons/limboai/bin/liblimboai.android.template_release.arm32.so"
+android.debug.x86_64 = "res://addons/limboai/bin/liblimboai.android.template_debug.x86_64.so"
+android.release.x86_64 = "res://addons/limboai/bin/liblimboai.android.template_release.x86_64.so"
+android.debug.x86_32 = "res://addons/limboai/bin/liblimboai.android.template_debug.x86_32.so"
+android.release.x86_32 = "res://addons/limboai/bin/liblimboai.android.template_release.x86_32.so"
+ios.release.arm64 = "res://addons/limboai/bin/liblimboai.ios.template_release.arm64.dylib"
+ios.debug.arm64 = "res://addons/limboai/bin/liblimboai.ios.template_debug.arm64.dylib"
+ios.release.simulator = "res://addons/limboai/bin/liblimboai.ios.template_release.universal.dylib"
+ios.debug.simulator = "res://addons/limboai/bin/liblimboai.ios.template_debug.universal.dylib"
+web.debug.wasm32 = "res://addons/limboai/bin/liblimboai.web.template_debug.wasm32.wasm"
+web.release.wasm32 = "res://addons/limboai/bin/liblimboai.web.template_release.wasm32.wasm"
+
+[icons]
+
+BTAction = "res://addons/limboai/icons/BTAction.svg"
+BTAlwaysFail = "res://addons/limboai/icons/BTAlwaysFail.svg"
+BTAlwaysSucceed = "res://addons/limboai/icons/BTAlwaysSucceed.svg"
+BTAwaitAnimation = "res://addons/limboai/icons/BTAwaitAnimation.svg"
+BTCallMethod = "res://addons/limboai/icons/BTCallMethod.svg"
+BTCheckAgentProperty = "res://addons/limboai/icons/BTCheckAgentProperty.svg"
+BTCheckTrigger = "res://addons/limboai/icons/BTCheckTrigger.svg"
+BTCheckVar = "res://addons/limboai/icons/BTCheckVar.svg"
+BTComment = "res://addons/limboai/icons/BTComment.svg"
+BTCondition = "res://addons/limboai/icons/BTCondition.svg"
+BTConsolePrint = "res://addons/limboai/icons/BTConsolePrint.svg"
+BTCooldown = "res://addons/limboai/icons/BTCooldown.svg"
+BTDecorator = "res://addons/limboai/icons/BTDecorator.svg"
+BTDelay = "res://addons/limboai/icons/BTDelay.svg"
+BTDynamicSelector = "res://addons/limboai/icons/BTDynamicSelector.svg"
+BTDynamicSequence = "res://addons/limboai/icons/BTDynamicSequence.svg"
+BTEvaluateExpression = "res://addons/limboai/icons/BTEvaluateExpression.svg"
+BTFail = "res://addons/limboai/icons/BTFail.svg"
+BTForEach = "res://addons/limboai/icons/BTForEach.svg"
+BTInvert = "res://addons/limboai/icons/BTInvert.svg"
+BTNewScope = "res://addons/limboai/icons/BTNewScope.svg"
+BTParallel = "res://addons/limboai/icons/BTParallel.svg"
+BTPauseAnimation = "res://addons/limboai/icons/BTPauseAnimation.svg"
+BTPlayAnimation = "res://addons/limboai/icons/BTPlayAnimation.svg"
+BTPlayer = "res://addons/limboai/icons/BTPlayer.svg"
+BTProbability = "res://addons/limboai/icons/BTProbability.svg"
+BTProbabilitySelector = "res://addons/limboai/icons/BTProbabilitySelector.svg"
+BTRandomSelector = "res://addons/limboai/icons/BTRandomSelector.svg"
+BTRandomSequence = "res://addons/limboai/icons/BTRandomSequence.svg"
+BTRandomWait = "res://addons/limboai/icons/BTRandomWait.svg"
+BTRepeat = "res://addons/limboai/icons/BTRepeat.svg"
+BTRepeatUntilFailure = "res://addons/limboai/icons/BTRepeatUntilFailure.svg"
+BTRepeatUntilSuccess = "res://addons/limboai/icons/BTRepeatUntilSuccess.svg"
+BTRunLimit = "res://addons/limboai/icons/BTRunLimit.svg"
+BTSelector = "res://addons/limboai/icons/BTSelector.svg"
+BTSequence = "res://addons/limboai/icons/BTSequence.svg"
+BTSetAgentProperty = "res://addons/limboai/icons/BTSetAgentProperty.svg"
+BTSetVar = "res://addons/limboai/icons/BTSetVar.svg"
+BTState = "res://addons/limboai/icons/BTState.svg"
+BTStopAnimation = "res://addons/limboai/icons/BTStopAnimation.svg"
+BTSubtree = "res://addons/limboai/icons/BTSubtree.svg"
+BTTimeLimit = "res://addons/limboai/icons/BTTimeLimit.svg"
+BTWait = "res://addons/limboai/icons/BTWait.svg"
+BTWaitTicks = "res://addons/limboai/icons/BTWaitTicks.svg"
+BehaviorTree = "res://addons/limboai/icons/BehaviorTree.svg"
+BehaviorTreeView = "res://addons/limboai/icons/BehaviorTreeView.svg"
+BlackboardPlan = "res://addons/limboai/icons/BlackboardPlan.svg"
+LimboAI = "res://addons/limboai/icons/LimboAI.svg"
+LimboDeselectAll = "res://addons/limboai/icons/LimboDeselectAll.svg"
+LimboEditBlackboard = "res://addons/limboai/icons/LimboEditBlackboard.svg"
+LimboExtraBlackboard = "res://addons/limboai/icons/LimboExtraBlackboard.svg"
+LimboExtraClock = "res://addons/limboai/icons/LimboExtraClock.svg"
+LimboExtraVariable = "res://addons/limboai/icons/LimboExtraVariable.svg"
+LimboExtractSubtree = "res://addons/limboai/icons/LimboExtractSubtree.svg"
+LimboHSM = "res://addons/limboai/icons/LimboHSM.svg"
+LimboPercent = "res://addons/limboai/icons/LimboPercent.svg"
+LimboSelectAll = "res://addons/limboai/icons/LimboSelectAll.svg"
+LimboState = "res://addons/limboai/icons/LimboState.svg"
+LimboVarAdd = "res://addons/limboai/icons/LimboVarAdd.svg"
+LimboVarEmpty = "res://addons/limboai/icons/LimboVarEmpty.svg"
+LimboVarError = "res://addons/limboai/icons/LimboVarError.svg"
+LimboVarExists = "res://addons/limboai/icons/LimboVarExists.svg"
+LimboVarNotFound = "res://addons/limboai/icons/LimboVarNotFound.svg"
+LimboVarPrivate = "res://addons/limboai/icons/LimboVarPrivate.svg"
diff --git a/addons/limboai/icons/BTAction.svg b/addons/limboai/icons/BTAction.svg
new file mode 100644
index 0000000..997ebbc
--- /dev/null
+++ b/addons/limboai/icons/BTAction.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTAction.svg.import b/addons/limboai/icons/BTAction.svg.import
new file mode 100644
index 0000000..936f5b1
--- /dev/null
+++ b/addons/limboai/icons/BTAction.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://csifn6ib3bfag"
+path="res://.godot/imported/BTAction.svg-a43c04a25802778fc1e8d98b5915e67c.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTAction.svg"
+dest_files=["res://.godot/imported/BTAction.svg-a43c04a25802778fc1e8d98b5915e67c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTAlwaysFail.svg b/addons/limboai/icons/BTAlwaysFail.svg
new file mode 100644
index 0000000..7be2920
--- /dev/null
+++ b/addons/limboai/icons/BTAlwaysFail.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTAlwaysFail.svg.import b/addons/limboai/icons/BTAlwaysFail.svg.import
new file mode 100644
index 0000000..e69460f
--- /dev/null
+++ b/addons/limboai/icons/BTAlwaysFail.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://drn04uxowwp8j"
+path="res://.godot/imported/BTAlwaysFail.svg-9a4e083bd8ff0d6d8240b50ae0d4cea0.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTAlwaysFail.svg"
+dest_files=["res://.godot/imported/BTAlwaysFail.svg-9a4e083bd8ff0d6d8240b50ae0d4cea0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTAlwaysSucceed.svg b/addons/limboai/icons/BTAlwaysSucceed.svg
new file mode 100644
index 0000000..248882f
--- /dev/null
+++ b/addons/limboai/icons/BTAlwaysSucceed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTAlwaysSucceed.svg.import b/addons/limboai/icons/BTAlwaysSucceed.svg.import
new file mode 100644
index 0000000..3bdb9b0
--- /dev/null
+++ b/addons/limboai/icons/BTAlwaysSucceed.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bjj8rrfviour3"
+path="res://.godot/imported/BTAlwaysSucceed.svg-c8181e2fd85d1e2ad00a6c8e813e7a94.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTAlwaysSucceed.svg"
+dest_files=["res://.godot/imported/BTAlwaysSucceed.svg-c8181e2fd85d1e2ad00a6c8e813e7a94.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTAwaitAnimation.svg b/addons/limboai/icons/BTAwaitAnimation.svg
new file mode 100644
index 0000000..6bb4cd1
--- /dev/null
+++ b/addons/limboai/icons/BTAwaitAnimation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTAwaitAnimation.svg.import b/addons/limboai/icons/BTAwaitAnimation.svg.import
new file mode 100644
index 0000000..9af8912
--- /dev/null
+++ b/addons/limboai/icons/BTAwaitAnimation.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cl86rct18wlng"
+path="res://.godot/imported/BTAwaitAnimation.svg-d8d736b3e349e2f77119fde575996909.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTAwaitAnimation.svg"
+dest_files=["res://.godot/imported/BTAwaitAnimation.svg-d8d736b3e349e2f77119fde575996909.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTCallMethod.svg b/addons/limboai/icons/BTCallMethod.svg
new file mode 100644
index 0000000..8ed7e65
--- /dev/null
+++ b/addons/limboai/icons/BTCallMethod.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTCallMethod.svg.import b/addons/limboai/icons/BTCallMethod.svg.import
new file mode 100644
index 0000000..1c78694
--- /dev/null
+++ b/addons/limboai/icons/BTCallMethod.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dkm3ixamy3vh0"
+path="res://.godot/imported/BTCallMethod.svg-f41bac2a2119be3591af9424d2c32d9a.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTCallMethod.svg"
+dest_files=["res://.godot/imported/BTCallMethod.svg-f41bac2a2119be3591af9424d2c32d9a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTCheckAgentProperty.svg b/addons/limboai/icons/BTCheckAgentProperty.svg
new file mode 100644
index 0000000..6c869c3
--- /dev/null
+++ b/addons/limboai/icons/BTCheckAgentProperty.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTCheckAgentProperty.svg.import b/addons/limboai/icons/BTCheckAgentProperty.svg.import
new file mode 100644
index 0000000..60433ac
--- /dev/null
+++ b/addons/limboai/icons/BTCheckAgentProperty.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://vl3g7c882dui"
+path="res://.godot/imported/BTCheckAgentProperty.svg-2ed4c1d109d23a5287ed6f1262e23f15.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTCheckAgentProperty.svg"
+dest_files=["res://.godot/imported/BTCheckAgentProperty.svg-2ed4c1d109d23a5287ed6f1262e23f15.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTCheckTrigger.svg b/addons/limboai/icons/BTCheckTrigger.svg
new file mode 100644
index 0000000..2a59673
--- /dev/null
+++ b/addons/limboai/icons/BTCheckTrigger.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTCheckTrigger.svg.import b/addons/limboai/icons/BTCheckTrigger.svg.import
new file mode 100644
index 0000000..6b7f101
--- /dev/null
+++ b/addons/limboai/icons/BTCheckTrigger.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cncibjaw3hb64"
+path="res://.godot/imported/BTCheckTrigger.svg-79349468c66ee41b0a126720f8ecda55.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTCheckTrigger.svg"
+dest_files=["res://.godot/imported/BTCheckTrigger.svg-79349468c66ee41b0a126720f8ecda55.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTCheckVar.svg b/addons/limboai/icons/BTCheckVar.svg
new file mode 100644
index 0000000..150a4f2
--- /dev/null
+++ b/addons/limboai/icons/BTCheckVar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTCheckVar.svg.import b/addons/limboai/icons/BTCheckVar.svg.import
new file mode 100644
index 0000000..be6a890
--- /dev/null
+++ b/addons/limboai/icons/BTCheckVar.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dogme2t8olgoi"
+path="res://.godot/imported/BTCheckVar.svg-7b3af543bb4450e9a6d56df48f06064e.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTCheckVar.svg"
+dest_files=["res://.godot/imported/BTCheckVar.svg-7b3af543bb4450e9a6d56df48f06064e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTComment.svg b/addons/limboai/icons/BTComment.svg
new file mode 100644
index 0000000..66699d4
--- /dev/null
+++ b/addons/limboai/icons/BTComment.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTComment.svg.import b/addons/limboai/icons/BTComment.svg.import
new file mode 100644
index 0000000..f55d9ac
--- /dev/null
+++ b/addons/limboai/icons/BTComment.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://q8ybo6jn3qtu"
+path="res://.godot/imported/BTComment.svg-84a811fb1f7563bc02c1f584b4085d5c.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTComment.svg"
+dest_files=["res://.godot/imported/BTComment.svg-84a811fb1f7563bc02c1f584b4085d5c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTCondition.svg b/addons/limboai/icons/BTCondition.svg
new file mode 100644
index 0000000..7c00015
--- /dev/null
+++ b/addons/limboai/icons/BTCondition.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTCondition.svg.import b/addons/limboai/icons/BTCondition.svg.import
new file mode 100644
index 0000000..c4e0f2b
--- /dev/null
+++ b/addons/limboai/icons/BTCondition.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ja68qegww6v1"
+path="res://.godot/imported/BTCondition.svg-546aa4361ccfe650098b5f6867299d1a.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTCondition.svg"
+dest_files=["res://.godot/imported/BTCondition.svg-546aa4361ccfe650098b5f6867299d1a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTConsolePrint.svg b/addons/limboai/icons/BTConsolePrint.svg
new file mode 100644
index 0000000..cee42eb
--- /dev/null
+++ b/addons/limboai/icons/BTConsolePrint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTConsolePrint.svg.import b/addons/limboai/icons/BTConsolePrint.svg.import
new file mode 100644
index 0000000..de62f8b
--- /dev/null
+++ b/addons/limboai/icons/BTConsolePrint.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://vd438ornqlag"
+path="res://.godot/imported/BTConsolePrint.svg-4190426bb73da16c143878c233af4bc3.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTConsolePrint.svg"
+dest_files=["res://.godot/imported/BTConsolePrint.svg-4190426bb73da16c143878c233af4bc3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTCooldown.svg b/addons/limboai/icons/BTCooldown.svg
new file mode 100644
index 0000000..2c6a237
--- /dev/null
+++ b/addons/limboai/icons/BTCooldown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTCooldown.svg.import b/addons/limboai/icons/BTCooldown.svg.import
new file mode 100644
index 0000000..79f0cfb
--- /dev/null
+++ b/addons/limboai/icons/BTCooldown.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c1ctsvvi5pb4o"
+path="res://.godot/imported/BTCooldown.svg-b168adee5e8762abc08102408ea327d5.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTCooldown.svg"
+dest_files=["res://.godot/imported/BTCooldown.svg-b168adee5e8762abc08102408ea327d5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTDecorator.svg b/addons/limboai/icons/BTDecorator.svg
new file mode 100644
index 0000000..faac1ab
--- /dev/null
+++ b/addons/limboai/icons/BTDecorator.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTDecorator.svg.import b/addons/limboai/icons/BTDecorator.svg.import
new file mode 100644
index 0000000..c99a967
--- /dev/null
+++ b/addons/limboai/icons/BTDecorator.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://du7tqnydsy4dl"
+path="res://.godot/imported/BTDecorator.svg-dae9ebd6f4667ba4d2ac62518ef141d6.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTDecorator.svg"
+dest_files=["res://.godot/imported/BTDecorator.svg-dae9ebd6f4667ba4d2ac62518ef141d6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTDelay.svg b/addons/limboai/icons/BTDelay.svg
new file mode 100644
index 0000000..2c6a237
--- /dev/null
+++ b/addons/limboai/icons/BTDelay.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTDelay.svg.import b/addons/limboai/icons/BTDelay.svg.import
new file mode 100644
index 0000000..826f0a0
--- /dev/null
+++ b/addons/limboai/icons/BTDelay.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c1pwxmpud32mm"
+path="res://.godot/imported/BTDelay.svg-1eb814224ebee27c668e10a73d85b845.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTDelay.svg"
+dest_files=["res://.godot/imported/BTDelay.svg-1eb814224ebee27c668e10a73d85b845.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTDynamicSelector.svg b/addons/limboai/icons/BTDynamicSelector.svg
new file mode 100644
index 0000000..b9c8f02
--- /dev/null
+++ b/addons/limboai/icons/BTDynamicSelector.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTDynamicSelector.svg.import b/addons/limboai/icons/BTDynamicSelector.svg.import
new file mode 100644
index 0000000..e36a81c
--- /dev/null
+++ b/addons/limboai/icons/BTDynamicSelector.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dl2e6h2n41774"
+path="res://.godot/imported/BTDynamicSelector.svg-d88a1aa9fb8d8826b74e69dad4c99f54.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTDynamicSelector.svg"
+dest_files=["res://.godot/imported/BTDynamicSelector.svg-d88a1aa9fb8d8826b74e69dad4c99f54.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTDynamicSequence.svg b/addons/limboai/icons/BTDynamicSequence.svg
new file mode 100644
index 0000000..86c8f54
--- /dev/null
+++ b/addons/limboai/icons/BTDynamicSequence.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTDynamicSequence.svg.import b/addons/limboai/icons/BTDynamicSequence.svg.import
new file mode 100644
index 0000000..f9fb440
--- /dev/null
+++ b/addons/limboai/icons/BTDynamicSequence.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c6tkjss41nlxn"
+path="res://.godot/imported/BTDynamicSequence.svg-d2b6a83c37a1553bc168a9837ae0cb1d.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTDynamicSequence.svg"
+dest_files=["res://.godot/imported/BTDynamicSequence.svg-d2b6a83c37a1553bc168a9837ae0cb1d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTEvaluateExpression.svg b/addons/limboai/icons/BTEvaluateExpression.svg
new file mode 100644
index 0000000..d1cf36f
--- /dev/null
+++ b/addons/limboai/icons/BTEvaluateExpression.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTEvaluateExpression.svg.import b/addons/limboai/icons/BTEvaluateExpression.svg.import
new file mode 100644
index 0000000..1b1a48d
--- /dev/null
+++ b/addons/limboai/icons/BTEvaluateExpression.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bfug5mtpo1orw"
+path="res://.godot/imported/BTEvaluateExpression.svg-d9edc0d3cf9dd54c6a34ffc8a23bf8e3.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTEvaluateExpression.svg"
+dest_files=["res://.godot/imported/BTEvaluateExpression.svg-d9edc0d3cf9dd54c6a34ffc8a23bf8e3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTFail.svg b/addons/limboai/icons/BTFail.svg
new file mode 100644
index 0000000..7be2920
--- /dev/null
+++ b/addons/limboai/icons/BTFail.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTFail.svg.import b/addons/limboai/icons/BTFail.svg.import
new file mode 100644
index 0000000..51c0940
--- /dev/null
+++ b/addons/limboai/icons/BTFail.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bxkdnsya4y3hr"
+path="res://.godot/imported/BTFail.svg-0440819265455ee47b2cf2ca8f1b8018.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTFail.svg"
+dest_files=["res://.godot/imported/BTFail.svg-0440819265455ee47b2cf2ca8f1b8018.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTForEach.svg b/addons/limboai/icons/BTForEach.svg
new file mode 100644
index 0000000..819c0ed
--- /dev/null
+++ b/addons/limboai/icons/BTForEach.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTForEach.svg.import b/addons/limboai/icons/BTForEach.svg.import
new file mode 100644
index 0000000..1d6bf2c
--- /dev/null
+++ b/addons/limboai/icons/BTForEach.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bh2tp63bmvyku"
+path="res://.godot/imported/BTForEach.svg-4ca6daee422cda100144e3414286df7f.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTForEach.svg"
+dest_files=["res://.godot/imported/BTForEach.svg-4ca6daee422cda100144e3414286df7f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTInvert.svg b/addons/limboai/icons/BTInvert.svg
new file mode 100644
index 0000000..31be0d5
--- /dev/null
+++ b/addons/limboai/icons/BTInvert.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTInvert.svg.import b/addons/limboai/icons/BTInvert.svg.import
new file mode 100644
index 0000000..91a97a2
--- /dev/null
+++ b/addons/limboai/icons/BTInvert.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bf1qwuavp48o5"
+path="res://.godot/imported/BTInvert.svg-19687b5c798f968b9610763066baa2a0.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTInvert.svg"
+dest_files=["res://.godot/imported/BTInvert.svg-19687b5c798f968b9610763066baa2a0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTNewScope.svg b/addons/limboai/icons/BTNewScope.svg
new file mode 100644
index 0000000..598d39b
--- /dev/null
+++ b/addons/limboai/icons/BTNewScope.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTNewScope.svg.import b/addons/limboai/icons/BTNewScope.svg.import
new file mode 100644
index 0000000..8875406
--- /dev/null
+++ b/addons/limboai/icons/BTNewScope.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dkblguri8go3t"
+path="res://.godot/imported/BTNewScope.svg-d536a90c30773badb76653d8c928cfe0.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTNewScope.svg"
+dest_files=["res://.godot/imported/BTNewScope.svg-d536a90c30773badb76653d8c928cfe0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTParallel.svg b/addons/limboai/icons/BTParallel.svg
new file mode 100644
index 0000000..7ee727a
--- /dev/null
+++ b/addons/limboai/icons/BTParallel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTParallel.svg.import b/addons/limboai/icons/BTParallel.svg.import
new file mode 100644
index 0000000..ac64865
--- /dev/null
+++ b/addons/limboai/icons/BTParallel.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ddjgkxq6rbwu5"
+path="res://.godot/imported/BTParallel.svg-54126e7f374b26a890ddd82c580db45c.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTParallel.svg"
+dest_files=["res://.godot/imported/BTParallel.svg-54126e7f374b26a890ddd82c580db45c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTPauseAnimation.svg b/addons/limboai/icons/BTPauseAnimation.svg
new file mode 100644
index 0000000..d0878cd
--- /dev/null
+++ b/addons/limboai/icons/BTPauseAnimation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTPauseAnimation.svg.import b/addons/limboai/icons/BTPauseAnimation.svg.import
new file mode 100644
index 0000000..88f20f4
--- /dev/null
+++ b/addons/limboai/icons/BTPauseAnimation.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c4lv2cus21ys0"
+path="res://.godot/imported/BTPauseAnimation.svg-e1bc0cf7bcd45a0faa047192242d174b.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTPauseAnimation.svg"
+dest_files=["res://.godot/imported/BTPauseAnimation.svg-e1bc0cf7bcd45a0faa047192242d174b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTPlayAnimation.svg b/addons/limboai/icons/BTPlayAnimation.svg
new file mode 100644
index 0000000..d387bf6
--- /dev/null
+++ b/addons/limboai/icons/BTPlayAnimation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTPlayAnimation.svg.import b/addons/limboai/icons/BTPlayAnimation.svg.import
new file mode 100644
index 0000000..c2138c3
--- /dev/null
+++ b/addons/limboai/icons/BTPlayAnimation.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://o4vi45kokhkm"
+path="res://.godot/imported/BTPlayAnimation.svg-8821f3b3413b9b328414add0e843468c.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTPlayAnimation.svg"
+dest_files=["res://.godot/imported/BTPlayAnimation.svg-8821f3b3413b9b328414add0e843468c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTPlayer.svg b/addons/limboai/icons/BTPlayer.svg
new file mode 100644
index 0000000..7a874c7
--- /dev/null
+++ b/addons/limboai/icons/BTPlayer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTPlayer.svg.import b/addons/limboai/icons/BTPlayer.svg.import
new file mode 100644
index 0000000..6b695d1
--- /dev/null
+++ b/addons/limboai/icons/BTPlayer.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b6qnuqqrpv8k"
+path="res://.godot/imported/BTPlayer.svg-ed7adc3cf4a0f3daa1e17a1a77e9a3a2.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTPlayer.svg"
+dest_files=["res://.godot/imported/BTPlayer.svg-ed7adc3cf4a0f3daa1e17a1a77e9a3a2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTProbability.svg b/addons/limboai/icons/BTProbability.svg
new file mode 100644
index 0000000..b1a90d9
--- /dev/null
+++ b/addons/limboai/icons/BTProbability.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTProbability.svg.import b/addons/limboai/icons/BTProbability.svg.import
new file mode 100644
index 0000000..a968465
--- /dev/null
+++ b/addons/limboai/icons/BTProbability.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://m0efsybbpsek"
+path="res://.godot/imported/BTProbability.svg-f691fbf51ca49bc268a17742b1e04985.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTProbability.svg"
+dest_files=["res://.godot/imported/BTProbability.svg-f691fbf51ca49bc268a17742b1e04985.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTProbabilitySelector.svg b/addons/limboai/icons/BTProbabilitySelector.svg
new file mode 100644
index 0000000..f9516a1
--- /dev/null
+++ b/addons/limboai/icons/BTProbabilitySelector.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTProbabilitySelector.svg.import b/addons/limboai/icons/BTProbabilitySelector.svg.import
new file mode 100644
index 0000000..dbc8001
--- /dev/null
+++ b/addons/limboai/icons/BTProbabilitySelector.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d10xv0ps7u44a"
+path="res://.godot/imported/BTProbabilitySelector.svg-30f59f4e802f72a701d9d31f605a64f2.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTProbabilitySelector.svg"
+dest_files=["res://.godot/imported/BTProbabilitySelector.svg-30f59f4e802f72a701d9d31f605a64f2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTRandomSelector.svg b/addons/limboai/icons/BTRandomSelector.svg
new file mode 100644
index 0000000..6dd87d1
--- /dev/null
+++ b/addons/limboai/icons/BTRandomSelector.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTRandomSelector.svg.import b/addons/limboai/icons/BTRandomSelector.svg.import
new file mode 100644
index 0000000..1a9dc4e
--- /dev/null
+++ b/addons/limboai/icons/BTRandomSelector.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dsjtxqxmv7iv2"
+path="res://.godot/imported/BTRandomSelector.svg-4bae5a6e3e1affdd4952e8bff4c018ff.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTRandomSelector.svg"
+dest_files=["res://.godot/imported/BTRandomSelector.svg-4bae5a6e3e1affdd4952e8bff4c018ff.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTRandomSequence.svg b/addons/limboai/icons/BTRandomSequence.svg
new file mode 100644
index 0000000..ff21602
--- /dev/null
+++ b/addons/limboai/icons/BTRandomSequence.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTRandomSequence.svg.import b/addons/limboai/icons/BTRandomSequence.svg.import
new file mode 100644
index 0000000..da82ecb
--- /dev/null
+++ b/addons/limboai/icons/BTRandomSequence.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dk1wj7syve67c"
+path="res://.godot/imported/BTRandomSequence.svg-85ce4b080ec904d340a807de2669110d.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTRandomSequence.svg"
+dest_files=["res://.godot/imported/BTRandomSequence.svg-85ce4b080ec904d340a807de2669110d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTRandomWait.svg b/addons/limboai/icons/BTRandomWait.svg
new file mode 100644
index 0000000..8174e2a
--- /dev/null
+++ b/addons/limboai/icons/BTRandomWait.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTRandomWait.svg.import b/addons/limboai/icons/BTRandomWait.svg.import
new file mode 100644
index 0000000..7b0c485
--- /dev/null
+++ b/addons/limboai/icons/BTRandomWait.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://0d54chkcu8tl"
+path="res://.godot/imported/BTRandomWait.svg-14f03a0fb52c993ec1cdbb780d9dfea3.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTRandomWait.svg"
+dest_files=["res://.godot/imported/BTRandomWait.svg-14f03a0fb52c993ec1cdbb780d9dfea3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTRepeat.svg b/addons/limboai/icons/BTRepeat.svg
new file mode 100644
index 0000000..d937bcf
--- /dev/null
+++ b/addons/limboai/icons/BTRepeat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTRepeat.svg.import b/addons/limboai/icons/BTRepeat.svg.import
new file mode 100644
index 0000000..4b7f7d5
--- /dev/null
+++ b/addons/limboai/icons/BTRepeat.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cufqqr4t7wynk"
+path="res://.godot/imported/BTRepeat.svg-ca1efcf8bdef890d4575f2bf66ba0a8d.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTRepeat.svg"
+dest_files=["res://.godot/imported/BTRepeat.svg-ca1efcf8bdef890d4575f2bf66ba0a8d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTRepeatUntilFailure.svg b/addons/limboai/icons/BTRepeatUntilFailure.svg
new file mode 100644
index 0000000..88b1261
--- /dev/null
+++ b/addons/limboai/icons/BTRepeatUntilFailure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTRepeatUntilFailure.svg.import b/addons/limboai/icons/BTRepeatUntilFailure.svg.import
new file mode 100644
index 0000000..3261b7d
--- /dev/null
+++ b/addons/limboai/icons/BTRepeatUntilFailure.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d2qnqeffikk74"
+path="res://.godot/imported/BTRepeatUntilFailure.svg-97ff99132cb6b229bb78050959a89118.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTRepeatUntilFailure.svg"
+dest_files=["res://.godot/imported/BTRepeatUntilFailure.svg-97ff99132cb6b229bb78050959a89118.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTRepeatUntilSuccess.svg b/addons/limboai/icons/BTRepeatUntilSuccess.svg
new file mode 100644
index 0000000..9087ce4
--- /dev/null
+++ b/addons/limboai/icons/BTRepeatUntilSuccess.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTRepeatUntilSuccess.svg.import b/addons/limboai/icons/BTRepeatUntilSuccess.svg.import
new file mode 100644
index 0000000..bfe9d0e
--- /dev/null
+++ b/addons/limboai/icons/BTRepeatUntilSuccess.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://1hecy64mwa4s"
+path="res://.godot/imported/BTRepeatUntilSuccess.svg-160e74b6885a57a745db349d6f7004a8.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTRepeatUntilSuccess.svg"
+dest_files=["res://.godot/imported/BTRepeatUntilSuccess.svg-160e74b6885a57a745db349d6f7004a8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTRunLimit.svg b/addons/limboai/icons/BTRunLimit.svg
new file mode 100644
index 0000000..1ac7fa1
--- /dev/null
+++ b/addons/limboai/icons/BTRunLimit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTRunLimit.svg.import b/addons/limboai/icons/BTRunLimit.svg.import
new file mode 100644
index 0000000..0f14f39
--- /dev/null
+++ b/addons/limboai/icons/BTRunLimit.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bc8dnsep3dpio"
+path="res://.godot/imported/BTRunLimit.svg-eb80a597bf9102a626f8c0e9663703d1.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTRunLimit.svg"
+dest_files=["res://.godot/imported/BTRunLimit.svg-eb80a597bf9102a626f8c0e9663703d1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTSelector.svg b/addons/limboai/icons/BTSelector.svg
new file mode 100644
index 0000000..d7cafe5
--- /dev/null
+++ b/addons/limboai/icons/BTSelector.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTSelector.svg.import b/addons/limboai/icons/BTSelector.svg.import
new file mode 100644
index 0000000..fe49e20
--- /dev/null
+++ b/addons/limboai/icons/BTSelector.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://brx2og56pgjdm"
+path="res://.godot/imported/BTSelector.svg-859c7746bc77c632d2a60052d2e96cf0.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTSelector.svg"
+dest_files=["res://.godot/imported/BTSelector.svg-859c7746bc77c632d2a60052d2e96cf0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTSequence.svg b/addons/limboai/icons/BTSequence.svg
new file mode 100644
index 0000000..7eb8f6f
--- /dev/null
+++ b/addons/limboai/icons/BTSequence.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTSequence.svg.import b/addons/limboai/icons/BTSequence.svg.import
new file mode 100644
index 0000000..d06180c
--- /dev/null
+++ b/addons/limboai/icons/BTSequence.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b76g8k2lwsiql"
+path="res://.godot/imported/BTSequence.svg-3dfd257b3424273ac1ea2f8a48dab7b6.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTSequence.svg"
+dest_files=["res://.godot/imported/BTSequence.svg-3dfd257b3424273ac1ea2f8a48dab7b6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTSetAgentProperty.svg b/addons/limboai/icons/BTSetAgentProperty.svg
new file mode 100644
index 0000000..c92a710
--- /dev/null
+++ b/addons/limboai/icons/BTSetAgentProperty.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTSetAgentProperty.svg.import b/addons/limboai/icons/BTSetAgentProperty.svg.import
new file mode 100644
index 0000000..aca90cc
--- /dev/null
+++ b/addons/limboai/icons/BTSetAgentProperty.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dejxmdjrlxw4p"
+path="res://.godot/imported/BTSetAgentProperty.svg-8183ecffb47d990ae67daaad34563dc5.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTSetAgentProperty.svg"
+dest_files=["res://.godot/imported/BTSetAgentProperty.svg-8183ecffb47d990ae67daaad34563dc5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTSetVar.svg b/addons/limboai/icons/BTSetVar.svg
new file mode 100644
index 0000000..09f6822
--- /dev/null
+++ b/addons/limboai/icons/BTSetVar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTSetVar.svg.import b/addons/limboai/icons/BTSetVar.svg.import
new file mode 100644
index 0000000..25bae43
--- /dev/null
+++ b/addons/limboai/icons/BTSetVar.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c7hpnuoq5ysre"
+path="res://.godot/imported/BTSetVar.svg-a8c4f135c2df6bc3f587cbd9f1fe2d95.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTSetVar.svg"
+dest_files=["res://.godot/imported/BTSetVar.svg-a8c4f135c2df6bc3f587cbd9f1fe2d95.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTState.svg b/addons/limboai/icons/BTState.svg
new file mode 100644
index 0000000..7a874c7
--- /dev/null
+++ b/addons/limboai/icons/BTState.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTState.svg.import b/addons/limboai/icons/BTState.svg.import
new file mode 100644
index 0000000..dc98758
--- /dev/null
+++ b/addons/limboai/icons/BTState.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://baruouu456oos"
+path="res://.godot/imported/BTState.svg-71220d904fcc42cc20dd0af8145f86a0.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTState.svg"
+dest_files=["res://.godot/imported/BTState.svg-71220d904fcc42cc20dd0af8145f86a0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTStopAnimation.svg b/addons/limboai/icons/BTStopAnimation.svg
new file mode 100644
index 0000000..973b542
--- /dev/null
+++ b/addons/limboai/icons/BTStopAnimation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTStopAnimation.svg.import b/addons/limboai/icons/BTStopAnimation.svg.import
new file mode 100644
index 0000000..41f0ec7
--- /dev/null
+++ b/addons/limboai/icons/BTStopAnimation.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://by2uf64rd4d0j"
+path="res://.godot/imported/BTStopAnimation.svg-ea88498cd747a6218f7853f6be3ded34.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTStopAnimation.svg"
+dest_files=["res://.godot/imported/BTStopAnimation.svg-ea88498cd747a6218f7853f6be3ded34.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTSubtree.svg b/addons/limboai/icons/BTSubtree.svg
new file mode 100644
index 0000000..e95ffee
--- /dev/null
+++ b/addons/limboai/icons/BTSubtree.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTSubtree.svg.import b/addons/limboai/icons/BTSubtree.svg.import
new file mode 100644
index 0000000..9fc91d8
--- /dev/null
+++ b/addons/limboai/icons/BTSubtree.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://nyw10tyoiuns"
+path="res://.godot/imported/BTSubtree.svg-aa8f2ece5e71aca9132a08c7af1c1ce5.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTSubtree.svg"
+dest_files=["res://.godot/imported/BTSubtree.svg-aa8f2ece5e71aca9132a08c7af1c1ce5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTTimeLimit.svg b/addons/limboai/icons/BTTimeLimit.svg
new file mode 100644
index 0000000..2c6a237
--- /dev/null
+++ b/addons/limboai/icons/BTTimeLimit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTTimeLimit.svg.import b/addons/limboai/icons/BTTimeLimit.svg.import
new file mode 100644
index 0000000..12cf285
--- /dev/null
+++ b/addons/limboai/icons/BTTimeLimit.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cu3jkagvctvi3"
+path="res://.godot/imported/BTTimeLimit.svg-ea3ca26eeb5c2b59f3fdb6e806985f3b.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTTimeLimit.svg"
+dest_files=["res://.godot/imported/BTTimeLimit.svg-ea3ca26eeb5c2b59f3fdb6e806985f3b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTWait.svg b/addons/limboai/icons/BTWait.svg
new file mode 100644
index 0000000..8174e2a
--- /dev/null
+++ b/addons/limboai/icons/BTWait.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTWait.svg.import b/addons/limboai/icons/BTWait.svg.import
new file mode 100644
index 0000000..66cabb3
--- /dev/null
+++ b/addons/limboai/icons/BTWait.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c4dxqgds4k5mo"
+path="res://.godot/imported/BTWait.svg-2a5d27d0c617861f027b2e66516aa5bf.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTWait.svg"
+dest_files=["res://.godot/imported/BTWait.svg-2a5d27d0c617861f027b2e66516aa5bf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BTWaitTicks.svg b/addons/limboai/icons/BTWaitTicks.svg
new file mode 100644
index 0000000..8174e2a
--- /dev/null
+++ b/addons/limboai/icons/BTWaitTicks.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BTWaitTicks.svg.import b/addons/limboai/icons/BTWaitTicks.svg.import
new file mode 100644
index 0000000..bbd31e3
--- /dev/null
+++ b/addons/limboai/icons/BTWaitTicks.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cj4wkocu2jc3"
+path="res://.godot/imported/BTWaitTicks.svg-85a005f86874f6811423163f3f5673b2.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BTWaitTicks.svg"
+dest_files=["res://.godot/imported/BTWaitTicks.svg-85a005f86874f6811423163f3f5673b2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BehaviorTree.svg b/addons/limboai/icons/BehaviorTree.svg
new file mode 100644
index 0000000..e95ffee
--- /dev/null
+++ b/addons/limboai/icons/BehaviorTree.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BehaviorTree.svg.import b/addons/limboai/icons/BehaviorTree.svg.import
new file mode 100644
index 0000000..491dd99
--- /dev/null
+++ b/addons/limboai/icons/BehaviorTree.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b4q36mvgvosow"
+path="res://.godot/imported/BehaviorTree.svg-9b40a8b5e1feb368d9f11b0fb1785cca.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BehaviorTree.svg"
+dest_files=["res://.godot/imported/BehaviorTree.svg-9b40a8b5e1feb368d9f11b0fb1785cca.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BehaviorTreeView.svg b/addons/limboai/icons/BehaviorTreeView.svg
new file mode 100644
index 0000000..8deff60
--- /dev/null
+++ b/addons/limboai/icons/BehaviorTreeView.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BehaviorTreeView.svg.import b/addons/limboai/icons/BehaviorTreeView.svg.import
new file mode 100644
index 0000000..e8fa962
--- /dev/null
+++ b/addons/limboai/icons/BehaviorTreeView.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cq0glhq4ee4uj"
+path="res://.godot/imported/BehaviorTreeView.svg-15f9bfa321ed4a264ed8404fd13b53fc.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BehaviorTreeView.svg"
+dest_files=["res://.godot/imported/BehaviorTreeView.svg-15f9bfa321ed4a264ed8404fd13b53fc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/BlackboardPlan.svg b/addons/limboai/icons/BlackboardPlan.svg
new file mode 100644
index 0000000..958fba3
--- /dev/null
+++ b/addons/limboai/icons/BlackboardPlan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/BlackboardPlan.svg.import b/addons/limboai/icons/BlackboardPlan.svg.import
new file mode 100644
index 0000000..1ec8e4d
--- /dev/null
+++ b/addons/limboai/icons/BlackboardPlan.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dqescemdcf0do"
+path="res://.godot/imported/BlackboardPlan.svg-9029b7aa87de8b935d9cad63480a6a16.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/BlackboardPlan.svg"
+dest_files=["res://.godot/imported/BlackboardPlan.svg-9029b7aa87de8b935d9cad63480a6a16.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboAI.svg b/addons/limboai/icons/LimboAI.svg
new file mode 100644
index 0000000..54b042a
--- /dev/null
+++ b/addons/limboai/icons/LimboAI.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboAI.svg.import b/addons/limboai/icons/LimboAI.svg.import
new file mode 100644
index 0000000..2891848
--- /dev/null
+++ b/addons/limboai/icons/LimboAI.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cfoo4u2hlrscn"
+path="res://.godot/imported/LimboAI.svg-06efe3b51f2fc280e33c37672e174b5e.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboAI.svg"
+dest_files=["res://.godot/imported/LimboAI.svg-06efe3b51f2fc280e33c37672e174b5e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboDeselectAll.svg b/addons/limboai/icons/LimboDeselectAll.svg
new file mode 100644
index 0000000..2047080
--- /dev/null
+++ b/addons/limboai/icons/LimboDeselectAll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboDeselectAll.svg.import b/addons/limboai/icons/LimboDeselectAll.svg.import
new file mode 100644
index 0000000..4867777
--- /dev/null
+++ b/addons/limboai/icons/LimboDeselectAll.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://darlh30k514tp"
+path="res://.godot/imported/LimboDeselectAll.svg-72ebb41c0238cae163a7bf3fc821e6ad.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboDeselectAll.svg"
+dest_files=["res://.godot/imported/LimboDeselectAll.svg-72ebb41c0238cae163a7bf3fc821e6ad.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboEditBlackboard.svg b/addons/limboai/icons/LimboEditBlackboard.svg
new file mode 100644
index 0000000..45ffb92
--- /dev/null
+++ b/addons/limboai/icons/LimboEditBlackboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboEditBlackboard.svg.import b/addons/limboai/icons/LimboEditBlackboard.svg.import
new file mode 100644
index 0000000..0a6e4bc
--- /dev/null
+++ b/addons/limboai/icons/LimboEditBlackboard.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://osq7kym6q22m"
+path="res://.godot/imported/LimboEditBlackboard.svg-eacd7cf985d654974a99a4009ffcc125.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboEditBlackboard.svg"
+dest_files=["res://.godot/imported/LimboEditBlackboard.svg-eacd7cf985d654974a99a4009ffcc125.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboExtraBlackboard.svg b/addons/limboai/icons/LimboExtraBlackboard.svg
new file mode 100644
index 0000000..09f6822
--- /dev/null
+++ b/addons/limboai/icons/LimboExtraBlackboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboExtraBlackboard.svg.import b/addons/limboai/icons/LimboExtraBlackboard.svg.import
new file mode 100644
index 0000000..8925540
--- /dev/null
+++ b/addons/limboai/icons/LimboExtraBlackboard.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bolwxy28idi8n"
+path="res://.godot/imported/LimboExtraBlackboard.svg-45ef3f1dea682b1da438186cfcc0f47b.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboExtraBlackboard.svg"
+dest_files=["res://.godot/imported/LimboExtraBlackboard.svg-45ef3f1dea682b1da438186cfcc0f47b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboExtraClock.svg b/addons/limboai/icons/LimboExtraClock.svg
new file mode 100644
index 0000000..a3f536a
--- /dev/null
+++ b/addons/limboai/icons/LimboExtraClock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboExtraClock.svg.import b/addons/limboai/icons/LimboExtraClock.svg.import
new file mode 100644
index 0000000..f1f3b74
--- /dev/null
+++ b/addons/limboai/icons/LimboExtraClock.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bhut3tokd1621"
+path="res://.godot/imported/LimboExtraClock.svg-840321103249948265bce58e6fb69483.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboExtraClock.svg"
+dest_files=["res://.godot/imported/LimboExtraClock.svg-840321103249948265bce58e6fb69483.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboExtraVariable.svg b/addons/limboai/icons/LimboExtraVariable.svg
new file mode 100644
index 0000000..06780f0
--- /dev/null
+++ b/addons/limboai/icons/LimboExtraVariable.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboExtraVariable.svg.import b/addons/limboai/icons/LimboExtraVariable.svg.import
new file mode 100644
index 0000000..c35e79e
--- /dev/null
+++ b/addons/limboai/icons/LimboExtraVariable.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c3xj2ji3knnkr"
+path="res://.godot/imported/LimboExtraVariable.svg-dc718672cf9e469886aa48452fdda7b0.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboExtraVariable.svg"
+dest_files=["res://.godot/imported/LimboExtraVariable.svg-dc718672cf9e469886aa48452fdda7b0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboExtractSubtree.svg b/addons/limboai/icons/LimboExtractSubtree.svg
new file mode 100644
index 0000000..c3c83a2
--- /dev/null
+++ b/addons/limboai/icons/LimboExtractSubtree.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboExtractSubtree.svg.import b/addons/limboai/icons/LimboExtractSubtree.svg.import
new file mode 100644
index 0000000..9019338
--- /dev/null
+++ b/addons/limboai/icons/LimboExtractSubtree.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bnbvo3g0ei4i3"
+path="res://.godot/imported/LimboExtractSubtree.svg-84e8d198d3be4b2b8d625d3621368079.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboExtractSubtree.svg"
+dest_files=["res://.godot/imported/LimboExtractSubtree.svg-84e8d198d3be4b2b8d625d3621368079.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboHSM.svg b/addons/limboai/icons/LimboHSM.svg
new file mode 100644
index 0000000..095cfd4
--- /dev/null
+++ b/addons/limboai/icons/LimboHSM.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboHSM.svg.import b/addons/limboai/icons/LimboHSM.svg.import
new file mode 100644
index 0000000..d2bb8bf
--- /dev/null
+++ b/addons/limboai/icons/LimboHSM.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dhvo1gpde1wr7"
+path="res://.godot/imported/LimboHSM.svg-28cca67d246d589dd15402abd78a1ec2.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboHSM.svg"
+dest_files=["res://.godot/imported/LimboHSM.svg-28cca67d246d589dd15402abd78a1ec2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboPercent.svg b/addons/limboai/icons/LimboPercent.svg
new file mode 100644
index 0000000..8f60917
--- /dev/null
+++ b/addons/limboai/icons/LimboPercent.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboPercent.svg.import b/addons/limboai/icons/LimboPercent.svg.import
new file mode 100644
index 0000000..b461ec2
--- /dev/null
+++ b/addons/limboai/icons/LimboPercent.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ch7j58ffmyw1q"
+path="res://.godot/imported/LimboPercent.svg-00733fc19fb3bbe7f8396b1f07a89da0.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboPercent.svg"
+dest_files=["res://.godot/imported/LimboPercent.svg-00733fc19fb3bbe7f8396b1f07a89da0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboSelectAll.svg b/addons/limboai/icons/LimboSelectAll.svg
new file mode 100644
index 0000000..fd3df37
--- /dev/null
+++ b/addons/limboai/icons/LimboSelectAll.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboSelectAll.svg.import b/addons/limboai/icons/LimboSelectAll.svg.import
new file mode 100644
index 0000000..f98d88f
--- /dev/null
+++ b/addons/limboai/icons/LimboSelectAll.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bi2fdmdrka5ni"
+path="res://.godot/imported/LimboSelectAll.svg-db7b91d0d0b530b8e41c9d3772e60fab.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboSelectAll.svg"
+dest_files=["res://.godot/imported/LimboSelectAll.svg-db7b91d0d0b530b8e41c9d3772e60fab.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboState.svg b/addons/limboai/icons/LimboState.svg
new file mode 100644
index 0000000..dd8e765
--- /dev/null
+++ b/addons/limboai/icons/LimboState.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboState.svg.import b/addons/limboai/icons/LimboState.svg.import
new file mode 100644
index 0000000..e15d444
--- /dev/null
+++ b/addons/limboai/icons/LimboState.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://web03dtqqdv2"
+path="res://.godot/imported/LimboState.svg-b1db06d5ed3101ee6256deae4330f6b7.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboState.svg"
+dest_files=["res://.godot/imported/LimboState.svg-b1db06d5ed3101ee6256deae4330f6b7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboVarAdd.svg b/addons/limboai/icons/LimboVarAdd.svg
new file mode 100644
index 0000000..b2910a0
--- /dev/null
+++ b/addons/limboai/icons/LimboVarAdd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboVarAdd.svg.import b/addons/limboai/icons/LimboVarAdd.svg.import
new file mode 100644
index 0000000..3964493
--- /dev/null
+++ b/addons/limboai/icons/LimboVarAdd.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bnqt520rudfxk"
+path="res://.godot/imported/LimboVarAdd.svg-101bcdd036315254e4b61e13747c0788.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboVarAdd.svg"
+dest_files=["res://.godot/imported/LimboVarAdd.svg-101bcdd036315254e4b61e13747c0788.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboVarEmpty.svg b/addons/limboai/icons/LimboVarEmpty.svg
new file mode 100644
index 0000000..24f5088
--- /dev/null
+++ b/addons/limboai/icons/LimboVarEmpty.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboVarEmpty.svg.import b/addons/limboai/icons/LimboVarEmpty.svg.import
new file mode 100644
index 0000000..3a9934b
--- /dev/null
+++ b/addons/limboai/icons/LimboVarEmpty.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b3wdl8jgith3i"
+path="res://.godot/imported/LimboVarEmpty.svg-3014256fb5cd566cab45b3327d98988d.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboVarEmpty.svg"
+dest_files=["res://.godot/imported/LimboVarEmpty.svg-3014256fb5cd566cab45b3327d98988d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboVarError.svg b/addons/limboai/icons/LimboVarError.svg
new file mode 100644
index 0000000..563d762
--- /dev/null
+++ b/addons/limboai/icons/LimboVarError.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboVarError.svg.import b/addons/limboai/icons/LimboVarError.svg.import
new file mode 100644
index 0000000..0dbdc0b
--- /dev/null
+++ b/addons/limboai/icons/LimboVarError.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://qnlrj2hvxp58"
+path="res://.godot/imported/LimboVarError.svg-d9f1ab3e5b2cbb6e0013b65ddb23c1cf.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboVarError.svg"
+dest_files=["res://.godot/imported/LimboVarError.svg-d9f1ab3e5b2cbb6e0013b65ddb23c1cf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboVarExists.svg b/addons/limboai/icons/LimboVarExists.svg
new file mode 100644
index 0000000..3509c64
--- /dev/null
+++ b/addons/limboai/icons/LimboVarExists.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboVarExists.svg.import b/addons/limboai/icons/LimboVarExists.svg.import
new file mode 100644
index 0000000..c87481a
--- /dev/null
+++ b/addons/limboai/icons/LimboVarExists.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://v3llyfnghlbr"
+path="res://.godot/imported/LimboVarExists.svg-20d2e0b4a7a064b9c6d2cc44711570dd.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboVarExists.svg"
+dest_files=["res://.godot/imported/LimboVarExists.svg-20d2e0b4a7a064b9c6d2cc44711570dd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboVarNotFound.svg b/addons/limboai/icons/LimboVarNotFound.svg
new file mode 100644
index 0000000..049f6cf
--- /dev/null
+++ b/addons/limboai/icons/LimboVarNotFound.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboVarNotFound.svg.import b/addons/limboai/icons/LimboVarNotFound.svg.import
new file mode 100644
index 0000000..4000a4d
--- /dev/null
+++ b/addons/limboai/icons/LimboVarNotFound.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cc8wltkxchlpl"
+path="res://.godot/imported/LimboVarNotFound.svg-fce88dc2c01e17a54455124e43955f9d.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboVarNotFound.svg"
+dest_files=["res://.godot/imported/LimboVarNotFound.svg-fce88dc2c01e17a54455124e43955f9d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/icons/LimboVarPrivate.svg b/addons/limboai/icons/LimboVarPrivate.svg
new file mode 100644
index 0000000..87b2c0f
--- /dev/null
+++ b/addons/limboai/icons/LimboVarPrivate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/limboai/icons/LimboVarPrivate.svg.import b/addons/limboai/icons/LimboVarPrivate.svg.import
new file mode 100644
index 0000000..f450e57
--- /dev/null
+++ b/addons/limboai/icons/LimboVarPrivate.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://de0674bsqwfl6"
+path="res://.godot/imported/LimboVarPrivate.svg-99b4229567f7f98cdabf892099c91da2.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/limboai/icons/LimboVarPrivate.svg"
+dest_files=["res://.godot/imported/LimboVarPrivate.svg-99b4229567f7f98cdabf892099c91da2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/limboai/version.txt b/addons/limboai/version.txt
new file mode 100644
index 0000000..18fa8e7
--- /dev/null
+++ b/addons/limboai/version.txt
@@ -0,0 +1 @@
+v1.3.0
diff --git a/ai/enemy.tres b/ai/enemy.tres
new file mode 100644
index 0000000..80ec026
--- /dev/null
+++ b/ai/enemy.tres
@@ -0,0 +1,126 @@
+[gd_resource type="BehaviorTree" load_steps=28 format=3 uid="uid://db7m2p0at5kmq"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_aewef"]
+var/PlayerDistance/name = &"PlayerDistance"
+var/PlayerDistance/type = 3
+var/PlayerDistance/value = 0.0
+var/PlayerDistance/hint = 0
+var/PlayerDistance/hint_string = ""
+var/LookingAngleToPlayer/name = &"LookingAngleToPlayer"
+var/LookingAngleToPlayer/type = 3
+var/LookingAngleToPlayer/value = 0.0
+var/LookingAngleToPlayer/hint = 0
+var/LookingAngleToPlayer/hint_string = ""
+
+[sub_resource type="BBVariant" id="BBVariant_xy1ol"]
+type = 3
+saved_value = 20.0
+resource_name = "20"
+
+[sub_resource type="BTCheckVar" id="BTCheckVar_7t8wr"]
+variable = &"PlayerDistance"
+check_type = 1
+value = SubResource("BBVariant_xy1ol")
+
+[sub_resource type="BBVariant" id="BBVariant_b57jb"]
+type = 3
+saved_value = 0.75
+resource_name = "0.75"
+
+[sub_resource type="BTCheckVar" id="BTCheckVar_75gjs"]
+variable = &"LookingAngleToPlayer"
+check_type = 3
+value = SubResource("BBVariant_b57jb")
+
+[sub_resource type="BBVariant" id="BBVariant_fnoth"]
+type = 1
+saved_value = true
+resource_name = "true"
+
+[sub_resource type="BBNode" id="BBNode_g13ub"]
+saved_value = NodePath("BTPlayer")
+resource_name = "BTPlayer"
+
+[sub_resource type="BTCallMethod" id="BTCallMethod_esnfv"]
+node = SubResource("BBNode_g13ub")
+method = &"setAggressive"
+args = Array[BBVariant]([SubResource("BBVariant_fnoth")])
+
+[sub_resource type="BBNode" id="BBNode_33tkl"]
+saved_value = NodePath("BTPlayer")
+resource_name = "BTPlayer"
+
+[sub_resource type="BTCallMethod" id="BTCallMethod_rf34d"]
+node = SubResource("BBNode_33tkl")
+method = &"moveToPlayer"
+
+[sub_resource type="BBNode" id="BBNode_qn8c3"]
+saved_value = NodePath("BTPlayer")
+resource_name = "BTPlayer"
+
+[sub_resource type="BTCallMethod" id="BTCallMethod_1c0iq"]
+node = SubResource("BBNode_qn8c3")
+method = &"Fire"
+
+[sub_resource type="BTProbability" id="BTProbability_3bm4s"]
+run_chance = 0.33
+children = [SubResource("BTCallMethod_1c0iq")]
+
+[sub_resource type="BTCooldown" id="BTCooldown_3g17e"]
+duration = 5.0
+process_pause = true
+trigger_on_failure = true
+children = [SubResource("BTProbability_3bm4s")]
+
+[sub_resource type="BTAlwaysSucceed" id="BTAlwaysSucceed_5xj25"]
+children = [SubResource("BTCooldown_3g17e")]
+
+[sub_resource type="BTSequence" id="BTSequence_wtx4r"]
+custom_name = "Enemy Sees Player"
+children = [SubResource("BTCheckVar_7t8wr"), SubResource("BTCheckVar_75gjs"), SubResource("BTCallMethod_esnfv"), SubResource("BTCallMethod_rf34d"), SubResource("BTAlwaysSucceed_5xj25")]
+
+[sub_resource type="BBVariant" id="BBVariant_mxhbj"]
+type = 1
+saved_value = false
+resource_name = "false"
+
+[sub_resource type="BBNode" id="BBNode_sh8d3"]
+saved_value = NodePath("BTPlayer")
+resource_name = "BTPlayer"
+
+[sub_resource type="BTCallMethod" id="BTCallMethod_ns46c"]
+node = SubResource("BBNode_sh8d3")
+method = &"setAggressive"
+args = Array[BBVariant]([SubResource("BBVariant_mxhbj")])
+
+[sub_resource type="BBNode" id="BBNode_dskfg"]
+saved_value = NodePath("BTPlayer")
+resource_name = "BTPlayer"
+
+[sub_resource type="BTCallMethod" id="BTCallMethod_2jcfh"]
+node = SubResource("BBNode_dskfg")
+method = &"roam"
+
+[sub_resource type="BTWait" id="BTWait_4jytf"]
+duration = 4.0
+
+[sub_resource type="BTSequence" id="BTSequence_wkk7c"]
+children = [SubResource("BTCallMethod_2jcfh"), SubResource("BTWait_4jytf")]
+
+[sub_resource type="BTProbability" id="BTProbability_3yptl"]
+run_chance = 0.25
+children = [SubResource("BTSequence_wkk7c")]
+
+[sub_resource type="BTWait" id="BTWait_xq0e8"]
+duration = 4.0
+
+[sub_resource type="BTDynamicSequence" id="BTDynamicSequence_phkns"]
+custom_name = "Enemy doesn't see Player, Roaming"
+children = [SubResource("BTCallMethod_ns46c"), SubResource("BTProbability_3yptl"), SubResource("BTWait_xq0e8")]
+
+[sub_resource type="BTDynamicSelector" id="BTDynamicSelector_28yhc"]
+children = [SubResource("BTSequence_wtx4r"), SubResource("BTDynamicSequence_phkns")]
+
+[resource]
+blackboard_plan = SubResource("BlackboardPlan_aewef")
+root_task = SubResource("BTDynamicSelector_28yhc")
diff --git a/content/cardboard_material.tres b/content/cardboard_material.tres
index e227a85..c416821 100644
--- a/content/cardboard_material.tres
+++ b/content/cardboard_material.tres
@@ -8,6 +8,7 @@
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_4ny28"]
[resource]
+cull_mode = 2
diffuse_mode = 3
specular_mode = 1
albedo_color = Color(0.521141, 0.521141, 0.521141, 1)
diff --git a/content/enemies/animations/Vert_Fire.res b/content/enemies/animations/Vert_Fire.res
new file mode 100644
index 0000000..023a2c4
Binary files /dev/null and b/content/enemies/animations/Vert_Fire.res differ
diff --git a/content/enemies/animations/Vert_Idle.res b/content/enemies/animations/Vert_Idle.res
new file mode 100644
index 0000000..32dcdc1
Binary files /dev/null and b/content/enemies/animations/Vert_Idle.res differ
diff --git a/content/enemies/animations/Vert_Move.res b/content/enemies/animations/Vert_Move.res
new file mode 100644
index 0000000..9145ef7
Binary files /dev/null and b/content/enemies/animations/Vert_Move.res differ
diff --git a/content/enemies/animations/Vert_Move_001.res b/content/enemies/animations/Vert_Move_001.res
new file mode 100644
index 0000000..4d87853
Binary files /dev/null and b/content/enemies/animations/Vert_Move_001.res differ
diff --git a/content/enemies/enemies.fbx b/content/enemies/enemies.fbx
new file mode 100644
index 0000000..3256421
Binary files /dev/null and b/content/enemies/enemies.fbx differ
diff --git a/content/enemies/enemies.fbx.import b/content/enemies/enemies.fbx.import
new file mode 100644
index 0000000..cd7a9e8
--- /dev/null
+++ b/content/enemies/enemies.fbx.import
@@ -0,0 +1,7242 @@
+[remap]
+
+importer="scene"
+importer_version=1
+type="PackedScene"
+uid="uid://o3oir3w6cs1y"
+path="res://.godot/imported/enemies.fbx-69eea5c1d365f745fe45a252a663f2f8.scn"
+
+[deps]
+
+source_file="res://content/enemies/enemies.fbx"
+dest_files=["res://.godot/imported/enemies.fbx-69eea5c1d365f745fe45a252a663f2f8.scn"]
+
+[params]
+
+nodes/root_type=""
+nodes/root_name=""
+nodes/apply_root_scale=true
+nodes/root_scale=1.0
+nodes/import_as_skeleton_bones=false
+meshes/ensure_tangents=true
+meshes/generate_lods=true
+meshes/create_shadow_meshes=true
+meshes/light_baking=1
+meshes/lightmap_texel_size=0.2
+meshes/force_disable_compression=false
+skins/use_named_skins=true
+animation/import=true
+animation/fps=30
+animation/trimming=true
+animation/remove_immutable_tracks=true
+animation/import_rest_as_RESET=false
+import_script/path=""
+_subresources={
+"animations": {
+"Vert|Fire": {
+"save_to_file/enabled": true,
+"save_to_file/keep_custom_tracks": "",
+"save_to_file/path": "res://content/enemies/animations/Vert_Fire.res",
+"settings/loop_mode": 0,
+"slice_1/end_frame": 0,
+"slice_1/loop_mode": 0,
+"slice_1/name": "",
+"slice_1/save_to_file/enabled": false,
+"slice_1/save_to_file/keep_custom_tracks": false,
+"slice_1/save_to_file/path": "",
+"slice_1/start_frame": 0,
+"slice_10/end_frame": 0,
+"slice_10/loop_mode": 0,
+"slice_10/name": "",
+"slice_10/save_to_file/enabled": false,
+"slice_10/save_to_file/keep_custom_tracks": false,
+"slice_10/save_to_file/path": "",
+"slice_10/start_frame": 0,
+"slice_100/end_frame": 0,
+"slice_100/loop_mode": 0,
+"slice_100/name": "",
+"slice_100/save_to_file/enabled": false,
+"slice_100/save_to_file/keep_custom_tracks": false,
+"slice_100/save_to_file/path": "",
+"slice_100/start_frame": 0,
+"slice_101/end_frame": 0,
+"slice_101/loop_mode": 0,
+"slice_101/name": "",
+"slice_101/save_to_file/enabled": false,
+"slice_101/save_to_file/keep_custom_tracks": false,
+"slice_101/save_to_file/path": "",
+"slice_101/start_frame": 0,
+"slice_102/end_frame": 0,
+"slice_102/loop_mode": 0,
+"slice_102/name": "",
+"slice_102/save_to_file/enabled": false,
+"slice_102/save_to_file/keep_custom_tracks": false,
+"slice_102/save_to_file/path": "",
+"slice_102/start_frame": 0,
+"slice_103/end_frame": 0,
+"slice_103/loop_mode": 0,
+"slice_103/name": "",
+"slice_103/save_to_file/enabled": false,
+"slice_103/save_to_file/keep_custom_tracks": false,
+"slice_103/save_to_file/path": "",
+"slice_103/start_frame": 0,
+"slice_104/end_frame": 0,
+"slice_104/loop_mode": 0,
+"slice_104/name": "",
+"slice_104/save_to_file/enabled": false,
+"slice_104/save_to_file/keep_custom_tracks": false,
+"slice_104/save_to_file/path": "",
+"slice_104/start_frame": 0,
+"slice_105/end_frame": 0,
+"slice_105/loop_mode": 0,
+"slice_105/name": "",
+"slice_105/save_to_file/enabled": false,
+"slice_105/save_to_file/keep_custom_tracks": false,
+"slice_105/save_to_file/path": "",
+"slice_105/start_frame": 0,
+"slice_106/end_frame": 0,
+"slice_106/loop_mode": 0,
+"slice_106/name": "",
+"slice_106/save_to_file/enabled": false,
+"slice_106/save_to_file/keep_custom_tracks": false,
+"slice_106/save_to_file/path": "",
+"slice_106/start_frame": 0,
+"slice_107/end_frame": 0,
+"slice_107/loop_mode": 0,
+"slice_107/name": "",
+"slice_107/save_to_file/enabled": false,
+"slice_107/save_to_file/keep_custom_tracks": false,
+"slice_107/save_to_file/path": "",
+"slice_107/start_frame": 0,
+"slice_108/end_frame": 0,
+"slice_108/loop_mode": 0,
+"slice_108/name": "",
+"slice_108/save_to_file/enabled": false,
+"slice_108/save_to_file/keep_custom_tracks": false,
+"slice_108/save_to_file/path": "",
+"slice_108/start_frame": 0,
+"slice_109/end_frame": 0,
+"slice_109/loop_mode": 0,
+"slice_109/name": "",
+"slice_109/save_to_file/enabled": false,
+"slice_109/save_to_file/keep_custom_tracks": false,
+"slice_109/save_to_file/path": "",
+"slice_109/start_frame": 0,
+"slice_11/end_frame": 0,
+"slice_11/loop_mode": 0,
+"slice_11/name": "",
+"slice_11/save_to_file/enabled": false,
+"slice_11/save_to_file/keep_custom_tracks": false,
+"slice_11/save_to_file/path": "",
+"slice_11/start_frame": 0,
+"slice_110/end_frame": 0,
+"slice_110/loop_mode": 0,
+"slice_110/name": "",
+"slice_110/save_to_file/enabled": false,
+"slice_110/save_to_file/keep_custom_tracks": false,
+"slice_110/save_to_file/path": "",
+"slice_110/start_frame": 0,
+"slice_111/end_frame": 0,
+"slice_111/loop_mode": 0,
+"slice_111/name": "",
+"slice_111/save_to_file/enabled": false,
+"slice_111/save_to_file/keep_custom_tracks": false,
+"slice_111/save_to_file/path": "",
+"slice_111/start_frame": 0,
+"slice_112/end_frame": 0,
+"slice_112/loop_mode": 0,
+"slice_112/name": "",
+"slice_112/save_to_file/enabled": false,
+"slice_112/save_to_file/keep_custom_tracks": false,
+"slice_112/save_to_file/path": "",
+"slice_112/start_frame": 0,
+"slice_113/end_frame": 0,
+"slice_113/loop_mode": 0,
+"slice_113/name": "",
+"slice_113/save_to_file/enabled": false,
+"slice_113/save_to_file/keep_custom_tracks": false,
+"slice_113/save_to_file/path": "",
+"slice_113/start_frame": 0,
+"slice_114/end_frame": 0,
+"slice_114/loop_mode": 0,
+"slice_114/name": "",
+"slice_114/save_to_file/enabled": false,
+"slice_114/save_to_file/keep_custom_tracks": false,
+"slice_114/save_to_file/path": "",
+"slice_114/start_frame": 0,
+"slice_115/end_frame": 0,
+"slice_115/loop_mode": 0,
+"slice_115/name": "",
+"slice_115/save_to_file/enabled": false,
+"slice_115/save_to_file/keep_custom_tracks": false,
+"slice_115/save_to_file/path": "",
+"slice_115/start_frame": 0,
+"slice_116/end_frame": 0,
+"slice_116/loop_mode": 0,
+"slice_116/name": "",
+"slice_116/save_to_file/enabled": false,
+"slice_116/save_to_file/keep_custom_tracks": false,
+"slice_116/save_to_file/path": "",
+"slice_116/start_frame": 0,
+"slice_117/end_frame": 0,
+"slice_117/loop_mode": 0,
+"slice_117/name": "",
+"slice_117/save_to_file/enabled": false,
+"slice_117/save_to_file/keep_custom_tracks": false,
+"slice_117/save_to_file/path": "",
+"slice_117/start_frame": 0,
+"slice_118/end_frame": 0,
+"slice_118/loop_mode": 0,
+"slice_118/name": "",
+"slice_118/save_to_file/enabled": false,
+"slice_118/save_to_file/keep_custom_tracks": false,
+"slice_118/save_to_file/path": "",
+"slice_118/start_frame": 0,
+"slice_119/end_frame": 0,
+"slice_119/loop_mode": 0,
+"slice_119/name": "",
+"slice_119/save_to_file/enabled": false,
+"slice_119/save_to_file/keep_custom_tracks": false,
+"slice_119/save_to_file/path": "",
+"slice_119/start_frame": 0,
+"slice_12/end_frame": 0,
+"slice_12/loop_mode": 0,
+"slice_12/name": "",
+"slice_12/save_to_file/enabled": false,
+"slice_12/save_to_file/keep_custom_tracks": false,
+"slice_12/save_to_file/path": "",
+"slice_12/start_frame": 0,
+"slice_120/end_frame": 0,
+"slice_120/loop_mode": 0,
+"slice_120/name": "",
+"slice_120/save_to_file/enabled": false,
+"slice_120/save_to_file/keep_custom_tracks": false,
+"slice_120/save_to_file/path": "",
+"slice_120/start_frame": 0,
+"slice_121/end_frame": 0,
+"slice_121/loop_mode": 0,
+"slice_121/name": "",
+"slice_121/save_to_file/enabled": false,
+"slice_121/save_to_file/keep_custom_tracks": false,
+"slice_121/save_to_file/path": "",
+"slice_121/start_frame": 0,
+"slice_122/end_frame": 0,
+"slice_122/loop_mode": 0,
+"slice_122/name": "",
+"slice_122/save_to_file/enabled": false,
+"slice_122/save_to_file/keep_custom_tracks": false,
+"slice_122/save_to_file/path": "",
+"slice_122/start_frame": 0,
+"slice_123/end_frame": 0,
+"slice_123/loop_mode": 0,
+"slice_123/name": "",
+"slice_123/save_to_file/enabled": false,
+"slice_123/save_to_file/keep_custom_tracks": false,
+"slice_123/save_to_file/path": "",
+"slice_123/start_frame": 0,
+"slice_124/end_frame": 0,
+"slice_124/loop_mode": 0,
+"slice_124/name": "",
+"slice_124/save_to_file/enabled": false,
+"slice_124/save_to_file/keep_custom_tracks": false,
+"slice_124/save_to_file/path": "",
+"slice_124/start_frame": 0,
+"slice_125/end_frame": 0,
+"slice_125/loop_mode": 0,
+"slice_125/name": "",
+"slice_125/save_to_file/enabled": false,
+"slice_125/save_to_file/keep_custom_tracks": false,
+"slice_125/save_to_file/path": "",
+"slice_125/start_frame": 0,
+"slice_126/end_frame": 0,
+"slice_126/loop_mode": 0,
+"slice_126/name": "",
+"slice_126/save_to_file/enabled": false,
+"slice_126/save_to_file/keep_custom_tracks": false,
+"slice_126/save_to_file/path": "",
+"slice_126/start_frame": 0,
+"slice_127/end_frame": 0,
+"slice_127/loop_mode": 0,
+"slice_127/name": "",
+"slice_127/save_to_file/enabled": false,
+"slice_127/save_to_file/keep_custom_tracks": false,
+"slice_127/save_to_file/path": "",
+"slice_127/start_frame": 0,
+"slice_128/end_frame": 0,
+"slice_128/loop_mode": 0,
+"slice_128/name": "",
+"slice_128/save_to_file/enabled": false,
+"slice_128/save_to_file/keep_custom_tracks": false,
+"slice_128/save_to_file/path": "",
+"slice_128/start_frame": 0,
+"slice_129/end_frame": 0,
+"slice_129/loop_mode": 0,
+"slice_129/name": "",
+"slice_129/save_to_file/enabled": false,
+"slice_129/save_to_file/keep_custom_tracks": false,
+"slice_129/save_to_file/path": "",
+"slice_129/start_frame": 0,
+"slice_13/end_frame": 0,
+"slice_13/loop_mode": 0,
+"slice_13/name": "",
+"slice_13/save_to_file/enabled": false,
+"slice_13/save_to_file/keep_custom_tracks": false,
+"slice_13/save_to_file/path": "",
+"slice_13/start_frame": 0,
+"slice_130/end_frame": 0,
+"slice_130/loop_mode": 0,
+"slice_130/name": "",
+"slice_130/save_to_file/enabled": false,
+"slice_130/save_to_file/keep_custom_tracks": false,
+"slice_130/save_to_file/path": "",
+"slice_130/start_frame": 0,
+"slice_131/end_frame": 0,
+"slice_131/loop_mode": 0,
+"slice_131/name": "",
+"slice_131/save_to_file/enabled": false,
+"slice_131/save_to_file/keep_custom_tracks": false,
+"slice_131/save_to_file/path": "",
+"slice_131/start_frame": 0,
+"slice_132/end_frame": 0,
+"slice_132/loop_mode": 0,
+"slice_132/name": "",
+"slice_132/save_to_file/enabled": false,
+"slice_132/save_to_file/keep_custom_tracks": false,
+"slice_132/save_to_file/path": "",
+"slice_132/start_frame": 0,
+"slice_133/end_frame": 0,
+"slice_133/loop_mode": 0,
+"slice_133/name": "",
+"slice_133/save_to_file/enabled": false,
+"slice_133/save_to_file/keep_custom_tracks": false,
+"slice_133/save_to_file/path": "",
+"slice_133/start_frame": 0,
+"slice_134/end_frame": 0,
+"slice_134/loop_mode": 0,
+"slice_134/name": "",
+"slice_134/save_to_file/enabled": false,
+"slice_134/save_to_file/keep_custom_tracks": false,
+"slice_134/save_to_file/path": "",
+"slice_134/start_frame": 0,
+"slice_135/end_frame": 0,
+"slice_135/loop_mode": 0,
+"slice_135/name": "",
+"slice_135/save_to_file/enabled": false,
+"slice_135/save_to_file/keep_custom_tracks": false,
+"slice_135/save_to_file/path": "",
+"slice_135/start_frame": 0,
+"slice_136/end_frame": 0,
+"slice_136/loop_mode": 0,
+"slice_136/name": "",
+"slice_136/save_to_file/enabled": false,
+"slice_136/save_to_file/keep_custom_tracks": false,
+"slice_136/save_to_file/path": "",
+"slice_136/start_frame": 0,
+"slice_137/end_frame": 0,
+"slice_137/loop_mode": 0,
+"slice_137/name": "",
+"slice_137/save_to_file/enabled": false,
+"slice_137/save_to_file/keep_custom_tracks": false,
+"slice_137/save_to_file/path": "",
+"slice_137/start_frame": 0,
+"slice_138/end_frame": 0,
+"slice_138/loop_mode": 0,
+"slice_138/name": "",
+"slice_138/save_to_file/enabled": false,
+"slice_138/save_to_file/keep_custom_tracks": false,
+"slice_138/save_to_file/path": "",
+"slice_138/start_frame": 0,
+"slice_139/end_frame": 0,
+"slice_139/loop_mode": 0,
+"slice_139/name": "",
+"slice_139/save_to_file/enabled": false,
+"slice_139/save_to_file/keep_custom_tracks": false,
+"slice_139/save_to_file/path": "",
+"slice_139/start_frame": 0,
+"slice_14/end_frame": 0,
+"slice_14/loop_mode": 0,
+"slice_14/name": "",
+"slice_14/save_to_file/enabled": false,
+"slice_14/save_to_file/keep_custom_tracks": false,
+"slice_14/save_to_file/path": "",
+"slice_14/start_frame": 0,
+"slice_140/end_frame": 0,
+"slice_140/loop_mode": 0,
+"slice_140/name": "",
+"slice_140/save_to_file/enabled": false,
+"slice_140/save_to_file/keep_custom_tracks": false,
+"slice_140/save_to_file/path": "",
+"slice_140/start_frame": 0,
+"slice_141/end_frame": 0,
+"slice_141/loop_mode": 0,
+"slice_141/name": "",
+"slice_141/save_to_file/enabled": false,
+"slice_141/save_to_file/keep_custom_tracks": false,
+"slice_141/save_to_file/path": "",
+"slice_141/start_frame": 0,
+"slice_142/end_frame": 0,
+"slice_142/loop_mode": 0,
+"slice_142/name": "",
+"slice_142/save_to_file/enabled": false,
+"slice_142/save_to_file/keep_custom_tracks": false,
+"slice_142/save_to_file/path": "",
+"slice_142/start_frame": 0,
+"slice_143/end_frame": 0,
+"slice_143/loop_mode": 0,
+"slice_143/name": "",
+"slice_143/save_to_file/enabled": false,
+"slice_143/save_to_file/keep_custom_tracks": false,
+"slice_143/save_to_file/path": "",
+"slice_143/start_frame": 0,
+"slice_144/end_frame": 0,
+"slice_144/loop_mode": 0,
+"slice_144/name": "",
+"slice_144/save_to_file/enabled": false,
+"slice_144/save_to_file/keep_custom_tracks": false,
+"slice_144/save_to_file/path": "",
+"slice_144/start_frame": 0,
+"slice_145/end_frame": 0,
+"slice_145/loop_mode": 0,
+"slice_145/name": "",
+"slice_145/save_to_file/enabled": false,
+"slice_145/save_to_file/keep_custom_tracks": false,
+"slice_145/save_to_file/path": "",
+"slice_145/start_frame": 0,
+"slice_146/end_frame": 0,
+"slice_146/loop_mode": 0,
+"slice_146/name": "",
+"slice_146/save_to_file/enabled": false,
+"slice_146/save_to_file/keep_custom_tracks": false,
+"slice_146/save_to_file/path": "",
+"slice_146/start_frame": 0,
+"slice_147/end_frame": 0,
+"slice_147/loop_mode": 0,
+"slice_147/name": "",
+"slice_147/save_to_file/enabled": false,
+"slice_147/save_to_file/keep_custom_tracks": false,
+"slice_147/save_to_file/path": "",
+"slice_147/start_frame": 0,
+"slice_148/end_frame": 0,
+"slice_148/loop_mode": 0,
+"slice_148/name": "",
+"slice_148/save_to_file/enabled": false,
+"slice_148/save_to_file/keep_custom_tracks": false,
+"slice_148/save_to_file/path": "",
+"slice_148/start_frame": 0,
+"slice_149/end_frame": 0,
+"slice_149/loop_mode": 0,
+"slice_149/name": "",
+"slice_149/save_to_file/enabled": false,
+"slice_149/save_to_file/keep_custom_tracks": false,
+"slice_149/save_to_file/path": "",
+"slice_149/start_frame": 0,
+"slice_15/end_frame": 0,
+"slice_15/loop_mode": 0,
+"slice_15/name": "",
+"slice_15/save_to_file/enabled": false,
+"slice_15/save_to_file/keep_custom_tracks": false,
+"slice_15/save_to_file/path": "",
+"slice_15/start_frame": 0,
+"slice_150/end_frame": 0,
+"slice_150/loop_mode": 0,
+"slice_150/name": "",
+"slice_150/save_to_file/enabled": false,
+"slice_150/save_to_file/keep_custom_tracks": false,
+"slice_150/save_to_file/path": "",
+"slice_150/start_frame": 0,
+"slice_151/end_frame": 0,
+"slice_151/loop_mode": 0,
+"slice_151/name": "",
+"slice_151/save_to_file/enabled": false,
+"slice_151/save_to_file/keep_custom_tracks": false,
+"slice_151/save_to_file/path": "",
+"slice_151/start_frame": 0,
+"slice_152/end_frame": 0,
+"slice_152/loop_mode": 0,
+"slice_152/name": "",
+"slice_152/save_to_file/enabled": false,
+"slice_152/save_to_file/keep_custom_tracks": false,
+"slice_152/save_to_file/path": "",
+"slice_152/start_frame": 0,
+"slice_153/end_frame": 0,
+"slice_153/loop_mode": 0,
+"slice_153/name": "",
+"slice_153/save_to_file/enabled": false,
+"slice_153/save_to_file/keep_custom_tracks": false,
+"slice_153/save_to_file/path": "",
+"slice_153/start_frame": 0,
+"slice_154/end_frame": 0,
+"slice_154/loop_mode": 0,
+"slice_154/name": "",
+"slice_154/save_to_file/enabled": false,
+"slice_154/save_to_file/keep_custom_tracks": false,
+"slice_154/save_to_file/path": "",
+"slice_154/start_frame": 0,
+"slice_155/end_frame": 0,
+"slice_155/loop_mode": 0,
+"slice_155/name": "",
+"slice_155/save_to_file/enabled": false,
+"slice_155/save_to_file/keep_custom_tracks": false,
+"slice_155/save_to_file/path": "",
+"slice_155/start_frame": 0,
+"slice_156/end_frame": 0,
+"slice_156/loop_mode": 0,
+"slice_156/name": "",
+"slice_156/save_to_file/enabled": false,
+"slice_156/save_to_file/keep_custom_tracks": false,
+"slice_156/save_to_file/path": "",
+"slice_156/start_frame": 0,
+"slice_157/end_frame": 0,
+"slice_157/loop_mode": 0,
+"slice_157/name": "",
+"slice_157/save_to_file/enabled": false,
+"slice_157/save_to_file/keep_custom_tracks": false,
+"slice_157/save_to_file/path": "",
+"slice_157/start_frame": 0,
+"slice_158/end_frame": 0,
+"slice_158/loop_mode": 0,
+"slice_158/name": "",
+"slice_158/save_to_file/enabled": false,
+"slice_158/save_to_file/keep_custom_tracks": false,
+"slice_158/save_to_file/path": "",
+"slice_158/start_frame": 0,
+"slice_159/end_frame": 0,
+"slice_159/loop_mode": 0,
+"slice_159/name": "",
+"slice_159/save_to_file/enabled": false,
+"slice_159/save_to_file/keep_custom_tracks": false,
+"slice_159/save_to_file/path": "",
+"slice_159/start_frame": 0,
+"slice_16/end_frame": 0,
+"slice_16/loop_mode": 0,
+"slice_16/name": "",
+"slice_16/save_to_file/enabled": false,
+"slice_16/save_to_file/keep_custom_tracks": false,
+"slice_16/save_to_file/path": "",
+"slice_16/start_frame": 0,
+"slice_160/end_frame": 0,
+"slice_160/loop_mode": 0,
+"slice_160/name": "",
+"slice_160/save_to_file/enabled": false,
+"slice_160/save_to_file/keep_custom_tracks": false,
+"slice_160/save_to_file/path": "",
+"slice_160/start_frame": 0,
+"slice_161/end_frame": 0,
+"slice_161/loop_mode": 0,
+"slice_161/name": "",
+"slice_161/save_to_file/enabled": false,
+"slice_161/save_to_file/keep_custom_tracks": false,
+"slice_161/save_to_file/path": "",
+"slice_161/start_frame": 0,
+"slice_162/end_frame": 0,
+"slice_162/loop_mode": 0,
+"slice_162/name": "",
+"slice_162/save_to_file/enabled": false,
+"slice_162/save_to_file/keep_custom_tracks": false,
+"slice_162/save_to_file/path": "",
+"slice_162/start_frame": 0,
+"slice_163/end_frame": 0,
+"slice_163/loop_mode": 0,
+"slice_163/name": "",
+"slice_163/save_to_file/enabled": false,
+"slice_163/save_to_file/keep_custom_tracks": false,
+"slice_163/save_to_file/path": "",
+"slice_163/start_frame": 0,
+"slice_164/end_frame": 0,
+"slice_164/loop_mode": 0,
+"slice_164/name": "",
+"slice_164/save_to_file/enabled": false,
+"slice_164/save_to_file/keep_custom_tracks": false,
+"slice_164/save_to_file/path": "",
+"slice_164/start_frame": 0,
+"slice_165/end_frame": 0,
+"slice_165/loop_mode": 0,
+"slice_165/name": "",
+"slice_165/save_to_file/enabled": false,
+"slice_165/save_to_file/keep_custom_tracks": false,
+"slice_165/save_to_file/path": "",
+"slice_165/start_frame": 0,
+"slice_166/end_frame": 0,
+"slice_166/loop_mode": 0,
+"slice_166/name": "",
+"slice_166/save_to_file/enabled": false,
+"slice_166/save_to_file/keep_custom_tracks": false,
+"slice_166/save_to_file/path": "",
+"slice_166/start_frame": 0,
+"slice_167/end_frame": 0,
+"slice_167/loop_mode": 0,
+"slice_167/name": "",
+"slice_167/save_to_file/enabled": false,
+"slice_167/save_to_file/keep_custom_tracks": false,
+"slice_167/save_to_file/path": "",
+"slice_167/start_frame": 0,
+"slice_168/end_frame": 0,
+"slice_168/loop_mode": 0,
+"slice_168/name": "",
+"slice_168/save_to_file/enabled": false,
+"slice_168/save_to_file/keep_custom_tracks": false,
+"slice_168/save_to_file/path": "",
+"slice_168/start_frame": 0,
+"slice_169/end_frame": 0,
+"slice_169/loop_mode": 0,
+"slice_169/name": "",
+"slice_169/save_to_file/enabled": false,
+"slice_169/save_to_file/keep_custom_tracks": false,
+"slice_169/save_to_file/path": "",
+"slice_169/start_frame": 0,
+"slice_17/end_frame": 0,
+"slice_17/loop_mode": 0,
+"slice_17/name": "",
+"slice_17/save_to_file/enabled": false,
+"slice_17/save_to_file/keep_custom_tracks": false,
+"slice_17/save_to_file/path": "",
+"slice_17/start_frame": 0,
+"slice_170/end_frame": 0,
+"slice_170/loop_mode": 0,
+"slice_170/name": "",
+"slice_170/save_to_file/enabled": false,
+"slice_170/save_to_file/keep_custom_tracks": false,
+"slice_170/save_to_file/path": "",
+"slice_170/start_frame": 0,
+"slice_171/end_frame": 0,
+"slice_171/loop_mode": 0,
+"slice_171/name": "",
+"slice_171/save_to_file/enabled": false,
+"slice_171/save_to_file/keep_custom_tracks": false,
+"slice_171/save_to_file/path": "",
+"slice_171/start_frame": 0,
+"slice_172/end_frame": 0,
+"slice_172/loop_mode": 0,
+"slice_172/name": "",
+"slice_172/save_to_file/enabled": false,
+"slice_172/save_to_file/keep_custom_tracks": false,
+"slice_172/save_to_file/path": "",
+"slice_172/start_frame": 0,
+"slice_173/end_frame": 0,
+"slice_173/loop_mode": 0,
+"slice_173/name": "",
+"slice_173/save_to_file/enabled": false,
+"slice_173/save_to_file/keep_custom_tracks": false,
+"slice_173/save_to_file/path": "",
+"slice_173/start_frame": 0,
+"slice_174/end_frame": 0,
+"slice_174/loop_mode": 0,
+"slice_174/name": "",
+"slice_174/save_to_file/enabled": false,
+"slice_174/save_to_file/keep_custom_tracks": false,
+"slice_174/save_to_file/path": "",
+"slice_174/start_frame": 0,
+"slice_175/end_frame": 0,
+"slice_175/loop_mode": 0,
+"slice_175/name": "",
+"slice_175/save_to_file/enabled": false,
+"slice_175/save_to_file/keep_custom_tracks": false,
+"slice_175/save_to_file/path": "",
+"slice_175/start_frame": 0,
+"slice_176/end_frame": 0,
+"slice_176/loop_mode": 0,
+"slice_176/name": "",
+"slice_176/save_to_file/enabled": false,
+"slice_176/save_to_file/keep_custom_tracks": false,
+"slice_176/save_to_file/path": "",
+"slice_176/start_frame": 0,
+"slice_177/end_frame": 0,
+"slice_177/loop_mode": 0,
+"slice_177/name": "",
+"slice_177/save_to_file/enabled": false,
+"slice_177/save_to_file/keep_custom_tracks": false,
+"slice_177/save_to_file/path": "",
+"slice_177/start_frame": 0,
+"slice_178/end_frame": 0,
+"slice_178/loop_mode": 0,
+"slice_178/name": "",
+"slice_178/save_to_file/enabled": false,
+"slice_178/save_to_file/keep_custom_tracks": false,
+"slice_178/save_to_file/path": "",
+"slice_178/start_frame": 0,
+"slice_179/end_frame": 0,
+"slice_179/loop_mode": 0,
+"slice_179/name": "",
+"slice_179/save_to_file/enabled": false,
+"slice_179/save_to_file/keep_custom_tracks": false,
+"slice_179/save_to_file/path": "",
+"slice_179/start_frame": 0,
+"slice_18/end_frame": 0,
+"slice_18/loop_mode": 0,
+"slice_18/name": "",
+"slice_18/save_to_file/enabled": false,
+"slice_18/save_to_file/keep_custom_tracks": false,
+"slice_18/save_to_file/path": "",
+"slice_18/start_frame": 0,
+"slice_180/end_frame": 0,
+"slice_180/loop_mode": 0,
+"slice_180/name": "",
+"slice_180/save_to_file/enabled": false,
+"slice_180/save_to_file/keep_custom_tracks": false,
+"slice_180/save_to_file/path": "",
+"slice_180/start_frame": 0,
+"slice_181/end_frame": 0,
+"slice_181/loop_mode": 0,
+"slice_181/name": "",
+"slice_181/save_to_file/enabled": false,
+"slice_181/save_to_file/keep_custom_tracks": false,
+"slice_181/save_to_file/path": "",
+"slice_181/start_frame": 0,
+"slice_182/end_frame": 0,
+"slice_182/loop_mode": 0,
+"slice_182/name": "",
+"slice_182/save_to_file/enabled": false,
+"slice_182/save_to_file/keep_custom_tracks": false,
+"slice_182/save_to_file/path": "",
+"slice_182/start_frame": 0,
+"slice_183/end_frame": 0,
+"slice_183/loop_mode": 0,
+"slice_183/name": "",
+"slice_183/save_to_file/enabled": false,
+"slice_183/save_to_file/keep_custom_tracks": false,
+"slice_183/save_to_file/path": "",
+"slice_183/start_frame": 0,
+"slice_184/end_frame": 0,
+"slice_184/loop_mode": 0,
+"slice_184/name": "",
+"slice_184/save_to_file/enabled": false,
+"slice_184/save_to_file/keep_custom_tracks": false,
+"slice_184/save_to_file/path": "",
+"slice_184/start_frame": 0,
+"slice_185/end_frame": 0,
+"slice_185/loop_mode": 0,
+"slice_185/name": "",
+"slice_185/save_to_file/enabled": false,
+"slice_185/save_to_file/keep_custom_tracks": false,
+"slice_185/save_to_file/path": "",
+"slice_185/start_frame": 0,
+"slice_186/end_frame": 0,
+"slice_186/loop_mode": 0,
+"slice_186/name": "",
+"slice_186/save_to_file/enabled": false,
+"slice_186/save_to_file/keep_custom_tracks": false,
+"slice_186/save_to_file/path": "",
+"slice_186/start_frame": 0,
+"slice_187/end_frame": 0,
+"slice_187/loop_mode": 0,
+"slice_187/name": "",
+"slice_187/save_to_file/enabled": false,
+"slice_187/save_to_file/keep_custom_tracks": false,
+"slice_187/save_to_file/path": "",
+"slice_187/start_frame": 0,
+"slice_188/end_frame": 0,
+"slice_188/loop_mode": 0,
+"slice_188/name": "",
+"slice_188/save_to_file/enabled": false,
+"slice_188/save_to_file/keep_custom_tracks": false,
+"slice_188/save_to_file/path": "",
+"slice_188/start_frame": 0,
+"slice_189/end_frame": 0,
+"slice_189/loop_mode": 0,
+"slice_189/name": "",
+"slice_189/save_to_file/enabled": false,
+"slice_189/save_to_file/keep_custom_tracks": false,
+"slice_189/save_to_file/path": "",
+"slice_189/start_frame": 0,
+"slice_19/end_frame": 0,
+"slice_19/loop_mode": 0,
+"slice_19/name": "",
+"slice_19/save_to_file/enabled": false,
+"slice_19/save_to_file/keep_custom_tracks": false,
+"slice_19/save_to_file/path": "",
+"slice_19/start_frame": 0,
+"slice_190/end_frame": 0,
+"slice_190/loop_mode": 0,
+"slice_190/name": "",
+"slice_190/save_to_file/enabled": false,
+"slice_190/save_to_file/keep_custom_tracks": false,
+"slice_190/save_to_file/path": "",
+"slice_190/start_frame": 0,
+"slice_191/end_frame": 0,
+"slice_191/loop_mode": 0,
+"slice_191/name": "",
+"slice_191/save_to_file/enabled": false,
+"slice_191/save_to_file/keep_custom_tracks": false,
+"slice_191/save_to_file/path": "",
+"slice_191/start_frame": 0,
+"slice_192/end_frame": 0,
+"slice_192/loop_mode": 0,
+"slice_192/name": "",
+"slice_192/save_to_file/enabled": false,
+"slice_192/save_to_file/keep_custom_tracks": false,
+"slice_192/save_to_file/path": "",
+"slice_192/start_frame": 0,
+"slice_193/end_frame": 0,
+"slice_193/loop_mode": 0,
+"slice_193/name": "",
+"slice_193/save_to_file/enabled": false,
+"slice_193/save_to_file/keep_custom_tracks": false,
+"slice_193/save_to_file/path": "",
+"slice_193/start_frame": 0,
+"slice_194/end_frame": 0,
+"slice_194/loop_mode": 0,
+"slice_194/name": "",
+"slice_194/save_to_file/enabled": false,
+"slice_194/save_to_file/keep_custom_tracks": false,
+"slice_194/save_to_file/path": "",
+"slice_194/start_frame": 0,
+"slice_195/end_frame": 0,
+"slice_195/loop_mode": 0,
+"slice_195/name": "",
+"slice_195/save_to_file/enabled": false,
+"slice_195/save_to_file/keep_custom_tracks": false,
+"slice_195/save_to_file/path": "",
+"slice_195/start_frame": 0,
+"slice_196/end_frame": 0,
+"slice_196/loop_mode": 0,
+"slice_196/name": "",
+"slice_196/save_to_file/enabled": false,
+"slice_196/save_to_file/keep_custom_tracks": false,
+"slice_196/save_to_file/path": "",
+"slice_196/start_frame": 0,
+"slice_197/end_frame": 0,
+"slice_197/loop_mode": 0,
+"slice_197/name": "",
+"slice_197/save_to_file/enabled": false,
+"slice_197/save_to_file/keep_custom_tracks": false,
+"slice_197/save_to_file/path": "",
+"slice_197/start_frame": 0,
+"slice_198/end_frame": 0,
+"slice_198/loop_mode": 0,
+"slice_198/name": "",
+"slice_198/save_to_file/enabled": false,
+"slice_198/save_to_file/keep_custom_tracks": false,
+"slice_198/save_to_file/path": "",
+"slice_198/start_frame": 0,
+"slice_199/end_frame": 0,
+"slice_199/loop_mode": 0,
+"slice_199/name": "",
+"slice_199/save_to_file/enabled": false,
+"slice_199/save_to_file/keep_custom_tracks": false,
+"slice_199/save_to_file/path": "",
+"slice_199/start_frame": 0,
+"slice_2/end_frame": 0,
+"slice_2/loop_mode": 0,
+"slice_2/name": "",
+"slice_2/save_to_file/enabled": false,
+"slice_2/save_to_file/keep_custom_tracks": false,
+"slice_2/save_to_file/path": "",
+"slice_2/start_frame": 0,
+"slice_20/end_frame": 0,
+"slice_20/loop_mode": 0,
+"slice_20/name": "",
+"slice_20/save_to_file/enabled": false,
+"slice_20/save_to_file/keep_custom_tracks": false,
+"slice_20/save_to_file/path": "",
+"slice_20/start_frame": 0,
+"slice_200/end_frame": 0,
+"slice_200/loop_mode": 0,
+"slice_200/name": "",
+"slice_200/save_to_file/enabled": false,
+"slice_200/save_to_file/keep_custom_tracks": false,
+"slice_200/save_to_file/path": "",
+"slice_200/start_frame": 0,
+"slice_201/end_frame": 0,
+"slice_201/loop_mode": 0,
+"slice_201/name": "",
+"slice_201/save_to_file/enabled": false,
+"slice_201/save_to_file/keep_custom_tracks": false,
+"slice_201/save_to_file/path": "",
+"slice_201/start_frame": 0,
+"slice_202/end_frame": 0,
+"slice_202/loop_mode": 0,
+"slice_202/name": "",
+"slice_202/save_to_file/enabled": false,
+"slice_202/save_to_file/keep_custom_tracks": false,
+"slice_202/save_to_file/path": "",
+"slice_202/start_frame": 0,
+"slice_203/end_frame": 0,
+"slice_203/loop_mode": 0,
+"slice_203/name": "",
+"slice_203/save_to_file/enabled": false,
+"slice_203/save_to_file/keep_custom_tracks": false,
+"slice_203/save_to_file/path": "",
+"slice_203/start_frame": 0,
+"slice_204/end_frame": 0,
+"slice_204/loop_mode": 0,
+"slice_204/name": "",
+"slice_204/save_to_file/enabled": false,
+"slice_204/save_to_file/keep_custom_tracks": false,
+"slice_204/save_to_file/path": "",
+"slice_204/start_frame": 0,
+"slice_205/end_frame": 0,
+"slice_205/loop_mode": 0,
+"slice_205/name": "",
+"slice_205/save_to_file/enabled": false,
+"slice_205/save_to_file/keep_custom_tracks": false,
+"slice_205/save_to_file/path": "",
+"slice_205/start_frame": 0,
+"slice_206/end_frame": 0,
+"slice_206/loop_mode": 0,
+"slice_206/name": "",
+"slice_206/save_to_file/enabled": false,
+"slice_206/save_to_file/keep_custom_tracks": false,
+"slice_206/save_to_file/path": "",
+"slice_206/start_frame": 0,
+"slice_207/end_frame": 0,
+"slice_207/loop_mode": 0,
+"slice_207/name": "",
+"slice_207/save_to_file/enabled": false,
+"slice_207/save_to_file/keep_custom_tracks": false,
+"slice_207/save_to_file/path": "",
+"slice_207/start_frame": 0,
+"slice_208/end_frame": 0,
+"slice_208/loop_mode": 0,
+"slice_208/name": "",
+"slice_208/save_to_file/enabled": false,
+"slice_208/save_to_file/keep_custom_tracks": false,
+"slice_208/save_to_file/path": "",
+"slice_208/start_frame": 0,
+"slice_209/end_frame": 0,
+"slice_209/loop_mode": 0,
+"slice_209/name": "",
+"slice_209/save_to_file/enabled": false,
+"slice_209/save_to_file/keep_custom_tracks": false,
+"slice_209/save_to_file/path": "",
+"slice_209/start_frame": 0,
+"slice_21/end_frame": 0,
+"slice_21/loop_mode": 0,
+"slice_21/name": "",
+"slice_21/save_to_file/enabled": false,
+"slice_21/save_to_file/keep_custom_tracks": false,
+"slice_21/save_to_file/path": "",
+"slice_21/start_frame": 0,
+"slice_210/end_frame": 0,
+"slice_210/loop_mode": 0,
+"slice_210/name": "",
+"slice_210/save_to_file/enabled": false,
+"slice_210/save_to_file/keep_custom_tracks": false,
+"slice_210/save_to_file/path": "",
+"slice_210/start_frame": 0,
+"slice_211/end_frame": 0,
+"slice_211/loop_mode": 0,
+"slice_211/name": "",
+"slice_211/save_to_file/enabled": false,
+"slice_211/save_to_file/keep_custom_tracks": false,
+"slice_211/save_to_file/path": "",
+"slice_211/start_frame": 0,
+"slice_212/end_frame": 0,
+"slice_212/loop_mode": 0,
+"slice_212/name": "",
+"slice_212/save_to_file/enabled": false,
+"slice_212/save_to_file/keep_custom_tracks": false,
+"slice_212/save_to_file/path": "",
+"slice_212/start_frame": 0,
+"slice_213/end_frame": 0,
+"slice_213/loop_mode": 0,
+"slice_213/name": "",
+"slice_213/save_to_file/enabled": false,
+"slice_213/save_to_file/keep_custom_tracks": false,
+"slice_213/save_to_file/path": "",
+"slice_213/start_frame": 0,
+"slice_214/end_frame": 0,
+"slice_214/loop_mode": 0,
+"slice_214/name": "",
+"slice_214/save_to_file/enabled": false,
+"slice_214/save_to_file/keep_custom_tracks": false,
+"slice_214/save_to_file/path": "",
+"slice_214/start_frame": 0,
+"slice_215/end_frame": 0,
+"slice_215/loop_mode": 0,
+"slice_215/name": "",
+"slice_215/save_to_file/enabled": false,
+"slice_215/save_to_file/keep_custom_tracks": false,
+"slice_215/save_to_file/path": "",
+"slice_215/start_frame": 0,
+"slice_216/end_frame": 0,
+"slice_216/loop_mode": 0,
+"slice_216/name": "",
+"slice_216/save_to_file/enabled": false,
+"slice_216/save_to_file/keep_custom_tracks": false,
+"slice_216/save_to_file/path": "",
+"slice_216/start_frame": 0,
+"slice_217/end_frame": 0,
+"slice_217/loop_mode": 0,
+"slice_217/name": "",
+"slice_217/save_to_file/enabled": false,
+"slice_217/save_to_file/keep_custom_tracks": false,
+"slice_217/save_to_file/path": "",
+"slice_217/start_frame": 0,
+"slice_218/end_frame": 0,
+"slice_218/loop_mode": 0,
+"slice_218/name": "",
+"slice_218/save_to_file/enabled": false,
+"slice_218/save_to_file/keep_custom_tracks": false,
+"slice_218/save_to_file/path": "",
+"slice_218/start_frame": 0,
+"slice_219/end_frame": 0,
+"slice_219/loop_mode": 0,
+"slice_219/name": "",
+"slice_219/save_to_file/enabled": false,
+"slice_219/save_to_file/keep_custom_tracks": false,
+"slice_219/save_to_file/path": "",
+"slice_219/start_frame": 0,
+"slice_22/end_frame": 0,
+"slice_22/loop_mode": 0,
+"slice_22/name": "",
+"slice_22/save_to_file/enabled": false,
+"slice_22/save_to_file/keep_custom_tracks": false,
+"slice_22/save_to_file/path": "",
+"slice_22/start_frame": 0,
+"slice_220/end_frame": 0,
+"slice_220/loop_mode": 0,
+"slice_220/name": "",
+"slice_220/save_to_file/enabled": false,
+"slice_220/save_to_file/keep_custom_tracks": false,
+"slice_220/save_to_file/path": "",
+"slice_220/start_frame": 0,
+"slice_221/end_frame": 0,
+"slice_221/loop_mode": 0,
+"slice_221/name": "",
+"slice_221/save_to_file/enabled": false,
+"slice_221/save_to_file/keep_custom_tracks": false,
+"slice_221/save_to_file/path": "",
+"slice_221/start_frame": 0,
+"slice_222/end_frame": 0,
+"slice_222/loop_mode": 0,
+"slice_222/name": "",
+"slice_222/save_to_file/enabled": false,
+"slice_222/save_to_file/keep_custom_tracks": false,
+"slice_222/save_to_file/path": "",
+"slice_222/start_frame": 0,
+"slice_223/end_frame": 0,
+"slice_223/loop_mode": 0,
+"slice_223/name": "",
+"slice_223/save_to_file/enabled": false,
+"slice_223/save_to_file/keep_custom_tracks": false,
+"slice_223/save_to_file/path": "",
+"slice_223/start_frame": 0,
+"slice_224/end_frame": 0,
+"slice_224/loop_mode": 0,
+"slice_224/name": "",
+"slice_224/save_to_file/enabled": false,
+"slice_224/save_to_file/keep_custom_tracks": false,
+"slice_224/save_to_file/path": "",
+"slice_224/start_frame": 0,
+"slice_225/end_frame": 0,
+"slice_225/loop_mode": 0,
+"slice_225/name": "",
+"slice_225/save_to_file/enabled": false,
+"slice_225/save_to_file/keep_custom_tracks": false,
+"slice_225/save_to_file/path": "",
+"slice_225/start_frame": 0,
+"slice_226/end_frame": 0,
+"slice_226/loop_mode": 0,
+"slice_226/name": "",
+"slice_226/save_to_file/enabled": false,
+"slice_226/save_to_file/keep_custom_tracks": false,
+"slice_226/save_to_file/path": "",
+"slice_226/start_frame": 0,
+"slice_227/end_frame": 0,
+"slice_227/loop_mode": 0,
+"slice_227/name": "",
+"slice_227/save_to_file/enabled": false,
+"slice_227/save_to_file/keep_custom_tracks": false,
+"slice_227/save_to_file/path": "",
+"slice_227/start_frame": 0,
+"slice_228/end_frame": 0,
+"slice_228/loop_mode": 0,
+"slice_228/name": "",
+"slice_228/save_to_file/enabled": false,
+"slice_228/save_to_file/keep_custom_tracks": false,
+"slice_228/save_to_file/path": "",
+"slice_228/start_frame": 0,
+"slice_229/end_frame": 0,
+"slice_229/loop_mode": 0,
+"slice_229/name": "",
+"slice_229/save_to_file/enabled": false,
+"slice_229/save_to_file/keep_custom_tracks": false,
+"slice_229/save_to_file/path": "",
+"slice_229/start_frame": 0,
+"slice_23/end_frame": 0,
+"slice_23/loop_mode": 0,
+"slice_23/name": "",
+"slice_23/save_to_file/enabled": false,
+"slice_23/save_to_file/keep_custom_tracks": false,
+"slice_23/save_to_file/path": "",
+"slice_23/start_frame": 0,
+"slice_230/end_frame": 0,
+"slice_230/loop_mode": 0,
+"slice_230/name": "",
+"slice_230/save_to_file/enabled": false,
+"slice_230/save_to_file/keep_custom_tracks": false,
+"slice_230/save_to_file/path": "",
+"slice_230/start_frame": 0,
+"slice_231/end_frame": 0,
+"slice_231/loop_mode": 0,
+"slice_231/name": "",
+"slice_231/save_to_file/enabled": false,
+"slice_231/save_to_file/keep_custom_tracks": false,
+"slice_231/save_to_file/path": "",
+"slice_231/start_frame": 0,
+"slice_232/end_frame": 0,
+"slice_232/loop_mode": 0,
+"slice_232/name": "",
+"slice_232/save_to_file/enabled": false,
+"slice_232/save_to_file/keep_custom_tracks": false,
+"slice_232/save_to_file/path": "",
+"slice_232/start_frame": 0,
+"slice_233/end_frame": 0,
+"slice_233/loop_mode": 0,
+"slice_233/name": "",
+"slice_233/save_to_file/enabled": false,
+"slice_233/save_to_file/keep_custom_tracks": false,
+"slice_233/save_to_file/path": "",
+"slice_233/start_frame": 0,
+"slice_234/end_frame": 0,
+"slice_234/loop_mode": 0,
+"slice_234/name": "",
+"slice_234/save_to_file/enabled": false,
+"slice_234/save_to_file/keep_custom_tracks": false,
+"slice_234/save_to_file/path": "",
+"slice_234/start_frame": 0,
+"slice_235/end_frame": 0,
+"slice_235/loop_mode": 0,
+"slice_235/name": "",
+"slice_235/save_to_file/enabled": false,
+"slice_235/save_to_file/keep_custom_tracks": false,
+"slice_235/save_to_file/path": "",
+"slice_235/start_frame": 0,
+"slice_236/end_frame": 0,
+"slice_236/loop_mode": 0,
+"slice_236/name": "",
+"slice_236/save_to_file/enabled": false,
+"slice_236/save_to_file/keep_custom_tracks": false,
+"slice_236/save_to_file/path": "",
+"slice_236/start_frame": 0,
+"slice_237/end_frame": 0,
+"slice_237/loop_mode": 0,
+"slice_237/name": "",
+"slice_237/save_to_file/enabled": false,
+"slice_237/save_to_file/keep_custom_tracks": false,
+"slice_237/save_to_file/path": "",
+"slice_237/start_frame": 0,
+"slice_238/end_frame": 0,
+"slice_238/loop_mode": 0,
+"slice_238/name": "",
+"slice_238/save_to_file/enabled": false,
+"slice_238/save_to_file/keep_custom_tracks": false,
+"slice_238/save_to_file/path": "",
+"slice_238/start_frame": 0,
+"slice_239/end_frame": 0,
+"slice_239/loop_mode": 0,
+"slice_239/name": "",
+"slice_239/save_to_file/enabled": false,
+"slice_239/save_to_file/keep_custom_tracks": false,
+"slice_239/save_to_file/path": "",
+"slice_239/start_frame": 0,
+"slice_24/end_frame": 0,
+"slice_24/loop_mode": 0,
+"slice_24/name": "",
+"slice_24/save_to_file/enabled": false,
+"slice_24/save_to_file/keep_custom_tracks": false,
+"slice_24/save_to_file/path": "",
+"slice_24/start_frame": 0,
+"slice_240/end_frame": 0,
+"slice_240/loop_mode": 0,
+"slice_240/name": "",
+"slice_240/save_to_file/enabled": false,
+"slice_240/save_to_file/keep_custom_tracks": false,
+"slice_240/save_to_file/path": "",
+"slice_240/start_frame": 0,
+"slice_241/end_frame": 0,
+"slice_241/loop_mode": 0,
+"slice_241/name": "",
+"slice_241/save_to_file/enabled": false,
+"slice_241/save_to_file/keep_custom_tracks": false,
+"slice_241/save_to_file/path": "",
+"slice_241/start_frame": 0,
+"slice_242/end_frame": 0,
+"slice_242/loop_mode": 0,
+"slice_242/name": "",
+"slice_242/save_to_file/enabled": false,
+"slice_242/save_to_file/keep_custom_tracks": false,
+"slice_242/save_to_file/path": "",
+"slice_242/start_frame": 0,
+"slice_243/end_frame": 0,
+"slice_243/loop_mode": 0,
+"slice_243/name": "",
+"slice_243/save_to_file/enabled": false,
+"slice_243/save_to_file/keep_custom_tracks": false,
+"slice_243/save_to_file/path": "",
+"slice_243/start_frame": 0,
+"slice_244/end_frame": 0,
+"slice_244/loop_mode": 0,
+"slice_244/name": "",
+"slice_244/save_to_file/enabled": false,
+"slice_244/save_to_file/keep_custom_tracks": false,
+"slice_244/save_to_file/path": "",
+"slice_244/start_frame": 0,
+"slice_245/end_frame": 0,
+"slice_245/loop_mode": 0,
+"slice_245/name": "",
+"slice_245/save_to_file/enabled": false,
+"slice_245/save_to_file/keep_custom_tracks": false,
+"slice_245/save_to_file/path": "",
+"slice_245/start_frame": 0,
+"slice_246/end_frame": 0,
+"slice_246/loop_mode": 0,
+"slice_246/name": "",
+"slice_246/save_to_file/enabled": false,
+"slice_246/save_to_file/keep_custom_tracks": false,
+"slice_246/save_to_file/path": "",
+"slice_246/start_frame": 0,
+"slice_247/end_frame": 0,
+"slice_247/loop_mode": 0,
+"slice_247/name": "",
+"slice_247/save_to_file/enabled": false,
+"slice_247/save_to_file/keep_custom_tracks": false,
+"slice_247/save_to_file/path": "",
+"slice_247/start_frame": 0,
+"slice_248/end_frame": 0,
+"slice_248/loop_mode": 0,
+"slice_248/name": "",
+"slice_248/save_to_file/enabled": false,
+"slice_248/save_to_file/keep_custom_tracks": false,
+"slice_248/save_to_file/path": "",
+"slice_248/start_frame": 0,
+"slice_249/end_frame": 0,
+"slice_249/loop_mode": 0,
+"slice_249/name": "",
+"slice_249/save_to_file/enabled": false,
+"slice_249/save_to_file/keep_custom_tracks": false,
+"slice_249/save_to_file/path": "",
+"slice_249/start_frame": 0,
+"slice_25/end_frame": 0,
+"slice_25/loop_mode": 0,
+"slice_25/name": "",
+"slice_25/save_to_file/enabled": false,
+"slice_25/save_to_file/keep_custom_tracks": false,
+"slice_25/save_to_file/path": "",
+"slice_25/start_frame": 0,
+"slice_250/end_frame": 0,
+"slice_250/loop_mode": 0,
+"slice_250/name": "",
+"slice_250/save_to_file/enabled": false,
+"slice_250/save_to_file/keep_custom_tracks": false,
+"slice_250/save_to_file/path": "",
+"slice_250/start_frame": 0,
+"slice_251/end_frame": 0,
+"slice_251/loop_mode": 0,
+"slice_251/name": "",
+"slice_251/save_to_file/enabled": false,
+"slice_251/save_to_file/keep_custom_tracks": false,
+"slice_251/save_to_file/path": "",
+"slice_251/start_frame": 0,
+"slice_252/end_frame": 0,
+"slice_252/loop_mode": 0,
+"slice_252/name": "",
+"slice_252/save_to_file/enabled": false,
+"slice_252/save_to_file/keep_custom_tracks": false,
+"slice_252/save_to_file/path": "",
+"slice_252/start_frame": 0,
+"slice_253/end_frame": 0,
+"slice_253/loop_mode": 0,
+"slice_253/name": "",
+"slice_253/save_to_file/enabled": false,
+"slice_253/save_to_file/keep_custom_tracks": false,
+"slice_253/save_to_file/path": "",
+"slice_253/start_frame": 0,
+"slice_254/end_frame": 0,
+"slice_254/loop_mode": 0,
+"slice_254/name": "",
+"slice_254/save_to_file/enabled": false,
+"slice_254/save_to_file/keep_custom_tracks": false,
+"slice_254/save_to_file/path": "",
+"slice_254/start_frame": 0,
+"slice_255/end_frame": 0,
+"slice_255/loop_mode": 0,
+"slice_255/name": "",
+"slice_255/save_to_file/enabled": false,
+"slice_255/save_to_file/keep_custom_tracks": false,
+"slice_255/save_to_file/path": "",
+"slice_255/start_frame": 0,
+"slice_256/end_frame": 0,
+"slice_256/loop_mode": 0,
+"slice_256/name": "",
+"slice_256/save_to_file/enabled": false,
+"slice_256/save_to_file/keep_custom_tracks": false,
+"slice_256/save_to_file/path": "",
+"slice_256/start_frame": 0,
+"slice_26/end_frame": 0,
+"slice_26/loop_mode": 0,
+"slice_26/name": "",
+"slice_26/save_to_file/enabled": false,
+"slice_26/save_to_file/keep_custom_tracks": false,
+"slice_26/save_to_file/path": "",
+"slice_26/start_frame": 0,
+"slice_27/end_frame": 0,
+"slice_27/loop_mode": 0,
+"slice_27/name": "",
+"slice_27/save_to_file/enabled": false,
+"slice_27/save_to_file/keep_custom_tracks": false,
+"slice_27/save_to_file/path": "",
+"slice_27/start_frame": 0,
+"slice_28/end_frame": 0,
+"slice_28/loop_mode": 0,
+"slice_28/name": "",
+"slice_28/save_to_file/enabled": false,
+"slice_28/save_to_file/keep_custom_tracks": false,
+"slice_28/save_to_file/path": "",
+"slice_28/start_frame": 0,
+"slice_29/end_frame": 0,
+"slice_29/loop_mode": 0,
+"slice_29/name": "",
+"slice_29/save_to_file/enabled": false,
+"slice_29/save_to_file/keep_custom_tracks": false,
+"slice_29/save_to_file/path": "",
+"slice_29/start_frame": 0,
+"slice_3/end_frame": 0,
+"slice_3/loop_mode": 0,
+"slice_3/name": "",
+"slice_3/save_to_file/enabled": false,
+"slice_3/save_to_file/keep_custom_tracks": false,
+"slice_3/save_to_file/path": "",
+"slice_3/start_frame": 0,
+"slice_30/end_frame": 0,
+"slice_30/loop_mode": 0,
+"slice_30/name": "",
+"slice_30/save_to_file/enabled": false,
+"slice_30/save_to_file/keep_custom_tracks": false,
+"slice_30/save_to_file/path": "",
+"slice_30/start_frame": 0,
+"slice_31/end_frame": 0,
+"slice_31/loop_mode": 0,
+"slice_31/name": "",
+"slice_31/save_to_file/enabled": false,
+"slice_31/save_to_file/keep_custom_tracks": false,
+"slice_31/save_to_file/path": "",
+"slice_31/start_frame": 0,
+"slice_32/end_frame": 0,
+"slice_32/loop_mode": 0,
+"slice_32/name": "",
+"slice_32/save_to_file/enabled": false,
+"slice_32/save_to_file/keep_custom_tracks": false,
+"slice_32/save_to_file/path": "",
+"slice_32/start_frame": 0,
+"slice_33/end_frame": 0,
+"slice_33/loop_mode": 0,
+"slice_33/name": "",
+"slice_33/save_to_file/enabled": false,
+"slice_33/save_to_file/keep_custom_tracks": false,
+"slice_33/save_to_file/path": "",
+"slice_33/start_frame": 0,
+"slice_34/end_frame": 0,
+"slice_34/loop_mode": 0,
+"slice_34/name": "",
+"slice_34/save_to_file/enabled": false,
+"slice_34/save_to_file/keep_custom_tracks": false,
+"slice_34/save_to_file/path": "",
+"slice_34/start_frame": 0,
+"slice_35/end_frame": 0,
+"slice_35/loop_mode": 0,
+"slice_35/name": "",
+"slice_35/save_to_file/enabled": false,
+"slice_35/save_to_file/keep_custom_tracks": false,
+"slice_35/save_to_file/path": "",
+"slice_35/start_frame": 0,
+"slice_36/end_frame": 0,
+"slice_36/loop_mode": 0,
+"slice_36/name": "",
+"slice_36/save_to_file/enabled": false,
+"slice_36/save_to_file/keep_custom_tracks": false,
+"slice_36/save_to_file/path": "",
+"slice_36/start_frame": 0,
+"slice_37/end_frame": 0,
+"slice_37/loop_mode": 0,
+"slice_37/name": "",
+"slice_37/save_to_file/enabled": false,
+"slice_37/save_to_file/keep_custom_tracks": false,
+"slice_37/save_to_file/path": "",
+"slice_37/start_frame": 0,
+"slice_38/end_frame": 0,
+"slice_38/loop_mode": 0,
+"slice_38/name": "",
+"slice_38/save_to_file/enabled": false,
+"slice_38/save_to_file/keep_custom_tracks": false,
+"slice_38/save_to_file/path": "",
+"slice_38/start_frame": 0,
+"slice_39/end_frame": 0,
+"slice_39/loop_mode": 0,
+"slice_39/name": "",
+"slice_39/save_to_file/enabled": false,
+"slice_39/save_to_file/keep_custom_tracks": false,
+"slice_39/save_to_file/path": "",
+"slice_39/start_frame": 0,
+"slice_4/end_frame": 0,
+"slice_4/loop_mode": 0,
+"slice_4/name": "",
+"slice_4/save_to_file/enabled": false,
+"slice_4/save_to_file/keep_custom_tracks": false,
+"slice_4/save_to_file/path": "",
+"slice_4/start_frame": 0,
+"slice_40/end_frame": 0,
+"slice_40/loop_mode": 0,
+"slice_40/name": "",
+"slice_40/save_to_file/enabled": false,
+"slice_40/save_to_file/keep_custom_tracks": false,
+"slice_40/save_to_file/path": "",
+"slice_40/start_frame": 0,
+"slice_41/end_frame": 0,
+"slice_41/loop_mode": 0,
+"slice_41/name": "",
+"slice_41/save_to_file/enabled": false,
+"slice_41/save_to_file/keep_custom_tracks": false,
+"slice_41/save_to_file/path": "",
+"slice_41/start_frame": 0,
+"slice_42/end_frame": 0,
+"slice_42/loop_mode": 0,
+"slice_42/name": "",
+"slice_42/save_to_file/enabled": false,
+"slice_42/save_to_file/keep_custom_tracks": false,
+"slice_42/save_to_file/path": "",
+"slice_42/start_frame": 0,
+"slice_43/end_frame": 0,
+"slice_43/loop_mode": 0,
+"slice_43/name": "",
+"slice_43/save_to_file/enabled": false,
+"slice_43/save_to_file/keep_custom_tracks": false,
+"slice_43/save_to_file/path": "",
+"slice_43/start_frame": 0,
+"slice_44/end_frame": 0,
+"slice_44/loop_mode": 0,
+"slice_44/name": "",
+"slice_44/save_to_file/enabled": false,
+"slice_44/save_to_file/keep_custom_tracks": false,
+"slice_44/save_to_file/path": "",
+"slice_44/start_frame": 0,
+"slice_45/end_frame": 0,
+"slice_45/loop_mode": 0,
+"slice_45/name": "",
+"slice_45/save_to_file/enabled": false,
+"slice_45/save_to_file/keep_custom_tracks": false,
+"slice_45/save_to_file/path": "",
+"slice_45/start_frame": 0,
+"slice_46/end_frame": 0,
+"slice_46/loop_mode": 0,
+"slice_46/name": "",
+"slice_46/save_to_file/enabled": false,
+"slice_46/save_to_file/keep_custom_tracks": false,
+"slice_46/save_to_file/path": "",
+"slice_46/start_frame": 0,
+"slice_47/end_frame": 0,
+"slice_47/loop_mode": 0,
+"slice_47/name": "",
+"slice_47/save_to_file/enabled": false,
+"slice_47/save_to_file/keep_custom_tracks": false,
+"slice_47/save_to_file/path": "",
+"slice_47/start_frame": 0,
+"slice_48/end_frame": 0,
+"slice_48/loop_mode": 0,
+"slice_48/name": "",
+"slice_48/save_to_file/enabled": false,
+"slice_48/save_to_file/keep_custom_tracks": false,
+"slice_48/save_to_file/path": "",
+"slice_48/start_frame": 0,
+"slice_49/end_frame": 0,
+"slice_49/loop_mode": 0,
+"slice_49/name": "",
+"slice_49/save_to_file/enabled": false,
+"slice_49/save_to_file/keep_custom_tracks": false,
+"slice_49/save_to_file/path": "",
+"slice_49/start_frame": 0,
+"slice_5/end_frame": 0,
+"slice_5/loop_mode": 0,
+"slice_5/name": "",
+"slice_5/save_to_file/enabled": false,
+"slice_5/save_to_file/keep_custom_tracks": false,
+"slice_5/save_to_file/path": "",
+"slice_5/start_frame": 0,
+"slice_50/end_frame": 0,
+"slice_50/loop_mode": 0,
+"slice_50/name": "",
+"slice_50/save_to_file/enabled": false,
+"slice_50/save_to_file/keep_custom_tracks": false,
+"slice_50/save_to_file/path": "",
+"slice_50/start_frame": 0,
+"slice_51/end_frame": 0,
+"slice_51/loop_mode": 0,
+"slice_51/name": "",
+"slice_51/save_to_file/enabled": false,
+"slice_51/save_to_file/keep_custom_tracks": false,
+"slice_51/save_to_file/path": "",
+"slice_51/start_frame": 0,
+"slice_52/end_frame": 0,
+"slice_52/loop_mode": 0,
+"slice_52/name": "",
+"slice_52/save_to_file/enabled": false,
+"slice_52/save_to_file/keep_custom_tracks": false,
+"slice_52/save_to_file/path": "",
+"slice_52/start_frame": 0,
+"slice_53/end_frame": 0,
+"slice_53/loop_mode": 0,
+"slice_53/name": "",
+"slice_53/save_to_file/enabled": false,
+"slice_53/save_to_file/keep_custom_tracks": false,
+"slice_53/save_to_file/path": "",
+"slice_53/start_frame": 0,
+"slice_54/end_frame": 0,
+"slice_54/loop_mode": 0,
+"slice_54/name": "",
+"slice_54/save_to_file/enabled": false,
+"slice_54/save_to_file/keep_custom_tracks": false,
+"slice_54/save_to_file/path": "",
+"slice_54/start_frame": 0,
+"slice_55/end_frame": 0,
+"slice_55/loop_mode": 0,
+"slice_55/name": "",
+"slice_55/save_to_file/enabled": false,
+"slice_55/save_to_file/keep_custom_tracks": false,
+"slice_55/save_to_file/path": "",
+"slice_55/start_frame": 0,
+"slice_56/end_frame": 0,
+"slice_56/loop_mode": 0,
+"slice_56/name": "",
+"slice_56/save_to_file/enabled": false,
+"slice_56/save_to_file/keep_custom_tracks": false,
+"slice_56/save_to_file/path": "",
+"slice_56/start_frame": 0,
+"slice_57/end_frame": 0,
+"slice_57/loop_mode": 0,
+"slice_57/name": "",
+"slice_57/save_to_file/enabled": false,
+"slice_57/save_to_file/keep_custom_tracks": false,
+"slice_57/save_to_file/path": "",
+"slice_57/start_frame": 0,
+"slice_58/end_frame": 0,
+"slice_58/loop_mode": 0,
+"slice_58/name": "",
+"slice_58/save_to_file/enabled": false,
+"slice_58/save_to_file/keep_custom_tracks": false,
+"slice_58/save_to_file/path": "",
+"slice_58/start_frame": 0,
+"slice_59/end_frame": 0,
+"slice_59/loop_mode": 0,
+"slice_59/name": "",
+"slice_59/save_to_file/enabled": false,
+"slice_59/save_to_file/keep_custom_tracks": false,
+"slice_59/save_to_file/path": "",
+"slice_59/start_frame": 0,
+"slice_6/end_frame": 0,
+"slice_6/loop_mode": 0,
+"slice_6/name": "",
+"slice_6/save_to_file/enabled": false,
+"slice_6/save_to_file/keep_custom_tracks": false,
+"slice_6/save_to_file/path": "",
+"slice_6/start_frame": 0,
+"slice_60/end_frame": 0,
+"slice_60/loop_mode": 0,
+"slice_60/name": "",
+"slice_60/save_to_file/enabled": false,
+"slice_60/save_to_file/keep_custom_tracks": false,
+"slice_60/save_to_file/path": "",
+"slice_60/start_frame": 0,
+"slice_61/end_frame": 0,
+"slice_61/loop_mode": 0,
+"slice_61/name": "",
+"slice_61/save_to_file/enabled": false,
+"slice_61/save_to_file/keep_custom_tracks": false,
+"slice_61/save_to_file/path": "",
+"slice_61/start_frame": 0,
+"slice_62/end_frame": 0,
+"slice_62/loop_mode": 0,
+"slice_62/name": "",
+"slice_62/save_to_file/enabled": false,
+"slice_62/save_to_file/keep_custom_tracks": false,
+"slice_62/save_to_file/path": "",
+"slice_62/start_frame": 0,
+"slice_63/end_frame": 0,
+"slice_63/loop_mode": 0,
+"slice_63/name": "",
+"slice_63/save_to_file/enabled": false,
+"slice_63/save_to_file/keep_custom_tracks": false,
+"slice_63/save_to_file/path": "",
+"slice_63/start_frame": 0,
+"slice_64/end_frame": 0,
+"slice_64/loop_mode": 0,
+"slice_64/name": "",
+"slice_64/save_to_file/enabled": false,
+"slice_64/save_to_file/keep_custom_tracks": false,
+"slice_64/save_to_file/path": "",
+"slice_64/start_frame": 0,
+"slice_65/end_frame": 0,
+"slice_65/loop_mode": 0,
+"slice_65/name": "",
+"slice_65/save_to_file/enabled": false,
+"slice_65/save_to_file/keep_custom_tracks": false,
+"slice_65/save_to_file/path": "",
+"slice_65/start_frame": 0,
+"slice_66/end_frame": 0,
+"slice_66/loop_mode": 0,
+"slice_66/name": "",
+"slice_66/save_to_file/enabled": false,
+"slice_66/save_to_file/keep_custom_tracks": false,
+"slice_66/save_to_file/path": "",
+"slice_66/start_frame": 0,
+"slice_67/end_frame": 0,
+"slice_67/loop_mode": 0,
+"slice_67/name": "",
+"slice_67/save_to_file/enabled": false,
+"slice_67/save_to_file/keep_custom_tracks": false,
+"slice_67/save_to_file/path": "",
+"slice_67/start_frame": 0,
+"slice_68/end_frame": 0,
+"slice_68/loop_mode": 0,
+"slice_68/name": "",
+"slice_68/save_to_file/enabled": false,
+"slice_68/save_to_file/keep_custom_tracks": false,
+"slice_68/save_to_file/path": "",
+"slice_68/start_frame": 0,
+"slice_69/end_frame": 0,
+"slice_69/loop_mode": 0,
+"slice_69/name": "",
+"slice_69/save_to_file/enabled": false,
+"slice_69/save_to_file/keep_custom_tracks": false,
+"slice_69/save_to_file/path": "",
+"slice_69/start_frame": 0,
+"slice_7/end_frame": 0,
+"slice_7/loop_mode": 0,
+"slice_7/name": "",
+"slice_7/save_to_file/enabled": false,
+"slice_7/save_to_file/keep_custom_tracks": false,
+"slice_7/save_to_file/path": "",
+"slice_7/start_frame": 0,
+"slice_70/end_frame": 0,
+"slice_70/loop_mode": 0,
+"slice_70/name": "",
+"slice_70/save_to_file/enabled": false,
+"slice_70/save_to_file/keep_custom_tracks": false,
+"slice_70/save_to_file/path": "",
+"slice_70/start_frame": 0,
+"slice_71/end_frame": 0,
+"slice_71/loop_mode": 0,
+"slice_71/name": "",
+"slice_71/save_to_file/enabled": false,
+"slice_71/save_to_file/keep_custom_tracks": false,
+"slice_71/save_to_file/path": "",
+"slice_71/start_frame": 0,
+"slice_72/end_frame": 0,
+"slice_72/loop_mode": 0,
+"slice_72/name": "",
+"slice_72/save_to_file/enabled": false,
+"slice_72/save_to_file/keep_custom_tracks": false,
+"slice_72/save_to_file/path": "",
+"slice_72/start_frame": 0,
+"slice_73/end_frame": 0,
+"slice_73/loop_mode": 0,
+"slice_73/name": "",
+"slice_73/save_to_file/enabled": false,
+"slice_73/save_to_file/keep_custom_tracks": false,
+"slice_73/save_to_file/path": "",
+"slice_73/start_frame": 0,
+"slice_74/end_frame": 0,
+"slice_74/loop_mode": 0,
+"slice_74/name": "",
+"slice_74/save_to_file/enabled": false,
+"slice_74/save_to_file/keep_custom_tracks": false,
+"slice_74/save_to_file/path": "",
+"slice_74/start_frame": 0,
+"slice_75/end_frame": 0,
+"slice_75/loop_mode": 0,
+"slice_75/name": "",
+"slice_75/save_to_file/enabled": false,
+"slice_75/save_to_file/keep_custom_tracks": false,
+"slice_75/save_to_file/path": "",
+"slice_75/start_frame": 0,
+"slice_76/end_frame": 0,
+"slice_76/loop_mode": 0,
+"slice_76/name": "",
+"slice_76/save_to_file/enabled": false,
+"slice_76/save_to_file/keep_custom_tracks": false,
+"slice_76/save_to_file/path": "",
+"slice_76/start_frame": 0,
+"slice_77/end_frame": 0,
+"slice_77/loop_mode": 0,
+"slice_77/name": "",
+"slice_77/save_to_file/enabled": false,
+"slice_77/save_to_file/keep_custom_tracks": false,
+"slice_77/save_to_file/path": "",
+"slice_77/start_frame": 0,
+"slice_78/end_frame": 0,
+"slice_78/loop_mode": 0,
+"slice_78/name": "",
+"slice_78/save_to_file/enabled": false,
+"slice_78/save_to_file/keep_custom_tracks": false,
+"slice_78/save_to_file/path": "",
+"slice_78/start_frame": 0,
+"slice_79/end_frame": 0,
+"slice_79/loop_mode": 0,
+"slice_79/name": "",
+"slice_79/save_to_file/enabled": false,
+"slice_79/save_to_file/keep_custom_tracks": false,
+"slice_79/save_to_file/path": "",
+"slice_79/start_frame": 0,
+"slice_8/end_frame": 0,
+"slice_8/loop_mode": 0,
+"slice_8/name": "",
+"slice_8/save_to_file/enabled": false,
+"slice_8/save_to_file/keep_custom_tracks": false,
+"slice_8/save_to_file/path": "",
+"slice_8/start_frame": 0,
+"slice_80/end_frame": 0,
+"slice_80/loop_mode": 0,
+"slice_80/name": "",
+"slice_80/save_to_file/enabled": false,
+"slice_80/save_to_file/keep_custom_tracks": false,
+"slice_80/save_to_file/path": "",
+"slice_80/start_frame": 0,
+"slice_81/end_frame": 0,
+"slice_81/loop_mode": 0,
+"slice_81/name": "",
+"slice_81/save_to_file/enabled": false,
+"slice_81/save_to_file/keep_custom_tracks": false,
+"slice_81/save_to_file/path": "",
+"slice_81/start_frame": 0,
+"slice_82/end_frame": 0,
+"slice_82/loop_mode": 0,
+"slice_82/name": "",
+"slice_82/save_to_file/enabled": false,
+"slice_82/save_to_file/keep_custom_tracks": false,
+"slice_82/save_to_file/path": "",
+"slice_82/start_frame": 0,
+"slice_83/end_frame": 0,
+"slice_83/loop_mode": 0,
+"slice_83/name": "",
+"slice_83/save_to_file/enabled": false,
+"slice_83/save_to_file/keep_custom_tracks": false,
+"slice_83/save_to_file/path": "",
+"slice_83/start_frame": 0,
+"slice_84/end_frame": 0,
+"slice_84/loop_mode": 0,
+"slice_84/name": "",
+"slice_84/save_to_file/enabled": false,
+"slice_84/save_to_file/keep_custom_tracks": false,
+"slice_84/save_to_file/path": "",
+"slice_84/start_frame": 0,
+"slice_85/end_frame": 0,
+"slice_85/loop_mode": 0,
+"slice_85/name": "",
+"slice_85/save_to_file/enabled": false,
+"slice_85/save_to_file/keep_custom_tracks": false,
+"slice_85/save_to_file/path": "",
+"slice_85/start_frame": 0,
+"slice_86/end_frame": 0,
+"slice_86/loop_mode": 0,
+"slice_86/name": "",
+"slice_86/save_to_file/enabled": false,
+"slice_86/save_to_file/keep_custom_tracks": false,
+"slice_86/save_to_file/path": "",
+"slice_86/start_frame": 0,
+"slice_87/end_frame": 0,
+"slice_87/loop_mode": 0,
+"slice_87/name": "",
+"slice_87/save_to_file/enabled": false,
+"slice_87/save_to_file/keep_custom_tracks": false,
+"slice_87/save_to_file/path": "",
+"slice_87/start_frame": 0,
+"slice_88/end_frame": 0,
+"slice_88/loop_mode": 0,
+"slice_88/name": "",
+"slice_88/save_to_file/enabled": false,
+"slice_88/save_to_file/keep_custom_tracks": false,
+"slice_88/save_to_file/path": "",
+"slice_88/start_frame": 0,
+"slice_89/end_frame": 0,
+"slice_89/loop_mode": 0,
+"slice_89/name": "",
+"slice_89/save_to_file/enabled": false,
+"slice_89/save_to_file/keep_custom_tracks": false,
+"slice_89/save_to_file/path": "",
+"slice_89/start_frame": 0,
+"slice_9/end_frame": 0,
+"slice_9/loop_mode": 0,
+"slice_9/name": "",
+"slice_9/save_to_file/enabled": false,
+"slice_9/save_to_file/keep_custom_tracks": false,
+"slice_9/save_to_file/path": "",
+"slice_9/start_frame": 0,
+"slice_90/end_frame": 0,
+"slice_90/loop_mode": 0,
+"slice_90/name": "",
+"slice_90/save_to_file/enabled": false,
+"slice_90/save_to_file/keep_custom_tracks": false,
+"slice_90/save_to_file/path": "",
+"slice_90/start_frame": 0,
+"slice_91/end_frame": 0,
+"slice_91/loop_mode": 0,
+"slice_91/name": "",
+"slice_91/save_to_file/enabled": false,
+"slice_91/save_to_file/keep_custom_tracks": false,
+"slice_91/save_to_file/path": "",
+"slice_91/start_frame": 0,
+"slice_92/end_frame": 0,
+"slice_92/loop_mode": 0,
+"slice_92/name": "",
+"slice_92/save_to_file/enabled": false,
+"slice_92/save_to_file/keep_custom_tracks": false,
+"slice_92/save_to_file/path": "",
+"slice_92/start_frame": 0,
+"slice_93/end_frame": 0,
+"slice_93/loop_mode": 0,
+"slice_93/name": "",
+"slice_93/save_to_file/enabled": false,
+"slice_93/save_to_file/keep_custom_tracks": false,
+"slice_93/save_to_file/path": "",
+"slice_93/start_frame": 0,
+"slice_94/end_frame": 0,
+"slice_94/loop_mode": 0,
+"slice_94/name": "",
+"slice_94/save_to_file/enabled": false,
+"slice_94/save_to_file/keep_custom_tracks": false,
+"slice_94/save_to_file/path": "",
+"slice_94/start_frame": 0,
+"slice_95/end_frame": 0,
+"slice_95/loop_mode": 0,
+"slice_95/name": "",
+"slice_95/save_to_file/enabled": false,
+"slice_95/save_to_file/keep_custom_tracks": false,
+"slice_95/save_to_file/path": "",
+"slice_95/start_frame": 0,
+"slice_96/end_frame": 0,
+"slice_96/loop_mode": 0,
+"slice_96/name": "",
+"slice_96/save_to_file/enabled": false,
+"slice_96/save_to_file/keep_custom_tracks": false,
+"slice_96/save_to_file/path": "",
+"slice_96/start_frame": 0,
+"slice_97/end_frame": 0,
+"slice_97/loop_mode": 0,
+"slice_97/name": "",
+"slice_97/save_to_file/enabled": false,
+"slice_97/save_to_file/keep_custom_tracks": false,
+"slice_97/save_to_file/path": "",
+"slice_97/start_frame": 0,
+"slice_98/end_frame": 0,
+"slice_98/loop_mode": 0,
+"slice_98/name": "",
+"slice_98/save_to_file/enabled": false,
+"slice_98/save_to_file/keep_custom_tracks": false,
+"slice_98/save_to_file/path": "",
+"slice_98/start_frame": 0,
+"slice_99/end_frame": 0,
+"slice_99/loop_mode": 0,
+"slice_99/name": "",
+"slice_99/save_to_file/enabled": false,
+"slice_99/save_to_file/keep_custom_tracks": false,
+"slice_99/save_to_file/path": "",
+"slice_99/start_frame": 0,
+"slices/amount": 0
+},
+"Vert|Idle": {
+"save_to_file/enabled": true,
+"save_to_file/keep_custom_tracks": "",
+"save_to_file/path": "res://content/enemies/animations/Vert_Idle.res",
+"settings/loop_mode": 1,
+"slice_1/end_frame": 0,
+"slice_1/loop_mode": 0,
+"slice_1/name": "",
+"slice_1/save_to_file/enabled": false,
+"slice_1/save_to_file/keep_custom_tracks": false,
+"slice_1/save_to_file/path": "",
+"slice_1/start_frame": 0,
+"slice_10/end_frame": 0,
+"slice_10/loop_mode": 0,
+"slice_10/name": "",
+"slice_10/save_to_file/enabled": false,
+"slice_10/save_to_file/keep_custom_tracks": false,
+"slice_10/save_to_file/path": "",
+"slice_10/start_frame": 0,
+"slice_100/end_frame": 0,
+"slice_100/loop_mode": 0,
+"slice_100/name": "",
+"slice_100/save_to_file/enabled": false,
+"slice_100/save_to_file/keep_custom_tracks": false,
+"slice_100/save_to_file/path": "",
+"slice_100/start_frame": 0,
+"slice_101/end_frame": 0,
+"slice_101/loop_mode": 0,
+"slice_101/name": "",
+"slice_101/save_to_file/enabled": false,
+"slice_101/save_to_file/keep_custom_tracks": false,
+"slice_101/save_to_file/path": "",
+"slice_101/start_frame": 0,
+"slice_102/end_frame": 0,
+"slice_102/loop_mode": 0,
+"slice_102/name": "",
+"slice_102/save_to_file/enabled": false,
+"slice_102/save_to_file/keep_custom_tracks": false,
+"slice_102/save_to_file/path": "",
+"slice_102/start_frame": 0,
+"slice_103/end_frame": 0,
+"slice_103/loop_mode": 0,
+"slice_103/name": "",
+"slice_103/save_to_file/enabled": false,
+"slice_103/save_to_file/keep_custom_tracks": false,
+"slice_103/save_to_file/path": "",
+"slice_103/start_frame": 0,
+"slice_104/end_frame": 0,
+"slice_104/loop_mode": 0,
+"slice_104/name": "",
+"slice_104/save_to_file/enabled": false,
+"slice_104/save_to_file/keep_custom_tracks": false,
+"slice_104/save_to_file/path": "",
+"slice_104/start_frame": 0,
+"slice_105/end_frame": 0,
+"slice_105/loop_mode": 0,
+"slice_105/name": "",
+"slice_105/save_to_file/enabled": false,
+"slice_105/save_to_file/keep_custom_tracks": false,
+"slice_105/save_to_file/path": "",
+"slice_105/start_frame": 0,
+"slice_106/end_frame": 0,
+"slice_106/loop_mode": 0,
+"slice_106/name": "",
+"slice_106/save_to_file/enabled": false,
+"slice_106/save_to_file/keep_custom_tracks": false,
+"slice_106/save_to_file/path": "",
+"slice_106/start_frame": 0,
+"slice_107/end_frame": 0,
+"slice_107/loop_mode": 0,
+"slice_107/name": "",
+"slice_107/save_to_file/enabled": false,
+"slice_107/save_to_file/keep_custom_tracks": false,
+"slice_107/save_to_file/path": "",
+"slice_107/start_frame": 0,
+"slice_108/end_frame": 0,
+"slice_108/loop_mode": 0,
+"slice_108/name": "",
+"slice_108/save_to_file/enabled": false,
+"slice_108/save_to_file/keep_custom_tracks": false,
+"slice_108/save_to_file/path": "",
+"slice_108/start_frame": 0,
+"slice_109/end_frame": 0,
+"slice_109/loop_mode": 0,
+"slice_109/name": "",
+"slice_109/save_to_file/enabled": false,
+"slice_109/save_to_file/keep_custom_tracks": false,
+"slice_109/save_to_file/path": "",
+"slice_109/start_frame": 0,
+"slice_11/end_frame": 0,
+"slice_11/loop_mode": 0,
+"slice_11/name": "",
+"slice_11/save_to_file/enabled": false,
+"slice_11/save_to_file/keep_custom_tracks": false,
+"slice_11/save_to_file/path": "",
+"slice_11/start_frame": 0,
+"slice_110/end_frame": 0,
+"slice_110/loop_mode": 0,
+"slice_110/name": "",
+"slice_110/save_to_file/enabled": false,
+"slice_110/save_to_file/keep_custom_tracks": false,
+"slice_110/save_to_file/path": "",
+"slice_110/start_frame": 0,
+"slice_111/end_frame": 0,
+"slice_111/loop_mode": 0,
+"slice_111/name": "",
+"slice_111/save_to_file/enabled": false,
+"slice_111/save_to_file/keep_custom_tracks": false,
+"slice_111/save_to_file/path": "",
+"slice_111/start_frame": 0,
+"slice_112/end_frame": 0,
+"slice_112/loop_mode": 0,
+"slice_112/name": "",
+"slice_112/save_to_file/enabled": false,
+"slice_112/save_to_file/keep_custom_tracks": false,
+"slice_112/save_to_file/path": "",
+"slice_112/start_frame": 0,
+"slice_113/end_frame": 0,
+"slice_113/loop_mode": 0,
+"slice_113/name": "",
+"slice_113/save_to_file/enabled": false,
+"slice_113/save_to_file/keep_custom_tracks": false,
+"slice_113/save_to_file/path": "",
+"slice_113/start_frame": 0,
+"slice_114/end_frame": 0,
+"slice_114/loop_mode": 0,
+"slice_114/name": "",
+"slice_114/save_to_file/enabled": false,
+"slice_114/save_to_file/keep_custom_tracks": false,
+"slice_114/save_to_file/path": "",
+"slice_114/start_frame": 0,
+"slice_115/end_frame": 0,
+"slice_115/loop_mode": 0,
+"slice_115/name": "",
+"slice_115/save_to_file/enabled": false,
+"slice_115/save_to_file/keep_custom_tracks": false,
+"slice_115/save_to_file/path": "",
+"slice_115/start_frame": 0,
+"slice_116/end_frame": 0,
+"slice_116/loop_mode": 0,
+"slice_116/name": "",
+"slice_116/save_to_file/enabled": false,
+"slice_116/save_to_file/keep_custom_tracks": false,
+"slice_116/save_to_file/path": "",
+"slice_116/start_frame": 0,
+"slice_117/end_frame": 0,
+"slice_117/loop_mode": 0,
+"slice_117/name": "",
+"slice_117/save_to_file/enabled": false,
+"slice_117/save_to_file/keep_custom_tracks": false,
+"slice_117/save_to_file/path": "",
+"slice_117/start_frame": 0,
+"slice_118/end_frame": 0,
+"slice_118/loop_mode": 0,
+"slice_118/name": "",
+"slice_118/save_to_file/enabled": false,
+"slice_118/save_to_file/keep_custom_tracks": false,
+"slice_118/save_to_file/path": "",
+"slice_118/start_frame": 0,
+"slice_119/end_frame": 0,
+"slice_119/loop_mode": 0,
+"slice_119/name": "",
+"slice_119/save_to_file/enabled": false,
+"slice_119/save_to_file/keep_custom_tracks": false,
+"slice_119/save_to_file/path": "",
+"slice_119/start_frame": 0,
+"slice_12/end_frame": 0,
+"slice_12/loop_mode": 0,
+"slice_12/name": "",
+"slice_12/save_to_file/enabled": false,
+"slice_12/save_to_file/keep_custom_tracks": false,
+"slice_12/save_to_file/path": "",
+"slice_12/start_frame": 0,
+"slice_120/end_frame": 0,
+"slice_120/loop_mode": 0,
+"slice_120/name": "",
+"slice_120/save_to_file/enabled": false,
+"slice_120/save_to_file/keep_custom_tracks": false,
+"slice_120/save_to_file/path": "",
+"slice_120/start_frame": 0,
+"slice_121/end_frame": 0,
+"slice_121/loop_mode": 0,
+"slice_121/name": "",
+"slice_121/save_to_file/enabled": false,
+"slice_121/save_to_file/keep_custom_tracks": false,
+"slice_121/save_to_file/path": "",
+"slice_121/start_frame": 0,
+"slice_122/end_frame": 0,
+"slice_122/loop_mode": 0,
+"slice_122/name": "",
+"slice_122/save_to_file/enabled": false,
+"slice_122/save_to_file/keep_custom_tracks": false,
+"slice_122/save_to_file/path": "",
+"slice_122/start_frame": 0,
+"slice_123/end_frame": 0,
+"slice_123/loop_mode": 0,
+"slice_123/name": "",
+"slice_123/save_to_file/enabled": false,
+"slice_123/save_to_file/keep_custom_tracks": false,
+"slice_123/save_to_file/path": "",
+"slice_123/start_frame": 0,
+"slice_124/end_frame": 0,
+"slice_124/loop_mode": 0,
+"slice_124/name": "",
+"slice_124/save_to_file/enabled": false,
+"slice_124/save_to_file/keep_custom_tracks": false,
+"slice_124/save_to_file/path": "",
+"slice_124/start_frame": 0,
+"slice_125/end_frame": 0,
+"slice_125/loop_mode": 0,
+"slice_125/name": "",
+"slice_125/save_to_file/enabled": false,
+"slice_125/save_to_file/keep_custom_tracks": false,
+"slice_125/save_to_file/path": "",
+"slice_125/start_frame": 0,
+"slice_126/end_frame": 0,
+"slice_126/loop_mode": 0,
+"slice_126/name": "",
+"slice_126/save_to_file/enabled": false,
+"slice_126/save_to_file/keep_custom_tracks": false,
+"slice_126/save_to_file/path": "",
+"slice_126/start_frame": 0,
+"slice_127/end_frame": 0,
+"slice_127/loop_mode": 0,
+"slice_127/name": "",
+"slice_127/save_to_file/enabled": false,
+"slice_127/save_to_file/keep_custom_tracks": false,
+"slice_127/save_to_file/path": "",
+"slice_127/start_frame": 0,
+"slice_128/end_frame": 0,
+"slice_128/loop_mode": 0,
+"slice_128/name": "",
+"slice_128/save_to_file/enabled": false,
+"slice_128/save_to_file/keep_custom_tracks": false,
+"slice_128/save_to_file/path": "",
+"slice_128/start_frame": 0,
+"slice_129/end_frame": 0,
+"slice_129/loop_mode": 0,
+"slice_129/name": "",
+"slice_129/save_to_file/enabled": false,
+"slice_129/save_to_file/keep_custom_tracks": false,
+"slice_129/save_to_file/path": "",
+"slice_129/start_frame": 0,
+"slice_13/end_frame": 0,
+"slice_13/loop_mode": 0,
+"slice_13/name": "",
+"slice_13/save_to_file/enabled": false,
+"slice_13/save_to_file/keep_custom_tracks": false,
+"slice_13/save_to_file/path": "",
+"slice_13/start_frame": 0,
+"slice_130/end_frame": 0,
+"slice_130/loop_mode": 0,
+"slice_130/name": "",
+"slice_130/save_to_file/enabled": false,
+"slice_130/save_to_file/keep_custom_tracks": false,
+"slice_130/save_to_file/path": "",
+"slice_130/start_frame": 0,
+"slice_131/end_frame": 0,
+"slice_131/loop_mode": 0,
+"slice_131/name": "",
+"slice_131/save_to_file/enabled": false,
+"slice_131/save_to_file/keep_custom_tracks": false,
+"slice_131/save_to_file/path": "",
+"slice_131/start_frame": 0,
+"slice_132/end_frame": 0,
+"slice_132/loop_mode": 0,
+"slice_132/name": "",
+"slice_132/save_to_file/enabled": false,
+"slice_132/save_to_file/keep_custom_tracks": false,
+"slice_132/save_to_file/path": "",
+"slice_132/start_frame": 0,
+"slice_133/end_frame": 0,
+"slice_133/loop_mode": 0,
+"slice_133/name": "",
+"slice_133/save_to_file/enabled": false,
+"slice_133/save_to_file/keep_custom_tracks": false,
+"slice_133/save_to_file/path": "",
+"slice_133/start_frame": 0,
+"slice_134/end_frame": 0,
+"slice_134/loop_mode": 0,
+"slice_134/name": "",
+"slice_134/save_to_file/enabled": false,
+"slice_134/save_to_file/keep_custom_tracks": false,
+"slice_134/save_to_file/path": "",
+"slice_134/start_frame": 0,
+"slice_135/end_frame": 0,
+"slice_135/loop_mode": 0,
+"slice_135/name": "",
+"slice_135/save_to_file/enabled": false,
+"slice_135/save_to_file/keep_custom_tracks": false,
+"slice_135/save_to_file/path": "",
+"slice_135/start_frame": 0,
+"slice_136/end_frame": 0,
+"slice_136/loop_mode": 0,
+"slice_136/name": "",
+"slice_136/save_to_file/enabled": false,
+"slice_136/save_to_file/keep_custom_tracks": false,
+"slice_136/save_to_file/path": "",
+"slice_136/start_frame": 0,
+"slice_137/end_frame": 0,
+"slice_137/loop_mode": 0,
+"slice_137/name": "",
+"slice_137/save_to_file/enabled": false,
+"slice_137/save_to_file/keep_custom_tracks": false,
+"slice_137/save_to_file/path": "",
+"slice_137/start_frame": 0,
+"slice_138/end_frame": 0,
+"slice_138/loop_mode": 0,
+"slice_138/name": "",
+"slice_138/save_to_file/enabled": false,
+"slice_138/save_to_file/keep_custom_tracks": false,
+"slice_138/save_to_file/path": "",
+"slice_138/start_frame": 0,
+"slice_139/end_frame": 0,
+"slice_139/loop_mode": 0,
+"slice_139/name": "",
+"slice_139/save_to_file/enabled": false,
+"slice_139/save_to_file/keep_custom_tracks": false,
+"slice_139/save_to_file/path": "",
+"slice_139/start_frame": 0,
+"slice_14/end_frame": 0,
+"slice_14/loop_mode": 0,
+"slice_14/name": "",
+"slice_14/save_to_file/enabled": false,
+"slice_14/save_to_file/keep_custom_tracks": false,
+"slice_14/save_to_file/path": "",
+"slice_14/start_frame": 0,
+"slice_140/end_frame": 0,
+"slice_140/loop_mode": 0,
+"slice_140/name": "",
+"slice_140/save_to_file/enabled": false,
+"slice_140/save_to_file/keep_custom_tracks": false,
+"slice_140/save_to_file/path": "",
+"slice_140/start_frame": 0,
+"slice_141/end_frame": 0,
+"slice_141/loop_mode": 0,
+"slice_141/name": "",
+"slice_141/save_to_file/enabled": false,
+"slice_141/save_to_file/keep_custom_tracks": false,
+"slice_141/save_to_file/path": "",
+"slice_141/start_frame": 0,
+"slice_142/end_frame": 0,
+"slice_142/loop_mode": 0,
+"slice_142/name": "",
+"slice_142/save_to_file/enabled": false,
+"slice_142/save_to_file/keep_custom_tracks": false,
+"slice_142/save_to_file/path": "",
+"slice_142/start_frame": 0,
+"slice_143/end_frame": 0,
+"slice_143/loop_mode": 0,
+"slice_143/name": "",
+"slice_143/save_to_file/enabled": false,
+"slice_143/save_to_file/keep_custom_tracks": false,
+"slice_143/save_to_file/path": "",
+"slice_143/start_frame": 0,
+"slice_144/end_frame": 0,
+"slice_144/loop_mode": 0,
+"slice_144/name": "",
+"slice_144/save_to_file/enabled": false,
+"slice_144/save_to_file/keep_custom_tracks": false,
+"slice_144/save_to_file/path": "",
+"slice_144/start_frame": 0,
+"slice_145/end_frame": 0,
+"slice_145/loop_mode": 0,
+"slice_145/name": "",
+"slice_145/save_to_file/enabled": false,
+"slice_145/save_to_file/keep_custom_tracks": false,
+"slice_145/save_to_file/path": "",
+"slice_145/start_frame": 0,
+"slice_146/end_frame": 0,
+"slice_146/loop_mode": 0,
+"slice_146/name": "",
+"slice_146/save_to_file/enabled": false,
+"slice_146/save_to_file/keep_custom_tracks": false,
+"slice_146/save_to_file/path": "",
+"slice_146/start_frame": 0,
+"slice_147/end_frame": 0,
+"slice_147/loop_mode": 0,
+"slice_147/name": "",
+"slice_147/save_to_file/enabled": false,
+"slice_147/save_to_file/keep_custom_tracks": false,
+"slice_147/save_to_file/path": "",
+"slice_147/start_frame": 0,
+"slice_148/end_frame": 0,
+"slice_148/loop_mode": 0,
+"slice_148/name": "",
+"slice_148/save_to_file/enabled": false,
+"slice_148/save_to_file/keep_custom_tracks": false,
+"slice_148/save_to_file/path": "",
+"slice_148/start_frame": 0,
+"slice_149/end_frame": 0,
+"slice_149/loop_mode": 0,
+"slice_149/name": "",
+"slice_149/save_to_file/enabled": false,
+"slice_149/save_to_file/keep_custom_tracks": false,
+"slice_149/save_to_file/path": "",
+"slice_149/start_frame": 0,
+"slice_15/end_frame": 0,
+"slice_15/loop_mode": 0,
+"slice_15/name": "",
+"slice_15/save_to_file/enabled": false,
+"slice_15/save_to_file/keep_custom_tracks": false,
+"slice_15/save_to_file/path": "",
+"slice_15/start_frame": 0,
+"slice_150/end_frame": 0,
+"slice_150/loop_mode": 0,
+"slice_150/name": "",
+"slice_150/save_to_file/enabled": false,
+"slice_150/save_to_file/keep_custom_tracks": false,
+"slice_150/save_to_file/path": "",
+"slice_150/start_frame": 0,
+"slice_151/end_frame": 0,
+"slice_151/loop_mode": 0,
+"slice_151/name": "",
+"slice_151/save_to_file/enabled": false,
+"slice_151/save_to_file/keep_custom_tracks": false,
+"slice_151/save_to_file/path": "",
+"slice_151/start_frame": 0,
+"slice_152/end_frame": 0,
+"slice_152/loop_mode": 0,
+"slice_152/name": "",
+"slice_152/save_to_file/enabled": false,
+"slice_152/save_to_file/keep_custom_tracks": false,
+"slice_152/save_to_file/path": "",
+"slice_152/start_frame": 0,
+"slice_153/end_frame": 0,
+"slice_153/loop_mode": 0,
+"slice_153/name": "",
+"slice_153/save_to_file/enabled": false,
+"slice_153/save_to_file/keep_custom_tracks": false,
+"slice_153/save_to_file/path": "",
+"slice_153/start_frame": 0,
+"slice_154/end_frame": 0,
+"slice_154/loop_mode": 0,
+"slice_154/name": "",
+"slice_154/save_to_file/enabled": false,
+"slice_154/save_to_file/keep_custom_tracks": false,
+"slice_154/save_to_file/path": "",
+"slice_154/start_frame": 0,
+"slice_155/end_frame": 0,
+"slice_155/loop_mode": 0,
+"slice_155/name": "",
+"slice_155/save_to_file/enabled": false,
+"slice_155/save_to_file/keep_custom_tracks": false,
+"slice_155/save_to_file/path": "",
+"slice_155/start_frame": 0,
+"slice_156/end_frame": 0,
+"slice_156/loop_mode": 0,
+"slice_156/name": "",
+"slice_156/save_to_file/enabled": false,
+"slice_156/save_to_file/keep_custom_tracks": false,
+"slice_156/save_to_file/path": "",
+"slice_156/start_frame": 0,
+"slice_157/end_frame": 0,
+"slice_157/loop_mode": 0,
+"slice_157/name": "",
+"slice_157/save_to_file/enabled": false,
+"slice_157/save_to_file/keep_custom_tracks": false,
+"slice_157/save_to_file/path": "",
+"slice_157/start_frame": 0,
+"slice_158/end_frame": 0,
+"slice_158/loop_mode": 0,
+"slice_158/name": "",
+"slice_158/save_to_file/enabled": false,
+"slice_158/save_to_file/keep_custom_tracks": false,
+"slice_158/save_to_file/path": "",
+"slice_158/start_frame": 0,
+"slice_159/end_frame": 0,
+"slice_159/loop_mode": 0,
+"slice_159/name": "",
+"slice_159/save_to_file/enabled": false,
+"slice_159/save_to_file/keep_custom_tracks": false,
+"slice_159/save_to_file/path": "",
+"slice_159/start_frame": 0,
+"slice_16/end_frame": 0,
+"slice_16/loop_mode": 0,
+"slice_16/name": "",
+"slice_16/save_to_file/enabled": false,
+"slice_16/save_to_file/keep_custom_tracks": false,
+"slice_16/save_to_file/path": "",
+"slice_16/start_frame": 0,
+"slice_160/end_frame": 0,
+"slice_160/loop_mode": 0,
+"slice_160/name": "",
+"slice_160/save_to_file/enabled": false,
+"slice_160/save_to_file/keep_custom_tracks": false,
+"slice_160/save_to_file/path": "",
+"slice_160/start_frame": 0,
+"slice_161/end_frame": 0,
+"slice_161/loop_mode": 0,
+"slice_161/name": "",
+"slice_161/save_to_file/enabled": false,
+"slice_161/save_to_file/keep_custom_tracks": false,
+"slice_161/save_to_file/path": "",
+"slice_161/start_frame": 0,
+"slice_162/end_frame": 0,
+"slice_162/loop_mode": 0,
+"slice_162/name": "",
+"slice_162/save_to_file/enabled": false,
+"slice_162/save_to_file/keep_custom_tracks": false,
+"slice_162/save_to_file/path": "",
+"slice_162/start_frame": 0,
+"slice_163/end_frame": 0,
+"slice_163/loop_mode": 0,
+"slice_163/name": "",
+"slice_163/save_to_file/enabled": false,
+"slice_163/save_to_file/keep_custom_tracks": false,
+"slice_163/save_to_file/path": "",
+"slice_163/start_frame": 0,
+"slice_164/end_frame": 0,
+"slice_164/loop_mode": 0,
+"slice_164/name": "",
+"slice_164/save_to_file/enabled": false,
+"slice_164/save_to_file/keep_custom_tracks": false,
+"slice_164/save_to_file/path": "",
+"slice_164/start_frame": 0,
+"slice_165/end_frame": 0,
+"slice_165/loop_mode": 0,
+"slice_165/name": "",
+"slice_165/save_to_file/enabled": false,
+"slice_165/save_to_file/keep_custom_tracks": false,
+"slice_165/save_to_file/path": "",
+"slice_165/start_frame": 0,
+"slice_166/end_frame": 0,
+"slice_166/loop_mode": 0,
+"slice_166/name": "",
+"slice_166/save_to_file/enabled": false,
+"slice_166/save_to_file/keep_custom_tracks": false,
+"slice_166/save_to_file/path": "",
+"slice_166/start_frame": 0,
+"slice_167/end_frame": 0,
+"slice_167/loop_mode": 0,
+"slice_167/name": "",
+"slice_167/save_to_file/enabled": false,
+"slice_167/save_to_file/keep_custom_tracks": false,
+"slice_167/save_to_file/path": "",
+"slice_167/start_frame": 0,
+"slice_168/end_frame": 0,
+"slice_168/loop_mode": 0,
+"slice_168/name": "",
+"slice_168/save_to_file/enabled": false,
+"slice_168/save_to_file/keep_custom_tracks": false,
+"slice_168/save_to_file/path": "",
+"slice_168/start_frame": 0,
+"slice_169/end_frame": 0,
+"slice_169/loop_mode": 0,
+"slice_169/name": "",
+"slice_169/save_to_file/enabled": false,
+"slice_169/save_to_file/keep_custom_tracks": false,
+"slice_169/save_to_file/path": "",
+"slice_169/start_frame": 0,
+"slice_17/end_frame": 0,
+"slice_17/loop_mode": 0,
+"slice_17/name": "",
+"slice_17/save_to_file/enabled": false,
+"slice_17/save_to_file/keep_custom_tracks": false,
+"slice_17/save_to_file/path": "",
+"slice_17/start_frame": 0,
+"slice_170/end_frame": 0,
+"slice_170/loop_mode": 0,
+"slice_170/name": "",
+"slice_170/save_to_file/enabled": false,
+"slice_170/save_to_file/keep_custom_tracks": false,
+"slice_170/save_to_file/path": "",
+"slice_170/start_frame": 0,
+"slice_171/end_frame": 0,
+"slice_171/loop_mode": 0,
+"slice_171/name": "",
+"slice_171/save_to_file/enabled": false,
+"slice_171/save_to_file/keep_custom_tracks": false,
+"slice_171/save_to_file/path": "",
+"slice_171/start_frame": 0,
+"slice_172/end_frame": 0,
+"slice_172/loop_mode": 0,
+"slice_172/name": "",
+"slice_172/save_to_file/enabled": false,
+"slice_172/save_to_file/keep_custom_tracks": false,
+"slice_172/save_to_file/path": "",
+"slice_172/start_frame": 0,
+"slice_173/end_frame": 0,
+"slice_173/loop_mode": 0,
+"slice_173/name": "",
+"slice_173/save_to_file/enabled": false,
+"slice_173/save_to_file/keep_custom_tracks": false,
+"slice_173/save_to_file/path": "",
+"slice_173/start_frame": 0,
+"slice_174/end_frame": 0,
+"slice_174/loop_mode": 0,
+"slice_174/name": "",
+"slice_174/save_to_file/enabled": false,
+"slice_174/save_to_file/keep_custom_tracks": false,
+"slice_174/save_to_file/path": "",
+"slice_174/start_frame": 0,
+"slice_175/end_frame": 0,
+"slice_175/loop_mode": 0,
+"slice_175/name": "",
+"slice_175/save_to_file/enabled": false,
+"slice_175/save_to_file/keep_custom_tracks": false,
+"slice_175/save_to_file/path": "",
+"slice_175/start_frame": 0,
+"slice_176/end_frame": 0,
+"slice_176/loop_mode": 0,
+"slice_176/name": "",
+"slice_176/save_to_file/enabled": false,
+"slice_176/save_to_file/keep_custom_tracks": false,
+"slice_176/save_to_file/path": "",
+"slice_176/start_frame": 0,
+"slice_177/end_frame": 0,
+"slice_177/loop_mode": 0,
+"slice_177/name": "",
+"slice_177/save_to_file/enabled": false,
+"slice_177/save_to_file/keep_custom_tracks": false,
+"slice_177/save_to_file/path": "",
+"slice_177/start_frame": 0,
+"slice_178/end_frame": 0,
+"slice_178/loop_mode": 0,
+"slice_178/name": "",
+"slice_178/save_to_file/enabled": false,
+"slice_178/save_to_file/keep_custom_tracks": false,
+"slice_178/save_to_file/path": "",
+"slice_178/start_frame": 0,
+"slice_179/end_frame": 0,
+"slice_179/loop_mode": 0,
+"slice_179/name": "",
+"slice_179/save_to_file/enabled": false,
+"slice_179/save_to_file/keep_custom_tracks": false,
+"slice_179/save_to_file/path": "",
+"slice_179/start_frame": 0,
+"slice_18/end_frame": 0,
+"slice_18/loop_mode": 0,
+"slice_18/name": "",
+"slice_18/save_to_file/enabled": false,
+"slice_18/save_to_file/keep_custom_tracks": false,
+"slice_18/save_to_file/path": "",
+"slice_18/start_frame": 0,
+"slice_180/end_frame": 0,
+"slice_180/loop_mode": 0,
+"slice_180/name": "",
+"slice_180/save_to_file/enabled": false,
+"slice_180/save_to_file/keep_custom_tracks": false,
+"slice_180/save_to_file/path": "",
+"slice_180/start_frame": 0,
+"slice_181/end_frame": 0,
+"slice_181/loop_mode": 0,
+"slice_181/name": "",
+"slice_181/save_to_file/enabled": false,
+"slice_181/save_to_file/keep_custom_tracks": false,
+"slice_181/save_to_file/path": "",
+"slice_181/start_frame": 0,
+"slice_182/end_frame": 0,
+"slice_182/loop_mode": 0,
+"slice_182/name": "",
+"slice_182/save_to_file/enabled": false,
+"slice_182/save_to_file/keep_custom_tracks": false,
+"slice_182/save_to_file/path": "",
+"slice_182/start_frame": 0,
+"slice_183/end_frame": 0,
+"slice_183/loop_mode": 0,
+"slice_183/name": "",
+"slice_183/save_to_file/enabled": false,
+"slice_183/save_to_file/keep_custom_tracks": false,
+"slice_183/save_to_file/path": "",
+"slice_183/start_frame": 0,
+"slice_184/end_frame": 0,
+"slice_184/loop_mode": 0,
+"slice_184/name": "",
+"slice_184/save_to_file/enabled": false,
+"slice_184/save_to_file/keep_custom_tracks": false,
+"slice_184/save_to_file/path": "",
+"slice_184/start_frame": 0,
+"slice_185/end_frame": 0,
+"slice_185/loop_mode": 0,
+"slice_185/name": "",
+"slice_185/save_to_file/enabled": false,
+"slice_185/save_to_file/keep_custom_tracks": false,
+"slice_185/save_to_file/path": "",
+"slice_185/start_frame": 0,
+"slice_186/end_frame": 0,
+"slice_186/loop_mode": 0,
+"slice_186/name": "",
+"slice_186/save_to_file/enabled": false,
+"slice_186/save_to_file/keep_custom_tracks": false,
+"slice_186/save_to_file/path": "",
+"slice_186/start_frame": 0,
+"slice_187/end_frame": 0,
+"slice_187/loop_mode": 0,
+"slice_187/name": "",
+"slice_187/save_to_file/enabled": false,
+"slice_187/save_to_file/keep_custom_tracks": false,
+"slice_187/save_to_file/path": "",
+"slice_187/start_frame": 0,
+"slice_188/end_frame": 0,
+"slice_188/loop_mode": 0,
+"slice_188/name": "",
+"slice_188/save_to_file/enabled": false,
+"slice_188/save_to_file/keep_custom_tracks": false,
+"slice_188/save_to_file/path": "",
+"slice_188/start_frame": 0,
+"slice_189/end_frame": 0,
+"slice_189/loop_mode": 0,
+"slice_189/name": "",
+"slice_189/save_to_file/enabled": false,
+"slice_189/save_to_file/keep_custom_tracks": false,
+"slice_189/save_to_file/path": "",
+"slice_189/start_frame": 0,
+"slice_19/end_frame": 0,
+"slice_19/loop_mode": 0,
+"slice_19/name": "",
+"slice_19/save_to_file/enabled": false,
+"slice_19/save_to_file/keep_custom_tracks": false,
+"slice_19/save_to_file/path": "",
+"slice_19/start_frame": 0,
+"slice_190/end_frame": 0,
+"slice_190/loop_mode": 0,
+"slice_190/name": "",
+"slice_190/save_to_file/enabled": false,
+"slice_190/save_to_file/keep_custom_tracks": false,
+"slice_190/save_to_file/path": "",
+"slice_190/start_frame": 0,
+"slice_191/end_frame": 0,
+"slice_191/loop_mode": 0,
+"slice_191/name": "",
+"slice_191/save_to_file/enabled": false,
+"slice_191/save_to_file/keep_custom_tracks": false,
+"slice_191/save_to_file/path": "",
+"slice_191/start_frame": 0,
+"slice_192/end_frame": 0,
+"slice_192/loop_mode": 0,
+"slice_192/name": "",
+"slice_192/save_to_file/enabled": false,
+"slice_192/save_to_file/keep_custom_tracks": false,
+"slice_192/save_to_file/path": "",
+"slice_192/start_frame": 0,
+"slice_193/end_frame": 0,
+"slice_193/loop_mode": 0,
+"slice_193/name": "",
+"slice_193/save_to_file/enabled": false,
+"slice_193/save_to_file/keep_custom_tracks": false,
+"slice_193/save_to_file/path": "",
+"slice_193/start_frame": 0,
+"slice_194/end_frame": 0,
+"slice_194/loop_mode": 0,
+"slice_194/name": "",
+"slice_194/save_to_file/enabled": false,
+"slice_194/save_to_file/keep_custom_tracks": false,
+"slice_194/save_to_file/path": "",
+"slice_194/start_frame": 0,
+"slice_195/end_frame": 0,
+"slice_195/loop_mode": 0,
+"slice_195/name": "",
+"slice_195/save_to_file/enabled": false,
+"slice_195/save_to_file/keep_custom_tracks": false,
+"slice_195/save_to_file/path": "",
+"slice_195/start_frame": 0,
+"slice_196/end_frame": 0,
+"slice_196/loop_mode": 0,
+"slice_196/name": "",
+"slice_196/save_to_file/enabled": false,
+"slice_196/save_to_file/keep_custom_tracks": false,
+"slice_196/save_to_file/path": "",
+"slice_196/start_frame": 0,
+"slice_197/end_frame": 0,
+"slice_197/loop_mode": 0,
+"slice_197/name": "",
+"slice_197/save_to_file/enabled": false,
+"slice_197/save_to_file/keep_custom_tracks": false,
+"slice_197/save_to_file/path": "",
+"slice_197/start_frame": 0,
+"slice_198/end_frame": 0,
+"slice_198/loop_mode": 0,
+"slice_198/name": "",
+"slice_198/save_to_file/enabled": false,
+"slice_198/save_to_file/keep_custom_tracks": false,
+"slice_198/save_to_file/path": "",
+"slice_198/start_frame": 0,
+"slice_199/end_frame": 0,
+"slice_199/loop_mode": 0,
+"slice_199/name": "",
+"slice_199/save_to_file/enabled": false,
+"slice_199/save_to_file/keep_custom_tracks": false,
+"slice_199/save_to_file/path": "",
+"slice_199/start_frame": 0,
+"slice_2/end_frame": 0,
+"slice_2/loop_mode": 0,
+"slice_2/name": "",
+"slice_2/save_to_file/enabled": false,
+"slice_2/save_to_file/keep_custom_tracks": false,
+"slice_2/save_to_file/path": "",
+"slice_2/start_frame": 0,
+"slice_20/end_frame": 0,
+"slice_20/loop_mode": 0,
+"slice_20/name": "",
+"slice_20/save_to_file/enabled": false,
+"slice_20/save_to_file/keep_custom_tracks": false,
+"slice_20/save_to_file/path": "",
+"slice_20/start_frame": 0,
+"slice_200/end_frame": 0,
+"slice_200/loop_mode": 0,
+"slice_200/name": "",
+"slice_200/save_to_file/enabled": false,
+"slice_200/save_to_file/keep_custom_tracks": false,
+"slice_200/save_to_file/path": "",
+"slice_200/start_frame": 0,
+"slice_201/end_frame": 0,
+"slice_201/loop_mode": 0,
+"slice_201/name": "",
+"slice_201/save_to_file/enabled": false,
+"slice_201/save_to_file/keep_custom_tracks": false,
+"slice_201/save_to_file/path": "",
+"slice_201/start_frame": 0,
+"slice_202/end_frame": 0,
+"slice_202/loop_mode": 0,
+"slice_202/name": "",
+"slice_202/save_to_file/enabled": false,
+"slice_202/save_to_file/keep_custom_tracks": false,
+"slice_202/save_to_file/path": "",
+"slice_202/start_frame": 0,
+"slice_203/end_frame": 0,
+"slice_203/loop_mode": 0,
+"slice_203/name": "",
+"slice_203/save_to_file/enabled": false,
+"slice_203/save_to_file/keep_custom_tracks": false,
+"slice_203/save_to_file/path": "",
+"slice_203/start_frame": 0,
+"slice_204/end_frame": 0,
+"slice_204/loop_mode": 0,
+"slice_204/name": "",
+"slice_204/save_to_file/enabled": false,
+"slice_204/save_to_file/keep_custom_tracks": false,
+"slice_204/save_to_file/path": "",
+"slice_204/start_frame": 0,
+"slice_205/end_frame": 0,
+"slice_205/loop_mode": 0,
+"slice_205/name": "",
+"slice_205/save_to_file/enabled": false,
+"slice_205/save_to_file/keep_custom_tracks": false,
+"slice_205/save_to_file/path": "",
+"slice_205/start_frame": 0,
+"slice_206/end_frame": 0,
+"slice_206/loop_mode": 0,
+"slice_206/name": "",
+"slice_206/save_to_file/enabled": false,
+"slice_206/save_to_file/keep_custom_tracks": false,
+"slice_206/save_to_file/path": "",
+"slice_206/start_frame": 0,
+"slice_207/end_frame": 0,
+"slice_207/loop_mode": 0,
+"slice_207/name": "",
+"slice_207/save_to_file/enabled": false,
+"slice_207/save_to_file/keep_custom_tracks": false,
+"slice_207/save_to_file/path": "",
+"slice_207/start_frame": 0,
+"slice_208/end_frame": 0,
+"slice_208/loop_mode": 0,
+"slice_208/name": "",
+"slice_208/save_to_file/enabled": false,
+"slice_208/save_to_file/keep_custom_tracks": false,
+"slice_208/save_to_file/path": "",
+"slice_208/start_frame": 0,
+"slice_209/end_frame": 0,
+"slice_209/loop_mode": 0,
+"slice_209/name": "",
+"slice_209/save_to_file/enabled": false,
+"slice_209/save_to_file/keep_custom_tracks": false,
+"slice_209/save_to_file/path": "",
+"slice_209/start_frame": 0,
+"slice_21/end_frame": 0,
+"slice_21/loop_mode": 0,
+"slice_21/name": "",
+"slice_21/save_to_file/enabled": false,
+"slice_21/save_to_file/keep_custom_tracks": false,
+"slice_21/save_to_file/path": "",
+"slice_21/start_frame": 0,
+"slice_210/end_frame": 0,
+"slice_210/loop_mode": 0,
+"slice_210/name": "",
+"slice_210/save_to_file/enabled": false,
+"slice_210/save_to_file/keep_custom_tracks": false,
+"slice_210/save_to_file/path": "",
+"slice_210/start_frame": 0,
+"slice_211/end_frame": 0,
+"slice_211/loop_mode": 0,
+"slice_211/name": "",
+"slice_211/save_to_file/enabled": false,
+"slice_211/save_to_file/keep_custom_tracks": false,
+"slice_211/save_to_file/path": "",
+"slice_211/start_frame": 0,
+"slice_212/end_frame": 0,
+"slice_212/loop_mode": 0,
+"slice_212/name": "",
+"slice_212/save_to_file/enabled": false,
+"slice_212/save_to_file/keep_custom_tracks": false,
+"slice_212/save_to_file/path": "",
+"slice_212/start_frame": 0,
+"slice_213/end_frame": 0,
+"slice_213/loop_mode": 0,
+"slice_213/name": "",
+"slice_213/save_to_file/enabled": false,
+"slice_213/save_to_file/keep_custom_tracks": false,
+"slice_213/save_to_file/path": "",
+"slice_213/start_frame": 0,
+"slice_214/end_frame": 0,
+"slice_214/loop_mode": 0,
+"slice_214/name": "",
+"slice_214/save_to_file/enabled": false,
+"slice_214/save_to_file/keep_custom_tracks": false,
+"slice_214/save_to_file/path": "",
+"slice_214/start_frame": 0,
+"slice_215/end_frame": 0,
+"slice_215/loop_mode": 0,
+"slice_215/name": "",
+"slice_215/save_to_file/enabled": false,
+"slice_215/save_to_file/keep_custom_tracks": false,
+"slice_215/save_to_file/path": "",
+"slice_215/start_frame": 0,
+"slice_216/end_frame": 0,
+"slice_216/loop_mode": 0,
+"slice_216/name": "",
+"slice_216/save_to_file/enabled": false,
+"slice_216/save_to_file/keep_custom_tracks": false,
+"slice_216/save_to_file/path": "",
+"slice_216/start_frame": 0,
+"slice_217/end_frame": 0,
+"slice_217/loop_mode": 0,
+"slice_217/name": "",
+"slice_217/save_to_file/enabled": false,
+"slice_217/save_to_file/keep_custom_tracks": false,
+"slice_217/save_to_file/path": "",
+"slice_217/start_frame": 0,
+"slice_218/end_frame": 0,
+"slice_218/loop_mode": 0,
+"slice_218/name": "",
+"slice_218/save_to_file/enabled": false,
+"slice_218/save_to_file/keep_custom_tracks": false,
+"slice_218/save_to_file/path": "",
+"slice_218/start_frame": 0,
+"slice_219/end_frame": 0,
+"slice_219/loop_mode": 0,
+"slice_219/name": "",
+"slice_219/save_to_file/enabled": false,
+"slice_219/save_to_file/keep_custom_tracks": false,
+"slice_219/save_to_file/path": "",
+"slice_219/start_frame": 0,
+"slice_22/end_frame": 0,
+"slice_22/loop_mode": 0,
+"slice_22/name": "",
+"slice_22/save_to_file/enabled": false,
+"slice_22/save_to_file/keep_custom_tracks": false,
+"slice_22/save_to_file/path": "",
+"slice_22/start_frame": 0,
+"slice_220/end_frame": 0,
+"slice_220/loop_mode": 0,
+"slice_220/name": "",
+"slice_220/save_to_file/enabled": false,
+"slice_220/save_to_file/keep_custom_tracks": false,
+"slice_220/save_to_file/path": "",
+"slice_220/start_frame": 0,
+"slice_221/end_frame": 0,
+"slice_221/loop_mode": 0,
+"slice_221/name": "",
+"slice_221/save_to_file/enabled": false,
+"slice_221/save_to_file/keep_custom_tracks": false,
+"slice_221/save_to_file/path": "",
+"slice_221/start_frame": 0,
+"slice_222/end_frame": 0,
+"slice_222/loop_mode": 0,
+"slice_222/name": "",
+"slice_222/save_to_file/enabled": false,
+"slice_222/save_to_file/keep_custom_tracks": false,
+"slice_222/save_to_file/path": "",
+"slice_222/start_frame": 0,
+"slice_223/end_frame": 0,
+"slice_223/loop_mode": 0,
+"slice_223/name": "",
+"slice_223/save_to_file/enabled": false,
+"slice_223/save_to_file/keep_custom_tracks": false,
+"slice_223/save_to_file/path": "",
+"slice_223/start_frame": 0,
+"slice_224/end_frame": 0,
+"slice_224/loop_mode": 0,
+"slice_224/name": "",
+"slice_224/save_to_file/enabled": false,
+"slice_224/save_to_file/keep_custom_tracks": false,
+"slice_224/save_to_file/path": "",
+"slice_224/start_frame": 0,
+"slice_225/end_frame": 0,
+"slice_225/loop_mode": 0,
+"slice_225/name": "",
+"slice_225/save_to_file/enabled": false,
+"slice_225/save_to_file/keep_custom_tracks": false,
+"slice_225/save_to_file/path": "",
+"slice_225/start_frame": 0,
+"slice_226/end_frame": 0,
+"slice_226/loop_mode": 0,
+"slice_226/name": "",
+"slice_226/save_to_file/enabled": false,
+"slice_226/save_to_file/keep_custom_tracks": false,
+"slice_226/save_to_file/path": "",
+"slice_226/start_frame": 0,
+"slice_227/end_frame": 0,
+"slice_227/loop_mode": 0,
+"slice_227/name": "",
+"slice_227/save_to_file/enabled": false,
+"slice_227/save_to_file/keep_custom_tracks": false,
+"slice_227/save_to_file/path": "",
+"slice_227/start_frame": 0,
+"slice_228/end_frame": 0,
+"slice_228/loop_mode": 0,
+"slice_228/name": "",
+"slice_228/save_to_file/enabled": false,
+"slice_228/save_to_file/keep_custom_tracks": false,
+"slice_228/save_to_file/path": "",
+"slice_228/start_frame": 0,
+"slice_229/end_frame": 0,
+"slice_229/loop_mode": 0,
+"slice_229/name": "",
+"slice_229/save_to_file/enabled": false,
+"slice_229/save_to_file/keep_custom_tracks": false,
+"slice_229/save_to_file/path": "",
+"slice_229/start_frame": 0,
+"slice_23/end_frame": 0,
+"slice_23/loop_mode": 0,
+"slice_23/name": "",
+"slice_23/save_to_file/enabled": false,
+"slice_23/save_to_file/keep_custom_tracks": false,
+"slice_23/save_to_file/path": "",
+"slice_23/start_frame": 0,
+"slice_230/end_frame": 0,
+"slice_230/loop_mode": 0,
+"slice_230/name": "",
+"slice_230/save_to_file/enabled": false,
+"slice_230/save_to_file/keep_custom_tracks": false,
+"slice_230/save_to_file/path": "",
+"slice_230/start_frame": 0,
+"slice_231/end_frame": 0,
+"slice_231/loop_mode": 0,
+"slice_231/name": "",
+"slice_231/save_to_file/enabled": false,
+"slice_231/save_to_file/keep_custom_tracks": false,
+"slice_231/save_to_file/path": "",
+"slice_231/start_frame": 0,
+"slice_232/end_frame": 0,
+"slice_232/loop_mode": 0,
+"slice_232/name": "",
+"slice_232/save_to_file/enabled": false,
+"slice_232/save_to_file/keep_custom_tracks": false,
+"slice_232/save_to_file/path": "",
+"slice_232/start_frame": 0,
+"slice_233/end_frame": 0,
+"slice_233/loop_mode": 0,
+"slice_233/name": "",
+"slice_233/save_to_file/enabled": false,
+"slice_233/save_to_file/keep_custom_tracks": false,
+"slice_233/save_to_file/path": "",
+"slice_233/start_frame": 0,
+"slice_234/end_frame": 0,
+"slice_234/loop_mode": 0,
+"slice_234/name": "",
+"slice_234/save_to_file/enabled": false,
+"slice_234/save_to_file/keep_custom_tracks": false,
+"slice_234/save_to_file/path": "",
+"slice_234/start_frame": 0,
+"slice_235/end_frame": 0,
+"slice_235/loop_mode": 0,
+"slice_235/name": "",
+"slice_235/save_to_file/enabled": false,
+"slice_235/save_to_file/keep_custom_tracks": false,
+"slice_235/save_to_file/path": "",
+"slice_235/start_frame": 0,
+"slice_236/end_frame": 0,
+"slice_236/loop_mode": 0,
+"slice_236/name": "",
+"slice_236/save_to_file/enabled": false,
+"slice_236/save_to_file/keep_custom_tracks": false,
+"slice_236/save_to_file/path": "",
+"slice_236/start_frame": 0,
+"slice_237/end_frame": 0,
+"slice_237/loop_mode": 0,
+"slice_237/name": "",
+"slice_237/save_to_file/enabled": false,
+"slice_237/save_to_file/keep_custom_tracks": false,
+"slice_237/save_to_file/path": "",
+"slice_237/start_frame": 0,
+"slice_238/end_frame": 0,
+"slice_238/loop_mode": 0,
+"slice_238/name": "",
+"slice_238/save_to_file/enabled": false,
+"slice_238/save_to_file/keep_custom_tracks": false,
+"slice_238/save_to_file/path": "",
+"slice_238/start_frame": 0,
+"slice_239/end_frame": 0,
+"slice_239/loop_mode": 0,
+"slice_239/name": "",
+"slice_239/save_to_file/enabled": false,
+"slice_239/save_to_file/keep_custom_tracks": false,
+"slice_239/save_to_file/path": "",
+"slice_239/start_frame": 0,
+"slice_24/end_frame": 0,
+"slice_24/loop_mode": 0,
+"slice_24/name": "",
+"slice_24/save_to_file/enabled": false,
+"slice_24/save_to_file/keep_custom_tracks": false,
+"slice_24/save_to_file/path": "",
+"slice_24/start_frame": 0,
+"slice_240/end_frame": 0,
+"slice_240/loop_mode": 0,
+"slice_240/name": "",
+"slice_240/save_to_file/enabled": false,
+"slice_240/save_to_file/keep_custom_tracks": false,
+"slice_240/save_to_file/path": "",
+"slice_240/start_frame": 0,
+"slice_241/end_frame": 0,
+"slice_241/loop_mode": 0,
+"slice_241/name": "",
+"slice_241/save_to_file/enabled": false,
+"slice_241/save_to_file/keep_custom_tracks": false,
+"slice_241/save_to_file/path": "",
+"slice_241/start_frame": 0,
+"slice_242/end_frame": 0,
+"slice_242/loop_mode": 0,
+"slice_242/name": "",
+"slice_242/save_to_file/enabled": false,
+"slice_242/save_to_file/keep_custom_tracks": false,
+"slice_242/save_to_file/path": "",
+"slice_242/start_frame": 0,
+"slice_243/end_frame": 0,
+"slice_243/loop_mode": 0,
+"slice_243/name": "",
+"slice_243/save_to_file/enabled": false,
+"slice_243/save_to_file/keep_custom_tracks": false,
+"slice_243/save_to_file/path": "",
+"slice_243/start_frame": 0,
+"slice_244/end_frame": 0,
+"slice_244/loop_mode": 0,
+"slice_244/name": "",
+"slice_244/save_to_file/enabled": false,
+"slice_244/save_to_file/keep_custom_tracks": false,
+"slice_244/save_to_file/path": "",
+"slice_244/start_frame": 0,
+"slice_245/end_frame": 0,
+"slice_245/loop_mode": 0,
+"slice_245/name": "",
+"slice_245/save_to_file/enabled": false,
+"slice_245/save_to_file/keep_custom_tracks": false,
+"slice_245/save_to_file/path": "",
+"slice_245/start_frame": 0,
+"slice_246/end_frame": 0,
+"slice_246/loop_mode": 0,
+"slice_246/name": "",
+"slice_246/save_to_file/enabled": false,
+"slice_246/save_to_file/keep_custom_tracks": false,
+"slice_246/save_to_file/path": "",
+"slice_246/start_frame": 0,
+"slice_247/end_frame": 0,
+"slice_247/loop_mode": 0,
+"slice_247/name": "",
+"slice_247/save_to_file/enabled": false,
+"slice_247/save_to_file/keep_custom_tracks": false,
+"slice_247/save_to_file/path": "",
+"slice_247/start_frame": 0,
+"slice_248/end_frame": 0,
+"slice_248/loop_mode": 0,
+"slice_248/name": "",
+"slice_248/save_to_file/enabled": false,
+"slice_248/save_to_file/keep_custom_tracks": false,
+"slice_248/save_to_file/path": "",
+"slice_248/start_frame": 0,
+"slice_249/end_frame": 0,
+"slice_249/loop_mode": 0,
+"slice_249/name": "",
+"slice_249/save_to_file/enabled": false,
+"slice_249/save_to_file/keep_custom_tracks": false,
+"slice_249/save_to_file/path": "",
+"slice_249/start_frame": 0,
+"slice_25/end_frame": 0,
+"slice_25/loop_mode": 0,
+"slice_25/name": "",
+"slice_25/save_to_file/enabled": false,
+"slice_25/save_to_file/keep_custom_tracks": false,
+"slice_25/save_to_file/path": "",
+"slice_25/start_frame": 0,
+"slice_250/end_frame": 0,
+"slice_250/loop_mode": 0,
+"slice_250/name": "",
+"slice_250/save_to_file/enabled": false,
+"slice_250/save_to_file/keep_custom_tracks": false,
+"slice_250/save_to_file/path": "",
+"slice_250/start_frame": 0,
+"slice_251/end_frame": 0,
+"slice_251/loop_mode": 0,
+"slice_251/name": "",
+"slice_251/save_to_file/enabled": false,
+"slice_251/save_to_file/keep_custom_tracks": false,
+"slice_251/save_to_file/path": "",
+"slice_251/start_frame": 0,
+"slice_252/end_frame": 0,
+"slice_252/loop_mode": 0,
+"slice_252/name": "",
+"slice_252/save_to_file/enabled": false,
+"slice_252/save_to_file/keep_custom_tracks": false,
+"slice_252/save_to_file/path": "",
+"slice_252/start_frame": 0,
+"slice_253/end_frame": 0,
+"slice_253/loop_mode": 0,
+"slice_253/name": "",
+"slice_253/save_to_file/enabled": false,
+"slice_253/save_to_file/keep_custom_tracks": false,
+"slice_253/save_to_file/path": "",
+"slice_253/start_frame": 0,
+"slice_254/end_frame": 0,
+"slice_254/loop_mode": 0,
+"slice_254/name": "",
+"slice_254/save_to_file/enabled": false,
+"slice_254/save_to_file/keep_custom_tracks": false,
+"slice_254/save_to_file/path": "",
+"slice_254/start_frame": 0,
+"slice_255/end_frame": 0,
+"slice_255/loop_mode": 0,
+"slice_255/name": "",
+"slice_255/save_to_file/enabled": false,
+"slice_255/save_to_file/keep_custom_tracks": false,
+"slice_255/save_to_file/path": "",
+"slice_255/start_frame": 0,
+"slice_256/end_frame": 0,
+"slice_256/loop_mode": 0,
+"slice_256/name": "",
+"slice_256/save_to_file/enabled": false,
+"slice_256/save_to_file/keep_custom_tracks": false,
+"slice_256/save_to_file/path": "",
+"slice_256/start_frame": 0,
+"slice_26/end_frame": 0,
+"slice_26/loop_mode": 0,
+"slice_26/name": "",
+"slice_26/save_to_file/enabled": false,
+"slice_26/save_to_file/keep_custom_tracks": false,
+"slice_26/save_to_file/path": "",
+"slice_26/start_frame": 0,
+"slice_27/end_frame": 0,
+"slice_27/loop_mode": 0,
+"slice_27/name": "",
+"slice_27/save_to_file/enabled": false,
+"slice_27/save_to_file/keep_custom_tracks": false,
+"slice_27/save_to_file/path": "",
+"slice_27/start_frame": 0,
+"slice_28/end_frame": 0,
+"slice_28/loop_mode": 0,
+"slice_28/name": "",
+"slice_28/save_to_file/enabled": false,
+"slice_28/save_to_file/keep_custom_tracks": false,
+"slice_28/save_to_file/path": "",
+"slice_28/start_frame": 0,
+"slice_29/end_frame": 0,
+"slice_29/loop_mode": 0,
+"slice_29/name": "",
+"slice_29/save_to_file/enabled": false,
+"slice_29/save_to_file/keep_custom_tracks": false,
+"slice_29/save_to_file/path": "",
+"slice_29/start_frame": 0,
+"slice_3/end_frame": 0,
+"slice_3/loop_mode": 0,
+"slice_3/name": "",
+"slice_3/save_to_file/enabled": false,
+"slice_3/save_to_file/keep_custom_tracks": false,
+"slice_3/save_to_file/path": "",
+"slice_3/start_frame": 0,
+"slice_30/end_frame": 0,
+"slice_30/loop_mode": 0,
+"slice_30/name": "",
+"slice_30/save_to_file/enabled": false,
+"slice_30/save_to_file/keep_custom_tracks": false,
+"slice_30/save_to_file/path": "",
+"slice_30/start_frame": 0,
+"slice_31/end_frame": 0,
+"slice_31/loop_mode": 0,
+"slice_31/name": "",
+"slice_31/save_to_file/enabled": false,
+"slice_31/save_to_file/keep_custom_tracks": false,
+"slice_31/save_to_file/path": "",
+"slice_31/start_frame": 0,
+"slice_32/end_frame": 0,
+"slice_32/loop_mode": 0,
+"slice_32/name": "",
+"slice_32/save_to_file/enabled": false,
+"slice_32/save_to_file/keep_custom_tracks": false,
+"slice_32/save_to_file/path": "",
+"slice_32/start_frame": 0,
+"slice_33/end_frame": 0,
+"slice_33/loop_mode": 0,
+"slice_33/name": "",
+"slice_33/save_to_file/enabled": false,
+"slice_33/save_to_file/keep_custom_tracks": false,
+"slice_33/save_to_file/path": "",
+"slice_33/start_frame": 0,
+"slice_34/end_frame": 0,
+"slice_34/loop_mode": 0,
+"slice_34/name": "",
+"slice_34/save_to_file/enabled": false,
+"slice_34/save_to_file/keep_custom_tracks": false,
+"slice_34/save_to_file/path": "",
+"slice_34/start_frame": 0,
+"slice_35/end_frame": 0,
+"slice_35/loop_mode": 0,
+"slice_35/name": "",
+"slice_35/save_to_file/enabled": false,
+"slice_35/save_to_file/keep_custom_tracks": false,
+"slice_35/save_to_file/path": "",
+"slice_35/start_frame": 0,
+"slice_36/end_frame": 0,
+"slice_36/loop_mode": 0,
+"slice_36/name": "",
+"slice_36/save_to_file/enabled": false,
+"slice_36/save_to_file/keep_custom_tracks": false,
+"slice_36/save_to_file/path": "",
+"slice_36/start_frame": 0,
+"slice_37/end_frame": 0,
+"slice_37/loop_mode": 0,
+"slice_37/name": "",
+"slice_37/save_to_file/enabled": false,
+"slice_37/save_to_file/keep_custom_tracks": false,
+"slice_37/save_to_file/path": "",
+"slice_37/start_frame": 0,
+"slice_38/end_frame": 0,
+"slice_38/loop_mode": 0,
+"slice_38/name": "",
+"slice_38/save_to_file/enabled": false,
+"slice_38/save_to_file/keep_custom_tracks": false,
+"slice_38/save_to_file/path": "",
+"slice_38/start_frame": 0,
+"slice_39/end_frame": 0,
+"slice_39/loop_mode": 0,
+"slice_39/name": "",
+"slice_39/save_to_file/enabled": false,
+"slice_39/save_to_file/keep_custom_tracks": false,
+"slice_39/save_to_file/path": "",
+"slice_39/start_frame": 0,
+"slice_4/end_frame": 0,
+"slice_4/loop_mode": 0,
+"slice_4/name": "",
+"slice_4/save_to_file/enabled": false,
+"slice_4/save_to_file/keep_custom_tracks": false,
+"slice_4/save_to_file/path": "",
+"slice_4/start_frame": 0,
+"slice_40/end_frame": 0,
+"slice_40/loop_mode": 0,
+"slice_40/name": "",
+"slice_40/save_to_file/enabled": false,
+"slice_40/save_to_file/keep_custom_tracks": false,
+"slice_40/save_to_file/path": "",
+"slice_40/start_frame": 0,
+"slice_41/end_frame": 0,
+"slice_41/loop_mode": 0,
+"slice_41/name": "",
+"slice_41/save_to_file/enabled": false,
+"slice_41/save_to_file/keep_custom_tracks": false,
+"slice_41/save_to_file/path": "",
+"slice_41/start_frame": 0,
+"slice_42/end_frame": 0,
+"slice_42/loop_mode": 0,
+"slice_42/name": "",
+"slice_42/save_to_file/enabled": false,
+"slice_42/save_to_file/keep_custom_tracks": false,
+"slice_42/save_to_file/path": "",
+"slice_42/start_frame": 0,
+"slice_43/end_frame": 0,
+"slice_43/loop_mode": 0,
+"slice_43/name": "",
+"slice_43/save_to_file/enabled": false,
+"slice_43/save_to_file/keep_custom_tracks": false,
+"slice_43/save_to_file/path": "",
+"slice_43/start_frame": 0,
+"slice_44/end_frame": 0,
+"slice_44/loop_mode": 0,
+"slice_44/name": "",
+"slice_44/save_to_file/enabled": false,
+"slice_44/save_to_file/keep_custom_tracks": false,
+"slice_44/save_to_file/path": "",
+"slice_44/start_frame": 0,
+"slice_45/end_frame": 0,
+"slice_45/loop_mode": 0,
+"slice_45/name": "",
+"slice_45/save_to_file/enabled": false,
+"slice_45/save_to_file/keep_custom_tracks": false,
+"slice_45/save_to_file/path": "",
+"slice_45/start_frame": 0,
+"slice_46/end_frame": 0,
+"slice_46/loop_mode": 0,
+"slice_46/name": "",
+"slice_46/save_to_file/enabled": false,
+"slice_46/save_to_file/keep_custom_tracks": false,
+"slice_46/save_to_file/path": "",
+"slice_46/start_frame": 0,
+"slice_47/end_frame": 0,
+"slice_47/loop_mode": 0,
+"slice_47/name": "",
+"slice_47/save_to_file/enabled": false,
+"slice_47/save_to_file/keep_custom_tracks": false,
+"slice_47/save_to_file/path": "",
+"slice_47/start_frame": 0,
+"slice_48/end_frame": 0,
+"slice_48/loop_mode": 0,
+"slice_48/name": "",
+"slice_48/save_to_file/enabled": false,
+"slice_48/save_to_file/keep_custom_tracks": false,
+"slice_48/save_to_file/path": "",
+"slice_48/start_frame": 0,
+"slice_49/end_frame": 0,
+"slice_49/loop_mode": 0,
+"slice_49/name": "",
+"slice_49/save_to_file/enabled": false,
+"slice_49/save_to_file/keep_custom_tracks": false,
+"slice_49/save_to_file/path": "",
+"slice_49/start_frame": 0,
+"slice_5/end_frame": 0,
+"slice_5/loop_mode": 0,
+"slice_5/name": "",
+"slice_5/save_to_file/enabled": false,
+"slice_5/save_to_file/keep_custom_tracks": false,
+"slice_5/save_to_file/path": "",
+"slice_5/start_frame": 0,
+"slice_50/end_frame": 0,
+"slice_50/loop_mode": 0,
+"slice_50/name": "",
+"slice_50/save_to_file/enabled": false,
+"slice_50/save_to_file/keep_custom_tracks": false,
+"slice_50/save_to_file/path": "",
+"slice_50/start_frame": 0,
+"slice_51/end_frame": 0,
+"slice_51/loop_mode": 0,
+"slice_51/name": "",
+"slice_51/save_to_file/enabled": false,
+"slice_51/save_to_file/keep_custom_tracks": false,
+"slice_51/save_to_file/path": "",
+"slice_51/start_frame": 0,
+"slice_52/end_frame": 0,
+"slice_52/loop_mode": 0,
+"slice_52/name": "",
+"slice_52/save_to_file/enabled": false,
+"slice_52/save_to_file/keep_custom_tracks": false,
+"slice_52/save_to_file/path": "",
+"slice_52/start_frame": 0,
+"slice_53/end_frame": 0,
+"slice_53/loop_mode": 0,
+"slice_53/name": "",
+"slice_53/save_to_file/enabled": false,
+"slice_53/save_to_file/keep_custom_tracks": false,
+"slice_53/save_to_file/path": "",
+"slice_53/start_frame": 0,
+"slice_54/end_frame": 0,
+"slice_54/loop_mode": 0,
+"slice_54/name": "",
+"slice_54/save_to_file/enabled": false,
+"slice_54/save_to_file/keep_custom_tracks": false,
+"slice_54/save_to_file/path": "",
+"slice_54/start_frame": 0,
+"slice_55/end_frame": 0,
+"slice_55/loop_mode": 0,
+"slice_55/name": "",
+"slice_55/save_to_file/enabled": false,
+"slice_55/save_to_file/keep_custom_tracks": false,
+"slice_55/save_to_file/path": "",
+"slice_55/start_frame": 0,
+"slice_56/end_frame": 0,
+"slice_56/loop_mode": 0,
+"slice_56/name": "",
+"slice_56/save_to_file/enabled": false,
+"slice_56/save_to_file/keep_custom_tracks": false,
+"slice_56/save_to_file/path": "",
+"slice_56/start_frame": 0,
+"slice_57/end_frame": 0,
+"slice_57/loop_mode": 0,
+"slice_57/name": "",
+"slice_57/save_to_file/enabled": false,
+"slice_57/save_to_file/keep_custom_tracks": false,
+"slice_57/save_to_file/path": "",
+"slice_57/start_frame": 0,
+"slice_58/end_frame": 0,
+"slice_58/loop_mode": 0,
+"slice_58/name": "",
+"slice_58/save_to_file/enabled": false,
+"slice_58/save_to_file/keep_custom_tracks": false,
+"slice_58/save_to_file/path": "",
+"slice_58/start_frame": 0,
+"slice_59/end_frame": 0,
+"slice_59/loop_mode": 0,
+"slice_59/name": "",
+"slice_59/save_to_file/enabled": false,
+"slice_59/save_to_file/keep_custom_tracks": false,
+"slice_59/save_to_file/path": "",
+"slice_59/start_frame": 0,
+"slice_6/end_frame": 0,
+"slice_6/loop_mode": 0,
+"slice_6/name": "",
+"slice_6/save_to_file/enabled": false,
+"slice_6/save_to_file/keep_custom_tracks": false,
+"slice_6/save_to_file/path": "",
+"slice_6/start_frame": 0,
+"slice_60/end_frame": 0,
+"slice_60/loop_mode": 0,
+"slice_60/name": "",
+"slice_60/save_to_file/enabled": false,
+"slice_60/save_to_file/keep_custom_tracks": false,
+"slice_60/save_to_file/path": "",
+"slice_60/start_frame": 0,
+"slice_61/end_frame": 0,
+"slice_61/loop_mode": 0,
+"slice_61/name": "",
+"slice_61/save_to_file/enabled": false,
+"slice_61/save_to_file/keep_custom_tracks": false,
+"slice_61/save_to_file/path": "",
+"slice_61/start_frame": 0,
+"slice_62/end_frame": 0,
+"slice_62/loop_mode": 0,
+"slice_62/name": "",
+"slice_62/save_to_file/enabled": false,
+"slice_62/save_to_file/keep_custom_tracks": false,
+"slice_62/save_to_file/path": "",
+"slice_62/start_frame": 0,
+"slice_63/end_frame": 0,
+"slice_63/loop_mode": 0,
+"slice_63/name": "",
+"slice_63/save_to_file/enabled": false,
+"slice_63/save_to_file/keep_custom_tracks": false,
+"slice_63/save_to_file/path": "",
+"slice_63/start_frame": 0,
+"slice_64/end_frame": 0,
+"slice_64/loop_mode": 0,
+"slice_64/name": "",
+"slice_64/save_to_file/enabled": false,
+"slice_64/save_to_file/keep_custom_tracks": false,
+"slice_64/save_to_file/path": "",
+"slice_64/start_frame": 0,
+"slice_65/end_frame": 0,
+"slice_65/loop_mode": 0,
+"slice_65/name": "",
+"slice_65/save_to_file/enabled": false,
+"slice_65/save_to_file/keep_custom_tracks": false,
+"slice_65/save_to_file/path": "",
+"slice_65/start_frame": 0,
+"slice_66/end_frame": 0,
+"slice_66/loop_mode": 0,
+"slice_66/name": "",
+"slice_66/save_to_file/enabled": false,
+"slice_66/save_to_file/keep_custom_tracks": false,
+"slice_66/save_to_file/path": "",
+"slice_66/start_frame": 0,
+"slice_67/end_frame": 0,
+"slice_67/loop_mode": 0,
+"slice_67/name": "",
+"slice_67/save_to_file/enabled": false,
+"slice_67/save_to_file/keep_custom_tracks": false,
+"slice_67/save_to_file/path": "",
+"slice_67/start_frame": 0,
+"slice_68/end_frame": 0,
+"slice_68/loop_mode": 0,
+"slice_68/name": "",
+"slice_68/save_to_file/enabled": false,
+"slice_68/save_to_file/keep_custom_tracks": false,
+"slice_68/save_to_file/path": "",
+"slice_68/start_frame": 0,
+"slice_69/end_frame": 0,
+"slice_69/loop_mode": 0,
+"slice_69/name": "",
+"slice_69/save_to_file/enabled": false,
+"slice_69/save_to_file/keep_custom_tracks": false,
+"slice_69/save_to_file/path": "",
+"slice_69/start_frame": 0,
+"slice_7/end_frame": 0,
+"slice_7/loop_mode": 0,
+"slice_7/name": "",
+"slice_7/save_to_file/enabled": false,
+"slice_7/save_to_file/keep_custom_tracks": false,
+"slice_7/save_to_file/path": "",
+"slice_7/start_frame": 0,
+"slice_70/end_frame": 0,
+"slice_70/loop_mode": 0,
+"slice_70/name": "",
+"slice_70/save_to_file/enabled": false,
+"slice_70/save_to_file/keep_custom_tracks": false,
+"slice_70/save_to_file/path": "",
+"slice_70/start_frame": 0,
+"slice_71/end_frame": 0,
+"slice_71/loop_mode": 0,
+"slice_71/name": "",
+"slice_71/save_to_file/enabled": false,
+"slice_71/save_to_file/keep_custom_tracks": false,
+"slice_71/save_to_file/path": "",
+"slice_71/start_frame": 0,
+"slice_72/end_frame": 0,
+"slice_72/loop_mode": 0,
+"slice_72/name": "",
+"slice_72/save_to_file/enabled": false,
+"slice_72/save_to_file/keep_custom_tracks": false,
+"slice_72/save_to_file/path": "",
+"slice_72/start_frame": 0,
+"slice_73/end_frame": 0,
+"slice_73/loop_mode": 0,
+"slice_73/name": "",
+"slice_73/save_to_file/enabled": false,
+"slice_73/save_to_file/keep_custom_tracks": false,
+"slice_73/save_to_file/path": "",
+"slice_73/start_frame": 0,
+"slice_74/end_frame": 0,
+"slice_74/loop_mode": 0,
+"slice_74/name": "",
+"slice_74/save_to_file/enabled": false,
+"slice_74/save_to_file/keep_custom_tracks": false,
+"slice_74/save_to_file/path": "",
+"slice_74/start_frame": 0,
+"slice_75/end_frame": 0,
+"slice_75/loop_mode": 0,
+"slice_75/name": "",
+"slice_75/save_to_file/enabled": false,
+"slice_75/save_to_file/keep_custom_tracks": false,
+"slice_75/save_to_file/path": "",
+"slice_75/start_frame": 0,
+"slice_76/end_frame": 0,
+"slice_76/loop_mode": 0,
+"slice_76/name": "",
+"slice_76/save_to_file/enabled": false,
+"slice_76/save_to_file/keep_custom_tracks": false,
+"slice_76/save_to_file/path": "",
+"slice_76/start_frame": 0,
+"slice_77/end_frame": 0,
+"slice_77/loop_mode": 0,
+"slice_77/name": "",
+"slice_77/save_to_file/enabled": false,
+"slice_77/save_to_file/keep_custom_tracks": false,
+"slice_77/save_to_file/path": "",
+"slice_77/start_frame": 0,
+"slice_78/end_frame": 0,
+"slice_78/loop_mode": 0,
+"slice_78/name": "",
+"slice_78/save_to_file/enabled": false,
+"slice_78/save_to_file/keep_custom_tracks": false,
+"slice_78/save_to_file/path": "",
+"slice_78/start_frame": 0,
+"slice_79/end_frame": 0,
+"slice_79/loop_mode": 0,
+"slice_79/name": "",
+"slice_79/save_to_file/enabled": false,
+"slice_79/save_to_file/keep_custom_tracks": false,
+"slice_79/save_to_file/path": "",
+"slice_79/start_frame": 0,
+"slice_8/end_frame": 0,
+"slice_8/loop_mode": 0,
+"slice_8/name": "",
+"slice_8/save_to_file/enabled": false,
+"slice_8/save_to_file/keep_custom_tracks": false,
+"slice_8/save_to_file/path": "",
+"slice_8/start_frame": 0,
+"slice_80/end_frame": 0,
+"slice_80/loop_mode": 0,
+"slice_80/name": "",
+"slice_80/save_to_file/enabled": false,
+"slice_80/save_to_file/keep_custom_tracks": false,
+"slice_80/save_to_file/path": "",
+"slice_80/start_frame": 0,
+"slice_81/end_frame": 0,
+"slice_81/loop_mode": 0,
+"slice_81/name": "",
+"slice_81/save_to_file/enabled": false,
+"slice_81/save_to_file/keep_custom_tracks": false,
+"slice_81/save_to_file/path": "",
+"slice_81/start_frame": 0,
+"slice_82/end_frame": 0,
+"slice_82/loop_mode": 0,
+"slice_82/name": "",
+"slice_82/save_to_file/enabled": false,
+"slice_82/save_to_file/keep_custom_tracks": false,
+"slice_82/save_to_file/path": "",
+"slice_82/start_frame": 0,
+"slice_83/end_frame": 0,
+"slice_83/loop_mode": 0,
+"slice_83/name": "",
+"slice_83/save_to_file/enabled": false,
+"slice_83/save_to_file/keep_custom_tracks": false,
+"slice_83/save_to_file/path": "",
+"slice_83/start_frame": 0,
+"slice_84/end_frame": 0,
+"slice_84/loop_mode": 0,
+"slice_84/name": "",
+"slice_84/save_to_file/enabled": false,
+"slice_84/save_to_file/keep_custom_tracks": false,
+"slice_84/save_to_file/path": "",
+"slice_84/start_frame": 0,
+"slice_85/end_frame": 0,
+"slice_85/loop_mode": 0,
+"slice_85/name": "",
+"slice_85/save_to_file/enabled": false,
+"slice_85/save_to_file/keep_custom_tracks": false,
+"slice_85/save_to_file/path": "",
+"slice_85/start_frame": 0,
+"slice_86/end_frame": 0,
+"slice_86/loop_mode": 0,
+"slice_86/name": "",
+"slice_86/save_to_file/enabled": false,
+"slice_86/save_to_file/keep_custom_tracks": false,
+"slice_86/save_to_file/path": "",
+"slice_86/start_frame": 0,
+"slice_87/end_frame": 0,
+"slice_87/loop_mode": 0,
+"slice_87/name": "",
+"slice_87/save_to_file/enabled": false,
+"slice_87/save_to_file/keep_custom_tracks": false,
+"slice_87/save_to_file/path": "",
+"slice_87/start_frame": 0,
+"slice_88/end_frame": 0,
+"slice_88/loop_mode": 0,
+"slice_88/name": "",
+"slice_88/save_to_file/enabled": false,
+"slice_88/save_to_file/keep_custom_tracks": false,
+"slice_88/save_to_file/path": "",
+"slice_88/start_frame": 0,
+"slice_89/end_frame": 0,
+"slice_89/loop_mode": 0,
+"slice_89/name": "",
+"slice_89/save_to_file/enabled": false,
+"slice_89/save_to_file/keep_custom_tracks": false,
+"slice_89/save_to_file/path": "",
+"slice_89/start_frame": 0,
+"slice_9/end_frame": 0,
+"slice_9/loop_mode": 0,
+"slice_9/name": "",
+"slice_9/save_to_file/enabled": false,
+"slice_9/save_to_file/keep_custom_tracks": false,
+"slice_9/save_to_file/path": "",
+"slice_9/start_frame": 0,
+"slice_90/end_frame": 0,
+"slice_90/loop_mode": 0,
+"slice_90/name": "",
+"slice_90/save_to_file/enabled": false,
+"slice_90/save_to_file/keep_custom_tracks": false,
+"slice_90/save_to_file/path": "",
+"slice_90/start_frame": 0,
+"slice_91/end_frame": 0,
+"slice_91/loop_mode": 0,
+"slice_91/name": "",
+"slice_91/save_to_file/enabled": false,
+"slice_91/save_to_file/keep_custom_tracks": false,
+"slice_91/save_to_file/path": "",
+"slice_91/start_frame": 0,
+"slice_92/end_frame": 0,
+"slice_92/loop_mode": 0,
+"slice_92/name": "",
+"slice_92/save_to_file/enabled": false,
+"slice_92/save_to_file/keep_custom_tracks": false,
+"slice_92/save_to_file/path": "",
+"slice_92/start_frame": 0,
+"slice_93/end_frame": 0,
+"slice_93/loop_mode": 0,
+"slice_93/name": "",
+"slice_93/save_to_file/enabled": false,
+"slice_93/save_to_file/keep_custom_tracks": false,
+"slice_93/save_to_file/path": "",
+"slice_93/start_frame": 0,
+"slice_94/end_frame": 0,
+"slice_94/loop_mode": 0,
+"slice_94/name": "",
+"slice_94/save_to_file/enabled": false,
+"slice_94/save_to_file/keep_custom_tracks": false,
+"slice_94/save_to_file/path": "",
+"slice_94/start_frame": 0,
+"slice_95/end_frame": 0,
+"slice_95/loop_mode": 0,
+"slice_95/name": "",
+"slice_95/save_to_file/enabled": false,
+"slice_95/save_to_file/keep_custom_tracks": false,
+"slice_95/save_to_file/path": "",
+"slice_95/start_frame": 0,
+"slice_96/end_frame": 0,
+"slice_96/loop_mode": 0,
+"slice_96/name": "",
+"slice_96/save_to_file/enabled": false,
+"slice_96/save_to_file/keep_custom_tracks": false,
+"slice_96/save_to_file/path": "",
+"slice_96/start_frame": 0,
+"slice_97/end_frame": 0,
+"slice_97/loop_mode": 0,
+"slice_97/name": "",
+"slice_97/save_to_file/enabled": false,
+"slice_97/save_to_file/keep_custom_tracks": false,
+"slice_97/save_to_file/path": "",
+"slice_97/start_frame": 0,
+"slice_98/end_frame": 0,
+"slice_98/loop_mode": 0,
+"slice_98/name": "",
+"slice_98/save_to_file/enabled": false,
+"slice_98/save_to_file/keep_custom_tracks": false,
+"slice_98/save_to_file/path": "",
+"slice_98/start_frame": 0,
+"slice_99/end_frame": 0,
+"slice_99/loop_mode": 0,
+"slice_99/name": "",
+"slice_99/save_to_file/enabled": false,
+"slice_99/save_to_file/keep_custom_tracks": false,
+"slice_99/save_to_file/path": "",
+"slice_99/start_frame": 0,
+"slices/amount": 0
+},
+"Vert|Move": {
+"save_to_file/enabled": true,
+"save_to_file/keep_custom_tracks": "",
+"save_to_file/path": "res://content/enemies/animations/Vert_Move.res",
+"settings/loop_mode": 1,
+"slice_1/end_frame": 0,
+"slice_1/loop_mode": 0,
+"slice_1/name": "",
+"slice_1/save_to_file/enabled": false,
+"slice_1/save_to_file/keep_custom_tracks": false,
+"slice_1/save_to_file/path": "",
+"slice_1/start_frame": 0,
+"slice_10/end_frame": 0,
+"slice_10/loop_mode": 0,
+"slice_10/name": "",
+"slice_10/save_to_file/enabled": false,
+"slice_10/save_to_file/keep_custom_tracks": false,
+"slice_10/save_to_file/path": "",
+"slice_10/start_frame": 0,
+"slice_100/end_frame": 0,
+"slice_100/loop_mode": 0,
+"slice_100/name": "",
+"slice_100/save_to_file/enabled": false,
+"slice_100/save_to_file/keep_custom_tracks": false,
+"slice_100/save_to_file/path": "",
+"slice_100/start_frame": 0,
+"slice_101/end_frame": 0,
+"slice_101/loop_mode": 0,
+"slice_101/name": "",
+"slice_101/save_to_file/enabled": false,
+"slice_101/save_to_file/keep_custom_tracks": false,
+"slice_101/save_to_file/path": "",
+"slice_101/start_frame": 0,
+"slice_102/end_frame": 0,
+"slice_102/loop_mode": 0,
+"slice_102/name": "",
+"slice_102/save_to_file/enabled": false,
+"slice_102/save_to_file/keep_custom_tracks": false,
+"slice_102/save_to_file/path": "",
+"slice_102/start_frame": 0,
+"slice_103/end_frame": 0,
+"slice_103/loop_mode": 0,
+"slice_103/name": "",
+"slice_103/save_to_file/enabled": false,
+"slice_103/save_to_file/keep_custom_tracks": false,
+"slice_103/save_to_file/path": "",
+"slice_103/start_frame": 0,
+"slice_104/end_frame": 0,
+"slice_104/loop_mode": 0,
+"slice_104/name": "",
+"slice_104/save_to_file/enabled": false,
+"slice_104/save_to_file/keep_custom_tracks": false,
+"slice_104/save_to_file/path": "",
+"slice_104/start_frame": 0,
+"slice_105/end_frame": 0,
+"slice_105/loop_mode": 0,
+"slice_105/name": "",
+"slice_105/save_to_file/enabled": false,
+"slice_105/save_to_file/keep_custom_tracks": false,
+"slice_105/save_to_file/path": "",
+"slice_105/start_frame": 0,
+"slice_106/end_frame": 0,
+"slice_106/loop_mode": 0,
+"slice_106/name": "",
+"slice_106/save_to_file/enabled": false,
+"slice_106/save_to_file/keep_custom_tracks": false,
+"slice_106/save_to_file/path": "",
+"slice_106/start_frame": 0,
+"slice_107/end_frame": 0,
+"slice_107/loop_mode": 0,
+"slice_107/name": "",
+"slice_107/save_to_file/enabled": false,
+"slice_107/save_to_file/keep_custom_tracks": false,
+"slice_107/save_to_file/path": "",
+"slice_107/start_frame": 0,
+"slice_108/end_frame": 0,
+"slice_108/loop_mode": 0,
+"slice_108/name": "",
+"slice_108/save_to_file/enabled": false,
+"slice_108/save_to_file/keep_custom_tracks": false,
+"slice_108/save_to_file/path": "",
+"slice_108/start_frame": 0,
+"slice_109/end_frame": 0,
+"slice_109/loop_mode": 0,
+"slice_109/name": "",
+"slice_109/save_to_file/enabled": false,
+"slice_109/save_to_file/keep_custom_tracks": false,
+"slice_109/save_to_file/path": "",
+"slice_109/start_frame": 0,
+"slice_11/end_frame": 0,
+"slice_11/loop_mode": 0,
+"slice_11/name": "",
+"slice_11/save_to_file/enabled": false,
+"slice_11/save_to_file/keep_custom_tracks": false,
+"slice_11/save_to_file/path": "",
+"slice_11/start_frame": 0,
+"slice_110/end_frame": 0,
+"slice_110/loop_mode": 0,
+"slice_110/name": "",
+"slice_110/save_to_file/enabled": false,
+"slice_110/save_to_file/keep_custom_tracks": false,
+"slice_110/save_to_file/path": "",
+"slice_110/start_frame": 0,
+"slice_111/end_frame": 0,
+"slice_111/loop_mode": 0,
+"slice_111/name": "",
+"slice_111/save_to_file/enabled": false,
+"slice_111/save_to_file/keep_custom_tracks": false,
+"slice_111/save_to_file/path": "",
+"slice_111/start_frame": 0,
+"slice_112/end_frame": 0,
+"slice_112/loop_mode": 0,
+"slice_112/name": "",
+"slice_112/save_to_file/enabled": false,
+"slice_112/save_to_file/keep_custom_tracks": false,
+"slice_112/save_to_file/path": "",
+"slice_112/start_frame": 0,
+"slice_113/end_frame": 0,
+"slice_113/loop_mode": 0,
+"slice_113/name": "",
+"slice_113/save_to_file/enabled": false,
+"slice_113/save_to_file/keep_custom_tracks": false,
+"slice_113/save_to_file/path": "",
+"slice_113/start_frame": 0,
+"slice_114/end_frame": 0,
+"slice_114/loop_mode": 0,
+"slice_114/name": "",
+"slice_114/save_to_file/enabled": false,
+"slice_114/save_to_file/keep_custom_tracks": false,
+"slice_114/save_to_file/path": "",
+"slice_114/start_frame": 0,
+"slice_115/end_frame": 0,
+"slice_115/loop_mode": 0,
+"slice_115/name": "",
+"slice_115/save_to_file/enabled": false,
+"slice_115/save_to_file/keep_custom_tracks": false,
+"slice_115/save_to_file/path": "",
+"slice_115/start_frame": 0,
+"slice_116/end_frame": 0,
+"slice_116/loop_mode": 0,
+"slice_116/name": "",
+"slice_116/save_to_file/enabled": false,
+"slice_116/save_to_file/keep_custom_tracks": false,
+"slice_116/save_to_file/path": "",
+"slice_116/start_frame": 0,
+"slice_117/end_frame": 0,
+"slice_117/loop_mode": 0,
+"slice_117/name": "",
+"slice_117/save_to_file/enabled": false,
+"slice_117/save_to_file/keep_custom_tracks": false,
+"slice_117/save_to_file/path": "",
+"slice_117/start_frame": 0,
+"slice_118/end_frame": 0,
+"slice_118/loop_mode": 0,
+"slice_118/name": "",
+"slice_118/save_to_file/enabled": false,
+"slice_118/save_to_file/keep_custom_tracks": false,
+"slice_118/save_to_file/path": "",
+"slice_118/start_frame": 0,
+"slice_119/end_frame": 0,
+"slice_119/loop_mode": 0,
+"slice_119/name": "",
+"slice_119/save_to_file/enabled": false,
+"slice_119/save_to_file/keep_custom_tracks": false,
+"slice_119/save_to_file/path": "",
+"slice_119/start_frame": 0,
+"slice_12/end_frame": 0,
+"slice_12/loop_mode": 0,
+"slice_12/name": "",
+"slice_12/save_to_file/enabled": false,
+"slice_12/save_to_file/keep_custom_tracks": false,
+"slice_12/save_to_file/path": "",
+"slice_12/start_frame": 0,
+"slice_120/end_frame": 0,
+"slice_120/loop_mode": 0,
+"slice_120/name": "",
+"slice_120/save_to_file/enabled": false,
+"slice_120/save_to_file/keep_custom_tracks": false,
+"slice_120/save_to_file/path": "",
+"slice_120/start_frame": 0,
+"slice_121/end_frame": 0,
+"slice_121/loop_mode": 0,
+"slice_121/name": "",
+"slice_121/save_to_file/enabled": false,
+"slice_121/save_to_file/keep_custom_tracks": false,
+"slice_121/save_to_file/path": "",
+"slice_121/start_frame": 0,
+"slice_122/end_frame": 0,
+"slice_122/loop_mode": 0,
+"slice_122/name": "",
+"slice_122/save_to_file/enabled": false,
+"slice_122/save_to_file/keep_custom_tracks": false,
+"slice_122/save_to_file/path": "",
+"slice_122/start_frame": 0,
+"slice_123/end_frame": 0,
+"slice_123/loop_mode": 0,
+"slice_123/name": "",
+"slice_123/save_to_file/enabled": false,
+"slice_123/save_to_file/keep_custom_tracks": false,
+"slice_123/save_to_file/path": "",
+"slice_123/start_frame": 0,
+"slice_124/end_frame": 0,
+"slice_124/loop_mode": 0,
+"slice_124/name": "",
+"slice_124/save_to_file/enabled": false,
+"slice_124/save_to_file/keep_custom_tracks": false,
+"slice_124/save_to_file/path": "",
+"slice_124/start_frame": 0,
+"slice_125/end_frame": 0,
+"slice_125/loop_mode": 0,
+"slice_125/name": "",
+"slice_125/save_to_file/enabled": false,
+"slice_125/save_to_file/keep_custom_tracks": false,
+"slice_125/save_to_file/path": "",
+"slice_125/start_frame": 0,
+"slice_126/end_frame": 0,
+"slice_126/loop_mode": 0,
+"slice_126/name": "",
+"slice_126/save_to_file/enabled": false,
+"slice_126/save_to_file/keep_custom_tracks": false,
+"slice_126/save_to_file/path": "",
+"slice_126/start_frame": 0,
+"slice_127/end_frame": 0,
+"slice_127/loop_mode": 0,
+"slice_127/name": "",
+"slice_127/save_to_file/enabled": false,
+"slice_127/save_to_file/keep_custom_tracks": false,
+"slice_127/save_to_file/path": "",
+"slice_127/start_frame": 0,
+"slice_128/end_frame": 0,
+"slice_128/loop_mode": 0,
+"slice_128/name": "",
+"slice_128/save_to_file/enabled": false,
+"slice_128/save_to_file/keep_custom_tracks": false,
+"slice_128/save_to_file/path": "",
+"slice_128/start_frame": 0,
+"slice_129/end_frame": 0,
+"slice_129/loop_mode": 0,
+"slice_129/name": "",
+"slice_129/save_to_file/enabled": false,
+"slice_129/save_to_file/keep_custom_tracks": false,
+"slice_129/save_to_file/path": "",
+"slice_129/start_frame": 0,
+"slice_13/end_frame": 0,
+"slice_13/loop_mode": 0,
+"slice_13/name": "",
+"slice_13/save_to_file/enabled": false,
+"slice_13/save_to_file/keep_custom_tracks": false,
+"slice_13/save_to_file/path": "",
+"slice_13/start_frame": 0,
+"slice_130/end_frame": 0,
+"slice_130/loop_mode": 0,
+"slice_130/name": "",
+"slice_130/save_to_file/enabled": false,
+"slice_130/save_to_file/keep_custom_tracks": false,
+"slice_130/save_to_file/path": "",
+"slice_130/start_frame": 0,
+"slice_131/end_frame": 0,
+"slice_131/loop_mode": 0,
+"slice_131/name": "",
+"slice_131/save_to_file/enabled": false,
+"slice_131/save_to_file/keep_custom_tracks": false,
+"slice_131/save_to_file/path": "",
+"slice_131/start_frame": 0,
+"slice_132/end_frame": 0,
+"slice_132/loop_mode": 0,
+"slice_132/name": "",
+"slice_132/save_to_file/enabled": false,
+"slice_132/save_to_file/keep_custom_tracks": false,
+"slice_132/save_to_file/path": "",
+"slice_132/start_frame": 0,
+"slice_133/end_frame": 0,
+"slice_133/loop_mode": 0,
+"slice_133/name": "",
+"slice_133/save_to_file/enabled": false,
+"slice_133/save_to_file/keep_custom_tracks": false,
+"slice_133/save_to_file/path": "",
+"slice_133/start_frame": 0,
+"slice_134/end_frame": 0,
+"slice_134/loop_mode": 0,
+"slice_134/name": "",
+"slice_134/save_to_file/enabled": false,
+"slice_134/save_to_file/keep_custom_tracks": false,
+"slice_134/save_to_file/path": "",
+"slice_134/start_frame": 0,
+"slice_135/end_frame": 0,
+"slice_135/loop_mode": 0,
+"slice_135/name": "",
+"slice_135/save_to_file/enabled": false,
+"slice_135/save_to_file/keep_custom_tracks": false,
+"slice_135/save_to_file/path": "",
+"slice_135/start_frame": 0,
+"slice_136/end_frame": 0,
+"slice_136/loop_mode": 0,
+"slice_136/name": "",
+"slice_136/save_to_file/enabled": false,
+"slice_136/save_to_file/keep_custom_tracks": false,
+"slice_136/save_to_file/path": "",
+"slice_136/start_frame": 0,
+"slice_137/end_frame": 0,
+"slice_137/loop_mode": 0,
+"slice_137/name": "",
+"slice_137/save_to_file/enabled": false,
+"slice_137/save_to_file/keep_custom_tracks": false,
+"slice_137/save_to_file/path": "",
+"slice_137/start_frame": 0,
+"slice_138/end_frame": 0,
+"slice_138/loop_mode": 0,
+"slice_138/name": "",
+"slice_138/save_to_file/enabled": false,
+"slice_138/save_to_file/keep_custom_tracks": false,
+"slice_138/save_to_file/path": "",
+"slice_138/start_frame": 0,
+"slice_139/end_frame": 0,
+"slice_139/loop_mode": 0,
+"slice_139/name": "",
+"slice_139/save_to_file/enabled": false,
+"slice_139/save_to_file/keep_custom_tracks": false,
+"slice_139/save_to_file/path": "",
+"slice_139/start_frame": 0,
+"slice_14/end_frame": 0,
+"slice_14/loop_mode": 0,
+"slice_14/name": "",
+"slice_14/save_to_file/enabled": false,
+"slice_14/save_to_file/keep_custom_tracks": false,
+"slice_14/save_to_file/path": "",
+"slice_14/start_frame": 0,
+"slice_140/end_frame": 0,
+"slice_140/loop_mode": 0,
+"slice_140/name": "",
+"slice_140/save_to_file/enabled": false,
+"slice_140/save_to_file/keep_custom_tracks": false,
+"slice_140/save_to_file/path": "",
+"slice_140/start_frame": 0,
+"slice_141/end_frame": 0,
+"slice_141/loop_mode": 0,
+"slice_141/name": "",
+"slice_141/save_to_file/enabled": false,
+"slice_141/save_to_file/keep_custom_tracks": false,
+"slice_141/save_to_file/path": "",
+"slice_141/start_frame": 0,
+"slice_142/end_frame": 0,
+"slice_142/loop_mode": 0,
+"slice_142/name": "",
+"slice_142/save_to_file/enabled": false,
+"slice_142/save_to_file/keep_custom_tracks": false,
+"slice_142/save_to_file/path": "",
+"slice_142/start_frame": 0,
+"slice_143/end_frame": 0,
+"slice_143/loop_mode": 0,
+"slice_143/name": "",
+"slice_143/save_to_file/enabled": false,
+"slice_143/save_to_file/keep_custom_tracks": false,
+"slice_143/save_to_file/path": "",
+"slice_143/start_frame": 0,
+"slice_144/end_frame": 0,
+"slice_144/loop_mode": 0,
+"slice_144/name": "",
+"slice_144/save_to_file/enabled": false,
+"slice_144/save_to_file/keep_custom_tracks": false,
+"slice_144/save_to_file/path": "",
+"slice_144/start_frame": 0,
+"slice_145/end_frame": 0,
+"slice_145/loop_mode": 0,
+"slice_145/name": "",
+"slice_145/save_to_file/enabled": false,
+"slice_145/save_to_file/keep_custom_tracks": false,
+"slice_145/save_to_file/path": "",
+"slice_145/start_frame": 0,
+"slice_146/end_frame": 0,
+"slice_146/loop_mode": 0,
+"slice_146/name": "",
+"slice_146/save_to_file/enabled": false,
+"slice_146/save_to_file/keep_custom_tracks": false,
+"slice_146/save_to_file/path": "",
+"slice_146/start_frame": 0,
+"slice_147/end_frame": 0,
+"slice_147/loop_mode": 0,
+"slice_147/name": "",
+"slice_147/save_to_file/enabled": false,
+"slice_147/save_to_file/keep_custom_tracks": false,
+"slice_147/save_to_file/path": "",
+"slice_147/start_frame": 0,
+"slice_148/end_frame": 0,
+"slice_148/loop_mode": 0,
+"slice_148/name": "",
+"slice_148/save_to_file/enabled": false,
+"slice_148/save_to_file/keep_custom_tracks": false,
+"slice_148/save_to_file/path": "",
+"slice_148/start_frame": 0,
+"slice_149/end_frame": 0,
+"slice_149/loop_mode": 0,
+"slice_149/name": "",
+"slice_149/save_to_file/enabled": false,
+"slice_149/save_to_file/keep_custom_tracks": false,
+"slice_149/save_to_file/path": "",
+"slice_149/start_frame": 0,
+"slice_15/end_frame": 0,
+"slice_15/loop_mode": 0,
+"slice_15/name": "",
+"slice_15/save_to_file/enabled": false,
+"slice_15/save_to_file/keep_custom_tracks": false,
+"slice_15/save_to_file/path": "",
+"slice_15/start_frame": 0,
+"slice_150/end_frame": 0,
+"slice_150/loop_mode": 0,
+"slice_150/name": "",
+"slice_150/save_to_file/enabled": false,
+"slice_150/save_to_file/keep_custom_tracks": false,
+"slice_150/save_to_file/path": "",
+"slice_150/start_frame": 0,
+"slice_151/end_frame": 0,
+"slice_151/loop_mode": 0,
+"slice_151/name": "",
+"slice_151/save_to_file/enabled": false,
+"slice_151/save_to_file/keep_custom_tracks": false,
+"slice_151/save_to_file/path": "",
+"slice_151/start_frame": 0,
+"slice_152/end_frame": 0,
+"slice_152/loop_mode": 0,
+"slice_152/name": "",
+"slice_152/save_to_file/enabled": false,
+"slice_152/save_to_file/keep_custom_tracks": false,
+"slice_152/save_to_file/path": "",
+"slice_152/start_frame": 0,
+"slice_153/end_frame": 0,
+"slice_153/loop_mode": 0,
+"slice_153/name": "",
+"slice_153/save_to_file/enabled": false,
+"slice_153/save_to_file/keep_custom_tracks": false,
+"slice_153/save_to_file/path": "",
+"slice_153/start_frame": 0,
+"slice_154/end_frame": 0,
+"slice_154/loop_mode": 0,
+"slice_154/name": "",
+"slice_154/save_to_file/enabled": false,
+"slice_154/save_to_file/keep_custom_tracks": false,
+"slice_154/save_to_file/path": "",
+"slice_154/start_frame": 0,
+"slice_155/end_frame": 0,
+"slice_155/loop_mode": 0,
+"slice_155/name": "",
+"slice_155/save_to_file/enabled": false,
+"slice_155/save_to_file/keep_custom_tracks": false,
+"slice_155/save_to_file/path": "",
+"slice_155/start_frame": 0,
+"slice_156/end_frame": 0,
+"slice_156/loop_mode": 0,
+"slice_156/name": "",
+"slice_156/save_to_file/enabled": false,
+"slice_156/save_to_file/keep_custom_tracks": false,
+"slice_156/save_to_file/path": "",
+"slice_156/start_frame": 0,
+"slice_157/end_frame": 0,
+"slice_157/loop_mode": 0,
+"slice_157/name": "",
+"slice_157/save_to_file/enabled": false,
+"slice_157/save_to_file/keep_custom_tracks": false,
+"slice_157/save_to_file/path": "",
+"slice_157/start_frame": 0,
+"slice_158/end_frame": 0,
+"slice_158/loop_mode": 0,
+"slice_158/name": "",
+"slice_158/save_to_file/enabled": false,
+"slice_158/save_to_file/keep_custom_tracks": false,
+"slice_158/save_to_file/path": "",
+"slice_158/start_frame": 0,
+"slice_159/end_frame": 0,
+"slice_159/loop_mode": 0,
+"slice_159/name": "",
+"slice_159/save_to_file/enabled": false,
+"slice_159/save_to_file/keep_custom_tracks": false,
+"slice_159/save_to_file/path": "",
+"slice_159/start_frame": 0,
+"slice_16/end_frame": 0,
+"slice_16/loop_mode": 0,
+"slice_16/name": "",
+"slice_16/save_to_file/enabled": false,
+"slice_16/save_to_file/keep_custom_tracks": false,
+"slice_16/save_to_file/path": "",
+"slice_16/start_frame": 0,
+"slice_160/end_frame": 0,
+"slice_160/loop_mode": 0,
+"slice_160/name": "",
+"slice_160/save_to_file/enabled": false,
+"slice_160/save_to_file/keep_custom_tracks": false,
+"slice_160/save_to_file/path": "",
+"slice_160/start_frame": 0,
+"slice_161/end_frame": 0,
+"slice_161/loop_mode": 0,
+"slice_161/name": "",
+"slice_161/save_to_file/enabled": false,
+"slice_161/save_to_file/keep_custom_tracks": false,
+"slice_161/save_to_file/path": "",
+"slice_161/start_frame": 0,
+"slice_162/end_frame": 0,
+"slice_162/loop_mode": 0,
+"slice_162/name": "",
+"slice_162/save_to_file/enabled": false,
+"slice_162/save_to_file/keep_custom_tracks": false,
+"slice_162/save_to_file/path": "",
+"slice_162/start_frame": 0,
+"slice_163/end_frame": 0,
+"slice_163/loop_mode": 0,
+"slice_163/name": "",
+"slice_163/save_to_file/enabled": false,
+"slice_163/save_to_file/keep_custom_tracks": false,
+"slice_163/save_to_file/path": "",
+"slice_163/start_frame": 0,
+"slice_164/end_frame": 0,
+"slice_164/loop_mode": 0,
+"slice_164/name": "",
+"slice_164/save_to_file/enabled": false,
+"slice_164/save_to_file/keep_custom_tracks": false,
+"slice_164/save_to_file/path": "",
+"slice_164/start_frame": 0,
+"slice_165/end_frame": 0,
+"slice_165/loop_mode": 0,
+"slice_165/name": "",
+"slice_165/save_to_file/enabled": false,
+"slice_165/save_to_file/keep_custom_tracks": false,
+"slice_165/save_to_file/path": "",
+"slice_165/start_frame": 0,
+"slice_166/end_frame": 0,
+"slice_166/loop_mode": 0,
+"slice_166/name": "",
+"slice_166/save_to_file/enabled": false,
+"slice_166/save_to_file/keep_custom_tracks": false,
+"slice_166/save_to_file/path": "",
+"slice_166/start_frame": 0,
+"slice_167/end_frame": 0,
+"slice_167/loop_mode": 0,
+"slice_167/name": "",
+"slice_167/save_to_file/enabled": false,
+"slice_167/save_to_file/keep_custom_tracks": false,
+"slice_167/save_to_file/path": "",
+"slice_167/start_frame": 0,
+"slice_168/end_frame": 0,
+"slice_168/loop_mode": 0,
+"slice_168/name": "",
+"slice_168/save_to_file/enabled": false,
+"slice_168/save_to_file/keep_custom_tracks": false,
+"slice_168/save_to_file/path": "",
+"slice_168/start_frame": 0,
+"slice_169/end_frame": 0,
+"slice_169/loop_mode": 0,
+"slice_169/name": "",
+"slice_169/save_to_file/enabled": false,
+"slice_169/save_to_file/keep_custom_tracks": false,
+"slice_169/save_to_file/path": "",
+"slice_169/start_frame": 0,
+"slice_17/end_frame": 0,
+"slice_17/loop_mode": 0,
+"slice_17/name": "",
+"slice_17/save_to_file/enabled": false,
+"slice_17/save_to_file/keep_custom_tracks": false,
+"slice_17/save_to_file/path": "",
+"slice_17/start_frame": 0,
+"slice_170/end_frame": 0,
+"slice_170/loop_mode": 0,
+"slice_170/name": "",
+"slice_170/save_to_file/enabled": false,
+"slice_170/save_to_file/keep_custom_tracks": false,
+"slice_170/save_to_file/path": "",
+"slice_170/start_frame": 0,
+"slice_171/end_frame": 0,
+"slice_171/loop_mode": 0,
+"slice_171/name": "",
+"slice_171/save_to_file/enabled": false,
+"slice_171/save_to_file/keep_custom_tracks": false,
+"slice_171/save_to_file/path": "",
+"slice_171/start_frame": 0,
+"slice_172/end_frame": 0,
+"slice_172/loop_mode": 0,
+"slice_172/name": "",
+"slice_172/save_to_file/enabled": false,
+"slice_172/save_to_file/keep_custom_tracks": false,
+"slice_172/save_to_file/path": "",
+"slice_172/start_frame": 0,
+"slice_173/end_frame": 0,
+"slice_173/loop_mode": 0,
+"slice_173/name": "",
+"slice_173/save_to_file/enabled": false,
+"slice_173/save_to_file/keep_custom_tracks": false,
+"slice_173/save_to_file/path": "",
+"slice_173/start_frame": 0,
+"slice_174/end_frame": 0,
+"slice_174/loop_mode": 0,
+"slice_174/name": "",
+"slice_174/save_to_file/enabled": false,
+"slice_174/save_to_file/keep_custom_tracks": false,
+"slice_174/save_to_file/path": "",
+"slice_174/start_frame": 0,
+"slice_175/end_frame": 0,
+"slice_175/loop_mode": 0,
+"slice_175/name": "",
+"slice_175/save_to_file/enabled": false,
+"slice_175/save_to_file/keep_custom_tracks": false,
+"slice_175/save_to_file/path": "",
+"slice_175/start_frame": 0,
+"slice_176/end_frame": 0,
+"slice_176/loop_mode": 0,
+"slice_176/name": "",
+"slice_176/save_to_file/enabled": false,
+"slice_176/save_to_file/keep_custom_tracks": false,
+"slice_176/save_to_file/path": "",
+"slice_176/start_frame": 0,
+"slice_177/end_frame": 0,
+"slice_177/loop_mode": 0,
+"slice_177/name": "",
+"slice_177/save_to_file/enabled": false,
+"slice_177/save_to_file/keep_custom_tracks": false,
+"slice_177/save_to_file/path": "",
+"slice_177/start_frame": 0,
+"slice_178/end_frame": 0,
+"slice_178/loop_mode": 0,
+"slice_178/name": "",
+"slice_178/save_to_file/enabled": false,
+"slice_178/save_to_file/keep_custom_tracks": false,
+"slice_178/save_to_file/path": "",
+"slice_178/start_frame": 0,
+"slice_179/end_frame": 0,
+"slice_179/loop_mode": 0,
+"slice_179/name": "",
+"slice_179/save_to_file/enabled": false,
+"slice_179/save_to_file/keep_custom_tracks": false,
+"slice_179/save_to_file/path": "",
+"slice_179/start_frame": 0,
+"slice_18/end_frame": 0,
+"slice_18/loop_mode": 0,
+"slice_18/name": "",
+"slice_18/save_to_file/enabled": false,
+"slice_18/save_to_file/keep_custom_tracks": false,
+"slice_18/save_to_file/path": "",
+"slice_18/start_frame": 0,
+"slice_180/end_frame": 0,
+"slice_180/loop_mode": 0,
+"slice_180/name": "",
+"slice_180/save_to_file/enabled": false,
+"slice_180/save_to_file/keep_custom_tracks": false,
+"slice_180/save_to_file/path": "",
+"slice_180/start_frame": 0,
+"slice_181/end_frame": 0,
+"slice_181/loop_mode": 0,
+"slice_181/name": "",
+"slice_181/save_to_file/enabled": false,
+"slice_181/save_to_file/keep_custom_tracks": false,
+"slice_181/save_to_file/path": "",
+"slice_181/start_frame": 0,
+"slice_182/end_frame": 0,
+"slice_182/loop_mode": 0,
+"slice_182/name": "",
+"slice_182/save_to_file/enabled": false,
+"slice_182/save_to_file/keep_custom_tracks": false,
+"slice_182/save_to_file/path": "",
+"slice_182/start_frame": 0,
+"slice_183/end_frame": 0,
+"slice_183/loop_mode": 0,
+"slice_183/name": "",
+"slice_183/save_to_file/enabled": false,
+"slice_183/save_to_file/keep_custom_tracks": false,
+"slice_183/save_to_file/path": "",
+"slice_183/start_frame": 0,
+"slice_184/end_frame": 0,
+"slice_184/loop_mode": 0,
+"slice_184/name": "",
+"slice_184/save_to_file/enabled": false,
+"slice_184/save_to_file/keep_custom_tracks": false,
+"slice_184/save_to_file/path": "",
+"slice_184/start_frame": 0,
+"slice_185/end_frame": 0,
+"slice_185/loop_mode": 0,
+"slice_185/name": "",
+"slice_185/save_to_file/enabled": false,
+"slice_185/save_to_file/keep_custom_tracks": false,
+"slice_185/save_to_file/path": "",
+"slice_185/start_frame": 0,
+"slice_186/end_frame": 0,
+"slice_186/loop_mode": 0,
+"slice_186/name": "",
+"slice_186/save_to_file/enabled": false,
+"slice_186/save_to_file/keep_custom_tracks": false,
+"slice_186/save_to_file/path": "",
+"slice_186/start_frame": 0,
+"slice_187/end_frame": 0,
+"slice_187/loop_mode": 0,
+"slice_187/name": "",
+"slice_187/save_to_file/enabled": false,
+"slice_187/save_to_file/keep_custom_tracks": false,
+"slice_187/save_to_file/path": "",
+"slice_187/start_frame": 0,
+"slice_188/end_frame": 0,
+"slice_188/loop_mode": 0,
+"slice_188/name": "",
+"slice_188/save_to_file/enabled": false,
+"slice_188/save_to_file/keep_custom_tracks": false,
+"slice_188/save_to_file/path": "",
+"slice_188/start_frame": 0,
+"slice_189/end_frame": 0,
+"slice_189/loop_mode": 0,
+"slice_189/name": "",
+"slice_189/save_to_file/enabled": false,
+"slice_189/save_to_file/keep_custom_tracks": false,
+"slice_189/save_to_file/path": "",
+"slice_189/start_frame": 0,
+"slice_19/end_frame": 0,
+"slice_19/loop_mode": 0,
+"slice_19/name": "",
+"slice_19/save_to_file/enabled": false,
+"slice_19/save_to_file/keep_custom_tracks": false,
+"slice_19/save_to_file/path": "",
+"slice_19/start_frame": 0,
+"slice_190/end_frame": 0,
+"slice_190/loop_mode": 0,
+"slice_190/name": "",
+"slice_190/save_to_file/enabled": false,
+"slice_190/save_to_file/keep_custom_tracks": false,
+"slice_190/save_to_file/path": "",
+"slice_190/start_frame": 0,
+"slice_191/end_frame": 0,
+"slice_191/loop_mode": 0,
+"slice_191/name": "",
+"slice_191/save_to_file/enabled": false,
+"slice_191/save_to_file/keep_custom_tracks": false,
+"slice_191/save_to_file/path": "",
+"slice_191/start_frame": 0,
+"slice_192/end_frame": 0,
+"slice_192/loop_mode": 0,
+"slice_192/name": "",
+"slice_192/save_to_file/enabled": false,
+"slice_192/save_to_file/keep_custom_tracks": false,
+"slice_192/save_to_file/path": "",
+"slice_192/start_frame": 0,
+"slice_193/end_frame": 0,
+"slice_193/loop_mode": 0,
+"slice_193/name": "",
+"slice_193/save_to_file/enabled": false,
+"slice_193/save_to_file/keep_custom_tracks": false,
+"slice_193/save_to_file/path": "",
+"slice_193/start_frame": 0,
+"slice_194/end_frame": 0,
+"slice_194/loop_mode": 0,
+"slice_194/name": "",
+"slice_194/save_to_file/enabled": false,
+"slice_194/save_to_file/keep_custom_tracks": false,
+"slice_194/save_to_file/path": "",
+"slice_194/start_frame": 0,
+"slice_195/end_frame": 0,
+"slice_195/loop_mode": 0,
+"slice_195/name": "",
+"slice_195/save_to_file/enabled": false,
+"slice_195/save_to_file/keep_custom_tracks": false,
+"slice_195/save_to_file/path": "",
+"slice_195/start_frame": 0,
+"slice_196/end_frame": 0,
+"slice_196/loop_mode": 0,
+"slice_196/name": "",
+"slice_196/save_to_file/enabled": false,
+"slice_196/save_to_file/keep_custom_tracks": false,
+"slice_196/save_to_file/path": "",
+"slice_196/start_frame": 0,
+"slice_197/end_frame": 0,
+"slice_197/loop_mode": 0,
+"slice_197/name": "",
+"slice_197/save_to_file/enabled": false,
+"slice_197/save_to_file/keep_custom_tracks": false,
+"slice_197/save_to_file/path": "",
+"slice_197/start_frame": 0,
+"slice_198/end_frame": 0,
+"slice_198/loop_mode": 0,
+"slice_198/name": "",
+"slice_198/save_to_file/enabled": false,
+"slice_198/save_to_file/keep_custom_tracks": false,
+"slice_198/save_to_file/path": "",
+"slice_198/start_frame": 0,
+"slice_199/end_frame": 0,
+"slice_199/loop_mode": 0,
+"slice_199/name": "",
+"slice_199/save_to_file/enabled": false,
+"slice_199/save_to_file/keep_custom_tracks": false,
+"slice_199/save_to_file/path": "",
+"slice_199/start_frame": 0,
+"slice_2/end_frame": 0,
+"slice_2/loop_mode": 0,
+"slice_2/name": "",
+"slice_2/save_to_file/enabled": false,
+"slice_2/save_to_file/keep_custom_tracks": false,
+"slice_2/save_to_file/path": "",
+"slice_2/start_frame": 0,
+"slice_20/end_frame": 0,
+"slice_20/loop_mode": 0,
+"slice_20/name": "",
+"slice_20/save_to_file/enabled": false,
+"slice_20/save_to_file/keep_custom_tracks": false,
+"slice_20/save_to_file/path": "",
+"slice_20/start_frame": 0,
+"slice_200/end_frame": 0,
+"slice_200/loop_mode": 0,
+"slice_200/name": "",
+"slice_200/save_to_file/enabled": false,
+"slice_200/save_to_file/keep_custom_tracks": false,
+"slice_200/save_to_file/path": "",
+"slice_200/start_frame": 0,
+"slice_201/end_frame": 0,
+"slice_201/loop_mode": 0,
+"slice_201/name": "",
+"slice_201/save_to_file/enabled": false,
+"slice_201/save_to_file/keep_custom_tracks": false,
+"slice_201/save_to_file/path": "",
+"slice_201/start_frame": 0,
+"slice_202/end_frame": 0,
+"slice_202/loop_mode": 0,
+"slice_202/name": "",
+"slice_202/save_to_file/enabled": false,
+"slice_202/save_to_file/keep_custom_tracks": false,
+"slice_202/save_to_file/path": "",
+"slice_202/start_frame": 0,
+"slice_203/end_frame": 0,
+"slice_203/loop_mode": 0,
+"slice_203/name": "",
+"slice_203/save_to_file/enabled": false,
+"slice_203/save_to_file/keep_custom_tracks": false,
+"slice_203/save_to_file/path": "",
+"slice_203/start_frame": 0,
+"slice_204/end_frame": 0,
+"slice_204/loop_mode": 0,
+"slice_204/name": "",
+"slice_204/save_to_file/enabled": false,
+"slice_204/save_to_file/keep_custom_tracks": false,
+"slice_204/save_to_file/path": "",
+"slice_204/start_frame": 0,
+"slice_205/end_frame": 0,
+"slice_205/loop_mode": 0,
+"slice_205/name": "",
+"slice_205/save_to_file/enabled": false,
+"slice_205/save_to_file/keep_custom_tracks": false,
+"slice_205/save_to_file/path": "",
+"slice_205/start_frame": 0,
+"slice_206/end_frame": 0,
+"slice_206/loop_mode": 0,
+"slice_206/name": "",
+"slice_206/save_to_file/enabled": false,
+"slice_206/save_to_file/keep_custom_tracks": false,
+"slice_206/save_to_file/path": "",
+"slice_206/start_frame": 0,
+"slice_207/end_frame": 0,
+"slice_207/loop_mode": 0,
+"slice_207/name": "",
+"slice_207/save_to_file/enabled": false,
+"slice_207/save_to_file/keep_custom_tracks": false,
+"slice_207/save_to_file/path": "",
+"slice_207/start_frame": 0,
+"slice_208/end_frame": 0,
+"slice_208/loop_mode": 0,
+"slice_208/name": "",
+"slice_208/save_to_file/enabled": false,
+"slice_208/save_to_file/keep_custom_tracks": false,
+"slice_208/save_to_file/path": "",
+"slice_208/start_frame": 0,
+"slice_209/end_frame": 0,
+"slice_209/loop_mode": 0,
+"slice_209/name": "",
+"slice_209/save_to_file/enabled": false,
+"slice_209/save_to_file/keep_custom_tracks": false,
+"slice_209/save_to_file/path": "",
+"slice_209/start_frame": 0,
+"slice_21/end_frame": 0,
+"slice_21/loop_mode": 0,
+"slice_21/name": "",
+"slice_21/save_to_file/enabled": false,
+"slice_21/save_to_file/keep_custom_tracks": false,
+"slice_21/save_to_file/path": "",
+"slice_21/start_frame": 0,
+"slice_210/end_frame": 0,
+"slice_210/loop_mode": 0,
+"slice_210/name": "",
+"slice_210/save_to_file/enabled": false,
+"slice_210/save_to_file/keep_custom_tracks": false,
+"slice_210/save_to_file/path": "",
+"slice_210/start_frame": 0,
+"slice_211/end_frame": 0,
+"slice_211/loop_mode": 0,
+"slice_211/name": "",
+"slice_211/save_to_file/enabled": false,
+"slice_211/save_to_file/keep_custom_tracks": false,
+"slice_211/save_to_file/path": "",
+"slice_211/start_frame": 0,
+"slice_212/end_frame": 0,
+"slice_212/loop_mode": 0,
+"slice_212/name": "",
+"slice_212/save_to_file/enabled": false,
+"slice_212/save_to_file/keep_custom_tracks": false,
+"slice_212/save_to_file/path": "",
+"slice_212/start_frame": 0,
+"slice_213/end_frame": 0,
+"slice_213/loop_mode": 0,
+"slice_213/name": "",
+"slice_213/save_to_file/enabled": false,
+"slice_213/save_to_file/keep_custom_tracks": false,
+"slice_213/save_to_file/path": "",
+"slice_213/start_frame": 0,
+"slice_214/end_frame": 0,
+"slice_214/loop_mode": 0,
+"slice_214/name": "",
+"slice_214/save_to_file/enabled": false,
+"slice_214/save_to_file/keep_custom_tracks": false,
+"slice_214/save_to_file/path": "",
+"slice_214/start_frame": 0,
+"slice_215/end_frame": 0,
+"slice_215/loop_mode": 0,
+"slice_215/name": "",
+"slice_215/save_to_file/enabled": false,
+"slice_215/save_to_file/keep_custom_tracks": false,
+"slice_215/save_to_file/path": "",
+"slice_215/start_frame": 0,
+"slice_216/end_frame": 0,
+"slice_216/loop_mode": 0,
+"slice_216/name": "",
+"slice_216/save_to_file/enabled": false,
+"slice_216/save_to_file/keep_custom_tracks": false,
+"slice_216/save_to_file/path": "",
+"slice_216/start_frame": 0,
+"slice_217/end_frame": 0,
+"slice_217/loop_mode": 0,
+"slice_217/name": "",
+"slice_217/save_to_file/enabled": false,
+"slice_217/save_to_file/keep_custom_tracks": false,
+"slice_217/save_to_file/path": "",
+"slice_217/start_frame": 0,
+"slice_218/end_frame": 0,
+"slice_218/loop_mode": 0,
+"slice_218/name": "",
+"slice_218/save_to_file/enabled": false,
+"slice_218/save_to_file/keep_custom_tracks": false,
+"slice_218/save_to_file/path": "",
+"slice_218/start_frame": 0,
+"slice_219/end_frame": 0,
+"slice_219/loop_mode": 0,
+"slice_219/name": "",
+"slice_219/save_to_file/enabled": false,
+"slice_219/save_to_file/keep_custom_tracks": false,
+"slice_219/save_to_file/path": "",
+"slice_219/start_frame": 0,
+"slice_22/end_frame": 0,
+"slice_22/loop_mode": 0,
+"slice_22/name": "",
+"slice_22/save_to_file/enabled": false,
+"slice_22/save_to_file/keep_custom_tracks": false,
+"slice_22/save_to_file/path": "",
+"slice_22/start_frame": 0,
+"slice_220/end_frame": 0,
+"slice_220/loop_mode": 0,
+"slice_220/name": "",
+"slice_220/save_to_file/enabled": false,
+"slice_220/save_to_file/keep_custom_tracks": false,
+"slice_220/save_to_file/path": "",
+"slice_220/start_frame": 0,
+"slice_221/end_frame": 0,
+"slice_221/loop_mode": 0,
+"slice_221/name": "",
+"slice_221/save_to_file/enabled": false,
+"slice_221/save_to_file/keep_custom_tracks": false,
+"slice_221/save_to_file/path": "",
+"slice_221/start_frame": 0,
+"slice_222/end_frame": 0,
+"slice_222/loop_mode": 0,
+"slice_222/name": "",
+"slice_222/save_to_file/enabled": false,
+"slice_222/save_to_file/keep_custom_tracks": false,
+"slice_222/save_to_file/path": "",
+"slice_222/start_frame": 0,
+"slice_223/end_frame": 0,
+"slice_223/loop_mode": 0,
+"slice_223/name": "",
+"slice_223/save_to_file/enabled": false,
+"slice_223/save_to_file/keep_custom_tracks": false,
+"slice_223/save_to_file/path": "",
+"slice_223/start_frame": 0,
+"slice_224/end_frame": 0,
+"slice_224/loop_mode": 0,
+"slice_224/name": "",
+"slice_224/save_to_file/enabled": false,
+"slice_224/save_to_file/keep_custom_tracks": false,
+"slice_224/save_to_file/path": "",
+"slice_224/start_frame": 0,
+"slice_225/end_frame": 0,
+"slice_225/loop_mode": 0,
+"slice_225/name": "",
+"slice_225/save_to_file/enabled": false,
+"slice_225/save_to_file/keep_custom_tracks": false,
+"slice_225/save_to_file/path": "",
+"slice_225/start_frame": 0,
+"slice_226/end_frame": 0,
+"slice_226/loop_mode": 0,
+"slice_226/name": "",
+"slice_226/save_to_file/enabled": false,
+"slice_226/save_to_file/keep_custom_tracks": false,
+"slice_226/save_to_file/path": "",
+"slice_226/start_frame": 0,
+"slice_227/end_frame": 0,
+"slice_227/loop_mode": 0,
+"slice_227/name": "",
+"slice_227/save_to_file/enabled": false,
+"slice_227/save_to_file/keep_custom_tracks": false,
+"slice_227/save_to_file/path": "",
+"slice_227/start_frame": 0,
+"slice_228/end_frame": 0,
+"slice_228/loop_mode": 0,
+"slice_228/name": "",
+"slice_228/save_to_file/enabled": false,
+"slice_228/save_to_file/keep_custom_tracks": false,
+"slice_228/save_to_file/path": "",
+"slice_228/start_frame": 0,
+"slice_229/end_frame": 0,
+"slice_229/loop_mode": 0,
+"slice_229/name": "",
+"slice_229/save_to_file/enabled": false,
+"slice_229/save_to_file/keep_custom_tracks": false,
+"slice_229/save_to_file/path": "",
+"slice_229/start_frame": 0,
+"slice_23/end_frame": 0,
+"slice_23/loop_mode": 0,
+"slice_23/name": "",
+"slice_23/save_to_file/enabled": false,
+"slice_23/save_to_file/keep_custom_tracks": false,
+"slice_23/save_to_file/path": "",
+"slice_23/start_frame": 0,
+"slice_230/end_frame": 0,
+"slice_230/loop_mode": 0,
+"slice_230/name": "",
+"slice_230/save_to_file/enabled": false,
+"slice_230/save_to_file/keep_custom_tracks": false,
+"slice_230/save_to_file/path": "",
+"slice_230/start_frame": 0,
+"slice_231/end_frame": 0,
+"slice_231/loop_mode": 0,
+"slice_231/name": "",
+"slice_231/save_to_file/enabled": false,
+"slice_231/save_to_file/keep_custom_tracks": false,
+"slice_231/save_to_file/path": "",
+"slice_231/start_frame": 0,
+"slice_232/end_frame": 0,
+"slice_232/loop_mode": 0,
+"slice_232/name": "",
+"slice_232/save_to_file/enabled": false,
+"slice_232/save_to_file/keep_custom_tracks": false,
+"slice_232/save_to_file/path": "",
+"slice_232/start_frame": 0,
+"slice_233/end_frame": 0,
+"slice_233/loop_mode": 0,
+"slice_233/name": "",
+"slice_233/save_to_file/enabled": false,
+"slice_233/save_to_file/keep_custom_tracks": false,
+"slice_233/save_to_file/path": "",
+"slice_233/start_frame": 0,
+"slice_234/end_frame": 0,
+"slice_234/loop_mode": 0,
+"slice_234/name": "",
+"slice_234/save_to_file/enabled": false,
+"slice_234/save_to_file/keep_custom_tracks": false,
+"slice_234/save_to_file/path": "",
+"slice_234/start_frame": 0,
+"slice_235/end_frame": 0,
+"slice_235/loop_mode": 0,
+"slice_235/name": "",
+"slice_235/save_to_file/enabled": false,
+"slice_235/save_to_file/keep_custom_tracks": false,
+"slice_235/save_to_file/path": "",
+"slice_235/start_frame": 0,
+"slice_236/end_frame": 0,
+"slice_236/loop_mode": 0,
+"slice_236/name": "",
+"slice_236/save_to_file/enabled": false,
+"slice_236/save_to_file/keep_custom_tracks": false,
+"slice_236/save_to_file/path": "",
+"slice_236/start_frame": 0,
+"slice_237/end_frame": 0,
+"slice_237/loop_mode": 0,
+"slice_237/name": "",
+"slice_237/save_to_file/enabled": false,
+"slice_237/save_to_file/keep_custom_tracks": false,
+"slice_237/save_to_file/path": "",
+"slice_237/start_frame": 0,
+"slice_238/end_frame": 0,
+"slice_238/loop_mode": 0,
+"slice_238/name": "",
+"slice_238/save_to_file/enabled": false,
+"slice_238/save_to_file/keep_custom_tracks": false,
+"slice_238/save_to_file/path": "",
+"slice_238/start_frame": 0,
+"slice_239/end_frame": 0,
+"slice_239/loop_mode": 0,
+"slice_239/name": "",
+"slice_239/save_to_file/enabled": false,
+"slice_239/save_to_file/keep_custom_tracks": false,
+"slice_239/save_to_file/path": "",
+"slice_239/start_frame": 0,
+"slice_24/end_frame": 0,
+"slice_24/loop_mode": 0,
+"slice_24/name": "",
+"slice_24/save_to_file/enabled": false,
+"slice_24/save_to_file/keep_custom_tracks": false,
+"slice_24/save_to_file/path": "",
+"slice_24/start_frame": 0,
+"slice_240/end_frame": 0,
+"slice_240/loop_mode": 0,
+"slice_240/name": "",
+"slice_240/save_to_file/enabled": false,
+"slice_240/save_to_file/keep_custom_tracks": false,
+"slice_240/save_to_file/path": "",
+"slice_240/start_frame": 0,
+"slice_241/end_frame": 0,
+"slice_241/loop_mode": 0,
+"slice_241/name": "",
+"slice_241/save_to_file/enabled": false,
+"slice_241/save_to_file/keep_custom_tracks": false,
+"slice_241/save_to_file/path": "",
+"slice_241/start_frame": 0,
+"slice_242/end_frame": 0,
+"slice_242/loop_mode": 0,
+"slice_242/name": "",
+"slice_242/save_to_file/enabled": false,
+"slice_242/save_to_file/keep_custom_tracks": false,
+"slice_242/save_to_file/path": "",
+"slice_242/start_frame": 0,
+"slice_243/end_frame": 0,
+"slice_243/loop_mode": 0,
+"slice_243/name": "",
+"slice_243/save_to_file/enabled": false,
+"slice_243/save_to_file/keep_custom_tracks": false,
+"slice_243/save_to_file/path": "",
+"slice_243/start_frame": 0,
+"slice_244/end_frame": 0,
+"slice_244/loop_mode": 0,
+"slice_244/name": "",
+"slice_244/save_to_file/enabled": false,
+"slice_244/save_to_file/keep_custom_tracks": false,
+"slice_244/save_to_file/path": "",
+"slice_244/start_frame": 0,
+"slice_245/end_frame": 0,
+"slice_245/loop_mode": 0,
+"slice_245/name": "",
+"slice_245/save_to_file/enabled": false,
+"slice_245/save_to_file/keep_custom_tracks": false,
+"slice_245/save_to_file/path": "",
+"slice_245/start_frame": 0,
+"slice_246/end_frame": 0,
+"slice_246/loop_mode": 0,
+"slice_246/name": "",
+"slice_246/save_to_file/enabled": false,
+"slice_246/save_to_file/keep_custom_tracks": false,
+"slice_246/save_to_file/path": "",
+"slice_246/start_frame": 0,
+"slice_247/end_frame": 0,
+"slice_247/loop_mode": 0,
+"slice_247/name": "",
+"slice_247/save_to_file/enabled": false,
+"slice_247/save_to_file/keep_custom_tracks": false,
+"slice_247/save_to_file/path": "",
+"slice_247/start_frame": 0,
+"slice_248/end_frame": 0,
+"slice_248/loop_mode": 0,
+"slice_248/name": "",
+"slice_248/save_to_file/enabled": false,
+"slice_248/save_to_file/keep_custom_tracks": false,
+"slice_248/save_to_file/path": "",
+"slice_248/start_frame": 0,
+"slice_249/end_frame": 0,
+"slice_249/loop_mode": 0,
+"slice_249/name": "",
+"slice_249/save_to_file/enabled": false,
+"slice_249/save_to_file/keep_custom_tracks": false,
+"slice_249/save_to_file/path": "",
+"slice_249/start_frame": 0,
+"slice_25/end_frame": 0,
+"slice_25/loop_mode": 0,
+"slice_25/name": "",
+"slice_25/save_to_file/enabled": false,
+"slice_25/save_to_file/keep_custom_tracks": false,
+"slice_25/save_to_file/path": "",
+"slice_25/start_frame": 0,
+"slice_250/end_frame": 0,
+"slice_250/loop_mode": 0,
+"slice_250/name": "",
+"slice_250/save_to_file/enabled": false,
+"slice_250/save_to_file/keep_custom_tracks": false,
+"slice_250/save_to_file/path": "",
+"slice_250/start_frame": 0,
+"slice_251/end_frame": 0,
+"slice_251/loop_mode": 0,
+"slice_251/name": "",
+"slice_251/save_to_file/enabled": false,
+"slice_251/save_to_file/keep_custom_tracks": false,
+"slice_251/save_to_file/path": "",
+"slice_251/start_frame": 0,
+"slice_252/end_frame": 0,
+"slice_252/loop_mode": 0,
+"slice_252/name": "",
+"slice_252/save_to_file/enabled": false,
+"slice_252/save_to_file/keep_custom_tracks": false,
+"slice_252/save_to_file/path": "",
+"slice_252/start_frame": 0,
+"slice_253/end_frame": 0,
+"slice_253/loop_mode": 0,
+"slice_253/name": "",
+"slice_253/save_to_file/enabled": false,
+"slice_253/save_to_file/keep_custom_tracks": false,
+"slice_253/save_to_file/path": "",
+"slice_253/start_frame": 0,
+"slice_254/end_frame": 0,
+"slice_254/loop_mode": 0,
+"slice_254/name": "",
+"slice_254/save_to_file/enabled": false,
+"slice_254/save_to_file/keep_custom_tracks": false,
+"slice_254/save_to_file/path": "",
+"slice_254/start_frame": 0,
+"slice_255/end_frame": 0,
+"slice_255/loop_mode": 0,
+"slice_255/name": "",
+"slice_255/save_to_file/enabled": false,
+"slice_255/save_to_file/keep_custom_tracks": false,
+"slice_255/save_to_file/path": "",
+"slice_255/start_frame": 0,
+"slice_256/end_frame": 0,
+"slice_256/loop_mode": 0,
+"slice_256/name": "",
+"slice_256/save_to_file/enabled": false,
+"slice_256/save_to_file/keep_custom_tracks": false,
+"slice_256/save_to_file/path": "",
+"slice_256/start_frame": 0,
+"slice_26/end_frame": 0,
+"slice_26/loop_mode": 0,
+"slice_26/name": "",
+"slice_26/save_to_file/enabled": false,
+"slice_26/save_to_file/keep_custom_tracks": false,
+"slice_26/save_to_file/path": "",
+"slice_26/start_frame": 0,
+"slice_27/end_frame": 0,
+"slice_27/loop_mode": 0,
+"slice_27/name": "",
+"slice_27/save_to_file/enabled": false,
+"slice_27/save_to_file/keep_custom_tracks": false,
+"slice_27/save_to_file/path": "",
+"slice_27/start_frame": 0,
+"slice_28/end_frame": 0,
+"slice_28/loop_mode": 0,
+"slice_28/name": "",
+"slice_28/save_to_file/enabled": false,
+"slice_28/save_to_file/keep_custom_tracks": false,
+"slice_28/save_to_file/path": "",
+"slice_28/start_frame": 0,
+"slice_29/end_frame": 0,
+"slice_29/loop_mode": 0,
+"slice_29/name": "",
+"slice_29/save_to_file/enabled": false,
+"slice_29/save_to_file/keep_custom_tracks": false,
+"slice_29/save_to_file/path": "",
+"slice_29/start_frame": 0,
+"slice_3/end_frame": 0,
+"slice_3/loop_mode": 0,
+"slice_3/name": "",
+"slice_3/save_to_file/enabled": false,
+"slice_3/save_to_file/keep_custom_tracks": false,
+"slice_3/save_to_file/path": "",
+"slice_3/start_frame": 0,
+"slice_30/end_frame": 0,
+"slice_30/loop_mode": 0,
+"slice_30/name": "",
+"slice_30/save_to_file/enabled": false,
+"slice_30/save_to_file/keep_custom_tracks": false,
+"slice_30/save_to_file/path": "",
+"slice_30/start_frame": 0,
+"slice_31/end_frame": 0,
+"slice_31/loop_mode": 0,
+"slice_31/name": "",
+"slice_31/save_to_file/enabled": false,
+"slice_31/save_to_file/keep_custom_tracks": false,
+"slice_31/save_to_file/path": "",
+"slice_31/start_frame": 0,
+"slice_32/end_frame": 0,
+"slice_32/loop_mode": 0,
+"slice_32/name": "",
+"slice_32/save_to_file/enabled": false,
+"slice_32/save_to_file/keep_custom_tracks": false,
+"slice_32/save_to_file/path": "",
+"slice_32/start_frame": 0,
+"slice_33/end_frame": 0,
+"slice_33/loop_mode": 0,
+"slice_33/name": "",
+"slice_33/save_to_file/enabled": false,
+"slice_33/save_to_file/keep_custom_tracks": false,
+"slice_33/save_to_file/path": "",
+"slice_33/start_frame": 0,
+"slice_34/end_frame": 0,
+"slice_34/loop_mode": 0,
+"slice_34/name": "",
+"slice_34/save_to_file/enabled": false,
+"slice_34/save_to_file/keep_custom_tracks": false,
+"slice_34/save_to_file/path": "",
+"slice_34/start_frame": 0,
+"slice_35/end_frame": 0,
+"slice_35/loop_mode": 0,
+"slice_35/name": "",
+"slice_35/save_to_file/enabled": false,
+"slice_35/save_to_file/keep_custom_tracks": false,
+"slice_35/save_to_file/path": "",
+"slice_35/start_frame": 0,
+"slice_36/end_frame": 0,
+"slice_36/loop_mode": 0,
+"slice_36/name": "",
+"slice_36/save_to_file/enabled": false,
+"slice_36/save_to_file/keep_custom_tracks": false,
+"slice_36/save_to_file/path": "",
+"slice_36/start_frame": 0,
+"slice_37/end_frame": 0,
+"slice_37/loop_mode": 0,
+"slice_37/name": "",
+"slice_37/save_to_file/enabled": false,
+"slice_37/save_to_file/keep_custom_tracks": false,
+"slice_37/save_to_file/path": "",
+"slice_37/start_frame": 0,
+"slice_38/end_frame": 0,
+"slice_38/loop_mode": 0,
+"slice_38/name": "",
+"slice_38/save_to_file/enabled": false,
+"slice_38/save_to_file/keep_custom_tracks": false,
+"slice_38/save_to_file/path": "",
+"slice_38/start_frame": 0,
+"slice_39/end_frame": 0,
+"slice_39/loop_mode": 0,
+"slice_39/name": "",
+"slice_39/save_to_file/enabled": false,
+"slice_39/save_to_file/keep_custom_tracks": false,
+"slice_39/save_to_file/path": "",
+"slice_39/start_frame": 0,
+"slice_4/end_frame": 0,
+"slice_4/loop_mode": 0,
+"slice_4/name": "",
+"slice_4/save_to_file/enabled": false,
+"slice_4/save_to_file/keep_custom_tracks": false,
+"slice_4/save_to_file/path": "",
+"slice_4/start_frame": 0,
+"slice_40/end_frame": 0,
+"slice_40/loop_mode": 0,
+"slice_40/name": "",
+"slice_40/save_to_file/enabled": false,
+"slice_40/save_to_file/keep_custom_tracks": false,
+"slice_40/save_to_file/path": "",
+"slice_40/start_frame": 0,
+"slice_41/end_frame": 0,
+"slice_41/loop_mode": 0,
+"slice_41/name": "",
+"slice_41/save_to_file/enabled": false,
+"slice_41/save_to_file/keep_custom_tracks": false,
+"slice_41/save_to_file/path": "",
+"slice_41/start_frame": 0,
+"slice_42/end_frame": 0,
+"slice_42/loop_mode": 0,
+"slice_42/name": "",
+"slice_42/save_to_file/enabled": false,
+"slice_42/save_to_file/keep_custom_tracks": false,
+"slice_42/save_to_file/path": "",
+"slice_42/start_frame": 0,
+"slice_43/end_frame": 0,
+"slice_43/loop_mode": 0,
+"slice_43/name": "",
+"slice_43/save_to_file/enabled": false,
+"slice_43/save_to_file/keep_custom_tracks": false,
+"slice_43/save_to_file/path": "",
+"slice_43/start_frame": 0,
+"slice_44/end_frame": 0,
+"slice_44/loop_mode": 0,
+"slice_44/name": "",
+"slice_44/save_to_file/enabled": false,
+"slice_44/save_to_file/keep_custom_tracks": false,
+"slice_44/save_to_file/path": "",
+"slice_44/start_frame": 0,
+"slice_45/end_frame": 0,
+"slice_45/loop_mode": 0,
+"slice_45/name": "",
+"slice_45/save_to_file/enabled": false,
+"slice_45/save_to_file/keep_custom_tracks": false,
+"slice_45/save_to_file/path": "",
+"slice_45/start_frame": 0,
+"slice_46/end_frame": 0,
+"slice_46/loop_mode": 0,
+"slice_46/name": "",
+"slice_46/save_to_file/enabled": false,
+"slice_46/save_to_file/keep_custom_tracks": false,
+"slice_46/save_to_file/path": "",
+"slice_46/start_frame": 0,
+"slice_47/end_frame": 0,
+"slice_47/loop_mode": 0,
+"slice_47/name": "",
+"slice_47/save_to_file/enabled": false,
+"slice_47/save_to_file/keep_custom_tracks": false,
+"slice_47/save_to_file/path": "",
+"slice_47/start_frame": 0,
+"slice_48/end_frame": 0,
+"slice_48/loop_mode": 0,
+"slice_48/name": "",
+"slice_48/save_to_file/enabled": false,
+"slice_48/save_to_file/keep_custom_tracks": false,
+"slice_48/save_to_file/path": "",
+"slice_48/start_frame": 0,
+"slice_49/end_frame": 0,
+"slice_49/loop_mode": 0,
+"slice_49/name": "",
+"slice_49/save_to_file/enabled": false,
+"slice_49/save_to_file/keep_custom_tracks": false,
+"slice_49/save_to_file/path": "",
+"slice_49/start_frame": 0,
+"slice_5/end_frame": 0,
+"slice_5/loop_mode": 0,
+"slice_5/name": "",
+"slice_5/save_to_file/enabled": false,
+"slice_5/save_to_file/keep_custom_tracks": false,
+"slice_5/save_to_file/path": "",
+"slice_5/start_frame": 0,
+"slice_50/end_frame": 0,
+"slice_50/loop_mode": 0,
+"slice_50/name": "",
+"slice_50/save_to_file/enabled": false,
+"slice_50/save_to_file/keep_custom_tracks": false,
+"slice_50/save_to_file/path": "",
+"slice_50/start_frame": 0,
+"slice_51/end_frame": 0,
+"slice_51/loop_mode": 0,
+"slice_51/name": "",
+"slice_51/save_to_file/enabled": false,
+"slice_51/save_to_file/keep_custom_tracks": false,
+"slice_51/save_to_file/path": "",
+"slice_51/start_frame": 0,
+"slice_52/end_frame": 0,
+"slice_52/loop_mode": 0,
+"slice_52/name": "",
+"slice_52/save_to_file/enabled": false,
+"slice_52/save_to_file/keep_custom_tracks": false,
+"slice_52/save_to_file/path": "",
+"slice_52/start_frame": 0,
+"slice_53/end_frame": 0,
+"slice_53/loop_mode": 0,
+"slice_53/name": "",
+"slice_53/save_to_file/enabled": false,
+"slice_53/save_to_file/keep_custom_tracks": false,
+"slice_53/save_to_file/path": "",
+"slice_53/start_frame": 0,
+"slice_54/end_frame": 0,
+"slice_54/loop_mode": 0,
+"slice_54/name": "",
+"slice_54/save_to_file/enabled": false,
+"slice_54/save_to_file/keep_custom_tracks": false,
+"slice_54/save_to_file/path": "",
+"slice_54/start_frame": 0,
+"slice_55/end_frame": 0,
+"slice_55/loop_mode": 0,
+"slice_55/name": "",
+"slice_55/save_to_file/enabled": false,
+"slice_55/save_to_file/keep_custom_tracks": false,
+"slice_55/save_to_file/path": "",
+"slice_55/start_frame": 0,
+"slice_56/end_frame": 0,
+"slice_56/loop_mode": 0,
+"slice_56/name": "",
+"slice_56/save_to_file/enabled": false,
+"slice_56/save_to_file/keep_custom_tracks": false,
+"slice_56/save_to_file/path": "",
+"slice_56/start_frame": 0,
+"slice_57/end_frame": 0,
+"slice_57/loop_mode": 0,
+"slice_57/name": "",
+"slice_57/save_to_file/enabled": false,
+"slice_57/save_to_file/keep_custom_tracks": false,
+"slice_57/save_to_file/path": "",
+"slice_57/start_frame": 0,
+"slice_58/end_frame": 0,
+"slice_58/loop_mode": 0,
+"slice_58/name": "",
+"slice_58/save_to_file/enabled": false,
+"slice_58/save_to_file/keep_custom_tracks": false,
+"slice_58/save_to_file/path": "",
+"slice_58/start_frame": 0,
+"slice_59/end_frame": 0,
+"slice_59/loop_mode": 0,
+"slice_59/name": "",
+"slice_59/save_to_file/enabled": false,
+"slice_59/save_to_file/keep_custom_tracks": false,
+"slice_59/save_to_file/path": "",
+"slice_59/start_frame": 0,
+"slice_6/end_frame": 0,
+"slice_6/loop_mode": 0,
+"slice_6/name": "",
+"slice_6/save_to_file/enabled": false,
+"slice_6/save_to_file/keep_custom_tracks": false,
+"slice_6/save_to_file/path": "",
+"slice_6/start_frame": 0,
+"slice_60/end_frame": 0,
+"slice_60/loop_mode": 0,
+"slice_60/name": "",
+"slice_60/save_to_file/enabled": false,
+"slice_60/save_to_file/keep_custom_tracks": false,
+"slice_60/save_to_file/path": "",
+"slice_60/start_frame": 0,
+"slice_61/end_frame": 0,
+"slice_61/loop_mode": 0,
+"slice_61/name": "",
+"slice_61/save_to_file/enabled": false,
+"slice_61/save_to_file/keep_custom_tracks": false,
+"slice_61/save_to_file/path": "",
+"slice_61/start_frame": 0,
+"slice_62/end_frame": 0,
+"slice_62/loop_mode": 0,
+"slice_62/name": "",
+"slice_62/save_to_file/enabled": false,
+"slice_62/save_to_file/keep_custom_tracks": false,
+"slice_62/save_to_file/path": "",
+"slice_62/start_frame": 0,
+"slice_63/end_frame": 0,
+"slice_63/loop_mode": 0,
+"slice_63/name": "",
+"slice_63/save_to_file/enabled": false,
+"slice_63/save_to_file/keep_custom_tracks": false,
+"slice_63/save_to_file/path": "",
+"slice_63/start_frame": 0,
+"slice_64/end_frame": 0,
+"slice_64/loop_mode": 0,
+"slice_64/name": "",
+"slice_64/save_to_file/enabled": false,
+"slice_64/save_to_file/keep_custom_tracks": false,
+"slice_64/save_to_file/path": "",
+"slice_64/start_frame": 0,
+"slice_65/end_frame": 0,
+"slice_65/loop_mode": 0,
+"slice_65/name": "",
+"slice_65/save_to_file/enabled": false,
+"slice_65/save_to_file/keep_custom_tracks": false,
+"slice_65/save_to_file/path": "",
+"slice_65/start_frame": 0,
+"slice_66/end_frame": 0,
+"slice_66/loop_mode": 0,
+"slice_66/name": "",
+"slice_66/save_to_file/enabled": false,
+"slice_66/save_to_file/keep_custom_tracks": false,
+"slice_66/save_to_file/path": "",
+"slice_66/start_frame": 0,
+"slice_67/end_frame": 0,
+"slice_67/loop_mode": 0,
+"slice_67/name": "",
+"slice_67/save_to_file/enabled": false,
+"slice_67/save_to_file/keep_custom_tracks": false,
+"slice_67/save_to_file/path": "",
+"slice_67/start_frame": 0,
+"slice_68/end_frame": 0,
+"slice_68/loop_mode": 0,
+"slice_68/name": "",
+"slice_68/save_to_file/enabled": false,
+"slice_68/save_to_file/keep_custom_tracks": false,
+"slice_68/save_to_file/path": "",
+"slice_68/start_frame": 0,
+"slice_69/end_frame": 0,
+"slice_69/loop_mode": 0,
+"slice_69/name": "",
+"slice_69/save_to_file/enabled": false,
+"slice_69/save_to_file/keep_custom_tracks": false,
+"slice_69/save_to_file/path": "",
+"slice_69/start_frame": 0,
+"slice_7/end_frame": 0,
+"slice_7/loop_mode": 0,
+"slice_7/name": "",
+"slice_7/save_to_file/enabled": false,
+"slice_7/save_to_file/keep_custom_tracks": false,
+"slice_7/save_to_file/path": "",
+"slice_7/start_frame": 0,
+"slice_70/end_frame": 0,
+"slice_70/loop_mode": 0,
+"slice_70/name": "",
+"slice_70/save_to_file/enabled": false,
+"slice_70/save_to_file/keep_custom_tracks": false,
+"slice_70/save_to_file/path": "",
+"slice_70/start_frame": 0,
+"slice_71/end_frame": 0,
+"slice_71/loop_mode": 0,
+"slice_71/name": "",
+"slice_71/save_to_file/enabled": false,
+"slice_71/save_to_file/keep_custom_tracks": false,
+"slice_71/save_to_file/path": "",
+"slice_71/start_frame": 0,
+"slice_72/end_frame": 0,
+"slice_72/loop_mode": 0,
+"slice_72/name": "",
+"slice_72/save_to_file/enabled": false,
+"slice_72/save_to_file/keep_custom_tracks": false,
+"slice_72/save_to_file/path": "",
+"slice_72/start_frame": 0,
+"slice_73/end_frame": 0,
+"slice_73/loop_mode": 0,
+"slice_73/name": "",
+"slice_73/save_to_file/enabled": false,
+"slice_73/save_to_file/keep_custom_tracks": false,
+"slice_73/save_to_file/path": "",
+"slice_73/start_frame": 0,
+"slice_74/end_frame": 0,
+"slice_74/loop_mode": 0,
+"slice_74/name": "",
+"slice_74/save_to_file/enabled": false,
+"slice_74/save_to_file/keep_custom_tracks": false,
+"slice_74/save_to_file/path": "",
+"slice_74/start_frame": 0,
+"slice_75/end_frame": 0,
+"slice_75/loop_mode": 0,
+"slice_75/name": "",
+"slice_75/save_to_file/enabled": false,
+"slice_75/save_to_file/keep_custom_tracks": false,
+"slice_75/save_to_file/path": "",
+"slice_75/start_frame": 0,
+"slice_76/end_frame": 0,
+"slice_76/loop_mode": 0,
+"slice_76/name": "",
+"slice_76/save_to_file/enabled": false,
+"slice_76/save_to_file/keep_custom_tracks": false,
+"slice_76/save_to_file/path": "",
+"slice_76/start_frame": 0,
+"slice_77/end_frame": 0,
+"slice_77/loop_mode": 0,
+"slice_77/name": "",
+"slice_77/save_to_file/enabled": false,
+"slice_77/save_to_file/keep_custom_tracks": false,
+"slice_77/save_to_file/path": "",
+"slice_77/start_frame": 0,
+"slice_78/end_frame": 0,
+"slice_78/loop_mode": 0,
+"slice_78/name": "",
+"slice_78/save_to_file/enabled": false,
+"slice_78/save_to_file/keep_custom_tracks": false,
+"slice_78/save_to_file/path": "",
+"slice_78/start_frame": 0,
+"slice_79/end_frame": 0,
+"slice_79/loop_mode": 0,
+"slice_79/name": "",
+"slice_79/save_to_file/enabled": false,
+"slice_79/save_to_file/keep_custom_tracks": false,
+"slice_79/save_to_file/path": "",
+"slice_79/start_frame": 0,
+"slice_8/end_frame": 0,
+"slice_8/loop_mode": 0,
+"slice_8/name": "",
+"slice_8/save_to_file/enabled": false,
+"slice_8/save_to_file/keep_custom_tracks": false,
+"slice_8/save_to_file/path": "",
+"slice_8/start_frame": 0,
+"slice_80/end_frame": 0,
+"slice_80/loop_mode": 0,
+"slice_80/name": "",
+"slice_80/save_to_file/enabled": false,
+"slice_80/save_to_file/keep_custom_tracks": false,
+"slice_80/save_to_file/path": "",
+"slice_80/start_frame": 0,
+"slice_81/end_frame": 0,
+"slice_81/loop_mode": 0,
+"slice_81/name": "",
+"slice_81/save_to_file/enabled": false,
+"slice_81/save_to_file/keep_custom_tracks": false,
+"slice_81/save_to_file/path": "",
+"slice_81/start_frame": 0,
+"slice_82/end_frame": 0,
+"slice_82/loop_mode": 0,
+"slice_82/name": "",
+"slice_82/save_to_file/enabled": false,
+"slice_82/save_to_file/keep_custom_tracks": false,
+"slice_82/save_to_file/path": "",
+"slice_82/start_frame": 0,
+"slice_83/end_frame": 0,
+"slice_83/loop_mode": 0,
+"slice_83/name": "",
+"slice_83/save_to_file/enabled": false,
+"slice_83/save_to_file/keep_custom_tracks": false,
+"slice_83/save_to_file/path": "",
+"slice_83/start_frame": 0,
+"slice_84/end_frame": 0,
+"slice_84/loop_mode": 0,
+"slice_84/name": "",
+"slice_84/save_to_file/enabled": false,
+"slice_84/save_to_file/keep_custom_tracks": false,
+"slice_84/save_to_file/path": "",
+"slice_84/start_frame": 0,
+"slice_85/end_frame": 0,
+"slice_85/loop_mode": 0,
+"slice_85/name": "",
+"slice_85/save_to_file/enabled": false,
+"slice_85/save_to_file/keep_custom_tracks": false,
+"slice_85/save_to_file/path": "",
+"slice_85/start_frame": 0,
+"slice_86/end_frame": 0,
+"slice_86/loop_mode": 0,
+"slice_86/name": "",
+"slice_86/save_to_file/enabled": false,
+"slice_86/save_to_file/keep_custom_tracks": false,
+"slice_86/save_to_file/path": "",
+"slice_86/start_frame": 0,
+"slice_87/end_frame": 0,
+"slice_87/loop_mode": 0,
+"slice_87/name": "",
+"slice_87/save_to_file/enabled": false,
+"slice_87/save_to_file/keep_custom_tracks": false,
+"slice_87/save_to_file/path": "",
+"slice_87/start_frame": 0,
+"slice_88/end_frame": 0,
+"slice_88/loop_mode": 0,
+"slice_88/name": "",
+"slice_88/save_to_file/enabled": false,
+"slice_88/save_to_file/keep_custom_tracks": false,
+"slice_88/save_to_file/path": "",
+"slice_88/start_frame": 0,
+"slice_89/end_frame": 0,
+"slice_89/loop_mode": 0,
+"slice_89/name": "",
+"slice_89/save_to_file/enabled": false,
+"slice_89/save_to_file/keep_custom_tracks": false,
+"slice_89/save_to_file/path": "",
+"slice_89/start_frame": 0,
+"slice_9/end_frame": 0,
+"slice_9/loop_mode": 0,
+"slice_9/name": "",
+"slice_9/save_to_file/enabled": false,
+"slice_9/save_to_file/keep_custom_tracks": false,
+"slice_9/save_to_file/path": "",
+"slice_9/start_frame": 0,
+"slice_90/end_frame": 0,
+"slice_90/loop_mode": 0,
+"slice_90/name": "",
+"slice_90/save_to_file/enabled": false,
+"slice_90/save_to_file/keep_custom_tracks": false,
+"slice_90/save_to_file/path": "",
+"slice_90/start_frame": 0,
+"slice_91/end_frame": 0,
+"slice_91/loop_mode": 0,
+"slice_91/name": "",
+"slice_91/save_to_file/enabled": false,
+"slice_91/save_to_file/keep_custom_tracks": false,
+"slice_91/save_to_file/path": "",
+"slice_91/start_frame": 0,
+"slice_92/end_frame": 0,
+"slice_92/loop_mode": 0,
+"slice_92/name": "",
+"slice_92/save_to_file/enabled": false,
+"slice_92/save_to_file/keep_custom_tracks": false,
+"slice_92/save_to_file/path": "",
+"slice_92/start_frame": 0,
+"slice_93/end_frame": 0,
+"slice_93/loop_mode": 0,
+"slice_93/name": "",
+"slice_93/save_to_file/enabled": false,
+"slice_93/save_to_file/keep_custom_tracks": false,
+"slice_93/save_to_file/path": "",
+"slice_93/start_frame": 0,
+"slice_94/end_frame": 0,
+"slice_94/loop_mode": 0,
+"slice_94/name": "",
+"slice_94/save_to_file/enabled": false,
+"slice_94/save_to_file/keep_custom_tracks": false,
+"slice_94/save_to_file/path": "",
+"slice_94/start_frame": 0,
+"slice_95/end_frame": 0,
+"slice_95/loop_mode": 0,
+"slice_95/name": "",
+"slice_95/save_to_file/enabled": false,
+"slice_95/save_to_file/keep_custom_tracks": false,
+"slice_95/save_to_file/path": "",
+"slice_95/start_frame": 0,
+"slice_96/end_frame": 0,
+"slice_96/loop_mode": 0,
+"slice_96/name": "",
+"slice_96/save_to_file/enabled": false,
+"slice_96/save_to_file/keep_custom_tracks": false,
+"slice_96/save_to_file/path": "",
+"slice_96/start_frame": 0,
+"slice_97/end_frame": 0,
+"slice_97/loop_mode": 0,
+"slice_97/name": "",
+"slice_97/save_to_file/enabled": false,
+"slice_97/save_to_file/keep_custom_tracks": false,
+"slice_97/save_to_file/path": "",
+"slice_97/start_frame": 0,
+"slice_98/end_frame": 0,
+"slice_98/loop_mode": 0,
+"slice_98/name": "",
+"slice_98/save_to_file/enabled": false,
+"slice_98/save_to_file/keep_custom_tracks": false,
+"slice_98/save_to_file/path": "",
+"slice_98/start_frame": 0,
+"slice_99/end_frame": 0,
+"slice_99/loop_mode": 0,
+"slice_99/name": "",
+"slice_99/save_to_file/enabled": false,
+"slice_99/save_to_file/keep_custom_tracks": false,
+"slice_99/save_to_file/path": "",
+"slice_99/start_frame": 0,
+"slices/amount": 0
+},
+"Vert|Move_001": {
+"save_to_file/enabled": true,
+"save_to_file/keep_custom_tracks": "",
+"save_to_file/path": "res://content/enemies/animations/Vert_Move_001.res",
+"settings/loop_mode": 0,
+"slice_1/end_frame": 0,
+"slice_1/loop_mode": 0,
+"slice_1/name": "",
+"slice_1/save_to_file/enabled": false,
+"slice_1/save_to_file/keep_custom_tracks": false,
+"slice_1/save_to_file/path": "",
+"slice_1/start_frame": 0,
+"slice_10/end_frame": 0,
+"slice_10/loop_mode": 0,
+"slice_10/name": "",
+"slice_10/save_to_file/enabled": false,
+"slice_10/save_to_file/keep_custom_tracks": false,
+"slice_10/save_to_file/path": "",
+"slice_10/start_frame": 0,
+"slice_100/end_frame": 0,
+"slice_100/loop_mode": 0,
+"slice_100/name": "",
+"slice_100/save_to_file/enabled": false,
+"slice_100/save_to_file/keep_custom_tracks": false,
+"slice_100/save_to_file/path": "",
+"slice_100/start_frame": 0,
+"slice_101/end_frame": 0,
+"slice_101/loop_mode": 0,
+"slice_101/name": "",
+"slice_101/save_to_file/enabled": false,
+"slice_101/save_to_file/keep_custom_tracks": false,
+"slice_101/save_to_file/path": "",
+"slice_101/start_frame": 0,
+"slice_102/end_frame": 0,
+"slice_102/loop_mode": 0,
+"slice_102/name": "",
+"slice_102/save_to_file/enabled": false,
+"slice_102/save_to_file/keep_custom_tracks": false,
+"slice_102/save_to_file/path": "",
+"slice_102/start_frame": 0,
+"slice_103/end_frame": 0,
+"slice_103/loop_mode": 0,
+"slice_103/name": "",
+"slice_103/save_to_file/enabled": false,
+"slice_103/save_to_file/keep_custom_tracks": false,
+"slice_103/save_to_file/path": "",
+"slice_103/start_frame": 0,
+"slice_104/end_frame": 0,
+"slice_104/loop_mode": 0,
+"slice_104/name": "",
+"slice_104/save_to_file/enabled": false,
+"slice_104/save_to_file/keep_custom_tracks": false,
+"slice_104/save_to_file/path": "",
+"slice_104/start_frame": 0,
+"slice_105/end_frame": 0,
+"slice_105/loop_mode": 0,
+"slice_105/name": "",
+"slice_105/save_to_file/enabled": false,
+"slice_105/save_to_file/keep_custom_tracks": false,
+"slice_105/save_to_file/path": "",
+"slice_105/start_frame": 0,
+"slice_106/end_frame": 0,
+"slice_106/loop_mode": 0,
+"slice_106/name": "",
+"slice_106/save_to_file/enabled": false,
+"slice_106/save_to_file/keep_custom_tracks": false,
+"slice_106/save_to_file/path": "",
+"slice_106/start_frame": 0,
+"slice_107/end_frame": 0,
+"slice_107/loop_mode": 0,
+"slice_107/name": "",
+"slice_107/save_to_file/enabled": false,
+"slice_107/save_to_file/keep_custom_tracks": false,
+"slice_107/save_to_file/path": "",
+"slice_107/start_frame": 0,
+"slice_108/end_frame": 0,
+"slice_108/loop_mode": 0,
+"slice_108/name": "",
+"slice_108/save_to_file/enabled": false,
+"slice_108/save_to_file/keep_custom_tracks": false,
+"slice_108/save_to_file/path": "",
+"slice_108/start_frame": 0,
+"slice_109/end_frame": 0,
+"slice_109/loop_mode": 0,
+"slice_109/name": "",
+"slice_109/save_to_file/enabled": false,
+"slice_109/save_to_file/keep_custom_tracks": false,
+"slice_109/save_to_file/path": "",
+"slice_109/start_frame": 0,
+"slice_11/end_frame": 0,
+"slice_11/loop_mode": 0,
+"slice_11/name": "",
+"slice_11/save_to_file/enabled": false,
+"slice_11/save_to_file/keep_custom_tracks": false,
+"slice_11/save_to_file/path": "",
+"slice_11/start_frame": 0,
+"slice_110/end_frame": 0,
+"slice_110/loop_mode": 0,
+"slice_110/name": "",
+"slice_110/save_to_file/enabled": false,
+"slice_110/save_to_file/keep_custom_tracks": false,
+"slice_110/save_to_file/path": "",
+"slice_110/start_frame": 0,
+"slice_111/end_frame": 0,
+"slice_111/loop_mode": 0,
+"slice_111/name": "",
+"slice_111/save_to_file/enabled": false,
+"slice_111/save_to_file/keep_custom_tracks": false,
+"slice_111/save_to_file/path": "",
+"slice_111/start_frame": 0,
+"slice_112/end_frame": 0,
+"slice_112/loop_mode": 0,
+"slice_112/name": "",
+"slice_112/save_to_file/enabled": false,
+"slice_112/save_to_file/keep_custom_tracks": false,
+"slice_112/save_to_file/path": "",
+"slice_112/start_frame": 0,
+"slice_113/end_frame": 0,
+"slice_113/loop_mode": 0,
+"slice_113/name": "",
+"slice_113/save_to_file/enabled": false,
+"slice_113/save_to_file/keep_custom_tracks": false,
+"slice_113/save_to_file/path": "",
+"slice_113/start_frame": 0,
+"slice_114/end_frame": 0,
+"slice_114/loop_mode": 0,
+"slice_114/name": "",
+"slice_114/save_to_file/enabled": false,
+"slice_114/save_to_file/keep_custom_tracks": false,
+"slice_114/save_to_file/path": "",
+"slice_114/start_frame": 0,
+"slice_115/end_frame": 0,
+"slice_115/loop_mode": 0,
+"slice_115/name": "",
+"slice_115/save_to_file/enabled": false,
+"slice_115/save_to_file/keep_custom_tracks": false,
+"slice_115/save_to_file/path": "",
+"slice_115/start_frame": 0,
+"slice_116/end_frame": 0,
+"slice_116/loop_mode": 0,
+"slice_116/name": "",
+"slice_116/save_to_file/enabled": false,
+"slice_116/save_to_file/keep_custom_tracks": false,
+"slice_116/save_to_file/path": "",
+"slice_116/start_frame": 0,
+"slice_117/end_frame": 0,
+"slice_117/loop_mode": 0,
+"slice_117/name": "",
+"slice_117/save_to_file/enabled": false,
+"slice_117/save_to_file/keep_custom_tracks": false,
+"slice_117/save_to_file/path": "",
+"slice_117/start_frame": 0,
+"slice_118/end_frame": 0,
+"slice_118/loop_mode": 0,
+"slice_118/name": "",
+"slice_118/save_to_file/enabled": false,
+"slice_118/save_to_file/keep_custom_tracks": false,
+"slice_118/save_to_file/path": "",
+"slice_118/start_frame": 0,
+"slice_119/end_frame": 0,
+"slice_119/loop_mode": 0,
+"slice_119/name": "",
+"slice_119/save_to_file/enabled": false,
+"slice_119/save_to_file/keep_custom_tracks": false,
+"slice_119/save_to_file/path": "",
+"slice_119/start_frame": 0,
+"slice_12/end_frame": 0,
+"slice_12/loop_mode": 0,
+"slice_12/name": "",
+"slice_12/save_to_file/enabled": false,
+"slice_12/save_to_file/keep_custom_tracks": false,
+"slice_12/save_to_file/path": "",
+"slice_12/start_frame": 0,
+"slice_120/end_frame": 0,
+"slice_120/loop_mode": 0,
+"slice_120/name": "",
+"slice_120/save_to_file/enabled": false,
+"slice_120/save_to_file/keep_custom_tracks": false,
+"slice_120/save_to_file/path": "",
+"slice_120/start_frame": 0,
+"slice_121/end_frame": 0,
+"slice_121/loop_mode": 0,
+"slice_121/name": "",
+"slice_121/save_to_file/enabled": false,
+"slice_121/save_to_file/keep_custom_tracks": false,
+"slice_121/save_to_file/path": "",
+"slice_121/start_frame": 0,
+"slice_122/end_frame": 0,
+"slice_122/loop_mode": 0,
+"slice_122/name": "",
+"slice_122/save_to_file/enabled": false,
+"slice_122/save_to_file/keep_custom_tracks": false,
+"slice_122/save_to_file/path": "",
+"slice_122/start_frame": 0,
+"slice_123/end_frame": 0,
+"slice_123/loop_mode": 0,
+"slice_123/name": "",
+"slice_123/save_to_file/enabled": false,
+"slice_123/save_to_file/keep_custom_tracks": false,
+"slice_123/save_to_file/path": "",
+"slice_123/start_frame": 0,
+"slice_124/end_frame": 0,
+"slice_124/loop_mode": 0,
+"slice_124/name": "",
+"slice_124/save_to_file/enabled": false,
+"slice_124/save_to_file/keep_custom_tracks": false,
+"slice_124/save_to_file/path": "",
+"slice_124/start_frame": 0,
+"slice_125/end_frame": 0,
+"slice_125/loop_mode": 0,
+"slice_125/name": "",
+"slice_125/save_to_file/enabled": false,
+"slice_125/save_to_file/keep_custom_tracks": false,
+"slice_125/save_to_file/path": "",
+"slice_125/start_frame": 0,
+"slice_126/end_frame": 0,
+"slice_126/loop_mode": 0,
+"slice_126/name": "",
+"slice_126/save_to_file/enabled": false,
+"slice_126/save_to_file/keep_custom_tracks": false,
+"slice_126/save_to_file/path": "",
+"slice_126/start_frame": 0,
+"slice_127/end_frame": 0,
+"slice_127/loop_mode": 0,
+"slice_127/name": "",
+"slice_127/save_to_file/enabled": false,
+"slice_127/save_to_file/keep_custom_tracks": false,
+"slice_127/save_to_file/path": "",
+"slice_127/start_frame": 0,
+"slice_128/end_frame": 0,
+"slice_128/loop_mode": 0,
+"slice_128/name": "",
+"slice_128/save_to_file/enabled": false,
+"slice_128/save_to_file/keep_custom_tracks": false,
+"slice_128/save_to_file/path": "",
+"slice_128/start_frame": 0,
+"slice_129/end_frame": 0,
+"slice_129/loop_mode": 0,
+"slice_129/name": "",
+"slice_129/save_to_file/enabled": false,
+"slice_129/save_to_file/keep_custom_tracks": false,
+"slice_129/save_to_file/path": "",
+"slice_129/start_frame": 0,
+"slice_13/end_frame": 0,
+"slice_13/loop_mode": 0,
+"slice_13/name": "",
+"slice_13/save_to_file/enabled": false,
+"slice_13/save_to_file/keep_custom_tracks": false,
+"slice_13/save_to_file/path": "",
+"slice_13/start_frame": 0,
+"slice_130/end_frame": 0,
+"slice_130/loop_mode": 0,
+"slice_130/name": "",
+"slice_130/save_to_file/enabled": false,
+"slice_130/save_to_file/keep_custom_tracks": false,
+"slice_130/save_to_file/path": "",
+"slice_130/start_frame": 0,
+"slice_131/end_frame": 0,
+"slice_131/loop_mode": 0,
+"slice_131/name": "",
+"slice_131/save_to_file/enabled": false,
+"slice_131/save_to_file/keep_custom_tracks": false,
+"slice_131/save_to_file/path": "",
+"slice_131/start_frame": 0,
+"slice_132/end_frame": 0,
+"slice_132/loop_mode": 0,
+"slice_132/name": "",
+"slice_132/save_to_file/enabled": false,
+"slice_132/save_to_file/keep_custom_tracks": false,
+"slice_132/save_to_file/path": "",
+"slice_132/start_frame": 0,
+"slice_133/end_frame": 0,
+"slice_133/loop_mode": 0,
+"slice_133/name": "",
+"slice_133/save_to_file/enabled": false,
+"slice_133/save_to_file/keep_custom_tracks": false,
+"slice_133/save_to_file/path": "",
+"slice_133/start_frame": 0,
+"slice_134/end_frame": 0,
+"slice_134/loop_mode": 0,
+"slice_134/name": "",
+"slice_134/save_to_file/enabled": false,
+"slice_134/save_to_file/keep_custom_tracks": false,
+"slice_134/save_to_file/path": "",
+"slice_134/start_frame": 0,
+"slice_135/end_frame": 0,
+"slice_135/loop_mode": 0,
+"slice_135/name": "",
+"slice_135/save_to_file/enabled": false,
+"slice_135/save_to_file/keep_custom_tracks": false,
+"slice_135/save_to_file/path": "",
+"slice_135/start_frame": 0,
+"slice_136/end_frame": 0,
+"slice_136/loop_mode": 0,
+"slice_136/name": "",
+"slice_136/save_to_file/enabled": false,
+"slice_136/save_to_file/keep_custom_tracks": false,
+"slice_136/save_to_file/path": "",
+"slice_136/start_frame": 0,
+"slice_137/end_frame": 0,
+"slice_137/loop_mode": 0,
+"slice_137/name": "",
+"slice_137/save_to_file/enabled": false,
+"slice_137/save_to_file/keep_custom_tracks": false,
+"slice_137/save_to_file/path": "",
+"slice_137/start_frame": 0,
+"slice_138/end_frame": 0,
+"slice_138/loop_mode": 0,
+"slice_138/name": "",
+"slice_138/save_to_file/enabled": false,
+"slice_138/save_to_file/keep_custom_tracks": false,
+"slice_138/save_to_file/path": "",
+"slice_138/start_frame": 0,
+"slice_139/end_frame": 0,
+"slice_139/loop_mode": 0,
+"slice_139/name": "",
+"slice_139/save_to_file/enabled": false,
+"slice_139/save_to_file/keep_custom_tracks": false,
+"slice_139/save_to_file/path": "",
+"slice_139/start_frame": 0,
+"slice_14/end_frame": 0,
+"slice_14/loop_mode": 0,
+"slice_14/name": "",
+"slice_14/save_to_file/enabled": false,
+"slice_14/save_to_file/keep_custom_tracks": false,
+"slice_14/save_to_file/path": "",
+"slice_14/start_frame": 0,
+"slice_140/end_frame": 0,
+"slice_140/loop_mode": 0,
+"slice_140/name": "",
+"slice_140/save_to_file/enabled": false,
+"slice_140/save_to_file/keep_custom_tracks": false,
+"slice_140/save_to_file/path": "",
+"slice_140/start_frame": 0,
+"slice_141/end_frame": 0,
+"slice_141/loop_mode": 0,
+"slice_141/name": "",
+"slice_141/save_to_file/enabled": false,
+"slice_141/save_to_file/keep_custom_tracks": false,
+"slice_141/save_to_file/path": "",
+"slice_141/start_frame": 0,
+"slice_142/end_frame": 0,
+"slice_142/loop_mode": 0,
+"slice_142/name": "",
+"slice_142/save_to_file/enabled": false,
+"slice_142/save_to_file/keep_custom_tracks": false,
+"slice_142/save_to_file/path": "",
+"slice_142/start_frame": 0,
+"slice_143/end_frame": 0,
+"slice_143/loop_mode": 0,
+"slice_143/name": "",
+"slice_143/save_to_file/enabled": false,
+"slice_143/save_to_file/keep_custom_tracks": false,
+"slice_143/save_to_file/path": "",
+"slice_143/start_frame": 0,
+"slice_144/end_frame": 0,
+"slice_144/loop_mode": 0,
+"slice_144/name": "",
+"slice_144/save_to_file/enabled": false,
+"slice_144/save_to_file/keep_custom_tracks": false,
+"slice_144/save_to_file/path": "",
+"slice_144/start_frame": 0,
+"slice_145/end_frame": 0,
+"slice_145/loop_mode": 0,
+"slice_145/name": "",
+"slice_145/save_to_file/enabled": false,
+"slice_145/save_to_file/keep_custom_tracks": false,
+"slice_145/save_to_file/path": "",
+"slice_145/start_frame": 0,
+"slice_146/end_frame": 0,
+"slice_146/loop_mode": 0,
+"slice_146/name": "",
+"slice_146/save_to_file/enabled": false,
+"slice_146/save_to_file/keep_custom_tracks": false,
+"slice_146/save_to_file/path": "",
+"slice_146/start_frame": 0,
+"slice_147/end_frame": 0,
+"slice_147/loop_mode": 0,
+"slice_147/name": "",
+"slice_147/save_to_file/enabled": false,
+"slice_147/save_to_file/keep_custom_tracks": false,
+"slice_147/save_to_file/path": "",
+"slice_147/start_frame": 0,
+"slice_148/end_frame": 0,
+"slice_148/loop_mode": 0,
+"slice_148/name": "",
+"slice_148/save_to_file/enabled": false,
+"slice_148/save_to_file/keep_custom_tracks": false,
+"slice_148/save_to_file/path": "",
+"slice_148/start_frame": 0,
+"slice_149/end_frame": 0,
+"slice_149/loop_mode": 0,
+"slice_149/name": "",
+"slice_149/save_to_file/enabled": false,
+"slice_149/save_to_file/keep_custom_tracks": false,
+"slice_149/save_to_file/path": "",
+"slice_149/start_frame": 0,
+"slice_15/end_frame": 0,
+"slice_15/loop_mode": 0,
+"slice_15/name": "",
+"slice_15/save_to_file/enabled": false,
+"slice_15/save_to_file/keep_custom_tracks": false,
+"slice_15/save_to_file/path": "",
+"slice_15/start_frame": 0,
+"slice_150/end_frame": 0,
+"slice_150/loop_mode": 0,
+"slice_150/name": "",
+"slice_150/save_to_file/enabled": false,
+"slice_150/save_to_file/keep_custom_tracks": false,
+"slice_150/save_to_file/path": "",
+"slice_150/start_frame": 0,
+"slice_151/end_frame": 0,
+"slice_151/loop_mode": 0,
+"slice_151/name": "",
+"slice_151/save_to_file/enabled": false,
+"slice_151/save_to_file/keep_custom_tracks": false,
+"slice_151/save_to_file/path": "",
+"slice_151/start_frame": 0,
+"slice_152/end_frame": 0,
+"slice_152/loop_mode": 0,
+"slice_152/name": "",
+"slice_152/save_to_file/enabled": false,
+"slice_152/save_to_file/keep_custom_tracks": false,
+"slice_152/save_to_file/path": "",
+"slice_152/start_frame": 0,
+"slice_153/end_frame": 0,
+"slice_153/loop_mode": 0,
+"slice_153/name": "",
+"slice_153/save_to_file/enabled": false,
+"slice_153/save_to_file/keep_custom_tracks": false,
+"slice_153/save_to_file/path": "",
+"slice_153/start_frame": 0,
+"slice_154/end_frame": 0,
+"slice_154/loop_mode": 0,
+"slice_154/name": "",
+"slice_154/save_to_file/enabled": false,
+"slice_154/save_to_file/keep_custom_tracks": false,
+"slice_154/save_to_file/path": "",
+"slice_154/start_frame": 0,
+"slice_155/end_frame": 0,
+"slice_155/loop_mode": 0,
+"slice_155/name": "",
+"slice_155/save_to_file/enabled": false,
+"slice_155/save_to_file/keep_custom_tracks": false,
+"slice_155/save_to_file/path": "",
+"slice_155/start_frame": 0,
+"slice_156/end_frame": 0,
+"slice_156/loop_mode": 0,
+"slice_156/name": "",
+"slice_156/save_to_file/enabled": false,
+"slice_156/save_to_file/keep_custom_tracks": false,
+"slice_156/save_to_file/path": "",
+"slice_156/start_frame": 0,
+"slice_157/end_frame": 0,
+"slice_157/loop_mode": 0,
+"slice_157/name": "",
+"slice_157/save_to_file/enabled": false,
+"slice_157/save_to_file/keep_custom_tracks": false,
+"slice_157/save_to_file/path": "",
+"slice_157/start_frame": 0,
+"slice_158/end_frame": 0,
+"slice_158/loop_mode": 0,
+"slice_158/name": "",
+"slice_158/save_to_file/enabled": false,
+"slice_158/save_to_file/keep_custom_tracks": false,
+"slice_158/save_to_file/path": "",
+"slice_158/start_frame": 0,
+"slice_159/end_frame": 0,
+"slice_159/loop_mode": 0,
+"slice_159/name": "",
+"slice_159/save_to_file/enabled": false,
+"slice_159/save_to_file/keep_custom_tracks": false,
+"slice_159/save_to_file/path": "",
+"slice_159/start_frame": 0,
+"slice_16/end_frame": 0,
+"slice_16/loop_mode": 0,
+"slice_16/name": "",
+"slice_16/save_to_file/enabled": false,
+"slice_16/save_to_file/keep_custom_tracks": false,
+"slice_16/save_to_file/path": "",
+"slice_16/start_frame": 0,
+"slice_160/end_frame": 0,
+"slice_160/loop_mode": 0,
+"slice_160/name": "",
+"slice_160/save_to_file/enabled": false,
+"slice_160/save_to_file/keep_custom_tracks": false,
+"slice_160/save_to_file/path": "",
+"slice_160/start_frame": 0,
+"slice_161/end_frame": 0,
+"slice_161/loop_mode": 0,
+"slice_161/name": "",
+"slice_161/save_to_file/enabled": false,
+"slice_161/save_to_file/keep_custom_tracks": false,
+"slice_161/save_to_file/path": "",
+"slice_161/start_frame": 0,
+"slice_162/end_frame": 0,
+"slice_162/loop_mode": 0,
+"slice_162/name": "",
+"slice_162/save_to_file/enabled": false,
+"slice_162/save_to_file/keep_custom_tracks": false,
+"slice_162/save_to_file/path": "",
+"slice_162/start_frame": 0,
+"slice_163/end_frame": 0,
+"slice_163/loop_mode": 0,
+"slice_163/name": "",
+"slice_163/save_to_file/enabled": false,
+"slice_163/save_to_file/keep_custom_tracks": false,
+"slice_163/save_to_file/path": "",
+"slice_163/start_frame": 0,
+"slice_164/end_frame": 0,
+"slice_164/loop_mode": 0,
+"slice_164/name": "",
+"slice_164/save_to_file/enabled": false,
+"slice_164/save_to_file/keep_custom_tracks": false,
+"slice_164/save_to_file/path": "",
+"slice_164/start_frame": 0,
+"slice_165/end_frame": 0,
+"slice_165/loop_mode": 0,
+"slice_165/name": "",
+"slice_165/save_to_file/enabled": false,
+"slice_165/save_to_file/keep_custom_tracks": false,
+"slice_165/save_to_file/path": "",
+"slice_165/start_frame": 0,
+"slice_166/end_frame": 0,
+"slice_166/loop_mode": 0,
+"slice_166/name": "",
+"slice_166/save_to_file/enabled": false,
+"slice_166/save_to_file/keep_custom_tracks": false,
+"slice_166/save_to_file/path": "",
+"slice_166/start_frame": 0,
+"slice_167/end_frame": 0,
+"slice_167/loop_mode": 0,
+"slice_167/name": "",
+"slice_167/save_to_file/enabled": false,
+"slice_167/save_to_file/keep_custom_tracks": false,
+"slice_167/save_to_file/path": "",
+"slice_167/start_frame": 0,
+"slice_168/end_frame": 0,
+"slice_168/loop_mode": 0,
+"slice_168/name": "",
+"slice_168/save_to_file/enabled": false,
+"slice_168/save_to_file/keep_custom_tracks": false,
+"slice_168/save_to_file/path": "",
+"slice_168/start_frame": 0,
+"slice_169/end_frame": 0,
+"slice_169/loop_mode": 0,
+"slice_169/name": "",
+"slice_169/save_to_file/enabled": false,
+"slice_169/save_to_file/keep_custom_tracks": false,
+"slice_169/save_to_file/path": "",
+"slice_169/start_frame": 0,
+"slice_17/end_frame": 0,
+"slice_17/loop_mode": 0,
+"slice_17/name": "",
+"slice_17/save_to_file/enabled": false,
+"slice_17/save_to_file/keep_custom_tracks": false,
+"slice_17/save_to_file/path": "",
+"slice_17/start_frame": 0,
+"slice_170/end_frame": 0,
+"slice_170/loop_mode": 0,
+"slice_170/name": "",
+"slice_170/save_to_file/enabled": false,
+"slice_170/save_to_file/keep_custom_tracks": false,
+"slice_170/save_to_file/path": "",
+"slice_170/start_frame": 0,
+"slice_171/end_frame": 0,
+"slice_171/loop_mode": 0,
+"slice_171/name": "",
+"slice_171/save_to_file/enabled": false,
+"slice_171/save_to_file/keep_custom_tracks": false,
+"slice_171/save_to_file/path": "",
+"slice_171/start_frame": 0,
+"slice_172/end_frame": 0,
+"slice_172/loop_mode": 0,
+"slice_172/name": "",
+"slice_172/save_to_file/enabled": false,
+"slice_172/save_to_file/keep_custom_tracks": false,
+"slice_172/save_to_file/path": "",
+"slice_172/start_frame": 0,
+"slice_173/end_frame": 0,
+"slice_173/loop_mode": 0,
+"slice_173/name": "",
+"slice_173/save_to_file/enabled": false,
+"slice_173/save_to_file/keep_custom_tracks": false,
+"slice_173/save_to_file/path": "",
+"slice_173/start_frame": 0,
+"slice_174/end_frame": 0,
+"slice_174/loop_mode": 0,
+"slice_174/name": "",
+"slice_174/save_to_file/enabled": false,
+"slice_174/save_to_file/keep_custom_tracks": false,
+"slice_174/save_to_file/path": "",
+"slice_174/start_frame": 0,
+"slice_175/end_frame": 0,
+"slice_175/loop_mode": 0,
+"slice_175/name": "",
+"slice_175/save_to_file/enabled": false,
+"slice_175/save_to_file/keep_custom_tracks": false,
+"slice_175/save_to_file/path": "",
+"slice_175/start_frame": 0,
+"slice_176/end_frame": 0,
+"slice_176/loop_mode": 0,
+"slice_176/name": "",
+"slice_176/save_to_file/enabled": false,
+"slice_176/save_to_file/keep_custom_tracks": false,
+"slice_176/save_to_file/path": "",
+"slice_176/start_frame": 0,
+"slice_177/end_frame": 0,
+"slice_177/loop_mode": 0,
+"slice_177/name": "",
+"slice_177/save_to_file/enabled": false,
+"slice_177/save_to_file/keep_custom_tracks": false,
+"slice_177/save_to_file/path": "",
+"slice_177/start_frame": 0,
+"slice_178/end_frame": 0,
+"slice_178/loop_mode": 0,
+"slice_178/name": "",
+"slice_178/save_to_file/enabled": false,
+"slice_178/save_to_file/keep_custom_tracks": false,
+"slice_178/save_to_file/path": "",
+"slice_178/start_frame": 0,
+"slice_179/end_frame": 0,
+"slice_179/loop_mode": 0,
+"slice_179/name": "",
+"slice_179/save_to_file/enabled": false,
+"slice_179/save_to_file/keep_custom_tracks": false,
+"slice_179/save_to_file/path": "",
+"slice_179/start_frame": 0,
+"slice_18/end_frame": 0,
+"slice_18/loop_mode": 0,
+"slice_18/name": "",
+"slice_18/save_to_file/enabled": false,
+"slice_18/save_to_file/keep_custom_tracks": false,
+"slice_18/save_to_file/path": "",
+"slice_18/start_frame": 0,
+"slice_180/end_frame": 0,
+"slice_180/loop_mode": 0,
+"slice_180/name": "",
+"slice_180/save_to_file/enabled": false,
+"slice_180/save_to_file/keep_custom_tracks": false,
+"slice_180/save_to_file/path": "",
+"slice_180/start_frame": 0,
+"slice_181/end_frame": 0,
+"slice_181/loop_mode": 0,
+"slice_181/name": "",
+"slice_181/save_to_file/enabled": false,
+"slice_181/save_to_file/keep_custom_tracks": false,
+"slice_181/save_to_file/path": "",
+"slice_181/start_frame": 0,
+"slice_182/end_frame": 0,
+"slice_182/loop_mode": 0,
+"slice_182/name": "",
+"slice_182/save_to_file/enabled": false,
+"slice_182/save_to_file/keep_custom_tracks": false,
+"slice_182/save_to_file/path": "",
+"slice_182/start_frame": 0,
+"slice_183/end_frame": 0,
+"slice_183/loop_mode": 0,
+"slice_183/name": "",
+"slice_183/save_to_file/enabled": false,
+"slice_183/save_to_file/keep_custom_tracks": false,
+"slice_183/save_to_file/path": "",
+"slice_183/start_frame": 0,
+"slice_184/end_frame": 0,
+"slice_184/loop_mode": 0,
+"slice_184/name": "",
+"slice_184/save_to_file/enabled": false,
+"slice_184/save_to_file/keep_custom_tracks": false,
+"slice_184/save_to_file/path": "",
+"slice_184/start_frame": 0,
+"slice_185/end_frame": 0,
+"slice_185/loop_mode": 0,
+"slice_185/name": "",
+"slice_185/save_to_file/enabled": false,
+"slice_185/save_to_file/keep_custom_tracks": false,
+"slice_185/save_to_file/path": "",
+"slice_185/start_frame": 0,
+"slice_186/end_frame": 0,
+"slice_186/loop_mode": 0,
+"slice_186/name": "",
+"slice_186/save_to_file/enabled": false,
+"slice_186/save_to_file/keep_custom_tracks": false,
+"slice_186/save_to_file/path": "",
+"slice_186/start_frame": 0,
+"slice_187/end_frame": 0,
+"slice_187/loop_mode": 0,
+"slice_187/name": "",
+"slice_187/save_to_file/enabled": false,
+"slice_187/save_to_file/keep_custom_tracks": false,
+"slice_187/save_to_file/path": "",
+"slice_187/start_frame": 0,
+"slice_188/end_frame": 0,
+"slice_188/loop_mode": 0,
+"slice_188/name": "",
+"slice_188/save_to_file/enabled": false,
+"slice_188/save_to_file/keep_custom_tracks": false,
+"slice_188/save_to_file/path": "",
+"slice_188/start_frame": 0,
+"slice_189/end_frame": 0,
+"slice_189/loop_mode": 0,
+"slice_189/name": "",
+"slice_189/save_to_file/enabled": false,
+"slice_189/save_to_file/keep_custom_tracks": false,
+"slice_189/save_to_file/path": "",
+"slice_189/start_frame": 0,
+"slice_19/end_frame": 0,
+"slice_19/loop_mode": 0,
+"slice_19/name": "",
+"slice_19/save_to_file/enabled": false,
+"slice_19/save_to_file/keep_custom_tracks": false,
+"slice_19/save_to_file/path": "",
+"slice_19/start_frame": 0,
+"slice_190/end_frame": 0,
+"slice_190/loop_mode": 0,
+"slice_190/name": "",
+"slice_190/save_to_file/enabled": false,
+"slice_190/save_to_file/keep_custom_tracks": false,
+"slice_190/save_to_file/path": "",
+"slice_190/start_frame": 0,
+"slice_191/end_frame": 0,
+"slice_191/loop_mode": 0,
+"slice_191/name": "",
+"slice_191/save_to_file/enabled": false,
+"slice_191/save_to_file/keep_custom_tracks": false,
+"slice_191/save_to_file/path": "",
+"slice_191/start_frame": 0,
+"slice_192/end_frame": 0,
+"slice_192/loop_mode": 0,
+"slice_192/name": "",
+"slice_192/save_to_file/enabled": false,
+"slice_192/save_to_file/keep_custom_tracks": false,
+"slice_192/save_to_file/path": "",
+"slice_192/start_frame": 0,
+"slice_193/end_frame": 0,
+"slice_193/loop_mode": 0,
+"slice_193/name": "",
+"slice_193/save_to_file/enabled": false,
+"slice_193/save_to_file/keep_custom_tracks": false,
+"slice_193/save_to_file/path": "",
+"slice_193/start_frame": 0,
+"slice_194/end_frame": 0,
+"slice_194/loop_mode": 0,
+"slice_194/name": "",
+"slice_194/save_to_file/enabled": false,
+"slice_194/save_to_file/keep_custom_tracks": false,
+"slice_194/save_to_file/path": "",
+"slice_194/start_frame": 0,
+"slice_195/end_frame": 0,
+"slice_195/loop_mode": 0,
+"slice_195/name": "",
+"slice_195/save_to_file/enabled": false,
+"slice_195/save_to_file/keep_custom_tracks": false,
+"slice_195/save_to_file/path": "",
+"slice_195/start_frame": 0,
+"slice_196/end_frame": 0,
+"slice_196/loop_mode": 0,
+"slice_196/name": "",
+"slice_196/save_to_file/enabled": false,
+"slice_196/save_to_file/keep_custom_tracks": false,
+"slice_196/save_to_file/path": "",
+"slice_196/start_frame": 0,
+"slice_197/end_frame": 0,
+"slice_197/loop_mode": 0,
+"slice_197/name": "",
+"slice_197/save_to_file/enabled": false,
+"slice_197/save_to_file/keep_custom_tracks": false,
+"slice_197/save_to_file/path": "",
+"slice_197/start_frame": 0,
+"slice_198/end_frame": 0,
+"slice_198/loop_mode": 0,
+"slice_198/name": "",
+"slice_198/save_to_file/enabled": false,
+"slice_198/save_to_file/keep_custom_tracks": false,
+"slice_198/save_to_file/path": "",
+"slice_198/start_frame": 0,
+"slice_199/end_frame": 0,
+"slice_199/loop_mode": 0,
+"slice_199/name": "",
+"slice_199/save_to_file/enabled": false,
+"slice_199/save_to_file/keep_custom_tracks": false,
+"slice_199/save_to_file/path": "",
+"slice_199/start_frame": 0,
+"slice_2/end_frame": 0,
+"slice_2/loop_mode": 0,
+"slice_2/name": "",
+"slice_2/save_to_file/enabled": false,
+"slice_2/save_to_file/keep_custom_tracks": false,
+"slice_2/save_to_file/path": "",
+"slice_2/start_frame": 0,
+"slice_20/end_frame": 0,
+"slice_20/loop_mode": 0,
+"slice_20/name": "",
+"slice_20/save_to_file/enabled": false,
+"slice_20/save_to_file/keep_custom_tracks": false,
+"slice_20/save_to_file/path": "",
+"slice_20/start_frame": 0,
+"slice_200/end_frame": 0,
+"slice_200/loop_mode": 0,
+"slice_200/name": "",
+"slice_200/save_to_file/enabled": false,
+"slice_200/save_to_file/keep_custom_tracks": false,
+"slice_200/save_to_file/path": "",
+"slice_200/start_frame": 0,
+"slice_201/end_frame": 0,
+"slice_201/loop_mode": 0,
+"slice_201/name": "",
+"slice_201/save_to_file/enabled": false,
+"slice_201/save_to_file/keep_custom_tracks": false,
+"slice_201/save_to_file/path": "",
+"slice_201/start_frame": 0,
+"slice_202/end_frame": 0,
+"slice_202/loop_mode": 0,
+"slice_202/name": "",
+"slice_202/save_to_file/enabled": false,
+"slice_202/save_to_file/keep_custom_tracks": false,
+"slice_202/save_to_file/path": "",
+"slice_202/start_frame": 0,
+"slice_203/end_frame": 0,
+"slice_203/loop_mode": 0,
+"slice_203/name": "",
+"slice_203/save_to_file/enabled": false,
+"slice_203/save_to_file/keep_custom_tracks": false,
+"slice_203/save_to_file/path": "",
+"slice_203/start_frame": 0,
+"slice_204/end_frame": 0,
+"slice_204/loop_mode": 0,
+"slice_204/name": "",
+"slice_204/save_to_file/enabled": false,
+"slice_204/save_to_file/keep_custom_tracks": false,
+"slice_204/save_to_file/path": "",
+"slice_204/start_frame": 0,
+"slice_205/end_frame": 0,
+"slice_205/loop_mode": 0,
+"slice_205/name": "",
+"slice_205/save_to_file/enabled": false,
+"slice_205/save_to_file/keep_custom_tracks": false,
+"slice_205/save_to_file/path": "",
+"slice_205/start_frame": 0,
+"slice_206/end_frame": 0,
+"slice_206/loop_mode": 0,
+"slice_206/name": "",
+"slice_206/save_to_file/enabled": false,
+"slice_206/save_to_file/keep_custom_tracks": false,
+"slice_206/save_to_file/path": "",
+"slice_206/start_frame": 0,
+"slice_207/end_frame": 0,
+"slice_207/loop_mode": 0,
+"slice_207/name": "",
+"slice_207/save_to_file/enabled": false,
+"slice_207/save_to_file/keep_custom_tracks": false,
+"slice_207/save_to_file/path": "",
+"slice_207/start_frame": 0,
+"slice_208/end_frame": 0,
+"slice_208/loop_mode": 0,
+"slice_208/name": "",
+"slice_208/save_to_file/enabled": false,
+"slice_208/save_to_file/keep_custom_tracks": false,
+"slice_208/save_to_file/path": "",
+"slice_208/start_frame": 0,
+"slice_209/end_frame": 0,
+"slice_209/loop_mode": 0,
+"slice_209/name": "",
+"slice_209/save_to_file/enabled": false,
+"slice_209/save_to_file/keep_custom_tracks": false,
+"slice_209/save_to_file/path": "",
+"slice_209/start_frame": 0,
+"slice_21/end_frame": 0,
+"slice_21/loop_mode": 0,
+"slice_21/name": "",
+"slice_21/save_to_file/enabled": false,
+"slice_21/save_to_file/keep_custom_tracks": false,
+"slice_21/save_to_file/path": "",
+"slice_21/start_frame": 0,
+"slice_210/end_frame": 0,
+"slice_210/loop_mode": 0,
+"slice_210/name": "",
+"slice_210/save_to_file/enabled": false,
+"slice_210/save_to_file/keep_custom_tracks": false,
+"slice_210/save_to_file/path": "",
+"slice_210/start_frame": 0,
+"slice_211/end_frame": 0,
+"slice_211/loop_mode": 0,
+"slice_211/name": "",
+"slice_211/save_to_file/enabled": false,
+"slice_211/save_to_file/keep_custom_tracks": false,
+"slice_211/save_to_file/path": "",
+"slice_211/start_frame": 0,
+"slice_212/end_frame": 0,
+"slice_212/loop_mode": 0,
+"slice_212/name": "",
+"slice_212/save_to_file/enabled": false,
+"slice_212/save_to_file/keep_custom_tracks": false,
+"slice_212/save_to_file/path": "",
+"slice_212/start_frame": 0,
+"slice_213/end_frame": 0,
+"slice_213/loop_mode": 0,
+"slice_213/name": "",
+"slice_213/save_to_file/enabled": false,
+"slice_213/save_to_file/keep_custom_tracks": false,
+"slice_213/save_to_file/path": "",
+"slice_213/start_frame": 0,
+"slice_214/end_frame": 0,
+"slice_214/loop_mode": 0,
+"slice_214/name": "",
+"slice_214/save_to_file/enabled": false,
+"slice_214/save_to_file/keep_custom_tracks": false,
+"slice_214/save_to_file/path": "",
+"slice_214/start_frame": 0,
+"slice_215/end_frame": 0,
+"slice_215/loop_mode": 0,
+"slice_215/name": "",
+"slice_215/save_to_file/enabled": false,
+"slice_215/save_to_file/keep_custom_tracks": false,
+"slice_215/save_to_file/path": "",
+"slice_215/start_frame": 0,
+"slice_216/end_frame": 0,
+"slice_216/loop_mode": 0,
+"slice_216/name": "",
+"slice_216/save_to_file/enabled": false,
+"slice_216/save_to_file/keep_custom_tracks": false,
+"slice_216/save_to_file/path": "",
+"slice_216/start_frame": 0,
+"slice_217/end_frame": 0,
+"slice_217/loop_mode": 0,
+"slice_217/name": "",
+"slice_217/save_to_file/enabled": false,
+"slice_217/save_to_file/keep_custom_tracks": false,
+"slice_217/save_to_file/path": "",
+"slice_217/start_frame": 0,
+"slice_218/end_frame": 0,
+"slice_218/loop_mode": 0,
+"slice_218/name": "",
+"slice_218/save_to_file/enabled": false,
+"slice_218/save_to_file/keep_custom_tracks": false,
+"slice_218/save_to_file/path": "",
+"slice_218/start_frame": 0,
+"slice_219/end_frame": 0,
+"slice_219/loop_mode": 0,
+"slice_219/name": "",
+"slice_219/save_to_file/enabled": false,
+"slice_219/save_to_file/keep_custom_tracks": false,
+"slice_219/save_to_file/path": "",
+"slice_219/start_frame": 0,
+"slice_22/end_frame": 0,
+"slice_22/loop_mode": 0,
+"slice_22/name": "",
+"slice_22/save_to_file/enabled": false,
+"slice_22/save_to_file/keep_custom_tracks": false,
+"slice_22/save_to_file/path": "",
+"slice_22/start_frame": 0,
+"slice_220/end_frame": 0,
+"slice_220/loop_mode": 0,
+"slice_220/name": "",
+"slice_220/save_to_file/enabled": false,
+"slice_220/save_to_file/keep_custom_tracks": false,
+"slice_220/save_to_file/path": "",
+"slice_220/start_frame": 0,
+"slice_221/end_frame": 0,
+"slice_221/loop_mode": 0,
+"slice_221/name": "",
+"slice_221/save_to_file/enabled": false,
+"slice_221/save_to_file/keep_custom_tracks": false,
+"slice_221/save_to_file/path": "",
+"slice_221/start_frame": 0,
+"slice_222/end_frame": 0,
+"slice_222/loop_mode": 0,
+"slice_222/name": "",
+"slice_222/save_to_file/enabled": false,
+"slice_222/save_to_file/keep_custom_tracks": false,
+"slice_222/save_to_file/path": "",
+"slice_222/start_frame": 0,
+"slice_223/end_frame": 0,
+"slice_223/loop_mode": 0,
+"slice_223/name": "",
+"slice_223/save_to_file/enabled": false,
+"slice_223/save_to_file/keep_custom_tracks": false,
+"slice_223/save_to_file/path": "",
+"slice_223/start_frame": 0,
+"slice_224/end_frame": 0,
+"slice_224/loop_mode": 0,
+"slice_224/name": "",
+"slice_224/save_to_file/enabled": false,
+"slice_224/save_to_file/keep_custom_tracks": false,
+"slice_224/save_to_file/path": "",
+"slice_224/start_frame": 0,
+"slice_225/end_frame": 0,
+"slice_225/loop_mode": 0,
+"slice_225/name": "",
+"slice_225/save_to_file/enabled": false,
+"slice_225/save_to_file/keep_custom_tracks": false,
+"slice_225/save_to_file/path": "",
+"slice_225/start_frame": 0,
+"slice_226/end_frame": 0,
+"slice_226/loop_mode": 0,
+"slice_226/name": "",
+"slice_226/save_to_file/enabled": false,
+"slice_226/save_to_file/keep_custom_tracks": false,
+"slice_226/save_to_file/path": "",
+"slice_226/start_frame": 0,
+"slice_227/end_frame": 0,
+"slice_227/loop_mode": 0,
+"slice_227/name": "",
+"slice_227/save_to_file/enabled": false,
+"slice_227/save_to_file/keep_custom_tracks": false,
+"slice_227/save_to_file/path": "",
+"slice_227/start_frame": 0,
+"slice_228/end_frame": 0,
+"slice_228/loop_mode": 0,
+"slice_228/name": "",
+"slice_228/save_to_file/enabled": false,
+"slice_228/save_to_file/keep_custom_tracks": false,
+"slice_228/save_to_file/path": "",
+"slice_228/start_frame": 0,
+"slice_229/end_frame": 0,
+"slice_229/loop_mode": 0,
+"slice_229/name": "",
+"slice_229/save_to_file/enabled": false,
+"slice_229/save_to_file/keep_custom_tracks": false,
+"slice_229/save_to_file/path": "",
+"slice_229/start_frame": 0,
+"slice_23/end_frame": 0,
+"slice_23/loop_mode": 0,
+"slice_23/name": "",
+"slice_23/save_to_file/enabled": false,
+"slice_23/save_to_file/keep_custom_tracks": false,
+"slice_23/save_to_file/path": "",
+"slice_23/start_frame": 0,
+"slice_230/end_frame": 0,
+"slice_230/loop_mode": 0,
+"slice_230/name": "",
+"slice_230/save_to_file/enabled": false,
+"slice_230/save_to_file/keep_custom_tracks": false,
+"slice_230/save_to_file/path": "",
+"slice_230/start_frame": 0,
+"slice_231/end_frame": 0,
+"slice_231/loop_mode": 0,
+"slice_231/name": "",
+"slice_231/save_to_file/enabled": false,
+"slice_231/save_to_file/keep_custom_tracks": false,
+"slice_231/save_to_file/path": "",
+"slice_231/start_frame": 0,
+"slice_232/end_frame": 0,
+"slice_232/loop_mode": 0,
+"slice_232/name": "",
+"slice_232/save_to_file/enabled": false,
+"slice_232/save_to_file/keep_custom_tracks": false,
+"slice_232/save_to_file/path": "",
+"slice_232/start_frame": 0,
+"slice_233/end_frame": 0,
+"slice_233/loop_mode": 0,
+"slice_233/name": "",
+"slice_233/save_to_file/enabled": false,
+"slice_233/save_to_file/keep_custom_tracks": false,
+"slice_233/save_to_file/path": "",
+"slice_233/start_frame": 0,
+"slice_234/end_frame": 0,
+"slice_234/loop_mode": 0,
+"slice_234/name": "",
+"slice_234/save_to_file/enabled": false,
+"slice_234/save_to_file/keep_custom_tracks": false,
+"slice_234/save_to_file/path": "",
+"slice_234/start_frame": 0,
+"slice_235/end_frame": 0,
+"slice_235/loop_mode": 0,
+"slice_235/name": "",
+"slice_235/save_to_file/enabled": false,
+"slice_235/save_to_file/keep_custom_tracks": false,
+"slice_235/save_to_file/path": "",
+"slice_235/start_frame": 0,
+"slice_236/end_frame": 0,
+"slice_236/loop_mode": 0,
+"slice_236/name": "",
+"slice_236/save_to_file/enabled": false,
+"slice_236/save_to_file/keep_custom_tracks": false,
+"slice_236/save_to_file/path": "",
+"slice_236/start_frame": 0,
+"slice_237/end_frame": 0,
+"slice_237/loop_mode": 0,
+"slice_237/name": "",
+"slice_237/save_to_file/enabled": false,
+"slice_237/save_to_file/keep_custom_tracks": false,
+"slice_237/save_to_file/path": "",
+"slice_237/start_frame": 0,
+"slice_238/end_frame": 0,
+"slice_238/loop_mode": 0,
+"slice_238/name": "",
+"slice_238/save_to_file/enabled": false,
+"slice_238/save_to_file/keep_custom_tracks": false,
+"slice_238/save_to_file/path": "",
+"slice_238/start_frame": 0,
+"slice_239/end_frame": 0,
+"slice_239/loop_mode": 0,
+"slice_239/name": "",
+"slice_239/save_to_file/enabled": false,
+"slice_239/save_to_file/keep_custom_tracks": false,
+"slice_239/save_to_file/path": "",
+"slice_239/start_frame": 0,
+"slice_24/end_frame": 0,
+"slice_24/loop_mode": 0,
+"slice_24/name": "",
+"slice_24/save_to_file/enabled": false,
+"slice_24/save_to_file/keep_custom_tracks": false,
+"slice_24/save_to_file/path": "",
+"slice_24/start_frame": 0,
+"slice_240/end_frame": 0,
+"slice_240/loop_mode": 0,
+"slice_240/name": "",
+"slice_240/save_to_file/enabled": false,
+"slice_240/save_to_file/keep_custom_tracks": false,
+"slice_240/save_to_file/path": "",
+"slice_240/start_frame": 0,
+"slice_241/end_frame": 0,
+"slice_241/loop_mode": 0,
+"slice_241/name": "",
+"slice_241/save_to_file/enabled": false,
+"slice_241/save_to_file/keep_custom_tracks": false,
+"slice_241/save_to_file/path": "",
+"slice_241/start_frame": 0,
+"slice_242/end_frame": 0,
+"slice_242/loop_mode": 0,
+"slice_242/name": "",
+"slice_242/save_to_file/enabled": false,
+"slice_242/save_to_file/keep_custom_tracks": false,
+"slice_242/save_to_file/path": "",
+"slice_242/start_frame": 0,
+"slice_243/end_frame": 0,
+"slice_243/loop_mode": 0,
+"slice_243/name": "",
+"slice_243/save_to_file/enabled": false,
+"slice_243/save_to_file/keep_custom_tracks": false,
+"slice_243/save_to_file/path": "",
+"slice_243/start_frame": 0,
+"slice_244/end_frame": 0,
+"slice_244/loop_mode": 0,
+"slice_244/name": "",
+"slice_244/save_to_file/enabled": false,
+"slice_244/save_to_file/keep_custom_tracks": false,
+"slice_244/save_to_file/path": "",
+"slice_244/start_frame": 0,
+"slice_245/end_frame": 0,
+"slice_245/loop_mode": 0,
+"slice_245/name": "",
+"slice_245/save_to_file/enabled": false,
+"slice_245/save_to_file/keep_custom_tracks": false,
+"slice_245/save_to_file/path": "",
+"slice_245/start_frame": 0,
+"slice_246/end_frame": 0,
+"slice_246/loop_mode": 0,
+"slice_246/name": "",
+"slice_246/save_to_file/enabled": false,
+"slice_246/save_to_file/keep_custom_tracks": false,
+"slice_246/save_to_file/path": "",
+"slice_246/start_frame": 0,
+"slice_247/end_frame": 0,
+"slice_247/loop_mode": 0,
+"slice_247/name": "",
+"slice_247/save_to_file/enabled": false,
+"slice_247/save_to_file/keep_custom_tracks": false,
+"slice_247/save_to_file/path": "",
+"slice_247/start_frame": 0,
+"slice_248/end_frame": 0,
+"slice_248/loop_mode": 0,
+"slice_248/name": "",
+"slice_248/save_to_file/enabled": false,
+"slice_248/save_to_file/keep_custom_tracks": false,
+"slice_248/save_to_file/path": "",
+"slice_248/start_frame": 0,
+"slice_249/end_frame": 0,
+"slice_249/loop_mode": 0,
+"slice_249/name": "",
+"slice_249/save_to_file/enabled": false,
+"slice_249/save_to_file/keep_custom_tracks": false,
+"slice_249/save_to_file/path": "",
+"slice_249/start_frame": 0,
+"slice_25/end_frame": 0,
+"slice_25/loop_mode": 0,
+"slice_25/name": "",
+"slice_25/save_to_file/enabled": false,
+"slice_25/save_to_file/keep_custom_tracks": false,
+"slice_25/save_to_file/path": "",
+"slice_25/start_frame": 0,
+"slice_250/end_frame": 0,
+"slice_250/loop_mode": 0,
+"slice_250/name": "",
+"slice_250/save_to_file/enabled": false,
+"slice_250/save_to_file/keep_custom_tracks": false,
+"slice_250/save_to_file/path": "",
+"slice_250/start_frame": 0,
+"slice_251/end_frame": 0,
+"slice_251/loop_mode": 0,
+"slice_251/name": "",
+"slice_251/save_to_file/enabled": false,
+"slice_251/save_to_file/keep_custom_tracks": false,
+"slice_251/save_to_file/path": "",
+"slice_251/start_frame": 0,
+"slice_252/end_frame": 0,
+"slice_252/loop_mode": 0,
+"slice_252/name": "",
+"slice_252/save_to_file/enabled": false,
+"slice_252/save_to_file/keep_custom_tracks": false,
+"slice_252/save_to_file/path": "",
+"slice_252/start_frame": 0,
+"slice_253/end_frame": 0,
+"slice_253/loop_mode": 0,
+"slice_253/name": "",
+"slice_253/save_to_file/enabled": false,
+"slice_253/save_to_file/keep_custom_tracks": false,
+"slice_253/save_to_file/path": "",
+"slice_253/start_frame": 0,
+"slice_254/end_frame": 0,
+"slice_254/loop_mode": 0,
+"slice_254/name": "",
+"slice_254/save_to_file/enabled": false,
+"slice_254/save_to_file/keep_custom_tracks": false,
+"slice_254/save_to_file/path": "",
+"slice_254/start_frame": 0,
+"slice_255/end_frame": 0,
+"slice_255/loop_mode": 0,
+"slice_255/name": "",
+"slice_255/save_to_file/enabled": false,
+"slice_255/save_to_file/keep_custom_tracks": false,
+"slice_255/save_to_file/path": "",
+"slice_255/start_frame": 0,
+"slice_256/end_frame": 0,
+"slice_256/loop_mode": 0,
+"slice_256/name": "",
+"slice_256/save_to_file/enabled": false,
+"slice_256/save_to_file/keep_custom_tracks": false,
+"slice_256/save_to_file/path": "",
+"slice_256/start_frame": 0,
+"slice_26/end_frame": 0,
+"slice_26/loop_mode": 0,
+"slice_26/name": "",
+"slice_26/save_to_file/enabled": false,
+"slice_26/save_to_file/keep_custom_tracks": false,
+"slice_26/save_to_file/path": "",
+"slice_26/start_frame": 0,
+"slice_27/end_frame": 0,
+"slice_27/loop_mode": 0,
+"slice_27/name": "",
+"slice_27/save_to_file/enabled": false,
+"slice_27/save_to_file/keep_custom_tracks": false,
+"slice_27/save_to_file/path": "",
+"slice_27/start_frame": 0,
+"slice_28/end_frame": 0,
+"slice_28/loop_mode": 0,
+"slice_28/name": "",
+"slice_28/save_to_file/enabled": false,
+"slice_28/save_to_file/keep_custom_tracks": false,
+"slice_28/save_to_file/path": "",
+"slice_28/start_frame": 0,
+"slice_29/end_frame": 0,
+"slice_29/loop_mode": 0,
+"slice_29/name": "",
+"slice_29/save_to_file/enabled": false,
+"slice_29/save_to_file/keep_custom_tracks": false,
+"slice_29/save_to_file/path": "",
+"slice_29/start_frame": 0,
+"slice_3/end_frame": 0,
+"slice_3/loop_mode": 0,
+"slice_3/name": "",
+"slice_3/save_to_file/enabled": false,
+"slice_3/save_to_file/keep_custom_tracks": false,
+"slice_3/save_to_file/path": "",
+"slice_3/start_frame": 0,
+"slice_30/end_frame": 0,
+"slice_30/loop_mode": 0,
+"slice_30/name": "",
+"slice_30/save_to_file/enabled": false,
+"slice_30/save_to_file/keep_custom_tracks": false,
+"slice_30/save_to_file/path": "",
+"slice_30/start_frame": 0,
+"slice_31/end_frame": 0,
+"slice_31/loop_mode": 0,
+"slice_31/name": "",
+"slice_31/save_to_file/enabled": false,
+"slice_31/save_to_file/keep_custom_tracks": false,
+"slice_31/save_to_file/path": "",
+"slice_31/start_frame": 0,
+"slice_32/end_frame": 0,
+"slice_32/loop_mode": 0,
+"slice_32/name": "",
+"slice_32/save_to_file/enabled": false,
+"slice_32/save_to_file/keep_custom_tracks": false,
+"slice_32/save_to_file/path": "",
+"slice_32/start_frame": 0,
+"slice_33/end_frame": 0,
+"slice_33/loop_mode": 0,
+"slice_33/name": "",
+"slice_33/save_to_file/enabled": false,
+"slice_33/save_to_file/keep_custom_tracks": false,
+"slice_33/save_to_file/path": "",
+"slice_33/start_frame": 0,
+"slice_34/end_frame": 0,
+"slice_34/loop_mode": 0,
+"slice_34/name": "",
+"slice_34/save_to_file/enabled": false,
+"slice_34/save_to_file/keep_custom_tracks": false,
+"slice_34/save_to_file/path": "",
+"slice_34/start_frame": 0,
+"slice_35/end_frame": 0,
+"slice_35/loop_mode": 0,
+"slice_35/name": "",
+"slice_35/save_to_file/enabled": false,
+"slice_35/save_to_file/keep_custom_tracks": false,
+"slice_35/save_to_file/path": "",
+"slice_35/start_frame": 0,
+"slice_36/end_frame": 0,
+"slice_36/loop_mode": 0,
+"slice_36/name": "",
+"slice_36/save_to_file/enabled": false,
+"slice_36/save_to_file/keep_custom_tracks": false,
+"slice_36/save_to_file/path": "",
+"slice_36/start_frame": 0,
+"slice_37/end_frame": 0,
+"slice_37/loop_mode": 0,
+"slice_37/name": "",
+"slice_37/save_to_file/enabled": false,
+"slice_37/save_to_file/keep_custom_tracks": false,
+"slice_37/save_to_file/path": "",
+"slice_37/start_frame": 0,
+"slice_38/end_frame": 0,
+"slice_38/loop_mode": 0,
+"slice_38/name": "",
+"slice_38/save_to_file/enabled": false,
+"slice_38/save_to_file/keep_custom_tracks": false,
+"slice_38/save_to_file/path": "",
+"slice_38/start_frame": 0,
+"slice_39/end_frame": 0,
+"slice_39/loop_mode": 0,
+"slice_39/name": "",
+"slice_39/save_to_file/enabled": false,
+"slice_39/save_to_file/keep_custom_tracks": false,
+"slice_39/save_to_file/path": "",
+"slice_39/start_frame": 0,
+"slice_4/end_frame": 0,
+"slice_4/loop_mode": 0,
+"slice_4/name": "",
+"slice_4/save_to_file/enabled": false,
+"slice_4/save_to_file/keep_custom_tracks": false,
+"slice_4/save_to_file/path": "",
+"slice_4/start_frame": 0,
+"slice_40/end_frame": 0,
+"slice_40/loop_mode": 0,
+"slice_40/name": "",
+"slice_40/save_to_file/enabled": false,
+"slice_40/save_to_file/keep_custom_tracks": false,
+"slice_40/save_to_file/path": "",
+"slice_40/start_frame": 0,
+"slice_41/end_frame": 0,
+"slice_41/loop_mode": 0,
+"slice_41/name": "",
+"slice_41/save_to_file/enabled": false,
+"slice_41/save_to_file/keep_custom_tracks": false,
+"slice_41/save_to_file/path": "",
+"slice_41/start_frame": 0,
+"slice_42/end_frame": 0,
+"slice_42/loop_mode": 0,
+"slice_42/name": "",
+"slice_42/save_to_file/enabled": false,
+"slice_42/save_to_file/keep_custom_tracks": false,
+"slice_42/save_to_file/path": "",
+"slice_42/start_frame": 0,
+"slice_43/end_frame": 0,
+"slice_43/loop_mode": 0,
+"slice_43/name": "",
+"slice_43/save_to_file/enabled": false,
+"slice_43/save_to_file/keep_custom_tracks": false,
+"slice_43/save_to_file/path": "",
+"slice_43/start_frame": 0,
+"slice_44/end_frame": 0,
+"slice_44/loop_mode": 0,
+"slice_44/name": "",
+"slice_44/save_to_file/enabled": false,
+"slice_44/save_to_file/keep_custom_tracks": false,
+"slice_44/save_to_file/path": "",
+"slice_44/start_frame": 0,
+"slice_45/end_frame": 0,
+"slice_45/loop_mode": 0,
+"slice_45/name": "",
+"slice_45/save_to_file/enabled": false,
+"slice_45/save_to_file/keep_custom_tracks": false,
+"slice_45/save_to_file/path": "",
+"slice_45/start_frame": 0,
+"slice_46/end_frame": 0,
+"slice_46/loop_mode": 0,
+"slice_46/name": "",
+"slice_46/save_to_file/enabled": false,
+"slice_46/save_to_file/keep_custom_tracks": false,
+"slice_46/save_to_file/path": "",
+"slice_46/start_frame": 0,
+"slice_47/end_frame": 0,
+"slice_47/loop_mode": 0,
+"slice_47/name": "",
+"slice_47/save_to_file/enabled": false,
+"slice_47/save_to_file/keep_custom_tracks": false,
+"slice_47/save_to_file/path": "",
+"slice_47/start_frame": 0,
+"slice_48/end_frame": 0,
+"slice_48/loop_mode": 0,
+"slice_48/name": "",
+"slice_48/save_to_file/enabled": false,
+"slice_48/save_to_file/keep_custom_tracks": false,
+"slice_48/save_to_file/path": "",
+"slice_48/start_frame": 0,
+"slice_49/end_frame": 0,
+"slice_49/loop_mode": 0,
+"slice_49/name": "",
+"slice_49/save_to_file/enabled": false,
+"slice_49/save_to_file/keep_custom_tracks": false,
+"slice_49/save_to_file/path": "",
+"slice_49/start_frame": 0,
+"slice_5/end_frame": 0,
+"slice_5/loop_mode": 0,
+"slice_5/name": "",
+"slice_5/save_to_file/enabled": false,
+"slice_5/save_to_file/keep_custom_tracks": false,
+"slice_5/save_to_file/path": "",
+"slice_5/start_frame": 0,
+"slice_50/end_frame": 0,
+"slice_50/loop_mode": 0,
+"slice_50/name": "",
+"slice_50/save_to_file/enabled": false,
+"slice_50/save_to_file/keep_custom_tracks": false,
+"slice_50/save_to_file/path": "",
+"slice_50/start_frame": 0,
+"slice_51/end_frame": 0,
+"slice_51/loop_mode": 0,
+"slice_51/name": "",
+"slice_51/save_to_file/enabled": false,
+"slice_51/save_to_file/keep_custom_tracks": false,
+"slice_51/save_to_file/path": "",
+"slice_51/start_frame": 0,
+"slice_52/end_frame": 0,
+"slice_52/loop_mode": 0,
+"slice_52/name": "",
+"slice_52/save_to_file/enabled": false,
+"slice_52/save_to_file/keep_custom_tracks": false,
+"slice_52/save_to_file/path": "",
+"slice_52/start_frame": 0,
+"slice_53/end_frame": 0,
+"slice_53/loop_mode": 0,
+"slice_53/name": "",
+"slice_53/save_to_file/enabled": false,
+"slice_53/save_to_file/keep_custom_tracks": false,
+"slice_53/save_to_file/path": "",
+"slice_53/start_frame": 0,
+"slice_54/end_frame": 0,
+"slice_54/loop_mode": 0,
+"slice_54/name": "",
+"slice_54/save_to_file/enabled": false,
+"slice_54/save_to_file/keep_custom_tracks": false,
+"slice_54/save_to_file/path": "",
+"slice_54/start_frame": 0,
+"slice_55/end_frame": 0,
+"slice_55/loop_mode": 0,
+"slice_55/name": "",
+"slice_55/save_to_file/enabled": false,
+"slice_55/save_to_file/keep_custom_tracks": false,
+"slice_55/save_to_file/path": "",
+"slice_55/start_frame": 0,
+"slice_56/end_frame": 0,
+"slice_56/loop_mode": 0,
+"slice_56/name": "",
+"slice_56/save_to_file/enabled": false,
+"slice_56/save_to_file/keep_custom_tracks": false,
+"slice_56/save_to_file/path": "",
+"slice_56/start_frame": 0,
+"slice_57/end_frame": 0,
+"slice_57/loop_mode": 0,
+"slice_57/name": "",
+"slice_57/save_to_file/enabled": false,
+"slice_57/save_to_file/keep_custom_tracks": false,
+"slice_57/save_to_file/path": "",
+"slice_57/start_frame": 0,
+"slice_58/end_frame": 0,
+"slice_58/loop_mode": 0,
+"slice_58/name": "",
+"slice_58/save_to_file/enabled": false,
+"slice_58/save_to_file/keep_custom_tracks": false,
+"slice_58/save_to_file/path": "",
+"slice_58/start_frame": 0,
+"slice_59/end_frame": 0,
+"slice_59/loop_mode": 0,
+"slice_59/name": "",
+"slice_59/save_to_file/enabled": false,
+"slice_59/save_to_file/keep_custom_tracks": false,
+"slice_59/save_to_file/path": "",
+"slice_59/start_frame": 0,
+"slice_6/end_frame": 0,
+"slice_6/loop_mode": 0,
+"slice_6/name": "",
+"slice_6/save_to_file/enabled": false,
+"slice_6/save_to_file/keep_custom_tracks": false,
+"slice_6/save_to_file/path": "",
+"slice_6/start_frame": 0,
+"slice_60/end_frame": 0,
+"slice_60/loop_mode": 0,
+"slice_60/name": "",
+"slice_60/save_to_file/enabled": false,
+"slice_60/save_to_file/keep_custom_tracks": false,
+"slice_60/save_to_file/path": "",
+"slice_60/start_frame": 0,
+"slice_61/end_frame": 0,
+"slice_61/loop_mode": 0,
+"slice_61/name": "",
+"slice_61/save_to_file/enabled": false,
+"slice_61/save_to_file/keep_custom_tracks": false,
+"slice_61/save_to_file/path": "",
+"slice_61/start_frame": 0,
+"slice_62/end_frame": 0,
+"slice_62/loop_mode": 0,
+"slice_62/name": "",
+"slice_62/save_to_file/enabled": false,
+"slice_62/save_to_file/keep_custom_tracks": false,
+"slice_62/save_to_file/path": "",
+"slice_62/start_frame": 0,
+"slice_63/end_frame": 0,
+"slice_63/loop_mode": 0,
+"slice_63/name": "",
+"slice_63/save_to_file/enabled": false,
+"slice_63/save_to_file/keep_custom_tracks": false,
+"slice_63/save_to_file/path": "",
+"slice_63/start_frame": 0,
+"slice_64/end_frame": 0,
+"slice_64/loop_mode": 0,
+"slice_64/name": "",
+"slice_64/save_to_file/enabled": false,
+"slice_64/save_to_file/keep_custom_tracks": false,
+"slice_64/save_to_file/path": "",
+"slice_64/start_frame": 0,
+"slice_65/end_frame": 0,
+"slice_65/loop_mode": 0,
+"slice_65/name": "",
+"slice_65/save_to_file/enabled": false,
+"slice_65/save_to_file/keep_custom_tracks": false,
+"slice_65/save_to_file/path": "",
+"slice_65/start_frame": 0,
+"slice_66/end_frame": 0,
+"slice_66/loop_mode": 0,
+"slice_66/name": "",
+"slice_66/save_to_file/enabled": false,
+"slice_66/save_to_file/keep_custom_tracks": false,
+"slice_66/save_to_file/path": "",
+"slice_66/start_frame": 0,
+"slice_67/end_frame": 0,
+"slice_67/loop_mode": 0,
+"slice_67/name": "",
+"slice_67/save_to_file/enabled": false,
+"slice_67/save_to_file/keep_custom_tracks": false,
+"slice_67/save_to_file/path": "",
+"slice_67/start_frame": 0,
+"slice_68/end_frame": 0,
+"slice_68/loop_mode": 0,
+"slice_68/name": "",
+"slice_68/save_to_file/enabled": false,
+"slice_68/save_to_file/keep_custom_tracks": false,
+"slice_68/save_to_file/path": "",
+"slice_68/start_frame": 0,
+"slice_69/end_frame": 0,
+"slice_69/loop_mode": 0,
+"slice_69/name": "",
+"slice_69/save_to_file/enabled": false,
+"slice_69/save_to_file/keep_custom_tracks": false,
+"slice_69/save_to_file/path": "",
+"slice_69/start_frame": 0,
+"slice_7/end_frame": 0,
+"slice_7/loop_mode": 0,
+"slice_7/name": "",
+"slice_7/save_to_file/enabled": false,
+"slice_7/save_to_file/keep_custom_tracks": false,
+"slice_7/save_to_file/path": "",
+"slice_7/start_frame": 0,
+"slice_70/end_frame": 0,
+"slice_70/loop_mode": 0,
+"slice_70/name": "",
+"slice_70/save_to_file/enabled": false,
+"slice_70/save_to_file/keep_custom_tracks": false,
+"slice_70/save_to_file/path": "",
+"slice_70/start_frame": 0,
+"slice_71/end_frame": 0,
+"slice_71/loop_mode": 0,
+"slice_71/name": "",
+"slice_71/save_to_file/enabled": false,
+"slice_71/save_to_file/keep_custom_tracks": false,
+"slice_71/save_to_file/path": "",
+"slice_71/start_frame": 0,
+"slice_72/end_frame": 0,
+"slice_72/loop_mode": 0,
+"slice_72/name": "",
+"slice_72/save_to_file/enabled": false,
+"slice_72/save_to_file/keep_custom_tracks": false,
+"slice_72/save_to_file/path": "",
+"slice_72/start_frame": 0,
+"slice_73/end_frame": 0,
+"slice_73/loop_mode": 0,
+"slice_73/name": "",
+"slice_73/save_to_file/enabled": false,
+"slice_73/save_to_file/keep_custom_tracks": false,
+"slice_73/save_to_file/path": "",
+"slice_73/start_frame": 0,
+"slice_74/end_frame": 0,
+"slice_74/loop_mode": 0,
+"slice_74/name": "",
+"slice_74/save_to_file/enabled": false,
+"slice_74/save_to_file/keep_custom_tracks": false,
+"slice_74/save_to_file/path": "",
+"slice_74/start_frame": 0,
+"slice_75/end_frame": 0,
+"slice_75/loop_mode": 0,
+"slice_75/name": "",
+"slice_75/save_to_file/enabled": false,
+"slice_75/save_to_file/keep_custom_tracks": false,
+"slice_75/save_to_file/path": "",
+"slice_75/start_frame": 0,
+"slice_76/end_frame": 0,
+"slice_76/loop_mode": 0,
+"slice_76/name": "",
+"slice_76/save_to_file/enabled": false,
+"slice_76/save_to_file/keep_custom_tracks": false,
+"slice_76/save_to_file/path": "",
+"slice_76/start_frame": 0,
+"slice_77/end_frame": 0,
+"slice_77/loop_mode": 0,
+"slice_77/name": "",
+"slice_77/save_to_file/enabled": false,
+"slice_77/save_to_file/keep_custom_tracks": false,
+"slice_77/save_to_file/path": "",
+"slice_77/start_frame": 0,
+"slice_78/end_frame": 0,
+"slice_78/loop_mode": 0,
+"slice_78/name": "",
+"slice_78/save_to_file/enabled": false,
+"slice_78/save_to_file/keep_custom_tracks": false,
+"slice_78/save_to_file/path": "",
+"slice_78/start_frame": 0,
+"slice_79/end_frame": 0,
+"slice_79/loop_mode": 0,
+"slice_79/name": "",
+"slice_79/save_to_file/enabled": false,
+"slice_79/save_to_file/keep_custom_tracks": false,
+"slice_79/save_to_file/path": "",
+"slice_79/start_frame": 0,
+"slice_8/end_frame": 0,
+"slice_8/loop_mode": 0,
+"slice_8/name": "",
+"slice_8/save_to_file/enabled": false,
+"slice_8/save_to_file/keep_custom_tracks": false,
+"slice_8/save_to_file/path": "",
+"slice_8/start_frame": 0,
+"slice_80/end_frame": 0,
+"slice_80/loop_mode": 0,
+"slice_80/name": "",
+"slice_80/save_to_file/enabled": false,
+"slice_80/save_to_file/keep_custom_tracks": false,
+"slice_80/save_to_file/path": "",
+"slice_80/start_frame": 0,
+"slice_81/end_frame": 0,
+"slice_81/loop_mode": 0,
+"slice_81/name": "",
+"slice_81/save_to_file/enabled": false,
+"slice_81/save_to_file/keep_custom_tracks": false,
+"slice_81/save_to_file/path": "",
+"slice_81/start_frame": 0,
+"slice_82/end_frame": 0,
+"slice_82/loop_mode": 0,
+"slice_82/name": "",
+"slice_82/save_to_file/enabled": false,
+"slice_82/save_to_file/keep_custom_tracks": false,
+"slice_82/save_to_file/path": "",
+"slice_82/start_frame": 0,
+"slice_83/end_frame": 0,
+"slice_83/loop_mode": 0,
+"slice_83/name": "",
+"slice_83/save_to_file/enabled": false,
+"slice_83/save_to_file/keep_custom_tracks": false,
+"slice_83/save_to_file/path": "",
+"slice_83/start_frame": 0,
+"slice_84/end_frame": 0,
+"slice_84/loop_mode": 0,
+"slice_84/name": "",
+"slice_84/save_to_file/enabled": false,
+"slice_84/save_to_file/keep_custom_tracks": false,
+"slice_84/save_to_file/path": "",
+"slice_84/start_frame": 0,
+"slice_85/end_frame": 0,
+"slice_85/loop_mode": 0,
+"slice_85/name": "",
+"slice_85/save_to_file/enabled": false,
+"slice_85/save_to_file/keep_custom_tracks": false,
+"slice_85/save_to_file/path": "",
+"slice_85/start_frame": 0,
+"slice_86/end_frame": 0,
+"slice_86/loop_mode": 0,
+"slice_86/name": "",
+"slice_86/save_to_file/enabled": false,
+"slice_86/save_to_file/keep_custom_tracks": false,
+"slice_86/save_to_file/path": "",
+"slice_86/start_frame": 0,
+"slice_87/end_frame": 0,
+"slice_87/loop_mode": 0,
+"slice_87/name": "",
+"slice_87/save_to_file/enabled": false,
+"slice_87/save_to_file/keep_custom_tracks": false,
+"slice_87/save_to_file/path": "",
+"slice_87/start_frame": 0,
+"slice_88/end_frame": 0,
+"slice_88/loop_mode": 0,
+"slice_88/name": "",
+"slice_88/save_to_file/enabled": false,
+"slice_88/save_to_file/keep_custom_tracks": false,
+"slice_88/save_to_file/path": "",
+"slice_88/start_frame": 0,
+"slice_89/end_frame": 0,
+"slice_89/loop_mode": 0,
+"slice_89/name": "",
+"slice_89/save_to_file/enabled": false,
+"slice_89/save_to_file/keep_custom_tracks": false,
+"slice_89/save_to_file/path": "",
+"slice_89/start_frame": 0,
+"slice_9/end_frame": 0,
+"slice_9/loop_mode": 0,
+"slice_9/name": "",
+"slice_9/save_to_file/enabled": false,
+"slice_9/save_to_file/keep_custom_tracks": false,
+"slice_9/save_to_file/path": "",
+"slice_9/start_frame": 0,
+"slice_90/end_frame": 0,
+"slice_90/loop_mode": 0,
+"slice_90/name": "",
+"slice_90/save_to_file/enabled": false,
+"slice_90/save_to_file/keep_custom_tracks": false,
+"slice_90/save_to_file/path": "",
+"slice_90/start_frame": 0,
+"slice_91/end_frame": 0,
+"slice_91/loop_mode": 0,
+"slice_91/name": "",
+"slice_91/save_to_file/enabled": false,
+"slice_91/save_to_file/keep_custom_tracks": false,
+"slice_91/save_to_file/path": "",
+"slice_91/start_frame": 0,
+"slice_92/end_frame": 0,
+"slice_92/loop_mode": 0,
+"slice_92/name": "",
+"slice_92/save_to_file/enabled": false,
+"slice_92/save_to_file/keep_custom_tracks": false,
+"slice_92/save_to_file/path": "",
+"slice_92/start_frame": 0,
+"slice_93/end_frame": 0,
+"slice_93/loop_mode": 0,
+"slice_93/name": "",
+"slice_93/save_to_file/enabled": false,
+"slice_93/save_to_file/keep_custom_tracks": false,
+"slice_93/save_to_file/path": "",
+"slice_93/start_frame": 0,
+"slice_94/end_frame": 0,
+"slice_94/loop_mode": 0,
+"slice_94/name": "",
+"slice_94/save_to_file/enabled": false,
+"slice_94/save_to_file/keep_custom_tracks": false,
+"slice_94/save_to_file/path": "",
+"slice_94/start_frame": 0,
+"slice_95/end_frame": 0,
+"slice_95/loop_mode": 0,
+"slice_95/name": "",
+"slice_95/save_to_file/enabled": false,
+"slice_95/save_to_file/keep_custom_tracks": false,
+"slice_95/save_to_file/path": "",
+"slice_95/start_frame": 0,
+"slice_96/end_frame": 0,
+"slice_96/loop_mode": 0,
+"slice_96/name": "",
+"slice_96/save_to_file/enabled": false,
+"slice_96/save_to_file/keep_custom_tracks": false,
+"slice_96/save_to_file/path": "",
+"slice_96/start_frame": 0,
+"slice_97/end_frame": 0,
+"slice_97/loop_mode": 0,
+"slice_97/name": "",
+"slice_97/save_to_file/enabled": false,
+"slice_97/save_to_file/keep_custom_tracks": false,
+"slice_97/save_to_file/path": "",
+"slice_97/start_frame": 0,
+"slice_98/end_frame": 0,
+"slice_98/loop_mode": 0,
+"slice_98/name": "",
+"slice_98/save_to_file/enabled": false,
+"slice_98/save_to_file/keep_custom_tracks": false,
+"slice_98/save_to_file/path": "",
+"slice_98/start_frame": 0,
+"slice_99/end_frame": 0,
+"slice_99/loop_mode": 0,
+"slice_99/name": "",
+"slice_99/save_to_file/enabled": false,
+"slice_99/save_to_file/keep_custom_tracks": false,
+"slice_99/save_to_file/path": "",
+"slice_99/start_frame": 0,
+"slices/amount": 0
+}
+},
+"materials": {
+"Material.001": {
+"use_external/enabled": true,
+"use_external/path": "res://content/enemies/enemy_material.tres"
+}
+}
+}
+fbx/importer=0
+fbx/allow_geometry_helper_nodes=false
+fbx/embedded_image_handling=1
diff --git a/content/enemies/enemy.tscn b/content/enemies/enemy.tscn
new file mode 100644
index 0000000..f6876cc
--- /dev/null
+++ b/content/enemies/enemy.tscn
@@ -0,0 +1,120 @@
+[gd_scene load_steps=24 format=3 uid="uid://b1l8fvlceolf8"]
+
+[ext_resource type="Script" path="res://scripts/enemies/enemy.gd" id="1_n8jwt"]
+[ext_resource type="PackedScene" uid="uid://o3oir3w6cs1y" path="res://content/enemies/enemies.fbx" id="1_nxu6l"]
+[ext_resource type="Texture2D" uid="uid://csn8uoefcbua6" path="res://content/enemies/sprites/idle sprite.png" id="2_r5jpp"]
+[ext_resource type="Animation" uid="uid://cguc5g4xb3ukw" path="res://content/enemies/animations/Vert_Fire.res" id="3_c2uq0"]
+[ext_resource type="BehaviorTree" uid="uid://db7m2p0at5kmq" path="res://ai/enemy.tres" id="3_laok7"]
+[ext_resource type="Animation" uid="uid://c4ko34bx2fw2a" path="res://content/enemies/animations/Vert_Idle.res" id="4_ldm0s"]
+[ext_resource type="Script" path="res://scripts/enemies/enemy_ai.gd" id="4_uu6te"]
+[ext_resource type="Texture2D" uid="uid://buebtm6i0whgb" path="res://content/enemies/sprites/fire sprite.png" id="5_1c5tu"]
+[ext_resource type="Animation" uid="uid://bkg0my1x3pao4" path="res://content/enemies/animations/Vert_Move.res" id="5_saiyq"]
+[ext_resource type="PackedScene" uid="uid://bnwuklgcmgyw8" path="res://content/muzzleflash/muzzleflash.tscn" id="10_dtmwf"]
+[ext_resource type="Script" path="res://demo/agents/scripts/health.gd" id="11_o71in"]
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_jm6ft"]
+_data = {
+"Vert_Fire": ExtResource("3_c2uq0"),
+"Vert_Idle": ExtResource("4_ldm0s"),
+"Vert_Move": ExtResource("5_saiyq")
+}
+
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ri6g6"]
+animation = &"Vert_Fire"
+
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_otyax"]
+animation = &"Vert_Idle"
+
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7uoxm"]
+animation = &"Vert_Move"
+
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_qm74y"]
+animation = &"Vert_Move"
+play_mode = 1
+
+[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_1qala"]
+blend_point_0/node = SubResource("AnimationNodeAnimation_otyax")
+blend_point_0/pos = 0.0
+blend_point_1/node = SubResource("AnimationNodeAnimation_7uoxm")
+blend_point_1/pos = 1.0
+blend_point_2/node = SubResource("AnimationNodeAnimation_qm74y")
+blend_point_2/pos = -1.0
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_b6owp"]
+advance_mode = 2
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_flqbt"]
+xfade_time = 0.1
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_icsoj"]
+xfade_time = 0.1
+switch_mode = 2
+advance_mode = 2
+
+[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_rdhva"]
+states/Fire/node = SubResource("AnimationNodeAnimation_ri6g6")
+states/Fire/position = Vector2(405, 185)
+states/Movement/node = SubResource("AnimationNodeBlendSpace1D_1qala")
+states/Movement/position = Vector2(405, 100)
+transitions = ["Start", "Movement", SubResource("AnimationNodeStateMachineTransition_b6owp"), "Movement", "Fire", SubResource("AnimationNodeStateMachineTransition_flqbt"), "Fire", "Movement", SubResource("AnimationNodeStateMachineTransition_icsoj")]
+graph_offset = Vector2(-376, -32)
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_hf7lk"]
+
+[sub_resource type="BoxShape3D" id="BoxShape3D_ov0pa"]
+size = Vector3(1, 2.08771, 0.126)
+
+[node name="Enemy" type="CharacterBody3D"]
+script = ExtResource("1_n8jwt")
+
+[node name="enemies" parent="." instance=ExtResource("1_nxu6l")]
+transform = Transform3D(0.42, 0, 0, 0, 0.42, 0, 0, 0, 0.42, 0, 0, 0)
+
+[node name="Vert" parent="enemies" index="0"]
+transform = Transform3D(98.6026, -0.0322576, 16.6591, 0.0327155, 100, -4.37121e-06, -16.6591, 0.00545441, 98.6026, 0, 0.000652267, 0)
+
+[node name="Sprite3D" type="Sprite3D" parent="enemies/Vert" index="0"]
+transform = Transform3D(0.01, 0, 0, 0, 0.01, 4.37114e-10, 0, -4.37114e-10, 0.01, 0, 0.0260873, 0.000118641)
+modulate = Color(1, 0.66, 0.66, 1)
+texture = ExtResource("2_r5jpp")
+
+[node name="Shoot Marker" type="Node3D" parent="enemies/Vert" index="1"]
+transform = Transform3D(0.025, 0, 0, 0, 0.025, 0, 0, 0, 0.025, -0.00423838, 0.0391859, 0.000117709)
+
+[node name="AnimationPlayer" parent="enemies" index="1"]
+libraries = {
+"": SubResource("AnimationLibrary_jm6ft")
+}
+
+[node name="AnimationTree" type="AnimationTree" parent="enemies/AnimationPlayer" index="0"]
+root_node = NodePath("../..")
+tree_root = SubResource("AnimationNodeStateMachine_rdhva")
+anim_player = NodePath("..")
+parameters/Movement/blend_position = 0.00270998
+
+[node name="BTPlayer" type="BTPlayer" parent="." node_paths=PackedStringArray("character", "sprite", "agent", "animationTree", "Origin")]
+behavior_tree = ExtResource("3_laok7")
+blackboard_plan = SubResource("BlackboardPlan_hf7lk")
+script = ExtResource("4_uu6te")
+character = NodePath("..")
+sprite = NodePath("../enemies/Vert/Sprite3D")
+idleTexture = ExtResource("2_r5jpp")
+aggressiveTexture = ExtResource("5_1c5tu")
+agent = NodePath("../NavigationAgent")
+animationTree = NodePath("../enemies/AnimationPlayer/AnimationTree")
+MuzzleFlash = ExtResource("10_dtmwf")
+Origin = NodePath("../enemies/Vert/Shoot Marker")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.02066, -0.00598145)
+shape = SubResource("BoxShape3D_ov0pa")
+
+[node name="NavigationAgent" type="NavigationAgent3D" parent="."]
+path_desired_distance = 0.5
+target_desired_distance = 0.5
+
+[node name="Health" type="Node" parent="."]
+script = ExtResource("11_o71in")
+max_health = 1.0
+
+[editable path="enemies"]
diff --git a/content/enemies/enemy_material.tres b/content/enemies/enemy_material.tres
new file mode 100644
index 0000000..168d917
--- /dev/null
+++ b/content/enemies/enemy_material.tres
@@ -0,0 +1,33 @@
+[gd_resource type="StandardMaterial3D" load_steps=6 format=3 uid="uid://c7gkxl8ldm4o1"]
+
+[ext_resource type="Texture2D" uid="uid://dnavx8bsrg2cp" path="res://content/rifle/Cardboard001_2K-PNG/Cardboard001_2K-PNG_Color.png" id="1_jli10"]
+[ext_resource type="Texture2D" uid="uid://cpmhd8ni4r5lu" path="res://content/rifle/Cardboard001_2K-PNG/Cardboard001_2K-PNG_Roughness.png" id="2_g6sro"]
+[ext_resource type="Texture2D" uid="uid://w1qjoj4t60pe" path="res://content/rifle/Cardboard001_2K-PNG/Cardboard001_2K-PNG_Displacement.png" id="3_ufh2e"]
+[ext_resource type="Texture2D" uid="uid://dku7f5fijokpn" path="res://content/rifle/Cardboard001_2K-PNG/Cardboard001_2K-PNG_NormalGL.png" id="5_ttwgb"]
+
+[sub_resource type="CurveTexture" id="CurveTexture_oq5c5"]
+
+[resource]
+diffuse_mode = 3
+specular_mode = 1
+albedo_color = Color(0.669713, 1.09979e-05, 0.0924059, 1)
+albedo_texture = ExtResource("1_jli10")
+metallic_specular = 0.02
+roughness_texture = ExtResource("2_g6sro")
+normal_enabled = true
+normal_scale = 1.7
+normal_texture = ExtResource("5_ttwgb")
+heightmap_enabled = true
+heightmap_scale = 2.658
+heightmap_deep_parallax = true
+heightmap_min_layers = 8
+heightmap_max_layers = 32
+heightmap_texture = ExtResource("3_ufh2e")
+heightmap_flip_texture = true
+backlight_enabled = true
+backlight = Color(0.666569, 0.666569, 0.666569, 1)
+refraction_scale = -0.25
+detail_mask = ExtResource("2_g6sro")
+detail_albedo = SubResource("CurveTexture_oq5c5")
+uv1_scale = Vector3(4, 4, 4)
+grow_amount = -0.103
diff --git a/content/enemies/sprites/fire sprite.png b/content/enemies/sprites/fire sprite.png
new file mode 100644
index 0000000..25f983f
Binary files /dev/null and b/content/enemies/sprites/fire sprite.png differ
diff --git a/content/enemies/sprites/fire sprite.png.import b/content/enemies/sprites/fire sprite.png.import
new file mode 100644
index 0000000..2c106c4
--- /dev/null
+++ b/content/enemies/sprites/fire sprite.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://buebtm6i0whgb"
+path.s3tc="res://.godot/imported/fire sprite.png-82c64dfdb65271f8a6b6d31d9da241f6.s3tc.ctex"
+metadata={
+"imported_formats": ["s3tc_bptc"],
+"vram_texture": true
+}
+
+[deps]
+
+source_file="res://content/enemies/sprites/fire sprite.png"
+dest_files=["res://.godot/imported/fire sprite.png-82c64dfdb65271f8a6b6d31d9da241f6.s3tc.ctex"]
+
+[params]
+
+compress/mode=2
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=true
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=0
diff --git a/content/enemies/sprites/idle sprite.png b/content/enemies/sprites/idle sprite.png
new file mode 100644
index 0000000..d2f339d
Binary files /dev/null and b/content/enemies/sprites/idle sprite.png differ
diff --git a/content/enemies/sprites/idle sprite.png.import b/content/enemies/sprites/idle sprite.png.import
new file mode 100644
index 0000000..2cbaed2
--- /dev/null
+++ b/content/enemies/sprites/idle sprite.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://csn8uoefcbua6"
+path.s3tc="res://.godot/imported/idle sprite.png-05c74c10a916b3f6a2d57cb04a5a2bd2.s3tc.ctex"
+metadata={
+"imported_formats": ["s3tc_bptc"],
+"vram_texture": true
+}
+
+[deps]
+
+source_file="res://content/enemies/sprites/idle sprite.png"
+dest_files=["res://.godot/imported/idle sprite.png-05c74c10a916b3f6a2d57cb04a5a2bd2.s3tc.ctex"]
+
+[params]
+
+compress/mode=2
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=true
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=0
diff --git a/content/muzzleflash/m_14.png b/content/muzzleflash/m_14.png
new file mode 100644
index 0000000..3b8e7b9
Binary files /dev/null and b/content/muzzleflash/m_14.png differ
diff --git a/content/muzzleflash/m_14.png.import b/content/muzzleflash/m_14.png.import
new file mode 100644
index 0000000..944cea1
--- /dev/null
+++ b/content/muzzleflash/m_14.png.import
@@ -0,0 +1,35 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bsemt7rxclix5"
+path.s3tc="res://.godot/imported/m_14.png-c6f6794dd70ddfaac10596bc3403eb13.s3tc.ctex"
+metadata={
+"imported_formats": ["s3tc_bptc"],
+"vram_texture": true
+}
+
+[deps]
+
+source_file="res://content/muzzleflash/m_14.png"
+dest_files=["res://.godot/imported/m_14.png-c6f6794dd70ddfaac10596bc3403eb13.s3tc.ctex"]
+
+[params]
+
+compress/mode=2
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=true
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=0
diff --git a/content/muzzleflash/muzzleflash.fbx b/content/muzzleflash/muzzleflash.fbx
new file mode 100644
index 0000000..3168fca
Binary files /dev/null and b/content/muzzleflash/muzzleflash.fbx differ
diff --git a/content/muzzleflash/muzzleflash.fbx.import b/content/muzzleflash/muzzleflash.fbx.import
new file mode 100644
index 0000000..3930c97
--- /dev/null
+++ b/content/muzzleflash/muzzleflash.fbx.import
@@ -0,0 +1,44 @@
+[remap]
+
+importer="scene"
+importer_version=1
+type="PackedScene"
+uid="uid://b70dt80hbe1fn"
+path="res://.godot/imported/muzzleflash.fbx-743c1da679ec8c4b45f9dfc547624e43.scn"
+
+[deps]
+
+source_file="res://content/muzzleflash/muzzleflash.fbx"
+dest_files=["res://.godot/imported/muzzleflash.fbx-743c1da679ec8c4b45f9dfc547624e43.scn"]
+
+[params]
+
+nodes/root_type=""
+nodes/root_name=""
+nodes/apply_root_scale=true
+nodes/root_scale=1.0
+nodes/import_as_skeleton_bones=false
+meshes/ensure_tangents=true
+meshes/generate_lods=true
+meshes/create_shadow_meshes=true
+meshes/light_baking=1
+meshes/lightmap_texel_size=0.2
+meshes/force_disable_compression=false
+skins/use_named_skins=true
+animation/import=true
+animation/fps=30
+animation/trimming=true
+animation/remove_immutable_tracks=true
+animation/import_rest_as_RESET=false
+import_script/path=""
+_subresources={
+"materials": {
+"@MATERIAL:0": {
+"use_external/enabled": true,
+"use_external/path": "res://content/muzzleflash/muzzleflash_material.tres"
+}
+}
+}
+fbx/importer=0
+fbx/allow_geometry_helper_nodes=false
+fbx/embedded_image_handling=1
diff --git a/content/muzzleflash/muzzleflash.tscn b/content/muzzleflash/muzzleflash.tscn
new file mode 100644
index 0000000..8a6e23b
--- /dev/null
+++ b/content/muzzleflash/muzzleflash.tscn
@@ -0,0 +1,100 @@
+[gd_scene load_steps=9 format=4 uid="uid://bnwuklgcmgyw8"]
+
+[ext_resource type="Script" path="res://scripts/muzzleflash.gd" id="2_3yxq0"]
+[ext_resource type="Material" uid="uid://dqp4e2wn3lp1e" path="res://content/muzzleflash/muzzleflash_material.tres" id="2_c664a"]
+
+[sub_resource type="Animation" id="Animation_44h7b"]
+resource_name = "muzzleflash"
+length = 0.1
+tracks/0/type = "scale_3d"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Node3D")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = PackedFloat32Array(0, 1, 1.5234, 1.59234, 0.307491, 0.1, 1, 0.584257, 0.815035, 1.26645)
+
+[sub_resource type="Animation" id="Animation_inf8h"]
+length = 0.001
+tracks/0/type = "scale_3d"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Node3D")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = PackedFloat32Array(0, 1, 1.5234, 1.59234, 0.307491)
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_hlj70"]
+_data = {
+"RESET": SubResource("Animation_inf8h"),
+"muzzleflash": SubResource("Animation_44h7b")
+}
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nddbk"]
+
+[sub_resource type="ArrayMesh" id="ArrayMesh_f7cot"]
+_surfaces = [{
+"aabb": AABB(-0.00401187, -0.0172638, -0.00109, 0.0479929, 0.0345121, 0.00109),
+"format": 34359742465,
+"index_count": 420,
+"index_data": PackedByteArray("AAABAAIAAAADAAEABAAAAAUABgAEAAUABwAGAAUACAAHAAUACQAIAAoACwAMAAgADQAOAAwADwANAAwACwAPAAwACQALAAgAEAAJAAoAEQASAAkAEwARAAkAEAATAAkAFAAQABUAFAAVABYAEAAKABUACAAXAAoACAAYABcACAAZABgACAAaABkACAAbABoACAAcABsACAAdABwACAAeAB0ACAAfAB4ACAAgAB8ACAAhACAACAAFACEAAAAiAAUAAAAjACIAAAACACMAJAAlACYAJwAoACUAJAAnACUAKQAkACYAKgApACsALAAqACsALQAsACsALgAtACsALwAuACsAMAAvACsAMQAwACsAMgAxACsAMwAyACsANAAzACsANQA0ACsANgA1ACsANwA2ACsAOAA5ADYAOgA4ADYAOwA6ADYANwA7ADYAPAA9ADsANwA8ADsANwA+ADwANwA/AEAANwBBAD8ANwBCAEEANwBDAEIANwArAEMAKQBEACsAKQBFAEQAKQBGAEUAKQBHAEYAKQAmAEcAKAACAAEAAQAlACgAJQABAAMAAwAmACUAJgADAAAAAABHACYARwAAAAQABABGAEcARgAEAAYABgBFAEYARQAGAAcABwBEAEUARAAHAAgACAArAEQAKwAIAAwADABDACsAQwAMAA4ADgBCAEMAQgAOAA0ADQBBAEIAQQANAA8ADwA/AEEAPwAPAAsACwBAAD8AQAALAAkACQA3AEAANwAJABIAEgA+ADcAPgASABEAEQA8AD4APAARABMAEwA9ADwAPQATABAAEAA7AD0AOwAQABQAFAA6ADsAOgAUABYAFgA4ADoAOAAWABUAFQA5ADgAOQAVAAoACgA2ADkANgAKABcAFwA1ADYANQAXABgAGAA0ADUANAAYABkAGQAzADQAMwAZABoAGgAyADMAMgAaABsAGwAxADIAMQAbABwAHAAwADEAMAAcAB0AHQAvADAALwAdAB4AHgAuAC8ALgAeAB8AHwAtAC4ALQAfACAAIAAsAC0ALAAgACEAIQAqACwAKgAhAAUABQApACoAKQAFACIAIgAkACkAJAAiACMAIwAnACQAJwAjAAIAAgAoACcA"),
+"lods": [0.00347681, PackedByteArray("BgAAAAUAAAAiAAUAAAACACIACAAGAAUACAAFACAACAAgAB0ACAAdABoACAAaAAoAEAAKABUAEAAJAAoACQAIAAoACQAPAAgADwAOAAgAJAAoACYAKQAkACYAKQAmAEUAKQBFAEQALAApAEQALwAsAEQAMQAvAEQANgAxAEQANwA2AEQANwA4ADYANwA8ADgANwBEAEIANwBCAD8AKAACAAAAAAAmACgAJgAAAAYABgBFACYARQAGAAgACABEAEUARAAIAA4ADgBCAEQAQgAOAA8ADwA/AEIAPwAPAAkACQA3AD8ANwAJABAAEAA8ADcAEAA4ADwAOAAQABUAOAAVAAoACgA2ADgANgAKABoAGgAxADYAMQAaAB0AHQAvADEALwAdACAAIAAsAC8ALAAgAAUABQApACwAKQAFACIAIgAkACkAJAAiAAIAAgAoACQA")],
+"primitive": 3,
+"uv_scale": Vector4(0, 0, 0, 0),
+"vertex_count": 72,
+"vertex_data": PackedByteArray("vZIEuwPUqbtV3o66/XWDu6XQcbxV3o66dutAu+JsjbxV3o66dutAu8PYDrxV3o66cbLdulfR9LpV3o66Sle2O8TYDrxV3o66uO7VOeyxMjdV3o669keVunZ15DtV3o66M6CLumlRRzxV3o66V//iOzbnITxV3o66bCU0PbfHhbpV3o66yHrOO7IKOjxV3o66uH3/upbwbTxV3o66FLvAulFMjTxV3o66lBc8u+7dhzxV3o66ihdjO003ezxV3o66iLO7PF03ujtV3o66SolgPB0yDzxV3o66yogaPHGTLjxV3o66LYedPGnf5jtV3o66bzrjPPZ0njtV3o66k+csPfq1oDpV3o66VHwPPa7XajtV3o66jigcPTQiELtV3o66gyT3POPKgLtV3o66mHPEPDQ+z7tV3o66zkKjPPNP27tV3o66rcKRPEPUzLtV3o66FjFqPDob/btV3o663PtFPDNQ/rtV3o661jBHPJVLF7xV3o66TABJPLbLKLxV3o66JbU4PNZLOrxV3o66t54GPATZMbxV3o667OohO3i6YrxV3o66CkiVukh8hrxV3o667OohO3i6YrwAAAAA/XWDu6XQcbwAAAAAdutAu8PYDrwAAAAACkiVukh8hrwAAAAAdutAu+JsjbwAAAAASle2O8TYDrwAAAAAt54GPATZMbwAAAAAM6CLumlRRzwAAAAAJbU4PNZLOrwAAAAATABJPLbLKLwAAAAA1jBHPJVLF7wAAAAA3PtFPDNQ/rsAAAAAFjFqPDob/bsAAAAArcKRPEPUzLsAAAAAzkKjPPNP27sAAAAAmHPEPDQ+z7sAAAAAgyT3POPKgLsAAAAAjigcPTQiELsAAAAAbCU0PbfHhboAAAAAV//iOzbnITwAAAAAVHwPPa7XajsAAAAAk+csPfq1oDoAAAAAbzrjPPZ0njsAAAAAiLO7PF03ujsAAAAASolgPB0yDzwAAAAALYedPGnf5jsAAAAAyogaPHGTLjwAAAAAihdjO003ezwAAAAAyHrOO7IKOjwAAAAAFLvAulFMjTwAAAAAlBc8u+7dhzwAAAAAuH3/upbwbTwAAAAA9keVunZ15DsAAAAAuO7VOeyxMjcAAAAAcbLdulfR9LoAAAAAvZIEuwPUqbsAAAAA")
+}]
+blend_shape_mode = 0
+
+[sub_resource type="ArrayMesh" id="ArrayMesh_1p3cm"]
+resource_name = "Vert_001"
+_surfaces = [{
+"aabb": AABB(-0.00401187, -0.0172638, -0.00109, 0.0479929, 0.0345121, 0.00109),
+"attribute_data": PackedByteArray("n4JpPWUdGz8Ogo08rBdMP/8oHj3q5lg//ygePekyLT94UYI9OSkKP1iZVT7pMi0/qDfYPcuNAD9g7Jg92ua5PvTvmz2mx4Q+iHpxPnIjnD4d4Hk/EdQFP0arZD6EEY0+34lvPfBVWT40XIs9kJMhPh8wJD24Iy8+QqYqPjDCSD7nHw4/ihbHPr4Pvj5W0ac+vluSPgY6lD78kvY+9iW5PkXNJj/cwM8+XNVwP8qs9D6mGUw/GJDcPnrsWz892ws/ETwzP8a1FD9nlhM/WPQgP4K7/T6V1iI/gOHnPuSTID/rFsQ+3BwoPwR8rT4WTSg/6DyuPg3WLz9CXq8+jUw1PygypT4Nwzo/8+yFPuofOD8KThY+EmJHP2DsmD3CkVQ/Ck4WPhJiRz8Ogo08rBdMP/8oHj3pMi0/YOyYPcKRVD//KB496uZYP1iZVT7pMi0/8+yFPuofOD/075s9pseEPigypT4Nwzo/Ql6vPo1MNT/oPK4+DdYvPwR8rT4WTSg/6xbEPtwcKD+A4ec+5JMgP4K7/T6V1iI/Z5YTP1j0ID8RPDM/xrUUP3rsWz892ws/HeB5PxHUBT+IenE+ciOcPqYZTD8YkNw+XNVwP8qs9D5FzSY/3MDPPucfDj+KFsc+vg++PlbRpz78kvY+9iW5Pr5bkj4GOpQ+QqYqPjDCSD5Gq2Q+hBGNPjRciz2QkyE+HzAkPbgjLz7fiW898FVZPmDsmD3a5rk+qDfYPcuNAD94UYI9OSkKP5+CaT1lHRs//ygePermWD//KB496uZYPw6CjTysF0w/DoKNPKwXTD8Ogo08rBdMPw6CjTysF0w//ygePekyLT//KB496TItP/8oHj3pMi0//ygePekyLT+fgmk9ZR0bP5+CaT1lHRs/n4JpPWUdGz+fgmk9ZR0bP3hRgj05KQo/eFGCPTkpCj94UYI9OSkKP3hRgj05KQo/qDfYPcuNAD+oN9g9y40AP6g32D3LjQA/qDfYPcuNAD9g7Jg92ua5PmDsmD3a5rk+YOyYPdrmuT5g7Jg92ua5PvTvmz2mx4Q+9O+bPabHhD7075s9pseEPvTvmz2mx4Q+34lvPfBVWT7fiW898FVZPt+Jbz3wVVk+34lvPfBVWT4fMCQ9uCMvPh8wJD24Iy8+HzAkPbgjLz4fMCQ9uCMvPjRciz2QkyE+NFyLPZCTIT40XIs9kJMhPjRciz2QkyE+QqYqPjDCSD5Cpio+MMJIPkKmKj4wwkg+QqYqPjDCSD5Gq2Q+hBGNPkarZD6EEY0+RqtkPoQRjT5Gq2Q+hBGNPoh6cT5yI5w+iHpxPnIjnD6IenE+ciOcPoh6cT5yI5w+vluSPgY6lD6+W5I+BjqUPr5bkj4GOpQ+vluSPgY6lD6+D74+VtGnPr4Pvj5W0ac+vg++PlbRpz6+D74+VtGnPvyS9j72Jbk+/JL2PvYluT78kvY+9iW5PvyS9j72Jbk+5x8OP4oWxz7nHw4/ihbHPucfDj+KFsc+5x8OP4oWxz5FzSY/3MDPPkXNJj/cwM8+Rc0mP9zAzz5FzSY/3MDPPqYZTD8YkNw+phlMPxiQ3D6mGUw/GJDcPqYZTD8YkNw+XNVwP8qs9D5c1XA/yqz0PlzVcD/KrPQ+XNVwP8qs9D4d4Hk/EdQFPx3geT8R1AU/HeB5PxHUBT8d4Hk/EdQFP3rsWz892ws/euxbPz3bCz967Fs/PdsLP3rsWz892ws/ETwzP8a1FD8RPDM/xrUUPxE8Mz/GtRQ/ETwzP8a1FD9nlhM/WPQgP2eWEz9Y9CA/Z5YTP1j0ID9nlhM/WPQgP4K7/T6V1iI/grv9PpXWIj+Cu/0+ldYiP4K7/T6V1iI/gOHnPuSTID+A4ec+5JMgP4Dh5z7kkyA/gOHnPuSTID/rFsQ+3BwoP+sWxD7cHCg/6xbEPtwcKD/rFsQ+3BwoPwR8rT4WTSg/BHytPhZNKD8EfK0+Fk0oPwR8rT4WTSg/6DyuPg3WLz/oPK4+DdYvP+g8rj4N1i8/6DyuPg3WLz9CXq8+jUw1P0Jerz6NTDU/Ql6vPo1MNT9CXq8+jUw1PygypT4Nwzo/KDKlPg3DOj8oMqU+DcM6PygypT4Nwzo/8+yFPuofOD/z7IU+6h84P/PshT7qHzg/8+yFPuofOD9YmVU+6TItP1iZVT7pMi0/WJlVPukyLT9YmVU+6TItPwpOFj4SYkc/Ck4WPhJiRz8KThY+EmJHPwpOFj4SYkc/YOyYPcKRVD9g7Jg9wpFUP2DsmD3CkVQ/YOyYPcKRVD//KB496uZYP/8oHj3q5lg/"),
+"format": 34359742487,
+"index_count": 420,
+"index_data": PackedByteArray("AAABAAIAAAADAAEABAAAAAUABgAEAAUABwAGAAUACAAHAAUACQAIAAoACwAMAAgADQAOAAwADwANAAwACwAPAAwACQALAAgAEAAJAAoAEQASAAkAEwARAAkAEAATAAkAFAAQABUAFAAVABYAEAAKABUACAAXAAoACAAYABcACAAZABgACAAaABkACAAbABoACAAcABsACAAdABwACAAeAB0ACAAfAB4ACAAgAB8ACAAhACAACAAFACEAAAAiAAUAAAAjACIAAAACACMAJAAlACYAJwAoACUAJAAnACUAKQAkACYAKgApACsALAAqACsALQAsACsALgAtACsALwAuACsAMAAvACsAMQAwACsAMgAxACsAMwAyACsANAAzACsANQA0ACsANgA1ACsANwA2ACsAOAA5ADYAOgA4ADYAOwA6ADYANwA7ADYAPAA9ADsANwA8ADsANwA+ADwANwA/AEAANwBBAD8ANwBCAEEANwBDAEIANwArAEMAKQBEACsAKQBFAEQAKQBGAEUAKQBHAEYAKQAmAEcASABJAEoASgBLAEgATABNAE4ATgBPAEwAUABRAFIAUgBTAFAAVABVAFYAVgBXAFQAWABZAFoAWgBbAFgAXABdAF4AXgBfAFwAYABhAGIAYgBjAGAAZABlAGYAZgBnAGQAaABpAGoAagBrAGgAbABtAG4AbgBvAGwAcABxAHIAcgBzAHAAdAB1AHYAdgB3AHQAeAB5AHoAegB7AHgAfAB9AH4AfgB/AHwAgACBAIIAggCDAIAAhACFAIYAhgCHAIQAiACJAIoAigCLAIgAjACNAI4AjgCPAIwAkACRAJIAkgCTAJAAlACVAJYAlgCXAJQAmACZAJoAmgCbAJgAnACdAJ4AngCfAJwAoAChAKIAogCjAKAApAClAKYApgCnAKQAqACpAKoAqgCrAKgArACtAK4ArgCvAKwAsACxALIAsgCzALAAtAC1ALYAtgC3ALQAuAC5ALoAugC7ALgAvAC9AL4AvgC/ALwAwADBAMIAwgDDAMAAxADFAMYAxgDHAMQAyADJAMoAygDLAMgAzADNAM4AzgDPAMwA0ADRANIA0gDTANAA1ADVANYA1gDXANQA"),
+"lods": [0.00347681, PackedByteArray("BgAAAAUAAAAiAAUAAAACACIACAAGAAUACAAFACAACAAgAB0ACAAdABoACAAaAAoAEAAKABUAEAAJAAoACQAIAAoACQAPAAgADwAOAAgAJAAoACYAKQAkACYAKQAmAEUAKQBFAEQALAApAEQALwAsAEQAMQAvAEQANgAxAEQANwA2AEQANwA4ADYANwA8ADgANwBEAEIANwBCAD8ASABJAFIAUgBPAEgATwBSAFoAWgBbAE8AXABdAGIAYgBfAFwAXwBiAGoAagBrAF8AbABtAHIAcgBzAGwAcwByAHoAegB7AHMAfAB9AIoAigCDAHwAigCTAIMAkwCKAJYAkwCWAJoAmgCbAJMAnACdAKoAqgCvAJwArwCqALYAtgC3AK8AuAC5AMIAwgDDALgAwwDCAMoAygDLAMMAzADNAM4AzgDPAMwAzwDOANYA1gDXAM8A")],
+"material": SubResource("StandardMaterial3D_nddbk"),
+"primitive": 3,
+"uv_scale": Vector4(0, 0, 0, 0),
+"vertex_count": 216,
+"vertex_data": PackedByteArray("vZIEuwPUqbtV3o66/XWDu6XQcbxV3o66dutAu+JsjbxV3o66dutAu8PYDrxV3o66cbLdulfR9LpV3o66Sle2O8TYDrxV3o66uO7VOeyxMjdV3o669keVunZ15DtV3o66M6CLumlRRzxV3o66V//iOzbnITxV3o66bCU0PbfHhbpV3o66yHrOO7IKOjxV3o66uH3/upbwbTxV3o66FLvAulFMjTxV3o66lBc8u+7dhzxV3o66ihdjO003ezxV3o66iLO7PF03ujtV3o66SolgPB0yDzxV3o66yogaPHGTLjxV3o66LYedPGnf5jtV3o66bzrjPPZ0njtV3o66k+csPfq1oDpV3o66VHwPPa7XajtV3o66jigcPTQiELtV3o66gyT3POPKgLtV3o66mHPEPDQ+z7tV3o66zkKjPPNP27tV3o66rcKRPEPUzLtV3o66FjFqPDob/btV3o663PtFPDNQ/rtV3o661jBHPJVLF7xV3o66TABJPLbLKLxV3o66JbU4PNZLOrxV3o66t54GPATZMbxV3o667OohO3i6YrxV3o66CkiVukh8hrxV3o667OohO3i6YrwAAAAA/XWDu6XQcbwAAAAAdutAu8PYDrwAAAAACkiVukh8hrwAAAAAdutAu+JsjbwAAAAASle2O8TYDrwAAAAAt54GPATZMbwAAAAAM6CLumlRRzwAAAAAJbU4PNZLOrwAAAAATABJPLbLKLwAAAAA1jBHPJVLF7wAAAAA3PtFPDNQ/rsAAAAAFjFqPDob/bsAAAAArcKRPEPUzLsAAAAAzkKjPPNP27sAAAAAmHPEPDQ+z7sAAAAAgyT3POPKgLsAAAAAjigcPTQiELsAAAAAbCU0PbfHhboAAAAAV//iOzbnITwAAAAAVHwPPa7XajsAAAAAk+csPfq1oDoAAAAAbzrjPPZ0njsAAAAAiLO7PF03ujsAAAAASolgPB0yDzwAAAAALYedPGnf5jsAAAAAyogaPHGTLjwAAAAAihdjO003ezwAAAAAyHrOO7IKOjwAAAAAFLvAulFMjTwAAAAAlBc8u+7dhzwAAAAAuH3/upbwbTwAAAAA9keVunZ15DsAAAAAuO7VOeyxMjcAAAAAcbLdulfR9LoAAAAAvZIEuwPUqbsAAAAAdutAu+JsjbwAAAAAdutAu+JsjbxV3o66/XWDu6XQcbxV3o66/XWDu6XQcbwAAAAA/XWDu6XQcbwAAAAA/XWDu6XQcbxV3o66dutAu8PYDrxV3o66dutAu8PYDrwAAAAAdutAu8PYDrwAAAAAdutAu8PYDrxV3o66vZIEuwPUqbtV3o66vZIEuwPUqbsAAAAAvZIEuwPUqbsAAAAAvZIEuwPUqbtV3o66cbLdulfR9LpV3o66cbLdulfR9LoAAAAAcbLdulfR9LoAAAAAcbLdulfR9LpV3o66uO7VOeyxMjdV3o66uO7VOeyxMjcAAAAAuO7VOeyxMjcAAAAAuO7VOeyxMjdV3o669keVunZ15DtV3o669keVunZ15DsAAAAA9keVunZ15DsAAAAA9keVunZ15DtV3o66M6CLumlRRzxV3o66M6CLumlRRzwAAAAAM6CLumlRRzwAAAAAM6CLumlRRzxV3o66uH3/upbwbTxV3o66uH3/upbwbTwAAAAAuH3/upbwbTwAAAAAuH3/upbwbTxV3o66lBc8u+7dhzxV3o66lBc8u+7dhzwAAAAAlBc8u+7dhzwAAAAAlBc8u+7dhzxV3o66FLvAulFMjTxV3o66FLvAulFMjTwAAAAAFLvAulFMjTwAAAAAFLvAulFMjTxV3o66ihdjO003ezxV3o66ihdjO003ezwAAAAAihdjO003ezwAAAAAihdjO003ezxV3o66yHrOO7IKOjxV3o66yHrOO7IKOjwAAAAAyHrOO7IKOjwAAAAAyHrOO7IKOjxV3o66V//iOzbnITxV3o66V//iOzbnITwAAAAAV//iOzbnITwAAAAAV//iOzbnITxV3o66yogaPHGTLjxV3o66yogaPHGTLjwAAAAAyogaPHGTLjwAAAAAyogaPHGTLjxV3o66SolgPB0yDzxV3o66SolgPB0yDzwAAAAASolgPB0yDzwAAAAASolgPB0yDzxV3o66LYedPGnf5jtV3o66LYedPGnf5jsAAAAALYedPGnf5jsAAAAALYedPGnf5jtV3o66iLO7PF03ujtV3o66iLO7PF03ujsAAAAAiLO7PF03ujsAAAAAiLO7PF03ujtV3o66bzrjPPZ0njtV3o66bzrjPPZ0njsAAAAAbzrjPPZ0njsAAAAAbzrjPPZ0njtV3o66VHwPPa7XajtV3o66VHwPPa7XajsAAAAAVHwPPa7XajsAAAAAVHwPPa7XajtV3o66k+csPfq1oDpV3o66k+csPfq1oDoAAAAAk+csPfq1oDoAAAAAk+csPfq1oDpV3o66bCU0PbfHhbpV3o66bCU0PbfHhboAAAAAbCU0PbfHhboAAAAAbCU0PbfHhbpV3o66jigcPTQiELtV3o66jigcPTQiELsAAAAAjigcPTQiELsAAAAAjigcPTQiELtV3o66gyT3POPKgLtV3o66gyT3POPKgLsAAAAAgyT3POPKgLsAAAAAgyT3POPKgLtV3o66mHPEPDQ+z7tV3o66mHPEPDQ+z7sAAAAAmHPEPDQ+z7sAAAAAmHPEPDQ+z7tV3o66zkKjPPNP27tV3o66zkKjPPNP27sAAAAAzkKjPPNP27sAAAAAzkKjPPNP27tV3o66rcKRPEPUzLtV3o66rcKRPEPUzLsAAAAArcKRPEPUzLsAAAAArcKRPEPUzLtV3o66FjFqPDob/btV3o66FjFqPDob/bsAAAAAFjFqPDob/bsAAAAAFjFqPDob/btV3o663PtFPDNQ/rtV3o663PtFPDNQ/rsAAAAA3PtFPDNQ/rsAAAAA3PtFPDNQ/rtV3o661jBHPJVLF7xV3o661jBHPJVLF7wAAAAA1jBHPJVLF7wAAAAA1jBHPJVLF7xV3o66TABJPLbLKLxV3o66TABJPLbLKLwAAAAATABJPLbLKLwAAAAATABJPLbLKLxV3o66JbU4PNZLOrxV3o66JbU4PNZLOrwAAAAAJbU4PNZLOrwAAAAAJbU4PNZLOrxV3o66t54GPATZMbxV3o66t54GPATZMbwAAAAAt54GPATZMbwAAAAAt54GPATZMbxV3o66Sle2O8TYDrxV3o66Sle2O8TYDrwAAAAASle2O8TYDrwAAAAASle2O8TYDrxV3o667OohO3i6YrxV3o667OohO3i6YrwAAAAA7OohO3i6YrwAAAAA7OohO3i6YrxV3o66CkiVukh8hrxV3o66CkiVukh8hrwAAAAACkiVukh8hrwAAAAACkiVukh8hrxV3o66dutAu+JsjbxV3o66dutAu+JsjbwAAAAAAAD//////z8AAP///v//PwAA///+//8/AAD///7//z8AAP//////PwAA///+//8/AAD///7//z8AAP///v//PwAA///+//8/AAD///7//z8AAP///v//PwAA///+//8/AAD///7//z8AAP///v//PwAA///+//8/AAD///7//z8AAP///v//PwAA///+//8/AAD///7//z8AAP///v//PwAA///+//8/AAD///7//z8AAP///v//PwAA//////8/AAD//////z8AAP///v//PwAA///+//8/AAD///7//z8AAP///v//PwAA///+//8/AAD///7//z8AAP///v//PwAA///+//8/AAD///7//z8AAP//////PwAA///+//8//3//f////7//f/9//v//v/9//3////+//3//f////7//f/9//v//v/9//3/+//+//3//f////7//f/9//v//v/9//3/+//+//3//f/7//7//f/9//v//v/9//3/+//+//3//f/7//7//f/9//v//v/9//3/+//+//3//f/7//7//f/9/////v/9//3////+//3//f/7//7//f/9//v//v/9//3/+//+//3//f/7//7//f/9//v//v/9//3/+//+//3//f/7//7//f/9//v//v/9//3/+//+//3//f/7//7//f/9//v//v/9//3/+//+//3//f/7//7//f/9//v//v/9//3////+//3//f/7//7//f/9//v//v/9//3/+//+/RCa7Wf///79EJrtZ////v0Qmu1n///+/RCa7Wf///787EzuT////vzsTO5P///+/OxM7k////787EzuT////v3IacZr///+/chpxmv///79yGnGa////v3IacZr///+/oguii////7+iC6KL////v6ILoov///+/oguii////7+NQ43D////v41DjcP///+/jUONw////7+NQ43D////v0UXuWj///+/RRe5aP///79FF7lo////v0UXuWj///+/ygHJgf///7/KAcmB////v8oByYH///+/ygHJgf///7/oIhZd////v+giFl3///+/6CIWXf///7/oIhZd////v4Enflj///+/gSd+WP///7+BJ35Y////v4Enflj///+/21ba1v///7/bVtrW////v9tW2tb///+/21ba1v///7/Iozbc////v8ijNtz///+/yKM23P///7/Iozbc////v7jKRbX///+/uMpFtf///7+4ykW1////v7jKRbX///+/0tkspv///7/S2Sym////v9LZLKb///+/0tkspv///7/LYcvh////v8thy+H///+/y2HL4f///7/LYcvh////v52nYNj///+/nadg2P///7+dp2DY////v52nYNj///+/CZ704f///78JnvTh////vwme9OH///+/CZ704f///7+Rom3d////v5Gibd3///+/kaJt3f///7+Rom3d////vx2T4ez///+/HZPh7P///78dk+Hs////vx2T4ez///+/wZI87f///7/Bkjzt////v8GSPO3///+/wZI87f///7+gn17g////v6CfXuD///+/oJ9e4P///7+gn17g////v6HHXbj///+/ocdduP///7+hx124////v6HHXbj///+/cZVxFf///79xlXEV////v3GVcRX///+/cZVxFf///7/flt8W////v9+W3xb///+/35bfFv///7/flt8W////v7SjtSP///+/tKO1I////7+0o7Uj////v7SjtSP///+/qoqqCv///7+qiqoK////v6qKqgr///+/qoqqCv///78OavEV////vw5q8RX///+/DmrxFf///78OavEV////v+yl7CX///+/7KXsJf///7/spewl////v+yl7CX///+/GIIZAv///78YghkC////vxiCGQL///+/GIIZAv///7/m+ReG////v+b5F4b///+/5vkXhv///7/m+ReG////v//z/4v///+///P/i////7//8/+L////v//z/4v///+/SMJIQv///79IwkhC////v0jCSEL///+/SMJIQv///7+GbXkS////v4ZteRL///+/hm15Ev///7+GbXkS////v+RGGzn///+/5EYbOf///7/kRhs5////v+RGGzn///+/yM/IT////7/Iz8hP////v8jPyE////+/yM/IT////79UtVU1////v1S1VTX///+/VLVVNf///79UtVU1////v+Ko4yj///+/4qjjKP///7/iqOMo////v+Ko4yj///+/")
+}]
+blend_shape_mode = 0
+shadow_mesh = SubResource("ArrayMesh_f7cot")
+
+[node name="muzzleflash" type="Node3D"]
+script = ExtResource("2_3yxq0")
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+"": SubResource("AnimationLibrary_hlj70")
+}
+autoplay = "muzzleflash"
+movie_quit_on_finish = true
+
+[node name="OmniLight3D" type="OmniLight3D" parent="."]
+transform = Transform3D(1, -7.52316e-37, -3.55271e-15, 0, 1, -2.11758e-22, 3.55271e-15, 2.11758e-22, 1, 0, 0, 0)
+light_color = Color(1, 0.3, 0, 1)
+light_energy = 2.215
+
+[node name="Timer" type="Timer" parent="."]
+wait_time = 0.1
+one_shot = true
+autostart = true
+
+[node name="Node3D" type="Node3D" parent="."]
+transform = Transform3D(1.5234, 0, 0, 0, 1.59234, 0, 0, 0, 0.307491, 0, 0, 0)
+
+[node name="Vert" type="MeshInstance3D" parent="Node3D"]
+transform = Transform3D(-4.37179e-07, 10.0015, 4.37179e-07, 0, -4.37179e-07, 10.0015, 10.0015, 4.37179e-07, 1.91097e-14, 0, 0, 0)
+material_override = ExtResource("2_c664a")
+mesh = SubResource("ArrayMesh_1p3cm")
+skeleton = NodePath("")
+
+[node name="Vert2" type="MeshInstance3D" parent="Node3D"]
+transform = Transform3D(1.91097e-14, 2.84217e-14, -10.0015, -4.37179e-07, 10.0015, 2.84217e-14, 10.0015, 4.37179e-07, 1.91097e-14, 0, 0, 0)
+material_override = ExtResource("2_c664a")
+mesh = SubResource("ArrayMesh_1p3cm")
+skeleton = NodePath("")
diff --git a/content/muzzleflash/muzzleflash_material.tres b/content/muzzleflash/muzzleflash_material.tres
new file mode 100644
index 0000000..11792c2
--- /dev/null
+++ b/content/muzzleflash/muzzleflash_material.tres
@@ -0,0 +1,46 @@
+[gd_resource type="StandardMaterial3D" load_steps=8 format=3 uid="uid://dqp4e2wn3lp1e"]
+
+[ext_resource type="Texture2D" uid="uid://dnavx8bsrg2cp" path="res://content/rifle/Cardboard001_2K-PNG/Cardboard001_2K-PNG_Color.png" id="1_gksjt"]
+[ext_resource type="Texture2D" uid="uid://cpmhd8ni4r5lu" path="res://content/rifle/Cardboard001_2K-PNG/Cardboard001_2K-PNG_Roughness.png" id="2_jh5sx"]
+[ext_resource type="Texture2D" uid="uid://w1qjoj4t60pe" path="res://content/rifle/Cardboard001_2K-PNG/Cardboard001_2K-PNG_Displacement.png" id="3_eyjbo"]
+[ext_resource type="Texture2D" uid="uid://bsemt7rxclix5" path="res://content/muzzleflash/m_14.png" id="4_xci3n"]
+[ext_resource type="Texture2D" uid="uid://dku7f5fijokpn" path="res://content/rifle/Cardboard001_2K-PNG/Cardboard001_2K-PNG_NormalGL.png" id="5_kdn7j"]
+
+[sub_resource type="CurveTexture" id="CurveTexture_oq5c5"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_e1on6"]
+render_priority = 1
+transparency = 2
+alpha_scissor_threshold = 0.5
+alpha_antialiasing_mode = 0
+diffuse_mode = 3
+specular_mode = 1
+albedo_texture = ExtResource("4_xci3n")
+roughness_texture = ExtResource("2_jh5sx")
+normal_enabled = true
+normal_texture = ExtResource("5_kdn7j")
+heightmap_texture = ExtResource("3_eyjbo")
+
+[resource]
+next_pass = SubResource("StandardMaterial3D_e1on6")
+albedo_color = Color(0.56, 0, 0, 1)
+albedo_texture = ExtResource("1_gksjt")
+metallic_specular = 0.02
+roughness_texture = ExtResource("2_jh5sx")
+normal_enabled = true
+normal_scale = 1.7
+normal_texture = ExtResource("5_kdn7j")
+heightmap_enabled = true
+heightmap_scale = 2.658
+heightmap_deep_parallax = true
+heightmap_min_layers = 8
+heightmap_max_layers = 32
+heightmap_texture = ExtResource("3_eyjbo")
+heightmap_flip_texture = true
+backlight_enabled = true
+backlight = Color(0.666569, 0.666569, 0.666569, 1)
+refraction_scale = -0.25
+detail_mask = ExtResource("2_jh5sx")
+detail_albedo = SubResource("CurveTexture_oq5c5")
+uv1_scale = Vector3(4, 4, 4)
+grow_amount = -0.103
diff --git a/content/rifle/animation/animationfiles/LVA4_Armature_Move_Right.res b/content/rifle/animation/animationfiles/LVA4_Armature_Move_Right.res
index 33b7bb7..d00b2cf 100644
Binary files a/content/rifle/animation/animationfiles/LVA4_Armature_Move_Right.res and b/content/rifle/animation/animationfiles/LVA4_Armature_Move_Right.res differ
diff --git a/content/rifle/animation/movement.tres b/content/rifle/animation/movement.tres
index 960a154..5eb1ba0 100644
--- a/content/rifle/animation/movement.tres
+++ b/content/rifle/animation/movement.tres
@@ -1,4 +1,4 @@
-[gd_resource type="AnimationNodeBlendSpace2D" load_steps=7 format=3 uid="uid://dh5bnb5xvmv0f"]
+[gd_resource type="AnimationNodeBlendSpace2D" load_steps=6 format=3 uid="uid://dh5bnb5xvmv0f"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_glk57"]
animation = &"LVA4_Armature_Idle"
@@ -16,9 +16,6 @@ animation = &"LVA4_Armature_Courched_Move_Right"
animation = &"LVA4_Armature_Move_Forward"
play_mode = 1
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_hmil4"]
-animation = &"LVA4_Armature_Sprint_Forward"
-
[resource]
blend_point_0/node = SubResource("AnimationNodeAnimation_glk57")
blend_point_0/pos = Vector2(0, 0)
@@ -30,6 +27,4 @@ blend_point_3/node = SubResource("AnimationNodeAnimation_hwjyc")
blend_point_3/pos = Vector2(-1, 0)
blend_point_4/node = SubResource("AnimationNodeAnimation_owips")
blend_point_4/pos = Vector2(0, -1)
-blend_point_5/node = SubResource("AnimationNodeAnimation_hmil4")
-blend_point_5/pos = Vector2(0, 2)
-max_space = Vector2(1, 2)
+max_space = Vector2(1, 3)
diff --git a/content/rifle/animations.fbx b/content/rifle/animations.fbx
new file mode 100644
index 0000000..0c3b08c
Binary files /dev/null and b/content/rifle/animations.fbx differ
diff --git a/content/rifle/animations.fbx.import b/content/rifle/animations.fbx.import
index 528c5c9..14d395e 100644
--- a/content/rifle/animations.fbx.import
+++ b/content/rifle/animations.fbx.import
@@ -34,7 +34,7 @@ import_script/path=""
_subresources={
"animations": {
"LVA4_Armature|Fire_1": {
-"save_to_file/enabled": true,
+"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "res://content/rifle/animation/Fire1.res",
"settings/loop_mode": 0,
@@ -1833,7 +1833,7 @@ _subresources={
"slices/amount": 0
},
"LVA4_Armature|Fire_2": {
-"save_to_file/enabled": true,
+"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "res://content/rifle/animation/Fire2.res",
"settings/loop_mode": 0,
@@ -3632,7 +3632,7 @@ _subresources={
"slices/amount": 0
},
"LVA4_Armature|Fire_3": {
-"save_to_file/enabled": true,
+"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "res://content/rifle/animation/Fire3.res",
"settings/loop_mode": 0,
@@ -5431,7 +5431,7 @@ _subresources={
"slices/amount": 0
},
"LVA4_Armature|Idle": {
-"save_to_file/enabled": true,
+"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "res://content/rifle/animation/Idle.res",
"settings/loop_mode": 0,
@@ -7230,7 +7230,7 @@ _subresources={
"slices/amount": 0
},
"LVA4_Armature|Move_Forward": {
-"save_to_file/enabled": true,
+"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "res://content/rifle/animation/Movement_Forward.res",
"settings/loop_mode": 0,
@@ -9029,7 +9029,7 @@ _subresources={
"slices/amount": 0
},
"LVA4_Armature|Move_Left": {
-"save_to_file/enabled": true,
+"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "res://content/rifle/animation/Move_Left.res",
"settings/loop_mode": 0,
@@ -10830,7 +10830,7 @@ _subresources={
"LVA4_Armature|Move_Right": {
"save_to_file/enabled": true,
"save_to_file/keep_custom_tracks": "",
-"save_to_file/path": "res://content/rifle/animation/Move_Right.res",
+"save_to_file/path": "res://content/rifle/animation/animationfiles/LVA4_Armature_Move_Right.res",
"settings/loop_mode": 0,
"slice_1/end_frame": 0,
"slice_1/loop_mode": 0,
diff --git a/content/rifle/weapon.tscn b/content/rifle/weapon.tscn
index f06093d..4c69fe3 100644
--- a/content/rifle/weapon.tscn
+++ b/content/rifle/weapon.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=46 format=4 uid="uid://c2x0xjb2ypfpq"]
+[gd_scene load_steps=48 format=4 uid="uid://c2x0xjb2ypfpq"]
[ext_resource type="Material" uid="uid://bmawvuomui06g" path="res://content/rifle/rifle_material.tres" id="1_sj5w7"]
[ext_resource type="AnimationNodeBlendSpace1D" uid="uid://belbtf6saao12" path="res://content/rifle/animation/fire.tres" id="2_s8w6i"]
@@ -371,26 +371,33 @@ blend_point_3/pos = Vector2(-1, 0)
blend_point_4/node = SubResource("AnimationNodeAnimation_ljxg2")
blend_point_4/pos = Vector2(0, -1)
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_boujg"]
-advance_mode = 2
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_cunv4"]
+animation = &"LVA4_Armature_Sprint_Forward"
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_3sv20"]
+[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_esd4g"]
+blend_point_0/node = ExtResource("3_b1dmw")
+blend_point_0/pos = 0.0
+blend_point_1/node = SubResource("AnimationNodeAnimation_cunv4")
+blend_point_1/pos = 1.0
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7g41v"]
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_n5r6e"]
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_y1127"]
switch_mode = 2
advance_mode = 2
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_17ytt"]
-xfade_time = 0.3
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_1c7xu"]
+advance_mode = 2
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_xlhkk"]
-xfade_time = 0.3
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nrl4s"]
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_n5r6e"]
-xfade_time = 0.1
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_d50tw"]
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_y1127"]
-xfade_time = 0.1
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_yxl34"]
+xfade_time = 0.01
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_hwg5x"]
+xfade_time = 0.01
switch_mode = 2
advance_mode = 2
@@ -401,10 +408,10 @@ advance_mode = 2
"states/Crouched Movement/position" = Vector2(639, 100)
states/Fire/node = ExtResource("2_s8w6i")
states/Fire/position = Vector2(394, 203)
-states/Movement/node = ExtResource("3_b1dmw")
+states/Movement/node = SubResource("AnimationNodeBlendSpace1D_esd4g")
states/Movement/position = Vector2(394, 100)
-transitions = ["Start", "Movement", SubResource("AnimationNodeStateMachineTransition_boujg"), "Movement", "Fire", SubResource("AnimationNodeStateMachineTransition_3sv20"), "Fire", "Movement", SubResource("AnimationNodeStateMachineTransition_7g41v"), "Movement", "Crouched Movement", SubResource("AnimationNodeStateMachineTransition_17ytt"), "Crouched Movement", "Movement", SubResource("AnimationNodeStateMachineTransition_xlhkk"), "Crouched Movement", "Crouched Fire", SubResource("AnimationNodeStateMachineTransition_n5r6e"), "Crouched Fire", "Crouched Movement", SubResource("AnimationNodeStateMachineTransition_y1127")]
-graph_offset = Vector2(-130, 34)
+transitions = ["Crouched Movement", "Crouched Fire", SubResource("AnimationNodeStateMachineTransition_n5r6e"), "Crouched Fire", "Crouched Movement", SubResource("AnimationNodeStateMachineTransition_y1127"), "Start", "Movement", SubResource("AnimationNodeStateMachineTransition_1c7xu"), "Movement", "Crouched Movement", SubResource("AnimationNodeStateMachineTransition_nrl4s"), "Crouched Movement", "Movement", SubResource("AnimationNodeStateMachineTransition_d50tw"), "Movement", "Fire", SubResource("AnimationNodeStateMachineTransition_yxl34"), "Fire", "Movement", SubResource("AnimationNodeStateMachineTransition_hwg5x")]
+graph_offset = Vector2(-195, -47)
[node name="weaponAnim" type="Node3D"]
@@ -459,8 +466,8 @@ bones/6/parent = 5
bones/6/rest = Transform3D(0.999755, -0.0152834, 0.0159934, 0.0152834, -0.0454936, -0.998848, 0.0159934, 0.998848, -0.0452489, 0, 4.76836e-11, -7.62939e-10)
bones/6/enabled = true
bones/6/position = Vector3(0, 4.76836e-11, -7.62939e-10)
-bones/6/rotation = Quaternion(0.697307, -0.0240621, 0.0348939, 0.715518)
-bones/6/scale = Vector3(1.01594, 0.973981, 1.01634)
+bones/6/rotation = Quaternion(0.722928, -4.71839e-09, 0.0110615, 0.690835)
+bones/6/scale = Vector3(1, 1, 1)
bones/7/name = "pole_line.R_end"
bones/7/parent = 6
bones/7/rest = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00391025, 0)
@@ -480,8 +487,8 @@ bones/9/parent = 8
bones/9/rest = Transform3D(0.999755, 0.0152834, -0.0159934, -0.0152834, -0.0454936, -0.998848, -0.0159934, 0.998848, -0.0452489, 0, 4.76836e-11, -7.62939e-10)
bones/9/enabled = true
bones/9/position = Vector3(0, 4.76836e-11, -7.62939e-10)
-bones/9/rotation = Quaternion(0.598726, 0.0962081, -0.103502, 0.78839)
-bones/9/scale = Vector3(0.881553, 1.28953, 0.881557)
+bones/9/rotation = Quaternion(0.722928, 4.71839e-09, -0.0110615, 0.690835)
+bones/9/scale = Vector3(1, 1, 1)
bones/10/name = "pole_line.L_end"
bones/10/parent = 9
bones/10/rest = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00391025, 0)
@@ -508,21 +515,21 @@ bones/13/parent = 12
bones/13/rest = Transform3D(0.289313, -0.201567, -0.935772, 0.93034, 0.289312, 0.225315, 0.225315, -0.935772, 0.271228, 0, 0.00139584, 0)
bones/13/enabled = true
bones/13/position = Vector3(0, 0.00139584, 0)
-bones/13/rotation = Quaternion(-0.318315, -0.558796, 0.558771, 0.523639)
+bones/13/rotation = Quaternion(-0.426841, -0.426841, 0.416113, 0.680046)
bones/13/scale = Vector3(1, 1, 1)
bones/14/name = "forearm.R"
bones/14/parent = 13
bones/14/rest = Transform3D(0.967755, 0.113719, 0.224763, 0.180815, 0.307618, -0.934172, -0.175374, 0.94469, 0.277137, 3.1834e-10, 0.00266141, -1.26107e-11)
bones/14/enabled = true
bones/14/position = Vector3(3.1834e-10, 0.00266141, -1.26107e-11)
-bones/14/rotation = Quaternion(0.846854, 0.123844, -0.0280195, 0.516445)
+bones/14/rotation = Quaternion(0.588005, 0.125226, 0.0209983, 0.798829)
bones/14/scale = Vector3(1, 1, 1)
bones/15/name = "hand.R"
bones/15/parent = 14
bones/15/rest = Transform3D(0.998803, -0.0473205, -0.0123773, 0.0478966, 0.997532, 0.0513467, 0.00991698, -0.0518781, 0.998604, -1.36696e-10, 0.00253111, 1.61345e-10)
bones/15/enabled = true
bones/15/position = Vector3(-1.36696e-10, 0.00253111, 1.61345e-10)
-bones/15/rotation = Quaternion(-0.305498, -0.131573, 0.0891728, 0.938833)
+bones/15/rotation = Quaternion(-0.0258225, -0.0055771, 0.0238194, 0.999367)
bones/15/scale = Vector3(1, 1, 1)
bones/16/name = "index_meta.R"
bones/16/parent = 15
@@ -536,21 +543,21 @@ bones/17/parent = 16
bones/17/rest = Transform3D(0.917378, -0.395351, -0.0459933, 0.396836, 0.899629, 0.18218, -0.0306483, -0.18538, 0.982189, 4.75825e-10, 0.000649227, 3.51402e-10)
bones/17/enabled = true
bones/17/position = Vector3(4.75825e-10, 0.000649227, 3.51402e-10)
-bones/17/rotation = Quaternion(-0.0979801, -0.0112315, 0.138692, 0.985413)
+bones/17/rotation = Quaternion(-0.0942872, -0.00393634, 0.203213, 0.974576)
bones/17/scale = Vector3(1, 1, 1)
bones/18/name = "index2.R"
bones/18/parent = 17
bones/18/rest = Transform3D(0.932415, -0.327099, -0.153652, 0.332346, 0.943114, 0.00906678, 0.141946, -0.0595196, 0.988084, -5.00436e-13, 0.000399634, -1.3235e-10)
bones/18/enabled = true
bones/18/position = Vector3(-5.00436e-13, 0.000399634, -1.3235e-10)
-bones/18/rotation = Quaternion(0.00285997, -0.0771369, -0.0955664, 0.992426)
+bones/18/rotation = Quaternion(-0.0174465, -0.0751926, 0.167746, 0.982804)
bones/18/scale = Vector3(1, 1, 1)
bones/19/name = "index3.R"
bones/19/parent = 18
bones/19/rest = Transform3D(0.930111, -0.359594, 0.0747373, 0.358462, 0.933109, 0.0285086, -0.0799896, 0.000274406, 0.996796, 6.75992e-10, 0.000217569, 6.78151e-11)
bones/19/enabled = true
bones/19/position = Vector3(6.75992e-10, 0.000217569, 6.78151e-11)
-bones/19/rotation = Quaternion(-0.014737, 0.0372155, -0.0126211, 0.999119)
+bones/19/rotation = Quaternion(-0.00718539, 0.0393769, 0.18274, 0.982346)
bones/19/scale = Vector3(1, 1, 1)
bones/20/name = "index3.R_end"
bones/20/parent = 19
@@ -578,14 +585,14 @@ bones/23/parent = 22
bones/23/rest = Transform3D(0.745321, -0.659727, 0.0962067, 0.665133, 0.745686, -0.0393761, -0.0457625, 0.0933381, 0.994582, 1.45929e-10, 0.000428075, 4.40949e-11)
bones/23/enabled = true
bones/23/position = Vector3(1.45929e-10, 0.000428075, 4.40949e-11)
-bones/23/rotation = Quaternion(0.0470606, 0.0222304, 0.674114, 0.736792)
+bones/23/rotation = Quaternion(0.0355426, 0.0380212, 0.354815, 0.933487)
bones/23/scale = Vector3(1, 1, 1)
bones/24/name = "middle3.R"
bones/24/parent = 23
bones/24/rest = Transform3D(0.927281, -0.373308, -0.028122, 0.373945, 0.927184, 0.0222794, 0.0177572, -0.0311754, 0.999356, -7.29711e-10, 0.000267549, 1.92479e-10)
bones/24/enabled = true
bones/24/position = Vector3(-7.29711e-10, 0.000267549, 1.92479e-10)
-bones/24/rotation = Quaternion(-0.0161526, -0.00781051, 0.43526, 0.900126)
+bones/24/rotation = Quaternion(-0.0136148, -0.0116853, 0.190323, 0.981557)
bones/24/scale = Vector3(1, 1, 1)
bones/25/name = "middle3.R_end"
bones/25/parent = 24
@@ -613,14 +620,14 @@ bones/28/parent = 27
bones/28/rest = Transform3D(0.875576, -0.421953, 0.235207, 0.445166, 0.89384, -0.0536474, -0.187601, 0.151679, 0.970463, 1.72083e-10, 0.00041303, 3.68731e-11)
bones/28/enabled = true
bones/28/position = Vector3(1.72083e-10, 0.00041303, 3.68731e-11)
-bones/28/rotation = Quaternion(0.102228, 0.0657092, 0.694722, 0.708938)
+bones/28/rotation = Quaternion(0.0530868, 0.109316, 0.224192, 0.966938)
bones/28/scale = Vector3(1, 1, 1)
bones/29/name = "ring3.R"
bones/29/parent = 28
bones/29/rest = Transform3D(0.896325, -0.442626, -0.0261395, 0.443333, 0.893629, 0.0698765, -0.00757009, -0.0742205, 0.997213, -1.47222e-10, 0.0002467, -4.93319e-11)
bones/29/enabled = true
bones/29/position = Vector3(-1.47222e-10, 0.0002467, -4.93319e-11)
-bones/29/rotation = Quaternion(-0.0349312, -0.0131626, -0.00239495, 0.9993)
+bones/29/rotation = Quaternion(-0.0370227, -0.00477103, 0.227628, 0.973032)
bones/29/scale = Vector3(1, 1, 1)
bones/30/name = "ring3.R_end"
bones/30/parent = 29
@@ -648,7 +655,7 @@ bones/33/parent = 32
bones/33/rest = Transform3D(0.900206, -0.418934, 0.118847, 0.430854, 0.896472, -0.103453, -0.0632026, 0.144335, 0.987509, 3.57407e-10, 0.000294327, -1.2612e-10)
bones/33/enabled = true
bones/33/position = Vector3(3.57407e-10, 0.000294327, -1.2612e-10)
-bones/33/rotation = Quaternion(0.0718133, 0.0329945, 0.409986, 0.908662)
+bones/33/rotation = Quaternion(0.063689, 0.0467921, 0.218421, 0.972649)
bones/33/scale = Vector3(1, 1, 1)
bones/34/name = "pinky3.R"
bones/34/parent = 33
@@ -676,14 +683,14 @@ bones/37/parent = 36
bones/37/rest = Transform3D(0.81243, -0.582946, -0.0114595, 0.582738, 0.811175, 0.0491062, -0.0193306, -0.0465732, 0.998728, 3.87094e-10, 0.000535015, -2.64585e-10)
bones/37/enabled = true
bones/37/position = Vector3(3.87094e-10, 0.000535015, -2.64585e-10)
-bones/37/rotation = Quaternion(-0.0719948, 0.0990852, 0.535014, 0.835918)
+bones/37/rotation = Quaternion(-0.0251359, 0.00206782, 0.306236, 0.951621)
bones/37/scale = Vector3(1, 1, 1)
bones/38/name = "thumb2.R"
bones/38/parent = 37
bones/38/rest = Transform3D(0.997504, -0.0704799, -0.00439951, 0.0704634, 0.989289, 0.127834, -0.00465736, -0.127825, 0.991786, 3.60323e-12, 0.000226731, -4.33635e-10)
bones/38/enabled = true
bones/38/position = Vector3(3.60323e-12, 0.000226731, -4.33635e-10)
-bones/38/rotation = Quaternion(0.0321199, 0.0582583, 0.363318, 0.929287)
+bones/38/rotation = Quaternion(-0.0640866, 6.46356e-05, 0.0353305, 0.997319)
bones/38/scale = Vector3(1, 1, 1)
bones/39/name = "thumb2.R_end"
bones/39/parent = 38
@@ -697,7 +704,7 @@ bones/40/parent = 14
bones/40/rest = Transform3D(0.999974, 0.00428396, 0.00580153, -0.00412317, 0.999615, -0.0274478, -0.00591688, 0.0274232, 0.999606, -8.46418e-06, 0.000215645, -6.06698e-05)
bones/40/enabled = true
bones/40/position = Vector3(-8.46418e-06, 0.000215645, -6.06698e-05)
-bones/40/rotation = Quaternion(0.0136277, -0.0359603, -0.00263419, 0.999257)
+bones/40/rotation = Quaternion(0.0137191, 0.0029299, -0.00210199, 0.999899)
bones/40/scale = Vector3(1, 1, 1)
bones/41/name = "twist1.R_end"
bones/41/parent = 40
@@ -711,7 +718,7 @@ bones/42/parent = 14
bones/42/rest = Transform3D(0.999974, 0.00428394, 0.00580145, -0.00412316, 0.999615, -0.0274474, -0.0059168, 0.0274228, 0.999606, -2.00581e-06, 0.00172259, -1.93289e-05)
bones/42/enabled = true
bones/42/position = Vector3(-2.00581e-06, 0.00172259, -1.93289e-05)
-bones/42/rotation = Quaternion(0.0134053, -0.108761, -0.00362036, 0.993971)
+bones/42/rotation = Quaternion(0.0137189, 0.00292986, -0.00210199, 0.999899)
bones/42/scale = Vector3(1, 1, 1)
bones/43/name = "twist3.R_end"
bones/43/parent = 42
@@ -725,7 +732,7 @@ bones/44/parent = 14
bones/44/rest = Transform3D(0.999974, 0.00428412, 0.00580153, -0.00412334, 0.999615, -0.0274478, -0.00591688, 0.0274232, 0.999606, -5.23504e-06, 0.000969117, -3.99994e-05)
bones/44/enabled = true
bones/44/position = Vector3(-5.23504e-06, 0.000969117, -3.99994e-05)
-bones/44/rotation = Quaternion(0.0135139, -0.0780607, -0.00320548, 0.996852)
+bones/44/rotation = Quaternion(0.0137191, 0.0029299, -0.00210208, 0.999899)
bones/44/scale = Vector3(1, 1, 1)
bones/45/name = "twist2.R_end"
bones/45/parent = 44
@@ -753,7 +760,7 @@ bones/48/parent = 14
bones/48/rest = Transform3D(0.999974, 0.00428436, 0.00580146, -0.00412358, 0.999615, -0.0274474, -0.00591682, 0.0274228, 0.999606, -2.00581e-06, 0.00172259, -1.93289e-05)
bones/48/enabled = true
bones/48/position = Vector3(-2.00581e-06, 0.00172259, -1.93289e-05)
-bones/48/rotation = Quaternion(0.0136276, -0.0359604, -0.00263438, 0.999257)
+bones/48/rotation = Quaternion(0.0137189, 0.00292986, -0.0021022, 0.999899)
bones/48/scale = Vector3(1, 1, 1)
bones/49/name = "armweartwist.R_end"
bones/49/parent = 48
@@ -767,7 +774,7 @@ bones/50/parent = 14
bones/50/rest = Transform3D(0.998924, -0.0448829, -0.0116821, 0.0454014, 0.99778, 0.0487276, 0.00946913, -0.0492056, 0.998744, 1.22313e-06, 0.00247606, 1.34137e-06)
bones/50/enabled = true
bones/50/position = Vector3(1.22313e-06, 0.00247606, 1.34137e-06)
-bones/50/rotation = Quaternion(-0.0236133, -0.0440068, 0.0235166, 0.998475)
+bones/50/rotation = Quaternion(-0.0244973, -0.00529082, 0.0225839, 0.999431)
bones/50/scale = Vector3(1, 1, 1)
bones/51/name = "cuff.R_end"
bones/51/parent = 50
@@ -781,7 +788,7 @@ bones/52/parent = 14
bones/52/rest = Transform3D(1, -2.01654e-09, 3.1474e-08, 2.01654e-09, 1, 7.23308e-08, -3.1474e-08, -7.23308e-08, 1, -1.54241e-10, -1.23587e-10, 3.80932e-10)
bones/52/enabled = true
bones/52/position = Vector3(-1.54241e-10, -1.23587e-10, 3.80932e-10)
-bones/52/rotation = Quaternion(-9.58074e-09, -0.0973133, 2.21099e-08, 0.995254)
+bones/52/rotation = Quaternion(-3.61654e-08, 1.5737e-08, 1.00827e-09, 1)
bones/52/scale = Vector3(1, 1, 1)
bones/53/name = "blouse.R_end"
bones/53/parent = 52
@@ -802,21 +809,21 @@ bones/55/parent = 54
bones/55/rest = Transform3D(0.289313, 0.201567, 0.935772, -0.93034, 0.289312, 0.225315, -0.225315, -0.935772, 0.271228, 0, 0.00139584, 0)
bones/55/enabled = true
bones/55/position = Vector3(0, 0.00139584, 0)
-bones/55/rotation = Quaternion(0.00863805, 0.407284, -0.804323, 0.432561)
+bones/55/rotation = Quaternion(-0.426841, 0.426841, -0.416113, 0.680046)
bones/55/scale = Vector3(1, 1, 1)
bones/56/name = "forearm.L"
bones/56/parent = 55
bones/56/rest = Transform3D(0.967755, -0.113719, -0.224763, -0.180815, 0.307618, -0.934172, 0.175374, 0.94469, 0.277137, -3.1834e-10, 0.00266141, -1.26107e-11)
bones/56/enabled = true
bones/56/position = Vector3(-3.1834e-10, 0.00266141, -1.26107e-11)
-bones/56/rotation = Quaternion(0.506861, -0.122564, -0.0331734, 0.852625)
+bones/56/rotation = Quaternion(0.588005, -0.125226, -0.0209983, 0.798829)
bones/56/scale = Vector3(1, 1, 1)
bones/57/name = "hand.L"
bones/57/parent = 56
bones/57/rest = Transform3D(0.998803, 0.0473205, 0.0123773, -0.0478966, 0.997532, 0.0513467, -0.00991698, -0.0518781, 0.998604, 1.36696e-10, 0.00253111, 1.61345e-10)
bones/57/enabled = true
bones/57/position = Vector3(1.36696e-10, 0.00253111, 1.61345e-10)
-bones/57/rotation = Quaternion(-0.121411, -0.114958, 0.149965, 0.974451)
+bones/57/rotation = Quaternion(-0.0258225, 0.0055771, -0.0238194, 0.999367)
bones/57/scale = Vector3(1, 1, 1)
bones/58/name = "index_meta.L"
bones/58/parent = 57
@@ -829,22 +836,22 @@ bones/59/name = "index1.L"
bones/59/parent = 58
bones/59/rest = Transform3D(0.917378, 0.395351, 0.0459933, -0.396836, 0.899629, 0.18218, 0.0306483, -0.18538, 0.982189, -4.75825e-10, 0.000649227, 3.51402e-10)
bones/59/enabled = true
-bones/59/position = Vector3(5.26129e-06, 0.00062688, 4.61317e-06)
-bones/59/rotation = Quaternion(-0.0921515, 0.0504243, 0.195935, 0.974974)
+bones/59/position = Vector3(-4.75825e-10, 0.000649227, 3.51402e-10)
+bones/59/rotation = Quaternion(-0.0942872, 0.00393634, -0.203213, 0.974576)
bones/59/scale = Vector3(1, 1, 1)
bones/60/name = "index2.L"
bones/60/parent = 59
bones/60/rest = Transform3D(0.932415, 0.327099, 0.153652, -0.332346, 0.943114, 0.00906678, -0.141946, -0.0595196, 0.988084, 5.00436e-13, 0.000399634, -1.3235e-10)
bones/60/enabled = true
bones/60/position = Vector3(5.00436e-13, 0.000399634, -1.3235e-10)
-bones/60/rotation = Quaternion(-0.0504229, 0.0584449, -0.605684, 0.791952)
+bones/60/rotation = Quaternion(-0.0174465, 0.0751926, -0.167746, 0.982804)
bones/60/scale = Vector3(1, 1, 1)
bones/61/name = "index3.L"
bones/61/parent = 60
bones/61/rest = Transform3D(0.930111, 0.359594, -0.0747373, -0.358462, 0.933109, 0.0285086, 0.0799896, 0.000274406, 0.996796, -6.75992e-10, 0.000217569, 6.78151e-11)
bones/61/enabled = true
bones/61/position = Vector3(-6.75992e-10, 0.000217569, 6.78151e-11)
-bones/61/rotation = Quaternion(0.0114703, -0.0383484, -0.608711, 0.792382)
+bones/61/rotation = Quaternion(-0.00718539, -0.0393769, -0.18274, 0.982346)
bones/61/scale = Vector3(1, 1, 1)
bones/62/name = "index3.L_end"
bones/62/parent = 61
@@ -864,22 +871,22 @@ bones/64/name = "middle1.L"
bones/64/parent = 63
bones/64/rest = Transform3D(0.897312, 0.438301, 0.0521827, -0.441346, 0.892693, 0.0911681, -0.00662413, -0.104837, 0.994467, -7.31031e-10, 0.00064664, 2.63282e-10)
bones/64/enabled = true
-bones/64/position = Vector3(-1.39904e-05, 0.000607789, 8.6803e-07)
-bones/64/rotation = Quaternion(-0.0560437, 0.00556503, 0.0915036, 0.994211)
+bones/64/position = Vector3(-7.31031e-10, 0.00064664, 2.63282e-10)
+bones/64/rotation = Quaternion(-0.0503773, 0.0151146, -0.226087, 0.972686)
bones/64/scale = Vector3(1, 1, 1)
bones/65/name = "middle2.L"
bones/65/parent = 64
bones/65/rest = Transform3D(0.745321, 0.659727, -0.0962067, -0.665133, 0.745686, -0.0393761, 0.0457625, 0.0933381, 0.994582, -1.45929e-10, 0.000428075, 4.40949e-11)
bones/65/enabled = true
bones/65/position = Vector3(-1.45929e-10, 0.000428075, 4.40949e-11)
-bones/65/rotation = Quaternion(0.0483554, -0.0192523, -0.71875, 0.693318)
+bones/65/rotation = Quaternion(0.0355426, -0.0380212, -0.354815, 0.933487)
bones/65/scale = Vector3(1, 1, 1)
bones/66/name = "middle3.L"
bones/66/parent = 65
bones/66/rest = Transform3D(0.927281, 0.373308, 0.028122, -0.373945, 0.927184, 0.0222794, -0.0177572, -0.0311754, 0.999356, 7.29711e-10, 0.000267549, 1.92479e-10)
bones/66/enabled = true
bones/66/position = Vector3(7.29711e-10, 0.000267549, 1.92479e-10)
-bones/66/rotation = Quaternion(-0.0173623, 0.00452312, -0.601864, 0.798397)
+bones/66/rotation = Quaternion(-0.0136148, 0.0116853, -0.190323, 0.981557)
bones/66/scale = Vector3(1, 1, 1)
bones/67/name = "middle3.L_end"
bones/67/parent = 66
@@ -899,22 +906,22 @@ bones/69/name = "ring1.L"
bones/69/parent = 68
bones/69/rest = Transform3D(0.786512, 0.617183, 0.0219931, -0.611213, 0.783015, -0.115352, -0.0884141, 0.0772832, 0.993081, -7.66656e-10, 0.000618599, -1.41676e-10)
bones/69/enabled = true
-bones/69/position = Vector3(1.30436e-06, 0.000602323, -2.71003e-06)
-bones/69/rotation = Quaternion(0.0409456, -0.0210825, 0.0696472, 0.996508)
+bones/69/position = Vector3(-7.66656e-10, 0.000618599, -1.41676e-10)
+bones/69/rotation = Quaternion(0.0510295, 0.0292471, -0.325405, 0.943744)
bones/69/scale = Vector3(1, 1, 1)
bones/70/name = "ring2.L"
bones/70/parent = 69
bones/70/rest = Transform3D(0.875576, 0.421953, -0.235207, -0.445166, 0.89384, -0.0536474, 0.187601, 0.151679, 0.970463, -1.72083e-10, 0.00041303, 3.68731e-11)
bones/70/enabled = true
bones/70/position = Vector3(-1.72083e-10, 0.00041303, 3.68731e-11)
-bones/70/rotation = Quaternion(0.0377608, -0.115509, -0.0908998, 0.988417)
+bones/70/rotation = Quaternion(0.0530868, -0.109316, -0.224192, 0.966938)
bones/70/scale = Vector3(1, 1, 1)
bones/71/name = "ring3.L"
bones/71/parent = 70
bones/71/rest = Transform3D(0.896325, 0.442626, 0.0261395, -0.443333, 0.893629, 0.0698765, 0.00757009, -0.0742205, 0.997213, 1.47222e-10, 0.0002467, -4.93319e-11)
bones/71/enabled = true
bones/71/position = Vector3(1.47222e-10, 0.0002467, -4.93319e-11)
-bones/71/rotation = Quaternion(-0.0354375, -0.0117314, -0.626531, 0.778502)
+bones/71/rotation = Quaternion(-0.0370227, 0.00477103, -0.227628, 0.973032)
bones/71/scale = Vector3(1, 1, 1)
bones/72/name = "ring3.L_end"
bones/72/parent = 71
@@ -934,22 +941,22 @@ bones/74/name = "pinky1.L"
bones/74/parent = 73
bones/74/rest = Transform3D(0.884728, 0.463521, -0.049038, -0.464454, 0.867839, -0.176462, -0.0392369, 0.178897, 0.983085, -1.94544e-10, 0.000594951, 7.62025e-11)
bones/74/enabled = true
-bones/74/position = Vector3(-8.65005e-06, 0.000669554, 2.38656e-05)
-bones/74/rotation = Quaternion(0.0945839, -0.108202, 0.236727, 0.960889)
+bones/74/position = Vector3(-1.94544e-10, 0.000594951, 7.62025e-11)
+bones/74/rotation = Quaternion(0.0919294, -0.00253551, -0.240062, 0.966392)
bones/74/scale = Vector3(1, 1, 1)
bones/75/name = "pinky2.L"
bones/75/parent = 74
bones/75/rest = Transform3D(0.900206, 0.418934, -0.118847, -0.430854, 0.896472, -0.103453, 0.0632026, 0.144335, 0.987509, -3.57407e-10, 0.000294327, -1.2612e-10)
bones/75/enabled = true
bones/75/position = Vector3(-3.57407e-10, 0.000294327, -1.2612e-10)
-bones/75/rotation = Quaternion(0.0550313, -0.0567217, -0.0538148, 0.995419)
+bones/75/rotation = Quaternion(0.063689, -0.0467921, -0.218421, 0.972649)
bones/75/scale = Vector3(1, 1, 1)
bones/76/name = "pinky3.L"
bones/76/parent = 75
bones/76/rest = Transform3D(0.886375, 0.455138, -0.0847801, -0.450338, 0.890097, 0.0701647, 0.107397, -0.0240126, 0.993926, 7.28884e-10, 0.000161741, 2.67904e-10)
bones/76/enabled = true
bones/76/position = Vector3(7.28884e-10, 0.000161741, 2.67904e-10)
-bones/76/rotation = Quaternion(-0.0284049, -0.0472237, -0.149045, 0.987294)
+bones/76/rotation = Quaternion(-0.0242506, -0.0494855, -0.23316, 0.970876)
bones/76/scale = Vector3(1, 1, 1)
bones/77/name = "pinky3.L_end"
bones/77/parent = 76
@@ -962,22 +969,22 @@ bones/78/name = "thumb_meta.L"
bones/78/parent = 57
bones/78/rest = Transform3D(0.240535, 0.343136, 0.907965, 0.585873, 0.694485, -0.417665, -0.773884, 0.632415, -0.0339863, 7.71225e-05, 0.000177085, 8.39641e-05)
bones/78/enabled = true
-bones/78/position = Vector3(-8.8677e-05, 0.000149522, 3.81399e-05)
-bones/78/rotation = Quaternion(0.293949, 0.638458, 0.159887, 0.69311)
+bones/78/position = Vector3(7.71225e-05, 0.000177085, 8.39641e-05)
+bones/78/rotation = Quaternion(0.380801, 0.609905, 0.088026, 0.68939)
bones/78/scale = Vector3(1, 1, 1)
bones/79/name = "thumb1.L"
bones/79/parent = 78
bones/79/rest = Transform3D(0.81243, 0.582946, 0.0114595, -0.582738, 0.811175, 0.0491062, 0.0193306, -0.0465732, 0.998728, -3.87094e-10, 0.000535015, -2.64585e-10)
bones/79/enabled = true
bones/79/position = Vector3(-3.87094e-10, 0.000535015, -2.64585e-10)
-bones/79/rotation = Quaternion(-0.24679, -0.068873, -0.208296, 0.943909)
+bones/79/rotation = Quaternion(-0.0251359, -0.00206782, -0.306236, 0.951621)
bones/79/scale = Vector3(1, 1, 1)
bones/80/name = "thumb2.L"
bones/80/parent = 79
bones/80/rest = Transform3D(0.997504, 0.0704799, 0.00439951, -0.0704634, 0.989289, 0.127834, 0.00465736, -0.127825, 0.991786, -3.60323e-12, 0.000226731, -4.33635e-10)
bones/80/enabled = true
bones/80/position = Vector3(-3.60323e-12, 0.000226731, -4.33635e-10)
-bones/80/rotation = Quaternion(0.0181542, -0.258237, 0.0705999, 0.963327)
+bones/80/rotation = Quaternion(-0.0640866, -6.46356e-05, -0.0353305, 0.997319)
bones/80/scale = Vector3(1, 1, 1)
bones/81/name = "thumb2.L_end"
bones/81/parent = 80
@@ -991,7 +998,7 @@ bones/82/parent = 56
bones/82/rest = Transform3D(0.999974, -0.00428396, -0.00580153, 0.00412317, 0.999615, -0.0274478, 0.00591688, 0.0274232, 0.999606, 8.46418e-06, 0.000215645, -6.06698e-05)
bones/82/enabled = true
bones/82/position = Vector3(8.46418e-06, 0.000215645, -6.06698e-05)
-bones/82/rotation = Quaternion(0.0137831, -0.030308, 0.00172569, 0.999444)
+bones/82/rotation = Quaternion(0.0137191, -0.0029299, 0.00210199, 0.999899)
bones/82/scale = Vector3(1, 1, 1)
bones/83/name = "twist1.L_end"
bones/83/parent = 82
@@ -1005,7 +1012,7 @@ bones/84/parent = 56
bones/84/rest = Transform3D(0.999974, -0.00428394, -0.00580145, 0.00412316, 0.999615, -0.0274474, 0.0059168, 0.0274228, 0.999606, 2.00581e-06, 0.00172259, -1.93289e-05)
bones/84/enabled = true
bones/84/position = Vector3(2.00581e-06, 0.00172259, -1.93289e-05)
-bones/84/rotation = Quaternion(0.013851, -0.0842436, 0.000979795, 0.996349)
+bones/84/rotation = Quaternion(0.0137189, -0.00292986, 0.00210199, 0.999899)
bones/84/scale = Vector3(1, 1, 1)
bones/85/name = "twist3.L_end"
bones/85/parent = 84
@@ -1019,7 +1026,7 @@ bones/86/parent = 56
bones/86/rest = Transform3D(0.999974, -0.00428412, -0.00580153, 0.00412334, 0.999615, -0.0274478, 0.00591688, 0.0274232, 0.999606, 5.23504e-06, 0.000969117, -3.99994e-05)
bones/86/enabled = true
bones/86/position = Vector3(5.23504e-06, 0.000969117, -3.99994e-05)
-bones/86/rotation = Quaternion(0.0138271, -0.0613429, 0.00129754, 0.99802)
+bones/86/rotation = Quaternion(0.0137191, -0.0029299, 0.00210208, 0.999899)
bones/86/scale = Vector3(1, 1, 1)
bones/87/name = "twist2.L_end"
bones/87/parent = 86
@@ -1047,7 +1054,7 @@ bones/90/parent = 56
bones/90/rest = Transform3D(0.999974, -0.00428436, -0.00580146, 0.00412358, 0.999615, -0.0274474, 0.00591682, 0.0274228, 0.999606, 2.00581e-06, 0.00172259, -1.93289e-05)
bones/90/enabled = true
bones/90/position = Vector3(2.00581e-06, 0.00172259, -1.93289e-05)
-bones/90/rotation = Quaternion(0.0137829, -0.0303079, 0.0017259, 0.999444)
+bones/90/rotation = Quaternion(0.0137189, -0.00292986, 0.0021022, 0.999899)
bones/90/scale = Vector3(1, 1, 1)
bones/91/name = "armweartwist.L_end"
bones/91/parent = 90
@@ -1061,7 +1068,7 @@ bones/92/parent = 56
bones/92/rest = Transform3D(0.998924, 0.0448829, 0.0116821, -0.0454014, 0.99778, 0.0487276, -0.00946913, -0.0492056, 0.998744, -1.22313e-06, 0.00247606, 1.34137e-06)
bones/92/enabled = true
bones/92/position = Vector3(-1.22313e-06, 0.00247606, 1.34137e-06)
-bones/92/rotation = Quaternion(-0.0251143, -0.021956, -0.0219075, 0.999203)
+bones/92/rotation = Quaternion(-0.0244973, 0.00529082, -0.0225839, 0.999431)
bones/92/scale = Vector3(1, 1, 1)
bones/93/name = "cuff.L_end"
bones/93/parent = 92
@@ -1075,7 +1082,7 @@ bones/94/parent = 56
bones/94/rest = Transform3D(1, 2.01654e-09, -3.1474e-08, -2.01654e-09, 1, 7.23308e-08, 3.1474e-08, -7.23308e-08, 1, 1.54241e-10, -1.23587e-10, 3.80932e-10)
bones/94/enabled = true
bones/94/position = Vector3(1.54241e-10, -1.23587e-10, 3.80932e-10)
-bones/94/rotation = Quaternion(6.39691e-09, 0.0116381, 2.94161e-08, 0.999932)
+bones/94/rotation = Quaternion(-3.61654e-08, -1.5737e-08, -1.00827e-09, 1)
bones/94/scale = Vector3(1, 1, 1)
bones/95/name = "blouse.L_end"
bones/95/parent = 94
@@ -1088,8 +1095,8 @@ bones/96/name = "handIK.R"
bones/96/parent = 0
bones/96/rest = Transform3D(0.931583, 0.363365, 0.0109084, 0.0109083, -0.0579345, 0.998261, 0.363365, -0.929844, -0.0579345, 0.00338212, 0.00270377, -0.00286581)
bones/96/enabled = true
-bones/96/position = Vector3(0.00140233, 0.00416331, -0.00257247)
-bones/96/rotation = Quaternion(-0.677046, -0.0368381, 0.19077, 0.70983)
+bones/96/position = Vector3(0.00338212, 0.00270377, -0.00286581)
+bones/96/rotation = Quaternion(-0.715446, -0.130783, -0.130783, 0.673742)
bones/96/scale = Vector3(1, 1, 1)
bones/97/name = "handIK.R_end"
bones/97/parent = 96
@@ -1102,8 +1109,8 @@ bones/98/name = "handIK.L"
bones/98/parent = 0
bones/98/rest = Transform3D(0.931583, -0.363365, -0.0109084, -0.0109083, -0.0579345, 0.998261, -0.363365, -0.929844, -0.0579345, -0.00338212, 0.00270377, -0.00286581)
bones/98/enabled = true
-bones/98/position = Vector3(0.000569891, 0.00432948, -0.00361386)
-bones/98/rotation = Quaternion(-0.654644, -0.206583, -0.11025, 0.718755)
+bones/98/position = Vector3(-0.00338212, 0.00270377, -0.00286581)
+bones/98/rotation = Quaternion(-0.715446, 0.130783, 0.130783, 0.673742)
bones/98/scale = Vector3(1, 1, 1)
bones/99/name = "handIK.L_end"
bones/99/parent = 98
@@ -1146,7 +1153,7 @@ mesh = SubResource("ArrayMesh_lxa88")
skin = SubResource("Skin_1i0dj")
[node name="BoneAttachment3D" type="BoneAttachment3D" parent="LVA4_Armature/Skeleton3D"]
-transform = Transform3D(0.928412, -0.203886, -0.310614, 0.184412, 0.978612, -0.0911602, 0.322557, 0.0273536, 0.946155, 0.00177882, 0.00259276, -0.000976985)
+transform = Transform3D(0.931583, 0.363365, 0.0109077, -0.363365, 0.929844, 0.0579351, 0.010909, -0.0579348, 0.998261, 0.00338212, 0.0028658, -0.00250854)
bone_name = "hand.R"
bone_idx = 15
@@ -1170,4 +1177,5 @@ anim_player = NodePath("..")
"parameters/Crouched Fire/blend_position" = 0
"parameters/Crouched Movement/blend_position" = Vector2(-0.531895, -0.033419)
parameters/Fire/blend_position = 0.0
-parameters/Movement/blend_position = Vector2(0.0347092, 0.657754)
+parameters/Movement/blend_position = 0
+parameters/Movement/0/blend_position = Vector2(0, 0)
diff --git a/content/ui/UI.tscn b/content/ui/UI.tscn
new file mode 100644
index 0000000..489b729
--- /dev/null
+++ b/content/ui/UI.tscn
@@ -0,0 +1,23 @@
+[gd_scene format=3 uid="uid://bwnlcxfwxyj7j"]
+
+[node name="Ui" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="ColorRect" type="ColorRect" parent="."]
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -4.5
+offset_top = -4.5
+offset_right = 4.5
+offset_bottom = 4.5
+grow_horizontal = 2
+grow_vertical = 2
diff --git a/demo/LICENSE_ASSETS.md b/demo/LICENSE_ASSETS.md
new file mode 100644
index 0000000..f2760dc
--- /dev/null
+++ b/demo/LICENSE_ASSETS.md
@@ -0,0 +1,5 @@
+LimboAI Demo project graphical assets (PNG & SVG files in the "assets/" folder)
+Copyright (c) 2024 Aleksandra Snitsaruk
+
+This work is licensed under the Creative Commons Attribution 4.0 International
+license (CC BY 4.0 International): https://creativecommons.org/licenses/by/4.0/
diff --git a/demo/agents/01_agent_melee_simple.tscn b/demo/agents/01_agent_melee_simple.tscn
new file mode 100644
index 0000000..228640a
--- /dev/null
+++ b/demo/agents/01_agent_melee_simple.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=5 format=3 uid="uid://1dnm7tuik8xo"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_l180o"]
+[ext_resource type="Texture2D" uid="uid://cw8s50856x8ct" path="res://demo/assets/agent_melee_simple.png" id="2_bvbes"]
+[ext_resource type="BehaviorTree" uid="uid://bpdm5jnegi38" path="res://demo/ai/trees/01_agent_melee_simple.tres" id="3_tb7cx"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_s08ac"]
+
+[node name="AgentMeleeSimple" instance=ExtResource("1_l180o")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_bvbes")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_bvbes")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_bvbes")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_bvbes")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_bvbes")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_bvbes")
+
+[node name="Health" parent="." index="3"]
+max_health = 3.0
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_tb7cx")
+blackboard_plan = SubResource("BlackboardPlan_s08ac")
diff --git a/demo/agents/02_agent_charger.tscn b/demo/agents/02_agent_charger.tscn
new file mode 100644
index 0000000..5a5b780
--- /dev/null
+++ b/demo/agents/02_agent_charger.tscn
@@ -0,0 +1,37 @@
+[gd_scene load_steps=5 format=3 uid="uid://g1pnvanyxcpa"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_n83hi"]
+[ext_resource type="Texture2D" uid="uid://ce16nc0wy2s8" path="res://demo/assets/agent_charger.png" id="2_y7pic"]
+[ext_resource type="BehaviorTree" uid="uid://ylife72ym5et" path="res://demo/ai/trees/02_agent_charger.tres" id="3_nacc3"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_pmyhf"]
+
+[node name="AgentCharger" instance=ExtResource("1_n83hi")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_y7pic")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_y7pic")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_y7pic")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_y7pic")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_y7pic")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_y7pic")
+
+[node name="Hitbox" parent="Root" index="1"]
+damage = 2.0
+
+[node name="Health" parent="." index="3"]
+max_health = 8.0
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="4"]
+behavior_tree = ExtResource("3_nacc3")
+blackboard_plan = SubResource("BlackboardPlan_pmyhf")
diff --git a/demo/agents/03_agent_imp.tscn b/demo/agents/03_agent_imp.tscn
new file mode 100644
index 0000000..e3533c9
--- /dev/null
+++ b/demo/agents/03_agent_imp.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=5 format=3 uid="uid://730bthc0ywhd"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_13xup"]
+[ext_resource type="Texture2D" uid="uid://h70okn6hmxum" path="res://demo/assets/agent_imp.png" id="2_xd5s8"]
+[ext_resource type="BehaviorTree" uid="uid://c2bxoo68ywb27" path="res://demo/ai/trees/03_agent_imp.tres" id="3_furh3"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_aog23"]
+
+[node name="AgentImp" instance=ExtResource("1_13xup")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_xd5s8")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_xd5s8")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_xd5s8")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_xd5s8")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_xd5s8")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_xd5s8")
+
+[node name="Health" parent="." index="3"]
+max_health = 4.0
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_furh3")
+blackboard_plan = SubResource("BlackboardPlan_aog23")
diff --git a/demo/agents/04_agent_skirmisher.tscn b/demo/agents/04_agent_skirmisher.tscn
new file mode 100644
index 0000000..2a71d9f
--- /dev/null
+++ b/demo/agents/04_agent_skirmisher.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=5 format=3 uid="uid://co6yeafaljbq0"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_2ir76"]
+[ext_resource type="Texture2D" uid="uid://l042ovqqsy3l" path="res://demo/assets/agent_skirmisher.png" id="2_w8tqw"]
+[ext_resource type="BehaviorTree" uid="uid://qqmjvbeibatn" path="res://demo/ai/trees/04_agent_skirmisher.tres" id="3_bhfkv"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_vjbry"]
+
+[node name="AgentSkirmisher" instance=ExtResource("1_2ir76")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_w8tqw")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_w8tqw")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_w8tqw")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_w8tqw")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_w8tqw")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_w8tqw")
+
+[node name="Health" parent="." index="3"]
+max_health = 7.0
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="4"]
+behavior_tree = ExtResource("3_bhfkv")
+blackboard_plan = SubResource("BlackboardPlan_vjbry")
diff --git a/demo/agents/05_agent_ranged.tscn b/demo/agents/05_agent_ranged.tscn
new file mode 100644
index 0000000..04e4eb8
--- /dev/null
+++ b/demo/agents/05_agent_ranged.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=5 format=3 uid="uid://ci3x5esepbu5v"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_oa4xm"]
+[ext_resource type="Texture2D" uid="uid://cjts4ennjtepg" path="res://demo/assets/agent_ranged.png" id="2_37lvn"]
+[ext_resource type="BehaviorTree" uid="uid://cqluon1y1hnn5" path="res://demo/ai/trees/05_agent_ranged.tres" id="3_f7r5w"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_2kwy7"]
+
+[node name="AgentRanged" instance=ExtResource("1_oa4xm")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_37lvn")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_37lvn")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_37lvn")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_37lvn")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_37lvn")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_37lvn")
+
+[node name="Health" parent="." index="3"]
+max_health = 6.0
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="4"]
+behavior_tree = ExtResource("3_f7r5w")
+blackboard_plan = SubResource("BlackboardPlan_2kwy7")
diff --git a/demo/agents/06_agent_melee_combo.tscn b/demo/agents/06_agent_melee_combo.tscn
new file mode 100644
index 0000000..242845b
--- /dev/null
+++ b/demo/agents/06_agent_melee_combo.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=5 format=3 uid="uid://blxmw2w1h2s0s"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_dny3b"]
+[ext_resource type="Texture2D" uid="uid://bo0ibp7tvjbba" path="res://demo/assets/agent_combo.png" id="2_4rqld"]
+[ext_resource type="BehaviorTree" uid="uid://cpncl1db8j12f" path="res://demo/ai/trees/06_agent_melee_combo.tres" id="3_l805q"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_67ric"]
+
+[node name="AgentMeleeCombo" instance=ExtResource("1_dny3b")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_4rqld")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_4rqld")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_4rqld")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_4rqld")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_4rqld")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_4rqld")
+
+[node name="Health" parent="." index="3"]
+max_health = 6.0
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="4"]
+behavior_tree = ExtResource("3_l805q")
+blackboard_plan = SubResource("BlackboardPlan_67ric")
diff --git a/demo/agents/07_agent_melee_nuanced.tscn b/demo/agents/07_agent_melee_nuanced.tscn
new file mode 100644
index 0000000..57f9bfa
--- /dev/null
+++ b/demo/agents/07_agent_melee_nuanced.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=5 format=3 uid="uid://2e4ohaqjaawb"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_afx5l"]
+[ext_resource type="Texture2D" uid="uid://usu3j55d6dgc" path="res://demo/assets/agent_melee_nuanced.png" id="2_e51r0"]
+[ext_resource type="BehaviorTree" uid="uid://c2u6sljqkim0n" path="res://demo/ai/trees/07_agent_melee_nuanced.tres" id="3_b8kcf"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_tnf02"]
+
+[node name="AgentMeleeNuanced" instance=ExtResource("1_afx5l")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_e51r0")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_e51r0")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_e51r0")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_e51r0")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_e51r0")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_e51r0")
+
+[node name="Health" parent="." index="3"]
+max_health = 6.0
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="4"]
+behavior_tree = ExtResource("3_b8kcf")
+blackboard_plan = SubResource("BlackboardPlan_tnf02")
diff --git a/demo/agents/08_agent_demon.tscn b/demo/agents/08_agent_demon.tscn
new file mode 100644
index 0000000..5bbd3cb
--- /dev/null
+++ b/demo/agents/08_agent_demon.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=5 format=3 uid="uid://dbmcufef0cc4b"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_115kp"]
+[ext_resource type="Texture2D" uid="uid://d1tx7u8ho0r4v" path="res://demo/assets/agent_demon.png" id="2_cb5f2"]
+[ext_resource type="BehaviorTree" uid="uid://cpcnbi81jqge4" path="res://demo/ai/trees/08_agent_demon.tres" id="3_ebd57"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_5sr4g"]
+
+[node name="AgentDemon" instance=ExtResource("1_115kp")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_cb5f2")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_cb5f2")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_cb5f2")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_cb5f2")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_cb5f2")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_cb5f2")
+
+[node name="Health" parent="." index="3"]
+max_health = 8.0
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_ebd57")
+blackboard_plan = SubResource("BlackboardPlan_5sr4g")
diff --git a/demo/agents/09_agent_summoner.tscn b/demo/agents/09_agent_summoner.tscn
new file mode 100644
index 0000000..c8362d3
--- /dev/null
+++ b/demo/agents/09_agent_summoner.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=5 format=3 uid="uid://bycvi2fb0f7ue"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_neifu"]
+[ext_resource type="Texture2D" uid="uid://ombnpn2edldt" path="res://demo/assets/agent_summoner.png" id="2_fcti4"]
+[ext_resource type="BehaviorTree" uid="uid://cpxk7jnqpwwlc" path="res://demo/ai/trees/09_agent_summoner.tres" id="3_bunpq"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_bqv3d"]
+
+[node name="AgentSummoner" instance=ExtResource("1_neifu")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_fcti4")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_fcti4")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_fcti4")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_fcti4")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_fcti4")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_fcti4")
+
+[node name="Health" parent="." index="3"]
+max_health = 8.0
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_bunpq")
+blackboard_plan = SubResource("BlackboardPlan_bqv3d")
diff --git a/demo/agents/agent_base.tscn b/demo/agents/agent_base.tscn
new file mode 100644
index 0000000..84650b5
--- /dev/null
+++ b/demo/agents/agent_base.tscn
@@ -0,0 +1,4528 @@
+[gd_scene load_steps=36 format=3 uid="uid://ooigbfhfy4wa"]
+
+[ext_resource type="Texture2D" uid="uid://dlo1ine6p5di4" path="res://demo/assets/agent_bobby.png" id="1_1u51b"]
+[ext_resource type="Script" path="res://demo/agents/scripts/agent_base.gd" id="1_n8vy2"]
+[ext_resource type="Texture2D" uid="uid://dj4oayt5ttvh8" path="res://demo/assets/fx.png" id="2_lv102"]
+[ext_resource type="Texture2D" uid="uid://dwhhxj5557qrb" path="res://demo/assets/shadow.png" id="2_vr0jo"]
+[ext_resource type="Texture2D" uid="uid://2uyxh7sy8qny" path="res://demo/assets/weapon_ninja_star.png" id="4_1c5xq"]
+[ext_resource type="Texture2D" uid="uid://bdusy0qqtw0th" path="res://demo/assets/smoke.png" id="4_mnb6v"]
+[ext_resource type="Script" path="res://demo/agents/scripts/health.gd" id="4_qwtrf"]
+[ext_resource type="Script" path="res://demo/agents/scripts/hitbox.gd" id="5_taq6b"]
+[ext_resource type="Script" path="res://demo/agents/scripts/hurtbox.gd" id="6_jnvxm"]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_2k81i"]
+size = Vector2(140, 40)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_26abe"]
+size = Vector2(88, 40)
+
+[sub_resource type="Curve" id="Curve_noh01"]
+_data = [Vector2(0, 0.010989), 0.0, 0.0, 0, 0, Vector2(0.151111, 1), 1.3559, 1.3559, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_sb0wp"]
+curve = SubResource("Curve_noh01")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_f5i1x"]
+lifetime_randomness = 0.5
+particle_flag_disable_z = true
+emission_shape = 3
+emission_box_extents = Vector3(40, 1, 1)
+direction = Vector3(0, -1, 0)
+spread = 90.0
+initial_velocity_min = 150.0
+initial_velocity_max = 250.0
+angular_velocity_min = -90.0
+angular_velocity_max = 90.0
+gravity = Vector3(0, 0, 0)
+radial_accel_min = -90.0
+radial_accel_max = 90.0
+damping_min = 200.0
+damping_max = 200.0
+scale_min = 0.8
+scale_max = 1.2
+scale_curve = SubResource("CurveTexture_sb0wp")
+
+[sub_resource type="Curve" id="Curve_e33mb"]
+_data = [Vector2(0, 0.010989), 0.0, 0.0, 0, 0, Vector2(0.151111, 1), 1.3559, 1.3559, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_qti8k"]
+curve = SubResource("Curve_e33mb")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_gmal1"]
+lifetime_randomness = 0.5
+particle_flag_disable_z = true
+emission_shape = 3
+emission_box_extents = Vector3(40, 1, 1)
+direction = Vector3(0, -1, 0)
+spread = 90.0
+initial_velocity_min = 150.0
+initial_velocity_max = 250.0
+angular_velocity_min = -90.0
+angular_velocity_max = 90.0
+gravity = Vector3(0, 0, 0)
+radial_accel_min = -90.0
+radial_accel_max = 90.0
+damping_min = 200.0
+damping_max = 200.0
+scale_min = 0.8
+scale_max = 1.2
+scale_curve = SubResource("CurveTexture_qti8k")
+color = Color(0.913725, 0.8, 0.898039, 1)
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_0c228"]
+
+[sub_resource type="Animation" id="Animation_nvm4d"]
+resource_name = "RESET"
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig/LegR:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(31, 65)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig/LegR: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("Root/Rig/LegR:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/Body:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(5, 53)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/Body: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("Root/Rig/Body: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("Root/Rig/Body/Hat:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(2, -91)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-60, -53)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(51, -51)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/LegL:position")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-29, 65)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/LegL:rotation")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/LegL:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("FX/Cloud:visible")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Hitbox/HitboxCollisionShape2D:disabled")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig:modulate")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(1, 1, 1, 1)]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Root/Rig:position")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, -76)]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("Root/Rig:rotation")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/23/type = "value"
+tracks/23/imported = false
+tracks/23/enabled = true
+tracks/23/path = NodePath("Root/Rig:scale")
+tracks/23/interp = 1
+tracks/23/loop_wrap = true
+tracks/23/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/24/type = "value"
+tracks/24/imported = false
+tracks/24/enabled = true
+tracks/24/path = NodePath("FX/Death:emitting")
+tracks/24/interp = 1
+tracks/24/loop_wrap = true
+tracks/24/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/25/type = "value"
+tracks/25/imported = false
+tracks/25/enabled = true
+tracks/25/path = NodePath("Root/Rig/Body/HandL/WeaponNinjaStar:visible")
+tracks/25/interp = 1
+tracks/25/loop_wrap = true
+tracks/25/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/26/type = "value"
+tracks/26/imported = false
+tracks/26/enabled = true
+tracks/26/path = NodePath("Root/Hitbox:knockback_enabled")
+tracks/26/interp = 1
+tracks/26/loop_wrap = true
+tracks/26/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/27/type = "value"
+tracks/27/imported = false
+tracks/27/enabled = true
+tracks/27/path = NodePath("Root/Hurtbox/HurtboxCollisionShape2D:disabled")
+tracks/27/interp = 1
+tracks/27/loop_wrap = true
+tracks/27/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+
+[sub_resource type="Animation" id="Animation_8wj70"]
+resource_name = "attack_1"
+length = 0.28
+step = 0.01
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(0, -76), Vector2(0, -76)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig:rotation")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.0]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Root/Rig:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/LegL:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-48, 48), Vector2(-55, 35), Vector2(-55, 35), Vector2(-29, 65)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/LegL:rotation")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.918872, 1.36873, 1.36873, 0.0]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/LegL:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/LegR:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(35, 68), Vector2(31, 65)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/LegR:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [-0.125403, 0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/LegR:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(5, 53), Vector2(5, 53), Vector2(5, 53)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.204683, 0.274184, 0.274184, 0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1.1, 0.9), Vector2(1.1, 0.9), Vector2(1.1, 0.9), Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(2, -91), Vector2(2, -91)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-77.4704, -36.9794), Vector2(71.4321, -75.3422), Vector2(71.4321, -75.3422), Vector2(-60, -53)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.8, 1.8), Vector2(1.8, 1.8), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(71.4504, -76.2001), Vector2(-47.4494, -37.9368), Vector2(-47.4494, -37.9368), Vector2(51, -51)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1.6, 1.6), Vector2(1.6, 1.6), Vector2(1.6, 1.6), Vector2(1, 1)]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Root/Hitbox/HitboxCollisionShape2D:disabled")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 1,
+"values": [true, false, true, true]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("Root/Hitbox:knockback_enabled")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [false, false, false]
+}
+
+[sub_resource type="Animation" id="Animation_s1dey"]
+resource_name = "attack_2"
+length = 0.3
+step = 0.01
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, -76)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig: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("Root/Rig:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/LegL:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-29, 65), Vector2(-29, 65), Vector2(-48, 48)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/LegL:rotation")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.397498, 0.918872]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/LegL:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/LegR:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(50, 51), Vector2(35, 68)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/LegR:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, -0.401688, -0.125403]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/LegR:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(5, 53), Vector2(5, 53)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, -0.278326, 0.204683]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.9, 1.1), Vector2(1.1, 0.9)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(2, -91)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-60, -53), Vector2(-1.7771, -44.1117), Vector2(-77.4704, -36.9794)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(51, -51), Vector2(-70.2132, -64.2738), Vector2(71.4504, -76.2001)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.25),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.6, 1.6)]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Root/Hitbox/HitboxCollisionShape2D:disabled")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0, 0.25, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("Root/Hitbox:knockback_enabled")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [false, false, false]
+}
+
+[sub_resource type="Animation" id="Animation_g7a0r"]
+resource_name = "attack_3"
+length = 0.35
+step = 0.05
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig/Body:position")
+tracks/0/interp = 2
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(-5, 40), Vector2(-5, 40)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig/Body:rotation")
+tracks/1/interp = 2
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, -0.349066, 0.436332]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Root/Rig/Body:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.9, 1.1), Vector2(1.1, 0.9)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(2, -91)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/Body/Hat: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("Root/Rig/Body/Hat: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("Root/Rig/Body/HandL:position")
+tracks/6/interp = 2
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.25, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-60, -53), Vector2(-93.4894, -42.3521), Vector2(6.40698, 1.6281), Vector2(68.5276, -75.9627)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/7/interp = 2
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.25, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 1.70101, 0.0, 0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(2, 2), Vector2(3, 3)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/9/interp = 2
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(51, -51), Vector2(-1.40495, -52.6598), Vector2(-66.8689, -27.8787)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/10/interp = 2
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/LegL:position")
+tracks/12/interp = 2
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-29, 65), Vector2(-57, 59), Vector2(37, 63)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/LegL:rotation")
+tracks/13/interp = 2
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.706805, -0.742333]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/LegL:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/LegR:position")
+tracks/15/interp = 2
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(31, 65), Vector2(-45, 39)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/LegR:rotation")
+tracks/16/interp = 2
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, -0.477383, 1.06217]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/LegR:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("FX/Cloud:visible")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Hitbox/HitboxCollisionShape2D:disabled")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.25, 0.35),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Hitbox:knockback_enabled")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0.2, 0.35),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+
+[sub_resource type="Animation" id="Animation_jcwlt"]
+resource_name = "charge"
+length = 0.2
+loop_mode = 1
+step = 0.05
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, -76)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig: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("Root/Rig:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/LegL:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-16, 67), Vector2(-43, 30), Vector2(17, 26), Vector2(51, 50), Vector2(-16, 67)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/LegL:rotation")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.518326, 0.991314, 0.518326, -1.96385, 0.518326]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/LegL:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/LegR:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(23, 69), Vector2(74, 43), Vector2(6, 23), Vector2(-35, 47), Vector2(23, 69)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/LegR:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.811128, -0.351373, 0.811128, 1.40327, 0.811128]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/LegR:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(5, 53), Vector2(5, 53), Vector2(5, 53), Vector2(5, 53)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.553472, 0.61588, 0.553472, 0.61588, 0.553472]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(2, -91)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1.1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(8.86381, -27.008), Vector2(17.3173, -25.7316), Vector2(8.86381, -27.008), Vector2(17.3173, -25.7316), Vector2(8.86381, -27.008)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(22.4758, -47.2741)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Root/Hitbox/HitboxCollisionShape2D:disabled")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, false]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("Root/Hitbox:knockback_enabled")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, true]
+}
+
+[sub_resource type="Animation" id="Animation_sva81"]
+resource_name = "charge_prepare"
+length = 0.3
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, -76)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig: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("Root/Rig:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/LegL:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-29, 65), Vector2(-46, 66), Vector2(-16, 67)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/LegL:rotation")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.518326, 0.518326]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/LegL:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/LegR:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(55, 35), Vector2(23, 69)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/LegR:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, -1.03322, 0.811128]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/LegR:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(5, 53), Vector2(5, 53)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, -0.455647, 0.553472]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.1, 0.9), Vector2(0.9, 1.1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(2, -91), Vector2(2, -91), Vector2(2, -91)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0872665]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-60, -53), Vector2(-77.6176, -56.3868), Vector2(36.6639, -43.1139)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(51, -51), Vector2(-42.71, -65.1758), Vector2(48.1987, -60.7003)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_5k1rd"]
+resource_name = "dance"
+length = 1.8
+loop_mode = 1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.1, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(2, -91), Vector2(2, -91), Vector2(2, -91)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.1, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.1, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(47.3684, -50.4762), Vector2(36, -51), Vector2(66, -51), Vector2(36, -51), Vector2(66, -51), Vector2(66, -21), Vector2(66, -81), Vector2(66, -21), Vector2(66, -81), Vector2(66, -21), Vector2(47.3684, -50.4762)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/Body:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(5, 53), Vector2(5, 53), Vector2(5, 56), Vector2(5, 53), Vector2(5, 56), Vector2(5, 53), Vector2(5, 56), Vector2(5, 53)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(0.95, 1.05), Vector2(0.95, 1.05), Vector2(1.05, 0.95), Vector2(0.95, 1.05), Vector2(1.05, 0.95), Vector2(0.95, 1.05), Vector2(1.05, 0.95), Vector2(0.95, 1.05), Vector2(1.05, 0.95), Vector2(0.95, 1.05), Vector2(0.95, 1.05)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/LegR:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(46, 65), Vector2(16, 65), Vector2(46, 65), Vector2(16, 65), Vector2(31, 65), Vector2(31, 65), Vector2(31, 65)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/LegR:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/LegR:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/LegL:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-29, 65), Vector2(-14, 65), Vector2(-44, 65), Vector2(-14, 65), Vector2(-44, 65), Vector2(-29, 65), Vector2(-29, 65), Vector2(-29, 65)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/LegL:rotation")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/LegL:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig:position")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.1, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(0, -76), Vector2(0, -76), Vector2(0, -76)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig:rotation")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.1, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.1, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-31.5789, -50.4762), Vector2(-75, -53), Vector2(-15, -53), Vector2(-75, -53), Vector2(-15, -53), Vector2(-15, -83), Vector2(-15, -23), Vector2(-15, -83), Vector2(-15, -23), Vector2(-15, -83), Vector2(-31.5789, -50.4762)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.8),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_wei72"]
+resource_name = "death"
+length = 0.5
+step = 0.05
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig/LegL:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-29, 65), Vector2(-29, 65), Vector2(-29, 65)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig/LegL:rotation")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, -1.0566]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Root/Rig/LegL:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/LegR:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(31, 65), Vector2(-12.2578, 72.9572)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/LegR:rotation")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, -0.693514]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/LegR:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/Body:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(5, 53)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(2, -91)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-60, -53), Vector2(-60, -53), Vector2(-34.0705, -33.1026)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(51, -51), Vector2(51, -51), Vector2(27.9362, -34.8835)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = false
+tracks/18/path = NodePath("FX/Cloud:visible")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Rig:position")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(0, -76), Vector2(-5, -120), Vector2(0, -40)]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig:rotation")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, -0.801138, -1.60228]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Root/Rig:scale")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("Root/Rig:modulate")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3, 0.4, 0.5),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0.321569), Color(1, 1, 1, 0.588235), Color(1, 1, 1, 0)]
+}
+tracks/23/type = "value"
+tracks/23/imported = false
+tracks/23/enabled = true
+tracks/23/path = NodePath("FX/Death:emitting")
+tracks/23/interp = 1
+tracks/23/loop_wrap = true
+tracks/23/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.5),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [false, true, false]
+}
+tracks/24/type = "value"
+tracks/24/imported = false
+tracks/24/enabled = true
+tracks/24/path = NodePath("Root/Rig/Body/HandL/WeaponNinjaStar:visible")
+tracks/24/interp = 1
+tracks/24/loop_wrap = true
+tracks/24/keys = {
+"times": PackedFloat32Array(0, 0.5),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, false]
+}
+
+[sub_resource type="Animation" id="Animation_msfb2"]
+resource_name = "dodge"
+length = 0.4
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(0, -76), Vector2(0, -38), Vector2(0, -76)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig:rotation")
+tracks/1/interp = 2
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 2,
+"values": [0.0, 2.35619, 6.28319, 12.5664]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Root/Rig:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 0.5), Vector2(1, 0.5), Vector2(1, 0.5), Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/LegL:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-29, 65), Vector2(-24.8287, 40.1066), Vector2(-24.8287, 40.1066), Vector2(-29, 65)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/LegL:rotation")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/LegL:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/LegR:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(26.1794, 41.8884), Vector2(26.1794, 41.8884), Vector2(31, 65)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/LegR:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/LegR:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(5, 53), Vector2(5, 53), Vector2(5, 53)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(2, -91), Vector2(2, -91), Vector2(2, -91), Vector2(2, -91)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-60, -53), Vector2(-19.9999, -52.9358), Vector2(-19.9999, -52.9358), Vector2(-60, -53)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(51, -51), Vector2(21.9955, -54.1155), Vector2(21.9955, -54.1155), Vector2(51, -51)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0, 0.0]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Root/Hitbox/HitboxCollisionShape2D:disabled")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0, 0.0001, 0.1, 0.2, 0.3, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 1,
+"values": [true, true, true, true, true, true]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("Root/Hurtbox/HurtboxCollisionShape2D:disabled")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0, 0.4),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+
+[sub_resource type="Animation" id="Animation_gowr5"]
+resource_name = "hurt"
+length = 0.25
+step = 0.01
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig/Body:position")
+tracks/0/interp = 2
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(-9, 29)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig/Body:rotation")
+tracks/1/interp = 2
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 2),
+"update": 0,
+"values": [0.0, -0.459832]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Root/Rig/Body:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.9, 1.1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = false
+tracks/3/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/3/interp = 2
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(2, -91), Vector2(-23.375, -110.918)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/4/interp = 2
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, -0.169267]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/6/interp = 2
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(-60, -53), Vector2(-86.123, -33.8822)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/7/interp = 2
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/9/interp = 2
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(51, -51), Vector2(-4.62756, -33.3235)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/10/interp = 2
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/LegL:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-29, 65)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/LegL:rotation")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/LegL:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/LegR:position")
+tracks/15/interp = 2
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(37, 14)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/LegR:rotation")
+tracks/16/interp = 2
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, -0.896359]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/LegR:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("FX/Cloud:visible")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Hitbox/HitboxCollisionShape2D:disabled")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.25),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, true]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig:modulate")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 0.11, 0.22),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Color(1, 1, 1, 1), Color(0.721569, 0, 0.0352941, 1), Color(1, 1, 1, 1)]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Root/Rig/Body/HandL/WeaponNinjaStar:visible")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0, 0.25),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, false]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("Root/Hitbox:knockback_enabled")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0, 0.25),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, false]
+}
+
+[sub_resource type="Animation" id="Animation_gnqgt"]
+resource_name = "idle"
+length = 0.4
+loop_mode = 1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig/LegR:position")
+tracks/0/interp = 2
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(31, 65), Vector2(31, 65)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig/LegR:rotation")
+tracks/1/interp = 2
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Root/Rig/LegR:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.9, 1.1), Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/Body:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(5, 49), Vector2(5, 53)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/Body:rotation")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/Body:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.95, 1.05), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(2, -91)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-60, -53), Vector2(-62, -55), Vector2(-60, -53)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/10/interp = 2
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(51, -51), Vector2(49, -53), Vector2(51, -51)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/13/interp = 2
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/LegL:position")
+tracks/15/interp = 2
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-29, 65), Vector2(-29, 65), Vector2(-29, 65)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/LegL:rotation")
+tracks/16/interp = 2
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/LegL:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.9, 1.1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("FX/Cloud:visible")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Hitbox/HitboxCollisionShape2D:disabled")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.4),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, true]
+}
+
+[sub_resource type="Animation" id="Animation_uow76"]
+resource_name = "spit"
+length = 0.3
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig/LegL:position")
+tracks/0/interp = 2
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.3),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(-29, 65), Vector2(-57, 44)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig/LegL:rotation")
+tracks/1/interp = 2
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.3),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.730707]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Root/Rig/LegL:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.3),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/LegR:position")
+tracks/3/interp = 2
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(46, 48), Vector2(31, 65)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/LegR:rotation")
+tracks/4/interp = 2
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, -0.718681, 0.0]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/LegR:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/Body:position")
+tracks/6/interp = 2
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(4, 46), Vector2(4, 46)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body:rotation")
+tracks/7/interp = 2
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, -0.330061, 0.363712]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.8, 1.2), Vector2(1.1, 0.9)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(2, -91)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/12/interp = 2
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-60, -53), Vector2(-53.8926, -21.1176), Vector2(-19.8796, -43.7927)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/13/interp = 2
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/15/interp = 2
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(51, -51), Vector2(47.6296, -15.5481), Vector2(47.0064, -56.4127)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/16/interp = 2
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_5mxvi"]
+resource_name = "summon"
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig/LegL:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(-29, 65), Vector2(-29, 65)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig/LegL:rotation")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.0]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Root/Rig/LegL:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/LegR:position")
+tracks/3/interp = 2
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(47, 54), Vector2(43, 56.75), Vector2(47, 54), Vector2(43, 56.75), Vector2(31, 65)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/LegR:rotation")
+tracks/4/interp = 2
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.0, -0.40126, -0.768424, -0.40126, -0.768424, 0.0]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/LegR:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/Body:position")
+tracks/6/interp = 2
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.6, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(5, 53), Vector2(5, 53), Vector2(5, 53)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body:rotation")
+tracks/7/interp = 2
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.6, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, -0.179614, -0.179614, 0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(0.9, 1.1), Vector2(1, 1), Vector2(0.9, 1.1), Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/9/interp = 2
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(2, -91), Vector2(2, -91)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/10/interp = 2
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/12/interp = 2
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-60, -53), Vector2(-71.1271, -84.0591), Vector2(-76.1533, -94.4691), Vector2(-71.1271, -84.0591), Vector2(-76.1533, -94.4691), Vector2(-60, -53)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/13/interp = 2
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, -0.836345, 0.0, -0.836345, 0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/15/interp = 2
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(51, -51), Vector2(61.8744, -83.286), Vector2(62.8802, -95.0655), Vector2(61.8744, -83.286), Vector2(62.8802, -95.0655), Vector2(51, -51)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/16/interp = 2
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, -0.887813, 0.0, -0.887813, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_yn0t6"]
+resource_name = "throw"
+length = 0.1
+step = 0.01
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, -76)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig: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("Root/Rig/LegL:position")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(-48, 64), Vector2(45, 67)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/LegL:rotation")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.862915, -0.786391]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/LegR:position")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(-27, 64)]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/LegR:rotation")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.899266]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/Body:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(5, 53)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [-0.250268, 0.250549]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(2, -91)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(37.6892, -51.6964), Vector2(-36.284, -25.5073)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.0]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig:scale")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/LegL:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/LegR:scale")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/Body:scale")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(0.9, 1.1), Vector2(1.1, 0.9)]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-70.3036, -52.0327), Vector2(-5.01252, -88.9993), Vector2(66.2323, -78.0635)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.5, 1.5)]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Root/Rig/Body/HandL/WeaponNinjaStar:visible")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0, 0.09, 0.1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, true, false]
+}
+
+[sub_resource type="Animation" id="Animation_kb56n"]
+resource_name = "throw_prepare"
+length = 0.2
+loop_mode = 1
+step = 0.05
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, -76)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig: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("Root/Rig/LegL:position")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-48, 64), Vector2(-48, 64), Vector2(-48, 64)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/LegL:rotation")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.644548, 0.862915, 0.644548]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/LegR:position")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(31, 65)]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/LegR:rotation")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/Body:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(5, 53), Vector2(5, 53), Vector2(5, 53)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [-0.194275, -0.250268, -0.194275]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(2, -91)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-27.2463, -58.3579), Vector2(-70.3036, -52.0327), Vector2(-27.2463, -58.3579)]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(37.6892, -51.6964)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/LegL:scale")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/LegR:scale")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/Body:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Root/Rig/Body/HandL/WeaponNinjaStar:visible")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, true]
+}
+
+[sub_resource type="Animation" id="Animation_fh06e"]
+resource_name = "walk"
+length = 0.6
+loop_mode = 1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig/Body:position")
+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": 0,
+"values": [Vector2(5, 53), Vector2(5, 47), Vector2(5, 53)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Root/Rig/Body:rotation")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Root/Rig/Body:scale")
+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": 0,
+"values": [Vector2(1, 1), Vector2(0.92, 1.08), Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/Body/Hat:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.6),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(2, -91), Vector2(2, -91)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/Body/Hat:rotation")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.6),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, 0.0]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/Body/Hat:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.6),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/Body/HandL:position")
+tracks/6/interp = 2
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-60, -53), Vector2(17, -22), Vector2(-60, -53)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Body/HandL:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Body/HandL:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Root/Rig/Body/HandR:position")
+tracks/9/interp = 2
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(51, -51), Vector2(-26, -29), Vector2(51, -51)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Root/Rig/Body/HandR:rotation")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 0.0, 0.0]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Root/Rig/Body/HandR:scale")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Root/Rig/LegL:position")
+tracks/12/interp = 2
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-29, 65), Vector2(33, 65), Vector2(-29, 65)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Root/Rig/LegL:rotation")
+tracks/13/interp = 2
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, -0.991068, 0.0]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Root/Rig/LegL:scale")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1.1, 1.1), Vector2(1, 1), Vector2(1.1, 1.1)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Root/Rig/LegR:position")
+tracks/15/interp = 2
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(31, 65), Vector2(-30, 65), Vector2(31, 65)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Root/Rig/LegR:rotation")
+tracks/16/interp = 2
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [0.0, 1.13756, 0.0]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Root/Rig/LegR:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.1, 1.1), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("FX/Cloud:visible")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Root/Hitbox/HitboxCollisionShape2D:disabled")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.6),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, true]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Root/Hurtbox/HurtboxCollisionShape2D:disabled")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 0.6),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, false]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_ws2ti"]
+_data = {
+"RESET": SubResource("Animation_nvm4d"),
+"attack_1": SubResource("Animation_8wj70"),
+"attack_2": SubResource("Animation_s1dey"),
+"attack_3": SubResource("Animation_g7a0r"),
+"charge": SubResource("Animation_jcwlt"),
+"charge_prepare": SubResource("Animation_sva81"),
+"dance": SubResource("Animation_5k1rd"),
+"death": SubResource("Animation_wei72"),
+"dodge": SubResource("Animation_msfb2"),
+"hurt": SubResource("Animation_gowr5"),
+"idle": SubResource("Animation_gnqgt"),
+"spit": SubResource("Animation_uow76"),
+"summon": SubResource("Animation_5mxvi"),
+"throw": SubResource("Animation_yn0t6"),
+"throw_prepare": SubResource("Animation_kb56n"),
+"walk": SubResource("Animation_fh06e")
+}
+
+[node name="AgentBase" type="CharacterBody2D"]
+collision_layer = 2
+collision_mask = 3
+motion_mode = 1
+wall_min_slide_angle = 0.0174533
+safe_margin = 0.001
+script = ExtResource("1_n8vy2")
+
+[node name="Root" type="Node2D" parent="."]
+metadata/_edit_lock_ = true
+
+[node name="Rig" type="Node2D" parent="Root"]
+position = Vector2(0, -76)
+
+[node name="Shadow" type="Sprite2D" parent="Root/Rig"]
+modulate = Color(1, 1, 1, 0.258824)
+position = Vector2(0, 76)
+texture = ExtResource("2_vr0jo")
+
+[node name="LegL" type="Sprite2D" parent="Root/Rig"]
+position = Vector2(-29, 65)
+texture = ExtResource("1_1u51b")
+region_enabled = true
+region_rect = Rect2(104, 67, 35, 28)
+
+[node name="LegR" type="Sprite2D" parent="Root/Rig"]
+position = Vector2(31, 65)
+texture = ExtResource("1_1u51b")
+region_enabled = true
+region_rect = Rect2(105, 97, 34, 27)
+
+[node name="Body" type="Sprite2D" parent="Root/Rig"]
+position = Vector2(5, 53)
+texture = ExtResource("1_1u51b")
+offset = Vector2(-5, -53)
+region_enabled = true
+region_rect = Rect2(4.03712, 4.21556, 94.9839, 121.271)
+
+[node name="Hat" type="Sprite2D" parent="Root/Rig/Body"]
+position = Vector2(2, -91)
+texture = ExtResource("1_1u51b")
+offset = Vector2(-1, -20)
+region_enabled = true
+region_rect = Rect2(163, 20, 170, 102)
+
+[node name="HandL" type="Sprite2D" parent="Root/Rig/Body"]
+position = Vector2(-60, -53)
+texture = ExtResource("1_1u51b")
+region_enabled = true
+region_rect = Rect2(111.022, 6.27016, 27.6329, 27.1423)
+
+[node name="WeaponNinjaStar" type="Sprite2D" parent="Root/Rig/Body/HandL"]
+visible = false
+texture = ExtResource("4_1c5xq")
+
+[node name="HandR" type="Sprite2D" parent="Root/Rig/Body"]
+show_behind_parent = true
+position = Vector2(51, -51)
+texture = ExtResource("1_1u51b")
+region_enabled = true
+region_rect = Rect2(111, 34, 26.9272, 26.6298)
+
+[node name="Hitbox" type="Area2D" parent="Root"]
+position = Vector2(50, 0)
+collision_layer = 0
+collision_mask = 4
+script = ExtResource("5_taq6b")
+knockback_strength = 1000.0
+
+[node name="HitboxCollisionShape2D" type="CollisionShape2D" parent="Root/Hitbox"]
+shape = SubResource("RectangleShape2D_2k81i")
+disabled = true
+debug_color = Color(0.933131, 0.0801983, 0.605982, 0.42)
+metadata/_edit_lock_ = true
+
+[node name="Hurtbox" type="Area2D" parent="Root" node_paths=PackedStringArray("health")]
+collision_layer = 8
+collision_mask = 0
+script = ExtResource("6_jnvxm")
+health = NodePath("../../Health")
+
+[node name="HurtboxCollisionShape2D" type="CollisionShape2D" parent="Root/Hurtbox"]
+shape = SubResource("RectangleShape2D_26abe")
+debug_color = Color(0.466325, 0.590206, 0.107862, 0.42)
+metadata/_edit_lock_ = true
+
+[node name="FX" type="Node2D" parent="."]
+position = Vector2(0, -68)
+metadata/_edit_lock_ = true
+
+[node name="Cloud" type="Sprite2D" parent="FX"]
+visible = false
+scale = Vector2(0.5, 0.5)
+texture = ExtResource("2_lv102")
+region_enabled = true
+region_rect = Rect2(300, 0, 100, 70)
+
+[node name="Death" type="GPUParticles2D" parent="FX"]
+position = Vector2(0, 52)
+emitting = false
+amount = 16
+process_material = SubResource("ParticleProcessMaterial_f5i1x")
+texture = ExtResource("4_mnb6v")
+lifetime = 0.7
+one_shot = true
+explosiveness = 0.7
+fixed_fps = 60
+
+[node name="Summoned" type="GPUParticles2D" parent="FX"]
+position = Vector2(0, 83)
+emitting = false
+amount = 16
+process_material = SubResource("ParticleProcessMaterial_gmal1")
+texture = ExtResource("4_mnb6v")
+lifetime = 1.4
+one_shot = true
+explosiveness = 0.5
+fixed_fps = 60
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+visible = false
+position = Vector2(-1, -7)
+rotation = 1.5708
+shape = SubResource("CircleShape2D_0c228")
+
+[node name="Health" type="Node" parent="."]
+script = ExtResource("4_qwtrf")
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+callback_mode_method = 1
+libraries = {
+"": SubResource("AnimationLibrary_ws2ti")
+}
+autoplay = "idle"
diff --git a/demo/agents/fireball/fireball.gd b/demo/agents/fireball/fireball.gd
new file mode 100644
index 0000000..513a722
--- /dev/null
+++ b/demo/agents/fireball/fireball.gd
@@ -0,0 +1,56 @@
+#*
+#* fireball.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+extends Node2D
+## Fireball
+
+const SPEED := 800.0
+const DEAD_SPEED := 400.0
+
+@export var dir: float = 1.0
+
+var _is_dead: bool = false
+
+@onready var fireball_sprite: Sprite2D = $Root/Fireball
+@onready var death: GPUParticles2D = $FX/Death
+@onready var collision_shape_2d: CollisionShape2D = $Hitbox/CollisionShape2D
+@onready var root: Node2D = $Root
+@onready var trail: GPUParticles2D = $FX/Trail
+
+
+func _ready() -> void:
+ var tween := create_tween().set_loops()
+ tween.tween_property(fireball_sprite, ^"rotation", PI * signf(dir), 1.0).as_relative()
+
+ var tween2 := create_tween().set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN)
+ tween2.tween_property(fireball_sprite, "position:y", -10.0, 0.5).as_relative().set_ease(Tween.EASE_OUT)
+ tween2.tween_property(fireball_sprite, "position:y", 0.0, 1.0)
+ tween2.tween_callback(_die)
+
+
+func _physics_process(delta: float) -> void:
+ var speed: float = SPEED if not _is_dead else DEAD_SPEED
+ position += Vector2.RIGHT * speed * dir * delta
+
+
+func _die() -> void:
+ if _is_dead:
+ return
+ _is_dead = true
+ trail.emitting = false
+ root.hide()
+ collision_shape_2d.set_deferred(&"disabled", true)
+ death.emitting = true
+ await death.finished
+ queue_free()
+
+
+func _on_hitbox_area_entered(_area: Area2D) -> void:
+ _die()
diff --git a/demo/agents/fireball/fireball.tscn b/demo/agents/fireball/fireball.tscn
new file mode 100644
index 0000000..160c015
--- /dev/null
+++ b/demo/agents/fireball/fireball.tscn
@@ -0,0 +1,169 @@
+[gd_scene load_steps=18 format=3 uid="uid://wdauoepicegb"]
+
+[ext_resource type="Script" path="res://demo/agents/fireball/fireball.gd" id="1_ituf4"]
+[ext_resource type="Texture2D" uid="uid://dwhhxj5557qrb" path="res://demo/assets/shadow.png" id="2_6n8mx"]
+[ext_resource type="Texture2D" uid="uid://235liwnxn1n5" path="res://demo/assets/fireball.png" id="3_1an0e"]
+[ext_resource type="Script" path="res://demo/agents/scripts/hitbox.gd" id="4_rjhgc"]
+[ext_resource type="Texture2D" uid="uid://bdusy0qqtw0th" path="res://demo/assets/smoke.png" id="5_dcbp6"]
+
+[sub_resource type="Curve" id="Curve_mukra"]
+_data = [Vector2(0, 0), 0.0, 4.81319, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[sub_resource type="CurveTexture" id="CurveTexture_56342"]
+curve = SubResource("Curve_mukra")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_gbya7"]
+lifetime_randomness = 0.5
+particle_flag_disable_z = true
+direction = Vector3(0, -1, 0)
+spread = 90.0
+initial_velocity_min = 150.0
+initial_velocity_max = 250.0
+angular_velocity_min = -90.0
+angular_velocity_max = 90.0
+gravity = Vector3(0, 0, 0)
+radial_accel_min = -90.0
+radial_accel_max = 90.0
+damping_min = 200.0
+damping_max = 200.0
+scale_min = 0.8
+scale_max = 1.2
+scale_curve = SubResource("CurveTexture_56342")
+color = Color(0.552941, 0.552941, 0.552941, 1)
+
+[sub_resource type="Gradient" id="Gradient_c08h3"]
+offsets = PackedFloat32Array(0, 0.549738, 1)
+colors = PackedColorArray(0.980453, 0.717632, 0.282353, 1, 0.960906, 0.211521, 0.0390784, 1, 0.201527, 0.201527, 0.201527, 1)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_fhxvw"]
+gradient = SubResource("Gradient_c08h3")
+
+[sub_resource type="Curve" id="Curve_ugmtv"]
+_data = [Vector2(0, 0.010989), 0.0, 0.0, 0, 0, Vector2(0.151111, 1), 1.3559, 1.3559, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_1f5jp"]
+curve = SubResource("Curve_ugmtv")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_gilhy"]
+lifetime_randomness = 0.5
+particle_flag_disable_z = true
+emission_shape = 3
+emission_box_extents = Vector3(40, 1, 1)
+direction = Vector3(0, -1, 0)
+spread = 90.0
+initial_velocity_min = 150.0
+initial_velocity_max = 250.0
+angular_velocity_min = -90.0
+angular_velocity_max = 90.0
+gravity = Vector3(0, 0, 0)
+radial_accel_min = -90.0
+radial_accel_max = 90.0
+damping_min = 200.0
+damping_max = 200.0
+scale_min = 0.8
+scale_max = 1.2
+scale_curve = SubResource("CurveTexture_1f5jp")
+color_ramp = SubResource("GradientTexture1D_fhxvw")
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_7uc1b"]
+radius = 25.13
+
+[sub_resource type="Animation" id="Animation_wr7y0"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Fireball:frame")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [0]
+}
+
+[sub_resource type="Animation" id="Animation_ey8it"]
+resource_name = "default"
+length = 0.3
+loop_mode = 1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Fireball:frame")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 1,
+"values": [0, 1, 2, 0]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_cphpk"]
+_data = {
+"RESET": SubResource("Animation_wr7y0"),
+"default": SubResource("Animation_ey8it")
+}
+
+[node name="Fireball" type="Node2D"]
+script = ExtResource("1_ituf4")
+
+[node name="FX" type="Node2D" parent="."]
+position = Vector2(0, -92)
+
+[node name="Trail" type="GPUParticles2D" parent="FX"]
+show_behind_parent = true
+amount = 6
+process_material = SubResource("ParticleProcessMaterial_gbya7")
+texture = ExtResource("5_dcbp6")
+lifetime = 0.4
+fixed_fps = 60
+
+[node name="Death" type="GPUParticles2D" parent="FX"]
+emitting = false
+amount = 6
+process_material = SubResource("ParticleProcessMaterial_gilhy")
+texture = ExtResource("5_dcbp6")
+lifetime = 0.7
+one_shot = true
+explosiveness = 0.7
+fixed_fps = 60
+local_coords = true
+
+[node name="Root" type="Node2D" parent="."]
+
+[node name="Shadow" type="Sprite2D" parent="Root"]
+modulate = Color(1, 1, 1, 0.686275)
+position = Vector2(0, -1)
+scale = Vector2(0.382, 0.297)
+texture = ExtResource("2_6n8mx")
+
+[node name="Fireball" type="Sprite2D" parent="Root"]
+position = Vector2(0, -92)
+texture = ExtResource("3_1an0e")
+hframes = 3
+
+[node name="RemoteTransform2D" type="RemoteTransform2D" parent="Root/Fireball"]
+remote_path = NodePath("../../../FX")
+update_rotation = false
+update_scale = false
+
+[node name="Hitbox" type="Area2D" parent="."]
+collision_layer = 0
+collision_mask = 4
+script = ExtResource("4_rjhgc")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
+shape = SubResource("CircleShape2D_7uc1b")
+debug_color = Color(0.839216, 0.192157, 0.815686, 0.419608)
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+"": SubResource("AnimationLibrary_cphpk")
+}
+autoplay = "default"
+
+[connection signal="area_entered" from="Hitbox" to="." method="_on_hitbox_area_entered"]
diff --git a/demo/agents/ninja_star/ninja_star.gd b/demo/agents/ninja_star/ninja_star.gd
new file mode 100644
index 0000000..0a1713e
--- /dev/null
+++ b/demo/agents/ninja_star/ninja_star.gd
@@ -0,0 +1,53 @@
+#*
+#* ninja_star.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+extends Node2D
+
+const SPEED := 800.0
+const DEAD_SPEED := 400.0
+
+@export var dir: float = 1.0
+
+var _is_dead: bool = false
+
+@onready var ninja_star: Sprite2D = $Root/NinjaStar
+@onready var death: GPUParticles2D = $Death
+@onready var collision_shape_2d: CollisionShape2D = $Hitbox/CollisionShape2D
+@onready var root: Node2D = $Root
+
+
+func _ready() -> void:
+ var tween := create_tween().set_loops()
+ tween.tween_property(ninja_star, ^"rotation", TAU * signf(dir), 1.0).as_relative()
+
+ var tween2 := create_tween().set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN)
+ tween2.tween_property(ninja_star, "position:y", -10.0, 0.5).as_relative().set_ease(Tween.EASE_OUT)
+ tween2.tween_property(ninja_star, "position:y", 0.0, 1.0)
+ tween2.tween_callback(_die)
+
+
+func _physics_process(delta: float) -> void:
+ var speed: float = SPEED if not _is_dead else DEAD_SPEED
+ position += Vector2.RIGHT * speed * dir * delta
+
+
+func _die() -> void:
+ if _is_dead:
+ return
+ _is_dead = true
+ root.hide()
+ collision_shape_2d.set_deferred(&"disabled", true)
+ death.emitting = true
+ await death.finished
+ queue_free()
+
+
+func _on_hitbox_area_entered(_area: Area2D) -> void:
+ _die()
diff --git a/demo/agents/ninja_star/ninja_star.tscn b/demo/agents/ninja_star/ninja_star.tscn
new file mode 100644
index 0000000..58aab69
--- /dev/null
+++ b/demo/agents/ninja_star/ninja_star.tscn
@@ -0,0 +1,80 @@
+[gd_scene load_steps=10 format=3 uid="uid://bj5n72nomeaci"]
+
+[ext_resource type="Script" path="res://demo/agents/ninja_star/ninja_star.gd" id="1_pja57"]
+[ext_resource type="Texture2D" uid="uid://2uyxh7sy8qny" path="res://demo/assets/weapon_ninja_star.png" id="1_ptof7"]
+[ext_resource type="Texture2D" uid="uid://dwhhxj5557qrb" path="res://demo/assets/shadow.png" id="2_2rj5a"]
+[ext_resource type="Script" path="res://demo/agents/scripts/hitbox.gd" id="2_iem02"]
+[ext_resource type="Texture2D" uid="uid://bdusy0qqtw0th" path="res://demo/assets/smoke.png" id="5_t37aw"]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_7uc1b"]
+radius = 28.0
+
+[sub_resource type="Curve" id="Curve_ugmtv"]
+_data = [Vector2(0, 0.010989), 0.0, 0.0, 0, 0, Vector2(0.151111, 1), 1.3559, 1.3559, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_1f5jp"]
+curve = SubResource("Curve_ugmtv")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_gilhy"]
+lifetime_randomness = 0.5
+particle_flag_disable_z = true
+emission_shape = 3
+emission_box_extents = Vector3(40, 1, 1)
+direction = Vector3(0, -1, 0)
+spread = 90.0
+initial_velocity_min = 150.0
+initial_velocity_max = 250.0
+angular_velocity_min = -90.0
+angular_velocity_max = 90.0
+gravity = Vector3(0, 0, 0)
+radial_accel_min = -90.0
+radial_accel_max = 90.0
+damping_min = 200.0
+damping_max = 200.0
+scale_min = 0.8
+scale_max = 1.2
+scale_curve = SubResource("CurveTexture_1f5jp")
+
+[node name="NinjaStar" type="Node2D"]
+script = ExtResource("1_pja57")
+
+[node name="Root" type="Node2D" parent="."]
+
+[node name="Shadow" type="Sprite2D" parent="Root"]
+modulate = Color(1, 1, 1, 0.686275)
+position = Vector2(0, -1)
+scale = Vector2(0.382, 0.297)
+texture = ExtResource("2_2rj5a")
+
+[node name="NinjaStar" type="Sprite2D" parent="Root"]
+position = Vector2(0, -93)
+texture = ExtResource("1_ptof7")
+
+[node name="RemoteTransform2D" type="RemoteTransform2D" parent="Root/NinjaStar"]
+remote_path = NodePath("../../../Death")
+update_rotation = false
+update_scale = false
+
+[node name="Hitbox" type="Area2D" parent="."]
+collision_layer = 0
+collision_mask = 4
+script = ExtResource("2_iem02")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
+shape = SubResource("CircleShape2D_7uc1b")
+debug_color = Color(0.839216, 0.192157, 0.815686, 0.419608)
+
+[node name="Death" type="GPUParticles2D" parent="."]
+position = Vector2(0, -93)
+emitting = false
+amount = 1
+process_material = SubResource("ParticleProcessMaterial_gilhy")
+texture = ExtResource("5_t37aw")
+lifetime = 0.7
+one_shot = true
+explosiveness = 0.7
+fixed_fps = 60
+local_coords = true
+
+[connection signal="area_entered" from="Hitbox" to="." method="_on_hitbox_area_entered"]
diff --git a/demo/agents/player/player.gd b/demo/agents/player/player.gd
new file mode 100644
index 0000000..7c5b19a
--- /dev/null
+++ b/demo/agents/player/player.gd
@@ -0,0 +1,103 @@
+#*
+#* player.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+extends "res://demo/agents/scripts/agent_base.gd"
+
+## Player.
+
+@export var dodge_cooldown: float = 0.4
+
+@onready var hsm: LimboHSM = $LimboHSM
+@onready var idle_state: LimboState = $LimboHSM/IdleState
+@onready var move_state: LimboState = $LimboHSM/MoveState
+@onready var attack_state: LimboState = $LimboHSM/AttackState
+@onready var dodge_state: LimboState = $LimboHSM/DodgeState
+
+var can_dodge: bool = true
+var attack_pressed: bool = false
+
+
+func _ready() -> void:
+ super._ready()
+ can_dodge = true
+ _init_input_events()
+ _init_state_machine()
+ death.connect(func(): remove_from_group(&"player"))
+
+
+func _unhandled_input(event: InputEvent) -> void:
+ if event.is_echo():
+ return
+ if event.is_action_pressed("attack"):
+ attack_pressed = true
+ _process_attack_input()
+ if event.is_action_pressed("dodge"):
+ hsm.dispatch("dodge!")
+
+
+func _process_attack_input() -> void:
+ if not attack_pressed or hsm.get_active_state() == attack_state:
+ return
+ hsm.dispatch("attack!")
+ attack_pressed = false
+
+
+func _init_state_machine() -> void:
+ hsm.add_transition(idle_state, move_state, idle_state.EVENT_FINISHED)
+ hsm.add_transition(move_state, idle_state, move_state.EVENT_FINISHED)
+ hsm.add_transition(idle_state, attack_state, "attack!")
+ hsm.add_transition(move_state, attack_state, "attack!")
+ hsm.add_transition(attack_state, move_state, attack_state.EVENT_FINISHED)
+ hsm.add_transition(hsm.ANYSTATE, dodge_state, "dodge!")
+ hsm.add_transition(dodge_state, move_state, dodge_state.EVENT_FINISHED)
+
+ dodge_state.set_guard(_can_dodge)
+ attack_state.set_guard(attack_state.can_enter)
+
+ # Process attack input buffer when move_state is entered.
+ # This way we can buffer the attack button presses and chain the attacks.
+ move_state.call_on_enter(_process_attack_input)
+
+ hsm.initialize(self)
+ hsm.set_active(true)
+
+
+func _init_input_events() -> void:
+ # Note: Ensures that input events are present even if project.godot wasn't imported.
+ _add_action(&"move_left", KEY_A)
+ _add_action(&"move_right", KEY_D)
+ _add_action(&"move_up", KEY_W)
+ _add_action(&"move_down", KEY_S)
+ _add_action(&"dodge", KEY_SPACE)
+ _add_action(&"attack", KEY_ENTER, KEY_F)
+
+
+func _add_action(p_action: StringName, p_key: Key, p_alt: Key = KEY_NONE) -> void:
+ if not InputMap.has_action(p_action):
+ InputMap.add_action(p_action)
+ var event := InputEventKey.new()
+ event.keycode = p_key
+ InputMap.action_add_event(p_action, event)
+ if p_alt != KEY_NONE:
+ var alt := InputEventKey.new()
+ alt.keycode = p_alt
+ InputMap.action_add_event(p_action, alt)
+
+
+func set_victorious() -> void:
+ idle_state.idle_animation = &"dance"
+
+
+func _can_dodge() -> bool:
+ if can_dodge:
+ can_dodge = false
+ get_tree().create_timer(dodge_cooldown).timeout.connect(func(): can_dodge = true)
+ return true
+ return false
diff --git a/demo/agents/player/player.tscn b/demo/agents/player/player.tscn
new file mode 100644
index 0000000..eb1c4ad
--- /dev/null
+++ b/demo/agents/player/player.tscn
@@ -0,0 +1,53 @@
+[gd_scene load_steps=8 format=3 uid="uid://d07ag5dcje13i"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_mswd4"]
+[ext_resource type="Script" path="res://demo/agents/player/player.gd" id="2_24nyi"]
+[ext_resource type="Script" path="res://demo/agents/player/states/idle_state.gd" id="3_ekb12"]
+[ext_resource type="Script" path="res://demo/agents/player/states/move_state.gd" id="4_paikn"]
+[ext_resource type="Script" path="res://demo/agents/player/states/attack_state.gd" id="5_mpgu6"]
+[ext_resource type="Script" path="res://demo/agents/player/states/dodge_state.gd" id="6_7o4a6"]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_8pofm"]
+size = Vector2(150, 50)
+
+[node name="Player" groups=["player"] instance=ExtResource("1_mswd4")]
+collision_layer = 0
+collision_mask = 1
+script = ExtResource("2_24nyi")
+dodge_cooldown = 0.4
+
+[node name="Hitbox" parent="Root" index="1"]
+collision_mask = 8
+
+[node name="HitboxCollisionShape2D" parent="Root/Hitbox" index="0"]
+shape = SubResource("RectangleShape2D_8pofm")
+
+[node name="Hurtbox" parent="Root" index="2"]
+collision_layer = 4
+
+[node name="Health" parent="." index="3"]
+max_health = 30.0
+
+[node name="LimboHSM" type="LimboHSM" parent="." index="4"]
+
+[node name="IdleState" type="LimboState" parent="LimboHSM" index="0" node_paths=PackedStringArray("animation_player")]
+script = ExtResource("3_ekb12")
+animation_player = NodePath("../../AnimationPlayer")
+idle_animation = &"idle"
+
+[node name="MoveState" type="LimboState" parent="LimboHSM" index="1" node_paths=PackedStringArray("animation_player")]
+script = ExtResource("4_paikn")
+animation_player = NodePath("../../AnimationPlayer")
+animation = &"walk"
+
+[node name="AttackState" type="LimboState" parent="LimboHSM" index="2" node_paths=PackedStringArray("animation_player", "hitbox")]
+script = ExtResource("5_mpgu6")
+animation_player = NodePath("../../AnimationPlayer")
+animations = Array[StringName]([&"attack_1", &"attack_2", &"attack_3"])
+hitbox = NodePath("../../Root/Hitbox")
+
+[node name="DodgeState" type="LimboState" parent="LimboHSM" index="3" node_paths=PackedStringArray("animation_player", "hurtbox_collision")]
+script = ExtResource("6_7o4a6")
+animation_player = NodePath("../../AnimationPlayer")
+animation = &"dodge"
+hurtbox_collision = NodePath("../../Root/Hurtbox/HurtboxCollisionShape2D")
diff --git a/demo/agents/player/states/attack_state.gd b/demo/agents/player/states/attack_state.gd
new file mode 100644
index 0000000..3af48a5
--- /dev/null
+++ b/demo/agents/player/states/attack_state.gd
@@ -0,0 +1,60 @@
+#*
+#* attack_state.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+extends LimboState
+
+## Attack state: Perform 3-part combo attack for as long as player hits attack button.
+
+@export var animation_player: AnimationPlayer
+@export var animations: Array[StringName]
+@export var hitbox: Hitbox
+
+## Cooldown duration after third attack in the combo is complete.
+@export var combo_cooldown: float = 0.1
+
+var anim_index: int = 0
+var last_attack_msec: int = -10000
+var _can_enter: bool = true
+
+
+## This func is used to prevent entering this state using LimboState.set_guard().
+## Entry is denied for a short duration after the third attack in the combo is complete.
+func can_enter() -> bool:
+ return _can_enter
+
+
+func _enter() -> void:
+ if (Time.get_ticks_msec() - last_attack_msec) < 200:
+ # Perform next attack animation in the 3-part combo, if an attack was recently performed.
+ anim_index = (anim_index + 1) % 3
+ else:
+ anim_index = 0
+
+ var horizontal_move: float = Input.get_axis(&"move_left", &"move_right")
+ if not is_zero_approx(horizontal_move):
+ agent.face_dir(horizontal_move)
+
+ hitbox.damage = 2 if anim_index == 2 else 1 # deal 2 damage on a third attack in the combo
+ animation_player.play(animations[anim_index])
+
+ await animation_player.animation_finished
+ if is_active():
+ get_root().dispatch(EVENT_FINISHED)
+
+
+func _exit() -> void:
+ hitbox.damage = 1
+ last_attack_msec = Time.get_ticks_msec()
+ if anim_index == 2 and _can_enter:
+ # Prevent entering this state for a short duration after the third attack
+ # in the combo sequence is complete.
+ _can_enter = false
+ await get_tree().create_timer(combo_cooldown).timeout
+ _can_enter = true
diff --git a/demo/agents/player/states/dodge_state.gd b/demo/agents/player/states/dodge_state.gd
new file mode 100644
index 0000000..50b3446
--- /dev/null
+++ b/demo/agents/player/states/dodge_state.gd
@@ -0,0 +1,48 @@
+#*
+#* dodge_state.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+extends LimboState
+## Dodge state.
+
+
+@export var animation_player: AnimationPlayer
+@export var animation: StringName
+@export var duration: float = 0.4
+@export var dodge_speed: float = 1000.0
+@export var hurtbox_collision: CollisionShape2D
+
+var move_dir: Vector2
+var elapsed_time: float
+
+
+func _enter() -> void:
+ elapsed_time = 0.0
+ hurtbox_collision.disabled = true
+
+ var horizontal_move: float = Input.get_axis(&"move_left", &"move_right")
+ if is_zero_approx(horizontal_move):
+ move_dir = Vector2.RIGHT * agent.get_facing()
+ else:
+ move_dir = Vector2.RIGHT * signf(horizontal_move)
+ agent.face_dir(move_dir.x)
+
+ animation_player.play(animation, 0.1)
+
+
+func _exit() -> void:
+ hurtbox_collision.set_deferred(&"disabled", false)
+
+
+func _update(p_delta: float) -> void:
+ elapsed_time += p_delta
+ var desired_velocity: Vector2 = move_dir * dodge_speed
+ agent.move(desired_velocity)
+ if elapsed_time > duration:
+ get_root().dispatch(EVENT_FINISHED)
diff --git a/demo/agents/player/states/idle_state.gd b/demo/agents/player/states/idle_state.gd
new file mode 100644
index 0000000..61e7ec2
--- /dev/null
+++ b/demo/agents/player/states/idle_state.gd
@@ -0,0 +1,27 @@
+#*
+#* idle_state.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+extends LimboState
+## Idle state.
+
+
+@export var animation_player: AnimationPlayer
+@export var idle_animation: StringName
+
+
+func _enter() -> void:
+ animation_player.play(idle_animation, 0.1)
+
+
+func _update(_delta: float) -> void:
+ var horizontal_move: float = Input.get_axis(&"move_left", &"move_right")
+ var vertical_move: float = Input.get_axis(&"move_up", &"move_down")
+ if horizontal_move != 0.0 or vertical_move != 0.0:
+ get_root().dispatch(EVENT_FINISHED)
diff --git a/demo/agents/player/states/move_state.gd b/demo/agents/player/states/move_state.gd
new file mode 100644
index 0000000..332732a
--- /dev/null
+++ b/demo/agents/player/states/move_state.gd
@@ -0,0 +1,37 @@
+#*
+#* move_state.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+extends LimboState
+## Move state.
+
+
+const VERTICAL_FACTOR := 0.8
+
+@export var animation_player: AnimationPlayer
+@export var animation: StringName
+@export var speed: float = 500.0
+
+
+func _enter() -> void:
+ animation_player.play(animation, 0.1)
+
+
+func _update(_delta: float) -> void:
+ var horizontal_move: float = Input.get_axis(&"move_left", &"move_right")
+ var vertical_move: float = Input.get_axis(&"move_up", &"move_down")
+
+ if not is_zero_approx(horizontal_move):
+ agent.face_dir(horizontal_move)
+
+ var desired_velocity := Vector2(horizontal_move, vertical_move * VERTICAL_FACTOR) * speed
+ agent.move(desired_velocity)
+
+ if horizontal_move == 0.0 and vertical_move == 0.0:
+ get_root().dispatch(EVENT_FINISHED)
diff --git a/demo/agents/scripts/agent_base.gd b/demo/agents/scripts/agent_base.gd
new file mode 100644
index 0000000..e17a0e2
--- /dev/null
+++ b/demo/agents/scripts/agent_base.gd
@@ -0,0 +1,161 @@
+#*
+#* agent_base.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+extends CharacterBody2D
+## Base agent script that is shared by all agents.
+
+signal death
+
+# Resource file to use in summon_minion() method.
+const MINION_RESOURCE := "res://demo/agents/03_agent_imp.tscn"
+
+# Projectile resource.
+const NinjaStar := preload("res://demo/agents/ninja_star/ninja_star.tscn")
+const Fireball := preload("res://demo/agents/fireball/fireball.tscn")
+
+var summon_count: int = 0
+
+var _frames_since_facing_update: int = 0
+var _is_dead: bool = false
+var _moved_this_frame: bool = false
+
+@onready var animation_player: AnimationPlayer = $AnimationPlayer
+@onready var health: Health = $Health
+@onready var root: Node2D = $Root
+@onready var collision_shape_2d: CollisionShape2D = $CollisionShape2D
+@onready var summoning_effect: GPUParticles2D = $FX/Summoned
+
+
+func _ready() -> void:
+ health.damaged.connect(_damaged)
+ health.death.connect(die)
+
+
+func _physics_process(_delta: float) -> void:
+ _post_physics_process.call_deferred()
+
+
+func _post_physics_process() -> void:
+ if not _moved_this_frame:
+ velocity = lerp(velocity, Vector2.ZERO, 0.5)
+ _moved_this_frame = false
+
+
+func move(p_velocity: Vector2) -> void:
+ velocity = lerp(velocity, p_velocity, 0.2)
+ move_and_slide()
+ _moved_this_frame = true
+
+
+## Update agent's facing in the velocity direction.
+func update_facing() -> void:
+ _frames_since_facing_update += 1
+ if _frames_since_facing_update > 3:
+ face_dir(velocity.x)
+
+## Face specified direction.
+func face_dir(dir: float) -> void:
+ if dir > 0.0 and root.scale.x < 0.0:
+ root.scale.x = 1.0;
+ _frames_since_facing_update = 0
+ if dir < 0.0 and root.scale.x > 0.0:
+ root.scale.x = -1.0;
+ _frames_since_facing_update = 0
+
+## Returns 1.0 when agent is facing right.
+## Returns -1.0 when agent is facing left.
+func get_facing() -> float:
+ return signf(root.scale.x)
+
+
+func throw_ninja_star() -> void:
+ var ninja_star := NinjaStar.instantiate()
+ ninja_star.dir = get_facing()
+ get_parent().add_child(ninja_star)
+ ninja_star.global_position = global_position + Vector2.RIGHT * 100.0 * get_facing()
+
+
+func spit_fire() -> void:
+ var fireball := Fireball.instantiate()
+ fireball.dir = get_facing()
+ get_parent().add_child(fireball)
+ fireball.global_position = global_position + Vector2.RIGHT * 100.0 * get_facing()
+
+
+func summon_minion(p_position: Vector2) -> void:
+ var minion: CharacterBody2D = load(MINION_RESOURCE).instantiate()
+ get_parent().add_child(minion)
+ minion.position = p_position
+ minion.play_summoning_effect()
+ summon_count += 1
+ minion.death.connect(func(): summon_count -= 1)
+
+
+## Method is used when this agent is summoned from the dungeons of the castle AaaAaaAAAAAaaAAaaaaaa
+func play_summoning_effect() -> void:
+ summoning_effect.emitting = true
+
+
+## Is specified position inside the arena (not inside an obstacle)?
+func is_good_position(p_position: Vector2) -> bool:
+ var space_state := get_world_2d().direct_space_state
+ var params := PhysicsPointQueryParameters2D.new()
+ params.position = p_position
+ params.collision_mask = 1 # Obstacle layer has value 1
+ var collision := space_state.intersect_point(params)
+ return collision.is_empty()
+
+
+## When agent is damaged...
+func _damaged(_amount: float, knockback: Vector2) -> void:
+ apply_knockback(knockback)
+ animation_player.play(&"hurt")
+ var btplayer := get_node_or_null(^"BTPlayer") as BTPlayer
+ if btplayer:
+ btplayer.set_active(false)
+ var hsm := get_node_or_null(^"LimboHSM")
+ if hsm:
+ hsm.set_active(false)
+ await animation_player.animation_finished
+ if btplayer and not _is_dead:
+ btplayer.restart()
+ if hsm and not _is_dead:
+ hsm.set_active(true)
+
+
+## Push agent in the knockback direction for the specified number of physics frames.
+func apply_knockback(knockback: Vector2, frames: int = 10) -> void:
+ if knockback.is_zero_approx():
+ return
+ for i in range(frames):
+ move(knockback)
+ await get_tree().physics_frame
+
+
+func die() -> void:
+ if _is_dead:
+ return
+ death.emit()
+ _is_dead = true
+ root.process_mode = Node.PROCESS_MODE_DISABLED
+ animation_player.play(&"death")
+ collision_shape_2d.set_deferred(&"disabled", true)
+
+ for child in get_children():
+ if child is BTPlayer or child is LimboHSM:
+ child.set_active(false)
+
+ if get_tree():
+ await get_tree().create_timer(10.0).timeout
+ queue_free()
+
+
+func get_health() -> Health:
+ return health
diff --git a/demo/agents/scripts/health.gd b/demo/agents/scripts/health.gd
new file mode 100644
index 0000000..181c36c
--- /dev/null
+++ b/demo/agents/scripts/health.gd
@@ -0,0 +1,46 @@
+#*
+#* health.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+class_name Health
+extends Node
+## Tracks health and emits signal when damaged or dead.
+
+## Emitted when health is reduced to 0.
+signal death
+
+## Emitted when health is damaged.
+signal damaged(amount: float, knockback: Vector2)
+
+## Initial health value.
+@export var max_health: float = 10.0
+
+var _current: float
+
+
+func _ready() -> void:
+ _current = max_health
+
+
+func take_damage(amount: float, knockback: Vector2) -> void:
+ if _current <= 0.0:
+ return
+
+ _current -= amount
+ _current = max(_current, 0.0)
+
+ if _current <= 0.0:
+ death.emit()
+ else:
+ damaged.emit(amount, knockback)
+
+
+## Returns current health.
+func get_current() -> float:
+ return _current
diff --git a/demo/agents/scripts/hitbox.gd b/demo/agents/scripts/hitbox.gd
new file mode 100644
index 0000000..57cb327
--- /dev/null
+++ b/demo/agents/scripts/hitbox.gd
@@ -0,0 +1,39 @@
+#*
+#* hitbox.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+class_name Hitbox
+extends Area2D
+## Area that deals damage.
+
+## Damage value to apply.
+@export var damage: float = 1.0
+
+## Push back the victim.
+@export var knockback_enabled: bool = false
+
+## Desired pushback speed.
+@export var knockback_strength: float = 500.0
+
+
+func _ready() -> void:
+ area_entered.connect(_area_entered)
+
+
+func _area_entered(hurtbox: Hurtbox) -> void:
+ if hurtbox.owner == owner:
+ return
+ hurtbox.take_damage(damage, get_knockback(), self)
+
+
+func get_knockback() -> Vector2:
+ var knockback: Vector2
+ if knockback_enabled:
+ knockback = Vector2.RIGHT.rotated(global_rotation) * knockback_strength
+ return knockback
diff --git a/demo/agents/scripts/hurtbox.gd b/demo/agents/scripts/hurtbox.gd
new file mode 100644
index 0000000..333497f
--- /dev/null
+++ b/demo/agents/scripts/hurtbox.gd
@@ -0,0 +1,22 @@
+#*
+#* hurtbox.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+class_name Hurtbox
+extends Area2D
+## Area that registers damage.
+
+@export var health: Health
+
+var last_attack_vector: Vector2
+
+
+func take_damage(amount: float, knockback: Vector2, source: Hitbox) -> void:
+ last_attack_vector = owner.global_position - source.owner.global_position
+ health.take_damage(amount, knockback)
diff --git a/demo/agents/tutorial/tutorial_01_welcome.tscn b/demo/agents/tutorial/tutorial_01_welcome.tscn
new file mode 100644
index 0000000..d9114c2
--- /dev/null
+++ b/demo/agents/tutorial/tutorial_01_welcome.tscn
@@ -0,0 +1,31 @@
+[gd_scene load_steps=5 format=3 uid="uid://dk67yawiu33jv"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_2vrmp"]
+[ext_resource type="Texture2D" uid="uid://b0oeqsc0xksto" path="res://demo/assets/agent_junior_pieces.png" id="2_3h4dj"]
+[ext_resource type="BehaviorTree" uid="uid://b1mfh8yad7rmw" path="res://demo/ai/trees/tutorial/tutorial_01_welcome.tres" id="3_ilmgw"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_52mdk"]
+
+[node name="TutorialWelcome" instance=ExtResource("1_2vrmp")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_3h4dj")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_3h4dj")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_3h4dj")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_3h4dj")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_3h4dj")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_3h4dj")
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_ilmgw")
+blackboard_plan = SubResource("BlackboardPlan_52mdk")
diff --git a/demo/agents/tutorial/tutorial_02_introduction.tscn b/demo/agents/tutorial/tutorial_02_introduction.tscn
new file mode 100644
index 0000000..f14b0d5
--- /dev/null
+++ b/demo/agents/tutorial/tutorial_02_introduction.tscn
@@ -0,0 +1,31 @@
+[gd_scene load_steps=5 format=3 uid="uid://cw3yth564nhrw"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_lia2k"]
+[ext_resource type="Texture2D" uid="uid://b0oeqsc0xksto" path="res://demo/assets/agent_junior_pieces.png" id="2_4x2l4"]
+[ext_resource type="BehaviorTree" uid="uid://b1i0xo0o676va" path="res://demo/ai/trees/tutorial/tutorial_02_introduction.tres" id="3_3esuy"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_52mdk"]
+
+[node name="TutorialIntro" instance=ExtResource("1_lia2k")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_4x2l4")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_4x2l4")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_4x2l4")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_4x2l4")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_4x2l4")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_4x2l4")
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_3esuy")
+blackboard_plan = SubResource("BlackboardPlan_52mdk")
diff --git a/demo/agents/tutorial/tutorial_03_types.tscn b/demo/agents/tutorial/tutorial_03_types.tscn
new file mode 100644
index 0000000..3ae6493
--- /dev/null
+++ b/demo/agents/tutorial/tutorial_03_types.tscn
@@ -0,0 +1,31 @@
+[gd_scene load_steps=5 format=3 uid="uid://bx4iabilsv3rs"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_p8nwq"]
+[ext_resource type="Texture2D" uid="uid://b0oeqsc0xksto" path="res://demo/assets/agent_junior_pieces.png" id="2_hnwhw"]
+[ext_resource type="BehaviorTree" uid="uid://cb0ybf24ahnc3" path="res://demo/ai/trees/tutorial/tutorial_03_types.tres" id="3_a31ka"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_52mdk"]
+
+[node name="TutorialTypes" instance=ExtResource("1_p8nwq")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_hnwhw")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_hnwhw")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_hnwhw")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_hnwhw")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_hnwhw")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_hnwhw")
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_a31ka")
+blackboard_plan = SubResource("BlackboardPlan_52mdk")
diff --git a/demo/agents/tutorial/tutorial_04_sequence.tscn b/demo/agents/tutorial/tutorial_04_sequence.tscn
new file mode 100644
index 0000000..0a7202b
--- /dev/null
+++ b/demo/agents/tutorial/tutorial_04_sequence.tscn
@@ -0,0 +1,31 @@
+[gd_scene load_steps=5 format=3 uid="uid://bhtm8gnk5hsus"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_oibr1"]
+[ext_resource type="Texture2D" uid="uid://b0oeqsc0xksto" path="res://demo/assets/agent_junior_pieces.png" id="2_j52yc"]
+[ext_resource type="BehaviorTree" uid="uid://dln8ywvtqedt7" path="res://demo/ai/trees/tutorial/tutorial_04_sequence.tres" id="3_feewj"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_52mdk"]
+
+[node name="TutorialSequence" instance=ExtResource("1_oibr1")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_j52yc")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_j52yc")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_j52yc")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_j52yc")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_j52yc")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_j52yc")
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_feewj")
+blackboard_plan = SubResource("BlackboardPlan_52mdk")
diff --git a/demo/agents/tutorial/tutorial_05_selector.tscn b/demo/agents/tutorial/tutorial_05_selector.tscn
new file mode 100644
index 0000000..699ab50
--- /dev/null
+++ b/demo/agents/tutorial/tutorial_05_selector.tscn
@@ -0,0 +1,31 @@
+[gd_scene load_steps=5 format=3 uid="uid://5nqbasyipupf"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_62fs7"]
+[ext_resource type="Texture2D" uid="uid://b0oeqsc0xksto" path="res://demo/assets/agent_junior_pieces.png" id="2_gdg2c"]
+[ext_resource type="BehaviorTree" uid="uid://bf4r652fv5kwi" path="res://demo/ai/trees/tutorial/tutorial_05_selector.tres" id="3_pm5ep"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_52mdk"]
+
+[node name="TutorialSelector" instance=ExtResource("1_62fs7")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_gdg2c")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_gdg2c")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_gdg2c")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_gdg2c")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_gdg2c")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_gdg2c")
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_pm5ep")
+blackboard_plan = SubResource("BlackboardPlan_52mdk")
diff --git a/demo/agents/tutorial/tutorial_06_decorators.tscn b/demo/agents/tutorial/tutorial_06_decorators.tscn
new file mode 100644
index 0000000..c053f21
--- /dev/null
+++ b/demo/agents/tutorial/tutorial_06_decorators.tscn
@@ -0,0 +1,31 @@
+[gd_scene load_steps=5 format=3 uid="uid://ehc00upu3co"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_mbrnd"]
+[ext_resource type="Texture2D" uid="uid://b0oeqsc0xksto" path="res://demo/assets/agent_junior_pieces.png" id="2_ttkri"]
+[ext_resource type="BehaviorTree" uid="uid://beiki511huxb8" path="res://demo/ai/trees/tutorial/tutorial_06_decorators.tres" id="3_tpgll"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_52mdk"]
+
+[node name="TutorialDecorators" instance=ExtResource("1_mbrnd")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_ttkri")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_ttkri")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_ttkri")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_ttkri")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_ttkri")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_ttkri")
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_tpgll")
+blackboard_plan = SubResource("BlackboardPlan_52mdk")
diff --git a/demo/agents/tutorial/tutorial_07_more_decorators.tscn b/demo/agents/tutorial/tutorial_07_more_decorators.tscn
new file mode 100644
index 0000000..c386580
--- /dev/null
+++ b/demo/agents/tutorial/tutorial_07_more_decorators.tscn
@@ -0,0 +1,31 @@
+[gd_scene load_steps=5 format=3 uid="uid://brq6c843j1eeo"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_k4qfc"]
+[ext_resource type="Texture2D" uid="uid://b0oeqsc0xksto" path="res://demo/assets/agent_junior_pieces.png" id="2_q4r1n"]
+[ext_resource type="BehaviorTree" uid="uid://tep50j4d6kgp" path="res://demo/ai/trees/tutorial/tutorial_07_more_decorators.tres" id="3_ta3g6"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_52mdk"]
+
+[node name="TutorialMoreDecorators" instance=ExtResource("1_k4qfc")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_q4r1n")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_q4r1n")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_q4r1n")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_q4r1n")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_q4r1n")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_q4r1n")
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_ta3g6")
+blackboard_plan = SubResource("BlackboardPlan_52mdk")
diff --git a/demo/agents/tutorial/tutorial_08_final_touch.tscn b/demo/agents/tutorial/tutorial_08_final_touch.tscn
new file mode 100644
index 0000000..0d2d8a7
--- /dev/null
+++ b/demo/agents/tutorial/tutorial_08_final_touch.tscn
@@ -0,0 +1,31 @@
+[gd_scene load_steps=5 format=3 uid="uid://b8yj40s43bw8h"]
+
+[ext_resource type="PackedScene" uid="uid://ooigbfhfy4wa" path="res://demo/agents/agent_base.tscn" id="1_bjdsc"]
+[ext_resource type="Texture2D" uid="uid://b0oeqsc0xksto" path="res://demo/assets/agent_junior_pieces.png" id="2_onjfd"]
+[ext_resource type="BehaviorTree" uid="uid://dp0cglcytwcj5" path="res://demo/ai/trees/tutorial/tutorial_08_final_touch.tres" id="3_c5qx4"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_52mdk"]
+
+[node name="TutorialFinalTouch" instance=ExtResource("1_bjdsc")]
+
+[node name="LegL" parent="Root/Rig" index="1"]
+texture = ExtResource("2_onjfd")
+
+[node name="LegR" parent="Root/Rig" index="2"]
+texture = ExtResource("2_onjfd")
+
+[node name="Body" parent="Root/Rig" index="3"]
+texture = ExtResource("2_onjfd")
+
+[node name="Hat" parent="Root/Rig/Body" index="0"]
+texture = ExtResource("2_onjfd")
+
+[node name="HandL" parent="Root/Rig/Body" index="1"]
+texture = ExtResource("2_onjfd")
+
+[node name="HandR" parent="Root/Rig/Body" index="2"]
+texture = ExtResource("2_onjfd")
+
+[node name="BTPlayer" type="BTPlayer" parent="." index="5"]
+behavior_tree = ExtResource("3_c5qx4")
+blackboard_plan = SubResource("BlackboardPlan_52mdk")
diff --git a/demo/ai/tasks/arrive_pos.gd b/demo/ai/tasks/arrive_pos.gd
new file mode 100644
index 0000000..edb53fb
--- /dev/null
+++ b/demo/ai/tasks/arrive_pos.gd
@@ -0,0 +1,69 @@
+#*
+#* arrive_pos.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+@tool
+extends BTAction
+## Moves the agent to the specified position, favoring horizontal movement. [br]
+## Returns [code]SUCCESS[/code] when close to the target position (see [member tolerance]);
+## otherwise returns [code]RUNNING[/code].
+
+## Blackboard variable that stores the target position (Vector2)
+@export var target_position_var := &"pos"
+
+## Variable that stores desired speed (float)
+@export var speed_var := &"speed"
+
+## How close should the agent be to the target position to return SUCCESS.
+@export var tolerance := 50.0
+
+## Specifies the node to avoid (valid Node2D is expected).
+## If not empty, agent will circle around the node while moving into position.
+@export var avoid_var: StringName
+
+
+func _generate_name() -> String:
+ return "Arrive pos: %s%s" % [
+ LimboUtility.decorate_var(target_position_var),
+ "" if avoid_var.is_empty() else " avoid: " + LimboUtility.decorate_var(avoid_var)
+ ]
+
+
+func _tick(_delta: float) -> Status:
+ var target_pos: Vector2 = blackboard.get_var(target_position_var, Vector2.ZERO)
+ if target_pos.distance_to(agent.global_position) < tolerance:
+ return SUCCESS
+
+ var speed: float = blackboard.get_var(speed_var, 10.0)
+ var dist: float = absf(agent.global_position.x - target_pos.x)
+ var dir: Vector2 = agent.global_position.direction_to(target_pos)
+
+ # Prefer horizontal movement:
+ var vertical_factor: float = remap(dist, 200.0, 500.0, 1.0, 0.0)
+ vertical_factor = clampf(vertical_factor, 0.0, 1.0)
+ dir.y *= vertical_factor
+
+ # Avoid the node specified by `avoid_var`.
+ # I.e., if `avoid_var` is set, agent will circle around that node while moving into position.
+ if not avoid_var.is_empty():
+ var avoid_node: Node2D = blackboard.get_var(avoid_var)
+ if is_instance_valid(avoid_node):
+ var distance_vector: Vector2 = avoid_node.global_position - agent.global_position
+ if dir.dot(distance_vector) > 0.0:
+ var side := dir.rotated(PI * 0.5).normalized()
+ # The closer we are to the avoid target, the stronger is the avoidance.
+ var strength: float = remap(distance_vector.length(), 200.0, 400.0, 1.0, 0.0)
+ strength = clampf(strength, 0.0, 1.0)
+ var avoidance := side * signf(-side.dot(distance_vector)) * strength
+ dir += avoidance
+
+ var desired_velocity: Vector2 = dir.normalized() * speed
+ agent.move(desired_velocity)
+ agent.update_facing()
+ return RUNNING
diff --git a/demo/ai/tasks/back_away.gd b/demo/ai/tasks/back_away.gd
new file mode 100644
index 0000000..3b00388
--- /dev/null
+++ b/demo/ai/tasks/back_away.gd
@@ -0,0 +1,39 @@
+#*
+#* back_away.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+@tool
+extends BTAction
+## Moves the agent in the opposite direction of its current facing. [br]
+## Returns [code]RUNNING[/code] always.
+
+## Blackboard variable that stores desired speed.
+@export var speed_var: StringName = &"speed"
+
+## How much can we deviate from the "away" direction (in radians).
+@export var max_angle_deviation: float = 0.7
+
+var _dir: Vector2
+var _desired_velocity: Vector2
+
+
+# Called each time this task is entered.
+func _enter() -> void:
+ # Determine "away" direction and desired velocity
+ _dir = Vector2.LEFT * agent.get_facing()
+ var speed: float = blackboard.get_var(speed_var, 200.0)
+ var rand_angle = randf_range(-max_angle_deviation, max_angle_deviation)
+ _desired_velocity = _dir.rotated(rand_angle) * speed
+
+
+# Called each time this task is ticked (aka executed).
+func _tick(_delta: float) -> Status:
+ agent.move(_desired_velocity)
+ agent.face_dir(-signf(_dir.x))
+ return RUNNING
diff --git a/demo/ai/tasks/face_target.gd b/demo/ai/tasks/face_target.gd
new file mode 100644
index 0000000..bf07d64
--- /dev/null
+++ b/demo/ai/tasks/face_target.gd
@@ -0,0 +1,32 @@
+#*
+#* face_target.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+@tool
+extends BTAction
+## Flips the agent to face the target, returning [code]SUCCESS[/code]. [br]
+## Returns [code]FAILURE[/code] if [member target_var] is not a valid [Node2D] instance.
+
+## Blackboard variable that stores our target (expecting Node2D).
+@export var target_var: StringName = &"target"
+
+# Display a customized name (requires @tool).
+func _generate_name() -> String:
+ return "FaceTarget " + LimboUtility.decorate_var(target_var)
+
+
+# Called each time this task is ticked (aka executed).
+func _tick(_delta: float) -> Status:
+ var target: Node2D = blackboard.get_var(target_var)
+ if not is_instance_valid(target):
+ return FAILURE
+ var dir: float = target.global_position.x - agent.global_position.x
+ agent.velocity = Vector2.ZERO
+ agent.face_dir(dir)
+ return SUCCESS
diff --git a/demo/ai/tasks/get_first_in_group.gd b/demo/ai/tasks/get_first_in_group.gd
new file mode 100644
index 0000000..bd4e642
--- /dev/null
+++ b/demo/ai/tasks/get_first_in_group.gd
@@ -0,0 +1,34 @@
+#*
+#* get_first_in_group.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+@tool
+extends BTAction
+## Stores the first node in the [member group] on the blackboard, returning [code]SUCCESS[/code]. [br]
+## Returns [code]FAILURE[/code] if the group contains 0 nodes.
+
+## Name of the SceneTree group.
+@export var group: StringName
+
+## Blackboard variable in which the task will store the acquired node.
+@export var output_var: StringName = &"target"
+
+
+func _generate_name() -> String:
+ return "GetFirstNodeInGroup \"%s\" β%s" % [
+ group,
+ LimboUtility.decorate_var(output_var)
+ ]
+
+func _tick(_delta: float) -> Status:
+ var nodes: Array[Node] = agent.get_tree().get_nodes_in_group(group)
+ if nodes.size() == 0:
+ return FAILURE
+ blackboard.set_var(output_var, nodes[0])
+ return SUCCESS
diff --git a/demo/ai/tasks/in_range.gd b/demo/ai/tasks/in_range.gd
new file mode 100644
index 0000000..2878595
--- /dev/null
+++ b/demo/ai/tasks/in_range.gd
@@ -0,0 +1,54 @@
+#*
+#* in_range.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+@tool
+extends BTCondition
+## InRange condition checks if the agent is within a range of target,
+## defined by [member distance_min] and [member distance_max]. [br]
+## Returns [code]SUCCESS[/code] if the agent is within the given range;
+## otherwise, returns [code]FAILURE[/code].
+
+## Minimum distance to target.
+@export var distance_min: float
+
+## Maximum distance to target.
+@export var distance_max: float
+
+## Blackboard variable that holds the target (expecting Node2D).
+@export var target_var: StringName = &"target"
+
+var _min_distance_squared: float
+var _max_distance_squared: float
+
+
+# Called to generate a display name for the task.
+func _generate_name() -> String:
+ return "InRange (%d, %d) of %s" % [distance_min, distance_max,
+ LimboUtility.decorate_var(target_var)]
+
+
+# Called to initialize the task.
+func _setup() -> void:
+ ## Small performace optimization
+ _min_distance_squared = distance_min * distance_min
+ _max_distance_squared = distance_max * distance_max
+
+
+# Called when the task is executed.
+func _tick(_delta: float) -> Status:
+ var target: Node2D = blackboard.get_var(target_var, null)
+ if not is_instance_valid(target):
+ return FAILURE
+
+ var dist_sq: float = agent.global_position.distance_squared_to(target.global_position)
+ if dist_sq >= _min_distance_squared and dist_sq <= _max_distance_squared:
+ return SUCCESS
+ else:
+ return FAILURE
diff --git a/demo/ai/tasks/is_aligned_with_target.gd b/demo/ai/tasks/is_aligned_with_target.gd
new file mode 100644
index 0000000..c15ea3a
--- /dev/null
+++ b/demo/ai/tasks/is_aligned_with_target.gd
@@ -0,0 +1,35 @@
+#*
+#* is_aligned_with_target.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+@tool
+extends BTCondition
+## Checks if the agent is horizontally aligned with the target. [br]
+## Returns [code]SUCCESS[/code] if the agent is horizontally aligned with the target.
+## Returns [code]FAILURE[/code] if not aligned or if target is not a valid node instance.
+
+
+@export var target_var: StringName = &"target"
+@export var tolerance: float = 30.0
+
+
+# Display a customized name (requires @tool).
+func _generate_name() -> String:
+ return "IsAlignedWithTarget " + LimboUtility.decorate_var(target_var)
+
+
+# Called each time this task is ticked (aka executed).
+func _tick(_delta: float) -> Status:
+ var target := blackboard.get_var(target_var) as Node2D
+ if not is_instance_valid(target):
+ return FAILURE
+ var y_diff: float = absf(target.global_position.y - agent.global_position.y)
+ if y_diff < tolerance:
+ return SUCCESS
+ return FAILURE
diff --git a/demo/ai/tasks/move_forward.gd b/demo/ai/tasks/move_forward.gd
new file mode 100644
index 0000000..bac5483
--- /dev/null
+++ b/demo/ai/tasks/move_forward.gd
@@ -0,0 +1,39 @@
+#*
+#* move_forward.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+@tool
+extends BTAction
+## Applies velocity in the direction the agent is facing on each tick
+## until the [member duration] is exceeded. [br]
+## Returns [code]SUCCESS[/code] if the elapsed time exceeds [member duration]. [br]
+## Returns [code]RUNNING[/code] if the elapsed time does not exceed [member duration]. [br]
+
+## Blackboard variable that stores desired speed.
+@export var speed_var: StringName = &"speed"
+
+## How long to perform this task (in seconds).
+@export var duration: float = 0.1
+
+# Display a customized name (requires @tool).
+func _generate_name() -> String:
+ return "MoveForward speed: %s duration: %ss" % [
+ LimboUtility.decorate_var(speed_var),
+ duration]
+
+# Called each time this task is ticked (aka executed).
+func _tick(_delta: float) -> Status:
+ var facing: float = agent.get_facing()
+ var speed: float = blackboard.get_var(speed_var, 100.0)
+ var desired_velocity: Vector2 = Vector2.RIGHT * facing * speed
+ agent.move(desired_velocity)
+ agent.update_facing()
+ if elapsed_time > duration:
+ return SUCCESS
+ return RUNNING
diff --git a/demo/ai/tasks/pursue.gd b/demo/ai/tasks/pursue.gd
new file mode 100644
index 0000000..aee5eaa
--- /dev/null
+++ b/demo/ai/tasks/pursue.gd
@@ -0,0 +1,79 @@
+#*
+#* pursue.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+@tool
+extends BTAction
+## Move towards the target until the agent is flanking it. [br]
+## Returns [code]RUNNING[/code] while moving towards the target but not yet at the desired position. [br]
+## Returns [code]SUCCESS[/code] when at the desired position relative to the target (flanking it). [br]
+## Returns [code]FAILURE[/code] if the target is not a valid [Node2D] instance. [br]
+
+## How close should the agent be to the desired position to return SUCCESS.
+const TOLERANCE := 30.0
+
+## Blackboard variable that stores our target (expecting Node2D).
+@export var target_var: StringName = &"target"
+
+## Blackboard variable that stores desired speed.
+@export var speed_var: StringName = &"speed"
+
+## Desired distance from target.
+@export var approach_distance: float = 100.0
+
+var _waypoint: Vector2
+
+
+# Display a customized name (requires @tool).
+func _generate_name() -> String:
+ return "Pursue %s" % [LimboUtility.decorate_var(target_var)]
+
+
+# Called each time this task is entered.
+func _enter() -> void:
+ var target: Node2D = blackboard.get_var(target_var, null)
+ if is_instance_valid(target):
+ # Movement is performed in smaller steps.
+ # For each step, we select a new waypoint.
+ _select_new_waypoint(_get_desired_position(target))
+
+
+# Called each time this task is ticked (aka executed).
+func _tick(_delta: float) -> Status:
+ var target: Node2D = blackboard.get_var(target_var, null)
+ if not is_instance_valid(target):
+ return FAILURE
+
+ var desired_pos: Vector2 = _get_desired_position(target)
+ if agent.global_position.distance_to(desired_pos) < TOLERANCE:
+ return SUCCESS
+
+ if agent.global_position.distance_to(_waypoint) < TOLERANCE:
+ _select_new_waypoint(desired_pos)
+
+ var speed: float = blackboard.get_var(speed_var, 200.0)
+ var desired_velocity: Vector2 = agent.global_position.direction_to(_waypoint) * speed
+ agent.move(desired_velocity)
+ agent.update_facing()
+ return RUNNING
+
+
+## Get the closest flanking position to target.
+func _get_desired_position(target: Node2D) -> Vector2:
+ var side: float = signf(agent.global_position.x - target.global_position.x)
+ var desired_pos: Vector2 = target.global_position
+ desired_pos.x += approach_distance * side
+ return desired_pos
+
+
+## Select an intermidiate waypoint towards the desired position.
+func _select_new_waypoint(desired_position: Vector2) -> void:
+ var distance_vector: Vector2 = desired_position - agent.global_position
+ var angle_variation: float = randf_range(-0.2, 0.2)
+ _waypoint = agent.global_position + distance_vector.limit_length(150.0).rotated(angle_variation)
diff --git a/demo/ai/tasks/select_flanking_pos.gd b/demo/ai/tasks/select_flanking_pos.gd
new file mode 100644
index 0000000..78687ff
--- /dev/null
+++ b/demo/ai/tasks/select_flanking_pos.gd
@@ -0,0 +1,74 @@
+#*
+#* select_flanking_pos.gd
+#* =============================================================================
+#* Copyright (c) 2023-present Serhii Snitsaruk and the LimboAI contributors.
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+@tool
+extends BTAction
+## Selects a position on the target's side and stores it on the
+## blackboard, returning [code]SUCCESS[/code]. [br]
+## Returns [code]FAILURE[/code] if the target is not valid.
+
+enum AgentSide {
+ CLOSEST,
+ FARTHEST,
+ BACK,
+ FRONT,
+}
+
+## Blackboard variable that holds current target (should be a Node2D instance).
+@export var target_var: StringName = &"target"
+
+## Which agent's side should we flank?
+@export var flank_side: AgentSide = AgentSide.CLOSEST
+
+## Minimum range relative to the target.
+@export var range_min: int = 300
+
+## Maximum range relative to the target.
+@export var range_max: int = 400
+
+## Blackboard variable that will be used to store selected position.
+@export var position_var: StringName = &"pos"
+
+
+# Display a customized name (requires @tool).
+func _generate_name() -> String:
+ return "SelectFlankingPos target: %s range: [%s, %s] side: %s β%s" % [
+ LimboUtility.decorate_var(target_var),
+ range_min,
+ range_max,
+ AgentSide.keys()[flank_side],
+ LimboUtility.decorate_var(position_var)]
+
+
+# Called each time this task is ticked (aka executed).
+func _tick(_delta: float) -> Status:
+ var target := blackboard.get_var(target_var) as Node2D
+ if not is_instance_valid(target):
+ return FAILURE
+
+ var dir: float # 1.0 is right, -1.0 is left (relative to target)
+ match flank_side:
+ AgentSide.FARTHEST:
+ dir = signf(target.global_position.x - agent.global_position.x)
+ AgentSide.CLOSEST :
+ dir = -signf(target.global_position.x - agent.global_position.x)
+ AgentSide.BACK:
+ dir = -target.get_facing()
+ AgentSide.FRONT:
+ dir = target.get_facing()
+
+ var flank_pos: Vector2
+ var offset := Vector2(dir * randf_range(range_min, range_max), 0.0)
+ flank_pos = target.global_position + offset
+ if not agent.is_good_position(flank_pos):
+ # Choose the opposite side if the preferred side is not good (i.e., inside a collision shape).
+ flank_pos = target.global_position - offset
+ blackboard.set_var(position_var, flank_pos)
+ return SUCCESS
diff --git a/demo/ai/tasks/select_random_nearby_pos.gd b/demo/ai/tasks/select_random_nearby_pos.gd
new file mode 100644
index 0000000..1b108a5
--- /dev/null
+++ b/demo/ai/tasks/select_random_nearby_pos.gd
@@ -0,0 +1,34 @@
+@tool
+extends BTAction
+## Selects a random position nearby within the specified range and stores it on the blackboard. [br]
+## Returns [code]SUCCESS[/code].
+
+## Minimum distance to the desired position.
+@export var range_min: float = 300.0
+
+## Maximum distance to the desired position.
+@export var range_max: float = 500.0
+
+## Blackboard variable that will be used to store the desired position.
+@export var position_var: StringName = &"pos"
+
+
+# Display a customized name (requires @tool).
+func _generate_name() -> String:
+ return "SelectRandomNearbyPos range: [%s, %s] β%s" % [
+ range_min, range_max,
+ LimboUtility.decorate_var(position_var)]
+
+
+# Called each time this task is ticked (aka executed).
+func _tick(_delta: float) -> Status:
+ var pos: Vector2
+ var is_good_position: bool = false
+ while not is_good_position:
+ # Randomize until we find a good position (good position == not outside the arena).
+ var angle: float = randf() * TAU
+ var rand_distance: float = randf_range(range_min, range_max)
+ pos = agent.global_position + Vector2(sin(angle), cos(angle)) * rand_distance
+ is_good_position = agent.is_good_position(pos)
+ blackboard.set_var(position_var, pos)
+ return SUCCESS
diff --git a/demo/ai/trees/01_agent_melee_simple.tres b/demo/ai/trees/01_agent_melee_simple.tres
new file mode 100644
index 0000000..571b5c6
--- /dev/null
+++ b/demo/ai/trees/01_agent_melee_simple.tres
@@ -0,0 +1,88 @@
+[gd_resource type="BehaviorTree" load_steps=21 format=3 uid="uid://bpdm5jnegi38"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_2jpsu"]
+[ext_resource type="Script" path="res://demo/ai/tasks/pursue.gd" id="2_h5db5"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="3_bpmfp"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_46tbn"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+
+[sub_resource type="BBNode" id="BBNode_nrd4b"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_qiw21"]
+animation_player = SubResource("BBNode_nrd4b")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_xlud8"]
+min_duration = 0.7
+max_duration = 1.5
+
+[sub_resource type="BTSequence" id="BTSequence_yhjh1"]
+custom_name = "Pause before action"
+children = [SubResource("BTPlayAnimation_qiw21"), SubResource("BTRandomWait_xlud8")]
+
+[sub_resource type="BBNode" id="BBNode_wpj6d"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_olf37"]
+animation_player = SubResource("BBNode_wpj6d")
+animation_name = &"walk"
+blend = 0.1
+
+[sub_resource type="BTAction" id="BTAction_ulbrf"]
+script = ExtResource("1_2jpsu")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTAction" id="BTAction_a4jqi"]
+script = ExtResource("2_h5db5")
+target_var = &"target"
+speed_var = &"speed"
+approach_distance = 100.0
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_xek5v"]
+time_limit = 2.0
+children = [SubResource("BTAction_a4jqi")]
+
+[sub_resource type="BTSequence" id="BTSequence_1xfnq"]
+custom_name = "Pursue player"
+children = [SubResource("BTPlayAnimation_olf37"), SubResource("BTAction_ulbrf"), SubResource("BTTimeLimit_xek5v")]
+
+[sub_resource type="BTAction" id="BTAction_kidxn"]
+script = ExtResource("3_bpmfp")
+target_var = &"target"
+
+[sub_resource type="BTWait" id="BTWait_tadkc"]
+duration = 0.1
+
+[sub_resource type="BBNode" id="BBNode_s8evu"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_ppmxd"]
+await_completion = 2.0
+animation_player = SubResource("BBNode_s8evu")
+animation_name = &"attack_1"
+
+[sub_resource type="BTSequence" id="BTSequence_ww5v2"]
+custom_name = "Melee attack"
+children = [SubResource("BTAction_kidxn"), SubResource("BTWait_tadkc"), SubResource("BTPlayAnimation_ppmxd")]
+
+[sub_resource type="BTSequence" id="BTSequence_pxl2k"]
+children = [SubResource("BTSequence_yhjh1"), SubResource("BTSequence_1xfnq"), SubResource("BTSequence_ww5v2")]
+
+[resource]
+description = "Welcome to the [b]LimboAI[/b] demo project! This demo project consists of three parts:
+- If you're new to behavior trees, you can access the [b]Tutorial[/b] by clicking the \"Begin Tutorial\" button on the toolbar.
+- To experience the demo game, just click the \"Switch to Game\" button.
+- On this screen, you can inspect the AI behavior tree in action for each agent in the game."
+blackboard_plan = SubResource("BlackboardPlan_46tbn")
+root_task = SubResource("BTSequence_pxl2k")
diff --git a/demo/ai/trees/02_agent_charger.tres b/demo/ai/trees/02_agent_charger.tres
new file mode 100644
index 0000000..c8234c7
--- /dev/null
+++ b/demo/ai/trees/02_agent_charger.tres
@@ -0,0 +1,120 @@
+[gd_resource type="BehaviorTree" load_steps=28 format=3 uid="uid://ylife72ym5et"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_657p6"]
+[ext_resource type="Script" path="res://demo/ai/tasks/select_flanking_pos.gd" id="2_t3udh"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="3_u2ra5"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="4_xwjl7"]
+[ext_resource type="Script" path="res://demo/ai/tasks/move_forward.gd" id="5_ucvak"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_qd806"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+var/charge_speed/name = &"charge_speed"
+var/charge_speed/type = 3
+var/charge_speed/value = 1000.0
+var/charge_speed/hint = 1
+var/charge_speed/hint_string = "10,1000,10"
+
+[sub_resource type="BBNode" id="BBNode_yrurg"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_ha2ag"]
+animation_player = SubResource("BBNode_yrurg")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_cedqr"]
+max_duration = 3.0
+
+[sub_resource type="BTSequence" id="BTSequence_l3v31"]
+custom_name = "Short break"
+children = [SubResource("BTPlayAnimation_ha2ag"), SubResource("BTRandomWait_cedqr")]
+
+[sub_resource type="BTAction" id="BTAction_pp23y"]
+script = ExtResource("1_657p6")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTAction" id="BTAction_pmvd0"]
+script = ExtResource("2_t3udh")
+target_var = &"target"
+flank_side = 0
+range_min = 500
+range_max = 600
+position_var = &"flank_pos"
+
+[sub_resource type="BBNode" id="BBNode_xh3wr"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_h0poo"]
+animation_player = SubResource("BBNode_xh3wr")
+animation_name = &"walk"
+blend = 0.1
+
+[sub_resource type="BTAction" id="BTAction_87mi0"]
+script = ExtResource("3_u2ra5")
+target_position_var = &"flank_pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_is5ag"]
+time_limit = 3.0
+children = [SubResource("BTAction_87mi0")]
+
+[sub_resource type="BTSequence" id="BTSequence_p6pgg"]
+custom_name = "Flank target"
+children = [SubResource("BTAction_pp23y"), SubResource("BTAction_pmvd0"), SubResource("BTPlayAnimation_h0poo"), SubResource("BTTimeLimit_is5ag")]
+
+[sub_resource type="BTAction" id="BTAction_q5g4a"]
+script = ExtResource("4_xwjl7")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_bfijg"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_4okoy"]
+await_completion = 2.0
+animation_player = SubResource("BBNode_bfijg")
+animation_name = &"charge_prepare"
+blend = 0.1
+
+[sub_resource type="BTWait" id="BTWait_ovu3r"]
+duration = 0.6
+
+[sub_resource type="BTSequence" id="BTSequence_mde2g"]
+custom_name = "Anticipation"
+children = [SubResource("BTAction_q5g4a"), SubResource("BTPlayAnimation_4okoy"), SubResource("BTWait_ovu3r")]
+
+[sub_resource type="BBNode" id="BBNode_kpp70"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_8s1wq"]
+animation_player = SubResource("BBNode_kpp70")
+animation_name = &"charge"
+blend = 0.05
+
+[sub_resource type="BTAction" id="BTAction_o18uk"]
+script = ExtResource("5_ucvak")
+speed_var = &"charge_speed"
+duration = 1.5
+
+[sub_resource type="BTSequence" id="BTSequence_8lur1"]
+custom_name = "Charge!"
+children = [SubResource("BTPlayAnimation_8s1wq"), SubResource("BTAction_o18uk")]
+
+[sub_resource type="BTSequence" id="BTSequence_pjuov"]
+custom_name = "Charge Attack"
+children = [SubResource("BTSequence_l3v31"), SubResource("BTSequence_p6pgg"), SubResource("BTSequence_mde2g"), SubResource("BTSequence_8lur1")]
+
+[resource]
+description = "A [dec]Decorator[/dec] is a type of task that typically has only one child. Decorators are commonly used to alter the behavior or status of their child task. In this behavior tree, the [dec]TimeLimit[/dec] decorator sets a maximum time for the [act]Arrive[/act] action to complete its work. If the child task exceeds this time limit without finishing, it will be aborted, and the TimeLimit decorator will return [FAILURE]."
+blackboard_plan = SubResource("BlackboardPlan_qd806")
+root_task = SubResource("BTSequence_pjuov")
diff --git a/demo/ai/trees/03_agent_imp.tres b/demo/ai/trees/03_agent_imp.tres
new file mode 100644
index 0000000..e32ac17
--- /dev/null
+++ b/demo/ai/trees/03_agent_imp.tres
@@ -0,0 +1,120 @@
+[gd_resource type="BehaviorTree" load_steps=30 format=3 uid="uid://c2bxoo68ywb27"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/select_random_nearby_pos.gd" id="1_cdtqu"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="2_31fsn"]
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="3_y1r1a"]
+[ext_resource type="Script" path="res://demo/ai/tasks/pursue.gd" id="4_jlgat"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="5_o4ggh"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_46tbn"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+
+[sub_resource type="BBNode" id="BBNode_3y70b"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_klk26"]
+animation_player = SubResource("BBNode_3y70b")
+animation_name = &"walk"
+blend = 0.1
+
+[sub_resource type="BTAction" id="BTAction_chmiy"]
+script = ExtResource("1_cdtqu")
+range_min = 200.0
+range_max = 500.0
+position_var = &"pos"
+
+[sub_resource type="BTAction" id="BTAction_5kivl"]
+script = ExtResource("2_31fsn")
+target_position_var = &"pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BTSequence" id="BTSequence_k184c"]
+custom_name = "Chaotic Walk"
+children = [SubResource("BTPlayAnimation_klk26"), SubResource("BTAction_chmiy"), SubResource("BTAction_5kivl")]
+
+[sub_resource type="BTProbability" id="BTProbability_ifsry"]
+children = [SubResource("BTSequence_k184c")]
+
+[sub_resource type="BBNode" id="BBNode_nrd4b"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_qiw21"]
+animation_player = SubResource("BBNode_nrd4b")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_xlud8"]
+min_duration = 0.7
+max_duration = 1.5
+
+[sub_resource type="BTSequence" id="BTSequence_n5ltc"]
+custom_name = "Pause before action"
+children = [SubResource("BTPlayAnimation_qiw21"), SubResource("BTRandomWait_xlud8")]
+
+[sub_resource type="BBNode" id="BBNode_wpj6d"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_olf37"]
+animation_player = SubResource("BBNode_wpj6d")
+animation_name = &"walk"
+blend = 0.1
+
+[sub_resource type="BTAction" id="BTAction_ulbrf"]
+script = ExtResource("3_y1r1a")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTAction" id="BTAction_a4jqi"]
+script = ExtResource("4_jlgat")
+target_var = &"target"
+speed_var = &"speed"
+approach_distance = 100.0
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_xek5v"]
+time_limit = 2.0
+children = [SubResource("BTAction_a4jqi")]
+
+[sub_resource type="BTSequence" id="BTSequence_1xfnq"]
+custom_name = "Pursue player"
+children = [SubResource("BTPlayAnimation_olf37"), SubResource("BTAction_ulbrf"), SubResource("BTTimeLimit_xek5v")]
+
+[sub_resource type="BTAction" id="BTAction_kidxn"]
+script = ExtResource("5_o4ggh")
+target_var = &"target"
+
+[sub_resource type="BTWait" id="BTWait_tadkc"]
+duration = 0.1
+
+[sub_resource type="BBNode" id="BBNode_s8evu"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_ppmxd"]
+await_completion = 2.0
+animation_player = SubResource("BBNode_s8evu")
+animation_name = &"attack_1"
+
+[sub_resource type="BTSequence" id="BTSequence_ww5v2"]
+custom_name = "Melee attack"
+children = [SubResource("BTAction_kidxn"), SubResource("BTWait_tadkc"), SubResource("BTPlayAnimation_ppmxd")]
+
+[sub_resource type="BTSequence" id="BTSequence_pxl2k"]
+custom_name = "Engage player"
+children = [SubResource("BTSequence_n5ltc"), SubResource("BTSequence_1xfnq"), SubResource("BTSequence_ww5v2")]
+
+[sub_resource type="BTSelector" id="BTSelector_y3llm"]
+children = [SubResource("BTProbability_ifsry"), SubResource("BTSequence_pxl2k")]
+
+[resource]
+description = "Here, the [dec]Probability[/dec] decorator allows the execution of its branch in 50% of cases. This introduces a slight variation to the behavior each time the [comp]Chaotic walk[/comp] sequence is considered by the [comp]Selector[/comp]. This sequence can be selected several times in a row as long as the Probability decorator permits it. The [comp]Engage player[/comp] sequence is only executed if Probability returns [FAILURE]."
+blackboard_plan = SubResource("BlackboardPlan_46tbn")
+root_task = SubResource("BTSelector_y3llm")
diff --git a/demo/ai/trees/04_agent_skirmisher.tres b/demo/ai/trees/04_agent_skirmisher.tres
new file mode 100644
index 0000000..9b962f7
--- /dev/null
+++ b/demo/ai/trees/04_agent_skirmisher.tres
@@ -0,0 +1,190 @@
+[gd_resource type="BehaviorTree" load_steps=44 format=3 uid="uid://qqmjvbeibatn"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_2883n"]
+[ext_resource type="Script" path="res://demo/ai/tasks/select_flanking_pos.gd" id="2_cjso2"]
+[ext_resource type="Script" path="res://demo/ai/tasks/pursue.gd" id="2_lpckh"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="3_treio"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="4_57x51"]
+[ext_resource type="Script" path="res://demo/ai/tasks/in_range.gd" id="5_p5dih"]
+[ext_resource type="Script" path="res://demo/ai/tasks/back_away.gd" id="6_fkv0k"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_46tbn"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+var/fast_speed/name = &"fast_speed"
+var/fast_speed/type = 3
+var/fast_speed/value = 600.0
+var/fast_speed/hint = 1
+var/fast_speed/hint_string = "10,1000,10"
+var/slow_speed/name = &"slow_speed"
+var/slow_speed/type = 3
+var/slow_speed/value = 300.0
+var/slow_speed/hint = 1
+var/slow_speed/hint_string = "10,1000,10"
+
+[sub_resource type="BTAction" id="BTAction_ulbrf"]
+script = ExtResource("1_2883n")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_nrd4b"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_qiw21"]
+animation_player = SubResource("BBNode_nrd4b")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_xlud8"]
+min_duration = 2.0
+max_duration = 3.0
+
+[sub_resource type="BTSequence" id="BTSequence_yhjh1"]
+custom_name = "Summoning sickness"
+children = [SubResource("BTAction_ulbrf"), SubResource("BTPlayAnimation_qiw21"), SubResource("BTRandomWait_xlud8")]
+
+[sub_resource type="BTRunLimit" id="BTRunLimit_tq3e1"]
+children = [SubResource("BTSequence_yhjh1")]
+
+[sub_resource type="BTCondition" id="BTCondition_uk4dg"]
+script = ExtResource("5_p5dih")
+distance_min = 0.0
+distance_max = 300.0
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_7c0g0"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_sty80"]
+animation_player = SubResource("BBNode_7c0g0")
+animation_name = &"walk"
+blend = 0.1
+speed = 1.2
+
+[sub_resource type="BTAction" id="BTAction_jryg6"]
+script = ExtResource("2_lpckh")
+target_var = &"target"
+speed_var = &"speed"
+approach_distance = 100.0
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_lkphr"]
+time_limit = 1.0
+children = [SubResource("BTAction_jryg6")]
+
+[sub_resource type="BTAction" id="BTAction_kidxn"]
+script = ExtResource("4_57x51")
+target_var = &"target"
+
+[sub_resource type="BTWait" id="BTWait_tadkc"]
+duration = 0.2
+
+[sub_resource type="BBNode" id="BBNode_kcqly"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_hngi6"]
+await_completion = 2.0
+animation_player = SubResource("BBNode_kcqly")
+animation_name = &"attack_3"
+
+[sub_resource type="BTWait" id="BTWait_cm8jy"]
+duration = 0.5
+
+[sub_resource type="BTSequence" id="BTSequence_ww5v2"]
+custom_name = "Melee attack"
+children = [SubResource("BTCondition_uk4dg"), SubResource("BTPlayAnimation_sty80"), SubResource("BTTimeLimit_lkphr"), SubResource("BTAction_kidxn"), SubResource("BTWait_tadkc"), SubResource("BTPlayAnimation_hngi6"), SubResource("BTWait_cm8jy")]
+
+[sub_resource type="BTCooldown" id="BTCooldown_ksvfy"]
+duration = 2.0
+children = [SubResource("BTSequence_ww5v2")]
+
+[sub_resource type="BTCondition" id="BTCondition_fpufi"]
+script = ExtResource("5_p5dih")
+distance_min = 0.0
+distance_max = 300.0
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_3iqcf"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_ee0ff"]
+animation_player = SubResource("BBNode_3iqcf")
+animation_name = &"walk"
+blend = 0.1
+speed = -0.7
+
+[sub_resource type="BTAction" id="BTAction_4ye2y"]
+script = ExtResource("6_fkv0k")
+speed_var = &"slow_speed"
+max_angle_deviation = 0.7
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_cns1i"]
+time_limit = 1.5
+children = [SubResource("BTAction_4ye2y")]
+
+[sub_resource type="BTAlwaysSucceed" id="BTAlwaysSucceed_nw4ep"]
+children = [SubResource("BTTimeLimit_cns1i")]
+
+[sub_resource type="BBNode" id="BBNode_81x7t"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_e61er"]
+animation_player = SubResource("BBNode_81x7t")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_jw0cm"]
+
+[sub_resource type="BTSequence" id="BTSequence_y12eg"]
+custom_name = "Disengage"
+children = [SubResource("BTCondition_fpufi"), SubResource("BTPlayAnimation_ee0ff"), SubResource("BTAlwaysSucceed_nw4ep"), SubResource("BTPlayAnimation_e61er"), SubResource("BTRandomWait_jw0cm")]
+
+[sub_resource type="BBNode" id="BBNode_wpj6d"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_olf37"]
+animation_player = SubResource("BBNode_wpj6d")
+animation_name = &"walk"
+blend = 0.1
+speed = 1.2
+
+[sub_resource type="BTAction" id="BTAction_g5ayy"]
+script = ExtResource("2_cjso2")
+target_var = &"target"
+flank_side = 2
+range_min = 90
+range_max = 90
+position_var = &"flank_pos"
+
+[sub_resource type="BTAction" id="BTAction_tv4lt"]
+script = ExtResource("3_treio")
+target_position_var = &"flank_pos"
+speed_var = &"fast_speed"
+tolerance = 50.0
+avoid_var = &"target"
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_xek5v"]
+children = [SubResource("BTAction_tv4lt")]
+
+[sub_resource type="BTSequence" id="BTSequence_rgwic"]
+custom_name = "Flank from behind"
+children = [SubResource("BTPlayAnimation_olf37"), SubResource("BTAction_g5ayy"), SubResource("BTTimeLimit_xek5v")]
+
+[sub_resource type="BTSelector" id="BTSelector_2jnau"]
+children = [SubResource("BTRunLimit_tq3e1"), SubResource("BTCooldown_ksvfy"), SubResource("BTSequence_y12eg"), SubResource("BTSequence_rgwic")]
+
+[resource]
+description = "Like actions, conditions do not contain child tasks within them. Instead, they evaluate specific criteria and return either a [SUCCESS] or [FAILURE] based on the agent's or environment's state (for example, \"IsLowOnHealth\", \"IsTargetInSight\"). Conditions are commonly employed alongside sequences to interrupt their execution if a particular requirement is not met.
+
+In our example, if the target is not within the specified range, the [con]InRange[/con] condition will return [FAILURE], causing the [comp]sequence[/comp] to be aborted.
+"
+blackboard_plan = SubResource("BlackboardPlan_46tbn")
+root_task = SubResource("BTSelector_2jnau")
diff --git a/demo/ai/trees/05_agent_ranged.tres b/demo/ai/trees/05_agent_ranged.tres
new file mode 100644
index 0000000..b41517c
--- /dev/null
+++ b/demo/ai/trees/05_agent_ranged.tres
@@ -0,0 +1,182 @@
+[gd_resource type="BehaviorTree" load_steps=41 format=3 uid="uid://cqluon1y1hnn5"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_4xk1i"]
+[ext_resource type="Script" path="res://demo/ai/tasks/is_aligned_with_target.gd" id="2_a8qex"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="3_q4r2p"]
+[ext_resource type="Script" path="res://demo/ai/tasks/select_flanking_pos.gd" id="4_53hao"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="5_aexyq"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_46tbn"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+var/run_speed/name = &"run_speed"
+var/run_speed/type = 3
+var/run_speed/value = 600.0
+var/run_speed/hint = 1
+var/run_speed/hint_string = "10,1000,10"
+
+[sub_resource type="BBNode" id="BBNode_nrd4b"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_qiw21"]
+animation_player = SubResource("BBNode_nrd4b")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_xlud8"]
+min_duration = 0.7
+max_duration = 1.5
+
+[sub_resource type="BTAction" id="BTAction_c4cxo"]
+script = ExtResource("1_4xk1i")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTSequence" id="BTSequence_yhjh1"]
+custom_name = "Take a break"
+children = [SubResource("BTPlayAnimation_qiw21"), SubResource("BTRandomWait_xlud8"), SubResource("BTAction_c4cxo")]
+
+[sub_resource type="BBNode" id="BBNode_ok0r5"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_unftu"]
+animation_player = SubResource("BBNode_ok0r5")
+animation_name = &"walk"
+blend = 0.1
+speed = 1.5
+
+[sub_resource type="BTAction" id="BTAction_op6l6"]
+script = ExtResource("4_53hao")
+target_var = &"target"
+flank_side = 1
+range_min = 400
+range_max = 1000
+position_var = &"pos"
+
+[sub_resource type="BTAction" id="BTAction_ycjun"]
+script = ExtResource("3_q4r2p")
+target_position_var = &"pos"
+speed_var = &"run_speed"
+tolerance = 50.0
+avoid_var = &"target"
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_gadc6"]
+time_limit = 7.0
+children = [SubResource("BTAction_ycjun")]
+
+[sub_resource type="BTAction" id="BTAction_poqpu"]
+script = ExtResource("5_aexyq")
+target_var = &"target"
+
+[sub_resource type="BTSequence" id="BTSequence_0gdqn"]
+custom_name = "Change flank"
+children = [SubResource("BTPlayAnimation_unftu"), SubResource("BTAction_op6l6"), SubResource("BTTimeLimit_gadc6"), SubResource("BTAction_poqpu")]
+
+[sub_resource type="BTCooldown" id="BTCooldown_2lneu"]
+duration = 7.0
+children = [SubResource("BTSequence_0gdqn")]
+
+[sub_resource type="BTProbability" id="BTProbability_6sydk"]
+run_chance = 0.3
+children = [SubResource("BTCooldown_2lneu")]
+
+[sub_resource type="BTAction" id="BTAction_kuuw2"]
+script = ExtResource("4_53hao")
+target_var = &"target"
+flank_side = 0
+range_min = 400
+range_max = 1000
+position_var = &"shoot_pos"
+
+[sub_resource type="BBNode" id="BBNode_kc64r"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_panch"]
+animation_player = SubResource("BBNode_kc64r")
+animation_name = &"walk"
+blend = 0.1
+
+[sub_resource type="BTAction" id="BTAction_66hsk"]
+script = ExtResource("3_q4r2p")
+target_position_var = &"shoot_pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_24ath"]
+children = [SubResource("BTAction_66hsk")]
+
+[sub_resource type="BTAction" id="BTAction_enw2m"]
+script = ExtResource("5_aexyq")
+target_var = &"target"
+
+[sub_resource type="BTCondition" id="BTCondition_1fnyc"]
+script = ExtResource("2_a8qex")
+target_var = &"target"
+tolerance = 150.0
+
+[sub_resource type="BBNode" id="BBNode_s6vt4"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_qa8jy"]
+animation_player = SubResource("BBNode_s6vt4")
+animation_name = &"throw_prepare"
+blend = 0.1
+
+[sub_resource type="BTWait" id="BTWait_gbcyb"]
+
+[sub_resource type="BBNode" id="BBNode_qkfqt"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_0ktds"]
+await_completion = 1.0
+animation_player = SubResource("BBNode_qkfqt")
+animation_name = &"throw"
+blend = 0.05
+
+[sub_resource type="BBNode" id="BBNode_1yxc5"]
+saved_value = NodePath(".")
+resource_name = "."
+
+[sub_resource type="BTCallMethod" id="BTCallMethod_yx4fk"]
+node = SubResource("BBNode_1yxc5")
+method = &"throw_ninja_star"
+
+[sub_resource type="BTWait" id="BTWait_d2ib4"]
+duration = 0.2
+
+[sub_resource type="BTSequence" id="BTSequence_rgbq3"]
+custom_name = "Throw ninja star"
+children = [SubResource("BTPlayAnimation_qa8jy"), SubResource("BTWait_gbcyb"), SubResource("BTPlayAnimation_0ktds"), SubResource("BTCallMethod_yx4fk"), SubResource("BTWait_d2ib4")]
+metadata/_weight_ = 1.0
+
+[sub_resource type="BTRepeat" id="BTRepeat_g08ia"]
+times = 3
+children = [SubResource("BTSequence_rgbq3")]
+
+[sub_resource type="BTSequence" id="BTSequence_lhg7f"]
+custom_name = "Get into position"
+children = [SubResource("BTAction_kuuw2"), SubResource("BTPlayAnimation_panch"), SubResource("BTTimeLimit_24ath"), SubResource("BTAction_enw2m"), SubResource("BTCondition_1fnyc"), SubResource("BTRepeat_g08ia")]
+metadata/_weight_ = 1.0
+
+[sub_resource type="BTSelector" id="BTSelector_1rrya"]
+children = [SubResource("BTProbability_6sydk"), SubResource("BTSequence_lhg7f")]
+
+[sub_resource type="BTSequence" id="BTSequence_pxl2k"]
+custom_name = "Main"
+children = [SubResource("BTSequence_yhjh1"), SubResource("BTSelector_1rrya")]
+
+[resource]
+description = "Here, the [dec]Probability[/dec] decorator permits the execution of its branch in 30% of cases. This introduces a slight variation to the behavior each time the \"Change flank\" sequence is considered by the [comp]Selector[/comp].
+
+The [dec]Repeat[/dec] decorator is handy for doing something multiple times within a behavior tree. In our example, it's used to make the [comp]Throw ninja star[/comp] sequence perform three times in a row."
+blackboard_plan = SubResource("BlackboardPlan_46tbn")
+root_task = SubResource("BTSequence_pxl2k")
diff --git a/demo/ai/trees/06_agent_melee_combo.tres b/demo/ai/trees/06_agent_melee_combo.tres
new file mode 100644
index 0000000..c8db52e
--- /dev/null
+++ b/demo/ai/trees/06_agent_melee_combo.tres
@@ -0,0 +1,163 @@
+[gd_resource type="BehaviorTree" load_steps=39 format=3 uid="uid://cpncl1db8j12f"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_sf4l8"]
+[ext_resource type="Script" path="res://demo/ai/tasks/select_flanking_pos.gd" id="2_5nwkp"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="3_3tom2"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="4_hi228"]
+[ext_resource type="Script" path="res://demo/ai/tasks/move_forward.gd" id="5_au5yc"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_46tbn"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+var/charge_speed/name = &"charge_speed"
+var/charge_speed/type = 3
+var/charge_speed/value = 1000.0
+var/charge_speed/hint = 0
+var/charge_speed/hint_string = ""
+
+[sub_resource type="BBNode" id="BBNode_nrd4b"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_qiw21"]
+animation_player = SubResource("BBNode_nrd4b")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_xlud8"]
+min_duration = 0.7
+max_duration = 1.5
+
+[sub_resource type="BTAction" id="BTAction_ulbrf"]
+script = ExtResource("1_sf4l8")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTSequence" id="BTSequence_yhjh1"]
+custom_name = "Pause before action"
+children = [SubResource("BTPlayAnimation_qiw21"), SubResource("BTRandomWait_xlud8"), SubResource("BTAction_ulbrf")]
+
+[sub_resource type="BTAction" id="BTAction_85keo"]
+script = ExtResource("2_5nwkp")
+target_var = &"target"
+flank_side = 0
+range_min = 300
+range_max = 400
+position_var = &"pos"
+
+[sub_resource type="BBNode" id="BBNode_wpj6d"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_olf37"]
+animation_player = SubResource("BBNode_wpj6d")
+animation_name = &"walk"
+blend = 0.1
+
+[sub_resource type="BTAction" id="BTAction_ygjnc"]
+script = ExtResource("3_3tom2")
+target_position_var = &"pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_xek5v"]
+children = [SubResource("BTAction_ygjnc")]
+
+[sub_resource type="BTSequence" id="BTSequence_1xfnq"]
+custom_name = "Align with player"
+children = [SubResource("BTAction_85keo"), SubResource("BTPlayAnimation_olf37"), SubResource("BTTimeLimit_xek5v")]
+
+[sub_resource type="BTAction" id="BTAction_kidxn"]
+script = ExtResource("4_hi228")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_giv5l"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_usdja"]
+animation_player = SubResource("BBNode_giv5l")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTWait" id="BTWait_tadkc"]
+duration = 0.4
+
+[sub_resource type="BBNode" id="BBNode_s8evu"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_ppmxd"]
+await_completion = 2.0
+animation_player = SubResource("BBNode_s8evu")
+animation_name = &"attack_1"
+
+[sub_resource type="BTAction" id="BTAction_u22bc"]
+script = ExtResource("5_au5yc")
+speed_var = &"charge_speed"
+duration = 0.1
+
+[sub_resource type="BTParallel" id="BTParallel_ec2e3"]
+num_successes_required = 2
+children = [SubResource("BTPlayAnimation_ppmxd"), SubResource("BTAction_u22bc")]
+
+[sub_resource type="BTWait" id="BTWait_c0lo0"]
+duration = 0.2
+
+[sub_resource type="BBNode" id="BBNode_3oljv"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_q4uis"]
+await_completion = 2.0
+animation_player = SubResource("BBNode_3oljv")
+animation_name = &"attack_2"
+
+[sub_resource type="BTAction" id="BTAction_yuxl3"]
+script = ExtResource("5_au5yc")
+speed_var = &"charge_speed"
+duration = 0.1
+
+[sub_resource type="BTParallel" id="BTParallel_thojy"]
+num_successes_required = 2
+children = [SubResource("BTPlayAnimation_q4uis"), SubResource("BTAction_yuxl3")]
+
+[sub_resource type="BTWait" id="BTWait_y3pmv"]
+duration = 0.2
+
+[sub_resource type="BBNode" id="BBNode_ot40l"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_ye5pt"]
+await_completion = 2.0
+animation_player = SubResource("BBNode_ot40l")
+animation_name = &"attack_3"
+
+[sub_resource type="BTAction" id="BTAction_rwp18"]
+script = ExtResource("5_au5yc")
+speed_var = &"charge_speed"
+duration = 0.1
+
+[sub_resource type="BTParallel" id="BTParallel_qmdfb"]
+num_successes_required = 2
+children = [SubResource("BTPlayAnimation_ye5pt"), SubResource("BTAction_rwp18")]
+
+[sub_resource type="BTWait" id="BTWait_nxyko"]
+duration = 0.5
+
+[sub_resource type="BTSequence" id="BTSequence_ww5v2"]
+custom_name = "Combo Melee attack"
+children = [SubResource("BTAction_kidxn"), SubResource("BTPlayAnimation_usdja"), SubResource("BTWait_tadkc"), SubResource("BTParallel_ec2e3"), SubResource("BTWait_c0lo0"), SubResource("BTParallel_thojy"), SubResource("BTWait_y3pmv"), SubResource("BTParallel_qmdfb"), SubResource("BTWait_nxyko")]
+
+[sub_resource type="BTSequence" id="BTSequence_pxl2k"]
+children = [SubResource("BTSequence_yhjh1"), SubResource("BTSequence_1xfnq"), SubResource("BTSequence_ww5v2")]
+
+[resource]
+description = "In some scenarios, you might need to execute multiple tasks at the same time until specific conditions are fulfilled. To achieve this, the [comp]Parallel[/comp] composite is an invaluable tool. This composite task allows its children to be executed simultaneously during each tick until a specified number of successes or failures is reached. In this example, it will execute both the [act]PlayAnimation[/act] and [act]MoveForward[/act] actions each tick until both actions have finished with a [SUCCESS] status."
+blackboard_plan = SubResource("BlackboardPlan_46tbn")
+root_task = SubResource("BTSequence_pxl2k")
diff --git a/demo/ai/trees/07_agent_melee_nuanced.tres b/demo/ai/trees/07_agent_melee_nuanced.tres
new file mode 100644
index 0000000..cc3bdb3
--- /dev/null
+++ b/demo/ai/trees/07_agent_melee_nuanced.tres
@@ -0,0 +1,219 @@
+[gd_resource type="BehaviorTree" load_steps=49 format=3 uid="uid://c2u6sljqkim0n"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_08fik"]
+[ext_resource type="Script" path="res://demo/ai/tasks/select_flanking_pos.gd" id="2_te3yo"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="3_svwk8"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="4_mvsyw"]
+[ext_resource type="Script" path="res://demo/ai/tasks/pursue.gd" id="5_r1ou0"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_46tbn"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+var/flank_speed/name = &"flank_speed"
+var/flank_speed/type = 3
+var/flank_speed/value = 600.0
+var/flank_speed/hint = 1
+var/flank_speed/hint_string = "10,1000,10"
+
+[sub_resource type="BBNode" id="BBNode_nrd4b"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_qiw21"]
+animation_player = SubResource("BBNode_nrd4b")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_xlud8"]
+min_duration = 0.7
+max_duration = 1.5
+
+[sub_resource type="BTAction" id="BTAction_c4cxo"]
+script = ExtResource("1_08fik")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTSequence" id="BTSequence_yhjh1"]
+custom_name = "Pause before action"
+children = [SubResource("BTPlayAnimation_qiw21"), SubResource("BTRandomWait_xlud8"), SubResource("BTAction_c4cxo")]
+
+[sub_resource type="BBNode" id="BBNode_kc64r"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_panch"]
+animation_player = SubResource("BBNode_kc64r")
+animation_name = &"walk"
+blend = 0.1
+speed = 1.5
+
+[sub_resource type="BTAction" id="BTAction_6e48s"]
+script = ExtResource("2_te3yo")
+target_var = &"target"
+flank_side = 1
+range_min = 400
+range_max = 600
+position_var = &"flank_pos"
+
+[sub_resource type="BTAction" id="BTAction_66hsk"]
+script = ExtResource("3_svwk8")
+target_position_var = &"flank_pos"
+speed_var = &"flank_speed"
+tolerance = 50.0
+avoid_var = &"target"
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_24ath"]
+children = [SubResource("BTAction_66hsk")]
+
+[sub_resource type="BTAction" id="BTAction_enw2m"]
+script = ExtResource("4_mvsyw")
+target_var = &"target"
+
+[sub_resource type="BTSequence" id="BTSequence_lhg7f"]
+custom_name = "Flank player"
+children = [SubResource("BTPlayAnimation_panch"), SubResource("BTAction_6e48s"), SubResource("BTTimeLimit_24ath"), SubResource("BTAction_enw2m")]
+metadata/_weight_ = 1.0
+
+[sub_resource type="BTCooldown" id="BTCooldown_skw41"]
+duration = 6.0
+children = [SubResource("BTSequence_lhg7f")]
+metadata/_weight_ = 2.0
+
+[sub_resource type="BBNode" id="BBNode_wpj6d"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_olf37"]
+animation_player = SubResource("BBNode_wpj6d")
+animation_name = &"walk"
+blend = 0.1
+
+[sub_resource type="BTAction" id="BTAction_a4jqi"]
+script = ExtResource("5_r1ou0")
+target_var = &"target"
+speed_var = &"speed"
+approach_distance = 100.0
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_xek5v"]
+time_limit = 2.0
+children = [SubResource("BTAction_a4jqi")]
+
+[sub_resource type="BTAction" id="BTAction_kidxn"]
+script = ExtResource("4_mvsyw")
+target_var = &"target"
+
+[sub_resource type="BTWait" id="BTWait_tadkc"]
+duration = 0.1
+
+[sub_resource type="BBNode" id="BBNode_g8qww"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_a8yqu"]
+await_completion = 2.0
+animation_player = SubResource("BBNode_g8qww")
+animation_name = &"attack_2"
+
+[sub_resource type="BTWait" id="BTWait_vjstl"]
+duration = 0.1
+
+[sub_resource type="BBNode" id="BBNode_rfop0"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_8oyw6"]
+await_completion = 2.0
+animation_player = SubResource("BBNode_rfop0")
+animation_name = &"attack_3"
+
+[sub_resource type="BTSequence" id="BTSequence_1xfnq"]
+custom_name = "Approach and melee attack"
+children = [SubResource("BTPlayAnimation_olf37"), SubResource("BTTimeLimit_xek5v"), SubResource("BTAction_kidxn"), SubResource("BTWait_tadkc"), SubResource("BTPlayAnimation_a8yqu"), SubResource("BTWait_vjstl"), SubResource("BTPlayAnimation_8oyw6")]
+metadata/_weight_ = 4.0
+
+[sub_resource type="BTAction" id="BTAction_mf87t"]
+script = ExtResource("2_te3yo")
+target_var = &"target"
+flank_side = 0
+range_min = 350
+range_max = 600
+position_var = &"pos"
+
+[sub_resource type="BBNode" id="BBNode_cx111"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_mfbeu"]
+animation_player = SubResource("BBNode_cx111")
+animation_name = &"walk"
+blend = 0.1
+
+[sub_resource type="BTAction" id="BTAction_6nx58"]
+script = ExtResource("3_svwk8")
+target_position_var = &"pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_tidwl"]
+time_limit = 3.0
+children = [SubResource("BTAction_6nx58")]
+
+[sub_resource type="BTAction" id="BTAction_8q20y"]
+script = ExtResource("4_mvsyw")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_s6vt4"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_qa8jy"]
+animation_player = SubResource("BBNode_s6vt4")
+animation_name = &"throw_prepare"
+blend = 0.1
+speed = 0.7
+
+[sub_resource type="BTWait" id="BTWait_gbcyb"]
+
+[sub_resource type="BBNode" id="BBNode_qkfqt"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_0ktds"]
+await_completion = 1.0
+animation_player = SubResource("BBNode_qkfqt")
+animation_name = &"throw"
+blend = 0.05
+
+[sub_resource type="BBNode" id="BBNode_1yxc5"]
+saved_value = NodePath(".")
+resource_name = "."
+
+[sub_resource type="BTCallMethod" id="BTCallMethod_yx4fk"]
+node = SubResource("BBNode_1yxc5")
+method = &"throw_ninja_star"
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_2pmoe"]
+max_duration = 1.5
+
+[sub_resource type="BTSequence" id="BTSequence_rgbq3"]
+custom_name = "Throw ninja star"
+children = [SubResource("BTAction_mf87t"), SubResource("BTPlayAnimation_mfbeu"), SubResource("BTTimeLimit_tidwl"), SubResource("BTAction_8q20y"), SubResource("BTPlayAnimation_qa8jy"), SubResource("BTWait_gbcyb"), SubResource("BTPlayAnimation_0ktds"), SubResource("BTCallMethod_yx4fk"), SubResource("BTRandomWait_2pmoe")]
+metadata/_weight_ = 2.0
+
+[sub_resource type="BTProbabilitySelector" id="BTProbabilitySelector_rjsiq"]
+abort_on_failure = true
+children = [SubResource("BTCooldown_skw41"), SubResource("BTSequence_1xfnq"), SubResource("BTSequence_rgbq3")]
+
+[sub_resource type="BTSequence" id="BTSequence_pxl2k"]
+custom_name = "Main"
+children = [SubResource("BTSequence_yhjh1"), SubResource("BTProbabilitySelector_rjsiq")]
+
+[resource]
+description = "[comp]ProbabilitySelector[/comp] chooses a child task to execute based on attached probabilities. Probability distribution is calculated based on weights assigned to each child task.
+"
+blackboard_plan = SubResource("BlackboardPlan_46tbn")
+root_task = SubResource("BTSequence_pxl2k")
diff --git a/demo/ai/trees/08_agent_demon.tres b/demo/ai/trees/08_agent_demon.tres
new file mode 100644
index 0000000..47369ce
--- /dev/null
+++ b/demo/ai/trees/08_agent_demon.tres
@@ -0,0 +1,200 @@
+[gd_resource type="BehaviorTree" load_steps=49 format=3 uid="uid://cpcnbi81jqge4"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_ce4la"]
+[ext_resource type="Script" path="res://demo/ai/tasks/in_range.gd" id="2_atyuj"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="3_3mw7l"]
+[ext_resource type="Script" path="res://demo/ai/tasks/back_away.gd" id="4_6dr32"]
+[ext_resource type="Script" path="res://demo/ai/tasks/select_flanking_pos.gd" id="5_dho0d"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="6_0pfsl"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_8ay3j"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+
+[sub_resource type="BBNode" id="BBNode_lpri5"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_p3e7a"]
+animation_player = SubResource("BBNode_lpri5")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_j6cjm"]
+min_duration = 2.0
+max_duration = 3.0
+
+[sub_resource type="BTSequence" id="BTSequence_5thv4"]
+custom_name = "Chill"
+children = [SubResource("BTPlayAnimation_p3e7a"), SubResource("BTRandomWait_j6cjm")]
+
+[sub_resource type="BTCooldown" id="BTCooldown_oms7a"]
+trigger_on_failure = true
+children = [SubResource("BTSequence_5thv4")]
+
+[sub_resource type="BTAction" id="BTAction_ohfp7"]
+script = ExtResource("1_ce4la")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTCondition" id="BTCondition_7a5nv"]
+script = ExtResource("2_atyuj")
+distance_min = 0.0
+distance_max = 150.0
+target_var = &"target"
+
+[sub_resource type="BTAction" id="BTAction_ddvrs"]
+script = ExtResource("3_3mw7l")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_c4nfu"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_yytkn"]
+await_completion = 3.0
+animation_player = SubResource("BBNode_c4nfu")
+animation_name = &"attack_3"
+blend = 0.1
+
+[sub_resource type="BTCooldown" id="BTCooldown_ejg6q"]
+duration = 3.0
+children = [SubResource("BTPlayAnimation_yytkn")]
+
+[sub_resource type="BTSequence" id="BTSequence_eikr4"]
+custom_name = "Melee"
+children = [SubResource("BTAction_ohfp7"), SubResource("BTCondition_7a5nv"), SubResource("BTAction_ddvrs"), SubResource("BTCooldown_ejg6q")]
+
+[sub_resource type="BTCondition" id="BTCondition_h75v8"]
+script = ExtResource("2_atyuj")
+distance_min = 0.0
+distance_max = 300.0
+target_var = &"target"
+
+[sub_resource type="BTAction" id="BTAction_wpt7j"]
+script = ExtResource("3_3mw7l")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_iv62h"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_wnaul"]
+animation_player = SubResource("BBNode_iv62h")
+animation_name = &"walk"
+blend = 0.1
+speed = -1.0
+
+[sub_resource type="BTAction" id="BTAction_h2efl"]
+script = ExtResource("4_6dr32")
+speed_var = &"speed"
+max_angle_deviation = 0.7
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_wm5g2"]
+time_limit = 1.0
+children = [SubResource("BTAction_h2efl")]
+
+[sub_resource type="BTSequence" id="BTSequence_wh4dl"]
+custom_name = "Back away"
+children = [SubResource("BTCondition_h75v8"), SubResource("BTAction_wpt7j"), SubResource("BTPlayAnimation_wnaul"), SubResource("BTTimeLimit_wm5g2")]
+
+[sub_resource type="BTComment" id="BTComment_mqte5"]
+custom_name = "Get into position"
+
+[sub_resource type="BBNode" id="BBNode_edmui"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_vjtpq"]
+animation_player = SubResource("BBNode_edmui")
+animation_name = &"walk"
+blend = 0.1
+
+[sub_resource type="BTAction" id="BTAction_4mmh0"]
+script = ExtResource("5_dho0d")
+target_var = &"target"
+flank_side = 0
+range_min = 300
+range_max = 700
+position_var = &"pos"
+
+[sub_resource type="BTAction" id="BTAction_vb5c3"]
+script = ExtResource("6_0pfsl")
+target_position_var = &"pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_jyks2"]
+children = [SubResource("BTAction_vb5c3")]
+
+[sub_resource type="BTComment" id="BTComment_ym6nj"]
+custom_name = "Short break before action"
+
+[sub_resource type="BTAction" id="BTAction_fkevy"]
+script = ExtResource("3_3mw7l")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_lh25u"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_vcjeq"]
+animation_player = SubResource("BBNode_lh25u")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTWait" id="BTWait_42smh"]
+duration = 0.2
+
+[sub_resource type="BTComment" id="BTComment_nbp2b"]
+custom_name = "Spit fire!"
+
+[sub_resource type="BBNode" id="BBNode_cqw71"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_214yn"]
+await_completion = 3.0
+animation_player = SubResource("BBNode_cqw71")
+animation_name = &"spit"
+blend = 0.1
+
+[sub_resource type="BBNode" id="BBNode_dv5b5"]
+saved_value = NodePath(".")
+resource_name = "."
+
+[sub_resource type="BTCallMethod" id="BTCallMethod_lk7i6"]
+node = SubResource("BBNode_dv5b5")
+method = &"spit_fire"
+
+[sub_resource type="BTComment" id="BTComment_fndxk"]
+custom_name = "Wind down"
+
+[sub_resource type="BBNode" id="BBNode_m68ui"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_m7gyp"]
+animation_player = SubResource("BBNode_m68ui")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_v0el8"]
+min_duration = 0.7
+max_duration = 1.5
+
+[sub_resource type="BTSequence" id="BTSequence_djtph"]
+custom_name = "Spit fire"
+children = [SubResource("BTComment_mqte5"), SubResource("BTPlayAnimation_vjtpq"), SubResource("BTAction_4mmh0"), SubResource("BTTimeLimit_jyks2"), SubResource("BTComment_ym6nj"), SubResource("BTAction_fkevy"), SubResource("BTPlayAnimation_vcjeq"), SubResource("BTWait_42smh"), SubResource("BTComment_nbp2b"), SubResource("BTPlayAnimation_214yn"), SubResource("BTCallMethod_lk7i6"), SubResource("BTComment_fndxk"), SubResource("BTPlayAnimation_m7gyp"), SubResource("BTRandomWait_v0el8")]
+
+[sub_resource type="BTSelector" id="BTSelector_feba6"]
+children = [SubResource("BTCooldown_oms7a"), SubResource("BTSequence_eikr4"), SubResource("BTSequence_wh4dl"), SubResource("BTSequence_djtph")]
+
+[resource]
+description = "Here, we use the [con]InRange[/con] condition task together with [comp]Sequence[/comp] and [comp]Selector[/comp] to create a reactive behavior for this agent. When the player comes close, this agent will attempt to hit them with a melee attack and move away afterward for a better ranged position."
+blackboard_plan = SubResource("BlackboardPlan_8ay3j")
+root_task = SubResource("BTSelector_feba6")
diff --git a/demo/ai/trees/09_agent_summoner.tres b/demo/ai/trees/09_agent_summoner.tres
new file mode 100644
index 0000000..e5cfbe2
--- /dev/null
+++ b/demo/ai/trees/09_agent_summoner.tres
@@ -0,0 +1,155 @@
+[gd_resource type="BehaviorTree" load_steps=35 format=3 uid="uid://cpxk7jnqpwwlc"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/select_random_nearby_pos.gd" id="1_sgn0p"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="2_pshl2"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_58oq1"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 300.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+var/summon_cooldown/name = &"summon_cooldown"
+var/summon_cooldown/type = 1
+var/summon_cooldown/value = false
+var/summon_cooldown/hint = 0
+var/summon_cooldown/hint_string = ""
+
+[sub_resource type="BBNode" id="BBNode_b7euf"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_sot6a"]
+animation_player = SubResource("BBNode_b7euf")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_0wc6p"]
+
+[sub_resource type="BTSequence" id="BTSequence_kwkxc"]
+custom_name = "Summoning sickness"
+children = [SubResource("BTPlayAnimation_sot6a"), SubResource("BTRandomWait_0wc6p")]
+
+[sub_resource type="BTRunLimit" id="BTRunLimit_x2jr4"]
+children = [SubResource("BTSequence_kwkxc")]
+
+[sub_resource type="BBVariant" id="BBVariant_y3x7n"]
+type = 2
+saved_value = 6
+resource_name = "6"
+
+[sub_resource type="BTCheckAgentProperty" id="BTCheckAgentProperty_olmdj"]
+property = &"summon_count"
+check_type = 1
+value = SubResource("BBVariant_y3x7n")
+
+[sub_resource type="BTComment" id="BTComment_ef6y0"]
+custom_name = "Variable $summon_cooldown is updated by the Cooldown task below"
+
+[sub_resource type="BBVariant" id="BBVariant_hgde2"]
+type = 1
+saved_value = false
+resource_name = "false"
+
+[sub_resource type="BTCheckVar" id="BTCheckVar_hc3o3"]
+variable = &"summon_cooldown"
+value = SubResource("BBVariant_hgde2")
+children = [SubResource("BTComment_ef6y0")]
+
+[sub_resource type="BBNode" id="BBNode_q8bei"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_6leni"]
+animation_player = SubResource("BBNode_q8bei")
+animation_name = &"summon"
+blend = 0.1
+
+[sub_resource type="BTWait" id="BTWait_8og18"]
+duration = 0.5
+
+[sub_resource type="BTAction" id="BTAction_yeyns"]
+script = ExtResource("1_sgn0p")
+range_min = 300.0
+range_max = 500.0
+position_var = &"minion_pos"
+
+[sub_resource type="BBVariant" id="BBVariant_wfjwy"]
+type = 5
+value_source = 1
+variable = &"minion_pos"
+resource_name = "$minion_pos"
+
+[sub_resource type="BBNode" id="BBNode_v271m"]
+saved_value = NodePath(".")
+resource_name = "."
+
+[sub_resource type="BTCallMethod" id="BTCallMethod_4ath5"]
+node = SubResource("BBNode_v271m")
+method = &"summon_minion"
+args = Array[BBVariant]([SubResource("BBVariant_wfjwy")])
+
+[sub_resource type="BTCooldown" id="BTCooldown_25f70"]
+duration = 6.0
+cooldown_state_var = &"summon_cooldown"
+children = [SubResource("BTCallMethod_4ath5")]
+
+[sub_resource type="BTWait" id="BTWait_tdhfn"]
+
+[sub_resource type="BTSequence" id="BTSequence_2n742"]
+custom_name = "Summon minion"
+children = [SubResource("BTCheckAgentProperty_olmdj"), SubResource("BTCheckVar_hc3o3"), SubResource("BTPlayAnimation_6leni"), SubResource("BTWait_8og18"), SubResource("BTAction_yeyns"), SubResource("BTCooldown_25f70"), SubResource("BTWait_tdhfn")]
+
+[sub_resource type="BTAction" id="BTAction_33wje"]
+script = ExtResource("1_sgn0p")
+range_min = 300.0
+range_max = 700.0
+position_var = &"pos"
+
+[sub_resource type="BBNode" id="BBNode_w5fh2"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_qbxm8"]
+animation_player = SubResource("BBNode_w5fh2")
+animation_name = &"walk"
+blend = 0.1
+
+[sub_resource type="BTAction" id="BTAction_dfifw"]
+script = ExtResource("2_pshl2")
+target_position_var = &"pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_i05cm"]
+time_limit = 3.0
+children = [SubResource("BTAction_dfifw")]
+
+[sub_resource type="BBNode" id="BBNode_vinxt"]
+saved_value = NodePath("AnimationPlayer")
+resource_name = "AnimationPlayer"
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_t7drr"]
+animation_player = SubResource("BBNode_vinxt")
+animation_name = &"idle"
+blend = 0.1
+
+[sub_resource type="BTRandomWait" id="BTRandomWait_axjfh"]
+
+[sub_resource type="BTSequence" id="BTSequence_ks71q"]
+custom_name = "Chill"
+children = [SubResource("BTPlayAnimation_t7drr"), SubResource("BTRandomWait_axjfh")]
+
+[sub_resource type="BTSequence" id="BTSequence_dss4d"]
+custom_name = "Reposition"
+children = [SubResource("BTAction_33wje"), SubResource("BTPlayAnimation_qbxm8"), SubResource("BTTimeLimit_i05cm"), SubResource("BTSequence_ks71q")]
+
+[sub_resource type="BTSelector" id="BTSelector_gp6q5"]
+children = [SubResource("BTRunLimit_x2jr4"), SubResource("BTSequence_2n742"), SubResource("BTSequence_dss4d")]
+
+[resource]
+description = "[con]CheckAgentProperty[/con] examines the agentβs property value and compares it to a given value or a blackboard variable. In this example, it checks if the [color=cyan]summon_count[/color] property is less than 6.
+You can also check or share a [dec]Cooldown[/dec] in different parts of the behavior tree if you provide a blackboard variable for the [dec]Cooldown[/dec] decorator to use. [con]CheckVar[/con] is responsible here for examining the cooldown variable named \"summon_cooldown\"."
+blackboard_plan = SubResource("BlackboardPlan_58oq1")
+root_task = SubResource("BTSelector_gp6q5")
diff --git a/demo/ai/trees/tutorial/tutorial_01_welcome.tres b/demo/ai/trees/tutorial/tutorial_01_welcome.tres
new file mode 100644
index 0000000..84f1d04
--- /dev/null
+++ b/demo/ai/trees/tutorial/tutorial_01_welcome.tres
@@ -0,0 +1,29 @@
+[gd_resource type="BehaviorTree" load_steps=5 format=3 uid="uid://b1mfh8yad7rmw"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_ewfwq"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+
+[sub_resource type="BBNode" id="BBNode_fq0jf"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_rsejo"]
+animation_player = SubResource("BBNode_fq0jf")
+animation_name = &"idle"
+
+[sub_resource type="BTSequence" id="BTSequence_4bq32"]
+children = [SubResource("BTPlayAnimation_rsejo")]
+
+[resource]
+description = "Welcome to the [b]LimboAI Tutorial[/b]!
+
+Here, you'll learn how to use behavior trees to craft AI for your games. We'll start with the basics and gradually move to more advanced topics. Strap in for a quick and engaging introduction to behavior trees.
+
+Press β‘ button in the top-right corner to proceed.
+Press β¬
button any time you want to go back to a previous chapter."
+blackboard_plan = SubResource("BlackboardPlan_ewfwq")
+root_task = SubResource("BTSequence_4bq32")
diff --git a/demo/ai/trees/tutorial/tutorial_02_introduction.tres b/demo/ai/trees/tutorial/tutorial_02_introduction.tres
new file mode 100644
index 0000000..985582b
--- /dev/null
+++ b/demo/ai/trees/tutorial/tutorial_02_introduction.tres
@@ -0,0 +1,45 @@
+[gd_resource type="BehaviorTree" load_steps=9 format=3 uid="uid://b1i0xo0o676va"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_ewfwq"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+var/flank_speed/name = &"flank_speed"
+var/flank_speed/type = 3
+var/flank_speed/value = 600.0
+var/flank_speed/hint = 1
+var/flank_speed/hint_string = "10,1000,10"
+
+[sub_resource type="BBNode" id="BBNode_wu06u"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_dubaq"]
+animation_player = SubResource("BBNode_wu06u")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_meli1"]
+duration = 5.0
+
+[sub_resource type="BBNode" id="BBNode_mgehh"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_0fqno"]
+animation_player = SubResource("BBNode_mgehh")
+animation_name = &"dance"
+
+[sub_resource type="BTWait" id="BTWait_m3h4o"]
+duration = 5.0
+
+[sub_resource type="BTSequence" id="BTSequence_rbfdh"]
+children = [SubResource("BTPlayAnimation_dubaq"), SubResource("BTWait_meli1"), SubResource("BTPlayAnimation_0fqno"), SubResource("BTWait_m3h4o")]
+
+[resource]
+description = "Behavior trees are designed to simplify the creation of responsive and modular behaviors for games. They consist of tasks that represent specific actions or decision-making rules. Tasks can be broadly categorized into two groups: control tasks and leaf tasks. [b]Control tasks[/b] dictate the execution flow within the tree, while [b]leaf tasks[/b] represent specific actions to perform (such as moving or attacking) or conditions that need to be checked. Typically, it's the leaf tasks that perform the actual work in behavior trees.
+
+A behavior tree is usually processed each frame (physics frame by default). It is traversed from top to bottom, with the control tasks determining the control flow. Each task has a [color=cyan]_tick[/color] method, which performs the task's work and returns a status indicating its progress: [SUCCESS], [FAILURE], or [RUNNING]. [SUCCESS] and [FAILURE] indicate the outcome of finished work, while [RUNNING] status is returned when a task requires more than one tick to complete its job. These statuses determine how the tree progresses, with the [RUNNING] status usually meaning that the tree will continue execution during the next frame."
+blackboard_plan = SubResource("BlackboardPlan_ewfwq")
+root_task = SubResource("BTSequence_rbfdh")
diff --git a/demo/ai/trees/tutorial/tutorial_03_types.tres b/demo/ai/trees/tutorial/tutorial_03_types.tres
new file mode 100644
index 0000000..d63776f
--- /dev/null
+++ b/demo/ai/trees/tutorial/tutorial_03_types.tres
@@ -0,0 +1,97 @@
+[gd_resource type="BehaviorTree" load_steps=24 format=3 uid="uid://cb0ybf24ahnc3"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/select_random_nearby_pos.gd" id="1_as4cg"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="2_dlpnp"]
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="3_uv18s"]
+[ext_resource type="Script" path="res://demo/ai/tasks/in_range.gd" id="4_k3g8t"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="5_thvy5"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_ewfwq"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+
+[sub_resource type="BBNode" id="BBNode_20ku0"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_57u80"]
+animation_player = SubResource("BBNode_20ku0")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_11xvc"]
+script = ExtResource("1_as4cg")
+range_min = 300.0
+range_max = 500.0
+position_var = &"pos"
+
+[sub_resource type="BTAction" id="BTAction_tdkpj"]
+script = ExtResource("2_dlpnp")
+target_position_var = &"pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BTSequence" id="BTSequence_echit"]
+children = [SubResource("BTPlayAnimation_57u80"), SubResource("BTAction_11xvc"), SubResource("BTAction_tdkpj")]
+
+[sub_resource type="BTProbability" id="BTProbability_g0ol3"]
+children = [SubResource("BTSequence_echit")]
+
+[sub_resource type="BTAction" id="BTAction_124bm"]
+script = ExtResource("3_uv18s")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTCondition" id="BTCondition_n25o8"]
+script = ExtResource("4_k3g8t")
+distance_min = 0.0
+distance_max = 200.0
+target_var = &"target"
+
+[sub_resource type="BTAction" id="BTAction_1hfgr"]
+script = ExtResource("5_thvy5")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_ilr2h"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_mrsu3"]
+animation_player = SubResource("BBNode_ilr2h")
+animation_name = &"attack_1"
+
+[sub_resource type="BTSequence" id="BTSequence_5vug3"]
+children = [SubResource("BTAction_124bm"), SubResource("BTCondition_n25o8"), SubResource("BTAction_1hfgr"), SubResource("BTPlayAnimation_mrsu3")]
+
+[sub_resource type="BBNode" id="BBNode_fq0jf"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_rsejo"]
+animation_player = SubResource("BBNode_fq0jf")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_dl31p"]
+duration = 2.0
+
+[sub_resource type="BTSequence" id="BTSequence_vx4uy"]
+children = [SubResource("BTPlayAnimation_rsejo"), SubResource("BTWait_dl31p")]
+
+[sub_resource type="BTSelector" id="BTSelector_tdpek"]
+children = [SubResource("BTProbability_g0ol3"), SubResource("BTSequence_5vug3"), SubResource("BTSequence_vx4uy")]
+
+[resource]
+description = "There are four types of tasks:
+[ul][act]Actions[/act] are leaf tasks that perform the actual work.[/ul]
+[ul][con]Conditions[/con] are leaf tasks that conduct various checks.[/ul]
+[ul][comp]Composites[/comp] can have one or more child tasks, and dictate the execution flow of their children.[/ul]
+[ul][dec]Decorators[/dec] can only have a single child and they change how their child task operates.[/ul]
+
+Let's take a look into actions first. [act]Actions[/act] are responsible for most of the work and often change the game state in a significant manner. For instance, [act]PlayAnimation[/act] instructs the AnimationPlayer to start a specified animation, with the option to wait for its completion. On the other hand, the [act]Wait[/act] task simply pauses for a set duration before returning [SUCCESS].
+
+Next, we'll explore the core composite tasks, such as [comp]Sequence[/comp] and [comp]Selector[/comp]. These are among the most crucial composites that you should know about."
+blackboard_plan = SubResource("BlackboardPlan_ewfwq")
+root_task = SubResource("BTSelector_tdpek")
diff --git a/demo/ai/trees/tutorial/tutorial_04_sequence.tres b/demo/ai/trees/tutorial/tutorial_04_sequence.tres
new file mode 100644
index 0000000..ea6b0a8
--- /dev/null
+++ b/demo/ai/trees/tutorial/tutorial_04_sequence.tres
@@ -0,0 +1,62 @@
+[gd_resource type="BehaviorTree" load_steps=15 format=3 uid="uid://dln8ywvtqedt7"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/select_random_nearby_pos.gd" id="1_gk66j"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="2_v5eou"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_ewfwq"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+
+[sub_resource type="BBNode" id="BBNode_fq0jf"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_rsejo"]
+animation_player = SubResource("BBNode_fq0jf")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_dl31p"]
+duration = 3.0
+
+[sub_resource type="BBNode" id="BBNode_6d0yy"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_wsspf"]
+animation_player = SubResource("BBNode_6d0yy")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_fc1oo"]
+script = ExtResource("1_gk66j")
+range_min = 300.0
+range_max = 500.0
+position_var = &"pos"
+
+[sub_resource type="BTAction" id="BTAction_djl5v"]
+script = ExtResource("2_v5eou")
+target_position_var = &"pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BTFail" id="BTFail_i2f36"]
+
+[sub_resource type="BTComment" id="BTComment_4i06i"]
+custom_name = "ποΈ Sequence is never going to reach this task, because it fails at the previous step."
+
+[sub_resource type="BTWait" id="BTWait_yxpnx"]
+duration = 888.0
+
+[sub_resource type="BTSequence" id="BTSequence_vx4uy"]
+children = [SubResource("BTPlayAnimation_rsejo"), SubResource("BTWait_dl31p"), SubResource("BTPlayAnimation_wsspf"), SubResource("BTAction_fc1oo"), SubResource("BTAction_djl5v"), SubResource("BTFail_i2f36"), SubResource("BTComment_4i06i"), SubResource("BTWait_yxpnx")]
+
+[resource]
+description = "The [comp]Sequence[/comp] is one of the core composite tasks. It executes its child tasks sequentially, from first to last, until one of them returns [FAILURE], or all of them result in [SUCCESS]. In other words, if any child task results in [FAILURE], the Sequence execution will be aborted, and the Sequence itself will return [FAILURE].
+
+In our example, you can observe a simple [comp]Sequence[/comp] in action. Notice how it fails when it reaches the [act]Fail[/act] action and never proceeds to the [act]Wait 888 sec[/act] action afterward. By the way, the simple [act]Fail[/act] task is quite useful for troubleshooting. Its sole function is to return [FAILURE].
+"
+blackboard_plan = SubResource("BlackboardPlan_ewfwq")
+root_task = SubResource("BTSequence_vx4uy")
diff --git a/demo/ai/trees/tutorial/tutorial_05_selector.tres b/demo/ai/trees/tutorial/tutorial_05_selector.tres
new file mode 100644
index 0000000..f9d85e3
--- /dev/null
+++ b/demo/ai/trees/tutorial/tutorial_05_selector.tres
@@ -0,0 +1,108 @@
+[gd_resource type="BehaviorTree" load_steps=26 format=3 uid="uid://bf4r652fv5kwi"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_3ed74"]
+[ext_resource type="Script" path="res://demo/ai/tasks/select_random_nearby_pos.gd" id="1_rvh1c"]
+[ext_resource type="Script" path="res://demo/ai/tasks/in_range.gd" id="2_jfsyt"]
+[ext_resource type="Script" path="res://demo/ai/tasks/pursue.gd" id="2_nnswb"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="2_t62a0"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_ewfwq"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+
+[sub_resource type="BTCondition" id="BTCondition_x0uu7"]
+script = ExtResource("2_jfsyt")
+distance_min = 0.0
+distance_max = 200.0
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_icf24"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_iiei3"]
+animation_player = SubResource("BBNode_icf24")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_824oc"]
+script = ExtResource("1_rvh1c")
+range_min = 700.0
+range_max = 800.0
+position_var = &"pos"
+
+[sub_resource type="BTAction" id="BTAction_y1you"]
+script = ExtResource("2_t62a0")
+target_position_var = &"pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BBNode" id="BBNode_ayt56"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_l1tdg"]
+animation_player = SubResource("BBNode_ayt56")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_hh8ys"]
+duration = 3.0
+
+[sub_resource type="BTSequence" id="BTSequence_cgwor"]
+children = [SubResource("BTCondition_x0uu7"), SubResource("BTPlayAnimation_iiei3"), SubResource("BTAction_824oc"), SubResource("BTAction_y1you"), SubResource("BTPlayAnimation_l1tdg"), SubResource("BTWait_hh8ys")]
+
+[sub_resource type="BTCondition" id="BTCondition_d6aub"]
+script = ExtResource("2_jfsyt")
+distance_min = 200.0
+distance_max = 10000.0
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_6d0yy"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_wsspf"]
+animation_player = SubResource("BBNode_6d0yy")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_wc11r"]
+script = ExtResource("2_nnswb")
+target_var = &"target"
+speed_var = &"speed"
+approach_distance = 100.0
+
+[sub_resource type="BBNode" id="BBNode_aw5jj"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_3aihc"]
+animation_player = SubResource("BBNode_aw5jj")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_1o163"]
+duration = 3.0
+
+[sub_resource type="BTSequence" id="BTSequence_vx4uy"]
+children = [SubResource("BTCondition_d6aub"), SubResource("BTPlayAnimation_wsspf"), SubResource("BTAction_wc11r"), SubResource("BTPlayAnimation_3aihc"), SubResource("BTWait_1o163")]
+
+[sub_resource type="BTAction" id="BTAction_2murg"]
+script = ExtResource("1_3ed74")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTSelector" id="BTSelector_ddhoo"]
+children = [SubResource("BTSequence_cgwor"), SubResource("BTSequence_vx4uy"), SubResource("BTAction_2murg")]
+
+[resource]
+description = "The [comp]Selector[/comp] is another essential composite task. It executes its child tasks sequentially, from first to last, until one of them returns [SUCCESS] or all of them result in [FAILURE]. In other words, when a child task results in [FAILURE], it moves on to the next one until it finds the one that returns [SUCCESS]. Once a child task results in [SUCCESS], the Selector stops and also returns [SUCCESS].
+
+To understand the [comp]Selector[/comp], it helps to see it as the opposite of the [comp]Sequence[/comp]. While the Sequence continues iterating over children as long as they return [SUCCESS], the Selector does the same but as long as they return [FAILURE]. The purpose of the Selector is to find a child that succeeds. It's often useful to place higher priority tasks at the top so that the Selector attempts them first.
+
+[comp]Selector[/comp] is frequently used with [comp]Sequence[/comp] and [con]Condition[/con] tasks to control the behavior tree's flow. A condition task would prevent a Sequence from proceeding if it evaluates to [FAILURE], and thus the Selector would try the next child.
+
+In our example, the [con]InRange[/con] condition checks how far Junior is from the target. When Junior is farther than 200 pixels from the target, he'll attempt to approach it. If he is closer than 200 pixels from the target, he would try to walk away. Thanks to the Selector, only one of these behaviors will be performed at a time, based on the result of the [con]InRange[/con] check. Junior seems to have a dilemma β unable to decide whether to stay or go."
+blackboard_plan = SubResource("BlackboardPlan_ewfwq")
+root_task = SubResource("BTSelector_ddhoo")
diff --git a/demo/ai/trees/tutorial/tutorial_06_decorators.tres b/demo/ai/trees/tutorial/tutorial_06_decorators.tres
new file mode 100644
index 0000000..42fe1e6
--- /dev/null
+++ b/demo/ai/trees/tutorial/tutorial_06_decorators.tres
@@ -0,0 +1,136 @@
+[gd_resource type="BehaviorTree" load_steps=34 format=3 uid="uid://beiki511huxb8"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_3xoj7"]
+[ext_resource type="Script" path="res://demo/ai/tasks/in_range.gd" id="2_08b67"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="3_orhnl"]
+[ext_resource type="Script" path="res://demo/ai/tasks/select_random_nearby_pos.gd" id="4_oyght"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="5_5o1gy"]
+[ext_resource type="Script" path="res://demo/ai/tasks/pursue.gd" id="6_rpn40"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_ewfwq"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+
+[sub_resource type="BTAction" id="BTAction_2murg"]
+script = ExtResource("1_3xoj7")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTRunLimit" id="BTRunLimit_60b8b"]
+children = [SubResource("BTAction_2murg")]
+
+[sub_resource type="BTCondition" id="BTCondition_m15aa"]
+script = ExtResource("2_08b67")
+distance_min = 0.0
+distance_max = 200.0
+target_var = &"target"
+
+[sub_resource type="BTAction" id="BTAction_oc76s"]
+script = ExtResource("3_orhnl")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_6d0yy"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_wsspf"]
+await_completion = 5.0
+animation_player = SubResource("BBNode_6d0yy")
+animation_name = &"attack_1"
+
+[sub_resource type="BTSequence" id="BTSequence_e0f8v"]
+children = [SubResource("BTCondition_m15aa"), SubResource("BTAction_oc76s"), SubResource("BTPlayAnimation_wsspf")]
+
+[sub_resource type="BTCooldown" id="BTCooldown_3tvjt"]
+children = [SubResource("BTSequence_e0f8v")]
+duration = 5.0
+
+[sub_resource type="BTCondition" id="BTCondition_x0uu7"]
+script = ExtResource("2_08b67")
+distance_min = 0.0
+distance_max = 200.0
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_icf24"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_iiei3"]
+animation_player = SubResource("BBNode_icf24")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_824oc"]
+script = ExtResource("4_oyght")
+range_min = 700.0
+range_max = 800.0
+position_var = &"pos"
+
+[sub_resource type="BTAction" id="BTAction_y1you"]
+script = ExtResource("5_5o1gy")
+target_position_var = &"pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BBNode" id="BBNode_ayt56"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_l1tdg"]
+animation_player = SubResource("BBNode_ayt56")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_hh8ys"]
+duration = 3.0
+
+[sub_resource type="BTSequence" id="BTSequence_cgwor"]
+children = [SubResource("BTCondition_x0uu7"), SubResource("BTPlayAnimation_iiei3"), SubResource("BTAction_824oc"), SubResource("BTAction_y1you"), SubResource("BTPlayAnimation_l1tdg"), SubResource("BTWait_hh8ys")]
+
+[sub_resource type="BTCondition" id="BTCondition_d6aub"]
+script = ExtResource("2_08b67")
+distance_min = 200.0
+distance_max = 10000.0
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_rpwld"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_dug2k"]
+animation_player = SubResource("BBNode_rpwld")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_wc11r"]
+script = ExtResource("6_rpn40")
+target_var = &"target"
+speed_var = &"speed"
+approach_distance = 100.0
+
+[sub_resource type="BBNode" id="BBNode_aw5jj"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_3aihc"]
+animation_player = SubResource("BBNode_aw5jj")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_1o163"]
+duration = 0.5
+
+[sub_resource type="BTSequence" id="BTSequence_vx4uy"]
+children = [SubResource("BTCondition_d6aub"), SubResource("BTPlayAnimation_dug2k"), SubResource("BTAction_wc11r"), SubResource("BTPlayAnimation_3aihc"), SubResource("BTWait_1o163")]
+
+[sub_resource type="BTSelector" id="BTSelector_ddhoo"]
+children = [SubResource("BTRunLimit_60b8b"), SubResource("BTCooldown_3tvjt"), SubResource("BTSequence_cgwor"), SubResource("BTSequence_vx4uy")]
+
+[resource]
+description = "Let's improve our previous behavior, and take the opportunity to discuss [dec]Decorators[/dec]. As mentioned earlier, decorators are control tasks that should only have a single child. Typically, a decorator either alters how its child operates or modifies its return status. They are often a useful tool for introducing variance into behaviors that otherwise lack it.
+
+In our example, we utilize the [dec]RunLimit[/dec] decorator to restrict its child from running more than once. After executing the first time, the child will never receive another tick. This is quite handy for all sorts of setup logic!
+
+Now, let's examine another decorator we use here - the [dec]Cooldown[/dec]. This decorator executes its child task only if the specified duration time has passed since the previous execution of the child task. The first time the attack sequence results in [SUCCESS], it triggers the cooldown, preventing the [comp]Sequence[/comp] from being executed for the next 5 seconds. During this period, the Cooldown returns [FAILURE] until the specified duration time elapses. It's important to note that it only counts executions that finished with [SUCCESS]. This means that [con]InRange[/con] can be utilized here without triggering the Cooldown!"
+blackboard_plan = SubResource("BlackboardPlan_ewfwq")
+root_task = SubResource("BTSelector_ddhoo")
diff --git a/demo/ai/trees/tutorial/tutorial_07_more_decorators.tres b/demo/ai/trees/tutorial/tutorial_07_more_decorators.tres
new file mode 100644
index 0000000..d5b1a26
--- /dev/null
+++ b/demo/ai/trees/tutorial/tutorial_07_more_decorators.tres
@@ -0,0 +1,143 @@
+[gd_resource type="BehaviorTree" load_steps=36 format=3 uid="uid://tep50j4d6kgp"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_f605f"]
+[ext_resource type="Script" path="res://demo/ai/tasks/in_range.gd" id="2_mj1cj"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="3_86p0r"]
+[ext_resource type="Script" path="res://demo/ai/tasks/back_away.gd" id="4_u0vk1"]
+[ext_resource type="Script" path="res://demo/ai/tasks/pursue.gd" id="6_1yikm"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_ewfwq"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+
+[sub_resource type="BTAction" id="BTAction_2murg"]
+script = ExtResource("1_f605f")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTRunLimit" id="BTRunLimit_60b8b"]
+children = [SubResource("BTAction_2murg")]
+
+[sub_resource type="BTCondition" id="BTCondition_m15aa"]
+script = ExtResource("2_mj1cj")
+distance_min = 0.0
+distance_max = 200.0
+target_var = &"target"
+
+[sub_resource type="BTAction" id="BTAction_oc76s"]
+script = ExtResource("3_86p0r")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_6d0yy"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_wsspf"]
+await_completion = 5.0
+animation_player = SubResource("BBNode_6d0yy")
+animation_name = &"attack_1"
+
+[sub_resource type="BBNode" id="BBNode_w45kn"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_d2lad"]
+await_completion = 5.0
+animation_player = SubResource("BBNode_w45kn")
+animation_name = &"attack_2"
+
+[sub_resource type="BTSequence" id="BTSequence_e0f8v"]
+children = [SubResource("BTCondition_m15aa"), SubResource("BTAction_oc76s"), SubResource("BTPlayAnimation_wsspf"), SubResource("BTPlayAnimation_d2lad")]
+
+[sub_resource type="BTCooldown" id="BTCooldown_3tvjt"]
+children = [SubResource("BTSequence_e0f8v")]
+duration = 5.0
+
+[sub_resource type="BTCondition" id="BTCondition_x0uu7"]
+script = ExtResource("2_mj1cj")
+distance_min = 0.0
+distance_max = 200.0
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_wksgd"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_umlwj"]
+animation_player = SubResource("BBNode_wksgd")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_6q0k4"]
+script = ExtResource("4_u0vk1")
+speed_var = &"speed"
+max_angle_deviation = 0.7
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_6eii7"]
+children = [SubResource("BTAction_6q0k4")]
+time_limit = 2.0
+
+[sub_resource type="BTAlwaysSucceed" id="BTAlwaysSucceed_ieord"]
+children = [SubResource("BTTimeLimit_6eii7")]
+
+[sub_resource type="BBNode" id="BBNode_ayt56"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_l1tdg"]
+animation_player = SubResource("BBNode_ayt56")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_hh8ys"]
+duration = 3.0
+
+[sub_resource type="BTSequence" id="BTSequence_cgwor"]
+children = [SubResource("BTCondition_x0uu7"), SubResource("BTPlayAnimation_umlwj"), SubResource("BTAlwaysSucceed_ieord"), SubResource("BTPlayAnimation_l1tdg"), SubResource("BTWait_hh8ys")]
+
+[sub_resource type="BTCondition" id="BTCondition_d6aub"]
+script = ExtResource("2_mj1cj")
+distance_min = 200.0
+distance_max = 10000.0
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_rpwld"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_dug2k"]
+animation_player = SubResource("BBNode_rpwld")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_wc11r"]
+script = ExtResource("6_1yikm")
+target_var = &"target"
+speed_var = &"speed"
+approach_distance = 100.0
+
+[sub_resource type="BBNode" id="BBNode_aw5jj"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_3aihc"]
+animation_player = SubResource("BBNode_aw5jj")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_1o163"]
+duration = 0.5
+
+[sub_resource type="BTSequence" id="BTSequence_vx4uy"]
+children = [SubResource("BTCondition_d6aub"), SubResource("BTPlayAnimation_dug2k"), SubResource("BTAction_wc11r"), SubResource("BTPlayAnimation_3aihc"), SubResource("BTWait_1o163")]
+
+[sub_resource type="BTSelector" id="BTSelector_ddhoo"]
+children = [SubResource("BTRunLimit_60b8b"), SubResource("BTCooldown_3tvjt"), SubResource("BTSequence_cgwor"), SubResource("BTSequence_vx4uy")]
+
+[resource]
+description = "Let's explore some other [dec]Decorators[/dec]. Here's a slightly improved version of the previous behavior. We incorporate the [dec]TimeLimit[/dec] decorator with the [act]Back Away[/act] action to achieve a similar effect as before (walking away from the target). The TimeLimit decorator ensures that the child task does not take too long to finish its work. If the time runs out, the task's execution will be aborted, and TimeLimit will return [FAILURE].
+
+Another useful decorator is [dec]AlwaysSucceed[/dec], which converts any [FAILURE] returned by its child into [SUCCESS]. We use this decorator here because TimeLimit may result in [FAILURE], but we still want the [comp]Sequence[/comp] to continue. Also, there are similar decorators such as [dec]AlwaysFail[/dec] and [dec]Invert[/dec], which you can use in your behavior trees as needed.
+
+We also add a second attack, so that Junior feels more badass now. We've got a little hit-and-run behavior going on here!"
+blackboard_plan = SubResource("BlackboardPlan_ewfwq")
+root_task = SubResource("BTSelector_ddhoo")
diff --git a/demo/ai/trees/tutorial/tutorial_08_final_touch.tres b/demo/ai/trees/tutorial/tutorial_08_final_touch.tres
new file mode 100644
index 0000000..c2053a3
--- /dev/null
+++ b/demo/ai/trees/tutorial/tutorial_08_final_touch.tres
@@ -0,0 +1,204 @@
+[gd_resource type="BehaviorTree" load_steps=52 format=3 uid="uid://dp0cglcytwcj5"]
+
+[ext_resource type="Script" path="res://demo/ai/tasks/get_first_in_group.gd" id="1_o5ahw"]
+[ext_resource type="Script" path="res://demo/ai/tasks/select_flanking_pos.gd" id="2_er25a"]
+[ext_resource type="Script" path="res://demo/ai/tasks/arrive_pos.gd" id="3_ed1xo"]
+[ext_resource type="Script" path="res://demo/ai/tasks/face_target.gd" id="4_128ei"]
+[ext_resource type="Script" path="res://demo/ai/tasks/in_range.gd" id="5_er18b"]
+[ext_resource type="Script" path="res://demo/ai/tasks/back_away.gd" id="6_1urfq"]
+[ext_resource type="Script" path="res://demo/ai/tasks/pursue.gd" id="7_ekws5"]
+
+[sub_resource type="BlackboardPlan" id="BlackboardPlan_ewfwq"]
+var/speed/name = &"speed"
+var/speed/type = 3
+var/speed/value = 400.0
+var/speed/hint = 1
+var/speed/hint_string = "10,1000,10"
+
+[sub_resource type="BTAction" id="BTAction_2murg"]
+script = ExtResource("1_o5ahw")
+group = &"player"
+output_var = &"target"
+
+[sub_resource type="BTRunLimit" id="BTRunLimit_60b8b"]
+children = [SubResource("BTAction_2murg")]
+
+[sub_resource type="BTCondition" id="BTCondition_m15aa"]
+script = ExtResource("5_er18b")
+distance_min = 0.0
+distance_max = 200.0
+target_var = &"target"
+
+[sub_resource type="BTAction" id="BTAction_oc76s"]
+script = ExtResource("4_128ei")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_6d0yy"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_wsspf"]
+await_completion = 5.0
+animation_player = SubResource("BBNode_6d0yy")
+animation_name = &"attack_1"
+
+[sub_resource type="BBNode" id="BBNode_w45kn"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_d2lad"]
+await_completion = 5.0
+animation_player = SubResource("BBNode_w45kn")
+animation_name = &"attack_2"
+
+[sub_resource type="BTSequence" id="BTSequence_e0f8v"]
+children = [SubResource("BTCondition_m15aa"), SubResource("BTAction_oc76s"), SubResource("BTPlayAnimation_wsspf"), SubResource("BTPlayAnimation_d2lad")]
+
+[sub_resource type="BTCooldown" id="BTCooldown_3tvjt"]
+children = [SubResource("BTSequence_e0f8v")]
+duration = 5.0
+
+[sub_resource type="BTCondition" id="BTCondition_x0uu7"]
+script = ExtResource("5_er18b")
+distance_min = 0.0
+distance_max = 200.0
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_wksgd"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_umlwj"]
+animation_player = SubResource("BBNode_wksgd")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_6q0k4"]
+script = ExtResource("6_1urfq")
+speed_var = &"speed"
+max_angle_deviation = 0.7
+
+[sub_resource type="BTTimeLimit" id="BTTimeLimit_6eii7"]
+children = [SubResource("BTAction_6q0k4")]
+time_limit = 2.0
+
+[sub_resource type="BTAlwaysSucceed" id="BTAlwaysSucceed_ieord"]
+children = [SubResource("BTTimeLimit_6eii7")]
+
+[sub_resource type="BBNode" id="BBNode_ayt56"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_l1tdg"]
+animation_player = SubResource("BBNode_ayt56")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_hh8ys"]
+duration = 3.0
+
+[sub_resource type="BTSequence" id="BTSequence_cgwor"]
+children = [SubResource("BTCondition_x0uu7"), SubResource("BTPlayAnimation_umlwj"), SubResource("BTAlwaysSucceed_ieord"), SubResource("BTPlayAnimation_l1tdg"), SubResource("BTWait_hh8ys")]
+
+[sub_resource type="BTAction" id="BTAction_n0rxm"]
+script = ExtResource("2_er25a")
+target_var = &"target"
+flank_side = 0
+range_min = 400
+range_max = 500
+position_var = &"pos"
+
+[sub_resource type="BBNode" id="BBNode_icf24"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_iiei3"]
+animation_player = SubResource("BBNode_icf24")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_g2up4"]
+script = ExtResource("3_ed1xo")
+target_position_var = &"pos"
+speed_var = &"speed"
+tolerance = 50.0
+avoid_var = &""
+
+[sub_resource type="BTAction" id="BTAction_d5lkr"]
+script = ExtResource("4_128ei")
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_h4k80"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_40yja"]
+animation_player = SubResource("BBNode_h4k80")
+animation_name = &"throw_prepare"
+
+[sub_resource type="BTWait" id="BTWait_2dc1v"]
+
+[sub_resource type="BBNode" id="BBNode_slipn"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_qnpjq"]
+await_completion = 5.0
+animation_player = SubResource("BBNode_slipn")
+animation_name = &"throw"
+
+[sub_resource type="BBNode" id="BBNode_qaqnn"]
+resource_name = "."
+saved_value = NodePath(".")
+
+[sub_resource type="BTCallMethod" id="BTCallMethod_yd0fn"]
+node = SubResource("BBNode_qaqnn")
+method = &"throw_ninja_star"
+
+[sub_resource type="BTSequence" id="BTSequence_ws7nq"]
+children = [SubResource("BTAction_n0rxm"), SubResource("BTPlayAnimation_iiei3"), SubResource("BTAction_g2up4"), SubResource("BTAction_d5lkr"), SubResource("BTPlayAnimation_40yja"), SubResource("BTWait_2dc1v"), SubResource("BTPlayAnimation_qnpjq"), SubResource("BTCallMethod_yd0fn")]
+
+[sub_resource type="BTProbability" id="BTProbability_omklt"]
+children = [SubResource("BTSequence_ws7nq")]
+run_chance = 0.25
+
+[sub_resource type="BTCondition" id="BTCondition_d6aub"]
+script = ExtResource("5_er18b")
+distance_min = 200.0
+distance_max = 10000.0
+target_var = &"target"
+
+[sub_resource type="BBNode" id="BBNode_rpwld"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_dug2k"]
+animation_player = SubResource("BBNode_rpwld")
+animation_name = &"walk"
+
+[sub_resource type="BTAction" id="BTAction_wc11r"]
+script = ExtResource("7_ekws5")
+target_var = &"target"
+speed_var = &"speed"
+approach_distance = 100.0
+
+[sub_resource type="BBNode" id="BBNode_aw5jj"]
+resource_name = "AnimationPlayer"
+saved_value = NodePath("AnimationPlayer")
+
+[sub_resource type="BTPlayAnimation" id="BTPlayAnimation_3aihc"]
+animation_player = SubResource("BBNode_aw5jj")
+animation_name = &"idle"
+
+[sub_resource type="BTWait" id="BTWait_1o163"]
+duration = 0.5
+
+[sub_resource type="BTSequence" id="BTSequence_vx4uy"]
+children = [SubResource("BTCondition_d6aub"), SubResource("BTPlayAnimation_dug2k"), SubResource("BTAction_wc11r"), SubResource("BTPlayAnimation_3aihc"), SubResource("BTWait_1o163")]
+
+[sub_resource type="BTSelector" id="BTSelector_ddhoo"]
+children = [SubResource("BTRunLimit_60b8b"), SubResource("BTCooldown_3tvjt"), SubResource("BTSequence_cgwor"), SubResource("BTProbability_omklt"), SubResource("BTSequence_vx4uy")]
+
+[resource]
+description = "And for the final touch, we've added throwing ninja stars to our previous behavior. The [dec]Probability[/dec] decorator adds a little variance so that we don't throw ninja stars all the time. This decorator executes its child task with a certain probability, so when it's not 100%, sometimes it will return [FAILURE] instead. Some of the work in this [comp]Sequence[/comp] is done by actions you've seen already, and the [act]CallMethod[/act] action invokes the [color=cyan]throw_ninja_star[/color] method on the agent node. By the way, the agent is always the owner of the BTPlayer node, which executes this behavior tree.
+
+This concludes our tutorial. Hopefully, this little endeavor has been useful to you. You can learn more by reading the [b]Online Documentation[/b], which covers topics like creating your own tasks. Also, check out the [b]Showcase[/b], which presents behaviors of agents made for this little demo. Simply click \"End Tutorial\" to return to the [b]Showcase[/b]."
+blackboard_plan = SubResource("BlackboardPlan_ewfwq")
+root_task = SubResource("BTSelector_ddhoo")
diff --git a/demo/assets/agent_bobby.png b/demo/assets/agent_bobby.png
new file mode 100644
index 0000000..14de872
Binary files /dev/null and b/demo/assets/agent_bobby.png differ
diff --git a/demo/assets/agent_bobby.png.import b/demo/assets/agent_bobby.png.import
new file mode 100644
index 0000000..de79d79
--- /dev/null
+++ b/demo/assets/agent_bobby.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dlo1ine6p5di4"
+path="res://.godot/imported/agent_bobby.png-8c7c0553d4eefdb06245554fd2603238.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_bobby.png"
+dest_files=["res://.godot/imported/agent_bobby.png-8c7c0553d4eefdb06245554fd2603238.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/agent_charger.png b/demo/assets/agent_charger.png
new file mode 100644
index 0000000..3b6ea44
Binary files /dev/null and b/demo/assets/agent_charger.png differ
diff --git a/demo/assets/agent_charger.png.import b/demo/assets/agent_charger.png.import
new file mode 100644
index 0000000..bfe08b6
--- /dev/null
+++ b/demo/assets/agent_charger.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ce16nc0wy2s8"
+path="res://.godot/imported/agent_charger.png-4fbef6fc86342f0b358c84f3e6790641.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_charger.png"
+dest_files=["res://.godot/imported/agent_charger.png-4fbef6fc86342f0b358c84f3e6790641.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/agent_combo.png b/demo/assets/agent_combo.png
new file mode 100644
index 0000000..ca9d815
Binary files /dev/null and b/demo/assets/agent_combo.png differ
diff --git a/demo/assets/agent_combo.png.import b/demo/assets/agent_combo.png.import
new file mode 100644
index 0000000..8128a64
--- /dev/null
+++ b/demo/assets/agent_combo.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bo0ibp7tvjbba"
+path="res://.godot/imported/agent_combo.png-1aabf55a6f7673e34d40eadba34cb086.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_combo.png"
+dest_files=["res://.godot/imported/agent_combo.png-1aabf55a6f7673e34d40eadba34cb086.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/agent_demon.png b/demo/assets/agent_demon.png
new file mode 100644
index 0000000..a92603e
Binary files /dev/null and b/demo/assets/agent_demon.png differ
diff --git a/demo/assets/agent_demon.png.import b/demo/assets/agent_demon.png.import
new file mode 100644
index 0000000..17b163f
--- /dev/null
+++ b/demo/assets/agent_demon.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d1tx7u8ho0r4v"
+path="res://.godot/imported/agent_demon.png-8a62722d1d31985ee3a39cfef745c53a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_demon.png"
+dest_files=["res://.godot/imported/agent_demon.png-8a62722d1d31985ee3a39cfef745c53a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/agent_imp.png b/demo/assets/agent_imp.png
new file mode 100644
index 0000000..cadf474
Binary files /dev/null and b/demo/assets/agent_imp.png differ
diff --git a/demo/assets/agent_imp.png.import b/demo/assets/agent_imp.png.import
new file mode 100644
index 0000000..08994d3
--- /dev/null
+++ b/demo/assets/agent_imp.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://h70okn6hmxum"
+path="res://.godot/imported/agent_imp.png-9fb23c43583296c91b2a8a01f05daad9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_imp.png"
+dest_files=["res://.godot/imported/agent_imp.png-9fb23c43583296c91b2a8a01f05daad9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/agent_junior_pieces.png b/demo/assets/agent_junior_pieces.png
new file mode 100644
index 0000000..e8cf873
Binary files /dev/null and b/demo/assets/agent_junior_pieces.png differ
diff --git a/demo/assets/agent_junior_pieces.png.import b/demo/assets/agent_junior_pieces.png.import
new file mode 100644
index 0000000..4d87dcc
--- /dev/null
+++ b/demo/assets/agent_junior_pieces.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b0oeqsc0xksto"
+path="res://.godot/imported/agent_junior_pieces.png-95690b27968ceea039daac5098fd3722.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_junior_pieces.png"
+dest_files=["res://.godot/imported/agent_junior_pieces.png-95690b27968ceea039daac5098fd3722.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/agent_melee_nuanced.png b/demo/assets/agent_melee_nuanced.png
new file mode 100644
index 0000000..3a7585b
Binary files /dev/null and b/demo/assets/agent_melee_nuanced.png differ
diff --git a/demo/assets/agent_melee_nuanced.png.import b/demo/assets/agent_melee_nuanced.png.import
new file mode 100644
index 0000000..604cb7a
--- /dev/null
+++ b/demo/assets/agent_melee_nuanced.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://usu3j55d6dgc"
+path="res://.godot/imported/agent_melee_nuanced.png-653a64ea55e3175afadb5b209be8b1d0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_melee_nuanced.png"
+dest_files=["res://.godot/imported/agent_melee_nuanced.png-653a64ea55e3175afadb5b209be8b1d0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/agent_melee_simple.png b/demo/assets/agent_melee_simple.png
new file mode 100644
index 0000000..502d196
Binary files /dev/null and b/demo/assets/agent_melee_simple.png differ
diff --git a/demo/assets/agent_melee_simple.png.import b/demo/assets/agent_melee_simple.png.import
new file mode 100644
index 0000000..f25826b
--- /dev/null
+++ b/demo/assets/agent_melee_simple.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cw8s50856x8ct"
+path="res://.godot/imported/agent_melee_simple.png-78a6d279aa99849a5b7788dd5762650f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_melee_simple.png"
+dest_files=["res://.godot/imported/agent_melee_simple.png-78a6d279aa99849a5b7788dd5762650f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/agent_ranged.png b/demo/assets/agent_ranged.png
new file mode 100644
index 0000000..3debe06
Binary files /dev/null and b/demo/assets/agent_ranged.png differ
diff --git a/demo/assets/agent_ranged.png.import b/demo/assets/agent_ranged.png.import
new file mode 100644
index 0000000..d83f37d
--- /dev/null
+++ b/demo/assets/agent_ranged.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cjts4ennjtepg"
+path="res://.godot/imported/agent_ranged.png-a7be7db55c56f7b1c12ada6338a036cf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_ranged.png"
+dest_files=["res://.godot/imported/agent_ranged.png-a7be7db55c56f7b1c12ada6338a036cf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/agent_skirmisher.png b/demo/assets/agent_skirmisher.png
new file mode 100644
index 0000000..7552e96
Binary files /dev/null and b/demo/assets/agent_skirmisher.png differ
diff --git a/demo/assets/agent_skirmisher.png.import b/demo/assets/agent_skirmisher.png.import
new file mode 100644
index 0000000..b227fcc
--- /dev/null
+++ b/demo/assets/agent_skirmisher.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://l042ovqqsy3l"
+path="res://.godot/imported/agent_skirmisher.png-fb22c42e0c82e689e3a451b83b1f6ff9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_skirmisher.png"
+dest_files=["res://.godot/imported/agent_skirmisher.png-fb22c42e0c82e689e3a451b83b1f6ff9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/agent_summoner.png b/demo/assets/agent_summoner.png
new file mode 100644
index 0000000..0147818
Binary files /dev/null and b/demo/assets/agent_summoner.png differ
diff --git a/demo/assets/agent_summoner.png.import b/demo/assets/agent_summoner.png.import
new file mode 100644
index 0000000..8234f4a
--- /dev/null
+++ b/demo/assets/agent_summoner.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ombnpn2edldt"
+path="res://.godot/imported/agent_summoner.png-3beb6fd299df05d9586c6b74edd2bbc6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/agent_summoner.png"
+dest_files=["res://.godot/imported/agent_summoner.png-3beb6fd299df05d9586c6b74edd2bbc6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/arrow_left.png b/demo/assets/arrow_left.png
new file mode 100644
index 0000000..c6af99e
Binary files /dev/null and b/demo/assets/arrow_left.png differ
diff --git a/demo/assets/arrow_left.png.import b/demo/assets/arrow_left.png.import
new file mode 100644
index 0000000..cd4ea5e
--- /dev/null
+++ b/demo/assets/arrow_left.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dc1wu244fnetf"
+path="res://.godot/imported/arrow_left.png-a7d3530ca98c17c281c9ef74dcdcb927.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/arrow_left.png"
+dest_files=["res://.godot/imported/arrow_left.png-a7d3530ca98c17c281c9ef74dcdcb927.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/arrow_right.png b/demo/assets/arrow_right.png
new file mode 100644
index 0000000..70ec85b
Binary files /dev/null and b/demo/assets/arrow_right.png differ
diff --git a/demo/assets/arrow_right.png.import b/demo/assets/arrow_right.png.import
new file mode 100644
index 0000000..bdf534c
--- /dev/null
+++ b/demo/assets/arrow_right.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bjakugmqbbtw7"
+path="res://.godot/imported/arrow_right.png-21f7ddc963756a50bd3974181b5e0d02.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/arrow_right.png"
+dest_files=["res://.godot/imported/arrow_right.png-21f7ddc963756a50bd3974181b5e0d02.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/dummy.png b/demo/assets/dummy.png
new file mode 100644
index 0000000..531fd19
Binary files /dev/null and b/demo/assets/dummy.png differ
diff --git a/demo/assets/dummy.png.import b/demo/assets/dummy.png.import
new file mode 100644
index 0000000..8d75969
--- /dev/null
+++ b/demo/assets/dummy.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cltutcxjx8jnl"
+path="res://.godot/imported/dummy.png-30069efb95d1cabfca0861ca5010c667.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/dummy.png"
+dest_files=["res://.godot/imported/dummy.png-30069efb95d1cabfca0861ca5010c667.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/env_clouds.png b/demo/assets/env_clouds.png
new file mode 100644
index 0000000..ab61eff
Binary files /dev/null and b/demo/assets/env_clouds.png differ
diff --git a/demo/assets/env_clouds.png.import b/demo/assets/env_clouds.png.import
new file mode 100644
index 0000000..d8d21aa
--- /dev/null
+++ b/demo/assets/env_clouds.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://65b6yuobhxf8"
+path="res://.godot/imported/env_clouds.png-28d790def9247e51c19b24eae86c1a64.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/env_clouds.png"
+dest_files=["res://.godot/imported/env_clouds.png-28d790def9247e51c19b24eae86c1a64.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/env_gong.png b/demo/assets/env_gong.png
new file mode 100644
index 0000000..4fd80e2
Binary files /dev/null and b/demo/assets/env_gong.png differ
diff --git a/demo/assets/env_gong.png.import b/demo/assets/env_gong.png.import
new file mode 100644
index 0000000..2227594
--- /dev/null
+++ b/demo/assets/env_gong.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://i476iia1ua8q"
+path="res://.godot/imported/env_gong.png-22c1657db8aed530e7d811b2b20b4a2d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/env_gong.png"
+dest_files=["res://.godot/imported/env_gong.png-22c1657db8aed530e7d811b2b20b4a2d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/env_ground.png b/demo/assets/env_ground.png
new file mode 100644
index 0000000..cfb2749
Binary files /dev/null and b/demo/assets/env_ground.png differ
diff --git a/demo/assets/env_ground.png.import b/demo/assets/env_ground.png.import
new file mode 100644
index 0000000..87610b1
--- /dev/null
+++ b/demo/assets/env_ground.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cc7b22sy46gwn"
+path="res://.godot/imported/env_ground.png-b29c6c47be0779294403cf6615d9dae2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/env_ground.png"
+dest_files=["res://.godot/imported/env_ground.png-b29c6c47be0779294403cf6615d9dae2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/env_plants.png b/demo/assets/env_plants.png
new file mode 100644
index 0000000..3008cf4
Binary files /dev/null and b/demo/assets/env_plants.png differ
diff --git a/demo/assets/env_plants.png.import b/demo/assets/env_plants.png.import
new file mode 100644
index 0000000..616c11c
--- /dev/null
+++ b/demo/assets/env_plants.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://4kw2ks8doc0w"
+path="res://.godot/imported/env_plants.png-40a908ca223303e0aacba2fca71781c6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/env_plants.png"
+dest_files=["res://.godot/imported/env_plants.png-40a908ca223303e0aacba2fca71781c6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/env_rocks.png b/demo/assets/env_rocks.png
new file mode 100644
index 0000000..55c7830
Binary files /dev/null and b/demo/assets/env_rocks.png differ
diff --git a/demo/assets/env_rocks.png.import b/demo/assets/env_rocks.png.import
new file mode 100644
index 0000000..3ed17be
--- /dev/null
+++ b/demo/assets/env_rocks.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b3g14elmg0m36"
+path="res://.godot/imported/env_rocks.png-12fea7b4727d1ddca76c06fd66910dd0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/env_rocks.png"
+dest_files=["res://.godot/imported/env_rocks.png-12fea7b4727d1ddca76c06fd66910dd0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/fireball.png b/demo/assets/fireball.png
new file mode 100644
index 0000000..6d2ddf6
Binary files /dev/null and b/demo/assets/fireball.png differ
diff --git a/demo/assets/fireball.png.import b/demo/assets/fireball.png.import
new file mode 100644
index 0000000..554b787
--- /dev/null
+++ b/demo/assets/fireball.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://235liwnxn1n5"
+path="res://.godot/imported/fireball.png-22a46715cd71373bf765d22c23e664a9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/fireball.png"
+dest_files=["res://.godot/imported/fireball.png-22a46715cd71373bf765d22c23e664a9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/fonts/junction_bold.otf b/demo/assets/fonts/junction_bold.otf
new file mode 100644
index 0000000..45a6697
Binary files /dev/null and b/demo/assets/fonts/junction_bold.otf differ
diff --git a/demo/assets/fonts/junction_bold.otf.import b/demo/assets/fonts/junction_bold.otf.import
new file mode 100644
index 0000000..5b19f13
--- /dev/null
+++ b/demo/assets/fonts/junction_bold.otf.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="font_data_dynamic"
+type="FontFile"
+uid="uid://n231m6uqsq6x"
+path="res://.godot/imported/junction_bold.otf-4db2200a8b1a6423bafe2a4e7c7abbde.fontdata"
+
+[deps]
+
+source_file="res://demo/assets/fonts/junction_bold.otf"
+dest_files=["res://.godot/imported/junction_bold.otf-4db2200a8b1a6423bafe2a4e7c7abbde.fontdata"]
+
+[params]
+
+Rendering=null
+antialiasing=1
+generate_mipmaps=false
+disable_embedded_bitmaps=true
+multichannel_signed_distance_field=false
+msdf_pixel_range=8
+msdf_size=48
+allow_system_fallback=true
+force_autohinter=false
+hinting=1
+subpixel_positioning=1
+oversampling=0.0
+Fallbacks=null
+fallbacks=[]
+Compress=null
+compress=true
+preload=[]
+language_support={}
+script_support={}
+opentype_features={}
diff --git a/demo/assets/fonts/knewave_regular.ttf b/demo/assets/fonts/knewave_regular.ttf
new file mode 100644
index 0000000..a98f750
Binary files /dev/null and b/demo/assets/fonts/knewave_regular.ttf differ
diff --git a/demo/assets/fonts/knewave_regular.ttf.import b/demo/assets/fonts/knewave_regular.ttf.import
new file mode 100644
index 0000000..4deeba7
--- /dev/null
+++ b/demo/assets/fonts/knewave_regular.ttf.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="font_data_dynamic"
+type="FontFile"
+uid="uid://d25vkmce7mhlt"
+path="res://.godot/imported/knewave_regular.ttf-955953b059f713782c7b07e66ab341ec.fontdata"
+
+[deps]
+
+source_file="res://demo/assets/fonts/knewave_regular.ttf"
+dest_files=["res://.godot/imported/knewave_regular.ttf-955953b059f713782c7b07e66ab341ec.fontdata"]
+
+[params]
+
+Rendering=null
+antialiasing=1
+generate_mipmaps=false
+disable_embedded_bitmaps=true
+multichannel_signed_distance_field=false
+msdf_pixel_range=8
+msdf_size=48
+allow_system_fallback=true
+force_autohinter=false
+hinting=1
+subpixel_positioning=1
+oversampling=0.0
+Fallbacks=null
+fallbacks=[]
+Compress=null
+compress=true
+preload=[]
+language_support={}
+script_support={}
+opentype_features={}
diff --git a/demo/assets/fx.png b/demo/assets/fx.png
new file mode 100644
index 0000000..1bd586d
Binary files /dev/null and b/demo/assets/fx.png differ
diff --git a/demo/assets/fx.png.import b/demo/assets/fx.png.import
new file mode 100644
index 0000000..684838b
--- /dev/null
+++ b/demo/assets/fx.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dj4oayt5ttvh8"
+path="res://.godot/imported/fx.png-6477c60e66067f48f360430ec23ddc02.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/fx.png"
+dest_files=["res://.godot/imported/fx.png-6477c60e66067f48f360430ec23ddc02.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/hp_bar.png b/demo/assets/hp_bar.png
new file mode 100644
index 0000000..1bc265b
Binary files /dev/null and b/demo/assets/hp_bar.png differ
diff --git a/demo/assets/hp_bar.png.import b/demo/assets/hp_bar.png.import
new file mode 100644
index 0000000..a707489
--- /dev/null
+++ b/demo/assets/hp_bar.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://hnwi23oef752"
+path="res://.godot/imported/hp_bar.png-c23edb5054c777f587fbf3d4206298bd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/hp_bar.png"
+dest_files=["res://.godot/imported/hp_bar.png-c23edb5054c777f587fbf3d4206298bd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/hp_over.png b/demo/assets/hp_over.png
new file mode 100644
index 0000000..b04a763
Binary files /dev/null and b/demo/assets/hp_over.png differ
diff --git a/demo/assets/hp_over.png.import b/demo/assets/hp_over.png.import
new file mode 100644
index 0000000..9f6e24b
--- /dev/null
+++ b/demo/assets/hp_over.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cls8jtnu413o8"
+path="res://.godot/imported/hp_over.png-417c2786f2f485db8c5f858f3f94e7e9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/hp_over.png"
+dest_files=["res://.godot/imported/hp_over.png-417c2786f2f485db8c5f858f3f94e7e9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/hp_under.png b/demo/assets/hp_under.png
new file mode 100644
index 0000000..79d4747
Binary files /dev/null and b/demo/assets/hp_under.png differ
diff --git a/demo/assets/hp_under.png.import b/demo/assets/hp_under.png.import
new file mode 100644
index 0000000..f3b6d9a
--- /dev/null
+++ b/demo/assets/hp_under.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dlw15foygohrk"
+path="res://.godot/imported/hp_under.png-c993a547f4fdb0f3b9d06eb23ae4e804.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/hp_under.png"
+dest_files=["res://.godot/imported/hp_under.png-c993a547f4fdb0f3b9d06eb23ae4e804.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/icon.svg b/demo/assets/icon.svg
new file mode 100644
index 0000000..b53af7e
--- /dev/null
+++ b/demo/assets/icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/demo/assets/icon.svg.import b/demo/assets/icon.svg.import
new file mode 100644
index 0000000..201efda
--- /dev/null
+++ b/demo/assets/icon.svg.import
@@ -0,0 +1,37 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://do6oi8vmfneur"
+path="res://.godot/imported/icon.svg-e526cd5ce5fe587ad30e60477eb51fdf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/icon.svg"
+dest_files=["res://.godot/imported/icon.svg-e526cd5ce5fe587ad30e60477eb51fdf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/demo/assets/logo.png b/demo/assets/logo.png
new file mode 100644
index 0000000..0533077
Binary files /dev/null and b/demo/assets/logo.png differ
diff --git a/demo/assets/logo.png.import b/demo/assets/logo.png.import
new file mode 100644
index 0000000..e0d85bf
--- /dev/null
+++ b/demo/assets/logo.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://tyu0ua1ju38l"
+path="res://.godot/imported/logo.png-627f053fd17248d48d9d002bdb02afc3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/logo.png"
+dest_files=["res://.godot/imported/logo.png-627f053fd17248d48d9d002bdb02afc3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/shadow.png b/demo/assets/shadow.png
new file mode 100644
index 0000000..683dc83
Binary files /dev/null and b/demo/assets/shadow.png differ
diff --git a/demo/assets/shadow.png.import b/demo/assets/shadow.png.import
new file mode 100644
index 0000000..5ec9cc1
--- /dev/null
+++ b/demo/assets/shadow.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dwhhxj5557qrb"
+path="res://.godot/imported/shadow.png-f4b948130f51dfdf8369bd133baa3734.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/shadow.png"
+dest_files=["res://.godot/imported/shadow.png-f4b948130f51dfdf8369bd133baa3734.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/smoke.png b/demo/assets/smoke.png
new file mode 100644
index 0000000..725246d
Binary files /dev/null and b/demo/assets/smoke.png differ
diff --git a/demo/assets/smoke.png.import b/demo/assets/smoke.png.import
new file mode 100644
index 0000000..2701e6c
--- /dev/null
+++ b/demo/assets/smoke.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bdusy0qqtw0th"
+path="res://.godot/imported/smoke.png-d041a59b8025f6af550257daa38b3580.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/smoke.png"
+dest_files=["res://.godot/imported/smoke.png-d041a59b8025f6af550257daa38b3580.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/assets/ui.theme b/demo/assets/ui.theme
new file mode 100644
index 0000000..e010fad
Binary files /dev/null and b/demo/assets/ui.theme differ
diff --git a/demo/assets/weapon_ninja_star.png b/demo/assets/weapon_ninja_star.png
new file mode 100644
index 0000000..4b8e539
Binary files /dev/null and b/demo/assets/weapon_ninja_star.png differ
diff --git a/demo/assets/weapon_ninja_star.png.import b/demo/assets/weapon_ninja_star.png.import
new file mode 100644
index 0000000..1f4aa94
--- /dev/null
+++ b/demo/assets/weapon_ninja_star.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://2uyxh7sy8qny"
+path="res://.godot/imported/weapon_ninja_star.png-be058a7d9eff80095d1c513b22f898e0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://demo/assets/weapon_ninja_star.png"
+dest_files=["res://.godot/imported/weapon_ninja_star.png-be058a7d9eff80095d1c513b22f898e0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/demo/props/dummy.gd b/demo/props/dummy.gd
new file mode 100644
index 0000000..06fc9f3
--- /dev/null
+++ b/demo/props/dummy.gd
@@ -0,0 +1,15 @@
+extends CharacterBody2D
+
+@onready var animation_player: AnimationPlayer = $AnimationPlayer
+@onready var hurtbox: Hurtbox = $Hurtbox
+@onready var root: Node2D = $Root
+
+
+func _on_health_damaged(_amount: float, _knockback: Vector2) -> void:
+ root.scale.x = -signf(hurtbox.last_attack_vector.x)
+ animation_player.clear_queue()
+ animation_player.play(&"hurt", 0.1)
+
+
+func get_facing() -> float:
+ return signf(root.scale.x)
diff --git a/demo/props/dummy.tscn b/demo/props/dummy.tscn
new file mode 100644
index 0000000..7f39444
--- /dev/null
+++ b/demo/props/dummy.tscn
@@ -0,0 +1,405 @@
+[gd_scene load_steps=11 format=3 uid="uid://c5fhe3tulhlco"]
+
+[ext_resource type="Script" path="res://demo/props/dummy.gd" id="1_kqftw"]
+[ext_resource type="Texture2D" uid="uid://cltutcxjx8jnl" path="res://demo/assets/dummy.png" id="1_vdhcl"]
+[ext_resource type="Texture2D" uid="uid://dwhhxj5557qrb" path="res://demo/assets/shadow.png" id="2_535g7"]
+[ext_resource type="Script" path="res://demo/agents/scripts/hurtbox.gd" id="4_pkfnd"]
+[ext_resource type="Script" path="res://demo/agents/scripts/health.gd" id="5_8qcls"]
+
+[sub_resource type="Animation" id="Animation_1o3gy"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig: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("Root/Rig: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("Root/Rig:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/Stick:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, -1)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/Stick: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("Root/Rig/Stick: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("Root/Rig/Stick/Body:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, -49)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Stick/Body:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0.0]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Stick/Body:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_3r20x"]
+resource_name = "hurt"
+length = 0.25
+step = 0.05
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig: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("Root/Rig: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("Root/Rig:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/Stick:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(0, -1), Vector2(0, -1)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/Stick:rotation")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [0.0, -0.273996]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Root/Rig/Stick:scale")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 0.1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Root/Rig/Stick/Body:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(0, -49), Vector2(0, -49), Vector2(0, -49), Vector2(0, -49)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Stick/Body:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [0.0, -0.524778, -0.267304, -0.377565]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Stick/Body:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.15, 0.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.9, 1.1), Vector2(0.9, 1.1), Vector2(0.9, 1.1)]
+}
+
+[sub_resource type="Animation" id="Animation_sf5ej"]
+resource_name = "idle"
+length = 1.2
+loop_mode = 1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Rig: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("Root/Rig: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("Root/Rig:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Root/Rig/Stick:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0, -1)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Root/Rig/Stick: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("Root/Rig/Stick: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("Root/Rig/Stick/Body:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6, 0.9, 1.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(0, -49), Vector2(0, -49), Vector2(0, -49), Vector2(0, -49), Vector2(0, -49)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Root/Rig/Stick/Body:rotation")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6, 0.9, 1.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [-0.0523599, 0.0, 0.0523599, 0.0, -0.0523599]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Root/Rig/Stick/Body:scale")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 0.3, 0.6, 0.9, 1.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(0.95, 1.05), Vector2(1.05, 0.95), Vector2(0.95, 1.05), Vector2(1.05, 0.95), Vector2(0.95, 1.05)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_blnjx"]
+_data = {
+"RESET": SubResource("Animation_1o3gy"),
+"hurt": SubResource("Animation_3r20x"),
+"idle": SubResource("Animation_sf5ej")
+}
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_pknym"]
+size = Vector2(80, 35)
+
+[node name="Dummy" type="CharacterBody2D" groups=["player"]]
+script = ExtResource("1_kqftw")
+
+[node name="Root" type="Node2D" parent="."]
+metadata/_edit_lock_ = true
+
+[node name="Rig" type="Node2D" parent="Root"]
+
+[node name="Shadow" type="Sprite2D" parent="Root/Rig"]
+modulate = Color(1, 1, 1, 0.290196)
+texture = ExtResource("2_535g7")
+
+[node name="Stick" type="Sprite2D" parent="Root/Rig"]
+position = Vector2(0, -1)
+texture = ExtResource("1_vdhcl")
+offset = Vector2(-1, -28)
+region_enabled = true
+region_rect = Rect2(100.613, 0, 22.3875, 64.0292)
+
+[node name="Body" type="Sprite2D" parent="Root/Rig/Stick"]
+position = Vector2(0, -49)
+texture = ExtResource("1_vdhcl")
+offset = Vector2(-1, -56)
+region_enabled = true
+region_rect = Rect2(0, 0, 99.6683, 136)
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+"": SubResource("AnimationLibrary_blnjx")
+}
+autoplay = "idle"
+next/hurt = &"idle"
+blend_times = [&"idle", &"hurt", 0.05, &"hurt", &"idle", 0.3]
+
+[node name="Hurtbox" type="Area2D" parent="." node_paths=PackedStringArray("health")]
+collision_layer = 4
+collision_mask = 0
+script = ExtResource("4_pkfnd")
+health = NodePath("../Health")
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"]
+shape = SubResource("RectangleShape2D_pknym")
+debug_color = Color(0.466325, 0.590206, 0.107862, 0.42)
+metadata/_edit_lock_ = true
+
+[node name="Health" type="Node" parent="."]
+script = ExtResource("5_8qcls")
+max_health = 1e+07
+
+[connection signal="damaged" from="Health" to="." method="_on_health_damaged"]
diff --git a/demo/props/gong.gd b/demo/props/gong.gd
new file mode 100644
index 0000000..adf21ed
--- /dev/null
+++ b/demo/props/gong.gd
@@ -0,0 +1,15 @@
+extends StaticBody2D
+
+signal gong_struck
+
+var enabled: bool = true
+
+@onready var animation_player: AnimationPlayer = $AnimationPlayer
+
+
+func _on_health_damaged(_amount: float, _knockback: Vector2) -> void:
+ if not enabled:
+ return
+ animation_player.play(&"struck")
+ gong_struck.emit()
+ enabled = false
diff --git a/demo/props/gong.tscn b/demo/props/gong.tscn
new file mode 100644
index 0000000..e65295c
--- /dev/null
+++ b/demo/props/gong.tscn
@@ -0,0 +1,930 @@
+[gd_scene load_steps=12 format=3 uid="uid://bpd1wmw2f7bvg"]
+
+[ext_resource type="Script" path="res://demo/props/gong.gd" id="1_77c1i"]
+[ext_resource type="Texture2D" uid="uid://i476iia1ua8q" path="res://demo/assets/env_gong.png" id="1_kbnv6"]
+[ext_resource type="Texture2D" uid="uid://dwhhxj5557qrb" path="res://demo/assets/shadow.png" id="1_vl1mv"]
+[ext_resource type="Texture2D" uid="uid://dj4oayt5ttvh8" path="res://demo/assets/fx.png" id="2_dib3m"]
+[ext_resource type="Script" path="res://demo/agents/scripts/hurtbox.gd" id="5_xeb5y"]
+[ext_resource type="Script" path="res://demo/agents/scripts/health.gd" id="6_6a3q1"]
+
+[sub_resource type="Animation" id="Animation_i5ovs"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Gong: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("Root/Gong: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("Root/Gong:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("FX/WaveL1: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("FX/WaveL1:modulate")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1)]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("FX/WaveL1:position")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-65, -89)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("FX/WaveL1:rotation")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [1.57058]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("FX/WaveL1:scale")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.5, 0.5)]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("FX/WaverR1:position")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(70, -89)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("FX/WaverR1:rotation")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [4.71215]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("FX/WaverR1:scale")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.5, 0.5)]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("FX/WaverR1:visible")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("FX/WaverR1:modulate")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("FX/WaveL2:position")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-65, -89)]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("FX/WaveL2:rotation")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [1.57058]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("FX/WaveL2:scale")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.5, 0.5)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("FX/WaverR2:position")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(70, -89)]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("FX/WaverR2:rotation")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [4.71215]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("FX/WaverR2:scale")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.5, 0.5)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("FX/WaveL3:position")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-65, -89)]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("FX/WaveL3:rotation")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [1.57058]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("FX/WaveL3:scale")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.5, 0.5)]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("FX/WaverR3:position")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(70, -89)]
+}
+tracks/23/type = "value"
+tracks/23/imported = false
+tracks/23/enabled = true
+tracks/23/path = NodePath("FX/WaverR3:rotation")
+tracks/23/interp = 1
+tracks/23/loop_wrap = true
+tracks/23/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [4.71215]
+}
+tracks/24/type = "value"
+tracks/24/imported = false
+tracks/24/enabled = true
+tracks/24/path = NodePath("FX/WaverR3:scale")
+tracks/24/interp = 1
+tracks/24/loop_wrap = true
+tracks/24/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.5, 0.5)]
+}
+tracks/25/type = "value"
+tracks/25/imported = false
+tracks/25/enabled = true
+tracks/25/path = NodePath("FX/WaveL2:visible")
+tracks/25/interp = 1
+tracks/25/loop_wrap = true
+tracks/25/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/26/type = "value"
+tracks/26/imported = false
+tracks/26/enabled = true
+tracks/26/path = NodePath("FX/WaveL2:modulate")
+tracks/26/interp = 1
+tracks/26/loop_wrap = true
+tracks/26/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1)]
+}
+tracks/27/type = "value"
+tracks/27/imported = false
+tracks/27/enabled = true
+tracks/27/path = NodePath("FX/WaverR2:visible")
+tracks/27/interp = 1
+tracks/27/loop_wrap = true
+tracks/27/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/28/type = "value"
+tracks/28/imported = false
+tracks/28/enabled = true
+tracks/28/path = NodePath("FX/WaverR2:modulate")
+tracks/28/interp = 1
+tracks/28/loop_wrap = true
+tracks/28/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1)]
+}
+tracks/29/type = "value"
+tracks/29/imported = false
+tracks/29/enabled = true
+tracks/29/path = NodePath("FX/WaveL3:visible")
+tracks/29/interp = 1
+tracks/29/loop_wrap = true
+tracks/29/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/30/type = "value"
+tracks/30/imported = false
+tracks/30/enabled = true
+tracks/30/path = NodePath("FX/WaveL3:modulate")
+tracks/30/interp = 1
+tracks/30/loop_wrap = true
+tracks/30/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1)]
+}
+tracks/31/type = "value"
+tracks/31/imported = false
+tracks/31/enabled = true
+tracks/31/path = NodePath("FX/WaverR3:visible")
+tracks/31/interp = 1
+tracks/31/loop_wrap = true
+tracks/31/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/32/type = "value"
+tracks/32/imported = false
+tracks/32/enabled = true
+tracks/32/path = NodePath("FX/WaverR3:modulate")
+tracks/32/interp = 1
+tracks/32/loop_wrap = true
+tracks/32/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1)]
+}
+
+[sub_resource type="Animation" id="Animation_ie54r"]
+resource_name = "struck"
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Root/Gong: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("Root/Gong: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("Root/Gong:scale")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1.1, 0.9), Vector2(0.9, 1.1), Vector2(1.08, 0.92), Vector2(0.92, 1.08), Vector2(1.06, 0.94), Vector2(0.94, 1.06), Vector2(1.04, 0.96), Vector2(0.96, 1.04), Vector2(1.02, 0.98), Vector2(0.98, 1.02), Vector2(1, 1)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("FX/WaveL1:visible")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("FX/WaveL1:modulate")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1), Color(0.607843, 0.898039, 1, 0)]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("FX/WaveL1:position")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(-65, -89), Vector2(-165, -89)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("FX/WaveL1:rotation")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [1.57058, 1.57058]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("FX/WaveL1:scale")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(0.5, 0.5), Vector2(1, 1)]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("FX/WaverR1:position")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(70, -89), Vector2(170, -89)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("FX/WaverR1:rotation")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [4.71215, 4.71215]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("FX/WaverR1:scale")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Vector2(0.5, 0.5), Vector2(1, 1)]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("FX/WaverR1:visible")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("FX/WaverR1:modulate")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0.1, 1),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1), Color(0.607843, 0.898039, 1, 0)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("FX/WaveL2:position")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 0.2, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-65, -89), Vector2(-65, -89), Vector2(-165, -89)]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("FX/WaveL2:rotation")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 0.2, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [1.57058, 1.57058, 1.57058]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("FX/WaveL2:scale")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 0.2, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(0.5, 0.5), Vector2(0.5, 0.5), Vector2(1, 1)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("FX/WaverR2:position")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 0.2, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(70, -89), Vector2(70, -89), Vector2(170, -89)]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("FX/WaverR2:rotation")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 0.2, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [4.71215, 4.71215, 4.71215]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("FX/WaverR2:scale")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0, 0.2, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(0.5, 0.5), Vector2(0.5, 0.5), Vector2(1, 1)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("FX/WaveL3:position")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 0.4, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-65, -89), Vector2(-65, -89), Vector2(-165, -89)]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("FX/WaveL3:rotation")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 0.4),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [1.57058, 1.57058]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("FX/WaveL3:scale")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0, 0.4, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(0.5, 0.5), Vector2(0.5, 0.5), Vector2(1, 1)]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("FX/WaverR3:position")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0, 0.4, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(70, -89), Vector2(70, -89), Vector2(170, -89)]
+}
+tracks/23/type = "value"
+tracks/23/imported = false
+tracks/23/enabled = true
+tracks/23/path = NodePath("FX/WaverR3:rotation")
+tracks/23/interp = 1
+tracks/23/loop_wrap = true
+tracks/23/keys = {
+"times": PackedFloat32Array(0, 0.4),
+"transitions": PackedFloat32Array(1, 1),
+"update": 0,
+"values": [4.71215, 4.71215]
+}
+tracks/24/type = "value"
+tracks/24/imported = false
+tracks/24/enabled = true
+tracks/24/path = NodePath("FX/WaverR3:scale")
+tracks/24/interp = 1
+tracks/24/loop_wrap = true
+tracks/24/keys = {
+"times": PackedFloat32Array(0, 0.4, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(0.5, 0.5), Vector2(0.5, 0.5), Vector2(1, 1)]
+}
+tracks/25/type = "value"
+tracks/25/imported = false
+tracks/25/enabled = true
+tracks/25/path = NodePath("FX/WaveL2:visible")
+tracks/25/interp = 1
+tracks/25/loop_wrap = true
+tracks/25/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, true]
+}
+tracks/26/type = "value"
+tracks/26/imported = false
+tracks/26/enabled = true
+tracks/26/path = NodePath("FX/WaveL2:modulate")
+tracks/26/interp = 1
+tracks/26/loop_wrap = true
+tracks/26/keys = {
+"times": PackedFloat32Array(0, 0.2, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1), Color(0.329412, 0.352941, 0.392157, 1), Color(0.607843, 0.898039, 1, 0)]
+}
+tracks/27/type = "value"
+tracks/27/imported = false
+tracks/27/enabled = true
+tracks/27/path = NodePath("FX/WaverR2:visible")
+tracks/27/interp = 1
+tracks/27/loop_wrap = true
+tracks/27/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, true]
+}
+tracks/28/type = "value"
+tracks/28/imported = false
+tracks/28/enabled = true
+tracks/28/path = NodePath("FX/WaverR2:modulate")
+tracks/28/interp = 1
+tracks/28/loop_wrap = true
+tracks/28/keys = {
+"times": PackedFloat32Array(0, 0.2, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1), Color(0.329412, 0.352941, 0.392157, 1), Color(0.607843, 0.898039, 1, 0)]
+}
+tracks/29/type = "value"
+tracks/29/imported = false
+tracks/29/enabled = true
+tracks/29/path = NodePath("FX/WaveL3:visible")
+tracks/29/interp = 1
+tracks/29/loop_wrap = true
+tracks/29/keys = {
+"times": PackedFloat32Array(0, 0.4),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, true]
+}
+tracks/30/type = "value"
+tracks/30/imported = false
+tracks/30/enabled = true
+tracks/30/path = NodePath("FX/WaveL3:modulate")
+tracks/30/interp = 1
+tracks/30/loop_wrap = true
+tracks/30/keys = {
+"times": PackedFloat32Array(-0.00147765, 0.4, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1), Color(0.329412, 0.352941, 0.392157, 1), Color(0.607843, 0.898039, 1, 0)]
+}
+tracks/31/type = "value"
+tracks/31/imported = false
+tracks/31/enabled = true
+tracks/31/path = NodePath("FX/WaverR3:visible")
+tracks/31/interp = 1
+tracks/31/loop_wrap = true
+tracks/31/keys = {
+"times": PackedFloat32Array(0, 0.4),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, true]
+}
+tracks/32/type = "value"
+tracks/32/imported = false
+tracks/32/enabled = true
+tracks/32/path = NodePath("FX/WaverR3:modulate")
+tracks/32/interp = 1
+tracks/32/loop_wrap = true
+tracks/32/keys = {
+"times": PackedFloat32Array(-0.00147765, 0.4, 1),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Color(0.329412, 0.352941, 0.392157, 1), Color(0.329412, 0.352941, 0.392157, 1), Color(0.607843, 0.898039, 1, 0)]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_332s2"]
+_data = {
+"RESET": SubResource("Animation_i5ovs"),
+"struck": SubResource("Animation_ie54r")
+}
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_nixvt"]
+radius = 20.91
+height = 186.37
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ru7jf"]
+radius = 39.2
+height = 253.42
+
+[node name="Gong" type="StaticBody2D"]
+script = ExtResource("1_77c1i")
+metadata/_edit_horizontal_guides_ = [111.0]
+
+[node name="Root" type="Node2D" parent="."]
+metadata/_edit_lock_ = true
+
+[node name="Shadow" type="Sprite2D" parent="Root"]
+modulate = Color(1, 1, 1, 0.329412)
+position = Vector2(0, -8)
+scale = Vector2(2.31, 1.7)
+texture = ExtResource("1_vl1mv")
+
+[node name="Gong" type="Sprite2D" parent="Root"]
+texture = ExtResource("1_kbnv6")
+offset = Vector2(0, -110)
+
+[node name="FX" type="Node2D" parent="."]
+metadata/_edit_lock_ = true
+
+[node name="WaveL1" type="Sprite2D" parent="FX"]
+visible = false
+modulate = Color(0.329412, 0.352941, 0.392157, 1)
+position = Vector2(-65, -89)
+rotation = 1.57058
+scale = Vector2(0.5, 0.5)
+texture = ExtResource("2_dib3m")
+region_enabled = true
+region_rect = Rect2(0, 0, 191, 74)
+
+[node name="WaverR1" type="Sprite2D" parent="FX"]
+visible = false
+modulate = Color(0.329412, 0.352941, 0.392157, 1)
+position = Vector2(70, -89)
+rotation = 4.71215
+scale = Vector2(0.5, 0.5)
+texture = ExtResource("2_dib3m")
+region_enabled = true
+region_rect = Rect2(0, 0, 191, 74)
+
+[node name="WaveL2" type="Sprite2D" parent="FX"]
+visible = false
+modulate = Color(0.329412, 0.352941, 0.392157, 1)
+position = Vector2(-65, -89)
+rotation = 1.57058
+scale = Vector2(0.5, 0.5)
+texture = ExtResource("2_dib3m")
+region_enabled = true
+region_rect = Rect2(0, 0, 191, 74)
+
+[node name="WaverR2" type="Sprite2D" parent="FX"]
+visible = false
+modulate = Color(0.329412, 0.352941, 0.392157, 1)
+position = Vector2(70, -89)
+rotation = 4.71215
+scale = Vector2(0.5, 0.5)
+texture = ExtResource("2_dib3m")
+region_enabled = true
+region_rect = Rect2(0, 0, 191, 74)
+
+[node name="WaveL3" type="Sprite2D" parent="FX"]
+visible = false
+modulate = Color(0.329412, 0.352941, 0.392157, 1)
+position = Vector2(-65, -89)
+rotation = 1.57058
+scale = Vector2(0.5, 0.5)
+texture = ExtResource("2_dib3m")
+region_enabled = true
+region_rect = Rect2(0, 0, 191, 74)
+
+[node name="WaverR3" type="Sprite2D" parent="FX"]
+visible = false
+modulate = Color(0.329412, 0.352941, 0.392157, 1)
+position = Vector2(70, -89)
+rotation = 4.71215
+scale = Vector2(0.5, 0.5)
+texture = ExtResource("2_dib3m")
+region_enabled = true
+region_rect = Rect2(0, 0, 191, 74)
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+"": SubResource("AnimationLibrary_332s2")
+}
+
+[node name="GongSFX" type="AudioStreamPlayer" parent="."]
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+position = Vector2(0, -14.395)
+rotation = 1.5708
+shape = SubResource("CapsuleShape2D_nixvt")
+
+[node name="Hurtbox" type="Area2D" parent="." node_paths=PackedStringArray("health")]
+collision_layer = 8
+collision_mask = 0
+script = ExtResource("5_xeb5y")
+health = NodePath("../Health")
+
+[node name="CollisionShape2D2" type="CollisionShape2D" parent="Hurtbox"]
+position = Vector2(0, -14.395)
+rotation = 1.5708
+shape = SubResource("CapsuleShape2D_ru7jf")
+debug_color = Color(0.886275, 0.109804, 0.756863, 0.419608)
+
+[node name="Health" type="Node" parent="."]
+script = ExtResource("6_6a3q1")
+max_health = 1e+11
+
+[connection signal="damaged" from="Health" to="." method="_on_health_damaged"]
diff --git a/demo/scenes/base/arena.tscn b/demo/scenes/base/arena.tscn
new file mode 100644
index 0000000..3c5c906
--- /dev/null
+++ b/demo/scenes/base/arena.tscn
@@ -0,0 +1,5142 @@
+[gd_scene load_steps=8 format=3 uid="uid://bsig1usigbbuy"]
+
+[ext_resource type="Texture2D" uid="uid://65b6yuobhxf8" path="res://demo/assets/env_clouds.png" id="1_1blat"]
+[ext_resource type="Texture2D" uid="uid://b3g14elmg0m36" path="res://demo/assets/env_rocks.png" id="1_145kx"]
+[ext_resource type="Texture2D" uid="uid://cc7b22sy46gwn" path="res://demo/assets/env_ground.png" id="1_vifjc"]
+[ext_resource type="Texture2D" uid="uid://4kw2ks8doc0w" path="res://demo/assets/env_plants.png" id="2_kesm7"]
+
+[sub_resource type="Animation" id="Animation_gwtgs"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Environment/Clouds/Cloud11:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3784, 345)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Environment/Clouds/Cloud1:position")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(764, 358)]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Environment/Clouds/Cloud13:position")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(4005, 2983)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Environment/Clouds/Cloud5:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-152, 2723)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Environment/Clouds/Cloud6:position")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3293, 936)]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Environment/Clouds/Cloud2:position")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(85, 1505)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Environment/Clouds/Cloud16:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3434, 3542)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Environment/Clouds/Cloud7:position")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1380, 3802)]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Environment/Clouds/Cloud3:position")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(503, 1222)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Environment/Clouds/Cloud14:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(4174, 3309)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Environment/Clouds/Cloud15:position")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(4695, 2800)]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Environment/Clouds/Cloud8:position")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(152, 3383)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Environment/Clouds/Cloud4:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(164, 1669)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Environment/Clouds/Cloud9:position")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(328, 3474)]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Environment/Clouds/Cloud10:position")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(933, 515)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Environment/Clouds/Cloud12:position")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(4570, 1222)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Environment/Clouds/Cloud11:scale")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Environment/Clouds/Cloud1:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("Environment/Clouds/Cloud13:scale")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Environment/Clouds/Cloud5:scale")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Environment/Clouds/Cloud6:scale")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Environment/Clouds/Cloud2:scale")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("Environment/Clouds/Cloud16:scale")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/23/type = "value"
+tracks/23/imported = false
+tracks/23/enabled = true
+tracks/23/path = NodePath("Environment/Clouds/Cloud7:scale")
+tracks/23/interp = 1
+tracks/23/loop_wrap = true
+tracks/23/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/24/type = "value"
+tracks/24/imported = false
+tracks/24/enabled = true
+tracks/24/path = NodePath("Environment/Clouds/Cloud3:scale")
+tracks/24/interp = 1
+tracks/24/loop_wrap = true
+tracks/24/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/25/type = "value"
+tracks/25/imported = false
+tracks/25/enabled = true
+tracks/25/path = NodePath("Environment/Clouds/Cloud14:scale")
+tracks/25/interp = 1
+tracks/25/loop_wrap = true
+tracks/25/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/26/type = "value"
+tracks/26/imported = false
+tracks/26/enabled = true
+tracks/26/path = NodePath("Environment/Clouds/Cloud15:scale")
+tracks/26/interp = 1
+tracks/26/loop_wrap = true
+tracks/26/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/27/type = "value"
+tracks/27/imported = false
+tracks/27/enabled = true
+tracks/27/path = NodePath("Environment/Clouds/Cloud8:scale")
+tracks/27/interp = 1
+tracks/27/loop_wrap = true
+tracks/27/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/28/type = "value"
+tracks/28/imported = false
+tracks/28/enabled = true
+tracks/28/path = NodePath("Environment/Clouds/Cloud4:scale")
+tracks/28/interp = 1
+tracks/28/loop_wrap = true
+tracks/28/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/29/type = "value"
+tracks/29/imported = false
+tracks/29/enabled = true
+tracks/29/path = NodePath("Environment/Clouds/Cloud9:scale")
+tracks/29/interp = 1
+tracks/29/loop_wrap = true
+tracks/29/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/30/type = "value"
+tracks/30/imported = false
+tracks/30/enabled = true
+tracks/30/path = NodePath("Environment/Clouds/Cloud10:scale")
+tracks/30/interp = 1
+tracks/30/loop_wrap = true
+tracks/30/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/31/type = "value"
+tracks/31/imported = false
+tracks/31/enabled = true
+tracks/31/path = NodePath("Environment/Clouds/Cloud12:scale")
+tracks/31/interp = 1
+tracks/31/loop_wrap = true
+tracks/31/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/32/type = "value"
+tracks/32/imported = false
+tracks/32/enabled = true
+tracks/32/path = NodePath("Environment/Clouds/Cloud1:visible")
+tracks/32/interp = 1
+tracks/32/loop_wrap = true
+tracks/32/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/33/type = "value"
+tracks/33/imported = false
+tracks/33/enabled = true
+tracks/33/path = NodePath("Environment/Clouds/Cloud13:visible")
+tracks/33/interp = 1
+tracks/33/loop_wrap = true
+tracks/33/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/34/type = "value"
+tracks/34/imported = false
+tracks/34/enabled = true
+tracks/34/path = NodePath("Environment/Clouds/Cloud5:visible")
+tracks/34/interp = 1
+tracks/34/loop_wrap = true
+tracks/34/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/35/type = "value"
+tracks/35/imported = false
+tracks/35/enabled = true
+tracks/35/path = NodePath("Environment/Clouds/Cloud6:visible")
+tracks/35/interp = 1
+tracks/35/loop_wrap = true
+tracks/35/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/36/type = "value"
+tracks/36/imported = false
+tracks/36/enabled = true
+tracks/36/path = NodePath("Environment/Clouds/Cloud2:visible")
+tracks/36/interp = 1
+tracks/36/loop_wrap = true
+tracks/36/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/37/type = "value"
+tracks/37/imported = false
+tracks/37/enabled = true
+tracks/37/path = NodePath("Environment/Clouds/Cloud16:visible")
+tracks/37/interp = 1
+tracks/37/loop_wrap = true
+tracks/37/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/38/type = "value"
+tracks/38/imported = false
+tracks/38/enabled = true
+tracks/38/path = NodePath("Environment/Clouds/Cloud7:visible")
+tracks/38/interp = 1
+tracks/38/loop_wrap = true
+tracks/38/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/39/type = "value"
+tracks/39/imported = false
+tracks/39/enabled = true
+tracks/39/path = NodePath("Environment/Clouds/Cloud3:visible")
+tracks/39/interp = 1
+tracks/39/loop_wrap = true
+tracks/39/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/40/type = "value"
+tracks/40/imported = false
+tracks/40/enabled = true
+tracks/40/path = NodePath("Environment/Clouds/Cloud14:visible")
+tracks/40/interp = 1
+tracks/40/loop_wrap = true
+tracks/40/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/41/type = "value"
+tracks/41/imported = false
+tracks/41/enabled = true
+tracks/41/path = NodePath("Environment/Clouds/Cloud15:visible")
+tracks/41/interp = 1
+tracks/41/loop_wrap = true
+tracks/41/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/42/type = "value"
+tracks/42/imported = false
+tracks/42/enabled = true
+tracks/42/path = NodePath("Environment/Clouds/Cloud8:visible")
+tracks/42/interp = 1
+tracks/42/loop_wrap = true
+tracks/42/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/43/type = "value"
+tracks/43/imported = false
+tracks/43/enabled = true
+tracks/43/path = NodePath("Environment/Clouds/Cloud4:visible")
+tracks/43/interp = 1
+tracks/43/loop_wrap = true
+tracks/43/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/44/type = "value"
+tracks/44/imported = false
+tracks/44/enabled = true
+tracks/44/path = NodePath("Environment/Clouds/Cloud9:visible")
+tracks/44/interp = 1
+tracks/44/loop_wrap = true
+tracks/44/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/45/type = "value"
+tracks/45/imported = false
+tracks/45/enabled = true
+tracks/45/path = NodePath("Environment/Clouds/Cloud10:visible")
+tracks/45/interp = 1
+tracks/45/loop_wrap = true
+tracks/45/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/46/type = "value"
+tracks/46/imported = false
+tracks/46/enabled = true
+tracks/46/path = NodePath("Environment/Clouds/Cloud12:visible")
+tracks/46/interp = 1
+tracks/46/loop_wrap = true
+tracks/46/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/47/type = "value"
+tracks/47/imported = false
+tracks/47/enabled = true
+tracks/47/path = NodePath("Environment/Clouds/Cloud11:visible")
+tracks/47/interp = 1
+tracks/47/loop_wrap = true
+tracks/47/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/48/type = "value"
+tracks/48/imported = false
+tracks/48/enabled = true
+tracks/48/path = NodePath("Environment/Clouds/Cloud17:position")
+tracks/48/interp = 1
+tracks/48/loop_wrap = true
+tracks/48/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-2737.13, 367.814)]
+}
+tracks/49/type = "value"
+tracks/49/imported = false
+tracks/49/enabled = true
+tracks/49/path = NodePath("Environment/Clouds/Cloud17:scale")
+tracks/49/interp = 1
+tracks/49/loop_wrap = true
+tracks/49/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1.35085, 1.15254)]
+}
+tracks/50/type = "value"
+tracks/50/imported = false
+tracks/50/enabled = true
+tracks/50/path = NodePath("Environment/Clouds/Cloud18:position")
+tracks/50/interp = 1
+tracks/50/loop_wrap = true
+tracks/50/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-1254.92, 3539.61)]
+}
+tracks/51/type = "value"
+tracks/51/imported = false
+tracks/51/enabled = true
+tracks/51/path = NodePath("Environment/Clouds/Cloud18:scale")
+tracks/51/interp = 1
+tracks/51/loop_wrap = true
+tracks/51/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.898305, 0.898305)]
+}
+tracks/52/type = "value"
+tracks/52/imported = false
+tracks/52/enabled = true
+tracks/52/path = NodePath("Environment/Clouds/Cloud19:position")
+tracks/52/interp = 1
+tracks/52/loop_wrap = true
+tracks/52/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-2912.7, 1260.29)]
+}
+tracks/53/type = "value"
+tracks/53/imported = false
+tracks/53/enabled = true
+tracks/53/path = NodePath("Environment/Clouds/Cloud19:scale")
+tracks/53/interp = 1
+tracks/53/loop_wrap = true
+tracks/53/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1.10169, 1.10169)]
+}
+tracks/54/type = "value"
+tracks/54/imported = false
+tracks/54/enabled = true
+tracks/54/path = NodePath("Environment/Clouds/Cloud20:position")
+tracks/54/interp = 1
+tracks/54/loop_wrap = true
+tracks/54/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-3251.5, 3437.56)]
+}
+tracks/55/type = "value"
+tracks/55/imported = false
+tracks/55/enabled = true
+tracks/55/path = NodePath("Environment/Clouds/Cloud20:scale")
+tracks/55/interp = 1
+tracks/55/loop_wrap = true
+tracks/55/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/56/type = "value"
+tracks/56/imported = false
+tracks/56/enabled = true
+tracks/56/path = NodePath("Environment/Clouds/Cloud21:position")
+tracks/56/interp = 1
+tracks/56/loop_wrap = true
+tracks/56/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-3181.26, 3581.44)]
+}
+tracks/57/type = "value"
+tracks/57/imported = false
+tracks/57/enabled = true
+tracks/57/path = NodePath("Environment/Clouds/Cloud21:scale")
+tracks/57/interp = 1
+tracks/57/loop_wrap = true
+tracks/57/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.949153, 0.949153)]
+}
+tracks/58/type = "value"
+tracks/58/imported = false
+tracks/58/enabled = true
+tracks/58/path = NodePath("Environment/Clouds/Cloud22:position")
+tracks/58/interp = 1
+tracks/58/loop_wrap = true
+tracks/58/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-420.856, 367.017)]
+}
+tracks/59/type = "value"
+tracks/59/imported = false
+tracks/59/enabled = true
+tracks/59/path = NodePath("Environment/Clouds/Cloud22:scale")
+tracks/59/interp = 1
+tracks/59/loop_wrap = true
+tracks/59/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/60/type = "value"
+tracks/60/imported = false
+tracks/60/enabled = true
+tracks/60/path = NodePath("Environment/Clouds/Cloud17:visible")
+tracks/60/interp = 1
+tracks/60/loop_wrap = true
+tracks/60/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/61/type = "value"
+tracks/61/imported = false
+tracks/61/enabled = true
+tracks/61/path = NodePath("Environment/Clouds/Cloud18:visible")
+tracks/61/interp = 1
+tracks/61/loop_wrap = true
+tracks/61/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/62/type = "value"
+tracks/62/imported = false
+tracks/62/enabled = true
+tracks/62/path = NodePath("Environment/Clouds/Cloud19:visible")
+tracks/62/interp = 1
+tracks/62/loop_wrap = true
+tracks/62/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/63/type = "value"
+tracks/63/imported = false
+tracks/63/enabled = true
+tracks/63/path = NodePath("Environment/Clouds/Cloud20:visible")
+tracks/63/interp = 1
+tracks/63/loop_wrap = true
+tracks/63/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/64/type = "value"
+tracks/64/imported = false
+tracks/64/enabled = true
+tracks/64/path = NodePath("Environment/Clouds/Cloud21:visible")
+tracks/64/interp = 1
+tracks/64/loop_wrap = true
+tracks/64/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/65/type = "value"
+tracks/65/imported = false
+tracks/65/enabled = true
+tracks/65/path = NodePath("Environment/Clouds/Cloud22:visible")
+tracks/65/interp = 1
+tracks/65/loop_wrap = true
+tracks/65/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/66/type = "value"
+tracks/66/imported = false
+tracks/66/enabled = true
+tracks/66/path = NodePath("Environment/Clouds/Cloud28:position")
+tracks/66/interp = 1
+tracks/66/loop_wrap = true
+tracks/66/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-461, 1787)]
+}
+tracks/67/type = "value"
+tracks/67/imported = false
+tracks/67/enabled = true
+tracks/67/path = NodePath("Environment/Clouds/Cloud28:scale")
+tracks/67/interp = 1
+tracks/67/loop_wrap = true
+tracks/67/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1.10169, 1.10169)]
+}
+tracks/68/type = "value"
+tracks/68/imported = false
+tracks/68/enabled = true
+tracks/68/path = NodePath("Environment/Clouds/Cloud23:position")
+tracks/68/interp = 1
+tracks/68/loop_wrap = true
+tracks/68/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-1493, 3040)]
+}
+tracks/69/type = "value"
+tracks/69/imported = false
+tracks/69/enabled = true
+tracks/69/path = NodePath("Environment/Clouds/Cloud23:scale")
+tracks/69/interp = 1
+tracks/69/loop_wrap = true
+tracks/69/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.898305, 0.898305)]
+}
+tracks/70/type = "value"
+tracks/70/imported = false
+tracks/70/enabled = true
+tracks/70/path = NodePath("Environment/Clouds/Cloud24:position")
+tracks/70/interp = 1
+tracks/70/loop_wrap = true
+tracks/70/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-510, 2429)]
+}
+tracks/71/type = "value"
+tracks/71/imported = false
+tracks/71/enabled = true
+tracks/71/path = NodePath("Environment/Clouds/Cloud24:scale")
+tracks/71/interp = 1
+tracks/71/loop_wrap = true
+tracks/71/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1.15254, 1.15254)]
+}
+tracks/72/type = "value"
+tracks/72/imported = false
+tracks/72/enabled = true
+tracks/72/path = NodePath("Environment/Clouds/Cloud25:position")
+tracks/72/interp = 1
+tracks/72/loop_wrap = true
+tracks/72/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-712, 1373)]
+}
+tracks/73/type = "value"
+tracks/73/imported = false
+tracks/73/enabled = true
+tracks/73/path = NodePath("Environment/Clouds/Cloud25:scale")
+tracks/73/interp = 1
+tracks/73/loop_wrap = true
+tracks/73/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1.10169, 1.10169)]
+}
+tracks/74/type = "value"
+tracks/74/imported = false
+tracks/74/enabled = true
+tracks/74/path = NodePath("Environment/Clouds/Cloud26:position")
+tracks/74/interp = 1
+tracks/74/loop_wrap = true
+tracks/74/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-269, 2004)]
+}
+tracks/75/type = "value"
+tracks/75/imported = false
+tracks/75/enabled = true
+tracks/75/path = NodePath("Environment/Clouds/Cloud26:scale")
+tracks/75/interp = 1
+tracks/75/loop_wrap = true
+tracks/75/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.79661, 0.79661)]
+}
+tracks/76/type = "value"
+tracks/76/imported = false
+tracks/76/enabled = true
+tracks/76/path = NodePath("Environment/Clouds/Cloud27:position")
+tracks/76/interp = 1
+tracks/76/loop_wrap = true
+tracks/76/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(-1656, 2353)]
+}
+tracks/77/type = "value"
+tracks/77/imported = false
+tracks/77/enabled = true
+tracks/77/path = NodePath("Environment/Clouds/Cloud27:scale")
+tracks/77/interp = 1
+tracks/77/loop_wrap = true
+tracks/77/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.949153, 0.949153)]
+}
+tracks/78/type = "value"
+tracks/78/imported = false
+tracks/78/enabled = true
+tracks/78/path = NodePath("Environment/Clouds/Cloud23:visible")
+tracks/78/interp = 1
+tracks/78/loop_wrap = true
+tracks/78/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/79/type = "value"
+tracks/79/imported = false
+tracks/79/enabled = true
+tracks/79/path = NodePath("Environment/Clouds/Cloud24:visible")
+tracks/79/interp = 1
+tracks/79/loop_wrap = true
+tracks/79/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/80/type = "value"
+tracks/80/imported = false
+tracks/80/enabled = true
+tracks/80/path = NodePath("Environment/Clouds/Cloud25:visible")
+tracks/80/interp = 1
+tracks/80/loop_wrap = true
+tracks/80/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/81/type = "value"
+tracks/81/imported = false
+tracks/81/enabled = true
+tracks/81/path = NodePath("Environment/Clouds/Cloud26:visible")
+tracks/81/interp = 1
+tracks/81/loop_wrap = true
+tracks/81/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/82/type = "value"
+tracks/82/imported = false
+tracks/82/enabled = true
+tracks/82/path = NodePath("Environment/Clouds/Cloud27:visible")
+tracks/82/interp = 1
+tracks/82/loop_wrap = true
+tracks/82/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/83/type = "value"
+tracks/83/imported = false
+tracks/83/enabled = true
+tracks/83/path = NodePath("Environment/Clouds/Cloud28:visible")
+tracks/83/interp = 1
+tracks/83/loop_wrap = true
+tracks/83/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/84/type = "value"
+tracks/84/imported = false
+tracks/84/enabled = true
+tracks/84/path = NodePath("Environment/Clouds/Cloud29:position")
+tracks/84/interp = 1
+tracks/84/loop_wrap = true
+tracks/84/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3890, 2612.5)]
+}
+tracks/85/type = "value"
+tracks/85/imported = false
+tracks/85/enabled = true
+tracks/85/path = NodePath("Environment/Clouds/Cloud29:scale")
+tracks/85/interp = 1
+tracks/85/loop_wrap = true
+tracks/85/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/86/type = "value"
+tracks/86/imported = false
+tracks/86/enabled = true
+tracks/86/path = NodePath("Environment/Clouds/Cloud30:position")
+tracks/86/interp = 1
+tracks/86/loop_wrap = true
+tracks/86/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3832, 1394.5)]
+}
+tracks/87/type = "value"
+tracks/87/imported = false
+tracks/87/enabled = true
+tracks/87/path = NodePath("Environment/Clouds/Cloud30:scale")
+tracks/87/interp = 1
+tracks/87/loop_wrap = true
+tracks/87/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/88/type = "value"
+tracks/88/imported = false
+tracks/88/enabled = true
+tracks/88/path = NodePath("Environment/Clouds/Cloud31:position")
+tracks/88/interp = 1
+tracks/88/loop_wrap = true
+tracks/88/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3472, 3106)]
+}
+tracks/89/type = "value"
+tracks/89/imported = false
+tracks/89/enabled = true
+tracks/89/path = NodePath("Environment/Clouds/Cloud31:scale")
+tracks/89/interp = 1
+tracks/89/loop_wrap = true
+tracks/89/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/90/type = "value"
+tracks/90/imported = false
+tracks/90/enabled = true
+tracks/90/path = NodePath("Environment/Clouds/Cloud32:position")
+tracks/90/interp = 1
+tracks/90/loop_wrap = true
+tracks/90/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3095, 2689.5)]
+}
+tracks/91/type = "value"
+tracks/91/imported = false
+tracks/91/enabled = true
+tracks/91/path = NodePath("Environment/Clouds/Cloud32:scale")
+tracks/91/interp = 1
+tracks/91/loop_wrap = true
+tracks/91/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/92/type = "value"
+tracks/92/imported = false
+tracks/92/enabled = true
+tracks/92/path = NodePath("Environment/Clouds/Cloud33:position")
+tracks/92/interp = 1
+tracks/92/loop_wrap = true
+tracks/92/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(4016, 1558.5)]
+}
+tracks/93/type = "value"
+tracks/93/imported = false
+tracks/93/enabled = true
+tracks/93/path = NodePath("Environment/Clouds/Cloud33:scale")
+tracks/93/interp = 1
+tracks/93/loop_wrap = true
+tracks/93/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/94/type = "value"
+tracks/94/imported = false
+tracks/94/enabled = true
+tracks/94/path = NodePath("Environment/Clouds/Cloud29:visible")
+tracks/94/interp = 1
+tracks/94/loop_wrap = true
+tracks/94/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/95/type = "value"
+tracks/95/imported = false
+tracks/95/enabled = true
+tracks/95/path = NodePath("Environment/Clouds/Cloud30:visible")
+tracks/95/interp = 1
+tracks/95/loop_wrap = true
+tracks/95/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/96/type = "value"
+tracks/96/imported = false
+tracks/96/enabled = true
+tracks/96/path = NodePath("Environment/Clouds/Cloud31:visible")
+tracks/96/interp = 1
+tracks/96/loop_wrap = true
+tracks/96/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/97/type = "value"
+tracks/97/imported = false
+tracks/97/enabled = true
+tracks/97/path = NodePath("Environment/Clouds/Cloud32:visible")
+tracks/97/interp = 1
+tracks/97/loop_wrap = true
+tracks/97/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/98/type = "value"
+tracks/98/imported = false
+tracks/98/enabled = true
+tracks/98/path = NodePath("Environment/Clouds/Cloud33:visible")
+tracks/98/interp = 1
+tracks/98/loop_wrap = true
+tracks/98/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/99/type = "value"
+tracks/99/imported = false
+tracks/99/enabled = true
+tracks/99/path = NodePath("Environment/Clouds/Cloud34:position")
+tracks/99/interp = 1
+tracks/99/loop_wrap = true
+tracks/99/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3863, 1375)]
+}
+tracks/100/type = "value"
+tracks/100/imported = false
+tracks/100/enabled = true
+tracks/100/path = NodePath("Environment/Clouds/Cloud34:scale")
+tracks/100/interp = 1
+tracks/100/loop_wrap = true
+tracks/100/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/101/type = "value"
+tracks/101/imported = false
+tracks/101/enabled = true
+tracks/101/path = NodePath("Environment/Clouds/Cloud35:position")
+tracks/101/interp = 1
+tracks/101/loop_wrap = true
+tracks/101/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3521.25, 3087)]
+}
+tracks/102/type = "value"
+tracks/102/imported = false
+tracks/102/enabled = true
+tracks/102/path = NodePath("Environment/Clouds/Cloud35:scale")
+tracks/102/interp = 1
+tracks/102/loop_wrap = true
+tracks/102/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/103/type = "value"
+tracks/103/imported = false
+tracks/103/enabled = true
+tracks/103/path = NodePath("Environment/Clouds/Cloud36:position")
+tracks/103/interp = 1
+tracks/103/loop_wrap = true
+tracks/103/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3609.25, 3161)]
+}
+tracks/104/type = "value"
+tracks/104/imported = false
+tracks/104/enabled = true
+tracks/104/path = NodePath("Environment/Clouds/Cloud36:scale")
+tracks/104/interp = 1
+tracks/104/loop_wrap = true
+tracks/104/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/105/type = "value"
+tracks/105/imported = false
+tracks/105/enabled = true
+tracks/105/path = NodePath("Environment/Clouds/Cloud37:position")
+tracks/105/interp = 1
+tracks/105/loop_wrap = true
+tracks/105/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3754.25, 1447)]
+}
+tracks/106/type = "value"
+tracks/106/imported = false
+tracks/106/enabled = true
+tracks/106/path = NodePath("Environment/Clouds/Cloud37:scale")
+tracks/106/interp = 1
+tracks/106/loop_wrap = true
+tracks/106/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/107/type = "value"
+tracks/107/imported = false
+tracks/107/enabled = true
+tracks/107/path = NodePath("Environment/Clouds/Cloud38:position")
+tracks/107/interp = 1
+tracks/107/loop_wrap = true
+tracks/107/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(2915.25, 2833)]
+}
+tracks/108/type = "value"
+tracks/108/imported = false
+tracks/108/enabled = true
+tracks/108/path = NodePath("Environment/Clouds/Cloud38:scale")
+tracks/108/interp = 1
+tracks/108/loop_wrap = true
+tracks/108/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(0.898305, 0.898305)]
+}
+tracks/109/type = "value"
+tracks/109/imported = false
+tracks/109/enabled = true
+tracks/109/path = NodePath("Environment/Clouds/Cloud39:position")
+tracks/109/interp = 1
+tracks/109/loop_wrap = true
+tracks/109/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(3270.25, 2207)]
+}
+tracks/110/type = "value"
+tracks/110/imported = false
+tracks/110/enabled = true
+tracks/110/path = NodePath("Environment/Clouds/Cloud39:scale")
+tracks/110/interp = 1
+tracks/110/loop_wrap = true
+tracks/110/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [Vector2(1, 1)]
+}
+tracks/111/type = "value"
+tracks/111/imported = false
+tracks/111/enabled = true
+tracks/111/path = NodePath("Environment/Clouds/Cloud34:visible")
+tracks/111/interp = 1
+tracks/111/loop_wrap = true
+tracks/111/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/112/type = "value"
+tracks/112/imported = false
+tracks/112/enabled = true
+tracks/112/path = NodePath("Environment/Clouds/Cloud35:visible")
+tracks/112/interp = 1
+tracks/112/loop_wrap = true
+tracks/112/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/113/type = "value"
+tracks/113/imported = false
+tracks/113/enabled = true
+tracks/113/path = NodePath("Environment/Clouds/Cloud36:visible")
+tracks/113/interp = 1
+tracks/113/loop_wrap = true
+tracks/113/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/114/type = "value"
+tracks/114/imported = false
+tracks/114/enabled = true
+tracks/114/path = NodePath("Environment/Clouds/Cloud37:visible")
+tracks/114/interp = 1
+tracks/114/loop_wrap = true
+tracks/114/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/115/type = "value"
+tracks/115/imported = false
+tracks/115/enabled = true
+tracks/115/path = NodePath("Environment/Clouds/Cloud38:visible")
+tracks/115/interp = 1
+tracks/115/loop_wrap = true
+tracks/115/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/116/type = "value"
+tracks/116/imported = false
+tracks/116/enabled = true
+tracks/116/path = NodePath("Environment/Clouds/Cloud39:visible")
+tracks/116/interp = 1
+tracks/116/loop_wrap = true
+tracks/116/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+
+[sub_resource type="Animation" id="Animation_75lmk"]
+resource_name = "float"
+length = 60.2
+loop_mode = 1
+step = 0.2
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Environment/Clouds/Cloud11:position")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-878, 345), Vector2(8280, 329), Vector2(-878, 345)]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Environment/Clouds/Cloud1:position")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-149, 377), Vector2(6644, 318), Vector2(-149, 377)]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Environment/Clouds/Cloud13:position")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-856, 3012), Vector2(6701, 2975), Vector2(-856, 3012)]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Environment/Clouds/Cloud5:position")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-152, 2723), Vector2(6304, 2691), Vector2(-152, 2723)]
+}
+tracks/4/type = "value"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Environment/Clouds/Cloud6:position")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-1169, 936), Vector2(6941, 936), Vector2(-1169, 936)]
+}
+tracks/5/type = "value"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Environment/Clouds/Cloud2:position")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-210, 1505), Vector2(7109, 1489), Vector2(-210, 1505)]
+}
+tracks/6/type = "value"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Environment/Clouds/Cloud16:position")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-733, 3542), Vector2(6978, 3478), Vector2(-733, 3542)]
+}
+tracks/7/type = "value"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Environment/Clouds/Cloud7:position")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-1427, 3831), Vector2(6420, 3842), Vector2(-1427, 3831)]
+}
+tracks/8/type = "value"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Environment/Clouds/Cloud3:position")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-258, 1222), Vector2(6551, 1238), Vector2(-258, 1222)]
+}
+tracks/9/type = "value"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Environment/Clouds/Cloud14:position")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-259, 3309), Vector2(7190, 3301), Vector2(-259, 3309)]
+}
+tracks/10/type = "value"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Environment/Clouds/Cloud15:position")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-947, 2800), Vector2(7711, 2824), Vector2(-947, 2800)]
+}
+tracks/11/type = "value"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Environment/Clouds/Cloud8:position")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-171, 3383), Vector2(6224, 3431), Vector2(-171, 3383)]
+}
+tracks/12/type = "value"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Environment/Clouds/Cloud4:position")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-26, 1669), Vector2(6716, 1797), Vector2(-26, 1669)]
+}
+tracks/13/type = "value"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Environment/Clouds/Cloud9:position")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-500, 3474), Vector2(6192, 3626), Vector2(-500, 3474)]
+}
+tracks/14/type = "value"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Environment/Clouds/Cloud10:position")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-285, 515), Vector2(6173, 595), Vector2(-285, 515)]
+}
+tracks/15/type = "value"
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/path = NodePath("Environment/Clouds/Cloud12:position")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(-444, 1222), Vector2(8090, 1286), Vector2(-444, 1222)]
+}
+tracks/16/type = "value"
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/path = NodePath("Environment/Clouds/Cloud11:scale")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/17/type = "value"
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/path = NodePath("Environment/Clouds/Cloud1:scale")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.69, 1.3), Vector2(1, 1)]
+}
+tracks/18/type = "value"
+tracks/18/imported = false
+tracks/18/enabled = true
+tracks/18/path = NodePath("Environment/Clouds/Cloud13:scale")
+tracks/18/interp = 1
+tracks/18/loop_wrap = true
+tracks/18/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/19/type = "value"
+tracks/19/imported = false
+tracks/19/enabled = true
+tracks/19/path = NodePath("Environment/Clouds/Cloud5:scale")
+tracks/19/interp = 1
+tracks/19/loop_wrap = true
+tracks/19/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.8, 0.8), Vector2(1, 1)]
+}
+tracks/20/type = "value"
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/path = NodePath("Environment/Clouds/Cloud6:scale")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.2, 1.2), Vector2(1, 1)]
+}
+tracks/21/type = "value"
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/path = NodePath("Environment/Clouds/Cloud2:scale")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/22/type = "value"
+tracks/22/imported = false
+tracks/22/enabled = true
+tracks/22/path = NodePath("Environment/Clouds/Cloud16:scale")
+tracks/22/interp = 1
+tracks/22/loop_wrap = true
+tracks/22/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.8, 0.8), Vector2(1, 1)]
+}
+tracks/23/type = "value"
+tracks/23/imported = false
+tracks/23/enabled = true
+tracks/23/path = NodePath("Environment/Clouds/Cloud7:scale")
+tracks/23/interp = 1
+tracks/23/loop_wrap = true
+tracks/23/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.2, 1.2), Vector2(1, 1)]
+}
+tracks/24/type = "value"
+tracks/24/imported = false
+tracks/24/enabled = true
+tracks/24/path = NodePath("Environment/Clouds/Cloud3:scale")
+tracks/24/interp = 1
+tracks/24/loop_wrap = true
+tracks/24/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.2, 1.2), Vector2(1, 1)]
+}
+tracks/25/type = "value"
+tracks/25/imported = false
+tracks/25/enabled = true
+tracks/25/path = NodePath("Environment/Clouds/Cloud14:scale")
+tracks/25/interp = 1
+tracks/25/loop_wrap = true
+tracks/25/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/26/type = "value"
+tracks/26/imported = false
+tracks/26/enabled = true
+tracks/26/path = NodePath("Environment/Clouds/Cloud15:scale")
+tracks/26/interp = 1
+tracks/26/loop_wrap = true
+tracks/26/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.6, 0.6), Vector2(1, 1)]
+}
+tracks/27/type = "value"
+tracks/27/imported = false
+tracks/27/enabled = true
+tracks/27/path = NodePath("Environment/Clouds/Cloud8:scale")
+tracks/27/interp = 1
+tracks/27/loop_wrap = true
+tracks/27/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/28/type = "value"
+tracks/28/imported = false
+tracks/28/enabled = true
+tracks/28/path = NodePath("Environment/Clouds/Cloud4:scale")
+tracks/28/interp = 1
+tracks/28/loop_wrap = true
+tracks/28/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/29/type = "value"
+tracks/29/imported = false
+tracks/29/enabled = true
+tracks/29/path = NodePath("Environment/Clouds/Cloud9:scale")
+tracks/29/interp = 1
+tracks/29/loop_wrap = true
+tracks/29/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(0.9, 0.9), Vector2(1, 1)]
+}
+tracks/30/type = "value"
+tracks/30/imported = false
+tracks/30/enabled = true
+tracks/30/path = NodePath("Environment/Clouds/Cloud10:scale")
+tracks/30/interp = 1
+tracks/30/loop_wrap = true
+tracks/30/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.2, 1.2), Vector2(1, 1)]
+}
+tracks/31/type = "value"
+tracks/31/imported = false
+tracks/31/enabled = true
+tracks/31/path = NodePath("Environment/Clouds/Cloud12:scale")
+tracks/31/interp = 1
+tracks/31/loop_wrap = true
+tracks/31/keys = {
+"times": PackedFloat32Array(0, 59, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1.2, 1.2), Vector2(1, 1)]
+}
+tracks/32/type = "value"
+tracks/32/imported = false
+tracks/32/enabled = true
+tracks/32/path = NodePath("Environment/Clouds/Cloud1:visible")
+tracks/32/interp = 1
+tracks/32/loop_wrap = true
+tracks/32/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/33/type = "value"
+tracks/33/imported = false
+tracks/33/enabled = true
+tracks/33/path = NodePath("Environment/Clouds/Cloud13:visible")
+tracks/33/interp = 1
+tracks/33/loop_wrap = true
+tracks/33/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/34/type = "value"
+tracks/34/imported = false
+tracks/34/enabled = true
+tracks/34/path = NodePath("Environment/Clouds/Cloud5:visible")
+tracks/34/interp = 1
+tracks/34/loop_wrap = true
+tracks/34/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/35/type = "value"
+tracks/35/imported = false
+tracks/35/enabled = true
+tracks/35/path = NodePath("Environment/Clouds/Cloud6:visible")
+tracks/35/interp = 1
+tracks/35/loop_wrap = true
+tracks/35/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/36/type = "value"
+tracks/36/imported = false
+tracks/36/enabled = true
+tracks/36/path = NodePath("Environment/Clouds/Cloud2:visible")
+tracks/36/interp = 1
+tracks/36/loop_wrap = true
+tracks/36/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/37/type = "value"
+tracks/37/imported = false
+tracks/37/enabled = true
+tracks/37/path = NodePath("Environment/Clouds/Cloud16:visible")
+tracks/37/interp = 1
+tracks/37/loop_wrap = true
+tracks/37/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/38/type = "value"
+tracks/38/imported = false
+tracks/38/enabled = true
+tracks/38/path = NodePath("Environment/Clouds/Cloud7:visible")
+tracks/38/interp = 1
+tracks/38/loop_wrap = true
+tracks/38/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/39/type = "value"
+tracks/39/imported = false
+tracks/39/enabled = true
+tracks/39/path = NodePath("Environment/Clouds/Cloud3:visible")
+tracks/39/interp = 1
+tracks/39/loop_wrap = true
+tracks/39/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/40/type = "value"
+tracks/40/imported = false
+tracks/40/enabled = true
+tracks/40/path = NodePath("Environment/Clouds/Cloud14:visible")
+tracks/40/interp = 1
+tracks/40/loop_wrap = true
+tracks/40/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/41/type = "value"
+tracks/41/imported = false
+tracks/41/enabled = true
+tracks/41/path = NodePath("Environment/Clouds/Cloud15:visible")
+tracks/41/interp = 1
+tracks/41/loop_wrap = true
+tracks/41/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/42/type = "value"
+tracks/42/imported = false
+tracks/42/enabled = true
+tracks/42/path = NodePath("Environment/Clouds/Cloud8:visible")
+tracks/42/interp = 1
+tracks/42/loop_wrap = true
+tracks/42/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/43/type = "value"
+tracks/43/imported = false
+tracks/43/enabled = true
+tracks/43/path = NodePath("Environment/Clouds/Cloud4:visible")
+tracks/43/interp = 1
+tracks/43/loop_wrap = true
+tracks/43/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/44/type = "value"
+tracks/44/imported = false
+tracks/44/enabled = true
+tracks/44/path = NodePath("Environment/Clouds/Cloud9:visible")
+tracks/44/interp = 1
+tracks/44/loop_wrap = true
+tracks/44/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/45/type = "value"
+tracks/45/imported = false
+tracks/45/enabled = true
+tracks/45/path = NodePath("Environment/Clouds/Cloud10:visible")
+tracks/45/interp = 1
+tracks/45/loop_wrap = true
+tracks/45/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/46/type = "value"
+tracks/46/imported = false
+tracks/46/enabled = true
+tracks/46/path = NodePath("Environment/Clouds/Cloud12:visible")
+tracks/46/interp = 1
+tracks/46/loop_wrap = true
+tracks/46/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/47/type = "value"
+tracks/47/imported = false
+tracks/47/enabled = true
+tracks/47/path = NodePath("Environment/Clouds/Cloud11:visible")
+tracks/47/interp = 1
+tracks/47/loop_wrap = true
+tracks/47/keys = {
+"times": PackedFloat32Array(0, 59, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/48/type = "value"
+tracks/48/imported = false
+tracks/48/enabled = true
+tracks/48/path = NodePath("Environment/Clouds/Cloud17:position")
+tracks/48/interp = 1
+tracks/48/loop_wrap = true
+tracks/48/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-1928, 1432), Vector2(-1928, 1432), Vector2(4049, 1536), Vector2(-1928, 1432)]
+}
+tracks/49/type = "value"
+tracks/49/imported = false
+tracks/49/enabled = true
+tracks/49/path = NodePath("Environment/Clouds/Cloud17:scale")
+tracks/49/interp = 1
+tracks/49/loop_wrap = true
+tracks/49/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1.35085, 1.15254), Vector2(1.35085, 1.15254), Vector2(1.35085, 1.15254), Vector2(1.35085, 1.15254)]
+}
+tracks/50/type = "value"
+tracks/50/imported = false
+tracks/50/enabled = true
+tracks/50/path = NodePath("Environment/Clouds/Cloud18:position")
+tracks/50/interp = 1
+tracks/50/loop_wrap = true
+tracks/50/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-865, 3055), Vector2(-865, 3055), Vector2(3895.5, 3103.47), Vector2(-865, 3055)]
+}
+tracks/51/type = "value"
+tracks/51/imported = false
+tracks/51/enabled = true
+tracks/51/path = NodePath("Environment/Clouds/Cloud18:scale")
+tracks/51/interp = 1
+tracks/51/loop_wrap = true
+tracks/51/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(0.898305, 0.898305), Vector2(0.898305, 0.898305), Vector2(0.898305, 0.898305), Vector2(0.898305, 0.898305)]
+}
+tracks/52/type = "value"
+tracks/52/imported = false
+tracks/52/enabled = true
+tracks/52/path = NodePath("Environment/Clouds/Cloud19:position")
+tracks/52/interp = 1
+tracks/52/loop_wrap = true
+tracks/52/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-1050, 1157), Vector2(-1050, 1157), Vector2(3710.5, 1205.47), Vector2(-1050, 1157)]
+}
+tracks/53/type = "value"
+tracks/53/imported = false
+tracks/53/enabled = true
+tracks/53/path = NodePath("Environment/Clouds/Cloud19:scale")
+tracks/53/interp = 1
+tracks/53/loop_wrap = true
+tracks/53/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1.10169, 1.10169), Vector2(1.10169, 1.10169), Vector2(1.10169, 1.10169), Vector2(1.10169, 1.10169)]
+}
+tracks/54/type = "value"
+tracks/54/imported = false
+tracks/54/enabled = true
+tracks/54/path = NodePath("Environment/Clouds/Cloud20:position")
+tracks/54/interp = 1
+tracks/54/loop_wrap = true
+tracks/54/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-2964, 2611), Vector2(-2964, 2611), Vector2(4117, 2739), Vector2(-2964, 2611)]
+}
+tracks/55/type = "value"
+tracks/55/imported = false
+tracks/55/enabled = true
+tracks/55/path = NodePath("Environment/Clouds/Cloud20:scale")
+tracks/55/interp = 1
+tracks/55/loop_wrap = true
+tracks/55/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/56/type = "value"
+tracks/56/imported = false
+tracks/56/enabled = true
+tracks/56/path = NodePath("Environment/Clouds/Cloud21:position")
+tracks/56/interp = 1
+tracks/56/loop_wrap = true
+tracks/56/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-493, 2589), Vector2(-493, 2589), Vector2(4267.5, 2637.47), Vector2(-493, 2589)]
+}
+tracks/57/type = "value"
+tracks/57/imported = false
+tracks/57/enabled = true
+tracks/57/path = NodePath("Environment/Clouds/Cloud21:scale")
+tracks/57/interp = 1
+tracks/57/loop_wrap = true
+tracks/57/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(0.949153, 0.949153), Vector2(0.949153, 0.949153), Vector2(0.949153, 0.949153), Vector2(0.949153, 0.949153)]
+}
+tracks/58/type = "value"
+tracks/58/imported = false
+tracks/58/enabled = true
+tracks/58/path = NodePath("Environment/Clouds/Cloud22:position")
+tracks/58/interp = 1
+tracks/58/loop_wrap = true
+tracks/58/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-1333, 2015), Vector2(-1333, 2015), Vector2(3427.5, 2063.47), Vector2(-1333, 2015)]
+}
+tracks/59/type = "value"
+tracks/59/imported = false
+tracks/59/enabled = true
+tracks/59/path = NodePath("Environment/Clouds/Cloud22:scale")
+tracks/59/interp = 1
+tracks/59/loop_wrap = true
+tracks/59/keys = {
+"times": PackedFloat32Array(0, 12, 47, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/60/type = "value"
+tracks/60/imported = false
+tracks/60/enabled = true
+tracks/60/path = NodePath("Environment/Clouds/Cloud17:visible")
+tracks/60/interp = 1
+tracks/60/loop_wrap = true
+tracks/60/keys = {
+"times": PackedFloat32Array(0, 47, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/61/type = "value"
+tracks/61/imported = false
+tracks/61/enabled = true
+tracks/61/path = NodePath("Environment/Clouds/Cloud18:visible")
+tracks/61/interp = 1
+tracks/61/loop_wrap = true
+tracks/61/keys = {
+"times": PackedFloat32Array(0, 47, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/62/type = "value"
+tracks/62/imported = false
+tracks/62/enabled = true
+tracks/62/path = NodePath("Environment/Clouds/Cloud19:visible")
+tracks/62/interp = 1
+tracks/62/loop_wrap = true
+tracks/62/keys = {
+"times": PackedFloat32Array(0, 47, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/63/type = "value"
+tracks/63/imported = false
+tracks/63/enabled = true
+tracks/63/path = NodePath("Environment/Clouds/Cloud20:visible")
+tracks/63/interp = 1
+tracks/63/loop_wrap = true
+tracks/63/keys = {
+"times": PackedFloat32Array(0, 47, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/64/type = "value"
+tracks/64/imported = false
+tracks/64/enabled = true
+tracks/64/path = NodePath("Environment/Clouds/Cloud21:visible")
+tracks/64/interp = 1
+tracks/64/loop_wrap = true
+tracks/64/keys = {
+"times": PackedFloat32Array(0, 47, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/65/type = "value"
+tracks/65/imported = false
+tracks/65/enabled = true
+tracks/65/path = NodePath("Environment/Clouds/Cloud22:visible")
+tracks/65/interp = 1
+tracks/65/loop_wrap = true
+tracks/65/keys = {
+"times": PackedFloat32Array(0, 47, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/66/type = "value"
+tracks/66/imported = false
+tracks/66/enabled = true
+tracks/66/path = NodePath("Environment/Clouds/Cloud28:position")
+tracks/66/interp = 1
+tracks/66/loop_wrap = true
+tracks/66/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-461, 1787), Vector2(-461, 1787), Vector2(3829.5, 1787), Vector2(-461, 1787)]
+}
+tracks/67/type = "value"
+tracks/67/imported = false
+tracks/67/enabled = true
+tracks/67/path = NodePath("Environment/Clouds/Cloud28:scale")
+tracks/67/interp = 1
+tracks/67/loop_wrap = true
+tracks/67/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(0.9, 0.9), Vector2(1, 1)]
+}
+tracks/68/type = "value"
+tracks/68/imported = false
+tracks/68/enabled = true
+tracks/68/path = NodePath("Environment/Clouds/Cloud23:position")
+tracks/68/interp = 1
+tracks/68/loop_wrap = true
+tracks/68/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-1493, 3040), Vector2(-1493, 3040), Vector2(3139.75, 3040), Vector2(-1493, 3040)]
+}
+tracks/69/type = "value"
+tracks/69/imported = false
+tracks/69/enabled = true
+tracks/69/path = NodePath("Environment/Clouds/Cloud23:scale")
+tracks/69/interp = 1
+tracks/69/loop_wrap = true
+tracks/69/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/70/type = "value"
+tracks/70/imported = false
+tracks/70/enabled = true
+tracks/70/path = NodePath("Environment/Clouds/Cloud24:position")
+tracks/70/interp = 1
+tracks/70/loop_wrap = true
+tracks/70/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-510, 2429), Vector2(-510, 2429), Vector2(4122.75, 2429), Vector2(-510, 2429)]
+}
+tracks/71/type = "value"
+tracks/71/imported = false
+tracks/71/enabled = true
+tracks/71/path = NodePath("Environment/Clouds/Cloud24:scale")
+tracks/71/interp = 1
+tracks/71/loop_wrap = true
+tracks/71/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/72/type = "value"
+tracks/72/imported = false
+tracks/72/enabled = true
+tracks/72/path = NodePath("Environment/Clouds/Cloud25:position")
+tracks/72/interp = 1
+tracks/72/loop_wrap = true
+tracks/72/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-712, 1373), Vector2(-712, 1373), Vector2(3920.75, 1373), Vector2(-712, 1373)]
+}
+tracks/73/type = "value"
+tracks/73/imported = false
+tracks/73/enabled = true
+tracks/73/path = NodePath("Environment/Clouds/Cloud25:scale")
+tracks/73/interp = 1
+tracks/73/loop_wrap = true
+tracks/73/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/74/type = "value"
+tracks/74/imported = false
+tracks/74/enabled = true
+tracks/74/path = NodePath("Environment/Clouds/Cloud26:position")
+tracks/74/interp = 1
+tracks/74/loop_wrap = true
+tracks/74/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-269, 2004), Vector2(-269, 2004), Vector2(4021.5, 2004), Vector2(-269, 2004)]
+}
+tracks/75/type = "value"
+tracks/75/imported = false
+tracks/75/enabled = true
+tracks/75/path = NodePath("Environment/Clouds/Cloud26:scale")
+tracks/75/interp = 1
+tracks/75/loop_wrap = true
+tracks/75/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(0.9, 0.9), Vector2(1, 1)]
+}
+tracks/76/type = "value"
+tracks/76/imported = false
+tracks/76/enabled = true
+tracks/76/path = NodePath("Environment/Clouds/Cloud27:position")
+tracks/76/interp = 1
+tracks/76/loop_wrap = true
+tracks/76/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(-1656, 2353), Vector2(-1656, 2353), Vector2(2634.5, 2353), Vector2(-1656, 2353)]
+}
+tracks/77/type = "value"
+tracks/77/imported = false
+tracks/77/enabled = true
+tracks/77/path = NodePath("Environment/Clouds/Cloud27:scale")
+tracks/77/interp = 1
+tracks/77/loop_wrap = true
+tracks/77/keys = {
+"times": PackedFloat32Array(0, 30, 56, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(0.9, 0.9), Vector2(1, 1)]
+}
+tracks/78/type = "value"
+tracks/78/imported = false
+tracks/78/enabled = true
+tracks/78/path = NodePath("Environment/Clouds/Cloud23:visible")
+tracks/78/interp = 1
+tracks/78/loop_wrap = true
+tracks/78/keys = {
+"times": PackedFloat32Array(0, 56, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/79/type = "value"
+tracks/79/imported = false
+tracks/79/enabled = true
+tracks/79/path = NodePath("Environment/Clouds/Cloud24:visible")
+tracks/79/interp = 1
+tracks/79/loop_wrap = true
+tracks/79/keys = {
+"times": PackedFloat32Array(0, 56, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/80/type = "value"
+tracks/80/imported = false
+tracks/80/enabled = true
+tracks/80/path = NodePath("Environment/Clouds/Cloud25:visible")
+tracks/80/interp = 1
+tracks/80/loop_wrap = true
+tracks/80/keys = {
+"times": PackedFloat32Array(0, 56, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/81/type = "value"
+tracks/81/imported = false
+tracks/81/enabled = true
+tracks/81/path = NodePath("Environment/Clouds/Cloud26:visible")
+tracks/81/interp = 1
+tracks/81/loop_wrap = true
+tracks/81/keys = {
+"times": PackedFloat32Array(0, 56, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/82/type = "value"
+tracks/82/imported = false
+tracks/82/enabled = true
+tracks/82/path = NodePath("Environment/Clouds/Cloud27:visible")
+tracks/82/interp = 1
+tracks/82/loop_wrap = true
+tracks/82/keys = {
+"times": PackedFloat32Array(0, 56, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/83/type = "value"
+tracks/83/imported = false
+tracks/83/enabled = true
+tracks/83/path = NodePath("Environment/Clouds/Cloud28:visible")
+tracks/83/interp = 1
+tracks/83/loop_wrap = true
+tracks/83/keys = {
+"times": PackedFloat32Array(0, 56, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/84/type = "value"
+tracks/84/imported = false
+tracks/84/enabled = true
+tracks/84/path = NodePath("Environment/Clouds/Cloud29:position")
+tracks/84/interp = 1
+tracks/84/loop_wrap = true
+tracks/84/keys = {
+"times": PackedFloat32Array(0, 20, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(3890, 2612.5), Vector2(7216.5, 2622.5), Vector2(3890, 2612.5)]
+}
+tracks/85/type = "value"
+tracks/85/imported = false
+tracks/85/enabled = true
+tracks/85/path = NodePath("Environment/Clouds/Cloud29:scale")
+tracks/85/interp = 1
+tracks/85/loop_wrap = true
+tracks/85/keys = {
+"times": PackedFloat32Array(0, 20, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/86/type = "value"
+tracks/86/imported = false
+tracks/86/enabled = true
+tracks/86/path = NodePath("Environment/Clouds/Cloud30:position")
+tracks/86/interp = 1
+tracks/86/loop_wrap = true
+tracks/86/keys = {
+"times": PackedFloat32Array(0, 20, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(3832, 1394.5), Vector2(7158.5, 1404.5), Vector2(3832, 1394.5)]
+}
+tracks/87/type = "value"
+tracks/87/imported = false
+tracks/87/enabled = true
+tracks/87/path = NodePath("Environment/Clouds/Cloud30:scale")
+tracks/87/interp = 1
+tracks/87/loop_wrap = true
+tracks/87/keys = {
+"times": PackedFloat32Array(0, 20, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/88/type = "value"
+tracks/88/imported = false
+tracks/88/enabled = true
+tracks/88/path = NodePath("Environment/Clouds/Cloud31:position")
+tracks/88/interp = 1
+tracks/88/loop_wrap = true
+tracks/88/keys = {
+"times": PackedFloat32Array(0, 20, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(3472, 3106), Vector2(6798.5, 3116), Vector2(3472, 3106)]
+}
+tracks/89/type = "value"
+tracks/89/imported = false
+tracks/89/enabled = true
+tracks/89/path = NodePath("Environment/Clouds/Cloud31:scale")
+tracks/89/interp = 1
+tracks/89/loop_wrap = true
+tracks/89/keys = {
+"times": PackedFloat32Array(0, 20, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/90/type = "value"
+tracks/90/imported = false
+tracks/90/enabled = true
+tracks/90/path = NodePath("Environment/Clouds/Cloud32:position")
+tracks/90/interp = 1
+tracks/90/loop_wrap = true
+tracks/90/keys = {
+"times": PackedFloat32Array(0, 20, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(3095, 2689.5), Vector2(6421.5, 2699.5), Vector2(3095, 2689.5)]
+}
+tracks/91/type = "value"
+tracks/91/imported = false
+tracks/91/enabled = true
+tracks/91/path = NodePath("Environment/Clouds/Cloud32:scale")
+tracks/91/interp = 1
+tracks/91/loop_wrap = true
+tracks/91/keys = {
+"times": PackedFloat32Array(0, 20, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/92/type = "value"
+tracks/92/imported = false
+tracks/92/enabled = true
+tracks/92/path = NodePath("Environment/Clouds/Cloud33:position")
+tracks/92/interp = 1
+tracks/92/loop_wrap = true
+tracks/92/keys = {
+"times": PackedFloat32Array(0, 20, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(4016, 1558.5), Vector2(7342.5, 1568.5), Vector2(4016, 1558.5)]
+}
+tracks/93/type = "value"
+tracks/93/imported = false
+tracks/93/enabled = true
+tracks/93/path = NodePath("Environment/Clouds/Cloud33:scale")
+tracks/93/interp = 1
+tracks/93/loop_wrap = true
+tracks/93/keys = {
+"times": PackedFloat32Array(0, 20, 60),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1, 1)]
+}
+tracks/94/type = "value"
+tracks/94/imported = false
+tracks/94/enabled = true
+tracks/94/path = NodePath("Environment/Clouds/Cloud29:visible")
+tracks/94/interp = 1
+tracks/94/loop_wrap = true
+tracks/94/keys = {
+"times": PackedFloat32Array(0, 20, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/95/type = "value"
+tracks/95/imported = false
+tracks/95/enabled = true
+tracks/95/path = NodePath("Environment/Clouds/Cloud30:visible")
+tracks/95/interp = 1
+tracks/95/loop_wrap = true
+tracks/95/keys = {
+"times": PackedFloat32Array(0, 20, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/96/type = "value"
+tracks/96/imported = false
+tracks/96/enabled = true
+tracks/96/path = NodePath("Environment/Clouds/Cloud31:visible")
+tracks/96/interp = 1
+tracks/96/loop_wrap = true
+tracks/96/keys = {
+"times": PackedFloat32Array(0, 20, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/97/type = "value"
+tracks/97/imported = false
+tracks/97/enabled = true
+tracks/97/path = NodePath("Environment/Clouds/Cloud32:visible")
+tracks/97/interp = 1
+tracks/97/loop_wrap = true
+tracks/97/keys = {
+"times": PackedFloat32Array(0, 20, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/98/type = "value"
+tracks/98/imported = false
+tracks/98/enabled = true
+tracks/98/path = NodePath("Environment/Clouds/Cloud33:visible")
+tracks/98/interp = 1
+tracks/98/loop_wrap = true
+tracks/98/keys = {
+"times": PackedFloat32Array(0, 20, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1),
+"update": 1,
+"values": [true, false, true]
+}
+tracks/99/type = "value"
+tracks/99/imported = false
+tracks/99/enabled = true
+tracks/99/path = NodePath("Environment/Clouds/Cloud34:position")
+tracks/99/interp = 1
+tracks/99/loop_wrap = true
+tracks/99/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(3863, 1375), Vector2(3863, 1375), Vector2(7431, 1375), Vector2(3863, 1375)]
+}
+tracks/100/type = "value"
+tracks/100/imported = false
+tracks/100/enabled = true
+tracks/100/path = NodePath("Environment/Clouds/Cloud34:scale")
+tracks/100/interp = 1
+tracks/100/loop_wrap = true
+tracks/100/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/101/type = "value"
+tracks/101/imported = false
+tracks/101/enabled = true
+tracks/101/path = NodePath("Environment/Clouds/Cloud35:position")
+tracks/101/interp = 1
+tracks/101/loop_wrap = true
+tracks/101/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(3521.25, 3087), Vector2(3521.25, 3087), Vector2(7089.25, 3087), Vector2(3521.25, 3087)]
+}
+tracks/102/type = "value"
+tracks/102/imported = false
+tracks/102/enabled = true
+tracks/102/path = NodePath("Environment/Clouds/Cloud35:scale")
+tracks/102/interp = 1
+tracks/102/loop_wrap = true
+tracks/102/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/103/type = "value"
+tracks/103/imported = false
+tracks/103/enabled = true
+tracks/103/path = NodePath("Environment/Clouds/Cloud36:position")
+tracks/103/interp = 1
+tracks/103/loop_wrap = true
+tracks/103/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(3609.25, 3161), Vector2(3609.25, 3161), Vector2(7177.25, 3161), Vector2(3609.25, 3161)]
+}
+tracks/104/type = "value"
+tracks/104/imported = false
+tracks/104/enabled = true
+tracks/104/path = NodePath("Environment/Clouds/Cloud36:scale")
+tracks/104/interp = 1
+tracks/104/loop_wrap = true
+tracks/104/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/105/type = "value"
+tracks/105/imported = false
+tracks/105/enabled = true
+tracks/105/path = NodePath("Environment/Clouds/Cloud37:position")
+tracks/105/interp = 1
+tracks/105/loop_wrap = true
+tracks/105/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(3754.25, 1447), Vector2(3754.25, 1447), Vector2(7322.25, 1447), Vector2(3754.25, 1447)]
+}
+tracks/106/type = "value"
+tracks/106/imported = false
+tracks/106/enabled = true
+tracks/106/path = NodePath("Environment/Clouds/Cloud37:scale")
+tracks/106/interp = 1
+tracks/106/loop_wrap = true
+tracks/106/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/107/type = "value"
+tracks/107/imported = false
+tracks/107/enabled = true
+tracks/107/path = NodePath("Environment/Clouds/Cloud38:position")
+tracks/107/interp = 1
+tracks/107/loop_wrap = true
+tracks/107/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(2915.25, 2833), Vector2(2915.25, 2833), Vector2(6483.25, 2833), Vector2(2915.25, 2833)]
+}
+tracks/108/type = "value"
+tracks/108/imported = false
+tracks/108/enabled = true
+tracks/108/path = NodePath("Environment/Clouds/Cloud38:scale")
+tracks/108/interp = 1
+tracks/108/loop_wrap = true
+tracks/108/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(0.898305, 0.898305), Vector2(0.898305, 0.898305), Vector2(1.3, 1.3), Vector2(0.898305, 0.898305)]
+}
+tracks/109/type = "value"
+tracks/109/imported = false
+tracks/109/enabled = true
+tracks/109/path = NodePath("Environment/Clouds/Cloud39:position")
+tracks/109/interp = 1
+tracks/109/loop_wrap = true
+tracks/109/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(3270.25, 2207), Vector2(3270.25, 2207), Vector2(6838.25, 2207), Vector2(3270.25, 2207)]
+}
+tracks/110/type = "value"
+tracks/110/imported = false
+tracks/110/enabled = true
+tracks/110/path = NodePath("Environment/Clouds/Cloud39:scale")
+tracks/110/interp = 1
+tracks/110/loop_wrap = true
+tracks/110/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 0,
+"values": [Vector2(1, 1), Vector2(1, 1), Vector2(1.3, 1.3), Vector2(1, 1)]
+}
+tracks/111/type = "value"
+tracks/111/imported = false
+tracks/111/enabled = true
+tracks/111/path = NodePath("Environment/Clouds/Cloud34:visible")
+tracks/111/interp = 1
+tracks/111/loop_wrap = true
+tracks/111/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 1,
+"values": [true, true, false, true]
+}
+tracks/112/type = "value"
+tracks/112/imported = false
+tracks/112/enabled = true
+tracks/112/path = NodePath("Environment/Clouds/Cloud35:visible")
+tracks/112/interp = 1
+tracks/112/loop_wrap = true
+tracks/112/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 1,
+"values": [true, true, false, true]
+}
+tracks/113/type = "value"
+tracks/113/imported = false
+tracks/113/enabled = true
+tracks/113/path = NodePath("Environment/Clouds/Cloud36:visible")
+tracks/113/interp = 1
+tracks/113/loop_wrap = true
+tracks/113/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 1,
+"values": [true, true, false, true]
+}
+tracks/114/type = "value"
+tracks/114/imported = false
+tracks/114/enabled = true
+tracks/114/path = NodePath("Environment/Clouds/Cloud37:visible")
+tracks/114/interp = 1
+tracks/114/loop_wrap = true
+tracks/114/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 1,
+"values": [true, true, false, true]
+}
+tracks/115/type = "value"
+tracks/115/imported = false
+tracks/115/enabled = true
+tracks/115/path = NodePath("Environment/Clouds/Cloud38:visible")
+tracks/115/interp = 1
+tracks/115/loop_wrap = true
+tracks/115/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 1,
+"values": [true, true, false, true]
+}
+tracks/116/type = "value"
+tracks/116/imported = false
+tracks/116/enabled = true
+tracks/116/path = NodePath("Environment/Clouds/Cloud39:visible")
+tracks/116/interp = 1
+tracks/116/loop_wrap = true
+tracks/116/keys = {
+"times": PackedFloat32Array(0, 22, 35, 60.2),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 1,
+"values": [true, true, false, true]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_an3cu"]
+_data = {
+"RESET": SubResource("Animation_gwtgs"),
+"float": SubResource("Animation_75lmk")
+}
+
+[node name="Arena" type="Node2D"]
+y_sort_enabled = true
+metadata/_edit_vertical_guides_ = [962.0]
+metadata/_edit_horizontal_guides_ = [541.0]
+
+[node name="Environment" type="Node2D" parent="."]
+top_level = true
+z_index = -1
+metadata/_edit_lock_ = true
+
+[node name="Sky" type="ColorRect" parent="Environment"]
+custom_minimum_size = Vector2(6000, 4000)
+offset_left = -2048.0
+offset_top = -1498.0
+offset_right = 3952.0
+offset_bottom = 2502.0
+color = Color(0.537255, 0.745098, 0.854902, 1)
+metadata/_edit_lock_ = true
+
+[node name="Clouds" type="Node2D" parent="Environment"]
+modulate = Color(1, 1, 1, 0.792157)
+position = Vector2(-1998, -1508)
+metadata/_edit_lock_ = true
+
+[node name="Cloud1" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(764, 358)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud13" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(4005, 2983)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud5" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-152, 2723)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud6" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(3293, 936)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud2" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(85, 1505)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud16" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(3434, 3542)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud7" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(1380, 3802)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud3" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(503, 1222)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud14" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(4174, 3309)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud15" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(4695, 2800)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud8" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(152, 3383)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud4" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(164, 1669)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud9" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(328, 3474)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud10" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(933, 515)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud12" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(4570, 1222)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud11" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(3784, 345)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud17" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-2737.13, 367.814)
+scale = Vector2(1.35085, 1.15254)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud18" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-1254.92, 3539.61)
+scale = Vector2(0.898305, 0.898305)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud19" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-2912.7, 1260.29)
+scale = Vector2(1.10169, 1.10169)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud20" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-3251.5, 3437.56)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud21" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-3181.26, 3581.44)
+scale = Vector2(0.949153, 0.949153)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud22" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-420.856, 367.017)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud23" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-1493, 3040)
+scale = Vector2(0.898305, 0.898305)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud24" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-510, 2429)
+scale = Vector2(1.15254, 1.15254)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud25" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-712, 1373)
+scale = Vector2(1.10169, 1.10169)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud26" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-269, 2004)
+scale = Vector2(0.79661, 0.79661)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud27" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-1656, 2353)
+scale = Vector2(0.949153, 0.949153)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud28" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(-461, 1787)
+scale = Vector2(1.10169, 1.10169)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud29" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(3890, 2612.5)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud30" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(3832, 1394.5)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud31" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(3472, 3106)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud32" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(3095, 2689.5)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud33" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(4016, 1558.5)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud34" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(3863, 1375)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud35" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(3521.25, 3087)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud36" type="Sprite2D" parent="Environment/Clouds"]
+position = Vector2(3609.25, 3161)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud37" type="Sprite2D" parent="Environment/Clouds"]
+visible = false
+position = Vector2(3754.25, 1447)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud38" type="Sprite2D" parent="Environment/Clouds"]
+visible = false
+position = Vector2(2915.25, 2833)
+scale = Vector2(0.898305, 0.898305)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud39" type="Sprite2D" parent="Environment/Clouds"]
+visible = false
+position = Vector2(3270.25, 2207)
+texture = ExtResource("1_1blat")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="CloudsAnimationPlayer" type="AnimationPlayer" parent="Environment"]
+root_node = NodePath("../..")
+libraries = {
+"": SubResource("AnimationLibrary_an3cu")
+}
+autoplay = "float"
+
+[node name="Ground" type="Node2D" parent="Environment"]
+metadata/_edit_lock_ = true
+
+[node name="Rocks" type="Sprite2D" parent="Environment/Ground"]
+position = Vector2(986, 1264)
+texture = ExtResource("1_145kx")
+
+[node name="Floor" type="Sprite2D" parent="Environment/Ground"]
+position = Vector2(938, 568)
+texture = ExtResource("1_vifjc")
+
+[node name="Limits" type="StaticBody2D" parent="Environment"]
+metadata/_edit_lock_ = true
+
+[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Environment/Limits"]
+visible = false
+polygon = PackedVector2Array(-814, 535, -380, 190, -306, -21, 87, -46, 346, -330, 870, -373, 1115, -418, 1363, -334, 1613, -324, 1854, -225, 2208, -197, 2675, 309, 2642, 741, 2244, 1140, 1618, 1271, 1360, 1193, 865, 1423, 706, 1377, -113, 1192, -452, 1035, -488, 902, -625, 803, -734, 680, -1660, 719, -1331, 2205, 3170, 2304, 3988, 404, 2999, -1433, 131, -1364, -1715, 264, -1659, 716, -737, 676)
+metadata/_edit_lock_ = true
+
+[node name="Props" type="Node2D" parent="."]
+y_sort_enabled = true
+metadata/_edit_lock_ = true
+
+[node name="Shrooms" type="Node2D" parent="Props"]
+y_sort_enabled = true
+metadata/_edit_lock_ = true
+
+[node name="ShroomFat1" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(316, -293)
+rotation = -0.47206
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomFat3" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(889.983, -375.68)
+rotation = 0.0723415
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomRed1" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(211, -172)
+rotation = -0.554414
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed2" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(477, -354)
+rotation = -0.131447
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed3" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1069, -418)
+rotation = 0.210047
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed4" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1184, -390)
+rotation = -0.111158
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed5" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1522, -323)
+rotation = -0.111158
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed6" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1776, -257)
+rotation = 0.0517097
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed7" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2002, -212)
+rotation = -0.0711099
+scale = Vector2(1.26843, 1.26843)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomBlue1" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-18, -43)
+rotation = -0.390338
+scale = Vector2(1.27499, 1.17746)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue2" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(653, -364)
+rotation = -0.390338
+scale = Vector2(1.27499, 1.17746)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue3" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1251, -379)
+rotation = -0.0470768
+scale = Vector2(1.27499, 1.17746)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue4" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1357, -339)
+rotation = 0.382315
+scale = Vector2(1.27499, 1.17746)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue5" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2188, -215)
+rotation = 0.177698
+scale = Vector2(1.27499, 1.17746)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomThinFlip1" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(451.932, -348.31)
+rotation = -3.01653
+scale = Vector2(0.729666, -0.765873)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThinFlip2" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1324, -351)
+rotation = -2.73344
+scale = Vector2(0.729666, -0.765873)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThinFlip3" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2151.93, -234.31)
+rotation = -3.0381
+scale = Vector2(0.729666, -0.765873)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomFat2" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1901.98, -226.68)
+rotation = -0.202467
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomYellow1" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(53, -53)
+rotation = 0.0837674
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow2" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(283, -266)
+rotation = -0.486485
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow4" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1009, -410)
+rotation = 0.0837674
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow5" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1632, -326)
+rotation = -0.179329
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow6" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1668, -313)
+rotation = 0.49724
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow7" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2082, -232)
+rotation = -0.300902
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomThin2" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-112.5, -30.0442)
+rotation = -0.0993826
+scale = Vector2(0.762573, 0.762573)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin3" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(104, -70)
+rotation = 0.0063462
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin4" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(202.5, -223.044)
+rotation = -0.108585
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin5" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(381.5, -325.044)
+rotation = -0.027
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin6" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(542.5, -367.044)
+rotation = -0.027
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin7" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(790.5, -372.044)
+rotation = 0.336266
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin8" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1266, -377)
+rotation = 0.481942
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin9" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1436.5, -326.044)
+rotation = -0.0734592
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin10" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1666.5, -292.044)
+rotation = -0.106563
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomRed8" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2289, -167)
+rotation = 0.0517097
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomThin1" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-122, -58)
+rotation = 0.434625
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin11" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2088.5, -233.044)
+rotation = -0.0820285
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin12" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-800, 471)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin13" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-457, 62)
+rotation = -0.368511
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin14" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-350.5, -23.0442)
+rotation = 0.348356
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThinFlip4" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-660.068, 388.69)
+rotation = -3.01653
+scale = Vector2(0.729666, -0.765873)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomFat4" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-819, 547)
+rotation = -0.338786
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomFat5" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-510, 252)
+rotation = -0.121513
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomFat6" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-192, -54)
+rotation = -0.182008
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomBlue6" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-713, 715)
+rotation = -0.434928
+scale = Vector2(1.11803, 1.02553)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue7" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-724, 448)
+rotation = 0.0185129
+scale = Vector2(1.27499, 1.17746)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue8" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-405, -1.00002)
+rotation = 0.0185129
+scale = Vector2(1.08529, 0.99636)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomRed9" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-725, 776)
+rotation = -0.737596
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomYellow3" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-601, 352)
+rotation = 0.0245847
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow8" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-394, 213)
+rotation = 0.304539
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow9" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-297, -12)
+rotation = 0.0245847
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomThin15" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-472, 2)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomYellow10" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2302, -93.9999)
+rotation = 0.443771
+scale = Vector2(1.48644, 1.42174)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomFat7" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2673, 269)
+rotation = 0.249999
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomFat8" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2408.98, -10.6802)
+rotation = 0.249999
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomRed10" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2673, 603)
+rotation = -0.205529
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed11" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2457, 62.9999)
+rotation = 0.133289
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomThinFlip5" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2758.93, 383.69)
+rotation = -2.72375
+scale = Vector2(0.729666, -0.765873)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomYellow11" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2680, 496)
+rotation = 0.443771
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow12" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2502, 122)
+rotation = 0.443771
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomRed12" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2558, 184)
+rotation = 0.439175
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomBlue9" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2721, 315)
+rotation = 0.0185129
+scale = Vector2(1.27499, 1.17746)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomThin16" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2610, 225)
+rotation = -0.321984
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin17" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2387.5, 11.9558)
+rotation = -0.0440143
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomRed13" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-556, 849)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed14" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(770, 1513)
+rotation = 0.159869
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed15" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1349, 1241)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed16" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1261, 1284)
+rotation = -0.542647
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed17" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2312, 1116)
+rotation = -0.294691
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomRed18" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2508, 864)
+rotation = -0.259673
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -124)
+region_enabled = true
+region_rect = Rect2(667.382, 0, 217.218, 259.018)
+
+[node name="ShroomYellow13" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-503, 876)
+rotation = 0.218248
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow14" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(58, 1208)
+rotation = 0.116333
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow15" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(529, 1365)
+rotation = 0.0404178
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow16" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(934, 1419)
+rotation = -0.0691034
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow17" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1605.04, 1336.65)
+rotation = -0.0585388
+scale = Vector2(1, 1.00276)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow18" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1943, 1282)
+rotation = 0.0341268
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomYellow19" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2631, 819)
+rotation = -0.0863327
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomFat9" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-379, 1132)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomThinFlip6" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-583, 1039)
+rotation = -2.70279
+scale = Vector2(0.729666, -0.765873)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThinFlip7" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(168.932, 1262.69)
+rotation = -2.70279
+scale = Vector2(0.729666, -0.765873)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThinFlip8" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(903.932, 1420.69)
+rotation = -3.09863
+scale = Vector2(0.729666, -0.765873)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThinFlip9" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1684.93, 1303.69)
+rotation = -3.09863
+scale = Vector2(0.729666, -0.765873)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin18" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-277.5, 1192.96)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin19" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(104.5, 1254.96)
+rotation = 0.328221
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin20" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(673, 1509)
+rotation = 0.388862
+scale = Vector2(0.799106, 0.799106)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomFat10" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-683.017, 859.32)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomFat11" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(357.983, 1353.32)
+rotation = -0.210709
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomFat12" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1047, 1369)
+rotation = 0.0773245
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomFat13" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1796.98, 1283.32)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomFat14" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2416, 1002)
+rotation = -0.543407
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -118)
+region_enabled = true
+region_rect = Rect2(364.026, 0, 303.355, 246.522)
+
+[node name="ShroomThin21" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(446.5, 1378.96)
+rotation = 0.388862
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin22" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1842, 1288)
+rotation = 0.47074
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin23" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2473, 905)
+rotation = -0.509121
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin24" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2570.5, 827.956)
+rotation = -0.0398957
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomBlue10" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-80, 1198)
+rotation = -0.110138
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue11" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-231, 1209)
+rotation = 0.335187
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue12" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(638, 1380)
+rotation = -0.110138
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue13" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1454, 1249)
+rotation = -0.110138
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue14" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2203, 1198)
+rotation = -0.110138
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue15" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2100, 1241)
+rotation = -0.440792
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomBlue16" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2712, 770)
+rotation = -0.0419129
+scale = Vector2(1.27499, 1.17746)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -115)
+region_enabled = true
+region_rect = Rect2(175.8, 0, 188.1, 246.522)
+
+[node name="ShroomThinFlip10" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2238.93, 1162.69)
+rotation = 2.58643
+scale = Vector2(0.729666, -0.765873)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin25" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(2136.5, 1225.96)
+rotation = -0.0459579
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin26" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(1512, 1310)
+rotation = -0.223667
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomThin27" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-12.5, 1227.96)
+rotation = -0.194346
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomYellow20" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-577, 977)
+rotation = -0.196464
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="ShroomThin28" type="Sprite2D" parent="Props/Shrooms"]
+position = Vector2(-645, 1030)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -110)
+region_enabled = true
+region_rect = Rect2(886.896, 0, 99.9249, 222.903)
+
+[node name="ShroomYellow21" type="Sprite2D" parent="Props/Shrooms"]
+y_sort_enabled = true
+position = Vector2(731, -360)
+rotation = 0.0837674
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -116)
+region_enabled = true
+region_rect = Rect2(-0.296913, 2.76804, 172.051, 239.67)
+
+[node name="Grass" type="Node2D" parent="Props"]
+y_sort_enabled = true
+metadata/_edit_lock_ = true
+
+[node name="Grass1" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-438, -25)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass2" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-356, -28)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass3" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-210, -64)
+rotation = -0.191355
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass4" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-279, -60)
+rotation = -0.351512
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass5" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-140, -66)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass6" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-76, -63)
+rotation = 0.150085
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass7" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-6, -64)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass8" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(51, -70)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass9" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(105, -82)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass10" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(162, -106)
+rotation = -0.447914
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass11" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(178, -174)
+rotation = -0.826729
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass12" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(209, -232)
+rotation = -0.708204
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass13" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(241, -276)
+rotation = -0.614925
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass14" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(334, -323)
+rotation = -0.476317
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass15" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(385, -352)
+rotation = -0.3282
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass16" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(441, -376)
+rotation = -0.219466
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass17" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(513, -388)
+rotation = -0.0260885
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass18" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(571, -394)
+rotation = 0.123957
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass19" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(627.224, -381.064)
+rotation = 0.0929263
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass20" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(692, -382)
+rotation = 0.10344
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass21" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(760, -376)
+rotation = 0.000137895
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass22" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(813, -380)
+rotation = 0.193515
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass23" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(863, -394)
+rotation = 0.0942186
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass24" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(953, -417)
+rotation = -0.108891
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass25" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1025, -436)
+rotation = -0.219926
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass26" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1090, -444)
+rotation = -0.0691996
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass27" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1148, -438)
+rotation = 0.0942186
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass28" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1206, -419)
+rotation = 0.325109
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass29" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1288, -387)
+rotation = 0.372396
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass30" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1341, -367)
+rotation = 0.4261
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass31" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1392.22, -349.064)
+rotation = 0.248156
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass32" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1470, -345)
+rotation = 0.140579
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass33" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1537, -344)
+rotation = 0.151143
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass34" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1603, -342)
+rotation = 0.101008
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass35" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1659, -336)
+rotation = 0.248156
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass36" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1719, -319)
+rotation = 0.28446
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass37" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1781.22, -292.064)
+rotation = 0.440044
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass38" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1842.22, -257.064)
+rotation = 0.352407
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass39" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1915, -248)
+rotation = 0.342354
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass40" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1987, -236)
+rotation = 0.0942217
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass41" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2063, -246)
+rotation = 0.0141966
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass42" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2133, -247)
+rotation = 0.107299
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass43" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2205, -237)
+rotation = 0.352407
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass44" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2271.22, -219.064)
+rotation = 0.342354
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass45" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2301, -137)
+rotation = 0.940869
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass46" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2351, -42)
+rotation = 0.458519
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass47" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2442, -4)
+rotation = 0.3067
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass48" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2491, 36.0001)
+rotation = 0.534738
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass49" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2517.19, 77.2042)
+rotation = 0.830507
+scale = Vector2(1.00312, 1)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass50" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2575, 147)
+rotation = 0.976222
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass51" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2552, 127)
+rotation = 0.668316
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass52" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2618, 199)
+rotation = 0.534738
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass53" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2711, 264)
+rotation = 0.830507
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass54" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-368, 174)
+rotation = -0.456926
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass55" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-443, 208)
+rotation = -0.199051
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass56" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-496, 229)
+rotation = -0.456926
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass57" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-593, 303)
+rotation = -0.456926
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass58" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-652, 357)
+rotation = -0.456926
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass59" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-698.776, 402.936)
+rotation = -0.456926
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass60" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-771, 447)
+rotation = -0.456926
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass61" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-801, 488)
+rotation = -0.986285
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass62" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2713, 523)
+rotation = -0.236838
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass63" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2723, 333)
+rotation = -0.0377601
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass74" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-528, 883)
+rotation = 0.425283
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass75" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-567, 879)
+rotation = -0.145538
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass76" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-618, 878)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass77" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-702, 875)
+rotation = -0.136894
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass78" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-640, 870)
+rotation = 0.0992107
+scale = Vector2(0.89227, 0.890196)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass73" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2726, 803)
+rotation = -0.177835
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass72" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2687.59, 820.894)
+rotation = -0.335356
+scale = Vector2(0.996004, 0.997321)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass71" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2635, 831)
+rotation = -0.335356
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass70" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2584, 850)
+rotation = -0.335356
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass69" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2534, 878)
+rotation = -0.335356
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass68" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2485, 937)
+rotation = -0.335356
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass67" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2472, 984)
+rotation = -0.335356
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass66" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2442, 1015)
+rotation = -0.335356
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass65" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2404, 1033)
+rotation = -0.335356
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass64" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2357, 1063)
+rotation = -0.419734
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass79" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2328, 1128)
+rotation = -0.449816
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass80" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2321, 1180)
+rotation = -0.194528
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass81" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2309, 1201)
+rotation = -0.24821
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass82" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2283, 1232)
+rotation = -0.335356
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass83" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2231, 1246)
+rotation = -0.0390497
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass84" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2172, 1251)
+rotation = -0.0459226
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass85" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2116, 1252)
+rotation = -0.140489
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass86" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2062, 1263)
+rotation = -0.295208
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass87" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(2011, 1282)
+rotation = -0.261242
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass88" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1964, 1309)
+rotation = -0.138799
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass89" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1906, 1315)
+rotation = 0.0341306
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass90" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1857, 1309)
+rotation = -0.00321719
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass91" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1795, 1307)
+rotation = -0.0304235
+scale = Vector2(0.994353, 0.99967)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass92" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1639, 1358)
+rotation = -0.250016
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass93" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1563, 1353)
+rotation = 0.257884
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass94" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1739, 1322)
+rotation = -0.22541
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass95" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1691, 1341)
+rotation = -0.244855
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass96" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1506, 1318)
+rotation = 0.717251
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass97" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1466, 1276)
+rotation = 0.644911
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass98" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1425, 1259)
+rotation = 0.0565641
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass99" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1366, 1265)
+rotation = -0.149705
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass100" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1308, 1292)
+rotation = -0.153005
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass101" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1255, 1311)
+rotation = 0.0565641
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass102" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1137, 1337)
+rotation = 0.0565641
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass103" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1096, 1376)
+rotation = -0.369265
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass104" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1051, 1418)
+rotation = -0.358503
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass105" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(947, 1450)
+rotation = -0.124099
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass106" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(988, 1444)
+rotation = 0.0565641
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass107" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(1203, 1319)
+rotation = -0.10731
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass108" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(851, 1493)
+rotation = -0.241176
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass109" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(894, 1462)
+rotation = -0.0791258
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass110" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(823, 1532)
+rotation = -0.36178
+scale = Vector2(0.896039, 0.929433)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass111" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(778, 1556)
+rotation = -0.183817
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass112" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(711, 1555)
+rotation = 0.23761
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass113" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(661, 1543)
+rotation = 0.23761
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass114" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(678, 1421)
+rotation = 0.450015
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass115" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(653, 1408)
+rotation = 0.246509
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass116" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(603, 1405)
+rotation = -0.0914229
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass117" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(547, 1414)
+rotation = -0.119099
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass118" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(489, 1402)
+rotation = 0.450015
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass119" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(436, 1385)
+rotation = 0.305517
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass120" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(395, 1383)
+rotation = -0.203084
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass121" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(352, 1390)
+rotation = -0.194154
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass122" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(257, 1351)
+rotation = 0.488442
+scale = Vector2(0.984626, 0.967626)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass123" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(288, 1385)
+rotation = 0.450015
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass124" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(221, 1329)
+rotation = 0.132079
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass125" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(174, 1314)
+rotation = 0.346821
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass126" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(133, 1299)
+rotation = 0.450015
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass127" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(88, 1271)
+rotation = 0.450015
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass128" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(44.224, 1260.94)
+rotation = 0.0963627
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass129" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-4.776, 1248.94)
+rotation = 0.0963627
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass130" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-52.776, 1239.94)
+rotation = 0.0963627
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass131" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-113, 1228)
+rotation = 0.0963627
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass132" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-168, 1233)
+rotation = -0.0568394
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass133" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-225, 1238)
+rotation = 0.0963627
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass134" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-281, 1225)
+rotation = 0.599394
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass135" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-313, 1160)
+rotation = -0.539764
+scale = Vector2(0.920388, 0.98772)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass136" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-366, 1176)
+rotation = 0.109422
+scale = Vector2(0.936615, 0.872008)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass137" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-423, 1151)
+rotation = 0.527011
+scale = Vector2(0.824352, 0.816612)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass138" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-471, 1133)
+rotation = 0.452393
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass139" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-541, 1058)
+rotation = 0.138139
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass140" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-590, 1054)
+rotation = -0.110402
+scale = Vector2(0.845736, 0.853483)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
+
+[node name="Grass141" type="Sprite2D" parent="Props/Grass"]
+position = Vector2(-642, 1052)
+texture = ExtResource("2_kesm7")
+offset = Vector2(0, -42)
+region_enabled = true
+region_rect = Rect2(996.053, 4.65938, 177.044, 92.8809)
diff --git a/demo/scenes/base/clouds.tscn b/demo/scenes/base/clouds.tscn
new file mode 100644
index 0000000..331faa6
--- /dev/null
+++ b/demo/scenes/base/clouds.tscn
@@ -0,0 +1,256 @@
+[gd_scene load_steps=2 format=3 uid="uid://dt2jlrqffpyw"]
+
+[ext_resource type="Texture2D" uid="uid://65b6yuobhxf8" path="res://demo/assets/env_clouds.png" id="1_eigiy"]
+
+[node name="Clouds" type="Node2D"]
+modulate = Color(1, 1, 1, 0.792157)
+position = Vector2(-1998, -1508)
+metadata/_edit_lock_ = true
+
+[node name="Cloud1" type="Sprite2D" parent="."]
+position = Vector2(764, 358)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud13" type="Sprite2D" parent="."]
+position = Vector2(4005, 2983)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud5" type="Sprite2D" parent="."]
+position = Vector2(-152, 2723)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud6" type="Sprite2D" parent="."]
+position = Vector2(3293, 936)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud2" type="Sprite2D" parent="."]
+position = Vector2(85, 1505)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud16" type="Sprite2D" parent="."]
+position = Vector2(3434, 3542)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud7" type="Sprite2D" parent="."]
+position = Vector2(1380, 3802)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud3" type="Sprite2D" parent="."]
+position = Vector2(503, 1222)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud14" type="Sprite2D" parent="."]
+position = Vector2(4174, 3309)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud15" type="Sprite2D" parent="."]
+position = Vector2(4695, 2800)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud8" type="Sprite2D" parent="."]
+position = Vector2(152, 3383)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud4" type="Sprite2D" parent="."]
+position = Vector2(164, 1669)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud9" type="Sprite2D" parent="."]
+position = Vector2(328, 3474)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud10" type="Sprite2D" parent="."]
+position = Vector2(933, 515)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud12" type="Sprite2D" parent="."]
+position = Vector2(4570, 1222)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud11" type="Sprite2D" parent="."]
+position = Vector2(3784, 345)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud17" type="Sprite2D" parent="."]
+position = Vector2(-2737.13, 367.814)
+scale = Vector2(1.35085, 1.15254)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud18" type="Sprite2D" parent="."]
+position = Vector2(-1254.92, 3539.61)
+scale = Vector2(0.898305, 0.898305)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud19" type="Sprite2D" parent="."]
+position = Vector2(-2912.7, 1260.29)
+scale = Vector2(1.10169, 1.10169)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud20" type="Sprite2D" parent="."]
+position = Vector2(-3251.5, 3437.56)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud21" type="Sprite2D" parent="."]
+position = Vector2(-3181.26, 3581.44)
+scale = Vector2(0.949153, 0.949153)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud22" type="Sprite2D" parent="."]
+position = Vector2(-420.856, 367.017)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud23" type="Sprite2D" parent="."]
+position = Vector2(-1493, 3040)
+scale = Vector2(0.898305, 0.898305)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud24" type="Sprite2D" parent="."]
+position = Vector2(-510, 2429)
+scale = Vector2(1.15254, 1.15254)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud25" type="Sprite2D" parent="."]
+position = Vector2(-712, 1373)
+scale = Vector2(1.10169, 1.10169)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud26" type="Sprite2D" parent="."]
+position = Vector2(-269, 2004)
+scale = Vector2(0.79661, 0.79661)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud27" type="Sprite2D" parent="."]
+position = Vector2(-1656, 2353)
+scale = Vector2(0.949153, 0.949153)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud28" type="Sprite2D" parent="."]
+position = Vector2(-461, 1787)
+scale = Vector2(1.10169, 1.10169)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud29" type="Sprite2D" parent="."]
+position = Vector2(3890, 2612.5)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud30" type="Sprite2D" parent="."]
+position = Vector2(3832, 1394.5)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud31" type="Sprite2D" parent="."]
+position = Vector2(3472, 3106)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud32" type="Sprite2D" parent="."]
+position = Vector2(3095, 2689.5)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud33" type="Sprite2D" parent="."]
+position = Vector2(4016, 1558.5)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud34" type="Sprite2D" parent="."]
+position = Vector2(3863, 1375)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(12, 7, 455, 168)
+
+[node name="Cloud35" type="Sprite2D" parent="."]
+position = Vector2(3521.25, 3087)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud36" type="Sprite2D" parent="."]
+position = Vector2(3609.25, 3161)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(507, 7, 193, 88)
+
+[node name="Cloud37" type="Sprite2D" parent="."]
+visible = false
+position = Vector2(3754.25, 1447)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(501, 99, 210, 92)
+
+[node name="Cloud38" type="Sprite2D" parent="."]
+visible = false
+position = Vector2(2915.25, 2833)
+scale = Vector2(0.898305, 0.898305)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
+
+[node name="Cloud39" type="Sprite2D" parent="."]
+visible = false
+position = Vector2(3270.25, 2207)
+texture = ExtResource("1_eigiy")
+region_enabled = true
+region_rect = Rect2(10, 189, 644, 165)
diff --git a/demo/scenes/base/code_edit.gd b/demo/scenes/base/code_edit.gd
new file mode 100644
index 0000000..5416996
--- /dev/null
+++ b/demo/scenes/base/code_edit.gd
@@ -0,0 +1,140 @@
+#*
+#* code_edit.gd
+#* =============================================================================
+#* Copyright 2024 Serhii Snitsaruk
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+
+extends CodeEdit
+
+const RESERVED_WORDS := [
+ # Control flow.
+ "break",
+ "continue",
+ "elif",
+ "else",
+ "for",
+ "if",
+ "match",
+ "pass",
+ "return",
+ "when",
+ "while",
+ # Declarations.
+ "class",
+ "class_name",
+ "const",
+ "enum",
+ "extends",
+ "func",
+ "namespace",
+ "signal",
+ "static",
+ "trait",
+ "var",
+ # Other keywords.
+ "await",
+ "breakpoint",
+ "self",
+ "super",
+ "yield",
+ # Operators.
+ "and",
+ "as",
+ "in",
+ "is",
+ "not",
+ "or",
+ # Special values.
+ "false",
+ "null",
+ "true",
+ # Constants.
+ "INF",
+ "NAN",
+ "PI",
+ "TAU",
+ # Functions.
+ "assert",
+ "preload",
+]
+
+const TYPE_WORDS := [
+ "bool",
+ "int",
+ "float",
+ "void",
+ "String",
+ "Vector2",
+ "Vector2i",
+ "Rect2",
+ "Rect2i",
+ "Vector3",
+ "Vector3i",
+ "Transform2D",
+ "Vector4",
+ "Vector4i",
+ "Plane",
+ "Quaternion",
+ "AABB",
+ "Basis",
+ "Transform3D",
+ "Projection",
+ "Color",
+ "StringName",
+ "NodePath",
+ "RID",
+ "Callable",
+ "Signal",
+ "Dictionary",
+ "Array",
+ "PackedByteArray",
+ "PackedInt32Array",
+ "PackedInt64Array",
+ "PackedFloat32Array",
+ "PackedFloat64Array",
+ "PackedStringArray",
+ "PackedVector2Array",
+ "PackedVector3Array",
+ "PackedColorArray",
+ # Other types
+ "Status",
+]
+
+
+func _ready() -> void:
+ var highlighter := CodeHighlighter.new()
+ syntax_highlighter = highlighter
+ highlighter.number_color = Color.AQUAMARINE
+ highlighter.symbol_color = Color.CORNFLOWER_BLUE
+ highlighter.function_color = Color.DEEP_SKY_BLUE
+ highlighter.member_variable_color = Color.LIGHT_BLUE
+
+ # Engine types
+ for c in ClassDB.get_class_list():
+ syntax_highlighter.add_keyword_color(c, Color.AQUAMARINE)
+
+ syntax_highlighter.add_color_region("#", "", Color.DIM_GRAY, true)
+ syntax_highlighter.add_color_region("@", " ", Color.GOLDENROD)
+ syntax_highlighter.add_color_region("\"", "\"", Color.GOLD)
+
+ for keyword in RESERVED_WORDS:
+ syntax_highlighter.add_keyword_color(keyword, Color.INDIAN_RED)
+
+ for typeword in TYPE_WORDS:
+ syntax_highlighter.add_keyword_color(typeword, Color.AQUAMARINE)
+
+
+func set_source_code(source_code: String) -> void:
+ # Hide license header
+ var idx: int = source_code.find("#*")
+ while idx != - 1:
+ source_code = source_code.substr(0, idx) + source_code.substr(source_code.findn("\n", idx) + 1)
+ idx = source_code.findn("#*", idx)
+
+ text = "" # Workaround
+ text = source_code
diff --git a/demo/scenes/base/toggle_fullscreen.gd b/demo/scenes/base/toggle_fullscreen.gd
new file mode 100644
index 0000000..172889a
--- /dev/null
+++ b/demo/scenes/base/toggle_fullscreen.gd
@@ -0,0 +1,18 @@
+extends Button
+
+
+func _ready() -> void:
+ pressed.connect(_toggle_fullscreen)
+
+ # Set scaling properties and base resolution
+ get_window().mode = Window.MODE_FULLSCREEN
+ get_window().content_scale_aspect = Window.CONTENT_SCALE_ASPECT_KEEP
+ get_window().content_scale_mode = Window.CONTENT_SCALE_MODE_CANVAS_ITEMS
+ get_window().content_scale_size = Vector2i(1920,1080)
+
+
+func _toggle_fullscreen() -> void:
+ if get_window().mode != Window.MODE_FULLSCREEN:
+ get_window().mode = Window.MODE_FULLSCREEN
+ else:
+ get_window().mode = Window.MODE_MAXIMIZED
diff --git a/demo/scenes/game.gd b/demo/scenes/game.gd
new file mode 100644
index 0000000..0fbcd77
--- /dev/null
+++ b/demo/scenes/game.gd
@@ -0,0 +1,84 @@
+extends Node2D
+
+const Simple := preload("res://demo/agents/01_agent_melee_simple.tscn")
+const Charger := preload("res://demo/agents/02_agent_charger.tscn")
+const Imp := preload("res://demo/agents/03_agent_imp.tscn")
+const Skirmisher := preload("res://demo/agents/04_agent_skirmisher.tscn")
+const Ranged := preload("res://demo/agents/05_agent_ranged.tscn")
+const Combo := preload("res://demo/agents/06_agent_melee_combo.tscn")
+const Nuanced := preload("res://demo/agents/07_agent_melee_nuanced.tscn")
+const Demon := preload("res://demo/agents/08_agent_demon.tscn")
+const Summoner := preload("res://demo/agents/09_agent_summoner.tscn")
+
+const WAVES: Array = [
+ [Simple, Simple, Nuanced],
+ [Simple, Nuanced, Charger],
+ [Simple, Simple, Simple, Ranged, Nuanced],
+ [Simple, Simple, Summoner],
+ [Ranged, Skirmisher, Nuanced, Simple, Simple],
+ [Nuanced, Nuanced, Combo, Ranged, Simple],
+ [Demon, Charger, Simple, Simple, Simple, Skirmisher],
+ [Demon, Demon, Nuanced, Combo],
+ [Summoner, Ranged, Nuanced, Nuanced, Ranged, Skirmisher, Simple],
+ [Demon, Demon, Summoner, Skirmisher, Nuanced, Nuanced, Combo],
+]
+
+@export var wave_index: int = -1
+@export var agents_alive: int = 0
+
+@onready var gong: StaticBody2D = $Gong
+@onready var player: CharacterBody2D = $Player
+@onready var spawn_points: Node2D = $SpawnPoints
+@onready var hp_bar: TextureProgressBar = %HPBar
+@onready var round_counter: Label = %RoundCounter
+
+
+func _ready() -> void:
+ hp_bar.max_value = player.get_health().max_health
+ player.get_health().damaged.connect(func(_a,_b): hp_bar.value = player.get_health().get_current())
+ player.death.connect(_on_player_death)
+
+
+func _update_round_counter() -> void:
+ round_counter.text = "Round %s/%s" % [wave_index + 1, WAVES.size()]
+
+
+func _on_gong_gong_struck() -> void:
+ _start_round()
+
+
+func _start_round() -> void:
+ wave_index += 1
+ if wave_index >= WAVES.size():
+ player.set_victorious()
+ round_counter.text = "Victorious!"
+ return
+
+ await get_tree().create_timer(3.0).timeout
+ _update_round_counter()
+
+ var spawns: Array = spawn_points.get_children()
+ spawns.shuffle()
+ for i in WAVES[wave_index].size():
+ var agent_resource: PackedScene = WAVES[wave_index][i]
+ var agent: CharacterBody2D = agent_resource.instantiate()
+ add_child(agent)
+ agent.global_position = spawns[i].global_position
+ agent.death.connect(_on_agent_death)
+ agent.play_summoning_effect()
+ agents_alive += 1
+
+
+func _on_agent_death() -> void:
+ agents_alive -= 1
+ if agents_alive == 0:
+ _start_round()
+
+
+func _on_player_death() -> void:
+ await get_tree().create_timer(3.0).timeout
+ get_tree().reload_current_scene()
+
+
+func _on_switch_to_showcase_pressed() -> void:
+ get_tree().change_scene_to_file("res://demo/scenes/showcase.tscn")
diff --git a/demo/scenes/game.tscn b/demo/scenes/game.tscn
new file mode 100644
index 0000000..25a1f35
--- /dev/null
+++ b/demo/scenes/game.tscn
@@ -0,0 +1,196 @@
+[gd_scene load_steps=15 format=3 uid="uid://clyhgbpfpmtw7"]
+
+[ext_resource type="Script" path="res://demo/scenes/game.gd" id="1_qw71e"]
+[ext_resource type="Theme" uid="uid://boqtjf88xcpu4" path="res://demo/assets/ui.theme" id="2_r21q3"]
+[ext_resource type="Texture2D" uid="uid://tyu0ua1ju38l" path="res://demo/assets/logo.png" id="3_g0us4"]
+[ext_resource type="FontFile" uid="uid://d25vkmce7mhlt" path="res://demo/assets/fonts/knewave_regular.ttf" id="4_w0vii"]
+[ext_resource type="Script" path="res://demo/scenes/base/toggle_fullscreen.gd" id="5_m16ov"]
+[ext_resource type="Texture2D" uid="uid://dlw15foygohrk" path="res://demo/assets/hp_under.png" id="6_622dk"]
+[ext_resource type="Texture2D" uid="uid://cls8jtnu413o8" path="res://demo/assets/hp_over.png" id="7_430mt"]
+[ext_resource type="Texture2D" uid="uid://hnwi23oef752" path="res://demo/assets/hp_bar.png" id="8_invih"]
+[ext_resource type="PackedScene" uid="uid://bsig1usigbbuy" path="res://demo/scenes/base/arena.tscn" id="9_k3uu1"]
+[ext_resource type="PackedScene" uid="uid://bpd1wmw2f7bvg" path="res://demo/props/gong.tscn" id="10_tftjb"]
+[ext_resource type="PackedScene" uid="uid://d07ag5dcje13i" path="res://demo/agents/player/player.tscn" id="11_bndob"]
+
+[sub_resource type="LabelSettings" id="LabelSettings_qvxvp"]
+font = ExtResource("4_w0vii")
+font_size = 33
+outline_size = 11
+outline_color = Color(0.258915, 0.234974, 0.191974, 1)
+
+[sub_resource type="LabelSettings" id="LabelSettings_628x3"]
+font = ExtResource("4_w0vii")
+font_size = 36
+font_color = Color(1, 1, 0.239216, 1)
+outline_size = 20
+outline_color = Color(0.211521, 0.23888, 0.290166, 1)
+
+[sub_resource type="LabelSettings" id="LabelSettings_grcwx"]
+font = ExtResource("4_w0vii")
+font_size = 37
+outline_size = 12
+outline_color = Color(0.317525, 0.344884, 0.388373, 1)
+
+[node name="Game" type="Node2D"]
+y_sort_enabled = true
+script = ExtResource("1_qw71e")
+
+[node name="UI Layer" type="CanvasLayer" parent="."]
+
+[node name="Control" type="Control" parent="UI Layer"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+theme = ExtResource("2_r21q3")
+
+[node name="Toolbar" type="PanelContainer" parent="UI Layer/Control"]
+custom_minimum_size = Vector2(0, 54.26)
+layout_mode = 1
+anchors_preset = 10
+anchor_right = 1.0
+offset_bottom = 64.0
+grow_horizontal = 2
+
+[node name="HBoxContainer" type="HBoxContainer" parent="UI Layer/Control/Toolbar"]
+layout_mode = 2
+theme_override_constants/separation = 4
+
+[node name="ToggleFullscreen" type="Button" parent="UI Layer/Control/Toolbar/HBoxContainer"]
+layout_mode = 2
+focus_mode = 0
+theme_override_fonts/font = ExtResource("4_w0vii")
+theme_override_font_sizes/font_size = 22
+text = "Toggle Fullscreen"
+script = ExtResource("5_m16ov")
+
+[node name="Switch to Showcase" type="Button" parent="UI Layer/Control/Toolbar/HBoxContainer"]
+layout_mode = 2
+focus_mode = 0
+theme_override_fonts/font = ExtResource("4_w0vii")
+theme_override_font_sizes/font_size = 22
+text = "Switch to Showcase
+"
+
+[node name="RoundCounter" type="Label" parent="UI Layer/Control/Toolbar/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 6
+text = "Strike the Gong to begin!"
+label_settings = SubResource("LabelSettings_qvxvp")
+
+[node name="HPBar" type="TextureProgressBar" parent="UI Layer/Control/Toolbar/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+value = 100.0
+texture_under = ExtResource("6_622dk")
+texture_over = ExtResource("7_430mt")
+texture_progress = ExtResource("8_invih")
+
+[node name="Logo" type="TextureRect" parent="UI Layer/Control"]
+layout_mode = 1
+anchors_preset = 3
+anchor_left = 1.0
+anchor_top = 1.0
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_left = -1899.0
+offset_top = -130.0
+offset_right = -1643.0
+offset_bottom = -45.0
+grow_horizontal = 0
+grow_vertical = 0
+texture = ExtResource("3_g0us4")
+
+[node name="Demo project" type="Label" parent="UI Layer/Control/Logo"]
+layout_mode = 1
+anchors_preset = 3
+anchor_left = 1.0
+anchor_top = 1.0
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_left = -316.0
+offset_top = -72.0
+offset_right = 13.0
+offset_bottom = 74.0
+grow_horizontal = 0
+grow_vertical = 0
+text = "demo project"
+label_settings = SubResource("LabelSettings_628x3")
+horizontal_alignment = 2
+vertical_alignment = 1
+
+[node name="Keys" type="Label" parent="UI Layer/Control"]
+layout_mode = 1
+anchors_preset = 3
+anchor_left = 1.0
+anchor_top = 1.0
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_left = -336.0
+offset_top = -208.0
+offset_right = -18.0
+offset_bottom = -25.0
+grow_horizontal = 0
+grow_vertical = 0
+text = "Move WASD
+Dodge SPACE
+Attack ENTER / F
+"
+label_settings = SubResource("LabelSettings_grcwx")
+
+[node name="Arena" parent="." instance=ExtResource("9_k3uu1")]
+metadata/_edit_lock_ = true
+
+[node name="Gong" parent="." instance=ExtResource("10_tftjb")]
+position = Vector2(923, -21)
+
+[node name="Player" parent="." instance=ExtResource("11_bndob")]
+position = Vector2(843, 455)
+
+[node name="Camera2D" type="Camera2D" parent="Player"]
+position = Vector2(0, -100)
+zoom = Vector2(0.88, 0.88)
+process_callback = 0
+position_smoothing_enabled = true
+drag_horizontal_enabled = true
+drag_vertical_enabled = true
+drag_top_margin = 0.1
+drag_bottom_margin = 0.1
+
+[node name="SpawnPoints" type="Node2D" parent="."]
+
+[node name="SpawnPosition1" type="Marker2D" parent="SpawnPoints"]
+position = Vector2(512, -180)
+
+[node name="SpawnPosition2" type="Marker2D" parent="SpawnPoints"]
+position = Vector2(1421, -150)
+
+[node name="SpawnPosition3" type="Marker2D" parent="SpawnPoints"]
+position = Vector2(1512, 300)
+
+[node name="SpawnPosition4" type="Marker2D" parent="SpawnPoints"]
+position = Vector2(2264, 345)
+
+[node name="SpawnPosition5" type="Marker2D" parent="SpawnPoints"]
+position = Vector2(1655, 789)
+
+[node name="SpawnPosition6" type="Marker2D" parent="SpawnPoints"]
+position = Vector2(823, 826)
+
+[node name="SpawnPosition7" type="Marker2D" parent="SpawnPoints"]
+position = Vector2(67, 648)
+
+[node name="SpawnPosition8" type="Marker2D" parent="SpawnPoints"]
+position = Vector2(-399, 434)
+
+[node name="SpawnPosition9" type="Marker2D" parent="SpawnPoints"]
+position = Vector2(629, 417)
+
+[node name="SpawnPosition10" type="Marker2D" parent="SpawnPoints"]
+position = Vector2(1859, 3)
+
+[connection signal="pressed" from="UI Layer/Control/Toolbar/HBoxContainer/Switch to Showcase" to="." method="_on_switch_to_showcase_pressed"]
+[connection signal="gong_struck" from="Gong" to="." method="_on_gong_gong_struck"]
diff --git a/demo/scenes/showcase.gd b/demo/scenes/showcase.gd
new file mode 100644
index 0000000..2b09558
--- /dev/null
+++ b/demo/scenes/showcase.gd
@@ -0,0 +1,156 @@
+#*
+#* showcase.gd
+#* =============================================================================
+#* Copyright 2024 Serhii Snitsaruk
+#*
+#* Use of this source code is governed by an MIT-style
+#* license that can be found in the LICENSE file or at
+#* https://opensource.org/licenses/MIT.
+#* =============================================================================
+#*
+
+extends Node2D
+
+@onready var behavior_tree_view: BehaviorTreeView = %BehaviorTreeView
+@onready var camera: Camera2D = $Camera2D
+@onready var agent_selection: MenuButton = %AgentSelection
+@onready var previous: Button = %Previous
+@onready var next: Button = %Next
+@onready var minimize_description: Button = %MinimizeDescription
+@onready var description: RichTextLabel = %Description
+@onready var begin_tutorial: Button = %BeginTutorial
+@onready var navigation_hint: Label = %NavigationHint
+@onready var scene_title: Label = %SceneTitle
+@onready var code_popup = %CodePopup
+@onready var code_edit = %CodeEdit
+
+var bt_player: BTPlayer
+var selected_tree_index: int = -1
+var agent_files: Array[String]
+var agents_dir: String
+var is_tutorial: bool = false
+
+
+func _ready() -> void:
+ code_popup.hide()
+
+ agent_selection.get_popup().id_pressed.connect(_on_agent_selection_id_pressed)
+ previous.pressed.connect(func(): _on_agent_selection_id_pressed(selected_tree_index - 1))
+ next.pressed.connect(func(): _on_agent_selection_id_pressed(selected_tree_index + 1))
+
+ _initialize()
+
+
+func _physics_process(_delta: float) -> void:
+ var inst: BTInstance = bt_player.get_bt_instance()
+ var bt_data: BehaviorTreeData = BehaviorTreeData.create_from_bt_instance(inst)
+ behavior_tree_view.update_tree(bt_data)
+
+
+func _initialize() -> void:
+ if is_tutorial:
+ _populate_agent_files("res://demo/agents/tutorial/")
+ begin_tutorial.text = "End Tutorial"
+ navigation_hint.text = "Navigate β€"
+ scene_title.text = "Tutorial"
+ _on_agent_selection_id_pressed(0)
+ else:
+ _populate_agent_files("res://demo/agents/")
+ begin_tutorial.text = "Begin Tutorial"
+ navigation_hint.text = "Select Agent β€"
+ scene_title.text = "Showcase"
+ _on_agent_selection_id_pressed(0)
+
+
+func _attach_camera(agent: CharacterBody2D) -> void:
+ await get_tree().process_frame
+ camera.get_parent().remove_child(camera)
+ agent.add_child(camera)
+ camera.position = Vector2(400.0, 0.0)
+
+
+func _populate_agent_files(p_path: String = "res://demo/agents/") -> void:
+ var popup: PopupMenu = agent_selection.get_popup()
+ popup.clear()
+ popup.reset_size()
+ agent_files.clear()
+ agents_dir = p_path
+
+ var dir := DirAccess.open(p_path)
+ if dir:
+ dir.list_dir_begin()
+ var file_name: String = dir.get_next()
+ while file_name != "":
+ if dir.current_is_dir() or file_name.begins_with("agent_base"):
+ file_name = dir.get_next()
+ continue
+ agent_files.append(file_name.get_file().trim_suffix(".remap"))
+ file_name = dir.get_next()
+ dir.list_dir_end()
+
+ agent_files.sort()
+ for i in agent_files.size():
+ popup.add_item(agent_files[i], i)
+
+
+func _load_agent(file_name: String) -> void:
+ var agent_res := load(file_name) as PackedScene
+ assert(agent_res != null)
+
+ for child in get_children():
+ if child is CharacterBody2D and child.name != "Dummy":
+ child.die()
+
+ var agent: CharacterBody2D = agent_res.instantiate()
+ add_child(agent)
+ bt_player = agent.find_child("BTPlayer")
+ description.text = _parse_description(bt_player.behavior_tree.description)
+ _attach_camera(agent)
+
+
+func _parse_description(p_desc: String) -> String:
+ return p_desc \
+ .replace("[SUCCESS]", "[color=PaleGreen]SUCCESS[/color]") \
+ .replace("[FAILURE]", "[color=IndianRed]FAILURE[/color]") \
+ .replace("[RUNNING]", "[color=orange]RUNNING[/color]") \
+ .replace("[comp]", "[color=CornflowerBlue][b]") \
+ .replace("[/comp]", "[/b][/color]") \
+ .replace("[act]", "[color=white][b]") \
+ .replace("[/act]", "[/b][/color]") \
+ .replace("[dec]", "[color=MediumOrchid][b]") \
+ .replace("[/dec]", "[/b][/color]") \
+ .replace("[con]", "[color=orange][b]") \
+ .replace("[/con]", "[/b][/color]")
+
+
+func _on_agent_selection_id_pressed(id: int) -> void:
+ assert(id >= 0 and id < agent_files.size())
+ selected_tree_index = id
+ _load_agent(agents_dir.path_join(agent_files[id]))
+ agent_selection.text = bt_player.behavior_tree.resource_path.get_file()
+ if agent_selection.text.to_lower() != agent_selection.text:
+ # Treat filename as a title
+ agent_selection.text = agent_selection.text.trim_suffix(".tres")
+ previous.disabled = id == 0
+ next.disabled = id == (agent_files.size() - 1)
+
+
+func _on_switch_to_game_pressed() -> void:
+ get_tree().change_scene_to_file("res://demo/scenes/game.tscn")
+
+
+func _on_minimize_description_button_down() -> void:
+ description.visible = not description.visible
+ minimize_description.text = "-" if description.visible else "+"
+
+
+func _on_tutorial_pressed() -> void:
+ is_tutorial = not is_tutorial
+ _initialize()
+
+
+func _on_behavior_tree_view_task_selected(_type_name: String, p_script_path: String) -> void:
+ if not p_script_path.is_empty():
+ var sc: Script = load(p_script_path)
+ code_edit.set_source_code(sc.source_code)
+ code_popup.popup.call_deferred()
diff --git a/demo/scenes/showcase.tscn b/demo/scenes/showcase.tscn
new file mode 100644
index 0000000..4c23f0f
--- /dev/null
+++ b/demo/scenes/showcase.tscn
@@ -0,0 +1,288 @@
+[gd_scene load_steps=16 format=3 uid="uid://b3ae14mc2ty3y"]
+
+[ext_resource type="Script" path="res://demo/scenes/showcase.gd" id="1_l12ql"]
+[ext_resource type="Theme" uid="uid://boqtjf88xcpu4" path="res://demo/assets/ui.theme" id="2_3d7dj"]
+[ext_resource type="FontFile" uid="uid://d25vkmce7mhlt" path="res://demo/assets/fonts/knewave_regular.ttf" id="3_7vli5"]
+[ext_resource type="FontFile" uid="uid://n231m6uqsq6x" path="res://demo/assets/fonts/junction_bold.otf" id="4_7ubu6"]
+[ext_resource type="Texture2D" uid="uid://dc1wu244fnetf" path="res://demo/assets/arrow_left.png" id="5_bvrtp"]
+[ext_resource type="Texture2D" uid="uid://tyu0ua1ju38l" path="res://demo/assets/logo.png" id="5_rwygb"]
+[ext_resource type="Script" path="res://demo/scenes/base/toggle_fullscreen.gd" id="6_uggpo"]
+[ext_resource type="Texture2D" uid="uid://bjakugmqbbtw7" path="res://demo/assets/arrow_right.png" id="7_5do2y"]
+[ext_resource type="PackedScene" uid="uid://bsig1usigbbuy" path="res://demo/scenes/base/arena.tscn" id="7_42nq6"]
+[ext_resource type="PackedScene" uid="uid://c5fhe3tulhlco" path="res://demo/props/dummy.tscn" id="8_apshw"]
+[ext_resource type="Script" path="res://demo/scenes/base/code_edit.gd" id="9_txke7"]
+
+[sub_resource type="LabelSettings" id="LabelSettings_rdr7a"]
+font = ExtResource("3_7vli5")
+font_size = 33
+outline_size = 11
+outline_color = Color(0.258915, 0.234974, 0.191974, 1)
+
+[sub_resource type="LabelSettings" id="LabelSettings_3uhve"]
+font = ExtResource("3_7vli5")
+font_size = 26
+font_color = Color(0.804089, 0.811917, 0.823636, 1)
+outline_size = 10
+outline_color = Color(0.145083, 0.168536, 0.203708, 1)
+
+[sub_resource type="LabelSettings" id="LabelSettings_la4ui"]
+font = ExtResource("3_7vli5")
+font_size = 36
+font_color = Color(1, 1, 0.239216, 1)
+outline_size = 20
+outline_color = Color(0.211521, 0.23888, 0.290166, 1)
+
+[sub_resource type="LabelSettings" id="LabelSettings_tlprv"]
+font = ExtResource("3_7vli5")
+font_size = 23
+font_color = Color(0.804089, 0.811917, 0.823636, 1)
+outline_size = 10
+outline_color = Color(0.145083, 0.168536, 0.203708, 1)
+
+[node name="AgentShowcase" type="Node2D"]
+y_sort_enabled = true
+script = ExtResource("1_l12ql")
+
+[node name="UI Layer" type="CanvasLayer" parent="."]
+
+[node name="Control" type="Control" parent="UI Layer"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+theme = ExtResource("2_3d7dj")
+
+[node name="Toolbar" type="PanelContainer" parent="UI Layer/Control"]
+custom_minimum_size = Vector2(0, 54.26)
+layout_mode = 1
+anchors_preset = 10
+anchor_right = 1.0
+offset_right = -612.0
+offset_bottom = 58.0
+grow_horizontal = 2
+
+[node name="HBoxContainer" type="HBoxContainer" parent="UI Layer/Control/Toolbar"]
+layout_mode = 2
+theme_override_constants/separation = 4
+
+[node name="ToggleFullscreen" type="Button" parent="UI Layer/Control/Toolbar/HBoxContainer"]
+layout_mode = 2
+focus_mode = 0
+theme_override_fonts/font = ExtResource("3_7vli5")
+theme_override_font_sizes/font_size = 22
+text = "Toggle Fullscreen"
+script = ExtResource("6_uggpo")
+
+[node name="SwitchToGame" type="Button" parent="UI Layer/Control/Toolbar/HBoxContainer"]
+layout_mode = 2
+focus_mode = 0
+theme_override_fonts/font = ExtResource("3_7vli5")
+theme_override_font_sizes/font_size = 22
+text = "Switch to Game"
+
+[node name="BeginTutorial" type="Button" parent="UI Layer/Control/Toolbar/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+focus_mode = 0
+theme_override_fonts/font = ExtResource("3_7vli5")
+theme_override_font_sizes/font_size = 22
+text = "Begin Tutorial
+"
+
+[node name="SceneTitle" type="Label" parent="UI Layer/Control/Toolbar/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 6
+text = "Tutorial"
+label_settings = SubResource("LabelSettings_rdr7a")
+
+[node name="NavigationHint" type="Label" parent="UI Layer/Control/Toolbar/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 8
+text = "Select Agent β€"
+label_settings = SubResource("LabelSettings_3uhve")
+horizontal_alignment = 2
+
+[node name="BehaviorInspector" type="PanelContainer" parent="UI Layer/Control"]
+layout_mode = 1
+anchors_preset = 11
+anchor_left = 1.0
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_left = -612.0
+grow_horizontal = 0
+grow_vertical = 2
+
+[node name="VBoxContainer" type="VBoxContainer" parent="UI Layer/Control/BehaviorInspector"]
+custom_minimum_size = Vector2(600, 0)
+layout_mode = 2
+theme_override_constants/separation = 4
+
+[node name="HBoxContainer" type="HBoxContainer" parent="UI Layer/Control/BehaviorInspector/VBoxContainer"]
+layout_mode = 2
+theme_override_constants/separation = 4
+
+[node name="Previous" type="Button" parent="UI Layer/Control/BehaviorInspector/VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+focus_mode = 0
+theme_override_font_sizes/font_size = 28
+icon = ExtResource("5_bvrtp")
+
+[node name="AgentSelection" type="MenuButton" parent="UI Layer/Control/BehaviorInspector/VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(400, 50)
+layout_mode = 2
+size_flags_horizontal = 3
+theme_override_fonts/font = ExtResource("4_7ubu6")
+theme_override_font_sizes/font_size = 30
+text = "02_agent_imp.tres
+"
+flat = false
+
+[node name="Next" type="Button" parent="UI Layer/Control/BehaviorInspector/VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+focus_mode = 0
+theme_override_font_sizes/font_size = 28
+icon = ExtResource("7_5do2y")
+
+[node name="BehaviorTreeView" type="BehaviorTreeView" parent="UI Layer/Control/BehaviorInspector/VBoxContainer"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(600, 0)
+layout_mode = 2
+size_flags_vertical = 3
+
+[node name="PanelContainer" type="PanelContainer" parent="UI Layer/Control"]
+layout_mode = 1
+anchors_preset = 12
+anchor_top = 1.0
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_top = -8.0
+offset_right = -612.0
+grow_horizontal = 2
+grow_vertical = 0
+
+[node name="Control" type="Control" parent="UI Layer/Control/PanelContainer"]
+layout_mode = 2
+
+[node name="Logo" type="TextureRect" parent="UI Layer/Control/PanelContainer/Control"]
+layout_mode = 1
+offset_top = -128.0
+offset_right = 256.0
+offset_bottom = -43.0
+texture = ExtResource("5_rwygb")
+
+[node name="Demo project" type="Label" parent="UI Layer/Control/PanelContainer/Control/Logo"]
+layout_mode = 1
+anchors_preset = 3
+anchor_left = 1.0
+anchor_top = 1.0
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_left = -316.0
+offset_top = -72.0
+offset_right = 13.0
+offset_bottom = 74.0
+grow_horizontal = 0
+grow_vertical = 0
+text = "demo project"
+label_settings = SubResource("LabelSettings_la4ui")
+horizontal_alignment = 2
+vertical_alignment = 1
+
+[node name="Header" type="HBoxContainer" parent="UI Layer/Control/PanelContainer/Control"]
+layout_mode = 2
+offset_left = 3.0
+offset_top = -43.0
+offset_right = 1299.0
+offset_bottom = -7.0
+theme_override_constants/separation = 8
+
+[node name="Label" type="Label" parent="UI Layer/Control/PanelContainer/Control/Header"]
+layout_mode = 2
+size_flags_horizontal = 10
+text = "Description"
+label_settings = SubResource("LabelSettings_tlprv")
+
+[node name="MinimizeDescription" type="Button" parent="UI Layer/Control/PanelContainer/Control/Header"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(32, 32)
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 4
+focus_mode = 0
+theme_override_fonts/font = ExtResource("3_7vli5")
+text = "-"
+
+[node name="MarginContainer" type="MarginContainer" parent="UI Layer/Control/PanelContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 20
+theme_override_constants/margin_top = 6
+theme_override_constants/margin_bottom = 6
+
+[node name="VBoxContainer" type="VBoxContainer" parent="UI Layer/Control/PanelContainer/MarginContainer"]
+layout_mode = 2
+theme_override_constants/separation = 0
+
+[node name="Description" type="RichTextLabel" parent="UI Layer/Control/PanelContainer/MarginContainer/VBoxContainer"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(0, 140)
+layout_mode = 2
+size_flags_vertical = 3
+theme_override_font_sizes/bold_italics_font_size = 20
+theme_override_font_sizes/italics_font_size = 20
+theme_override_font_sizes/mono_font_size = 20
+theme_override_font_sizes/normal_font_size = 20
+theme_override_font_sizes/bold_font_size = 20
+bbcode_enabled = true
+text = "[b]Behavior Trees[/b] are composed of tasks that represent specific actions or decision-making rules. Tasks can be broadly categorized into two main types: control tasks and leaf tasks. Control tasks determine the execution flow within the tree. They include Sequence, Selector, and Invert. Leaf tasks represent specific actions to perform, like moving or attacking, or conditions that need to be checked. The BTTask class provides the foundation for various building blocks of the Behavior Trees. BT tasks can share data with the help of the Blackboard."
+fit_content = true
+
+[node name="CodePopup" type="PopupPanel" parent="UI Layer/Control"]
+unique_name_in_owner = true
+position = Vector2i(0, 60)
+size = Vector2i(1024, 708)
+visible = true
+
+[node name="CodeEdit" type="CodeEdit" parent="UI Layer/Control/CodePopup"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(800, 700)
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_left = 4.0
+offset_top = 4.0
+offset_right = 1020.0
+offset_bottom = 704.0
+grow_horizontal = 2
+grow_vertical = 2
+gutters_draw_line_numbers = true
+script = ExtResource("9_txke7")
+
+[node name="Camera2D" type="Camera2D" parent="."]
+position = Vector2(400, 0)
+zoom = Vector2(0.88, 0.88)
+process_callback = 0
+position_smoothing_enabled = true
+drag_horizontal_enabled = true
+drag_vertical_enabled = true
+drag_left_margin = 0.1
+drag_top_margin = 0.1
+drag_right_margin = 0.0
+drag_bottom_margin = 0.1
+
+[node name="Arena" parent="." instance=ExtResource("7_42nq6")]
+metadata/_edit_lock_ = true
+
+[node name="Dummy" parent="." instance=ExtResource("8_apshw")]
+position = Vector2(1106, 423)
+
+[connection signal="pressed" from="UI Layer/Control/Toolbar/HBoxContainer/SwitchToGame" to="." method="_on_switch_to_game_pressed"]
+[connection signal="pressed" from="UI Layer/Control/Toolbar/HBoxContainer/BeginTutorial" to="." method="_on_tutorial_pressed"]
+[connection signal="task_selected" from="UI Layer/Control/BehaviorInspector/VBoxContainer/BehaviorTreeView" to="." method="_on_behavior_tree_view_task_selected"]
+[connection signal="button_down" from="UI Layer/Control/PanelContainer/Control/Header/MinimizeDescription" to="." method="_on_minimize_description_button_down"]
diff --git a/prefabs/player.tscn b/prefabs/player.tscn
index fe4b7cf..5ee792e 100644
--- a/prefabs/player.tscn
+++ b/prefabs/player.tscn
@@ -1,9 +1,12 @@
-[gd_scene load_steps=6 format=3 uid="uid://ctu0cdqcefrwg"]
+[gd_scene load_steps=9 format=3 uid="uid://ctu0cdqcefrwg"]
[ext_resource type="Script" path="res://scripts/player/player.gd" id="1_1tqna"]
[ext_resource type="Script" path="res://scripts/player/cameraController.gd" id="1_v2q4i"]
[ext_resource type="PackedScene" uid="uid://c2x0xjb2ypfpq" path="res://content/rifle/weapon.tscn" id="3_5cmgy"]
[ext_resource type="Script" path="res://scripts/player/weapon.gd" id="4_nfpgt"]
+[ext_resource type="PackedScene" uid="uid://bnwuklgcmgyw8" path="res://content/muzzleflash/muzzleflash.tscn" id="5_v58ob"]
+[ext_resource type="Script" path="res://demo/agents/scripts/health.gd" id="6_ixo02"]
+[ext_resource type="PackedScene" uid="uid://bwnlcxfwxyj7j" path="res://content/ui/UI.tscn" id="7_qi8fi"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_w4dyg"]
margin = 0.332
@@ -20,14 +23,89 @@ shape = SubResource("CylinderShape3D_w4dyg")
[node name="Camera3D" type="Camera3D" parent="CollisionShape3D" node_paths=PackedStringArray("PlayerNode")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 0.68094, 0)
keep_aspect = 0
-fov = 80.0
+fov = 66.5
script = ExtResource("1_v2q4i")
PlayerNode = NodePath("../..")
-[node name="Weapon" parent="CollisionShape3D/Camera3D" instance=ExtResource("3_5cmgy")]
+[node name="Weapon" parent="CollisionShape3D/Camera3D" node_paths=PackedStringArray("Origin", "BulletOrigin") instance=ExtResource("3_5cmgy")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0655423, 0)
script = ExtResource("4_nfpgt")
+MuzzleFlash = ExtResource("5_v58ob")
+Origin = NodePath("LVA4_Armature/Skeleton3D/BoneAttachment3D/Plane/Muzzle")
+BulletOrigin = NodePath("..")
+
+[node name="Skeleton3D" parent="CollisionShape3D/Camera3D/Weapon/LVA4_Armature" index="0"]
+bones/6/rotation = Quaternion(0.697021, -0.0271559, 0.0376544, 0.715546)
+bones/6/scale = Vector3(1.01704, 0.970755, 1.01744)
+bones/9/rotation = Quaternion(0.597208, 0.088759, -0.0953634, 0.791436)
+bones/9/scale = Vector3(0.894297, 1.25036, 0.894302)
+bones/13/rotation = Quaternion(-0.28923, -0.582728, 0.583821, 0.485724)
+bones/14/rotation = Quaternion(0.848078, 0.123778, -0.0283134, 0.514433)
+bones/15/rotation = Quaternion(-0.283662, -0.0771209, 0.0117335, 0.955746)
+bones/17/rotation = Quaternion(-0.0979801, -0.0112315, 0.138692, 0.985413)
+bones/18/rotation = Quaternion(0.00285996, -0.0771369, -0.0955664, 0.992426)
+bones/19/rotation = Quaternion(-0.014737, 0.0372155, -0.0126211, 0.999119)
+bones/23/rotation = Quaternion(0.0470606, 0.0222304, 0.674114, 0.736791)
+bones/24/rotation = Quaternion(-0.0161525, -0.0078105, 0.43526, 0.900126)
+bones/28/rotation = Quaternion(0.102228, 0.0657092, 0.694722, 0.708938)
+bones/29/rotation = Quaternion(-0.0349312, -0.0131626, -0.00239495, 0.9993)
+bones/33/rotation = Quaternion(0.0718133, 0.0329945, 0.409986, 0.908661)
+bones/37/rotation = Quaternion(-0.0719948, 0.0990852, 0.535014, 0.835918)
+bones/38/rotation = Quaternion(0.0321199, 0.0582583, 0.363318, 0.929287)
+bones/40/rotation = Quaternion(0.01367, -0.0189025, -0.00240104, 0.999725)
+bones/42/rotation = Quaternion(0.0135558, -0.0612161, -0.00297769, 0.998028)
+bones/44/rotation = Quaternion(0.0136076, -0.0431957, -0.00273264, 0.99897)
+bones/46/rotation = Quaternion(0.8627, 0.184653, -0.263834, -0.389927)
+bones/48/rotation = Quaternion(0.0136698, -0.0189026, -0.00240123, 0.999725)
+bones/50/rotation = Quaternion(-0.0240003, -0.0270186, 0.0231118, 0.99908)
+bones/52/rotation = Quaternion(9.57289e-08, -0.102194, 2.38743e-08, 0.994764)
+bones/55/rotation = Quaternion(-0.00863172, 0.430989, -0.779795, 0.453977)
+bones/56/rotation = Quaternion(0.568329, -0.124676, -0.024049, 0.812945)
+bones/57/rotation = Quaternion(-0.202555, -0.0372334, 0.118361, 0.971378)
+bones/59/position = Vector3(5.26137e-06, 0.00062688, 4.61328e-06)
+bones/59/rotation = Quaternion(-0.0921515, 0.0504243, 0.195935, 0.974974)
+bones/60/rotation = Quaternion(-0.0504229, 0.0584449, -0.605684, 0.791952)
+bones/61/rotation = Quaternion(0.0114703, -0.0383484, -0.608711, 0.792382)
+bones/64/position = Vector3(-1.39906e-05, 0.000607789, 8.67999e-07)
+bones/64/rotation = Quaternion(-0.0560437, 0.00556503, 0.0915036, 0.994211)
+bones/65/rotation = Quaternion(0.0483554, -0.0192523, -0.71875, 0.693318)
+bones/66/rotation = Quaternion(-0.0173623, 0.00452312, -0.601864, 0.798397)
+bones/69/position = Vector3(1.30467e-06, 0.000602322, -2.7101e-06)
+bones/69/rotation = Quaternion(0.0409456, -0.0210825, 0.0696472, 0.996508)
+bones/70/rotation = Quaternion(0.0377608, -0.115509, -0.0908998, 0.988417)
+bones/71/rotation = Quaternion(-0.0354375, -0.0117314, -0.626531, 0.778502)
+bones/74/position = Vector3(-8.65025e-06, 0.000669554, 2.38656e-05)
+bones/74/rotation = Quaternion(0.0945839, -0.108202, 0.236727, 0.960889)
+bones/75/rotation = Quaternion(0.0550313, -0.0567217, -0.0538148, 0.995419)
+bones/76/rotation = Quaternion(-0.0284048, -0.0472237, -0.149045, 0.987294)
+bones/78/position = Vector3(-8.86769e-05, 0.000149522, 3.81398e-05)
+bones/79/rotation = Quaternion(-0.24679, -0.068873, -0.208296, 0.943909)
+bones/80/rotation = Quaternion(0.0181542, -0.258237, 0.0705999, 0.963327)
+bones/82/rotation = Quaternion(0.0137306, -0.00845511, 0.00202618, 0.999868)
+bones/84/rotation = Quaternion(0.0137638, -0.0259837, 0.00178515, 0.999566)
+bones/86/rotation = Quaternion(0.0137486, -0.017656, 0.00189981, 0.999748)
+bones/90/rotation = Quaternion(0.0137304, -0.00845505, 0.0020264, 0.999868)
+bones/92/rotation = Quaternion(-0.0246213, -0.000215826, -0.0224486, 0.999445)
+bones/94/rotation = Quaternion(2.79802e-09, 0.0449708, 4.00876e-08, 0.998988)
+bones/96/position = Vector3(0.00148682, 0.00419669, -0.00257247)
+bones/96/rotation = Quaternion(-0.664802, 0.0151952, 0.13056, 0.735365)
+bones/98/position = Vector3(0.000566952, 0.00437002, -0.00361386)
+bones/98/rotation = Quaternion(-0.686633, -0.158208, -0.166366, 0.689803)
+
+[node name="BoneAttachment3D" parent="CollisionShape3D/Camera3D/Weapon/LVA4_Armature/Skeleton3D" index="1"]
+transform = Transform3D(0.965405, -0.212387, -0.151277, 0.196116, 0.973749, -0.115552, 0.171848, 0.0818871, 0.981714, 0.00148609, 0.00257259, -0.00101604)
+
+[node name="Muzzle" parent="CollisionShape3D/Camera3D/Weapon/LVA4_Armature/Skeleton3D/BoneAttachment3D/Plane" index="0"]
+transform = Transform3D(0.00256023, 0.00111408, -0.00109729, 0.000993761, 0.00046617, 0.00279197, 0.00120734, -0.00274618, 2.87907e-05, -0.00118721, 0.00250132, 0.000390777)
[node name="CooldownTimer" type="Timer" parent="CollisionShape3D/Camera3D/Weapon"]
wait_time = 0.3
one_shot = true
+
+[node name="Health" type="Node" parent="."]
+script = ExtResource("6_ixo02")
+max_health = 5.0
+
+[node name="Ui" parent="." instance=ExtResource("7_qi8fi")]
+
+[editable path="CollisionShape3D/Camera3D/Weapon"]
diff --git a/scripts/enemies/enemy.gd b/scripts/enemies/enemy.gd
new file mode 100644
index 0000000..b3ea8f3
--- /dev/null
+++ b/scripts/enemies/enemy.gd
@@ -0,0 +1,49 @@
+extends CharacterBody3D
+class_name Enemy
+
+const MOVEMENT_SPEED = 1
+
+@onready var animationtree: AnimationTree = $enemies/AnimationPlayer/AnimationTree
+@onready var agent:NavigationAgent3D = $NavigationAgent
+@onready var enemyAi: EnemyAI = $BTPlayer
+@onready var health: Health = $Health
+
+const SPEED = 5.0
+const JUMP_VELOCITY = 4.5
+
+var movementBlend = 0;
+
+func _ready() -> void:
+ health.death.connect(died)
+
+func died() -> void:
+ queue_free()
+
+func updateMovementBlend(delta: float, to: float) -> void:
+ movementBlend = move_toward(movementBlend, to, delta * 2);
+
+func rotateTo(delta: float, targetDirection: Vector3) -> void:
+ self.global_basis.z = lerp(self.global_basis.z, targetDirection, delta * 10);
+
+func _physics_process(delta: float) -> void:
+ if agent.is_navigation_finished():
+ if enemyAi.aggressive:
+ rotateTo(delta, (Player.Instance.global_position - self.global_position).normalized())
+
+ updateMovementBlend(delta, 0);
+ self.animationtree['parameters/Movement/blend_position'] = movementBlend
+ return
+
+ var current_agent_position: Vector3 = global_position
+ var next_path_position: Vector3 = agent.get_next_path_position()
+
+ velocity = current_agent_position.direction_to(next_path_position) * MOVEMENT_SPEED
+ move_and_slide()
+
+ if enemyAi.aggressive:
+ rotateTo(delta, (Player.Instance.global_position - self.global_position).normalized())
+ else:
+ rotateTo(delta, -velocity.normalized())
+
+ updateMovementBlend(delta, velocity.length())
+ self.animationtree['parameters/Movement/blend_position'] = movementBlend
diff --git a/scripts/enemies/enemy_ai.gd b/scripts/enemies/enemy_ai.gd
new file mode 100644
index 0000000..695b90f
--- /dev/null
+++ b/scripts/enemies/enemy_ai.gd
@@ -0,0 +1,49 @@
+extends BTPlayer
+
+class_name EnemyAI
+
+const ROAM_DISTANCE: float = 10.0
+const DISTANCE_TO_PLAYER: float = 10.0
+
+@export var character: CharacterBody3D
+
+@export_category("Sprite")
+@export var sprite:Sprite3D;
+@export var idleTexture: Texture2D;
+@export var aggressiveTexture: Texture2D;
+
+@export_category("Agents")
+@export var agent: NavigationAgent3D;
+
+@export var animationTree: AnimationTree;
+
+@export_category("Firing")
+@export var MuzzleFlash: PackedScene
+@export var Origin: Node3D
+
+var aggressive = false
+
+func _physics_process(_delta: float) -> void:
+ self.blackboard.set_var('PlayerDistance', character.global_position.distance_to(Player.Instance.global_position))
+ self.blackboard.set_var('LookingAngleToPlayer', (-character.global_basis.z).dot((character.global_position - Player.Instance.global_position).normalized()))
+
+func setAggressive(value: bool) -> void:
+ if not aggressive && value:
+ agent.target_position = character.global_position;
+
+ sprite.texture = aggressiveTexture if value else idleTexture
+ aggressive = value
+
+
+func roam() -> void:
+ var targetPosition = character.global_position + (Vector3(randf_range(-1, 1), randf_range(-1, 1), randf_range(-1,1)).normalized() * randf_range(0, ROAM_DISTANCE))
+ agent.target_position = targetPosition
+
+func moveToPlayer() -> void:
+ var toPlayerDirection = Player.Instance.global_position - character.global_position
+ agent.target_position = Player.Instance.global_position + toPlayerDirection.normalized() * -DISTANCE_TO_PLAYER
+
+func Fire() -> void:
+ self.animationTree['parameters/playback'].travel('Fire')
+ var instance = MuzzleFlash.instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE)
+ Origin.add_child(instance)
diff --git a/scripts/muzzleflash.gd b/scripts/muzzleflash.gd
new file mode 100644
index 0000000..91feeb9
--- /dev/null
+++ b/scripts/muzzleflash.gd
@@ -0,0 +1,12 @@
+extends Node3D
+
+@onready var timer: Timer = $Timer
+
+# Called when the node enters the scene tree for the first time.
+func _ready() -> void:
+ rotate_z(randf())
+ timer.timeout.connect(self.completed)
+
+
+func completed() -> void:
+ queue_free()
diff --git a/scripts/player/cameraController.gd b/scripts/player/cameraController.gd
index 62fe9ea..731bd19 100644
--- a/scripts/player/cameraController.gd
+++ b/scripts/player/cameraController.gd
@@ -11,6 +11,9 @@ func _ready() -> void:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED;
func _input(event: InputEvent) -> void:
+ if event is InputEventKey && event.key_label == KEY_ESCAPE:
+ Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
+
if event is not InputEventMouseMotion:
return
diff --git a/scripts/player/player.gd b/scripts/player/player.gd
index cf2ae4b..7ece1e6 100644
--- a/scripts/player/player.gd
+++ b/scripts/player/player.gd
@@ -12,7 +12,9 @@ static var Instance: Player;
@onready var animationtree: AnimationTree = $CollisionShape3D/Camera3D/Weapon/AnimationPlayer/AnimationTree
@onready var collisionShape: CollisionShape3D = $CollisionShape3D
+@onready var health: Health = $Health
+const CROUCHED_SPEED: float = 2.5
const SPEED: float = 5.0
const SPRINT_SPEED: float = 10.0
const FALLOFF_SPEED: float = 0.5
@@ -54,6 +56,8 @@ func _physics_process(delta: float) -> void:
if PlayerState == PlayerStates.SPRINTING:
speed = SPRINT_SPEED
+ if PlayerState == PlayerStates.CROUCHING:
+ speed = CROUCHED_SPEED
if direction:
velocity.x = direction.x * speed
@@ -67,13 +71,16 @@ func _physics_process(delta: float) -> void:
if self.PlayerState == PlayerStates.SPRINTING:
input_dir.y *= 2
- var blendProperty = 'parameters/Movement/blend_position'
+ var blendProperty = 'parameters/Movement/0/blend_position'
if PlayerState == PlayerStates.CROUCHING:
blendProperty = 'parameters/Crouched Movement/blend_position'
lastDirection.x = move_toward(lastDirection.x, input_dir.x, 0.05);
lastDirection.y = move_toward(lastDirection.y, input_dir.y, 0.05);
- animationtree.set(blendProperty, lastDirection);
+ var yLeft = clamp(lastDirection.y - 1, 0, 1);
+ animationtree.set('parameters/Movement/blend_position', yLeft)
+ var yRemainder = Vector2(lastDirection.x, clamp(lastDirection.y, 0, 1));
+ animationtree.set(blendProperty, yRemainder);
func handleCrouching():
if Input.is_action_just_pressed('player_crouching'):
diff --git a/scripts/player/weapon.gd b/scripts/player/weapon.gd
index 4004476..52ca1fd 100644
--- a/scripts/player/weapon.gd
+++ b/scripts/player/weapon.gd
@@ -2,13 +2,18 @@ extends Node3D
@onready var animationtree: AnimationTree = $AnimationPlayer/AnimationTree
@onready var timer: Timer = $CooldownTimer
+
+@export_category("Firing")
+@export var MuzzleFlash: PackedScene
+@export var Origin: Node3D
+@export var BulletOrigin: Node3D
+
var statemachine: AnimationNodeStateMachinePlayback
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
self.statemachine = animationtree['parameters/playback']
-
func _input(event: InputEvent) -> void:
if event is not InputEventMouseButton:
return
@@ -19,6 +24,9 @@ func _input(event: InputEvent) -> void:
if self.timer.time_left > 0:
return
+ if Player.Instance.PlayerState == Player.PlayerStates.SPRINTING:
+ return
+
var travelTarget = 'Fire'
if Player.Instance.PlayerState == Player.PlayerStates.CROUCHING:
travelTarget = 'Crouched Fire'
@@ -26,4 +34,24 @@ func _input(event: InputEvent) -> void:
self.animationtree.set('parameters/' + travelTarget + '/blend_position', randf_range(0, 2))
self.statemachine.travel(travelTarget)
+ fireBullet()
+
self.timer.start()
+
+func fireBullet() -> void:
+ var instance = self.MuzzleFlash.instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE)
+ Origin.add_child(instance)
+
+ var query = PhysicsRayQueryParameters3D.create(BulletOrigin.global_position, BulletOrigin.global_position + BulletOrigin.global_basis.z * -200)
+ var result = get_world_3d().direct_space_state.intersect_ray(query)
+
+ if not result:
+ print('No result')
+ return
+
+ var health = result.collider.get_node('Health')
+ if health:
+ print("Dealing Damage")
+ result.collider.health.take_damage(1, Vector2(0,0))
+ return
+ print('No Health Element')