nothing happens on collision ever

script:

var health = 60;
var something : GameObject;

function OnCollisionEnter(thing : Collision) {
    if (thing.collider.tag == "Bullet") {
	health -= 1;
    }
    else
    if (thing.collider.tag == "FlameBall") {
    health -= 3;
    }
    else
    if (thing.collider.tag == "Bomb") {
	health -= 6;
	}
	}
	
	function Update () {
	if (health <= 0)
	Destroy (something);
	Debug.Log(health);
	}

nothing happens on collision, health always stays at 60
also i have never been able to do a collision properly in the 1 1/2 months i have had unity.
the script is attached, something is assigned, the projectiles have sphere colliders and the target has a rigidbody.
the console says there are no errors.

This script works fine. I suspect you’re attaching the script to the wrong thing: it must be attached to the target object, thus the variable something is not needed - you should destroy gameObject instead, which references the object itself:

var health = 60;
// you don't need the "something" variable!

function OnCollisionEnter(thing : Collision) {
    if (thing.collider.tag == "Bullet") {
        health -= 1;
    }
    else
    if (thing.collider.tag == "FlameBall") {
        health -= 3;
    }
    else
    if (thing.collider.tag == "Bomb") {
        health -= 6;
    }
    // Debug.Log is more useful here:
    Debug.Log("Tag:"+thing.collider.tag+" Health:"+health);
}

function Update () {
    if (health <= 0)
        Destroy (gameObject); // destroy itself if health gone away
}

I suppose the projectiles have rigidbodies - the usual way to shoot anything is to set rigidbody.velocity (recommended) or use rigidbody.AddForce(forceVector), both requiring the projectile to have a rigidbody component. You should also destroy the projectile when colliding to anything, or health may be reduced multiple times when the target is hit.