diff --git a/assets/effects/SnowSlow.tres b/assets/effects/SnowSlow.tres index 5a62fd5..cf3daaf 100644 --- a/assets/effects/SnowSlow.tres +++ b/assets/effects/SnowSlow.tres @@ -5,6 +5,6 @@ [resource] script = ExtResource("1_8md01") ColorOverride = Color(0, 1, 1, 1) -Multiplier = 0.75 +Multiplier = 0.5 Duration = 3.25 Slot = "freeze_slow" diff --git a/assets/plants/Aloe.tres b/assets/plants/Aloe.tres index 7805a86..29afa64 100644 --- a/assets/plants/Aloe.tres +++ b/assets/plants/Aloe.tres @@ -6,6 +6,9 @@ [resource] script = ExtResource("1_vw2kg") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "aloe" DescriptionKey = "aloe_desc" Cost = 75.0 @@ -13,5 +16,7 @@ Scene = ExtResource("2_6a4ia") ReloadTime = 15.0 ReloadProgress = 0.0 Preview = ExtResource("1_t4137") -Layer = 1 Order = 6 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) diff --git a/assets/plants/Cucumber.tres b/assets/plants/Cucumber.tres index 0d0ac30..80d4300 100644 --- a/assets/plants/Cucumber.tres +++ b/assets/plants/Cucumber.tres @@ -10,6 +10,9 @@ region = Rect2(2, 1, 41, 65) [resource] script = ExtResource("1_jrx81") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "cucumber" DescriptionKey = "cucumber_desc" Cost = 75.0 @@ -17,6 +20,8 @@ Scene = ExtResource("2_0mr6r") ReloadTime = 5.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_3gogt") -Layer = 1 Order = 8 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) metadata/_custom_type_script = "uid://cyenlko1knygw" diff --git a/assets/plants/Garlic.tres b/assets/plants/Garlic.tres index ca8b342..fc697e4 100644 --- a/assets/plants/Garlic.tres +++ b/assets/plants/Garlic.tres @@ -6,6 +6,9 @@ [resource] script = ExtResource("1_e15gf") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "garlic" DescriptionKey = "garlic_desc" Cost = 50.0 @@ -13,5 +16,7 @@ Scene = ExtResource("2_81n0p") ReloadTime = 7.5 ReloadProgress = 0.67 Preview = ExtResource("1_datic") -Layer = 1 Order = 7 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) diff --git a/assets/plants/Nerdus.tres b/assets/plants/Nerdus.tres index 4af49e2..56ff09c 100644 --- a/assets/plants/Nerdus.tres +++ b/assets/plants/Nerdus.tres @@ -10,6 +10,9 @@ region = Rect2(477, 9, 60, 59) [resource] script = ExtResource("3_30qd0") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "nerdus" DescriptionKey = "nerdus_desc" Cost = 125.0 @@ -17,6 +20,8 @@ Scene = ExtResource("2_0i6qf") ReloadTime = 10.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_ivp5w") -Layer = 1 Order = 11 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) metadata/_custom_type_script = "uid://cyenlko1knygw" diff --git a/assets/plants/Peashooter.tres b/assets/plants/Peashooter.tres index 4cc0bc6..1fde53e 100644 --- a/assets/plants/Peashooter.tres +++ b/assets/plants/Peashooter.tres @@ -6,6 +6,9 @@ [resource] script = ExtResource("1_amvh8") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "peashooter" DescriptionKey = "peashooter_desc" Cost = 75.0 @@ -13,4 +16,7 @@ Scene = ExtResource("1_rqf2x") ReloadTime = 5.0 ReloadProgress = 0.0 Preview = ExtResource("1_rnq6r") -Layer = 1 +Order = 0 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) diff --git a/assets/plants/PotatoMine.tres b/assets/plants/PotatoMine.tres index 0c1f22c..0a87b1a 100644 --- a/assets/plants/PotatoMine.tres +++ b/assets/plants/PotatoMine.tres @@ -6,6 +6,9 @@ [resource] script = ExtResource("1_33j6b") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "potatomine" DescriptionKey = "potatomine_desc" Cost = 25.0 @@ -13,5 +16,7 @@ Scene = ExtResource("2_ig2ti") ReloadTime = 25.0 ReloadProgress = 0.9 Preview = ExtResource("1_xk2pg") -Layer = 1 Order = 3 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) diff --git a/assets/plants/Snowpea.tres b/assets/plants/Snowpea.tres index fb6203b..cc4c8a3 100644 --- a/assets/plants/Snowpea.tres +++ b/assets/plants/Snowpea.tres @@ -6,6 +6,9 @@ [resource] script = ExtResource("1_0cpi0") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "snowpea" DescriptionKey = "snowpea_desc" Cost = 175.0 @@ -13,5 +16,7 @@ Scene = ExtResource("2_k47h0") ReloadTime = 5.0 ReloadProgress = 0.0 Preview = ExtResource("1_7fyy2") -Layer = 1 Order = 5 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) diff --git a/assets/plants/Spikeweed.tres b/assets/plants/Spikeweed.tres index e5953b5..743221b 100644 --- a/assets/plants/Spikeweed.tres +++ b/assets/plants/Spikeweed.tres @@ -6,6 +6,9 @@ [resource] script = ExtResource("1_0bymo") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "spikeweed" DescriptionKey = "spikeweed_desc" Cost = 100.0 @@ -13,5 +16,7 @@ Scene = ExtResource("2_iv8de") ReloadTime = 5.0 ReloadProgress = 0.0 Preview = ExtResource("1_2ol2i") -Layer = 1 Order = 4 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) diff --git a/assets/plants/Sunflower.tres b/assets/plants/Sunflower.tres index 6fdb68c..7a730b4 100644 --- a/assets/plants/Sunflower.tres +++ b/assets/plants/Sunflower.tres @@ -6,6 +6,9 @@ [resource] script = ExtResource("3_vt4jc") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "sunflower" DescriptionKey = "sunflower_desc" Cost = 50.0 @@ -13,5 +16,7 @@ Scene = ExtResource("2_gcyr5") ReloadTime = 5.0 ReloadProgress = 1.0 Preview = ExtResource("1_8rd5i") -Layer = 1 Order = 1 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) diff --git a/assets/plants/Threepeater.tres b/assets/plants/Threepeater.tres index 575c299..30757ad 100644 --- a/assets/plants/Threepeater.tres +++ b/assets/plants/Threepeater.tres @@ -6,6 +6,9 @@ [resource] script = ExtResource("3_3lugi") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "threepeater" DescriptionKey = "threepeater_desc" Cost = 275.0 @@ -13,5 +16,7 @@ Scene = ExtResource("2_uqpu0") ReloadTime = 5.0 ReloadProgress = 0.0 Preview = ExtResource("1_hinp6") -Layer = 1 Order = 10 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) diff --git a/assets/plants/Wallnut.tres b/assets/plants/Wallnut.tres index 9943152..7f38263 100644 --- a/assets/plants/Wallnut.tres +++ b/assets/plants/Wallnut.tres @@ -6,6 +6,9 @@ [resource] script = ExtResource("1_27l0t") +Tags = [] +Layer = 1 +DontRegister = false NameKey = "wallnut" DescriptionKey = "wallnut_desc" Cost = 50.0 @@ -13,5 +16,7 @@ Scene = ExtResource("2_rkn3h") ReloadTime = 20.0 ReloadProgress = 0.0 Preview = ExtResource("1_2akap") -Layer = 1 Order = 2 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) diff --git a/assets/zombies/basic.tres b/assets/zombies/basic.tres index e508dcc..9e03beb 100644 --- a/assets/zombies/basic.tres +++ b/assets/zombies/basic.tres @@ -17,6 +17,8 @@ Scene = ExtResource("1_c2mq3") ReloadTime = 1.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_wu2q8") -Layer = 1 Order = 0 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/assets/zombies/buckethead.tres b/assets/zombies/buckethead.tres index 380c271..a6ade0d 100644 --- a/assets/zombies/buckethead.tres +++ b/assets/zombies/buckethead.tres @@ -17,6 +17,8 @@ Scene = ExtResource("1_lhcag") ReloadTime = 1.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_drksh") -Layer = 1 Order = 2 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/assets/zombies/conehead.tres b/assets/zombies/conehead.tres index eca5d45..4f65a7e 100644 --- a/assets/zombies/conehead.tres +++ b/assets/zombies/conehead.tres @@ -17,6 +17,8 @@ Scene = ExtResource("1_llf5l") ReloadTime = 1.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_q44xp") -Layer = 1 Order = 1 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/assets/zombies/hobo.tres b/assets/zombies/hobo.tres index 5f72aea..ccd2844 100644 --- a/assets/zombies/hobo.tres +++ b/assets/zombies/hobo.tres @@ -17,6 +17,8 @@ Scene = ExtResource("1_4myt6") ReloadTime = 1.0 ReloadProgress = 0.0 Preview = SubResource("AtlasTexture_73ahc") -Layer = 1 Order = 5 +Parameters = Dictionary[String, float]({ +"max_hp": 30.0 +}) metadata/_custom_type_script = "uid://cqxj7o8hdm82n" diff --git a/project.godot b/project.godot index 3aaf06e..673bc2e 100644 --- a/project.godot +++ b/project.godot @@ -127,7 +127,6 @@ cheat_unlock_all={ [internationalization] locale/translations=PackedStringArray("res://translations/plants.en.translation", "res://translations/plants.ru.translation", "res://translations/zombies.en.translation", "res://translations/zombies.ru.translation", "res://translations/gui.en.translation", "res://translations/gui.ru.translation", "res://translations/rewards.en.translation", "res://translations/rewards.ru.translation") -locale/test="en" [layer_names] diff --git a/scenes/entities/Zombies/bucket_zombie.tscn b/scenes/entities/Zombies/bucket_zombie.tscn index e48a05c..d15f225 100644 --- a/scenes/entities/Zombies/bucket_zombie.tscn +++ b/scenes/entities/Zombies/bucket_zombie.tscn @@ -15,6 +15,7 @@ resource_local_to_scene = true shader = ExtResource("2_lea3a") shader_parameter/FLASH_COLOR = Color(1, 0.709804, 0.439216, 0.5) +shader_parameter/HIGHLIGHT_COLOR = Color(1, 0.709804, 0.439216, 0.5) shader_parameter/blend = 0.0 shader_parameter/selected = false @@ -22,6 +23,7 @@ shader_parameter/selected = false resource_local_to_scene = true shader = ExtResource("3_xq7ta") shader_parameter/FLASH_COLOR = Color(1, 0.709804, 0.439216, 0.5) +shader_parameter/HIGHLIGHT_COLOR = Color(1, 0.709804, 0.439216, 0.5) shader_parameter/selected = false shader_parameter/blend = 0.0 @@ -64,43 +66,40 @@ use_parent_material = false [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] use_parent_material = false -scale = Vector2(0.999834, 0.999834) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999833, 0.999833) +scale = Vector2(0.999832, 0.999832) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] -scale = Vector2(0.999832, 0.999832) +scale = Vector2(0.999831, 0.999831) [node name="LeftUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="2"] use_parent_material = false -scale = Vector2(0.999832, 0.999832) - -[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] scale = Vector2(0.999833, 0.999833) +[node name="LeftLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg" index="1"] +scale = Vector2(0.999834, 0.999834) + [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999825, 0.999825) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] use_parent_material = false -scale = Vector2(0.999825, 0.999825) +scale = Vector2(0.999824, 0.999824) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] use_parent_material = false -scale = Vector2(0.999828, 0.999828) - -[node name="RightLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm" index="1"] -scale = Vector2(0.999826, 0.999826) - -[node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" 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.999828, 0.999828) + [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.111661 +rotation = 0.107886 +skew = -0.00020051 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999824, 0.999824) [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] position = Vector2(-16, -8) @@ -111,8 +110,8 @@ 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.90626, 2.76757) -rotation = 0.0199805 +position = Vector2(-3.00133, 2.99776) +rotation = 0.01047 scale = Vector2(0.999827, 0.999827) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] @@ -131,20 +130,20 @@ degradationStages = Array[Texture]([ExtResource("3_0nlp0"), ExtResource("4_xx7fu scale = Vector2(0.999829, 0.999829) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.146066 -scale = Vector2(0.999996, 0.999996) +rotation = 0.101436 +scale = Vector2(0.999999, 0.999999) [node name="Left_Hand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile/Left_Lower_Arm" index="0"] show_behind_parent = false position = Vector2(-0.99983, 12.9978) -rotation = -0.085433 -scale = Vector2(0.999659, 0.999659) +rotation = -0.0447677 +scale = Vector2(0.999657, 0.999657) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999826, 0.999826) +scale = Vector2(0.999829, 0.999829) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999827, 0.999827) [node name="Left_Hand" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm/LeftHand" index="0"] texture = SubResource("AtlasTexture_wfem3") @@ -163,7 +162,7 @@ _damage = SubResource("Resource_lea3a") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_v1iwd") -_speedControlMult = 1.88019 +_speedControlMult = 0.552086 [node name="HitPlayer" parent="." index="5"] playlist = Array[AudioStream]([ExtResource("5_lt6ps"), ExtResource("6_kedip")]) diff --git a/scenes/entities/Zombies/cone_zombie.tscn b/scenes/entities/Zombies/cone_zombie.tscn index 12146f3..ea04334 100644 --- a/scenes/entities/Zombies/cone_zombie.tscn +++ b/scenes/entities/Zombies/cone_zombie.tscn @@ -45,10 +45,10 @@ _armor = NodePath("Armor") material = SubResource("ShaderMaterial_b8kja") [node name="RightUpperLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="1"] -scale = Vector2(0.999834, 0.999834) +scale = Vector2(0.999835, 0.999835) [node name="RightLowerLeg" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg" index="1"] -scale = Vector2(0.999835, 0.999835) +scale = Vector2(0.999836, 0.999836) [node name="RightFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/RightUpperLeg/RightLowerLeg" index="0"] scale = Vector2(0.999835, 0.999835) @@ -60,10 +60,10 @@ scale = Vector2(0.999833, 0.999833) scale = Vector2(0.999832, 0.999832) [node name="LeftFoot" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg" index="1"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.99983, 0.99983) [node name="Body" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt" index="3"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) [node name="RightUpperArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="0"] scale = Vector2(0.999828, 0.999828) @@ -72,30 +72,28 @@ scale = Vector2(0.999828, 0.999828) scale = Vector2(0.999828, 0.999828) [node name="RightHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/RightUpperArm/RightLowerArm" index="0"] -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999827, 0.999827) [node name="Tie" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="2"] -rotation = 0.164533 -skew = -0.000153184 +rotation = 0.126303 +skew = -0.000153303 [node name="Head" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body" index="3"] scale = Vector2(0.999828, 0.999828) [node name="Right_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="0"] position = Vector2(-16, -8) -scale = Vector2(1, 1) [node name="Left_Eye" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="1"] position = Vector2(-4, -9) -scale = Vector2(1, 1) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head" index="2"] -position = Vector2(-3.00202, 2.99657) -rotation = 0.0159674 -scale = Vector2(0.99983, 0.99983) +position = Vector2(-3.00155, 2.99737) +rotation = 0.0122573 +scale = Vector2(0.999829, 0.999829) [node name="Jaw" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head" index="1"] -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) [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) @@ -128,16 +126,16 @@ shape = SubResource("CircleShape2D_67t4t") scale = Vector2(0.999832, 0.999832) [node name="Left_Lower_Arm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/HandProjectile" index="0"] -rotation = 0.154698 +rotation = 0.118753 scale = Vector2(1, 1) [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.068274 +rotation = -0.0524103 scale = Vector2(0.999658, 0.999658) [node name="LeftLowerArm" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm" index="2"] -scale = Vector2(0.999831, 0.999831) +scale = Vector2(0.999832, 0.999832) [node name="LeftHand" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm/LeftLowerArm" index="0"] scale = Vector2(0.999828, 0.999828) @@ -147,7 +145,7 @@ _damage = SubResource("Resource_011r0") [node name="Mover" parent="." index="4"] _speed = SubResource("Resource_b6mal") -_speedControlMult = 1.31979 +_speedControlMult = 0.801687 [node name="HitPlayer" parent="." index="5"] playlist = Array[AudioStream]([ExtResource("7_0amn8"), ExtResource("7_67t4t")]) diff --git a/scenes/entities/Zombies/zombie.tscn b/scenes/entities/Zombies/zombie.tscn index 3956a16..fdb0f60 100644 --- a/scenes/entities/Zombies/zombie.tscn +++ b/scenes/entities/Zombies/zombie.tscn @@ -814,7 +814,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.999837, 0.999837) +scale = Vector2(0.999836, 0.999836) rest = Transform2D(1, 0, 0, 1, -6, 3) editor_settings/show_bone_gizmo = false @@ -826,13 +826,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.99983, 0.99983) +scale = Vector2(0.999835, 0.999835) 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.999834, 0.999834) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -2, 14) auto_calculate_length_and_angle = false length = 12.0 @@ -855,7 +855,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.999834, 0.999834) +scale = Vector2(0.999836, 0.999836) rest = Transform2D(1, 0, 0, 1, 6, 4) editor_settings/show_bone_gizmo = false @@ -867,7 +867,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.99983, 0.99983) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -1, 13) editor_settings/show_bone_gizmo = false @@ -879,7 +879,7 @@ metadata/_edit_lock_ = true [node name="LeftFoot" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/LeftUpperLeg/LeftLowerLeg"] position = Vector2(6, 10) -scale = Vector2(0.999824, 0.999824) +scale = Vector2(0.999828, 0.999828) rest = Transform2D(1, 0, 0, 1, 6, 10) auto_calculate_length_and_angle = false length = 12.0 @@ -895,7 +895,7 @@ metadata/_edit_lock_ = true [node name="Body" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt"] use_parent_material = true position = Vector2(1, -2) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999829, 0.999829) rest = Transform2D(1, 0, 0, 1, 1, -2) editor_settings/show_bone_gizmo = false @@ -903,7 +903,7 @@ editor_settings/show_bone_gizmo = false z_index = -1 use_parent_material = true position = Vector2(-14, -23) -scale = Vector2(0.999829, 0.999829) +scale = Vector2(0.999826, 0.999826) rest = Transform2D(1, 0, 0, 1, -14, -23) editor_settings/show_bone_gizmo = false @@ -915,7 +915,7 @@ 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.999829, 0.999829) +scale = Vector2(0.999831, 0.999831) rest = Transform2D(1, 0, 0, 1, -2, 15) editor_settings/show_bone_gizmo = false @@ -949,8 +949,8 @@ metadata/_edit_lock_ = true [node name="Tie" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body"] position = Vector2(-9, -21) -rotation = 0.12179 -skew = -0.000472784 +rotation = 0.066195 +skew = -0.000473261 rest = Transform2D(1, 0, 0, 1, -9, -21) auto_calculate_length_and_angle = false length = 24.0 @@ -965,7 +965,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.999829, 0.999829) +scale = Vector2(0.999825, 0.999825) rest = Transform2D(1, 0, 0, 1, -10, -25) editor_settings/show_bone_gizmo = false @@ -1001,9 +1001,9 @@ offset = Vector2(-2, -2) metadata/_edit_lock_ = true [node name="Jaw" type="Sprite2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head/HeadParticle/Head"] -position = Vector2(-3.00149, 2.99746) -rotation = 0.0118193 -scale = Vector2(0.999828, 0.999828) +position = Vector2(-3.00081, 2.99862) +rotation = 0.00642401 +scale = Vector2(0.999831, 0.999831) texture = SubResource("AtlasTexture_x5uj2") centered = false offset = Vector2(-12, -2) @@ -1020,7 +1020,7 @@ _observedEntity = NodePath("../../../../../../../..") [node name="Jaw" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/Head"] position = Vector2(-3, 3) -scale = Vector2(0.999828, 0.999828) +scale = Vector2(0.999831, 0.999831) rest = Transform2D(1, 0, 0, 1, -3, 3) auto_calculate_length_and_angle = false length = 11.0 @@ -1054,7 +1054,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.999835, 0.999835) +scale = Vector2(0.999831, 0.999831) rest = Transform2D(1, 0, 0, 1, -1, -20) editor_settings/show_bone_gizmo = false @@ -1076,7 +1076,7 @@ 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.114509 +rotation = 0.0622378 scale = Vector2(1, 1) texture = SubResource("AtlasTexture_auqeq") centered = false @@ -1086,8 +1086,8 @@ 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.0505374 -scale = Vector2(0.99966, 0.99966) +rotation = -0.0274679 +scale = Vector2(0.999663, 0.999663) texture = SubResource("AtlasTexture_vlvtp") centered = false offset = Vector2(-4, -1) @@ -1103,13 +1103,13 @@ _observedEntity = NodePath("../../../../../../../..") [node name="LeftLowerArm" type="Bone2D" parent="CanvasGroup/basic_zombie_walk/Zombie/Butt/Body/LeftUpperArm"] position = Vector2(-2, 14) -scale = Vector2(0.99983, 0.99983) +scale = Vector2(0.999832, 0.999832) 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.999829, 0.999829) +scale = Vector2(0.999833, 0.999833) rest = Transform2D(1, 0, 0, 1, -1, 13) auto_calculate_length_and_angle = false length = 6.0 @@ -1159,7 +1159,6 @@ entity = NodePath("..") [node name="Mover" type="Node" parent="."] script = ExtResource("4_u5syx") _speed = SubResource("Resource_ckb7n") -_speedControlMult = 0.740519 [node name="HitPlayer" type="Node" parent="."] script = ExtResource("12_he8da") diff --git a/scenes/entities/plants/aloe.tscn b/scenes/entities/plants/aloe.tscn index d08607d..b9b8369 100644 --- a/scenes/entities/plants/aloe.tscn +++ b/scenes/entities/plants/aloe.tscn @@ -11,6 +11,7 @@ resource_local_to_scene = true shader = ExtResource("2_dm0tl") shader_parameter/FLASH_COLOR = Color(1, 0.709804, 0.439216, 0.5) +shader_parameter/HIGHLIGHT_COLOR = Color(1, 0.709804, 0.439216, 0.5) shader_parameter/selected = false shader_parameter/blend = 0.0 diff --git a/scenes/entities/plants/cucumber.tscn b/scenes/entities/plants/cucumber.tscn index 0544f4c..6669e8f 100644 --- a/scenes/entities/plants/cucumber.tscn +++ b/scenes/entities/plants/cucumber.tscn @@ -168,17 +168,17 @@ shape = SubResource("RectangleShape2D_n1xkd") [node name="Shooter" type="Marker2D" parent="." index="5" node_paths=PackedStringArray("_timer")] script = ExtResource("4_sckvu") _projectile = ExtResource("5_sckvu") -_timer = NodePath("Timer") +_timer = NodePath("FireTimer") -[node name="Timer" type="Timer" parent="Shooter" index="0" node_paths=PackedStringArray("entity")] -wait_time = 5.0 +[node name="FireTimer" type="Timer" parent="Shooter" index="0" node_paths=PackedStringArray("entity")] +wait_time = 2.5 one_shot = true script = ExtResource("6_xwpd6") entity = NodePath("../..") [node name="Behaviour" type="Node" parent="." index="6" node_paths=PackedStringArray("_shootTimer", "_sight")] script = ExtResource("7_q31qc") -_shootTimer = NodePath("../Shooter/Timer") +_shootTimer = NodePath("../Shooter/FireTimer") _sight = NodePath("../Eysight") [node name="FlashController" parent="." index="7"] diff --git a/scenes/entities/plants/peashooter.tscn b/scenes/entities/plants/peashooter.tscn index 3fed7ab..841fd67 100644 --- a/scenes/entities/plants/peashooter.tscn +++ b/scenes/entities/plants/peashooter.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=24 format=3 uid="uid://dy41q1kxray5t"] +[gd_scene load_steps=26 format=3 uid="uid://dy41q1kxray5t"] [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_pyk3o"] [ext_resource type="Texture2D" uid="uid://cksryh4w5dbbx" path="res://assets/sprites/atlases/plants/peashooter.png" id="2_14qlx"] +[ext_resource type="Shader" uid="uid://cgc7spjkhsx7c" path="res://assets/shaders/generic_flash.gdshader" id="2_fp65y"] [ext_resource type="AnimationLibrary" uid="uid://bv1dl1g4dmbho" path="res://assets/animations/plants/peashooter.res" id="3_8lrhp"] [ext_resource type="Script" uid="uid://ceprqkraw3v6m" path="res://scripts/entities/plants/Shooter.cs" id="3_a4ew1"] [ext_resource type="PackedScene" uid="uid://b2hrv0aqbui7u" path="res://scenes/projectiles/pea.tscn" id="4_saxds"] @@ -12,6 +13,14 @@ [ext_resource type="Script" uid="uid://c36bj8u7jghc7" path="res://scripts/audio/ChannelPlayer.cs" id="9_mbbd7"] [ext_resource type="AudioStream" uid="uid://dsv81mvrdg3w3" path="res://assets/audio/sfx/throw_generic.tres" id="10_q58jr"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_fp65y"] +resource_local_to_scene = true +shader = ExtResource("2_fp65y") +shader_parameter/FLASH_COLOR = Color(0.78, 0.78, 0.78, 0.501961) +shader_parameter/HIGHLIGHT_COLOR = Color(0.69, 0, 0, 0.282353) +shader_parameter/selected = false +shader_parameter/blend = 0.0 + [sub_resource type="Animation" id="Animation_a2y0j"] length = 0.001 tracks/0/type = "value" @@ -77,6 +86,7 @@ internal_id = "peashooter" MaxHP = 30.0 [node name="Sprite2D" parent="." index="0"] +material = SubResource("ShaderMaterial_fp65y") texture = ExtResource("2_14qlx") hframes = 10 vframes = 2 @@ -97,9 +107,9 @@ parameters/Tree/conditions/ready = false position = Vector2(12, -4) script = ExtResource("3_a4ew1") _projectile = ExtResource("4_saxds") -_timer = NodePath("Timer") +_timer = NodePath("FireTimer") -[node name="Timer" type="Timer" parent="Shooter" index="0" node_paths=PackedStringArray("entity")] +[node name="FireTimer" type="Timer" parent="Shooter" index="0" node_paths=PackedStringArray("entity")] wait_time = 1.5 one_shot = true script = ExtResource("6_q58jr") @@ -107,7 +117,7 @@ entity = NodePath("../..") [node name="Behaviour" type="Node" parent="." index="4" node_paths=PackedStringArray("_shootTimer", "_sight")] script = ExtResource("5_7qiua") -_shootTimer = NodePath("../Shooter/Timer") +_shootTimer = NodePath("../Shooter/FireTimer") _sight = NodePath("../Eysight") [node name="Eysight" type="Area2D" parent="." index="5"] @@ -128,3 +138,6 @@ script = ExtResource("9_mbbd7") audioStream = ExtResource("10_q58jr") channel = "pea_shoot" metadata/_custom_type_script = "uid://c36bj8u7jghc7" + +[node name="FlashController" parent="." index="8"] +shaderMaterial = SubResource("ShaderMaterial_fp65y") diff --git a/scenes/entities/plants/potato_mine.tscn b/scenes/entities/plants/potato_mine.tscn index 1ce6bf9..a444609 100644 --- a/scenes/entities/plants/potato_mine.tscn +++ b/scenes/entities/plants/potato_mine.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=27 format=3 uid="uid://b5x35v3w2u8dx"] +[gd_scene load_steps=29 format=3 uid="uid://b5x35v3w2u8dx"] [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_dj7ul"] +[ext_resource type="Shader" uid="uid://cgc7spjkhsx7c" path="res://assets/shaders/generic_flash.gdshader" id="2_lx7n5"] [ext_resource type="Texture2D" uid="uid://c77o6ba0mw7a3" path="res://assets/sprites/atlases/plants/potato_mine.png" id="2_sneas"] [ext_resource type="Script" uid="uid://bhl6o2m3fn4xg" path="res://scripts/entities/plants/ExplosionComponent.cs" id="3_2hd5y"] [ext_resource type="AnimationLibrary" uid="uid://bjlbdvr6f0r7e" path="res://assets/animations/plants/potato_mine.res" id="3_7tqmj"] @@ -11,6 +12,14 @@ [ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="8_824aq"] [ext_resource type="AudioStream" uid="uid://b27om1bw1x04e" path="res://assets/audio/sfx/dirt_rise.mp3" id="9_3vqdc"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_crloj"] +resource_local_to_scene = true +shader = ExtResource("2_lx7n5") +shader_parameter/FLASH_COLOR = Color(0.78, 0.78, 0.78, 0.501961) +shader_parameter/HIGHLIGHT_COLOR = Color(0.69, 0, 0, 0.282353) +shader_parameter/selected = false +shader_parameter/blend = 0.0 + [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_3vqdc"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6uutc"] @@ -82,6 +91,7 @@ internal_id = "potatomine" MaxHP = 20.0 [node name="Sprite2D" parent="." index="0"] +material = SubResource("ShaderMaterial_crloj") texture = ExtResource("2_sneas") hframes = 7 vframes = 4 @@ -153,5 +163,8 @@ audioStream = ExtResource("9_3vqdc") channel = "plant_rise" metadata/_custom_type_script = "uid://c36bj8u7jghc7" +[node name="FlashController" parent="." index="9"] +shaderMaterial = SubResource("ShaderMaterial_crloj") + [connection signal="area_entered" from="Detectionbox" to="Behaviour" method="OnAreaEntered"] [connection signal="timeout" from="PrimeTimer" to="Behaviour" method="Prime"] diff --git a/scenes/entities/plants/snowpea.tscn b/scenes/entities/plants/snowpea.tscn index 3b8c61b..a3031e6 100644 --- a/scenes/entities/plants/snowpea.tscn +++ b/scenes/entities/plants/snowpea.tscn @@ -1,10 +1,19 @@ -[gd_scene load_steps=16 format=3 uid="uid://b7innrovtmf5u"] +[gd_scene load_steps=18 format=3 uid="uid://b7innrovtmf5u"] [ext_resource type="PackedScene" uid="uid://dy41q1kxray5t" path="res://scenes/entities/plants/peashooter.tscn" id="1_lp85e"] [ext_resource type="Texture2D" uid="uid://cu0651pvvkmvm" path="res://assets/sprites/atlases/plants/snow_pea.png" id="2_ytrm0"] +[ext_resource type="Shader" uid="uid://cgc7spjkhsx7c" path="res://assets/shaders/generic_flash.gdshader" id="2_yyg2a"] [ext_resource type="AnimationLibrary" uid="uid://cke5wmmrvevbs" path="res://assets/animations/plants/snowpea.res" id="4_jvx5y"] [ext_resource type="PackedScene" uid="uid://domeukw4ucmyr" path="res://scenes/projectiles/snowpea_projectile.tscn" id="5_bv86m"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_g872w"] +resource_local_to_scene = true +shader = ExtResource("2_yyg2a") +shader_parameter/FLASH_COLOR = Color(0.78, 0.78, 0.78, 0.501961) +shader_parameter/HIGHLIGHT_COLOR = Color(0.69, 0, 0, 0.282353) +shader_parameter/selected = false +shader_parameter/blend = 0.0 + [sub_resource type="Animation" id="Animation_pephc"] length = 0.001 tracks/0/type = "value" @@ -66,6 +75,7 @@ resource_local_to_scene = true internal_id = "snowpea" [node name="Sprite2D" parent="." index="0"] +material = SubResource("ShaderMaterial_g872w") texture = ExtResource("2_ytrm0") [node name="AnimationPlayer" parent="." index="1"] @@ -83,3 +93,6 @@ _projectile = ExtResource("5_bv86m") [node name="CollisionShape2D" parent="Eysight" index="0"] shape = SubResource("SegmentShape2D_3oyhk") + +[node name="FlashController" parent="." index="8"] +shaderMaterial = SubResource("ShaderMaterial_g872w") diff --git a/scenes/entities/plants/sunflower.tscn b/scenes/entities/plants/sunflower.tscn index 650c6be..3fba194 100644 --- a/scenes/entities/plants/sunflower.tscn +++ b/scenes/entities/plants/sunflower.tscn @@ -1,13 +1,22 @@ -[gd_scene load_steps=19 format=3 uid="uid://bg7lomiorxo2c"] +[gd_scene load_steps=21 format=3 uid="uid://bg7lomiorxo2c"] [ext_resource type="PackedScene" uid="uid://b1hjjbdwf1rtc" path="res://scenes/templates/plant_template.tscn" id="1_bikjn"] [ext_resource type="Texture2D" uid="uid://b3tuidu8dag8u" path="res://assets/sprites/atlases/plants/sunflower.png" id="2_fwcda"] +[ext_resource type="Shader" uid="uid://cgc7spjkhsx7c" path="res://assets/shaders/generic_flash.gdshader" id="2_qpvbo"] [ext_resource type="AnimationLibrary" uid="uid://yjytiuj4u7oh" path="res://assets/animations/plants/sunflower.res" id="3_btsik"] [ext_resource type="Script" uid="uid://b71gebny84s81" path="res://scripts/entities/plants/PlantSunSpawner.cs" id="3_te0pl"] [ext_resource type="PackedScene" uid="uid://bpekho7leatr5" path="res://scenes/sun.tscn" id="4_b8hls"] [ext_resource type="Script" uid="uid://bth7gah4tn7uj" path="res://scripts/entities/plants/behaviours/SunflowerBehaviour.cs" id="5_26je0"] [ext_resource type="Script" uid="uid://c4jy0cnbnx33h" path="res://scripts/TimeScalableTimer.cs" id="7_rlkb7"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_mdjfv"] +resource_local_to_scene = true +shader = ExtResource("2_qpvbo") +shader_parameter/FLASH_COLOR = Color(0.78, 0.78, 0.78, 0.501961) +shader_parameter/HIGHLIGHT_COLOR = Color(0.69, 0, 0, 0.282353) +shader_parameter/selected = false +shader_parameter/blend = 0.0 + [sub_resource type="Animation" id="Animation_bfx6v"] length = 0.001 tracks/0/type = "value" @@ -55,7 +64,6 @@ states/sunflower_produce/position = Vector2(624, 99) transitions = ["Start", "sunflower_idle", SubResource("AnimationNodeStateMachineTransition_26fia"), "sunflower_idle", "sunflower_produce", SubResource("AnimationNodeStateMachineTransition_d2akw"), "sunflower_produce", "sunflower_idle", SubResource("AnimationNodeStateMachineTransition_sww40")] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_rlkb7"] -graph_offset = Vector2(-437, 84) nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_811ah") nodes/TimeScale/position = Vector2(100, 140) nodes/Tree/node = SubResource("AnimationNodeStateMachine_enpal") @@ -70,10 +78,11 @@ internal_id = "sunflower" MaxHP = 30.0 [node name="Sprite2D" parent="." index="0"] +material = SubResource("ShaderMaterial_mdjfv") texture = ExtResource("2_fwcda") hframes = 9 vframes = 2 -frame = 1 +frame = 2 [node name="AnimationPlayer" parent="." index="1"] libraries = { @@ -111,6 +120,9 @@ entity = NodePath("../..") position = Vector2(0, 4) shape = SubResource("RectangleShape2D_4xs4g") +[node name="FlashController" parent="." index="6"] +shaderMaterial = SubResource("ShaderMaterial_mdjfv") + [connection signal="timeout" from="Behaviour/Timer" to="Behaviour" method="Timeout"] [connection signal="timeout" from="Behaviour/StartTimer" to="Behaviour" method="Timeout"] [connection signal="timeout" from="Behaviour/StartTimer" to="Behaviour/Timer" method="start"] diff --git a/scenes/projectiles/cucumber_projectile_part.tscn b/scenes/projectiles/cucumber_projectile_part.tscn index 82ef8af..e3e56af 100644 --- a/scenes/projectiles/cucumber_projectile_part.tscn +++ b/scenes/projectiles/cucumber_projectile_part.tscn @@ -12,7 +12,8 @@ radius = 6.0 height = 24.0 [node name="CucumberProjectile" instance=ExtResource("1_iyfw1")] -_damage = 40 +_speed = 5.0 +_damage = 25 [node name="Sprite" parent="." index="0"] rotation = -1.5708 diff --git a/scripts/entities/plants/Shooter.cs b/scripts/entities/plants/Shooter.cs index 92a45a0..6587254 100644 --- a/scripts/entities/plants/Shooter.cs +++ b/scripts/entities/plants/Shooter.cs @@ -6,7 +6,7 @@ namespace Newlon.Components.Plants; // Shoot component of some plants public partial class Shooter : Node2D { - [Export] protected PackedScene _projectile; + [Export] public PackedScene _projectile { get; protected set;} [Export] protected Timer _timer; protected RuntimePlantData _plantData; diff --git a/scripts/entities/zombies/EatBox.cs b/scripts/entities/zombies/EatBox.cs index 592907d..8892037 100644 --- a/scripts/entities/zombies/EatBox.cs +++ b/scripts/entities/zombies/EatBox.cs @@ -12,6 +12,7 @@ public partial class EatBox : Area2D [Export] private AudioStream biteSound = ResourceLoader.Load("uid://dyid55nhflwyn"); private RuntimePlantData plant; + public float Damage => _damage.GetValue(); public bool isEating = false; @@ -19,7 +20,7 @@ public partial class EatBox : Area2D { if (GetParent().AbleToEat) { - plant?.TakeDamage((int)_damage.GetValue(), GetParent()); + plant?.TakeDamage(Damage, GetParent()); AudioSequencer.Play("bite", biteSound); } diff --git a/scripts/entities/zombies/ZombieMover.cs b/scripts/entities/zombies/ZombieMover.cs index dab4031..6693d5f 100644 --- a/scripts/entities/zombies/ZombieMover.cs +++ b/scripts/entities/zombies/ZombieMover.cs @@ -6,6 +6,7 @@ public partial class ZombieMover : Node { [Export] private FloatModifiers _speed; + public float Speed => _speed.GetValue(); [Export] private float _speedControlMult; private Node2D _zombie; @@ -21,7 +22,7 @@ public partial class ZombieMover : Node * (float)delta * FieldParams.TileWidth * GetParent().LocalTimescale - * _speed.GetValue() + * Speed * _speedControlMult; } diff --git a/scripts/gui/choose_your_seeds/Previewport.cs b/scripts/gui/choose_your_seeds/Previewport.cs index 126e791..fe83db1 100644 --- a/scripts/gui/choose_your_seeds/Previewport.cs +++ b/scripts/gui/choose_your_seeds/Previewport.cs @@ -1,6 +1,9 @@ +using System.Collections.Generic; using Godot; using Newlon.Components; using Newlon.Components.GUI.Seedpackets; +using Newlon.Components.Plants; +using Newlon.Systems.Effects; public partial class Previewport : SubViewport { @@ -41,10 +44,98 @@ public partial class Previewport : SubViewport _frameField.Texture = start_Field; current_display = resource.Scene.Instantiate(); title.Text = Tr(resource.NameKey); - description.Text = Tr("rwd_"+resource.NameKey)+"\n"+ Tr(resource.DescriptionKey); AddChild(current_display); if (current_display is Entity entity) entity.DisableBrain(); + + + var unparsedDescription = Tr(resource.DescriptionKey); + var keys = GetRequestedKeys(unparsedDescription); + FillPlaceholders(keys, resource, current_display); + var parsedDescription = ReplaceTextUsingDict(keys, unparsedDescription); + + description.Text = Tr("rwd_" + resource.NameKey) + "\n" + parsedDescription; + } + + private Dictionary GetRequestedKeys(string text) + { + var result = new Dictionary(); + int start = -1; + + for (int i = 0; i < text.Length; i++) + { + if (text[i] == '{') + { + start = i; + } + if (text[i] == '}') + { + if (start == -1) continue; + result.Add(text.Substr(start + 1, i - start - 1), 0); + start = -1; + } + } + + return result; + } + private void FillPlaceholders(Dictionary placeholderDictionary, EntityResource resource, Node searchScene) + { + var searchList = new List() { resource, searchScene }; + while (searchList.Count > 0) + { + var lookedObject = searchList[0]; + searchList.RemoveAt(0); + + if(lookedObject is Node lookedNode) + searchList.AddRange(lookedNode.GetChildren()); + if (lookedObject is Shooter shooter) + { + var projectile = shooter._projectile.Instantiate(); + searchList.Add(projectile); + } + foreach (var property in lookedObject.GetPropertyList()) + { + if ((Variant.Type)property["type"].AsInt32() == Variant.Type.Object) + { + if (lookedObject.Get(property["name"].AsString()).AsGodotObject() is Effect effect) + { + searchList.Add(effect); + } + } + } + + foreach (var key in placeholderDictionary.Keys) + { + var namePropertyPair = key.Split('.'); + Variant property; + if (namePropertyPair.Length == 2) + { + if ((namePropertyPair[0] == "?" && lookedObject != searchScene)||(namePropertyPair[0] != "?" && lookedObject is Node node && node.Name != namePropertyPair[0])) + { + continue; + } + property = lookedObject.Get(namePropertyPair[1]); + } + else + { + property = lookedObject.Get(namePropertyPair[0]); + } + if (property.VariantType == Variant.Type.Nil) + { + continue; + } + placeholderDictionary[key] = property.As(); + } + } + } + private string ReplaceTextUsingDict(Dictionary dictionary, string text) + { + var resStr = text; + foreach (var key in dictionary.Keys) + { + resStr = resStr.Replace('{' + key + '}', dictionary[key].ToString()); + } + return resStr; } } diff --git a/translations/plants.csv b/translations/plants.csv index 0656535..08cb32b 100644 --- a/translations/plants.csv +++ b/translations/plants.csv @@ -3,81 +3,81 @@ aloe,Aloe,Алоэ aloe_desc,"Health points: [color=DARK_RED]6 bites[/color] Reload time: [color=DARK_RED]15 seconds[/color]. Ability recharge time: [color=DARK_RED]20 seconds[/color]. -Heals plant when it has [color=DARK_RED]third[/color] of its health.","Очки здоровья: [color=dark_red]6 укусов[/color]. -Время перезарядки: [color=dark_red]15 секунд[/color]. -Время перезарядки способности: [color=dark_red]20 секунд[/color]. -Лечит растения [color=DARK_RED]с третью[/color] здоровья." +Heals plant when it has [color=DARK_RED]third[/color] of its health.","Очки здоровья: [color=dark_red]{MaxHP}[/color]. +Время перезарядки: [color=dark_red]{ReloadTime} секунд[/color]. +Время перезарядки способности: [color=dark_red]{wait_time} секунд[/color]. +Лечит растения [color=DARK_RED] с {_hpTreshold} долей[/color] здоровья." garlic,Garlic,Чеснок garlic_desc,"Health points: [color=DARK_RED]40 bites[/color] -Reload time: [color=DARK_RED]15 seconds[/color].","Очки здоровья: [color=DARK_RED]40 укусов[/color] -Время перезарядки: [color=DARK_RED]15 секунд[/color]." +Reload time: [color=DARK_RED]15 seconds[/color].","Очки здоровья: [color=DARK_RED]{MaxHP}[/color] +Время перезарядки: [color=DARK_RED]{ReloadTime} секунд[/color]." peashooter,Peashooter,Горохострел peashooter_desc,"Health points: [color=DARK_RED]6 bites[/color]. Reload time: [color=DARK_RED]5 seconds[/color]. Pea damage: [color=DARK_RED]1 pea[/color]. -Firerate: [color=DARK_RED]1.5 seconds[/color].","Очки здоровья: [color=DARK_RED]6 укусов[/color]. -Время перезарядки: [color=DARK_RED]5 секунд[/color]. -Урон от гороха: [color=DARK_RED]1 горошина[/color]. -Задержка стрельбы: [color=DARK_RED]1.5 секунды[/color]." +Firerate: [color=DARK_RED]1.5 seconds[/color].","Очки здоровья: [color=DARK_RED]{MaxHP}[/color]. +Время перезарядки: [color=DARK_RED]{ReloadTime} секунд[/color]. +Урон от гороха: [color=DARK_RED]{_damage}[/color]. +Задержка стрельбы: [color=DARK_RED]{FireTimer.wait_time} секунды[/color]." potatomine,Potato mine,Картофельная мина potatomine_desc,"Health points: [color=DARK_RED]4 bites[/color]. Reload time: [color=DARK_RED]25 seconds[/color]. Explosion damage: [color=DARK_RED]600 peas[/color]. -Prime time: [color=DARK_RED]15 seconds[/color].","Очки здоровья: [color=DARK_RED]4 Укуса[/color]. -Время перезарядки: [color=DARK_RED]25 seconds[/color]. -Урон от взрыва: [color=DARK_RED]600 горошин[/color]. -Время роста: [color=DARK_RED]15 секунд[/color]." +Prime time: [color=DARK_RED]15 seconds[/color].","Очки здоровья: [color=DARK_RED]{MaxHP}[/color]. +Время перезарядки: [color=DARK_RED]{ReloadTime} seconds[/color]. +Урон от взрыва: [color=DARK_RED]{damage}[/color]. +Время роста: [color=DARK_RED]{PrimeTimer.wait_time} секунд[/color]." snowpea,Snowpea,Снежный горох snowpea_desc,"Health points: [color=DARK_RED]6 bites[/color]. Reload time: [color=DARK_RED]5 seconds[/color]. Pea damage: [color=DARK_RED]1 pea[/color]. Firerate: [color=DARK_RED]1.5 seconds[/color]. -Slow percentage: [color=STEEL_BLUE]25%[/color].","Очки здоровья: [color=DARK_RED]6 укусов[/color]. -Время перезарядки: [color=DARK_RED]5 секунд[/color]. -Урон от гороха: [color=DARK_RED]1 горошина[/color]. -Задержка стрельбы: [color=DARK_RED]1.5 секунды[/color]. -Процент замедления: [color=STEEL_BLUE]25%[/color]." +Slow percentage: [color=STEEL_BLUE]25%[/color].","Очки здоровья: [color=DARK_RED]{MaxHP}[/color]. +Время перезарядки: [color=DARK_RED]{ReloadTime} секунд[/color]. +Урон от гороха: [color=DARK_RED]{_damage}[/color]. +Задержка стрельбы: [color=DARK_RED]{FireTimer.wait_time} секунды[/color]. +Доля замедления: [color=STEEL_BLUE]{Multiplier}[/color]." spikeweed,Spikeweed,Колючка spikeweed_desc,"Health points: [color=DARK_RED]6 bites[/color]. Reload time: [color=DARK_RED]5 seconds[/color]. -Damage per second: [color=DARK_RED]0.9 peas[/color].","Очки здоровья: [color=DARK_RED]6 укусов[/color]. -Время перезарядки: [color=DARK_RED]5 секунд[/color]. -Урон в секунду: [color=DARK_RED]0.9 горошин[/color]." +Damage per second: [color=DARK_RED]0.9 peas[/color].","Очки здоровья: [color=DARK_RED]{MaxHP}[/color]. +Время перезарядки: [color=DARK_RED]{ReloadTime} секунд[/color]. +Урон в секунду: [color=DARK_RED]{_damage}[/color]." sunflower,Sunflower,Подсолнух sunflower_desc,"Health points: [color=DARK_RED]6 bites[/color] Reload time: [color=DARK_RED]5 seconds[/color]. Initial sun production time: [color=DARK_RED]12 seconds[/color]. -Sun production time: [color=DARK_RED]24 seconds[/color](After first sun produced).","Очки здоровья: [color=DARK_RED]6 укусов[/color] -Время перезарядки: [color=DARK_RED]5 секунд[/color]. -Изначальная задержка выработки солнца: [color=DARK_RED]12 секунд[/color]. -Задержка выработки солнца: [color=DARK_RED]24 секунды[/color](После первого солнца)." +Sun production time: [color=DARK_RED]24 seconds[/color](After first sun produced).","Очки здоровья: [color=DARK_RED]{MaxHP}[/color] +Время перезарядки: [color=DARK_RED]{ReloadTime} секунд[/color]. +Изначальная задержка выработки солнца: [color=DARK_RED]{StartTimer.wait_time} секунд[/color]. +Задержка выработки солнца: [color=DARK_RED]{Timer.wait_time} секунды[/color](После первого солнца)." threepeater,Threepeater,Тристрел threepeater_desc,"Health points: [color=DARK_RED]6 bites[/color]. Reload time: [color=DARK_RED]5 seconds[/color]. Pea damage: [color=DARK_RED]1 pea[/color] ([color=DARK_RED]3 pea[/color] when in close quarters). -Firerate: [color=DARK_RED]1.6 seconds[/color].","Очки здоровья: [color=DARK_RED]6 укусов[/color]. -Время перезарядки: [color=DARK_RED]5 секунд[/color]. -Урон от гороха: [color=DARK_RED]1 горошина[/color] ([color=DARK_RED]3 горошины[/color] вблизи). -Задержка стрельбы: [color=DARK_RED]1.6 секунд[/color]." +Firerate: [color=DARK_RED]1.6 seconds[/color].","Очки здоровья: [color=DARK_RED]{MaxHP}[/color]. +Время перезарядки: [color=DARK_RED]{ReloadTime} секунд[/color]. +Урон от гороха: [color=DARK_RED]{_damage}[/color]. +Задержка стрельбы: [color=DARK_RED]{FireTimer.wait_time} секунд[/color]." wallnut,Wallnut,Стенорех wallnut_desc,"Health points: [color=DARK_RED]120 bites[/color] -Reload time: [color=DARK_RED]20 seconds[/color].","Очки здоровья: [color=DARK_RED]120 укусов[/color] -Время перезарядки: [color=DARK_RED]20 секунд[/color]." +Reload time: [color=DARK_RED]20 seconds[/color].","Очки здоровья: [color=DARK_RED]{MaxHP}[/color] +Время перезарядки: [color=DARK_RED]{ReloadTime} секунд[/color]." nerdus,Pickly cactus,Колкий кактус nerdus_desc,"He is very critical about other’s behaviour. He likes to pay people back in kind. Health points: [color=darkred] 400 bites[/color]. Reload time: [color=darkred] 10 seconds[/color]. Damage conversion: [color=darkred]1 bite = 1.6 peas [/color].","Он очень критичен к поведению других. Ему нравится отплачивать людям добром за добро. -Очки здоровья: [color=darkred] 400 укусов[/color]. -Время перезарядки: [color=darkred] 10 секунд[/color]. -Конвертация урона: [color=darkred]1 укус = 1.6 горошин [/color]." +Очки здоровья: [color=darkred] {MaxHP}[/color]. +Время перезарядки: [color=darkred]{ReloadTime} секунд[/color]. +Конвертация урона: [color=darkred]1 укус = {bitesToPeas} горошин [/color]." cucumber,Cucumber,Огурец cucumber_desc,"He has a little trouble with differentiating left and right, so he doesn't make this choice at all. Health points: [color=darkred] 6 bites[/color]. Reload time: [color=darkred] 5 seconds[/color]. Seed damage: [color=darkred] 4 peas[/color]. Firerate: [color=darkred] 5 seconds[/color].","Он имеет небольшие проблемы с различением левого и правого, поэтому он не думает об этом вовсе. -Очки здоровья: [color=darkred] 6 укусов[/color]. -Время перезарядки: [color=darkred] 5 секунд[/color]. -Урон семечка: [color=darkred] 4 горошин[/color]. -Скорость стрельбы: [color=darkred] 5 секунд[/color]." +Очки здоровья: [color=darkred] {MaxHP}[/color]. +Время перезарядки: [color=darkred]{ReloadTime} секунд[/color]. +Урон семечка: [color=darkred] {_damage}[/color]. +Скорость стрельбы: [color=darkred]{FireTimer.wait_time} секунд[/color]." diff --git a/translations/plants.ru.translation b/translations/plants.ru.translation index dd9c233..9adc0ae 100644 Binary files a/translations/plants.ru.translation and b/translations/plants.ru.translation differ diff --git a/translations/zombies.csv b/translations/zombies.csv index a7e1a25..244f161 100644 --- a/translations/zombies.csv +++ b/translations/zombies.csv @@ -5,10 +5,10 @@ Health points: [color=darkred]7 peas[/color]. Walk speed: [color=darkred]0.2 tiles/second[/color]. Attack speed: [color=darkred]2.67 Hz[/color]. Attack damage: [color=darkred]1 bite[/color]. ","Самый обычный зомби, который есть у Зомбосса. -Очки здоровья: [color=darkred]7 горошин[/color]. -Скорость ходьбы: [color=darkred]0.2 клеток/сек[/color]. +Очки здоровья: [color=darkred]{MaxHP}[/color]. +Скорость ходьбы: [color=darkred]{Speed} клеток/сек[/color]. Скорость атаки: [color=darkred]2.67 Гц[/color]. -Урон от атаки: [color=darkred]1 укус[/color]." +Урон от атаки: [color=darkred]{Damage}[/color]." buckethead,Buckethead,Ведроголовый buckethead_desc,"Wears metal to protect his remaining brains. Equivalent of ~7 zombies. Health points: [color=darkred]7 peas[/color]. @@ -16,11 +16,11 @@ Armour points: [color=darkred]39 peas[/color]. Walk speed: [color=darkred]0.2 tiles/second[/color]. Attack speed: [color=darkred]2.67 Hz[/color]. Attack damage: [color=darkred]1 bite[/color]. ","Носит ведро чтобы защитить остатки мозгов. Равен примерно 7 зомби. -Очки здоровья: [color=darkred]7 горошин[/color]. -Очки брони: [color=darkred]39 горошин[/color]. -Скорость ходьбы: [color=darkred]0.2 клеток/сек[/color]. +Очки здоровья: [color=darkred]{?.MaxHP}[/color]. +Очки брони: [color=darkred]{Armor.MaxHP}[/color]. +Скорость ходьбы: [color=darkred]{Speed} клеток/сек[/color]. Скорость атаки: [color=darkred]2.67 Гц[/color]. -Урон от атаки: [color=darkred]1 укус[/color]." +Урон от атаки: [color=darkred]{Damage}[/color]." conehead,Conehead,Конусоголовый conehead_desc,"Armoured version of basic zombie. Equivalent of ~3 zombies. Health points: [color=darkred]7 peas[/color]. @@ -28,11 +28,11 @@ Armour points: [color=darkred]13 peas[/color]. Walk speed: [color=darkred]0.2 tiles/second[/color]. Attack speed: [color=darkred]2.67 Hz[/color]. Attack damage: [color=darkred]1 bite[/color]. ","Бронированная версия базового зомби. Равен примерно трём зомби. -Очки здоровья: [color=darkred]7 горошин[/color]. -Очки брони: [color=darkred]13 горошин[/color]. -Скорость ходьбы: [color=darkred]0.2 клеток/сек[/color]. +Очки здоровья: [color=darkred]{?.MaxHP}[/color]. +Очки брони: [color=darkred]{Armor.MaxHP}[/color]. +Скорость ходьбы: [color=darkred]{Speed} клеток/сек[/color]. Скорость атаки: [color=darkred]2.67 Гц[/color]. -Урон от атаки: [color=darkred]1 укус[/color]." +Урон от атаки: [color=darkred]{Damage}[/color]." hobo,Trash can zombie,Зомби в мусорке hobo_desc,"Some time in the past he met a great conqueror. Hates to live without his can. Equivalent of ~8 zombies. [color=darkgreen]He is immune to garlic-like effects. [/color] @@ -44,10 +44,10 @@ Attack speed when calm: [color=darkred]1 Hz[/color]. Attack speed when enraged: [color=darkred]8 Hz[/color]. Attack damage: [color=darkred]1 bite[/color]. ","Однажды повстречал великого полководца. Ненавидит жить без своего ведра. Равен примерно 8 зомби. [color=darkgreen]Имеет иммунитет к эффекту чеснока. [/color] -Очки здоровья: [color=darkred]13 горошин[/color]. -Очки брони: [color=darkred]39 горошин[/color]. -Скорость ходьбы: [color=darkred]0.2 клеток/сек[/color]. +Очки здоровья: [color=darkred]{?.MaxHP}[/color]. +Очки брони: [color=darkred]{CanArmor.MaxHP}[/color]. +Скорость ходьбы: [color=darkred]{Speed} клеток/сек[/color]. Скорость бега: [color=darkred]0.6 клеток/сек[/color]. Скорость атаки в покое: [color=darkred]1 Гц[/color]. Скорость атаки в гневе: [color=darkred]8 Гц[/color]. -Урон от атаки: [color=darkred]1 укус[/color]. " +Урон от атаки: [color=darkred]{Damge}[/color]. " diff --git a/translations/zombies.ru.translation b/translations/zombies.ru.translation index 3598bc4..0efed47 100644 Binary files a/translations/zombies.ru.translation and b/translations/zombies.ru.translation differ