Networked Poison Damage

Hey, I have been working on getting some Poison Damage into my game, but for some reason, its not willing to work. It works like this: The player is shot by a weapon with poison damage, it sends up a message which adds a certain amount to poison duration, which than triggers the function. Ill be honest, I havent yet added a weapon with poison, but when I add to the duration in the inspector, the function does not work (like it should). Anyone know why? Note: Just ignore “MyPlayer”, its just something I have to do with the Networking.

	[RPC]
	void Server_InitiatePoison ( float InitiatePoison )
	{
		networkView.RPC("Client_InitiatePoison", RPCMode.Server, InitiatePoison);
	}
	
	[RPC]
	void Client_InitiatePoison ( float InitiatePoison )
	{
	if(MyPlayer.regeneration == false)
			{
			MyPlayer.PoisonDuration += InitiatePoison;
			Debug.Log("Poison Initiated");
			}
	//If Poison has started
	if(MyPlayer.PoisonTimerDuration < MyPlayer.PoisonDuration)
	{
		//If the Poison is bigger then the Duration
		MyPlayer.Poison = true;
		//Start the Timer
		MyPlayer.PoisonTimerDuration += 1 * Time.deltaTime;
		if(MyPlayer.PoisonTimerDuration >= MyPlayer.PoisonDuration)
			{
				//Set it to 0
				MyPlayer.PoisonDuration = 0;
				MyPlayer.Poison = false;
			}
	}
	if(MyPlayer.Poison == true)
	{
		//When the function is triggered and the Poison Timer is smaller
		//than the Poison Duration
		if(MyPlayer.PoisonTimer < PoisonTime)
			{
			//Start the Timer
			MyPlayer.PoisonTimer += 1 * Time.deltaTime;
			}
	}
	//As soon as the Timer is bigger
	if(MyPlayer.PoisonTimer == PoisonTime)
			{
			//The player is not Poisoned anymore
			MyPlayer.PoisonTimer = 0;
			MyPlayer.health -= PoisonDamage;
			Debug.Log("Poison Time is Equal to Poison Timer");
			}	
	//If there is no Poison,
	if(MyPlayer.PoisonDuration == 0)
	{
		//Reset the Timer
		MyPlayer.PoisonTimer = 0;
		//Reset the Timer
		MyPlayer.PoisonTimerDuration = 0;
	}
	if(MyPlayer.Poison = false)
	{
		//Reset the Timer
		MyPlayer.PoisonTimer = 0;
		//Reset the Timer
		MyPlayer.PoisonTimerDuration = 0;
	}
	if(MyPlayer.PoisonDuration > 0)
	{
		MyPlayer.Poison = true;
	}
	if(MyPlayer.PoisonDuration <= 0)
	{
		MyPlayer.Poison = false;
	}
	if(MyPlayer.PoisonTimer > PoisonTime)
	{
		MyPlayer.PoisonTimer = PoisonTime;
	}
}

Okay so this is how I fixed it: I put everything into the Update () function except for the actual part where the initialise poison is added to the poison duration. Turns out it works this way.