/// <summary>
    ///     The entity's health can only be changed by other scripts through this method, which ensures the correct aftereffects
    /// will be applied.
    /// </summary>
    /// <param name="value">    The value to be added to/subtracted from the entity's health </param>
    /// <param name="hitVector">    The direction in which the damage was inflicted in </param>
    /// <param name="damageType">   The damage type or attack type </param>
    /// <returns>   Whether or not it was successful (false when player is invulnerable) </returns>
    public bool Damage(int value, Vector2 hitVector, DamageType damageType)
    {
        if (isInvulnerable)
        {
            return(false);
        }
        switch (damageType)
        {
        case DamageType.EnemyAttack:
            OnKnockback?.Invoke(hitVector);
            goto case DamageType.NormalDamage;

        case DamageType.LevelHazard:
            goto case DamageType.NormalDamage;

        case DamageType.NormalDamage:

            Hp -= value;
            break;

        case DamageType.Heal:
            if (Hp == maxHP)
            {
                return(false);
            }

            Hp += value;
            break;

        default:
            break;
        }
        return(true);
    }
 protected virtual bool TryApplyForce(Vector3 force, int power)
 {
     if (power >= _knockbackThreshold)
     {
         OnKnockback?.Invoke(force, power);
         return(true);
     }
     else if (power >= _stunThreshold)
     {
         OnStun?.Invoke(force, power);
         return(true);
     }
     return(false);
 }
Exemple #3
0
 public void Knockback(float baseKnockback)
 {
     OnKnockback.SafeInvoke();
 }