Example #1
0
    private static void DoDamage(PlayerCharacter attacker, NPC receiver, SerializableObjects.PlayerAbility attack)
    {
        if (receiver.dead)
        {
            return;
        }

        bool  crit;
        float damage;

        CalcDamage(receiver.defence, attacker, attack, out crit, out damage);

        receiver.TakeDamage(attacker, damage, crit);
    }
Example #2
0
    public static void CalcDamage(float defence, PlayerCharacter attacker, SerializableObjects.PlayerAbility ability, out bool crit, out float damage)
    {
        crit   = false;
        damage = 0f;
        float randValue = UnityEngine.Random.value;

        float randomPercentage = Random.Range(0.9f, 1.1f);

        if (randValue < attacker.crit_chance / 100)
        {
            crit   = true;
            damage = (int)(attacker.attack * (100 / (100 + defence)) * ability.multiplier * 2 * randomPercentage);
        }
        else
        {
            damage = (int)(attacker.attack * (100 / (100 + defence)) * ability.multiplier * randomPercentage);
        }
    }