using sendmessage to destroy an object when an object is destroyed

I have a sphere that spawns robots and a cube that when it gets detroyed the sphere gets destroyed. I am using sendmessage to the sphere to destroy it but it isnt working. Here is the script for the cube:

var hitPoints = 100.0;
var detonationDelay = 0.0;
var explosion : Transform;
var deadReplacement : Rigidbody;

function ApplyDamage (damage : float) {
    // We already have less than 0 hitpoints, maybe we got killed already?
    if (hitPoints <= 0.0)
        return;

    hitPoints -= damage;
    if (hitPoints <= 0.0) {
        // Start emitting particles
        var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
        if (emitter)
            emitter.emit = true;

        Invoke("DelayedDetonate", detonationDelay);
    }
}

function DelayedDetonate () {
    BroadcastMessage ("Detonate");
}

function Detonate () {
    // Destroy ourselves
    Destroy(gameObject);

    // Create the explosion
    if (explosion)
        Instantiate (explosion, transform.position, transform.rotation);

    // If we have a dead barrel then replace ourselves with it!
    if (deadReplacement) {
        var dead : Rigidbody = Instantiate(deadReplacement, transform.position, transform.rotation);

        // For better effect we assign the same velocity to the exploded barrel
        dead.rigidbody.velocity = rigidbody.velocity;
        dead.angularVelocity = rigidbody.angularVelocity;

        gameObject.SendMessage( "Destroy1",
        SendMessageOptions.RequireReceiver);
    }

    // If there is a particle emitter stop emitting and detach so it doesnt get destroyed
    // right away
    var emitter : ParticleEmitter = GetComponentInChildren(ParticleEmitter);
    if (emitter) {
        emitter.emit = false;
        emitter.transform.parent = null;
    }
}

and the script for the sphere:

var maxrobots = 5;
var robot : GameObject;
var timebetweenspawns = 5.0;
var robotcount = 0;
var lastspawn =-10.0;
var explosion : GameObject;
var deadReplacement : Rigidbody;

function Destroy1 ()
{
    Destroy( gameObject );

    if (explosion)
        Instantiate (explosion, transform.position, transform.rotation);

    if (deadReplacement) 
    {
        var dead : Rigidbody = Instantiate(deadReplacement, transform.position, transform.rotation);

        dead.rigidbody.velocity = rigidbody.velocity;
        dead.angularVelocity = rigidbody.angularVelocity;
    }
}

function Update () 
{
    if( Time.time > timebetweenspawns + lastspawn && robotcount <= maxrobots )
    {
        Instantiate( robot, transform.position, transform.rotation );

        lastspawn = Time.time;
        robotcount++;
    }
}

you'll want to declare a public variable in the sphere code (an int) and a variable in the cube code that is of type (whatever the name of your script for the sphere is) and before the destroy command, say "(shpere var).(cube var)--;, and set the if statement in the sphere code that if it equals 1, then destroy.