Exemplo n.º 1
0
    public void TakeDamage(CharacterStats denfencer)
    {
        int damage = Mathf.Max(CurrentDamage() - denfencer.CurrentDefence, 0);

        denfencer.CurrentHealth = Mathf.Max(denfencer.CurrentHealth - damage, 0);

        if (isCritical)
        {
            denfencer.GetComponent <Animator>().SetTrigger("Hit");
        }

        if (denfencer.CurrentHealth <= 0)
        {
            characterData.UpdateExp(denfencer.characterData.killPoint);
        }
        denfencer.UpdateHealthBarOnAttack?.Invoke(denfencer.CurrentHealth, denfencer.MaxHealth);
    }
Exemplo n.º 2
0
    public void TakeDamage(CharacterStates defender)
    {
        float damage = UnityEngine.Random.Range(attackData.minDamage, attackData.maxDamage);

        // Defense
        damage = Mathf.Max(damage - defender.CurrentDefense, 1.0f);

        // Criticl
        if (isCritical)
        {
            damage = damage * attackData.criticalMultiplier;
        }
        defender.CurrentHealth = Mathf.Max(defender.CurrentHealth - (int)damage, 0);

        defender.UpdateHealthBarOnAttack?.Invoke(defender.CurrentHealth, defender.MaxHealth);
        if (defender.characterData.currentHealth == 0)
        {
            characterData.UpdateExp(defender.characterData.killPoing);
        }
    }