Distro Edits.  This is also constructed to work with BaseUndead.cs.

BaseCreature.cs ==========================================================================
Towards the top with the other variable declarations add:
		//Start Zombiex edit
		private bool m_CanInfect = false;
		[CommandProperty( AccessLevel.GameMaster )]
		public virtual bool CanInfect
		{
			get{return m_CanInfect;}
			set{m_CanInfect = value;}
		}
		//End Zombiex edit


In OnBeforeDeath()
			After:

			if ( m_ReceivedHonorContext != null )
				m_ReceivedHonorContext.OnTargetKilled();

//Start Zombiex edit	 
			Mobile killerx = this.FindMostRecentDamager( true );
			if (killerx is Zombiex)
			{
				Zombiex zomb = new Zombiex(); 
				zomb.BaseCreatureModule(this, zomb);
			}
//End Zombiex edit

In the Serialize method, after the last writer location.  Don't forget to add one to the version number at the top of the Serialize method.
//Start Zombiex edit
					writer.Write( (bool) m_CanInfect);
//End Zombitx edit

In the Deserialize method, after the last reader location.  ## = the next number (must equal the version number you changed in the Serialize method.)
//Start Zombiex edit
			if (version >= ##) m_CanInfect = reader.ReadBool();
//End Zombiex edit


PlayerMobile.cs ==========================================================================
		public override bool OnBeforeDeath()
		{
//Zombiex
		Mobile killerx = this.FindMostRecentDamager(true);
		if (killerx is Zombiex)
		{
			Zombiex zomb = new Zombiex(); 
			zomb.PlayerMobileModule(this, zomb);
		}
//Zombiex end


Corpse.cs ==========================================================================

		public void BeginDecay( TimeSpan delay )
		{
//Zombiex
			if (m_Killer is Zombiex)
			{
				if (m_Owner is BaseCreature)
				{
					BaseCreature bc = (BaseCreature) m_Owner;
					if (bc.CanInfect)
					{
						this.Delete();
					}
				}
				else if (m_Owner is PlayerMobile)
				{
					this.Delete();
				}
			}	
//Zombiex end

