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); } } }
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)); } }