48 lines
991 B
C#
48 lines
991 B
C#
using Godot;
|
|
|
|
namespace Newlon.Components.Zombies;
|
|
|
|
public partial class RuntimeZombieData : Entity
|
|
{
|
|
[Export]
|
|
private Armor _armor;
|
|
[Export]
|
|
private AudioStream garlicSound;
|
|
[Export]
|
|
private AudioStream freezeSound;
|
|
public bool AbleToEat = true;
|
|
|
|
public override void Heal(float amount, Node origin)
|
|
{
|
|
if (_armor != null)
|
|
{
|
|
HP += _armor.Heal(amount);
|
|
}
|
|
else
|
|
HP += amount;
|
|
EmitSignal(SignalName.OnHPChanged, amount, origin);
|
|
|
|
if (HP > MaxHP)
|
|
{
|
|
HP = MaxHP;
|
|
}
|
|
}
|
|
|
|
public override void TakeDamage(float amount, Node origin)
|
|
{
|
|
if (_armor != null)
|
|
{
|
|
HP -= _armor.RecieveDamage(amount);
|
|
}
|
|
else
|
|
HP -= amount;
|
|
EmitSignal(SignalName.OnHPChanged, -amount, origin);
|
|
EmitSignal(SignalName.OnDamaged);
|
|
|
|
if (HP <= 0)
|
|
{
|
|
KillByDamage();
|
|
}
|
|
}
|
|
|
|
}
|