예제 #1
0
    public void ModifyHealth(DamageValue damageData)
    {
        float damageDealt = damageData.DamageDealt(this).value;

        if (damageDealt < 0)
        {
            PlaySound(unitClass.damageTakenSound[Player.faction]);
        }

        Health = Mathf.Clamp(
            Health + damageDealt,
            0,
            unitClass.BaseHealth
            );
        StartCoroutine(AnimateHealthChange(damageDealt, damageData));

        if (Health == 0)
        {
            Kill();
        }
        if (Player != null)
        {
            Player.NotifyHealthChange();
        }
    }
예제 #2
0
    public void SetValue(DamageValue damage, Unit unit)
    {
        DealtDamage damageDealt = damage.DamageDealt(unit, false);

        baseDamageText.gameObject.SetActive(false);
        extraDamageText.gameObject.SetActive(false);

        if (
            damageDealt.resistanceEffect == DamageResistanceEffect.CancelDamage ||
            damageDealt.resistanceEffect == DamageResistanceEffect.SetDamageToFixedAmount
            )
        {
            ShowBaseDamage(damageDealt.value);
        }
        else
        {
            ShowBaseDamage(damage.baseFlatDmg);
            ShowExtraDamage(damage.extraFlatDamage);
        }
    }