Damage calculation and dealing belongs on the bullet. The damageable object should simply have a public damage function that can be called by whatever is doing the damage.
This structure will make everything much simpler. You simply increase the damage on the bullet for different guns. Here is some code
public class Life : MonoBehaviour {
public int maxHealth = 100;
public int curHealth = 100;
public void Damage (int noOfPoints){
curHealth -= noOfPoints;
if (curHealth <1){
Destroy(gameObject);
}
}
}
public class Bullet : MonoBehaviour {
public float damage = 20;
void OnCollisionEnter(Collision col) {
col.gameObject.SendMessage("Damage", damage, SendMessageOptions.DontRequireReciever);
Destroy(gameObject);
}
}