sending damage to player

So I cant figure out the life of me, why the player can send his damage by the line:

“hit.transform.SendMessage(“applyDamage”, damage, SendMessageOptions.DontRequireReceiver);”

But i can’t do the same for when the enemy wants to send damage

hit.transform.SendMessage(“applyDamageToPlayer”, damageToPlayer, SendMessageOptions.DontRequireReceiver);

Player script:

#pragma strict

var playerHealth = 100;


function Update () 
{

	if(playerHealth <= 0)
	{
		playerDead();
	}
	
	
}

function applyDamageToPlayer (damage : int)
{
	playerHealth -= damageToPlayer;
}


function playerDead (){
	Application.LoadLevel ("GameOver");
}

Melee system script:

#pragma strict

var damage : int = 50;
var distance : float;
var MaxDistance : float = 1.5;
var Mace : Transform;

function Update ()
{
	if (Input.GetButtonDown("Fire1"))
	{	//attack animation
		Mace.animation.Play("Attack");
		//attack function
		var hit : RaycastHit;
		if (Physics.Raycast (transform.position, transform.TransformDirection(Vector3.forward), hit))
		{
			distance = hit.distance;
			if (distance < MaxDistance)
			{
				hit.transform.SendMessage("applyDamage", damage, SendMessageOptions.DontRequireReceiver);
			}
		}
	}
	if (Mace.animation.isPlaying == false)
	{
	Mace.animation.CrossFade("Idle");
	}
	if (Input.GetKey (KeyCode.LeftShift))
	{
		Mace.animation.CrossFade("Sprint");
	}
	if (Input.GetKeyUp(KeyCode.LeftShift))
	{
		Mace.animation.CrossFade("Idle");
	}
}

and finally the enemy AI script:

var damageToPlayer : int = 20;
var distance;
var maxDistance : float = 1.5;
var target : Transform;
var lookAtDistance = 25.0;
var attackRange = 5.0;
var moveSpeed = 5.0;
var damping = 6.0;
var enemyMace : Transform;



private var enemyHealth = 100;



function Update ()
{

	distance = Vector3.Distance(target.position, transform.position);
	
	if(enemyHealth <= 0)
	{
		enemyDead();
	}
	

	
	if (distance < lookAtDistance)
	{
		renderer.material.color = Color.yellow;
		lookAt();
	}
	
	if (distance > lookAtDistance)
	{
		renderer.material.color = Color.green;
	}
	
	if (distance <attackRange)
	{
		renderer.material.color = Color.red;
		
		//chase
		transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
		enemyMace.animation.CrossFade("Sprint");		
		attack ();
	}
	if (enemyMace.animation.isPlaying == false)
	{
	enemyMace.animation.CrossFade("Idle");
	}
	
}

function lookAt()
{
	var rotation = Quaternion.LookRotation(target.position - transform.position);
	transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * damping);

}



function applyDamage (damage : int)
{
	enemyHealth -= damage;
}

function enemyDead ()
{
	Destroy (gameObject);
}

function attack ()
{
	var hit : RaycastHit;
		if (Physics.Raycast (transform.position, transform.TransformDirection(Vector3.forward), hit))
		{
			distance = hit.distance;
			if (distance < maxDistance)
			{
				hit.transform.SendMessage("applyDamageToPlayer", damageToPlayer, SendMessageOptions.DontRequireReceiver);
				enemyMace.animation.Play("Attack");
				
			}
		}
}
function applyDamageToPlayer (damage : int)
{
    playerHealth -= damageToPlayer;
}

Shouldnt it be:
playerHealth -= damage; ?

It worked but, didn’t it use the damage assigned to the player’s weapon?
I was killed instantly oO

Is there a way to send the values of the variable “damageToPlayer” as the actual damage, because now it seems the enemy is just as strong as the player is.

damage should be the same value as damageToPlayer but your enemy does not have an attack delay, this is probably why your enemy seems so strong.