Unwanted message loop

Hey there! i’m haveing a problenm with a script sending a message, to another, but never exiting the broadcasting message.

function Explode () {
	var damageFraction : float = 1 - (Vector3.Distance (player.position, character.position) / damageRadius);
	var player1 : Transform;
	var targetHealth : health;
	
	player = GameObject.FindWithTag ("Player1").transform;
	targetHealth = player.GetComponent.<health> ();
	if (targetHealth) {
		// Apply damage
		targetHealth.BroadcastMessage("Hit",SendMessageOptions.DontRequireReceiver);
		
	}
	player.rigidbody.AddExplosionForce (10, character.position, damageRadius, 0.0, ForceMode.Impulse);
	Spawner.Spawn (intentionalExplosion, transform.position, Quaternion.identity);
	Spawner.Destroy (character.gameObject);
}

The above code is the function that sends the message to the function that deals damage in my Health script. The problem is, it keeps sending the message until the health variable reaches -1. See below for the function in the health script.

function Hit()
{
	health = health-1;
}

I want the broadcast message to call the function only once, and proceed with it’s tasks below. Please explain the way you solved the solution if you can. Thanks!

You have taken the time to retrieve your health class

What about Instead of targetHealth.BroadcastMessage("Hit",SendMessageOptions.DontRequireReceiver);

just targetHealth.Hit();