Пример #1
0
    public void ReceiveDamage(float damage)
    {
        float e = Random.Range(0, 100);

        if (e <= currentEvasion)
        {
            combatController.UpdateEnemyLog("¡El " + myTemplate.npcName + " ha evadido el golpe!");
            return;
        }

        float r = Random.Range(0f, 1f);

        if (r < 0.5f)
        {
            damage = damage - ((0.05f * currentResistance) * damage);
        }
        else if (r < 0.75f)
        {
            damage = damage - ((0.05f * (currentResistance - 1)) * damage);
        }

        currentHealth -= damage;

        if (currentEvasion < myTemplate.DefaultEvasion)
        {
            currentEvasion = myTemplate.DefaultEvasion;
        }

        combatController.UpdateEnemyLife();

        if (currentState.GetType() == typeof(SupersonicState))
        {
            currentState.DissableStateEffect(this);
        }

        if (currentHealth <= 0)
        {
            currentHealth = 0;
            Die();
            return;
        }
        combatController.UpdateEnemyLog("El " + myTemplate.npcName + " ha recibido " + damage + " puntos de daño.");
        combatController.StopCoroutine(combatController.AnimateHitEnemy());
        combatController.StartCoroutine(combatController.AnimateHitEnemy());
    }