Example #1
0
    void DoDamage()
    {
        modifier = new CombatModify()
        {
            Pierce = pierceSelected, Smite = smiteSelected, Sunder = sunderSelected, Cleave = cleaveSelected, Lethal = lethalSelected, Stun = stunSelected
        };

        int r = monsterItems[0].Damage(damage, modifier);

        if (monster.count > 1)
        {
            r = monsterItems[1].Damage(r, modifier);
            if (monster.count > 2)
            {
                monsterItems[2].Damage(r, modifier);
            }
        }
    }
Example #2
0
    public int Damage(int damage, CombatModify modifier)
    {
        if (startedDead)
        {
            isDead = true;
            return(damage);
        }

        //if ( sunderModify == 1 && !modifier.Sunder )//removing sunder
        //	sunderModify = 0;
        //else
        sunderModify = modifier.Sunder ? 1 : 0;        //+=

        healthModify = modifier.Lethal ? monster.health / 2 : 0;
        int damageUsed = 0;

        tempCurrentHealth = currentMaxHealth;
        currentShield     = Mathf.Max(0, monster.shieldValue - sunderModify);
        if (modifier.Pierce)
        {
            currentShield = 0;
        }
        currentSorc = monster.sorceryValue;
        if (modifier.Smite)
        {
            currentSorc = 0;
        }
        currentDead = (currentMaxHealth - healthModify) + currentShield + currentSorc;
        isDead      = false;

        for (int i = damage; i > 0; i--)
        {
            if (currentShield > 0)
            {
                currentShield--;
                damageUsed++;
                continue;
            }
            if (currentSorc > 0)
            {
                currentSorc--;
                damageUsed++;
                continue;
            }
            if (damageUsed < currentDead)
            {
                tempCurrentHealth--;
                damageUsed++;
            }
            if (damageUsed == currentDead)
            {
                isDead = true;
                break;
            }
        }

        UpdateUI();

        //Debug.Log( "LEFTOVER:" + Mathf.Max( 0, damage - damageUsed ) );

        if (modifier.Cleave)
        {
            return(damage);
        }
        else
        {
            return(Mathf.Max(0, damage - damageUsed));
        }
    }