Scripting Fire Damage With C# - HELP!

I have quite a complicated scripture which is for my game… on usual damage for when a player is hit by a raycast, the hit is recorded and the health is reduced.
Now… Using C# i’d like to make it possible so when a player walks into fire the health is reduced by an amount and is shown on the GUI. Here is what I have right now!!!

public class FireDamage : MonoBehaviour {
	void OnTriggerStay(collisionInfo : Collider){
		if(collisionInfo.gameObject.tag == "Fire"){
		Health-=FireDamage*Time.deltaTime *1;
		yield WaitForSeconds(1);

	//remove hitpoints from player health
	public void ApplyDamage ( float damage ){
		FPSRigidBodyWalker FPSWalkerComponent = GetComponent<FPSRigidBodyWalker>();
		float appliedPainKickAmt;
		if (hitPoints < 1.0f){//Don't apply damage if player is dead
		timeLastDamaged = Time.time;
		//Update health GUIText 
		HealthText HealthText = healthGuiObjInstance.GetComponent<HealthText>();
		HealthText[] HealthText2 = healthGuiObjInstance.GetComponentsInChildren<HealthText>();
		Quaternion painKickRotation;//Set up rotation for pain view kicks
		int painKickUpAmt = 0;
		int painKickSideAmt = 0;
		hitPoints -= damage;//Apply damage
		//set health hud value to hitpoints remaining
		HealthText.healthGui = Mathf.Round(hitPoints);
		HealthText2[1].healthGui = Mathf.Round(hitPoints);
		//change color of hud health element based on hitpoints remaining
		if (hitPoints <= 25.0f){
			HealthText.guiText.material.color =;
		}else if (hitPoints <= 40.0f){
			HealthText.guiText.material.color = Color.yellow;	
			HealthText.guiText.material.color = HealthText.textColor;	
		GameObject pf = Instantiate(painFadeObj) as GameObject;//Create instance of painFadeObj
		pf.GetComponent<PainFade>().FadeIn(PainColor, 0.75f);//Call FadeIn function in painFadeObj to fade screen red when damage taken
			//Play pain sound when getting hit
			if (Time.time > gotHitTimer && painBig && painLittle) {
				// Play a big pain sound
				if (hitPoints < 40.0f || damage > 30.0f) {
					AudioSource.PlayClipAtPoint(painBig, mainCamTransform.position);
					gotHitTimer = Time.time + Random.Range(.5f, .75f);
				} else {
					//Play a small pain sound
					AudioSource.PlayClipAtPoint(painLittle, mainCamTransform.position);
					gotHitTimer = Time.time + Random.Range(.5f, .75f);
			if (Time.time > gotHitTimer && painDrown) {
				//Play a small pain sound
				AudioSource.PlayClipAtPoint(painDrown, mainCamTransform.position);
				gotHitTimer = Time.time + Random.Range(.5f, .75f);
		painKickUpAmt = Random.Range(100, -100);//Choose a random view kick up amount
		if(painKickUpAmt < 50 && painKickUpAmt > 0){painKickUpAmt = 50;}//Maintain some randomness of the values, but don't make it too small
		if(painKickUpAmt < 0 && painKickUpAmt > -50){painKickUpAmt = -50;}
		painKickSideAmt = Random.Range(100, -100);//Choose a random view kick side amount
		if(painKickSideAmt < 50 && painKickSideAmt > 0){painKickSideAmt = 50;}
		if(painKickSideAmt < 0 && painKickSideAmt > -50){painKickSideAmt = -50;}
		//create a rotation quaternion with random pain kick values
		painKickRotation = Quaternion.Euler(mainCamTransform.localRotation.eulerAngles - new Vector3(painKickUpAmt, painKickSideAmt, 0));
		//make screen kick amount based on the damage amount recieved
			appliedPainKickAmt = (damage / (painScreenKickAmt * 10)) / 3;	
			appliedPainKickAmt = (damage / (painScreenKickAmt * 10));			
		//make sure screen kick is not so large that view rotates past arm models 
		appliedPainKickAmt = Mathf.Clamp(appliedPainKickAmt, 0.0f, 0.15f); 
		//smooth current camera angles to pain kick angles using Slerp
		mainCamTransform.localRotation = Quaternion.Slerp(mainCamTransform.localRotation, painKickRotation, appliedPainKickAmt );
		//Call Die function if player's hitpoints have been depleted
		if (hitPoints < 1.0f){
	void Die (){
		FPSRigidBodyWalker FPSWalkerComponent = GetComponent<FPSRigidBodyWalker>();
		bulletTimeActive = false;//set bulletTimeActive to false so fadeout wont take longer if bullet time is active
			AudioSource.PlayClipAtPoint(die, mainCamTransform.position);//play normal player death sound effect if the player is on land 
			AudioSource.PlayClipAtPoint(dieDrown, mainCamTransform.position);//play drowning sound effect if the player is underwater 	
		//disable player control and sprinting on death
		FPSWalkerComponent.inputX = 0;
		FPSWalkerComponent.inputY = 0;
		FPSWalkerComponent.cancelSprint = true;
		GameObject llf = Instantiate(levelLoadFadeObj) as GameObject;//Create instance of levelLoadFadeObj
		//call FadeAndLoadLevel function with fadein argument set to false 
		//in levelLoadFadeObj to restart level and fade screen out from black on level load
		llf.GetComponent<LevelLoadFade>().FadeAndLoadLevel(, 2.0f, false);

Why not just have the fire raycast(s) in a couple of different directions say at 1-5 units depending on how far away you want the fire to damage the player? If you did that you could do something as simple as

public float fireDamage=10f; //fire does x damage
if (Physics.Raycast (rayOrigin, out hitInfo, 2)) { //checks rayOrigin to see if anything within 2 units is hit
        						if (hitInfo.collider.gameObject.tag == "Enemy" || hitInfo.collider.gameObject.tag == "Player") {
        								hitInfo.transform.SendMessage ("FireDamage", fireDamage, SendMessageOptions.DontRequireReceiver);//upon hitInfo sends fireDamage to FireDamage() located on another gameObject, if FireDamage() isn't found nothing is done.
        	Debug.Log ("Player or Enemy hit");

and then in your player/enemy you could have a function like this:

public float Health = 100f;

void FireDamage(float damage){//damage is supplied by rayOrigin hitInfo
Health -= damage;
Debug.Log("Player or Enemy is taking " + "-" + damage + " fire damage.");