diff --git a/NewLON.csproj b/NewLON.csproj
deleted file mode 100644
index 8eebc1d..0000000
--- a/NewLON.csproj
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- net8.0
- true
-
-
\ No newline at end of file
diff --git a/NewLON.sln b/NewLON.sln
deleted file mode 100644
index 0b547c7..0000000
--- a/NewLON.sln
+++ /dev/null
@@ -1,19 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewLON", "NewLON.csproj", "{9FFA6489-F73F-4493-8D9C-888092D73A4D}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- ExportDebug|Any CPU = ExportDebug|Any CPU
- ExportRelease|Any CPU = ExportRelease|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {9FFA6489-F73F-4493-8D9C-888092D73A4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9FFA6489-F73F-4493-8D9C-888092D73A4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9FFA6489-F73F-4493-8D9C-888092D73A4D}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU
- {9FFA6489-F73F-4493-8D9C-888092D73A4D}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU
- {9FFA6489-F73F-4493-8D9C-888092D73A4D}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU
- {9FFA6489-F73F-4493-8D9C-888092D73A4D}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU
- EndGlobalSection
-EndGlobal
diff --git a/addons/floatmodifiers/FlatModsInspector.cs b/addons/floatmodifiers/FlatModsInspector.cs
deleted file mode 100644
index 561a01b..0000000
--- a/addons/floatmodifiers/FlatModsInspector.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-#if TOOLS
-using Godot;
-
-public partial class FlatModsInspector : EditorInspectorPlugin
-{
- public override bool _CanHandle(GodotObject @object)
- {
- return true;
- }
- public override bool _ParseProperty(GodotObject @object, Variant.Type type, string name, PropertyHint hintType, string hintString, PropertyUsageFlags usageFlags, bool wide)
- {
- if (hintString == "FloatModifiers")
- {
- AddPropertyEditor(name, new FloatModsProperty());
- return true;
- }
- return false;
- }
-
-}
-
-
-#endif
\ No newline at end of file
diff --git a/addons/floatmodifiers/FlatModsInspector.cs.uid b/addons/floatmodifiers/FlatModsInspector.cs.uid
deleted file mode 100644
index f325609..0000000
--- a/addons/floatmodifiers/FlatModsInspector.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://uc8igx80sr6u
diff --git a/addons/floatmodifiers/FloatModifiers.cs b/addons/floatmodifiers/FloatModifiers.cs
deleted file mode 100644
index 365d627..0000000
--- a/addons/floatmodifiers/FloatModifiers.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-
-using Godot;
-
-[GlobalClass] [Tool]
-public partial class FloatModifiers : Resource
-{
- [Export] private float flat_value;
- [Export] private float percentage_value;
- [Export] private float mult_value;
-
- public static FloatModifiers Instantiate(float flat = 0.0f, float per = 0.0f, float mult = 1.0f)
- {
- FloatModifiers mod = new()
- {
- flat_value = flat,
- percentage_value = per,
- mult_value = mult
- };
- mod.ResourceLocalToScene = true;
- return mod;
- }
-
- public float GetValue() => flat_value * mult_value * (1.0f + percentage_value);
-
- public float GetFlat() => flat_value;
-
- public float GetPercentage() => percentage_value;
-
- public float GetMult() => mult_value;
-
- public void SetFlat(float value)
- {
- flat_value = value;
- }
-
- public void SetPercentage(float value)
- {
- percentage_value = value;
- }
-
- public void SetMult(float value)
- {
- mult_value = value;
- }
-
- public void ChangeFlat(float amount)
- {
- flat_value += amount;
- }
-
- public void ChangePercentage(float amount)
- {
- percentage_value += amount;
- }
-
- public void ChangeMult(float amount)
- {
- mult_value *= amount;
- }
-}
diff --git a/addons/floatmodifiers/FloatModifiers.cs.uid b/addons/floatmodifiers/FloatModifiers.cs.uid
deleted file mode 100644
index e874efc..0000000
--- a/addons/floatmodifiers/FloatModifiers.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c3cfnrmnnuqms
diff --git a/addons/floatmodifiers/FloatModsProperty.cs b/addons/floatmodifiers/FloatModsProperty.cs
deleted file mode 100644
index f0f358d..0000000
--- a/addons/floatmodifiers/FloatModsProperty.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-#if TOOLS
-using Godot;
-
-public partial class FloatModsProperty : EditorProperty
-{
- private VBoxContainer _modsControl;
- private FloatModifiers _currentValue;
- private bool _updating;
-
- public FloatModsProperty()
- {
- _modsControl = GD.Load("res://addons/floatmodifiers/float_mods_property.tscn").Instantiate();
- AddChild(_modsControl);
- AddFocusable(_modsControl);
-
- RefreshControl();
-
- _modsControl.GetNode("%Flat").ValueChanged += UpdateFlat;
- _modsControl.GetNode("%Percentage").ValueChanged += UpdatePercentage;
- _modsControl.GetNode("%Mult").ValueChanged += UpdateMult;
- }
-
- private void UpdateFlat(double value)
- {
- if (_updating) return;
-
- _currentValue.SetFlat((float)value);
-
- RefreshControl();
- EmitChanged(GetEditedProperty(), _currentValue);
- }
- private void UpdatePercentage(double value)
- {
- if (_updating) return;
-
- _currentValue.SetPercentage((float)value);
-
- RefreshControl();
- EmitChanged(GetEditedProperty(), _currentValue);
- }
- private void UpdateMult(double value)
- {
- if (_updating) return;
-
- _currentValue.SetMult((float)value);
-
- RefreshControl();
- EmitChanged(GetEditedProperty(), _currentValue);
- }
-
- private void RefreshControl()
- {
- if (_currentValue == null)
- {
- return;
- }
-
- _modsControl.GetNode("%Flat").SetValueNoSignal(_currentValue.GetFlat());
- _modsControl.GetNode("%Percentage").SetValueNoSignal(_currentValue.GetPercentage());
- _modsControl.GetNode("%Mult").SetValueNoSignal(_currentValue.GetMult());
- }
-
-
- public override void _UpdateProperty()
- {
- // Read the current value from the property.
- var newValue = GetEditedObject().Get(GetEditedProperty()).As();
- if (newValue == null)
- {
- newValue = new();
- newValue.ResourceLocalToScene = true;
- EmitChanged(GetEditedProperty(), newValue);
- }
- if (newValue.ResourceLocalToScene == false)
- {
- newValue.ResourceLocalToScene = true;
- }
- if (newValue == _currentValue)
- {
- return;
- }
-
- // Update the control with the new value.
- _updating = true;
- _currentValue = newValue;
- RefreshControl();
- _updating = false;
- }
-}
-#endif
\ No newline at end of file
diff --git a/addons/floatmodifiers/FloatModsProperty.cs.uid b/addons/floatmodifiers/FloatModsProperty.cs.uid
deleted file mode 100644
index 3e20dd2..0000000
--- a/addons/floatmodifiers/FloatModsProperty.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dv5koj37coavh
diff --git a/addons/floatmodifiers/Plugin.cs b/addons/floatmodifiers/Plugin.cs
deleted file mode 100644
index 9a24081..0000000
--- a/addons/floatmodifiers/Plugin.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-#if TOOLS
-using Godot;
-
-[Tool]
-public partial class Plugin : EditorPlugin
-{
- private FlatModsInspector _plugin;
-
- public override void _EnterTree()
- {
- _plugin = new FlatModsInspector();
- AddInspectorPlugin(_plugin);
- }
-
- public override void _ExitTree()
- {
- RemoveInspectorPlugin(_plugin);
- }
-}
-#endif
diff --git a/addons/floatmodifiers/Plugin.cs.uid b/addons/floatmodifiers/Plugin.cs.uid
deleted file mode 100644
index cd73c61..0000000
--- a/addons/floatmodifiers/Plugin.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://fjnw4mev4eiq
diff --git a/addons/floatmodifiers/float_mods_property.tscn b/addons/floatmodifiers/float_mods_property.tscn
deleted file mode 100644
index c842ea7..0000000
--- a/addons/floatmodifiers/float_mods_property.tscn
+++ /dev/null
@@ -1,57 +0,0 @@
-[gd_scene format=3 uid="uid://d2ne6ml10xgcl"]
-
-[node name="FloatModsProperty" type="VBoxContainer"]
-offset_right = 163.0
-offset_bottom = 104.0
-
-[node name="FlatContainer" type="HBoxContainer" parent="."]
-layout_mode = 2
-
-[node name="Label" type="Label" parent="FlatContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Flat"
-
-[node name="Flat" type="SpinBox" parent="FlatContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(128, 0)
-layout_mode = 2
-step = 0.001
-allow_greater = true
-allow_lesser = true
-
-[node name="PercentageContainer" type="HBoxContainer" parent="."]
-layout_mode = 2
-
-[node name="Label" type="Label" parent="PercentageContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "%"
-
-[node name="Percentage" type="SpinBox" parent="PercentageContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(128, 0)
-layout_mode = 2
-max_value = 10.0
-step = 0.001
-allow_greater = true
-allow_lesser = true
-prefix = "+"
-
-[node name="MultContainer" type="HBoxContainer" parent="."]
-layout_mode = 2
-
-[node name="Label" type="Label" parent="MultContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-text = "Mult"
-
-[node name="Mult" type="SpinBox" parent="MultContainer"]
-unique_name_in_owner = true
-custom_minimum_size = Vector2(128, 0)
-layout_mode = 2
-step = 0.001
-value = 1.0
-allow_greater = true
-allow_lesser = true
-prefix = "*"
diff --git a/addons/floatmodifiers/plugin.cfg b/addons/floatmodifiers/plugin.cfg
deleted file mode 100644
index e434f40..0000000
--- a/addons/floatmodifiers/plugin.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-[plugin]
-
-name="FloatModifiers"
-description=""
-author="R34nd0"
-version="1.0"
-script="Plugin.cs"
diff --git a/addons/pvzadventure/.gitignore b/addons/pvzadventure/.gitignore
deleted file mode 100644
index 6e25fa8..0000000
--- a/addons/pvzadventure/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-cache/
\ No newline at end of file
diff --git a/addons/pvzadventure/AdventureLevelResource.cs b/addons/pvzadventure/AdventureLevelResource.cs
deleted file mode 100644
index ba5c57d..0000000
--- a/addons/pvzadventure/AdventureLevelResource.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using Godot;
-using Godot.Collections;
-using Newlon.Resources;
-
-[GlobalClass]
-[Tool]
-public partial class AdventureLevelResource : Resource
-{
- [Export] public int startSun = 50;
- //[Export] public Array conditions;
- [ExportGroup("Wave properties")]
- [Export(PropertyHint.Range, "0,1,0.01")] public float wavePercentage;
- [Export] public float standardWaveDelay;
- [Export] public float initialWaveDelay;
- [Export] public RewardResource reward;
- [ExportGroup("Editor-edited properties")]
- [ExportSubgroup("Seedpackets")]
- [Export] public Array forbiddenPlants = new();
- [Export] public Array forbiddenTags = new();
- [Export] public Array prepickedPlants = new();
- [ExportSubgroup("Waves")]
- [Export] public Array waves = new();
- [Export] public Array initialScenes = [.. new PackedScene[45]];
-}
diff --git a/addons/pvzadventure/AdventureLevelResource.cs.uid b/addons/pvzadventure/AdventureLevelResource.cs.uid
deleted file mode 100644
index 2a1a182..0000000
--- a/addons/pvzadventure/AdventureLevelResource.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bximdujbkj2n4
diff --git a/addons/pvzadventure/PvZAdventure.cs b/addons/pvzadventure/PvZAdventure.cs
deleted file mode 100644
index f7a87ee..0000000
--- a/addons/pvzadventure/PvZAdventure.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-#if TOOLS
-using Godot;
-
-[Tool]
-public partial class PvZAdventure : EditorPlugin
-{
- private PackedScene panel = ResourceLoader.Load("uid://dkq82o31vr3i2");
-
- private Control panelInstance;
- public override void _EnterTree()
- {
- panelInstance = panel.Instantiate();
- EditorInterface.Singleton.GetEditorMainScreen().AddChild(panelInstance);
- _MakeVisible(false);
-
- }
- public override void _ExitTree()
- {
- if (panelInstance != null)
- {
- panelInstance.QueueFree();
- }
- }
-
-
- public override bool _HasMainScreen()
- {
- return true;
- }
-
- public override void _MakeVisible(bool visible)
- {
- if (panelInstance != null)
- {
- panelInstance.Visible = visible;
- }
- }
-
- public override string _GetPluginName()
- {
- return "Adventure";
- }
-}
-#endif
diff --git a/addons/pvzadventure/PvZAdventure.cs.uid b/addons/pvzadventure/PvZAdventure.cs.uid
deleted file mode 100644
index e55b39a..0000000
--- a/addons/pvzadventure/PvZAdventure.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cef32inw0wu7b
diff --git a/addons/pvzadventure/RowSpawn.cs b/addons/pvzadventure/RowSpawn.cs
deleted file mode 100644
index 90cade3..0000000
--- a/addons/pvzadventure/RowSpawn.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using Godot;
-using Godot.Collections;
-using Newlon.Resources;
-
-[Tool]
-[GlobalClass]
-public partial class RowSpawn : Resource
-{
- [Export] public Array zombies = new(new ZombieResource[5]);
-}
diff --git a/addons/pvzadventure/RowSpawn.cs.uid b/addons/pvzadventure/RowSpawn.cs.uid
deleted file mode 100644
index 7bba64b..0000000
--- a/addons/pvzadventure/RowSpawn.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dl12rj75tk2qi
diff --git a/addons/pvzadventure/WaveData.cs b/addons/pvzadventure/WaveData.cs
deleted file mode 100644
index d74b191..0000000
--- a/addons/pvzadventure/WaveData.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Godot;
-using Godot.Collections;
-
-[GlobalClass]
-[Tool]
-public partial class WaveData : Resource
-{
- [Export] public Array zombiesOrdered = new();
- [Export] public Array events = new();
- [Export] public float customWaveDelay = 0;
- [Export] public bool isHugeWave;
-}
diff --git a/addons/pvzadventure/WaveData.cs.uid b/addons/pvzadventure/WaveData.cs.uid
deleted file mode 100644
index f8d4b68..0000000
--- a/addons/pvzadventure/WaveData.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://7rptlb5qr3b6
diff --git a/addons/pvzadventure/WaveEvent.cs b/addons/pvzadventure/WaveEvent.cs
deleted file mode 100644
index fc628b9..0000000
--- a/addons/pvzadventure/WaveEvent.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-using Godot;
-
-public partial class WaveEvent : Resource
-{
-}
diff --git a/addons/pvzadventure/WaveEvent.cs.uid b/addons/pvzadventure/WaveEvent.cs.uid
deleted file mode 100644
index 037dba1..0000000
--- a/addons/pvzadventure/WaveEvent.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cw7yc3i2lgcja
diff --git a/addons/pvzadventure/ZombieRowSpawn.cs.uid b/addons/pvzadventure/ZombieRowSpawn.cs.uid
deleted file mode 100644
index 1e4c35c..0000000
--- a/addons/pvzadventure/ZombieRowSpawn.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ct730nm5jan8i
diff --git a/addons/pvzadventure/icons/delete.png b/addons/pvzadventure/icons/delete.png
deleted file mode 100644
index b4c6f31..0000000
Binary files a/addons/pvzadventure/icons/delete.png and /dev/null differ
diff --git a/addons/pvzadventure/plugin.cfg b/addons/pvzadventure/plugin.cfg
deleted file mode 100644
index 0f16885..0000000
--- a/addons/pvzadventure/plugin.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-[plugin]
-
-name="PvZAdventure"
-description=""
-author="R34nd0"
-version="1.0"
-script="PvZAdventure.cs"
diff --git a/addons/pvzadventure/scenes/adventure-editor/adventure_editor.tscn b/addons/pvzadventure/scenes/adventure-editor/adventure_editor.tscn
deleted file mode 100644
index 134f5b3..0000000
--- a/addons/pvzadventure/scenes/adventure-editor/adventure_editor.tscn
+++ /dev/null
@@ -1,92 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://dkq82o31vr3i2"]
-
-[ext_resource type="Script" uid="uid://dkgxtig5fwdgi" path="res://addons/pvzadventure/scripts/adventure-editor/AdventureEditor.cs" id="1_go5yu"]
-[ext_resource type="Script" uid="uid://binuuattefn7d" path="res://addons/pvzadventure/scripts/FileButton.cs" id="2_d5hwn"]
-[ext_resource type="Script" uid="uid://c6jttmpeyakoa" path="res://addons/pvzadventure/scripts/EditorsContainer.cs" id="3_5imrs"]
-[ext_resource type="Script" uid="uid://b0hl4ap18wbb2" path="res://addons/pvzadventure/scripts/adventure-editor/AdventureResourceInspector.cs" id="3_d5hwn"]
-
-[node name="AdventureEditor" type="MarginContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-theme_override_constants/margin_left = 5
-theme_override_constants/margin_top = 5
-theme_override_constants/margin_right = 5
-theme_override_constants/margin_bottom = 5
-script = ExtResource("1_go5yu")
-
-[node name="Editor" type="VBoxContainer" parent="."]
-layout_mode = 2
-
-[node name="StatusBar" type="PanelContainer" parent="Editor"]
-layout_mode = 2
-
-[node name="HBoxContainer" type="HBoxContainer" parent="Editor/StatusBar"]
-layout_mode = 2
-
-[node name="FileButton" type="MenuButton" parent="Editor/StatusBar/HBoxContainer"]
-layout_mode = 2
-text = "File"
-switch_on_hover = true
-item_count = 2
-popup/item_0/text = "New"
-popup/item_0/id = 0
-popup/item_1/text = "Open"
-popup/item_1/id = 1
-script = ExtResource("2_d5hwn")
-
-[node name="FileDialog" type="FileDialog" parent="Editor/StatusBar/HBoxContainer/FileButton"]
-
-[node name="PlayButton" type="Button" parent="Editor/StatusBar/HBoxContainer"]
-layout_mode = 2
-text = "Play"
-flat = true
-
-[node name="WorkArea" type="HSplitContainer" parent="Editor"]
-layout_mode = 2
-size_flags_vertical = 3
-
-[node name="PanelContainer" type="PanelContainer" parent="Editor/WorkArea"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_stretch_ratio = 3.0
-script = ExtResource("3_5imrs")
-
-[node name="Inspector" type="VSplitContainer" parent="Editor/WorkArea"]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="ResourceInspector" type="VBoxContainer" parent="Editor/WorkArea/Inspector" node_paths=PackedStringArray("editorContainer", "adventureEditor")]
-layout_mode = 2
-size_flags_vertical = 3
-script = ExtResource("3_d5hwn")
-editorContainer = NodePath("../../PanelContainer")
-adventureEditor = NodePath("../../../..")
-
-[node name="Tree" type="Tree" parent="Editor/WorkArea/Inspector/ResourceInspector"]
-custom_minimum_size = Vector2(0, 100)
-layout_mode = 2
-size_flags_vertical = 3
-hide_folding = true
-enable_recursive_folding = false
-
-[node name="ControlButtons" type="HBoxContainer" parent="Editor/WorkArea/Inspector/ResourceInspector"]
-layout_mode = 2
-size_flags_vertical = 8
-
-[node name="NewButton" type="Button" parent="Editor/WorkArea/Inspector/ResourceInspector/ControlButtons"]
-layout_mode = 2
-text = "New"
-
-[connection signal="HardReloadRequested" from="." to="Editor/WorkArea/PanelContainer" method="ClearChildren"]
-[connection signal="ResourceChanged" from="." to="Editor/WorkArea/Inspector/ResourceInspector" method="Refresh"]
-[connection signal="pressed" from="Editor/StatusBar/HBoxContainer/PlayButton" to="." method="Play"]
-[connection signal="Refreshed" from="Editor/WorkArea/Inspector/ResourceInspector" to="." method="Save"]
-[connection signal="button_clicked" from="Editor/WorkArea/Inspector/ResourceInspector/Tree" to="Editor/WorkArea/Inspector/ResourceInspector" method="OnTreeButtonClicked"]
-[connection signal="item_edited" from="Editor/WorkArea/Inspector/ResourceInspector/Tree" to="Editor/WorkArea/Inspector/ResourceInspector" method="OnItemEdited"]
-[connection signal="item_selected" from="Editor/WorkArea/Inspector/ResourceInspector/Tree" to="Editor/WorkArea/Inspector/ResourceInspector" method="OnItemSelected"]
-[connection signal="pressed" from="Editor/WorkArea/Inspector/ResourceInspector/ControlButtons/NewButton" to="Editor/WorkArea/Inspector/ResourceInspector" method="OnNewButtonPressed"]
diff --git a/addons/pvzadventure/scenes/initial-editor/initial_editor.tscn b/addons/pvzadventure/scenes/initial-editor/initial_editor.tscn
deleted file mode 100644
index 75a39d5..0000000
--- a/addons/pvzadventure/scenes/initial-editor/initial_editor.tscn
+++ /dev/null
@@ -1,153 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://sqessjn0m4o3"]
-
-[ext_resource type="PackedScene" uid="uid://djb8ynxhnmo0t" path="res://addons/pvzadventure/scenes/initial-editor/universal_grid_item.tscn" id="1_d8e2t"]
-[ext_resource type="Script" uid="uid://cumeahjpjgagq" path="res://addons/pvzadventure/scripts/InitialEditor.cs" id="1_tu7vy"]
-
-[node name="InitialEditor" type="ScrollContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_tu7vy")
-
-[node name="GridContainer" type="GridContainer" parent="."]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-columns = 9
-
-[node name="GridItem" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem2" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem3" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem4" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem5" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem6" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem7" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem8" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem9" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem10" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem11" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem12" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem13" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem14" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem15" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem16" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem17" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem18" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem19" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem20" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem21" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem22" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem23" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem24" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem25" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem26" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem27" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem28" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem29" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem30" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem31" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem32" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem33" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem34" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem35" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem36" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem37" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem38" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem39" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem40" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem41" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem42" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem43" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem44" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
-
-[node name="GridItem45" parent="GridContainer" instance=ExtResource("1_d8e2t")]
-layout_mode = 2
diff --git a/addons/pvzadventure/scenes/initial-editor/universal_grid_item.tscn b/addons/pvzadventure/scenes/initial-editor/universal_grid_item.tscn
deleted file mode 100644
index a1ccc89..0000000
--- a/addons/pvzadventure/scenes/initial-editor/universal_grid_item.tscn
+++ /dev/null
@@ -1,35 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://djb8ynxhnmo0t"]
-
-[ext_resource type="Script" uid="uid://b8ccbjhhus7xk" path="res://addons/pvzadventure/scripts/UNI_GridItem.cs" id="1_e5mae"]
-[ext_resource type="Script" uid="uid://c3cgpwy1qaeww" path="res://addons/pvzadventure/scripts/packed_scene_preview_generator.gd" id="2_k7w8c"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_jbknv"]
-bg_color = Color(0.18359, 0.18359, 0.18359, 1)
-border_color = Color(0.140447, 0.140447, 0.140447, 1)
-corner_radius_top_left = 5
-corner_radius_top_right = 5
-corner_radius_bottom_right = 5
-corner_radius_bottom_left = 5
-
-[node name="GridItem" type="PanelContainer"]
-clip_contents = true
-custom_minimum_size = Vector2(100, 100)
-anchors_preset = -1
-anchor_right = 0.172
-anchor_bottom = 0.212
-offset_right = -0.200005
-offset_bottom = 0.199997
-theme_override_styles/panel = SubResource("StyleBoxFlat_jbknv")
-script = ExtResource("1_e5mae")
-
-[node name="Texture" type="TextureRect" parent="."]
-layout_mode = 2
-expand_mode = 1
-stretch_mode = 5
-script = ExtResource("2_k7w8c")
-
-[node name="Viewport" type="SubViewport" parent="Texture"]
-process_mode = 4
-transparent_bg = true
-
-[node name="Camera2D" type="Camera2D" parent="Texture/Viewport"]
diff --git a/addons/pvzadventure/scenes/seedpack-editor/editor_seedpacket.tscn b/addons/pvzadventure/scenes/seedpack-editor/editor_seedpacket.tscn
deleted file mode 100644
index 926cc1d..0000000
--- a/addons/pvzadventure/scenes/seedpack-editor/editor_seedpacket.tscn
+++ /dev/null
@@ -1,47 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://dwbqlfs51en62"]
-
-[ext_resource type="Texture2D" uid="uid://dxyf557m4mq1p" path="res://assets/sprites/gui/EmptyPlantCard.png" id="1_dmimt"]
-[ext_resource type="Texture2D" uid="uid://cabpf23ndlvx0" path="res://assets/sprites/gui/Selection.tres" id="2_0vy3a"]
-[ext_resource type="Script" uid="uid://bhah157u6q56b" path="res://addons/pvzadventure/scripts/seedpacket-editor/DnDSeedpacket.cs" id="3_61l76"]
-
-[node name="EditorSeedpacket" type="TextureButton" node_paths=PackedStringArray("preview")]
-anchors_preset = -1
-anchor_right = 0.103667
-anchor_bottom = 0.21
-offset_right = -0.199997
-mouse_default_cursor_shape = 2
-texture_normal = ExtResource("1_dmimt")
-texture_focused = ExtResource("2_0vy3a")
-stretch_mode = 0
-script = ExtResource("3_61l76")
-preview = NodePath("PlantPreviewContainer/Preview")
-metadata/_edit_use_anchors_ = true
-
-[node name="PlantPreviewContainer" type="Control" parent="."]
-clip_contents = true
-layout_mode = 1
-anchor_left = -0.061
-anchor_top = -0.036
-anchor_right = 1.061
-anchor_bottom = 0.661
-offset_left = 0.00199986
-offset_top = 0.0320001
-offset_right = -0.0019989
-offset_bottom = -0.0319977
-mouse_filter = 2
-
-[node name="Preview" type="TextureRect" parent="PlantPreviewContainer"]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.185
-anchor_top = 0.205
-anchor_right = 0.815
-anchor_bottom = 1.333
-offset_left = -0.0200005
-offset_top = 0.00999928
-offset_right = 0.0199966
-offset_bottom = 0.0259933
-mouse_filter = 2
-mouse_default_cursor_shape = 2
-expand_mode = 1
-stretch_mode = 5
diff --git a/addons/pvzadventure/scenes/seedpack-editor/foribidden_editor_seedpacket.tscn b/addons/pvzadventure/scenes/seedpack-editor/foribidden_editor_seedpacket.tscn
deleted file mode 100644
index 8258894..0000000
--- a/addons/pvzadventure/scenes/seedpack-editor/foribidden_editor_seedpacket.tscn
+++ /dev/null
@@ -1,59 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://dymyownbt688c"]
-
-[ext_resource type="Texture2D" uid="uid://dxyf557m4mq1p" path="res://assets/sprites/gui/EmptyPlantCard.png" id="1_x27jk"]
-[ext_resource type="Texture2D" uid="uid://cabpf23ndlvx0" path="res://assets/sprites/gui/Selection.tres" id="2_m8071"]
-[ext_resource type="Texture2D" uid="uid://cjkwy3u0wuax3" path="res://assets/sprites/gui/ForbiddenPacket.tres" id="3_ji8qd"]
-[ext_resource type="Script" uid="uid://cy5t2lk5g75x7" path="res://addons/pvzadventure/scripts/seedpacket-editor/ForbiddableSeedpacket.cs" id="3_m8071"]
-
-[node name="EditorSeedpacket" type="TextureButton" node_paths=PackedStringArray("preview", "forrbidTexture")]
-anchors_preset = -1
-anchor_right = 0.137
-anchor_bottom = 0.28
-offset_right = -0.199997
-mouse_default_cursor_shape = 2
-texture_normal = ExtResource("1_x27jk")
-texture_focused = ExtResource("2_m8071")
-stretch_mode = 0
-script = ExtResource("3_m8071")
-preview = NodePath("PlantPreviewContainer/Preview")
-forrbidTexture = NodePath("ForbiddenTexture")
-metadata/_edit_use_anchors_ = true
-
-[node name="PlantPreviewContainer" type="Control" parent="."]
-clip_contents = true
-layout_mode = 1
-anchor_left = -0.061
-anchor_top = -0.036
-anchor_right = 1.061
-anchor_bottom = 0.661
-offset_left = 0.00199986
-offset_top = 0.0320001
-offset_right = -0.0019989
-offset_bottom = -0.0319977
-mouse_filter = 2
-
-[node name="Preview" type="TextureRect" parent="PlantPreviewContainer"]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.185
-anchor_top = 0.205
-anchor_right = 0.815
-anchor_bottom = 1.333
-offset_left = -0.0200005
-offset_top = 0.00999928
-offset_right = 0.0199966
-offset_bottom = 0.0259933
-mouse_filter = 2
-mouse_default_cursor_shape = 2
-expand_mode = 1
-stretch_mode = 5
-
-[node name="ForbiddenTexture" type="TextureRect" parent="."]
-visible = false
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = ExtResource("3_ji8qd")
diff --git a/addons/pvzadventure/scenes/seedpack-editor/seedpacket_editor.tscn b/addons/pvzadventure/scenes/seedpack-editor/seedpacket_editor.tscn
deleted file mode 100644
index 2ab8ecc..0000000
--- a/addons/pvzadventure/scenes/seedpack-editor/seedpacket_editor.tscn
+++ /dev/null
@@ -1,155 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://drc0o8du38apr"]
-
-[ext_resource type="PackedScene" uid="uid://dwbqlfs51en62" path="res://addons/pvzadventure/scenes/seedpack-editor/editor_seedpacket.tscn" id="1_m5lsd"]
-[ext_resource type="Script" uid="uid://d1ks2q0c3eu0v" path="res://addons/pvzadventure/scripts/seedpacket-editor/SeedpacketEditor.cs" id="1_vrmxn"]
-
-[node name="SeedpacketEditor" type="ScrollContainer"]
-texture_filter = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-horizontal_scroll_mode = 0
-script = ExtResource("1_vrmxn")
-metadata/_edit_lock_ = true
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-metadata/_edit_lock_ = true
-
-[node name="PrepickedPlants" type="VBoxContainer" parent="VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-
-[node name="Label" type="Label" parent="VBoxContainer/PrepickedPlants"]
-layout_mode = 2
-text = "Prepicked plants"
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="PrepickedContainer" type="HBoxContainer" parent="VBoxContainer/PrepickedPlants"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_vertical = 3
-alignment = 1
-
-[node name="Slot1" type="AspectRatioContainer" parent="VBoxContainer/PrepickedPlants/PrepickedContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-ratio = 0.7321
-
-[node name="Seedpacket" parent="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot1" instance=ExtResource("1_m5lsd")]
-layout_mode = 2
-
-[node name="Slot2" type="AspectRatioContainer" parent="VBoxContainer/PrepickedPlants/PrepickedContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-ratio = 0.7321
-
-[node name="Seedpacket" parent="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot2" instance=ExtResource("1_m5lsd")]
-layout_mode = 2
-
-[node name="Slot3" type="AspectRatioContainer" parent="VBoxContainer/PrepickedPlants/PrepickedContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-ratio = 0.7321
-
-[node name="Seedpacket" parent="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot3" instance=ExtResource("1_m5lsd")]
-layout_mode = 2
-
-[node name="Slot4" type="AspectRatioContainer" parent="VBoxContainer/PrepickedPlants/PrepickedContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-ratio = 0.7321
-
-[node name="Seedpacket" parent="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot4" instance=ExtResource("1_m5lsd")]
-layout_mode = 2
-
-[node name="Slot5" type="AspectRatioContainer" parent="VBoxContainer/PrepickedPlants/PrepickedContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-ratio = 0.7321
-
-[node name="Seedpacket" parent="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot5" instance=ExtResource("1_m5lsd")]
-layout_mode = 2
-
-[node name="Slot6" type="AspectRatioContainer" parent="VBoxContainer/PrepickedPlants/PrepickedContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-ratio = 0.7321
-
-[node name="Seedpacket" parent="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot6" instance=ExtResource("1_m5lsd")]
-layout_mode = 2
-
-[node name="Slot7" type="AspectRatioContainer" parent="VBoxContainer/PrepickedPlants/PrepickedContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-ratio = 0.7321
-
-[node name="Seedpacket" parent="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot7" instance=ExtResource("1_m5lsd")]
-layout_mode = 2
-
-[node name="Slot8" type="AspectRatioContainer" parent="VBoxContainer/PrepickedPlants/PrepickedContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-ratio = 0.7321
-
-[node name="Seedpacket" parent="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot8" instance=ExtResource("1_m5lsd")]
-layout_mode = 2
-
-[node name="Slot9" type="AspectRatioContainer" parent="VBoxContainer/PrepickedPlants/PrepickedContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-ratio = 0.7321
-
-[node name="Seedpacket" parent="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot9" instance=ExtResource("1_m5lsd")]
-layout_mode = 2
-
-[node name="ForbiddenTags" type="VBoxContainer" parent="VBoxContainer"]
-visible = false
-layout_mode = 2
-size_flags_vertical = 3
-alignment = 1
-
-[node name="Label" type="Label" parent="VBoxContainer/ForbiddenTags"]
-layout_mode = 2
-text = "Forbidden tags"
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="TagsContainer" type="GridContainer" parent="VBoxContainer/ForbiddenTags"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_vertical = 3
-columns = 9
-
-[node name="ForbiddenPlants" type="VBoxContainer" parent="VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-alignment = 1
-
-[node name="Label" type="Label" parent="VBoxContainer/ForbiddenPlants"]
-layout_mode = 2
-text = "Forbidden plants"
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="FPlantsContainer" type="GridContainer" parent="VBoxContainer/ForbiddenPlants"]
-unique_name_in_owner = true
-layout_mode = 2
-size_flags_horizontal = 4
-size_flags_vertical = 3
-columns = 9
-
-[connection signal="SaveCallback" from="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot1/Seedpacket" to="." method="Save"]
-[connection signal="SaveCallback" from="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot2/Seedpacket" to="." method="Save"]
-[connection signal="SaveCallback" from="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot3/Seedpacket" to="." method="Save"]
-[connection signal="SaveCallback" from="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot4/Seedpacket" to="." method="Save"]
-[connection signal="SaveCallback" from="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot5/Seedpacket" to="." method="Save"]
-[connection signal="SaveCallback" from="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot6/Seedpacket" to="." method="Save"]
-[connection signal="SaveCallback" from="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot7/Seedpacket" to="." method="Save"]
-[connection signal="SaveCallback" from="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot8/Seedpacket" to="." method="Save"]
-[connection signal="SaveCallback" from="VBoxContainer/PrepickedPlants/PrepickedContainer/Slot9/Seedpacket" to="." method="Save"]
diff --git a/addons/pvzadventure/scenes/zombie-editor/asset_browser_button.tscn b/addons/pvzadventure/scenes/zombie-editor/asset_browser_button.tscn
deleted file mode 100644
index f135cd9..0000000
--- a/addons/pvzadventure/scenes/zombie-editor/asset_browser_button.tscn
+++ /dev/null
@@ -1,27 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://iwnklc62rni8"]
-
-[ext_resource type="Script" uid="uid://cpedvgx23hlko" path="res://addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowserButton.cs" id="1_jbknv"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_jbknv"]
-bg_color = Color(0.18359, 0.18359, 0.18359, 1)
-border_color = Color(0.140447, 0.140447, 0.140447, 1)
-corner_radius_top_left = 5
-corner_radius_top_right = 5
-corner_radius_bottom_right = 5
-corner_radius_bottom_left = 5
-
-[node name="AssetBrowserButton" type="PanelContainer"]
-clip_contents = true
-custom_minimum_size = Vector2(100, 100)
-anchors_preset = -1
-anchor_right = 0.172
-anchor_bottom = 0.25
-offset_right = -0.200005
-offset_bottom = -15.0
-theme_override_styles/panel = SubResource("StyleBoxFlat_jbknv")
-script = ExtResource("1_jbknv")
-
-[node name="Texture" type="TextureRect" parent="."]
-layout_mode = 2
-expand_mode = 1
-stretch_mode = 5
diff --git a/addons/pvzadventure/scenes/zombie-editor/ze_grid_item.tscn b/addons/pvzadventure/scenes/zombie-editor/ze_grid_item.tscn
deleted file mode 100644
index ecc6455..0000000
--- a/addons/pvzadventure/scenes/zombie-editor/ze_grid_item.tscn
+++ /dev/null
@@ -1,27 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://segxys6udhyw"]
-
-[ext_resource type="Script" uid="uid://fof6kr0et8ng" path="res://addons/pvzadventure/scripts/zombie-editor/ZE_GridItem.cs" id="1_fwfh1"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_jbknv"]
-bg_color = Color(0.18359, 0.18359, 0.18359, 1)
-border_color = Color(0.140447, 0.140447, 0.140447, 1)
-corner_radius_top_left = 5
-corner_radius_top_right = 5
-corner_radius_bottom_right = 5
-corner_radius_bottom_left = 5
-
-[node name="GridItem" type="PanelContainer"]
-clip_contents = true
-custom_minimum_size = Vector2(100, 100)
-anchors_preset = -1
-anchor_right = 0.172
-anchor_bottom = 0.25
-offset_right = -0.200005
-offset_bottom = -15.0
-theme_override_styles/panel = SubResource("StyleBoxFlat_jbknv")
-script = ExtResource("1_fwfh1")
-
-[node name="Texture" type="TextureRect" parent="."]
-layout_mode = 2
-expand_mode = 1
-stretch_mode = 5
diff --git a/addons/pvzadventure/scenes/zombie-editor/ze_row_editor.tscn b/addons/pvzadventure/scenes/zombie-editor/ze_row_editor.tscn
deleted file mode 100644
index 38390c9..0000000
--- a/addons/pvzadventure/scenes/zombie-editor/ze_row_editor.tscn
+++ /dev/null
@@ -1,11 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://buvnw8a7pku78"]
-
-[ext_resource type="Script" uid="uid://q84g5imvatfl" path="res://addons/pvzadventure/scripts/zombie-editor/ZE_RowEditor.cs" id="1_wm7b4"]
-
-[node name="RowEditor" type="VBoxContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_wm7b4")
diff --git a/addons/pvzadventure/scenes/zombie-editor/zombie_editor.tscn b/addons/pvzadventure/scenes/zombie-editor/zombie_editor.tscn
deleted file mode 100644
index c799abf..0000000
--- a/addons/pvzadventure/scenes/zombie-editor/zombie_editor.tscn
+++ /dev/null
@@ -1,136 +0,0 @@
-[gd_scene load_steps=10 format=3 uid="uid://db5ah76l43ng2"]
-
-[ext_resource type="Script" uid="uid://bnuno3uhya4sg" path="res://addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowser.cs" id="1_klhya"]
-[ext_resource type="Script" uid="uid://bd5hl0etgvf5a" path="res://addons/pvzadventure/scripts/zombie-editor/ZombieEditor.cs" id="1_thd7y"]
-[ext_resource type="Script" uid="uid://do7s5mo36c280" path="res://addons/pvzadventure/scripts/zombie-editor/ZE_GridContainer.cs" id="2_13ic4"]
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_thd7y"]
-bg_color = Color(0.430693, 0.742747, 0.314214, 1)
-corner_radius_top_left = 5
-corner_radius_top_right = 5
-corner_radius_bottom_right = 5
-corner_radius_bottom_left = 5
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a2umq"]
-bg_color = Color(0.503317, 0.859941, 0.370424, 1)
-corner_radius_top_left = 5
-corner_radius_top_right = 5
-corner_radius_bottom_right = 5
-corner_radius_bottom_left = 5
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_13ic4"]
-bg_color = Color(0.655235, 0.676224, 0.627655, 1)
-corner_radius_top_left = 5
-corner_radius_top_right = 5
-corner_radius_bottom_right = 5
-corner_radius_bottom_left = 5
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h81wb"]
-bg_color = Color(1, 0.617482, 0.590722, 1)
-corner_radius_top_left = 5
-corner_radius_top_right = 5
-corner_radius_bottom_right = 5
-corner_radius_bottom_left = 5
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vak4b"]
-bg_color = Color(0.655235, 0.676224, 0.627655, 1)
-corner_radius_top_left = 5
-corner_radius_top_right = 5
-corner_radius_bottom_right = 5
-corner_radius_bottom_left = 5
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_nm0oj"]
-bg_color = Color(0.999983, 0.30398, 0.31271, 1)
-corner_radius_top_left = 5
-corner_radius_top_right = 5
-corner_radius_bottom_right = 5
-corner_radius_bottom_left = 5
-
-[node name="ZombieEditor" type="VBoxContainer" node_paths=PackedStringArray("container")]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_thd7y")
-container = NodePath("ZombieGrid/HBoxContainer/RowEditors")
-
-[node name="ZombieGrid" type="ScrollContainer" parent="."]
-layout_mode = 2
-size_flags_vertical = 3
-size_flags_stretch_ratio = 3.0
-horizontal_scroll_mode = 2
-vertical_scroll_mode = 0
-
-[node name="HBoxContainer" type="HBoxContainer" parent="ZombieGrid"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-
-[node name="RowEditors" type="HBoxContainer" parent="ZombieGrid/HBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-size_flags_stretch_ratio = 3.0
-script = ExtResource("2_13ic4")
-
-[node name="ControlButtons" type="VBoxContainer" parent="ZombieGrid/HBoxContainer"]
-layout_mode = 2
-
-[node name="NewButton" type="Button" parent="ZombieGrid/HBoxContainer/ControlButtons"]
-custom_minimum_size = Vector2(32, 0)
-layout_mode = 2
-size_flags_vertical = 3
-theme_override_colors/font_disabled_color = Color(1, 1, 1, 1)
-theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1)
-theme_override_colors/font_hover_color = Color(1, 1, 1, 1)
-theme_override_colors/font_color = Color(1, 1, 1, 1)
-theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
-theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
-theme_override_font_sizes/font_size = 24
-theme_override_styles/disabled_mirrored = SubResource("StyleBoxFlat_thd7y")
-theme_override_styles/disabled = SubResource("StyleBoxFlat_thd7y")
-theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_a2umq")
-theme_override_styles/hover_mirrored = SubResource("StyleBoxFlat_a2umq")
-theme_override_styles/hover = SubResource("StyleBoxFlat_thd7y")
-theme_override_styles/pressed_mirrored = SubResource("StyleBoxFlat_13ic4")
-theme_override_styles/pressed = SubResource("StyleBoxFlat_13ic4")
-theme_override_styles/normal_mirrored = SubResource("StyleBoxFlat_thd7y")
-theme_override_styles/normal = SubResource("StyleBoxFlat_thd7y")
-text = "+"
-
-[node name="RemoveButton" type="Button" parent="ZombieGrid/HBoxContainer/ControlButtons"]
-custom_minimum_size = Vector2(32, 0)
-layout_mode = 2
-size_flags_vertical = 3
-theme_override_colors/font_disabled_color = Color(1, 1, 1, 1)
-theme_override_colors/font_hover_pressed_color = Color(1, 1, 1, 1)
-theme_override_colors/font_hover_color = Color(1, 1, 1, 1)
-theme_override_colors/font_color = Color(1, 1, 1, 1)
-theme_override_colors/font_focus_color = Color(1, 1, 1, 1)
-theme_override_colors/font_pressed_color = Color(0, 0, 0, 1)
-theme_override_font_sizes/font_size = 24
-theme_override_styles/disabled_mirrored = SubResource("StyleBoxFlat_h81wb")
-theme_override_styles/disabled = SubResource("StyleBoxFlat_h81wb")
-theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_h81wb")
-theme_override_styles/hover_mirrored = SubResource("StyleBoxFlat_h81wb")
-theme_override_styles/hover = SubResource("StyleBoxFlat_h81wb")
-theme_override_styles/pressed_mirrored = SubResource("StyleBoxFlat_vak4b")
-theme_override_styles/pressed = SubResource("StyleBoxFlat_vak4b")
-theme_override_styles/normal_mirrored = SubResource("StyleBoxFlat_nm0oj")
-theme_override_styles/normal = SubResource("StyleBoxFlat_nm0oj")
-text = "-"
-
-[node name="AssetBrowser" type="ScrollContainer" parent="."]
-layout_mode = 2
-size_flags_vertical = 3
-vertical_scroll_mode = 0
-
-[node name="HBoxContainer" type="HBoxContainer" parent="AssetBrowser"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-script = ExtResource("1_klhya")
-
-[connection signal="SaveCallback" from="ZombieGrid/HBoxContainer/RowEditors" to="." method="Save"]
-[connection signal="pressed" from="ZombieGrid/HBoxContainer/ControlButtons/NewButton" to="ZombieGrid/HBoxContainer/RowEditors" method="AddSpawn"]
-[connection signal="pressed" from="ZombieGrid/HBoxContainer/ControlButtons/RemoveButton" to="ZombieGrid/HBoxContainer/RowEditors" method="RemoveSpawn"]
diff --git a/addons/pvzadventure/scripts/BaseEditor.cs b/addons/pvzadventure/scripts/BaseEditor.cs
deleted file mode 100644
index 751a183..0000000
--- a/addons/pvzadventure/scripts/BaseEditor.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Godot;
-
-[Tool]
-public abstract partial class BaseEditor : Node
-{
- public AdventureLevelResource editedResource;
- [Signal] public delegate void SaveCallbackEventHandler();
- public virtual void SetEditedData(AdventureLevelResource data)
- {
- editedResource = data;
- }
- public virtual void Save()
- {
- EmitSignal(SignalName.SaveCallback);
- }
-}
diff --git a/addons/pvzadventure/scripts/BaseEditor.cs.uid b/addons/pvzadventure/scripts/BaseEditor.cs.uid
deleted file mode 100644
index 7effb93..0000000
--- a/addons/pvzadventure/scripts/BaseEditor.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dxtrrfg1pba4p
diff --git a/addons/pvzadventure/scripts/BaseWaveEditor.cs b/addons/pvzadventure/scripts/BaseWaveEditor.cs
deleted file mode 100644
index 7bfb72d..0000000
--- a/addons/pvzadventure/scripts/BaseWaveEditor.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-public abstract partial class BaseWaveEditor : BaseEditor
-{
- public WaveData editedWave;
- public abstract void SetEditedWave(WaveData wave);
-}
diff --git a/addons/pvzadventure/scripts/BaseWaveEditor.cs.uid b/addons/pvzadventure/scripts/BaseWaveEditor.cs.uid
deleted file mode 100644
index b12ecb4..0000000
--- a/addons/pvzadventure/scripts/BaseWaveEditor.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b23csior6audk
diff --git a/addons/pvzadventure/scripts/EditorsContainer.cs b/addons/pvzadventure/scripts/EditorsContainer.cs
deleted file mode 100644
index a9db41c..0000000
--- a/addons/pvzadventure/scripts/EditorsContainer.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Godot;
-
-[Tool]
-public partial class EditorsContainer : PanelContainer
-{
- public void ClearChildren()
- {
- foreach (var child in GetChildren())
- {
- child.QueueFree();
- }
- }
-}
diff --git a/addons/pvzadventure/scripts/EditorsContainer.cs.uid b/addons/pvzadventure/scripts/EditorsContainer.cs.uid
deleted file mode 100644
index 3f3ce39..0000000
--- a/addons/pvzadventure/scripts/EditorsContainer.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c6jttmpeyakoa
diff --git a/addons/pvzadventure/scripts/FileButton.cs b/addons/pvzadventure/scripts/FileButton.cs
deleted file mode 100644
index 050aa05..0000000
--- a/addons/pvzadventure/scripts/FileButton.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using Godot;
-
-#if TOOLS
-[Tool]
-public partial class FileButton : MenuButton
-{
- const int NEWFILE = 0;
- const int OPENFILE = 1;
- private AdventureEditor editor;
- private FileDialog dialog;
- private int chosenOption = -1;
- public override void _Ready()
- {
- editor = (AdventureEditor)FindParent("AdventureEditor");
- dialog = GetNode("FileDialog");
-
- GetPopup().IndexPressed += OnIndexPressed;
- dialog.FileSelected += OnFileSelected;
- }
-
- private void OnIndexPressed(long index)
- {
- chosenOption = (int)index;
- if (index == NEWFILE)
- {
- editor.editedResource = new AdventureLevelResource();
- dialog.PopupCentered();
- dialog.FileMode = FileDialog.FileModeEnum.SaveFile;
- }
- else if (index == OPENFILE)
- {
- dialog.PopupCentered();
- dialog.FileMode = FileDialog.FileModeEnum.OpenFile;
- }
- }
- private void OnFileSelected(string path)
- {
- editor.editedPath = path;
- if (chosenOption == NEWFILE)
- {
- editor.Save();
- editor.HardReload();
- }
- else if (chosenOption == OPENFILE)
- {
- editor.HardReload();
- }
- }
-
-}
-#endif
\ No newline at end of file
diff --git a/addons/pvzadventure/scripts/FileButton.cs.uid b/addons/pvzadventure/scripts/FileButton.cs.uid
deleted file mode 100644
index ca890dd..0000000
--- a/addons/pvzadventure/scripts/FileButton.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://binuuattefn7d
diff --git a/addons/pvzadventure/scripts/InitialEditor.cs b/addons/pvzadventure/scripts/InitialEditor.cs
deleted file mode 100644
index 4048452..0000000
--- a/addons/pvzadventure/scripts/InitialEditor.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using Godot;
-
-[Tool]
-public partial class InitialEditor : BaseEditor
-{
- public override void _Ready()
- {
- foreach (var child in GetChild(0).GetChildren())
- {
- if (child is UNI_GridItem gridItem)
- {
- gridItem.ResourceChanged += OnResourceChanged;
- }
- }
- }
- public override void SetEditedData(AdventureLevelResource resource)
- {
- editedResource = resource;
- for (int i = 0; i < GetChild(0).GetChildCount(); i++)
- {
- if (GetChild(0).GetChild(i) is UNI_GridItem gridItem)
- {
- gridItem.index = i;
- if (editedResource.initialScenes[i] == null)
- gridItem.SetData("");
- else
- gridItem.SetData(editedResource.initialScenes[i].ResourcePath);
- }
- }
- }
- public void OnResourceChanged(string to, int index)
- {
- if (ResourceLoader.Exists(to))
- {
- editedResource.initialScenes[index] = ResourceLoader.Load(to);
- }
- else
- {
- editedResource.initialScenes[index] = null;
- }
- EmitSignal(SignalName.SaveCallback);
- }
-
-}
diff --git a/addons/pvzadventure/scripts/InitialEditor.cs.uid b/addons/pvzadventure/scripts/InitialEditor.cs.uid
deleted file mode 100644
index 76241f7..0000000
--- a/addons/pvzadventure/scripts/InitialEditor.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cumeahjpjgagq
diff --git a/addons/pvzadventure/scripts/UNI_GridItem.cs b/addons/pvzadventure/scripts/UNI_GridItem.cs
deleted file mode 100644
index 1fb2ff7..0000000
--- a/addons/pvzadventure/scripts/UNI_GridItem.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using Godot;
-
-[Tool]
-public partial class UNI_GridItem : PanelContainer
-{
- private string path;
- public int index;
- [Signal] public delegate void ResourceChangedEventHandler(string path, int index);
- public void SetData(string data)
- {
- path = data;
- UpdateContent();
- }
- private void UpdateContent()
- {
- if (path == null || path == "")
- {
- GetNode("Texture").Texture = null;
- return;
- }
- GetNode("Texture").Call("set_path", path);
- }
-
- public override Variant _GetDragData(Vector2 atPosition)
- {
- return path;
- }
- public override bool _CanDropData(Vector2 atPosition, Variant data)
- {
- return data.AsGodotDictionary().ContainsKey("files") && ResourceLoader.Exists(data.AsGodotDictionary()["files"].AsStringArray()[0]);
- }
- public override void _DropData(Vector2 atPosition, Variant data)
- {
- SetData(data.AsGodotDictionary()["files"].AsStringArray()[0]);
- EmitSignal(SignalName.ResourceChanged, path, index);
-
- }
- public override void _GuiInput(InputEvent @event)
- {
- if (@event is InputEventMouseButton buttonEvent && buttonEvent.ButtonIndex == MouseButton.Right )
- {
- SetData(null);
- EmitSignal(SignalName.ResourceChanged, path, index);
- }
- }
-}
diff --git a/addons/pvzadventure/scripts/UNI_GridItem.cs.uid b/addons/pvzadventure/scripts/UNI_GridItem.cs.uid
deleted file mode 100644
index 6e63976..0000000
--- a/addons/pvzadventure/scripts/UNI_GridItem.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b8ccbjhhus7xk
diff --git a/addons/pvzadventure/scripts/adventure-editor/AdventureEditor.cs b/addons/pvzadventure/scripts/adventure-editor/AdventureEditor.cs
deleted file mode 100644
index 32b1ccd..0000000
--- a/addons/pvzadventure/scripts/adventure-editor/AdventureEditor.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using Godot;
-
-#if TOOLS
-[Tool]
-public partial class AdventureEditor : MarginContainer
-{
- public AdventureLevelResource editedResource;
- public string editedPath;
-
- [Signal]
- public delegate void ResourceChangedEventHandler(AdventureLevelResource to);
- [Signal]
- public delegate void ReloadRequestedEventHandler();
- [Signal]
- public delegate void HardReloadRequestedEventHandler();
-
- public override void _Ready()
- {
- EditorInterface.Singleton.GetInspector().PropertyEdited += OnInspectorPropertyChanged;
- EditorInterface.Singleton.GetInspector().EditedObjectChanged += OnResourceChanged;
- }
-
- public void Reload()
- {
- EmitSignal(SignalName.ReloadRequested);
- }
- public void HardReload()
- {
- editedResource = ResourceLoader.Load(editedPath);
- EmitSignal(SignalName.ResourceChanged, editedResource);
- EmitSignal(SignalName.HardReloadRequested);
- Reload();
- }
-
- public void Save()
- {
- if (editedPath.EndsWith(".tres") == false)
- {
- editedPath += ".tres";
- }
- ResourceSaver.Save(editedResource, editedPath);
- }
- public void OnInspectorPropertyChanged(string property)
- {
- if (EditorInterface.Singleton.GetInspector().GetEditedObject() is AdventureLevelResource resource && resource.ResourcePath == editedPath)
- {
- HardReload();
- }
- }
- public void OnResourceChanged()
- {
- if (EditorInterface.Singleton.GetInspector().GetEditedObject() is AdventureLevelResource resource)
- {
- editedPath = resource.ResourcePath;
- HardReload();
- }
- }
- public void Play()
- {
- if (ResourceLoader.Exists(editedPath) == false) return;
- var player = new AdventurePlayer();
- var packed = new PackedScene();
- player.pathToLevel = editedPath;
- packed.Pack(player);
- ResourceSaver.Save(packed, "res://addons/pvzadventure/cache/player.tscn");
- EditorInterface.Singleton.PlayCustomScene("res://addons/pvzadventure/cache/player.tscn");
- }
- public override void _ExitTree()
- {
- EditorInterface.Singleton.GetInspector().PropertyEdited -= OnInspectorPropertyChanged;
- EditorInterface.Singleton.GetInspector().EditedObjectChanged -= OnResourceChanged;
- }
-
-
-}
-#endif
\ No newline at end of file
diff --git a/addons/pvzadventure/scripts/adventure-editor/AdventureEditor.cs.uid b/addons/pvzadventure/scripts/adventure-editor/AdventureEditor.cs.uid
deleted file mode 100644
index dc8c522..0000000
--- a/addons/pvzadventure/scripts/adventure-editor/AdventureEditor.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dkgxtig5fwdgi
diff --git a/addons/pvzadventure/scripts/adventure-editor/AdventurePlayer.cs b/addons/pvzadventure/scripts/adventure-editor/AdventurePlayer.cs
deleted file mode 100644
index fcc8ba4..0000000
--- a/addons/pvzadventure/scripts/adventure-editor/AdventurePlayer.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Godot;
-using Newlon;
-
-[Tool]
-public partial class AdventurePlayer : Node
-{
- const string tilesetUID = "uid://dd3yegl1xo44m";
- [Export] public string pathToLevel;
- public override void _Ready()
- {
- if (Engine.IsEditorHint()) return;
-
- CallDeferred("InitLevel");
- }
- private void InitLevel()
- {
- LevelController.Instance.StartLevel(ResourceLoader.Load(tilesetUID), ResourceLoader.Load(pathToLevel));
- }
-}
diff --git a/addons/pvzadventure/scripts/adventure-editor/AdventurePlayer.cs.uid b/addons/pvzadventure/scripts/adventure-editor/AdventurePlayer.cs.uid
deleted file mode 100644
index 160fa99..0000000
--- a/addons/pvzadventure/scripts/adventure-editor/AdventurePlayer.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bbkfrk07l6kev
diff --git a/addons/pvzadventure/scripts/adventure-editor/AdventureResourceInspector.cs b/addons/pvzadventure/scripts/adventure-editor/AdventureResourceInspector.cs
deleted file mode 100644
index 9e00a9c..0000000
--- a/addons/pvzadventure/scripts/adventure-editor/AdventureResourceInspector.cs
+++ /dev/null
@@ -1,189 +0,0 @@
-using Godot;
-using System;
-using System.Globalization;
-
-#if TOOLS
-[Tool]
-public partial class AdventureResourceInspector : Node
-{
- const string LEVEL_ITEM_NAME = "Level";
- const string INITIAL_ITEM_NAME = "Initial data";
- const string ZOMBIES_ITEM_NAME = "Zombies";
- const string EVENTS_ITEM_NAME = "Events";
- const string HUGEWAVE_ITEM_NAME = "Is huge wave?";
- const string SEEDPACKETS_ITEM_NAME = "Seedpackets editor";
- private PackedScene zombieEditorScene = ResourceLoader.Load("uid://db5ah76l43ng2");
- private PackedScene initialEditorScene = ResourceLoader.Load("uid://sqessjn0m4o3");
- private PackedScene seedpacketEditorScene = ResourceLoader.Load("uid://drc0o8du38apr");
-
- private Tree tree;
- private AdventureLevelResource heldResource;
- private Texture2D deleteTexture = ResourceLoader.Load("res://addons/pvzadventure/icons/delete.png");
-
- [Signal]
- public delegate void RefreshedEventHandler();
-
- [Export]
- public EditorsContainer editorContainer;
- [Export]
- public AdventureEditor adventureEditor;
-
- private TreeItem root;
- private TreeItem initialData;
- private TreeItem seedpacketData;
-
- public override void _Ready()
- {
- tree = GetNode("Tree");
- }
-
- public void Refresh(AdventureLevelResource resource)
- {
- heldResource = resource;
- RefreshTree();
- }
-
- private void RefreshTree()
- {
- EmitSignal(SignalName.Refreshed);
-
- tree.Clear();
- root = CreateItem(LEVEL_ITEM_NAME);
-
- initialData = CreateItem(INITIAL_ITEM_NAME, root);
- seedpacketData = CreateItem(SEEDPACKETS_ITEM_NAME, root);
-
- for (int i = 0; i < heldResource.waves.Count; i++)
- {
- var wave = CreateItem(string.Format("Wave {0}", i), root);
- wave.AddButton(0, deleteTexture, tooltipText: "Removes wave. (note that number will not visibly change)");
-
- CreateItem(ZOMBIES_ITEM_NAME, wave);
- CreateItem(EVENTS_ITEM_NAME, wave);
- CreateItem(HUGEWAVE_ITEM_NAME, TreeItem.TreeCellMode.Check, true, wave)
- .SetChecked(0, heldResource.waves[i].isHugeWave);
-
-
- var delay = tree.CreateItem(wave);
- if (heldResource.waves[i].customWaveDelay > 0)
- delay.SetText(0, heldResource.waves[i].customWaveDelay.ToString(new CultureInfo("en-US")));
- else
- delay.SetText(0, heldResource.standardWaveDelay.ToString());
- delay.SetEditable(0, true);
- }
- }
-
- public void OnNewButtonPressed()
- {
- var wave = new WaveData();
- heldResource.waves.Add(wave);
- RefreshTree();
- }
-
- public void OnItemSelected()
- {
- var selected = tree.GetSelected();
-
- if (selected.IsEditable(0) || selected.GetText(0).Split(" ")[0] == "Wave") return;
-
- editorContainer.ClearChildren();
-
- switch (selected.GetText(0))
- {
- case LEVEL_ITEM_NAME:
- EditorInterface.Singleton.EditResource(adventureEditor.editedResource);
- tree.DeselectAll();
- return;
- case ZOMBIES_ITEM_NAME:
- var editor = zombieEditorScene.Instantiate();
-
- editorContainer.AddChild(editor);
- SetupWaveEditor(editor, heldResource.waves[GetWaveIndex(selected.GetParent())]);
- return;
- case EVENTS_ITEM_NAME:
-
- break;
- case INITIAL_ITEM_NAME:
- var initialEditor = initialEditorScene.Instantiate();
- editorContainer.AddChild(initialEditor);
- SetupEditor(initialEditor);
- break;
- case SEEDPACKETS_ITEM_NAME:
- var seedpacketEditor = seedpacketEditorScene.Instantiate();
- editorContainer.AddChild(seedpacketEditor);
- SetupEditor(seedpacketEditor);
- break;
-
- }
- }
-
- public void OnItemEdited()
- {
- var selected = tree.GetEdited();
-
- if (selected.GetCellMode(0) == TreeItem.TreeCellMode.Check)
- {
- heldResource.waves[GetWaveIndex(selected.GetParent())].isHugeWave = selected.IsChecked(0);
- }
- else
- {
- if (float.TryParse(selected.GetText(0), new CultureInfo("en-US"), out float result))
- {
- heldResource.waves[GetWaveIndex(selected.GetParent())].customWaveDelay = result;
- }
- else
- {
- selected.SetText(0, "Delay");
- heldResource.waves[GetWaveIndex(selected.GetParent())].customWaveDelay = 0;
- }
- }
- Callable.From(RefreshTree).CallDeferred();
-
- }
- public void OnTreeButtonClicked(TreeItem item, int column, int id, int button_index)
- {
- heldResource.waves.RemoveAt(GetWaveIndex(item));
- adventureEditor.HardReload();
- RefreshTree();
- }
-
- private int GetWaveIndex(TreeItem waveTreeItem)
- {
- return int.Parse(waveTreeItem.GetText(0).Split(" ")[1]);
- }
- private TreeItem CreateItem(string Name, TreeItem root = null)
- {
- if (root == null)
- {
- var item = tree.CreateItem();
- item.SetText(0, Name);
- return item;
- }
- else
- {
- var item = tree.CreateItem(root);
- item.SetText(0, Name);
- return item;
- }
- }
- private TreeItem CreateItem(string Name, TreeItem.TreeCellMode cellMode, bool editable, TreeItem root = null)
- {
- var item = tree.CreateItem(root);
- item.SetCellMode(0, cellMode);
- item.SetEditable(0, editable);
- item.SetText(0, Name);
- return item;
- }
- private void SetupEditor(BaseEditor editor)
- {
- editor.SetEditedData(heldResource);
- editor.SaveCallback += adventureEditor.Save;
- }
- private void SetupWaveEditor(BaseWaveEditor editor, WaveData editedWave)
- {
- SetupEditor(editor);
- editor.SetEditedWave(editedWave);
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/addons/pvzadventure/scripts/adventure-editor/AdventureResourceInspector.cs.uid b/addons/pvzadventure/scripts/adventure-editor/AdventureResourceInspector.cs.uid
deleted file mode 100644
index 682e547..0000000
--- a/addons/pvzadventure/scripts/adventure-editor/AdventureResourceInspector.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b0hl4ap18wbb2
diff --git a/addons/pvzadventure/scripts/packed_scene_preview_generator.gd b/addons/pvzadventure/scripts/packed_scene_preview_generator.gd
deleted file mode 100644
index 770610d..0000000
--- a/addons/pvzadventure/scripts/packed_scene_preview_generator.gd
+++ /dev/null
@@ -1,42 +0,0 @@
-@tool
-extends TextureRect
-
-@onready var subview = $Viewport
-@onready var camera = $Viewport/Camera2D
-var scene : Node
-
-func set_path(path):
- if scene:
- scene.queue_free()
- if ResourceLoader.exists(path) == false:
- return
- var packed_scene : PackedScene = load(path)
- render_scene(path, packed_scene)
-
-
-func render_scene(path: String,packed : PackedScene):
- scene = packed.instantiate()
- subview.add_child(scene)
-
- var bb = get_bounding_box(scene)
- subview.size = Vector2(max(bb.size.x,bb.size.y),max(bb.size.x,bb.size.y))
-
- camera.position = bb.position * Vector2(0.5,0.5)
-
- var vtexture : ViewportTexture = subview.get_texture()
- texture = vtexture
-
-
-func get_bounding_box(root: Node2D) -> Rect2:
- var rect := Rect2();
- var children := root.get_children();
- while children:
- var child = children.pop_back();
- children.append_array(child.get_children());
-
- if child.has_method('get_rect') and child.has_method('to_global'):
- var child_rect := child.get_rect() as Rect2;
- child_rect.position = child.to_global(child_rect.position);
- rect = rect.merge(child_rect);
-
- return rect;
diff --git a/addons/pvzadventure/scripts/packed_scene_preview_generator.gd.uid b/addons/pvzadventure/scripts/packed_scene_preview_generator.gd.uid
deleted file mode 100644
index 8db1b43..0000000
--- a/addons/pvzadventure/scripts/packed_scene_preview_generator.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c3cgpwy1qaeww
diff --git a/addons/pvzadventure/scripts/seedpacket-editor/DnDSeedpacket.cs b/addons/pvzadventure/scripts/seedpacket-editor/DnDSeedpacket.cs
deleted file mode 100644
index 09d8c01..0000000
--- a/addons/pvzadventure/scripts/seedpacket-editor/DnDSeedpacket.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using Godot;
-using Newlon.Resources;
-
-[Tool]
-public partial class DnDSeedpacket : TextureButton
-{
- [Signal] public delegate void SaveCallbackEventHandler();
- [Export] private TextureRect preview;
- public PlantResource HeldResource;
-
- public override bool _CanDropData(Vector2 atPosition, Variant data)
- {
- if (data.VariantType == Variant.Type.Dictionary)
- {
- if ((string)data.AsGodotDictionary()["type"] == "files")
- {
- return ResourceLoader.Load(data.AsGodotDictionary()["files"].AsGodotArray()[0]) is PlantResource;
- }
- }
- return false;
- }
-
- public override void _DropData(Vector2 atPosition, Variant data)
- {
- HeldResource = ResourceLoader.Load(data.AsGodotDictionary()["files"].AsGodotArray()[0]) as PlantResource;
- Update();
- }
- public override void _Pressed()
- {
- HeldResource = null;
- Update();
- }
-
- private void Update()
- {
- RefreshTexture();
- EmitSignal(SignalName.SaveCallback);
- }
- public void RefreshTexture()
- {
- if (HeldResource != null)
- {
- preview.Texture = HeldResource.Preview;
- }
- else
- {
- preview.Texture = null;
- }
- }
-
-}
diff --git a/addons/pvzadventure/scripts/seedpacket-editor/DnDSeedpacket.cs.uid b/addons/pvzadventure/scripts/seedpacket-editor/DnDSeedpacket.cs.uid
deleted file mode 100644
index 0485078..0000000
--- a/addons/pvzadventure/scripts/seedpacket-editor/DnDSeedpacket.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bhah157u6q56b
diff --git a/addons/pvzadventure/scripts/seedpacket-editor/ForbiddableSeedpacket.cs b/addons/pvzadventure/scripts/seedpacket-editor/ForbiddableSeedpacket.cs
deleted file mode 100644
index 5d2c9e0..0000000
--- a/addons/pvzadventure/scripts/seedpacket-editor/ForbiddableSeedpacket.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Godot;
-using Newlon.Resources;
-
-[Tool]
-public partial class ForbiddableSeedpacket : TextureButton
-{
- [Signal] public delegate void SaveCallbackEventHandler();
- [Export] private TextureRect preview;
- [Export] private TextureRect forrbidTexture;
- public PlantResource HeldResource;
- public bool forbidden = false;
- public override void _Pressed()
- {
- forbidden = !forbidden;
- Update();
- }
-
- private void Update()
- {
- RefreshTexture();
- EmitSignal(SignalName.SaveCallback);
- }
- public void RefreshTexture()
- {
- preview.Texture = HeldResource.Preview;
- forrbidTexture.Visible = forbidden;
- }
-}
diff --git a/addons/pvzadventure/scripts/seedpacket-editor/ForbiddableSeedpacket.cs.uid b/addons/pvzadventure/scripts/seedpacket-editor/ForbiddableSeedpacket.cs.uid
deleted file mode 100644
index 957fc62..0000000
--- a/addons/pvzadventure/scripts/seedpacket-editor/ForbiddableSeedpacket.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cy5t2lk5g75x7
diff --git a/addons/pvzadventure/scripts/seedpacket-editor/SeedpacketEditor.cs b/addons/pvzadventure/scripts/seedpacket-editor/SeedpacketEditor.cs
deleted file mode 100644
index 1265a70..0000000
--- a/addons/pvzadventure/scripts/seedpacket-editor/SeedpacketEditor.cs
+++ /dev/null
@@ -1,101 +0,0 @@
-using System.Collections.Generic;
-using Godot;
-using Godot.Collections;
-using Newlon.Components.GUI;
-using Newlon.Resources;
-
-[Tool]
-public partial class SeedpacketEditor : BaseEditor
-{
- private const string PLANTS_DIRECTORY = "res://assets/plants/";
- public override void SetEditedData(AdventureLevelResource data)
- {
- base.SetEditedData(data);
- SetupPrepickedPlants();
- SetupForbiddablePlants();
- }
-
- public override void Save()
- {
- CalculatePrepickedPlants();
- CalculateForbiddenPlants();
- base.Save();
- }
- private void SetupPrepickedPlants()
- {
- for (int i = 0; i < editedResource.prepickedPlants.Count; i++)
- {
- if (GetNode("%PrepickedContainer").GetChild(i).GetNode("Seedpacket") is DnDSeedpacket packet)
- {
- packet.HeldResource = TryGetPlant(editedResource.prepickedPlants[i]);
- packet.RefreshTexture();
- }
- }
- }
- private void SetupForbiddablePlants()
- {
- var plants = GetPlants();
- var packed = ResourceLoader.Load("uid://dymyownbt688c");
- for (int i = 0; i < plants.Count; i++)
- {
- var seedpacket = packed.Instantiate();
- seedpacket.HeldResource = plants[i];
- seedpacket.forbidden = editedResource.forbiddenPlants.Contains(plants[i].GetInternalID());
- seedpacket.RefreshTexture();
- seedpacket.SaveCallback += Save;
-
- GetNode("%FPlantsContainer").AddChild(seedpacket);
- }
- }
- private void CalculatePrepickedPlants()
- {
- Array prepicked = new();
- foreach (var child in GetNode("%PrepickedContainer").GetChildren())
- {
- if (child.GetNode("Seedpacket") is DnDSeedpacket packet && packet.HeldResource != null)
- {
- prepicked.Add(packet.HeldResource.GetInternalID());
- }
- }
- editedResource.prepickedPlants = prepicked;
- }
- private void CalculateForbiddenPlants()
- {
- Array forbidden = new();
-
- foreach (var child in GetNode("%FPlantsContainer").GetChildren())
- {
- if (child is ForbiddableSeedpacket packet && packet.forbidden)
- {
- forbidden.Add(packet.HeldResource.GetInternalID());
- }
- }
-
- editedResource.forbiddenPlants = forbidden;
- }
- private PlantResource TryGetPlant(string plantName)
- {
- foreach (var file in ResourceLoader.ListDirectory(PLANTS_DIRECTORY))
- {
- if (plantName != file.TrimSuffix(".tres").ToLower()) continue;
- return ResourceLoader.Load(PLANTS_DIRECTORY + file);
- }
- return null;
- }
- private List GetPlants()
- {
- var result = new List();
-
- foreach (var file in ResourceLoader.ListDirectory(PLANTS_DIRECTORY))
- {
- result.Add(ResourceLoader.Load(PLANTS_DIRECTORY + file));
- }
- result.Sort((a, b) =>
- {
- return a.Order - b.Order;
- });
-
- return result;
- }
-
-}
diff --git a/addons/pvzadventure/scripts/seedpacket-editor/SeedpacketEditor.cs.uid b/addons/pvzadventure/scripts/seedpacket-editor/SeedpacketEditor.cs.uid
deleted file mode 100644
index 63f09ec..0000000
--- a/addons/pvzadventure/scripts/seedpacket-editor/SeedpacketEditor.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://d1ks2q0c3eu0v
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowser.cs b/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowser.cs
deleted file mode 100644
index 3b69e1d..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowser.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Godot;
-using Newlon.Resources;
-
-
-[Tool]
-public partial class ZE_AssetBrowser : HBoxContainer
-{
- const string ZOMBIE_PATH = "res://assets/zombies/";
- private PackedScene scene = ResourceLoader.Load("uid://iwnklc62rni8");
- public override void _Ready()
- {
- foreach (var file in ResourceLoader.ListDirectory(ZOMBIE_PATH))
- {
- var data = ResourceLoader.Load(ZOMBIE_PATH + file);
- var button = scene.Instantiate();
- button.SetData(data);
- AddChild(button);
- }
- }
-}
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowser.cs.uid b/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowser.cs.uid
deleted file mode 100644
index 1df9fc5..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowser.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bnuno3uhya4sg
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowserButton.cs b/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowserButton.cs
deleted file mode 100644
index 0405c3e..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowserButton.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using Godot;
-using Newlon.Resources;
-
-
-[Tool]
-public partial class ZE_AssetBrowserButton : PanelContainer
-{
- private ZombieResource resource;
- public void SetData(ZombieResource data)
- {
- resource = data;
- UpdateContent();
- }
- private void UpdateContent()
- {
- GetNode("Texture").Texture = resource.Preview;
- }
-
- public override Variant _GetDragData(Vector2 atPosition)
- {
- return resource;
- }
-
-}
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowserButton.cs.uid b/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowserButton.cs.uid
deleted file mode 100644
index 06a60b9..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZE_AssetBrowserButton.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cpedvgx23hlko
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZE_GridContainer.cs b/addons/pvzadventure/scripts/zombie-editor/ZE_GridContainer.cs
deleted file mode 100644
index c4771c5..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZE_GridContainer.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using Godot;
-
-[Tool]
-public partial class ZE_GridContainer : Control
-{
- private PackedScene rowEditorScene = ResourceLoader.Load("uid://buvnw8a7pku78");
- private WaveData waveData;
- [Signal] public delegate void SaveCallbackEventHandler();
- public void SetData(WaveData data)
- {
- waveData = data;
- foreach (var child in GetChildren())
- {
- child.QueueFree();
- }
- foreach (var spawn in waveData.zombiesOrdered)
- {
- InitEditor(spawn);
- }
- }
- public void AddSpawn()
- {
- var spawn = new RowSpawn();
- waveData.zombiesOrdered.Add(spawn);
- InitEditor(spawn);
- }
- public void RemoveSpawn()
- {
- var editor = GetChild(GetChildCount() - 1);
- waveData.zombiesOrdered.Remove(editor.editedSpawn);
- editor.QueueFree();
- }
- private void InitEditor(RowSpawn spawn)
- {
- var editor = rowEditorScene.Instantiate();
- editor.editedSpawn = spawn;
- editor.SaveCallback += Save;
- AddChild(editor);
- }
- private void Save()
- {
- EmitSignal(SignalName.SaveCallback);
- }
-}
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZE_GridContainer.cs.uid b/addons/pvzadventure/scripts/zombie-editor/ZE_GridContainer.cs.uid
deleted file mode 100644
index 38c7f93..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZE_GridContainer.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://do7s5mo36c280
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZE_GridItem.cs b/addons/pvzadventure/scripts/zombie-editor/ZE_GridItem.cs
deleted file mode 100644
index 26fbc95..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZE_GridItem.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using Godot;
-using Newlon.Resources;
-
-
-[Tool]
-public partial class ZE_GridItem : Control
-{
- private ZombieResource resource;
- public int index;
- [Signal] public delegate void ResourceChangedEventHandler(ZombieResource resource, int index);
- public void SetData(ZombieResource data)
- {
- resource = data;
- UpdateContent();
- }
- private void UpdateContent()
- {
- if (resource == null)
- {
- GetNode("Texture").Texture = null;
- return;
- }
- GetNode("Texture").Texture = resource.Preview;
- }
-
- public override Variant _GetDragData(Vector2 atPosition)
- {
- return resource;
- }
- public override bool _CanDropData(Vector2 atPosition, Variant data)
- {
- return data.AsGodotObject() is ZombieResource;
- }
- public override void _DropData(Vector2 atPosition, Variant data)
- {
- SetData((ZombieResource)data.AsGodotObject());
- EmitSignal(SignalName.ResourceChanged, resource, index);
- }
- public override void _GuiInput(InputEvent @event)
- {
- if (@event is InputEventMouseButton buttonEvent && buttonEvent.ButtonIndex == MouseButton.Right )
- {
- SetData(null);
- EmitSignal(SignalName.ResourceChanged, resource, index);
- }
- }
-
-}
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZE_GridItem.cs.uid b/addons/pvzadventure/scripts/zombie-editor/ZE_GridItem.cs.uid
deleted file mode 100644
index 997bc43..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZE_GridItem.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://fof6kr0et8ng
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZE_RowEditor.cs b/addons/pvzadventure/scripts/zombie-editor/ZE_RowEditor.cs
deleted file mode 100644
index 43c7b80..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZE_RowEditor.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using Godot;
-using Newlon.Resources;
-
-
-[Tool]
-public partial class ZE_RowEditor : VBoxContainer
-{
- private PackedScene buttonScene = ResourceLoader.Load("uid://segxys6udhyw");
- [Signal] public delegate void SaveCallbackEventHandler();
- public RowSpawn editedSpawn;
- public override void _Ready()
- {
- for (int i = 0; i < editedSpawn.zombies.Count; i++)
- {
- var button = buttonScene.Instantiate();
- AddChild(button);
- button.index = i;
- if (editedSpawn.zombies[i] != null)
- button.SetData(editedSpawn.zombies[i]);
- button.ResourceChanged += OnResourceChanged;
- }
- }
-
- public void OnResourceChanged(ZombieResource resource, int index)
- {
- editedSpawn.zombies[index] = resource;
- EmitSignal(SignalName.SaveCallback);
- }
-}
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZE_RowEditor.cs.uid b/addons/pvzadventure/scripts/zombie-editor/ZE_RowEditor.cs.uid
deleted file mode 100644
index 7b05cf6..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZE_RowEditor.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://q84g5imvatfl
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZombieEditor.cs b/addons/pvzadventure/scripts/zombie-editor/ZombieEditor.cs
deleted file mode 100644
index 2b78024..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZombieEditor.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using Godot;
-
-
-[Tool]
-public partial class ZombieEditor : BaseWaveEditor
-{
- [Export] private ZE_GridContainer container;
-
- public override void SetEditedWave(WaveData data)
- {
- editedWave = data;
- container.SetData(editedWave);
- }
-}
diff --git a/addons/pvzadventure/scripts/zombie-editor/ZombieEditor.cs.uid b/addons/pvzadventure/scripts/zombie-editor/ZombieEditor.cs.uid
deleted file mode 100644
index 53c2d71..0000000
--- a/addons/pvzadventure/scripts/zombie-editor/ZombieEditor.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bd5hl0etgvf5a
diff --git a/assets/3d/main_menu_mocup.blend b/assets/3d/main_menu_mocup.blend
deleted file mode 100644
index 6fd11ae..0000000
Binary files a/assets/3d/main_menu_mocup.blend and /dev/null differ
diff --git a/assets/GenericFlashMaterial.tres b/assets/GenericFlashMaterial.tres
deleted file mode 100644
index 3cd7eb3..0000000
--- a/assets/GenericFlashMaterial.tres
+++ /dev/null
@@ -1,11 +0,0 @@
-[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://cn7ac4meka1hc"]
-
-[ext_resource type="Shader" uid="uid://cgc7spjkhsx7c" path="res://assets/shaders/generic_flash.gdshader" id="1_38cc4"]
-
-[resource]
-resource_local_to_scene = true
-shader = ExtResource("1_38cc4")
-shader_parameter/FLASH_COLOR = Color(0.78, 0.78, 0.78, 0.501961)
-shader_parameter/HIGHLIGHT_COLOR = Color(0.69, 0, 0, 0.282353)
-shader_parameter/selected = false
-shader_parameter/blend = 0.0
diff --git a/assets/ZombieMaterial.tres b/assets/ZombieMaterial.tres
deleted file mode 100644
index 341585e..0000000
--- a/assets/ZombieMaterial.tres
+++ /dev/null
@@ -1,11 +0,0 @@
-[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://jr0vpg030jqv"]
-
-[ext_resource type="Shader" uid="uid://btf4xhu31ln6n" path="res://assets/shaders/canvas_group_flash.gdshader" id="1_fsu5r"]
-
-[resource]
-resource_local_to_scene = true
-shader = ExtResource("1_fsu5r")
-shader_parameter/FLASH_COLOR = Color(0.78, 0.78, 0.78, 0.501961)
-shader_parameter/HIGHLIGHT_COLOR = Color(0.69, 0, 0, 0.282353)
-shader_parameter/blend = 0.0
-shader_parameter/selected = false
diff --git a/assets/animations/zombies/basic.res b/assets/animations/zombies/basic.res
index e02f886..80ec481 100644
Binary files a/assets/animations/zombies/basic.res and b/assets/animations/zombies/basic.res differ
diff --git a/assets/animations/zombies/basic_zombie_anim.res b/assets/animations/zombies/basic_zombie_anim.res
index 6ea7db3..7911eac 100644
Binary files a/assets/animations/zombies/basic_zombie_anim.res and b/assets/animations/zombies/basic_zombie_anim.res differ
diff --git a/assets/animations/zombies/polevaulter.res b/assets/animations/zombies/polevaulter.res
new file mode 100644
index 0000000..e2cbcf8
Binary files /dev/null and b/assets/animations/zombies/polevaulter.res differ
diff --git a/assets/animations/zombies/polevaulter_without.res b/assets/animations/zombies/polevaulter_without.res
new file mode 100644
index 0000000..2b7e8e8
Binary files /dev/null and b/assets/animations/zombies/polevaulter_without.res differ
diff --git a/assets/animations/zombies/screendoor.res b/assets/animations/zombies/screendoor.res
new file mode 100644
index 0000000..436413c
Binary files /dev/null and b/assets/animations/zombies/screendoor.res differ
diff --git a/assets/effects/GarlicEffect.tres b/assets/effects/GarlicEffect.tres
deleted file mode 100644
index 7ef6399..0000000
--- a/assets/effects/GarlicEffect.tres
+++ /dev/null
@@ -1,9 +0,0 @@
-[gd_resource type="Resource" script_class="RandomRedirectEffect" load_steps=2 format=3 uid="uid://dsg1vjx76ifgu"]
-
-[ext_resource type="Script" uid="uid://bb6lv1djnqjaw" path="res://scripts/systems/effects/RandomRedirectEffect.cs" id="1_rfumy"]
-
-[resource]
-script = ExtResource("1_rfumy")
-tilesWalked = 0.2
-Duration = 3.0
-Slot = "garlic"
diff --git a/assets/effects/NerdusEffect.tres b/assets/effects/NerdusEffect.tres
deleted file mode 100644
index 2eda568..0000000
--- a/assets/effects/NerdusEffect.tres
+++ /dev/null
@@ -1,9 +0,0 @@
-[gd_resource type="Resource" load_steps=2 format=3 uid="uid://dme4nvp28otq6"]
-
-[ext_resource type="Script" uid="uid://bb6lv1djnqjaw" path="res://scripts/systems/effects/RandomRedirectEffect.cs" id="1_bd12u"]
-
-[resource]
-script = ExtResource("1_bd12u")
-tilesWalked = 0.2
-Duration = 0.25
-Slot = "garlic"
diff --git a/assets/effects/SnowSlow.tres b/assets/effects/SnowSlow.tres
deleted file mode 100644
index cf3daaf..0000000
--- a/assets/effects/SnowSlow.tres
+++ /dev/null
@@ -1,10 +0,0 @@
-[gd_resource type="Resource" load_steps=2 format=3 uid="uid://7uj0oe656jfx"]
-
-[ext_resource type="Script" uid="uid://dyc7fc5bfkdii" path="res://scripts/systems/effects/SlownessEffect.cs" id="1_8md01"]
-
-[resource]
-script = ExtResource("1_8md01")
-ColorOverride = Color(0, 1, 1, 1)
-Multiplier = 0.5
-Duration = 3.25
-Slot = "freeze_slow"
diff --git a/assets/plants/Aloe.tres b/assets/plants/Aloe.tres
deleted file mode 100644
index d2229a7..0000000
--- a/assets/plants/Aloe.tres
+++ /dev/null
@@ -1,18 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://bf7vjtufjc8kt"]
-
-[ext_resource type="Texture2D" uid="uid://d4btl7vqi4v0q" path="res://assets/sprites/plants/aloe.tres" id="1_t4137"]
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="1_vw2kg"]
-[ext_resource type="PackedScene" uid="uid://bw1w8jp0yeypy" path="res://scenes/entities/plants/aloe.tscn" id="2_6a4ia"]
-
-[resource]
-script = ExtResource("1_vw2kg")
-Layer = 1
-DontRegister = false
-NameKey = "aloe"
-DescriptionKey = "aloe_desc"
-Cost = 75.0
-Scene = ExtResource("2_6a4ia")
-ReloadTime = 15.0
-ReloadProgress = 0.0
-Preview = ExtResource("1_t4137")
-Order = 6
diff --git a/assets/plants/Cucumber.tres b/assets/plants/Cucumber.tres
deleted file mode 100644
index 3dca246..0000000
--- a/assets/plants/Cucumber.tres
+++ /dev/null
@@ -1,23 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=5 format=3 uid="uid://ciewunnfalrbb"]
-
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="1_jrx81"]
-[ext_resource type="Texture2D" uid="uid://bt76iudw2qgnv" path="res://assets/sprites/atlases/plants/cumbucer.png" id="1_tdg4d"]
-[ext_resource type="PackedScene" uid="uid://cjoyh54cpjla7" path="res://scenes/entities/plants/cucumber.tscn" id="2_0mr6r"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_3gogt"]
-atlas = ExtResource("1_tdg4d")
-region = Rect2(2, 1, 41, 65)
-
-[resource]
-script = ExtResource("1_jrx81")
-Layer = 1
-DontRegister = false
-NameKey = "cucumber"
-DescriptionKey = "cucumber_desc"
-Cost = 75.0
-Scene = ExtResource("2_0mr6r")
-ReloadTime = 5.0
-ReloadProgress = 0.0
-Preview = SubResource("AtlasTexture_3gogt")
-Order = 8
-metadata/_custom_type_script = "uid://cyenlko1knygw"
diff --git a/assets/plants/Garlic.tres b/assets/plants/Garlic.tres
deleted file mode 100644
index d821c21..0000000
--- a/assets/plants/Garlic.tres
+++ /dev/null
@@ -1,18 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://btkkaow4tyw55"]
-
-[ext_resource type="Texture2D" uid="uid://m8e84blnx7yu" path="res://assets/sprites/plants/garlic.tres" id="1_datic"]
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="1_e15gf"]
-[ext_resource type="PackedScene" uid="uid://qq0cw8xtcoj3" path="res://scenes/entities/plants/garlic.tscn" id="2_81n0p"]
-
-[resource]
-script = ExtResource("1_e15gf")
-Layer = 1
-DontRegister = false
-NameKey = "garlic"
-DescriptionKey = "garlic_desc"
-Cost = 50.0
-Scene = ExtResource("2_81n0p")
-ReloadTime = 7.5
-ReloadProgress = 0.0
-Preview = ExtResource("1_datic")
-Order = 7
diff --git a/assets/plants/Nerdus.tres b/assets/plants/Nerdus.tres
deleted file mode 100644
index 90aeb8d..0000000
--- a/assets/plants/Nerdus.tres
+++ /dev/null
@@ -1,23 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=5 format=3 uid="uid://8edvnmwu4tyn"]
-
-[ext_resource type="Texture2D" uid="uid://b06e8xhdy77d1" path="res://assets/sprites/atlases/plants/nerdus.png" id="1_of51r"]
-[ext_resource type="PackedScene" uid="uid://k5aj2slxar7w" path="res://scenes/entities/plants/nerdus.tscn" id="2_0i6qf"]
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="3_30qd0"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_ivp5w"]
-atlas = ExtResource("1_of51r")
-region = Rect2(477, 9, 60, 59)
-
-[resource]
-script = ExtResource("3_30qd0")
-Layer = 1
-DontRegister = false
-NameKey = "nerdus"
-DescriptionKey = "nerdus_desc"
-Cost = 125.0
-Scene = ExtResource("2_0i6qf")
-ReloadTime = 10.0
-ReloadProgress = 0.0
-Preview = SubResource("AtlasTexture_ivp5w")
-Order = 10
-metadata/_custom_type_script = "uid://cyenlko1knygw"
diff --git a/assets/plants/Peashooter.tres b/assets/plants/Peashooter.tres
deleted file mode 100644
index cf3a204..0000000
--- a/assets/plants/Peashooter.tres
+++ /dev/null
@@ -1,18 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://c8rr1dc7mjr3d"]
-
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="1_amvh8"]
-[ext_resource type="Texture2D" uid="uid://ot1n4nval86w" path="res://assets/sprites/plants/peashooter.tres" id="1_rnq6r"]
-[ext_resource type="PackedScene" uid="uid://dy41q1kxray5t" path="res://scenes/entities/plants/peashooter.tscn" id="1_rqf2x"]
-
-[resource]
-script = ExtResource("1_amvh8")
-Layer = 1
-DontRegister = false
-NameKey = "peashooter"
-DescriptionKey = "peashooter_desc"
-Cost = 75.0
-Scene = ExtResource("1_rqf2x")
-ReloadTime = 5.0
-ReloadProgress = 0.0
-Preview = ExtResource("1_rnq6r")
-Order = 0
diff --git a/assets/plants/PotatoMine.tres b/assets/plants/PotatoMine.tres
deleted file mode 100644
index 825de86..0000000
--- a/assets/plants/PotatoMine.tres
+++ /dev/null
@@ -1,18 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://bu25xgjd68gv8"]
-
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="1_33j6b"]
-[ext_resource type="Texture2D" uid="uid://bhmnt3x5aj1l8" path="res://assets/sprites/plants/potatomine.tres" id="1_xk2pg"]
-[ext_resource type="PackedScene" uid="uid://b5x35v3w2u8dx" path="res://scenes/entities/plants/potato_mine.tscn" id="2_ig2ti"]
-
-[resource]
-script = ExtResource("1_33j6b")
-Layer = 1
-DontRegister = false
-NameKey = "potatomine"
-DescriptionKey = "potatomine_desc"
-Cost = 25.0
-Scene = ExtResource("2_ig2ti")
-ReloadTime = 25.0
-ReloadProgress = 0.0
-Preview = ExtResource("1_xk2pg")
-Order = 3
diff --git a/assets/plants/Repeater.tres b/assets/plants/Repeater.tres
deleted file mode 100644
index 85f96ca..0000000
--- a/assets/plants/Repeater.tres
+++ /dev/null
@@ -1,35 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=10 format=3 uid="uid://b4r1687hg0rf5"]
-
-[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_6km43"]
-[ext_resource type="Texture2D" uid="uid://dhf2opi0brx23" path="res://assets/sprites/gui/almanach/premium_field.tres" id="1_ormja"]
-[ext_resource type="PackedScene" uid="uid://bb4ya5qx224ca" path="res://scenes/entities/plants/repeater.tscn" id="2_6km43"]
-[ext_resource type="Texture2D" uid="uid://31jc2e7dijas" path="res://assets/sprites/gui/PremiumPlantCard.tres" id="2_8djti"]
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="3_e606l"]
-[ext_resource type="Script" uid="uid://3m7xks3xq3hl" path="res://scripts/gui/seedpackets/CustomSeedpacketFrame.cs" id="3_qnhmj"]
-
-[sub_resource type="LabelSettings" id="LabelSettings_2f3e1"]
-
-[sub_resource type="Resource" id="Resource_87lkl"]
-script = ExtResource("3_qnhmj")
-frame = ExtResource("2_8djti")
-font = SubResource("LabelSettings_2f3e1")
-almanachField = ExtResource("1_ormja")
-metadata/_custom_type_script = "uid://3m7xks3xq3hl"
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_qnsfo"]
-atlas = ExtResource("1_6km43")
-region = Rect2(604, 241, 45, 51)
-
-[resource]
-script = ExtResource("3_e606l")
-Layer = 1
-DontRegister = false
-NameKey = "repeater"
-DescriptionKey = "repeater_desc"
-Cost = 175.0
-Scene = ExtResource("2_6km43")
-ReloadTime = 5.0
-ReloadProgress = 0.0
-Preview = SubResource("AtlasTexture_qnsfo")
-CustomFrame = SubResource("Resource_87lkl")
-Order = 12
diff --git a/assets/plants/Snipach.tres b/assets/plants/Snipach.tres
deleted file mode 100644
index 501a276..0000000
--- a/assets/plants/Snipach.tres
+++ /dev/null
@@ -1,23 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=5 format=3 uid="uid://drb8nk0i3oyyl"]
-
-[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_1eecn"]
-[ext_resource type="PackedScene" uid="uid://bmk41n57j7hgx" path="res://scenes/entities/plants/snipach.tscn" id="1_h5ln5"]
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="1_u5a4p"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_dgfdr"]
-atlas = ExtResource("1_1eecn")
-region = Rect2(525, 241, 79, 72)
-
-[resource]
-script = ExtResource("1_u5a4p")
-Layer = 1
-DontRegister = false
-NameKey = "snipach"
-DescriptionKey = "snipach_desc"
-Cost = 400.0
-Scene = ExtResource("1_h5ln5")
-ReloadTime = 7.5
-ReloadProgress = 0.0
-Preview = SubResource("AtlasTexture_dgfdr")
-Order = 11
-metadata/_custom_type_script = "uid://cyenlko1knygw"
diff --git a/assets/plants/Snowpea.tres b/assets/plants/Snowpea.tres
deleted file mode 100644
index 13bc7d0..0000000
--- a/assets/plants/Snowpea.tres
+++ /dev/null
@@ -1,18 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://duflq3eexs6m"]
-
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="1_0cpi0"]
-[ext_resource type="Texture2D" uid="uid://cu7h8bot6jlug" path="res://assets/sprites/plants/snowpea.tres" id="1_7fyy2"]
-[ext_resource type="PackedScene" uid="uid://b7innrovtmf5u" path="res://scenes/entities/plants/snowpea.tscn" id="2_k47h0"]
-
-[resource]
-script = ExtResource("1_0cpi0")
-Layer = 1
-DontRegister = false
-NameKey = "snowpea"
-DescriptionKey = "snowpea_desc"
-Cost = 175.0
-Scene = ExtResource("2_k47h0")
-ReloadTime = 5.0
-ReloadProgress = 0.0
-Preview = ExtResource("1_7fyy2")
-Order = 5
diff --git a/assets/plants/Spikeweed.tres b/assets/plants/Spikeweed.tres
deleted file mode 100644
index 4502b23..0000000
--- a/assets/plants/Spikeweed.tres
+++ /dev/null
@@ -1,18 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://cas11tg6chiu4"]
-
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="1_0bymo"]
-[ext_resource type="Texture2D" uid="uid://baqfahxkcvfe1" path="res://assets/sprites/plants/Spikeweed.tres" id="1_2ol2i"]
-[ext_resource type="PackedScene" uid="uid://bdhod5c6o53ha" path="res://scenes/entities/plants/spikeweed.tscn" id="2_iv8de"]
-
-[resource]
-script = ExtResource("1_0bymo")
-Layer = 1
-DontRegister = false
-NameKey = "spikeweed"
-DescriptionKey = "spikeweed_desc"
-Cost = 100.0
-Scene = ExtResource("2_iv8de")
-ReloadTime = 5.0
-ReloadProgress = 0.0
-Preview = ExtResource("1_2ol2i")
-Order = 4
diff --git a/assets/plants/Sunflower.tres b/assets/plants/Sunflower.tres
deleted file mode 100644
index 9c2c30f..0000000
--- a/assets/plants/Sunflower.tres
+++ /dev/null
@@ -1,18 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://drm42f48urvc4"]
-
-[ext_resource type="Texture2D" uid="uid://iw75j816gbc" path="res://assets/sprites/plants/sunflower.tres" id="1_8rd5i"]
-[ext_resource type="PackedScene" uid="uid://bg7lomiorxo2c" path="res://scenes/entities/plants/sunflower.tscn" id="2_gcyr5"]
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="3_vt4jc"]
-
-[resource]
-script = ExtResource("3_vt4jc")
-Layer = 1
-DontRegister = false
-NameKey = "sunflower"
-DescriptionKey = "sunflower_desc"
-Cost = 50.0
-Scene = ExtResource("2_gcyr5")
-ReloadTime = 5.0
-ReloadProgress = 1.0
-Preview = ExtResource("1_8rd5i")
-Order = 1
diff --git a/assets/plants/Threepeater.tres b/assets/plants/Threepeater.tres
deleted file mode 100644
index d6348e9..0000000
--- a/assets/plants/Threepeater.tres
+++ /dev/null
@@ -1,18 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://bnhwg57euiyf5"]
-
-[ext_resource type="Texture2D" uid="uid://8se1nscal0em" path="res://assets/sprites/plants/threepeater.tres" id="1_hinp6"]
-[ext_resource type="PackedScene" uid="uid://eegv1qihfv2q" path="res://scenes/entities/plants/threepeater.tscn" id="2_uqpu0"]
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="3_3lugi"]
-
-[resource]
-script = ExtResource("3_3lugi")
-Layer = 1
-DontRegister = false
-NameKey = "threepeater"
-DescriptionKey = "threepeater_desc"
-Cost = 275.0
-Scene = ExtResource("2_uqpu0")
-ReloadTime = 5.0
-ReloadProgress = 0.0
-Preview = ExtResource("1_hinp6")
-Order = 9
diff --git a/assets/plants/Wallnut.tres b/assets/plants/Wallnut.tres
deleted file mode 100644
index dc3ab26..0000000
--- a/assets/plants/Wallnut.tres
+++ /dev/null
@@ -1,18 +0,0 @@
-[gd_resource type="Resource" script_class="PlantResource" load_steps=4 format=3 uid="uid://c2e2yj7rgoswi"]
-
-[ext_resource type="Texture2D" uid="uid://g2oppl54efja" path="res://assets/sprites/plants/Wallnut.tres" id="1_2akap"]
-[ext_resource type="Script" uid="uid://cyenlko1knygw" path="res://scripts/resources/entities/PlantResource.cs" id="1_27l0t"]
-[ext_resource type="PackedScene" uid="uid://bq7imkpr2yqyr" path="res://scenes/entities/plants/wallnut.tscn" id="2_rkn3h"]
-
-[resource]
-script = ExtResource("1_27l0t")
-Layer = 1
-DontRegister = false
-NameKey = "wallnut"
-DescriptionKey = "wallnut_desc"
-Cost = 50.0
-Scene = ExtResource("2_rkn3h")
-ReloadTime = 20.0
-ReloadProgress = 0.0
-Preview = ExtResource("1_2akap")
-Order = 2
diff --git a/assets/rewards/AloeReward.tres b/assets/rewards/AloeReward.tres
deleted file mode 100644
index 2f98503..0000000
--- a/assets/rewards/AloeReward.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://co53dl5pxc0nr"]
-
-[ext_resource type="Resource" uid="uid://bf7vjtufjc8kt" path="res://assets/plants/Aloe.tres" id="1_v5yns"]
-[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="2_6fujh"]
-[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="3_0ahmi"]
-
-[resource]
-script = ExtResource("3_0ahmi")
-Plant = ExtResource("1_v5yns")
-Scene = ExtResource("2_6fujh")
-Name = "aloe"
-Description = "rwd_aloe"
-metadata/_custom_type_script = "uid://c8e40t5nbo83r"
diff --git a/assets/rewards/CucumberReward.tres b/assets/rewards/CucumberReward.tres
deleted file mode 100644
index 6785fb8..0000000
--- a/assets/rewards/CucumberReward.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://b7jjqhhb6cv7i"]
-
-[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="1_nwe4k"]
-[ext_resource type="Resource" uid="uid://ciewunnfalrbb" path="res://assets/plants/Cucumber.tres" id="1_y7bpw"]
-[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="2_y7bpw"]
-
-[resource]
-script = ExtResource("2_y7bpw")
-Plant = ExtResource("1_y7bpw")
-Scene = ExtResource("1_nwe4k")
-Name = "cucumber"
-Description = "rwd_cucumber"
-metadata/_custom_type_script = "uid://c8e40t5nbo83r"
diff --git a/assets/rewards/DefaultReward.tres b/assets/rewards/DefaultReward.tres
deleted file mode 100644
index ddf91f8..0000000
--- a/assets/rewards/DefaultReward.tres
+++ /dev/null
@@ -1,12 +0,0 @@
-[gd_resource type="Resource" script_class="MoneyReward" load_steps=3 format=3 uid="uid://kqqqjubwm37a"]
-
-[ext_resource type="PackedScene" uid="uid://3x821ng2yf57" path="res://scenes/templates/money_reward.tscn" id="1_g5bk7"]
-[ext_resource type="Script" uid="uid://dtfmy3los1si1" path="res://scripts/resources/MoneyReward.cs" id="1_qd0ii"]
-
-[resource]
-script = ExtResource("1_qd0ii")
-Cost = 500
-Scene = ExtResource("1_g5bk7")
-Name = "moneybag"
-Description = "rwd_moneybag"
-metadata/_custom_type_script = "uid://dtfmy3los1si1"
diff --git a/assets/rewards/GarlicReward.tres b/assets/rewards/GarlicReward.tres
deleted file mode 100644
index e934360..0000000
--- a/assets/rewards/GarlicReward.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://bhy1gc3vi8le1"]
-
-[ext_resource type="Resource" uid="uid://btkkaow4tyw55" path="res://assets/plants/Garlic.tres" id="1_ti6wf"]
-[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="2_jsj0n"]
-[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="3_k120q"]
-
-[resource]
-script = ExtResource("3_k120q")
-Plant = ExtResource("1_ti6wf")
-Scene = ExtResource("2_jsj0n")
-Name = "garlic"
-Description = "rwd_garlic"
-metadata/_custom_type_script = "uid://c8e40t5nbo83r"
diff --git a/assets/rewards/NerdusReward.tres b/assets/rewards/NerdusReward.tres
deleted file mode 100644
index 3c54c75..0000000
--- a/assets/rewards/NerdusReward.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://c268ghdrraxgr"]
-
-[ext_resource type="Resource" uid="uid://8edvnmwu4tyn" path="res://assets/plants/Nerdus.tres" id="1_aujky"]
-[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="2_oa88s"]
-[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="3_y1663"]
-
-[resource]
-script = ExtResource("3_y1663")
-Plant = ExtResource("1_aujky")
-Scene = ExtResource("2_oa88s")
-Name = "nerdus"
-Description = "rwd_nerdus"
-metadata/_custom_type_script = "uid://c8e40t5nbo83r"
diff --git a/assets/rewards/PotatoMineReward.tres b/assets/rewards/PotatoMineReward.tres
deleted file mode 100644
index 7d7a1ec..0000000
--- a/assets/rewards/PotatoMineReward.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://3qnpc64r3v3l"]
-
-[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="1_3td81"]
-[ext_resource type="Resource" uid="uid://bu25xgjd68gv8" path="res://assets/plants/PotatoMine.tres" id="1_pxrwk"]
-[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="2_pxrwk"]
-
-[resource]
-script = ExtResource("2_pxrwk")
-Plant = ExtResource("1_pxrwk")
-Scene = ExtResource("1_3td81")
-Name = "potatomine"
-Description = "rwd_potatomine"
-metadata/_custom_type_script = "uid://c8e40t5nbo83r"
diff --git a/assets/rewards/SnowpeaReward.tres b/assets/rewards/SnowpeaReward.tres
deleted file mode 100644
index 1d504a6..0000000
--- a/assets/rewards/SnowpeaReward.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://1xc5f4nnc75i"]
-
-[ext_resource type="Resource" uid="uid://duflq3eexs6m" path="res://assets/plants/Snowpea.tres" id="1_llpxp"]
-[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="2_c26gh"]
-[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="3_xcfmg"]
-
-[resource]
-script = ExtResource("3_xcfmg")
-Plant = ExtResource("1_llpxp")
-Scene = ExtResource("2_c26gh")
-Name = "snowpea"
-Description = "rwd_snowpea"
-metadata/_custom_type_script = "uid://c8e40t5nbo83r"
diff --git a/assets/rewards/SpikeweedReward.tres b/assets/rewards/SpikeweedReward.tres
deleted file mode 100644
index 86bc7dd..0000000
--- a/assets/rewards/SpikeweedReward.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://dlv4fkh4limub"]
-
-[ext_resource type="Resource" uid="uid://cas11tg6chiu4" path="res://assets/plants/Spikeweed.tres" id="1_wbex8"]
-[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="2_4ynii"]
-[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="3_ffr6n"]
-
-[resource]
-script = ExtResource("3_ffr6n")
-Plant = ExtResource("1_wbex8")
-Scene = ExtResource("2_4ynii")
-Name = "spikeweed"
-Description = "rwd_spikeweed"
-metadata/_custom_type_script = "uid://c8e40t5nbo83r"
diff --git a/assets/rewards/SunflowerReward.tres b/assets/rewards/SunflowerReward.tres
deleted file mode 100644
index 83e9ef9..0000000
--- a/assets/rewards/SunflowerReward.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://cvbxosnd7cn5l"]
-
-[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="1_cc1yg"]
-[ext_resource type="Resource" uid="uid://drm42f48urvc4" path="res://assets/plants/Sunflower.tres" id="1_qduei"]
-[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="2_qxx0x"]
-
-[resource]
-script = ExtResource("1_cc1yg")
-Plant = ExtResource("1_qduei")
-Scene = ExtResource("2_qxx0x")
-Name = "sunflower"
-Description = "rwd_sunflower"
-metadata/_custom_type_script = "uid://c8e40t5nbo83r"
diff --git a/assets/rewards/ThreepeaterReward.tres b/assets/rewards/ThreepeaterReward.tres
deleted file mode 100644
index 0129b0c..0000000
--- a/assets/rewards/ThreepeaterReward.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://c5rg8mq50wka2"]
-
-[ext_resource type="Resource" uid="uid://bnhwg57euiyf5" path="res://assets/plants/Threepeater.tres" id="1_bcp4j"]
-[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="2_h66y0"]
-[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="3_2tva0"]
-
-[resource]
-script = ExtResource("3_2tva0")
-Plant = ExtResource("1_bcp4j")
-Scene = ExtResource("2_h66y0")
-Name = "threepeater"
-Description = "rwd_threepeater"
-metadata/_custom_type_script = "uid://c8e40t5nbo83r"
diff --git a/assets/rewards/WallnutReward.tres b/assets/rewards/WallnutReward.tres
deleted file mode 100644
index 3ebd0f4..0000000
--- a/assets/rewards/WallnutReward.tres
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_resource type="Resource" script_class="PlantReward" load_steps=4 format=3 uid="uid://cqy84f0msdhof"]
-
-[ext_resource type="Resource" uid="uid://c2e2yj7rgoswi" path="res://assets/plants/Wallnut.tres" id="1_wbjkr"]
-[ext_resource type="PackedScene" uid="uid://myjhi5m0eaap" path="res://scenes/templates/plant_reward.tscn" id="2_66qmw"]
-[ext_resource type="Script" uid="uid://c8e40t5nbo83r" path="res://scripts/resources/PlantReward.cs" id="3_iv5xe"]
-
-[resource]
-script = ExtResource("3_iv5xe")
-Plant = ExtResource("1_wbjkr")
-Scene = ExtResource("2_66qmw")
-Name = "wallnut"
-Description = "rwd_wallnut"
-metadata/_custom_type_script = "uid://c8e40t5nbo83r"
diff --git a/assets/shaders/SACRIFICE.gdshader b/assets/shaders/SACRIFICE.gdshader
deleted file mode 100644
index 88ffc92..0000000
--- a/assets/shaders/SACRIFICE.gdshader
+++ /dev/null
@@ -1,17 +0,0 @@
-shader_type canvas_item;
-
-uniform sampler2D noise;
-
-float rng(vec2 st)
-{
- return fract(sin(dot(st,vec2(16.125125,61.2155215125)))*12512.0);
-}
-
-void fragment() {
- float capped_time = (sin(TIME/4.0) + 1.0);
- if (abs(UV.x + UV.y - capped_time) < 0.05 || abs(UV.x + UV.y - capped_time - 0.75) < 0.05)
- {
- COLOR.rgb = vec3(255.0/255.0,127.0/255.0,80.0/255.0);
- }
- COLOR.a = step(0.4 + 0.05 * sin((TIME+1.0)/4.0),COLOR.a*texture(noise,UV).a);
-}
diff --git a/assets/shaders/SACRIFICE.gdshader.uid b/assets/shaders/SACRIFICE.gdshader.uid
deleted file mode 100644
index 1d67f82..0000000
--- a/assets/shaders/SACRIFICE.gdshader.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://d0rylce8i5xtg
diff --git a/assets/shaders/canvas_group_flash.gdshader b/assets/shaders/canvas_group_flash.gdshader
deleted file mode 100644
index fe38157..0000000
--- a/assets/shaders/canvas_group_flash.gdshader
+++ /dev/null
@@ -1,26 +0,0 @@
-shader_type canvas_item;
-render_mode unshaded;
-
-uniform vec4 FLASH_COLOR : source_color = vec4(1,0.709803921,0.43921568,0.5);
-uniform vec4 HIGHLIGHT_COLOR : source_color = vec4(1,0.709803921,0.43921568,0.5);
-uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest;
-uniform float blend : hint_range(0,1,0.01);
-uniform bool selected = false;
-
-void fragment() {
- vec4 text = textureLod(screen_texture, SCREEN_UV, 0.0);
-
- if (text.a > 0.0001) {
- text.rgb /= text.a;
- }
-
- if (selected)
- {
- COLOR = vec4(mix(text.rgb,HIGHLIGHT_COLOR.rgb,HIGHLIGHT_COLOR.a),text.a);
- COLOR = vec4(mix(COLOR.rgb,FLASH_COLOR.rgb,FLASH_COLOR.a*blend),COLOR.a);
- }
- else
- {
- COLOR = vec4(mix(text.rgb,FLASH_COLOR.rgb,FLASH_COLOR.a*blend),text.a);
- }
-}
\ No newline at end of file
diff --git a/assets/shaders/canvas_group_flash.gdshader.uid b/assets/shaders/canvas_group_flash.gdshader.uid
deleted file mode 100644
index b3e6995..0000000
--- a/assets/shaders/canvas_group_flash.gdshader.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://btf4xhu31ln6n
diff --git a/assets/shaders/generic_flash.gdshader b/assets/shaders/generic_flash.gdshader
deleted file mode 100644
index 56e566e..0000000
--- a/assets/shaders/generic_flash.gdshader
+++ /dev/null
@@ -1,16 +0,0 @@
-shader_type canvas_item;
-
-uniform vec4 FLASH_COLOR : source_color = vec4(1,0.709803921,0.43921568,0.5);
-uniform vec4 HIGHLIGHT_COLOR : source_color = vec4(1,0.709803921,0.43921568,0.5);
-uniform bool selected = false;
-uniform float blend : hint_range(0.0, 1.0, 0.01);
-
-void fragment() {
- if (selected)
- {
- COLOR = vec4(mix(COLOR.rgb,HIGHLIGHT_COLOR.rgb,HIGHLIGHT_COLOR.a),COLOR.a);
- }
-
- COLOR = vec4(mix(COLOR.rgb,FLASH_COLOR.rgb,FLASH_COLOR.a*blend),COLOR.a);
-
-}
\ No newline at end of file
diff --git a/assets/shaders/generic_flash.gdshader.uid b/assets/shaders/generic_flash.gdshader.uid
deleted file mode 100644
index bfb6ecf..0000000
--- a/assets/shaders/generic_flash.gdshader.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cgc7spjkhsx7c
diff --git a/assets/shaders/greyscale.gdshader b/assets/shaders/greyscale.gdshader
deleted file mode 100644
index 9e45c60..0000000
--- a/assets/shaders/greyscale.gdshader
+++ /dev/null
@@ -1,12 +0,0 @@
-shader_type canvas_item;
-
-uniform float amount : hint_range(0.0, 1.0, 0.1);
-
-vec4 luminance(vec4 col)
-{
- return vec4(vec3(0.2126*col.r+0.7152*col.g+0.0722*col.b),col.a);
-}
-
-void fragment() {
- COLOR = mix(COLOR, luminance(COLOR),amount);
-}
diff --git a/assets/shaders/greyscale.gdshader.uid b/assets/shaders/greyscale.gdshader.uid
deleted file mode 100644
index bad2753..0000000
--- a/assets/shaders/greyscale.gdshader.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://mt7vheq5modk
diff --git a/assets/shaders/gui_masking.gdshader b/assets/shaders/gui_masking.gdshader
deleted file mode 100644
index d049889..0000000
--- a/assets/shaders/gui_masking.gdshader
+++ /dev/null
@@ -1,7 +0,0 @@
-shader_type canvas_item;
-
-uniform sampler2D mask : filter_nearest;
-
-void fragment() {
- COLOR.a = texture(mask, UV).a * COLOR.a;
-}
diff --git a/assets/shaders/gui_masking.gdshader.uid b/assets/shaders/gui_masking.gdshader.uid
deleted file mode 100644
index d9ef27f..0000000
--- a/assets/shaders/gui_masking.gdshader.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dcp5tqcec2oi3
diff --git a/assets/shaders/radial_progress.gdshader b/assets/shaders/radial_progress.gdshader
deleted file mode 100644
index b7ed32a..0000000
--- a/assets/shaders/radial_progress.gdshader
+++ /dev/null
@@ -1,20 +0,0 @@
-shader_type canvas_item;
-
-uniform vec4 region_rect;
-uniform float progress;
-
-void fragment() {
- if (progress > 0.9999)
- {
- vec4 text = texture(TEXTURE,UV);
- COLOR = text;
- }
- vec2 c = vec2(0.5)-UV;
- float d = atan(c.x,c.y)+PI;
- if (d > progress*TAU)
- {
- discard;
- }
- vec4 text = texture(TEXTURE,UV);
- COLOR = text;
-}
diff --git a/assets/shaders/radial_progress.gdshader.uid b/assets/shaders/radial_progress.gdshader.uid
deleted file mode 100644
index 44ff23e..0000000
--- a/assets/shaders/radial_progress.gdshader.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c5kv2gwtme1dk
diff --git a/assets/shaders/shared_outline.gdshader b/assets/shaders/shared_outline.gdshader
deleted file mode 100644
index 0e15981..0000000
--- a/assets/shaders/shared_outline.gdshader
+++ /dev/null
@@ -1,23 +0,0 @@
-shader_type canvas_item;
-
-uniform vec3 line_colour: source_color = vec3(1.0);
-uniform int line_thickness: hint_range(0, 50) = 1;
-uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest;
-
-void fragment() {
- vec2 size = SCREEN_PIXEL_SIZE * float(line_thickness);
- float line_alpha = 0.0;
- for (float i = -size.x; i <= size.x; i += SCREEN_PIXEL_SIZE.x) {
- for (float j = -size.y; j <= size.y; j += SCREEN_PIXEL_SIZE.y) {
- line_alpha += texture(screen_texture, SCREEN_UV + vec2(i, j)).a;
- }
- }
- vec4 colour = textureLod(screen_texture, SCREEN_UV,0.0);
-
- if (colour.a > 0.0001) {
- colour.rgb /= colour.a;
- }
-
- vec4 outline = vec4(line_colour, min(line_alpha, 1.0));
- COLOR *= mix(outline, colour, colour.a);
-}
diff --git a/assets/shaders/shared_outline.gdshader.uid b/assets/shaders/shared_outline.gdshader.uid
deleted file mode 100644
index 3a8919a..0000000
--- a/assets/shaders/shared_outline.gdshader.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bk8uy5se3fo0
diff --git a/assets/sprites/zombie.tres b/assets/sprites/zombie.tres
index b1a93a6..e532cad 100644
--- a/assets/sprites/zombie.tres
+++ b/assets/sprites/zombie.tres
@@ -1,7 +1,7 @@
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://bwwbkybryi6k0"]
-[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_f3kba"]
+[ext_resource type="Texture2D" uid="uid://c68mrfs4wb81x" path="res://assets/sprites/atlases/atlas2.png" id="1_g1iew"]
[resource]
-atlas = ExtResource("1_f3kba")
+atlas = ExtResource("1_g1iew")
region = Rect2(129, 104, 45, 88)
diff --git a/assets/sprites/zombies/Screendoor1.png b/assets/sprites/zombies/Screendoor1.png
new file mode 100644
index 0000000..c48ee38
Binary files /dev/null and b/assets/sprites/zombies/Screendoor1.png differ
diff --git a/assets/sprites/zombies/polevaulter.png.import b/assets/sprites/zombies/Screendoor1.png.import
similarity index 67%
rename from assets/sprites/zombies/polevaulter.png.import
rename to assets/sprites/zombies/Screendoor1.png.import
index efbadd8..55ec941 100644
--- a/assets/sprites/zombies/polevaulter.png.import
+++ b/assets/sprites/zombies/Screendoor1.png.import
@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://b2p72b08as365"
-path="res://.godot/imported/polevaulter.png-1daef60b20e89deaa51a84148fdba268.ctex"
+uid="uid://dj4bqnlg87squ"
+path="res://.godot/imported/Screendoor1.png-903f8c27586778d89830ea453d96240e.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/sprites/zombies/polevaulter.png"
-dest_files=["res://.godot/imported/polevaulter.png-1daef60b20e89deaa51a84148fdba268.ctex"]
+source_file="res://assets/sprites/zombies/Screendoor1.png"
+dest_files=["res://.godot/imported/Screendoor1.png-903f8c27586778d89830ea453d96240e.ctex"]
[params]
diff --git a/assets/sprites/zombies/Screendoor2.png b/assets/sprites/zombies/Screendoor2.png
new file mode 100644
index 0000000..963c1c1
Binary files /dev/null and b/assets/sprites/zombies/Screendoor2.png differ
diff --git a/addons/pvzadventure/icons/delete.png.import b/assets/sprites/zombies/Screendoor2.png.import
similarity index 67%
rename from addons/pvzadventure/icons/delete.png.import
rename to assets/sprites/zombies/Screendoor2.png.import
index 47132c9..3a58c5d 100644
--- a/addons/pvzadventure/icons/delete.png.import
+++ b/assets/sprites/zombies/Screendoor2.png.import
@@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://cytkldhduee4d"
-path="res://.godot/imported/delete.png-5697ccae9dc8575df9addcc6c74dabd6.ctex"
+uid="uid://b0plkcoupyumf"
+path="res://.godot/imported/Screendoor2.png-23021440e0d5c55adff199ddd6edd51d.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://addons/pvzadventure/icons/delete.png"
-dest_files=["res://.godot/imported/delete.png-5697ccae9dc8575df9addcc6c74dabd6.ctex"]
+source_file="res://assets/sprites/zombies/Screendoor2.png"
+dest_files=["res://.godot/imported/Screendoor2.png-23021440e0d5c55adff199ddd6edd51d.ctex"]
[params]
diff --git a/assets/sprites/zombies/basic.png b/assets/sprites/zombies/basic.png
index 462c8ca..7665e29 100644
Binary files a/assets/sprites/zombies/basic.png and b/assets/sprites/zombies/basic.png differ
diff --git a/assets/sprites/zombies/hobo.png b/assets/sprites/zombies/hobo.png
index eee9f11..0aac23c 100644
Binary files a/assets/sprites/zombies/hobo.png and b/assets/sprites/zombies/hobo.png differ
diff --git a/assets/sprites/zombies/polevaulter.png b/assets/sprites/zombies/polevaulter.png
deleted file mode 100644
index 7379901..0000000
Binary files a/assets/sprites/zombies/polevaulter.png and /dev/null differ
diff --git a/assets/sprites/zombies/polevaulting.png b/assets/sprites/zombies/polevaulting.png
new file mode 100644
index 0000000..0a298c4
Binary files /dev/null and b/assets/sprites/zombies/polevaulting.png differ
diff --git a/assets/sprites/zombies/polevaulting.png.import b/assets/sprites/zombies/polevaulting.png.import
new file mode 100644
index 0000000..99ddc03
--- /dev/null
+++ b/assets/sprites/zombies/polevaulting.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://vbqrjhtpgp17"
+path="res://.godot/imported/polevaulting.png-632da0d58cb351629b0e5005fd59eca0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/sprites/zombies/polevaulting.png"
+dest_files=["res://.godot/imported/polevaulting.png-632da0d58cb351629b0e5005fd59eca0.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/assets/sprites/zombies/screendoor.png b/assets/sprites/zombies/screendoor.png
index c39eb10..5a0516c 100644
Binary files a/assets/sprites/zombies/screendoor.png and b/assets/sprites/zombies/screendoor.png differ
diff --git a/assets/sprites/zombies/screendoor.png.import b/assets/sprites/zombies/screendoor.png.import
index 602dd11..7a74c28 100644
--- a/assets/sprites/zombies/screendoor.png.import
+++ b/assets/sprites/zombies/screendoor.png.import
@@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
-uid="uid://cxbudhukl268p"
+uid="uid://cjb6l6n1fww35"
path="res://.godot/imported/screendoor.png-215bb197239ee5db1b25f8a23e7c9f3f.ctex"
metadata={
"vram_texture": false
diff --git a/assets/sprites/zombies/зомбешест.png b/assets/sprites/zombies/зомбешест.png
new file mode 100644
index 0000000..ae8b837
Binary files /dev/null and b/assets/sprites/zombies/зомбешест.png differ
diff --git a/assets/sprites/zombies/зомбешест.png.import b/assets/sprites/zombies/зомбешест.png.import
new file mode 100644
index 0000000..ff0b622
--- /dev/null
+++ b/assets/sprites/zombies/зомбешест.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cvfa8vi5ekyjh"
+path="res://.godot/imported/зомбешест.png-3258fc66a5cf4b42af14e335c216bd55.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/sprites/zombies/зомбешест.png"
+dest_files=["res://.godot/imported/зомбешест.png-3258fc66a5cf4b42af14e335c216bd55.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/assets/themes/ChooseYourSeeds.tres b/assets/themes/ChooseYourSeeds.tres
deleted file mode 100644
index fe483d4..0000000
--- a/assets/themes/ChooseYourSeeds.tres
+++ /dev/null
@@ -1,77 +0,0 @@
-[gd_resource type="Theme" load_steps=13 format=3 uid="uid://e8n88g31w7x7"]
-
-[ext_resource type="Texture2D" uid="uid://ci1a150qo2op2" path="res://assets/sprites/gui/ChooseYourSeeds/Panel.tres" id="1_86pbs"]
-[ext_resource type="Texture2D" uid="uid://bj5fouwjk3kum" path="res://assets/sprites/gui/ChooseYourSeeds/InnerPanel.tres" id="2_txg3r"]
-[ext_resource type="Texture2D" uid="uid://b5skdm3q7tkh3" path="res://assets/sprites/gui/ChooseYourSeeds/Grabber.tres" id="3_gf6bj"]
-[ext_resource type="Texture2D" uid="uid://cv255d4s0qopj" path="res://assets/sprites/gui/ChooseYourSeeds/Slider.tres" id="4_xn7o0"]
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_o7bns"]
-texture = ExtResource("1_86pbs")
-texture_margin_left = 10.0
-texture_margin_top = 9.0
-texture_margin_right = 9.0
-texture_margin_bottom = 10.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_jrih7"]
-texture = ExtResource("2_txg3r")
-texture_margin_left = 3.0
-texture_margin_top = 6.0
-texture_margin_right = 4.0
-texture_margin_bottom = 3.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_qlmyy"]
-texture = ExtResource("3_gf6bj")
-texture_margin_left = 4.0
-texture_margin_top = 7.0
-texture_margin_right = 4.0
-texture_margin_bottom = 7.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_la16p"]
-texture = ExtResource("4_xn7o0")
-texture_margin_left = 4.0
-texture_margin_top = 4.0
-texture_margin_right = 4.0
-texture_margin_bottom = 4.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_744lb"]
-texture = ExtResource("4_xn7o0")
-texture_margin_left = 4.0
-texture_margin_top = 4.0
-texture_margin_right = 4.0
-texture_margin_bottom = 4.0
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_amjg8"]
-bg_color = Color(0.574582, 0.300953, 0.501998, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_obyqu"]
-bg_color = Color(0.828756, 0.571484, 0.752803, 1)
-corner_radius_top_left = 4
-corner_radius_top_right = 4
-corner_radius_bottom_right = 4
-corner_radius_bottom_left = 4
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_5mgtv"]
-texture = ExtResource("4_xn7o0")
-texture_margin_left = 4.0
-texture_margin_top = 4.0
-texture_margin_right = 4.0
-texture_margin_bottom = 4.0
-
-[resource]
-Panel/styles/panel = SubResource("StyleBoxTexture_o7bns")
-PanelContainer/styles/panel = SubResource("StyleBoxTexture_jrih7")
-VScrollBar/styles/grabber = SubResource("StyleBoxTexture_qlmyy")
-VScrollBar/styles/grabber_highlight = SubResource("StyleBoxTexture_qlmyy")
-VScrollBar/styles/grabber_pressed = SubResource("StyleBoxTexture_qlmyy")
-VScrollBar/styles/scroll = SubResource("StyleBoxTexture_la16p")
-VScrollBar/styles/scroll_focus = SubResource("StyleBoxTexture_744lb")
-VSlider/icons/grabber = ExtResource("3_gf6bj")
-VSlider/icons/grabber_disabled = null
-VSlider/icons/grabber_highlight = ExtResource("3_gf6bj")
-VSlider/styles/grabber_area = SubResource("StyleBoxFlat_amjg8")
-VSlider/styles/grabber_area_highlight = SubResource("StyleBoxFlat_obyqu")
-VSlider/styles/slider = SubResource("StyleBoxTexture_5mgtv")
diff --git a/assets/themes/GameStyle.tres b/assets/themes/GameStyle.tres
deleted file mode 100644
index 42764e6..0000000
--- a/assets/themes/GameStyle.tres
+++ /dev/null
@@ -1,235 +0,0 @@
-[gd_resource type="Theme" load_steps=40 format=3 uid="uid://b8l285cjcgeyi"]
-
-[ext_resource type="FontFile" uid="uid://nbrt5q3t8tud" path="res://assets/fonts/pico12.ttf" id="1_103to"]
-[ext_resource type="Texture2D" uid="uid://d0yhee0scl7mc" path="res://assets/sprites/gui/ButtonBackground.tres" id="1_y0kbp"]
-[ext_resource type="Texture2D" uid="uid://dxmg20mrnpt8r" path="res://assets/sprites/gui/SelectionGeneric.tres" id="2_h0nd2"]
-[ext_resource type="Texture2D" uid="uid://b5skdm3q7tkh3" path="res://assets/sprites/gui/ChooseYourSeeds/Grabber.tres" id="3_i6w8j"]
-[ext_resource type="Texture2D" uid="uid://cc8jaddr5lww3" path="res://assets/sprites/gui/almanach/slider_h.tres" id="3_nec55"]
-[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="3_yeah5"]
-[ext_resource type="Texture2D" uid="uid://cv255d4s0qopj" path="res://assets/sprites/gui/ChooseYourSeeds/Slider.tres" id="4_yeah5"]
-[ext_resource type="Texture2D" uid="uid://lg1o4pu0n0u6" path="res://assets/sprites/gui/almanach/decrement.tres" id="5_ij6vn"]
-[ext_resource type="Texture2D" uid="uid://dssr8m4gbpks4" path="res://assets/sprites/gui/almanach/tab_disabled.tres" id="5_w6b64"]
-[ext_resource type="Texture2D" uid="uid://cdyfech0howdr" path="res://assets/sprites/gui/almanach/decrement_h.tres" id="6_nec55"]
-[ext_resource type="Texture2D" uid="uid://2bk8ce82cmw" path="res://assets/sprites/gui/almanach/tab.tres" id="6_ygj8j"]
-[ext_resource type="Texture2D" uid="uid://blr2uchlakvor" path="res://assets/sprites/gui/almanach/description_panel.tres" id="7_5pe7g"]
-[ext_resource type="Texture2D" uid="uid://dpfkai158kyfu" path="res://assets/sprites/gui/almanach/holder.tres" id="7_ls06u"]
-[ext_resource type="Texture2D" uid="uid://vpuytn3nd6c1" path="res://assets/sprites/gui/almanach/increment.tres" id="8_csc22"]
-[ext_resource type="Texture2D" uid="uid://cnio0bw2xla23" path="res://assets/sprites/gui/almanach/increment_h.tres" id="9_r6ela"]
-[ext_resource type="Texture2D" uid="uid://4cdp0k17u2l5" path="res://assets/sprites/gui/almanach/menu.tres" id="10_vatwx"]
-[ext_resource type="Texture2D" uid="uid://drvrnblf2fvgk" path="res://assets/sprites/gui/almanach/slider_bg.tres" id="14_3qjha"]
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_na4u2"]
-texture = ExtResource("1_y0kbp")
-texture_margin_left = 12.0
-texture_margin_top = 12.0
-texture_margin_right = 12.0
-texture_margin_bottom = 12.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mv7jy"]
-texture = ExtResource("2_h0nd2")
-texture_margin_left = 12.0
-texture_margin_top = 12.0
-texture_margin_right = 12.0
-texture_margin_bottom = 12.0
-axis_stretch_horizontal = 1
-axis_stretch_vertical = 1
-draw_center = false
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_csc22"]
-texture = ExtResource("3_nec55")
-texture_margin_left = 7.0
-texture_margin_top = 4.0
-texture_margin_right = 7.0
-texture_margin_bottom = 4.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_r6ela"]
-texture = ExtResource("14_3qjha")
-texture_margin_left = 6.0
-texture_margin_top = 6.0
-texture_margin_right = 6.0
-texture_margin_bottom = 6.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_vatwx"]
-texture = ExtResource("14_3qjha")
-texture_margin_left = 6.0
-texture_margin_top = 6.0
-texture_margin_right = 6.0
-texture_margin_bottom = 6.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ij6vn"]
-texture = ExtResource("4_yeah5")
-texture_margin_left = 5.0
-texture_margin_top = 5.0
-texture_margin_right = 5.0
-texture_margin_bottom = 5.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_nec55"]
-texture = ExtResource("4_yeah5")
-texture_margin_left = 5.0
-texture_margin_top = 5.0
-texture_margin_right = 5.0
-texture_margin_bottom = 5.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ls06u"]
-texture = ExtResource("4_yeah5")
-texture_margin_left = 5.0
-texture_margin_top = 5.0
-texture_margin_right = 5.0
-texture_margin_bottom = 5.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_jjopa"]
-texture = ExtResource("7_5pe7g")
-texture_margin_left = 4.0
-texture_margin_top = 5.0
-texture_margin_right = 7.0
-texture_margin_bottom = 4.0
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_5pe7g"]
-atlas = ExtResource("3_yeah5")
-region = Rect2(226, 77, 18, 18)
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_pjyej"]
-texture = SubResource("AtlasTexture_5pe7g")
-texture_margin_left = 6.0
-texture_margin_top = 6.0
-texture_margin_right = 6.0
-texture_margin_bottom = 6.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_w6b64"]
-texture = SubResource("AtlasTexture_5pe7g")
-texture_margin_left = 6.0
-texture_margin_top = 6.0
-texture_margin_right = 6.0
-texture_margin_bottom = 6.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_g0cdn"]
-texture = SubResource("AtlasTexture_5pe7g")
-texture_margin_left = 6.0
-texture_margin_top = 6.0
-texture_margin_right = 6.0
-texture_margin_bottom = 6.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_gl5ke"]
-texture = ExtResource("5_w6b64")
-texture_margin_left = 8.0
-texture_margin_top = 6.0
-texture_margin_right = 8.0
-texture_margin_bottom = 1.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_xmjd3"]
-texture = ExtResource("6_ygj8j")
-texture_margin_left = 8.0
-texture_margin_top = 6.0
-texture_margin_right = 8.0
-texture_margin_bottom = 1.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_3qjha"]
-texture = SubResource("AtlasTexture_5pe7g")
-texture_margin_left = 6.0
-texture_margin_top = 6.0
-texture_margin_right = 6.0
-texture_margin_bottom = 6.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_gvd6y"]
-texture = ExtResource("3_i6w8j")
-texture_margin_left = 4.0
-texture_margin_top = 7.0
-texture_margin_right = 4.0
-texture_margin_bottom = 7.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_epvq8"]
-texture = ExtResource("3_i6w8j")
-texture_margin_left = 4.0
-texture_margin_top = 7.0
-texture_margin_right = 4.0
-texture_margin_bottom = 7.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_lfl2m"]
-texture = ExtResource("3_i6w8j")
-texture_margin_left = 4.0
-texture_margin_top = 7.0
-texture_margin_right = 4.0
-texture_margin_bottom = 7.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_41q1p"]
-texture = ExtResource("14_3qjha")
-texture_margin_left = 6.0
-texture_margin_top = 6.0
-texture_margin_right = 6.0
-texture_margin_bottom = 6.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_5pe7g"]
-texture = ExtResource("4_yeah5")
-texture_margin_left = 5.0
-texture_margin_top = 5.0
-texture_margin_right = 5.0
-texture_margin_bottom = 5.0
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_chra8"]
-texture = ExtResource("7_5pe7g")
-texture_margin_left = 4.0
-texture_margin_top = 5.0
-texture_margin_right = 7.0
-texture_margin_bottom = 4.0
-
-[resource]
-default_font = ExtResource("1_103to")
-Button/colors/font_color = Color(0, 0, 0, 1)
-Button/colors/font_focus_color = Color(0, 0, 0, 1)
-Button/colors/font_outline_color = Color(1, 1, 1, 1)
-Button/colors/font_pressed_color = Color(1, 1, 1, 1)
-Button/styles/disabled = SubResource("StyleBoxTexture_na4u2")
-Button/styles/focus = SubResource("StyleBoxTexture_mv7jy")
-Button/styles/hover = SubResource("StyleBoxTexture_na4u2")
-Button/styles/normal = SubResource("StyleBoxTexture_na4u2")
-Button/styles/pressed = SubResource("StyleBoxTexture_na4u2")
-HScrollBar/styles/grabber = SubResource("StyleBoxTexture_csc22")
-HScrollBar/styles/grabber_highlight = SubResource("StyleBoxTexture_csc22")
-HScrollBar/styles/grabber_pressed = SubResource("StyleBoxTexture_csc22")
-HScrollBar/styles/scroll = SubResource("StyleBoxTexture_r6ela")
-HScrollBar/styles/scroll_focus = SubResource("StyleBoxTexture_vatwx")
-HSlider/icons/grabber = ExtResource("3_nec55")
-HSlider/icons/grabber_disabled = ExtResource("3_nec55")
-HSlider/icons/grabber_highlight = ExtResource("3_nec55")
-HSlider/styles/grabber_area = SubResource("StyleBoxTexture_ij6vn")
-HSlider/styles/grabber_area_highlight = SubResource("StyleBoxTexture_nec55")
-HSlider/styles/slider = SubResource("StyleBoxTexture_ls06u")
-LineEdit/colors/font_color = Color(0, 0, 0, 1)
-LineEdit/colors/font_selected_color = Color(0, 0, 0, 1)
-LineEdit/colors/font_uneditable_color = Color(0, 0, 0, 0.501961)
-LineEdit/styles/focus = SubResource("StyleBoxTexture_jjopa")
-LineEdit/styles/normal = SubResource("StyleBoxTexture_jjopa")
-LineEdit/styles/read_only = SubResource("StyleBoxTexture_jjopa")
-Panel/styles/panel = SubResource("StyleBoxTexture_pjyej")
-PanelContainer/styles/panel = SubResource("StyleBoxTexture_w6b64")
-TabContainer/icons/decrement = ExtResource("5_ij6vn")
-TabContainer/icons/decrement_highlight = ExtResource("6_nec55")
-TabContainer/icons/drop_mark = ExtResource("7_ls06u")
-TabContainer/icons/increment = ExtResource("8_csc22")
-TabContainer/icons/increment_highlight = ExtResource("9_r6ela")
-TabContainer/icons/menu = ExtResource("10_vatwx")
-TabContainer/icons/menu_highlight = ExtResource("10_vatwx")
-TabContainer/styles/panel = SubResource("StyleBoxTexture_g0cdn")
-TabContainer/styles/tab_disabled = SubResource("StyleBoxTexture_gl5ke")
-TabContainer/styles/tab_focus = SubResource("StyleBoxTexture_xmjd3")
-TabContainer/styles/tab_hovered = SubResource("StyleBoxTexture_xmjd3")
-TabContainer/styles/tab_selected = SubResource("StyleBoxTexture_xmjd3")
-TabContainer/styles/tab_unselected = SubResource("StyleBoxTexture_gl5ke")
-TextEdit/colors/font_color = Color(0, 0, 0, 1)
-TextEdit/styles/focus = SubResource("StyleBoxTexture_jjopa")
-TextEdit/styles/normal = SubResource("StyleBoxTexture_jjopa")
-TextEdit/styles/read_only = SubResource("StyleBoxTexture_jjopa")
-Tree/styles/panel = SubResource("StyleBoxTexture_3qjha")
-VScrollBar/styles/grabber = SubResource("StyleBoxTexture_gvd6y")
-VScrollBar/styles/grabber_highlight = SubResource("StyleBoxTexture_epvq8")
-VScrollBar/styles/grabber_pressed = SubResource("StyleBoxTexture_lfl2m")
-VScrollBar/styles/scroll = SubResource("StyleBoxTexture_41q1p")
-VScrollBar/styles/scroll_focus = SubResource("StyleBoxTexture_41q1p")
-VSlider/icons/grabber = ExtResource("3_i6w8j")
-VSlider/icons/grabber_disabled = ExtResource("3_i6w8j")
-VSlider/icons/grabber_highlight = ExtResource("3_i6w8j")
-VSlider/styles/grabber_area = SubResource("StyleBoxTexture_5pe7g")
-VSlider/styles/grabber_area_highlight = SubResource("StyleBoxTexture_5pe7g")
-VSlider/styles/slider = SubResource("StyleBoxTexture_5pe7g")
-description_panel_container/base_type = &"PanelContainer"
-description_panel_container/styles/panel = SubResource("StyleBoxTexture_chra8")
diff --git a/assets/themes/MainMenu.tres b/assets/themes/MainMenu.tres
deleted file mode 100644
index a27f46e..0000000
--- a/assets/themes/MainMenu.tres
+++ /dev/null
@@ -1,44 +0,0 @@
-[gd_resource type="Theme" load_steps=8 format=3 uid="uid://btulhvgwclket"]
-
-[ext_resource type="Texture2D" uid="uid://cmcwrgcm272gy" path="res://assets/sprites/gui/main_menu_buttons.png" id="1_jv7fv"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_132w1"]
-atlas = ExtResource("1_jv7fv")
-region = Rect2(96, 0, 48, 48)
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_45124"]
-texture = SubResource("AtlasTexture_132w1")
-texture_margin_left = 15.0
-texture_margin_top = 15.0
-texture_margin_right = 15.0
-texture_margin_bottom = 15.0
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_n6pvk"]
-atlas = ExtResource("1_jv7fv")
-region = Rect2(0, 0, 48, 48)
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_2hb1n"]
-texture = SubResource("AtlasTexture_n6pvk")
-texture_margin_left = 15.0
-texture_margin_top = 15.0
-texture_margin_right = 15.0
-texture_margin_bottom = 15.0
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_p1ypd"]
-atlas = ExtResource("1_jv7fv")
-region = Rect2(48, 0, 48, 48)
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_fg17j"]
-texture = SubResource("AtlasTexture_p1ypd")
-texture_margin_left = 15.0
-texture_margin_top = 15.0
-texture_margin_right = 15.0
-texture_margin_bottom = 15.0
-
-[resource]
-Button/colors/font_color = Color(0.875, 0.875, 0.875, 1)
-Button/colors/font_focus_color = Color(0.95, 0.95, 0.95, 1)
-Button/colors/font_hover_color = Color(1, 1, 1, 1)
-Button/styles/hover = SubResource("StyleBoxTexture_45124")
-Button/styles/normal = SubResource("StyleBoxTexture_2hb1n")
-Button/styles/pressed = SubResource("StyleBoxTexture_fg17j")
diff --git a/assets/zombies/basic.tres b/assets/zombies/basic.tres
deleted file mode 100644
index 7d17747..0000000
--- a/assets/zombies/basic.tres
+++ /dev/null
@@ -1,21 +0,0 @@
-[gd_resource type="Resource" script_class="ZombieResource" load_steps=5 format=3 uid="uid://buvacn56kyy2p"]
-
-[ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_c2mq3"]
-[ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/entities/ZombieResource.cs" id="1_k277m"]
-[ext_resource type="Texture2D" uid="uid://5gpf2sodhn6e" path="res://assets/sprites/zombies/previews.png" id="1_l6de4"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_wu2q8"]
-atlas = ExtResource("1_l6de4")
-region = Rect2(0, 0, 43, 88)
-
-[resource]
-script = ExtResource("1_k277m")
-NameKey = "basic"
-DescriptionKey = "basic_desc"
-Cost = 1.0
-Scene = ExtResource("1_c2mq3")
-ReloadTime = 1.0
-ReloadProgress = 0.0
-Preview = SubResource("AtlasTexture_wu2q8")
-Order = 0
-metadata/_custom_type_script = "uid://cqxj7o8hdm82n"
diff --git a/assets/zombies/buckethead.tres b/assets/zombies/buckethead.tres
deleted file mode 100644
index f288f99..0000000
--- a/assets/zombies/buckethead.tres
+++ /dev/null
@@ -1,21 +0,0 @@
-[gd_resource type="Resource" script_class="ZombieResource" load_steps=5 format=3 uid="uid://dkhjlu7u0vny6"]
-
-[ext_resource type="PackedScene" uid="uid://xu4i6tmkv00a" path="res://scenes/entities/Zombies/bucket_zombie.tscn" id="1_lhcag"]
-[ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/entities/ZombieResource.cs" id="1_sngfh"]
-[ext_resource type="Texture2D" uid="uid://5gpf2sodhn6e" path="res://assets/sprites/zombies/previews.png" id="1_ufs7s"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_drksh"]
-atlas = ExtResource("1_ufs7s")
-region = Rect2(137, 0, 47, 101)
-
-[resource]
-script = ExtResource("1_sngfh")
-NameKey = "buckethead"
-DescriptionKey = "buckethead_desc"
-Cost = 5.0
-Scene = ExtResource("1_lhcag")
-ReloadTime = 1.0
-ReloadProgress = 0.0
-Preview = SubResource("AtlasTexture_drksh")
-Order = 2
-metadata/_custom_type_script = "uid://cqxj7o8hdm82n"
diff --git a/assets/zombies/conehead.tres b/assets/zombies/conehead.tres
deleted file mode 100644
index 64b2f05..0000000
--- a/assets/zombies/conehead.tres
+++ /dev/null
@@ -1,21 +0,0 @@
-[gd_resource type="Resource" script_class="ZombieResource" load_steps=5 format=3 uid="uid://nceohd32fkxk"]
-
-[ext_resource type="Texture2D" uid="uid://5gpf2sodhn6e" path="res://assets/sprites/zombies/previews.png" id="1_f7g7v"]
-[ext_resource type="PackedScene" uid="uid://hhjbqkjqpt7x" path="res://scenes/entities/Zombies/cone_zombie.tscn" id="1_llf5l"]
-[ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/entities/ZombieResource.cs" id="1_sw7hj"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_q44xp"]
-atlas = ExtResource("1_f7g7v")
-region = Rect2(92, 0, 45, 106)
-
-[resource]
-script = ExtResource("1_sw7hj")
-NameKey = "conehead"
-DescriptionKey = "conehead_desc"
-Cost = 2.0
-Scene = ExtResource("1_llf5l")
-ReloadTime = 1.0
-ReloadProgress = 0.0
-Preview = SubResource("AtlasTexture_q44xp")
-Order = 1
-metadata/_custom_type_script = "uid://cqxj7o8hdm82n"
diff --git a/assets/zombies/hobo.tres b/assets/zombies/hobo.tres
deleted file mode 100644
index ed23809..0000000
--- a/assets/zombies/hobo.tres
+++ /dev/null
@@ -1,21 +0,0 @@
-[gd_resource type="Resource" script_class="ZombieResource" load_steps=5 format=3 uid="uid://c38vfdw5b60xw"]
-
-[ext_resource type="PackedScene" uid="uid://bgqmwsb6ynm81" path="res://scenes/entities/Zombies/hobo.tscn" id="1_4myt6"]
-[ext_resource type="Texture2D" uid="uid://5gpf2sodhn6e" path="res://assets/sprites/zombies/previews.png" id="1_nt7w3"]
-[ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/entities/ZombieResource.cs" id="1_u5qpq"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_73ahc"]
-atlas = ExtResource("1_nt7w3")
-region = Rect2(43, 0, 49, 95)
-
-[resource]
-script = ExtResource("1_u5qpq")
-NameKey = "hobo"
-DescriptionKey = "hobo_desc"
-Cost = 7.0
-Scene = ExtResource("1_4myt6")
-ReloadTime = 1.0
-ReloadProgress = 0.0
-Preview = SubResource("AtlasTexture_73ahc")
-Order = 5
-metadata/_custom_type_script = "uid://cqxj7o8hdm82n"
diff --git a/default_bus_layout.tres b/default_bus_layout.tres
deleted file mode 100644
index 1654afb..0000000
--- a/default_bus_layout.tres
+++ /dev/null
@@ -1,16 +0,0 @@
-[gd_resource type="AudioBusLayout" format=3 uid="uid://igejanqt2yqf"]
-
-[resource]
-bus/0/volume_db = -0.130497
-bus/1/name = &"MusicBus"
-bus/1/solo = false
-bus/1/mute = false
-bus/1/bypass_fx = false
-bus/1/volume_db = -0.130497
-bus/1/send = &"Master"
-bus/2/name = &"SFXBus"
-bus/2/solo = false
-bus/2/mute = false
-bus/2/bypass_fx = false
-bus/2/volume_db = 0.0
-bus/2/send = &"Master"
diff --git a/export/deploy-nightly.ps1 b/export/deploy-nightly.ps1
deleted file mode 100644
index cf70b89..0000000
--- a/export/deploy-nightly.ps1
+++ /dev/null
@@ -1,14 +0,0 @@
-# Step 1: Read the contents of "token.txt" into variable $tkn
-$tkn = Get-Content -Path "token.txt" -Raw
-
-# Step 2: Prompt the user for version input
-$ver = Read-Host "Enter version"
-
-# Step 3: Compress "build_folder" into a zip file named "lon$ver.zip"
-$zipName = "lon$ver.zip"
-Compress-Archive -Path "build_folder" -DestinationPath $zipName -Force
-
-& ".\deploy_tools\butler.exe" push $zipName "lon-team/lon-test:windows" --userversion $ver
-# Step 4: Execute deploy_tools\gjpush with required arguments
-#& ".\deploy_tools\gjpush.exe" -t $tkn -g 1005720 -p 1012636 -r $ver $zipName
-Remove-Item $zipName
\ No newline at end of file
diff --git a/export/deploy.ps1 b/export/deploy.ps1
deleted file mode 100644
index aacc66b..0000000
--- a/export/deploy.ps1
+++ /dev/null
@@ -1,14 +0,0 @@
-# Step 1: Read the contents of "token.txt" into variable $tkn
-$tkn = Get-Content -Path "token.txt" -Raw
-
-# Step 2: Prompt the user for version input
-$ver = Read-Host "Enter version"
-
-# Step 3: Compress "build_folder" into a zip file named "lon$ver.zip"
-$zipName = "lon$ver.zip"
-Compress-Archive -Path "build_folder" -DestinationPath $zipName -Force
-
-& ".\deploy_tools\butler.exe" push $zipName "lon-team/liberation-of-neighbourville:windows" --userversion $ver
-# Step 4: Execute deploy_tools\gjpush with required arguments
-#& ".\deploy_tools\gjpush.exe" -t $tkn -g 1005720 -p 1012636 -r $ver $zipName
-Remove-Item $zipName
\ No newline at end of file
diff --git a/export/deploy_tools/7z.dll b/export/deploy_tools/7z.dll
deleted file mode 100644
index ed9c15b..0000000
Binary files a/export/deploy_tools/7z.dll and /dev/null differ
diff --git a/export/deploy_tools/butler.exe b/export/deploy_tools/butler.exe
deleted file mode 100644
index a6adff0..0000000
Binary files a/export/deploy_tools/butler.exe and /dev/null differ
diff --git a/export/deploy_tools/c7zip.dll b/export/deploy_tools/c7zip.dll
deleted file mode 100644
index 20c6ec8..0000000
Binary files a/export/deploy_tools/c7zip.dll and /dev/null differ
diff --git a/export/deploy_tools/gjpush.exe b/export/deploy_tools/gjpush.exe
deleted file mode 100644
index b45524f..0000000
Binary files a/export/deploy_tools/gjpush.exe and /dev/null differ
diff --git a/project.godot b/project.godot
index 96ed95b..8d3ad66 100644
--- a/project.godot
+++ b/project.godot
@@ -17,20 +17,14 @@ warnings/check_angle_interpolation_type_conflicting=false
config/name="Liberation of the Neighbourville"
config/version="0.3.0"
-run/main_scene="uid://bfstrli64u23y"
-config/features=PackedStringArray("4.4", "C#", "Forward Plus")
+run/main_scene="uid://bh1yiiv1fi0b8"
+config/features=PackedStringArray("4.4", "Forward Plus")
config/icon="res://icon.png"
config/windows_native_icon="res://icon.ico"
[autoload]
-LevelController="*res://scripts/level/LevelController.cs"
-GameRegistry="*res://scripts/systems/GameRegistry.cs"
-Cheats="*res://scripts/debug/Cheats.cs"
-AudioSequencer="*res://scenes/audio_sequencer.tscn"
-SaveSerializer="*res://scripts/SaveSerializer.cs"
-PlayerProgress="*res://scripts/systems/static-data/PlayerProgress.cs"
-GamepadHandler="*res://scripts/gamepad/GamepadHandler.cs"
+LevelEventBus="*res://scripts/autoloads/level_event_bus.gd"
[display]
@@ -40,34 +34,24 @@ window/stretch/mode="canvas_items"
[dotnet]
-project/assembly_name="NewLON"
-
-[editor]
-
-movie_writer/movie_file="D:/Projects/GOIDA/newlon/clips/movie.avi"
+project/assembly_name="Liberation of the Neighbourville"
[editor_plugins]
-enabled=PackedStringArray("res://addons/floatmodifiers/plugin.cfg", "res://addons/pvzadventure/plugin.cfg")
-
-[file_customization]
-
-folder_colors={
-"res://assets/levels/": "purple",
-"res://assets/plants/": "green",
-"res://assets/sprites/atlases/plants/": "green",
-"res://scenes/": "red",
-"res://scenes/entities/plants/": "green",
-"res://scripts/": "blue"
-}
+enabled=PackedStringArray()
[filesystem]
import/blender/enabled=false
+[global_group]
+
+Plants="Mostly player's means of defence"
+Zombies="Agressors of player"
+Projectile="Something that has ben shot"
+
[gui]
-theme/custom="res://assets/themes/GameStyle.tres"
theme/custom_font="res://assets/fonts/pico12.ttf"
[input]
@@ -200,15 +184,12 @@ locale/translations=PackedStringArray("res://translations/plants.en.translation"
[layer_names]
2d_physics/layer_1="Structures"
-2d_physics/layer_2="Plants Dummy"
-2d_physics/layer_3="Plants True"
-2d_physics/layer_4="Zombies Dummy"
-2d_physics/layer_5="Zombies True"
-2d_physics/layer_6="Projectiles"
-2d_physics/layer_7="FallLine"
-2d_physics/layer_8="FallParticles"
-2d_physics/layer_9="Tiles"
+2d_physics/layer_2="Plants"
+2d_physics/layer_3="Zombies"
+2d_physics/layer_4="Projectiles"
[rendering]
textures/canvas_textures/default_texture_filter=0
+renderer/rendering_method="gl_compatibility"
+renderer/rendering_method.mobile="gl_compatibility"
diff --git a/puki.txt b/puki.txt
deleted file mode 100644
index 7948cdf..0000000
--- a/puki.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-В начале сотворил Бог небо и землю.
-Земля же была безвидна и пуста, и тьма над бездною, и Дух Божий носился над водою.
-И сказал Бог: да будет свет. И стал свет.
-И увидел Бог свет, что он хорош, и отделил Бог свет от тьмы.
-И назвал Бог свет днем, а тьму ночью. И был вечер, и было утро: день один.
-И сказал Бог: да будет твердь посреди воды, и да отделяет она воду от воды. [И стало так.]
-И создал Бог твердь, и отделил воду, которая под твердью, от воды, которая над твердью. И стало так.
-И назвал Бог твердь небом. [И увидел Бог, что
-хорошо.] И был вечер, и было утро: день второй.
-И сказал Бог: да соберется вода, которая под небом, в одно место, и да явится суша. И стало так. [И собралась вода под небом в свои места, и явилась суша.]
-И назвал Бог сушу землею, а собрание вод назвал морями. И увидел Бог, что это хорошо.
-И сказал Бог: да произрастит земля зелень, траву, сеющую семя [по роду и по подобию
-и] дерево плодовитое, приносящее по роду своему плод, в котором семя его на земле. И стало так.
-И произвела земля зелень, траву, сеющую семя по роду [и по подобию] ее, и дерево [плодовитое], приносящее плод, в котором семя его по роду его [на земле]. И увидел Бог, что это хорошо.
-И был вечер, и было утро: день третий.
-И сказал Бог: да будут светила на тверди небесной [для освещения земли и] для отделения дня от ночи, и для знамений, и времен, и дней, и годов;
-и да будут они светильниками на тверди небесной, чтобы светить на землю. И стало так.
-И создал Бог два светила великие: светило большее, для управления днем, и светило меньшее, для управления ночью, и звезды;
-и поставил их Бог на тверди небесной, чтобы светить на землю,
-и управлять днем и ночью, и отделять свет от тьмы. И увидел Бог, что это хорошо.
-И был вечер, и было утро: день четвёртый.
-И сказал Бог: да произведет вода пресмыкающихся, душу живую; и птицы да полетят над землею, по тверди небесной. [И стало так.]
-И сотворил Бог рыб больших и всякую душу животных пресмыкающихся, которых произвела вода, по роду их, и всякую птицу пернатую по роду ее. И увидел Бог, что это хорошо.
-И благословил их Бог, говоря: плодитесь и размножайтесь, и наполняйте воды в морях, и птицы да размножаются на земле.
-И был вечер, и было утро: день пятый.
-И сказал Бог: да произведет земля душу живую по роду ее, скотов, и гадов, и зверей земных по роду их. И стало так.
-И создал Бог зверей земных по роду их, и скот по роду его, и всех гадов земных по роду их. И увидел Бог, что это хорошо.
-И сказал Бог: сотворим человека по образу Нашему [и] по подобию Нашему, и да владычествуют они над рыбами морскими, и над птицами небесными, [и над зверями,] и над скотом, и над всею землею, и над всеми гадами, пресмыкающимися по земле.
-И сотворил Бог человека по образу Своему, по образу Божию сотворил его; мужчину и женщину сотворил их.
-И благословил их Бог, и сказал им Бог: плодитесь и размножайтесь, и наполняйте землю, и обладайте ею, и владычествуйте над рыбами морскими [и над зверями,] и над птицами небесными, [и над всяким скотом, и над всею землею,] и над всяким животным, пресмыкающимся по земле.
-И сказал Бог: вот, Я дал вам всякую траву, сеющую семя, какая есть на всей земле, и всякое дерево, у которого плод древесный, сеющий семя; – вам сие будет в пищу;
-а всем зверям земным, и всем птицам небесным, и всякому [гаду,] пресмыкающемуся по земле, в котором душа живая, дал Я всю зелень травную в пищу. И стало так.
-И увидел Бог все, что Он создал, и вот, хорошо весьма. И был вечер, и было утро: день шестой.
diff --git a/resources/plants/aloe.tres b/resources/plants/aloe.tres
new file mode 100644
index 0000000..0b41558
--- /dev/null
+++ b/resources/plants/aloe.tres
@@ -0,0 +1,15 @@
+[gd_resource type="Resource" script_class="SeedpacketResource" load_steps=4 format=3 uid="uid://d1nwlatkrtkpe"]
+
+[ext_resource type="Script" uid="uid://dtjdfji87kybn" path="res://scripts/resources/entity_resource.gd" id="1_giqbo"]
+[ext_resource type="Texture2D" uid="uid://d4btl7vqi4v0q" path="res://assets/sprites/plants/aloe.tres" id="1_qou1a"]
+[ext_resource type="PackedScene" uid="uid://dba4s3ke32u0l" path="res://scenes/plants/aloe.tscn" id="2_6p2kr"]
+
+[resource]
+script = ExtResource("1_giqbo")
+preview = ExtResource("1_qou1a")
+cost = 75.0
+recharge_time = 5.0
+initial_recharge_percent = 1.0
+scene = ExtResource("2_6p2kr")
+order = 0
+metadata/_custom_type_script = "uid://dtjdfji87kybn"
diff --git a/resources/plants/cucumber.tres b/resources/plants/cucumber.tres
new file mode 100644
index 0000000..0da1a81
--- /dev/null
+++ b/resources/plants/cucumber.tres
@@ -0,0 +1,17 @@
+[gd_resource type="Resource" script_class="SeedpacketResource" load_steps=4 format=3 uid="uid://bwsd31okx0yxc"]
+
+[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_snnbv"]
+[ext_resource type="Script" uid="uid://dtjdfji87kybn" path="res://scripts/resources/entity_resource.gd" id="2_fl6wr"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_fl6wr"]
+atlas = ExtResource("1_snnbv")
+region = Rect2(353, 241, 41, 65)
+
+[resource]
+script = ExtResource("2_fl6wr")
+preview = SubResource("AtlasTexture_fl6wr")
+cost = 75.0
+recharge_time = 5.0
+initial_recharge_percent = 1.0
+order = 0
+metadata/_custom_type_script = "uid://dtjdfji87kybn"
diff --git a/resources/plants/peashooter.tres b/resources/plants/peashooter.tres
new file mode 100644
index 0000000..d448189
--- /dev/null
+++ b/resources/plants/peashooter.tres
@@ -0,0 +1,15 @@
+[gd_resource type="Resource" script_class="SeedpacketResource" load_steps=4 format=3 uid="uid://bf8u3nwwn5e1d"]
+
+[ext_resource type="Texture2D" uid="uid://ot1n4nval86w" path="res://assets/sprites/plants/peashooter.tres" id="1_o0b0s"]
+[ext_resource type="Script" uid="uid://dtjdfji87kybn" path="res://scripts/resources/entity_resource.gd" id="2_jwk2v"]
+[ext_resource type="PackedScene" uid="uid://bxs34adppsh5e" path="res://scenes/plants/peashooter.tscn" id="2_n78qv"]
+
+[resource]
+script = ExtResource("2_jwk2v")
+preview = ExtResource("1_o0b0s")
+cost = 75.0
+recharge_time = 5.0
+initial_recharge_percent = 1.0
+scene = ExtResource("2_n78qv")
+order = 0
+metadata/_custom_type_script = "uid://dtjdfji87kybn"
diff --git a/resources/plants/sunflower.tres b/resources/plants/sunflower.tres
new file mode 100644
index 0000000..6db3eb1
--- /dev/null
+++ b/resources/plants/sunflower.tres
@@ -0,0 +1,13 @@
+[gd_resource type="Resource" script_class="SeedpacketResource" load_steps=3 format=3 uid="uid://4epsulft2pub"]
+
+[ext_resource type="Texture2D" uid="uid://iw75j816gbc" path="res://assets/sprites/plants/sunflower.tres" id="1_o7rt7"]
+[ext_resource type="Script" uid="uid://dtjdfji87kybn" path="res://scripts/resources/entity_resource.gd" id="2_6ebgj"]
+
+[resource]
+script = ExtResource("2_6ebgj")
+preview = ExtResource("1_o7rt7")
+cost = 50.0
+recharge_time = 5.0
+initial_recharge_percent = 0.0
+order = 1
+metadata/_custom_type_script = "uid://dtjdfji87kybn"
diff --git a/resources/plants/wallnut.tres b/resources/plants/wallnut.tres
new file mode 100644
index 0000000..72c815e
--- /dev/null
+++ b/resources/plants/wallnut.tres
@@ -0,0 +1,12 @@
+[gd_resource type="Resource" script_class="SeedpacketResource" load_steps=3 format=3 uid="uid://dxe0cnfw2j1x0"]
+
+[ext_resource type="Texture2D" uid="uid://g2oppl54efja" path="res://assets/sprites/plants/Wallnut.tres" id="1_ggq3n"]
+[ext_resource type="Script" uid="uid://dtjdfji87kybn" path="res://scripts/resources/entity_resource.gd" id="2_10a4p"]
+
+[resource]
+script = ExtResource("2_10a4p")
+preview = ExtResource("1_ggq3n")
+cost = 50.0
+recharge_time = 24.0
+initial_recharge_percent = 1.0
+metadata/_custom_type_script = "uid://dtjdfji87kybn"
diff --git a/resources/zombies/basic.tres b/resources/zombies/basic.tres
new file mode 100644
index 0000000..10a9b50
--- /dev/null
+++ b/resources/zombies/basic.tres
@@ -0,0 +1,15 @@
+[gd_resource type="Resource" script_class="SeedpacketResource" load_steps=4 format=3 uid="uid://cbooo6i1rifb7"]
+
+[ext_resource type="Texture2D" uid="uid://dunlsp8tx7a4w" path="res://assets/sprites/zombies/Зондби.png" id="1_c2mq3"]
+[ext_resource type="Script" uid="uid://dtjdfji87kybn" path="res://scripts/resources/entity_resource.gd" id="1_k277m"]
+[ext_resource type="PackedScene" uid="uid://dunih4xhnupy5" path="res://scenes/zombies/basic.tscn" id="2_l6de4"]
+
+[resource]
+script = ExtResource("1_k277m")
+preview = ExtResource("1_c2mq3")
+cost = 1.0
+recharge_time = 5.0
+initial_recharge_percent = 1.0
+scene = ExtResource("2_l6de4")
+order = 0
+metadata/_custom_type_script = "uid://dtjdfji87kybn"
diff --git a/scenes/audio_sequencer.tscn b/scenes/audio_sequencer.tscn
deleted file mode 100644
index a9df5dc..0000000
--- a/scenes/audio_sequencer.tscn
+++ /dev/null
@@ -1,15 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://cn0bk76pi8ehc"]
-
-[ext_resource type="Script" uid="uid://cauc1ieq84fwg" path="res://scripts/audio/AudioSequencer.cs" id="1_41q0p"]
-[ext_resource type="Script" uid="uid://c1x4n4nqyq72f" path="res://scripts/audio/ChannelSettings.cs" id="2_npxdp"]
-
-[sub_resource type="Resource" id="Resource_iuccj"]
-resource_local_to_scene = true
-script = ExtResource("2_npxdp")
-restartTreshold = 0.0
-metadata/_custom_type_script = "uid://c1x4n4nqyq72f"
-
-[node name="AudioSequencer" type="Node"]
-process_mode = 3
-script = ExtResource("1_41q0p")
-standardSettings = SubResource("Resource_iuccj")
diff --git a/scenes/debug_location.tscn b/scenes/debug_location.tscn
deleted file mode 100644
index 77dfd92..0000000
--- a/scenes/debug_location.tscn
+++ /dev/null
@@ -1,3 +0,0 @@
-[gd_scene format=3 uid="uid://bu5ryqtgqwjp6"]
-
-[node name="DebugLocation" type="Node2D"]
diff --git a/scenes/debug_lvl.tscn b/scenes/debug_lvl.tscn
deleted file mode 100644
index e216c3e..0000000
--- a/scenes/debug_lvl.tscn
+++ /dev/null
@@ -1,128 +0,0 @@
-[gd_scene load_steps=12 format=3 uid="uid://crxsvv7drckpw"]
-
-[ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_i3bf5"]
-[ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="2_vmxhy"]
-[ext_resource type="Script" uid="uid://bso32xkw738sy" path="res://scripts/level/PoolContainer.cs" id="3_1y18w"]
-[ext_resource type="PackedScene" uid="uid://dpxxjfd5lv5sv" path="res://scenes/gui/choose_your_seeds.tscn" id="5_5e78h"]
-[ext_resource type="PackedScene" uid="uid://devn21c7luf45" path="res://scenes/level components/field_controller.tscn" id="5_lwpg6"]
-[ext_resource type="PackedScene" uid="uid://cfnmspei3k4p7" path="res://scenes/gui/runtime_gui.tscn" id="6_0baou"]
-[ext_resource type="PackedScene" uid="uid://bpekho7leatr5" path="res://scenes/sun.tscn" id="6_ay12k"]
-[ext_resource type="Script" uid="uid://cslqjdd5wq4rc" path="res://scripts/level/SunSpawner.cs" id="6_lkguy"]
-[ext_resource type="Script" uid="uid://blpu7t8tf6277" path="res://scripts/particles/FallFloor.cs" id="10_q4fsb"]
-[ext_resource type="PackedScene" uid="uid://bgqmwsb6ynm81" path="res://scenes/entities/Zombies/hobo.tscn" id="10_tbxxq"]
-
-[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_tbxxq"]
-
-[node name="debug_lvl" type="Node2D"]
-y_sort_enabled = true
-
-[node name="SummertimeSaga" type="Sprite2D" parent="."]
-z_index = -4096
-z_as_relative = false
-position = Vector2(500, 200)
-texture = ExtResource("2_vmxhy")
-metadata/_edit_lock_ = true
-
-[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(481, 200)
-metadata/_edit_lock_ = true
-
-[node name="RuntimeLevelData" type="Node" parent="."]
-script = ExtResource("1_i3bf5")
-SunCount = 999999
-
-[node name="Pools" type="Node2D" parent="." node_paths=PackedStringArray("Zombies", "Plants", "Projectiles", "Structures", "Particles")]
-script = ExtResource("3_1y18w")
-Zombies = NodePath("Zombies")
-Plants = NodePath("Plants")
-Projectiles = NodePath("Projectiles")
-Structures = NodePath("Structures")
-Particles = NodePath("Projectiles")
-
-[node name="Zombies" type="Node2D" parent="Pools"]
-z_index = 3
-y_sort_enabled = true
-
-[node name="Plants" type="Node2D" parent="Pools"]
-z_index = 1
-y_sort_enabled = true
-
-[node name="Projectiles" type="Node2D" parent="Pools"]
-z_index = 4
-y_sort_enabled = true
-
-[node name="Structures" type="Node2D" parent="Pools"]
-z_index = 2
-y_sort_enabled = true
-
-[node name="GuiLayer" type="CanvasLayer" parent="."]
-layer = 10
-
-[node name="RuntimeGUI" parent="GuiLayer" instance=ExtResource("6_0baou")]
-metadata/_edit_lock_ = true
-
-[node name="ChooseYourSeeds" parent="GuiLayer" instance=ExtResource("5_5e78h")]
-
-[node name="Overlay" type="CanvasLayer" parent="."]
-layer = 6
-follow_viewport_enabled = true
-
-[node name="FieldController" parent="Overlay" instance=ExtResource("5_lwpg6")]
-
-[node name="SunSpawner" type="Node" parent="."]
-script = ExtResource("6_lkguy")
-SunScene = ExtResource("6_ay12k")
-
-[node name="Timer" type="Timer" parent="SunSpawner"]
-wait_time = 5.0
-autostart = true
-
-[node name="Lines" type="Node2D" parent="."]
-script = ExtResource("10_q4fsb")
-
-[node name="Floor" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 247)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor"]
-shape = SubResource("WorldBoundaryShape2D_tbxxq")
-
-[node name="Floor2" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 306)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor2"]
-shape = SubResource("WorldBoundaryShape2D_tbxxq")
-
-[node name="Floor3" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 367)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor3"]
-shape = SubResource("WorldBoundaryShape2D_tbxxq")
-
-[node name="Floor4" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 183)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor4"]
-shape = SubResource("WorldBoundaryShape2D_tbxxq")
-
-[node name="Floor5" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 132)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor5"]
-shape = SubResource("WorldBoundaryShape2D_tbxxq")
-
-[node name="Hobo" parent="." instance=ExtResource("10_tbxxq")]
-position = Vector2(755, 256)
-garlicSound = null
-freezeSound = null
-
-[connection signal="timeout" from="SunSpawner/Timer" to="SunSpawner" method="Spawn"]
diff --git a/scenes/droppables/plant/droppable_peashooter.tscn b/scenes/droppables/plant/droppable_peashooter.tscn
deleted file mode 100644
index b5cdf30..0000000
--- a/scenes/droppables/plant/droppable_peashooter.tscn
+++ /dev/null
@@ -1,80 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://bmn3ef86xi7e5"]
-
-[ext_resource type="Script" uid="uid://gymo10tjruj2" path="res://scripts/droppable-items/DroppableSeedpacket.cs" id="1_a3ea7"]
-[ext_resource type="Texture2D" uid="uid://dxyf557m4mq1p" path="res://assets/sprites/gui/EmptyPlantCard.png" id="2_7ixh2"]
-
-[sub_resource type="LabelSettings" id="LabelSettings_scv3y"]
-resource_local_to_scene = true
-font_size = 13
-font_color = Color(0, 0, 0, 1)
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_2c7xr"]
-size = Vector2(41, 56)
-
-[node name="PlantReward" type="Area2D" node_paths=PackedStringArray("_cost", "_icon", "_packet")]
-script = ExtResource("1_a3ea7")
-_cost = NodePath("Seedpacket/Cost")
-_icon = NodePath("Seedpacket/PlantPreviewContainer/Preview")
-_packet = NodePath("Seedpacket")
-
-[node name="Seedpacket" type="TextureRect" parent="."]
-anchors_preset = -1
-anchor_right = 0.137
-anchor_bottom = 0.28
-offset_left = -20.5
-offset_top = -28.0
-offset_right = 20.5
-offset_bottom = 28.0
-mouse_default_cursor_shape = 2
-texture = ExtResource("2_7ixh2")
-metadata/_edit_use_anchors_ = true
-
-[node name="Cost" type="Label" parent="Seedpacket"]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.146
-anchor_top = 0.732
-anchor_right = 0.854
-anchor_bottom = 0.893
-offset_left = 0.0279989
-offset_top = 0.0159912
-offset_right = -0.0279999
-offset_bottom = -0.0160065
-grow_horizontal = 2
-grow_vertical = 2
-label_settings = SubResource("LabelSettings_scv3y")
-horizontal_alignment = 1
-vertical_alignment = 1
-text_overrun_behavior = 3
-
-[node name="PlantPreviewContainer" type="Control" parent="Seedpacket"]
-clip_contents = true
-layout_mode = 1
-anchor_left = -0.061
-anchor_top = -0.036
-anchor_right = 1.061
-anchor_bottom = 0.661
-offset_left = 0.00199986
-offset_top = 0.0320001
-offset_right = -0.0019989
-offset_bottom = -0.0319977
-mouse_filter = 2
-
-[node name="Preview" type="TextureRect" parent="Seedpacket/PlantPreviewContainer"]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.185
-anchor_top = 0.205
-anchor_right = 0.815
-anchor_bottom = 1.333
-offset_left = -0.0200005
-offset_top = 0.00999928
-offset_right = 0.0199966
-offset_bottom = 0.0259933
-mouse_filter = 2
-mouse_default_cursor_shape = 2
-expand_mode = 1
-stretch_mode = 5
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource("RectangleShape2D_2c7xr")
diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn
deleted file mode 100644
index e8d6372..0000000
--- a/scenes/entities/Zombies/bucket_zombie.tscn
+++ /dev/null
@@ -1,1279 +0,0 @@
-[gd_scene load_steps=71 format=3 uid="uid://xu4i6tmkv00a"]
-
-[ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/entities/zombies/RuntimeZombieData.cs" id="1_6aq6w"]
-[ext_resource type="Texture2D" uid="uid://ce04l60l6mhfk" path="res://assets/sprites/bucket1.tres" id="3_0nlp0"]
-[ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="4_1avwi"]
-[ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="4_1s2fn"]
-[ext_resource type="Texture2D" uid="uid://ikk4jp7mvm3s" path="res://assets/sprites/bucket2.tres" id="4_xx7fu"]
-[ext_resource type="AudioStream" uid="uid://bu1egfsyplpx4" path="res://assets/audio/sfx/metalhit_generic.tres" id="5_lt6ps"]
-[ext_resource type="Texture2D" uid="uid://cmmpfi8ug43l2" path="res://assets/sprites/bucket3.tres" id="5_v1iwd"]
-[ext_resource type="Script" uid="uid://dau0tfmlfiqmo" path="res://scripts/entities/EntityHPObserver.cs" id="5_wndvs"]
-[ext_resource type="AudioStream" uid="uid://w0qfwds4o3ti" path="res://assets/audio/sfx/hit_generic.tres" id="6_kedip"]
-[ext_resource type="Texture2D" uid="uid://dacgbwohpmeed" path="res://assets/sprites/zombies/basic.png" id="6_lea3a"]
-[ext_resource type="Script" uid="uid://bbw848msxb4re" path="res://scripts/entities/DegradingSprite.cs" id="8_jdtg8"]
-[ext_resource type="Texture2D" uid="uid://dri70dxyks7xh" path="res://assets/sprites/zombies/hobo.png" id="11_5swed"]
-[ext_resource type="AnimationLibrary" uid="uid://ceb3khu7rwgy8" path="res://assets/animations/zombies/basic.res" id="12_gjchu"]
-[ext_resource type="Script" uid="uid://dw7v3s4kbu7ma" path="res://scripts/entities/AnimationStatistics.cs" id="13_lbhkf"]
-[ext_resource type="Script" uid="uid://dqyony6jxt2p0" path="res://scripts/entities/zombies/EatBox.cs" id="14_xxv4d"]
-[ext_resource type="AnimationNodeStateMachine" uid="uid://dj0blope85bg7" path="res://assets/animations/zombies/basic_zombie_tree.tres" id="16_bufgc"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="17_3hgrb"]
-[ext_resource type="Script" uid="uid://7hdj2k14lfe4" path="res://scripts/entities/zombies/ZombieMover.cs" id="18_tffdk"]
-[ext_resource type="Script" uid="uid://cnn0ymuhypdff" path="res://scripts/audio/ChannelPlaylist.cs" id="19_k2y7k"]
-[ext_resource type="Script" uid="uid://fd4im1fmwc5n" path="res://scripts/entities/Armor.cs" id="22_aasgd"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="23_rgojs"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="24_3ui6x"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="24_wndvs"]
-[ext_resource type="AudioStream" uid="uid://bg76miyscfvhu" path="res://assets/audio/sfx/groan.tres" id="25_ix7xe"]
-[ext_resource type="Script" uid="uid://b8r6fxsfjdo3a" path="res://scripts/audio/EffectBasedPlayer.cs" id="26_7018m"]
-[ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://assets/effects/GarlicEffect.tres" id="27_wd16f"]
-[ext_resource type="Resource" uid="uid://7uj0oe656jfx" path="res://assets/effects/SnowSlow.tres" id="28_b1su1"]
-[ext_resource type="AudioStream" uid="uid://dt13iugnnx4op" path="res://assets/audio/sfx/yuck_generic.tres" id="29_si5j4"]
-[ext_resource type="AudioStream" uid="uid://bjotp63arocci" path="res://assets/audio/sfx/frozen.mp3" id="30_qu32w"]
-[ext_resource type="Script" uid="uid://c1x4n4nqyq72f" path="res://scripts/audio/ChannelSettings.cs" id="31_lml24"]
-[ext_resource type="Script" uid="uid://dk32ln8c2574d" path="res://scripts/entities/zombies/ZombieKillHandler.cs" id="32_m7hhr"]
-[ext_resource type="Material" uid="uid://jr0vpg030jqv" path="res://assets/ZombieMaterial.tres" id="34_jdtg8"]
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_wn68q"]
-tip_nodepath = NodePath("Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 17
-joint_data/0/bone2d_node = NodePath("Butt/Body/LeftUpperArm/LeftLowerArm")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = true
-joint_data/0/constraint_angle_min = 0.0
-joint_data/0/constraint_angle_max = 90.0
-joint_data/0/constraint_angle_invert = false
-joint_data/0/constraint_in_localspace = true
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 16
-joint_data/1/bone2d_node = NodePath("Butt/Body/LeftUpperArm")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = false
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_x5uj2"]
-tip_nodepath = NodePath("Butt/Body/RightUpperArm/RightLowerArm/RightHand")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 8
-joint_data/0/bone2d_node = NodePath("Butt/Body/RightUpperArm")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = false
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 9
-joint_data/1/bone2d_node = NodePath("Butt/Body/RightUpperArm/RightLowerArm")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = true
-joint_data/1/constraint_angle_min = 0.0
-joint_data/1/constraint_angle_max = 90.0
-joint_data/1/constraint_angle_invert = false
-joint_data/1/constraint_in_localspace = true
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_vcc72"]
-tip_nodepath = NodePath("Butt/RightUpperLeg/RightLowerLeg/RightFoot")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 1
-joint_data/0/bone2d_node = NodePath("Butt/RightUpperLeg")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = true
-joint_data/0/constraint_angle_min = -90.0
-joint_data/0/constraint_angle_max = 90.0
-joint_data/0/constraint_angle_invert = true
-joint_data/0/constraint_in_localspace = true
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 2
-joint_data/1/bone2d_node = NodePath("Butt/RightUpperLeg/RightLowerLeg")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = true
-joint_data/1/constraint_angle_min = 0.0
-joint_data/1/constraint_angle_max = 160.0
-joint_data/1/constraint_angle_invert = false
-joint_data/1/constraint_in_localspace = true
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_kto0i"]
-tip_nodepath = NodePath("Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 4
-joint_data/0/bone2d_node = NodePath("Butt/LeftUpperLeg")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = true
-joint_data/0/constraint_angle_min = -90.0
-joint_data/0/constraint_angle_max = 90.0
-joint_data/0/constraint_angle_invert = true
-joint_data/0/constraint_in_localspace = true
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 5
-joint_data/1/bone2d_node = NodePath("Butt/LeftUpperLeg/LeftLowerLeg")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = true
-joint_data/1/constraint_angle_min = -90.0
-joint_data/1/constraint_angle_max = 0.0
-joint_data/1/constraint_angle_invert = true
-joint_data/1/constraint_in_localspace = true
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModificationStack2D" id="SkeletonModificationStack2D_wn68q"]
-modification_count = 4
-modifications/0 = SubResource("SkeletonModification2DCCDIK_wn68q")
-modifications/1 = SubResource("SkeletonModification2DCCDIK_x5uj2")
-modifications/2 = SubResource("SkeletonModification2DCCDIK_vcc72")
-modifications/3 = SubResource("SkeletonModification2DCCDIK_kto0i")
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_jvn5w"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(15, 30, 20, 8)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vmdbp"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(64, 44, 10, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_x1oyw"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(93, 50, 17, 9)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vjx3c"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(79, 44, 10, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_f31xd"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(47, 33, 8, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_od8jf"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(59, 33, 7, 10)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_p4711"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(71, 30, 19, 13)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_1bk2b"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(12, 43, 6, 18)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_y06yv"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(36, 50, 9, 11)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_lu8go"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(22, 45, 8, 15)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_cdq7v"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(93, 8, 29, 39)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_e7wc3"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(72, 2, 13, 26)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_wn68q"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(36, 0, 32, 29)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vcc72"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(93, 3, 2, 3)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_kto0i"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(105, 2, 3, 4)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_x5uj2"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(15, 17, 17, 6)
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_dn8ha"]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_67t4t"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_djocr"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(2, 7, 6, 19)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_auqeq"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(0, 32, 9, 15)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vlvtp"]
-atlas = ExtResource("11_5swed")
-region = Rect2(55, 0, 9, 10)
-
-[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ccrjo"]
-radius = 3.00026
-height = 16.007
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_wfem3"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(24, 2, 9, 9)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_4q1fo"]
-atlas = ExtResource("6_lea3a")
-region = Rect2(0, 32, 9, 15)
-
-[sub_resource type="Animation" id="Animation_vn3j1"]
-resource_name = "RESET"
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 14)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm: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("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, 13)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, -20)]
-}
-tracks/5/type = "value"
-tracks/5/imported = false
-tracks/5/enabled = true
-tracks/5/path = NodePath("Zombie/Butt/Body/LeftUpperArm: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("Zombie/Butt/Body/Head/LeftEye:position")
-tracks/6/interp = 1
-tracks/6/loop_wrap = true
-tracks/6/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-4, -9)]
-}
-tracks/7/type = "value"
-tracks/7/imported = false
-tracks/7/enabled = true
-tracks/7/path = NodePath("Zombie/Butt/Body/Head/LeftEye: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("Zombie/Butt/Body/Head/RightEye:position")
-tracks/8/interp = 1
-tracks/8/loop_wrap = true
-tracks/8/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-16, -8)]
-}
-tracks/9/type = "value"
-tracks/9/imported = false
-tracks/9/enabled = true
-tracks/9/path = NodePath("Zombie/Butt/Body/Head/RightEye: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("Zombie/Butt/Body/Head/Jaw:position")
-tracks/10/interp = 1
-tracks/10/loop_wrap = true
-tracks/10/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-3, 3)]
-}
-tracks/11/type = "value"
-tracks/11/imported = false
-tracks/11/enabled = true
-tracks/11/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation")
-tracks/11/interp = 1
-tracks/11/loop_wrap = true
-tracks/11/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/12/type = "value"
-tracks/12/imported = false
-tracks/12/enabled = true
-tracks/12/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position")
-tracks/12/interp = 1
-tracks/12/loop_wrap = true
-tracks/12/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, 13)]
-}
-tracks/13/type = "value"
-tracks/13/imported = false
-tracks/13/enabled = true
-tracks/13/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand: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("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position")
-tracks/14/interp = 1
-tracks/14/loop_wrap = true
-tracks/14/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 15)]
-}
-tracks/15/type = "value"
-tracks/15/imported = false
-tracks/15/enabled = true
-tracks/15/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation")
-tracks/15/interp = 1
-tracks/15/loop_wrap = true
-tracks/15/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/16/type = "value"
-tracks/16/imported = false
-tracks/16/enabled = true
-tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position")
-tracks/16/interp = 1
-tracks/16/loop_wrap = true
-tracks/16/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-14, -23)]
-}
-tracks/17/type = "value"
-tracks/17/imported = false
-tracks/17/enabled = true
-tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation")
-tracks/17/interp = 1
-tracks/17/loop_wrap = true
-tracks/17/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/18/type = "value"
-tracks/18/imported = false
-tracks/18/enabled = true
-tracks/18/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position")
-tracks/18/interp = 1
-tracks/18/loop_wrap = true
-tracks/18/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(6, 10)]
-}
-tracks/19/type = "value"
-tracks/19/imported = false
-tracks/19/enabled = true
-tracks/19/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot: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("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position")
-tracks/20/interp = 1
-tracks/20/loop_wrap = true
-tracks/20/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, 13)]
-}
-tracks/21/type = "value"
-tracks/21/imported = false
-tracks/21/enabled = true
-tracks/21/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation")
-tracks/21/interp = 1
-tracks/21/loop_wrap = true
-tracks/21/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/22/type = "value"
-tracks/22/imported = false
-tracks/22/enabled = true
-tracks/22/path = NodePath("Zombie/Butt/LeftUpperLeg:position")
-tracks/22/interp = 1
-tracks/22/loop_wrap = true
-tracks/22/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(6, 4)]
-}
-tracks/23/type = "value"
-tracks/23/imported = false
-tracks/23/enabled = true
-tracks/23/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation")
-tracks/23/interp = 1
-tracks/23/loop_wrap = true
-tracks/23/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/24/type = "value"
-tracks/24/imported = false
-tracks/24/enabled = true
-tracks/24/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position")
-tracks/24/interp = 1
-tracks/24/loop_wrap = true
-tracks/24/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 14)]
-}
-tracks/25/type = "value"
-tracks/25/imported = false
-tracks/25/enabled = true
-tracks/25/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation")
-tracks/25/interp = 1
-tracks/25/loop_wrap = true
-tracks/25/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/26/type = "value"
-tracks/26/imported = false
-tracks/26/enabled = true
-tracks/26/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position")
-tracks/26/interp = 1
-tracks/26/loop_wrap = true
-tracks/26/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 12)]
-}
-tracks/27/type = "value"
-tracks/27/imported = false
-tracks/27/enabled = true
-tracks/27/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation")
-tracks/27/interp = 1
-tracks/27/loop_wrap = true
-tracks/27/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/28/type = "value"
-tracks/28/imported = false
-tracks/28/enabled = true
-tracks/28/path = NodePath("Zombie/Butt/RightUpperLeg:position")
-tracks/28/interp = 1
-tracks/28/loop_wrap = true
-tracks/28/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-6, 3)]
-}
-tracks/29/type = "value"
-tracks/29/imported = false
-tracks/29/enabled = true
-tracks/29/path = NodePath("Zombie/Butt/RightUpperLeg:rotation")
-tracks/29/interp = 1
-tracks/29/loop_wrap = true
-tracks/29/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/30/type = "value"
-tracks/30/imported = false
-tracks/30/enabled = true
-tracks/30/path = NodePath("Zombie/Butt:position")
-tracks/30/interp = 1
-tracks/30/loop_wrap = true
-tracks/30/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(5, -35)]
-}
-tracks/31/type = "value"
-tracks/31/imported = false
-tracks/31/enabled = true
-tracks/31/path = NodePath("Zombie/Butt:rotation")
-tracks/31/interp = 1
-tracks/31/loop_wrap = true
-tracks/31/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/32/type = "value"
-tracks/32/imported = false
-tracks/32/enabled = true
-tracks/32/path = NodePath("Zombie/Butt/Body:position")
-tracks/32/interp = 1
-tracks/32/loop_wrap = true
-tracks/32/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(1, -2)]
-}
-tracks/33/type = "value"
-tracks/33/imported = false
-tracks/33/enabled = true
-tracks/33/path = NodePath("Zombie/Butt/Body:rotation")
-tracks/33/interp = 1
-tracks/33/loop_wrap = true
-tracks/33/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/34/type = "value"
-tracks/34/imported = false
-tracks/34/enabled = true
-tracks/34/path = NodePath("Zombie:position")
-tracks/34/interp = 1
-tracks/34/loop_wrap = true
-tracks/34/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(0, 0)]
-}
-tracks/35/type = "value"
-tracks/35/imported = false
-tracks/35/enabled = true
-tracks/35/path = NodePath("Zombie:rotation")
-tracks/35/interp = 1
-tracks/35/loop_wrap = true
-tracks/35/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/36/type = "value"
-tracks/36/imported = false
-tracks/36/enabled = true
-tracks/36/path = NodePath("Zombie/Butt/Body/Head:position")
-tracks/36/interp = 1
-tracks/36/loop_wrap = true
-tracks/36/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-10, -25)]
-}
-tracks/37/type = "value"
-tracks/37/imported = false
-tracks/37/enabled = true
-tracks/37/path = NodePath("Zombie/Butt/Body/Head:rotation")
-tracks/37/interp = 1
-tracks/37/loop_wrap = true
-tracks/37/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/38/type = "value"
-tracks/38/imported = false
-tracks/38/enabled = true
-tracks/38/path = NodePath("Zombie/Butt/Body/Head: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("Zombie/Butt/Body/Head/TrashcanLid:position")
-tracks/39/interp = 1
-tracks/39/loop_wrap = true
-tracks/39/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-0.0022974, -17.0131)]
-}
-tracks/40/type = "value"
-tracks/40/imported = false
-tracks/40/enabled = true
-tracks/40/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:rotation")
-tracks/40/interp = 1
-tracks/40/loop_wrap = true
-tracks/40/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/41/type = "value"
-tracks/41/imported = false
-tracks/41/enabled = true
-tracks/41/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:visible")
-tracks/41/interp = 1
-tracks/41/loop_wrap = true
-tracks/41/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-tracks/42/type = "value"
-tracks/42/imported = false
-tracks/42/enabled = true
-tracks/42/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:texture")
-tracks/42/interp = 1
-tracks/42/loop_wrap = true
-tracks/42/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [SubResource("AtlasTexture_vlvtp")]
-}
-tracks/43/type = "value"
-tracks/43/imported = false
-tracks/43/enabled = true
-tracks/43/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:offset")
-tracks/43/interp = 1
-tracks/43/loop_wrap = true
-tracks/43/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-4, -1)]
-}
-tracks/44/type = "value"
-tracks/44/imported = false
-tracks/44/enabled = true
-tracks/44/path = NodePath("Zombie/Butt/Body/Tie:scale")
-tracks/44/interp = 1
-tracks/44/loop_wrap = true
-tracks/44/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(1, 1)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_x5uj2"]
-_data = {
-&"RESET": SubResource("Animation_vn3j1")
-}
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_hxyad"]
-size = Vector2(26, 48)
-
-[sub_resource type="Resource" id="Resource_lea3a"]
-resource_local_to_scene = true
-script = ExtResource("4_1s2fn")
-flat_value = 5.0
-percentage_value = 0.0
-mult_value = 1.0
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_r4ug6"]
-size = Vector2(16, 48)
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"]
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_ccrjo"]
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d")
-nodes/TimeScale/position = Vector2(60, 120)
-nodes/Tree/node = ExtResource("16_bufgc")
-nodes/Tree/position = Vector2(-240, 120)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="Resource" id="Resource_v1iwd"]
-resource_local_to_scene = true
-script = ExtResource("4_1s2fn")
-flat_value = 0.2
-percentage_value = 0.0
-mult_value = 1.0
-
-[sub_resource type="Resource" id="Resource_dn8ha"]
-script = ExtResource("31_lml24")
-restartTreshold = -1.0
-metadata/_custom_type_script = "uid://c1x4n4nqyq72f"
-
-[node name="BucketZombie" type="Node2D" node_paths=PackedStringArray("_armor", "_player", "_tree")]
-y_sort_enabled = true
-script = ExtResource("1_6aq6w")
-_armor = NodePath("Armor")
-MaxHP = 100.0
-_player = NodePath("CanvasGroup/basic_zombie_walk/AnimationPlayer")
-_tree = NodePath("AnimationTree")
-metadata/_edit_vertical_guides_ = [-159.0]
-
-[node name="CanvasGroup" type="CanvasGroup" parent="."]
-material = ExtResource("34_jdtg8")
-
-[node name="basic_zombie_walk" type="Node2D" parent="CanvasGroup"]
-
-[node name="Zombie" type="Skeleton2D" parent="CanvasGroup/basic_zombie_walk"]
-modification_stack = SubResource("SkeletonModificationStack2D_wn68q")
-
-[node name="Butt" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie"]
-position = Vector2(5, -35)
-scale = Vector2(0.999912, 0.999912)
-rest = Transform2D(1, 0, 0, 1, 5, -35)
-editor_settings/show_bone_gizmo = false
-
-[node name="Butt" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-texture = SubResource("AtlasTexture_jvn5w")
-centered = false
-offset = Vector2(-10, -3)
-metadata/_edit_lock_ = true
-
-[node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-position = Vector2(-6, 3)
-scale = Vector2(0.999833, 0.999833)
-rest = Transform2D(1, 0, 0, 1, -6, 3)
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Upper_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
-texture = SubResource("AtlasTexture_vmdbp")
-centered = false
-offset = Vector2(-6, -2)
-metadata/_edit_lock_ = true
-
-[node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
-position = Vector2(-2, 12)
-scale = Vector2(0.999834, 0.999834)
-rest = Transform2D(1, 0, 0, 1, -2, 12)
-editor_settings/show_bone_gizmo = false
-
-[node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
-position = Vector2(-2, 14)
-scale = Vector2(0.99983, 0.99983)
-rest = Transform2D(1, 0, 0, 1, -2, 14)
-auto_calculate_length_and_angle = false
-length = 12.0
-bone_angle = 0.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Foot" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot"]
-texture = SubResource("AtlasTexture_x1oyw")
-centered = false
-offset = Vector2(-4, -3)
-metadata/_edit_lock_ = true
-
-[node name="Right_Lower_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
-position = Vector2(-18, -2)
-texture = SubResource("AtlasTexture_vjx3c")
-centered = false
-offset = Vector2(12, 1)
-metadata/_edit_lock_ = true
-
-[node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-position = Vector2(6, 4)
-scale = Vector2(0.999835, 0.999835)
-rest = Transform2D(1, 0, 0, 1, 6, 4)
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Upper_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
-texture = SubResource("AtlasTexture_f31xd")
-centered = false
-offset = Vector2(-4, -2)
-metadata/_edit_lock_ = true
-
-[node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
-position = Vector2(-1, 13)
-scale = Vector2(0.999838, 0.999838)
-rest = Transform2D(1, 0, 0, 1, -1, 13)
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Lower_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
-texture = SubResource("AtlasTexture_od8jf")
-centered = false
-offset = Vector2(-1, 0)
-metadata/_edit_lock_ = true
-
-[node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
-position = Vector2(6, 10)
-scale = Vector2(0.999832, 0.999832)
-rest = Transform2D(1, 0, 0, 1, 6, 10)
-auto_calculate_length_and_angle = false
-length = 12.0
-bone_angle = 160.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Foot" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot"]
-texture = SubResource("AtlasTexture_p4711")
-centered = false
-offset = Vector2(-14, -3)
-metadata/_edit_lock_ = true
-
-[node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-position = Vector2(1, -2)
-scale = Vector2(0.999829, 0.999829)
-rest = Transform2D(1, 0, 0, 1, 1, -2)
-editor_settings/show_bone_gizmo = false
-
-[node name="RightUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-position = Vector2(-14, -23)
-scale = Vector2(0.999827, 0.999827)
-rest = Transform2D(1, 0, 0, 1, -14, -23)
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Upper_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
-texture = SubResource("AtlasTexture_1bk2b")
-centered = false
-offset = Vector2(-4, -2)
-metadata/_edit_lock_ = true
-
-[node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
-position = Vector2(-2, 15)
-scale = Vector2(0.999822, 0.999822)
-rest = Transform2D(1, 0, 0, 1, -2, 15)
-editor_settings/show_bone_gizmo = false
-
-[node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
-position = Vector2(-1, 13)
-scale = Vector2(0.99983, 0.99983)
-rest = Transform2D(1, 0, 0, 1, -1, 13)
-auto_calculate_length_and_angle = false
-length = 8.0
-bone_angle = 90.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand"]
-texture = SubResource("AtlasTexture_y06yv")
-centered = false
-offset = Vector2(-4, -2)
-metadata/_edit_lock_ = true
-
-[node name="Right_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
-texture = SubResource("AtlasTexture_lu8go")
-centered = false
-offset = Vector2(-5, -1)
-metadata/_edit_lock_ = true
-
-[node name="Body" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-rotation = 0.00163735
-texture = SubResource("AtlasTexture_cdq7v")
-centered = false
-offset = Vector2(-15, -27)
-metadata/_edit_lock_ = true
-
-[node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-position = Vector2(-9, -21)
-rotation = -0.0699613
-skew = -0.000234127
-rest = Transform2D(1, 0, 0, 1, -9, -21)
-auto_calculate_length_and_angle = false
-length = 24.0
-bone_angle = 100.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Tie" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie"]
-texture = SubResource("AtlasTexture_e7wc3")
-centered = false
-offset = Vector2(-10, -1)
-metadata/_edit_lock_ = true
-
-[node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-position = Vector2(-10, -25)
-scale = Vector2(0.999832, 0.999832)
-rest = Transform2D(1, 0, 0, 1, -10, -25)
-editor_settings/show_bone_gizmo = false
-
-[node name="HeadParticle" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" node_paths=PackedStringArray("data")]
-collision_layer = 128
-collision_mask = 64
-freeze = true
-script = ExtResource("4_1avwi")
-data = NodePath("../../../../../../..")
-maxAngle = 45.0
-minTorque = -45.0
-maxTorque = 45.0
-Impulse = 100.0
-
-[node name="Head" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle"]
-texture = SubResource("AtlasTexture_wn68q")
-centered = false
-offset = Vector2(-20, -24)
-metadata/_edit_lock_ = true
-
-[node name="Right_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-16, -8)
-texture = SubResource("AtlasTexture_vcc72")
-centered = false
-offset = Vector2(-2, -2)
-metadata/_edit_lock_ = true
-
-[node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-4, -9)
-texture = SubResource("AtlasTexture_kto0i")
-centered = false
-offset = Vector2(-2, -2)
-metadata/_edit_lock_ = true
-
-[node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-2.69782, 2.27068)
-rotation = -0.00688613
-scale = Vector2(0.99983, 0.99983)
-texture = SubResource("AtlasTexture_x5uj2")
-centered = false
-offset = Vector2(-12, -2)
-metadata/_edit_lock_ = true
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle"]
-position = Vector2(-4.58496, -8.21035)
-shape = SubResource("CircleShape2D_dn8ha")
-
-[node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" node_paths=PackedStringArray("_observedEntity")]
-script = ExtResource("5_wndvs")
-_threshold = 0.0
-_observedEntity = NodePath("../../../../../../../..")
-
-[node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
-position = Vector2(-3, 3)
-scale = Vector2(0.99983, 0.99983)
-rest = Transform2D(1, 0, 0, 1, -3, 3)
-auto_calculate_length_and_angle = false
-length = 11.0
-bone_angle = 180.0
-editor_settings/show_bone_gizmo = false
-
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Jaw"]
-remote_path = NodePath("../../HeadParticle/Head/Jaw")
-
-[node name="RightEye" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
-position = Vector2(-16, -8)
-rest = Transform2D(1, 0, 0, 1, -16, -8)
-auto_calculate_length_and_angle = false
-length = 2.0
-bone_angle = 180.0
-editor_settings/show_bone_gizmo = false
-
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/RightEye"]
-remote_path = NodePath("../../HeadParticle/Head/Right_Eye")
-
-[node name="LeftEye" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
-position = Vector2(-4, -9)
-rest = Transform2D(1, 0, 0, 1, -4, -9)
-auto_calculate_length_and_angle = false
-length = 2.0
-bone_angle = 180.0
-editor_settings/show_bone_gizmo = false
-
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/LeftEye"]
-remote_path = NodePath("../../HeadParticle/Head/Left_Eye")
-
-[node name="Hat" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" node_paths=PackedStringArray("data")]
-position = Vector2(-6, -8)
-collision_layer = 128
-collision_mask = 64
-mass = 0.5
-center_of_mass_mode = 1
-freeze = true
-script = ExtResource("4_1avwi")
-data = NodePath("../../../../../../..")
-maxAngle = 45.0
-minTorque = -45.0
-maxTorque = 45.0
-Impulse = 100.0
-
-[node name="Sprite" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Hat" node_paths=PackedStringArray("armor")]
-material = ExtResource("24_wndvs")
-position = Vector2(0.994479, -10.0058)
-texture = ExtResource("3_0nlp0")
-script = ExtResource("8_jdtg8")
-armor = NodePath("../../../../../../../../Armor")
-degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu"), ExtResource("5_v1iwd")])
-thresholdPercentage = Array[float]([1.0, 0.667, 0.333])
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Hat"]
-position = Vector2(1, -6)
-shape = SubResource("CircleShape2D_67t4t")
-
-[node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-position = Vector2(-1, -20)
-scale = Vector2(0.999825, 0.999825)
-rest = Transform2D(1, 0, 0, 1, -1, -20)
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Upper_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
-position = Vector2(-37, 10)
-texture = SubResource("AtlasTexture_djocr")
-centered = false
-offset = Vector2(33, -12)
-metadata/_edit_lock_ = true
-
-[node name="HandProjectile" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" node_paths=PackedStringArray("data")]
-position = Vector2(-2, 14)
-collision_layer = 128
-collision_mask = 64
-freeze = true
-script = ExtResource("4_1avwi")
-data = NodePath("../../../../../../..")
-minTorque = -45.0
-maxTorque = 45.0
-
-[node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"]
-rotation = 0.0380849
-scale = Vector2(1, 1)
-texture = SubResource("AtlasTexture_auqeq")
-centered = false
-offset = Vector2(-5, 0)
-metadata/_edit_lock_ = true
-
-[node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"]
-position = Vector2(-0.999829, 12.9978)
-rotation = -0.126472
-scale = Vector2(0.999657, 0.999657)
-texture = SubResource("AtlasTexture_vlvtp")
-centered = false
-offset = Vector2(-4, -1)
-metadata/_edit_lock_ = true
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"]
-position = Vector2(-0.00104554, 13.0063)
-shape = SubResource("CapsuleShape2D_ccrjo")
-
-[node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" node_paths=PackedStringArray("_observedEntity")]
-script = ExtResource("5_wndvs")
-_observedEntity = NodePath("../../../../../../../..")
-
-[node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
-position = Vector2(-2, 14)
-scale = Vector2(0.99983, 0.99983)
-rest = Transform2D(1, 0, 0, 1, -2, 14)
-editor_settings/show_bone_gizmo = false
-
-[node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
-position = Vector2(-1, 13)
-scale = Vector2(0.999827, 0.999827)
-rest = Transform2D(1, 0, 0, 1, -1, 13)
-auto_calculate_length_and_angle = false
-length = 6.0
-bone_angle = 90.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand"]
-texture = SubResource("AtlasTexture_wfem3")
-centered = false
-offset = Vector2(-4, 0)
-metadata/_edit_lock_ = true
-
-[node name="Left_Hand_Remote" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand"]
-remote_path = NodePath("../../../HandProjectile/Left_Lower_Arm/Left_Hand")
-
-[node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
-texture = SubResource("AtlasTexture_4q1fo")
-centered = false
-offset = Vector2(-5, 0)
-metadata/_edit_lock_ = true
-
-[node name="Left_Lower_Arm_Remote" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
-scale = Vector2(1.00017, 1.00017)
-remote_path = NodePath("../../HandProjectile/Left_Lower_Arm")
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="CanvasGroup/basic_zombie_walk"]
-libraries = {
-&"": SubResource("AnimationLibrary_x5uj2"),
-&"basic": ExtResource("12_gjchu")
-}
-
-[node name="EatingStatistics" type="Node" parent="CanvasGroup/basic_zombie_walk/AnimationPlayer"]
-script = ExtResource("13_lbhkf")
-animationName = "basic/eating"
-trackToFind = "../../Eatbox"
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 8
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(4, -24)
-shape = SubResource("RectangleShape2D_hxyad")
-
-[node name="Eatbox" type="Area2D" parent="."]
-collision_layer = 0
-collision_mask = 2
-script = ExtResource("14_xxv4d")
-_damage = SubResource("Resource_lea3a")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Eatbox"]
-position = Vector2(-10, -24)
-shape = SubResource("RectangleShape2D_r4ug6")
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-root_node = NodePath("../CanvasGroup/basic_zombie_walk")
-tree_root = SubResource("AnimationNodeBlendTree_ccrjo")
-advance_expression_base_node = NodePath("../Eatbox")
-anim_player = NodePath("../CanvasGroup/basic_zombie_walk/AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-script = ExtResource("17_3hgrb")
-entity = NodePath("..")
-
-[node name="Mover" type="Node" parent="."]
-script = ExtResource("18_tffdk")
-_speed = SubResource("Resource_v1iwd")
-_speedControlMult = 1.94682
-
-[node name="HitPlayer" type="Node" parent="."]
-script = ExtResource("19_k2y7k")
-playlist = Array[AudioStream]([ExtResource("5_lt6ps"), ExtResource("6_kedip")])
-channels = Array[String](["metal_hit", "hit"])
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="Armor" type="Node" parent="."]
-script = ExtResource("22_aasgd")
-MaxHP = 550.0
-
-[node name="FlashController" type="Node" parent="Armor"]
-script = ExtResource("23_rgojs")
-shaderMaterial = ExtResource("24_wndvs")
-
-[node name="GroanPlayer" type="Node" parent="."]
-script = ExtResource("24_3ui6x")
-audioStream = ExtResource("25_ix7xe")
-channel = "groan"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="Timer" type="Timer" parent="GroanPlayer"]
-wait_time = 20.0
-
-[node name="StartTimer" type="Timer" parent="GroanPlayer/Timer"]
-wait_time = 5.0
-one_shot = true
-autostart = true
-
-[node name="EffectPlayer" type="Node" parent="."]
-script = ExtResource("26_7018m")
-effectsToMap = Array[Resource]([ExtResource("27_wd16f"), ExtResource("28_b1su1")])
-streamsToMapTo = Array[AudioStream]([ExtResource("29_si5j4"), ExtResource("30_qu32w")])
-streamSettings = Array[Object]([null, SubResource("Resource_dn8ha")])
-
-[node name="DeathHandler" type="Node" parent="." node_paths=PackedStringArray("_tree", "_collider")]
-script = ExtResource("32_m7hhr")
-_tree = NodePath("../AnimationTree")
-_collider = NodePath("../Hitbox/CollisionShape2D")
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("23_rgojs")
-shaderMaterial = ExtResource("34_jdtg8")
-
-[connection signal="HasBeenKilled" from="." to="DeathHandler" method="OnKilled"]
-[connection signal="OnDamaged" from="." to="HitPlayer" method="Play"]
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" method="FallOff"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Jaw/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/RightEye/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/LeftEye/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" method="FallOff"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand_Remote" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/Left_Lower_Arm_Remote" method="queue_free"]
-[connection signal="area_entered" from="Eatbox" to="Eatbox" method="OnAreaEntered"]
-[connection signal="area_exited" from="Eatbox" to="Eatbox" method="OnAreaExited"]
-[connection signal="ArmorLost" from="Armor" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Hat" method="FallOff"]
-[connection signal="ArmorLost" from="Armor" to="HitPlayer" method="Next"]
-[connection signal="Damaged" from="Armor" to="HitPlayer" method="Play"]
-[connection signal="Damaged" from="Armor" to="Armor/FlashController" method="DamageFlash"]
-[connection signal="HpChanged" from="Armor" to="." method="HPChangedMixedInvoker"]
-[connection signal="timeout" from="GroanPlayer/Timer" to="GroanPlayer" method="Play"]
-[connection signal="timeout" from="GroanPlayer/Timer/StartTimer" to="GroanPlayer/Timer" method="start"]
diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn
deleted file mode 100644
index 26d0608..0000000
--- a/scenes/entities/Zombies/cone_zombie.tscn
+++ /dev/null
@@ -1,1267 +0,0 @@
-[gd_scene load_steps=69 format=3 uid="uid://hhjbqkjqpt7x"]
-
-[ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/entities/zombies/RuntimeZombieData.cs" id="1_ffeg6"]
-[ext_resource type="Material" uid="uid://jr0vpg030jqv" path="res://assets/ZombieMaterial.tres" id="2_ffeg6"]
-[ext_resource type="Script" uid="uid://fd4im1fmwc5n" path="res://scripts/entities/Armor.cs" id="3_5s7in"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="3_b8kja"]
-[ext_resource type="Texture2D" uid="uid://dacgbwohpmeed" path="res://assets/sprites/zombies/basic.png" id="3_d7bfv"]
-[ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="3_w70im"]
-[ext_resource type="Texture2D" uid="uid://ceqvdmude7cgg" path="res://assets/sprites/cone1.tres" id="4_qdhik"]
-[ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="4_qof5v"]
-[ext_resource type="Script" uid="uid://dau0tfmlfiqmo" path="res://scripts/entities/EntityHPObserver.cs" id="5_25dv7"]
-[ext_resource type="Script" uid="uid://bbw848msxb4re" path="res://scripts/entities/DegradingSprite.cs" id="5_ickyd"]
-[ext_resource type="Texture2D" uid="uid://cl5ekw72wi75c" path="res://assets/sprites/cone2.tres" id="6_b6mal"]
-[ext_resource type="AudioStream" uid="uid://bmupd3v3gvsca" path="res://assets/audio/sfx/plastichit_generic.tres" id="7_0amn8"]
-[ext_resource type="Texture2D" uid="uid://cnn81r1y0xwod" path="res://assets/sprites/cone3.tres" id="7_011r0"]
-[ext_resource type="AudioStream" uid="uid://w0qfwds4o3ti" path="res://assets/audio/sfx/hit_generic.tres" id="7_67t4t"]
-[ext_resource type="Texture2D" uid="uid://dri70dxyks7xh" path="res://assets/sprites/zombies/hobo.png" id="11_a7ae5"]
-[ext_resource type="AnimationLibrary" uid="uid://ceb3khu7rwgy8" path="res://assets/animations/zombies/basic.res" id="12_1gn3d"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="13_7fceb"]
-[ext_resource type="Script" uid="uid://dw7v3s4kbu7ma" path="res://scripts/entities/AnimationStatistics.cs" id="13_xh0ny"]
-[ext_resource type="Script" uid="uid://dqyony6jxt2p0" path="res://scripts/entities/zombies/EatBox.cs" id="14_kx47n"]
-[ext_resource type="AnimationNodeStateMachine" uid="uid://dj0blope85bg7" path="res://assets/animations/zombies/basic_zombie_tree.tres" id="16_q51xn"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="17_tttgn"]
-[ext_resource type="Script" uid="uid://7hdj2k14lfe4" path="res://scripts/entities/zombies/ZombieMover.cs" id="18_1pso5"]
-[ext_resource type="Script" uid="uid://cnn0ymuhypdff" path="res://scripts/audio/ChannelPlaylist.cs" id="19_n3dlr"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="24_v3jd8"]
-[ext_resource type="AudioStream" uid="uid://bg76miyscfvhu" path="res://assets/audio/sfx/groan.tres" id="25_6yd48"]
-[ext_resource type="Script" uid="uid://b8r6fxsfjdo3a" path="res://scripts/audio/EffectBasedPlayer.cs" id="26_myimu"]
-[ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://assets/effects/GarlicEffect.tres" id="27_dxxec"]
-[ext_resource type="Resource" uid="uid://7uj0oe656jfx" path="res://assets/effects/SnowSlow.tres" id="28_wg63k"]
-[ext_resource type="AudioStream" uid="uid://dt13iugnnx4op" path="res://assets/audio/sfx/yuck_generic.tres" id="29_fah3r"]
-[ext_resource type="AudioStream" uid="uid://bjotp63arocci" path="res://assets/audio/sfx/frozen.mp3" id="30_p00wq"]
-[ext_resource type="Script" uid="uid://c1x4n4nqyq72f" path="res://scripts/audio/ChannelSettings.cs" id="31_uyysk"]
-[ext_resource type="Script" uid="uid://dk32ln8c2574d" path="res://scripts/entities/zombies/ZombieKillHandler.cs" id="32_1sywa"]
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_wn68q"]
-tip_nodepath = NodePath("Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 17
-joint_data/0/bone2d_node = NodePath("Butt/Body/LeftUpperArm/LeftLowerArm")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = true
-joint_data/0/constraint_angle_min = 0.0
-joint_data/0/constraint_angle_max = 90.0
-joint_data/0/constraint_angle_invert = false
-joint_data/0/constraint_in_localspace = true
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 16
-joint_data/1/bone2d_node = NodePath("Butt/Body/LeftUpperArm")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = false
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_x5uj2"]
-tip_nodepath = NodePath("Butt/Body/RightUpperArm/RightLowerArm/RightHand")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 8
-joint_data/0/bone2d_node = NodePath("Butt/Body/RightUpperArm")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = false
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 9
-joint_data/1/bone2d_node = NodePath("Butt/Body/RightUpperArm/RightLowerArm")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = true
-joint_data/1/constraint_angle_min = 0.0
-joint_data/1/constraint_angle_max = 90.0
-joint_data/1/constraint_angle_invert = false
-joint_data/1/constraint_in_localspace = true
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_vcc72"]
-tip_nodepath = NodePath("Butt/RightUpperLeg/RightLowerLeg/RightFoot")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 1
-joint_data/0/bone2d_node = NodePath("Butt/RightUpperLeg")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = true
-joint_data/0/constraint_angle_min = -90.0
-joint_data/0/constraint_angle_max = 90.0
-joint_data/0/constraint_angle_invert = true
-joint_data/0/constraint_in_localspace = true
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 2
-joint_data/1/bone2d_node = NodePath("Butt/RightUpperLeg/RightLowerLeg")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = true
-joint_data/1/constraint_angle_min = 0.0
-joint_data/1/constraint_angle_max = 160.0
-joint_data/1/constraint_angle_invert = false
-joint_data/1/constraint_in_localspace = true
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_kto0i"]
-tip_nodepath = NodePath("Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 4
-joint_data/0/bone2d_node = NodePath("Butt/LeftUpperLeg")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = true
-joint_data/0/constraint_angle_min = -90.0
-joint_data/0/constraint_angle_max = 90.0
-joint_data/0/constraint_angle_invert = true
-joint_data/0/constraint_in_localspace = true
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 5
-joint_data/1/bone2d_node = NodePath("Butt/LeftUpperLeg/LeftLowerLeg")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = true
-joint_data/1/constraint_angle_min = -90.0
-joint_data/1/constraint_angle_max = 0.0
-joint_data/1/constraint_angle_invert = true
-joint_data/1/constraint_in_localspace = true
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModificationStack2D" id="SkeletonModificationStack2D_wn68q"]
-modification_count = 4
-modifications/0 = SubResource("SkeletonModification2DCCDIK_wn68q")
-modifications/1 = SubResource("SkeletonModification2DCCDIK_x5uj2")
-modifications/2 = SubResource("SkeletonModification2DCCDIK_vcc72")
-modifications/3 = SubResource("SkeletonModification2DCCDIK_kto0i")
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_jvn5w"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(15, 30, 20, 8)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vmdbp"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(64, 44, 10, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_x1oyw"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(93, 50, 17, 9)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vjx3c"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(79, 44, 10, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_f31xd"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(47, 33, 8, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_od8jf"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(59, 33, 7, 10)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_p4711"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(71, 30, 19, 13)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_1bk2b"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(12, 43, 6, 18)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_y06yv"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(36, 50, 9, 11)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_lu8go"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(22, 45, 8, 15)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_cdq7v"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(93, 8, 29, 39)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_e7wc3"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(72, 2, 13, 26)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_wn68q"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(36, 0, 32, 29)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vcc72"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(93, 3, 2, 3)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_kto0i"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(105, 2, 3, 4)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_x5uj2"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(15, 17, 17, 6)
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_dn8ha"]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_67t4t"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_djocr"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(2, 7, 6, 19)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_auqeq"]
-atlas = ExtResource("3_d7bfv")
-region = Rect2(0, 32, 9, 15)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vlvtp"]
-atlas = ExtResource("11_a7ae5")
-region = Rect2(55, 0, 9, 10)
-
-[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ccrjo"]
-radius = 3.00026
-height = 16.007
-
-[sub_resource type="Animation" id="Animation_vn3j1"]
-resource_name = "RESET"
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 14)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm: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("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, 13)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, -20)]
-}
-tracks/5/type = "value"
-tracks/5/imported = false
-tracks/5/enabled = true
-tracks/5/path = NodePath("Zombie/Butt/Body/LeftUpperArm: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("Zombie/Butt/Body/Head/LeftEye:position")
-tracks/6/interp = 1
-tracks/6/loop_wrap = true
-tracks/6/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-4, -9)]
-}
-tracks/7/type = "value"
-tracks/7/imported = false
-tracks/7/enabled = true
-tracks/7/path = NodePath("Zombie/Butt/Body/Head/LeftEye: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("Zombie/Butt/Body/Head/RightEye:position")
-tracks/8/interp = 1
-tracks/8/loop_wrap = true
-tracks/8/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-16, -8)]
-}
-tracks/9/type = "value"
-tracks/9/imported = false
-tracks/9/enabled = true
-tracks/9/path = NodePath("Zombie/Butt/Body/Head/RightEye: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("Zombie/Butt/Body/Head/Jaw:position")
-tracks/10/interp = 1
-tracks/10/loop_wrap = true
-tracks/10/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-3, 3)]
-}
-tracks/11/type = "value"
-tracks/11/imported = false
-tracks/11/enabled = true
-tracks/11/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation")
-tracks/11/interp = 1
-tracks/11/loop_wrap = true
-tracks/11/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/12/type = "value"
-tracks/12/imported = false
-tracks/12/enabled = true
-tracks/12/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position")
-tracks/12/interp = 1
-tracks/12/loop_wrap = true
-tracks/12/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, 13)]
-}
-tracks/13/type = "value"
-tracks/13/imported = false
-tracks/13/enabled = true
-tracks/13/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand: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("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position")
-tracks/14/interp = 1
-tracks/14/loop_wrap = true
-tracks/14/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 15)]
-}
-tracks/15/type = "value"
-tracks/15/imported = false
-tracks/15/enabled = true
-tracks/15/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation")
-tracks/15/interp = 1
-tracks/15/loop_wrap = true
-tracks/15/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/16/type = "value"
-tracks/16/imported = false
-tracks/16/enabled = true
-tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position")
-tracks/16/interp = 1
-tracks/16/loop_wrap = true
-tracks/16/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-14, -23)]
-}
-tracks/17/type = "value"
-tracks/17/imported = false
-tracks/17/enabled = true
-tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation")
-tracks/17/interp = 1
-tracks/17/loop_wrap = true
-tracks/17/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/18/type = "value"
-tracks/18/imported = false
-tracks/18/enabled = true
-tracks/18/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position")
-tracks/18/interp = 1
-tracks/18/loop_wrap = true
-tracks/18/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(6, 10)]
-}
-tracks/19/type = "value"
-tracks/19/imported = false
-tracks/19/enabled = true
-tracks/19/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot: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("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position")
-tracks/20/interp = 1
-tracks/20/loop_wrap = true
-tracks/20/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, 13)]
-}
-tracks/21/type = "value"
-tracks/21/imported = false
-tracks/21/enabled = true
-tracks/21/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation")
-tracks/21/interp = 1
-tracks/21/loop_wrap = true
-tracks/21/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/22/type = "value"
-tracks/22/imported = false
-tracks/22/enabled = true
-tracks/22/path = NodePath("Zombie/Butt/LeftUpperLeg:position")
-tracks/22/interp = 1
-tracks/22/loop_wrap = true
-tracks/22/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(6, 4)]
-}
-tracks/23/type = "value"
-tracks/23/imported = false
-tracks/23/enabled = true
-tracks/23/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation")
-tracks/23/interp = 1
-tracks/23/loop_wrap = true
-tracks/23/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/24/type = "value"
-tracks/24/imported = false
-tracks/24/enabled = true
-tracks/24/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position")
-tracks/24/interp = 1
-tracks/24/loop_wrap = true
-tracks/24/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 14)]
-}
-tracks/25/type = "value"
-tracks/25/imported = false
-tracks/25/enabled = true
-tracks/25/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation")
-tracks/25/interp = 1
-tracks/25/loop_wrap = true
-tracks/25/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/26/type = "value"
-tracks/26/imported = false
-tracks/26/enabled = true
-tracks/26/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position")
-tracks/26/interp = 1
-tracks/26/loop_wrap = true
-tracks/26/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 12)]
-}
-tracks/27/type = "value"
-tracks/27/imported = false
-tracks/27/enabled = true
-tracks/27/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation")
-tracks/27/interp = 1
-tracks/27/loop_wrap = true
-tracks/27/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/28/type = "value"
-tracks/28/imported = false
-tracks/28/enabled = true
-tracks/28/path = NodePath("Zombie/Butt/RightUpperLeg:position")
-tracks/28/interp = 1
-tracks/28/loop_wrap = true
-tracks/28/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-6, 3)]
-}
-tracks/29/type = "value"
-tracks/29/imported = false
-tracks/29/enabled = true
-tracks/29/path = NodePath("Zombie/Butt/RightUpperLeg:rotation")
-tracks/29/interp = 1
-tracks/29/loop_wrap = true
-tracks/29/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/30/type = "value"
-tracks/30/imported = false
-tracks/30/enabled = true
-tracks/30/path = NodePath("Zombie/Butt:position")
-tracks/30/interp = 1
-tracks/30/loop_wrap = true
-tracks/30/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(5, -35)]
-}
-tracks/31/type = "value"
-tracks/31/imported = false
-tracks/31/enabled = true
-tracks/31/path = NodePath("Zombie/Butt:rotation")
-tracks/31/interp = 1
-tracks/31/loop_wrap = true
-tracks/31/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/32/type = "value"
-tracks/32/imported = false
-tracks/32/enabled = true
-tracks/32/path = NodePath("Zombie/Butt/Body:position")
-tracks/32/interp = 1
-tracks/32/loop_wrap = true
-tracks/32/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(1, -2)]
-}
-tracks/33/type = "value"
-tracks/33/imported = false
-tracks/33/enabled = true
-tracks/33/path = NodePath("Zombie/Butt/Body:rotation")
-tracks/33/interp = 1
-tracks/33/loop_wrap = true
-tracks/33/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/34/type = "value"
-tracks/34/imported = false
-tracks/34/enabled = true
-tracks/34/path = NodePath("Zombie:position")
-tracks/34/interp = 1
-tracks/34/loop_wrap = true
-tracks/34/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(0, 0)]
-}
-tracks/35/type = "value"
-tracks/35/imported = false
-tracks/35/enabled = true
-tracks/35/path = NodePath("Zombie:rotation")
-tracks/35/interp = 1
-tracks/35/loop_wrap = true
-tracks/35/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/36/type = "value"
-tracks/36/imported = false
-tracks/36/enabled = true
-tracks/36/path = NodePath("Zombie/Butt/Body/Head:position")
-tracks/36/interp = 1
-tracks/36/loop_wrap = true
-tracks/36/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-10, -25)]
-}
-tracks/37/type = "value"
-tracks/37/imported = false
-tracks/37/enabled = true
-tracks/37/path = NodePath("Zombie/Butt/Body/Head:rotation")
-tracks/37/interp = 1
-tracks/37/loop_wrap = true
-tracks/37/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/38/type = "value"
-tracks/38/imported = false
-tracks/38/enabled = true
-tracks/38/path = NodePath("Zombie/Butt/Body/Head: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("Zombie/Butt/Body/Head/TrashcanLid:position")
-tracks/39/interp = 1
-tracks/39/loop_wrap = true
-tracks/39/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-0.0022974, -17.0131)]
-}
-tracks/40/type = "value"
-tracks/40/imported = false
-tracks/40/enabled = true
-tracks/40/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:rotation")
-tracks/40/interp = 1
-tracks/40/loop_wrap = true
-tracks/40/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/41/type = "value"
-tracks/41/imported = false
-tracks/41/enabled = true
-tracks/41/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:visible")
-tracks/41/interp = 1
-tracks/41/loop_wrap = true
-tracks/41/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-tracks/42/type = "value"
-tracks/42/imported = false
-tracks/42/enabled = true
-tracks/42/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:texture")
-tracks/42/interp = 1
-tracks/42/loop_wrap = true
-tracks/42/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [SubResource("AtlasTexture_vlvtp")]
-}
-tracks/43/type = "value"
-tracks/43/imported = false
-tracks/43/enabled = true
-tracks/43/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:offset")
-tracks/43/interp = 1
-tracks/43/loop_wrap = true
-tracks/43/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-4, -1)]
-}
-tracks/44/type = "value"
-tracks/44/imported = false
-tracks/44/enabled = true
-tracks/44/path = NodePath("Zombie/Butt/Body/Tie:scale")
-tracks/44/interp = 1
-tracks/44/loop_wrap = true
-tracks/44/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(1, 1)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_x5uj2"]
-_data = {
-&"RESET": SubResource("Animation_vn3j1")
-}
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_hxyad"]
-size = Vector2(26, 48)
-
-[sub_resource type="Resource" id="Resource_011r0"]
-resource_local_to_scene = true
-script = ExtResource("4_qof5v")
-flat_value = 5.0
-percentage_value = 0.0
-mult_value = 1.0
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_r4ug6"]
-size = Vector2(16, 48)
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"]
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_ccrjo"]
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d")
-nodes/TimeScale/position = Vector2(60, 120)
-nodes/Tree/node = ExtResource("16_q51xn")
-nodes/Tree/position = Vector2(-240, 120)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="Resource" id="Resource_b6mal"]
-resource_local_to_scene = true
-script = ExtResource("4_qof5v")
-flat_value = 0.2
-percentage_value = 0.0
-mult_value = 1.0
-
-[sub_resource type="Resource" id="Resource_dn8ha"]
-script = ExtResource("31_uyysk")
-restartTreshold = -1.0
-metadata/_custom_type_script = "uid://c1x4n4nqyq72f"
-
-[node name="ConeZombie" type="Node2D" node_paths=PackedStringArray("_armor", "_player", "_tree")]
-y_sort_enabled = true
-script = ExtResource("1_ffeg6")
-_armor = NodePath("Armor")
-MaxHP = 100.0
-_player = NodePath("CanvasGroup/basic_zombie_walk/AnimationPlayer")
-_tree = NodePath("AnimationTree")
-metadata/_edit_vertical_guides_ = [-159.0]
-
-[node name="CanvasGroup" type="CanvasGroup" parent="."]
-material = ExtResource("2_ffeg6")
-
-[node name="basic_zombie_walk" type="Node2D" parent="CanvasGroup"]
-
-[node name="Zombie" type="Skeleton2D" parent="CanvasGroup/basic_zombie_walk"]
-use_parent_material = true
-modification_stack = SubResource("SkeletonModificationStack2D_wn68q")
-
-[node name="Butt" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie"]
-use_parent_material = true
-position = Vector2(5, -35)
-scale = Vector2(0.999903, 0.999903)
-rest = Transform2D(1, 0, 0, 1, 5, -35)
-editor_settings/show_bone_gizmo = false
-
-[node name="Butt" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
-texture = SubResource("AtlasTexture_jvn5w")
-centered = false
-offset = Vector2(-10, -3)
-metadata/_edit_lock_ = true
-
-[node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
-position = Vector2(-6, 3)
-scale = Vector2(0.999834, 0.999834)
-rest = Transform2D(1, 0, 0, 1, -6, 3)
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Upper_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
-texture = SubResource("AtlasTexture_vmdbp")
-centered = false
-offset = Vector2(-6, -2)
-metadata/_edit_lock_ = true
-
-[node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
-position = Vector2(-2, 12)
-scale = Vector2(0.999834, 0.999834)
-rest = Transform2D(1, 0, 0, 1, -2, 12)
-editor_settings/show_bone_gizmo = false
-
-[node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
-position = Vector2(-2, 14)
-scale = Vector2(0.999833, 0.999833)
-rest = Transform2D(1, 0, 0, 1, -2, 14)
-auto_calculate_length_and_angle = false
-length = 12.0
-bone_angle = 0.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Foot" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot"]
-texture = SubResource("AtlasTexture_x1oyw")
-centered = false
-offset = Vector2(-4, -3)
-metadata/_edit_lock_ = true
-
-[node name="Right_Lower_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
-position = Vector2(-18, -2)
-texture = SubResource("AtlasTexture_vjx3c")
-centered = false
-offset = Vector2(12, 1)
-metadata/_edit_lock_ = true
-
-[node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
-position = Vector2(6, 4)
-scale = Vector2(0.999835, 0.999835)
-rest = Transform2D(1, 0, 0, 1, 6, 4)
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Upper_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
-texture = SubResource("AtlasTexture_f31xd")
-centered = false
-offset = Vector2(-4, -2)
-metadata/_edit_lock_ = true
-
-[node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
-position = Vector2(-1, 13)
-scale = Vector2(0.999831, 0.999831)
-rest = Transform2D(1, 0, 0, 1, -1, 13)
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Lower_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
-texture = SubResource("AtlasTexture_od8jf")
-centered = false
-offset = Vector2(-1, 0)
-metadata/_edit_lock_ = true
-
-[node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
-position = Vector2(6, 10)
-scale = Vector2(0.999829, 0.999829)
-rest = Transform2D(1, 0, 0, 1, 6, 10)
-auto_calculate_length_and_angle = false
-length = 12.0
-bone_angle = 160.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Foot" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot"]
-texture = SubResource("AtlasTexture_p4711")
-centered = false
-offset = Vector2(-14, -3)
-metadata/_edit_lock_ = true
-
-[node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
-position = Vector2(1, -2)
-scale = Vector2(0.99983, 0.99983)
-rest = Transform2D(1, 0, 0, 1, 1, -2)
-editor_settings/show_bone_gizmo = false
-
-[node name="RightUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-use_parent_material = true
-position = Vector2(-14, -23)
-scale = Vector2(0.999828, 0.999828)
-rest = Transform2D(1, 0, 0, 1, -14, -23)
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Upper_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
-texture = SubResource("AtlasTexture_1bk2b")
-centered = false
-offset = Vector2(-4, -2)
-metadata/_edit_lock_ = true
-
-[node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
-position = Vector2(-2, 15)
-scale = Vector2(0.999828, 0.999828)
-rest = Transform2D(1, 0, 0, 1, -2, 15)
-editor_settings/show_bone_gizmo = false
-
-[node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
-position = Vector2(-1, 13)
-scale = Vector2(0.999828, 0.999828)
-rest = Transform2D(1, 0, 0, 1, -1, 13)
-auto_calculate_length_and_angle = false
-length = 8.0
-bone_angle = 90.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand"]
-texture = SubResource("AtlasTexture_y06yv")
-centered = false
-offset = Vector2(-4, -2)
-metadata/_edit_lock_ = true
-
-[node name="Right_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
-texture = SubResource("AtlasTexture_lu8go")
-centered = false
-offset = Vector2(-5, -1)
-metadata/_edit_lock_ = true
-
-[node name="Body" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-rotation = 0.00163735
-texture = SubResource("AtlasTexture_cdq7v")
-centered = false
-offset = Vector2(-15, -27)
-metadata/_edit_lock_ = true
-
-[node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-position = Vector2(-9, -21)
-rotation = -0.128654
-skew = -0.000155091
-rest = Transform2D(1, 0, 0, 1, -9, -21)
-auto_calculate_length_and_angle = false
-length = 24.0
-bone_angle = 100.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Tie" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie"]
-texture = SubResource("AtlasTexture_e7wc3")
-centered = false
-offset = Vector2(-10, -1)
-metadata/_edit_lock_ = true
-
-[node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-position = Vector2(-10, -25)
-scale = Vector2(0.999827, 0.999827)
-rest = Transform2D(1, 0, 0, 1, -10, -25)
-editor_settings/show_bone_gizmo = false
-
-[node name="HeadParticle" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" node_paths=PackedStringArray("data")]
-collision_layer = 128
-collision_mask = 64
-freeze = true
-script = ExtResource("3_w70im")
-data = NodePath("../../../../../../..")
-maxAngle = 45.0
-minTorque = -45.0
-maxTorque = 45.0
-Impulse = 100.0
-
-[node name="Head" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle"]
-texture = SubResource("AtlasTexture_wn68q")
-centered = false
-offset = Vector2(-20, -24)
-metadata/_edit_lock_ = true
-
-[node name="Right_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-16, -8)
-texture = SubResource("AtlasTexture_vcc72")
-centered = false
-offset = Vector2(-2, -2)
-metadata/_edit_lock_ = true
-
-[node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-4, -9.00001)
-texture = SubResource("AtlasTexture_kto0i")
-centered = false
-offset = Vector2(-2, -2)
-metadata/_edit_lock_ = true
-
-[node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-2.84023, 2.61439)
-rotation = -0.0898652
-scale = Vector2(0.999827, 0.999827)
-texture = SubResource("AtlasTexture_x5uj2")
-centered = false
-offset = Vector2(-12, -2)
-metadata/_edit_lock_ = true
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle"]
-position = Vector2(-4.58496, -8.21035)
-shape = SubResource("CircleShape2D_dn8ha")
-
-[node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" node_paths=PackedStringArray("_observedEntity")]
-script = ExtResource("5_25dv7")
-_threshold = 0.0
-_observedEntity = NodePath("../../../../../../../..")
-
-[node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
-position = Vector2(-3, 3)
-scale = Vector2(0.999827, 0.999827)
-rest = Transform2D(1, 0, 0, 1, -3, 3)
-auto_calculate_length_and_angle = false
-length = 11.0
-bone_angle = 180.0
-editor_settings/show_bone_gizmo = false
-
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Jaw"]
-remote_path = NodePath("../../HeadParticle/Head/Jaw")
-
-[node name="RightEye" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
-position = Vector2(-16, -8)
-rest = Transform2D(1, 0, 0, 1, -16, -8)
-auto_calculate_length_and_angle = false
-length = 2.0
-bone_angle = 180.0
-editor_settings/show_bone_gizmo = false
-
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/RightEye"]
-remote_path = NodePath("../../HeadParticle/Head/Right_Eye")
-
-[node name="LeftEye" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
-position = Vector2(-4, -9)
-rest = Transform2D(1, 0, 0, 1, -4, -9)
-auto_calculate_length_and_angle = false
-length = 2.0
-bone_angle = 180.0
-editor_settings/show_bone_gizmo = false
-
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/LeftEye"]
-remote_path = NodePath("../../HeadParticle/Head/Left_Eye")
-
-[node name="Hat" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" node_paths=PackedStringArray("data")]
-position = Vector2(-2.5, -13.5)
-collision_layer = 128
-collision_mask = 64
-mass = 0.5
-center_of_mass_mode = 1
-freeze = true
-script = ExtResource("3_w70im")
-data = NodePath("../../../../../../..")
-maxAngle = 45.0
-minTorque = -45.0
-maxTorque = 45.0
-Impulse = 100.0
-
-[node name="Sprite" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Hat" node_paths=PackedStringArray("armor")]
-material = ExtResource("3_b8kja")
-position = Vector2(-1, -12)
-texture = ExtResource("4_qdhik")
-script = ExtResource("5_ickyd")
-armor = NodePath("../../../../../../../../Armor")
-degradationStages = Array[Texture]([ExtResource("4_qdhik"), ExtResource("6_b6mal"), ExtResource("7_011r0")])
-thresholdPercentage = Array[float]([1.0, 0.667, 0.333])
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Hat"]
-position = Vector2(1, -6)
-shape = SubResource("CircleShape2D_67t4t")
-
-[node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-position = Vector2(-1, -20)
-scale = Vector2(0.999829, 0.999829)
-rest = Transform2D(1, 0, 0, 1, -1, -20)
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Upper_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
-position = Vector2(-37, 10)
-texture = SubResource("AtlasTexture_djocr")
-centered = false
-offset = Vector2(33, -12)
-metadata/_edit_lock_ = true
-
-[node name="HandProjectile" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" node_paths=PackedStringArray("data")]
-position = Vector2(-2, 14)
-collision_layer = 128
-collision_mask = 64
-freeze = true
-script = ExtResource("3_w70im")
-data = NodePath("../../../../../../..")
-minTorque = -45.0
-maxTorque = 45.0
-
-[node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"]
-rotation = -0.136361
-scale = Vector2(0.999995, 0.999995)
-texture = SubResource("AtlasTexture_auqeq")
-centered = false
-offset = Vector2(-5, 0)
-metadata/_edit_lock_ = true
-
-[node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"]
-show_behind_parent = true
-position = Vector2(-0.99983, 12.9978)
-rotation = -0.112403
-scale = Vector2(0.999658, 0.999658)
-texture = SubResource("AtlasTexture_vlvtp")
-centered = false
-offset = Vector2(-4, -1)
-metadata/_edit_lock_ = true
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"]
-position = Vector2(-0.00104554, 13.0063)
-shape = SubResource("CapsuleShape2D_ccrjo")
-
-[node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" node_paths=PackedStringArray("_observedEntity")]
-script = ExtResource("5_25dv7")
-_observedEntity = NodePath("../../../../../../../..")
-
-[node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
-position = Vector2(-2, 14)
-scale = Vector2(0.999825, 0.999825)
-rest = Transform2D(1, 0, 0, 1, -2, 14)
-editor_settings/show_bone_gizmo = false
-
-[node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
-position = Vector2(-1, 13)
-scale = Vector2(0.999828, 0.999828)
-rest = Transform2D(1, 0, 0, 1, -1, 13)
-auto_calculate_length_and_angle = false
-length = 6.0
-bone_angle = 90.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Hand_Remote" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand"]
-remote_path = NodePath("../../../HandProjectile/Left_Lower_Arm/Left_Hand")
-
-[node name="Left_Lower_Arm_Remote" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
-scale = Vector2(1.00017, 1.00017)
-remote_path = NodePath("../../HandProjectile/Left_Lower_Arm")
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="CanvasGroup/basic_zombie_walk"]
-libraries = {
-&"": SubResource("AnimationLibrary_x5uj2"),
-&"basic": ExtResource("12_1gn3d")
-}
-
-[node name="EatingStatistics" type="Node" parent="CanvasGroup/basic_zombie_walk/AnimationPlayer"]
-script = ExtResource("13_xh0ny")
-animationName = "basic/eating"
-trackToFind = "../../Eatbox"
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 8
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(4, -24)
-shape = SubResource("RectangleShape2D_hxyad")
-
-[node name="Eatbox" type="Area2D" parent="."]
-collision_layer = 0
-collision_mask = 2
-script = ExtResource("14_kx47n")
-_damage = SubResource("Resource_011r0")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Eatbox"]
-position = Vector2(-10, -24)
-shape = SubResource("RectangleShape2D_r4ug6")
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-root_node = NodePath("../CanvasGroup/basic_zombie_walk")
-tree_root = SubResource("AnimationNodeBlendTree_ccrjo")
-advance_expression_base_node = NodePath("../Eatbox")
-anim_player = NodePath("../CanvasGroup/basic_zombie_walk/AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-script = ExtResource("17_tttgn")
-entity = NodePath("..")
-
-[node name="Mover" type="Node" parent="."]
-script = ExtResource("18_1pso5")
-_speed = SubResource("Resource_b6mal")
-_speedControlMult = 0.706804
-
-[node name="HitPlayer" type="Node" parent="."]
-script = ExtResource("19_n3dlr")
-playlist = Array[AudioStream]([ExtResource("7_0amn8"), ExtResource("7_67t4t")])
-channels = Array[String](["plastic_hit", "hit"])
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="Armor" type="Node" parent="."]
-script = ExtResource("3_5s7in")
-MaxHP = 195.0
-
-[node name="FlashController" type="Node" parent="Armor"]
-script = ExtResource("13_7fceb")
-shaderMaterial = ExtResource("3_b8kja")
-
-[node name="GroanPlayer" type="Node" parent="."]
-script = ExtResource("24_v3jd8")
-audioStream = ExtResource("25_6yd48")
-channel = "groan"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="Timer" type="Timer" parent="GroanPlayer"]
-wait_time = 20.0
-
-[node name="StartTimer" type="Timer" parent="GroanPlayer/Timer"]
-wait_time = 5.0
-one_shot = true
-autostart = true
-
-[node name="EffectPlayer" type="Node" parent="."]
-script = ExtResource("26_myimu")
-effectsToMap = Array[Resource]([ExtResource("27_dxxec"), ExtResource("28_wg63k")])
-streamsToMapTo = Array[AudioStream]([ExtResource("29_fah3r"), ExtResource("30_p00wq")])
-streamSettings = Array[Object]([null, SubResource("Resource_dn8ha")])
-
-[node name="DeathHandler" type="Node" parent="." node_paths=PackedStringArray("_tree", "_collider")]
-script = ExtResource("32_1sywa")
-_tree = NodePath("../AnimationTree")
-_collider = NodePath("../Hitbox/CollisionShape2D")
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("13_7fceb")
-shaderMaterial = ExtResource("2_ffeg6")
-
-[connection signal="HasBeenKilled" from="." to="DeathHandler" method="OnKilled"]
-[connection signal="OnDamaged" from="." to="HitPlayer" method="Play"]
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" method="FallOff"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Jaw/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/RightEye/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/LeftEye/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" method="FallOff"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand_Remote" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/Left_Lower_Arm_Remote" method="queue_free"]
-[connection signal="area_entered" from="Eatbox" to="Eatbox" method="OnAreaEntered"]
-[connection signal="area_exited" from="Eatbox" to="Eatbox" method="OnAreaExited"]
-[connection signal="ArmorLost" from="Armor" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Hat" method="FallOff"]
-[connection signal="ArmorLost" from="Armor" to="HitPlayer" method="Next"]
-[connection signal="Damaged" from="Armor" to="HitPlayer" method="Play"]
-[connection signal="Damaged" from="Armor" to="Armor/FlashController" method="DamageFlash"]
-[connection signal="HpChanged" from="Armor" to="." method="HPChangedMixedInvoker"]
-[connection signal="timeout" from="GroanPlayer/Timer" to="GroanPlayer" method="Play"]
-[connection signal="timeout" from="GroanPlayer/Timer/StartTimer" to="GroanPlayer/Timer" method="start"]
diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn
deleted file mode 100644
index 58a43f1..0000000
--- a/scenes/entities/Zombies/hobo.tscn
+++ /dev/null
@@ -1,1429 +0,0 @@
-[gd_scene load_steps=94 format=3 uid="uid://bgqmwsb6ynm81"]
-
-[ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/entities/zombies/RuntimeZombieData.cs" id="1_5h5we"]
-[ext_resource type="Script" uid="uid://bcc7skl7ts6sh" path="res://scripts/systems/effects/Effect.cs" id="2_ssrsu"]
-[ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://assets/effects/GarlicEffect.tres" id="3_b583s"]
-[ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="3_tu6af"]
-[ext_resource type="Script" uid="uid://c5v2og85t7s6j" path="res://scripts/entities/zombies/behaviours/HoboBehaviour.cs" id="4_5selg"]
-[ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="4_c1y3b"]
-[ext_resource type="Material" uid="uid://jr0vpg030jqv" path="res://assets/ZombieMaterial.tres" id="4_ssrsu"]
-[ext_resource type="Script" uid="uid://fd4im1fmwc5n" path="res://scripts/entities/Armor.cs" id="4_w8pya"]
-[ext_resource type="Texture2D" uid="uid://dri70dxyks7xh" path="res://assets/sprites/zombies/hobo.png" id="5_b583s"]
-[ext_resource type="Script" uid="uid://bbw848msxb4re" path="res://scripts/entities/DegradingSprite.cs" id="5_ndwp0"]
-[ext_resource type="Texture2D" uid="uid://8h5vg1pk32b2" path="res://assets/sprites/garbage_can1.tres" id="6_i6nje"]
-[ext_resource type="Texture2D" uid="uid://dacgbwohpmeed" path="res://assets/sprites/zombies/basic.png" id="6_ihedj"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="6_vn3j1"]
-[ext_resource type="Texture2D" uid="uid://cogfbn4re3kob" path="res://assets/sprites/garbage_can2.tres" id="7_txjqc"]
-[ext_resource type="AnimationLibrary" uid="uid://ceb3khu7rwgy8" path="res://assets/animations/zombies/basic.res" id="7_vn3j1"]
-[ext_resource type="AudioStream" uid="uid://bu1egfsyplpx4" path="res://assets/audio/sfx/metalhit_generic.tres" id="8_4248q"]
-[ext_resource type="Texture2D" uid="uid://n2j2k2aijr7j" path="res://assets/sprites/garbage_can3.tres" id="8_b583s"]
-[ext_resource type="AnimationLibrary" uid="uid://c0tlm0ta4dgbk" path="res://assets/animations/zombies/hobo.res" id="8_yb81c"]
-[ext_resource type="AudioStream" uid="uid://w0qfwds4o3ti" path="res://assets/audio/sfx/hit_generic.tres" id="9_tu6af"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="11_7jlle"]
-[ext_resource type="Script" uid="uid://d3l8e8ko5r5i3" path="res://scripts/entities/ArmorHPObserver.cs" id="12_vn3j1"]
-[ext_resource type="AudioStream" uid="uid://ch55p7qbaawtp" path="res://assets/audio/sfx/argh.tres" id="12_w1b1s"]
-[ext_resource type="Script" uid="uid://dau0tfmlfiqmo" path="res://scripts/entities/EntityHPObserver.cs" id="14_2awep"]
-[ext_resource type="Script" uid="uid://dw7v3s4kbu7ma" path="res://scripts/entities/AnimationStatistics.cs" id="17_arnax"]
-[ext_resource type="Script" uid="uid://dqyony6jxt2p0" path="res://scripts/entities/zombies/EatBox.cs" id="18_p6vn8"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="19_8y6c0"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="20_l220p"]
-[ext_resource type="Script" uid="uid://7hdj2k14lfe4" path="res://scripts/entities/zombies/ZombieMover.cs" id="21_vuumd"]
-[ext_resource type="Script" uid="uid://cnn0ymuhypdff" path="res://scripts/audio/ChannelPlaylist.cs" id="22_uxp8e"]
-[ext_resource type="Shader" uid="uid://btf4xhu31ln6n" path="res://assets/shaders/canvas_group_flash.gdshader" id="23_nc6p3"]
-[ext_resource type="AudioStream" uid="uid://bg76miyscfvhu" path="res://assets/audio/sfx/groan.tres" id="26_i0ku7"]
-[ext_resource type="Script" uid="uid://b8r6fxsfjdo3a" path="res://scripts/audio/EffectBasedPlayer.cs" id="30_pilme"]
-[ext_resource type="Resource" uid="uid://7uj0oe656jfx" path="res://assets/effects/SnowSlow.tres" id="31_y40pw"]
-[ext_resource type="AudioStream" uid="uid://dt13iugnnx4op" path="res://assets/audio/sfx/yuck_generic.tres" id="32_xr8w3"]
-[ext_resource type="AudioStream" uid="uid://bjotp63arocci" path="res://assets/audio/sfx/frozen.mp3" id="33_6wb5p"]
-[ext_resource type="Script" uid="uid://c1x4n4nqyq72f" path="res://scripts/audio/ChannelSettings.cs" id="34_1p6mb"]
-[ext_resource type="Script" uid="uid://dk32ln8c2574d" path="res://scripts/entities/zombies/ZombieKillHandler.cs" id="35_jg5ia"]
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_wn68q"]
-tip_nodepath = NodePath("Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 17
-joint_data/0/bone2d_node = NodePath("Butt/Body/LeftUpperArm/LeftLowerArm")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = true
-joint_data/0/constraint_angle_min = 0.0
-joint_data/0/constraint_angle_max = 90.0
-joint_data/0/constraint_angle_invert = false
-joint_data/0/constraint_in_localspace = true
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 16
-joint_data/1/bone2d_node = NodePath("Butt/Body/LeftUpperArm")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = false
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_x5uj2"]
-tip_nodepath = NodePath("Butt/Body/RightUpperArm/RightLowerArm/RightHand")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 8
-joint_data/0/bone2d_node = NodePath("Butt/Body/RightUpperArm")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = false
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 9
-joint_data/1/bone2d_node = NodePath("Butt/Body/RightUpperArm/RightLowerArm")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = true
-joint_data/1/constraint_angle_min = 0.0
-joint_data/1/constraint_angle_max = 90.0
-joint_data/1/constraint_angle_invert = false
-joint_data/1/constraint_in_localspace = true
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_vcc72"]
-tip_nodepath = NodePath("Butt/RightUpperLeg/RightLowerLeg/RightFoot")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 1
-joint_data/0/bone2d_node = NodePath("Butt/RightUpperLeg")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = true
-joint_data/0/constraint_angle_min = -90.0
-joint_data/0/constraint_angle_max = 90.0
-joint_data/0/constraint_angle_invert = true
-joint_data/0/constraint_in_localspace = true
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 2
-joint_data/1/bone2d_node = NodePath("Butt/RightUpperLeg/RightLowerLeg")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = true
-joint_data/1/constraint_angle_min = 0.0
-joint_data/1/constraint_angle_max = 160.0
-joint_data/1/constraint_angle_invert = false
-joint_data/1/constraint_in_localspace = true
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_kto0i"]
-tip_nodepath = NodePath("Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot")
-ccdik_data_chain_length = 2
-joint_data/0/bone_index = 4
-joint_data/0/bone2d_node = NodePath("Butt/LeftUpperLeg")
-joint_data/0/rotate_from_joint = false
-joint_data/0/enable_constraint = true
-joint_data/0/constraint_angle_min = -90.0
-joint_data/0/constraint_angle_max = 90.0
-joint_data/0/constraint_angle_invert = true
-joint_data/0/constraint_in_localspace = true
-joint_data/0/editor_draw_gizmo = true
-joint_data/1/bone_index = 5
-joint_data/1/bone2d_node = NodePath("Butt/LeftUpperLeg/LeftLowerLeg")
-joint_data/1/rotate_from_joint = false
-joint_data/1/enable_constraint = true
-joint_data/1/constraint_angle_min = -90.0
-joint_data/1/constraint_angle_max = 0.0
-joint_data/1/constraint_angle_invert = true
-joint_data/1/constraint_in_localspace = true
-joint_data/1/editor_draw_gizmo = true
-editor/draw_gizmo = false
-
-[sub_resource type="SkeletonModificationStack2D" id="SkeletonModificationStack2D_wn68q"]
-modification_count = 4
-modifications/0 = SubResource("SkeletonModification2DCCDIK_wn68q")
-modifications/1 = SubResource("SkeletonModification2DCCDIK_x5uj2")
-modifications/2 = SubResource("SkeletonModification2DCCDIK_vcc72")
-modifications/3 = SubResource("SkeletonModification2DCCDIK_kto0i")
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_txjqc"]
-atlas = ExtResource("5_b583s")
-region = Rect2(115, 52, 17, 9)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_b583s"]
-atlas = ExtResource("5_b583s")
-region = Rect2(86, 50, 10, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_uoit3"]
-atlas = ExtResource("5_b583s")
-region = Rect2(115, 52, 17, 9)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vn3j1"]
-atlas = ExtResource("5_b583s")
-region = Rect2(101, 50, 10, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_yb81c"]
-atlas = ExtResource("5_b583s")
-region = Rect2(117, 1, 8, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_nlwsb"]
-atlas = ExtResource("5_b583s")
-region = Rect2(129, 4, 7, 10)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_8y6c0"]
-atlas = ExtResource("5_b583s")
-region = Rect2(113, 22, 19, 13)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_nc6p3"]
-atlas = ExtResource("5_b583s")
-region = Rect2(80, 30, 7, 18)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_y0p2l"]
-atlas = ExtResource("5_b583s")
-region = Rect2(101, 37, 9, 11)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_op0h6"]
-atlas = ExtResource("5_b583s")
-region = Rect2(91, 32, 9, 15)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_0s5wm"]
-atlas = ExtResource("5_b583s")
-region = Rect2(137, 19, 29, 39)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_e7wc3"]
-atlas = ExtResource("6_ihedj")
-region = Rect2(72, 2, 13, 26)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_5selg"]
-atlas = ExtResource("5_b583s")
-region = Rect2(0, 29, 35, 11)
-
-[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_4248q"]
-radius = 17.0
-height = 48.0
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_n380g"]
-atlas = ExtResource("5_b583s")
-region = Rect2(34, 38, 45, 27)
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_vn3j1"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_pjhfy"]
-atlas = ExtResource("5_b583s")
-region = Rect2(80, 0, 32, 30)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_vcc72"]
-atlas = ExtResource("6_ihedj")
-region = Rect2(93, 3, 2, 3)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_kto0i"]
-atlas = ExtResource("6_ihedj")
-region = Rect2(105, 2, 3, 4)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_7cvmi"]
-atlas = ExtResource("5_b583s")
-region = Rect2(38, 22, 22, 13)
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_dn8ha"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_tebih"]
-atlas = ExtResource("5_b583s")
-region = Rect2(34, 0, 6, 19)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_auxav"]
-atlas = ExtResource("5_b583s")
-region = Rect2(43, 0, 9, 15)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_dntsa"]
-atlas = ExtResource("5_b583s")
-region = Rect2(55, 0, 9, 10)
-
-[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ccrjo"]
-radius = 3.00026
-height = 16.007
-
-[sub_resource type="Animation" id="Animation_vn3j1"]
-resource_name = "RESET"
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm:position")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 14)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm: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("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:position")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, 13)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand:rotation")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("Zombie/Butt/Body/LeftUpperArm:position")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, -20)]
-}
-tracks/5/type = "value"
-tracks/5/imported = false
-tracks/5/enabled = true
-tracks/5/path = NodePath("Zombie/Butt/Body/LeftUpperArm: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("Zombie/Butt/Body/Head/LeftEye:position")
-tracks/6/interp = 1
-tracks/6/loop_wrap = true
-tracks/6/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-4, -9)]
-}
-tracks/7/type = "value"
-tracks/7/imported = false
-tracks/7/enabled = true
-tracks/7/path = NodePath("Zombie/Butt/Body/Head/LeftEye: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("Zombie/Butt/Body/Head/RightEye:position")
-tracks/8/interp = 1
-tracks/8/loop_wrap = true
-tracks/8/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-16, -8)]
-}
-tracks/9/type = "value"
-tracks/9/imported = false
-tracks/9/enabled = true
-tracks/9/path = NodePath("Zombie/Butt/Body/Head/RightEye: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("Zombie/Butt/Body/Head/Jaw:position")
-tracks/10/interp = 1
-tracks/10/loop_wrap = true
-tracks/10/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-3, 3)]
-}
-tracks/11/type = "value"
-tracks/11/imported = false
-tracks/11/enabled = true
-tracks/11/path = NodePath("Zombie/Butt/Body/Head/Jaw:rotation")
-tracks/11/interp = 1
-tracks/11/loop_wrap = true
-tracks/11/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/12/type = "value"
-tracks/12/imported = false
-tracks/12/enabled = true
-tracks/12/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position")
-tracks/12/interp = 1
-tracks/12/loop_wrap = true
-tracks/12/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, 13)]
-}
-tracks/13/type = "value"
-tracks/13/imported = false
-tracks/13/enabled = true
-tracks/13/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand: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("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position")
-tracks/14/interp = 1
-tracks/14/loop_wrap = true
-tracks/14/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 15)]
-}
-tracks/15/type = "value"
-tracks/15/imported = false
-tracks/15/enabled = true
-tracks/15/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation")
-tracks/15/interp = 1
-tracks/15/loop_wrap = true
-tracks/15/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/16/type = "value"
-tracks/16/imported = false
-tracks/16/enabled = true
-tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position")
-tracks/16/interp = 1
-tracks/16/loop_wrap = true
-tracks/16/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-14, -23)]
-}
-tracks/17/type = "value"
-tracks/17/imported = false
-tracks/17/enabled = true
-tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation")
-tracks/17/interp = 1
-tracks/17/loop_wrap = true
-tracks/17/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/18/type = "value"
-tracks/18/imported = false
-tracks/18/enabled = true
-tracks/18/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position")
-tracks/18/interp = 1
-tracks/18/loop_wrap = true
-tracks/18/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(6, 10)]
-}
-tracks/19/type = "value"
-tracks/19/imported = false
-tracks/19/enabled = true
-tracks/19/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot: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("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position")
-tracks/20/interp = 1
-tracks/20/loop_wrap = true
-tracks/20/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-1, 13)]
-}
-tracks/21/type = "value"
-tracks/21/imported = false
-tracks/21/enabled = true
-tracks/21/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation")
-tracks/21/interp = 1
-tracks/21/loop_wrap = true
-tracks/21/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/22/type = "value"
-tracks/22/imported = false
-tracks/22/enabled = true
-tracks/22/path = NodePath("Zombie/Butt/LeftUpperLeg:position")
-tracks/22/interp = 1
-tracks/22/loop_wrap = true
-tracks/22/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(6, 4)]
-}
-tracks/23/type = "value"
-tracks/23/imported = false
-tracks/23/enabled = true
-tracks/23/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation")
-tracks/23/interp = 1
-tracks/23/loop_wrap = true
-tracks/23/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/24/type = "value"
-tracks/24/imported = false
-tracks/24/enabled = true
-tracks/24/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position")
-tracks/24/interp = 1
-tracks/24/loop_wrap = true
-tracks/24/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 14)]
-}
-tracks/25/type = "value"
-tracks/25/imported = false
-tracks/25/enabled = true
-tracks/25/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation")
-tracks/25/interp = 1
-tracks/25/loop_wrap = true
-tracks/25/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/26/type = "value"
-tracks/26/imported = false
-tracks/26/enabled = true
-tracks/26/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position")
-tracks/26/interp = 1
-tracks/26/loop_wrap = true
-tracks/26/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-2, 12)]
-}
-tracks/27/type = "value"
-tracks/27/imported = false
-tracks/27/enabled = true
-tracks/27/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation")
-tracks/27/interp = 1
-tracks/27/loop_wrap = true
-tracks/27/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/28/type = "value"
-tracks/28/imported = false
-tracks/28/enabled = true
-tracks/28/path = NodePath("Zombie/Butt/RightUpperLeg:position")
-tracks/28/interp = 1
-tracks/28/loop_wrap = true
-tracks/28/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-6, 3)]
-}
-tracks/29/type = "value"
-tracks/29/imported = false
-tracks/29/enabled = true
-tracks/29/path = NodePath("Zombie/Butt/RightUpperLeg:rotation")
-tracks/29/interp = 1
-tracks/29/loop_wrap = true
-tracks/29/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/30/type = "value"
-tracks/30/imported = false
-tracks/30/enabled = true
-tracks/30/path = NodePath("Zombie/Butt:position")
-tracks/30/interp = 1
-tracks/30/loop_wrap = true
-tracks/30/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(5, -35)]
-}
-tracks/31/type = "value"
-tracks/31/imported = false
-tracks/31/enabled = true
-tracks/31/path = NodePath("Zombie/Butt:rotation")
-tracks/31/interp = 1
-tracks/31/loop_wrap = true
-tracks/31/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/32/type = "value"
-tracks/32/imported = false
-tracks/32/enabled = true
-tracks/32/path = NodePath("Zombie/Butt/Body:position")
-tracks/32/interp = 1
-tracks/32/loop_wrap = true
-tracks/32/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(1, -2)]
-}
-tracks/33/type = "value"
-tracks/33/imported = false
-tracks/33/enabled = true
-tracks/33/path = NodePath("Zombie/Butt/Body:rotation")
-tracks/33/interp = 1
-tracks/33/loop_wrap = true
-tracks/33/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/34/type = "value"
-tracks/34/imported = false
-tracks/34/enabled = true
-tracks/34/path = NodePath("Zombie:position")
-tracks/34/interp = 1
-tracks/34/loop_wrap = true
-tracks/34/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(0, 0)]
-}
-tracks/35/type = "value"
-tracks/35/imported = false
-tracks/35/enabled = true
-tracks/35/path = NodePath("Zombie:rotation")
-tracks/35/interp = 1
-tracks/35/loop_wrap = true
-tracks/35/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/36/type = "value"
-tracks/36/imported = false
-tracks/36/enabled = true
-tracks/36/path = NodePath("Zombie/Butt/Body/Head:position")
-tracks/36/interp = 1
-tracks/36/loop_wrap = true
-tracks/36/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-10, -25)]
-}
-tracks/37/type = "value"
-tracks/37/imported = false
-tracks/37/enabled = true
-tracks/37/path = NodePath("Zombie/Butt/Body/Head:rotation")
-tracks/37/interp = 1
-tracks/37/loop_wrap = true
-tracks/37/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/38/type = "value"
-tracks/38/imported = false
-tracks/38/enabled = true
-tracks/38/path = NodePath("Zombie/Butt/Body/Head: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("Zombie/Butt/Body/Head/TrashcanLid:position")
-tracks/39/interp = 1
-tracks/39/loop_wrap = true
-tracks/39/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-0.0022974, -17.0131)]
-}
-tracks/40/type = "value"
-tracks/40/imported = false
-tracks/40/enabled = true
-tracks/40/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:rotation")
-tracks/40/interp = 1
-tracks/40/loop_wrap = true
-tracks/40/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/41/type = "value"
-tracks/41/imported = false
-tracks/41/enabled = true
-tracks/41/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid: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("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:texture")
-tracks/42/interp = 1
-tracks/42/loop_wrap = true
-tracks/42/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [SubResource("AtlasTexture_dntsa")]
-}
-tracks/43/type = "value"
-tracks/43/imported = false
-tracks/43/enabled = true
-tracks/43/path = NodePath("../../Mover:_speedControlMult")
-tracks/43/interp = 1
-tracks/43/loop_wrap = true
-tracks/43/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/44/type = "value"
-tracks/44/imported = false
-tracks/44/enabled = true
-tracks/44/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:offset")
-tracks/44/interp = 1
-tracks/44/loop_wrap = true
-tracks/44/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(-4, -1)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_x5uj2"]
-_data = {
-&"RESET": SubResource("Animation_vn3j1")
-}
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_hxyad"]
-size = Vector2(26, 48)
-
-[sub_resource type="Resource" id="Resource_n380g"]
-resource_local_to_scene = true
-script = ExtResource("4_c1y3b")
-flat_value = 5.0
-percentage_value = 0.0
-mult_value = 1.0
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_r4ug6"]
-size = Vector2(16, 48)
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vn3j1"]
-animation = &"basic/death"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_02fim"]
-animation = &"basic/stand"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_yb81c"]
-animation = &"basic/eating"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_h0rfo"]
-animation = &"hobo/eating_without_arms"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nog33"]
-animation = &"basic/stand"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_c1y3b"]
-animation = &"basic/walk"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_g2uel"]
-animation = &"hobo/Jump_walking"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vxhht"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_n380g"]
-xfade_time = 0.5
-advance_mode = 2
-advance_expression = "get(\"isEating\")"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nlwsb"]
-xfade_time = 0.5
-advance_mode = 2
-advance_expression = "get(\"isEating\") == false"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8y6c0"]
-xfade_time = 0.5
-advance_mode = 2
-advance_expression = "get(\"isEating\")"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nc6p3"]
-xfade_time = 0.5
-advance_mode = 2
-advance_expression = "get(\"isEating\") == false"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_y0p2l"]
-break_loop_at_end = true
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_uoit3"]
-xfade_time = 0.5
-advance_mode = 2
-advance_expression = "get(\"isEating\") == false and can_process()"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vn3j1"]
-xfade_time = 0.5
-advance_mode = 2
-advance_expression = "get(\"isEating\") and can_process()"
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_xg3p6"]
-states/Death/node = SubResource("AnimationNodeAnimation_vn3j1")
-states/Death/position = Vector2(745, 220)
-states/Destroy/node = SubResource("AnimationNodeAnimation_02fim")
-states/Destroy/position = Vector2(773, 67)
-states/Eat/node = SubResource("AnimationNodeAnimation_yb81c")
-states/Eat/position = Vector2(942, 145)
-states/Eat_with_can/node = SubResource("AnimationNodeAnimation_h0rfo")
-states/Eat_with_can/position = Vector2(583, 145)
-states/End/position = Vector2(1185, 100)
-states/Idle/node = SubResource("AnimationNodeAnimation_nog33")
-states/Idle/position = Vector2(368, 100)
-states/Run/node = SubResource("AnimationNodeAnimation_c1y3b")
-states/Run/position = Vector2(942, -3)
-states/Walk/node = SubResource("AnimationNodeAnimation_g2uel")
-states/Walk/position = Vector2(583, -3)
-transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_vxhht"), "Walk", "Eat_with_can", SubResource("AnimationNodeStateMachineTransition_n380g"), "Eat_with_can", "Walk", SubResource("AnimationNodeStateMachineTransition_nlwsb"), "Run", "Eat", SubResource("AnimationNodeStateMachineTransition_8y6c0"), "Eat", "Run", SubResource("AnimationNodeStateMachineTransition_nc6p3"), "Destroy", "Run", SubResource("AnimationNodeStateMachineTransition_y0p2l"), "Idle", "Walk", SubResource("AnimationNodeStateMachineTransition_uoit3"), "Idle", "Eat_with_can", SubResource("AnimationNodeStateMachineTransition_vn3j1")]
-graph_offset = Vector2(274, -18)
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_txjqc"]
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d")
-nodes/TimeScale/position = Vector2(60, 120)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_xg3p6")
-nodes/Tree/position = Vector2(-220, 120)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="Resource" id="Resource_4248q"]
-resource_local_to_scene = true
-script = ExtResource("4_c1y3b")
-flat_value = 0.4
-percentage_value = 0.0
-mult_value = 1.0
-
-[sub_resource type="Resource" id="Resource_dn8ha"]
-script = ExtResource("34_1p6mb")
-restartTreshold = -1.0
-metadata/_custom_type_script = "uid://c1x4n4nqyq72f"
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_vn3j1"]
-resource_local_to_scene = true
-shader = ExtResource("23_nc6p3")
-shader_parameter/FLASH_COLOR = Color(1, 0.709804, 0.439216, 0.5)
-shader_parameter/HIGHLIGHT_COLOR = Color(1, 0.709804, 0.439216, 0.5)
-shader_parameter/blend = 0.0
-shader_parameter/selected = false
-
-[node name="Hobo" type="Node2D" node_paths=PackedStringArray("_armor", "_player", "_tree")]
-y_sort_enabled = true
-script = ExtResource("1_5h5we")
-_armor = NodePath("CanArmor")
-MaxHP = 185.0
-_player = NodePath("CanvasGroup/basic_zombie_walk/AnimationPlayer")
-_tree = NodePath("AnimationTree")
-_effectImmunities = Array[ExtResource("2_ssrsu")]([ExtResource("3_b583s")])
-metadata/_edit_vertical_guides_ = [-159.0]
-
-[node name="CanvasGroup" type="CanvasGroup" parent="."]
-material = ExtResource("4_ssrsu")
-
-[node name="basic_zombie_walk" type="Node2D" parent="CanvasGroup"]
-
-[node name="Zombie" type="Skeleton2D" parent="CanvasGroup/basic_zombie_walk"]
-use_parent_material = true
-modification_stack = SubResource("SkeletonModificationStack2D_wn68q")
-
-[node name="Butt" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie"]
-use_parent_material = true
-position = Vector2(5, -35)
-scale = Vector2(0.999902, 0.999902)
-rest = Transform2D(1, 0, 0, 1, 5, -35)
-editor_settings/show_bone_gizmo = false
-
-[node name="Butt" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
-texture = SubResource("AtlasTexture_txjqc")
-centered = false
-offset = Vector2(-10, -3)
-metadata/_edit_lock_ = true
-
-[node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
-position = Vector2(-6, 3)
-scale = Vector2(0.99983, 0.99983)
-rest = Transform2D(1, 0, 0, 1, -6, 3)
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Upper_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
-texture = SubResource("AtlasTexture_b583s")
-centered = false
-offset = Vector2(-6, -2)
-metadata/_edit_lock_ = true
-
-[node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
-position = Vector2(-2, 12)
-scale = Vector2(0.99983, 0.99983)
-rest = Transform2D(1, 0, 0, 1, -2, 12)
-editor_settings/show_bone_gizmo = false
-
-[node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
-position = Vector2(-2, 14)
-scale = Vector2(0.99983, 0.99983)
-rest = Transform2D(1, 0, 0, 1, -2, 14)
-auto_calculate_length_and_angle = false
-length = 12.0
-bone_angle = 0.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Foot" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot"]
-texture = SubResource("AtlasTexture_uoit3")
-centered = false
-offset = Vector2(-4, -3)
-metadata/_edit_lock_ = true
-
-[node name="Right_Lower_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
-position = Vector2(-18, -2)
-texture = SubResource("AtlasTexture_vn3j1")
-centered = false
-offset = Vector2(12, 1)
-metadata/_edit_lock_ = true
-
-[node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
-position = Vector2(6, 4)
-scale = Vector2(0.999826, 0.999826)
-rest = Transform2D(1, 0, 0, 1, 6, 4)
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Upper_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
-texture = SubResource("AtlasTexture_yb81c")
-centered = false
-offset = Vector2(-4, -2)
-metadata/_edit_lock_ = true
-
-[node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
-position = Vector2(-1, 13)
-scale = Vector2(0.999827, 0.999827)
-rest = Transform2D(1, 0, 0, 1, -1, 13)
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Lower_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
-texture = SubResource("AtlasTexture_nlwsb")
-centered = false
-offset = Vector2(-1, 0)
-metadata/_edit_lock_ = true
-
-[node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
-position = Vector2(6, 10)
-scale = Vector2(0.999821, 0.999821)
-rest = Transform2D(1, 0, 0, 1, 6, 10)
-auto_calculate_length_and_angle = false
-length = 12.0
-bone_angle = 160.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Foot" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot"]
-texture = SubResource("AtlasTexture_8y6c0")
-centered = false
-offset = Vector2(-14, -3)
-metadata/_edit_lock_ = true
-
-[node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
-position = Vector2(1, -2)
-scale = Vector2(0.999825, 0.999825)
-rest = Transform2D(1, 0, 0, 1, 1, -2)
-editor_settings/show_bone_gizmo = false
-
-[node name="RightUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-use_parent_material = true
-position = Vector2(-14, -23)
-scale = Vector2(0.999827, 0.999827)
-rest = Transform2D(1, 0, 0, 1, -14, -23)
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Upper_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
-texture = SubResource("AtlasTexture_nc6p3")
-centered = false
-offset = Vector2(-4, -2)
-metadata/_edit_lock_ = true
-
-[node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
-position = Vector2(-2, 15)
-scale = Vector2(0.999816, 0.999816)
-rest = Transform2D(1, 0, 0, 1, -2, 15)
-editor_settings/show_bone_gizmo = false
-
-[node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
-position = Vector2(-1, 13)
-scale = Vector2(0.999828, 0.999828)
-rest = Transform2D(1, 0, 0, 1, -1, 13)
-auto_calculate_length_and_angle = false
-length = 8.0
-bone_angle = 90.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Right_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand"]
-texture = SubResource("AtlasTexture_y0p2l")
-centered = false
-offset = Vector2(-4, -2)
-metadata/_edit_lock_ = true
-
-[node name="Right_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
-texture = SubResource("AtlasTexture_op0h6")
-centered = false
-offset = Vector2(-5, -1)
-metadata/_edit_lock_ = true
-
-[node name="Body" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-rotation = 0.00163735
-texture = SubResource("AtlasTexture_0s5wm")
-centered = false
-offset = Vector2(-15, -27)
-metadata/_edit_lock_ = true
-
-[node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-position = Vector2(-9, -21)
-rotation = 0.00541537
-scale = Vector2(1e-05, 1e-05)
-skew = -0.000476122
-rest = Transform2D(1, 0, 0, 1, -9, -21)
-auto_calculate_length_and_angle = false
-length = 24.0
-bone_angle = 100.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Tie" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie"]
-visible = false
-texture = SubResource("AtlasTexture_e7wc3")
-centered = false
-offset = Vector2(-10, -1)
-metadata/_edit_lock_ = true
-
-[node name="Can" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" node_paths=PackedStringArray("data")]
-scale = Vector2(1.00027, 1.00027)
-collision_layer = 128
-collision_mask = 64
-freeze = true
-script = ExtResource("3_tu6af")
-data = NodePath("../../../../../..")
-maxAngle = 45.0
-minTorque = -45.0
-maxTorque = 45.0
-Impulse = 100.0
-
-[node name="Sprite2D" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can" node_paths=PackedStringArray("armor")]
-material = ExtResource("6_vn3j1")
-position = Vector2(-5.9999, -4.5002)
-texture = ExtResource("6_i6nje")
-script = ExtResource("5_ndwp0")
-armor = NodePath("../../../../../../../CanArmor")
-degradationStages = Array[Texture2D]([ExtResource("6_i6nje"), ExtResource("7_txjqc"), ExtResource("8_b583s")])
-thresholdPercentage = Array[float]([1.0, 0.667, 0.333])
-
-[node name="Sprite2D2" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can"]
-material = ExtResource("6_vn3j1")
-position = Vector2(-7.4999, -27.5002)
-texture = SubResource("AtlasTexture_5selg")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can"]
-position = Vector2(-4.9999, -5.0002)
-shape = SubResource("CapsuleShape2D_4248q")
-
-[node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-position = Vector2(-10, -25)
-scale = Vector2(0.999829, 0.999829)
-rest = Transform2D(1, 0, 0, 1, -10, -25)
-editor_settings/show_bone_gizmo = false
-
-[node name="HeadParticle" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" node_paths=PackedStringArray("data")]
-collision_layer = 128
-collision_mask = 64
-freeze = true
-script = ExtResource("3_tu6af")
-data = NodePath("../../../../../../..")
-maxAngle = 45.0
-minTorque = -45.0
-maxTorque = 45.0
-Impulse = 100.0
-
-[node name="TrashcanLid" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" node_paths=PackedStringArray("data")]
-position = Vector2(-3, 3.00001)
-scale = Vector2(0.999826, 0.999826)
-collision_layer = 128
-collision_mask = 64
-freeze = true
-script = ExtResource("3_tu6af")
-data = NodePath("../../../../../../../..")
-
-[node name="Trashcan_lid" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/TrashcanLid"]
-material = ExtResource("6_vn3j1")
-position = Vector2(2.99822, -20.0166)
-scale = Vector2(1, 1)
-texture = SubResource("AtlasTexture_n380g")
-offset = Vector2(-0.5, -0.5)
-metadata/_edit_lock_ = true
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/TrashcanLid"]
-position = Vector2(2.99791, -20.018)
-shape = SubResource("CircleShape2D_vn3j1")
-
-[node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/TrashcanLid" node_paths=PackedStringArray("_observedArmor")]
-script = ExtResource("12_vn3j1")
-_threshold = 0.333
-_observedArmor = NodePath("../../../../../../../../../CanArmor")
-
-[node name="Head" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle"]
-texture = SubResource("AtlasTexture_pjhfy")
-centered = false
-offset = Vector2(-20, -24)
-metadata/_edit_lock_ = true
-
-[node name="Right_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-16, -8)
-scale = Vector2(1, 1)
-texture = SubResource("AtlasTexture_vcc72")
-centered = false
-offset = Vector2(-2, -2)
-metadata/_edit_lock_ = true
-
-[node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-4, -9)
-scale = Vector2(1, 1)
-texture = SubResource("AtlasTexture_kto0i")
-centered = false
-offset = Vector2(-2, -2)
-metadata/_edit_lock_ = true
-
-[node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-3, 3)
-rotation = -0.00880774
-scale = Vector2(0.999828, 0.999828)
-texture = SubResource("AtlasTexture_7cvmi")
-centered = false
-offset = Vector2(-14, -2)
-metadata/_edit_lock_ = true
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle"]
-position = Vector2(-4.58496, -8.21035)
-shape = SubResource("CircleShape2D_dn8ha")
-
-[node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" node_paths=PackedStringArray("_observedEntity")]
-script = ExtResource("14_2awep")
-_threshold = 0.0
-_observedEntity = NodePath("../../../../../../../..")
-
-[node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
-position = Vector2(-3, 3)
-scale = Vector2(0.999828, 0.999828)
-rest = Transform2D(1, 0, 0, 1, -3, 3)
-auto_calculate_length_and_angle = false
-length = 11.0
-bone_angle = 180.0
-editor_settings/show_bone_gizmo = false
-
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Jaw"]
-remote_path = NodePath("../../HeadParticle/Head/Jaw")
-
-[node name="RightEye" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
-position = Vector2(-16, -8)
-rest = Transform2D(1, 0, 0, 1, -16, -8)
-auto_calculate_length_and_angle = false
-length = 2.0
-bone_angle = 180.0
-editor_settings/show_bone_gizmo = false
-
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/RightEye"]
-remote_path = NodePath("../../HeadParticle/Head/Right_Eye")
-
-[node name="LeftEye" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
-position = Vector2(-4, -9)
-rest = Transform2D(1, 0, 0, 1, -4, -9)
-auto_calculate_length_and_angle = false
-length = 2.0
-bone_angle = 180.0
-editor_settings/show_bone_gizmo = false
-
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/LeftEye"]
-remote_path = NodePath("../../HeadParticle/Head/Left_Eye")
-
-[node name="TrashcanLid" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
-position = Vector2(-0.0022974, -17.0131)
-scale = Vector2(0.999828, 0.999828)
-rest = Transform2D(1, 0, 0, 1, -0.0022974, -17.0131)
-auto_calculate_length_and_angle = false
-length = 12.0
-bone_angle = 180.0
-editor_settings/show_bone_gizmo = false
-
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid"]
-remote_path = NodePath("../../HeadParticle/TrashcanLid/Trashcan_lid")
-
-[node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-position = Vector2(-1, -20)
-scale = Vector2(0.999826, 0.999826)
-rest = Transform2D(1, 0, 0, 1, -1, -20)
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Upper_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
-position = Vector2(-37, 10)
-texture = SubResource("AtlasTexture_tebih")
-centered = false
-offset = Vector2(33, -12)
-metadata/_edit_lock_ = true
-
-[node name="HandProjectile" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" node_paths=PackedStringArray("data")]
-position = Vector2(-2, 14)
-collision_layer = 128
-collision_mask = 64
-freeze = true
-script = ExtResource("3_tu6af")
-data = NodePath("../../../../../../..")
-minTorque = -45.0
-maxTorque = 45.0
-
-[node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"]
-rotation = 0.0048851
-scale = Vector2(0.999996, 0.999996)
-texture = SubResource("AtlasTexture_auxav")
-centered = false
-offset = Vector2(-5, 0)
-metadata/_edit_lock_ = true
-
-[node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"]
-show_behind_parent = true
-position = Vector2(-0.99983, 12.9978)
-scale = Vector2(0.999652, 0.999652)
-texture = SubResource("AtlasTexture_dntsa")
-centered = false
-offset = Vector2(-4, -1)
-metadata/_edit_lock_ = true
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"]
-position = Vector2(-0.00104554, 13.0063)
-shape = SubResource("CapsuleShape2D_ccrjo")
-
-[node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" node_paths=PackedStringArray("_observedEntity")]
-script = ExtResource("14_2awep")
-_observedEntity = NodePath("../../../../../../../..")
-
-[node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
-position = Vector2(-2, 14)
-scale = Vector2(0.999826, 0.999826)
-rest = Transform2D(1, 0, 0, 1, -2, 14)
-editor_settings/show_bone_gizmo = false
-
-[node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
-position = Vector2(-1, 13)
-scale = Vector2(0.999822, 0.999822)
-rest = Transform2D(1, 0, 0, 1, -1, 13)
-auto_calculate_length_and_angle = false
-length = 6.0
-bone_angle = 90.0
-editor_settings/show_bone_gizmo = false
-
-[node name="Left_Hand_Remote" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand"]
-remote_path = NodePath("../../../HandProjectile/Left_Lower_Arm/Left_Hand")
-
-[node name="Left_Lower_Arm_Remote" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
-scale = Vector2(1.00017, 1.00017)
-remote_path = NodePath("../../HandProjectile/Left_Lower_Arm")
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="CanvasGroup/basic_zombie_walk"]
-libraries = {
-&"": SubResource("AnimationLibrary_x5uj2"),
-&"basic": ExtResource("7_vn3j1"),
-&"hobo": ExtResource("8_yb81c")
-}
-
-[node name="EatingStatistics" type="Node" parent="CanvasGroup/basic_zombie_walk/AnimationPlayer"]
-script = ExtResource("17_arnax")
-animationName = "hobo/eating_without_arms"
-trackToFind = "../../Eatbox"
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 8
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(4, -24)
-shape = SubResource("RectangleShape2D_hxyad")
-
-[node name="Eatbox" type="Area2D" parent="."]
-collision_layer = 0
-collision_mask = 2
-script = ExtResource("18_p6vn8")
-_damage = SubResource("Resource_n380g")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Eatbox"]
-position = Vector2(-10, -24)
-shape = SubResource("RectangleShape2D_r4ug6")
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-root_node = NodePath("../CanvasGroup/basic_zombie_walk")
-tree_root = SubResource("AnimationNodeBlendTree_txjqc")
-advance_expression_base_node = NodePath("../Behaviour")
-anim_player = NodePath("../CanvasGroup/basic_zombie_walk/AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-script = ExtResource("20_l220p")
-entity = NodePath("..")
-
-[node name="Mover" type="Node" parent="."]
-script = ExtResource("21_vuumd")
-_speed = SubResource("Resource_4248q")
-
-[node name="HitPlayer" type="Node" parent="."]
-script = ExtResource("22_uxp8e")
-playlist = Array[AudioStream]([ExtResource("8_4248q"), ExtResource("9_tu6af")])
-channels = Array[String](["metal_hit", "hit"])
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="GroanPlayer" type="Node" parent="."]
-script = ExtResource("11_7jlle")
-audioStream = ExtResource("26_i0ku7")
-channel = "groan"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="Timer" type="Timer" parent="GroanPlayer"]
-wait_time = 20.0
-
-[node name="StartTimer" type="Timer" parent="GroanPlayer/Timer"]
-wait_time = 5.0
-one_shot = true
-autostart = true
-
-[node name="CanArmor" type="Node" parent="."]
-script = ExtResource("4_w8pya")
-MaxHP = 550.0
-metadata/_custom_type_script = "uid://fd4im1fmwc5n"
-
-[node name="FlashController" type="Node" parent="CanArmor"]
-script = ExtResource("19_8y6c0")
-shaderMaterial = ExtResource("6_vn3j1")
-
-[node name="Behaviour" type="Node" parent="." node_paths=PackedStringArray("_eatBox", "_animationTree")]
-script = ExtResource("4_5selg")
-_eatBox = NodePath("../Eatbox")
-_animationTree = NodePath("../AnimationTree")
-
-[node name="EffectPlayer" type="Node" parent="."]
-script = ExtResource("30_pilme")
-effectsToMap = Array[Resource]([ExtResource("3_b583s"), ExtResource("31_y40pw")])
-streamsToMapTo = Array[AudioStream]([ExtResource("32_xr8w3"), ExtResource("33_6wb5p")])
-streamSettings = Array[Object]([null, SubResource("Resource_dn8ha")])
-
-[node name="DeathHandler" type="Node" parent="." node_paths=PackedStringArray("_tree", "_collider")]
-script = ExtResource("35_jg5ia")
-_tree = NodePath("../AnimationTree")
-_collider = NodePath("../Hitbox/CollisionShape2D")
-
-[node name="RipPlayer" type="Node" parent="."]
-script = ExtResource("11_7jlle")
-audioStream = ExtResource("12_w1b1s")
-channel = "anger"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("19_8y6c0")
-shaderMaterial = SubResource("ShaderMaterial_vn3j1")
-
-[connection signal="HasBeenKilled" from="." to="DeathHandler" method="OnKilled"]
-[connection signal="OnDamaged" from="." to="HitPlayer" method="Play"]
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/TrashcanLid/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/TrashcanLid" method="FallOff"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/TrashcanLid/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/TrashcanLid/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" method="FallOff"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Jaw/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/RightEye/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/LeftEye/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" method="FallOff"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand_Remote" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/Left_Lower_Arm_Remote" method="queue_free"]
-[connection signal="area_entered" from="Eatbox" to="Eatbox" method="OnAreaEntered"]
-[connection signal="area_exited" from="Eatbox" to="Eatbox" method="OnAreaExited"]
-[connection signal="timeout" from="GroanPlayer/Timer" to="GroanPlayer" method="Play"]
-[connection signal="timeout" from="GroanPlayer/Timer/StartTimer" to="GroanPlayer/Timer" method="start"]
-[connection signal="ArmorLost" from="CanArmor" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Can" method="FallOff"]
-[connection signal="ArmorLost" from="CanArmor" to="HitPlayer" method="Next"]
-[connection signal="ArmorLost" from="CanArmor" to="Behaviour" method="Trashed"]
-[connection signal="Damaged" from="CanArmor" to="HitPlayer" method="Play"]
-[connection signal="Damaged" from="CanArmor" to="CanArmor/FlashController" method="DamageFlash"]
diff --git a/scenes/entities/plants/aloe.tscn b/scenes/entities/plants/aloe.tscn
deleted file mode 100644
index 5215df8..0000000
--- a/scenes/entities/plants/aloe.tscn
+++ /dev/null
@@ -1,150 +0,0 @@
-[gd_scene load_steps=24 format=3 uid="uid://bw1w8jp0yeypy"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_8fr1j"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_aimqk"]
-[ext_resource type="Texture2D" uid="uid://b6tyoa5htapir" path="res://assets/sprites/atlases/plants/aloe.png" id="2_iup5p"]
-[ext_resource type="AnimationLibrary" uid="uid://bgutjc3ruq27s" path="res://assets/animations/plants/aloe.res" id="3_3sp3b"]
-[ext_resource type="Script" uid="uid://cljytsmqac0w7" path="res://scripts/entities/plants/behaviours/AloeBehaviour.cs" id="4_55asm"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="4_aimqk"]
-[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="5_gfy6j"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="7_vpcbp"]
-
-[sub_resource type="Animation" id="Animation_vknky"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [0]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("AnimationTree:parameters/Tree/conditions/heal")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_wlien"]
-_data = {
-&"RESET": SubResource("Animation_vknky")
-}
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_qtb3p"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_c25ew"]
-animation = &"aloe/heal"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6dmta"]
-animation = &"aloe/idle"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7tkf5"]
-animation = &"aloe/idle_used"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_8bc4q"]
-animation = &"aloe/recharge"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gi6e0"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_l1t7h"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_cut4s"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_um4ov"]
-advance_mode = 2
-advance_condition = &"heal"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4kdc0"]
-advance_mode = 2
-advance_condition = &"charged"
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_bldox"]
-states/aloe_heal/node = SubResource("AnimationNodeAnimation_c25ew")
-states/aloe_heal/position = Vector2(530, 41)
-states/aloe_idle/node = SubResource("AnimationNodeAnimation_6dmta")
-states/aloe_idle/position = Vector2(359, 100)
-states/aloe_idle_used/node = SubResource("AnimationNodeAnimation_7tkf5")
-states/aloe_idle_used/position = Vector2(710, 105)
-states/aloe_recharge/node = SubResource("AnimationNodeAnimation_8bc4q")
-states/aloe_recharge/position = Vector2(530, 171)
-transitions = ["Start", "aloe_idle", SubResource("AnimationNodeStateMachineTransition_gi6e0"), "aloe_heal", "aloe_idle_used", SubResource("AnimationNodeStateMachineTransition_l1t7h"), "aloe_recharge", "aloe_idle", SubResource("AnimationNodeStateMachineTransition_cut4s"), "aloe_idle", "aloe_heal", SubResource("AnimationNodeStateMachineTransition_um4ov"), "aloe_idle_used", "aloe_recharge", SubResource("AnimationNodeStateMachineTransition_4kdc0")]
-graph_offset = Vector2(-78.082, -71.7578)
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_gfy6j"]
-graph_offset = Vector2(-383, 84)
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_qtb3p")
-nodes/TimeScale/position = Vector2(120, 120)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_bldox")
-nodes/Tree/position = Vector2(-140, 160)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_oe0dc"]
-size = Vector2(22, 32)
-
-[node name="Aloe" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_8fr1j")
-MaxHP = 30.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_aimqk")
-position = Vector2(9, -14)
-texture = ExtResource("2_iup5p")
-hframes = 8
-vframes = 4
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_wlien"),
-&"aloe": ExtResource("3_3sp3b")
-}
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_gfy6j")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/conditions/charged = false
-parameters/Tree/conditions/heal = false
-script = ExtResource("4_aimqk")
-entity = NodePath("..")
-
-[node name="Behaviour" type="Node" parent="."]
-script = ExtResource("4_55asm")
-_hpTreshold = 0.5
-
-[node name="Timer" type="Timer" parent="Behaviour" node_paths=PackedStringArray("entity")]
-wait_time = 15.0
-one_shot = true
-script = ExtResource("5_gfy6j")
-entity = NodePath("../..")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-shape = SubResource("RectangleShape2D_oe0dc")
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("7_vpcbp")
-shaderMaterial = ExtResource("2_aimqk")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="timeout" from="Behaviour/Timer" to="Behaviour" method="OnTimeout"]
diff --git a/scenes/entities/plants/cucumber.tscn b/scenes/entities/plants/cucumber.tscn
deleted file mode 100644
index 3d8d930..0000000
--- a/scenes/entities/plants/cucumber.tscn
+++ /dev/null
@@ -1,191 +0,0 @@
-[gd_scene load_steps=26 format=3 uid="uid://cjoyh54cpjla7"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_xwpd6"]
-[ext_resource type="Texture2D" uid="uid://bt76iudw2qgnv" path="res://assets/sprites/atlases/plants/cumbucer.png" id="2_ig0op"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_q31qc"]
-[ext_resource type="Script" uid="uid://dn53jvpjyg63l" path="res://scripts/entities/plants/Eyesight.cs" id="3_d45iq"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="3_q31qc"]
-[ext_resource type="Script" uid="uid://ceprqkraw3v6m" path="res://scripts/entities/plants/Shooter.cs" id="4_sckvu"]
-[ext_resource type="PackedScene" uid="uid://c1ig40gtdcb60" path="res://scenes/projectiles/cucumber_projectile_compound.tscn" id="5_sckvu"]
-[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="6_xwpd6"]
-[ext_resource type="Script" uid="uid://bdk5iqtw4xbkl" path="res://scripts/entities/plants/behaviours/PeashooterBehaviour.cs" id="7_q31qc"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="9_a66ro"]
-
-[sub_resource type="Animation" id="Animation_n1xkd"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [10]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_gogcg"]
-_data = {
-&"RESET": SubResource("Animation_n1xkd")
-}
-
-[sub_resource type="Animation" id="Animation_d45iq"]
-length = 0.833342
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
-"update": 1,
-"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-}
-tracks/1/type = "method"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Shooter")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0.5),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"Shoot"
-}]
-}
-
-[sub_resource type="Animation" id="Animation_ig0op"]
-length = 0.666675
-loop_mode = 2
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
-"update": 1,
-"values": [10, 11, 12, 13, 14]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_n1xkd"]
-_data = {
-&"attack": SubResource("Animation_d45iq"),
-&"idle": SubResource("Animation_ig0op")
-}
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_ig0op"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_d45iq"]
-animation = &"cucumber/attack"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_n1xkd"]
-animation = &"cucumber/idle"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gogcg"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ie74j"]
-advance_mode = 2
-advance_condition = &"ready"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_sckvu"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_jbggv"]
-states/cucumber_attack/node = SubResource("AnimationNodeAnimation_d45iq")
-states/cucumber_attack/position = Vector2(628, 100)
-states/cucumber_idle/node = SubResource("AnimationNodeAnimation_n1xkd")
-states/cucumber_idle/position = Vector2(374, 100)
-transitions = ["Start", "cucumber_idle", SubResource("AnimationNodeStateMachineTransition_gogcg"), "cucumber_idle", "cucumber_attack", SubResource("AnimationNodeStateMachineTransition_ie74j"), "cucumber_attack", "cucumber_idle", SubResource("AnimationNodeStateMachineTransition_sckvu")]
-graph_offset = Vector2(137, -3)
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_xwpd6"]
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_ig0op")
-nodes/TimeScale/position = Vector2(60, 140)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_jbggv")
-nodes/Tree/position = Vector2(-260, 140)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ig0op"]
-radius = 13.0
-height = 48.0
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_n1xkd"]
-size = Vector2(26, 600)
-
-[node name="Cucumber" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-material = ExtResource("2_q31qc")
-script = ExtResource("1_xwpd6")
-MaxHP = 30.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_q31qc")
-texture = ExtResource("2_ig0op")
-hframes = 10
-vframes = 2
-frame = 10
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_gogcg"),
-&"cucumber": SubResource("AnimationLibrary_n1xkd")
-}
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_xwpd6")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/conditions/ready = false
-script = ExtResource("3_q31qc")
-entity = NodePath("..")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-shape = SubResource("CapsuleShape2D_ig0op")
-
-[node name="Eysight" type="Area2D" parent="."]
-collision_layer = 4
-collision_mask = 8
-script = ExtResource("3_d45iq")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Eysight"]
-shape = SubResource("RectangleShape2D_n1xkd")
-
-[node name="Shooter" type="Marker2D" parent="." node_paths=PackedStringArray("_timer")]
-script = ExtResource("4_sckvu")
-_projectile = ExtResource("5_sckvu")
-_timer = NodePath("FireTimer")
-
-[node name="FireTimer" type="Timer" parent="Shooter" node_paths=PackedStringArray("entity")]
-wait_time = 2.5
-one_shot = true
-script = ExtResource("6_xwpd6")
-entity = NodePath("../..")
-
-[node name="Behaviour" type="Node" parent="." node_paths=PackedStringArray("_shootTimer", "_sight")]
-script = ExtResource("7_q31qc")
-_shootTimer = NodePath("../Shooter/FireTimer")
-_sight = NodePath("../Eysight")
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("9_a66ro")
-shaderMaterial = ExtResource("2_q31qc")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
diff --git a/scenes/entities/plants/cucumber.tscn7041666357.tmp b/scenes/entities/plants/cucumber.tscn7041666357.tmp
deleted file mode 100644
index 8b5d203..0000000
--- a/scenes/entities/plants/cucumber.tscn7041666357.tmp
+++ /dev/null
@@ -1,171 +0,0 @@
-[gd_scene load_steps=23 format=3 uid="uid://cjoyh54cpjla7"]
-
-[ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_65f4u"]
-[ext_resource type="Texture2D" uid="uid://bt76iudw2qgnv" path="res://assets/sprites/atlases/plants/cumbucer.png" id="2_ig0op"]
-[ext_resource type="Script" uid="uid://dn53jvpjyg63l" path="res://scripts/plants/Eyesight.cs" id="3_d45iq"]
-[ext_resource type="Script" uid="uid://ceprqkraw3v6m" path="res://scripts/plants/Shooter.cs" id="4_sckvu"]
-[ext_resource type="PackedScene" uid="uid://c1ig40gtdcb60" path="res://scenes/projectiles/cucumber_projectile.tscn" id="5_sckvu"]
-[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="6_xwpd6"]
-[ext_resource type="Script" uid="uid://bdk5iqtw4xbkl" path="res://scripts/plants/behaviours/PeashooterBehaviour.cs" id="7_q31qc"]
-
-[sub_resource type="Animation" id="Animation_n1xkd"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [10]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_gogcg"]
-_data = {
-&"RESET": SubResource("Animation_n1xkd")
-}
-
-[sub_resource type="Animation" id="Animation_ig0op"]
-length = 0.666675
-loop_mode = 2
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
-"update": 1,
-"values": [10, 11, 12, 13, 14]
-}
-
-[sub_resource type="Animation" id="Animation_d45iq"]
-length = 0.833342
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
-"update": 1,
-"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-}
-tracks/1/type = "method"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Shooter")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0.5),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"Shoot"
-}]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_n1xkd"]
-_data = {
-&"attack": SubResource("Animation_d45iq"),
-&"idle": SubResource("Animation_ig0op")
-}
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_ig0op"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_d45iq"]
-animation = &"cucumber/attack"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_n1xkd"]
-animation = &"cucumber/idle"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gogcg"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ie74j"]
-advance_mode = 2
-advance_condition = &"ready"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_sckvu"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_jbggv"]
-states/cucumber_attack/node = SubResource("AnimationNodeAnimation_d45iq")
-states/cucumber_attack/position = Vector2(628, 100)
-states/cucumber_idle/node = SubResource("AnimationNodeAnimation_n1xkd")
-states/cucumber_idle/position = Vector2(374, 100)
-transitions = ["Start", "cucumber_idle", SubResource("AnimationNodeStateMachineTransition_gogcg"), "cucumber_idle", "cucumber_attack", SubResource("AnimationNodeStateMachineTransition_ie74j"), "cucumber_attack", "cucumber_idle", SubResource("AnimationNodeStateMachineTransition_sckvu")]
-graph_offset = Vector2(137, -3)
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_xwpd6"]
-graph_offset = Vector2(-370, 72)
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_ig0op")
-nodes/TimeScale/position = Vector2(60, 140)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_jbggv")
-nodes/Tree/position = Vector2(-260, 140)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ig0op"]
-radius = 13.0
-height = 48.0
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_n1xkd"]
-size = Vector2(26, 600)
-
-[node name="Cucumber" instance=ExtResource("1_65f4u")]
-MaxHP = 30.0
-
-[node name="Sprite2D" parent="." index="0"]
-texture = ExtResource("2_ig0op")
-hframes = 10
-vframes = 2
-frame = 10
-
-[node name="AnimationPlayer" parent="." index="1"]
-libraries = {
-&"": SubResource("AnimationLibrary_gogcg"),
-&"cucumber": SubResource("AnimationLibrary_n1xkd")
-}
-
-[node name="AnimationTree" parent="." index="2"]
-tree_root = SubResource("AnimationNodeBlendTree_xwpd6")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/conditions/ready = false
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"]
-shape = SubResource("CapsuleShape2D_ig0op")
-
-[node name="Eysight" type="Area2D" parent="." index="4"]
-collision_layer = 4
-collision_mask = 8
-script = ExtResource("3_d45iq")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Eysight" index="0"]
-shape = SubResource("RectangleShape2D_n1xkd")
-
-[node name="Shooter" type="Marker2D" parent="." index="5" node_paths=PackedStringArray("_timer")]
-script = ExtResource("4_sckvu")
-_projectile = ExtResource("5_sckvu")
-_timer = NodePath("Timer")
-
-[node name="Timer" type="Timer" parent="Shooter" index="0" node_paths=PackedStringArray("entity")]
-wait_time = 1.5
-one_shot = true
-script = ExtResource("6_xwpd6")
-entity = NodePath("../..")
-
-[node name="Behaviour" type="Node" parent="." index="6" node_paths=PackedStringArray("_shootTimer", "_sight")]
-script = ExtResource("7_q31qc")
-_shootTimer = NodePath("../Shooter/Timer")
-_sight = NodePath("../Eysight")
diff --git a/scenes/entities/plants/garlic.tscn b/scenes/entities/plants/garlic.tscn
deleted file mode 100644
index 5ca32ca..0000000
--- a/scenes/entities/plants/garlic.tscn
+++ /dev/null
@@ -1,113 +0,0 @@
-[gd_scene load_steps=19 format=3 uid="uid://qq0cw8xtcoj3"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_gu3kj"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_1angc"]
-[ext_resource type="Texture2D" uid="uid://dff73m8ahamaa" path="res://assets/sprites/atlases/plants/garlic.png" id="2_w2jbi"]
-[ext_resource type="AnimationLibrary" uid="uid://cjl81f61gdlvi" path="res://assets/animations/plants/garlic.res" id="3_jkb3q"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="4_1angc"]
-[ext_resource type="Script" uid="uid://btkmd86pn828y" path="res://scripts/entities/plants/behaviours/HpBasedBehaviour.cs" id="4_bv44h"]
-[ext_resource type="Script" uid="uid://bmtukcq10m8wo" path="res://scripts/entities/plants/ReturnEffect.cs" id="5_oob20"]
-[ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://assets/effects/GarlicEffect.tres" id="6_gho1l"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="8_6iwlp"]
-
-[sub_resource type="Animation" id="Animation_k0cex"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D: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="AnimationLibrary" id="AnimationLibrary_v4l78"]
-_data = {
-&"RESET": SubResource("Animation_k0cex")
-}
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2d3xk"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_mdv0r"]
-animation = &"garlic/full_hp"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_j5xqj"]
-animation = &"garlic/half_hp"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_tlgpl"]
-animation = &"garlic/low_hp"
-
-[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_8mvpm"]
-blend_point_0/node = SubResource("AnimationNodeAnimation_mdv0r")
-blend_point_0/pos = 1.0
-blend_point_1/node = SubResource("AnimationNodeAnimation_j5xqj")
-blend_point_1/pos = 0.5
-blend_point_2/node = SubResource("AnimationNodeAnimation_tlgpl")
-blend_point_2/pos = 0.0
-min_space = 0.0
-blend_mode = 1
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_2o7sr"]
-graph_offset = Vector2(-389, 166)
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2d3xk")
-nodes/TimeScale/position = Vector2(100, 160)
-nodes/Tree/node = SubResource("AnimationNodeBlendSpace1D_8mvpm")
-nodes/Tree/position = Vector2(-160, 200)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_thlvs"]
-size = Vector2(32, 29)
-
-[node name="Garlic" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_gu3kj")
-MaxHP = 200.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_1angc")
-texture = ExtResource("2_w2jbi")
-hframes = 8
-vframes = 3
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_v4l78"),
-&"garlic": ExtResource("3_jkb3q")
-}
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_2o7sr")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/blend_position = 1.0
-script = ExtResource("4_1angc")
-entity = NodePath("..")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(1, 11.5)
-shape = SubResource("RectangleShape2D_thlvs")
-
-[node name="Behaviour" type="Node" parent="."]
-script = ExtResource("4_bv44h")
-parameters = Array[String](["parameters/Tree/blend_position"])
-
-[node name="ReturnEffect" type="Node" parent="."]
-script = ExtResource("5_oob20")
-_effectToReturn = ExtResource("6_gho1l")
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("8_6iwlp")
-shaderMaterial = ExtResource("2_1angc")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="OnHPChanged" from="." to="Behaviour" method="OnHPChanged"]
-[connection signal="OnHPChanged" from="." to="ReturnEffect" method="OnDamageRecieved"]
diff --git a/scenes/entities/plants/nerdus.tscn b/scenes/entities/plants/nerdus.tscn
deleted file mode 100644
index bb6393e..0000000
--- a/scenes/entities/plants/nerdus.tscn
+++ /dev/null
@@ -1,314 +0,0 @@
-[gd_scene load_steps=34 format=3 uid="uid://k5aj2slxar7w"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_o12iv"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_6e60l"]
-[ext_resource type="Texture2D" uid="uid://b06e8xhdy77d1" path="res://assets/sprites/atlases/plants/nerdus.png" id="2_614v4"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="3_6e60l"]
-[ext_resource type="Script" uid="uid://dcokqes5wwo3k" path="res://scripts/entities/plants/NerdusReturnAttack.cs" id="3_614v4"]
-[ext_resource type="Resource" uid="uid://dme4nvp28otq6" path="res://assets/effects/NerdusEffect.tres" id="4_ga4vy"]
-[ext_resource type="Script" uid="uid://btkmd86pn828y" path="res://scripts/entities/plants/behaviours/HpBasedBehaviour.cs" id="5_o1ggp"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="7_v7ffp"]
-
-[sub_resource type="Animation" id="Animation_ga4vy"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D: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="AnimationLibrary" id="AnimationLibrary_o1ggp"]
-_data = {
-&"RESET": SubResource("Animation_ga4vy")
-}
-
-[sub_resource type="Animation" id="Animation_v7ffp"]
-length = 0.500008
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
-"update": 1,
-"values": [21, 22, 23, 24, 25, 26]
-}
-tracks/1/type = "method"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Hurtbox")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0.416667),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"ReturnAllDamage"
-}]
-}
-
-[sub_resource type="Animation" id="Animation_6a4q1"]
-length = 0.500008
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
-"update": 1,
-"values": [35, 36, 37, 38, 39, 40]
-}
-tracks/1/type = "method"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Hurtbox")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0.416667),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"ReturnAllDamage"
-}]
-}
-
-[sub_resource type="Animation" id="Animation_rb7ob"]
-length = 0.500008
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
-"update": 1,
-"values": [28, 29, 30, 31, 32, 33]
-}
-tracks/1/type = "method"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Hurtbox")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0.416667),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"ReturnAllDamage"
-}]
-}
-
-[sub_resource type="Animation" id="Animation_yxvnw"]
-length = 1.16668
-loop_mode = 2
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667, 0.833333),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
-"update": 1,
-"values": [0, 1, 2, 3, 4, 5]
-}
-
-[sub_resource type="Animation" id="Animation_6e60l"]
-length = 1.16668
-loop_mode = 2
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667, 0.833333, 1),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
-"update": 1,
-"values": [14, 15, 16, 17, 18, 19, 20]
-}
-
-[sub_resource type="Animation" id="Animation_o12iv"]
-length = 1.16668
-loop_mode = 2
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.5, 0.666667, 0.833333, 1),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
-"update": 1,
-"values": [7, 8, 9, 10, 11, 12, 13]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_pddnl"]
-_data = {
-&"attack_full": SubResource("Animation_v7ffp"),
-&"attack_hdamage": SubResource("Animation_6a4q1"),
-&"attack_ldamage": SubResource("Animation_rb7ob"),
-&"idle_full": SubResource("Animation_yxvnw"),
-&"idle_hdamage": SubResource("Animation_6e60l"),
-&"idle_ldamage": SubResource("Animation_o12iv")
-}
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_8ui1h"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_o12iv"]
-animation = &"nerdus/attack_full"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6e60l"]
-animation = &"nerdus/attack_ldamage"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_v7ffp"]
-animation = &"nerdus/attack_hdamage"
-
-[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_614v4"]
-blend_point_0/node = SubResource("AnimationNodeAnimation_o12iv")
-blend_point_0/pos = 1.0
-blend_point_1/node = SubResource("AnimationNodeAnimation_6e60l")
-blend_point_1/pos = 0.5
-blend_point_2/node = SubResource("AnimationNodeAnimation_v7ffp")
-blend_point_2/pos = 0.0
-min_space = 0.0
-blend_mode = 1
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ga4vy"]
-animation = &"nerdus/idle_full"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_o1ggp"]
-animation = &"nerdus/idle_hdamage"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_yxvnw"]
-animation = &"nerdus/idle_ldamage"
-
-[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_o12iv"]
-blend_point_0/node = SubResource("AnimationNodeAnimation_ga4vy")
-blend_point_0/pos = 1.0
-blend_point_1/node = SubResource("AnimationNodeAnimation_o1ggp")
-blend_point_1/pos = 0.0
-blend_point_2/node = SubResource("AnimationNodeAnimation_yxvnw")
-blend_point_2/pos = 0.5
-min_space = 0.0
-blend_mode = 1
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_6e60l"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_v7ffp"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_rb7ob"]
-advance_mode = 2
-advance_expression = "get(\"triggered\")
-"
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_rb7ob"]
-states/Attack/node = SubResource("AnimationNodeBlendSpace1D_614v4")
-states/Attack/position = Vector2(558, 100)
-states/Idle/node = SubResource("AnimationNodeBlendSpace1D_o12iv")
-states/Idle/position = Vector2(337, 100)
-transitions = ["Start", "Idle", SubResource("AnimationNodeStateMachineTransition_6e60l"), "Attack", "Idle", SubResource("AnimationNodeStateMachineTransition_v7ffp"), "Idle", "Attack", SubResource("AnimationNodeStateMachineTransition_rb7ob")]
-graph_offset = Vector2(98, -52)
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_6a4q1"]
-graph_offset = Vector2(-406, 116)
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_8ui1h")
-nodes/TimeScale/position = Vector2(100, 140)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_rb7ob")
-nodes/Tree/position = Vector2(-220, 160)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_8ui1h"]
-radius = 24.0
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_ga4vy"]
-size = Vector2(73, 48)
-
-[node name="Nerdus" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_o12iv")
-MaxHP = 200.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_6e60l")
-texture = ExtResource("2_614v4")
-hframes = 7
-vframes = 6
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_o1ggp"),
-&"nerdus": SubResource("AnimationLibrary_pddnl")
-}
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_6a4q1")
-advance_expression_base_node = NodePath("../Hurtbox")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/Attack/blend_position = 1.0
-parameters/Tree/Idle/blend_position = 1.0
-script = ExtResource("3_6e60l")
-entity = NodePath("..")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(0, 3)
-shape = SubResource("CircleShape2D_8ui1h")
-
-[node name="Hurtbox" type="Area2D" parent="."]
-collision_layer = 0
-collision_mask = 8
-script = ExtResource("3_614v4")
-returnEffect = ExtResource("4_ga4vy")
-bitesToPeas = 1.6
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"]
-position = Vector2(3.5, 3)
-shape = SubResource("RectangleShape2D_ga4vy")
-
-[node name="Behaviour" type="Node" parent="."]
-script = ExtResource("5_o1ggp")
-parameters = Array[String](["parameters/Tree/Attack/blend_position", "parameters/Tree/Idle/blend_position"])
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("7_v7ffp")
-shaderMaterial = ExtResource("2_6e60l")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="OnHPChanged" from="." to="Hurtbox" method="OnHPChanged"]
-[connection signal="OnHPChanged" from="." to="Behaviour" method="OnHPChanged"]
diff --git a/scenes/entities/plants/peashooter.tscn b/scenes/entities/plants/peashooter.tscn
deleted file mode 100644
index 11ed7f7..0000000
--- a/scenes/entities/plants/peashooter.tscn
+++ /dev/null
@@ -1,149 +0,0 @@
-[gd_scene load_steps=27 format=3 uid="uid://dy41q1kxray5t"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_p4cd5"]
-[ext_resource type="Texture2D" uid="uid://cksryh4w5dbbx" path="res://assets/sprites/atlases/plants/peashooter.png" id="2_14qlx"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_p4cd5"]
-[ext_resource type="AnimationLibrary" uid="uid://bv1dl1g4dmbho" path="res://assets/animations/plants/peashooter.res" id="3_8lrhp"]
-[ext_resource type="Script" uid="uid://ceprqkraw3v6m" path="res://scripts/entities/plants/Shooter.cs" id="3_a4ew1"]
-[ext_resource type="PackedScene" uid="uid://b2hrv0aqbui7u" path="res://scenes/projectiles/pea.tscn" id="4_saxds"]
-[ext_resource type="Script" uid="uid://bdk5iqtw4xbkl" path="res://scripts/entities/plants/behaviours/PeashooterBehaviour.cs" id="5_7qiua"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="5_ceium"]
-[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="6_q58jr"]
-[ext_resource type="Script" uid="uid://dn53jvpjyg63l" path="res://scripts/entities/plants/Eyesight.cs" id="7_2bki8"]
-[ext_resource type="Script" uid="uid://hccb0aee0x0o" path="res://scripts/entities/plants/PlantEyesightLimiter.cs" id="8_nl4jc"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="9_mbbd7"]
-[ext_resource type="AudioStream" uid="uid://dsv81mvrdg3w3" path="res://assets/audio/sfx/throw_generic.tres" id="10_q58jr"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="14_dmys5"]
-
-[sub_resource type="Animation" id="Animation_a2y0j"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D: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="AnimationLibrary" id="AnimationLibrary_ipp6b"]
-_data = {
-&"RESET": SubResource("Animation_a2y0j")
-}
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_mbbd7"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_34v85"]
-animation = &"peashooter/idle"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_u4o2k"]
-animation = &"peashooter/shoot"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_70n3m"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2lwpg"]
-advance_mode = 2
-advance_condition = &"ready"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_k61yr"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_13o7y"]
-states/peashooter_idle/node = SubResource("AnimationNodeAnimation_34v85")
-states/peashooter_idle/position = Vector2(420, 92)
-states/peashooter_shoot/node = SubResource("AnimationNodeAnimation_u4o2k")
-states/peashooter_shoot/position = Vector2(674, 82)
-transitions = ["Start", "peashooter_idle", SubResource("AnimationNodeStateMachineTransition_70n3m"), "peashooter_idle", "peashooter_shoot", SubResource("AnimationNodeStateMachineTransition_2lwpg"), "peashooter_shoot", "peashooter_idle", SubResource("AnimationNodeStateMachineTransition_k61yr")]
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_q58jr"]
-graph_offset = Vector2(-518.8, 27.8)
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_mbbd7")
-nodes/TimeScale/position = Vector2(0, 120)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_13o7y")
-nodes/Tree/position = Vector2(-300, 120)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="SegmentShape2D" id="SegmentShape2D_8iovl"]
-resource_local_to_scene = true
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_r7xnh"]
-size = Vector2(20, 44)
-
-[node name="Peashooter" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_p4cd5")
-MaxHP = 30.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_p4cd5")
-texture = ExtResource("2_14qlx")
-hframes = 10
-vframes = 2
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_ipp6b"),
-&"peashooter": ExtResource("3_8lrhp")
-}
-autoplay = "peashooter/idle"
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_q58jr")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/conditions/ready = false
-script = ExtResource("5_ceium")
-entity = NodePath("..")
-
-[node name="Shooter" type="Marker2D" parent="." node_paths=PackedStringArray("_timer")]
-position = Vector2(12, -4)
-script = ExtResource("3_a4ew1")
-_projectile = ExtResource("4_saxds")
-_timer = NodePath("FireTimer")
-
-[node name="FireTimer" type="Timer" parent="Shooter" node_paths=PackedStringArray("entity")]
-wait_time = 1.5
-one_shot = true
-script = ExtResource("6_q58jr")
-entity = NodePath("../..")
-
-[node name="Behaviour" type="Node" parent="." node_paths=PackedStringArray("_shootTimer", "_sight")]
-script = ExtResource("5_7qiua")
-_shootTimer = NodePath("../Shooter/FireTimer")
-_sight = NodePath("../Eysight")
-
-[node name="Eysight" type="Area2D" parent="."]
-collision_layer = 4
-collision_mask = 8
-script = ExtResource("7_2bki8")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Eysight"]
-shape = SubResource("SegmentShape2D_8iovl")
-script = ExtResource("8_nl4jc")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(0, 5)
-shape = SubResource("RectangleShape2D_r7xnh")
-
-[node name="ChannelPlayer" type="Node" parent="."]
-script = ExtResource("9_mbbd7")
-audioStream = ExtResource("10_q58jr")
-channel = "pea_shoot"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("14_dmys5")
-shaderMaterial = ExtResource("2_p4cd5")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
diff --git a/scenes/entities/plants/potato_mine.tscn b/scenes/entities/plants/potato_mine.tscn
deleted file mode 100644
index 6c08e76..0000000
--- a/scenes/entities/plants/potato_mine.tscn
+++ /dev/null
@@ -1,175 +0,0 @@
-[gd_scene load_steps=30 format=3 uid="uid://b5x35v3w2u8dx"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_a0d1l"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_a0d1l"]
-[ext_resource type="Texture2D" uid="uid://c77o6ba0mw7a3" path="res://assets/sprites/atlases/plants/potato_mine.png" id="2_sneas"]
-[ext_resource type="Script" uid="uid://bhl6o2m3fn4xg" path="res://scripts/entities/plants/ExplosionComponent.cs" id="3_2hd5y"]
-[ext_resource type="AnimationLibrary" uid="uid://bjlbdvr6f0r7e" path="res://assets/animations/plants/potato_mine.res" id="3_7tqmj"]
-[ext_resource type="Script" uid="uid://c7qfh4py0uulo" path="res://scripts/entities/plants/behaviours/PotatomineBehaviour.cs" id="4_twx65"]
-[ext_resource type="PackedScene" uid="uid://ckanq33rao1ur" path="res://scenes/particles/potato_explosion.tscn" id="5_px4r0"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="5_v27q1"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="7_b1j2f"]
-[ext_resource type="AudioStream" uid="uid://dltjtpyfr1so0" path="res://assets/audio/sfx/potato_mine.mp3" id="8_3vqdc"]
-[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="8_824aq"]
-[ext_resource type="AudioStream" uid="uid://b27om1bw1x04e" path="res://assets/audio/sfx/dirt_rise.mp3" id="9_3vqdc"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="13_cfvur"]
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_3vqdc"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6uutc"]
-animation = &"potato_mine/explode"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_qdgub"]
-animation = &"potato_mine/idle_primed"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_cohta"]
-animation = &"potato_mine/idle_unprimed"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_j42h1"]
-animation = &"potato_mine/prime"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ttnxb"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8nvnf"]
-advance_mode = 2
-advance_condition = &"primed"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_q0arb"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_dikhn"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_lqd1d"]
-advance_mode = 2
-advance_condition = &"explode"
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_nfn7b"]
-states/End/position = Vector2(1104, 75.168)
-states/Start/position = Vector2(46, 130)
-states/potato_mine_explode/node = SubResource("AnimationNodeAnimation_6uutc")
-states/potato_mine_explode/position = Vector2(934.656, 75.168)
-states/potato_mine_idle_primed/node = SubResource("AnimationNodeAnimation_qdgub")
-states/potato_mine_idle_primed/position = Vector2(703.656, 75.168)
-states/potato_mine_idle_unprimed/node = SubResource("AnimationNodeAnimation_cohta")
-states/potato_mine_idle_unprimed/position = Vector2(271.656, 75.168)
-states/potato_mine_prime/node = SubResource("AnimationNodeAnimation_j42h1")
-states/potato_mine_prime/position = Vector2(490.656, 75.168)
-transitions = ["Start", "potato_mine_idle_unprimed", SubResource("AnimationNodeStateMachineTransition_ttnxb"), "potato_mine_idle_unprimed", "potato_mine_prime", SubResource("AnimationNodeStateMachineTransition_8nvnf"), "potato_mine_explode", "End", SubResource("AnimationNodeStateMachineTransition_q0arb"), "potato_mine_prime", "potato_mine_idle_primed", SubResource("AnimationNodeStateMachineTransition_dikhn"), "potato_mine_idle_primed", "potato_mine_explode", SubResource("AnimationNodeStateMachineTransition_lqd1d")]
-graph_offset = Vector2(-16.3438, -67.832)
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_824aq"]
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_3vqdc")
-nodes/TimeScale/position = Vector2(100, 120)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_nfn7b")
-nodes/Tree/position = Vector2(-260, 140)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_824aq"]
-radius = 17.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_wvns6"]
-radius = 25.0
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_qfqko"]
-size = Vector2(15, 27)
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_ti2g4"]
-size = Vector2(22, 19)
-
-[node name="Potato mine" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_a0d1l")
-MaxHP = 20.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_a0d1l")
-texture = ExtResource("2_sneas")
-hframes = 7
-vframes = 4
-frame = 7
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"potato_mine": ExtResource("3_7tqmj")
-}
-autoplay = "idle_unprimed"
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_824aq")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/conditions/explode = false
-parameters/Tree/conditions/primed = false
-script = ExtResource("5_v27q1")
-entity = NodePath("..")
-
-[node name="Detectionbox" type="Area2D" parent="."]
-collision_layer = 0
-collision_mask = 8
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Detectionbox"]
-position = Vector2(0, 9)
-shape = SubResource("CircleShape2D_824aq")
-
-[node name="ExplosionBox" type="Area2D" parent="."]
-collision_layer = 0
-collision_mask = 8
-script = ExtResource("3_2hd5y")
-damage = 6000
-particles = ExtResource("5_px4r0")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="ExplosionBox"]
-position = Vector2(0, 9)
-shape = SubResource("CircleShape2D_wvns6")
-
-[node name="ExplosionPlayer" type="Node" parent="ExplosionBox"]
-script = ExtResource("7_b1j2f")
-audioStream = ExtResource("8_3vqdc")
-channel = "explosion"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="PrimeTimer" type="Timer" parent="." node_paths=PackedStringArray("entity")]
-wait_time = 15.0
-one_shot = true
-autostart = true
-script = ExtResource("8_824aq")
-entity = NodePath("..")
-
-[node name="Behaviour" type="Node" parent="." node_paths=PackedStringArray("_hitbox", "detectionBox", "_unprimedShape", "_primedShape")]
-script = ExtResource("4_twx65")
-_hitbox = NodePath("../Hitbox")
-detectionBox = NodePath("../Detectionbox")
-_unprimedShape = NodePath("../Hitbox/Unprimed")
-_primedShape = NodePath("../Hitbox/Primed")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="Unprimed" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(-0.5, 14.5)
-shape = SubResource("RectangleShape2D_qfqko")
-
-[node name="Primed" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(0, 16.5)
-shape = SubResource("RectangleShape2D_ti2g4")
-disabled = true
-
-[node name="ChannelPlayer" type="Node" parent="."]
-script = ExtResource("7_b1j2f")
-audioStream = ExtResource("9_3vqdc")
-channel = "plant_rise"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("13_cfvur")
-shaderMaterial = ExtResource("2_a0d1l")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="area_entered" from="Detectionbox" to="Behaviour" method="OnAreaEntered"]
-[connection signal="timeout" from="PrimeTimer" to="Behaviour" method="Prime"]
diff --git a/scenes/entities/plants/repeater.tscn b/scenes/entities/plants/repeater.tscn
deleted file mode 100644
index 7a5fba9..0000000
--- a/scenes/entities/plants/repeater.tscn
+++ /dev/null
@@ -1,149 +0,0 @@
-[gd_scene load_steps=27 format=3 uid="uid://bb4ya5qx224ca"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_22an6"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_tut6f"]
-[ext_resource type="Texture2D" uid="uid://cksryh4w5dbbx" path="res://assets/sprites/atlases/plants/peashooter.png" id="3_8aoci"]
-[ext_resource type="AnimationLibrary" uid="uid://bv1dl1g4dmbho" path="res://assets/animations/plants/peashooter.res" id="4_rdf0i"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="5_dwhke"]
-[ext_resource type="Script" uid="uid://ceprqkraw3v6m" path="res://scripts/entities/plants/Shooter.cs" id="6_f5jji"]
-[ext_resource type="PackedScene" uid="uid://b45wmmcie6yeg" path="res://scenes/projectiles/repeater_projectile.tscn" id="7_22an6"]
-[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="8_w0eom"]
-[ext_resource type="Script" uid="uid://bdk5iqtw4xbkl" path="res://scripts/entities/plants/behaviours/PeashooterBehaviour.cs" id="9_cqtdb"]
-[ext_resource type="Script" uid="uid://dn53jvpjyg63l" path="res://scripts/entities/plants/Eyesight.cs" id="10_bi2sw"]
-[ext_resource type="Script" uid="uid://hccb0aee0x0o" path="res://scripts/entities/plants/PlantEyesightLimiter.cs" id="11_4nqum"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="12_7n1bh"]
-[ext_resource type="AudioStream" uid="uid://dsv81mvrdg3w3" path="res://assets/audio/sfx/throw_generic.tres" id="13_hxb23"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="14_aq7hn"]
-
-[sub_resource type="Animation" id="Animation_a2y0j"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D: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="AnimationLibrary" id="AnimationLibrary_ipp6b"]
-_data = {
-&"RESET": SubResource("Animation_a2y0j")
-}
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_mbbd7"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_34v85"]
-animation = &"peashooter/idle"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_u4o2k"]
-animation = &"peashooter/shoot"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_70n3m"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2lwpg"]
-advance_mode = 2
-advance_condition = &"ready"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_k61yr"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_13o7y"]
-states/peashooter_idle/node = SubResource("AnimationNodeAnimation_34v85")
-states/peashooter_idle/position = Vector2(420, 92)
-states/peashooter_shoot/node = SubResource("AnimationNodeAnimation_u4o2k")
-states/peashooter_shoot/position = Vector2(674, 82)
-transitions = ["Start", "peashooter_idle", SubResource("AnimationNodeStateMachineTransition_70n3m"), "peashooter_idle", "peashooter_shoot", SubResource("AnimationNodeStateMachineTransition_2lwpg"), "peashooter_shoot", "peashooter_idle", SubResource("AnimationNodeStateMachineTransition_k61yr")]
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_q58jr"]
-graph_offset = Vector2(-518.8, 27.8)
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_mbbd7")
-nodes/TimeScale/position = Vector2(0, 120)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_13o7y")
-nodes/Tree/position = Vector2(-300, 120)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="SegmentShape2D" id="SegmentShape2D_8iovl"]
-resource_local_to_scene = true
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_r7xnh"]
-size = Vector2(20, 44)
-
-[node name="Repeater" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_22an6")
-MaxHP = 30.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_tut6f")
-texture = ExtResource("3_8aoci")
-hframes = 10
-vframes = 2
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_ipp6b"),
-&"peashooter": ExtResource("4_rdf0i")
-}
-autoplay = "peashooter/idle"
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_q58jr")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/conditions/ready = false
-script = ExtResource("5_dwhke")
-entity = NodePath("..")
-
-[node name="Shooter" type="Marker2D" parent="." node_paths=PackedStringArray("_timer")]
-position = Vector2(12, -4)
-script = ExtResource("6_f5jji")
-_projectile = ExtResource("7_22an6")
-_timer = NodePath("FireTimer")
-
-[node name="FireTimer" type="Timer" parent="Shooter" node_paths=PackedStringArray("entity")]
-wait_time = 1.5
-one_shot = true
-script = ExtResource("8_w0eom")
-entity = NodePath("../..")
-
-[node name="Behaviour" type="Node" parent="." node_paths=PackedStringArray("_shootTimer", "_sight")]
-script = ExtResource("9_cqtdb")
-_shootTimer = NodePath("../Shooter/FireTimer")
-_sight = NodePath("../Eysight")
-
-[node name="Eysight" type="Area2D" parent="."]
-collision_layer = 4
-collision_mask = 8
-script = ExtResource("10_bi2sw")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Eysight"]
-shape = SubResource("SegmentShape2D_8iovl")
-script = ExtResource("11_4nqum")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(0, 5)
-shape = SubResource("RectangleShape2D_r7xnh")
-
-[node name="ChannelPlayer" type="Node" parent="."]
-script = ExtResource("12_7n1bh")
-audioStream = ExtResource("13_hxb23")
-channel = "pea_shoot"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("14_aq7hn")
-shaderMaterial = ExtResource("2_tut6f")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
diff --git a/scenes/entities/plants/snipach.tscn b/scenes/entities/plants/snipach.tscn
deleted file mode 100644
index f3387cd..0000000
--- a/scenes/entities/plants/snipach.tscn
+++ /dev/null
@@ -1,94 +0,0 @@
-[gd_scene load_steps=14 format=3 uid="uid://bmk41n57j7hgx"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_moq7q"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_moq7q"]
-[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="3_ktw4a"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="4_4ermv"]
-[ext_resource type="Script" uid="uid://cu63aiowp5bqd" path="res://scripts/entities/plants/DragAction.cs" id="4_5jowj"]
-[ext_resource type="Script" uid="uid://co7ttejdo2qot" path="res://scripts/entities/plants/AreaAttack.cs" id="5_twsk4"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="6_4uf0y"]
-[ext_resource type="Script" uid="uid://csgksiyma0h4t" path="res://scripts/entities/plants/behaviours/SnipachBehaviour.cs" id="6_twsk4"]
-[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="7_3hyni"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_f4wwx"]
-atlas = ExtResource("3_ktw4a")
-region = Rect2(525, 241, 79, 72)
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_ktw4a"]
-size = Vector2(39.5, 45)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_3hyni"]
-atlas = ExtResource("3_ktw4a")
-region = Rect2(592, 64, 50, 60)
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_5jowj"]
-size = Vector2(40, 36)
-
-[node name="Snipach" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_moq7q")
-MaxHP = 30.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_moq7q")
-position = Vector2(8, -16)
-texture = SubResource("AtlasTexture_f4wwx")
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-anim_player = NodePath("../AnimationPlayer")
-script = ExtResource("4_4ermv")
-entity = NodePath("..")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(-0.75, -2.5)
-shape = SubResource("RectangleShape2D_ktw4a")
-
-[node name="DragAction" type="Node" parent="Hitbox"]
-script = ExtResource("4_5jowj")
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("6_4uf0y")
-shaderMaterial = ExtResource("2_moq7q")
-
-[node name="ShootBox" type="Area2D" parent="."]
-visible = false
-collision_layer = 32
-collision_mask = 24
-input_pickable = false
-script = ExtResource("5_twsk4")
-_damage = 400
-
-[node name="Sprite2D" type="Sprite2D" parent="ShootBox"]
-texture = SubResource("AtlasTexture_3hyni")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="ShootBox"]
-shape = SubResource("RectangleShape2D_5jowj")
-
-[node name="Behaviour" type="Node" parent="." node_paths=PackedStringArray("attackBox", "timer", "guardTimer")]
-script = ExtResource("6_twsk4")
-attackBox = NodePath("../ShootBox")
-timer = NodePath("Timer")
-guardTimer = NodePath("GuardTimer")
-
-[node name="Timer" type="Timer" parent="Behaviour" node_paths=PackedStringArray("entity")]
-wait_time = 15.0
-one_shot = true
-script = ExtResource("7_3hyni")
-entity = NodePath("../..")
-
-[node name="GuardTimer" type="Timer" parent="Behaviour"]
-wait_time = 0.2
-one_shot = true
-autostart = true
-ignore_time_scale = true
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="DragBegin" from="Hitbox/DragAction" to="Behaviour" method="OnDragBegin"]
-[connection signal="DragEnd" from="Hitbox/DragAction" to="Behaviour" method="OnDragEnd"]
diff --git a/scenes/entities/plants/snowpea.tscn b/scenes/entities/plants/snowpea.tscn
deleted file mode 100644
index 45fc12f..0000000
--- a/scenes/entities/plants/snowpea.tscn
+++ /dev/null
@@ -1,149 +0,0 @@
-[gd_scene load_steps=27 format=3 uid="uid://b7innrovtmf5u"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_klsgb"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_klsgb"]
-[ext_resource type="Texture2D" uid="uid://cu0651pvvkmvm" path="res://assets/sprites/atlases/plants/snow_pea.png" id="2_ytrm0"]
-[ext_resource type="AnimationLibrary" uid="uid://cke5wmmrvevbs" path="res://assets/animations/plants/snowpea.res" id="4_jvx5y"]
-[ext_resource type="PackedScene" uid="uid://domeukw4ucmyr" path="res://scenes/projectiles/snowpea_projectile.tscn" id="5_bv86m"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="5_fbp2l"]
-[ext_resource type="Script" uid="uid://ceprqkraw3v6m" path="res://scripts/entities/plants/Shooter.cs" id="6_br16s"]
-[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="8_bjd0y"]
-[ext_resource type="Script" uid="uid://bdk5iqtw4xbkl" path="res://scripts/entities/plants/behaviours/PeashooterBehaviour.cs" id="9_hg126"]
-[ext_resource type="Script" uid="uid://dn53jvpjyg63l" path="res://scripts/entities/plants/Eyesight.cs" id="10_noqdw"]
-[ext_resource type="Script" uid="uid://hccb0aee0x0o" path="res://scripts/entities/plants/PlantEyesightLimiter.cs" id="11_terbf"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="12_dvoqf"]
-[ext_resource type="AudioStream" uid="uid://dsv81mvrdg3w3" path="res://assets/audio/sfx/throw_generic.tres" id="13_o05jr"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="14_oijop"]
-
-[sub_resource type="Animation" id="Animation_pephc"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D: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="AnimationLibrary" id="AnimationLibrary_djmlc"]
-_data = {
-&"RESET": SubResource("Animation_pephc")
-}
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_mbbd7"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dv2ad"]
-animation = &"snowpea/idle"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ptach"]
-animation = &"snowpea/shoot"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8spty"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_lshcr"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ihul0"]
-advance_mode = 2
-advance_condition = &"ready"
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_qdmro"]
-states/snowpea_idle/node = SubResource("AnimationNodeAnimation_dv2ad")
-states/snowpea_idle/position = Vector2(408, 100)
-states/snowpea_shoot/node = SubResource("AnimationNodeAnimation_ptach")
-states/snowpea_shoot/position = Vector2(682, 100)
-transitions = ["snowpea_shoot", "snowpea_idle", SubResource("AnimationNodeStateMachineTransition_8spty"), "Start", "snowpea_idle", SubResource("AnimationNodeStateMachineTransition_lshcr"), "snowpea_idle", "snowpea_shoot", SubResource("AnimationNodeStateMachineTransition_ihul0")]
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_3oyhk"]
-graph_offset = Vector2(-518.8, 27.8)
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_mbbd7")
-nodes/TimeScale/position = Vector2(0, 120)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_qdmro")
-nodes/Tree/position = Vector2(-320, 100)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="SegmentShape2D" id="SegmentShape2D_3oyhk"]
-resource_local_to_scene = true
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_r7xnh"]
-size = Vector2(20, 44)
-
-[node name="Snowpea" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_klsgb")
-MaxHP = 30.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_klsgb")
-texture = ExtResource("2_ytrm0")
-hframes = 10
-vframes = 2
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_djmlc"),
-&"snowpea": ExtResource("4_jvx5y")
-}
-autoplay = "snowpea/idle"
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_3oyhk")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/conditions/ready = false
-script = ExtResource("5_fbp2l")
-entity = NodePath("..")
-
-[node name="Shooter" type="Marker2D" parent="." node_paths=PackedStringArray("_timer")]
-position = Vector2(12, -4)
-script = ExtResource("6_br16s")
-_projectile = ExtResource("5_bv86m")
-_timer = NodePath("FireTimer")
-
-[node name="FireTimer" type="Timer" parent="Shooter" node_paths=PackedStringArray("entity")]
-wait_time = 1.5
-one_shot = true
-script = ExtResource("8_bjd0y")
-entity = NodePath("../..")
-
-[node name="Behaviour" type="Node" parent="." node_paths=PackedStringArray("_shootTimer", "_sight")]
-script = ExtResource("9_hg126")
-_shootTimer = NodePath("../Shooter/FireTimer")
-_sight = NodePath("../Eysight")
-
-[node name="Eysight" type="Area2D" parent="."]
-collision_layer = 4
-collision_mask = 8
-script = ExtResource("10_noqdw")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Eysight"]
-shape = SubResource("SegmentShape2D_3oyhk")
-script = ExtResource("11_terbf")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(0, 5)
-shape = SubResource("RectangleShape2D_r7xnh")
-
-[node name="ChannelPlayer" type="Node" parent="."]
-script = ExtResource("12_dvoqf")
-audioStream = ExtResource("13_o05jr")
-channel = "pea_shoot"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("14_oijop")
-shaderMaterial = ExtResource("2_klsgb")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
diff --git a/scenes/entities/plants/spikeweed.tscn b/scenes/entities/plants/spikeweed.tscn
deleted file mode 100644
index b98941b..0000000
--- a/scenes/entities/plants/spikeweed.tscn
+++ /dev/null
@@ -1,92 +0,0 @@
-[gd_scene load_steps=16 format=3 uid="uid://bdhod5c6o53ha"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_kd62n"]
-[ext_resource type="Texture2D" uid="uid://coafh3mjharxo" path="res://assets/sprites/atlases/plants/spikeweed.png" id="2_ffrjr"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_kd62n"]
-[ext_resource type="Script" uid="uid://co7ttejdo2qot" path="res://scripts/entities/plants/AreaAttack.cs" id="3_hqtbm"]
-[ext_resource type="AnimationLibrary" uid="uid://cen6ku4y01dyg" path="res://assets/animations/plants/spikeweed.res" id="3_nwshn"]
-[ext_resource type="Script" uid="uid://dqquodxaijmem" path="res://scripts/entities/plants/behaviours/SpikeweedBehaviour.cs" id="3_uhpn7"]
-[ext_resource type="Script" uid="uid://dw7v3s4kbu7ma" path="res://scripts/entities/AnimationStatistics.cs" id="5_yfuxj"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="6_sqcsr"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="9_lq7xg"]
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_jleqa"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_lmfqg"]
-animation = &"spikeweed/idle"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ccr6v"]
-animation = &"spikeweed/attack"
-
-[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_1y7y3"]
-blend_point_0/node = SubResource("AnimationNodeAnimation_lmfqg")
-blend_point_0/pos = 0.0
-blend_point_1/node = SubResource("AnimationNodeAnimation_ccr6v")
-blend_point_1/pos = 1.0
-min_space = 0.0
-snap = 1.0
-value_label = "attack"
-blend_mode = 1
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_63okc"]
-graph_offset = Vector2(-318, 108)
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_jleqa")
-nodes/TimeScale/position = Vector2(140, 140)
-nodes/Tree/node = SubResource("AnimationNodeBlendSpace1D_1y7y3")
-nodes/Tree/position = Vector2(-120, 180)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_1di76"]
-size = Vector2(49, 38)
-
-[node name="Spikeweed" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_kd62n")
-MaxHP = 30.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_kd62n")
-texture = ExtResource("2_ffrjr")
-hframes = 10
-vframes = 2
-frame = 1
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"spikeweed": ExtResource("3_nwshn")
-}
-
-[node name="DPSStatistics" type="Node" parent="AnimationPlayer"]
-script = ExtResource("5_yfuxj")
-animationName = "spikeweed/attack"
-trackToFind = "Hitbox"
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_63okc")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/blend_position = 0
-script = ExtResource("6_sqcsr")
-entity = NodePath("..")
-
-[node name="Behaviour" type="Node" parent="."]
-script = ExtResource("3_uhpn7")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 4
-collision_mask = 8
-script = ExtResource("3_hqtbm")
-_damage = 6
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(0.5, 9)
-shape = SubResource("RectangleShape2D_1di76")
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("9_lq7xg")
-shaderMaterial = ExtResource("2_kd62n")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="area_entered" from="Hitbox" to="Behaviour" method="OnHitboxEntered"]
-[connection signal="area_exited" from="Hitbox" to="Behaviour" method="OnHitboxExited"]
diff --git a/scenes/entities/plants/sunflower.tscn b/scenes/entities/plants/sunflower.tscn
deleted file mode 100644
index 3d6d1b8..0000000
--- a/scenes/entities/plants/sunflower.tscn
+++ /dev/null
@@ -1,133 +0,0 @@
-[gd_scene load_steps=22 format=3 uid="uid://bg7lomiorxo2c"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_yyn2e"]
-[ext_resource type="Texture2D" uid="uid://b3tuidu8dag8u" path="res://assets/sprites/atlases/plants/sunflower.png" id="2_fwcda"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_yyn2e"]
-[ext_resource type="AnimationLibrary" uid="uid://yjytiuj4u7oh" path="res://assets/animations/plants/sunflower.res" id="3_btsik"]
-[ext_resource type="Script" uid="uid://b71gebny84s81" path="res://scripts/entities/plants/PlantSunSpawner.cs" id="3_te0pl"]
-[ext_resource type="PackedScene" uid="uid://bpekho7leatr5" path="res://scenes/sun.tscn" id="4_b8hls"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="5_7omaw"]
-[ext_resource type="Script" uid="uid://bth7gah4tn7uj" path="res://scripts/entities/plants/behaviours/SunflowerBehaviour.cs" id="5_26je0"]
-[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="7_rlkb7"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="10_w3e3c"]
-
-[sub_resource type="Animation" id="Animation_bfx6v"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("AnimationTree:parameters/Tree/conditions/produce")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_ek2al"]
-_data = {
-&"RESET": SubResource("Animation_bfx6v")
-}
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_811ah"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_lkpmx"]
-animation = &"sunflower/idle"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_hc6hn"]
-animation = &"sunflower/produce"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_26fia"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_d2akw"]
-advance_mode = 2
-advance_condition = &"produce"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_sww40"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_enpal"]
-states/sunflower_idle/node = SubResource("AnimationNodeAnimation_lkpmx")
-states/sunflower_idle/position = Vector2(371, 100)
-states/sunflower_produce/node = SubResource("AnimationNodeAnimation_hc6hn")
-states/sunflower_produce/position = Vector2(624, 99)
-transitions = ["Start", "sunflower_idle", SubResource("AnimationNodeStateMachineTransition_26fia"), "sunflower_idle", "sunflower_produce", SubResource("AnimationNodeStateMachineTransition_d2akw"), "sunflower_produce", "sunflower_idle", SubResource("AnimationNodeStateMachineTransition_sww40")]
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_rlkb7"]
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_811ah")
-nodes/TimeScale/position = Vector2(100, 140)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_enpal")
-nodes/Tree/position = Vector2(-160, 180)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_4xs4g"]
-size = Vector2(26, 48)
-
-[node name="Sunflower" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_yyn2e")
-MaxHP = 30.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_yyn2e")
-texture = ExtResource("2_fwcda")
-hframes = 9
-vframes = 2
-frame = 4
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_ek2al"),
-&"sunflower": ExtResource("3_btsik")
-}
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_rlkb7")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/conditions/produce = false
-script = ExtResource("5_7omaw")
-entity = NodePath("..")
-
-[node name="PlantSunSpawner" type="Node2D" parent="."]
-position = Vector2(-2, 0)
-script = ExtResource("3_te0pl")
-_sunScene = ExtResource("4_b8hls")
-_amountPerSun = 25
-
-[node name="Behaviour" type="Node" parent="."]
-script = ExtResource("5_26je0")
-
-[node name="Timer" type="Timer" parent="Behaviour" node_paths=PackedStringArray("entity")]
-wait_time = 24.25
-script = ExtResource("7_rlkb7")
-entity = NodePath("../..")
-
-[node name="StartTimer" type="Timer" parent="Behaviour" node_paths=PackedStringArray("entity")]
-wait_time = 12.0
-one_shot = true
-autostart = true
-script = ExtResource("7_rlkb7")
-entity = NodePath("../..")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(0, 4)
-shape = SubResource("RectangleShape2D_4xs4g")
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("10_w3e3c")
-shaderMaterial = ExtResource("2_yyn2e")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="timeout" from="Behaviour/Timer" to="Behaviour" method="Timeout"]
-[connection signal="timeout" from="Behaviour/StartTimer" to="Behaviour" method="Timeout"]
-[connection signal="timeout" from="Behaviour/StartTimer" to="Behaviour/Timer" method="start"]
diff --git a/scenes/entities/plants/threepeater.tscn b/scenes/entities/plants/threepeater.tscn
deleted file mode 100644
index 73e6100..0000000
--- a/scenes/entities/plants/threepeater.tscn
+++ /dev/null
@@ -1,231 +0,0 @@
-[gd_scene load_steps=30 format=3 uid="uid://eegv1qihfv2q"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_833fu"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_833fu"]
-[ext_resource type="Script" uid="uid://djpc0kvagpadv" path="res://scripts/entities/plants/ThreepeaterShooter.cs" id="2_ieami"]
-[ext_resource type="Texture2D" uid="uid://dyfa4462hu3w1" path="res://assets/sprites/atlases/plants/threepeater.png" id="2_j7h7q"]
-[ext_resource type="Script" uid="uid://hccb0aee0x0o" path="res://scripts/entities/plants/PlantEyesightLimiter.cs" id="3_dqn6w"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="4_ht2a0"]
-[ext_resource type="PackedScene" uid="uid://b2hrv0aqbui7u" path="res://scenes/projectiles/pea.tscn" id="6_kscbk"]
-[ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="7_anbbx"]
-[ext_resource type="Script" uid="uid://bdk5iqtw4xbkl" path="res://scripts/entities/plants/behaviours/PeashooterBehaviour.cs" id="8_pp80j"]
-[ext_resource type="Script" uid="uid://dn53jvpjyg63l" path="res://scripts/entities/plants/Eyesight.cs" id="9_salpp"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="11_13f0q"]
-[ext_resource type="AudioStream" uid="uid://dsv81mvrdg3w3" path="res://assets/audio/sfx/throw_generic.tres" id="12_4a4xw"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="13_otw6n"]
-
-[sub_resource type="Animation" id="Animation_a2y0j"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D: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="AnimationLibrary" id="AnimationLibrary_ipp6b"]
-_data = {
-&"RESET": SubResource("Animation_a2y0j")
-}
-
-[sub_resource type="Animation" id="Animation_pqbws"]
-resource_name = "idle"
-length = 0.500008
-loop_mode = 2
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
-"update": 1,
-"values": [13, 14, 15, 16, 17, 18]
-}
-
-[sub_resource type="Animation" id="Animation_7kfrv"]
-resource_name = "shoot"
-length = 1.58334
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75, 0.833333, 0.916667, 1, 1.08333, 1.16667, 1.25, 1.33333, 1.41667, 1.5),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
-"update": 1,
-"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
-}
-tracks/1/type = "method"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Shooter")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0.75),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"Shoot"
-}]
-}
-tracks/2/type = "method"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("ChannelPlayer")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0.75),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"Play"
-}]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_o2obw"]
-_data = {
-&"idle": SubResource("Animation_pqbws"),
-&"shoot": SubResource("Animation_7kfrv")
-}
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_mbbd7"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_j7h7q"]
-animation = &"threepeater/idle"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_pqbws"]
-animation = &"threepeater/shoot"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7kfrv"]
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_o2obw"]
-advance_mode = 2
-advance_condition = &"ready"
-
-[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_wiys2"]
-switch_mode = 2
-advance_mode = 2
-
-[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_wiys2"]
-states/threepeater_idle/node = SubResource("AnimationNodeAnimation_j7h7q")
-states/threepeater_idle/position = Vector2(404, 100)
-states/threepeater_shoot/node = SubResource("AnimationNodeAnimation_pqbws")
-states/threepeater_shoot/position = Vector2(633, 91)
-transitions = ["Start", "threepeater_idle", SubResource("AnimationNodeStateMachineTransition_7kfrv"), "threepeater_idle", "threepeater_shoot", SubResource("AnimationNodeStateMachineTransition_o2obw"), "threepeater_shoot", "threepeater_idle", SubResource("AnimationNodeStateMachineTransition_wiys2")]
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_j7h7q"]
-graph_offset = Vector2(-518.8, 27.8)
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_mbbd7")
-nodes/TimeScale/position = Vector2(0, 120)
-nodes/Tree/node = SubResource("AnimationNodeStateMachine_wiys2")
-nodes/Tree/position = Vector2(-320, 100)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="SegmentShape2D" id="SegmentShape2D_j7h7q"]
-resource_local_to_scene = true
-
-[sub_resource type="SegmentShape2D" id="SegmentShape2D_yb26d"]
-resource_local_to_scene = true
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_r7xnh"]
-size = Vector2(20, 44)
-
-[node name="Threepeater" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_833fu")
-MaxHP = 30.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_833fu")
-position = Vector2(6, -13)
-texture = ExtResource("2_j7h7q")
-hframes = 13
-vframes = 2
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_ipp6b"),
-&"threepeater": SubResource("AnimationLibrary_o2obw")
-}
-autoplay = "peashooter/idle"
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_j7h7q")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/conditions/ready = false
-script = ExtResource("4_ht2a0")
-entity = NodePath("..")
-
-[node name="Shooter" type="Marker2D" parent="." node_paths=PackedStringArray("_timer")]
-position = Vector2(20, -9)
-script = ExtResource("2_ieami")
-_projectile = ExtResource("6_kscbk")
-_timer = NodePath("FireTimer")
-
-[node name="FireTimer" type="Timer" parent="Shooter" node_paths=PackedStringArray("entity")]
-wait_time = 1.5
-one_shot = true
-script = ExtResource("7_anbbx")
-entity = NodePath("../..")
-
-[node name="Behaviour" type="Node" parent="." node_paths=PackedStringArray("_shootTimer", "_sight")]
-script = ExtResource("8_pp80j")
-_shootTimer = NodePath("../Shooter/FireTimer")
-_sight = NodePath("../Eysight")
-
-[node name="Eysight" type="Area2D" parent="."]
-collision_layer = 4
-collision_mask = 8
-script = ExtResource("9_salpp")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Eysight"]
-shape = SubResource("SegmentShape2D_j7h7q")
-script = ExtResource("3_dqn6w")
-
-[node name="CollisionShape2D2" type="CollisionShape2D" parent="Eysight"]
-position = Vector2(0, 60)
-shape = SubResource("SegmentShape2D_yb26d")
-script = ExtResource("3_dqn6w")
-
-[node name="CollisionShape2D3" type="CollisionShape2D" parent="Eysight"]
-position = Vector2(0, -60)
-shape = SubResource("SegmentShape2D_yb26d")
-script = ExtResource("3_dqn6w")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(0, 5)
-shape = SubResource("RectangleShape2D_r7xnh")
-
-[node name="ChannelPlayer" type="Node" parent="."]
-script = ExtResource("11_13f0q")
-audioStream = ExtResource("12_4a4xw")
-channel = "pea_shoot"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("13_otw6n")
-shaderMaterial = ExtResource("2_833fu")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
diff --git a/scenes/entities/plants/wallnut.tscn b/scenes/entities/plants/wallnut.tscn
deleted file mode 100644
index 86fc9ed..0000000
--- a/scenes/entities/plants/wallnut.tscn
+++ /dev/null
@@ -1,86 +0,0 @@
-[gd_scene load_steps=15 format=3 uid="uid://bq7imkpr2yqyr"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_mnh2m"]
-[ext_resource type="Material" uid="uid://cn7ac4meka1hc" path="res://assets/GenericFlashMaterial.tres" id="2_mnh2m"]
-[ext_resource type="Texture2D" uid="uid://dstqh1wc5dvmo" path="res://assets/sprites/atlases/plants/wallnut.png" id="2_o5tda"]
-[ext_resource type="AnimationLibrary" uid="uid://0bdesb8j2mbo" path="res://assets/animations/plants/wallnut.res" id="3_xl65q"]
-[ext_resource type="Script" uid="uid://btkmd86pn828y" path="res://scripts/entities/plants/behaviours/HpBasedBehaviour.cs" id="4_cjtyy"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="5_2hmhw"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="7_frxj2"]
-
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_y3tlf"]
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ds5ry"]
-animation = &"wallnut/idle_full"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_frsxy"]
-animation = &"wallnut/idle_mid"
-
-[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7avgo"]
-animation = &"wallnut/idle_low"
-
-[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_nij8v"]
-blend_point_0/node = SubResource("AnimationNodeAnimation_ds5ry")
-blend_point_0/pos = 1.0
-blend_point_1/node = SubResource("AnimationNodeAnimation_frsxy")
-blend_point_1/pos = 0.5
-blend_point_2/node = SubResource("AnimationNodeAnimation_7avgo")
-blend_point_2/pos = 0.0
-min_space = 0.0
-blend_mode = 1
-
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_bi7an"]
-graph_offset = Vector2(-338.2, 175.4)
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_y3tlf")
-nodes/TimeScale/position = Vector2(60, 140)
-nodes/Tree/node = SubResource("AnimationNodeBlendSpace1D_nij8v")
-nodes/Tree/position = Vector2(-180, 180)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_khltr"]
-size = Vector2(33, 46)
-
-[node name="Wallnut" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_mnh2m")
-MaxHP = 600.0
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-material = ExtResource("2_mnh2m")
-texture = ExtResource("2_o5tda")
-hframes = 12
-vframes = 3
-frame = 10
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"wallnut": ExtResource("3_xl65q")
-}
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-tree_root = SubResource("AnimationNodeBlendTree_bi7an")
-anim_player = NodePath("../AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-parameters/Tree/blend_position = 1.0
-script = ExtResource("5_2hmhw")
-entity = NodePath("..")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(3.5, 5)
-shape = SubResource("RectangleShape2D_khltr")
-
-[node name="Behaviour" type="Node" parent="."]
-script = ExtResource("4_cjtyy")
-parameters = Array[String](["parameters/Tree/blend_position"])
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("7_frxj2")
-shaderMaterial = ExtResource("2_mnh2m")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="OnHPChanged" from="." to="Behaviour" method="OnHPChanged"]
diff --git a/scenes/entities/tiles/base_tile.tscn b/scenes/entities/tiles/base_tile.tscn
deleted file mode 100644
index 58bac5a..0000000
--- a/scenes/entities/tiles/base_tile.tscn
+++ /dev/null
@@ -1,23 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://bfooovcq272ks"]
-
-[ext_resource type="Script" uid="uid://cq1dl578rbvrj" path="res://scripts/entities/InvulnerableEntity.cs" id="1_5ykcf"]
-[ext_resource type="Script" uid="uid://bd1f7x1nin0i0" path="res://scripts/entities/AreaOfEffect.cs" id="2_qq7uk"]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_5ykcf"]
-size = Vector2(20, 26)
-
-[node name="BaseTile" type="Node2D"]
-script = ExtResource("1_5ykcf")
-MaxHP = 10.0
-completeInvulnerability = true
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-position = Vector2(0, 12)
-
-[node name="EffectCollider" type="Area2D" parent="."]
-collision_layer = 256
-collision_mask = 8
-script = ExtResource("2_qq7uk")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="EffectCollider"]
-shape = SubResource("RectangleShape2D_5ykcf")
diff --git a/scenes/entities/tiles/redirect_down_tile.tscn b/scenes/entities/tiles/redirect_down_tile.tscn
deleted file mode 100644
index b32fcd6..0000000
--- a/scenes/entities/tiles/redirect_down_tile.tscn
+++ /dev/null
@@ -1,25 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://cp8oadhwu51i7"]
-
-[ext_resource type="PackedScene" uid="uid://bfooovcq272ks" path="res://scenes/entities/tiles/base_tile.tscn" id="1_e3yor"]
-[ext_resource type="Texture2D" uid="uid://c68mrfs4wb81x" path="res://assets/sprites/atlases/atlas2.png" id="2_xv011"]
-[ext_resource type="Script" uid="uid://blky82wwkqirx" path="res://scripts/systems/effects/RedirectEffect.cs" id="3_q6o68"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_q6o68"]
-atlas = ExtResource("2_xv011")
-region = Rect2(160, 22, 41, 36)
-
-[sub_resource type="Resource" id="Resource_4mqps"]
-script = ExtResource("3_q6o68")
-tilesWalked = 0.2
-down = true
-Duration = 1.0
-Slot = "redirect"
-metadata/_custom_type_script = "uid://blky82wwkqirx"
-
-[node name="RedirectDownTile" instance=ExtResource("1_e3yor")]
-
-[node name="Sprite2D" parent="." index="0"]
-texture = SubResource("AtlasTexture_q6o68")
-
-[node name="EffectCollider" parent="." index="1"]
-givenEffect = SubResource("Resource_4mqps")
diff --git a/scenes/entities/tiles/redirect_up_tile.tscn b/scenes/entities/tiles/redirect_up_tile.tscn
deleted file mode 100644
index 1d719f6..0000000
--- a/scenes/entities/tiles/redirect_up_tile.tscn
+++ /dev/null
@@ -1,25 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://d4kee4ipw1k1q"]
-
-[ext_resource type="PackedScene" uid="uid://bfooovcq272ks" path="res://scenes/entities/tiles/base_tile.tscn" id="1_wp3vm"]
-[ext_resource type="Texture2D" uid="uid://c68mrfs4wb81x" path="res://assets/sprites/atlases/atlas2.png" id="2_8aumo"]
-[ext_resource type="Script" uid="uid://blky82wwkqirx" path="res://scripts/systems/effects/RedirectEffect.cs" id="2_le24f"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_ry33t"]
-atlas = ExtResource("2_8aumo")
-region = Rect2(110, 22, 42, 36)
-
-[sub_resource type="Resource" id="Resource_8aumo"]
-script = ExtResource("2_le24f")
-tilesWalked = 0.2
-down = false
-Duration = 1.0
-Slot = "redirect"
-metadata/_custom_type_script = "uid://blky82wwkqirx"
-
-[node name="RedirectUpTile" instance=ExtResource("1_wp3vm")]
-
-[node name="Sprite2D" parent="." index="0"]
-texture = SubResource("AtlasTexture_ry33t")
-
-[node name="EffectCollider" parent="." index="1"]
-givenEffect = SubResource("Resource_8aumo")
diff --git a/scenes/entities/tiles/slow_tile.tscn b/scenes/entities/tiles/slow_tile.tscn
deleted file mode 100644
index f2d7b69..0000000
--- a/scenes/entities/tiles/slow_tile.tscn
+++ /dev/null
@@ -1,24 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://cy0puq5mtnxq7"]
-
-[ext_resource type="PackedScene" uid="uid://bfooovcq272ks" path="res://scenes/entities/tiles/base_tile.tscn" id="1_jktsj"]
-[ext_resource type="Texture2D" uid="uid://c68mrfs4wb81x" path="res://assets/sprites/atlases/atlas2.png" id="2_b65si"]
-[ext_resource type="Script" uid="uid://3q40oeb4cabf" path="res://scripts/systems/effects/PermanentSpeedEffect.cs" id="3_b65si"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_b8lvr"]
-atlas = ExtResource("2_b65si")
-region = Rect2(260, 22, 42, 36)
-
-[sub_resource type="Resource" id="Resource_b8lvr"]
-script = ExtResource("3_b65si")
-Multiplier = 0.667
-Duration = 0.5
-Slot = "permanent_speed"
-metadata/_custom_type_script = "uid://3q40oeb4cabf"
-
-[node name="SlowTile" instance=ExtResource("1_jktsj")]
-
-[node name="Sprite2D" parent="." index="0"]
-texture = SubResource("AtlasTexture_b8lvr")
-
-[node name="EffectCollider" parent="." index="1"]
-givenEffect = SubResource("Resource_b8lvr")
diff --git a/scenes/entities/tiles/speed_tile.tscn b/scenes/entities/tiles/speed_tile.tscn
deleted file mode 100644
index be47bdf..0000000
--- a/scenes/entities/tiles/speed_tile.tscn
+++ /dev/null
@@ -1,24 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://c5lplejgx7mex"]
-
-[ext_resource type="PackedScene" uid="uid://bfooovcq272ks" path="res://scenes/entities/tiles/base_tile.tscn" id="1_0mgu2"]
-[ext_resource type="Texture2D" uid="uid://c68mrfs4wb81x" path="res://assets/sprites/atlases/atlas2.png" id="2_770cq"]
-[ext_resource type="Script" uid="uid://3q40oeb4cabf" path="res://scripts/systems/effects/PermanentSpeedEffect.cs" id="3_770cq"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_p8mgt"]
-atlas = ExtResource("2_770cq")
-region = Rect2(206, 22, 50, 37)
-
-[sub_resource type="Resource" id="Resource_p8mgt"]
-script = ExtResource("3_770cq")
-Multiplier = 1.333
-Duration = 0.5
-Slot = "permanent_speed"
-metadata/_custom_type_script = "uid://3q40oeb4cabf"
-
-[node name="SpeedTile" instance=ExtResource("1_0mgu2")]
-
-[node name="Sprite2D" parent="." index="0"]
-texture = SubResource("AtlasTexture_p8mgt")
-
-[node name="EffectCollider" parent="." index="1"]
-givenEffect = SubResource("Resource_p8mgt")
diff --git a/scenes/gui/almanach.gd b/scenes/gui/almanach.gd
deleted file mode 100644
index ae21e7d..0000000
--- a/scenes/gui/almanach.gd
+++ /dev/null
@@ -1,24 +0,0 @@
-extends TabContainer
-
-var stolen_focus : Control
-
-func _ready() -> void:
- get_viewport().gui_focus_changed.connect(on_focus_changed)
- visibility_changed.connect(on_visibility_changed)
-func _exit_tree() -> void:
- get_viewport().gui_focus_changed.disconnect(on_focus_changed)
-
-func _on_quit_button_pressed() -> void:
- visible = false
- $ChannelPlayer.call("Play")
-
-func on_visibility_changed():
- if visible:
- await get_tree().process_frame
- $plants/SeedpacketsContainer/GridContainer.get_child(0).grab_focus()
- else:
- stolen_focus.grab_focus()
-
-func on_focus_changed(to : Control):
- if visible: return
- stolen_focus = to
diff --git a/scenes/gui/almanach.gd.uid b/scenes/gui/almanach.gd.uid
deleted file mode 100644
index 4a51bc8..0000000
--- a/scenes/gui/almanach.gd.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bs1qywtqijyd2
diff --git a/scenes/gui/almanach.tscn b/scenes/gui/almanach.tscn
deleted file mode 100644
index 3ab973a..0000000
--- a/scenes/gui/almanach.tscn
+++ /dev/null
@@ -1,217 +0,0 @@
-[gd_scene load_steps=13 format=3 uid="uid://bvpt0q4j6nx18"]
-
-[ext_resource type="Texture2D" uid="uid://dr8a0rx42o3qy" path="res://assets/sprites/gui/ChooseYourSeeds/PlantFrame.tres" id="1_1hnxi"]
-[ext_resource type="Script" uid="uid://bs1qywtqijyd2" path="res://scenes/gui/almanach.gd" id="1_oy57w"]
-[ext_resource type="Script" uid="uid://0mvmfvwe1bc7" path="res://scripts/gui/almanach/AlmanachGrid.cs" id="1_ru62c"]
-[ext_resource type="Script" uid="uid://covbig00p22di" path="res://scripts/gui/choose_your_seeds/Previewport.cs" id="2_ru62c"]
-[ext_resource type="Texture2D" uid="uid://dycdvvgmgmfu6" path="res://assets/sprites/gui/ChooseYourSeeds/FrameField.tres" id="3_oy57w"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="6_7vo1l"]
-[ext_resource type="Texture2D" uid="uid://ksxucobpgv7n" path="res://assets/sprites/field.png" id="6_vvhxq"]
-[ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="7_vvhxq"]
-
-[sub_resource type="ViewportTexture" id="ViewportTexture_ru62c"]
-viewport_path = NodePath("plants/Infobox/FrameAndTitle/VboxContainer/Frame/Previewport")
-
-[sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_vvhxq"]
-button_index = 1
-pressed = true
-
-[sub_resource type="Shortcut" id="Shortcut_lmmwe"]
-events = [SubResource("InputEventJoypadButton_vvhxq")]
-
-[sub_resource type="ViewportTexture" id="ViewportTexture_7yl8g"]
-viewport_path = NodePath("zombies/Infobox/FrameAndTitle/VBoxContainer/Frame/Previewport")
-
-[node name="Almanach" type="TabContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-tab_alignment = 1
-current_tab = 0
-script = ExtResource("1_oy57w")
-
-[node name="plants" type="HBoxContainer" parent="."]
-layout_mode = 2
-metadata/_tab_index = 0
-
-[node name="SeedpacketsContainer" type="ScrollContainer" parent="plants"]
-layout_mode = 2
-horizontal_scroll_mode = 0
-
-[node name="GridContainer" type="GridContainer" parent="plants/SeedpacketsContainer"]
-layout_mode = 2
-columns = 8
-script = ExtResource("1_ru62c")
-
-[node name="Infobox" type="VBoxContainer" parent="plants"]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="FrameAndTitle" type="HBoxContainer" parent="plants/Infobox"]
-layout_mode = 2
-
-[node name="VboxContainer" type="VBoxContainer" parent="plants/Infobox/FrameAndTitle"]
-layout_mode = 2
-
-[node name="Frame" type="TextureRect" parent="plants/Infobox/FrameAndTitle/VboxContainer"]
-clip_contents = true
-layout_mode = 2
-size_flags_horizontal = 0
-size_flags_vertical = 0
-texture = ExtResource("1_1hnxi")
-
-[node name="Previewport" type="SubViewport" parent="plants/Infobox/FrameAndTitle/VboxContainer/Frame" node_paths=PackedStringArray("title", "description", "_frameField")]
-canvas_item_default_texture_filter = 0
-size = Vector2i(65, 65)
-script = ExtResource("2_ru62c")
-title = NodePath("../../../Label")
-description = NodePath("../../../../Description/ScrollContainer/RichTextLabel")
-_frameField = NodePath("FrameField")
-
-[node name="FrameField" type="Sprite2D" parent="plants/Infobox/FrameAndTitle/VboxContainer/Frame/Previewport"]
-texture = ExtResource("3_oy57w")
-
-[node name="Camera2D" type="Camera2D" parent="plants/Infobox/FrameAndTitle/VboxContainer/Frame/Previewport"]
-
-[node name="Render" type="TextureRect" parent="plants/Infobox/FrameAndTitle/VboxContainer/Frame"]
-show_behind_parent = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = SubResource("ViewportTexture_ru62c")
-
-[node name="QuitButton" type="Button" parent="plants/Infobox/FrameAndTitle/VboxContainer"]
-layout_mode = 2
-size_flags_vertical = 4
-shortcut = SubResource("Shortcut_lmmwe")
-text = "exit"
-
-[node name="Label" type="Label" parent="plants/Infobox/FrameAndTitle"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 1
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="Description" type="PanelContainer" parent="plants/Infobox"]
-layout_mode = 2
-size_flags_vertical = 3
-theme_type_variation = &"description_panel_container"
-
-[node name="ScrollContainer" type="ScrollContainer" parent="plants/Infobox/Description"]
-layout_mode = 2
-horizontal_scroll_mode = 0
-
-[node name="RichTextLabel" type="RichTextLabel" parent="plants/Infobox/Description/ScrollContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-theme_override_colors/default_color = Color(0, 0, 0, 1)
-theme_override_colors/font_selected_color = Color(0, 0, 0, 1)
-bbcode_enabled = true
-
-[node name="zombies" type="HBoxContainer" parent="."]
-visible = false
-layout_mode = 2
-metadata/_tab_index = 1
-
-[node name="SeedpacketsContainer" type="ScrollContainer" parent="zombies"]
-layout_mode = 2
-horizontal_scroll_mode = 0
-
-[node name="GridContainer" type="GridContainer" parent="zombies/SeedpacketsContainer"]
-layout_mode = 2
-columns = 8
-script = ExtResource("1_ru62c")
-_zombies = true
-
-[node name="Infobox" type="VBoxContainer" parent="zombies"]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="FrameAndTitle" type="HBoxContainer" parent="zombies/Infobox"]
-layout_mode = 2
-
-[node name="VBoxContainer" type="VBoxContainer" parent="zombies/Infobox/FrameAndTitle"]
-layout_mode = 2
-
-[node name="Frame" type="TextureRect" parent="zombies/Infobox/FrameAndTitle/VBoxContainer"]
-clip_contents = true
-layout_mode = 2
-size_flags_horizontal = 0
-size_flags_vertical = 0
-texture = ExtResource("1_1hnxi")
-
-[node name="Previewport" type="SubViewport" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame" node_paths=PackedStringArray("title", "description", "_frameField")]
-canvas_item_default_texture_filter = 0
-size = Vector2i(130, 130)
-script = ExtResource("2_ru62c")
-title = NodePath("../../../Label")
-description = NodePath("../../../../Description/ScrollContainer/RichTextLabel")
-_frameField = NodePath("CanvasLayer/Field")
-
-[node name="CanvasLayer" type="CanvasLayer" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame/Previewport"]
-layer = -10
-follow_viewport_enabled = true
-
-[node name="Field" type="Sprite2D" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame/Previewport/CanvasLayer"]
-position = Vector2(0, 30)
-texture = ExtResource("6_vvhxq")
-
-[node name="Camera2D" type="Camera2D" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame/Previewport"]
-position = Vector2(0, -45)
-
-[node name="Render" type="TextureRect" parent="zombies/Infobox/FrameAndTitle/VBoxContainer/Frame"]
-show_behind_parent = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = SubResource("ViewportTexture_7yl8g")
-expand_mode = 1
-
-[node name="QuitButton" type="Button" parent="zombies/Infobox/FrameAndTitle/VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 4
-shortcut = SubResource("Shortcut_lmmwe")
-text = "exit"
-
-[node name="Label" type="Label" parent="zombies/Infobox/FrameAndTitle"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 1
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="Description" type="PanelContainer" parent="zombies/Infobox"]
-layout_mode = 2
-size_flags_vertical = 3
-theme_type_variation = &"description_panel_container"
-
-[node name="ScrollContainer" type="ScrollContainer" parent="zombies/Infobox/Description"]
-layout_mode = 2
-horizontal_scroll_mode = 0
-
-[node name="RichTextLabel" type="RichTextLabel" parent="zombies/Infobox/Description/ScrollContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-theme_override_colors/default_color = Color(0, 0, 0, 1)
-theme_override_colors/font_selected_color = Color(0, 0, 0, 1)
-bbcode_enabled = true
-
-[node name="ChannelPlayer" type="Node" parent="."]
-script = ExtResource("6_7vo1l")
-audioStream = ExtResource("7_vvhxq")
-channel = "button"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[connection signal="pressed" from="plants/Infobox/FrameAndTitle/VboxContainer/QuitButton" to="." method="_on_quit_button_pressed"]
-[connection signal="pressed" from="zombies/Infobox/FrameAndTitle/VBoxContainer/QuitButton" to="." method="_on_quit_button_pressed"]
diff --git a/scenes/gui/choose_your_seeds.tscn b/scenes/gui/choose_your_seeds.tscn
deleted file mode 100644
index 50f1fab..0000000
--- a/scenes/gui/choose_your_seeds.tscn
+++ /dev/null
@@ -1,216 +0,0 @@
-[gd_scene load_steps=26 format=3 uid="uid://dpxxjfd5lv5sv"]
-
-[ext_resource type="Theme" uid="uid://e8n88g31w7x7" path="res://assets/themes/ChooseYourSeeds.tres" id="1_bfo8i"]
-[ext_resource type="Texture2D" uid="uid://dr8a0rx42o3qy" path="res://assets/sprites/gui/ChooseYourSeeds/PlantFrame.tres" id="2_so2bw"]
-[ext_resource type="Script" uid="uid://covbig00p22di" path="res://scripts/gui/choose_your_seeds/Previewport.cs" id="3_fmc0y"]
-[ext_resource type="Texture2D" uid="uid://dycdvvgmgmfu6" path="res://assets/sprites/gui/ChooseYourSeeds/FrameField.tres" id="3_rn5vx"]
-[ext_resource type="Script" uid="uid://eq3ecja30mlj" path="res://scripts/gui/choose_your_seeds/GridLoader.cs" id="4_i7sou"]
-[ext_resource type="PackedScene" uid="uid://10b1egek6upx" path="res://scenes/gui/level_run_button.tscn" id="5_n80ic"]
-[ext_resource type="Script" uid="uid://d26waisd3v488" path="res://scripts/gui/choose_your_seeds/LevelRunButton.cs" id="7_k6b6g"]
-[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="8_f8xw6"]
-[ext_resource type="Texture2D" uid="uid://drydueofrb448" path="res://assets/sprites/gui/almanach/book.tres" id="8_hmdmm"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="8_v7xff"]
-[ext_resource type="Script" uid="uid://diwjgekhvn017" path="res://scripts/gui/choose_your_seeds/CYSResetButton.cs" id="9_kwnqh"]
-[ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="9_v7xff"]
-[ext_resource type="Script" uid="uid://c1x4n4nqyq72f" path="res://scripts/audio/ChannelSettings.cs" id="10_nlh6x"]
-[ext_resource type="PackedScene" uid="uid://bvpt0q4j6nx18" path="res://scenes/gui/almanach.tscn" id="11_nlh6x"]
-[ext_resource type="AudioStream" uid="uid://mu86q1r1dvgo" path="res://assets/audio/music/03. Choose Your Seeds.mp3" id="13_y65t1"]
-[ext_resource type="Script" uid="uid://b4ysi1iutmju3" path="res://scripts/audio/ChooseYourSeedsMusic.cs" id="14_rptyw"]
-[ext_resource type="Script" uid="uid://bksslrqq5vhm3" path="res://scripts/gui/choose_your_seeds/CYSFocusSetup.cs" id="15_rptyw"]
-
-[sub_resource type="ViewportTexture" id="ViewportTexture_rmoaa"]
-viewport_path = NodePath("Panel/MarginContainer/VBoxContainer/HBoxContainer/Frame/Previewport")
-
-[sub_resource type="LabelSettings" id="LabelSettings_fmc0y"]
-font_size = 24
-font_color = Color(0, 0, 0, 1)
-
-[sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_f8xw6"]
-button_index = 2
-pressed = true
-
-[sub_resource type="Shortcut" id="Shortcut_kwnqh"]
-events = [SubResource("InputEventJoypadButton_f8xw6")]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_kwnqh"]
-atlas = ExtResource("8_f8xw6")
-region = Rect2(626, 210, 31, 31)
-
-[sub_resource type="GDScript" id="GDScript_hmdmm"]
-resource_name = "Almanach"
-script/source = "extends Button
-
-
-func _pressed() -> void:
- $\"../../../Independer/Almanach\".visible = true
- $\"../../../ChannelPlayer\".call(\"Play\")
-"
-
-[sub_resource type="Resource" id="Resource_l66rp"]
-script = ExtResource("10_nlh6x")
-restartTreshold = -1.0
-metadata/_custom_type_script = "uid://c1x4n4nqyq72f"
-
-[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_lkvg0"]
-stream_count = 1
-stream_0 = ExtResource("13_y65t1")
-
-[node name="ChooseYourSeeds" type="Control"]
-process_mode = 3
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-theme = ExtResource("1_bfo8i")
-
-[node name="Panel" type="Panel" parent="."]
-layout_mode = 1
-anchors_preset = -1
-anchor_top = 2.005
-anchor_right = 0.6
-anchor_bottom = 2.845
-offset_top = -738.0
-offset_bottom = -738.0
-grow_vertical = 2
-metadata/_edit_use_anchors_ = true
-
-[node name="MarginContainer" type="MarginContainer" parent="Panel"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-theme_override_constants/margin_left = 8
-theme_override_constants/margin_top = 6
-theme_override_constants/margin_right = 8
-theme_override_constants/margin_bottom = 6
-
-[node name="VBoxContainer" type="VBoxContainer" parent="Panel/MarginContainer"]
-layout_mode = 2
-
-[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/VBoxContainer"]
-layout_mode = 2
-
-[node name="Frame" type="TextureRect" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-texture = ExtResource("2_so2bw")
-
-[node name="Previewport" type="SubViewport" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/Frame" node_paths=PackedStringArray("title", "description", "_frameField")]
-canvas_item_default_texture_filter = 0
-size = Vector2i(65, 65)
-script = ExtResource("3_fmc0y")
-title = NodePath("../../PanelContainer/ScrollContainer/VBoxContainer/Title")
-description = NodePath("../../PanelContainer/ScrollContainer/VBoxContainer/Description")
-_frameField = NodePath("FrameField")
-
-[node name="FrameField" type="Sprite2D" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/Frame/Previewport"]
-texture = ExtResource("3_rn5vx")
-
-[node name="Camera2D" type="Camera2D" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/Frame/Previewport"]
-
-[node name="Render" type="TextureRect" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/Frame"]
-show_behind_parent = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = SubResource("ViewportTexture_rmoaa")
-
-[node name="PanelContainer" type="PanelContainer" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="ScrollContainer" type="ScrollContainer" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/PanelContainer"]
-layout_mode = 2
-focus_mode = 2
-horizontal_scroll_mode = 0
-
-[node name="VBoxContainer" type="VBoxContainer" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/PanelContainer/ScrollContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="Title" type="Label" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/PanelContainer/ScrollContainer/VBoxContainer"]
-layout_mode = 2
-label_settings = SubResource("LabelSettings_fmc0y")
-horizontal_alignment = 1
-
-[node name="Description" type="RichTextLabel" parent="Panel/MarginContainer/VBoxContainer/HBoxContainer/PanelContainer/ScrollContainer/VBoxContainer"]
-layout_mode = 2
-theme_override_colors/default_color = Color(0, 0, 0, 1)
-bbcode_enabled = true
-fit_content = true
-
-[node name="ScrollContainer" type="ScrollContainer" parent="Panel/MarginContainer/VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-horizontal_scroll_mode = 0
-
-[node name="GridContainer" type="GridContainer" parent="Panel/MarginContainer/VBoxContainer/ScrollContainer"]
-layout_mode = 2
-columns = 7
-script = ExtResource("4_i7sou")
-
-[node name="ButtonContainer" type="VBoxContainer" parent="Panel"]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 1.0
-anchor_right = 1.18889
-anchor_bottom = 0.997024
-grow_vertical = 2
-metadata/_edit_use_anchors_ = true
-
-[node name="LevelRunButton" parent="Panel/ButtonContainer" instance=ExtResource("5_n80ic")]
-layout_mode = 2
-focus_neighbor_left = NodePath("../../MarginContainer/VBoxContainer/HBoxContainer/PanelContainer/ScrollContainer")
-focus_neighbor_bottom = NodePath("../Button")
-script = ExtResource("7_k6b6g")
-
-[node name="Button" type="Button" parent="Panel/ButtonContainer"]
-layout_mode = 2
-focus_neighbor_top = NodePath("../LevelRunButton")
-focus_neighbor_bottom = NodePath("../AlmanachButton")
-shortcut = SubResource("Shortcut_kwnqh")
-icon = SubResource("AtlasTexture_kwnqh")
-icon_alignment = 1
-script = ExtResource("9_kwnqh")
-
-[node name="AlmanachButton" type="Button" parent="Panel/ButtonContainer"]
-layout_mode = 2
-focus_neighbor_left = NodePath("../../MarginContainer/VBoxContainer/HBoxContainer/PanelContainer/ScrollContainer")
-focus_neighbor_top = NodePath("../Button")
-icon = ExtResource("8_hmdmm")
-icon_alignment = 1
-script = SubResource("GDScript_hmdmm")
-metadata/_edit_use_anchors_ = true
-
-[node name="ChannelPlayer" type="Node" parent="."]
-script = ExtResource("8_v7xff")
-settings = SubResource("Resource_l66rp")
-audioStream = ExtResource("9_v7xff")
-channel = "button"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="Independer" type="Node" parent="."]
-
-[node name="Almanach" parent="Independer" instance=ExtResource("11_nlh6x")]
-visible = false
-
-[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
-stream = SubResource("AudioStreamPlaylist_lkvg0")
-autoplay = true
-bus = &"MusicBus"
-script = ExtResource("14_rptyw")
-
-[node name="FocusSetup" type="Node" parent="." node_paths=PackedStringArray("grid", "button", "textContainer")]
-script = ExtResource("15_rptyw")
-grid = NodePath("../Panel/MarginContainer/VBoxContainer/ScrollContainer/GridContainer")
-button = NodePath("../Panel/ButtonContainer/LevelRunButton")
-textContainer = NodePath("../Panel/MarginContainer/VBoxContainer/HBoxContainer/PanelContainer/ScrollContainer")
-
-[connection signal="pressed" from="Panel/ButtonContainer/LevelRunButton" to="ChannelPlayer" method="Play"]
diff --git a/scenes/gui/cursor_canvas_layer.tscn b/scenes/gui/cursor_canvas_layer.tscn
deleted file mode 100644
index 8cbf299..0000000
--- a/scenes/gui/cursor_canvas_layer.tscn
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://djfsa0pxqeoq1"]
-
-[ext_resource type="Texture2D" uid="uid://c20dwjohaljdk" path="res://assets/sprites/atlases/cursor/default_arrow.png" id="1_0pqw0"]
-[ext_resource type="Script" uid="uid://c6ucy48qwaxuc" path="res://scripts/Cursor.cs" id="2_yv0fr"]
-
-[node name="CursorCanvasLayer" type="CanvasLayer"]
-process_mode = 3
-layer = 11
-follow_viewport_enabled = true
-
-[node name="Cursor" type="Sprite2D" parent="."]
-texture = ExtResource("1_0pqw0")
-script = ExtResource("2_yv0fr")
diff --git a/scenes/gui/fast_forward_button.tscn b/scenes/gui/fast_forward_button.tscn
deleted file mode 100644
index 3632a2f..0000000
--- a/scenes/gui/fast_forward_button.tscn
+++ /dev/null
@@ -1,22 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://cgm7td1hgs0rr"]
-
-[ext_resource type="Texture2D" uid="uid://bjsar1x67xk1t" path="res://assets/sprites/gui/FastForward1.tres" id="1_ta3h7"]
-[ext_resource type="Script" uid="uid://cwn3bd2k7mdq6" path="res://scripts/gui/FastForwardButton.cs" id="2_wle4k"]
-[ext_resource type="Texture2D" uid="uid://dfr5ofieigu5j" path="res://assets/sprites/gui/FastForward2.tres" id="3_fj838"]
-[ext_resource type="Texture2D" uid="uid://qgmsoocd4p1o" path="res://assets/sprites/gui/FastForward3.tres" id="4_2wmv1"]
-
-[node name="FastForwardButton" type="Button"]
-anchors_preset = -1
-anchor_right = 0.043
-anchor_bottom = 0.07
-offset_right = 0.199999
-size_flags_vertical = 4
-mouse_default_cursor_shape = 2
-icon = ExtResource("1_ta3h7")
-script = ExtResource("2_wle4k")
-firstSpeed = ExtResource("1_ta3h7")
-secondSpeed = ExtResource("3_fj838")
-thirdSpeed = ExtResource("4_2wmv1")
-metadata/_edit_use_anchors_ = true
-
-[connection signal="pressed" from="." to="." method="OnPressed"]
diff --git a/scenes/gui/flag.tscn b/scenes/gui/flag.tscn
deleted file mode 100644
index 5a72cfa..0000000
--- a/scenes/gui/flag.tscn
+++ /dev/null
@@ -1,14 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://drobbh5x1v7mi"]
-
-[ext_resource type="Texture2D" uid="uid://6didix2twcty" path="res://assets/sprites/wave-progress/Flag.tres" id="1_ebgak"]
-[ext_resource type="Script" uid="uid://06ns8r18dalm" path="res://scripts/gui/WaveFlag.cs" id="2_fj7o6"]
-
-[node name="Flag" type="TextureRect"]
-show_behind_parent = true
-offset_left = -7.0
-offset_top = -22.0
-offset_right = 13.0
-texture = ExtResource("1_ebgak")
-stretch_mode = 5
-script = ExtResource("2_fj7o6")
-metadata/_edit_use_anchors_ = true
diff --git a/scenes/gui/frame.tscn b/scenes/gui/frame.tscn
deleted file mode 100644
index 9c5365f..0000000
--- a/scenes/gui/frame.tscn
+++ /dev/null
@@ -1,42 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://disdegexxmcro"]
-
-[ext_resource type="Texture2D" uid="uid://dr8a0rx42o3qy" path="res://assets/sprites/gui/ChooseYourSeeds/PlantFrame.tres" id="1_hc23v"]
-[ext_resource type="Script" uid="uid://covbig00p22di" path="res://scripts/gui/choose_your_seeds/Previewport.cs" id="2_cf55k"]
-[ext_resource type="Texture2D" uid="uid://ksxucobpgv7n" path="res://assets/sprites/field.png" id="3_7j5d4"]
-
-[sub_resource type="ViewportTexture" id="ViewportTexture_7yl8g"]
-viewport_path = NodePath("zombies/Infobox/FrameAndTitle/VBoxContainer/Frame/Previewport")
-
-[node name="Frame" type="TextureRect"]
-clip_contents = true
-size_flags_horizontal = 0
-size_flags_vertical = 0
-texture = ExtResource("1_hc23v")
-
-[node name="Previewport" type="SubViewport" parent="." node_paths=PackedStringArray("_frameField")]
-canvas_item_default_texture_filter = 0
-size = Vector2i(130, 130)
-script = ExtResource("2_cf55k")
-_frameField = NodePath("CanvasLayer/Field")
-
-[node name="CanvasLayer" type="CanvasLayer" parent="Previewport"]
-layer = -10
-follow_viewport_enabled = true
-
-[node name="Field" type="Sprite2D" parent="Previewport/CanvasLayer"]
-position = Vector2(0, 30)
-texture = ExtResource("3_7j5d4")
-
-[node name="Camera2D" type="Camera2D" parent="Previewport"]
-position = Vector2(0, -45)
-
-[node name="Render" type="TextureRect" parent="."]
-show_behind_parent = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = SubResource("ViewportTexture_7yl8g")
-expand_mode = 1
diff --git a/scenes/gui/level_run_button.tscn b/scenes/gui/level_run_button.tscn
deleted file mode 100644
index e894e36..0000000
--- a/scenes/gui/level_run_button.tscn
+++ /dev/null
@@ -1,14 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://10b1egek6upx"]
-
-[ext_resource type="Theme" uid="uid://b8l285cjcgeyi" path="res://assets/themes/GameStyle.tres" id="1_05u5f"]
-[ext_resource type="Texture2D" uid="uid://rpnw5lxm3ksb" path="res://assets/sprites/gui/ChooseYourSeeds/LevelRun.tres" id="1_qftep"]
-
-[node name="LevelRunButton" type="Button"]
-anchors_preset = -1
-anchor_right = 0.108333
-anchor_bottom = 0.11
-offset_right = -57.0
-offset_bottom = -36.0
-theme = ExtResource("1_05u5f")
-icon = ExtResource("1_qftep")
-metadata/_edit_use_anchors_ = true
diff --git a/scenes/gui/pause_button.tscn b/scenes/gui/pause_button.tscn
deleted file mode 100644
index d65dc65..0000000
--- a/scenes/gui/pause_button.tscn
+++ /dev/null
@@ -1,14 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://u5l3jd00s8vd"]
-
-[ext_resource type="Texture2D" uid="uid://dm0hjd67a6mva" path="res://assets/sprites/gui/Pause.tres" id="1_7k3tg"]
-[ext_resource type="Script" uid="uid://cmfhiun6yrlr6" path="res://scripts/gui/pause_menu/PauseButton.cs" id="2_01o3l"]
-
-[node name="PauseButton" type="Button"]
-anchors_preset = -1
-anchor_right = 0.043
-anchor_bottom = 0.07
-offset_right = 0.199999
-size_flags_vertical = 4
-mouse_default_cursor_shape = 2
-icon = ExtResource("1_7k3tg")
-script = ExtResource("2_01o3l")
diff --git a/scenes/gui/pause_menu.tscn b/scenes/gui/pause_menu.tscn
deleted file mode 100644
index 069dfa5..0000000
--- a/scenes/gui/pause_menu.tscn
+++ /dev/null
@@ -1,137 +0,0 @@
-[gd_scene load_steps=11 format=3 uid="uid://fm471x22n8kr"]
-
-[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_loim0"]
-[ext_resource type="Script" uid="uid://gvwhpjoame6m" path="res://scripts/gui/pause_menu/PauseMenu.cs" id="2_4vp8g"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="3_4vp8g"]
-[ext_resource type="Script" uid="uid://ciccaxqo70s13" path="res://scripts/audio/AudioSlider.cs" id="3_e3p60"]
-[ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="4_e3p60"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_tifvb"]
-atlas = ExtResource("1_loim0")
-region = Rect2(0, 0, 177, 174)
-
-[sub_resource type="LabelSettings" id="LabelSettings_or0he"]
-font_size = 32
-outline_size = 2
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_4k24j"]
-atlas = ExtResource("1_loim0")
-region = Rect2(0, 221, 127, 20)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_or0he"]
-atlas = ExtResource("1_loim0")
-region = Rect2(255, 221, 118, 20)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_y3stn"]
-atlas = ExtResource("1_loim0")
-region = Rect2(194, 221, 61, 20)
-
-[node name="PauseMenu" type="MarginContainer"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 0
-theme_override_constants/margin_left = 150
-theme_override_constants/margin_top = 40
-theme_override_constants/margin_right = 150
-theme_override_constants/margin_bottom = 60
-
-[node name="Pause" type="NinePatchRect" parent="."]
-process_mode = 3
-z_index = 1
-layout_mode = 2
-texture = SubResource("AtlasTexture_tifvb")
-patch_margin_left = 73
-patch_margin_top = 98
-patch_margin_right = 73
-patch_margin_bottom = 52
-script = ExtResource("2_4vp8g")
-metadata/_edit_use_anchors_ = true
-
-[node name="MarginContainer" type="MarginContainer" parent="Pause"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-theme_override_constants/margin_left = 30
-theme_override_constants/margin_top = 55
-theme_override_constants/margin_right = 30
-theme_override_constants/margin_bottom = 10
-
-[node name="Buttons" type="VBoxContainer" parent="Pause/MarginContainer"]
-layout_mode = 2
-
-[node name="PAUSED" type="Label" parent="Pause/MarginContainer/Buttons"]
-layout_mode = 2
-text = "paused"
-label_settings = SubResource("LabelSettings_or0he")
-horizontal_alignment = 1
-metadata/_edit_use_anchors_ = true
-
-[node name="Volumes" type="HBoxContainer" parent="Pause/MarginContainer/Buttons"]
-layout_mode = 2
-
-[node name="Labels" type="VBoxContainer" parent="Pause/MarginContainer/Buttons/Volumes"]
-layout_mode = 2
-
-[node name="SFX" type="Label" parent="Pause/MarginContainer/Buttons/Volumes/Labels"]
-layout_mode = 2
-text = "sfx"
-
-[node name="Music" type="Label" parent="Pause/MarginContainer/Buttons/Volumes/Labels"]
-layout_mode = 2
-text = "music"
-
-[node name="Sliders" type="VBoxContainer" parent="Pause/MarginContainer/Buttons/Volumes"]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="SFX" type="HSlider" parent="Pause/MarginContainer/Buttons/Volumes/Sliders"]
-layout_mode = 2
-size_flags_horizontal = 3
-max_value = 1.0
-step = 0.01
-value = 1.0
-script = ExtResource("3_e3p60")
-
-[node name="Music" type="HSlider" parent="Pause/MarginContainer/Buttons/Volumes/Sliders"]
-layout_mode = 2
-size_flags_horizontal = 3
-max_value = 1.0
-step = 0.01
-value = 1.0
-script = ExtResource("3_e3p60")
-affects = 1
-
-[node name="ContinueButton" type="Button" parent="Pause/MarginContainer/Buttons"]
-unique_name_in_owner = true
-layout_mode = 2
-icon = SubResource("AtlasTexture_4k24j")
-icon_alignment = 1
-
-[node name="RestartButton" type="Button" parent="Pause/MarginContainer/Buttons"]
-layout_mode = 2
-icon = SubResource("AtlasTexture_or0he")
-icon_alignment = 1
-
-[node name="ExitButton" type="Button" parent="Pause/MarginContainer/Buttons"]
-layout_mode = 2
-icon = SubResource("AtlasTexture_y3stn")
-icon_alignment = 1
-
-[node name="ButtonPlayer" type="Node" parent="Pause/MarginContainer/Buttons"]
-script = ExtResource("3_4vp8g")
-audioStream = ExtResource("4_e3p60")
-channel = "button"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[connection signal="pressed" from="Pause/MarginContainer/Buttons/ContinueButton" to="Pause" method="Continue"]
-[connection signal="pressed" from="Pause/MarginContainer/Buttons/ContinueButton" to="Pause/MarginContainer/Buttons/ButtonPlayer" method="Play"]
-[connection signal="pressed" from="Pause/MarginContainer/Buttons/RestartButton" to="Pause" method="Restart"]
-[connection signal="pressed" from="Pause/MarginContainer/Buttons/RestartButton" to="Pause/MarginContainer/Buttons/ButtonPlayer" method="Play"]
-[connection signal="pressed" from="Pause/MarginContainer/Buttons/ExitButton" to="Pause" method="Exit"]
-[connection signal="pressed" from="Pause/MarginContainer/Buttons/ExitButton" to="Pause/MarginContainer/Buttons/ButtonPlayer" method="Play"]
diff --git a/scenes/gui/reward_scene.tscn b/scenes/gui/reward_scene.tscn
deleted file mode 100644
index cc99fa9..0000000
--- a/scenes/gui/reward_scene.tscn
+++ /dev/null
@@ -1,145 +0,0 @@
-[gd_scene load_steps=9 format=3 uid="uid://cwck7e1tt057k"]
-
-[ext_resource type="Script" uid="uid://cqlghusry0hej" path="res://scripts/gui/RewardScene.cs" id="1_rclqa"]
-[ext_resource type="Texture2D" uid="uid://nc6t245565lu" path="res://assets/sprites/leafy_background.png" id="1_uwg38"]
-[ext_resource type="Texture2D" uid="uid://bq8n778sk4qnv" path="res://assets/sprites/gui/almanach/frame.tres" id="2_hbmdt"]
-[ext_resource type="Texture2D" uid="uid://ksxucobpgv7n" path="res://assets/sprites/field.png" id="3_mbhdb"]
-
-[sub_resource type="ViewportTexture" id="ViewportTexture_rclqa"]
-viewport_path = NodePath("PanelContainer/VBoxContainer/Frame/SubViewport")
-
-[sub_resource type="Animation" id="Animation_rclqa"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("ColorRect:color")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 0.921569, 1)]
-}
-
-[sub_resource type="Animation" id="Animation_mbhdb"]
-resource_name = "main"
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("ColorRect:color")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 1),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Color(1, 1, 0.921569, 1), Color(1, 1, 0.92, 0)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_rfkmu"]
-_data = {
-&"RESET": SubResource("Animation_rclqa"),
-&"main": SubResource("Animation_mbhdb")
-}
-
-[node name="RewardScene" type="Control"]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = ExtResource("1_rclqa")
-metadata/_edit_lock_ = true
-
-[node name="Background" type="TextureRect" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = ExtResource("1_uwg38")
-metadata/_edit_lock_ = true
-
-[node name="PanelContainer" type="PanelContainer" parent="."]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.285
-anchor_top = 0.105
-anchor_right = 0.713333
-anchor_bottom = 0.895
-offset_right = -3.05176e-05
-grow_horizontal = 2
-grow_vertical = 2
-metadata/_edit_use_anchors_ = true
-
-[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
-layout_mode = 2
-
-[node name="Frame" type="TextureRect" parent="PanelContainer/VBoxContainer"]
-clip_contents = true
-layout_mode = 2
-size_flags_horizontal = 4
-texture = ExtResource("2_hbmdt")
-stretch_mode = 5
-
-[node name="SubViewport" type="SubViewport" parent="PanelContainer/VBoxContainer/Frame"]
-unique_name_in_owner = true
-
-[node name="Field" type="Sprite2D" parent="PanelContainer/VBoxContainer/Frame/SubViewport"]
-unique_name_in_owner = true
-texture = ExtResource("3_mbhdb")
-
-[node name="Camera2D" type="Camera2D" parent="PanelContainer/VBoxContainer/Frame/SubViewport"]
-zoom = Vector2(0.75, 0.75)
-
-[node name="ViewportTexture" type="TextureRect" parent="PanelContainer/VBoxContainer/Frame"]
-show_behind_parent = true
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = SubResource("ViewportTexture_rclqa")
-
-[node name="NameLabel" type="Label" parent="PanelContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="DescriptionPanel" type="PanelContainer" parent="PanelContainer/VBoxContainer"]
-layout_mode = 2
-size_flags_vertical = 3
-theme_type_variation = &"description_panel_container"
-
-[node name="DescriptionLabel" type="RichTextLabel" parent="PanelContainer/VBoxContainer/DescriptionPanel"]
-unique_name_in_owner = true
-layout_mode = 2
-theme_override_colors/default_color = Color(0, 0, 0, 1)
-bbcode_enabled = true
-
-[node name="ContinueButton" type="Button" parent="PanelContainer/VBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "continue"
-
-[node name="ColorRect" type="ColorRect" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-color = Color(1, 1, 0.921569, 1)
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_rfkmu")
-}
-autoplay = "main"
diff --git a/scenes/gui/runtime_gui.tscn b/scenes/gui/runtime_gui.tscn
deleted file mode 100644
index b9d20f1..0000000
--- a/scenes/gui/runtime_gui.tscn
+++ /dev/null
@@ -1,299 +0,0 @@
-[gd_scene load_steps=49 format=3 uid="uid://cfnmspei3k4p7"]
-
-[ext_resource type="PackedScene" uid="uid://ky35veswaytr" path="res://scenes/gui/sun_counter.tscn" id="1_le3od"]
-[ext_resource type="Theme" uid="uid://b8l285cjcgeyi" path="res://assets/themes/GameStyle.tres" id="1_xf6ra"]
-[ext_resource type="Script" uid="uid://cwa1eydeiy3y4" path="res://scripts/gui/LevelGUIElements.cs" id="2_5fonq"]
-[ext_resource type="Texture2D" uid="uid://bbh0uwloi87tn" path="res://assets/sprites/gui/PlantPanel.png" id="2_eg3hk"]
-[ext_resource type="PackedScene" uid="uid://t0vpmycj6c8j" path="res://scenes/gui/shovel_button.tscn" id="3_bheea"]
-[ext_resource type="PackedScene" uid="uid://cgm7td1hgs0rr" path="res://scenes/gui/fast_forward_button.tscn" id="4_66uy4"]
-[ext_resource type="Script" uid="uid://di45o67gxmiql" path="res://scripts/gui/seedpackets/HotbarShortcutSetter.cs" id="5_5kkbf"]
-[ext_resource type="PackedScene" uid="uid://u5l3jd00s8vd" path="res://scenes/gui/pause_button.tscn" id="5_jyq78"]
-[ext_resource type="Script" uid="uid://bygqu13os20wi" path="res://scripts/gui/PlantHotbarSize.cs" id="5_xq48m"]
-[ext_resource type="PackedScene" uid="uid://b4lx8adw6rbqs" path="res://scenes/particles/dirt_explosion.tscn" id="6_5jtun"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="7_5kkbf"]
-[ext_resource type="AudioStream" uid="uid://dfbg6dxg4actb" path="res://assets/audio/sfx/shovel.mp3" id="8_xq48m"]
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ps2iw"]
-texture = ExtResource("2_eg3hk")
-texture_margin_left = 4.0
-texture_margin_top = 4.0
-texture_margin_right = 4.0
-texture_margin_bottom = 4.0
-axis_stretch_horizontal = 1
-
-[sub_resource type="InputEventKey" id="InputEventKey_xq48m"]
-device = -1
-keycode = 49
-unicode = 49
-
-[sub_resource type="Shortcut" id="Shortcut_hmpwl"]
-events = [SubResource("InputEventKey_xq48m")]
-
-[sub_resource type="InputEventKey" id="InputEventKey_kqrbi"]
-device = -1
-keycode = 50
-unicode = 50
-
-[sub_resource type="Shortcut" id="Shortcut_s6pj4"]
-events = [SubResource("InputEventKey_kqrbi")]
-
-[sub_resource type="InputEventKey" id="InputEventKey_ar74i"]
-device = -1
-keycode = 51
-unicode = 51
-
-[sub_resource type="Shortcut" id="Shortcut_k8sc7"]
-events = [SubResource("InputEventKey_ar74i")]
-
-[sub_resource type="InputEventKey" id="InputEventKey_6klug"]
-device = -1
-keycode = 52
-unicode = 52
-
-[sub_resource type="Shortcut" id="Shortcut_lxteg"]
-events = [SubResource("InputEventKey_6klug")]
-
-[sub_resource type="InputEventKey" id="InputEventKey_vbeir"]
-device = -1
-keycode = 53
-unicode = 53
-
-[sub_resource type="InputEventKey" id="InputEventKey_7hbdx"]
-device = -1
-keycode = 81
-unicode = 1081
-
-[sub_resource type="Shortcut" id="Shortcut_q5vyg"]
-events = [SubResource("InputEventKey_vbeir"), SubResource("InputEventKey_7hbdx")]
-
-[sub_resource type="InputEventKey" id="InputEventKey_6l5gn"]
-device = -1
-keycode = 54
-unicode = 54
-
-[sub_resource type="InputEventKey" id="InputEventKey_2abg0"]
-device = -1
-keycode = 87
-unicode = 1094
-
-[sub_resource type="Shortcut" id="Shortcut_6awm7"]
-events = [SubResource("InputEventKey_6l5gn"), SubResource("InputEventKey_2abg0")]
-
-[sub_resource type="InputEventKey" id="InputEventKey_mu0ut"]
-device = -1
-keycode = 55
-unicode = 55
-
-[sub_resource type="InputEventKey" id="InputEventKey_o6p06"]
-device = -1
-keycode = 69
-unicode = 1091
-
-[sub_resource type="Shortcut" id="Shortcut_dsi7v"]
-events = [SubResource("InputEventKey_mu0ut"), SubResource("InputEventKey_o6p06")]
-
-[sub_resource type="InputEventKey" id="InputEventKey_iruld"]
-device = -1
-keycode = 56
-unicode = 56
-
-[sub_resource type="InputEventKey" id="InputEventKey_hr1by"]
-device = -1
-keycode = 82
-unicode = 1082
-
-[sub_resource type="Shortcut" id="Shortcut_d5mmq"]
-events = [SubResource("InputEventKey_iruld"), SubResource("InputEventKey_hr1by")]
-
-[sub_resource type="InputEventKey" id="InputEventKey_h2jfj"]
-device = -1
-keycode = 57
-unicode = 57
-
-[sub_resource type="InputEventKey" id="InputEventKey_xrhoa"]
-device = -1
-keycode = 84
-unicode = 1077
-
-[sub_resource type="Shortcut" id="Shortcut_yda1n"]
-events = [SubResource("InputEventKey_h2jfj"), SubResource("InputEventKey_xrhoa")]
-
-[sub_resource type="InputEventKey" id="InputEventKey_iupjv"]
-device = -1
-keycode = 48
-unicode = 48
-
-[sub_resource type="InputEventKey" id="InputEventKey_icels"]
-device = -1
-keycode = 89
-unicode = 1085
-
-[sub_resource type="Shortcut" id="Shortcut_lnrbg"]
-events = [SubResource("InputEventKey_iupjv"), SubResource("InputEventKey_icels")]
-
-[sub_resource type="InputEventAction" id="InputEventAction_xq48m"]
-action = &"short_shovel"
-pressed = true
-
-[sub_resource type="Shortcut" id="Shortcut_cti1a"]
-events = [SubResource("InputEventAction_xq48m")]
-
-[sub_resource type="InputEventAction" id="InputEventAction_5kkbf"]
-action = &"short_ff"
-pressed = true
-
-[sub_resource type="Shortcut" id="Shortcut_xq48m"]
-events = [SubResource("InputEventAction_5kkbf")]
-
-[sub_resource type="InputEventAction" id="InputEventAction_cti1a"]
-action = &"short_pause"
-pressed = true
-
-[sub_resource type="Shortcut" id="Shortcut_s07y0"]
-events = [SubResource("InputEventAction_cti1a")]
-
-[sub_resource type="Animation" id="Animation_c8fnk"]
-length = 0.001
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath(".:color:a")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0),
-"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0)
-}
-
-[sub_resource type="Animation" id="Animation_ffxdv"]
-resource_name = "flash"
-length = 0.3
-step = 0.1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath(".:color:a")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0, 0),
-"points": PackedFloat32Array(0.25, -0.25, 0, 0, 0.00399721, 0, -0.2, 0.0038315, 0.25, 0),
-"times": PackedFloat32Array(0, 0.3)
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_myv2j"]
-_data = {
-&"RESET": SubResource("Animation_c8fnk"),
-&"flash": SubResource("Animation_ffxdv")
-}
-
-[node name="RuntimeGUI" type="Control" node_paths=PackedStringArray("SeedpacketsHotbar", "SunCounter")]
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-theme = ExtResource("1_xf6ra")
-script = ExtResource("2_5fonq")
-SeedpacketsHotbar = NodePath("MarginContainer/Control/Hotbar/PanelContainer/Seedpackets")
-SunCounter = NodePath("MarginContainer/Control/Hotbar/SunCounter")
-
-[node name="MarginContainer" type="MarginContainer" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-theme_override_constants/margin_left = 8
-theme_override_constants/margin_top = 0
-theme_override_constants/margin_right = 8
-theme_override_constants/margin_bottom = 0
-
-[node name="Control" type="Control" parent="MarginContainer"]
-layout_mode = 2
-mouse_filter = 2
-
-[node name="Hotbar" type="HBoxContainer" parent="MarginContainer/Control"]
-layout_mode = 1
-anchors_preset = -1
-anchor_right = 1.0
-anchor_bottom = 0.16
-grow_horizontal = 2
-mouse_filter = 2
-
-[node name="SunCounter" parent="MarginContainer/Control/Hotbar" instance=ExtResource("1_le3od")]
-layout_mode = 2
-
-[node name="PanelContainer" type="PanelContainer" parent="MarginContainer/Control/Hotbar"]
-custom_minimum_size = Vector2(377, 64)
-layout_mode = 2
-theme_override_styles/panel = SubResource("StyleBoxTexture_ps2iw")
-script = ExtResource("5_xq48m")
-
-[node name="Seedpackets" type="HBoxContainer" parent="MarginContainer/Control/Hotbar/PanelContainer"]
-process_mode = 3
-layout_mode = 2
-mouse_filter = 2
-theme_override_constants/separation = 0
-
-[node name="ShortcutSetter" type="Node" parent="MarginContainer/Control/Hotbar/PanelContainer" node_paths=PackedStringArray("hotbar")]
-process_mode = 1
-script = ExtResource("5_5kkbf")
-shortcuts = Array[Shortcut]([SubResource("Shortcut_hmpwl"), SubResource("Shortcut_s6pj4"), SubResource("Shortcut_k8sc7"), SubResource("Shortcut_lxteg"), SubResource("Shortcut_q5vyg"), SubResource("Shortcut_6awm7"), SubResource("Shortcut_dsi7v"), SubResource("Shortcut_d5mmq"), SubResource("Shortcut_yda1n"), SubResource("Shortcut_lnrbg")])
-hotbar = NodePath("../Seedpackets")
-
-[node name="Space" type="Control" parent="MarginContainer/Control/Hotbar"]
-layout_mode = 2
-size_flags_horizontal = 3
-
-[node name="ShovelButton" parent="MarginContainer/Control/Hotbar" instance=ExtResource("3_bheea")]
-layout_mode = 2
-size_flags_horizontal = 1
-size_flags_vertical = 4
-shortcut = SubResource("Shortcut_cti1a")
-particles = ExtResource("6_5jtun")
-
-[node name="ChannelPlayer" type="Node" parent="MarginContainer/Control/Hotbar/ShovelButton"]
-script = ExtResource("7_5kkbf")
-audioStream = ExtResource("8_xq48m")
-channel = "shovel"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="FastForwardButton" parent="MarginContainer/Control/Hotbar" node_paths=PackedStringArray("flashAnimator") instance=ExtResource("4_66uy4")]
-layout_mode = 2
-shortcut = SubResource("Shortcut_xq48m")
-flashAnimator = NodePath("../../../../FastForwardEffect/AnimationPlayer")
-
-[node name="ChannelPlayer" type="Node" parent="MarginContainer/Control/Hotbar/FastForwardButton"]
-script = ExtResource("7_5kkbf")
-channel = "fastfw"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="PauseButton" parent="MarginContainer/Control/Hotbar" instance=ExtResource("5_jyq78")]
-process_mode = 3
-layout_mode = 2
-shortcut = SubResource("Shortcut_s07y0")
-
-[node name="FastForwardEffect" type="ColorRect" parent="."]
-z_index = 1
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-color = Color(0.000150553, 0.938204, 0.707471, 0)
-metadata/_edit_lock_ = true
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="FastForwardEffect"]
-libraries = {
-&"": SubResource("AnimationLibrary_myv2j")
-}
-
-[connection signal="pressed" from="MarginContainer/Control/Hotbar/ShovelButton" to="MarginContainer/Control/Hotbar/ShovelButton/ChannelPlayer" method="Play"]
diff --git a/scenes/gui/seedpacket.tscn b/scenes/gui/seedpacket.tscn
index aa1c80b..c0a72ab 100644
--- a/scenes/gui/seedpacket.tscn
+++ b/scenes/gui/seedpacket.tscn
@@ -1,123 +1,92 @@
-[gd_scene load_steps=12 format=3 uid="uid://e7vutg71l6f2"]
+[gd_scene load_steps=12 format=3 uid="uid://bi4c34ii72y46"]
-[ext_resource type="Texture2D" uid="uid://dxyf557m4mq1p" path="res://assets/sprites/gui/EmptyPlantCard.png" id="1_77bw1"]
-[ext_resource type="Texture2D" uid="uid://cabpf23ndlvx0" path="res://assets/sprites/gui/Selection.tres" id="3_q0tvq"]
-[ext_resource type="Texture2D" uid="uid://cjkwy3u0wuax3" path="res://assets/sprites/gui/ForbiddenPacket.tres" id="4_6k60q"]
-[ext_resource type="Script" uid="uid://cn6ddajdtf4ep" path="res://scripts/gui/seedpackets/Seedpacket.cs" id="4_c6epd"]
-[ext_resource type="Script" uid="uid://chag6sgjsjb2u" path="res://scripts/gui/seedpackets/CostVeil.cs" id="4_gtmhg"]
-[ext_resource type="Shader" uid="uid://dcp5tqcec2oi3" path="res://assets/shaders/gui_masking.gdshader" id="5_s5861"]
-[ext_resource type="Texture2D" uid="uid://c1p5iswlquo4o" path="res://assets/sprites/gui/LockedPacket.tres" id="5_tvxj3"]
-[ext_resource type="Texture2D" uid="uid://c1afy0ga6h1ic" path="res://assets/sprites/white_box.png" id="6_lp42h"]
-[ext_resource type="Script" uid="uid://ddi84kmmq1qla" path="res://scripts/gui/VeilResizer.cs" id="7_tv07f"]
+[ext_resource type="Texture2D" uid="uid://dxyf557m4mq1p" path="res://assets/sprites/gui/EmptyPlantCard.png" id="1_4rm55"]
+[ext_resource type="Script" uid="uid://cepaa3acqx70d" path="res://scripts/gui/seedpacket/seedpacket.gd" id="1_c8vxi"]
+[ext_resource type="Texture2D" uid="uid://cabpf23ndlvx0" path="res://assets/sprites/gui/Selection.tres" id="3_fon4l"]
+[ext_resource type="Script" uid="uid://bppehhpn0u7ep" path="res://scripts/gui/seedpacket/seedpacket_cost_label.gd" id="3_tntkr"]
+[ext_resource type="Script" uid="uid://bx7k7g0ebkwef" path="res://scripts/gui/seedpacket/seedpacket_progressbar.gd" id="4_gr8e8"]
+[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="5_2cmc5"]
-[sub_resource type="LabelSettings" id="LabelSettings_js4li"]
+[sub_resource type="LabelSettings" id="LabelSettings_c8vxi"]
resource_local_to_scene = true
-font_size = 13
+font_size = 10
font_color = Color(0, 0, 0, 1)
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_qxf0q"]
-shader = ExtResource("5_s5861")
-shader_parameter/mask = ExtResource("1_77bw1")
+[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_tntkr"]
-[node name="Seedpacket" type="TextureButton"]
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gr8e8"]
+bg_color = Color(0.12, 0.12, 0.12, 0.490196)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_fon4l"]
+atlas = ExtResource("5_2cmc5")
+region = Rect2(475, 68, 39, 51)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_gtmhg"]
+atlas = ExtResource("5_2cmc5")
+region = Rect2(561, 78, 28, 33)
+
+[node name="Seedpacket" type="AspectRatioContainer"]
anchors_preset = -1
-anchor_right = 0.137
-anchor_bottom = 0.28
-offset_right = -0.199997
-mouse_default_cursor_shape = 2
-texture_normal = ExtResource("1_77bw1")
-texture_focused = ExtResource("3_q0tvq")
-stretch_mode = 0
-script = ExtResource("4_c6epd")
-metadata/_edit_use_anchors_ = true
+anchor_right = 0.068
+anchor_bottom = 0.14
+offset_right = 0.199997
+ratio = 0.7321
+script = ExtResource("1_c8vxi")
-[node name="Cost" type="Label" parent="."]
+[node name="TextureButton" type="TextureButton" parent="."]
+clip_children = 2
+layout_mode = 2
+texture_normal = ExtResource("1_4rm55")
+texture_focused = ExtResource("3_fon4l")
+stretch_mode = 0
+
+[node name="Cost" type="Label" parent="TextureButton"]
layout_mode = 1
anchors_preset = -1
-anchor_left = 0.146
-anchor_top = 0.732
-anchor_right = 0.854
-anchor_bottom = 0.893
-offset_left = 0.0279989
-offset_top = 0.0159912
-offset_right = -0.0279999
-offset_bottom = -0.0160065
-grow_horizontal = 2
-grow_vertical = 2
-label_settings = SubResource("LabelSettings_js4li")
+anchor_left = 0.122
+anchor_top = 0.714
+anchor_right = 0.878
+anchor_bottom = 0.911
+offset_left = -0.00200033
+offset_top = 0.0159988
+offset_right = 0.0019989
+offset_bottom = -0.0159988
+label_settings = SubResource("LabelSettings_c8vxi")
horizontal_alignment = 1
vertical_alignment = 1
-text_overrun_behavior = 3
+text_overrun_behavior = 1
+visible_characters_behavior = 1
+script = ExtResource("3_tntkr")
-[node name="PlantPreviewContainer" type="Control" parent="."]
+[node name="PreviewContainer" type="Control" parent="TextureButton"]
clip_contents = true
layout_mode = 1
-anchor_left = -0.061
-anchor_top = -0.036
-anchor_right = 1.061
-anchor_bottom = 0.661
-offset_left = 0.00199986
-offset_top = 0.0320001
-offset_right = -0.0019989
-offset_bottom = -0.0319977
+anchor_right = 0.976
+anchor_bottom = 0.714
+offset_left = -27.0
+offset_top = -26.0
+offset_right = 24.984
+offset_bottom = -2.984
mouse_filter = 2
-[node name="Preview" type="TextureRect" parent="PlantPreviewContainer"]
+[node name="Preview" type="TextureRect" parent="TextureButton/PreviewContainer"]
layout_mode = 1
anchors_preset = -1
-anchor_left = 0.185
-anchor_top = 0.205
-anchor_right = 0.815
-anchor_bottom = 1.333
-offset_left = -0.0200005
-offset_top = 0.00999928
-offset_right = 0.0199966
-offset_bottom = 0.0259933
+anchor_left = 0.297
+anchor_top = 0.412
+anchor_right = 0.74
+anchor_bottom = 1.302
+offset_left = -0.324001
+offset_top = 0.0439987
+offset_right = -0.0800018
+offset_bottom = -0.0259933
+grow_horizontal = 2
+grow_vertical = 2
mouse_filter = 2
-mouse_default_cursor_shape = 2
expand_mode = 1
stretch_mode = 5
-[node name="ForbiddenTexture" type="TextureRect" parent="."]
-visible = false
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = ExtResource("4_6k60q")
-
-[node name="LockedTexture" type="TextureRect" parent="."]
-visible = false
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.341463
-anchor_top = 0.339286
-anchor_right = 0.658537
-anchor_bottom = 0.660714
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-texture = ExtResource("5_tvxj3")
-expand_mode = 1
-stretch_mode = 5
-metadata/_edit_use_anchors_ = true
-
-[node name="CostVeil" type="ColorRect" parent="."]
-visible = false
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-color = Color(0, 0, 0, 0.415686)
-script = ExtResource("4_gtmhg")
-
-[node name="Veil" type="TextureProgressBar" parent="." node_paths=PackedStringArray("_referenceTimer")]
-material = SubResource("ShaderMaterial_qxf0q")
+[node name="RechargeProgress" type="ProgressBar" parent="TextureButton"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@@ -125,17 +94,49 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
+theme_override_styles/background = SubResource("StyleBoxEmpty_tntkr")
+theme_override_styles/fill = SubResource("StyleBoxFlat_gr8e8")
max_value = 1.0
-step = 0.001
fill_mode = 3
-nine_patch_stretch = true
-texture_progress = ExtResource("6_lp42h")
-tint_progress = Color(0, 0, 0, 0.501961)
-script = ExtResource("7_tv07f")
-_referenceTimer = NodePath("../RechargeTimer")
+show_percentage = false
+script = ExtResource("4_gr8e8")
+
+[node name="Availability" type="ColorRect" parent="TextureButton"]
+visible = false
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+mouse_filter = 2
+color = Color(0, 0, 0, 0.247059)
+
+[node name="Forbidden" type="TextureRect" parent="TextureButton"]
+visible = false
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+texture = SubResource("AtlasTexture_fon4l")
+
+[node name="Locked" type="TextureRect" parent="TextureButton"]
+visible = false
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+offset_left = 7.0
+offset_top = 12.0
+offset_right = -6.0
+offset_bottom = -11.0
+grow_horizontal = 2
+grow_vertical = 2
+texture = SubResource("AtlasTexture_gtmhg")
[node name="RechargeTimer" type="Timer" parent="."]
-process_mode = 1
one_shot = true
-[connection signal="focus_exited" from="." to="." method="OnUnfocused"]
+[connection signal="pressed" from="TextureButton" to="." method="on_pressed"]
diff --git a/scenes/gui/shovel_button.tscn b/scenes/gui/shovel_button.tscn
deleted file mode 100644
index b9288ee..0000000
--- a/scenes/gui/shovel_button.tscn
+++ /dev/null
@@ -1,41 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://t0vpmycj6c8j"]
-
-[ext_resource type="Shader" uid="uid://c5kv2gwtme1dk" path="res://assets/shaders/radial_progress.gdshader" id="1_jj4sa"]
-[ext_resource type="Texture2D" uid="uid://b0jta6xgl7mvc" path="res://assets/sprites/gui/shovel_button.png" id="2_jj4sa"]
-[ext_resource type="Texture2D" uid="uid://fd6drk2su0df" path="res://assets/sprites/gui/EmptyShovel.tres" id="2_pw2pj"]
-[ext_resource type="Script" uid="uid://d4dbg0us5ngxy" path="res://scripts/gui/ShovelButton.cs" id="3_u6gir"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_grw26"]
-shader = ExtResource("1_jj4sa")
-shader_parameter/region_rect = Vector4(46, 174, 51, 47)
-shader_parameter/progress = 1.0
-
-[node name="ShovelButton" type="TextureButton" node_paths=PackedStringArray("raycast", "timer")]
-material = SubResource("ShaderMaterial_grw26")
-anchors_preset = -1
-anchor_right = 0.085
-anchor_bottom = 0.117
-offset_right = -11.0
-offset_bottom = -6.8
-size_flags_horizontal = 4
-size_flags_vertical = 0
-mouse_default_cursor_shape = 2
-toggle_mode = true
-texture_normal = ExtResource("2_jj4sa")
-texture_pressed = ExtResource("2_pw2pj")
-stretch_mode = 5
-script = ExtResource("3_u6gir")
-raycast = NodePath("RayCast2D")
-timer = NodePath("Timer")
-
-[node name="RayCast2D" type="RayCast2D" parent="."]
-exclude_parent = false
-target_position = Vector2(0, 0)
-collision_mask = 24
-hit_from_inside = true
-collide_with_areas = true
-collide_with_bodies = false
-
-[node name="Timer" type="Timer" parent="."]
-wait_time = 90.0
-one_shot = true
diff --git a/scenes/gui/sun_counter.tscn b/scenes/gui/sun_counter.tscn
deleted file mode 100644
index 4d348b3..0000000
--- a/scenes/gui/sun_counter.tscn
+++ /dev/null
@@ -1,56 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://ky35veswaytr"]
-
-[ext_resource type="Texture2D" uid="uid://bhp3vuvwf7lak" path="res://assets/sprites/gui/suncounter.tres" id="1_e5x4k"]
-[ext_resource type="Theme" uid="uid://b8l285cjcgeyi" path="res://assets/themes/GameStyle.tres" id="1_vhhcn"]
-[ext_resource type="Texture2D" uid="uid://c47rflkf2wap0" path="res://assets/sprites/sun.tres" id="2_gugre"]
-[ext_resource type="Script" uid="uid://dwxohya1exdkh" path="res://scripts/gui/SunCounter.cs" id="3_qhmb8"]
-
-[sub_resource type="LabelSettings" id="LabelSettings_lxkq5"]
-font_size = 10
-font_color = Color(0, 0, 0, 1)
-
-[node name="SunCounter" type="TextureRect" node_paths=PackedStringArray("text", "sunImage")]
-anchors_preset = -1
-anchor_right = 0.082
-anchor_bottom = 0.067
-offset_right = -0.200001
-offset_bottom = 0.199999
-size_flags_vertical = 0
-theme = ExtResource("1_vhhcn")
-texture = ExtResource("1_e5x4k")
-script = ExtResource("3_qhmb8")
-text = NodePath("Label")
-sunImage = NodePath("Sun")
-
-[node name="Sun" type="TextureRect" parent="."]
-show_behind_parent = true
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.5
-anchor_top = 1.019
-anchor_right = 0.5
-anchor_bottom = 1.019
-offset_left = -22.5
-offset_top = -22.513
-offset_right = 22.5
-offset_bottom = 22.487
-pivot_offset = Vector2(23, 22)
-texture = ExtResource("2_gugre")
-
-[node name="Label" type="Label" parent="."]
-process_mode = 3
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.122
-anchor_top = 0.222
-anchor_right = 0.878
-anchor_bottom = 0.815
-offset_left = 0.0219994
-offset_top = 0.00599957
-offset_right = -0.0219994
-offset_bottom = -0.00500107
-text = "0"
-label_settings = SubResource("LabelSettings_lxkq5")
-horizontal_alignment = 1
-vertical_alignment = 1
-text_overrun_behavior = 3
diff --git a/scenes/gui/wave_progress.tscn b/scenes/gui/wave_progress.tscn
deleted file mode 100644
index a6ed04e..0000000
--- a/scenes/gui/wave_progress.tscn
+++ /dev/null
@@ -1,34 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://c668qnmmpli5r"]
-
-[ext_resource type="Texture2D" uid="uid://oxjkxtyw0xx0" path="res://assets/sprites/wave-progress/UnderTexture.tres" id="1_60lfm"]
-[ext_resource type="Texture2D" uid="uid://dbt3asr2jel6" path="res://assets/sprites/wave-progress/Fill.tres" id="2_7f727"]
-[ext_resource type="Script" uid="uid://bsnt4slsbathn" path="res://scripts/gui/WaveProgress.cs" id="3_u57hj"]
-[ext_resource type="Texture2D" uid="uid://bjpea7iqweexm" path="res://assets/sprites/wave-progress/Head.tres" id="4_5xdew"]
-
-[node name="WaveProgress" type="TextureProgressBar"]
-anchors_preset = -1
-anchor_right = 0.238
-anchor_bottom = 0.05
-offset_right = 0.199997
-step = 0.01
-fill_mode = 1
-stretch_margin_left = 20
-texture_under = ExtResource("1_60lfm")
-texture_progress = ExtResource("2_7f727")
-texture_progress_offset = Vector2(3, 5)
-script = ExtResource("3_u57hj")
-
-[node name="Head" type="TextureRect" parent="."]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 1.0
-anchor_top = 0.5
-anchor_right = 1.0
-anchor_bottom = 0.5
-offset_left = -11.5
-offset_top = -12.0
-offset_right = 11.5
-offset_bottom = 12.0
-texture = ExtResource("4_5xdew")
-expand_mode = 1
-stretch_mode = 5
diff --git a/scenes/level components/field_controller.tscn b/scenes/level components/field_controller.tscn
deleted file mode 100644
index 761ef55..0000000
--- a/scenes/level components/field_controller.tscn
+++ /dev/null
@@ -1,26 +0,0 @@
-[gd_scene load_steps=7 format=3 uid="uid://devn21c7luf45"]
-
-[ext_resource type="Shader" uid="uid://mt7vheq5modk" path="res://assets/shaders/greyscale.gdshader" id="1_d73yj"]
-[ext_resource type="Script" uid="uid://bj7rw2f6qu1lg" path="res://scripts/level/PlantField.cs" id="2_84bqh"]
-[ext_resource type="PackedScene" uid="uid://b4lx8adw6rbqs" path="res://scenes/particles/dirt_explosion.tscn" id="3_ddnu6"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="4_w40vd"]
-[ext_resource type="AudioStream" uid="uid://ciepttpel6dxb" path="res://assets/audio/gui/plant_generic.tres" id="5_2x1ty"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_0miwm"]
-shader = ExtResource("1_d73yj")
-shader_parameter/amount = 0.0
-
-[node name="FieldController" type="Node2D"]
-material = SubResource("ShaderMaterial_0miwm")
-script = ExtResource("2_84bqh")
-particles = ExtResource("3_ddnu6")
-
-[node name="Preview" type="Node2D" parent="."]
-process_mode = 4
-use_parent_material = true
-
-[node name="PlantPlayer" type="Node" parent="."]
-script = ExtResource("4_w40vd")
-audioStream = ExtResource("5_2x1ty")
-channel = "plant"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
diff --git a/scenes/level components/invun_plant.tscn b/scenes/level components/invun_plant.tscn
deleted file mode 100644
index 8ce2892..0000000
--- a/scenes/level components/invun_plant.tscn
+++ /dev/null
@@ -1,12 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://ddp53j2ebnpyl"]
-
-[ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_1vb12"]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_2e1tv"]
-radius = 22.0227
-
-[node name="InvunPlant" instance=ExtResource("1_1vb12")]
-_maxHP = 12412
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox" index="0"]
-shape = SubResource("CircleShape2D_2e1tv")
diff --git a/scenes/level components/left_boundary_marker.tscn b/scenes/level components/left_boundary_marker.tscn
deleted file mode 100644
index a422037..0000000
--- a/scenes/level components/left_boundary_marker.tscn
+++ /dev/null
@@ -1,6 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://plc2gus4ppds"]
-
-[ext_resource type="Script" uid="uid://d2dq6f0bk7pfx" path="res://scripts/level/LeftBoundaryMarker.cs" id="1_q4xoc"]
-
-[node name="LeftBoundaryMarker" type="Marker2D"]
-script = ExtResource("1_q4xoc")
diff --git a/scenes/level components/pools.tscn b/scenes/level components/pools.tscn
deleted file mode 100644
index 2bc2d59..0000000
--- a/scenes/level components/pools.tscn
+++ /dev/null
@@ -1,29 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://cg8713v6c5w15"]
-
-[ext_resource type="Script" uid="uid://bso32xkw738sy" path="res://scripts/level/PoolContainer.cs" id="1_31ggc"]
-
-[node name="Pools" type="Node2D" node_paths=PackedStringArray("Zombies", "Plants", "Projectiles", "Structures", "Particles")]
-script = ExtResource("1_31ggc")
-Zombies = NodePath("Zombies")
-Plants = NodePath("Plants")
-Projectiles = NodePath("Projectiles")
-Structures = NodePath("Structures")
-Particles = NodePath("Particles")
-
-[node name="Zombies" type="Node2D" parent="."]
-z_index = 3
-y_sort_enabled = true
-
-[node name="Plants" type="Node2D" parent="."]
-z_index = 1
-y_sort_enabled = true
-
-[node name="Projectiles" type="Node2D" parent="."]
-z_index = 4
-y_sort_enabled = true
-
-[node name="Structures" type="Node2D" parent="."]
-z_index = 2
-y_sort_enabled = true
-
-[node name="Particles" type="Node2D" parent="."]
diff --git a/scenes/level components/right_boundary_marker.tscn b/scenes/level components/right_boundary_marker.tscn
deleted file mode 100644
index ed4b5a8..0000000
--- a/scenes/level components/right_boundary_marker.tscn
+++ /dev/null
@@ -1,6 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://jm7wm08d2mi7"]
-
-[ext_resource type="Script" uid="uid://bymylx25skfot" path="res://scripts/level/RightBoundaryMarker.cs" id="1_cf1wn"]
-
-[node name="right_boundary_marker" type="Marker2D"]
-script = ExtResource("1_cf1wn")
diff --git a/scenes/level_button.tscn b/scenes/level_button.tscn
deleted file mode 100644
index c1b64a7..0000000
--- a/scenes/level_button.tscn
+++ /dev/null
@@ -1,8 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://dylfqmo3d26ce"]
-
-[ext_resource type="Script" uid="uid://cn3q18jh2rej7" path="res://scripts/gui/LevelButton.cs" id="1_qey5e"]
-
-[node name="LevelButton" type="TextureRect"]
-offset_right = 40.0
-offset_bottom = 40.0
-script = ExtResource("1_qey5e")
diff --git a/scenes/levels/standard_level.tscn b/scenes/levels/standard_level.tscn
new file mode 100644
index 0000000..e4af382
--- /dev/null
+++ b/scenes/levels/standard_level.tscn
@@ -0,0 +1,74 @@
+[gd_scene load_steps=9 format=3 uid="uid://bh1yiiv1fi0b8"]
+
+[ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="1_3bchh"]
+[ext_resource type="Script" uid="uid://cj8mt02far5np" path="res://scripts/level/field_rect_offsetter.gd" id="1_4dbyi"]
+[ext_resource type="Script" uid="uid://cyttjwv888cb4" path="res://scripts/level/layered_entity_container.gd" id="1_ia5ss"]
+[ext_resource type="Script" uid="uid://co3yto3q7mnm7" path="res://scripts/level/level_data.gd" id="1_ssqyj"]
+[ext_resource type="Script" uid="uid://sjnxv5q4yk2" path="res://scripts/level/seedpacket_placer.gd" id="4_5r585"]
+[ext_resource type="Script" uid="uid://crlumefuo1biu" path="res://scripts/gui/plant_pick/seedpacket_generator.gd" id="6_2y6d3"]
+[ext_resource type="Script" uid="uid://cbrhnb4tp4pem" path="res://scripts/gui/plant_pick/hotbar.gd" id="7_e4b3h"]
+[ext_resource type="Script" uid="uid://60lwfjb634kd" path="res://scripts/gui/plant_pick/go_button.gd" id="8_e4b3h"]
+
+[node name="StandardLevel" type="Node"]
+
+[node name="Data" type="Node" parent="."]
+script = ExtResource("1_ssqyj")
+metadata/_custom_type_script = "uid://co3yto3q7mnm7"
+
+[node name="LayeredEntityContainer" type="Node" parent="."]
+script = ExtResource("1_ia5ss")
+
+[node name="Game" type="Node2D" parent="."]
+
+[node name="Field Start" type="Marker2D" parent="Game"]
+position = Vector2(305, 76)
+script = ExtResource("1_4dbyi")
+metadata/_edit_lock_ = true
+
+[node name="SeedpacketPlacer" type="Node2D" parent="Game" node_paths=PackedStringArray("entity_container")]
+script = ExtResource("4_5r585")
+entity_container = NodePath("../../LayeredEntityContainer")
+
+[node name="Plants" type="Node2D" parent="Game"]
+unique_name_in_owner = true
+
+[node name="Projectiles" type="Node2D" parent="Game"]
+unique_name_in_owner = true
+
+[node name="Background" type="CanvasLayer" parent="Game"]
+layer = -10
+follow_viewport_enabled = true
+
+[node name="BackgroundSummer" type="Sprite2D" parent="Game/Background"]
+texture = ExtResource("1_3bchh")
+centered = false
+metadata/_edit_lock_ = true
+
+[node name="Camera2D" type="Camera2D" parent="Game"]
+position = Vector2(517, 206)
+
+[node name="User Interface" type="CanvasLayer" parent="."]
+layer = 5
+metadata/_edit_lock_ = true
+
+[node name="GridContainer" type="GridContainer" parent="User Interface"]
+offset_left = -1.0
+offset_top = 216.0
+offset_right = 257.0
+offset_bottom = 401.0
+columns = 5
+script = ExtResource("6_2y6d3")
+
+[node name="Hotbar" type="HBoxContainer" parent="User Interface"]
+offset_left = -1.0
+offset_top = -2.0
+offset_right = 365.0
+offset_bottom = 65.0
+script = ExtResource("7_e4b3h")
+
+[node name="Button" type="Button" parent="User Interface"]
+offset_top = 178.0
+offset_right = 124.0
+offset_bottom = 210.0
+text = "next state"
+script = ExtResource("8_e4b3h")
diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn
deleted file mode 100644
index 57e395f..0000000
--- a/scenes/main_menu.tscn
+++ /dev/null
@@ -1,235 +0,0 @@
-[gd_scene load_steps=20 format=3 uid="uid://bfstrli64u23y"]
-
-[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_jk1qb"]
-[ext_resource type="Script" uid="uid://drru785m4eep" path="res://scripts/gui/main_menu_rich_text.gd" id="2_5dd4i"]
-[ext_resource type="Script" uid="uid://cghu4i3bnyavg" path="res://scripts/gui/PrototypeWindow.cs" id="2_flqon"]
-[ext_resource type="Texture2D" uid="uid://c37pvdhol2x02" path="res://assets/sprites/menu_bg.png" id="3_lgwnu"]
-[ext_resource type="Theme" uid="uid://btulhvgwclket" path="res://assets/themes/MainMenu.tres" id="4_flqon"]
-[ext_resource type="Texture2D" uid="uid://cfgkauyw7qful" path="res://assets/sprites/vertical_logo.png" id="5_1ajci"]
-[ext_resource type="Script" uid="uid://c06k4k3ww48ev" path="res://scripts/gui/menu_buttons.gd" id="5_rcqid"]
-[ext_resource type="Script" uid="uid://6e8n6kc0y11o" path="res://scripts/sacrifice.gd" id="6_1ajci"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="7_7b55j"]
-[ext_resource type="Texture2D" uid="uid://drydueofrb448" path="res://assets/sprites/gui/almanach/book.tres" id="7_flqon"]
-[ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="8_5pajh"]
-[ext_resource type="AudioStream" uid="uid://cp7c8ys8sk2r0" path="res://assets/audio/music/Toxa/Upcoming Serenity.wav" id="12_1ajci"]
-[ext_resource type="PackedScene" uid="uid://bvpt0q4j6nx18" path="res://scenes/gui/almanach.tscn" id="12_rcqid"]
-[ext_resource type="PackedScene" uid="uid://djfsa0pxqeoq1" path="res://scenes/gui/cursor_canvas_layer.tscn" id="14_1ajci"]
-
-[sub_resource type="GDScript" id="GDScript_5dd4i"]
-resource_name = "main_menu"
-script/source = "extends Control
-
-
-func _ready() -> void:
- get_tree().paused = false
- Engine.time_scale = 1.0
-"
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_5pe7g"]
-atlas = ExtResource("1_jk1qb")
-region = Rect2(226, 77, 18, 18)
-
-[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_jl0ue"]
-texture = SubResource("AtlasTexture_5pe7g")
-texture_margin_left = 6.0
-texture_margin_top = 6.0
-texture_margin_right = 6.0
-texture_margin_bottom = 6.0
-
-[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_7b55j"]
-stream_count = 1
-stream_0 = ExtResource("12_1ajci")
-
-[sub_resource type="GDScript" id="GDScript_flqon"]
-resource_name = "version_label"
-script/source = "extends Label
-
-
-func _ready() -> void:
- text = ProjectSettings.get_setting(\"application/config/version\")
-
-"
-
-[node name="MainMenu" type="Control"]
-process_mode = 3
-layout_mode = 3
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-script = SubResource("GDScript_5dd4i")
-
-[node name="PrototypeWindow" type="AcceptDialog" parent="."]
-canvas_item_default_texture_filter = 0
-title = ""
-size = Vector2i(600, 400)
-unresizable = true
-borderless = true
-theme_override_styles/panel = SubResource("StyleBoxTexture_jl0ue")
-ok_button_text = "close"
-dialog_close_on_escape = false
-script = ExtResource("2_flqon")
-
-[node name="ScrollContainer" type="ScrollContainer" parent="PrototypeWindow"]
-offset_left = 6.0
-offset_top = 6.0
-offset_right = 594.0
-offset_bottom = 343.0
-
-[node name="PrototypeNotification" type="RichTextLabel" parent="PrototypeWindow/ScrollContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-size_flags_vertical = 3
-bbcode_enabled = true
-text = "lon_proto"
-fit_content = true
-scroll_active = false
-script = ExtResource("2_5dd4i")
-
-[node name="AboutWindow" type="AcceptDialog" parent="."]
-canvas_item_default_texture_filter = 0
-title = ""
-initial_position = 2
-size = Vector2i(300, 300)
-unresizable = true
-borderless = true
-ok_button_text = "close"
-
-[node name="ScrollContainer" type="ScrollContainer" parent="AboutWindow"]
-offset_left = 8.0
-offset_top = 8.0
-offset_right = 292.0
-offset_bottom = 241.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-
-[node name="AboutText" type="RichTextLabel" parent="AboutWindow/ScrollContainer"]
-layout_mode = 2
-size_flags_horizontal = 3
-bbcode_enabled = true
-text = "about_screen"
-fit_content = true
-scroll_active = false
-
-[node name="BG" type="TextureRect" parent="."]
-z_index = -1
-layout_mode = 0
-offset_right = 40.0
-offset_bottom = 40.0
-texture = ExtResource("3_lgwnu")
-metadata/_edit_lock_ = true
-
-[node name="TextureRect" type="TextureRect" parent="."]
-layout_mode = 0
-offset_left = 197.0
-offset_top = 181.0
-offset_right = 402.0
-offset_bottom = 248.0
-texture = ExtResource("5_1ajci")
-expand_mode = 2
-stretch_mode = 5
-
-[node name="Buttons" type="Control" parent="."]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-theme = ExtResource("4_flqon")
-script = ExtResource("5_rcqid")
-metadata/_edit_lock_ = true
-
-[node name="GameButtons" type="VBoxContainer" parent="Buttons"]
-layout_mode = 0
-offset_left = 504.0
-offset_top = 177.0
-offset_right = 596.0
-offset_bottom = 275.0
-
-[node name="PlayButton" type="Button" parent="Buttons/GameButtons"]
-layout_mode = 2
-text = "play"
-
-[node name="ExitButton" type="Button" parent="Buttons/GameButtons"]
-layout_mode = 2
-text = "exit"
-
-[node name="InfoButtons" type="VBoxContainer" parent="Buttons"]
-layout_mode = 0
-offset_left = 10.0
-offset_top = 188.0
-offset_right = 86.0
-offset_bottom = 235.0
-
-[node name="AboutButton" type="Button" parent="Buttons/InfoButtons"]
-layout_mode = 2
-text = "about"
-
-[node name="SplashButton" type="Button" parent="Buttons/InfoButtons"]
-layout_mode = 2
-text = "splash"
-
-[node name="AlmanachButton" type="Button" parent="Buttons/InfoButtons"]
-layout_mode = 2
-icon = ExtResource("7_flqon")
-icon_alignment = 1
-
-[node name="SACRIFICE" type="TextureButton" parent="Buttons"]
-layout_mode = 0
-offset_left = 338.0
-offset_top = 254.0
-offset_right = 387.0
-offset_bottom = 278.0
-script = ExtResource("6_1ajci")
-
-[node name="CONFIRM" type="AcceptDialog" parent="Buttons/SACRIFICE"]
-title = ""
-initial_position = 1
-size = Vector2i(359, 100)
-ok_button_text = ""
-dialog_text = " ?
-"
-
-[node name="ChannelPlayer" type="Node" parent="Buttons"]
-script = ExtResource("7_7b55j")
-audioStream = ExtResource("8_5pajh")
-channel = "button"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
-stream = SubResource("AudioStreamPlaylist_7b55j")
-volume_db = -20.0
-autoplay = true
-bus = &"MusicBus"
-
-[node name="Almanach" parent="." instance=ExtResource("12_rcqid")]
-visible = false
-layout_mode = 1
-
-[node name="VersionLabel" type="Label" parent="."]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.823
-anchor_top = 0.957
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = 0.199982
-offset_top = 0.199982
-grow_horizontal = 0
-grow_vertical = 0
-horizontal_alignment = 2
-vertical_alignment = 1
-script = SubResource("GDScript_flqon")
-
-[node name="CursorCanvasLayer" parent="." instance=ExtResource("14_1ajci")]
-
-[connection signal="meta_clicked" from="PrototypeWindow/ScrollContainer/PrototypeNotification" to="PrototypeWindow/ScrollContainer/PrototypeNotification" method="_on_meta_clicked"]
-[connection signal="pressed" from="Buttons/GameButtons/PlayButton" to="Buttons" method="_on_play_button_pressed"]
-[connection signal="pressed" from="Buttons/GameButtons/ExitButton" to="Buttons" method="_on_exit_button_pressed"]
-[connection signal="pressed" from="Buttons/InfoButtons/AboutButton" to="Buttons" method="_on_button_pressed"]
-[connection signal="pressed" from="Buttons/InfoButtons/SplashButton" to="Buttons" method="_on_splash_button_pressed"]
-[connection signal="pressed" from="Buttons/InfoButtons/AlmanachButton" to="Buttons" method="_on_almanach_button_pressed"]
-[connection signal="close_requested" from="Buttons/SACRIFICE/CONFIRM" to="Buttons/SACRIFICE" method="_on_confirm_close_requested"]
-[connection signal="confirmed" from="Buttons/SACRIFICE/CONFIRM" to="Buttons/SACRIFICE" method="_on_confirm_confirmed"]
diff --git a/scenes/particles/aloe_effect.tscn b/scenes/particles/aloe_effect.tscn
deleted file mode 100644
index 591a1ff..0000000
--- a/scenes/particles/aloe_effect.tscn
+++ /dev/null
@@ -1,155 +0,0 @@
-[gd_scene load_steps=14 format=3 uid="uid://b3na62o5pu1gt"]
-
-[ext_resource type="Texture2D" uid="uid://k60ylegy845j" path="res://assets/sprites/atlases/tile_animations.png" id="1_4r1tv"]
-[ext_resource type="Script" uid="uid://5ve2i0iu5oxr" path="res://scripts/particles/MixedParticles.cs" id="1_ftbe0"]
-[ext_resource type="Texture2D" uid="uid://c68mrfs4wb81x" path="res://assets/sprites/atlases/atlas2.png" id="2_mhmlv"]
-
-[sub_resource type="Animation" id="Animation_mhmlv"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [0]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Sprite2D/GPUParticles2D:emitting")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Sprite2D:self_modulate")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-
-[sub_resource type="Animation" id="Animation_4r1tv"]
-resource_name = "main"
-length = 1.33334
-step = 0.0833333
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.166667, 0.333333, 0.728266, 0.916667),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
-"update": 1,
-"values": [0, 1, 2, 1, 0]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Sprite2D/GPUParticles2D:emitting")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 0.333333),
-"transitions": PackedFloat32Array(1, 1),
-"update": 1,
-"values": [false, true]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Sprite2D:self_modulate")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0.916667, 1.33333),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_ftbe0"]
-_data = {
-&"RESET": SubResource("Animation_mhmlv"),
-&"main": SubResource("Animation_4r1tv")
-}
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_mhmlv"]
-atlas = ExtResource("1_4r1tv")
-region = Rect2(150, 0, 150, 50)
-filter_clip = true
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_ftbe0"]
-atlas = ExtResource("2_mhmlv")
-region = Rect2(79, 102, 15, 15)
-
-[sub_resource type="Curve" id="Curve_ftbe0"]
-_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1e-05, 0), 0.0, 0.0, 0, 0, Vector2(0.152284, 1), 0.0, 0.0, 0, 0]
-point_count = 3
-
-[sub_resource type="CurveTexture" id="CurveTexture_100so"]
-curve = SubResource("Curve_ftbe0")
-
-[sub_resource type="Curve" id="Curve_q4bj6"]
-_data = [Vector2(0, 1), 0.0, -1.0, 0, 1, Vector2(1, 0), -1.0, 0.0, 1, 0]
-point_count = 2
-
-[sub_resource type="CurveTexture" id="CurveTexture_dajq0"]
-curve = SubResource("Curve_q4bj6")
-
-[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_100so"]
-particle_flag_disable_z = true
-emission_shape = 1
-emission_sphere_radius = 20.0
-direction = Vector3(0, -1, 0)
-spread = 0.0
-flatness = 1.0
-initial_velocity_min = 115.79
-initial_velocity_max = 115.79
-scale_curve = SubResource("CurveTexture_dajq0")
-alpha_curve = SubResource("CurveTexture_100so")
-
-[node name="AloeEffect" type="Node2D" node_paths=PackedStringArray("emitter")]
-script = ExtResource("1_ftbe0")
-emitter = NodePath("Sprite2D/GPUParticles2D")
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_ftbe0")
-}
-autoplay = "main"
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-z_index = -1
-z_as_relative = false
-position = Vector2(0, 22)
-texture = SubResource("AtlasTexture_mhmlv")
-offset = Vector2(0, -13.1)
-hframes = 3
-
-[node name="GPUParticles2D" type="GPUParticles2D" parent="Sprite2D"]
-z_index = 50
-z_as_relative = false
-position = Vector2(0, -1)
-emitting = false
-texture = SubResource("AtlasTexture_ftbe0")
-one_shot = true
-explosiveness = 0.25
-fixed_fps = 60
-process_material = SubResource("ParticleProcessMaterial_100so")
diff --git a/scenes/particles/dirt_explosion.tscn b/scenes/particles/dirt_explosion.tscn
deleted file mode 100644
index 15208c7..0000000
--- a/scenes/particles/dirt_explosion.tscn
+++ /dev/null
@@ -1,73 +0,0 @@
-[gd_scene load_steps=9 format=3 uid="uid://b4lx8adw6rbqs"]
-
-[ext_resource type="Texture2D" uid="uid://d3673b2idj18b" path="res://assets/sprites/particles/dirt1.tres" id="1_nc6dt"]
-[ext_resource type="Script" uid="uid://dxcd70o6aa7pr" path="res://scripts/particles/StandardParticles.cs" id="1_o2lv2"]
-[ext_resource type="Material" uid="uid://dmpscw60bfrj" path="res://assets/sprites/particles/dirt_material.tres" id="2_o2lv2"]
-[ext_resource type="Texture2D" uid="uid://bs8cll4gtgwr1" path="res://assets/sprites/particles/dirt2.tres" id="3_0gemy"]
-[ext_resource type="Texture2D" uid="uid://0tja7r7yp1ht" path="res://assets/sprites/particles/dirt3.tres" id="4_ihbjc"]
-[ext_resource type="Texture2D" uid="uid://conyd86prykef" path="res://assets/sprites/particles/dirt4.tres" id="5_hu2fb"]
-[ext_resource type="Texture2D" uid="uid://u6vxm6gejoss" path="res://assets/sprites/particles/dirt5.tres" id="6_bwqux"]
-[ext_resource type="Texture2D" uid="uid://biooadlxqqeos" path="res://assets/sprites/particles/dirt6.tres" id="7_ee6l0"]
-
-[node name="DirtExplosion" type="Node2D"]
-script = ExtResource("1_o2lv2")
-
-[node name="First" type="GPUParticles2D" parent="."]
-emitting = false
-amount = 3
-texture = ExtResource("1_nc6dt")
-one_shot = true
-explosiveness = 1.0
-randomness = 0.11
-local_coords = true
-process_material = ExtResource("2_o2lv2")
-
-[node name="Second" type="GPUParticles2D" parent="."]
-emitting = false
-amount = 3
-texture = ExtResource("3_0gemy")
-one_shot = true
-explosiveness = 1.0
-randomness = 0.11
-local_coords = true
-process_material = ExtResource("2_o2lv2")
-
-[node name="Third" type="GPUParticles2D" parent="."]
-emitting = false
-amount = 3
-texture = ExtResource("4_ihbjc")
-one_shot = true
-explosiveness = 1.0
-randomness = 0.11
-local_coords = true
-process_material = ExtResource("2_o2lv2")
-
-[node name="Fourth" type="GPUParticles2D" parent="."]
-emitting = false
-amount = 3
-texture = ExtResource("5_hu2fb")
-one_shot = true
-explosiveness = 1.0
-randomness = 0.11
-local_coords = true
-process_material = ExtResource("2_o2lv2")
-
-[node name="Fifth" type="GPUParticles2D" parent="."]
-emitting = false
-amount = 3
-texture = ExtResource("6_bwqux")
-one_shot = true
-explosiveness = 1.0
-randomness = 0.11
-local_coords = true
-process_material = ExtResource("2_o2lv2")
-
-[node name="Sixth" type="GPUParticles2D" parent="."]
-emitting = false
-amount = 3
-texture = ExtResource("7_ee6l0")
-one_shot = true
-explosiveness = 1.0
-randomness = 0.11
-local_coords = true
-process_material = ExtResource("2_o2lv2")
diff --git a/scenes/particles/pea_particles.tscn b/scenes/particles/pea_particles.tscn
deleted file mode 100644
index 456b56d..0000000
--- a/scenes/particles/pea_particles.tscn
+++ /dev/null
@@ -1,36 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://1d33w4ubtury"]
-
-[ext_resource type="Script" uid="uid://dxcd70o6aa7pr" path="res://scripts/particles/StandardParticles.cs" id="1_rhijc"]
-[ext_resource type="Texture2D" uid="uid://d1ovwgd03fxx5" path="res://assets/sprites/particles/pea_fragment1.tres" id="1_wg12m"]
-[ext_resource type="Material" uid="uid://0sf0uy1dkxb6" path="res://assets/sprites/particles/pea_material.tres" id="2_rhijc"]
-[ext_resource type="Texture2D" uid="uid://bmig582h4s38v" path="res://assets/sprites/particles/pea_fragment2.tres" id="3_yroe6"]
-[ext_resource type="Texture2D" uid="uid://cg3nx7qj8kbkw" path="res://assets/sprites/particles/pea_fragment3.tres" id="4_bbhkw"]
-
-[node name="PeaParticles" type="Node2D"]
-script = ExtResource("1_rhijc")
-
-[node name="First" type="GPUParticles2D" parent="."]
-emitting = false
-amount = 1
-texture = ExtResource("1_wg12m")
-one_shot = true
-explosiveness = 1.0
-process_material = ExtResource("2_rhijc")
-
-[node name="Second" type="GPUParticles2D" parent="."]
-emitting = false
-amount = 1
-texture = ExtResource("3_yroe6")
-one_shot = true
-explosiveness = 1.0
-randomness = 0.15
-process_material = ExtResource("2_rhijc")
-
-[node name="Third" type="GPUParticles2D" parent="."]
-emitting = false
-amount = 1
-texture = ExtResource("4_bbhkw")
-one_shot = true
-explosiveness = 1.0
-randomness = 0.15
-process_material = ExtResource("2_rhijc")
diff --git a/scenes/particles/potato_explosion.tscn b/scenes/particles/potato_explosion.tscn
deleted file mode 100644
index c2b63b8..0000000
--- a/scenes/particles/potato_explosion.tscn
+++ /dev/null
@@ -1,58 +0,0 @@
-[gd_scene load_steps=8 format=3 uid="uid://ckanq33rao1ur"]
-
-[ext_resource type="PackedScene" uid="uid://b4lx8adw6rbqs" path="res://scenes/particles/dirt_explosion.tscn" id="1_c4q5e"]
-[ext_resource type="Texture2D" uid="uid://cad45iyh16x5g" path="res://assets/sprites/particles/nachinka1.tres" id="2_lgu5b"]
-[ext_resource type="Material" uid="uid://dvjxab8lnj6ap" path="res://assets/sprites/particles/potato_material.tres" id="3_lgu5b"]
-[ext_resource type="Texture2D" uid="uid://b3yfl2had6t3o" path="res://assets/sprites/particles/nachinka2.tres" id="4_xwh7c"]
-[ext_resource type="Texture2D" uid="uid://e5v4vpux4h8k" path="res://assets/sprites/particles/nachinka3.tres" id="5_ryjsf"]
-[ext_resource type="Texture2D" uid="uid://dny6mfpspd3o8" path="res://assets/sprites/particles/nachinka4.tres" id="6_ursbv"]
-[ext_resource type="Script" uid="uid://b8v8xrsyswmg4" path="res://scripts/gamepad/ExplosionVibration.cs" id="7_xwh7c"]
-
-[node name="PotatoExplosion" instance=ExtResource("1_c4q5e")]
-
-[node name="Nachinka" type="GPUParticles2D" parent="." index="6"]
-emitting = false
-amount = 2
-texture = ExtResource("2_lgu5b")
-lifetime = 2.0
-one_shot = true
-explosiveness = 1.0
-randomness = 0.11
-local_coords = true
-process_material = ExtResource("3_lgu5b")
-
-[node name="Nachinka2" type="GPUParticles2D" parent="." index="7"]
-emitting = false
-amount = 2
-texture = ExtResource("4_xwh7c")
-lifetime = 2.0
-one_shot = true
-explosiveness = 1.0
-randomness = 0.11
-local_coords = true
-process_material = ExtResource("3_lgu5b")
-
-[node name="Nachinka3" type="GPUParticles2D" parent="." index="8"]
-emitting = false
-amount = 2
-texture = ExtResource("5_ryjsf")
-lifetime = 2.0
-one_shot = true
-explosiveness = 1.0
-randomness = 0.11
-local_coords = true
-process_material = ExtResource("3_lgu5b")
-
-[node name="Nachinka4" type="GPUParticles2D" parent="." index="9"]
-emitting = false
-amount = 2
-texture = ExtResource("6_ursbv")
-lifetime = 2.0
-one_shot = true
-explosiveness = 1.0
-randomness = 0.11
-local_coords = true
-process_material = ExtResource("3_lgu5b")
-
-[node name="VibrationController" type="Node" parent="." index="10"]
-script = ExtResource("7_xwh7c")
diff --git a/scenes/particles/snow_pea_particles.tscn b/scenes/particles/snow_pea_particles.tscn
deleted file mode 100644
index 76e30a6..0000000
--- a/scenes/particles/snow_pea_particles.tscn
+++ /dev/null
@@ -1,17 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://cijchi3f01q2t"]
-
-[ext_resource type="PackedScene" uid="uid://1d33w4ubtury" path="res://scenes/particles/pea_particles.tscn" id="1_5fx7g"]
-[ext_resource type="Texture2D" uid="uid://el3weu727cmo" path="res://assets/sprites/particles/snowpea_fragment1.tres" id="2_fb47t"]
-[ext_resource type="Texture2D" uid="uid://rv2ibl8ls1kh" path="res://assets/sprites/particles/snowpea_fragment2.tres" id="3_5frrb"]
-[ext_resource type="Texture2D" uid="uid://bgg1n8802ebm6" path="res://assets/sprites/particles/snowpea_fragment3.tres" id="4_hwfh3"]
-
-[node name="SnowPeaParticles" instance=ExtResource("1_5fx7g")]
-
-[node name="First" parent="." index="0"]
-texture = ExtResource("2_fb47t")
-
-[node name="Second" parent="." index="1"]
-texture = ExtResource("3_5frrb")
-
-[node name="Third" parent="." index="2"]
-texture = ExtResource("4_hwfh3")
diff --git a/scenes/plants/aloe.tscn b/scenes/plants/aloe.tscn
new file mode 100644
index 0000000..db2640a
--- /dev/null
+++ b/scenes/plants/aloe.tscn
@@ -0,0 +1,15 @@
+[gd_scene load_steps=3 format=3 uid="uid://dba4s3ke32u0l"]
+
+[ext_resource type="Texture2D" uid="uid://d4btl7vqi4v0q" path="res://assets/sprites/plants/aloe.tres" id="1_38l32"]
+[ext_resource type="Script" uid="uid://bwdvaov8sse4k" path="res://scripts/entities/entity.gd" id="1_yhqjp"]
+
+[node name="Aloe" type="Node2D" groups=["Plants"]]
+
+[node name="Entity" type="Node" parent="."]
+script = ExtResource("1_yhqjp")
+max_hp = 30.0
+layer = &"base"
+metadata/_custom_type_script = "uid://bwdvaov8sse4k"
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+texture = ExtResource("1_38l32")
diff --git a/scenes/plants/peashooter.tscn b/scenes/plants/peashooter.tscn
new file mode 100644
index 0000000..2b153df
--- /dev/null
+++ b/scenes/plants/peashooter.tscn
@@ -0,0 +1,187 @@
+[gd_scene load_steps=23 format=3 uid="uid://bxs34adppsh5e"]
+
+[ext_resource type="Texture2D" uid="uid://cksryh4w5dbbx" path="res://assets/sprites/atlases/plants/peashooter.png" id="2_4l0yo"]
+[ext_resource type="Script" uid="uid://bwdvaov8sse4k" path="res://scripts/entities/entity.gd" id="2_pk084"]
+[ext_resource type="Script" uid="uid://be5rfbbl5xgeh" path="res://scripts/components/generic_collider.gd" id="3_2lnl7"]
+[ext_resource type="Script" uid="uid://cbmavbe4xd0j2" path="res://scripts/speed_controlled/speed_controlled_animation_tree.gd" id="3_gkdjr"]
+[ext_resource type="Script" uid="uid://cbudgx741oxtc" path="res://scripts/components/generic_hurtbox.gd" id="5_gkdjr"]
+[ext_resource type="Script" uid="uid://cjulv0bt6deps" path="res://scripts/components/field_segment_shape.gd" id="6_tf8ra"]
+[ext_resource type="Script" uid="uid://b0ka8lb5kl1fd" path="res://scripts/components/controllers/plants/peashooter_controller.gd" id="8_0ridr"]
+[ext_resource type="Script" uid="uid://d17rkta3k73jx" path="res://scripts/components/plant_death_handler.gd" id="8_6jrfv"]
+
+[sub_resource type="Animation" id="Animation_tf8ra"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Sprite2D: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_gkdjr"]
+resource_name = "idle"
+length = 0.833342
+loop_mode = 1
+step = 0.0833333
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Sprite2D:frame")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333, 0.666667, 0.75),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 1,
+"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+}
+
+[sub_resource type="Animation" id="Animation_4l0yo"]
+resource_name = "shoot"
+length = 0.666675
+step = 0.0833333
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Sprite2D:frame")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.0833333, 0.166667, 0.25, 0.333333, 0.416667, 0.5, 0.583333),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
+"update": 1,
+"values": [10, 11, 12, 13, 14, 15, 16, 17]
+}
+tracks/1/type = "method"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Controller")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0.333333),
+"transitions": PackedFloat32Array(1),
+"values": [{
+"args": [],
+"method": &"shoot"
+}]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_0ridr"]
+_data = {
+&"RESET": SubResource("Animation_tf8ra"),
+&"idle": SubResource("Animation_gkdjr"),
+&"shoot": SubResource("Animation_4l0yo")
+}
+
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_0ridr"]
+animation = &"idle"
+
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6jrfv"]
+animation = &"shoot"
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0l7qe"]
+advance_mode = 2
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_3wvhk"]
+advance_mode = 2
+advance_expression = "is_shooting()"
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_hlvcn"]
+switch_mode = 2
+advance_mode = 2
+advance_expression = "is_shooting() == false"
+
+[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_1h4ri"]
+states/idle/node = SubResource("AnimationNodeAnimation_0ridr")
+states/idle/position = Vector2(415, 106)
+states/shoot/node = SubResource("AnimationNodeAnimation_6jrfv")
+states/shoot/position = Vector2(649, 107)
+transitions = ["Start", "idle", SubResource("AnimationNodeStateMachineTransition_0l7qe"), "idle", "shoot", SubResource("AnimationNodeStateMachineTransition_3wvhk"), "shoot", "idle", SubResource("AnimationNodeStateMachineTransition_hlvcn")]
+
+[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_0l7qe"]
+
+[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_3wvhk"]
+graph_offset = Vector2(-541.787, 73.4125)
+nodes/main/node = SubResource("AnimationNodeStateMachine_1h4ri")
+nodes/main/position = Vector2(-140, 160)
+nodes/speed/node = SubResource("AnimationNodeTimeScale_0l7qe")
+nodes/speed/position = Vector2(140, 140)
+node_connections = [&"output", 0, &"speed", &"speed", 0, &"main"]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_6jrfv"]
+size = Vector2(26, 40)
+
+[sub_resource type="SegmentShape2D" id="SegmentShape2D_gkdjr"]
+b = Vector2(0, 0)
+
+[node name="Peashooter" type="Node2D" groups=["Plants"]]
+script = ExtResource("2_pk084")
+max_hp = 30.0
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+texture = ExtResource("2_4l0yo")
+hframes = 10
+vframes = 2
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+&"": SubResource("AnimationLibrary_0ridr")
+}
+
+[node name="AnimationTree" type="AnimationTree" parent="."]
+tree_root = SubResource("AnimationNodeBlendTree_3wvhk")
+advance_expression_base_node = NodePath("../Controller")
+anim_player = NodePath("../AnimationPlayer")
+parameters/speed/scale = 1.0
+script = ExtResource("3_gkdjr")
+
+[node name="GenericCollider" type="Area2D" parent="."]
+collision_layer = 2
+collision_mask = 0
+monitoring = false
+script = ExtResource("3_2lnl7")
+metadata/_custom_type_script = "uid://be5rfbbl5xgeh"
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="GenericCollider"]
+position = Vector2(0, 6)
+shape = SubResource("RectangleShape2D_6jrfv")
+
+[node name="GenericHurtbox" type="Area2D" parent="."]
+position = Vector2(17, -4)
+collision_layer = 0
+collision_mask = 4
+monitorable = false
+script = ExtResource("5_gkdjr")
+lookup_layers = 1
+metadata/_custom_type_script = "uid://cbudgx741oxtc"
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="GenericHurtbox"]
+shape = SubResource("SegmentShape2D_gkdjr")
+script = ExtResource("6_tf8ra")
+
+[node name="Controller" type="Node" parent="." node_paths=PackedStringArray("projectile_transform")]
+script = ExtResource("8_0ridr")
+projectile_transform = NodePath("../ShootMarker")
+
+[node name="Timer" type="Timer" parent="Controller"]
+wait_time = 1.5
+one_shot = true
+
+[node name="ShootMarker" type="Marker2D" parent="."]
+position = Vector2(17, -4)
+
+[node name="DeathHandler" type="Node" parent="."]
+script = ExtResource("8_6jrfv")
+
+[connection signal="killed" from="." to="DeathHandler" method="_on_killed"]
+[connection signal="toggled" from="." to="GenericCollider" method="toggle"]
+[connection signal="collision_end" from="GenericHurtbox" to="Controller" method="_on_generic_hurtbox_collision_end"]
+[connection signal="collision_start" from="GenericHurtbox" to="Controller" method="_on_generic_hurtbox_collision_start"]
+[connection signal="timeout" from="Controller/Timer" to="Controller" method="_on_timer_timeout"]
diff --git a/scenes/projectiles/cucumber_projectile.tscn b/scenes/projectiles/cucumber_projectile.tscn
deleted file mode 100644
index e3e56af..0000000
--- a/scenes/projectiles/cucumber_projectile.tscn
+++ /dev/null
@@ -1,23 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://pf8sq0bk3epn"]
-
-[ext_resource type="PackedScene" uid="uid://b2hrv0aqbui7u" path="res://scenes/projectiles/pea.tscn" id="1_iyfw1"]
-[ext_resource type="Texture2D" uid="uid://c68mrfs4wb81x" path="res://assets/sprites/atlases/atlas2.png" id="2_12o6v"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_h74iy"]
-atlas = ExtResource("2_12o6v")
-region = Rect2(24, 88, 7, 13)
-
-[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_iyfw1"]
-radius = 6.0
-height = 24.0
-
-[node name="CucumberProjectile" instance=ExtResource("1_iyfw1")]
-_speed = 5.0
-_damage = 25
-
-[node name="Sprite" parent="." index="0"]
-rotation = -1.5708
-texture = SubResource("AtlasTexture_h74iy")
-
-[node name="CollisionShape2D" parent="." index="1"]
-shape = SubResource("CapsuleShape2D_iyfw1")
diff --git a/scenes/projectiles/cucumber_projectile.tscn7043679061.tmp b/scenes/projectiles/cucumber_projectile.tscn7043679061.tmp
deleted file mode 100644
index 1e23782..0000000
--- a/scenes/projectiles/cucumber_projectile.tscn7043679061.tmp
+++ /dev/null
@@ -1,24 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://c1ig40gtdcb60"]
-
-[ext_resource type="PackedScene" uid="uid://pf8sq0bk3epn" path="res://scenes/projectiles/cucumber_projectile_part.tscn" id="1_3auks"]
-
-[sub_resource type="GDScript" id="GDScript_3auks"]
-resource_name = "cucumber"
-script/source = "extends Node2D
-
-
-func _ready() -> void:
- pass
- #get_child(0).reparent(get_parent())
- #get_child(0).reparent(get_parent())
- #queue_free()
-"
-
-[node name="CucumberProjectileScene" type="Node2D"]
-script = SubResource("GDScript_3auks")
-
-[node name="CucumberProjectile" parent="." instance=ExtResource("1_3auks")]
-rotation = 1.5708
-
-[node name="CucumberProjectile2" parent="." instance=ExtResource("1_3auks")]
-rotation = 4.71239
diff --git a/scenes/projectiles/cucumber_projectile_compound.tscn b/scenes/projectiles/cucumber_projectile_compound.tscn
deleted file mode 100644
index cfa3618..0000000
--- a/scenes/projectiles/cucumber_projectile_compound.tscn
+++ /dev/null
@@ -1,13 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://c1ig40gtdcb60"]
-
-[ext_resource type="PackedScene" uid="uid://pf8sq0bk3epn" path="res://scenes/projectiles/cucumber_projectile.tscn" id="1_3auks"]
-[ext_resource type="Script" uid="uid://j6nq8w2n8532" path="res://scripts/projectiles/CompoundProjectile.cs" id="1_pmbxx"]
-
-[node name="CucumberProjectileScene" type="Node2D"]
-script = ExtResource("1_pmbxx")
-
-[node name="CucumberProjectile" parent="." instance=ExtResource("1_3auks")]
-rotation = 1.5708
-
-[node name="CucumberProjectile2" parent="." instance=ExtResource("1_3auks")]
-rotation = 4.71239
diff --git a/scenes/projectiles/pea.tscn b/scenes/projectiles/pea.tscn
index 38ac1ef..d647bc5 100644
--- a/scenes/projectiles/pea.tscn
+++ b/scenes/projectiles/pea.tscn
@@ -1,30 +1,20 @@
-[gd_scene load_steps=5 format=3 uid="uid://b2hrv0aqbui7u"]
+[gd_scene load_steps=4 format=3 uid="uid://ciqhjwh4sfe3u"]
-[ext_resource type="Script" uid="uid://dxlwvwy3hj56x" path="res://scripts/projectiles/LinearProjectile.cs" id="1_3kc4s"]
-[ext_resource type="Texture2D" uid="uid://dq0mul65hevtt" path="res://assets/sprites/plants/pea.tres" id="2_26q5x"]
-[ext_resource type="PackedScene" uid="uid://1d33w4ubtury" path="res://scenes/particles/pea_particles.tscn" id="2_osqrk"]
+[ext_resource type="Script" uid="uid://fgdhvaq4dek2" path="res://scripts/projectiles/linear_projectile.gd" id="1_qt432"]
+[ext_resource type="Texture2D" uid="uid://dq0mul65hevtt" path="res://assets/sprites/plants/pea.tres" id="2_inkwd"]
-[sub_resource type="CircleShape2D" id="CircleShape2D_ix1sk"]
+[sub_resource type="CircleShape2D" id="CircleShape2D_osqrk"]
radius = 6.0
[node name="Pea" type="Area2D"]
-collision_layer = 4
-collision_mask = 8
-script = ExtResource("1_3kc4s")
-_speed = 3.0
-_damage = 10
-particles = ExtResource("2_osqrk")
+collision_layer = 8
+collision_mask = 4
+script = ExtResource("1_qt432")
+speed = 300.0
+damage = 10.0
-[node name="Sprite" type="Sprite2D" parent="."]
-texture = ExtResource("2_26q5x")
+[node name="Sprite2D" type="Sprite2D" parent="."]
+texture = ExtResource("2_inkwd")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource("CircleShape2D_ix1sk")
-
-[node name="Timer" type="Timer" parent="."]
-wait_time = 15.0
-one_shot = true
-autostart = true
-
-[connection signal="area_entered" from="." to="." method="OnAreaEntered"]
-[connection signal="timeout" from="Timer" to="." method="queue_free"]
+shape = SubResource("CircleShape2D_osqrk")
diff --git a/scenes/projectiles/repeater_projectile.tscn b/scenes/projectiles/repeater_projectile.tscn
deleted file mode 100644
index e207ded..0000000
--- a/scenes/projectiles/repeater_projectile.tscn
+++ /dev/null
@@ -1,10 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://b45wmmcie6yeg"]
-
-[ext_resource type="PackedScene" uid="uid://b2hrv0aqbui7u" path="res://scenes/projectiles/pea.tscn" id="1_6vktd"]
-
-[node name="RepeaterProjectile" type="Node2D"]
-
-[node name="Pea" parent="." instance=ExtResource("1_6vktd")]
-
-[node name="Pea2" parent="." instance=ExtResource("1_6vktd")]
-position = Vector2(-21, 0)
diff --git a/scenes/projectiles/snowpea_projectile.tscn b/scenes/projectiles/snowpea_projectile.tscn
deleted file mode 100644
index 580fa0e..0000000
--- a/scenes/projectiles/snowpea_projectile.tscn
+++ /dev/null
@@ -1,54 +0,0 @@
-[gd_scene load_steps=9 format=3 uid="uid://domeukw4ucmyr"]
-
-[ext_resource type="Script" uid="uid://dxlwvwy3hj56x" path="res://scripts/projectiles/LinearProjectile.cs" id="1_fkydi"]
-[ext_resource type="Resource" uid="uid://7uj0oe656jfx" path="res://assets/effects/SnowSlow.tres" id="2_fn62x"]
-[ext_resource type="Texture2D" uid="uid://dn4l67snkx5mr" path="res://assets/sprites/plants/snowpea_projectile.tres" id="2_xt8td"]
-[ext_resource type="PackedScene" uid="uid://cijchi3f01q2t" path="res://scenes/particles/snow_pea_particles.tscn" id="3_t6hp0"]
-[ext_resource type="Texture2D" uid="uid://dejgsyw4f2crg" path="res://assets/sprites/particles/snowpea_flake1.tres" id="5_1u1j3"]
-[ext_resource type="Material" uid="uid://bflocbxbpv73j" path="res://assets/sprites/particles/snowflake.tres" id="6_pcdfd"]
-[ext_resource type="Texture2D" uid="uid://deiu2jr26meq" path="res://assets/sprites/particles/snowpea_flake2.tres" id="7_xke8y"]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_ix1sk"]
-radius = 6.0
-
-[node name="Snowpea" type="Area2D"]
-collision_layer = 4
-collision_mask = 8
-script = ExtResource("1_fkydi")
-_speed = 3.0
-_damage = 10
-_impactEffect = ExtResource("2_fn62x")
-particles = ExtResource("3_t6hp0")
-
-[node name="Sprite" type="Sprite2D" parent="."]
-texture = ExtResource("2_xt8td")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource("CircleShape2D_ix1sk")
-
-[node name="Timer" type="Timer" parent="."]
-wait_time = 15.0
-one_shot = true
-autostart = true
-
-[node name="Particles1" type="GPUParticles2D" parent="."]
-position = Vector2(-5, 0)
-amount = 1
-texture = ExtResource("5_1u1j3")
-process_material = ExtResource("6_pcdfd")
-
-[node name="Particles2" type="GPUParticles2D" parent="."]
-position = Vector2(5, 0)
-emitting = false
-amount = 1
-texture = ExtResource("7_xke8y")
-process_material = ExtResource("6_pcdfd")
-
-[node name="Timer" type="Timer" parent="Particles2"]
-wait_time = 0.2
-one_shot = true
-autostart = true
-
-[connection signal="area_entered" from="." to="." method="OnAreaEntered"]
-[connection signal="timeout" from="Timer" to="." method="queue_free"]
-[connection signal="timeout" from="Particles2/Timer" to="Particles2" method="set_emitting" binds= [true]]
diff --git a/scenes/prototype_survival.tscn b/scenes/prototype_survival.tscn
deleted file mode 100644
index 1424e30..0000000
--- a/scenes/prototype_survival.tscn
+++ /dev/null
@@ -1,444 +0,0 @@
-[gd_scene load_steps=34 format=3 uid="uid://c1335fke4thpm"]
-
-[ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_tnxdx"]
-[ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="1_vafkg"]
-[ext_resource type="Script" uid="uid://bso32xkw738sy" path="res://scripts/level/PoolContainer.cs" id="3_6128b"]
-[ext_resource type="PackedScene" uid="uid://devn21c7luf45" path="res://scenes/level components/field_controller.tscn" id="4_ibntj"]
-[ext_resource type="PackedScene" uid="uid://cfnmspei3k4p7" path="res://scenes/gui/runtime_gui.tscn" id="5_iotae"]
-[ext_resource type="PackedScene" uid="uid://dpxxjfd5lv5sv" path="res://scenes/gui/choose_your_seeds.tscn" id="6_btfw3"]
-[ext_resource type="PackedScene" uid="uid://fm471x22n8kr" path="res://scenes/gui/pause_menu.tscn" id="7_3ghv7"]
-[ext_resource type="Script" uid="uid://cslqjdd5wq4rc" path="res://scripts/level/SunSpawner.cs" id="7_gnb05"]
-[ext_resource type="PackedScene" uid="uid://bpekho7leatr5" path="res://scenes/sun.tscn" id="8_8nyym"]
-[ext_resource type="Texture2D" uid="uid://bt0slphfqhhab" path="res://assets/sprites/atlases/brain.tres" id="8_h1ksq"]
-[ext_resource type="Script" uid="uid://bsuw5lvnr3kol" path="res://scripts/level/zombe_spawners/ZombieSequencer.cs" id="9_8nyym"]
-[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="9_jmik4"]
-[ext_resource type="PackedScene" uid="uid://jm7wm08d2mi7" path="res://scenes/level components/right_boundary_marker.tscn" id="9_q2l3d"]
-[ext_resource type="Script" uid="uid://nkb6i7lrkl8y" path="res://scripts/level/zombe_spawners/SurvivalZombieSpawner.cs" id="10_1kjp6"]
-[ext_resource type="Script" uid="uid://btqwxelqxheh3" path="res://scripts/gui/RestartButton.cs" id="10_4il7a"]
-[ext_resource type="PackedScene" uid="uid://plc2gus4ppds" path="res://scenes/level components/left_boundary_marker.tscn" id="10_5h8lk"]
-[ext_resource type="Script" uid="uid://dpdpv2oyxdna7" path="res://scripts/gui/ExitButton.cs" id="11_q1dn6"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="12_4il7a"]
-[ext_resource type="Script" uid="uid://blpu7t8tf6277" path="res://scripts/particles/FallFloor.cs" id="13_5h8lk"]
-[ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="13_q1dn6"]
-[ext_resource type="Script" uid="uid://c0ov2bq5er0gh" path="res://scripts/entities/plants/LoseZone.cs" id="16_r81g1"]
-[ext_resource type="Script" uid="uid://812ldoyxd5n5" path="res://scripts/level/LoseCheckbox.cs" id="17_pb02i"]
-[ext_resource type="AudioStream" uid="uid://bxshjvvtv3fmp" path="res://assets/audio/music/playlist.tres" id="23_tsy2s"]
-
-[sub_resource type="GDScript" id="GDScript_tsy2s"]
-resource_name = "time_label"
-script/source = "extends Label
-
-var time : float = 0
-
-func _process(delta: float) -> void:
- time += delta
- var itime = int(time)
- text = \"%02d:%02d:%02d\" % [itime / 3600 ,itime / 60 % 60,itime % 60]
-"
-
-[sub_resource type="Animation" id="Animation_r81g1"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Fade:self_modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Fade/Brainz:self_modulate")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Fade:visible")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("VBoxContainer: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("VBoxContainer:modulate")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-
-[sub_resource type="Animation" id="Animation_h1ksq"]
-resource_name = "fade"
-length = 4.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Fade:self_modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 1),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Fade/Brainz:self_modulate")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 1.6, 2.2),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Fade:visible")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0.0333333),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("VBoxContainer:visible")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0.0333333),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("VBoxContainer:modulate")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0, 2.96667, 4),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_pb02i"]
-_data = {
-&"RESET": SubResource("Animation_r81g1"),
-&"fade": SubResource("Animation_h1ksq")
-}
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_tsy2s"]
-atlas = ExtResource("9_jmik4")
-region = Rect2(255, 221, 118, 20)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_63iib"]
-atlas = ExtResource("9_jmik4")
-region = Rect2(194, 221, 61, 20)
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_pb02i"]
-size = Vector2(244, 399)
-
-[sub_resource type="Curve" id="Curve_1kjp6"]
-_limits = [0.0, 5.0, 0.0, 2000.0]
-_data = [Vector2(0, 0), 0.0, 0.000634783, 0, 0, Vector2(19.8456, 0.0978518), 0.0, 0.0, 0, 0, Vector2(114.664, 0.12832), 0.0, 0.0, 0, 0, Vector2(213.892, 0.465625), 0.0017272, 0.00230293, 0, 0, Vector2(1499.45, 2.99414), 0.0, 0.00350837, 0, 0, Vector2(2000, 5), 0.00737658, 0.0, 0, 0]
-point_count = 6
-
-[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_3ghv7"]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_r81g1"]
-size = Vector2(282, 399)
-
-[node name="PrototypeSurvival" type="Node2D"]
-
-[node name="Data" type="Node" parent="."]
-script = ExtResource("1_tnxdx")
-
-[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(481, 200)
-
-[node name="Pools" type="Node2D" parent="." node_paths=PackedStringArray("Zombies", "Plants", "Projectiles", "Structures", "Particles")]
-script = ExtResource("3_6128b")
-Zombies = NodePath("Zombies")
-Plants = NodePath("Plants")
-Projectiles = NodePath("Projectiles")
-Structures = NodePath("Structures")
-Particles = NodePath("Particles")
-
-[node name="Zombies" type="Node2D" parent="Pools"]
-z_index = 3
-y_sort_enabled = true
-
-[node name="Plants" type="Node2D" parent="Pools"]
-z_index = 1
-y_sort_enabled = true
-
-[node name="Projectiles" type="Node2D" parent="Pools"]
-z_index = 4
-y_sort_enabled = true
-
-[node name="Structures" type="Node2D" parent="Pools"]
-z_index = 2
-y_sort_enabled = true
-
-[node name="Particles" type="Node2D" parent="Pools"]
-z_index = 5
-
-[node name="Background" type="CanvasLayer" parent="."]
-layer = -2
-follow_viewport_enabled = true
-
-[node name="Background" type="Sprite2D" parent="Background"]
-position = Vector2(500, 200)
-texture = ExtResource("1_vafkg")
-metadata/_edit_lock_ = true
-
-[node name="HUD" type="CanvasLayer" parent="."]
-layer = -1
-
-[node name="RuntimeGUI" parent="HUD" instance=ExtResource("5_iotae")]
-metadata/_edit_lock_ = true
-
-[node name="Overlay" type="CanvasLayer" parent="."]
-layer = 6
-follow_viewport_enabled = true
-
-[node name="FieldController" parent="Overlay" instance=ExtResource("4_ibntj")]
-
-[node name="GUI" type="CanvasLayer" parent="."]
-layer = 10
-
-[node name="ChooseYourSeeds" parent="GUI" instance=ExtResource("6_btfw3")]
-metadata/_edit_lock_ = true
-
-[node name="PauseMenu" parent="GUI" instance=ExtResource("7_3ghv7")]
-visible = false
-
-[node name="TimeLabel" type="Label" parent="GUI"]
-anchors_preset = 3
-anchor_left = 1.0
-anchor_top = 1.0
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = -40.0
-offset_top = -17.0
-grow_horizontal = 0
-grow_vertical = 0
-script = SubResource("GDScript_tsy2s")
-
-[node name="GameOverScreen" type="CanvasLayer" parent="."]
-process_mode = 3
-layer = 11
-
-[node name="Fade" type="ColorRect" parent="GameOverScreen"]
-visible = false
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-color = Color(0, 0, 0, 1)
-
-[node name="Brainz" type="TextureRect" parent="GameOverScreen/Fade"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = 141.0
-offset_top = 146.0
-offset_right = -143.0
-offset_bottom = -137.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = ExtResource("8_h1ksq")
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="GameOverScreen"]
-libraries = {
-&"": SubResource("AnimationLibrary_pb02i")
-}
-
-[node name="VBoxContainer" type="VBoxContainer" parent="GameOverScreen"]
-visible = false
-offset_left = 230.0
-offset_top = 273.0
-offset_right = 372.0
-offset_bottom = 365.0
-
-[node name="RestartButton" type="Button" parent="GameOverScreen/VBoxContainer"]
-layout_mode = 2
-icon = SubResource("AtlasTexture_tsy2s")
-icon_alignment = 1
-script = ExtResource("10_4il7a")
-
-[node name="ExitButton" type="Button" parent="GameOverScreen/VBoxContainer"]
-layout_mode = 2
-icon = SubResource("AtlasTexture_63iib")
-icon_alignment = 1
-script = ExtResource("11_q1dn6")
-
-[node name="TapPlayer" type="Node" parent="GameOverScreen/VBoxContainer"]
-script = ExtResource("12_4il7a")
-audioStream = ExtResource("13_q1dn6")
-channel = "button"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="GameOverZombie" type="CanvasLayer" parent="."]
-process_mode = 3
-layer = 12
-follow_viewport_enabled = true
-
-[node name="LoseZone" type="Node2D" parent="GameOverZombie"]
-script = ExtResource("16_r81g1")
-
-[node name="Hitbox" type="Area2D" parent="GameOverZombie/LoseZone"]
-collision_layer = 2
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="GameOverZombie/LoseZone/Hitbox"]
-position = Vector2(122, 199.5)
-shape = SubResource("RectangleShape2D_pb02i")
-
-[node name="SunSpawner" type="Node" parent="."]
-script = ExtResource("7_gnb05")
-SunScene = ExtResource("8_8nyym")
-
-[node name="Timer" type="Timer" parent="SunSpawner"]
-wait_time = 10.0
-autostart = true
-
-[node name="right_boundary_marker" parent="." instance=ExtResource("9_q2l3d")]
-position = Vector2(755, 376)
-
-[node name="LeftBoundaryMarker" parent="." instance=ExtResource("10_5h8lk")]
-position = Vector2(305, 76)
-
-[node name="ZombieSequencer" type="Node2D" parent="." node_paths=PackedStringArray("spawnTimer", "waveTimer")]
-position = Vector2(823, 0)
-script = ExtResource("9_8nyym")
-spawnTimer = NodePath("Timer")
-waveTimer = NodePath("../SurvivalAI/Timer")
-
-[node name="Timer" type="Timer" parent="ZombieSequencer"]
-wait_time = 2.5
-autostart = true
-
-[node name="SurvivalAI" type="Node" parent="."]
-script = ExtResource("10_1kjp6")
-supportPool = Array[String](["hobo", "door_zombie"])
-tankPool = Array[String](["conehead", "buckethead", "hobo", "door_zombie"])
-hordePool = Array[String](["basic", "conehead", "buckethead"])
-velocity_curve = SubResource("Curve_1kjp6")
-
-[node name="Timer" type="Timer" parent="SurvivalAI"]
-wait_time = 10.0
-
-[node name="Timer" type="Timer" parent="SurvivalAI/Timer"]
-wait_time = 20.0
-one_shot = true
-autostart = true
-
-[node name="Lines" type="Node2D" parent="."]
-script = ExtResource("13_5h8lk")
-
-[node name="Floor" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 247)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor"]
-shape = SubResource("WorldBoundaryShape2D_3ghv7")
-
-[node name="Floor2" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 306)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor2"]
-shape = SubResource("WorldBoundaryShape2D_3ghv7")
-
-[node name="Floor3" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 367)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor3"]
-shape = SubResource("WorldBoundaryShape2D_3ghv7")
-
-[node name="Floor4" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 183)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor4"]
-shape = SubResource("WorldBoundaryShape2D_3ghv7")
-
-[node name="Floor5" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 132)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor5"]
-shape = SubResource("WorldBoundaryShape2D_3ghv7")
-
-[node name="Checkbox" type="Area2D" parent="." node_paths=PackedStringArray("gameOverLayer", "fadeAnimation")]
-collision_mask = 24
-script = ExtResource("17_pb02i")
-gameOverLayer = NodePath("../GameOverZombie")
-fadeAnimation = NodePath("../GameOverScreen/AnimationPlayer")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Checkbox"]
-position = Vector2(141, 199.5)
-shape = SubResource("RectangleShape2D_r81g1")
-
-[node name="MusicPlayer" type="AudioStreamPlayer" parent="."]
-stream = ExtResource("23_tsy2s")
-autoplay = true
-bus = &"MusicBus"
-
-[connection signal="pressed" from="GameOverScreen/VBoxContainer/RestartButton" to="GameOverScreen/VBoxContainer/TapPlayer" method="Play"]
-[connection signal="pressed" from="GameOverScreen/VBoxContainer/ExitButton" to="GameOverScreen/VBoxContainer/TapPlayer" method="Play"]
-[connection signal="timeout" from="SunSpawner/Timer" to="SunSpawner" method="Spawn"]
-[connection signal="timeout" from="ZombieSequencer/Timer" to="ZombieSequencer" method="FormSquad"]
-[connection signal="timeout" from="SurvivalAI/Timer" to="SurvivalAI" method="SummonWave"]
-[connection signal="timeout" from="SurvivalAI/Timer/Timer" to="SurvivalAI" method="SummonWave"]
-[connection signal="timeout" from="SurvivalAI/Timer/Timer" to="SurvivalAI/Timer" method="start"]
diff --git a/scenes/sacrifice.tscn b/scenes/sacrifice.tscn
deleted file mode 100644
index 652cddc..0000000
--- a/scenes/sacrifice.tscn
+++ /dev/null
@@ -1,84 +0,0 @@
-[gd_scene load_steps=12 format=3 uid="uid://d2ut237hxscbo"]
-
-[ext_resource type="Texture2D" uid="uid://3m6opnieiyr2" path="res://assets/sprites/golden_bg.png" id="1_tsh0d"]
-[ext_resource type="Shader" uid="uid://d0rylce8i5xtg" path="res://assets/shaders/SACRIFICE.gdshader" id="2_b8skw"]
-[ext_resource type="Texture2D" uid="uid://dfmi4cgn6hmsj" path="res://assets/sprites/gold.png" id="3_1ybnd"]
-[ext_resource type="AudioStream" uid="uid://lshrnpdrhh77" path="res://assets/audio/music/Смешарики - 194. Метеоритный дождь.mp3" id="4_b8skw"]
-
-[sub_resource type="Gradient" id="Gradient_b8skw"]
-colors = PackedColorArray(0, 0, 0, 0, 1, 1, 1, 1)
-
-[sub_resource type="FastNoiseLite" id="FastNoiseLite_1ybnd"]
-seed = 4
-
-[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_yu0ma"]
-width = 600
-height = 400
-color_ramp = SubResource("Gradient_b8skw")
-noise = SubResource("FastNoiseLite_1ybnd")
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_yu0ma"]
-shader = ExtResource("2_b8skw")
-shader_parameter/noise = SubResource("NoiseTexture2D_yu0ma")
-
-[sub_resource type="Animation" id="Animation_1ybnd"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("TextureRect:self_modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-
-[sub_resource type="Animation" id="Animation_b8skw"]
-resource_name = "main"
-length = 10.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("TextureRect:self_modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(3, 10),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_yu0ma"]
-_data = {
-&"RESET": SubResource("Animation_1ybnd"),
-&"main": SubResource("Animation_b8skw")
-}
-
-[node name="SACRIFICE" type="TextureRect"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = ExtResource("1_tsh0d")
-
-[node name="TextureRect" type="TextureRect" parent="."]
-material = SubResource("ShaderMaterial_yu0ma")
-layout_mode = 0
-offset_right = 40.0
-offset_bottom = 40.0
-texture = ExtResource("3_1ybnd")
-
-[node name="Musicale" type="AudioStreamPlayer" parent="."]
-stream = ExtResource("4_b8skw")
-autoplay = true
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_yu0ma")
-}
-autoplay = "main"
diff --git a/scenes/summer.tscn b/scenes/summer.tscn
deleted file mode 100644
index b1aca74..0000000
--- a/scenes/summer.tscn
+++ /dev/null
@@ -1,9 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://ccrr8drx0a7gy"]
-
-[ext_resource type="PackedScene" uid="uid://dd3yegl1xo44m" path="res://scenes/templates/level_template.tscn" id="1_53h7t"]
-[ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="2_8hj2g"]
-
-[node name="Summer" instance=ExtResource("1_53h7t")]
-
-[node name="Sprite2D" type="Sprite2D" parent="." index="1"]
-texture = ExtResource("2_8hj2g")
diff --git a/scenes/sun.tscn b/scenes/sun.tscn
deleted file mode 100644
index 9b1fa01..0000000
--- a/scenes/sun.tscn
+++ /dev/null
@@ -1,182 +0,0 @@
-[gd_scene load_steps=15 format=3 uid="uid://bpekho7leatr5"]
-
-[ext_resource type="Shader" uid="uid://bk8uy5se3fo0" path="res://assets/shaders/shared_outline.gdshader" id="1_jcu1f"]
-[ext_resource type="Script" uid="uid://qgeovvluk8yj" path="res://scripts/projectiles/Sun.cs" id="2_m8xcj"]
-[ext_resource type="Texture2D" uid="uid://bkmphus5wjadi" path="res://assets/sprites/atlases/sun_atlas.png" id="2_phn3y"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="4_t1pnj"]
-[ext_resource type="AudioStream" uid="uid://c0cq80nvld37p" path="res://assets/audio/sfx/sun.mp3" id="5_i8fpp"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_u0o5k"]
-shader = ExtResource("1_jcu1f")
-shader_parameter/line_colour = Color(1, 0.568627, 0.4, 1)
-shader_parameter/line_thickness = 3
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_n4y82"]
-shader = ExtResource("1_jcu1f")
-shader_parameter/line_colour = Color(1, 0.568627, 0.4, 1)
-shader_parameter/line_thickness = 3
-
-[sub_resource type="Animation" id="Animation_jfrge"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("CanvasGroup/DownerStar:rotation")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("CanvasGroup/UpperStar:rotation")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
-}
-
-[sub_resource type="Animation" id="Animation_rvj0j"]
-resource_name = "main"
-length = 10.0
-loop_mode = 1
-step = 0.5
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("CanvasGroup/DownerStar:rotation")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 5, 10),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [0.0, 6.28319, 12.5664]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("CanvasGroup/UpperStar:rotation")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 10),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [0.0, -6.28319]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_juv2v"]
-_data = {
-&"RESET": SubResource("Animation_jfrge"),
-&"main": SubResource("Animation_rvj0j")
-}
-
-[sub_resource type="Animation" id="Animation_t53pt"]
-length = 0.001
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("CanvasGroup:modulate:a")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0),
-"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0)
-}
-
-[sub_resource type="Animation" id="Animation_xyill"]
-resource_name = "main"
-loop_mode = 1
-tracks/0/type = "bezier"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("CanvasGroup:modulate:a")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"handle_modes": PackedInt32Array(0, 0, 0),
-"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 1, -0.25, 0, 0.25, 0),
-"times": PackedFloat32Array(0, 0.5, 0.986673)
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_p7c0n"]
-_data = {
-&"RESET": SubResource("Animation_t53pt"),
-&"main": SubResource("Animation_xyill")
-}
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_7hl7x"]
-radius = 27.0
-
-[node name="Sun" type="Area2D" node_paths=PackedStringArray("_deathTimer", "_rotation", "_fade")]
-material = SubResource("ShaderMaterial_u0o5k")
-script = ExtResource("2_m8xcj")
-_deathTimer = NodePath("DeathTimer")
-_rotation = NodePath("RotationAnimation")
-_fade = NodePath("FadeAnimation")
-
-[node name="CanvasGroup" type="CanvasGroup" parent="."]
-material = SubResource("ShaderMaterial_n4y82")
-
-[node name="DownerStar" type="Sprite2D" parent="CanvasGroup"]
-show_behind_parent = true
-texture = ExtResource("2_phn3y")
-vframes = 3
-
-[node name="UpperStar" type="Sprite2D" parent="CanvasGroup"]
-show_behind_parent = true
-texture = ExtResource("2_phn3y")
-vframes = 3
-frame = 1
-
-[node name="Circle" type="Sprite2D" parent="CanvasGroup"]
-show_behind_parent = true
-texture = ExtResource("2_phn3y")
-vframes = 3
-frame = 2
-
-[node name="RotationAnimation" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_juv2v")
-}
-autoplay = "main"
-
-[node name="FadeAnimation" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_p7c0n")
-}
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource("CircleShape2D_7hl7x")
-
-[node name="DeathTimer" type="Timer" parent="."]
-wait_time = 22.0
-one_shot = true
-autostart = true
-
-[node name="CursorControl" type="Control" parent="."]
-layout_mode = 3
-anchors_preset = 0
-offset_left = -19.0
-offset_top = -19.0
-offset_right = 19.0
-offset_bottom = 19.0
-mouse_filter = 1
-mouse_default_cursor_shape = 2
-
-[node name="SunPlayer" type="Node" parent="."]
-script = ExtResource("4_t1pnj")
-audioStream = ExtResource("5_i8fpp")
-channel = "sun"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[connection signal="timeout" from="DeathTimer" to="." method="queue_free"]
diff --git a/scenes/templates/level_template.tscn b/scenes/templates/level_template.tscn
deleted file mode 100644
index 60fa513..0000000
--- a/scenes/templates/level_template.tscn
+++ /dev/null
@@ -1,935 +0,0 @@
-[gd_scene load_steps=57 format=3 uid="uid://dd3yegl1xo44m"]
-
-[ext_resource type="AudioStream" uid="uid://b6xb6mjdecg6a" path="res://assets/audio/sfx/level/readysetplant.mp3" id="1_4gg2g"]
-[ext_resource type="Script" uid="uid://bndu1h5kgcde8" path="res://scripts/level/RuntimeLevelData.cs" id="1_31ltw"]
-[ext_resource type="AudioStream" uid="uid://c6hteaxu7qh7d" path="res://assets/audio/sfx/level/hugewave.mp3" id="1_i7rp7"]
-[ext_resource type="AudioStream" uid="uid://dtnnbgiwq2vai" path="res://assets/audio/sfx/level/finalwave.mp3" id="1_xsaqy"]
-[ext_resource type="Script" uid="uid://bso32xkw738sy" path="res://scripts/level/PoolContainer.cs" id="2_s5sti"]
-[ext_resource type="PackedScene" uid="uid://devn21c7luf45" path="res://scenes/level components/field_controller.tscn" id="2_w4oj7"]
-[ext_resource type="Script" uid="uid://blpu7t8tf6277" path="res://scripts/particles/FallFloor.cs" id="3_4bmqp"]
-[ext_resource type="PackedScene" uid="uid://dpxxjfd5lv5sv" path="res://scenes/gui/choose_your_seeds.tscn" id="3_xy2c6"]
-[ext_resource type="PackedScene" uid="uid://cfnmspei3k4p7" path="res://scenes/gui/runtime_gui.tscn" id="4_okro4"]
-[ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="4_y72yf"]
-[ext_resource type="PackedScene" uid="uid://fm471x22n8kr" path="res://scenes/gui/pause_menu.tscn" id="6_4bmqp"]
-[ext_resource type="Texture2D" uid="uid://bt0slphfqhhab" path="res://assets/sprites/atlases/brain.tres" id="7_482ps"]
-[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="8_jg5t3"]
-[ext_resource type="Script" uid="uid://btqwxelqxheh3" path="res://scripts/gui/RestartButton.cs" id="9_2ybed"]
-[ext_resource type="PackedScene" uid="uid://c668qnmmpli5r" path="res://scenes/gui/wave_progress.tscn" id="9_7v6ps"]
-[ext_resource type="Script" uid="uid://dpdpv2oyxdna7" path="res://scripts/gui/ExitButton.cs" id="10_nvbnq"]
-[ext_resource type="AudioStream" uid="uid://o5ebedp7b2mk" path="res://assets/audio/sfx/level/losemusic.mp3" id="11_8vb7v"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="11_p133p"]
-[ext_resource type="AudioStream" uid="uid://bdx83fokp6kha" path="res://assets/audio/sfx/buttonclick.mp3" id="12_6gkho"]
-[ext_resource type="AudioStream" uid="uid://dlso0448ug80m" path="res://assets/audio/sfx/level/winmusic.mp3" id="12_y5tw7"]
-[ext_resource type="Script" uid="uid://c0ov2bq5er0gh" path="res://scripts/entities/plants/LoseZone.cs" id="13_0x4ji"]
-[ext_resource type="Script" uid="uid://cslqjdd5wq4rc" path="res://scripts/level/SunSpawner.cs" id="14_y72yf"]
-[ext_resource type="PackedScene" uid="uid://bpekho7leatr5" path="res://scenes/sun.tscn" id="15_7v6ps"]
-[ext_resource type="PackedScene" uid="uid://jm7wm08d2mi7" path="res://scenes/level components/right_boundary_marker.tscn" id="16_s7icd"]
-[ext_resource type="PackedScene" uid="uid://plc2gus4ppds" path="res://scenes/level components/left_boundary_marker.tscn" id="17_8qqc4"]
-[ext_resource type="AudioStream" uid="uid://xx3uqvsnwyni" path="res://assets/audio/sfx/level/lightfill.mp3" id="18_i7rp7"]
-[ext_resource type="Script" uid="uid://812ldoyxd5n5" path="res://scripts/level/LoseCheckbox.cs" id="19_482ps"]
-[ext_resource type="Script" uid="uid://1lkhoh43h86m" path="res://scripts/level/GameTimer.cs" id="19_s7icd"]
-[ext_resource type="Script" uid="uid://84gvlkflxdhk" path="res://scripts/level/zombe_spawners/RowSpawner.cs" id="22_8qqc4"]
-[ext_resource type="Script" uid="uid://puqxp2xeg1r2" path="res://scripts/level/LevelRunner.cs" id="23_8vb7v"]
-[ext_resource type="Resource" uid="uid://kqqqjubwm37a" path="res://assets/rewards/DefaultReward.tres" id="24_7v6ps"]
-[ext_resource type="Script" uid="uid://bc3s06ejbotma" path="res://scripts/gui/ZombieLevelPreviewer.cs" id="24_y5tw7"]
-[ext_resource type="Script" uid="uid://b31mnk4enldc4" path="res://scripts/level/InitialPackedSceneSpawner.cs" id="26_i7rp7"]
-[ext_resource type="AudioStream" uid="uid://bwnmx7t3hcw6h" path="res://assets/audio/sfx/level/awooga.mp3" id="32_xsaqy"]
-[ext_resource type="AudioStream" uid="uid://cfybn7wn04frs" path="res://assets/audio/music/Grasswalk_Standard.mp3" id="34_tqd4v"]
-[ext_resource type="AudioStream" uid="uid://get7nh1goi1c" path="res://assets/audio/music/Grasswalk_cool.mp3" id="35_4gg2g"]
-[ext_resource type="Script" uid="uid://bnj5tlcpmep2o" path="res://scripts/audio/MusicTransitioner.cs" id="36_wwgye"]
-[ext_resource type="PackedScene" uid="uid://djfsa0pxqeoq1" path="res://scenes/gui/cursor_canvas_layer.tscn" id="38_wwgye"]
-
-[sub_resource type="Animation" id="Animation_vbgdr"]
-resource_name = "CYS_Sequence"
-length = 3.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera2D:position")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0.666667, 1.5),
-"transitions": PackedFloat32Array(0.5, 1),
-"update": 0,
-"values": [Vector2(481, 200), Vector2(700, 200)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("GUI/ChooseYourSeeds:anchor_top")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 2, 3),
-"transitions": PackedFloat32Array(1, 0.5, 1),
-"update": 0,
-"values": [1.0, 1.0, 0.0]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("GUI/ChooseYourSeeds:anchor_bottom")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0, 2, 3),
-"transitions": PackedFloat32Array(1, 0.5, 1),
-"update": 0,
-"values": [2.0, 2.0, 1.0]
-}
-
-[sub_resource type="Animation" id="Animation_lrlbv"]
-resource_name = "FW_Sequence"
-length = 3.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("GUI/ReadySetPlant:visible")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 3),
-"transitions": PackedFloat32Array(1, 1),
-"update": 1,
-"values": [true, false]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("GUI/ReadySetPlant:text")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": ["final_wave"]
-}
-tracks/2/type = "method"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("LastWavePlayer")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"Play"
-}]
-}
-
-[sub_resource type="Animation" id="Animation_pqj5f"]
-resource_name = "HW_Sequence"
-length = 6.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("GUI/ReadySetPlant:text")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": ["huge_wave"]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("GUI/ReadySetPlant:visible")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 6),
-"transitions": PackedFloat32Array(1, 1),
-"update": 1,
-"values": [true, false]
-}
-tracks/2/type = "method"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("HugeWavePlayer")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"Play"
-}]
-}
-
-[sub_resource type="Animation" id="Animation_8ajos"]
-resource_name = "PG_Sequence"
-length = 7.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("GUI/ChooseYourSeeds:anchor_top")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 1),
-"transitions": PackedFloat32Array(0.5, 1),
-"update": 0,
-"values": [0.0, 1.0]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("GUI/ChooseYourSeeds:anchor_bottom")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 1),
-"transitions": PackedFloat32Array(0.5, 1),
-"update": 0,
-"values": [1.0, 2.0]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Camera2D:position")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0.7, 1.5334),
-"transitions": PackedFloat32Array(0.5, 1),
-"update": 0,
-"values": [Vector2(700, 200), Vector2(481, 200)]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("GUI/ReadySetPlant:text")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(2, 2.537, 3.154),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 1,
-"values": ["ready", "set", "plant"]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("GUI/ReadySetPlant:visible")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0, 2, 7),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 1,
-"values": [false, true, false]
-}
-tracks/5/type = "method"
-tracks/5/imported = false
-tracks/5/enabled = true
-tracks/5/path = NodePath("Data")
-tracks/5/interp = 1
-tracks/5/loop_wrap = true
-tracks/5/keys = {
-"times": PackedFloat32Array(3.15333),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [2],
-"method": &"SetLevelState"
-}]
-}
-tracks/6/type = "audio"
-tracks/6/imported = false
-tracks/6/enabled = true
-tracks/6/path = NodePath("ReadySetPlantPlayer")
-tracks/6/interp = 1
-tracks/6/loop_wrap = true
-tracks/6/keys = {
-"clips": [{
-"end_offset": 0.0,
-"start_offset": 0.0,
-"stream": ExtResource("1_4gg2g")
-}],
-"times": PackedFloat32Array(2)
-}
-tracks/6/use_blend = true
-
-[sub_resource type="Animation" id="Animation_yw4uo"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Camera2D:position")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Vector2(481, 200)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("GUI/ChooseYourSeeds:anchor_top")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [1.0]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("GUI/ChooseYourSeeds:anchor_bottom")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [2.0]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("GUI/ReadySetPlant:text")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [""]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("GUI/ReadySetPlant:visible")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_yw4uo"]
-_data = {
-&"CYS_Sequence": SubResource("Animation_vbgdr"),
-&"FW_Sequence": SubResource("Animation_lrlbv"),
-&"HW_Sequence": SubResource("Animation_pqj5f"),
-&"PG_Sequence": SubResource("Animation_8ajos"),
-&"RESET": SubResource("Animation_yw4uo")
-}
-
-[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_482ps"]
-distance = -9.0
-
-[sub_resource type="Animation" id="Animation_r81g1"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("LooseFade:self_modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("LooseFade/Brainz:self_modulate")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("LooseFade:visible")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("VBoxContainer: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("VBoxContainer:modulate")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-tracks/5/type = "value"
-tracks/5/imported = false
-tracks/5/enabled = true
-tracks/5/path = NodePath("WinFade:color")
-tracks/5/interp = 1
-tracks/5/loop_wrap = true
-tracks/5/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 0.92, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_h1ksq"]
-resource_name = "fade"
-length = 5.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("LooseFade:self_modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 1),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("LooseFade/Brainz:self_modulate")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 1.6, 2.2),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("LooseFade:visible")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0.0333333),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("VBoxContainer:visible")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0.0333333),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath("VBoxContainer:modulate")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0, 2.96667, 4),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
-}
-tracks/5/type = "audio"
-tracks/5/imported = false
-tracks/5/enabled = true
-tracks/5/path = NodePath("GameOverPlayer")
-tracks/5/interp = 1
-tracks/5/loop_wrap = true
-tracks/5/keys = {
-"clips": [{
-"end_offset": 0.0,
-"start_offset": 0.0,
-"stream": ExtResource("11_8vb7v")
-}],
-"times": PackedFloat32Array(0)
-}
-tracks/5/use_blend = true
-tracks/6/type = "method"
-tracks/6/imported = false
-tracks/6/enabled = true
-tracks/6/path = NodePath("VBoxContainer/RestartButton")
-tracks/6/interp = 1
-tracks/6/loop_wrap = true
-tracks/6/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"grab_focus"
-}]
-}
-
-[sub_resource type="Animation" id="Animation_y72yf"]
-resource_name = "win"
-length = 5.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("WinFade:color")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 3, 5),
-"transitions": PackedFloat32Array(1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 0.92, 0), Color(1, 1, 0.92, 0), Color(1, 1, 0.92, 1)]
-}
-tracks/1/type = "audio"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("GameOverPlayer")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"clips": [{
-"end_offset": 0.0,
-"start_offset": 0.0,
-"stream": ExtResource("12_y5tw7")
-}],
-"times": PackedFloat32Array(0)
-}
-tracks/1/use_blend = true
-tracks/2/type = "method"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("ChannelPlayer")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(2),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"Play"
-}]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_pb02i"]
-_data = {
-&"RESET": SubResource("Animation_r81g1"),
-&"loose": SubResource("Animation_h1ksq"),
-&"win": SubResource("Animation_y72yf")
-}
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_y5tw7"]
-atlas = ExtResource("8_jg5t3")
-region = Rect2(255, 221, 118, 20)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_i7rp7"]
-atlas = ExtResource("8_jg5t3")
-region = Rect2(194, 221, 61, 20)
-
-[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_vbgdr"]
-normal = Vector2(1, 0)
-distance = 135.0
-
-[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_yw4uo"]
-normal = Vector2(1, 0)
-distance = 139.0
-
-[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_wwgye"]
-stream_count = 1
-stream_0 = ExtResource("34_tqd4v")
-
-[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_4tlhg"]
-stream_count = 1
-stream_0 = ExtResource("35_4gg2g")
-
-[sub_resource type="AudioStreamInteractive" id="AudioStreamInteractive_4tlhg"]
-clip_count = 2
-clip_0/name = &"Standard"
-clip_0/stream = SubResource("AudioStreamPlaylist_wwgye")
-clip_0/auto_advance = 0
-clip_1/name = &"Cool"
-clip_1/stream = SubResource("AudioStreamPlaylist_4tlhg")
-clip_1/auto_advance = 0
-_transitions = {
-Vector2i(0, 1): {
-"fade_beats": 5.0,
-"fade_mode": 3,
-"from_time": 0,
-"to_time": 0
-},
-Vector2i(1, 0): {
-"fade_beats": 5.0,
-"fade_mode": 4,
-"from_time": 0,
-"to_time": 0
-}
-}
-
-[node name="StandardLevel" type="Node2D"]
-
-[node name="MainAnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-&"": SubResource("AnimationLibrary_yw4uo")
-}
-
-[node name="Data" type="Node" parent="." node_paths=PackedStringArray("levelRunner", "player")]
-script = ExtResource("1_31ltw")
-levelRunner = NodePath("../LevelRunner")
-player = NodePath("../MainAnimationPlayer")
-
-[node name="Camera2D" type="Camera2D" parent="."]
-position = Vector2(481, 200)
-
-[node name="Pools" type="Node2D" parent="." node_paths=PackedStringArray("Zombies", "Plants", "Projectiles", "Structures", "Particles")]
-script = ExtResource("2_s5sti")
-Zombies = NodePath("Zombies")
-Plants = NodePath("Plants")
-Projectiles = NodePath("Projectiles")
-Structures = NodePath("Structures")
-Particles = NodePath("Particles")
-
-[node name="Zombies" type="Node2D" parent="Pools"]
-z_index = 20
-z_as_relative = false
-y_sort_enabled = true
-
-[node name="Plants" type="Node2D" parent="Pools"]
-z_as_relative = false
-y_sort_enabled = true
-
-[node name="Projectiles" type="Node2D" parent="Pools"]
-z_index = 30
-z_as_relative = false
-y_sort_enabled = true
-
-[node name="Structures" type="Node2D" parent="Pools"]
-z_index = 10
-z_as_relative = false
-y_sort_enabled = true
-
-[node name="Particles" type="Node2D" parent="Pools"]
-z_index = 40
-z_as_relative = false
-
-[node name="Lines" type="Node2D" parent="."]
-script = ExtResource("3_4bmqp")
-
-[node name="Floor" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 247)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor"]
-shape = SubResource("WorldBoundaryShape2D_482ps")
-
-[node name="Floor2" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 306)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor2"]
-shape = SubResource("WorldBoundaryShape2D_482ps")
-
-[node name="Floor3" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 367)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor3"]
-shape = SubResource("WorldBoundaryShape2D_482ps")
-
-[node name="Floor4" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 183)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor4"]
-shape = SubResource("WorldBoundaryShape2D_482ps")
-
-[node name="Floor5" type="StaticBody2D" parent="Lines"]
-position = Vector2(528, 132)
-collision_layer = 64
-collision_mask = 0
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Lines/Floor5"]
-shape = SubResource("WorldBoundaryShape2D_482ps")
-
-[node name="Background" type="CanvasLayer" parent="."]
-layer = -2
-follow_viewport_enabled = true
-
-[node name="Background" type="Sprite2D" parent="Background"]
-z_index = -100
-z_as_relative = false
-position = Vector2(500, 200)
-texture = ExtResource("4_y72yf")
-metadata/_edit_lock_ = true
-
-[node name="HUD" type="CanvasLayer" parent="."]
-layer = -1
-
-[node name="RuntimeGUI" parent="HUD" instance=ExtResource("4_okro4")]
-focus_neighbor_bottom = NodePath("../../GUI/ChooseYourSeeds")
-metadata/_edit_lock_ = true
-
-[node name="Overlay" type="CanvasLayer" parent="."]
-layer = 6
-follow_viewport_enabled = true
-
-[node name="FieldController" parent="Overlay" instance=ExtResource("2_w4oj7")]
-
-[node name="RewardLayer" type="CanvasLayer" parent="."]
-layer = 10
-follow_viewport_enabled = true
-
-[node name="GUI" type="CanvasLayer" parent="."]
-layer = 10
-
-[node name="ChooseYourSeeds" parent="GUI" instance=ExtResource("3_xy2c6")]
-anchors_preset = -1
-anchor_top = 1.0
-anchor_bottom = 2.0
-size_flags_horizontal = 3
-size_flags_vertical = 3
-focus_neighbor_top = NodePath("../../HUD/RuntimeGUI")
-metadata/_edit_lock_ = true
-
-[node name="PauseMenu" parent="GUI" instance=ExtResource("6_4bmqp")]
-visible = false
-
-[node name="WaveProgress" parent="GUI" instance=ExtResource("9_7v6ps")]
-visible = false
-offset_left = 443.0
-offset_top = 377.0
-offset_right = 443.2
-offset_bottom = 377.0
-
-[node name="ReadySetPlant" type="RichTextLabel" parent="GUI"]
-visible = false
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-bbcode_enabled = true
-shortcut_keys_enabled = false
-horizontal_alignment = 1
-vertical_alignment = 1
-
-[node name="GameOverScreen" type="CanvasLayer" parent="."]
-process_mode = 3
-layer = 11
-
-[node name="LooseFade" type="ColorRect" parent="GameOverScreen"]
-visible = false
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-color = Color(0, 0, 0, 1)
-
-[node name="Brainz" type="TextureRect" parent="GameOverScreen/LooseFade"]
-layout_mode = 1
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-offset_left = 141.0
-offset_top = 125.0
-offset_right = -143.0
-offset_bottom = -116.0
-grow_horizontal = 2
-grow_vertical = 2
-texture = ExtResource("7_482ps")
-stretch_mode = 5
-
-[node name="WinFade" type="ColorRect" parent="GameOverScreen"]
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-color = Color(1, 1, 0.92, 0)
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="GameOverScreen"]
-libraries = {
-&"": SubResource("AnimationLibrary_pb02i")
-}
-
-[node name="VBoxContainer" type="VBoxContainer" parent="GameOverScreen"]
-visible = false
-offset_left = 230.0
-offset_top = 273.0
-offset_right = 372.0
-offset_bottom = 365.0
-
-[node name="RestartButton" type="Button" parent="GameOverScreen/VBoxContainer"]
-layout_mode = 2
-icon = SubResource("AtlasTexture_y5tw7")
-icon_alignment = 1
-script = ExtResource("9_2ybed")
-
-[node name="ExitButton" type="Button" parent="GameOverScreen/VBoxContainer"]
-layout_mode = 2
-icon = SubResource("AtlasTexture_i7rp7")
-icon_alignment = 1
-script = ExtResource("10_nvbnq")
-
-[node name="TapPlayer" type="Node" parent="GameOverScreen/VBoxContainer"]
-script = ExtResource("11_p133p")
-audioStream = ExtResource("12_6gkho")
-channel = "button"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="GameOverPlayer" type="AudioStreamPlayer" parent="GameOverScreen"]
-bus = &"SFXBus"
-
-[node name="ChannelPlayer" type="Node" parent="GameOverScreen"]
-script = ExtResource("11_p133p")
-audioStream = ExtResource("18_i7rp7")
-channel = "lightfill"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="GameOverZombie" type="CanvasLayer" parent="."]
-process_mode = 3
-layer = 12
-follow_viewport_enabled = true
-
-[node name="LoseZone" type="Node2D" parent="GameOverZombie"]
-script = ExtResource("13_0x4ji")
-
-[node name="Hitbox" type="Area2D" parent="GameOverZombie/LoseZone"]
-collision_layer = 6
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="GameOverZombie/LoseZone/Hitbox"]
-position = Vector2(122, 199.5)
-shape = SubResource("WorldBoundaryShape2D_vbgdr")
-
-[node name="SunSpawner" type="Node" parent="."]
-script = ExtResource("14_y72yf")
-SunScene = ExtResource("15_7v6ps")
-
-[node name="Timer" type="Timer" parent="SunSpawner"]
-wait_time = 10.0
-script = ExtResource("19_s7icd")
-
-[node name="right_boundary_marker" parent="." instance=ExtResource("16_s7icd")]
-position = Vector2(755, 376)
-
-[node name="LeftBoundaryMarker" parent="." instance=ExtResource("17_8qqc4")]
-position = Vector2(305, 76)
-
-[node name="RowSpawner" type="Node2D" parent="." node_paths=PackedStringArray("delayTimer", "runner")]
-position = Vector2(837, 76)
-script = ExtResource("22_8qqc4")
-delayTimer = NodePath("DelayTimer")
-runner = NodePath("../LevelRunner")
-
-[node name="DelayTimer" type="Timer" parent="RowSpawner"]
-wait_time = 2.5
-
-[node name="LevelRunner" type="Node" parent="." node_paths=PackedStringArray("rowSpawner", "waveTimer", "player", "rewardParent")]
-script = ExtResource("23_8vb7v")
-defaultReward = ExtResource("24_7v6ps")
-rowSpawner = NodePath("../RowSpawner")
-waveTimer = NodePath("WaveTimer")
-approachNotificationTime = 5.0
-player = NodePath("../GameOverScreen/AnimationPlayer")
-rewardParent = NodePath("../RewardLayer")
-firstWaveSound = ExtResource("32_xsaqy")
-
-[node name="WaveTimer" type="Timer" parent="LevelRunner"]
-one_shot = true
-
-[node name="ZombieLevelPrevewer" type="Node2D" parent="."]
-y_sort_enabled = true
-position = Vector2(855, 76)
-script = ExtResource("24_y5tw7")
-
-[node name="Checkbox" type="Area2D" parent="." node_paths=PackedStringArray("gameOverLayer", "fadeAnimation")]
-collision_mask = 24
-script = ExtResource("19_482ps")
-gameOverLayer = NodePath("../GameOverZombie")
-fadeAnimation = NodePath("../GameOverScreen/AnimationPlayer")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Checkbox"]
-position = Vector2(141, 199.5)
-shape = SubResource("WorldBoundaryShape2D_yw4uo")
-
-[node name="InitialSpawner" type="Node" parent="."]
-script = ExtResource("26_i7rp7")
-
-[node name="HugeWavePlayer" type="Node" parent="."]
-script = ExtResource("11_p133p")
-audioStream = ExtResource("1_i7rp7")
-channel = "huge_wave"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="LastWavePlayer" type="Node" parent="."]
-script = ExtResource("11_p133p")
-audioStream = ExtResource("1_xsaqy")
-channel = "fl_wave"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
-
-[node name="MusicController" type="AudioStreamPlayer" parent="."]
-stream = SubResource("AudioStreamInteractive_4tlhg")
-bus = &"MusicBus"
-script = ExtResource("36_wwgye")
-
-[node name="Timer" type="Timer" parent="MusicController"]
-wait_time = 30.0
-one_shot = true
-ignore_time_scale = true
-
-[node name="ReadySetPlantPlayer" type="AudioStreamPlayer" parent="."]
-
-[node name="CursorCanvasLayer" parent="." instance=ExtResource("38_wwgye")]
-
-[connection signal="OnLevelStateChanged" from="Data" to="SunSpawner/Timer" method="OnLevelStateChanged"]
-[connection signal="OnLevelStateChanged" from="Data" to="ZombieLevelPrevewer" method="OnLevelStateChanged"]
-[connection signal="OnLevelStateChanged" from="Data" to="InitialSpawner" method="OnLevelStateChanged"]
-[connection signal="pressed" from="GameOverScreen/VBoxContainer/RestartButton" to="GameOverScreen/VBoxContainer/TapPlayer" method="Play"]
-[connection signal="pressed" from="GameOverScreen/VBoxContainer/ExitButton" to="GameOverScreen/VBoxContainer/TapPlayer" method="Play"]
-[connection signal="timeout" from="SunSpawner/Timer" to="SunSpawner" method="Spawn"]
-[connection signal="FinalWaveInitiated" from="LevelRunner" to="MainAnimationPlayer" method="play" binds= ["FW_Sequence"]]
-[connection signal="HugeWaveApproachingCallback" from="LevelRunner" to="MusicController" method="OnHugeWaveApproaching"]
-[connection signal="HugeWaveApproachingCallback" from="LevelRunner" to="MainAnimationPlayer" method="play" binds= ["HW_Sequence"]]
-[connection signal="HugeWaveInitiated" from="LevelRunner" to="GUI/WaveProgress" method="OnHugeWaveApproached"]
-[connection signal="ResourceChanged" from="LevelRunner" to="GUI/WaveProgress" method="SetLevelData"]
-[connection signal="WaveChanged" from="LevelRunner" to="GUI/WaveProgress" method="OnWaveChanged"]
-[connection signal="timeout" from="MusicController/Timer" to="MusicController" method="OnTimerTimeout"]
diff --git a/scenes/templates/money_reward.tscn b/scenes/templates/money_reward.tscn
deleted file mode 100644
index 51f3c1b..0000000
--- a/scenes/templates/money_reward.tscn
+++ /dev/null
@@ -1,16 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://3x821ng2yf57"]
-
-[ext_resource type="Script" uid="uid://cwf2y3pxi6psc" path="res://scripts/droppable-items/DroppableItem.cs" id="1_jgexe"]
-[ext_resource type="Texture2D" uid="uid://c3qw52yoseb1k" path="res://assets/sprites/money_bag.tres" id="1_wewwq"]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_wewwq"]
-size = Vector2(46, 50)
-
-[node name="MoneyReward" type="Area2D"]
-script = ExtResource("1_jgexe")
-
-[node name="MoneyBag" type="Sprite2D" parent="."]
-texture = ExtResource("1_wewwq")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource("RectangleShape2D_wewwq")
diff --git a/scenes/templates/plant_reward.tscn b/scenes/templates/plant_reward.tscn
deleted file mode 100644
index 7466e2c..0000000
--- a/scenes/templates/plant_reward.tscn
+++ /dev/null
@@ -1,80 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://myjhi5m0eaap"]
-
-[ext_resource type="Script" uid="uid://gymo10tjruj2" path="res://scripts/droppable-items/DroppableSeedpacket.cs" id="1_rir1v"]
-[ext_resource type="Texture2D" uid="uid://dxyf557m4mq1p" path="res://assets/sprites/gui/EmptyPlantCard.png" id="2_wupw1"]
-
-[sub_resource type="LabelSettings" id="LabelSettings_scv3y"]
-resource_local_to_scene = true
-font_size = 13
-font_color = Color(0, 0, 0, 1)
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_2c7xr"]
-size = Vector2(41, 56)
-
-[node name="PlantReward" type="Area2D" node_paths=PackedStringArray("_cost", "_icon", "_packet")]
-script = ExtResource("1_rir1v")
-_cost = NodePath("Seedpacket/Cost")
-_icon = NodePath("Seedpacket/PlantPreviewContainer/Preview")
-_packet = NodePath("Seedpacket")
-
-[node name="Seedpacket" type="TextureRect" parent="."]
-anchors_preset = -1
-anchor_right = 0.137
-anchor_bottom = 0.28
-offset_left = -20.5
-offset_top = -28.0
-offset_right = 20.5
-offset_bottom = 28.0
-mouse_default_cursor_shape = 2
-texture = ExtResource("2_wupw1")
-metadata/_edit_use_anchors_ = true
-
-[node name="Cost" type="Label" parent="Seedpacket"]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.146
-anchor_top = 0.732
-anchor_right = 0.854
-anchor_bottom = 0.893
-offset_left = 0.0279989
-offset_top = 0.0159912
-offset_right = -0.0279999
-offset_bottom = -0.0160065
-grow_horizontal = 2
-grow_vertical = 2
-label_settings = SubResource("LabelSettings_scv3y")
-horizontal_alignment = 1
-vertical_alignment = 1
-text_overrun_behavior = 3
-
-[node name="PlantPreviewContainer" type="Control" parent="Seedpacket"]
-clip_contents = true
-layout_mode = 1
-anchor_left = -0.061
-anchor_top = -0.036
-anchor_right = 1.061
-anchor_bottom = 0.661
-offset_left = 0.00199986
-offset_top = 0.0320001
-offset_right = -0.0019989
-offset_bottom = -0.0319977
-mouse_filter = 2
-
-[node name="Preview" type="TextureRect" parent="Seedpacket/PlantPreviewContainer"]
-layout_mode = 1
-anchors_preset = -1
-anchor_left = 0.185
-anchor_top = 0.205
-anchor_right = 0.815
-anchor_bottom = 1.333
-offset_left = -0.0200005
-offset_top = 0.00999928
-offset_right = 0.0199966
-offset_bottom = 0.0259933
-mouse_filter = 2
-mouse_default_cursor_shape = 2
-expand_mode = 1
-stretch_mode = 5
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource("RectangleShape2D_2c7xr")
diff --git a/scenes/templates/plant_template.tscn b/scenes/templates/plant_template.tscn
deleted file mode 100644
index a259d5b..0000000
--- a/scenes/templates/plant_template.tscn
+++ /dev/null
@@ -1,28 +0,0 @@
-[gd_scene load_steps=4 format=3 uid="uid://b1hjjbdwf1rtc"]
-
-[ext_resource type="Script" uid="uid://dli2i6albvugt" path="res://scripts/entities/plants/RuntimePlantData.cs" id="1_324sd"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="2_e75pf"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="4_3uws4"]
-
-[node name="PlantTemplate" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-script = ExtResource("1_324sd")
-_player = NodePath("AnimationPlayer")
-_tree = NodePath("AnimationTree")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-anim_player = NodePath("../AnimationPlayer")
-script = ExtResource("2_e75pf")
-entity = NodePath("..")
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 2
-collision_mask = 0
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("4_3uws4")
-
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/zombies/basic.tscn
similarity index 54%
rename from scenes/entities/Zombies/zombie.tscn
rename to scenes/zombies/basic.tscn
index 7d18c53..92c66de 100644
--- a/scenes/entities/Zombies/zombie.tscn
+++ b/scenes/zombies/basic.tscn
@@ -1,30 +1,14 @@
-[gd_scene load_steps=61 format=3 uid="uid://co11v3w8hbwgf"]
+[gd_scene load_steps=53 format=3 uid="uid://dunih4xhnupy5"]
-[ext_resource type="Script" uid="uid://dildme6epx8l4" path="res://scripts/entities/zombies/RuntimeZombieData.cs" id="1_qq3f1"]
-[ext_resource type="Material" uid="uid://jr0vpg030jqv" path="res://assets/ZombieMaterial.tres" id="2_b51fx"]
-[ext_resource type="AudioStream" uid="uid://dt13iugnnx4op" path="res://assets/audio/sfx/yuck_generic.tres" id="2_hh4qh"]
-[ext_resource type="Script" uid="uid://dqyony6jxt2p0" path="res://scripts/entities/zombies/EatBox.cs" id="3_2aulo"]
-[ext_resource type="AudioStream" uid="uid://bjotp63arocci" path="res://assets/audio/sfx/frozen.mp3" id="3_ltj46"]
-[ext_resource type="Script" uid="uid://7hdj2k14lfe4" path="res://scripts/entities/zombies/ZombieMover.cs" id="4_u5syx"]
-[ext_resource type="Texture2D" uid="uid://dacgbwohpmeed" path="res://assets/sprites/zombies/basic.png" id="6_xnora"]
-[ext_resource type="Script" uid="uid://c3cfnrmnnuqms" path="res://addons/floatmodifiers/FloatModifiers.cs" id="7_b3p4o"]
-[ext_resource type="Script" uid="uid://dt5uj25u0g6y3" path="res://scripts/particles/FallParticle.cs" id="7_dn8ha"]
-[ext_resource type="Script" uid="uid://dw7v3s4kbu7ma" path="res://scripts/entities/AnimationStatistics.cs" id="8_b51fx"]
-[ext_resource type="AnimationNodeStateMachine" uid="uid://dj0blope85bg7" path="res://assets/animations/zombies/basic_zombie_tree.tres" id="8_ckb7n"]
-[ext_resource type="Script" uid="uid://dau0tfmlfiqmo" path="res://scripts/entities/EntityHPObserver.cs" id="8_mc1kl"]
-[ext_resource type="Texture2D" uid="uid://dri70dxyks7xh" path="res://assets/sprites/zombies/hobo.png" id="9_b51fx"]
-[ext_resource type="AnimationLibrary" uid="uid://ceb3khu7rwgy8" path="res://assets/animations/zombies/basic.res" id="9_y6afe"]
-[ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="10_ruqsf"]
-[ext_resource type="Script" uid="uid://dwlwi42smgxkb" path="res://scripts/TimeScalableAnimationTree.cs" id="11_ccrjo"]
-[ext_resource type="AudioStream" uid="uid://bg76miyscfvhu" path="res://assets/audio/sfx/groan.tres" id="12_ad42i"]
-[ext_resource type="Script" uid="uid://cnn0ymuhypdff" path="res://scripts/audio/ChannelPlaylist.cs" id="12_he8da"]
-[ext_resource type="AudioStream" uid="uid://w0qfwds4o3ti" path="res://assets/audio/sfx/hit_generic.tres" id="12_vjrlo"]
-[ext_resource type="Script" uid="uid://b8r6fxsfjdo3a" path="res://scripts/audio/EffectBasedPlayer.cs" id="17_ltj46"]
-[ext_resource type="Resource" uid="uid://dsg1vjx76ifgu" path="res://assets/effects/GarlicEffect.tres" id="18_2q05d"]
-[ext_resource type="Resource" uid="uid://7uj0oe656jfx" path="res://assets/effects/SnowSlow.tres" id="19_ccrjo"]
-[ext_resource type="Script" uid="uid://c1x4n4nqyq72f" path="res://scripts/audio/ChannelSettings.cs" id="21_xnora"]
-[ext_resource type="Script" uid="uid://dk32ln8c2574d" path="res://scripts/entities/zombies/ZombieKillHandler.cs" id="23_mc1kl"]
-[ext_resource type="Script" uid="uid://30pbgasu64aw" path="res://scripts/entities/FlashShaderController.cs" id="24_b51fx"]
+[ext_resource type="Texture2D" uid="uid://dacgbwohpmeed" path="res://assets/sprites/zombies/basic.png" id="1_jrplh"]
+[ext_resource type="AnimationLibrary" uid="uid://ceb3khu7rwgy8" path="res://assets/animations/zombies/basic.res" id="2_yccea"]
+[ext_resource type="Script" uid="uid://cbmavbe4xd0j2" path="res://scripts/speed_controlled/speed_controlled_animation_tree.gd" id="3_qnnv5"]
+[ext_resource type="Script" uid="uid://be5rfbbl5xgeh" path="res://scripts/components/generic_collider.gd" id="3_qoqrk"]
+[ext_resource type="Script" uid="uid://bdacurei5fp02" path="res://scripts/components/mover.gd" id="3_yccea"]
+[ext_resource type="Script" uid="uid://cbudgx741oxtc" path="res://scripts/components/generic_hurtbox.gd" id="4_20equ"]
+[ext_resource type="Script" uid="uid://bwdvaov8sse4k" path="res://scripts/entities/entity.gd" id="4_moyxp"]
+[ext_resource type="Script" uid="uid://bg88vb74hinkj" path="res://scripts/components/controllers/zombies/basic_controller.gd" id="5_mc88i"]
+[ext_resource type="Script" uid="uid://dfnyam1pvkb73" path="res://scripts/components/zombie_death_handler.gd" id="9_ap2hg"]
[sub_resource type="SkeletonModification2DCCDIK" id="SkeletonModification2DCCDIK_wn68q"]
tip_nodepath = NodePath("Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand")
@@ -118,89 +102,82 @@ modifications/2 = SubResource("SkeletonModification2DCCDIK_vcc72")
modifications/3 = SubResource("SkeletonModification2DCCDIK_kto0i")
[sub_resource type="AtlasTexture" id="AtlasTexture_jvn5w"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(15, 30, 20, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_vmdbp"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(64, 44, 10, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_x1oyw"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(93, 50, 17, 9)
[sub_resource type="AtlasTexture" id="AtlasTexture_vjx3c"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(79, 44, 10, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_f31xd"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(47, 33, 8, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_od8jf"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(59, 33, 7, 10)
[sub_resource type="AtlasTexture" id="AtlasTexture_p4711"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(71, 30, 19, 13)
[sub_resource type="AtlasTexture" id="AtlasTexture_1bk2b"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(12, 43, 6, 18)
[sub_resource type="AtlasTexture" id="AtlasTexture_y06yv"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(36, 50, 9, 11)
[sub_resource type="AtlasTexture" id="AtlasTexture_lu8go"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(22, 45, 8, 15)
[sub_resource type="AtlasTexture" id="AtlasTexture_cdq7v"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(93, 8, 29, 39)
[sub_resource type="AtlasTexture" id="AtlasTexture_e7wc3"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(72, 2, 13, 26)
[sub_resource type="AtlasTexture" id="AtlasTexture_wn68q"]
-atlas = ExtResource("6_xnora")
-region = Rect2(36, 0, 32, 29)
+atlas = ExtResource("1_jrplh")
+region = Rect2(36, 0, 32, 30)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_x5uj2"]
+atlas = ExtResource("1_jrplh")
+region = Rect2(15, 17, 17, 6)
[sub_resource type="AtlasTexture" id="AtlasTexture_vcc72"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(93, 3, 2, 3)
[sub_resource type="AtlasTexture" id="AtlasTexture_kto0i"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(105, 2, 3, 4)
-[sub_resource type="AtlasTexture" id="AtlasTexture_x5uj2"]
-atlas = ExtResource("6_xnora")
-region = Rect2(15, 17, 17, 6)
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_dn8ha"]
-
[sub_resource type="AtlasTexture" id="AtlasTexture_djocr"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(2, 7, 6, 19)
+[sub_resource type="AtlasTexture" id="AtlasTexture_6y4ja"]
+atlas = ExtResource("1_jrplh")
+region = Rect2(13, 2, 9, 10)
+
[sub_resource type="AtlasTexture" id="AtlasTexture_auqeq"]
-atlas = ExtResource("6_xnora")
+atlas = ExtResource("1_jrplh")
region = Rect2(0, 32, 9, 15)
-[sub_resource type="AtlasTexture" id="AtlasTexture_vlvtp"]
-atlas = ExtResource("9_b51fx")
-region = Rect2(55, 0, 9, 10)
-
-[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ccrjo"]
-radius = 3.00026
-height = 16.007
-
-[sub_resource type="Animation" id="Animation_vn3j1"]
-resource_name = "RESET"
+[sub_resource type="Animation" id="Animation_x5uj2"]
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
@@ -348,19 +325,19 @@ tracks/11/keys = {
tracks/12/type = "value"
tracks/12/imported = false
tracks/12/enabled = true
-tracks/12/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position")
+tracks/12/path = NodePath("Zombie/Butt/Body/Tie:position")
tracks/12/interp = 1
tracks/12/loop_wrap = true
tracks/12/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(-1, 13)]
+"values": [Vector2(-9, -21)]
}
tracks/13/type = "value"
tracks/13/imported = false
tracks/13/enabled = true
-tracks/13/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation")
+tracks/13/path = NodePath("Zombie/Butt/Body/Tie:rotation")
tracks/13/interp = 1
tracks/13/loop_wrap = true
tracks/13/keys = {
@@ -372,19 +349,19 @@ tracks/13/keys = {
tracks/14/type = "value"
tracks/14/imported = false
tracks/14/enabled = true
-tracks/14/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position")
+tracks/14/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:position")
tracks/14/interp = 1
tracks/14/loop_wrap = true
tracks/14/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(-2, 15)]
+"values": [Vector2(-1, 13)]
}
tracks/15/type = "value"
tracks/15/imported = false
tracks/15/enabled = true
-tracks/15/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation")
+tracks/15/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand:rotation")
tracks/15/interp = 1
tracks/15/loop_wrap = true
tracks/15/keys = {
@@ -396,19 +373,19 @@ tracks/15/keys = {
tracks/16/type = "value"
tracks/16/imported = false
tracks/16/enabled = true
-tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm:position")
+tracks/16/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:position")
tracks/16/interp = 1
tracks/16/loop_wrap = true
tracks/16/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(-14, -23)]
+"values": [Vector2(-2, 15)]
}
tracks/17/type = "value"
tracks/17/imported = false
tracks/17/enabled = true
-tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation")
+tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm:rotation")
tracks/17/interp = 1
tracks/17/loop_wrap = true
tracks/17/keys = {
@@ -420,19 +397,19 @@ tracks/17/keys = {
tracks/18/type = "value"
tracks/18/imported = false
tracks/18/enabled = true
-tracks/18/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position")
+tracks/18/path = NodePath("Zombie/Butt/Body/RightUpperArm:position")
tracks/18/interp = 1
tracks/18/loop_wrap = true
tracks/18/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(6, 10)]
+"values": [Vector2(-14, -23)]
}
tracks/19/type = "value"
tracks/19/imported = false
tracks/19/enabled = true
-tracks/19/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation")
+tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm:rotation")
tracks/19/interp = 1
tracks/19/loop_wrap = true
tracks/19/keys = {
@@ -444,19 +421,19 @@ tracks/19/keys = {
tracks/20/type = "value"
tracks/20/imported = false
tracks/20/enabled = true
-tracks/20/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position")
+tracks/20/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:position")
tracks/20/interp = 1
tracks/20/loop_wrap = true
tracks/20/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(-1, 13)]
+"values": [Vector2(6, 10)]
}
tracks/21/type = "value"
tracks/21/imported = false
tracks/21/enabled = true
-tracks/21/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation")
+tracks/21/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot:rotation")
tracks/21/interp = 1
tracks/21/loop_wrap = true
tracks/21/keys = {
@@ -468,19 +445,19 @@ tracks/21/keys = {
tracks/22/type = "value"
tracks/22/imported = false
tracks/22/enabled = true
-tracks/22/path = NodePath("Zombie/Butt/LeftUpperLeg:position")
+tracks/22/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:position")
tracks/22/interp = 1
tracks/22/loop_wrap = true
tracks/22/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(6, 4)]
+"values": [Vector2(-1, 13)]
}
tracks/23/type = "value"
tracks/23/imported = false
tracks/23/enabled = true
-tracks/23/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation")
+tracks/23/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg:rotation")
tracks/23/interp = 1
tracks/23/loop_wrap = true
tracks/23/keys = {
@@ -492,19 +469,19 @@ tracks/23/keys = {
tracks/24/type = "value"
tracks/24/imported = false
tracks/24/enabled = true
-tracks/24/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position")
+tracks/24/path = NodePath("Zombie/Butt/LeftUpperLeg:position")
tracks/24/interp = 1
tracks/24/loop_wrap = true
tracks/24/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(-2, 14)]
+"values": [Vector2(6, 4)]
}
tracks/25/type = "value"
tracks/25/imported = false
tracks/25/enabled = true
-tracks/25/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation")
+tracks/25/path = NodePath("Zombie/Butt/LeftUpperLeg:rotation")
tracks/25/interp = 1
tracks/25/loop_wrap = true
tracks/25/keys = {
@@ -516,19 +493,19 @@ tracks/25/keys = {
tracks/26/type = "value"
tracks/26/imported = false
tracks/26/enabled = true
-tracks/26/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position")
+tracks/26/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:position")
tracks/26/interp = 1
tracks/26/loop_wrap = true
tracks/26/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(-2, 12)]
+"values": [Vector2(-2, 14)]
}
tracks/27/type = "value"
tracks/27/imported = false
tracks/27/enabled = true
-tracks/27/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation")
+tracks/27/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot:rotation")
tracks/27/interp = 1
tracks/27/loop_wrap = true
tracks/27/keys = {
@@ -540,19 +517,19 @@ tracks/27/keys = {
tracks/28/type = "value"
tracks/28/imported = false
tracks/28/enabled = true
-tracks/28/path = NodePath("Zombie/Butt/RightUpperLeg:position")
+tracks/28/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:position")
tracks/28/interp = 1
tracks/28/loop_wrap = true
tracks/28/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(-6, 3)]
+"values": [Vector2(-2, 12)]
}
tracks/29/type = "value"
tracks/29/imported = false
tracks/29/enabled = true
-tracks/29/path = NodePath("Zombie/Butt/RightUpperLeg:rotation")
+tracks/29/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg:rotation")
tracks/29/interp = 1
tracks/29/loop_wrap = true
tracks/29/keys = {
@@ -564,19 +541,19 @@ tracks/29/keys = {
tracks/30/type = "value"
tracks/30/imported = false
tracks/30/enabled = true
-tracks/30/path = NodePath("Zombie/Butt:position")
+tracks/30/path = NodePath("Zombie/Butt/RightUpperLeg:position")
tracks/30/interp = 1
tracks/30/loop_wrap = true
tracks/30/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(5, -35)]
+"values": [Vector2(-6, 3)]
}
tracks/31/type = "value"
tracks/31/imported = false
tracks/31/enabled = true
-tracks/31/path = NodePath("Zombie/Butt:rotation")
+tracks/31/path = NodePath("Zombie/Butt/RightUpperLeg:rotation")
tracks/31/interp = 1
tracks/31/loop_wrap = true
tracks/31/keys = {
@@ -588,19 +565,19 @@ tracks/31/keys = {
tracks/32/type = "value"
tracks/32/imported = false
tracks/32/enabled = true
-tracks/32/path = NodePath("Zombie/Butt/Body:position")
+tracks/32/path = NodePath("Zombie/Butt:position")
tracks/32/interp = 1
tracks/32/loop_wrap = true
tracks/32/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(1, -2)]
+"values": [Vector2(5, -35)]
}
tracks/33/type = "value"
tracks/33/imported = false
tracks/33/enabled = true
-tracks/33/path = NodePath("Zombie/Butt/Body:rotation")
+tracks/33/path = NodePath("Zombie/Butt:rotation")
tracks/33/interp = 1
tracks/33/loop_wrap = true
tracks/33/keys = {
@@ -612,19 +589,19 @@ tracks/33/keys = {
tracks/34/type = "value"
tracks/34/imported = false
tracks/34/enabled = true
-tracks/34/path = NodePath("Zombie:position")
+tracks/34/path = NodePath("Zombie/Butt/Body:position")
tracks/34/interp = 1
tracks/34/loop_wrap = true
tracks/34/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(0, 0)]
+"values": [Vector2(1, -2)]
}
tracks/35/type = "value"
tracks/35/imported = false
tracks/35/enabled = true
-tracks/35/path = NodePath("Zombie:rotation")
+tracks/35/path = NodePath("Zombie/Butt/Body:rotation")
tracks/35/interp = 1
tracks/35/loop_wrap = true
tracks/35/keys = {
@@ -636,19 +613,19 @@ tracks/35/keys = {
tracks/36/type = "value"
tracks/36/imported = false
tracks/36/enabled = true
-tracks/36/path = NodePath("Zombie/Butt/Body/Head:position")
+tracks/36/path = NodePath("Zombie:position")
tracks/36/interp = 1
tracks/36/loop_wrap = true
tracks/36/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(-10, -25)]
+"values": [Vector2(0, 0)]
}
tracks/37/type = "value"
tracks/37/imported = false
tracks/37/enabled = true
-tracks/37/path = NodePath("Zombie/Butt/Body/Head:rotation")
+tracks/37/path = NodePath("Zombie:rotation")
tracks/37/interp = 1
tracks/37/loop_wrap = true
tracks/37/keys = {
@@ -660,67 +637,67 @@ tracks/37/keys = {
tracks/38/type = "value"
tracks/38/imported = false
tracks/38/enabled = true
-tracks/38/path = NodePath("Zombie/Butt/Body/Head:visible")
+tracks/38/path = NodePath("Zombie/Butt/Body/Head:position")
tracks/38/interp = 1
tracks/38/loop_wrap = true
tracks/38/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
+"update": 0,
+"values": [Vector2(-10, -25)]
}
tracks/39/type = "value"
tracks/39/imported = false
tracks/39/enabled = true
-tracks/39/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:position")
+tracks/39/path = NodePath("Zombie/Butt/Body/Head:rotation")
tracks/39/interp = 1
tracks/39/loop_wrap = true
tracks/39/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(-0.0022974, -17.0131)]
+"values": [0.0]
}
tracks/40/type = "value"
tracks/40/imported = false
tracks/40/enabled = true
-tracks/40/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:rotation")
+tracks/40/path = NodePath("Zombie/Butt/Body/Head:visible")
tracks/40/interp = 1
tracks/40/loop_wrap = true
tracks/40/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0.0]
+"update": 1,
+"values": [true]
}
tracks/41/type = "value"
tracks/41/imported = false
tracks/41/enabled = true
-tracks/41/path = NodePath("Zombie/Butt/Body/Head/TrashcanLid:visible")
+tracks/41/path = NodePath("Zombie/Butt/Body/Tie:scale")
tracks/41/interp = 1
tracks/41/loop_wrap = true
tracks/41/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
+"update": 0,
+"values": [Vector2(1, 1)]
}
tracks/42/type = "value"
tracks/42/imported = false
tracks/42/enabled = true
-tracks/42/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:texture")
+tracks/42/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand:texture")
tracks/42/interp = 1
tracks/42/loop_wrap = true
tracks/42/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
-"values": [SubResource("AtlasTexture_vlvtp")]
+"values": [SubResource("AtlasTexture_6y4ja")]
}
tracks/43/type = "value"
tracks/43/imported = false
tracks/43/enabled = true
-tracks/43/path = NodePath("Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm/Left_Hand:offset")
+tracks/43/path = NodePath("Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand:offset")
tracks/43/interp = 1
tracks/43/loop_wrap = true
tracks/43/keys = {
@@ -732,194 +709,223 @@ tracks/43/keys = {
tracks/44/type = "value"
tracks/44/imported = false
tracks/44/enabled = true
-tracks/44/path = NodePath("Zombie/Butt/Body/Tie:scale")
+tracks/44/path = NodePath("../../Mover:speed_control")
tracks/44/interp = 1
tracks/44/loop_wrap = true
tracks/44/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
-"values": [Vector2(1, 1)]
+"values": [0.0]
}
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_x5uj2"]
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_qnnv5"]
_data = {
-&"RESET": SubResource("Animation_vn3j1")
+&"RESET": SubResource("Animation_x5uj2")
}
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_hxyad"]
-size = Vector2(26, 48)
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_20equ"]
+size = Vector2(27, 44)
-[sub_resource type="Resource" id="Resource_ruqsf"]
-resource_local_to_scene = true
-script = ExtResource("7_b3p4o")
-flat_value = 5.0
-percentage_value = 0.0
-mult_value = 1.0
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_ap2hg"]
+size = Vector2(20, 44)
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_r4ug6"]
-size = Vector2(16, 48)
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_moyxp"]
+animation = &"basic/death"
-[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_2q05d"]
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_qoqrk"]
+animation = &"basic/eating"
-[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_ccrjo"]
-nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_2q05d")
-nodes/TimeScale/position = Vector2(60, 120)
-nodes/Tree/node = ExtResource("8_ckb7n")
-nodes/Tree/position = Vector2(-240, 120)
-node_connections = [&"TimeScale", 0, &"Tree", &"output", 0, &"TimeScale"]
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_20equ"]
+animation = &"basic/stand"
-[sub_resource type="Resource" id="Resource_ckb7n"]
-resource_local_to_scene = true
-script = ExtResource("7_b3p4o")
-flat_value = 0.2
-percentage_value = 0.0
-mult_value = 1.0
+[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ap2hg"]
+animation = &"basic/walk"
-[sub_resource type="Resource" id="Resource_dn8ha"]
-script = ExtResource("21_xnora")
-restartTreshold = -1.0
-metadata/_custom_type_script = "uid://c1x4n4nqyq72f"
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_b2rti"]
+switch_mode = 2
+advance_mode = 2
-[node name="Zombie" type="Node2D" node_paths=PackedStringArray("_player", "_tree")]
-y_sort_enabled = true
-script = ExtResource("1_qq3f1")
-MaxHP = 100.0
-_player = NodePath("CanvasGroup/basic_zombie_walk/AnimationPlayer")
-_tree = NodePath("AnimationTree")
-metadata/_edit_vertical_guides_ = [-159.0]
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_culaa"]
+advance_mode = 2
-[node name="CanvasGroup" type="CanvasGroup" parent="."]
-material = ExtResource("2_b51fx")
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_mc88i"]
+advance_mode = 2
+advance_expression = "eating"
-[node name="basic_zombie_walk" type="Node2D" parent="CanvasGroup"]
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_moyxp"]
+xfade_time = 0.5
+advance_mode = 2
+advance_expression = "eating == false and walking"
-[node name="Zombie" type="Skeleton2D" parent="CanvasGroup/basic_zombie_walk"]
-use_parent_material = true
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_qoqrk"]
+xfade_time = 0.5
+advance_mode = 2
+advance_expression = "eating and walking"
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_20equ"]
+advance_mode = 2
+advance_expression = "(eating or walking) == false"
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ap2hg"]
+advance_mode = 2
+advance_expression = "eating == false and walking"
+
+[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2naru"]
+advance_mode = 2
+advance_expression = "(eating or walking) == false"
+
+[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_mc88i"]
+states/death/node = SubResource("AnimationNodeAnimation_moyxp")
+states/death/position = Vector2(739, 100)
+states/eating/node = SubResource("AnimationNodeAnimation_qoqrk")
+states/eating/position = Vector2(407, 40)
+states/idle/node = SubResource("AnimationNodeAnimation_20equ")
+states/idle/position = Vector2(297, 100)
+states/walk/node = SubResource("AnimationNodeAnimation_ap2hg")
+states/walk/position = Vector2(407, 161)
+transitions = ["death", "End", SubResource("AnimationNodeStateMachineTransition_b2rti"), "Start", "idle", SubResource("AnimationNodeStateMachineTransition_culaa"), "idle", "eating", SubResource("AnimationNodeStateMachineTransition_mc88i"), "eating", "walk", SubResource("AnimationNodeStateMachineTransition_moyxp"), "walk", "eating", SubResource("AnimationNodeStateMachineTransition_qoqrk"), "walk", "idle", SubResource("AnimationNodeStateMachineTransition_20equ"), "idle", "walk", SubResource("AnimationNodeStateMachineTransition_ap2hg"), "eating", "idle", SubResource("AnimationNodeStateMachineTransition_2naru")]
+graph_offset = Vector2(28, -31)
+
+[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_moyxp"]
+
+[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_qoqrk"]
+nodes/main/node = SubResource("AnimationNodeStateMachine_mc88i")
+nodes/main/position = Vector2(-140, 180)
+nodes/output/position = Vector2(260, 140)
+nodes/speed/node = SubResource("AnimationNodeTimeScale_moyxp")
+nodes/speed/position = Vector2(100, 140)
+node_connections = [&"output", 0, &"speed", &"speed", 0, &"main"]
+
+[node name="Basic" type="Node2D" groups=["Zombies"]]
+script = ExtResource("4_moyxp")
+max_hp = 100.0
+layer = &"base"
+
+[node name="Visual" type="CanvasGroup" parent="."]
+position = Vector2(0, 30)
+
+[node name="basic_zombie_walk" type="Node2D" parent="Visual"]
+
+[node name="Zombie" type="Skeleton2D" parent="Visual/basic_zombie_walk"]
modification_stack = SubResource("SkeletonModificationStack2D_wn68q")
-[node name="Butt" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie"]
-use_parent_material = true
+[node name="Butt" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie"]
position = Vector2(5, -35)
-scale = Vector2(0.999903, 0.999903)
+scale = Vector2(0.999912, 0.999912)
rest = Transform2D(1, 0, 0, 1, 5, -35)
editor_settings/show_bone_gizmo = false
-[node name="Butt" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
+[node name="Butt" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt"]
texture = SubResource("AtlasTexture_jvn5w")
centered = false
offset = Vector2(-10, -3)
metadata/_edit_lock_ = true
-[node name="RightUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
+[node name="RightUpperLeg" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt"]
position = Vector2(-6, 3)
-scale = Vector2(0.999834, 0.999834)
+scale = Vector2(0.999827, 0.999827)
rest = Transform2D(1, 0, 0, 1, -6, 3)
editor_settings/show_bone_gizmo = false
-[node name="Right_Upper_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
+[node name="Right_Upper_Leg" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
texture = SubResource("AtlasTexture_vmdbp")
centered = false
offset = Vector2(-6, -2)
metadata/_edit_lock_ = true
-[node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
+[node name="RightLowerLeg" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/RightUpperLeg"]
position = Vector2(-2, 12)
-scale = Vector2(0.999832, 0.999832)
+scale = Vector2(0.999831, 0.999831)
rest = Transform2D(1, 0, 0, 1, -2, 12)
editor_settings/show_bone_gizmo = false
-[node name="RightFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
+[node name="RightFoot" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
position = Vector2(-2, 14)
-scale = Vector2(0.999831, 0.999831)
+scale = Vector2(0.999827, 0.999827)
rest = Transform2D(1, 0, 0, 1, -2, 14)
auto_calculate_length_and_angle = false
length = 12.0
bone_angle = 0.0
editor_settings/show_bone_gizmo = false
-[node name="Right_Foot" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot"]
+[node name="Right_Foot" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot"]
texture = SubResource("AtlasTexture_x1oyw")
centered = false
offset = Vector2(-4, -3)
metadata/_edit_lock_ = true
-[node name="Right_Lower_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
+[node name="Right_Lower_Leg" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"]
position = Vector2(-18, -2)
texture = SubResource("AtlasTexture_vjx3c")
centered = false
offset = Vector2(12, 1)
metadata/_edit_lock_ = true
-[node name="LeftUpperLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
+[node name="LeftUpperLeg" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt"]
position = Vector2(6, 4)
-scale = Vector2(0.999836, 0.999836)
+scale = Vector2(0.999827, 0.999827)
rest = Transform2D(1, 0, 0, 1, 6, 4)
editor_settings/show_bone_gizmo = false
-[node name="Left_Upper_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
+[node name="Left_Upper_Leg" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
texture = SubResource("AtlasTexture_f31xd")
centered = false
offset = Vector2(-4, -2)
metadata/_edit_lock_ = true
-[node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
+[node name="LeftLowerLeg" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"]
position = Vector2(-1, 13)
-scale = Vector2(0.999832, 0.999832)
+scale = Vector2(0.999828, 0.999828)
rest = Transform2D(1, 0, 0, 1, -1, 13)
editor_settings/show_bone_gizmo = false
-[node name="Left_Lower_Leg" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
+[node name="Left_Lower_Leg" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
texture = SubResource("AtlasTexture_od8jf")
centered = false
offset = Vector2(-1, 0)
metadata/_edit_lock_ = true
-[node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
+[node name="LeftFoot" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"]
position = Vector2(6, 10)
-scale = Vector2(0.99983, 0.99983)
+scale = Vector2(0.999823, 0.999823)
rest = Transform2D(1, 0, 0, 1, 6, 10)
auto_calculate_length_and_angle = false
length = 12.0
bone_angle = 160.0
editor_settings/show_bone_gizmo = false
-[node name="Left_Foot" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot"]
+[node name="Left_Foot" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot"]
texture = SubResource("AtlasTexture_p4711")
centered = false
offset = Vector2(-14, -3)
metadata/_edit_lock_ = true
-[node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"]
-use_parent_material = true
+[node name="Body" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt"]
position = Vector2(1, -2)
scale = Vector2(0.999827, 0.999827)
rest = Transform2D(1, 0, 0, 1, 1, -2)
editor_settings/show_bone_gizmo = false
-[node name="RightUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
-use_parent_material = true
+[node name="RightUpperArm" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body"]
position = Vector2(-14, -23)
-scale = Vector2(0.999829, 0.999829)
+scale = Vector2(0.999828, 0.999828)
rest = Transform2D(1, 0, 0, 1, -14, -23)
editor_settings/show_bone_gizmo = false
-[node name="Right_Upper_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
+[node name="Right_Upper_Arm" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
texture = SubResource("AtlasTexture_1bk2b")
centered = false
offset = Vector2(-4, -2)
metadata/_edit_lock_ = true
-[node name="RightLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
+[node name="RightLowerArm" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"]
position = Vector2(-2, 15)
-scale = Vector2(0.999827, 0.999827)
+scale = Vector2(0.999811, 0.999811)
rest = Transform2D(1, 0, 0, 1, -2, 15)
editor_settings/show_bone_gizmo = false
-[node name="RightHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
+[node name="RightHand" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
position = Vector2(-1, 13)
scale = Vector2(0.99983, 0.99983)
rest = Transform2D(1, 0, 0, 1, -1, 13)
@@ -928,97 +934,53 @@ length = 8.0
bone_angle = 90.0
editor_settings/show_bone_gizmo = false
-[node name="Right_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand"]
+[node name="Right_Hand" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm/RightHand"]
texture = SubResource("AtlasTexture_y06yv")
centered = false
offset = Vector2(-4, -2)
metadata/_edit_lock_ = true
-[node name="Right_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
+[node name="Right_Lower_Arm" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm"]
texture = SubResource("AtlasTexture_lu8go")
centered = false
offset = Vector2(-5, -1)
metadata/_edit_lock_ = true
-[node name="Body" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
+[node name="Body" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body"]
rotation = 0.00163735
texture = SubResource("AtlasTexture_cdq7v")
centered = false
offset = Vector2(-15, -27)
metadata/_edit_lock_ = true
-[node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
+[node name="Tie" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body"]
position = Vector2(-9, -21)
-rotation = -0.0127525
-skew = -0.000478387
+skew = -9.59635e-05
rest = Transform2D(1, 0, 0, 1, -9, -21)
auto_calculate_length_and_angle = false
length = 24.0
bone_angle = 100.0
editor_settings/show_bone_gizmo = false
-[node name="Tie" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Tie"]
+[node name="Tie" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/Tie"]
texture = SubResource("AtlasTexture_e7wc3")
centered = false
offset = Vector2(-10, -1)
metadata/_edit_lock_ = true
-[node name="Head" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
+[node name="Head" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body"]
position = Vector2(-10, -25)
scale = Vector2(0.999829, 0.999829)
rest = Transform2D(1, 0, 0, 1, -10, -25)
editor_settings/show_bone_gizmo = false
-[node name="HeadParticle" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" node_paths=PackedStringArray("data")]
-collision_layer = 128
-collision_mask = 64
-freeze = true
-script = ExtResource("7_dn8ha")
-data = NodePath("../../../../../../..")
-maxAngle = 45.0
-minTorque = -45.0
-maxTorque = 45.0
-Impulse = 100.0
-
-[node name="Head" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle"]
+[node name="Head" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/Head"]
texture = SubResource("AtlasTexture_wn68q")
centered = false
offset = Vector2(-20, -24)
metadata/_edit_lock_ = true
-[node name="Right_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-16, -8.00001)
-texture = SubResource("AtlasTexture_vcc72")
-centered = false
-offset = Vector2(-2, -2)
-metadata/_edit_lock_ = true
-
-[node name="Left_Eye" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-4, -9.00001)
-texture = SubResource("AtlasTexture_kto0i")
-centered = false
-offset = Vector2(-2, -2)
-metadata/_edit_lock_ = true
-
-[node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"]
-position = Vector2(-2.98416, 2.96178)
-rotation = -0.0089077
-scale = Vector2(0.999826, 0.999826)
-texture = SubResource("AtlasTexture_x5uj2")
-centered = false
-offset = Vector2(-12, -2)
-metadata/_edit_lock_ = true
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle"]
-position = Vector2(-4.58496, -8.21035)
-shape = SubResource("CircleShape2D_dn8ha")
-
-[node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" node_paths=PackedStringArray("_observedEntity")]
-script = ExtResource("8_mc1kl")
-_threshold = 0.0
-_observedEntity = NodePath("../../../../../../../..")
-
-[node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
+[node name="Jaw" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/Head"]
position = Vector2(-3, 3)
scale = Vector2(0.999826, 0.999826)
rest = Transform2D(1, 0, 0, 1, -3, 3)
@@ -1027,10 +989,13 @@ length = 11.0
bone_angle = 180.0
editor_settings/show_bone_gizmo = false
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Jaw"]
-remote_path = NodePath("../../HeadParticle/Head/Jaw")
+[node name="Jaw" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/Head/Jaw"]
+texture = SubResource("AtlasTexture_x5uj2")
+centered = false
+offset = Vector2(-12, -2)
+metadata/_edit_lock_ = true
-[node name="RightEye" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
+[node name="RightEye" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/Head"]
position = Vector2(-16, -8)
rest = Transform2D(1, 0, 0, 1, -16, -8)
auto_calculate_length_and_angle = false
@@ -1038,10 +1003,13 @@ length = 2.0
bone_angle = 180.0
editor_settings/show_bone_gizmo = false
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/RightEye"]
-remote_path = NodePath("../../HeadParticle/Head/Right_Eye")
+[node name="Right_Eye" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/Head/RightEye"]
+texture = SubResource("AtlasTexture_vcc72")
+centered = false
+offset = Vector2(-2, -2)
+metadata/_edit_lock_ = true
-[node name="LeftEye" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"]
+[node name="LeftEye" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/Head"]
position = Vector2(-4, -9)
rest = Transform2D(1, 0, 0, 1, -4, -9)
auto_calculate_length_and_angle = false
@@ -1049,168 +1017,98 @@ length = 2.0
bone_angle = 180.0
editor_settings/show_bone_gizmo = false
-[node name="RemoteTransform2D" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/LeftEye"]
-remote_path = NodePath("../../HeadParticle/Head/Left_Eye")
+[node name="Left_Eye" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/Head/LeftEye"]
+texture = SubResource("AtlasTexture_kto0i")
+centered = false
+offset = Vector2(-2, -2)
+metadata/_edit_lock_ = true
-[node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"]
+[node name="LeftUpperArm" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body"]
position = Vector2(-1, -20)
scale = Vector2(0.99983, 0.99983)
rest = Transform2D(1, 0, 0, 1, -1, -20)
editor_settings/show_bone_gizmo = false
-[node name="Left_Upper_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
+[node name="Left_Upper_Arm" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
position = Vector2(-37, 10)
texture = SubResource("AtlasTexture_djocr")
centered = false
offset = Vector2(33, -12)
metadata/_edit_lock_ = true
-[node name="HandProjectile" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" node_paths=PackedStringArray("data")]
+[node name="LeftLowerArm" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
position = Vector2(-2, 14)
-collision_layer = 128
-collision_mask = 64
-freeze = true
-script = ExtResource("7_dn8ha")
-data = NodePath("../../../../../../..")
-minTorque = -45.0
-maxTorque = 45.0
-
-[node name="Left_Lower_Arm" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"]
-rotation = -0.0135165
-scale = Vector2(0.999999, 0.999999)
-texture = SubResource("AtlasTexture_auqeq")
-centered = false
-offset = Vector2(-5, 0)
-metadata/_edit_lock_ = true
-
-[node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm"]
-show_behind_parent = true
-position = Vector2(-0.99983, 12.9978)
-rotation = -0.0111417
-scale = Vector2(0.99966, 0.99966)
-texture = SubResource("AtlasTexture_vlvtp")
-centered = false
-offset = Vector2(-4, -1)
-metadata/_edit_lock_ = true
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile"]
-position = Vector2(-0.00104554, 13.0063)
-shape = SubResource("CapsuleShape2D_ccrjo")
-
-[node name="Observer" type="Node" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" node_paths=PackedStringArray("_observedEntity")]
-script = ExtResource("8_mc1kl")
-_observedEntity = NodePath("../../../../../../../..")
-
-[node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"]
-position = Vector2(-2, 14)
-scale = Vector2(0.999829, 0.999829)
+scale = Vector2(0.999828, 0.999828)
rest = Transform2D(1, 0, 0, 1, -2, 14)
editor_settings/show_bone_gizmo = false
-[node name="LeftHand" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
+[node name="LeftHand" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
position = Vector2(-1, 13)
-scale = Vector2(0.999829, 0.999829)
+scale = Vector2(0.999828, 0.999828)
rest = Transform2D(1, 0, 0, 1, -1, 13)
auto_calculate_length_and_angle = false
length = 6.0
bone_angle = 90.0
editor_settings/show_bone_gizmo = false
-[node name="Left_Hand_Remote" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand"]
-remote_path = NodePath("../../../HandProjectile/Left_Lower_Arm/Left_Hand")
+[node name="Left_Hand" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand"]
+texture = SubResource("AtlasTexture_6y4ja")
+centered = false
+offset = Vector2(-4, -1)
+metadata/_edit_lock_ = true
-[node name="Left_Lower_Arm_Remote" type="RemoteTransform2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
-scale = Vector2(1.00017, 1.00017)
-remote_path = NodePath("../../HandProjectile/Left_Lower_Arm")
+[node name="Left_Lower_Arm" type="Sprite2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm"]
+texture = SubResource("AtlasTexture_auqeq")
+centered = false
+offset = Vector2(-5, 0)
+metadata/_edit_lock_ = true
-[node name="AnimationPlayer" type="AnimationPlayer" parent="CanvasGroup/basic_zombie_walk"]
+[node name="AnimationPlayer" type="AnimationPlayer" parent="Visual/basic_zombie_walk"]
libraries = {
-&"": SubResource("AnimationLibrary_x5uj2"),
-&"basic": ExtResource("9_y6afe")
+&"": SubResource("AnimationLibrary_qnnv5"),
+&"basic": ExtResource("2_yccea")
}
-[node name="EatingStatistics" type="Node" parent="CanvasGroup/basic_zombie_walk/AnimationPlayer"]
-script = ExtResource("8_b51fx")
-animationName = "basic/eating"
-trackToFind = "../../Eatbox"
-
-[node name="Hitbox" type="Area2D" parent="."]
-collision_layer = 8
+[node name="Collider" type="Area2D" parent="."]
+collision_layer = 4
collision_mask = 0
+monitoring = false
+script = ExtResource("3_qoqrk")
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"]
-position = Vector2(4, -24)
-shape = SubResource("RectangleShape2D_hxyad")
+[node name="CollisionShape2D" type="CollisionShape2D" parent="Collider"]
+position = Vector2(1.5, 8)
+shape = SubResource("RectangleShape2D_20equ")
-[node name="Eatbox" type="Area2D" parent="."]
+[node name="Hurtbox" type="Area2D" parent="."]
collision_layer = 0
collision_mask = 2
-script = ExtResource("3_2aulo")
-_damage = SubResource("Resource_ruqsf")
+monitorable = false
+script = ExtResource("4_20equ")
+lookup_layers = 1
-[node name="CollisionShape2D" type="CollisionShape2D" parent="Eatbox"]
-position = Vector2(-10, -24)
-shape = SubResource("RectangleShape2D_r4ug6")
+[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"]
+position = Vector2(-10, 8)
+shape = SubResource("RectangleShape2D_ap2hg")
-[node name="AnimationTree" type="AnimationTree" parent="." node_paths=PackedStringArray("entity")]
-root_node = NodePath("../CanvasGroup/basic_zombie_walk")
-tree_root = SubResource("AnimationNodeBlendTree_ccrjo")
-advance_expression_base_node = NodePath("../Eatbox")
-anim_player = NodePath("../CanvasGroup/basic_zombie_walk/AnimationPlayer")
-parameters/TimeScale/scale = 1.0
-script = ExtResource("11_ccrjo")
-entity = NodePath("..")
+[node name="AnimationTree" type="AnimationTree" parent="."]
+root_node = NodePath("../Visual/basic_zombie_walk")
+tree_root = SubResource("AnimationNodeBlendTree_qoqrk")
+advance_expression_base_node = NodePath("../Controller")
+anim_player = NodePath("../Visual/basic_zombie_walk/AnimationPlayer")
+parameters/speed/scale = 1.0
+script = ExtResource("3_qnnv5")
[node name="Mover" type="Node" parent="."]
-script = ExtResource("4_u5syx")
-_speed = SubResource("Resource_ckb7n")
+script = ExtResource("3_yccea")
-[node name="HitPlayer" type="Node" parent="."]
-script = ExtResource("12_he8da")
-playlist = Array[AudioStream]([ExtResource("12_vjrlo")])
-channels = Array[String](["hit"])
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
+[node name="Controller" type="Node" parent="." node_paths=PackedStringArray("hurtbox")]
+script = ExtResource("5_mc88i")
+hurtbox = NodePath("../Hurtbox")
+damage = 5.0
-[node name="GroanPlayer" type="Node" parent="."]
-script = ExtResource("10_ruqsf")
-audioStream = ExtResource("12_ad42i")
-channel = "groan"
-metadata/_custom_type_script = "uid://c36bj8u7jghc7"
+[node name="DeathHandler" type="Node" parent="."]
+script = ExtResource("9_ap2hg")
-[node name="Timer" type="Timer" parent="GroanPlayer"]
-wait_time = 20.0
-
-[node name="StartTimer" type="Timer" parent="GroanPlayer/Timer"]
-wait_time = 5.0
-one_shot = true
-autostart = true
-
-[node name="EffectPlayer" type="Node" parent="."]
-script = ExtResource("17_ltj46")
-effectsToMap = Array[Resource]([ExtResource("18_2q05d"), ExtResource("19_ccrjo")])
-streamsToMapTo = Array[AudioStream]([ExtResource("2_hh4qh"), ExtResource("3_ltj46")])
-streamSettings = Array[Object]([null, SubResource("Resource_dn8ha")])
-
-[node name="DeathHandler" type="Node" parent="." node_paths=PackedStringArray("_tree", "_collider")]
-script = ExtResource("23_mc1kl")
-_tree = NodePath("../AnimationTree")
-_collider = NodePath("../Hitbox/CollisionShape2D")
-
-[node name="FlashController" type="Node" parent="."]
-script = ExtResource("24_b51fx")
-shaderMaterial = ExtResource("2_b51fx")
-
-[connection signal="HasBeenKilled" from="." to="DeathHandler" method="OnKilled"]
-[connection signal="OnDamaged" from="." to="HitPlayer" method="Play"]
-[connection signal="OnDamaged" from="." to="FlashController" method="DamageFlash"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" method="FallOff"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/Jaw/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/RightEye/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/LeftEye/RemoteTransform2D" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" method="FallOff"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand/Left_Hand_Remote" method="queue_free"]
-[connection signal="ThresholdReached" from="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Observer" to="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/Left_Lower_Arm_Remote" method="queue_free"]
-[connection signal="area_entered" from="Eatbox" to="Eatbox" method="OnAreaEntered"]
-[connection signal="area_exited" from="Eatbox" to="Eatbox" method="OnAreaExited"]
-[connection signal="timeout" from="GroanPlayer/Timer" to="GroanPlayer" method="Play"]
-[connection signal="timeout" from="GroanPlayer/Timer/StartTimer" to="GroanPlayer/Timer" method="start"]
+[connection signal="killed" from="." to="Controller" method="_on_entity_killed"]
+[connection signal="toggled" from="." to="Collider" method="toggle"]
+[connection signal="animation_finished" from="AnimationTree" to="DeathHandler" method="_on_animation_tree_animation_finished"]
diff --git a/scripts/Cursor.cs b/scripts/Cursor.cs
deleted file mode 100644
index 274543c..0000000
--- a/scripts/Cursor.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-
-namespace Newlon;
-
-public partial class Cursor : Node2D
-{
- #region Textures
- private readonly Texture2D defaultArrow = ResourceLoader.Load("uid://c20dwjohaljdk");
- private readonly Texture2D defaultPoint = ResourceLoader.Load("uid://cw0rqtl8ulndd");
- private readonly Texture2D shovelArrow = ResourceLoader.Load("uid://dq375kjjo17g2");
- private readonly Texture2D plantArrow = ResourceLoader.Load("uid://dx123mhv4oee");
- #endregion
-
- public static Cursor Instance { get; private set; }
- public bool shovel = false;
- public bool plant = false;
- public static CursorMode Mode = CursorMode.Mouse;
- private float sensitivity = 200.0f;
-
- public enum CursorMode
- {
- Mouse,
- Gamepad
- }
- public override void _EnterTree()
- {
- Instance = this;
- }
-
- public override void _Process(double delta)
- {
- switch (Mode)
- {
- case CursorMode.Mouse:
- break;
- case CursorMode.Gamepad:
- if (GamepadHandler.Instance.IsGamepadControlled == false) return;
-
- var vector = Input.GetVector("cursor_left", "cursor_right", "cursor_up", "cursor_down");
-
- if (vector == Vector2.Zero) return;
-
- var set_position = GetGlobalMousePosition() + vector * (float)delta * sensitivity / (float)Engine.TimeScale;
-
- GetViewport().WarpMouse(GetGlobalTransformWithCanvas() * set_position);
- break;
-
- }
-
-}
- public static Vector2 GetCursorPosition()
- {
- return Instance.GetGlobalMousePosition();
- }
-}
diff --git a/scripts/Cursor.cs.uid b/scripts/Cursor.cs.uid
deleted file mode 100644
index a321807..0000000
--- a/scripts/Cursor.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c6ucy48qwaxuc
diff --git a/scripts/Newlon.cs b/scripts/Newlon.cs
deleted file mode 100644
index aa01d14..0000000
--- a/scripts/Newlon.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using Godot;
-
-namespace Newlon;
-
-public static class LON
-{
- public static void ForceFinishTween(Tween tween)
- {
- if (tween == null) return;
-
- tween.Pause();
- tween.CustomStep(Mathf.Inf);
- }
-}
\ No newline at end of file
diff --git a/scripts/Newlon.cs.uid b/scripts/Newlon.cs.uid
deleted file mode 100644
index 968f5e7..0000000
--- a/scripts/Newlon.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bkr8vxejk4n2u
diff --git a/scripts/SaveSerializer.cs b/scripts/SaveSerializer.cs
deleted file mode 100644
index 3a8ee44..0000000
--- a/scripts/SaveSerializer.cs
+++ /dev/null
@@ -1,101 +0,0 @@
-using Godot;
-
-using Newlon.Resources;
-using System.Text.Json;
-using System.Collections.Generic;
-
-namespace Newlon;
-
-public partial class SaveSerializer : Node
-{
- const string SAVE_PATH = "user://save.json";
- public override void _Ready()
- {
- GetTree().AutoAcceptQuit = false;
- LoadGame();
- }
-
- public override void _Notification(int what)
- {
- if (what == NotificationWMCloseRequest)
- {
- SaveGame();
- GetTree().Quit();
- }
- }
- public static void SaveGame()
- {
- var access = FileAccess.Open(SAVE_PATH, FileAccess.ModeFlags.Write);
- var playerProgress = PlayerProgress.Instance;
- var save = new SaveData
- {
-
- SFXVolume = (float)Settings.SFX,
- MusicVolume = (float)Settings.Music,
- SplashSeen = Settings.Splash,
- Money = playerProgress.Money,
- SeedpacketSlots = playerProgress.MaxSeedpackets,
- PlayerPlants = [],
-
- SaveGameVersion = (string)ProjectSettings.GetSetting("application/config/version")
- };
-
- foreach (var plant in playerProgress.PlayerPlants)
- {
- save.PlayerPlants.Add(plant.GetInternalID());
- }
-
- access.StoreString(JsonSerializer.Serialize(save));
-
- access.Close();
- }
- public static void LoadGame()
- {
- if (FileAccess.FileExists(SAVE_PATH) == false)
- {
- InitiateCleanSave();
- return;
- }
-
- var access = FileAccess.Open(SAVE_PATH, FileAccess.ModeFlags.Read);
-
- var parsed = JsonSerializer.Deserialize(access.GetAsText());
-
- Settings.SFX = parsed.SFXVolume;
- Settings.Music = parsed.MusicVolume;
- Settings.Splash = parsed.SplashSeen;
-
- AudioServer.SetBusVolumeDb(2, Mathf.LinearToDb(Mathf.Exp((float)Settings.SFX) - 1));
- AudioServer.SetBusVolumeDb(1, Mathf.LinearToDb(Mathf.Exp((float)Settings.Music) - 1));
-
- var playerProgress = PlayerProgress.Instance;
- playerProgress.MaxSeedpackets = parsed.SeedpacketSlots;
- playerProgress.PlayerPlants = [];
-
- foreach (var plantId in parsed.PlayerPlants)
- {
- playerProgress.PlayerPlants.Add((PlantResource)GameRegistry.GetEntityByName(plantId));
- }
-
-
- access.Close();
- }
- private static void InitiateCleanSave()
- {
- PlayerProgress.Instance.PlayerPlants = new List([(PlantResource)GameRegistry.GetEntityByName("peashooter")]);
- PlayerProgress.Instance.Money = 0;
-
- SaveGame();
- }
- private partial class SaveData
- {
- public float SFXVolume { get; set; }
- public float MusicVolume { get; set; }
- public string SaveGameVersion { get; set; }
- public bool SplashSeen { get; set; }
- public List PlayerPlants { get; set; }
- public int Money { get; set; } = 0;
- public int SeedpacketSlots { get; set; } = 6;
- public List FinishedLevels { get; set; } = new();
- }
-}
diff --git a/scripts/SaveSerializer.cs.uid b/scripts/SaveSerializer.cs.uid
deleted file mode 100644
index 2b68752..0000000
--- a/scripts/SaveSerializer.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bflvotmed7jfy
diff --git a/scripts/TimeScalableAnimationTree.cs b/scripts/TimeScalableAnimationTree.cs
deleted file mode 100644
index e7206cd..0000000
--- a/scripts/TimeScalableAnimationTree.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Godot;
-
-namespace Newlon.Components;
-
-public partial class TimeScalableAnimationTree : AnimationTree
-{
- [Export] private Entity entity;
- public override void _Ready()
- {
- entity.OnLocalTimescaleChanged += OnTimescaleChanged;
- }
-
- private void OnTimescaleChanged(float timescale)
- {
- Set("parameters/TimeScale/scale", timescale);
- }
-}
diff --git a/scripts/TimeScalableAnimationTree.cs.uid b/scripts/TimeScalableAnimationTree.cs.uid
deleted file mode 100644
index f44c2c0..0000000
--- a/scripts/TimeScalableAnimationTree.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dwlwi42smgxkb
diff --git a/scripts/TimeScalableTimer.cs b/scripts/TimeScalableTimer.cs
deleted file mode 100644
index a6e5c51..0000000
--- a/scripts/TimeScalableTimer.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Godot;
-
-namespace Newlon.Components;
-
-public partial class TimeScalableTimer : Timer
-{
- [Export] private Entity entity;
-
- private float internal_timescale;
- public override void _Ready()
- {
- internal_timescale = entity.LocalTimescale;
- entity.OnLocalTimescaleChanged += OnTimescaleChanged;
- }
-
- private void OnTimescaleChanged(float timescale)
- {
- WaitTime *= internal_timescale / timescale;
- internal_timescale = timescale;
- }
-}
diff --git a/scripts/TimeScalableTimer.cs.uid b/scripts/TimeScalableTimer.cs.uid
deleted file mode 100644
index 5e713e2..0000000
--- a/scripts/TimeScalableTimer.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c4jy0cnbnx33h
diff --git a/scripts/audio/AudioSequencer.cs b/scripts/audio/AudioSequencer.cs
deleted file mode 100644
index 292cda1..0000000
--- a/scripts/audio/AudioSequencer.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-using Godot;
-using Godot.Collections;
-
-public partial class AudioSequencer : Node
-{
- private static AudioSequencer instance;
- [Export]private Dictionary channels = [];
- [Export]private Dictionary channelProcess = [];
- [Export]private Dictionary channelSettings = [];
-
- [Export]
- private ChannelSettings standardSettings;
-
- public override void _Ready()
- {
- instance = this;
- }
-
- public static bool IsChannelPlaying(string id)
- {
- if (instance.channels.ContainsKey(id) == false)
- {
- instance.InitiateChannel(id);
- return false;
- }
-
- if (instance.channelSettings[id].restartTreshold == 0)
- return false;
- if (instance.channelSettings[id].restartTreshold < 0)
- return instance.channelProcess[id];
-
- return instance.channelProcess[id] && instance.channels[id].GetPlaybackPosition() < instance.channelSettings[id].restartTreshold / Engine.TimeScale;
- }
-
- public static void Play(string id, AudioStream what, ChannelSettings settings = null)
- {
- if (IsChannelPlaying(id)) return;
- if (settings != null) ChangeSettings(id, settings);
- instance.PlayAtChannel(id, what);
- }
-
- public static void ChangeSettings(string id, ChannelSettings settings)
- {
-
- if (instance.channels.ContainsKey(id) == false)
- {
- instance.InitiateChannel(id, settings);
- return;
- }
- if (settings == null)
- {
- instance.channelSettings[id] = instance.standardSettings;
- return;
- }
- instance.channelSettings[id] = settings;
- }
-
- private AudioStreamPlayer InitiateChannel(string id, ChannelSettings settings = null)
- {
- AudioStreamPlayer player = new();
-
- AddChild(player);
- channels.Add(id, player);
- channelProcess.Add(id, false);
- player.Name = id;
- player.MaxPolyphony = 5;
- player.Bus = "SFXBus";
-
- player.Finished += () => { MarkChannel(id, false); };
-
- if (settings != null)
- {
- channelSettings.Add(id, settings);
- }
- else
- {
- channelSettings.Add(id, standardSettings);
- }
-
- return player;
- }
-
- private void PlayAtChannel(string id, AudioStream what)
- {
- channels[id].Stream = what;
- channels[id].Play();
- MarkChannel(id, true);
- }
-
- private void MarkChannel(string id, bool how)
- {
- channelProcess[id] = how;
- }
-}
diff --git a/scripts/audio/AudioSequencer.cs.uid b/scripts/audio/AudioSequencer.cs.uid
deleted file mode 100644
index f37a1ea..0000000
--- a/scripts/audio/AudioSequencer.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cauc1ieq84fwg
diff --git a/scripts/audio/AudioSlider.cs b/scripts/audio/AudioSlider.cs
deleted file mode 100644
index f5c54d5..0000000
--- a/scripts/audio/AudioSlider.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using Godot;
-using Newlon;
-
-public partial class AudioSlider : HSlider
-{
- enum TYPE
- {
- SFX,
- MUSIC
- }
-
- [Export] private TYPE affects;
- public override void _Ready()
- {
- ValueChanged += OnValueChanged;
- if (affects == TYPE.SFX)
- {
- SetValueNoSignal(Settings.SFX);
- }
- else
- {
- SetValueNoSignal(Settings.Music);
- }
- }
-
- private void OnValueChanged(double value)
- {
- if (affects == TYPE.SFX)
- {
- var volume = Mathf.LinearToDb(Mathf.Exp((float)value) - 1); ;
- Settings.SFX = value;
- AudioServer.SetBusVolumeDb(2, volume);
- }
- else
- {
- var volume = Mathf.LinearToDb(Mathf.Exp((float)value) - 1); ;
- Settings.Music = value;
- AudioServer.SetBusVolumeDb(1, volume);
- }
- }
-
-}
diff --git a/scripts/audio/AudioSlider.cs.uid b/scripts/audio/AudioSlider.cs.uid
deleted file mode 100644
index 687d2b0..0000000
--- a/scripts/audio/AudioSlider.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ciccaxqo70s13
diff --git a/scripts/audio/ChannelPlayer.cs b/scripts/audio/ChannelPlayer.cs
deleted file mode 100644
index 59e9e43..0000000
--- a/scripts/audio/ChannelPlayer.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Godot;
-
-[GlobalClass]
-public partial class ChannelPlayer : Node
-{
- [Export] private ChannelSettings settings;
- [Export] private AudioStream audioStream;
- [Export] private string channel;
-
- public void Play()
- {
- AudioSequencer.Play(channel, audioStream);
- if (settings != null)
- AudioSequencer.ChangeSettings(channel, settings);
- }
-}
diff --git a/scripts/audio/ChannelPlayer.cs.uid b/scripts/audio/ChannelPlayer.cs.uid
deleted file mode 100644
index 0a64644..0000000
--- a/scripts/audio/ChannelPlayer.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c36bj8u7jghc7
diff --git a/scripts/audio/ChannelPlaylist.cs b/scripts/audio/ChannelPlaylist.cs
deleted file mode 100644
index 382ae2c..0000000
--- a/scripts/audio/ChannelPlaylist.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using Godot;
-using Godot.Collections;
-
-[GlobalClass]
-public partial class ChannelPlaylist : Node
-{
- [Export] private Array playlist;
- [Export] private Array channels;
- [Export] private ChannelSettings channelSettings;
- private int internal_index = 0;
-
- public void Play()
- {
- AudioSequencer.Play(channels[internal_index], playlist[internal_index]);
- }
-
- public void SetIndex(int index)
- {
- internal_index = index;
- if (internal_index >= playlist.Count)
- {
- internal_index = 0;
- }
- else if (internal_index < 0)
- {
- internal_index = playlist.Count - 1;
- }
- }
-
- public void Next()
- {
- SetIndex(internal_index + 1);
- }
-
-}
diff --git a/scripts/audio/ChannelPlaylist.cs.uid b/scripts/audio/ChannelPlaylist.cs.uid
deleted file mode 100644
index ae20b9e..0000000
--- a/scripts/audio/ChannelPlaylist.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cnn0ymuhypdff
diff --git a/scripts/audio/ChannelSettings.cs b/scripts/audio/ChannelSettings.cs
deleted file mode 100644
index a302942..0000000
--- a/scripts/audio/ChannelSettings.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using Godot;
-
-[GlobalClass]
-public partial class ChannelSettings : Resource
-{
- [Export] public float restartTreshold;
-}
diff --git a/scripts/audio/ChannelSettings.cs.uid b/scripts/audio/ChannelSettings.cs.uid
deleted file mode 100644
index d45c898..0000000
--- a/scripts/audio/ChannelSettings.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c1x4n4nqyq72f
diff --git a/scripts/audio/ChooseYourSeedsMusic.cs b/scripts/audio/ChooseYourSeedsMusic.cs
deleted file mode 100644
index bfc10d2..0000000
--- a/scripts/audio/ChooseYourSeedsMusic.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-
-public partial class ChooseYourSeedsMusic : AudioStreamPlayer
-{
- public override void _Ready()
- {
- RuntimeLevelData.Instance.OnLevelStateChanged += OnLevelStateChanged;
- }
-
- private void OnLevelStateChanged(RuntimeLevelData.LevelStates state)
- {
- if (state == RuntimeLevelData.LevelStates.ChooseYourSeeds)
- {
- Play();
- }
- else
- {
- var tween = CreateTween();
- tween.TweenProperty(this, "volume_linear", 0, 1);
- tween.TweenCallback(Callable.From(Stop));
- }
- }
-}
diff --git a/scripts/audio/ChooseYourSeedsMusic.cs.uid b/scripts/audio/ChooseYourSeedsMusic.cs.uid
deleted file mode 100644
index 5fd32b6..0000000
--- a/scripts/audio/ChooseYourSeedsMusic.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b4ysi1iutmju3
diff --git a/scripts/audio/EffectBasedPlayer.cs b/scripts/audio/EffectBasedPlayer.cs
deleted file mode 100644
index 786d853..0000000
--- a/scripts/audio/EffectBasedPlayer.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using Godot;
-using Godot.Collections;
-using System.Collections.Generic;
-using Newlon.Components;
-using Newlon.Systems.Effects;
-
-public partial class EffectBasedPlayer : Node
-{
- [Export] public Array effectsToMap;
- [Export] public Array streamsToMapTo;
- [Export] public Array streamSettings;
- private System.Collections.Generic.Dictionary effectToAudioMap = new();
- public override void _Ready()
- {
- GetParent().EffectStarted += OnEffectStarted;
-
- for (int i = 0; i < effectsToMap.Count; i++)
- {
- effectToAudioMap.Add(effectsToMap[i], (streamsToMapTo[i],streamSettings[i]));
- }
- }
-
- public void OnEffectStarted(Effect what)
- {
- if (effectToAudioMap.ContainsKey(what) == false) return;
- AudioSequencer.Play(what.Slot, effectToAudioMap[what].Item1);
- AudioSequencer.ChangeSettings(what.Slot, effectToAudioMap[what].Item2);
- }
-}
diff --git a/scripts/audio/EffectBasedPlayer.cs.uid b/scripts/audio/EffectBasedPlayer.cs.uid
deleted file mode 100644
index ed55549..0000000
--- a/scripts/audio/EffectBasedPlayer.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b8r6fxsfjdo3a
diff --git a/scripts/audio/MusicTransitioner.cs b/scripts/audio/MusicTransitioner.cs
deleted file mode 100644
index 7dc61dc..0000000
--- a/scripts/audio/MusicTransitioner.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-using System;
-
-public partial class MusicTransitioner : AudioStreamPlayer
-{
- private AudioStreamPlaybackInteractive playback;
- private Timer timer;
-
- public override void _Ready()
- {
- RuntimeLevelData.Instance.OnLevelStateChanged += OnLevelStateChanged;
- timer = GetNode("Timer");
- }
-
- private void OnLevelStateChanged(RuntimeLevelData.LevelStates state)
- {
- if (state == RuntimeLevelData.LevelStates.Game)
- {
- Play();
- playback = (AudioStreamPlaybackInteractive)GetStreamPlayback();
- VolumeLinear = 1;
- }
- else
- {
- var tween = CreateTween();
- tween.TweenProperty(this, "volume_linear", 0, 1);
- tween.TweenCallback(Callable.From(Stop));
- }
- }
-
- public void OnHugeWaveApproaching()
- {
- playback.SwitchToClip(1);
- timer.Start();
- }
- public void OnTimerTimeout()
- {
- playback.SwitchToClip(0);
- }
-}
diff --git a/scripts/audio/MusicTransitioner.cs.uid b/scripts/audio/MusicTransitioner.cs.uid
deleted file mode 100644
index 78c5825..0000000
--- a/scripts/audio/MusicTransitioner.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bnj5tlcpmep2o
diff --git a/scripts/autoloads/game_registry.gd b/scripts/autoloads/game_registry.gd
new file mode 100644
index 0000000..2f29032
--- /dev/null
+++ b/scripts/autoloads/game_registry.gd
@@ -0,0 +1,23 @@
+extends Node
+
+class_name GameRegistry
+
+static func load_resources(directory : String, recursion : bool = true) -> Array[Resource]:
+ var result : Array[Resource] = []
+ var dir = DirAccess.open(directory)
+ if dir == null:
+ return result
+ # Used to ignore last slash if it was provided in _path
+ var path = dir.get_current_dir()
+ if recursion:
+ for subdir in dir.get_directories():
+ var subdir_path = "%s/%s" % [ path, subdir ]
+ result.append_array(load_resources(subdir_path,true))
+
+ for filename in dir.get_files():
+ if !filename.ends_with('.tres'):
+ continue
+ var filepath = "%s/%s" % [ path, filename ]
+ var res = ResourceLoader.load(filepath)
+ result.append(res)
+ return result
diff --git a/scripts/autoloads/game_registry.gd.uid b/scripts/autoloads/game_registry.gd.uid
new file mode 100644
index 0000000..8fba163
--- /dev/null
+++ b/scripts/autoloads/game_registry.gd.uid
@@ -0,0 +1 @@
+uid://cu3cfhesth2np
diff --git a/scripts/autoloads/level_event_bus.gd b/scripts/autoloads/level_event_bus.gd
new file mode 100644
index 0000000..77f3166
--- /dev/null
+++ b/scripts/autoloads/level_event_bus.gd
@@ -0,0 +1,59 @@
+extends Node
+
+@warning_ignore_start("unused_signal")
+## Event bus for levels in Liberation Of Neighborville
+
+
+#region Field
+
+## Emitted when entity is placed by player via seedpacket
+signal packet_placed(resource : SeedpacketResource)
+
+#endregion
+
+#region Entity
+
+## Called for every entity that enters game
+signal entity_created(entity : Entity)
+## Called for every entity that exits game
+signal entity_killed(context : Entity.KilledContext)
+## Called for every entity that gets damage
+signal entity_hp_changed(context : Entity.HPChangedContext)
+
+## Called for every entity that has layer set that enters game
+signal layer_entity_created(entity : Entity)
+## Called for every entity that has layer set that exits game
+signal layer_entity_killed(entity : Entity.KilledContext)
+
+#endregion
+
+#region Seedpacket manipulation
+
+## Called when player selects SeedpacketResource
+signal packet_selected(resource : SeedpacketResource)
+
+## Called when player deselects (usually loses focus) SeedpacketResource
+signal packet_deselected(resource : SeedpacketResource)
+
+## Called when selected packets are updated
+signal hotbar_packets_update(selected : Array[SeedpacketResource])
+#endregion
+
+#region Level Running
+## Called when huge wave is incoming, yet has not come
+signal huge_wave_coming
+
+## Called when huge wave has come
+signal huge_wave
+
+## Called when final wave has come
+signal final_wave
+
+## Called when game is progressing through level stages
+signal state_changed(state : LevelData.LevelStates)
+
+## Called when something requests state to advance
+signal state_advance_requested
+## Called when sun counter updates to value [code]to[/code]
+signal sun_count_updated(to : float)
+#endregion
diff --git a/scripts/autoloads/level_event_bus.gd.uid b/scripts/autoloads/level_event_bus.gd.uid
new file mode 100644
index 0000000..0408ec3
--- /dev/null
+++ b/scripts/autoloads/level_event_bus.gd.uid
@@ -0,0 +1 @@
+uid://dmc03tudqcqj0
diff --git a/scripts/autoloads/player_progress.gd b/scripts/autoloads/player_progress.gd
new file mode 100644
index 0000000..c6b6a00
--- /dev/null
+++ b/scripts/autoloads/player_progress.gd
@@ -0,0 +1,4 @@
+extends Node
+
+var seedpacket_count : int
+var owned_plants : Array[SeedpacketResource]
diff --git a/scripts/autoloads/player_progress.gd.uid b/scripts/autoloads/player_progress.gd.uid
new file mode 100644
index 0000000..46584fb
--- /dev/null
+++ b/scripts/autoloads/player_progress.gd.uid
@@ -0,0 +1 @@
+uid://cjxsn8khrawb4
diff --git a/scripts/components/controllers/plants/peashooter_controller.gd b/scripts/components/controllers/plants/peashooter_controller.gd
new file mode 100644
index 0000000..5908b83
--- /dev/null
+++ b/scripts/components/controllers/plants/peashooter_controller.gd
@@ -0,0 +1,33 @@
+extends Node
+
+const projectile := preload("uid://ciqhjwh4sfe3u")
+
+@export var projectile_transform : Marker2D
+
+var detected : bool = false
+var can_shoot : bool = true
+
+@onready var timer := $Timer
+@onready var entity : Entity = get_parent()
+
+func is_shooting():
+ return detected and can_shoot and entity.disabled == false
+
+func _on_generic_hurtbox_collision_start() -> void:
+ detected = true
+
+func _on_generic_hurtbox_collision_end() -> void:
+ detected = false
+
+func shoot():
+ if can_shoot == false:
+ return
+ can_shoot = false
+ timer.start()
+ var proj = projectile.instantiate()
+ get_tree().current_scene.get_node("%Projectiles").add_child(proj)
+ proj.global_transform = projectile_transform.global_transform
+ proj.source = entity
+
+func _on_timer_timeout() -> void:
+ can_shoot = true
diff --git a/scripts/components/controllers/plants/peashooter_controller.gd.uid b/scripts/components/controllers/plants/peashooter_controller.gd.uid
new file mode 100644
index 0000000..5f6acbe
--- /dev/null
+++ b/scripts/components/controllers/plants/peashooter_controller.gd.uid
@@ -0,0 +1 @@
+uid://b0ka8lb5kl1fd
diff --git a/scripts/components/controllers/zombies/basic_controller.gd b/scripts/components/controllers/zombies/basic_controller.gd
new file mode 100644
index 0000000..2a656ad
--- /dev/null
+++ b/scripts/components/controllers/zombies/basic_controller.gd
@@ -0,0 +1,31 @@
+extends Node
+
+var eating:
+ get:
+ return is_eating()
+var walking:
+ get:
+ return is_walking()
+
+var disabled = false
+
+@export var hurtbox : GenericHurtbox
+@export var damage : float
+@onready var disablable := get_parent()
+
+var killed := false
+
+func _on_entity_killed(_context: RefCounted) -> void:
+ if killed: return
+ $"../AnimationTree"["parameters/main/playback"].travel("death")
+ killed = true
+
+func is_eating() -> bool:
+ return hurtbox.is_colliding() and disablable.disabled == false
+
+func is_walking() -> bool:
+ return disablable.disabled == false
+
+func bite() -> void:
+ if hurtbox.is_colliding() == false: return
+ hurtbox.get_colliding_entity().deal_damage(damage,get_parent())
diff --git a/scripts/components/controllers/zombies/basic_controller.gd.uid b/scripts/components/controllers/zombies/basic_controller.gd.uid
new file mode 100644
index 0000000..a3c82d9
--- /dev/null
+++ b/scripts/components/controllers/zombies/basic_controller.gd.uid
@@ -0,0 +1 @@
+uid://bg88vb74hinkj
diff --git a/scripts/components/field_segment_shape.gd b/scripts/components/field_segment_shape.gd
new file mode 100644
index 0000000..ba8e43e
--- /dev/null
+++ b/scripts/components/field_segment_shape.gd
@@ -0,0 +1,4 @@
+extends CollisionShape2D
+
+func _process(_delta: float) -> void:
+ shape.b = Vector2(FieldParams.field_rect.end.x-global_position.x+FieldParams.TILE.x,0)
diff --git a/scripts/components/field_segment_shape.gd.uid b/scripts/components/field_segment_shape.gd.uid
new file mode 100644
index 0000000..0242864
--- /dev/null
+++ b/scripts/components/field_segment_shape.gd.uid
@@ -0,0 +1 @@
+uid://cjulv0bt6deps
diff --git a/scripts/components/generic_collider.gd b/scripts/components/generic_collider.gd
new file mode 100644
index 0000000..c8bd1d3
--- /dev/null
+++ b/scripts/components/generic_collider.gd
@@ -0,0 +1,18 @@
+extends Area2D
+
+## Base class for generic colliders.
+
+class_name GenericCollider
+
+## Contact layer. Used to check
+enum Layers
+{
+ NORMAL = 1,
+ LOW = 2,
+ HIGH = 4
+}
+
+@export var layer : Layers = Layers.NORMAL
+
+func toggle(value : bool) -> void:
+ monitorable = value
diff --git a/scripts/components/generic_collider.gd.uid b/scripts/components/generic_collider.gd.uid
new file mode 100644
index 0000000..9f2d11a
--- /dev/null
+++ b/scripts/components/generic_collider.gd.uid
@@ -0,0 +1 @@
+uid://be5rfbbl5xgeh
diff --git a/scripts/components/generic_hurtbox.gd b/scripts/components/generic_hurtbox.gd
new file mode 100644
index 0000000..7200353
--- /dev/null
+++ b/scripts/components/generic_hurtbox.gd
@@ -0,0 +1,45 @@
+extends Area2D
+
+class_name GenericHurtbox
+
+@export_flags("NORMAL:1","LOW:2","HIGH:4") var lookup_layers : int = 0
+var entities : Array[Entity] = []
+
+signal entity_added(entity : Entity)
+signal entity_removed(entity : Entity)
+signal collision_start
+signal collision_end
+
+func _ready() -> void:
+ area_entered.connect(on_area_entered)
+ area_exited.connect(on_area_exited)
+
+func on_area_entered(area: Area2D):
+ if area is GenericCollider:
+ if lookup_layers & area.layer != 0:
+ add_entity(area.get_parent())
+
+func on_area_exited(area: Area2D):
+ if area is GenericCollider:
+ if lookup_layers & area.layer != 0:
+ remove_entity(area.get_parent())
+
+func add_entity(entity : Entity):
+ entities.append(entity)
+ entity_added.emit(entity)
+ if entities.size() == 1:
+ collision_start.emit()
+
+func remove_entity(entity : Entity):
+ entities.erase(entity)
+ entity_removed.emit(entity)
+ if entities.size() == 0:
+ collision_end.emit()
+
+func get_colliding_entity() -> Entity:
+ if entities.size() == 0:
+ return null
+ return entities[0]
+
+func is_colliding() -> bool:
+ return entities.size() > 0
diff --git a/scripts/components/generic_hurtbox.gd.uid b/scripts/components/generic_hurtbox.gd.uid
new file mode 100644
index 0000000..7f6f36b
--- /dev/null
+++ b/scripts/components/generic_hurtbox.gd.uid
@@ -0,0 +1 @@
+uid://cbudgx741oxtc
diff --git a/scripts/components/mover.gd b/scripts/components/mover.gd
new file mode 100644
index 0000000..6d9d4ad
--- /dev/null
+++ b/scripts/components/mover.gd
@@ -0,0 +1,10 @@
+extends Node
+
+@export_range(0,2,0.001,"or_greater","hide_slider","suffix:tiles/second") var speed : float = 0.2
+# Used by animation players to control zombie's movement
+@export var speed_control : float = 0.0
+
+@onready var parent : Node2D = get_parent()
+
+func _physics_process(delta: float) -> void:
+ parent.global_position += -parent.global_transform.x * speed_control * speed * delta * FieldParams.TILE.x
diff --git a/scripts/components/mover.gd.uid b/scripts/components/mover.gd.uid
new file mode 100644
index 0000000..59ed131
--- /dev/null
+++ b/scripts/components/mover.gd.uid
@@ -0,0 +1 @@
+uid://bdacurei5fp02
diff --git a/scripts/components/plant_death_handler.gd b/scripts/components/plant_death_handler.gd
new file mode 100644
index 0000000..ff221fb
--- /dev/null
+++ b/scripts/components/plant_death_handler.gd
@@ -0,0 +1,5 @@
+extends Node
+
+
+func _on_killed(context: RefCounted) -> void:
+ get_parent().deconstruct()
diff --git a/scripts/components/plant_death_handler.gd.uid b/scripts/components/plant_death_handler.gd.uid
new file mode 100644
index 0000000..1b81a66
--- /dev/null
+++ b/scripts/components/plant_death_handler.gd.uid
@@ -0,0 +1 @@
+uid://d17rkta3k73jx
diff --git a/scripts/components/zombie_death_handler.gd b/scripts/components/zombie_death_handler.gd
new file mode 100644
index 0000000..8aa4325
--- /dev/null
+++ b/scripts/components/zombie_death_handler.gd
@@ -0,0 +1,5 @@
+extends Node
+
+func _on_animation_tree_animation_finished(anim_name: StringName) -> void:
+ if anim_name.split("/")[1] == "death":
+ get_parent().deconstruct()
diff --git a/scripts/components/zombie_death_handler.gd.uid b/scripts/components/zombie_death_handler.gd.uid
new file mode 100644
index 0000000..f9cb8a8
--- /dev/null
+++ b/scripts/components/zombie_death_handler.gd.uid
@@ -0,0 +1 @@
+uid://dfnyam1pvkb73
diff --git a/scripts/debug/Cheats.cs b/scripts/debug/Cheats.cs
deleted file mode 100644
index 46c9654..0000000
--- a/scripts/debug/Cheats.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-
-namespace Newlon.Debug;
-
-public partial class Cheats : Node
-{
- public override void _Input(InputEvent @event)
- {
- if (OS.IsDebugBuild() == false) return;
- if (@event.IsActionPressed("cheat_add_sun"))
- {
- RuntimeLevelData.Instance.AddSun(50);
- }
- if (@event.IsActionPressed("cheat_unlock_all"))
- {
- PlayerProgress.Instance.PlayerPlants = GameRegistry.GetPlants();
- }
- }
-}
diff --git a/scripts/debug/Cheats.cs.uid b/scripts/debug/Cheats.cs.uid
deleted file mode 100644
index a53b15b..0000000
--- a/scripts/debug/Cheats.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cb8n22kkqa8ig
diff --git a/scripts/debug/Clock.cs b/scripts/debug/Clock.cs
deleted file mode 100644
index bc8eb10..0000000
--- a/scripts/debug/Clock.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Godot;
-using System;
-
-namespace Newlon.Debug;
-
-//
-// Debug tool to check time since clock loaded
-//
-
-public partial class Clock : Label
-{
- private ulong _time = 0;
- public override void _Process(double delta)
- {
- _time += (ulong)(delta*1000);
- ulong seconds = _time / 1000 % 60;
- ulong minutes = seconds / 60 % 60;
- Text = minutes.ToString()+":"+seconds.ToString();
- }
-}
diff --git a/scripts/debug/Clock.cs.uid b/scripts/debug/Clock.cs.uid
deleted file mode 100644
index 259b59a..0000000
--- a/scripts/debug/Clock.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://d2aq2wjq0gt7x
diff --git a/scripts/droppable-items/DropMover.cs b/scripts/droppable-items/DropMover.cs
deleted file mode 100644
index 3b3d426..0000000
--- a/scripts/droppable-items/DropMover.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Droppables;
-
-public partial class DropMover : Node
-{
- public float ySpeed = -200.0f;
- public float xSpeed = 150.0f;
-
-
- private float stop_y;
- private Node2D parent;
- private Vector2 velocity;
- private float gravity;
- public override void _Ready()
- {
- parent = GetParent();
- stop_y = ((parent.GlobalPosition / FieldParams.Tile).Ceil() * FieldParams.Tile).Y;
- gravity = (float)ProjectSettings.GetSetting("physics/2d/default_gravity");
-
- velocity = new Vector2((GD.Randf() - 0.5f) * xSpeed, ySpeed);
- }
- public override void _Process(double delta)
- {
- if (parent.GlobalPosition.Y >= stop_y) QueueFree();
-
- velocity += Vector2.Down * gravity * (float)delta;
-
- parent.GlobalPosition += velocity * (float)delta;
- }
-
-}
diff --git a/scripts/droppable-items/DropMover.cs.uid b/scripts/droppable-items/DropMover.cs.uid
deleted file mode 100644
index 0e124fb..0000000
--- a/scripts/droppable-items/DropMover.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b2j41pq6cmpgm
diff --git a/scripts/droppable-items/DroppableItem.cs b/scripts/droppable-items/DroppableItem.cs
deleted file mode 100644
index afbd5ef..0000000
--- a/scripts/droppable-items/DroppableItem.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Droppables;
-
-[GlobalClass]
-public partial class DroppableItem : Area2D
-{
- [Signal] public delegate void PickedUpEventHandler();
- public override void _MouseEnter()
- {
- if (GamepadHandler.Instance.IsGamepadControlled)
- {
- GetViewport().SetInputAsHandled();
- PickUp();
- EmitSignal(SignalName.PickedUp);
- }
- }
-
- public override void _InputEvent(Viewport viewport, InputEvent @event, int shapeIdx)
- {
- if (@event.IsActionPressed("primary_action"))
- {
- GetViewport().SetInputAsHandled();
- PickUp();
- EmitSignal(SignalName.PickedUp);
- }
- }
- public virtual void PickUp() {}
-
-}
diff --git a/scripts/droppable-items/DroppableItem.cs.uid b/scripts/droppable-items/DroppableItem.cs.uid
deleted file mode 100644
index e8d5865..0000000
--- a/scripts/droppable-items/DroppableItem.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cwf2y3pxi6psc
diff --git a/scripts/droppable-items/DroppableSeedpacket.cs b/scripts/droppable-items/DroppableSeedpacket.cs
deleted file mode 100644
index 03f4938..0000000
--- a/scripts/droppable-items/DroppableSeedpacket.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Godot;
-using Newlon.Resources;
-
-namespace Newlon.Components.Droppables;
-
-public partial class DroppableSeedpacket : DroppableItem
-{
- public PlantResource plant;
- [Export] private Label _cost;
- [Export] private TextureRect _icon;
- [Export] private TextureRect _packet;
- public override void _Ready()
- {
- _cost.Text = plant.Cost.ToString();
- _icon.Texture = plant.Preview;
- if (plant.CustomFrame != null)
- {
- _packet.Texture = plant.CustomFrame.frame;
- _cost.LabelSettings = plant.CustomFrame.font;
- }
- }
-}
diff --git a/scripts/droppable-items/DroppableSeedpacket.cs.uid b/scripts/droppable-items/DroppableSeedpacket.cs.uid
deleted file mode 100644
index a3ccb44..0000000
--- a/scripts/droppable-items/DroppableSeedpacket.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://gymo10tjruj2
diff --git a/scripts/entities/AnimationStatistics.cs b/scripts/entities/AnimationStatistics.cs
deleted file mode 100644
index 1db029e..0000000
--- a/scripts/entities/AnimationStatistics.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Godot;
-
-public partial class AnimationStatistics : Node
-{
- [Export]
- private string animationName;
- [Export]
- private string trackToFind;
- private float invokationsPerSecond;
- public override void _Ready()
- {
- var animation = GetParent().GetAnimation(animationName);
-
- var track_id = animation.FindTrack(trackToFind,Animation.TrackType.Method);
- invokationsPerSecond = animation.TrackGetKeyCount(track_id)/ animation.Length;
- }
-}
diff --git a/scripts/entities/AnimationStatistics.cs.uid b/scripts/entities/AnimationStatistics.cs.uid
deleted file mode 100644
index 35b26bf..0000000
--- a/scripts/entities/AnimationStatistics.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dw7v3s4kbu7ma
diff --git a/scripts/entities/AreaOfEffect.cs b/scripts/entities/AreaOfEffect.cs
deleted file mode 100644
index 153ae33..0000000
--- a/scripts/entities/AreaOfEffect.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Godot;
-using Newlon.Systems.Effects;
-
-namespace Newlon.Components;
-
-public partial class AreaOfEffect : Area2D
-{
- [Export] public Effect givenEffect;
- public override void _Ready()
- {
- AreaEntered += OnAreaEntered;
- }
-
- public void OnAreaEntered(Area2D what)
- {
- if (what.GetParent() is Entity entity)
- {
- entity.GiveEffect(givenEffect);
- }
- }
-}
diff --git a/scripts/entities/AreaOfEffect.cs.uid b/scripts/entities/AreaOfEffect.cs.uid
deleted file mode 100644
index 6bbb667..0000000
--- a/scripts/entities/AreaOfEffect.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bd1f7x1nin0i0
diff --git a/scripts/entities/Armor.cs b/scripts/entities/Armor.cs
deleted file mode 100644
index 96b4a89..0000000
--- a/scripts/entities/Armor.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using Godot;
-
-namespace Newlon.Components;
-
-[GlobalClass]
-public partial class Armor : Node
-{
- [Signal]
- public delegate void DamagedEventHandler();
- [Signal]
- public delegate void HpChangedEventHandler(float hp);
- [Signal]
- public delegate void ArmorLostEventHandler();
-
- [Export]
- public float MaxHP { get; private set; }
- public float _hp;
- private bool _lost = false;
-
- public override void _Ready()
- {
- _hp = MaxHP;
- }
-
- public float RecieveDamage(float damage)
- {
- if(_lost)
- return damage;
-
- float returnAmount = damage - _hp;
- if (returnAmount < 0)
- returnAmount = 0;
- if (_hp - damage <= 0)
- {
- var delta = _hp;
- _hp = 0;
- EmitSignal(SignalName.HpChanged, -delta);
- EmitSignal(SignalName.Damaged);
- EmitSignal(SignalName.ArmorLost);
- _lost = true;
- }
- else
- {
- _hp -= damage;
- EmitSignal(SignalName.HpChanged, -damage);
- EmitSignal(SignalName.Damaged);
- }
- return returnAmount;
- }
-
- public float Heal(float amount)
- {
- if(_lost)
- return amount;
- float returnAmount = 0;
- _hp += amount;
- if (_hp >= MaxHP)
- {
- returnAmount = _hp-MaxHP;
- _hp = MaxHP;
- }
- EmitSignal(SignalName.HpChanged,_hp);
- return returnAmount;
- }
-}
diff --git a/scripts/entities/Armor.cs.uid b/scripts/entities/Armor.cs.uid
deleted file mode 100644
index ae22cc3..0000000
--- a/scripts/entities/Armor.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://fd4im1fmwc5n
diff --git a/scripts/entities/ArmorHPObserver.cs b/scripts/entities/ArmorHPObserver.cs
deleted file mode 100644
index c5de7ef..0000000
--- a/scripts/entities/ArmorHPObserver.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using Godot;
-
-namespace Newlon.Components;
-
-public partial class ArmorHPObserver : Node
-{
- [Export] private float _threshold = 0.5f;
- [Export] private bool _setGreater = false;
- [Export] private Armor _observedArmor;
- [Signal] public delegate void ThresholdReachedEventHandler();
-
- public override void _Ready()
- {
- _observedArmor.Damaged += OnDamaged;
- }
-
- private void OnDamaged()
- {
- if (_setGreater == false && _observedArmor._hp / _observedArmor.MaxHP < _threshold)
- {
- EmitSignal(SignalName.ThresholdReached);
- _observedArmor.Damaged -= OnDamaged;
- QueueFree();
- }
- else if (_setGreater && _observedArmor._hp / _observedArmor.MaxHP > _threshold)
- {
- EmitSignal(SignalName.ThresholdReached);
- _observedArmor.Damaged -= OnDamaged;
- QueueFree();
- }
- }
-}
diff --git a/scripts/entities/ArmorHPObserver.cs.uid b/scripts/entities/ArmorHPObserver.cs.uid
deleted file mode 100644
index c1f6b50..0000000
--- a/scripts/entities/ArmorHPObserver.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://d3l8e8ko5r5i3
diff --git a/scripts/entities/DegradingSprite.cs b/scripts/entities/DegradingSprite.cs
deleted file mode 100644
index a32a97c..0000000
--- a/scripts/entities/DegradingSprite.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using Godot;
-using Godot.Collections;
-
-namespace Newlon.Components.Zombies;
-
-public partial class DegradingSprite : Sprite2D
-{
- [Export] private Armor armor;
- [Export] private Array degradationStages;
- [Export] private Array thresholdPercentage;
-
- public override void _Ready()
- {
- armor.Damaged += OnDamaged;
- }
-
- private void OnDamaged()
- {
- float percent = armor._hp / armor.MaxHP;
- for (int i = 0; i < degradationStages.Count; i++)
- {
- if (percent <= thresholdPercentage[i])
- {
- Texture = degradationStages[i];
- }
- else
- {
- break;
- }
- }
- }
-
-}
diff --git a/scripts/entities/DegradingSprite.cs.uid b/scripts/entities/DegradingSprite.cs.uid
deleted file mode 100644
index a6ffb07..0000000
--- a/scripts/entities/DegradingSprite.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bbw848msxb4re
diff --git a/scripts/entities/Entity.cs b/scripts/entities/Entity.cs
deleted file mode 100644
index 8720ca5..0000000
--- a/scripts/entities/Entity.cs
+++ /dev/null
@@ -1,218 +0,0 @@
-using Godot;
-using Godot.Collections;
-using Newlon.Components.Level;
-using Newlon.Systems.Effects;
-
-namespace Newlon.Components;
-
-[GlobalClass]
-public partial class Entity : Node2D
-{
- #region Health points
- [Export] public float MaxHP;
- [Export]public float HP;
- [Signal] public delegate void OnHPChangedEventHandler(EntitySignalContext context);
- [Signal] public delegate void OnDamagedEventHandler();
- [Signal] public delegate void HasBeenKilledEventHandler(Entity who);
-
-
- public virtual void TakeDamage(float amount, Node origin)
- {
- if (amount > 0)
- EmitSignal(SignalName.OnDamaged);
-
- var context = new EntitySignalContext()
- {
- target = this,
- source = (Entity)origin,
- actionAmount = amount
- };
- if (HP - amount <= 0)
- {
- context.deltaHP = -HP;
- EmitSignal(SignalName.OnHPChanged, context);
- HP = 0;
- KillByDamage();
- }
- else
- {
- context.deltaHP = -amount;
- HP -= amount;
- EmitSignal(SignalName.OnHPChanged, context);
- }
- }
-
- public virtual void Heal(float amount, Node origin)
- {
- var context = new EntitySignalContext()
- {
- target = this,
- source = (Entity)origin,
- actionAmount = amount
- };
- if (HP + amount > MaxHP)
- {
- context.deltaHP = MaxHP - HP;
- EmitSignal(SignalName.OnHPChanged, context);
- HP = MaxHP;
- }
- else
- {
- context.deltaHP = amount;
- HP += amount;
- EmitSignal(SignalName.OnHPChanged, context);
- }
- }
-
- public bool Killed = false;
- public virtual void KillByDamage()
- {
- if (Killed) return;
- Killed = true;
- EmitSignal(SignalName.HasBeenKilled,this);
- ClearEffects();
- Kill();
- }
-
- public virtual void Kill()
- {
- QueueFree();
- }
-
-
- #endregion
- #region Brain
- [Export] private AnimationPlayer _player;
- [Export] private AnimationTree _tree;
- private bool forceToggledBrain = false;
- private bool brainEnabled = true;
- public virtual void DisableBrain(bool force = true)
- {
- if (brainEnabled == false) return;
- if (_player != null)
- _player.ProcessMode = ProcessModeEnum.Pausable;
- if (_tree != null)
- _tree.ProcessMode = ProcessModeEnum.Pausable;
- ProcessMode = ProcessModeEnum.Disabled;
- forceToggledBrain = force;
- brainEnabled = false;
- }
-
- public virtual void EnableBrain(bool force = true)
- {
- if (brainEnabled) return;
- if (_player != null)
- _player.ProcessMode = ProcessModeEnum.Inherit;
- if (_tree != null)
- _tree.ProcessMode = ProcessModeEnum.Inherit;
- ProcessMode = ProcessModeEnum.Inherit;
- forceToggledBrain = force;
- brainEnabled = true;
- }
- #endregion
- #region Effects
- [Export] private Array _effectImmunities = new();
- [Export] private bool completeInvulnerability = false;
- private readonly Dictionary effectHandlers = new();
-
- [Signal] public delegate void EffectStartedEventHandler(Effect what);
- [Signal] public delegate void EffectEndedEventHandler(Effect what);
- [Signal] public delegate void EffectContinuedEventHandler(Effect what);
-
-
- public virtual void GiveEffect(Effect what)
- {
- if (what == null ||
- Killed ||
- completeInvulnerability || _effectImmunities.Contains(what))
- return;
-
- var slot = what.Slot;
- if (effectHandlers.ContainsKey(slot) == false)
- InitSlot(slot);
-
- if (effectHandlers[slot].HandledEffect == what)
- {
- effectHandlers[slot].Restart();
- }
- else
- {
- effectHandlers[slot].HandledEffect = what;
- effectHandlers[slot].Start();
- }
-
- }
-
- public void EndEffect(Effect what)
- {
- EndEffectAtSlot(what.Slot);
- }
-
- public Tween CreateTweenEffect(Effect effect)
- {
- Tween tween = CreateTween();
-
- effectHandlers[effect.Slot].EffectTween = tween;
-
- return tween;
- }
-
- protected void ClearEffects()
- {
- foreach (var slot in effectHandlers.Keys)
- {
- effectHandlers[slot].End();
- }
- }
- private void InitSlot(string key)
- {
- effectHandlers.Add(key, new EffectHandler());
- effectHandlers[key].handler = this;
- effectHandlers[key].EffectTimer = new();
-
- AddChild(effectHandlers[key].EffectTimer);
- effectHandlers[key].EffectTimer.Name = key + "Timer";
-
- effectHandlers[key].EffectTimer.Timeout += () => { EndEffectAtSlot(key); };
- }
-
- public void ProcessEffects()
- {
- foreach (var slot in effectHandlers.Keys)
- {
- effectHandlers[slot].Process();
- }
- }
-
- private void EndEffectAtSlot(string slot)
- {
- EmitSignal(SignalName.EffectEnded, effectHandlers[slot].HandledEffect);
- effectHandlers[slot].End();
- }
-
- #endregion
- #region LocalTimescale
- private float _localTimescale = 1.0f;
- [Signal] public delegate void OnLocalTimescaleChangedEventHandler(float scale);
- public float LocalTimescale
- {
- get => _localTimescale;
- set
- {
- _localTimescale = value;
- EmitSignal(SignalName.OnLocalTimescaleChanged, _localTimescale);
- }
- }
- #endregion
- #region Godot overrides
- public override void _Ready()
- {
- HP = MaxHP;
- if (RuntimeLevelData.Instance != null)
- {
- if (RuntimeLevelData.Instance.GetLevelState() != RuntimeLevelData.LevelStates.Game) DisableBrain(false);
- }
- }
-
- #endregion
-}
diff --git a/scripts/entities/Entity.cs.uid b/scripts/entities/Entity.cs.uid
deleted file mode 100644
index c9ca417..0000000
--- a/scripts/entities/Entity.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://3tw88wj1nrj1
diff --git a/scripts/entities/EntityHPObserver.cs b/scripts/entities/EntityHPObserver.cs
deleted file mode 100644
index 1427694..0000000
--- a/scripts/entities/EntityHPObserver.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using Godot;
-
-namespace Newlon.Components;
-
-public partial class EntityHPObserver : Node
-{
- [Export] private float _threshold = 0.5f;
- [Export] private bool _setGreater = false;
- [Export] private Entity _observedEntity;
- [Signal] public delegate void ThresholdReachedEventHandler();
-
- public override void _Ready()
- {
- _observedEntity.OnHPChanged += OnHPChanged;
- }
-
- private void OnHPChanged(EntitySignalContext context)
- {
- if (_setGreater == false && _observedEntity.HP / _observedEntity.MaxHP <= _threshold)
- {
- EmitSignal(SignalName.ThresholdReached);
- _observedEntity.OnHPChanged -= OnHPChanged;
- QueueFree();
- }
- else if (_setGreater && _observedEntity.HP / _observedEntity.MaxHP >= _threshold)
- {
- EmitSignal(SignalName.ThresholdReached);
- _observedEntity.OnHPChanged -= OnHPChanged;
- QueueFree();
- }
- }
-}
diff --git a/scripts/entities/EntityHPObserver.cs.uid b/scripts/entities/EntityHPObserver.cs.uid
deleted file mode 100644
index 11c1d76..0000000
--- a/scripts/entities/EntityHPObserver.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dau0tfmlfiqmo
diff --git a/scripts/entities/EntitySignalContext.cs b/scripts/entities/EntitySignalContext.cs
deleted file mode 100644
index a938f09..0000000
--- a/scripts/entities/EntitySignalContext.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Godot;
-
-namespace Newlon.Components;
-
-public partial class EntitySignalContext : RefCounted
-{
- public Node source;
- public Entity target;
- public float actionAmount;
- public float deltaHP;
-}
diff --git a/scripts/entities/EntitySignalContext.cs.uid b/scripts/entities/EntitySignalContext.cs.uid
deleted file mode 100644
index b1f3329..0000000
--- a/scripts/entities/EntitySignalContext.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cbdvo20dhiadw
diff --git a/scripts/entities/FlashShaderController.cs b/scripts/entities/FlashShaderController.cs
deleted file mode 100644
index cf06d73..0000000
--- a/scripts/entities/FlashShaderController.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using Godot;
-using Newlon.Components;
-
-public partial class FlashShaderController : Node
-{
- [Export] public float flashTime = 0.5f;
- [Export]
- private ShaderMaterial shaderMaterial;
- private uint toggleStack = 0;
- private Tween flashTween;
- public void DamageFlash()
- {
- Flash();
- }
- public void Flash(float customFlashTime = 0)
- {
- if (flashTween != null)
- flashTween.Kill();
- var time = flashTime;
- if (customFlashTime > 0)
- time = customFlashTime;
-
- flashTween = CreateTween();
- flashTween.TweenMethod(Callable.From(SetBlend), 1.0, 0.0, time);
- }
- public void Select()
- {
- toggleStack++;
- UpdateSelected();
- }
- public void Deselect()
- {
- toggleStack--;
- UpdateSelected();
- }
- private void SetBlend(float blend)
- {
- shaderMaterial.SetShaderParameter("blend", blend);
- }
- private void UpdateSelected()
- {
- if (toggleStack > 0)
- {
- shaderMaterial.SetShaderParameter("selected", true);
- }
- else
- {
- shaderMaterial.SetShaderParameter("selected", false);
- }
- }
-}
diff --git a/scripts/entities/FlashShaderController.cs.uid b/scripts/entities/FlashShaderController.cs.uid
deleted file mode 100644
index 0e43889..0000000
--- a/scripts/entities/FlashShaderController.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://30pbgasu64aw
diff --git a/scripts/entities/InvulnerableEntity.cs b/scripts/entities/InvulnerableEntity.cs
deleted file mode 100644
index dc41ac7..0000000
--- a/scripts/entities/InvulnerableEntity.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using Godot;
-
-namespace Newlon.Components;
-
-public partial class InvulnerableEntity : Entity
-{
- public override void TakeDamage(float amount, Node origin)
- {
- }
- public override void Heal(float amount, Node origin)
- {
- }
-
-}
diff --git a/scripts/entities/InvulnerableEntity.cs.uid b/scripts/entities/InvulnerableEntity.cs.uid
deleted file mode 100644
index 4462658..0000000
--- a/scripts/entities/InvulnerableEntity.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cq1dl578rbvrj
diff --git a/scripts/entities/entity.gd b/scripts/entities/entity.gd
new file mode 100644
index 0000000..8f61a59
--- /dev/null
+++ b/scripts/entities/entity.gd
@@ -0,0 +1,108 @@
+extends Node
+
+## Base class for all hp-based objects
+class_name Entity
+
+## Maximum health points of an entity. Any heal cannot exceed this value
+@export var max_hp : float
+## Optional spawn layer for grid interactions
+@export var layer : StringName = ""
+## Current amount of health points of an entity. Cannot be below 0 or [code]max_hp[/code]
+@onready var hp : float = max_hp
+##
+var disabled : bool = false
+
+signal damaged
+## Emitted when damage is taken
+signal damage_taken(context : DamageTakenContext)
+## Emitted when entity is healed
+signal healed(context : HealedContext)
+## Emitted on every health points change
+signal hp_changed(context : HPChangedContext)
+## Emitted when kill is requested
+signal killed(context : KilledContext)
+##
+signal toggled(disabled : bool)
+
+
+##
+func disable():
+ if disabled: return
+ disabled = true
+ toggled.emit(not disabled)
+
+##
+func enable():
+ if disabled == false: return
+ disabled = false
+ toggled.emit(not disabled)
+
+## Properly deal damage to entity
+func deal_damage(amount : float, source : Entity):
+ var context = DamageTakenContext.new()
+ context.source = source
+ context.target = self
+ context.amount = amount
+ damage_taken.emit(context)
+
+ var delta_context = HPChangedContext.new()
+ delta_context.source = source
+ delta_context.target = self
+ delta_context.delta = -amount
+ hp_changed.emit(delta_context)
+
+ damaged.emit()
+
+ hp -= amount
+ if hp <= 0:
+ hp = 0
+ kill(source)
+
+## Properly heal entity
+func heal(amount : float, source : Entity):
+ var context = HealedContext.new()
+ context.source = source
+ context.target = self
+ context.amount = amount
+ healed.emit(context)
+
+ var delta_context = HPChangedContext.new()
+ delta_context.source = source
+ delta_context.target = self
+ delta_context.delta = amount
+ hp_changed.emit(delta_context)
+
+ hp += amount
+ if hp > max_hp:
+ hp = max_hp
+
+## Invoked when an entity is killed by damage.
+func kill(source : Entity):
+ var context = KilledContext.new()
+ context.source = source
+ context.target = self
+ killed.emit(context)
+
+ LevelEventBus.entity_killed.emit(context)
+ if not layer.is_empty():
+ LevelEventBus.layer_entity_killed.emit(context)
+
+## Method used to properly deconstruct entity
+func deconstruct():
+ queue_free()
+
+class DamageTakenContext:
+ var target : Entity
+ var source : Entity
+ var amount : float
+class HealedContext:
+ var target : Entity
+ var source : Entity
+ var amount : float
+class KilledContext:
+ var target : Entity
+ var source : Entity
+class HPChangedContext:
+ var target : Entity
+ var source : Entity
+ var delta : float
diff --git a/scripts/entities/entity.gd.uid b/scripts/entities/entity.gd.uid
new file mode 100644
index 0000000..2a63e14
--- /dev/null
+++ b/scripts/entities/entity.gd.uid
@@ -0,0 +1 @@
+uid://bwdvaov8sse4k
diff --git a/scripts/entities/plants/AreaAttack.cs b/scripts/entities/plants/AreaAttack.cs
deleted file mode 100644
index 2def47d..0000000
--- a/scripts/entities/plants/AreaAttack.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Godot;
-using Newlon.Components.Zombies;
-
-namespace Newlon.Components.Plants;
-
-public partial class AreaAttack : Area2D
-{
- [Export] private int _damage;
-
- public void Attack()
- {
- foreach (var zombie in GetOverlappingAreas())
- {
- var zombieData = zombie.GetParent();
- zombieData?.TakeDamage(_damage,GetParent());
- }
- }
-}
diff --git a/scripts/entities/plants/AreaAttack.cs.uid b/scripts/entities/plants/AreaAttack.cs.uid
deleted file mode 100644
index 2c8cfca..0000000
--- a/scripts/entities/plants/AreaAttack.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://co7ttejdo2qot
diff --git a/scripts/entities/plants/DragAction.cs b/scripts/entities/plants/DragAction.cs
deleted file mode 100644
index d18f271..0000000
--- a/scripts/entities/plants/DragAction.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Plants;
-
-public partial class DragAction : Node
-{
- [Signal] public delegate void DragBeginEventHandler();
- [Signal] public delegate void DragEndEventHandler(bool aborted);
- private bool dragging = false;
- private bool toggle = false;
- private bool can_end = false;
- private bool mouseIn = false;
- public override void _Ready()
- {
- GetParent().MouseEntered += OnMouseEntered;
- GetParent().MouseExited += OnMouseExited;
- }
- public void OnMouseEntered()
- {
- mouseIn = true;
- }
- public void OnMouseExited()
- {
- mouseIn = false;
- }
-
- public override void _Input(InputEvent @event)
- {
- if (mouseIn && @event.IsActionPressed("primary_action"))
- {
- dragging = true;
- toggle = false;
- can_end = false;
- EmitSignal(SignalName.DragBegin);
- GetTree().CreateTimer(0.2, ignoreTimeScale: true).Timeout += OnToggleTimeout;
- GetViewport().SetInputAsHandled();
- }
- if (dragging && can_end && (toggle == false && @event.IsActionReleased("primary_action") || (toggle == true && @event.IsActionPressed("primary_action"))))
- {
- dragging = false;
- EmitSignal(SignalName.DragEnd,false);
- GetViewport().SetInputAsHandled();
- }
- if (dragging && @event.IsActionPressed("cancel_action"))
- {
- dragging = false;
- EmitSignal(SignalName.DragEnd,true);
- }
- }
- public void OnToggleTimeout()
- {
- can_end = true;
- if (Input.IsActionPressed("primary_action") == false)
- {
- toggle = true;
- }
-
- }
-
-}
diff --git a/scripts/entities/plants/DragAction.cs.uid b/scripts/entities/plants/DragAction.cs.uid
deleted file mode 100644
index 1a68ba3..0000000
--- a/scripts/entities/plants/DragAction.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cu63aiowp5bqd
diff --git a/scripts/entities/plants/ExplosionComponent.cs b/scripts/entities/plants/ExplosionComponent.cs
deleted file mode 100644
index 51641d8..0000000
--- a/scripts/entities/plants/ExplosionComponent.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-using Newlon.Components.Zombies;
-
-namespace Newlon.Components.Plants;
-
-public partial class ExplosionComponent : Area2D
-{
- [Export] private int damage;
- [Export] private PackedScene particles;
-
- public void Explode()
- {
- foreach (var zombie in GetOverlappingAreas())
- {
- var zombieData = zombie.GetParent();
- zombieData?.TakeDamage(damage, GetParent());
- }
-
- PoolContainer.Instance.SpawnParticles(particles, GetParent().GlobalPosition);
-
- GetNode("ExplosionPlayer").Play();
- GetParent().Kill();
-
- }
-}
diff --git a/scripts/entities/plants/ExplosionComponent.cs.uid b/scripts/entities/plants/ExplosionComponent.cs.uid
deleted file mode 100644
index 81501a4..0000000
--- a/scripts/entities/plants/ExplosionComponent.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bhl6o2m3fn4xg
diff --git a/scripts/entities/plants/Eyesight.cs b/scripts/entities/plants/Eyesight.cs
deleted file mode 100644
index 2480476..0000000
--- a/scripts/entities/plants/Eyesight.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using Godot;
-using System.Collections.Generic;
-
-namespace Newlon.Components.Plants;
-
-public partial class Eyesight : Area2D
-{
- private bool _enemyDetected;
- public bool EnemyDetected => _enemyDetected;
- private readonly List _detectedEntities = new List();
- private RuntimePlantData _plantData;
-
- public override void _Ready()
- {
- _plantData = GetParent();
- AreaEntered += OnAreaEntered;
- AreaExited += OnAreaExited;
- }
-
- public void OnAreaEntered(Area2D area)
- {
- var entity = area.GetParent();
- if (entity != null)
- {
- _detectedEntities.Add(entity);
- }
-
- _enemyDetected = _detectedEntities.Count > 0;
- }
-
- public void OnAreaExited(Area2D area)
- {
- var entity = area.GetParent();
- if (entity != null)
- {
- if (_detectedEntities.Contains(entity))
- {
- _detectedEntities.Remove(entity);
- }
- }
-
- _enemyDetected = _detectedEntities.Count > 0;
- }
-}
diff --git a/scripts/entities/plants/Eyesight.cs.uid b/scripts/entities/plants/Eyesight.cs.uid
deleted file mode 100644
index 7933517..0000000
--- a/scripts/entities/plants/Eyesight.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dn53jvpjyg63l
diff --git a/scripts/entities/plants/LoseZone.cs b/scripts/entities/plants/LoseZone.cs
deleted file mode 100644
index 18ab886..0000000
--- a/scripts/entities/plants/LoseZone.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Plants;
-
-public partial class LoseZone : RuntimePlantData
-{
- public override void TakeDamage(float amount, Node origin)
- {
-
- }
-
-
- public override void Kill()
- {
-
- }
-
-}
diff --git a/scripts/entities/plants/LoseZone.cs.uid b/scripts/entities/plants/LoseZone.cs.uid
deleted file mode 100644
index a185f15..0000000
--- a/scripts/entities/plants/LoseZone.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c0ov2bq5er0gh
diff --git a/scripts/entities/plants/NerdusReturnAttack.cs b/scripts/entities/plants/NerdusReturnAttack.cs
deleted file mode 100644
index 7941a49..0000000
--- a/scripts/entities/plants/NerdusReturnAttack.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using Godot;
-using Newlon.Systems.Effects;
-using System.Collections.Generic;
-namespace Newlon.Components.Plants;
-
-public partial class NerdusReturnAttack : Area2D
-{
- private float returnAmount;
- [Export] private Effect returnEffect;
- [Export] private float bitesToPeas = 1;
- public bool triggered = false;
- private List entities = new();
- public override void _Ready()
- {
- AreaEntered += OnAreaEntered;
- AreaExited += OnAreaExited;
- }
- private void OnAreaEntered(Area2D area)
- {
- if (area.GetParent() is Entity entity)
- {
- entities.Add(entity);
- }
- }
- private void OnAreaExited(Area2D area)
- {
- if (area.GetParent() is Entity entity && entities.Contains(entity))
- {
- entities.Remove(entity);
- }
- }
- private void OnHPChanged(EntitySignalContext context)
- {
- if (context.deltaHP >= 0) return;
- returnAmount -= context.deltaHP;
- triggered = true;
- }
- public void ReturnAllDamage()
- {
- foreach (var entity in entities)
- {
- entity.TakeDamage(returnAmount * bitesToPeas, GetParent());
- entity.GiveEffect(returnEffect);
- }
- returnAmount = 0;
- triggered = false;
- }
-}
diff --git a/scripts/entities/plants/NerdusReturnAttack.cs.uid b/scripts/entities/plants/NerdusReturnAttack.cs.uid
deleted file mode 100644
index 32190f5..0000000
--- a/scripts/entities/plants/NerdusReturnAttack.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dcokqes5wwo3k
diff --git a/scripts/entities/plants/PlantEyesightLimiter.cs b/scripts/entities/plants/PlantEyesightLimiter.cs
deleted file mode 100644
index 43cc59c..0000000
--- a/scripts/entities/plants/PlantEyesightLimiter.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Plants;
-
-public partial class PlantEyesightLimiter : CollisionShape2D
-{
- public override void _Process(double delta)
- {
- if (Shape is SegmentShape2D segment)
- {
- segment.B = new Vector2(FieldParams.RightFieldBoundary.X - GlobalPosition.X+FieldParams.TileWidth/2.0f, 0);
- }
- }
-}
\ No newline at end of file
diff --git a/scripts/entities/plants/PlantEyesightLimiter.cs.uid b/scripts/entities/plants/PlantEyesightLimiter.cs.uid
deleted file mode 100644
index 21a60a3..0000000
--- a/scripts/entities/plants/PlantEyesightLimiter.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://hccb0aee0x0o
diff --git a/scripts/entities/plants/PlantSunSpawner.cs b/scripts/entities/plants/PlantSunSpawner.cs
deleted file mode 100644
index 76ea9b3..0000000
--- a/scripts/entities/plants/PlantSunSpawner.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using Godot;
-using Newlon.Projectiles;
-using Newlon.Components.Level;
-using Newlon.Components.Droppables;
-
-namespace Newlon.Components.Plants;
-
-public partial class PlantSunSpawner : Node2D
-{
- [Export]
- private PackedScene _sunScene;
- [Export]
- private int _amountPerSun;
-
- public void Spawn()
- {
- var sun = _sunScene.Instantiate();
-
- sun.amount = _amountPerSun;
-
- PoolContainer.Instance.Projectiles.AddChild(sun);
- sun.GlobalPosition = GlobalPosition;
-
- var mover = new DropMover();
- sun.AddChild(mover);
- }
-}
diff --git a/scripts/entities/plants/PlantSunSpawner.cs.uid b/scripts/entities/plants/PlantSunSpawner.cs.uid
deleted file mode 100644
index 55d10dc..0000000
--- a/scripts/entities/plants/PlantSunSpawner.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b71gebny84s81
diff --git a/scripts/entities/plants/ReturnEffect.cs b/scripts/entities/plants/ReturnEffect.cs
deleted file mode 100644
index e375645..0000000
--- a/scripts/entities/plants/ReturnEffect.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Godot;
-using Newlon.Components.Zombies;
-using Newlon.Systems.Effects;
-
-namespace Newlon.Components.Plants;
-
-public partial class ReturnEffect : Node
-{
- [Export]
- private Effect _effectToReturn;
-
- public void OnDamageRecieved(EntitySignalContext context)
- {
- if (context.deltaHP >= 0) return;
- if (context.source is RuntimeZombieData zombie)
- {
- zombie.GiveEffect(_effectToReturn);
- }
- }
-}
diff --git a/scripts/entities/plants/ReturnEffect.cs.uid b/scripts/entities/plants/ReturnEffect.cs.uid
deleted file mode 100644
index 7a02632..0000000
--- a/scripts/entities/plants/ReturnEffect.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bmtukcq10m8wo
diff --git a/scripts/entities/plants/RuntimePlantData.cs b/scripts/entities/plants/RuntimePlantData.cs
deleted file mode 100644
index a6ddd56..0000000
--- a/scripts/entities/plants/RuntimePlantData.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-using Newlon.Resources;
-
-namespace Newlon.Components.Plants;
-
-//
-// Data that plant stores during runtime
-//
-
-public partial class RuntimePlantData : Entity
-{
- public int Line { get; set; }
- public PlantResource Resource;
- private AudioStream eatenSound = ResourceLoader.Load("res://assets/audio/sfx/gulp.mp3");
- public override void KillByDamage()
- {
- AudioSequencer.Play("plant_eaten", eatenSound);
- base.KillByDamage();
- }
- public override void Kill()
- {
- PoolContainer.Instance.RemoveEntity(GlobalPosition, Resource.Layer);
- QueueFree();
- }
-}
diff --git a/scripts/entities/plants/RuntimePlantData.cs.uid b/scripts/entities/plants/RuntimePlantData.cs.uid
deleted file mode 100644
index 07d0448..0000000
--- a/scripts/entities/plants/RuntimePlantData.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dli2i6albvugt
diff --git a/scripts/entities/plants/Shooter.cs b/scripts/entities/plants/Shooter.cs
deleted file mode 100644
index 6587254..0000000
--- a/scripts/entities/plants/Shooter.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-
-namespace Newlon.Components.Plants;
-
-// Shoot component of some plants
-public partial class Shooter : Node2D
-{
- [Export] public PackedScene _projectile { get; protected set;}
- [Export] protected Timer _timer;
-
- protected RuntimePlantData _plantData;
-
- public override void _Ready()
- {
- _plantData = GetParent();
- }
-
-
- public void Shoot()
- {
- if (_timer.TimeLeft > 0) return;
-
- _timer.Start();
- SpawnProjectile();
- }
-
- public virtual void SpawnProjectile()
- {
- var instance = _projectile.Instantiate();
- PoolContainer.Instance.Projectiles.AddChild(instance);
- instance.GlobalTransform = GlobalTransform;
- }
-}
diff --git a/scripts/entities/plants/Shooter.cs.uid b/scripts/entities/plants/Shooter.cs.uid
deleted file mode 100644
index 43979d1..0000000
--- a/scripts/entities/plants/Shooter.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ceprqkraw3v6m
diff --git a/scripts/entities/plants/ThreepeaterShooter.cs b/scripts/entities/plants/ThreepeaterShooter.cs
deleted file mode 100644
index 0b74f24..0000000
--- a/scripts/entities/plants/ThreepeaterShooter.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-
-namespace Newlon.Components.Plants;
-
-public partial class ThreepeaterShooter : Shooter
-{
- public override void SpawnProjectile()
- {
- for(int i = -1; i <= 1; i++)
- {
- if (GetParent().GlobalPosition.Y+i*FieldParams.TileHeight >= FieldParams.RightFieldBoundary.Y || GetParent().GlobalPosition.Y+i*FieldParams.TileHeight <= FieldParams.LeftFieldBoundary.Y)
- continue;
-
- var instance = _projectile.Instantiate();
- PoolContainer.Instance.Projectiles.AddChild(instance);
- instance.GlobalTransform = GlobalTransform;
-
- if(i != 0)
- {
- var tween = CreateTween().SetEase(Tween.EaseType.Out).SetTrans(Tween.TransitionType.Sine);
- tween.TweenProperty(instance,"position:y",instance.Position.Y+i*FieldParams.TileHeight,0.5);
- }
- }
- }
-}
diff --git a/scripts/entities/plants/ThreepeaterShooter.cs.uid b/scripts/entities/plants/ThreepeaterShooter.cs.uid
deleted file mode 100644
index 9314942..0000000
--- a/scripts/entities/plants/ThreepeaterShooter.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://djpc0kvagpadv
diff --git a/scripts/entities/plants/behaviours/AloeBehaviour.cs b/scripts/entities/plants/behaviours/AloeBehaviour.cs
deleted file mode 100644
index 9286900..0000000
--- a/scripts/entities/plants/behaviours/AloeBehaviour.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-
-namespace Newlon.Components.Plants.Behaviours;
-
-public partial class AloeBehaviour : BaseBehaviour
-{
- [Export] private float _hpTreshold = 0.25f;
- private Timer _timer;
- private bool _charge = true;
- private PackedScene particlesPacked = ResourceLoader.Load("uid://b3na62o5pu1gt");
-
- public override void _Ready()
- {
- base._Ready();
- _timer = GetNode("Timer");
- }
-
- public override void _Process(double delta)
- {
- _tree.Set("parameters/Tree/conditions/charged",_charge);
-
- var checkPos = GetParent().GlobalPosition + Vector2.Right * FieldParams.TileWidth;
- if(_charge && PoolContainer.Instance.TryGetEntity(checkPos, out RuntimePlantData plantData))
- {
- if((float)plantData.HP / (float)plantData.MaxHP < _hpTreshold)
- {
- _charge = false;
- _tree.Set("parameters/Tree/conditions/heal",true);
- _timer.Start();
- }
- }
- }
-
- public void Heal()
- {
- var checkPos = GetParent().GlobalPosition + Vector2.Right * FieldParams.TileWidth;
- if (PoolContainer.Instance.TryGetEntity(checkPos, out RuntimePlantData plantData))
- {
- plantData.Heal(300, GetParent());
- var particles = particlesPacked.Instantiate();
- PoolContainer.Instance.Particles.AddChild(particles);
- particles.GlobalPosition = plantData.GlobalPosition;
- }
- }
-
- public void OnTimeout()
- {
- _charge = true;
- }
-}
diff --git a/scripts/entities/plants/behaviours/AloeBehaviour.cs.uid b/scripts/entities/plants/behaviours/AloeBehaviour.cs.uid
deleted file mode 100644
index 9eb6922..0000000
--- a/scripts/entities/plants/behaviours/AloeBehaviour.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cljytsmqac0w7
diff --git a/scripts/entities/plants/behaviours/BaseBehaviour.cs b/scripts/entities/plants/behaviours/BaseBehaviour.cs
deleted file mode 100644
index a99a7a9..0000000
--- a/scripts/entities/plants/behaviours/BaseBehaviour.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Godot;
-
-namespace Newlon.Components;
-
-public abstract partial class BaseBehaviour : Node
-{
- protected AnimationTree _tree;
- public override void _Ready()
- {
- _tree = GetNode("../AnimationTree");
- }
-}
diff --git a/scripts/entities/plants/behaviours/BaseBehaviour.cs.uid b/scripts/entities/plants/behaviours/BaseBehaviour.cs.uid
deleted file mode 100644
index d23f061..0000000
--- a/scripts/entities/plants/behaviours/BaseBehaviour.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://3dbmgnr7qxee
diff --git a/scripts/entities/plants/behaviours/HpBasedBehaviour.cs b/scripts/entities/plants/behaviours/HpBasedBehaviour.cs
deleted file mode 100644
index c63af58..0000000
--- a/scripts/entities/plants/behaviours/HpBasedBehaviour.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Godot;
-using Godot.Collections;
-
-namespace Newlon.Components.Plants.Behaviours;
-
-public partial class HpBasedBehaviour : BaseBehaviour
-{
- [Export] private Array parameters;
-
- public void OnHPChanged(EntitySignalContext context)
- {
- var calc = context.target.HP / context.target.MaxHP;
- foreach (var par in parameters)
- {
- _tree.Set(par, calc);
- }
- }
-}
diff --git a/scripts/entities/plants/behaviours/HpBasedBehaviour.cs.uid b/scripts/entities/plants/behaviours/HpBasedBehaviour.cs.uid
deleted file mode 100644
index b3a7b81..0000000
--- a/scripts/entities/plants/behaviours/HpBasedBehaviour.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://btkmd86pn828y
diff --git a/scripts/entities/plants/behaviours/PeashooterBehaviour.cs b/scripts/entities/plants/behaviours/PeashooterBehaviour.cs
deleted file mode 100644
index 71d0568..0000000
--- a/scripts/entities/plants/behaviours/PeashooterBehaviour.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Plants.Behaviours;
-
-public partial class PeashooterBehaviour : BaseBehaviour
-{
- [Export] private Timer _shootTimer;
- [Export] private Eyesight _sight;
-
- public override void _Process(double delta)
- {
- bool readyToShoot = _sight.EnemyDetected && _shootTimer.TimeLeft <= 0;
-
- _tree.Set("parameters/Tree/conditions/ready",readyToShoot);
- }
-}
diff --git a/scripts/entities/plants/behaviours/PeashooterBehaviour.cs.uid b/scripts/entities/plants/behaviours/PeashooterBehaviour.cs.uid
deleted file mode 100644
index c83a83b..0000000
--- a/scripts/entities/plants/behaviours/PeashooterBehaviour.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bdk5iqtw4xbkl
diff --git a/scripts/entities/plants/behaviours/PotatomineBehaviour.cs b/scripts/entities/plants/behaviours/PotatomineBehaviour.cs
deleted file mode 100644
index fd28cc8..0000000
--- a/scripts/entities/plants/behaviours/PotatomineBehaviour.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Plants.Behaviours;
-
-public partial class PotatomineBehaviour : BaseBehaviour
-{
- [Export] private Area2D _hitbox;
- [Export] private Area2D detectionBox;
- [Export] private CollisionShape2D _unprimedShape;
- [Export] private CollisionShape2D _primedShape;
- private bool _primed = false;
- public void Prime()
- {
- _tree.Set("parameters/Tree/conditions/primed", true);
-
- _hitbox.Monitorable = false;
-
- _primed = true;
- _unprimedShape.Disabled = true;
- _primedShape.Disabled = false;
-
- if (detectionBox.HasOverlappingAreas())
- {
- SetupExplosion();
- }
- }
-
- public void OnAreaEntered(Area2D area)
- {
- if (_primed == false) return;
- SetupExplosion();
- }
- private void SetupExplosion()
- {
- _tree.Set("parameters/Tree/conditions/explode", true);
- _primed = false;
- }
-}
diff --git a/scripts/entities/plants/behaviours/PotatomineBehaviour.cs.uid b/scripts/entities/plants/behaviours/PotatomineBehaviour.cs.uid
deleted file mode 100644
index 5e9971d..0000000
--- a/scripts/entities/plants/behaviours/PotatomineBehaviour.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c7qfh4py0uulo
diff --git a/scripts/entities/plants/behaviours/SnipachBehaviour.cs b/scripts/entities/plants/behaviours/SnipachBehaviour.cs
deleted file mode 100644
index a3fe28e..0000000
--- a/scripts/entities/plants/behaviours/SnipachBehaviour.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Plants;
-
-public partial class SnipachBehaviour : BaseBehaviour
-{
- [Export] public AreaAttack attackBox;
- [Export] public Timer timer;
- [Export] public Timer guardTimer;
- private bool dragging = false;
-
- public void OnDragBegin()
- {
- if (timer.TimeLeft > 0 || guardTimer.TimeLeft > 0) return;
- dragging = true;
- attackBox.Visible = dragging;
- }
-
- public void OnDragEnd(bool aborted)
- {
- if (dragging == false) return;
- dragging = false;
- attackBox.Visible = dragging;
- if (aborted) return;
- attackBox.Attack();
- timer.Start();
- }
-
- public override void _PhysicsProcess(double delta)
- {
- if (dragging)
- {
- attackBox.GlobalPosition = (Cursor.GetCursorPosition() / FieldParams.Tile).Ceil() * FieldParams.Tile - new Vector2(20, 14);
- }
- if (timer.TimeLeft > 0)
- {
- GetParent().Modulate = Colors.DeepSkyBlue;
- }
- else
- {
- GetParent().Modulate = Colors.White;
- }
- }
-
-}
diff --git a/scripts/entities/plants/behaviours/SnipachBehaviour.cs.uid b/scripts/entities/plants/behaviours/SnipachBehaviour.cs.uid
deleted file mode 100644
index 08f907f..0000000
--- a/scripts/entities/plants/behaviours/SnipachBehaviour.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://csgksiyma0h4t
diff --git a/scripts/entities/plants/behaviours/SpikeweedBehaviour.cs b/scripts/entities/plants/behaviours/SpikeweedBehaviour.cs
deleted file mode 100644
index 2569966..0000000
--- a/scripts/entities/plants/behaviours/SpikeweedBehaviour.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Plants.Behaviours;
-
-public partial class SpikeweedBehaviour : BaseBehaviour
-{
- private int _inCount = 0;
- public void OnHitboxEntered(Area2D _area)
- {
- if (_inCount++ == 0)
- _tree.Set("parameters/Tree/blend_position",1);
- }
-
- public void OnHitboxExited(Area2D _area)
- {
- if (--_inCount == 0)
- _tree.Set("parameters/Tree/blend_position",0);
- }
-}
diff --git a/scripts/entities/plants/behaviours/SpikeweedBehaviour.cs.uid b/scripts/entities/plants/behaviours/SpikeweedBehaviour.cs.uid
deleted file mode 100644
index e035e12..0000000
--- a/scripts/entities/plants/behaviours/SpikeweedBehaviour.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dqquodxaijmem
diff --git a/scripts/entities/plants/behaviours/SunflowerBehaviour.cs b/scripts/entities/plants/behaviours/SunflowerBehaviour.cs
deleted file mode 100644
index b01d703..0000000
--- a/scripts/entities/plants/behaviours/SunflowerBehaviour.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Plants.Behaviours;
-
-public partial class SunflowerBehaviour : BaseBehaviour
-{
- public void Timeout()
- {
- _tree.Set("parameters/Tree/conditions/produce", true);
- }
-
-}
diff --git a/scripts/entities/plants/behaviours/SunflowerBehaviour.cs.uid b/scripts/entities/plants/behaviours/SunflowerBehaviour.cs.uid
deleted file mode 100644
index 3e1957d..0000000
--- a/scripts/entities/plants/behaviours/SunflowerBehaviour.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bth7gah4tn7uj
diff --git a/scripts/entities/zombies/AudioDamage.cs b/scripts/entities/zombies/AudioDamage.cs
deleted file mode 100644
index 5c9bac3..0000000
--- a/scripts/entities/zombies/AudioDamage.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Zombies;
-
-public partial class AudioDamage : AudioStreamPlayer2D
-{
- public void OnDamaged(int amount, Node origin)
- {
- Play();
- }
-}
diff --git a/scripts/entities/zombies/AudioDamage.cs.uid b/scripts/entities/zombies/AudioDamage.cs.uid
deleted file mode 100644
index 958b64c..0000000
--- a/scripts/entities/zombies/AudioDamage.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bsg4utgc0u0vo
diff --git a/scripts/entities/zombies/EatBox.cs b/scripts/entities/zombies/EatBox.cs
deleted file mode 100644
index 8892037..0000000
--- a/scripts/entities/zombies/EatBox.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using Godot;
-using Newlon.Components.Plants;
-
-
-namespace Newlon.Components.Zombies;
-
-public partial class EatBox : Area2D
-{
- // Rewrite this class completely when field system will be introduced.
-
- [Export] public FloatModifiers _damage;
- [Export]
- private AudioStream biteSound = ResourceLoader.Load("uid://dyid55nhflwyn");
- private RuntimePlantData plant;
- public float Damage => _damage.GetValue();
-
- public bool isEating = false;
-
- public void Bite()
- {
- if (GetParent().AbleToEat)
- {
- plant?.TakeDamage(Damage, GetParent());
- AudioSequencer.Play("bite", biteSound);
- }
-
- }
-
- public void OnAreaEntered(Area2D area)
- {
- var parent = area.GetParent();
-
- if (parent != null && parent is RuntimePlantData plantData)
- {
- plant = plantData;
- isEating = true;
-
- }
- }
-
- public void OnAreaExited(Area2D area)
- {
- var parent = area.GetParent();
-
- if (parent == plant)
- {
- plant = null;
- isEating = false;
- }
- }
-}
diff --git a/scripts/entities/zombies/EatBox.cs.uid b/scripts/entities/zombies/EatBox.cs.uid
deleted file mode 100644
index 6bf3c25..0000000
--- a/scripts/entities/zombies/EatBox.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dqyony6jxt2p0
diff --git a/scripts/entities/zombies/RuntimeZombieData.cs b/scripts/entities/zombies/RuntimeZombieData.cs
deleted file mode 100644
index 63ae199..0000000
--- a/scripts/entities/zombies/RuntimeZombieData.cs
+++ /dev/null
@@ -1,115 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Zombies;
-
-public partial class RuntimeZombieData : Entity
-{
- [Export]
- private Armor _armor;
- [Signal] public delegate void HPChangedMixedEventHandler(EntitySignalContext context);
- public bool AbleToEat = true;
-
- public override void _Ready()
- {
- base._Ready();
-
- OnHPChanged += HPChangedMixedInvokerSource;
- LocalTimescale -= (float)GD.Randf() / 100.0f;
- }
-
- public override void Heal(float amount, Node origin)
- {
- var context = new EntitySignalContext()
- {
- source = (Entity)origin,
- target = this,
- actionAmount = amount,
- deltaHP = Mathf.Clamp(HP+amount,0,MaxHP-amount)
- };
-
- if (_armor != null)
- {
- HP += _armor.Heal(amount);
- }
- else
- HP += amount;
- EmitSignal(SignalName.OnHPChanged, amount, origin);
-
- if (HP > MaxHP)
- {
- HP = MaxHP;
- }
- }
- public override void TakeDamage(float amount, Node origin)
- {
- var damage = amount;
- if (_armor != null)
- {
- damage = _armor.RecieveDamage(amount);
- }
-
- var context = new EntitySignalContext()
- {
- source = origin,
- target = this,
- actionAmount = amount
- };
- if(damage > 0)
- EmitSignal(SignalName.OnDamaged);
-
- if (HP - damage <= 0)
- {
-
- var delta = -HP;
- HP = 0;
- EmitSignal(SignalName.OnHPChanged, context);
- context.deltaHP = delta;
- KillByDamage();
- }
- else
- {
- HP -= damage;
- context.deltaHP = -damage;
- EmitSignal(SignalName.OnHPChanged, context);
- }
- }
- public void HPChangedMixedInvokerSource(EntitySignalContext context)
- {
- EmitSignal(SignalName.HPChangedMixed, context);
- }
- public void HPChangedMixedInvoker(float delta)
- {
-
- EmitSignal(SignalName.HPChangedMixed, new EntitySignalContext()
- {
- deltaHP = delta,
- source = null,
- target = this,
- actionAmount = delta
- });
- }
- public float GetMaxHPMixed()
- {
- if (_armor != null)
- return MaxHP + _armor.MaxHP;
- return MaxHP;
- }
- public float GetHPMixed()
- {
- if (_armor != null)
- return HP + _armor._hp;
- return HP;
- }
- #region Death sequence
- public override void KillByDamage()
- {
- if (Killed) return;
- Killed = true;
- AbleToEat = false;
- ClearEffects();
- EmitSignal(SignalName.HasBeenKilled,this);
- }
-
-
- #endregion
-}
diff --git a/scripts/entities/zombies/RuntimeZombieData.cs.uid b/scripts/entities/zombies/RuntimeZombieData.cs.uid
deleted file mode 100644
index a532fda..0000000
--- a/scripts/entities/zombies/RuntimeZombieData.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dildme6epx8l4
diff --git a/scripts/entities/zombies/ZombieKillHandler.cs b/scripts/entities/zombies/ZombieKillHandler.cs
deleted file mode 100644
index a0c2351..0000000
--- a/scripts/entities/zombies/ZombieKillHandler.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using Godot;
-using Newlon.Components.Zombies;
-
-public partial class ZombieKillHandler : Node
-{
- [Export] private AnimationTree _tree;
- [Export] private CollisionShape2D _collider;
- private void OnKilled(RuntimeZombieData who)
- {
- var tween = CreateTween();
- tween.TweenInterval(4.0);
- tween.TweenCallback(Callable.From(() =>
- {
- ((AnimationNodeStateMachinePlayback)_tree.Get("parameters/Tree/playback")).Travel("Death");
- _collider.Disabled = true;
- }));
- tween.TweenInterval(3.0);
- tween.TweenProperty(who, "modulate",new Color(1, 1, 1, 0),1.0);
- tween.TweenCallback(Callable.From(() =>
- {
- who.Kill();
- }));
- }
-}
diff --git a/scripts/entities/zombies/ZombieKillHandler.cs.uid b/scripts/entities/zombies/ZombieKillHandler.cs.uid
deleted file mode 100644
index a47f9b0..0000000
--- a/scripts/entities/zombies/ZombieKillHandler.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dk32ln8c2574d
diff --git a/scripts/entities/zombies/ZombieMover.cs b/scripts/entities/zombies/ZombieMover.cs
deleted file mode 100644
index 6693d5f..0000000
--- a/scripts/entities/zombies/ZombieMover.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Zombies;
-
-public partial class ZombieMover : Node
-{
- [Export]
- private FloatModifiers _speed;
- public float Speed => _speed.GetValue();
- [Export]
- private float _speedControlMult;
- private Node2D _zombie;
-
- public override void _Ready()
- {
- _zombie = GetParent();
- }
-
- public override void _PhysicsProcess(double delta)
- {
- _zombie.Position -= _zombie.Transform.X
- * (float)delta
- * FieldParams.TileWidth
- * GetParent().LocalTimescale
- * Speed
- * _speedControlMult;
- }
-
- public void SetSpeedFlat(float speed)
- {
- _speed.SetFlat(speed);
- }
- public void SetSpeedPercentage(float speed)
- {
- _speed.SetPercentage(speed);
- }
- public void SetSpeedMult(float speed)
- {
- _speed.SetMult(speed);
- }
- public void AddMult(float amount)
- {
- _speed.ChangeMult(amount);
- }
-}
diff --git a/scripts/entities/zombies/ZombieMover.cs.uid b/scripts/entities/zombies/ZombieMover.cs.uid
deleted file mode 100644
index 9ed6584..0000000
--- a/scripts/entities/zombies/ZombieMover.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://7hdj2k14lfe4
diff --git a/scripts/entities/zombies/behaviours/HoboBehaviour.cs b/scripts/entities/zombies/behaviours/HoboBehaviour.cs
deleted file mode 100644
index 44ca487..0000000
--- a/scripts/entities/zombies/behaviours/HoboBehaviour.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Godot;
-
-namespace Newlon.Components.Zombies.Behaviours;
-
-public partial class HoboBehaviour : Node
-{
- [Export] private EatBox _eatBox;
- [Export] private AnimationTree _animationTree;
- public bool isEating => _eatBox.isEating;
- public bool canDestroyed = false;
- public void Trashed()
- {
- canDestroyed = true;
- ((AnimationNodeStateMachinePlayback)_animationTree.Get("parameters/Tree/playback")).Travel("Destroy");
- GetParent().LocalTimescale *= 3;
- }
-}
diff --git a/scripts/entities/zombies/behaviours/HoboBehaviour.cs.uid b/scripts/entities/zombies/behaviours/HoboBehaviour.cs.uid
deleted file mode 100644
index 2e1b8ab..0000000
--- a/scripts/entities/zombies/behaviours/HoboBehaviour.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c5v2og85t7s6j
diff --git a/scripts/gamepad/ExplosionVibration.cs b/scripts/gamepad/ExplosionVibration.cs
deleted file mode 100644
index 39b2507..0000000
--- a/scripts/gamepad/ExplosionVibration.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using Godot;
-using System;
-
-public partial class ExplosionVibration : Node
-{
- public override void _EnterTree()
- {
- Input.StartJoyVibration(GamepadHandler.Instance.CurrentDevice, 0, 1,0.25f);
- }
-}
diff --git a/scripts/gamepad/ExplosionVibration.cs.uid b/scripts/gamepad/ExplosionVibration.cs.uid
deleted file mode 100644
index 4baefc4..0000000
--- a/scripts/gamepad/ExplosionVibration.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b8v8xrsyswmg4
diff --git a/scripts/gamepad/GamepadHandler.cs b/scripts/gamepad/GamepadHandler.cs
deleted file mode 100644
index 9689029..0000000
--- a/scripts/gamepad/GamepadHandler.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using Godot;
-using Newlon;
-using System;
-
-public partial class GamepadHandler : Node
-{
- [Signal] public delegate void GamepadControlledEventHandler(bool isControlled);
- public static GamepadHandler Instance { get; private set; }
- public int CurrentDevice { get; private set; } = 0;
- public bool IsGamepadControlled => controlled;
- private bool controlled;
- public override void _EnterTree()
- {
- Instance = this;
- }
- public override void _Input(InputEvent @event)
- {
- if (@event is InputEventJoypadButton || @event is InputEventJoypadMotion)
- {
- SetControlled(true);
- }
- else if (@event is InputEventMouseButton || @event is InputEventKey)
- {
- SetControlled(false);
- }
- }
- private void SetControlled(bool to)
- {
- if (controlled == to) return;
- controlled = to;
- if (controlled)
- {
- Cursor.Mode = Cursor.CursorMode.Gamepad;
- EmitSignal(SignalName.GamepadControlled, true);
- }
- else
- {
- Cursor.Mode = Cursor.CursorMode.Mouse;
- EmitSignal(SignalName.GamepadControlled, false);
- }
- }
-
-}
diff --git a/scripts/gamepad/GamepadHandler.cs.uid b/scripts/gamepad/GamepadHandler.cs.uid
deleted file mode 100644
index 6de2a37..0000000
--- a/scripts/gamepad/GamepadHandler.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cyw4fh4x0fdjg
diff --git a/scripts/gui/ExitButton.cs b/scripts/gui/ExitButton.cs
deleted file mode 100644
index 8e25670..0000000
--- a/scripts/gui/ExitButton.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using Godot;
-using Newlon;
-
-public partial class ExitButton : Button
-{
- public override void _Pressed()
- {
- LevelController.Instance.EndLevel();
- }
-}
diff --git a/scripts/gui/ExitButton.cs.uid b/scripts/gui/ExitButton.cs.uid
deleted file mode 100644
index 1b08775..0000000
--- a/scripts/gui/ExitButton.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dpdpv2oyxdna7
diff --git a/scripts/gui/FastForwardButton.cs b/scripts/gui/FastForwardButton.cs
deleted file mode 100644
index 1d2f4e0..0000000
--- a/scripts/gui/FastForwardButton.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-
-namespace Newlon.Components.GUI;
-
-public partial class FastForwardButton : Button
-{
- [Export] private Texture2D firstSpeed;
- [Export] private Texture2D secondSpeed;
- [Export] private Texture2D thirdSpeed;
-
- [Export] private AnimationPlayer flashAnimator;
-
- private int speed = 1;
-
- public override void _Ready()
- {
- RuntimeLevelData.Instance.OnLevelStateChanged += OnLevelStateChanged;
- }
-
- private void OnLevelStateChanged(RuntimeLevelData.LevelStates state)
- {
- if (state == RuntimeLevelData.LevelStates.Game) return;
-
- speed = 1;
- Update();
- }
-
- public void OnPressed()
- {
- if (RuntimeLevelData.Instance.GetLevelState() != RuntimeLevelData.LevelStates.Game) return;
-
- speed = Mathf.Wrap(speed + 1, 1, 4);
-
- flashAnimator.Play("flash");
-
- Update();
- }
-
- private void Update()
- {
- switch (speed)
- {
- case 1:
- Icon = firstSpeed;
- break;
- case 2:
- Icon = secondSpeed;
- break;
- case 3:
- Icon = thirdSpeed;
- break;
- }
-
- Engine.TimeScale = speed;
-
- }
-}
diff --git a/scripts/gui/FastForwardButton.cs.uid b/scripts/gui/FastForwardButton.cs.uid
deleted file mode 100644
index ac44d85..0000000
--- a/scripts/gui/FastForwardButton.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cwn3bd2k7mdq6
diff --git a/scripts/gui/LevelButton.cs b/scripts/gui/LevelButton.cs
deleted file mode 100644
index b93198d..0000000
--- a/scripts/gui/LevelButton.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using Godot;
-using System;
-
-namespace Newlon;
-
-//
-// Button that contains level to load
-//
-
-public partial class LevelButton : TextureButton
-{
- [Export] private Script _levelScript;
- [Export] private PackedScene _levelTileset;
-}
diff --git a/scripts/gui/LevelButton.cs.uid b/scripts/gui/LevelButton.cs.uid
deleted file mode 100644
index fc3fe99..0000000
--- a/scripts/gui/LevelButton.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cn3q18jh2rej7
diff --git a/scripts/gui/LevelGUIElements.cs b/scripts/gui/LevelGUIElements.cs
deleted file mode 100644
index 62e567d..0000000
--- a/scripts/gui/LevelGUIElements.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Godot;
-using Newlon.Components.GUI;
-
-namespace Newlon.Components;
-
-public partial class LevelGUIElements : Control
-{
- public static LevelGUIElements Instance;
-
- [Export]
- public HBoxContainer SeedpacketsHotbar;
- [Export]
- public SunCounter SunCounter;
- public override void _EnterTree()
- {
- Instance = this;
- }
-
-}
diff --git a/scripts/gui/LevelGUIElements.cs.uid b/scripts/gui/LevelGUIElements.cs.uid
deleted file mode 100644
index 5bc1a3c..0000000
--- a/scripts/gui/LevelGUIElements.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cwa1eydeiy3y4
diff --git a/scripts/gui/PlantHotbarSize.cs b/scripts/gui/PlantHotbarSize.cs
deleted file mode 100644
index d3ec72e..0000000
--- a/scripts/gui/PlantHotbarSize.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using Godot;
-using Newlon.Components.Level;
-using Newlon;
-
-public partial class PlantHotbarSize : PanelContainer
-{
- const int MARGIN = 4;
- const int PACKET_WIDTH = 41;
- const int MINIMUM_Y = 64;
- public override void _Ready()
- {
- CustomMinimumSize = new Vector2(MARGIN * 2 + PACKET_WIDTH * PlayerProgress.Instance.MaxSeedpackets, MINIMUM_Y);
-
- RuntimeLevelData.Instance.OnLevelStateChanged += OnLevelStateChanged;
- }
-
- public void OnLevelStateChanged(RuntimeLevelData.LevelStates state)
- {
- if (state != RuntimeLevelData.LevelStates.ChooseYourSeeds)
- {
- CustomMinimumSize = new Vector2(0, MINIMUM_Y);
- }
- }
-}
diff --git a/scripts/gui/PlantHotbarSize.cs.uid b/scripts/gui/PlantHotbarSize.cs.uid
deleted file mode 100644
index d7986fa..0000000
--- a/scripts/gui/PlantHotbarSize.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bygqu13os20wi
diff --git a/scripts/gui/PrototypeWindow.cs b/scripts/gui/PrototypeWindow.cs
deleted file mode 100644
index 95d5e64..0000000
--- a/scripts/gui/PrototypeWindow.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Godot;
-using Newlon;
-
-public partial class PrototypeWindow : AcceptDialog
-{
- public override void _Ready()
- {
- if (Settings.Splash) return;
- Settings.Splash = true;
- PopupCentered();
- }
-}
diff --git a/scripts/gui/PrototypeWindow.cs.uid b/scripts/gui/PrototypeWindow.cs.uid
deleted file mode 100644
index 3b3182a..0000000
--- a/scripts/gui/PrototypeWindow.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cghu4i3bnyavg
diff --git a/scripts/gui/RestartButton.cs b/scripts/gui/RestartButton.cs
deleted file mode 100644
index b90034e..0000000
--- a/scripts/gui/RestartButton.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Godot;
-using Newlon;
-
-public partial class RestartButton : Button
-{
- public override void _Pressed()
- {
- GetTree().Paused = false;
- LevelController.Instance.RestartLevel();
- }
-
-}
diff --git a/scripts/gui/RestartButton.cs.uid b/scripts/gui/RestartButton.cs.uid
deleted file mode 100644
index 062cc44..0000000
--- a/scripts/gui/RestartButton.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://btqwxelqxheh3
diff --git a/scripts/gui/RewardScene.cs b/scripts/gui/RewardScene.cs
deleted file mode 100644
index d6856a5..0000000
--- a/scripts/gui/RewardScene.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using Godot;
-using Newlon;
-using Newlon.Components;
-using Newlon.Resources;
-
-public partial class RewardScene : Node
-{
- public override void _Ready()
- {
- var reward = LevelController.Instance.Reward;
- var subviewport = GetNode("%SubViewport");
- var nameLabel = GetNode