From f65cb114749cdfc4aafe60eff37867a60016fa1d Mon Sep 17 00:00:00 2001 From: Rendo Date: Thu, 17 Jul 2025 20:28:47 +0500 Subject: [PATCH] Initial data --- addons/pvzadventure/AdventureLevelResource.cs | 3 +- .../pvzadventure/scenes/adventure_editor.tscn | 7 +- .../pvzadventure/scenes/initial_editor.tscn | 154 +++++++++++++++++- .../scenes/universal_grid_item.tscn | 16 +- .../scripts/AdventureResourceInspector.cs | 6 +- addons/pvzadventure/scripts/InitialEditor.cs | 46 ++++++ .../pvzadventure/scripts/InitialEditor.cs.uid | 1 + addons/pvzadventure/scripts/UNI_GridItem.cs | 41 ++++- .../scripts/packed_scene_preview_generator.gd | 42 +++++ .../packed_scene_preview_generator.gd.uid | 1 + .../levels/test_level_for_execution.tres | 7 +- scenes/entities/Zombies/bucket_zombie.tscn | 64 +++++--- 12 files changed, 340 insertions(+), 48 deletions(-) create mode 100644 addons/pvzadventure/scripts/InitialEditor.cs create mode 100644 addons/pvzadventure/scripts/InitialEditor.cs.uid create mode 100644 addons/pvzadventure/scripts/packed_scene_preview_generator.gd create mode 100644 addons/pvzadventure/scripts/packed_scene_preview_generator.gd.uid diff --git a/addons/pvzadventure/AdventureLevelResource.cs b/addons/pvzadventure/AdventureLevelResource.cs index 3131f25..37b1f50 100644 --- a/addons/pvzadventure/AdventureLevelResource.cs +++ b/addons/pvzadventure/AdventureLevelResource.cs @@ -7,8 +7,9 @@ public partial class AdventureLevelResource : Resource { [Export] public float startSun = 50; //[Export] public Array conditions; - [Export(PropertyHint.Range,"0,1,0.01")] public float wavePercentage; + [Export(PropertyHint.Range, "0,1,0.01")] public float wavePercentage; [Export] public float standardWaveDelay; [Export] public float initialWaveDelay; [Export] public Array waves; + [Export] public Array initialScenes = [.. new PackedScene[45]]; } diff --git a/addons/pvzadventure/scenes/adventure_editor.tscn b/addons/pvzadventure/scenes/adventure_editor.tscn index 8f53ced..00a3f0f 100644 --- a/addons/pvzadventure/scenes/adventure_editor.tscn +++ b/addons/pvzadventure/scenes/adventure_editor.tscn @@ -1,8 +1,7 @@ -[gd_scene load_steps=6 format=3 uid="uid://dkq82o31vr3i2"] +[gd_scene load_steps=5 format=3 uid="uid://dkq82o31vr3i2"] [ext_resource type="Script" uid="uid://dkgxtig5fwdgi" path="res://addons/pvzadventure/scripts/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="PackedScene" uid="uid://db5ah76l43ng2" path="res://addons/pvzadventure/scenes/zombie_editor.tscn" id="3_1ojhm"] [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/AdventureResourceInspector.cs" id="3_d5hwn"] @@ -52,10 +51,6 @@ size_flags_horizontal = 3 size_flags_stretch_ratio = 3.0 script = ExtResource("3_5imrs") -[node name="ZombieEditor" parent="Editor/WorkArea/PanelContainer" instance=ExtResource("3_1ojhm")] -visible = false -layout_mode = 2 - [node name="Inspector" type="VSplitContainer" parent="Editor/WorkArea"] layout_mode = 2 size_flags_horizontal = 3 diff --git a/addons/pvzadventure/scenes/initial_editor.tscn b/addons/pvzadventure/scenes/initial_editor.tscn index 551fe43..0ec1e16 100644 --- a/addons/pvzadventure/scenes/initial_editor.tscn +++ b/addons/pvzadventure/scenes/initial_editor.tscn @@ -1,5 +1,153 @@ -[gd_scene format=3 uid="uid://sqessjn0m4o3"] +[gd_scene load_steps=3 format=3 uid="uid://sqessjn0m4o3"] + +[ext_resource type="PackedScene" uid="uid://djb8ynxhnmo0t" path="res://addons/pvzadventure/scenes/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"] -offset_right = 40.0 -offset_bottom = 40.0 +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/universal_grid_item.tscn b/addons/pvzadventure/scenes/universal_grid_item.tscn index 8035983..a1ccc89 100644 --- a/addons/pvzadventure/scenes/universal_grid_item.tscn +++ b/addons/pvzadventure/scenes/universal_grid_item.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=3 uid="uid://djb8ynxhnmo0t"] +[gd_scene load_steps=4 format=3 uid="uid://djb8ynxhnmo0t"] -[ext_resource type="Script" uid="uid://fof6kr0et8ng" path="res://addons/pvzadventure/scripts/ZE_GridItem.cs" id="1_e5mae"] +[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) @@ -15,9 +16,9 @@ clip_contents = true custom_minimum_size = Vector2(100, 100) anchors_preset = -1 anchor_right = 0.172 -anchor_bottom = 0.25 +anchor_bottom = 0.212 offset_right = -0.200005 -offset_bottom = -15.0 +offset_bottom = 0.199997 theme_override_styles/panel = SubResource("StyleBoxFlat_jbknv") script = ExtResource("1_e5mae") @@ -25,3 +26,10 @@ script = ExtResource("1_e5mae") 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/scripts/AdventureResourceInspector.cs b/addons/pvzadventure/scripts/AdventureResourceInspector.cs index 8274e0c..974f70d 100644 --- a/addons/pvzadventure/scripts/AdventureResourceInspector.cs +++ b/addons/pvzadventure/scripts/AdventureResourceInspector.cs @@ -11,6 +11,7 @@ public partial class AdventureResourceInspector : Node const string EVENTS_ITEM_NAME = "Events"; const string HUGEWAVE_ITEM_NAME = "Is huge wave?"; private PackedScene zombieEditorScene = ResourceLoader.Load("uid://db5ah76l43ng2"); + private PackedScene initialEditorScene = ResourceLoader.Load("uid://sqessjn0m4o3"); private Tree tree; private AdventureLevelResource heldResource; @@ -99,7 +100,10 @@ public partial class AdventureResourceInspector : Node break; case INITIAL_ITEM_NAME: - + var initialEditor = initialEditorScene.Instantiate(); + editorContainer.AddChild(initialEditor); + initialEditor.SetData(heldResource); + initialEditor.SaveCallback += adventureEditor.Save; break; } } diff --git a/addons/pvzadventure/scripts/InitialEditor.cs b/addons/pvzadventure/scripts/InitialEditor.cs new file mode 100644 index 0000000..1ebcb4b --- /dev/null +++ b/addons/pvzadventure/scripts/InitialEditor.cs @@ -0,0 +1,46 @@ +using Godot; + +[Tool] +public partial class InitialEditor : Node +{ + public AdventureLevelResource editedResource; + [Signal] public delegate void SaveCallbackEventHandler(); + public override void _Ready() + { + foreach (var child in GetChild(0).GetChildren()) + { + if (child is UNI_GridItem gridItem) + { + gridItem.ResourceChanged += OnResourceChanged; + } + } + } + public void SetData(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 new file mode 100644 index 0000000..76241f7 --- /dev/null +++ b/addons/pvzadventure/scripts/InitialEditor.cs.uid @@ -0,0 +1 @@ +uid://cumeahjpjgagq diff --git a/addons/pvzadventure/scripts/UNI_GridItem.cs b/addons/pvzadventure/scripts/UNI_GridItem.cs index c69b09d..1fb2ff7 100644 --- a/addons/pvzadventure/scripts/UNI_GridItem.cs +++ b/addons/pvzadventure/scripts/UNI_GridItem.cs @@ -1,15 +1,46 @@ using Godot; -using System; +[Tool] public partial class UNI_GridItem : PanelContainer { - // Called when the node enters the scene tree for the first time. - public override void _Ready() + 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); } - // Called every frame. 'delta' is the elapsed time since the previous frame. - public override void _Process(double delta) + 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/packed_scene_preview_generator.gd b/addons/pvzadventure/scripts/packed_scene_preview_generator.gd new file mode 100644 index 0000000..770610d --- /dev/null +++ b/addons/pvzadventure/scripts/packed_scene_preview_generator.gd @@ -0,0 +1,42 @@ +@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 new file mode 100644 index 0000000..8db1b43 --- /dev/null +++ b/addons/pvzadventure/scripts/packed_scene_preview_generator.gd.uid @@ -0,0 +1 @@ +uid://c3cgpwy1qaeww diff --git a/resources/levels/test_level_for_execution.tres b/resources/levels/test_level_for_execution.tres index 271ebb2..65c4d0f 100644 --- a/resources/levels/test_level_for_execution.tres +++ b/resources/levels/test_level_for_execution.tres @@ -1,8 +1,12 @@ -[gd_resource type="Resource" script_class="AdventureLevelResource" load_steps=36 format=3 uid="uid://br3364jty1j0i"] +[gd_resource type="Resource" script_class="AdventureLevelResource" load_steps=40 format=3 uid="uid://br3364jty1j0i"] +[ext_resource type="PackedScene" uid="uid://xu4i6tmkv00a" path="res://scenes/entities/Zombies/bucket_zombie.tscn" id="1_n6yt3"] [ext_resource type="Script" uid="uid://bximdujbkj2n4" path="res://addons/pvzadventure/AdventureLevelResource.cs" id="1_qb1ge"] +[ext_resource type="PackedScene" uid="uid://bw1w8jp0yeypy" path="res://scenes/entities/plants/aloe.tscn" id="1_y8rkm"] [ext_resource type="Script" uid="uid://cw7yc3i2lgcja" path="res://addons/pvzadventure/WaveEvent.cs" id="2_8aewt"] +[ext_resource type="PackedScene" uid="uid://qq0cw8xtcoj3" path="res://scenes/entities/plants/garlic.tscn" id="2_dbrq5"] [ext_resource type="Script" uid="uid://7rptlb5qr3b6" path="res://addons/pvzadventure/WaveData.cs" id="3_hlq35"] +[ext_resource type="PackedScene" uid="uid://bgqmwsb6ynm81" path="res://scenes/entities/Zombies/hobo.tscn" id="4_8h2xm"] [ext_resource type="Script" uid="uid://dl12rj75tk2qi" path="res://addons/pvzadventure/RowSpawn.cs" id="4_8miqm"] [ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="5_8miqm"] [ext_resource type="Resource" uid="uid://dkhjlu7u0vny6" path="res://resources/zombies/buckethead.tres" id="6_s62qb"] @@ -145,4 +149,5 @@ wavePercentage = 0.5 standardWaveDelay = 30.0 initialWaveDelay = 20.0 waves = [SubResource("Resource_8aewt"), SubResource("Resource_hlq35"), SubResource("Resource_8miqm"), SubResource("Resource_s62qb"), SubResource("Resource_yvl2y"), SubResource("Resource_ulhin"), SubResource("Resource_cafd0"), SubResource("Resource_y8rkm"), SubResource("Resource_dbrq5")] +initialScenes = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, ExtResource("1_n6yt3"), null, null, null, ExtResource("1_y8rkm"), null, ExtResource("2_dbrq5"), null, null, null, null, null, null, null, null, null, null, null, ExtResource("4_8h2xm"), null, null, null, null, null, null, null, null, null] metadata/_custom_type_script = "uid://bximdujbkj2n4" diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index b30d9b1..59f9922 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://xu4i6tmkv00a"] +[gd_scene load_steps=15 format=3 uid="uid://xu4i6tmkv00a"] [ext_resource type="PackedScene" uid="uid://hhjbqkjqpt7x" path="res://scenes/entities/Zombies/cone_zombie.tscn" id="1_mwqpo"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_3mrqj"] @@ -24,6 +24,13 @@ region = Rect2(24, 2, 9, 9) atlas = ExtResource("6_lea3a") region = Rect2(0, 32, 9, 15) +[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="Resource" id="Resource_v1iwd"] resource_local_to_scene = true script = ExtResource("4_1s2fn") @@ -48,7 +55,7 @@ use_parent_material = false [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] use_parent_material = false -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999836, 0.999836) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] scale = Vector2(0.999833, 0.999833) @@ -58,47 +65,47 @@ scale = Vector2(0.999834, 0.999834) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] use_parent_material = false -scale = Vector2(0.999835, 0.999835) [node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999833, 0.999833) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999831, 0.999831) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] use_parent_material = false -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] use_parent_material = false -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999826, 0.999826) [node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999826, 0.999826) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.140011 -skew = -0.000141382 +rotation = -0.0952629 +skew = -0.000141501 + +[node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] +scale = Vector2(0.999828, 0.999828) [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] position = Vector2(-16, -8) -scale = Vector2(1, 1) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] position = Vector2(-4, -9) -scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-3.00172, 2.99709) -rotation = 0.0135876 -scale = Vector2(0.999828, 0.999828) +position = Vector2(-2.88169, 2.71447) +rotation = -0.0665417 +scale = Vector2(0.999829, 0.999829) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="Hat" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4"] position = Vector2(-6, -8) @@ -112,20 +119,20 @@ degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu scale = Vector2(0.999829, 0.999829) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.131641 -scale = Vector2(0.999999, 0.999999) +rotation = -0.10097 +scale = Vector2(0.999997, 0.999997) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] show_behind_parent = false position = Vector2(-0.99983, 12.9978) -rotation = -0.0580983 -scale = Vector2(0.999657, 0.999657) +rotation = -0.0832296 +scale = Vector2(0.999659, 0.999659) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999829, 0.999829) [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand" index="0"] texture = SubResource("AtlasTexture_wfem3") @@ -139,13 +146,16 @@ centered = false offset = Vector2(-5, 0) metadata/_edit_lock_ = true +[node name="Eatbox" parent="." index="2"] +_damage = SubResource("Resource_lea3a") + [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_v1iwd") -_speedControlMult = 0.987455 +_speedControlMult = 0.345736 + +[node name="HitPlayer" parent="." index="5"] +playlist = Array[AudioStream]([ExtResource("5_lt6ps"), ExtResource("6_kedip")]) +channels = Array[String](["metal_hit", "hit"]) [node name="Armor" parent="." index="6"] MaxHP = 375.0 - -[node name="HitPlayer" parent="." index="7"] -playlist = Array[AudioStream]([ExtResource("5_lt6ps"), ExtResource("6_kedip")]) -channels = Array[String](["metal_hit", "hit"])