Esempio n. 1
0
    /// <summary>
    /// Воздействует на персонажа <paramref name="target"/>.
    /// </summary>
    /// <param name="user">Персонаж, использующий способность.</param>
    /// <param name="target">Персонаж, являющийся целью данной способности.</param>
    public void AffectUnit(Unit user, Unit target)
    {
        CurrentCooldown = cooldown;

        if (abilityType.HasFlag(AbilityType.Heal))
        {
            target.ApplyHeal(abilityInfo.heal);
        }
        if (abilityType.HasFlag(AbilityType.MeleeDamage) || abilityType.HasFlag(AbilityType.RangeDamage))
        {
            if (UnityEngine.Random.value > (user.CurrentInfo.hitCoeff - (1 - applicationChance)))
            {
                return;
            }

            target.ApplyDamage(Mathf.FloorToInt(abilityInfo.damage * user.CurrentInfo.damageCoeff));
            user.RestoreEnergy(Mathf.FloorToInt(abilityInfo.damage / 3f));
        }

        if (abilityType.HasFlag(AbilityType.Effect))
        {
            target.ApplyEffects(effects);
        }

        if (abilityInfo.energy > 0)
        {
            target.RestoreEnergy(abilityInfo.energy);
        }
    }