[gd_scene load_steps=53 format=3 uid="uid://dunih4xhnupy5"] [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") 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("1_jrplh") region = Rect2(15, 30, 20, 8) [sub_resource type="AtlasTexture" id="AtlasTexture_vmdbp"] atlas = ExtResource("1_jrplh") region = Rect2(64, 44, 10, 16) [sub_resource type="AtlasTexture" id="AtlasTexture_x1oyw"] atlas = ExtResource("1_jrplh") region = Rect2(93, 50, 17, 9) [sub_resource type="AtlasTexture" id="AtlasTexture_vjx3c"] atlas = ExtResource("1_jrplh") region = Rect2(79, 44, 10, 16) [sub_resource type="AtlasTexture" id="AtlasTexture_f31xd"] atlas = ExtResource("1_jrplh") region = Rect2(47, 33, 8, 16) [sub_resource type="AtlasTexture" id="AtlasTexture_od8jf"] atlas = ExtResource("1_jrplh") region = Rect2(59, 33, 7, 10) [sub_resource type="AtlasTexture" id="AtlasTexture_p4711"] atlas = ExtResource("1_jrplh") region = Rect2(71, 30, 19, 13) [sub_resource type="AtlasTexture" id="AtlasTexture_1bk2b"] atlas = ExtResource("1_jrplh") region = Rect2(12, 43, 6, 18) [sub_resource type="AtlasTexture" id="AtlasTexture_y06yv"] atlas = ExtResource("1_jrplh") region = Rect2(36, 50, 9, 11) [sub_resource type="AtlasTexture" id="AtlasTexture_lu8go"] atlas = ExtResource("1_jrplh") region = Rect2(22, 45, 8, 15) [sub_resource type="AtlasTexture" id="AtlasTexture_cdq7v"] atlas = ExtResource("1_jrplh") region = Rect2(93, 8, 29, 39) [sub_resource type="AtlasTexture" id="AtlasTexture_e7wc3"] atlas = ExtResource("1_jrplh") region = Rect2(72, 2, 13, 26) [sub_resource type="AtlasTexture" id="AtlasTexture_wn68q"] 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("1_jrplh") region = Rect2(93, 3, 2, 3) [sub_resource type="AtlasTexture" id="AtlasTexture_kto0i"] atlas = ExtResource("1_jrplh") region = Rect2(105, 2, 3, 4) [sub_resource type="AtlasTexture" id="AtlasTexture_djocr"] 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("1_jrplh") region = Rect2(0, 32, 9, 15) [sub_resource type="Animation" id="Animation_x5uj2"] 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/Tie:position") tracks/12/interp = 1 tracks/12/loop_wrap = true tracks/12/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(-9, -21)] } tracks/13/type = "value" tracks/13/imported = false tracks/13/enabled = true tracks/13/path = NodePath("Zombie/Butt/Body/Tie: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/RightHand:position") tracks/14/interp = 1 tracks/14/loop_wrap = true tracks/14/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "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/RightHand: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/RightLowerArm:position") tracks/16/interp = 1 tracks/16/loop_wrap = true tracks/16/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(-2, 15)] } tracks/17/type = "value" tracks/17/imported = false tracks/17/enabled = true tracks/17/path = NodePath("Zombie/Butt/Body/RightUpperArm/RightLowerArm: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/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(-14, -23)] } tracks/19/type = "value" tracks/19/imported = false tracks/19/enabled = true tracks/19/path = NodePath("Zombie/Butt/Body/RightUpperArm: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/LeftFoot:position") tracks/20/interp = 1 tracks/20/loop_wrap = true tracks/20/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(6, 10)] } tracks/21/type = "value" tracks/21/imported = false tracks/21/enabled = true tracks/21/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot: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/LeftLowerLeg:position") tracks/22/interp = 1 tracks/22/loop_wrap = true tracks/22/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(-1, 13)] } tracks/23/type = "value" tracks/23/imported = false tracks/23/enabled = true tracks/23/path = NodePath("Zombie/Butt/LeftUpperLeg/LeftLowerLeg: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/LeftUpperLeg:position") tracks/24/interp = 1 tracks/24/loop_wrap = true tracks/24/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(6, 4)] } tracks/25/type = "value" tracks/25/imported = false tracks/25/enabled = true tracks/25/path = NodePath("Zombie/Butt/LeftUpperLeg: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/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, 14)] } tracks/27/type = "value" tracks/27/imported = false tracks/27/enabled = true tracks/27/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg/RightFoot: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/RightLowerLeg:position") tracks/28/interp = 1 tracks/28/loop_wrap = true tracks/28/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(-2, 12)] } tracks/29/type = "value" tracks/29/imported = false tracks/29/enabled = true tracks/29/path = NodePath("Zombie/Butt/RightUpperLeg/RightLowerLeg: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/RightUpperLeg:position") tracks/30/interp = 1 tracks/30/loop_wrap = true tracks/30/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(-6, 3)] } tracks/31/type = "value" tracks/31/imported = false tracks/31/enabled = true tracks/31/path = NodePath("Zombie/Butt/RightUpperLeg: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:position") tracks/32/interp = 1 tracks/32/loop_wrap = true tracks/32/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(5, -35)] } tracks/33/type = "value" tracks/33/imported = false tracks/33/enabled = true tracks/33/path = NodePath("Zombie/Butt: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/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(1, -2)] } tracks/35/type = "value" tracks/35/imported = false tracks/35/enabled = true tracks/35/path = NodePath("Zombie/Butt/Body: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:position") tracks/36/interp = 1 tracks/36/loop_wrap = true tracks/36/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [Vector2(0, 0)] } tracks/37/type = "value" tracks/37/imported = false tracks/37/enabled = true tracks/37/path = NodePath("Zombie: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:position") tracks/38/interp = 1 tracks/38/loop_wrap = true tracks/38/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "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:rotation") tracks/39/interp = 1 tracks/39/loop_wrap = true tracks/39/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } tracks/40/type = "value" tracks/40/imported = false tracks/40/enabled = true 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": 1, "values": [true] } tracks/41/type = "value" tracks/41/imported = false tracks/41/enabled = true 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": 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/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_6y4ja")] } tracks/43/type = "value" tracks/43/imported = false tracks/43/enabled = true 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 = { "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("../../Mover:speed_control") tracks/44/interp = 1 tracks/44/loop_wrap = true tracks/44/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, "values": [0.0] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_qnnv5"] _data = { &"RESET": SubResource("Animation_x5uj2") } [sub_resource type="RectangleShape2D" id="RectangleShape2D_20equ"] size = Vector2(27, 44) [sub_resource type="RectangleShape2D" id="RectangleShape2D_ap2hg"] size = Vector2(20, 44) [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_moyxp"] animation = &"basic/death" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_qoqrk"] animation = &"basic/eating" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_20equ"] animation = &"basic/stand" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ap2hg"] animation = &"basic/walk" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_b2rti"] switch_mode = 2 advance_mode = 2 [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_culaa"] advance_mode = 2 [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_mc88i"] advance_mode = 2 advance_expression = "eating" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_moyxp"] xfade_time = 0.5 advance_mode = 2 advance_expression = "eating == false and walking" [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="Visual/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="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="Visual/basic_zombie_walk/Zombie/Butt"] position = Vector2(-6, 3) 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="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="Visual/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) 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="Visual/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg"] position = Vector2(-2, 14) 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="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="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="Visual/basic_zombie_walk/Zombie/Butt"] position = Vector2(6, 4) 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="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="Visual/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) 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="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="Visual/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) 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="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="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="Visual/basic_zombie_walk/Zombie/Butt/Body"] 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="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="Visual/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm"] position = Vector2(-2, 15) 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="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) 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="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="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="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="Visual/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-9, -21) 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="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="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="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="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) auto_calculate_length_and_angle = false length = 11.0 bone_angle = 180.0 editor_settings/show_bone_gizmo = false [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="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 length = 2.0 bone_angle = 180.0 editor_settings/show_bone_gizmo = false [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="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 length = 2.0 bone_angle = 180.0 editor_settings/show_bone_gizmo = false [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="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="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="LeftLowerArm" type="Bone2D" parent="Visual/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) 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="Visual/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" 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" 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="Visual/basic_zombie_walk"] libraries = { &"": SubResource("AnimationLibrary_qnnv5"), &"basic": ExtResource("2_yccea") } [node name="Collider" type="Area2D" parent="."] collision_layer = 4 collision_mask = 0 monitoring = false script = ExtResource("3_qoqrk") [node name="CollisionShape2D" type="CollisionShape2D" parent="Collider"] position = Vector2(1.5, 8) shape = SubResource("RectangleShape2D_20equ") [node name="Hurtbox" type="Area2D" parent="."] collision_layer = 0 collision_mask = 2 monitorable = false script = ExtResource("4_20equ") lookup_layers = 1 [node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"] position = Vector2(-10, 8) shape = SubResource("RectangleShape2D_ap2hg") [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("3_yccea") [node name="Controller" type="Node" parent="." node_paths=PackedStringArray("hurtbox")] script = ExtResource("5_mc88i") hurtbox = NodePath("../Hurtbox") damage = 5.0 [node name="DeathHandler" type="Node" parent="."] script = ExtResource("9_ap2hg") [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"]