Atrocities

This commit is contained in:
Rendo 2025-06-14 21:20:28 +05:00
commit 9680b21792
90 changed files with 324 additions and 69 deletions

View file

@ -1,8 +1,6 @@
<Project Sdk="Godot.NET.Sdk/4.3.0">
<Project Sdk="Godot.NET.Sdk/4.4.1">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework Condition=" '$(GodotTargetPlatform)' == 'android' ">net7.0</TargetFramework>
<TargetFramework Condition=" '$(GodotTargetPlatform)' == 'ios' ">net8.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
</Project>

8
NewLON.csproj.old Normal file
View file

@ -0,0 +1,8 @@
<Project Sdk="Godot.NET.Sdk/4.3.0">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework Condition=" '$(GodotTargetPlatform)' == 'android' ">net7.0</TargetFramework>
<TargetFramework Condition=" '$(GodotTargetPlatform)' == 'ios' ">net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
</Project>

View file

@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://djgyc7bbwcepp"
path="res://.godot/imported/Александр Зацепин - Увертюра.mp3-e30e81f3fa7e701b0522b5858d773a6d.mp3str"
[deps]
source_file="res://assets/audio/music/Александр Зацепин - Увертюра.mp3"
dest_files=["res://.godot/imported/Александр Зацепин - Увертюра.mp3-e30e81f3fa7e701b0522b5858d773a6d.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View file

@ -23,6 +23,7 @@ allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=1
keep_rounding_remainders=true
oversampling=0.0
Fallbacks=null
fallbacks=[]

View file

@ -0,0 +1 @@
uid://d0eo5uuj222c4

View file

@ -0,0 +1 @@
uid://mt7vheq5modk

View file

@ -0,0 +1 @@
uid://dcp5tqcec2oi3

View file

@ -0,0 +1 @@
uid://bk8uy5se3fo0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d2c1erdy0xhkc"
path="res://.godot/imported/buttons.png-3aeb713c6d839208d95029b5a2b993c9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sprites/atlases/buttons.png"
dest_files=["res://.godot/imported/buttons.png-3aeb713c6d839208d95029b5a2b993c9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b0tb2hjum40aw"
path="res://.godot/imported/summertime_saga.png-a514e890c4a5a9aa20ec33143673fe69.ctex"
path="res://.godot/imported/background_summer.png-700d604c57ef18a3dd284f06667ad7ba.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/sprites/summertime_saga.png"
dest_files=["res://.godot/imported/summertime_saga.png-a514e890c4a5a9aa20ec33143673fe69.ctex"]
source_file="res://assets/sprites/background_summer.png"
dest_files=["res://.godot/imported/background_summer.png-700d604c57ef18a3dd284f06667ad7ba.ctex"]
[params]

View file

@ -0,0 +1,7 @@
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://ce04l60l6mhfk"]
[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_h38vp"]
[resource]
atlas = ExtResource("1_h38vp")
region = Rect2(356, 16, 40, 41)

View file

@ -8,7 +8,7 @@
- Промёрзшая почва не даёт обычным расениям вцепится корнями, заставляя их скользить по поверхности. Зомби могут это использовать в свою пользу.
- Вместо защиты отыгрывается нападение. Игроку требуется уничтожить все ледовые экстракторы. Игроки всё ещё могут потерять мозги.
- Игрок находится на передвижной базе. (Не влияет на геймплей)
- Снегопад
- Растения может засыпать снегом.
## Растения

View file

@ -1 +1,2 @@
- level scripting
- level scripting
- !NEVER REMOVE! Documentate

View file

@ -12,7 +12,7 @@ config_version=5
config/name="Liberation of the Neighbourville"
run/main_scene="res://scenes/debug_lvl.tscn"
config/features=PackedStringArray("4.3", "C#", "Forward Plus")
config/features=PackedStringArray("4.4", "C#", "Forward Plus")
config/icon="res://icon.png"
config/windows_native_icon="res://icon.ico"

View file

@ -0,0 +1,3 @@
[gd_scene format=3 uid="uid://bu5ryqtgqwjp6"]
[node name="DebugLocation" type="Node2D"]

View file

@ -1,14 +1,14 @@
[gd_scene load_steps=10 format=3 uid="uid://crxsvv7drckpw"]
[ext_resource type="Script" path="res://scripts/components/level/RuntimeLevelData.cs" id="1_i3bf5"]
[ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/summertime_saga.png" id="2_vmxhy"]
[ext_resource type="PackedScene" uid="uid://cg8713v6c5w15" path="res://scenes/pools.tscn" id="3_jv7x4"]
[ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="2_vmxhy"]
[ext_resource type="PackedScene" uid="uid://cg8713v6c5w15" path="res://scenes/level components/pools.tscn" id="3_jv7x4"]
[ext_resource type="PackedScene" uid="uid://dpxxjfd5lv5sv" path="res://scenes/gui/choose_your_seeds.tscn" id="5_5e78h"]
[ext_resource type="PackedScene" uid="uid://devn21c7luf45" path="res://scenes/level components/field_controller.tscn" id="5_lwpg6"]
[ext_resource type="PackedScene" uid="uid://cfnmspei3k4p7" path="res://scenes/gui/runtime_gui.tscn" id="6_0baou"]
[ext_resource type="PackedScene" uid="uid://bpekho7leatr5" path="res://scenes/sun.tscn" id="6_ay12k"]
[ext_resource type="Script" path="res://scripts/components/level/SunSpawner.cs" id="6_lkguy"]
[ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="9_vwrdf"]
[ext_resource type="PackedScene" uid="uid://xu4i6tmkv00a" path="res://scenes/entities/Zombies/bucket_zombie.tscn" id="9_u7o5c"]
[node name="debug_lvl" type="Node2D"]
@ -49,44 +49,7 @@ SunScene = ExtResource("6_ay12k")
wait_time = 5.0
autostart = true
[node name="Zombie" parent="." instance=ExtResource("9_vwrdf")]
position = Vector2(806, 134)
_line = 3
[node name="Zombie2" parent="." instance=ExtResource("9_vwrdf")]
position = Vector2(824, 134)
_line = 3
[node name="Zombie3" parent="." instance=ExtResource("9_vwrdf")]
position = Vector2(779, 134)
_line = 3
[node name="Zombie4" parent="." instance=ExtResource("9_vwrdf")]
position = Vector2(848, 134)
_line = 3
[node name="Zombie5" parent="." instance=ExtResource("9_vwrdf")]
position = Vector2(801, 376)
_line = 5
[node name="Zombie6" parent="." instance=ExtResource("9_vwrdf")]
position = Vector2(819, 376)
_line = 5
[node name="Zombie7" parent="." instance=ExtResource("9_vwrdf")]
position = Vector2(774, 376)
_line = 5
[node name="Zombie8" parent="." instance=ExtResource("9_vwrdf")]
position = Vector2(843, 376)
_line = 5
[node name="BucketZombie" parent="." instance=ExtResource("9_u7o5c")]
position = Vector2(729, 257)
[connection signal="timeout" from="SunSpawner/Timer" to="SunSpawner" method="Spawn"]
[connection signal="OnHPChanged" from="Zombie" to="Zombie/AudioStreamPlayer2D" method="OnHPChanged"]
[connection signal="OnHPChanged" from="Zombie2" to="Zombie2/AudioStreamPlayer2D" method="OnHPChanged"]
[connection signal="OnHPChanged" from="Zombie3" to="Zombie3/AudioStreamPlayer2D" method="OnHPChanged"]
[connection signal="OnHPChanged" from="Zombie4" to="Zombie4/AudioStreamPlayer2D" method="OnHPChanged"]
[connection signal="OnHPChanged" from="Zombie5" to="Zombie5/AudioStreamPlayer2D" method="OnHPChanged"]
[connection signal="OnHPChanged" from="Zombie6" to="Zombie6/AudioStreamPlayer2D" method="OnHPChanged"]
[connection signal="OnHPChanged" from="Zombie7" to="Zombie7/AudioStreamPlayer2D" method="OnHPChanged"]
[connection signal="OnHPChanged" from="Zombie8" to="Zombie8/AudioStreamPlayer2D" method="OnHPChanged"]

View file

@ -0,0 +1,22 @@
[gd_scene load_steps=5 format=3 uid="uid://xu4i6tmkv00a"]
[ext_resource type="PackedScene" uid="uid://hhjbqkjqpt7x" path="res://scenes/entities/Zombies/cone_zombie.tscn" id="1_mwqpo"]
[ext_resource type="Shader" path="res://assets/shaders/CG_color_blender.gdshader" id="2_3mrqj"]
[ext_resource type="Texture2D" uid="uid://ce04l60l6mhfk" path="res://assets/sprites/bucket.tres" id="3_0nlp0"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_wdi07"]
resource_local_to_scene = true
shader = ExtResource("2_3mrqj")
shader_parameter/blend_color = Color(1, 1, 1, 1)
shader_parameter/amount = null
[node name="BucketZombie" instance=ExtResource("1_mwqpo")]
[node name="CanvasGroup" parent="." index="0"]
material = SubResource("ShaderMaterial_wdi07")
[node name="Hat" parent="CanvasGroup" index="1"]
texture = ExtResource("3_0nlp0")
[node name="Armor" parent="." index="8"]
_maxHP = 180

View file

@ -0,0 +1,28 @@
[gd_scene load_steps=6 format=3 uid="uid://hhjbqkjqpt7x"]
[ext_resource type="PackedScene" uid="uid://co11v3w8hbwgf" path="res://scenes/entities/Zombies/zombie.tscn" id="1_3dq4c"]
[ext_resource type="Shader" path="res://assets/shaders/CG_color_blender.gdshader" id="2_2dq8e"]
[ext_resource type="Script" path="res://scripts/components/Armor.cs" id="3_5s7in"]
[ext_resource type="Texture2D" uid="uid://ceqvdmude7cgg" path="res://assets/sprites/cone.tres" id="4_qdhik"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sat5k"]
resource_local_to_scene = true
shader = ExtResource("2_2dq8e")
shader_parameter/blend_color = Color(1, 1, 1, 1)
shader_parameter/amount = null
[node name="ConeZombie" node_paths=PackedStringArray("_armor") instance=ExtResource("1_3dq4c")]
_armor = NodePath("Armor")
[node name="CanvasGroup" parent="." index="0"]
material = SubResource("ShaderMaterial_sat5k")
[node name="Hat" type="Sprite2D" parent="CanvasGroup" index="1"]
position = Vector2(-6, -88)
texture = ExtResource("4_qdhik")
[node name="Armor" type="Node" parent="." index="8"]
script = ExtResource("3_5s7in")
_maxHP = 60
[connection signal="ArmorLost" from="Armor" to="CanvasGroup/Hat" method="queue_free"]

View file

@ -3,9 +3,9 @@
[ext_resource type="Theme" uid="uid://e8n88g31w7x7" path="res://resources/themes/ChooseYourSeeds.tres" id="1_bfo8i"]
[ext_resource type="Texture2D" uid="uid://dr8a0rx42o3qy" path="res://assets/sprites/gui/ChooseYourSeeds/PlantFrame.tres" id="2_so2bw"]
[ext_resource type="Texture2D" uid="uid://dycdvvgmgmfu6" path="res://assets/sprites/gui/ChooseYourSeeds/FrameField.tres" id="3_rn5vx"]
[ext_resource type="Script" path="res://scripts/components/gui/choose_your_seeds/GridLoader.cs" id="4_i7sou"]
[ext_resource type="Script" uid="uid://eq3ecja30mlj" path="res://scripts/components/gui/choose_your_seeds/GridLoader.cs" id="4_i7sou"]
[ext_resource type="PackedScene" uid="uid://10b1egek6upx" path="res://scenes/gui/level_run_button.tscn" id="5_n80ic"]
[ext_resource type="Script" path="res://scripts/components/gui/choose_your_seeds/LevelRunButton.cs" id="7_k6b6g"]
[ext_resource type="Script" uid="uid://d26waisd3v488" path="res://scripts/components/gui/choose_your_seeds/LevelRunButton.cs" id="7_k6b6g"]
[sub_resource type="Animation" id="Animation_0rps3"]
resource_name = "Hide"
@ -91,9 +91,9 @@ tracks/1/keys = {
[sub_resource type="AnimationLibrary" id="AnimationLibrary_tguwa"]
_data = {
"Hide": SubResource("Animation_0rps3"),
"RESET": SubResource("Animation_8he0w"),
"Show": SubResource("Animation_omiwq")
&"Hide": SubResource("Animation_0rps3"),
&"RESET": SubResource("Animation_8he0w"),
&"Show": SubResource("Animation_omiwq")
}
[sub_resource type="ViewportTexture" id="ViewportTexture_rmoaa"]
@ -113,7 +113,7 @@ theme = ExtResource("1_bfo8i")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
root_node = NodePath("../Panel/LevelRunButton")
libraries = {
"": SubResource("AnimationLibrary_tguwa")
&"": SubResource("AnimationLibrary_tguwa")
}
autoplay = "Show"

View file

@ -2,7 +2,7 @@
[ext_resource type="Script" path="res://scripts/components/level/PoolContainer.cs" id="1_31ggc"]
[node name="Pools" type="Node" node_paths=PackedStringArray("Zombies", "Plants", "Projectiles", "Structures")]
[node name="Pools" type="Node2D" node_paths=PackedStringArray("Zombies", "Plants", "Projectiles", "Structures")]
script = ExtResource("1_31ggc")
Zombies = NodePath("Zombies")
Plants = NodePath("Plants")

8
scenes/level_button.tscn Normal file
View file

@ -0,0 +1,8 @@
[gd_scene load_steps=2 format=3 uid="uid://dylfqmo3d26ce"]
[ext_resource type="Script" path="res://scripts/LevelButton.cs" id="1_qey5e"]
[node name="LevelButton" type="TextureRect"]
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("1_qey5e")

9
scenes/summer.tscn Normal file
View file

@ -0,0 +1,9 @@
[gd_scene load_steps=3 format=3 uid="uid://ccrr8drx0a7gy"]
[ext_resource type="PackedScene" uid="uid://dd3yegl1xo44m" path="res://scenes/templates/level_template.tscn" id="1_53h7t"]
[ext_resource type="Texture2D" uid="uid://b0tb2hjum40aw" path="res://assets/sprites/background_summer.png" id="2_8hj2g"]
[node name="Summer" instance=ExtResource("1_53h7t")]
[node name="Sprite2D" type="Sprite2D" parent="." index="1"]
texture = ExtResource("2_8hj2g")

View file

@ -1,3 +1,31 @@
[gd_scene format=3 uid="uid://dd3yegl1xo44m"]
[gd_scene load_steps=6 format=3 uid="uid://dd3yegl1xo44m"]
[ext_resource type="Script" path="res://scripts/components/level/RuntimeLevelData.cs" id="1_31ltw"]
[ext_resource type="PackedScene" uid="uid://devn21c7luf45" path="res://scenes/level components/field_controller.tscn" id="2_w4oj7"]
[ext_resource type="PackedScene" uid="uid://cg8713v6c5w15" path="res://scenes/level components/pools.tscn" id="3_r1g7l"]
[ext_resource type="PackedScene" uid="uid://dpxxjfd5lv5sv" path="res://scenes/gui/choose_your_seeds.tscn" id="3_xy2c6"]
[ext_resource type="PackedScene" uid="uid://cfnmspei3k4p7" path="res://scenes/gui/runtime_gui.tscn" id="4_okro4"]
[node name="level_template" type="Node2D"]
[node name="Camera2D" type="Camera2D" parent="."]
[node name="RuntimeLevelData" type="Node" parent="."]
script = ExtResource("1_31ltw")
[node name="Pools" parent="." instance=ExtResource("3_r1g7l")]
[node name="GameUserInterface" type="CanvasLayer" parent="."]
layer = 10
[node name="ChooseYourSeeds" parent="GameUserInterface" instance=ExtResource("3_xy2c6")]
metadata/_edit_lock_ = true
[node name="RuntimeGUI" parent="GameUserInterface" instance=ExtResource("4_okro4")]
[node name="OverlayGameobjects" type="CanvasLayer" parent="."]
layer = 6
[node name="FieldController" parent="OverlayGameobjects" instance=ExtResource("2_w4oj7")]
[node name="MainAnimationPlayer" type="AnimationPlayer" parent="."]

1
scripts/Cursor.cs.uid Normal file
View file

@ -0,0 +1 @@
uid://c6ucy48qwaxuc

View file

@ -7,7 +7,7 @@ namespace Newlon;
// Button that contains level to load
//
public partial class LevelButton : Node
public partial class LevelButton : TextureButton
{
[Export] private Script _levelScript;
[Export] private PackedScene _levelTileset;

View file

@ -0,0 +1 @@
uid://cn3q18jh2rej7

View file

@ -0,0 +1 @@
uid://v8gsvdqhbtml

1
scripts/Sun.cs.uid Normal file
View file

@ -0,0 +1 @@
uid://qgeovvluk8yj

1
scripts/Utility.cs.uid Normal file
View file

@ -0,0 +1 @@
uid://ccaap8m63b62t

View file

@ -0,0 +1,54 @@
using Godot;
namespace Newlon.Components;
[GlobalClass]
public partial class Armor : Node
{
[Signal]
public delegate void ArmorDamagedEventHandler(int hp);
[Signal]
public delegate void ArmorLostEventHandler();
[Export]
private int _maxHP;
private int _hp;
private bool _lost = false;
public override void _Ready()
{
_hp = _maxHP;
}
public int RecieveDamage(int damage)
{
if(_lost)
return damage;
int returnAmount = 0;
_hp -= damage;
if(_hp <= 0)
{
returnAmount = _hp;
_hp = 0;
EmitSignal(SignalName.ArmorLost);
_lost = true;
}
EmitSignal(SignalName.ArmorDamaged,_hp);
return returnAmount;
}
public int Heal(int amount)
{
if(_lost)
return amount;
int returnAmount = 0;
_hp += amount;
if (_hp >= _maxHP)
{
returnAmount = _hp-_maxHP;
_hp = _maxHP;
}
EmitSignal(SignalName.ArmorDamaged,_hp);
return returnAmount;
}
}

View file

@ -0,0 +1 @@
uid://fd4im1fmwc5n

View file

@ -0,0 +1 @@
uid://c5vfccegyy01t

View file

@ -0,0 +1 @@
uid://cjdeq452vk2ll

View file

@ -0,0 +1 @@
uid://bxu6ljkmmlgd5

View file

@ -0,0 +1 @@
uid://blbiq5r0w17hf

View file

@ -0,0 +1 @@
uid://cwa1eydeiy3y4

View file

@ -0,0 +1 @@
uid://dxlwvwy3hj56x

View file

@ -0,0 +1 @@
uid://cwn3bd2k7mdq6

View file

@ -0,0 +1 @@
uid://d4dbg0us5ngxy

View file

@ -0,0 +1 @@
uid://dwxohya1exdkh

View file

@ -0,0 +1 @@
uid://ddi84kmmq1qla

View file

@ -0,0 +1 @@
uid://eq3ecja30mlj

View file

@ -0,0 +1 @@
uid://d26waisd3v488

View file

@ -0,0 +1 @@
uid://b3sut12n56w1y

View file

@ -0,0 +1 @@
uid://gvgt14v1hndn

View file

@ -0,0 +1 @@
uid://bnygd8pcmoewp

View file

@ -0,0 +1 @@
uid://o0ly38oqcuwu

View file

@ -0,0 +1 @@
uid://q2r43hym7s82

View file

@ -0,0 +1 @@
uid://mdm8cepvvo4t

View file

@ -0,0 +1 @@
uid://cn6ddajdtf4ep

View file

@ -0,0 +1 @@
uid://cr774updc04fu

View file

@ -25,7 +25,8 @@ public partial class PlantField : Node2D
_slot = slot;
if (plant == null)
{
_plantSetter.GetChild(0).QueueFree();
foreach(var child in _plantSetter.GetChildren())
child.QueueFree();
}
else
{

View file

@ -0,0 +1 @@
uid://bj7rw2f6qu1lg

View file

@ -0,0 +1 @@
uid://bso32xkw738sy

View file

@ -0,0 +1 @@
uid://bndu1h5kgcde8

View file

@ -0,0 +1 @@
uid://cslqjdd5wq4rc

View file

@ -0,0 +1 @@
uid://co7ttejdo2qot

View file

@ -0,0 +1 @@
uid://bhl6o2m3fn4xg

View file

@ -0,0 +1 @@
uid://dn53jvpjyg63l

View file

@ -0,0 +1 @@
uid://hccb0aee0x0o

View file

@ -0,0 +1 @@
uid://b71gebny84s81

View file

@ -0,0 +1 @@
uid://bmtukcq10m8wo

View file

@ -0,0 +1 @@
uid://dli2i6albvugt

View file

@ -0,0 +1 @@
uid://ceprqkraw3v6m

View file

@ -0,0 +1 @@
uid://djpc0kvagpadv

View file

@ -0,0 +1 @@
uid://cljytsmqac0w7

View file

@ -0,0 +1 @@
uid://3dbmgnr7qxee

View file

@ -0,0 +1 @@
uid://btkmd86pn828y

View file

@ -0,0 +1 @@
uid://bdk5iqtw4xbkl

View file

@ -0,0 +1 @@
uid://c7qfh4py0uulo

View file

@ -0,0 +1 @@
uid://dqquodxaijmem

View file

@ -0,0 +1 @@
uid://bth7gah4tn7uj

View file

@ -0,0 +1 @@
uid://bsg4utgc0u0vo

View file

@ -0,0 +1 @@
uid://dqyony6jxt2p0

View file

@ -16,14 +16,13 @@ public partial class RuntimeZombieData : Node2D, IEntity, ILocalTimescale, IEffe
[Export]
private int _maxHP;
[Export]
private int _line;
private Armor _armor;
private float _localTimescale = 1.0f;
public int Hp => _hp;
public int MaxHp => _maxHP;
public int Line => _line;
public int MaxHp => _maxHP;
public bool AbleToEat = true;
@ -54,8 +53,14 @@ public partial class RuntimeZombieData : Node2D, IEntity, ILocalTimescale, IEffe
public void Heal(int amount,Node origin)
{
_hp += amount;
if(_armor != null)
{
_hp += _armor.Heal(amount);
}
else
_hp += amount;
EmitSignal(SignalName.OnHPChanged,amount,origin);
if (MaxHp > 0)
{
@ -65,7 +70,12 @@ public partial class RuntimeZombieData : Node2D, IEntity, ILocalTimescale, IEffe
public void TakeDamage(int amount, Node origin, Utility.DamageTypes damageType = Utility.DamageTypes.PHYSICAL)
{
_hp -= amount;
if(_armor != null)
{
_hp -= _armor.RecieveDamage(amount);
}
else
_hp -= amount;
EmitSignal(SignalName.OnHPChanged,-amount, origin);
if (_hp <= 0)

View file

@ -0,0 +1 @@
uid://dildme6epx8l4

View file

@ -0,0 +1 @@
uid://7hdj2k14lfe4

View file

@ -0,0 +1 @@
uid://cgf61r46dgh4m

View file

@ -0,0 +1 @@
uid://cb8n22kkqa8ig

View file

@ -0,0 +1 @@
uid://d2aq2wjq0gt7x

View file

@ -0,0 +1 @@
uid://cyenlko1knygw

View file

@ -0,0 +1 @@
uid://bcc7skl7ts6sh

View file

@ -47,7 +47,6 @@ public partial class GarlicEffect : Effect
tween.TweenProperty(zombieData,"position:y",zombieData.GlobalPosition.Y + Utility.TileHeight * mult, 1.0);
tween.TweenCallback(Callable.From(() => {zombieData.AbleToEat = true;}));
}
}
public override void Process(Node target)

View file

@ -0,0 +1 @@
uid://bb6lv1djnqjaw

View file

@ -0,0 +1 @@
uid://eeqk3fvjwg31

View file

@ -0,0 +1 @@
uid://dyc7fc5bfkdii