Win and loose conditions

This commit is contained in:
Rendo 2025-07-20 04:23:22 +05:00
commit b551c7f012
15 changed files with 193 additions and 122 deletions

View file

@ -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<PackedScene>("uid://iwnklc62rni8");
public override void _Ready()
{

View file

@ -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])

View file

@ -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])

View file

@ -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")])

View file

@ -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")

View file

@ -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")

View file

@ -24,16 +24,23 @@ public partial class Armor : Node
{
if(_lost)
return damage;
float returnAmount = 0;
_hp -= damage;
if(_hp <= 0)
float returnAmount = damage - _hp;
if (returnAmount < 0)
returnAmount = 0;
if (_hp - damage <= 0)
{
returnAmount = -_hp;
var delta = _hp;
_hp = 0;
EmitSignal(SignalName.ArmorDamaged, delta);
EmitSignal(SignalName.ArmorLost);
_lost = true;
}
EmitSignal(SignalName.ArmorDamaged,_hp);
else
{
_hp -= damage;
EmitSignal(SignalName.ArmorDamaged, damage);
}
return returnAmount;
}

View file

@ -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])

View file

@ -14,21 +14,33 @@ public partial class Entity : Node2D
[Signal] public delegate void OnDamagedEventHandler();
public virtual void TakeDamage(float amount, Node origin)
{
EmitSignal(SignalName.OnDamaged);
if (HP - amount <= 0)
{
EmitSignal(SignalName.OnHPChanged, -HP, origin);
HP = 0;
KillByDamage();
}
else
{
HP -= amount;
EmitSignal(SignalName.OnHPChanged, -amount, origin);
EmitSignal(SignalName.OnDamaged);
if (HP <= 0)
{
KillByDamage();
}
}
public virtual void Heal(float amount, Node origin)
{
EmitSignal(SignalName.OnHPChanged, amount, origin);
if (HP + amount > MaxHP)
{
EmitSignal(SignalName.OnHPChanged, MaxHP - HP, origin);
HP = MaxHP;
}
else
{
HP += amount;
if (HP > MaxHP) HP = MaxHP;
EmitSignal(SignalName.OnHPChanged, amount, origin);
}
}
public virtual void KillByDamage()

View file

@ -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;

View file

@ -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)

View file

@ -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")

View file

@ -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()
{

View file

@ -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);
}
};
}
}
}

View file

@ -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;