diff --git a/addons/pvzadventure/scripts/ZE_AssetBrowser.cs b/addons/pvzadventure/scripts/ZE_AssetBrowser.cs index 9d866f6..16cf34f 100644 --- a/addons/pvzadventure/scripts/ZE_AssetBrowser.cs +++ b/addons/pvzadventure/scripts/ZE_AssetBrowser.cs @@ -4,7 +4,7 @@ using Godot; [Tool] public partial class ZE_AssetBrowser : HBoxContainer { - const string ZOMBIE_PATH = "res://resources/zombies/"; + const string ZOMBIE_PATH = "res://assets/zombies/"; private PackedScene scene = ResourceLoader.Load("uid://iwnklc62rni8"); public override void _Ready() { diff --git a/assets/levels/balance_and_spawn_test.tres b/assets/levels/balance_and_spawn_test.tres index e427b41..3ed2421 100644 --- a/assets/levels/balance_and_spawn_test.tres +++ b/assets/levels/balance_and_spawn_test.tres @@ -1,123 +1,124 @@ -[gd_resource type="Resource" script_class="AdventureLevelResource" load_steps=29 format=3 uid="uid://ctbue7dex4umy"] +[gd_resource type="Resource" script_class="AdventureLevelResource" load_steps=30 format=3 uid="uid://ctbue7dex4umy"] [ext_resource type="Script" uid="uid://bximdujbkj2n4" path="res://addons/pvzadventure/AdventureLevelResource.cs" id="1_46lr8"] [ext_resource type="Script" uid="uid://cw7yc3i2lgcja" path="res://addons/pvzadventure/WaveEvent.cs" id="2_otfbt"] [ext_resource type="Script" uid="uid://7rptlb5qr3b6" path="res://addons/pvzadventure/WaveData.cs" id="3_cugtx"] [ext_resource type="Script" uid="uid://dl12rj75tk2qi" path="res://addons/pvzadventure/RowSpawn.cs" id="4_y1e37"] +[ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="5_uatri"] [ext_resource type="Resource" uid="uid://buvacn56kyy2p" path="res://assets/zombies/basic.tres" id="6_qsvr4"] [ext_resource type="Resource" uid="uid://nceohd32fkxk" path="res://assets/zombies/conehead.tres" id="7_qsvr4"] [sub_resource type="Resource" id="Resource_5e1dl"] script = ExtResource("4_y1e37") -zombies = [null, null, null, ExtResource("6_qsvr4"), null] +zombies = Array[ExtResource("5_uatri")]([null, null, null, ExtResource("6_qsvr4"), null]) [sub_resource type="Resource" id="Resource_qsvr4"] script = ExtResource("3_cugtx") -zombiesOrdered = [SubResource("Resource_5e1dl")] +zombiesOrdered = Array[ExtResource("4_y1e37")]([SubResource("Resource_5e1dl")]) events = Array[ExtResource("2_otfbt")]([]) customWaveDelay = 0.0 isHugeWave = false [sub_resource type="Resource" id="Resource_y1e37"] script = ExtResource("4_y1e37") -zombies = [null, ExtResource("6_qsvr4"), null, null, null] +zombies = Array[ExtResource("5_uatri")]([null, ExtResource("6_qsvr4"), null, null, null]) [sub_resource type="Resource" id="Resource_otfbt"] script = ExtResource("3_cugtx") -zombiesOrdered = [SubResource("Resource_y1e37")] +zombiesOrdered = Array[ExtResource("4_y1e37")]([SubResource("Resource_y1e37")]) events = Array[ExtResource("2_otfbt")]([]) customWaveDelay = 0.0 isHugeWave = false [sub_resource type="Resource" id="Resource_ciic2"] script = ExtResource("4_y1e37") -zombies = [ExtResource("6_qsvr4"), null, null, ExtResource("6_qsvr4"), null] +zombies = Array[ExtResource("5_uatri")]([ExtResource("6_qsvr4"), null, null, ExtResource("6_qsvr4"), null]) [sub_resource type="Resource" id="Resource_nv3y4"] script = ExtResource("3_cugtx") -zombiesOrdered = [SubResource("Resource_ciic2")] +zombiesOrdered = Array[ExtResource("4_y1e37")]([SubResource("Resource_ciic2")]) events = Array[ExtResource("2_otfbt")]([]) customWaveDelay = 0.0 isHugeWave = false [sub_resource type="Resource" id="Resource_1ut7p"] script = ExtResource("4_y1e37") -zombies = [null, null, ExtResource("7_qsvr4"), null, null] +zombies = Array[ExtResource("5_uatri")]([null, null, ExtResource("7_qsvr4"), null, null]) [sub_resource type="Resource" id="Resource_mt5r8"] script = ExtResource("3_cugtx") -zombiesOrdered = [SubResource("Resource_1ut7p")] +zombiesOrdered = Array[ExtResource("4_y1e37")]([SubResource("Resource_1ut7p")]) events = Array[ExtResource("2_otfbt")]([]) customWaveDelay = 0.0 isHugeWave = false [sub_resource type="Resource" id="Resource_he3sm"] script = ExtResource("4_y1e37") -zombies = [ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), null, null] +zombies = Array[ExtResource("5_uatri")]([ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), null, null]) [sub_resource type="Resource" id="Resource_kugcf"] script = ExtResource("3_cugtx") -zombiesOrdered = [SubResource("Resource_he3sm")] +zombiesOrdered = Array[ExtResource("4_y1e37")]([SubResource("Resource_he3sm")]) events = Array[ExtResource("2_otfbt")]([]) customWaveDelay = 0.0 isHugeWave = false [sub_resource type="Resource" id="Resource_sadu8"] script = ExtResource("4_y1e37") -zombies = [null, ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), null, ExtResource("6_qsvr4")] +zombies = Array[ExtResource("5_uatri")]([null, ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), null, ExtResource("6_qsvr4")]) [sub_resource type="Resource" id="Resource_p5aki"] script = ExtResource("4_y1e37") -zombies = [null, null, ExtResource("7_qsvr4"), null, null] +zombies = Array[ExtResource("5_uatri")]([null, null, ExtResource("7_qsvr4"), null, null]) [sub_resource type="Resource" id="Resource_oyvhx"] script = ExtResource("3_cugtx") -zombiesOrdered = [SubResource("Resource_sadu8"), SubResource("Resource_p5aki")] +zombiesOrdered = Array[ExtResource("4_y1e37")]([SubResource("Resource_sadu8"), SubResource("Resource_p5aki")]) events = Array[ExtResource("2_otfbt")]([]) customWaveDelay = 0.0 isHugeWave = false [sub_resource type="Resource" id="Resource_vikxa"] script = ExtResource("4_y1e37") -zombies = [ExtResource("7_qsvr4"), null, null, null, ExtResource("7_qsvr4")] +zombies = Array[ExtResource("5_uatri")]([ExtResource("7_qsvr4"), null, null, null, ExtResource("7_qsvr4")]) [sub_resource type="Resource" id="Resource_k4k25"] script = ExtResource("3_cugtx") -zombiesOrdered = [SubResource("Resource_vikxa")] +zombiesOrdered = Array[ExtResource("4_y1e37")]([SubResource("Resource_vikxa")]) events = Array[ExtResource("2_otfbt")]([]) customWaveDelay = 0.0 isHugeWave = false [sub_resource type="Resource" id="Resource_gp8ns"] script = ExtResource("4_y1e37") -zombies = [null, null, ExtResource("7_qsvr4"), ExtResource("7_qsvr4"), null] +zombies = Array[ExtResource("5_uatri")]([null, null, ExtResource("7_qsvr4"), ExtResource("7_qsvr4"), null]) [sub_resource type="Resource" id="Resource_ki4sn"] script = ExtResource("4_y1e37") -zombies = [null, ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), null, ExtResource("6_qsvr4")] +zombies = Array[ExtResource("5_uatri")]([null, ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), null, ExtResource("6_qsvr4")]) [sub_resource type="Resource" id="Resource_oxbea"] script = ExtResource("3_cugtx") -zombiesOrdered = [SubResource("Resource_gp8ns"), SubResource("Resource_ki4sn")] +zombiesOrdered = Array[ExtResource("4_y1e37")]([SubResource("Resource_gp8ns"), SubResource("Resource_ki4sn")]) events = Array[ExtResource("2_otfbt")]([]) customWaveDelay = 0.0 isHugeWave = false [sub_resource type="Resource" id="Resource_2irq2"] script = ExtResource("4_y1e37") -zombies = [ExtResource("6_qsvr4"), null, ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), null] +zombies = Array[ExtResource("5_uatri")]([ExtResource("6_qsvr4"), null, ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), null]) [sub_resource type="Resource" id="Resource_ipu8d"] script = ExtResource("4_y1e37") -zombies = [null, ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), null, ExtResource("6_qsvr4")] +zombies = Array[ExtResource("5_uatri")]([null, ExtResource("6_qsvr4"), ExtResource("6_qsvr4"), null, ExtResource("6_qsvr4")]) [sub_resource type="Resource" id="Resource_vu1ng"] script = ExtResource("4_y1e37") -zombies = [null, ExtResource("7_qsvr4"), ExtResource("7_qsvr4"), ExtResource("7_qsvr4"), null] +zombies = Array[ExtResource("5_uatri")]([null, ExtResource("7_qsvr4"), ExtResource("7_qsvr4"), ExtResource("7_qsvr4"), null]) [sub_resource type="Resource" id="Resource_5cdj6"] script = ExtResource("3_cugtx") -zombiesOrdered = [SubResource("Resource_2irq2"), SubResource("Resource_ipu8d"), SubResource("Resource_vu1ng")] +zombiesOrdered = Array[ExtResource("4_y1e37")]([SubResource("Resource_2irq2"), SubResource("Resource_ipu8d"), SubResource("Resource_vu1ng")]) events = Array[ExtResource("2_otfbt")]([]) customWaveDelay = 20.0 isHugeWave = true @@ -126,7 +127,7 @@ isHugeWave = true script = ExtResource("1_46lr8") startSun = 50 wavePercentage = 0.5 -standardWaveDelay = 15.0 +standardWaveDelay = 30.0 initialWaveDelay = 20.0 waves = [SubResource("Resource_qsvr4"), SubResource("Resource_otfbt"), SubResource("Resource_nv3y4"), SubResource("Resource_mt5r8"), SubResource("Resource_kugcf"), SubResource("Resource_oyvhx"), SubResource("Resource_k4k25"), SubResource("Resource_oxbea"), SubResource("Resource_5cdj6")] initialScenes = Array[PackedScene]([null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]) diff --git a/assets/levels/win_test.tres b/assets/levels/win_test.tres new file mode 100644 index 0000000..2251b30 --- /dev/null +++ b/assets/levels/win_test.tres @@ -0,0 +1,40 @@ +[gd_resource type="Resource" script_class="AdventureLevelResource" load_steps=12 format=3 uid="uid://ds2js2vylygvy"] + +[ext_resource type="Script" uid="uid://bximdujbkj2n4" path="res://addons/pvzadventure/AdventureLevelResource.cs" id="1_gpqmh"] +[ext_resource type="Script" uid="uid://cw7yc3i2lgcja" path="res://addons/pvzadventure/WaveEvent.cs" id="2_pkoaj"] +[ext_resource type="Script" uid="uid://7rptlb5qr3b6" path="res://addons/pvzadventure/WaveData.cs" id="3_mtsmf"] +[ext_resource type="Script" uid="uid://dl12rj75tk2qi" path="res://addons/pvzadventure/RowSpawn.cs" id="4_tpjav"] +[ext_resource type="Script" uid="uid://cqxj7o8hdm82n" path="res://scripts/resources/ZombieResource.cs" id="5_tpjav"] +[ext_resource type="Resource" uid="uid://buvacn56kyy2p" path="res://assets/zombies/basic.tres" id="6_swlbc"] +[ext_resource type="Resource" uid="uid://nceohd32fkxk" path="res://assets/zombies/conehead.tres" id="7_swlbc"] + +[sub_resource type="Resource" id="Resource_sw8bw"] +script = ExtResource("4_tpjav") +zombies = Array[ExtResource("5_tpjav")]([null, null, ExtResource("6_swlbc"), null, null]) + +[sub_resource type="Resource" id="Resource_swlbc"] +script = ExtResource("3_mtsmf") +zombiesOrdered = Array[ExtResource("4_tpjav")]([SubResource("Resource_sw8bw")]) +events = Array[ExtResource("2_pkoaj")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[sub_resource type="Resource" id="Resource_5gmed"] +script = ExtResource("4_tpjav") +zombies = Array[ExtResource("5_tpjav")]([null, null, ExtResource("7_swlbc"), null, null]) + +[sub_resource type="Resource" id="Resource_pkoaj"] +script = ExtResource("3_mtsmf") +zombiesOrdered = Array[ExtResource("4_tpjav")]([SubResource("Resource_5gmed")]) +events = Array[ExtResource("2_pkoaj")]([]) +customWaveDelay = 0.0 +isHugeWave = false + +[resource] +script = ExtResource("1_gpqmh") +startSun = 50 +wavePercentage = 0.0 +standardWaveDelay = 20.0 +initialWaveDelay = 10.0 +waves = [SubResource("Resource_swlbc"), SubResource("Resource_pkoaj")] +initialScenes = Array[PackedScene]([null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]) diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index af65b62..bf3d0f0 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -41,41 +41,41 @@ _armor = NodePath("Armor") material = SubResource("ShaderMaterial_sat5k") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999832, 0.999832) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999839, 0.999839) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999833, 0.999833) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999836, 0.999836) [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.999823, 0.999823) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999828, 0.999828) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] -scale = Vector2(0.999829, 0.999829) - -[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] scale = Vector2(0.999827, 0.999827) -[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] +[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] scale = Vector2(0.999829, 0.999829) +[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] +scale = Vector2(0.999832, 0.999832) + [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = -0.0303385 -skew = -0.000100613 +rotation = 0.13159 +skew = -0.000126362 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.99983, 0.99983) [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] position = Vector2(-16, -8) @@ -86,16 +86,15 @@ 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(-2.96232, 2.90907) -rotation = -0.0211916 -scale = Vector2(0.999829, 0.999829) +position = Vector2(-2.93758, 2.84233) +rotation = 0.0189273 +scale = Vector2(0.999823, 0.999823) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999824, 0.999824) [node name="Hat" type="RigidBody2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="4" node_paths=PackedStringArray("data")] position = Vector2(-2.5, -13.5) -scale = Vector2(1.00086, 1.00086) collision_layer = 128 collision_mask = 64 mass = 0.5 @@ -121,29 +120,29 @@ position = Vector2(1, -6) shape = SubResource("CircleShape2D_67t4t") [node name="LeftUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="4"] -scale = Vector2(0.999827, 0.999827) +scale = Vector2(0.999828, 0.999828) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = -0.0321562 -scale = Vector2(1, 1) +rotation = 0.151384 +scale = Vector2(0.999994, 0.999994) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] position = Vector2(-0.99983, 12.9978) -rotation = -0.0265063 -scale = Vector2(0.999658, 0.999658) +rotation = -0.08093 +scale = Vector2(0.999659, 0.999659) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999824, 0.999824) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) [node name="Eatbox" parent="." index="2"] _damage = SubResource("Resource_011r0") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_b6mal") -_speedControlMult = 0.0 +_speedControlMult = 1.73312 [node name="HitPlayer" parent="." index="5"] playlist = Array[AudioStream]([ExtResource("7_0amn8"), ExtResource("7_67t4t")]) diff --git a/scenes/entities/Zombies/hobo.tscn b/scenes/entities/Zombies/hobo.tscn index edcd482..4cef8ab 100644 --- a/scenes/entities/Zombies/hobo.tscn +++ b/scenes/entities/Zombies/hobo.tscn @@ -1,8 +1,7 @@ -[gd_scene load_steps=64 format=3 uid="uid://bgqmwsb6ynm81"] +[gd_scene load_steps=63 format=3 uid="uid://bgqmwsb6ynm81"] [ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_fnu7s"] [ext_resource type="Shader" uid="uid://d0eo5uuj222c4" path="res://assets/shaders/CG_color_blender.gdshader" id="2_6qr4h"] -[ext_resource type="Script" uid="uid://bcc7skl7ts6sh" path="res://scripts/systems/effects/Effect.cs" id="2_vn3j1"] [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"] @@ -757,7 +756,7 @@ mult_value = 1.0 [node name="Hobo" node_paths=PackedStringArray("_armor") instance=ExtResource("1_fnu7s")] _armor = NodePath("CanArmor") MaxHP = 130.0 -_effectImmunities = Array[ExtResource("2_vn3j1")]([ExtResource("3_b583s")]) +_effectImmunities = [ExtResource("3_b583s")] [node name="CanvasGroup" parent="." index="0"] material = SubResource("ShaderMaterial_w8pya") @@ -804,9 +803,6 @@ scale = Vector2(0.999816, 0.999816) [node name="Left_Foot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg/LeftFoot" index="0"] texture = SubResource("AtlasTexture_8y6c0") -[node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.999826, 0.999826) - [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] scale = Vector2(0.999829, 0.999829) @@ -867,14 +863,6 @@ scale = Vector2(0.999827, 0.999827) [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle" index="0"] texture = SubResource("AtlasTexture_pjhfy") -[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, 3) rotation = -0.082875 @@ -894,7 +882,6 @@ data = NodePath("../../../../../../../../..") [node name="Trashcan_lid" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head/TrashcanLid" index="0"] z_index = -1 position = Vector2(2.99822, -20.0166) -scale = Vector2(1, 1) texture = SubResource("AtlasTexture_n380g") offset = Vector2(-0.5, -0.5) metadata/_edit_lock_ = true @@ -935,7 +922,6 @@ scale = Vector2(0.999997, 0.999997) texture = SubResource("AtlasTexture_auxav") [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] -position = Vector2(-0.99983, 12.9978) rotation = -3.72659e-09 scale = Vector2(0.999652, 0.999652) texture = SubResource("AtlasTexture_dntsa") diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index 07410bc..8939de4 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -821,7 +821,7 @@ 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.999832, 0.999832) +scale = Vector2(0.999834, 0.999834) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -833,13 +833,13 @@ metadata/_edit_lock_ = true [node name="RightLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg"] position = Vector2(-2, 12) -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999832, 0.999832) 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.999831, 0.999831) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 @@ -862,7 +862,7 @@ 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.999831, 0.999831) +scale = Vector2(0.999832, 0.999832) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -874,7 +874,7 @@ metadata/_edit_lock_ = true [node name="LeftLowerLeg" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg"] position = Vector2(-1, 13) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999836, 0.999836) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -910,7 +910,7 @@ editor_settings/show_bone_gizmo = false z_index = -1 use_parent_material = true position = Vector2(-14, -23) -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -14, -23) editor_settings/show_bone_gizmo = false @@ -922,13 +922,13 @@ 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) +scale = Vector2(0.999829, 0.999829) 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.999834, 0.999834) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 8.0 @@ -956,8 +956,8 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-9, -21) -rotation = -0.0224817 -skew = -0.000424862 +rotation = 0.0770157 +skew = -0.000432968 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -972,7 +972,7 @@ 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) +scale = Vector2(0.999825, 0.999825) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -995,6 +995,7 @@ 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) @@ -1002,15 +1003,16 @@ 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(-2.69548, 2.26436) -rotation = 0.0270693 -scale = Vector2(0.999831, 0.999831) +position = Vector2(-3.00095, 2.9984) +rotation = 0.00747412 +scale = Vector2(0.999827, 0.999827) texture = SubResource("AtlasTexture_x5uj2") centered = false offset = Vector2(-12, -2) @@ -1027,7 +1029,7 @@ _observedEntity = NodePath("../../../../../../../..") [node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] position = Vector2(-3, 3) -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -3, 3) auto_calculate_length_and_angle = false length = 11.0 @@ -1061,7 +1063,7 @@ remote_path = NodePath("../../HeadParticle/Head/Left_Eye") [node name="LeftUpperArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-1, -20) -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -1083,8 +1085,8 @@ 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.110272 -scale = Vector2(0.999998, 0.999998) +rotation = 0.0724117 +scale = Vector2(0.999999, 0.999999) texture = SubResource("AtlasTexture_auqeq") centered = false offset = Vector2(-5, 0) @@ -1093,7 +1095,7 @@ 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.115743 +rotation = -0.0319581 scale = Vector2(0.999658, 0.999658) texture = SubResource("AtlasTexture_vlvtp") centered = false @@ -1110,13 +1112,13 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999829, 0.999829) 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) +scale = Vector2(0.999827, 0.999827) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 @@ -1166,7 +1168,7 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") -_speedControlMult = 2.31566 +_speedControlMult = 0.133731 [node name="HitPlayer" type="Node" parent="."] script = ExtResource("12_he8da") diff --git a/scripts/entities/Armor.cs b/scripts/entities/Armor.cs index 7c1d710..37371a6 100644 --- a/scripts/entities/Armor.cs +++ b/scripts/entities/Armor.cs @@ -24,16 +24,23 @@ public partial class Armor : Node { if(_lost) return damage; - float returnAmount = 0; - _hp -= damage; - if(_hp <= 0) - { - returnAmount = -_hp; - _hp = 0; - EmitSignal(SignalName.ArmorLost); - _lost = true; - } - EmitSignal(SignalName.ArmorDamaged,_hp); + + float returnAmount = damage - _hp; + if (returnAmount < 0) + returnAmount = 0; + if (_hp - damage <= 0) + { + var delta = _hp; + _hp = 0; + EmitSignal(SignalName.ArmorDamaged, delta); + EmitSignal(SignalName.ArmorLost); + _lost = true; + } + else + { + _hp -= damage; + EmitSignal(SignalName.ArmorDamaged, damage); + } return returnAmount; } diff --git a/scripts/entities/DegradingSprite.cs b/scripts/entities/DegradingSprite.cs index 3c28adc..a3df2d1 100644 --- a/scripts/entities/DegradingSprite.cs +++ b/scripts/entities/DegradingSprite.cs @@ -11,12 +11,12 @@ public partial class DegradingSprite : Sprite2D public override void _Ready() { - armor.ArmorDamaged += OnZombieHPChanged; + armor.ArmorDamaged += OnArmorHPChanged; } - private void OnZombieHPChanged(float hp) + private void OnArmorHPChanged(float hp) { - float percent = hp / armor.MaxHP; + float percent = armor._hp / armor.MaxHP; for (int i = 0; i < degradationStages.Count; i++) { if (percent <= thresholdPercentage[i]) diff --git a/scripts/entities/Entity.cs b/scripts/entities/Entity.cs index 1fd8cd2..4690c82 100644 --- a/scripts/entities/Entity.cs +++ b/scripts/entities/Entity.cs @@ -15,20 +15,32 @@ public partial class Entity : Node2D public virtual void TakeDamage(float amount, Node origin) { - HP -= amount; - EmitSignal(SignalName.OnHPChanged, -amount, origin); EmitSignal(SignalName.OnDamaged); - if (HP <= 0) + if (HP - amount <= 0) { + EmitSignal(SignalName.OnHPChanged, -HP, origin); + HP = 0; KillByDamage(); } + else + { + HP -= amount; + EmitSignal(SignalName.OnHPChanged, -amount, origin); + } } public virtual void Heal(float amount, Node origin) { - EmitSignal(SignalName.OnHPChanged, amount, origin); - HP += amount; - if (HP > MaxHP) HP = MaxHP; + if (HP + amount > MaxHP) + { + EmitSignal(SignalName.OnHPChanged, MaxHP - HP, origin); + HP = MaxHP; + } + else + { + HP += amount; + EmitSignal(SignalName.OnHPChanged, amount, origin); + } } public virtual void KillByDamage() diff --git a/scripts/entities/EntityHPObserver.cs b/scripts/entities/EntityHPObserver.cs index 4914dc5..9bc8418 100644 --- a/scripts/entities/EntityHPObserver.cs +++ b/scripts/entities/EntityHPObserver.cs @@ -16,13 +16,13 @@ public partial class EntityHPObserver : Node private void OnHPChanged(float delta, Node origin) { - if (_setGreater == false && _observedEntity.HP / _observedEntity.MaxHP < _threshold) + if (_setGreater == false && _observedEntity.HP / _observedEntity.MaxHP <= _threshold) { EmitSignal(SignalName.ThresholdReached); _observedEntity.OnHPChanged -= OnHPChanged; QueueFree(); } - else if (_setGreater && _observedEntity.HP / _observedEntity.MaxHP > _threshold) + else if (_setGreater && _observedEntity.HP / _observedEntity.MaxHP >= _threshold) { EmitSignal(SignalName.ThresholdReached); _observedEntity.OnHPChanged -= OnHPChanged; diff --git a/scripts/entities/zombies/RuntimeZombieData.cs b/scripts/entities/zombies/RuntimeZombieData.cs index fa5f97d..8466708 100644 --- a/scripts/entities/zombies/RuntimeZombieData.cs +++ b/scripts/entities/zombies/RuntimeZombieData.cs @@ -35,18 +35,24 @@ public partial class RuntimeZombieData : Entity } public override void TakeDamage(float amount, Node origin) { + var damage = amount; if (_armor != null) { - HP -= _armor.RecieveDamage(amount); + damage = _armor.RecieveDamage(amount); + } + + EmitSignal(SignalName.OnDamaged); + if (HP - damage <= 0) + { + var delta = -HP; + HP = 0; + EmitSignal(SignalName.OnHPChanged, delta, origin); + KillByDamage(); } else - HP -= amount; - EmitSignal(SignalName.OnHPChanged, -amount, origin); - EmitSignal(SignalName.OnDamaged); - - if (HP <= 0) { - KillByDamage(); + HP -= damage; + EmitSignal(SignalName.OnHPChanged, -damage, origin); } } public void HPChangedMixedInvokerSource(float delta, Node source) diff --git a/scripts/gui/menu_buttons.gd b/scripts/gui/menu_buttons.gd index c7ea205..7db0f5e 100644 --- a/scripts/gui/menu_buttons.gd +++ b/scripts/gui/menu_buttons.gd @@ -2,7 +2,7 @@ extends Node func _on_play_button_pressed() -> void: - LevelController.call("StartLevel",preload("uid://dd3yegl1xo44m"),preload("uid://ctbue7dex4umy")) + LevelController.call("StartLevel",preload("uid://dd3yegl1xo44m"),preload("uid://ds2js2vylygvy")) $ChannelPlayer.call("Play") diff --git a/scripts/gui/seedpackets/HotbarHandler.cs b/scripts/gui/seedpackets/HotbarHandler.cs index 7a20f12..ad8ae86 100644 --- a/scripts/gui/seedpackets/HotbarHandler.cs +++ b/scripts/gui/seedpackets/HotbarHandler.cs @@ -1,3 +1,4 @@ +using Godot; using Newlon.Components.Level; namespace Newlon.Components.GUI.Seedpackets; @@ -16,7 +17,7 @@ public class HotbarHandler : SeedpacketHandler, ISeedpacketPress, ISeedpacketPro public void Process() { - _owner.disablePacket = RuntimeLevelData.Instance.SunCount < _owner.GetResource().Cost; + _owner.disablePacket = RuntimeLevelData.Instance.SunCount < _owner.GetResource().Cost || RuntimeLevelData.Instance.GetLevelState() != RuntimeLevelData.LevelStates.Game; } public void OnUnfocused() { diff --git a/scripts/level/LevelRunner.cs b/scripts/level/LevelRunner.cs index f049e69..93f23f6 100644 --- a/scripts/level/LevelRunner.cs +++ b/scripts/level/LevelRunner.cs @@ -22,6 +22,7 @@ public partial class LevelRunner : Node [Signal] public delegate void HugeWaveInitiatedEventHandler(int waveNumber); [Signal] public delegate void FinalWaveInitiatedEventHandler(); + public override void _Ready() { waveTimer.Timeout += SummonWave; @@ -51,6 +52,7 @@ public partial class LevelRunner : Node private void SummonWave() { waveIndex += 1; + hugeWaveApproaching = false; EmitSignal(SignalName.WaveChanged, waveIndex); if (resource.waves[waveIndex].isHugeWave) EmitSignal(SignalName.HugeWaveInitiated, waveIndex); @@ -69,9 +71,10 @@ public partial class LevelRunner : Node } private void OnHPChanged(float delta) { - if (waveIndex == resource.waves.Count - 1) return; - waveHealth += delta; + + + if (waveIndex == resource.waves.Count - 1) return; if (waveHealth / waveHealthMax <= resource.wavePercentage) { if (resource.waves[waveIndex + 1].isHugeWave && waveTimer.TimeLeft > 6) @@ -107,5 +110,18 @@ public partial class LevelRunner : Node waveHealthMax += zombie.GetMaxHPMixed(); waveHealth = waveHealthMax; zombie.HPChangedMixed += OnHPChanged; + + + + if (waveIndex == resource.waves.Count - 1) + { + zombie.HasBeenKilled += (who) => + { + if (waveHealth <= 0) + { + RuntimeLevelData.Instance.SetLevelState(RuntimeLevelData.LevelStates.Win); + } + }; + } } } diff --git a/scripts/level/LoseCheckbox.cs b/scripts/level/LoseCheckbox.cs index 9fd851f..80a861c 100644 --- a/scripts/level/LoseCheckbox.cs +++ b/scripts/level/LoseCheckbox.cs @@ -18,6 +18,7 @@ public partial class LoseCheckbox : Area2D if (parent != null && parent is RuntimeZombieData zombieData) { if (zombieData.HP <= 0) return; + RuntimeLevelData.Instance.SetLevelState(RuntimeLevelData.LevelStates.Loose); Engine.TimeScale = 1.0; fadeAnimation.Play("fade"); GetTree().Paused = true;