diff -u ./client.qc ./client.qc
--- ./client.qc	Wed Jul 24 23:51:22 1996
+++ ./client.qc	Thu Jan  8 00:34:27 1981
@@ -452,6 +452,7 @@
 
 	self.classname = "player";
 	self.health = 100;
+	self.lives = 3;
 	self.takedamage = DAMAGE_AIM;
 	self.solid = SOLID_SLIDEBOX;
 	self.movetype = MOVETYPE_WALK;
@@ -1115,6 +1116,39 @@
 			self.radsuit_finished = 0;
 		}
 	}	
+
+// Laser tag after death noweapon
+	if (self.noweapon_finished)
+	{
+// sound and screen flash when items starts to run out
+		if (self.noweapon_finished < time + 3)
+		{
+			if (self.noweapon_time == 1)
+			{
+				sprint (self, "Use of weapon nearing\n");
+				stuffcmd (self, "bf\n");
+				sound (self, CHAN_AUTO, "items/protect2.wav", 1, ATTN_NORM);
+				self.noweapon_time = time + 1;
+			}
+			
+			if (self.noweapon_time < time)
+			{
+				self.noweapon_time = time + 1;
+				stuffcmd (self, "bf\n");
+			}
+		}
+		
+		if (self.noweapon_finished < time)
+		{	// just stopped
+			self.items = self.items - IT_NOWEAPON;
+			self.noweapon_time = 0;
+			self.noweapon_finished = 0;
+		}
+		if (self.noweapon_finished > time)
+			self.effects = self.effects | EF_DIMLIGHT;
+		else
+			self.effects = self.effects - (self.effects & EF_DIMLIGHT);
+	}
 
 };
 
diff -u ./combat.qc ./combat.qc
--- ./combat.qc	Wed Jul 24 23:51:22 1996
+++ ./combat.qc	Thu Jan  8 00:32:37 1981
@@ -112,6 +112,10 @@
 // used by buttons and triggers to set activator for target firing
 	damage_attacker = attacker;
 
+// team play damage avoidance
+	if ( (teamplay == 1) && (targ.team > 0)&&(targ.team == attacker.team) )
+		return;
+		
 // check for quad damage powerup on the attacker
 	if (attacker.super_damage_finished > time)
 		damage = damage * 4;
@@ -160,18 +164,32 @@
 		return;
 	}
 
-// team play damage avoidance
-	if ( (teamplay == 1) && (targ.team > 0)&&(targ.team == attacker.team) )
-		return;
-		
 // do the damage
 	targ.health = targ.health - take;
 			
 	if (targ.health <= 0)
 	{
-		Killed (targ, attacker);
-		return;
-	}
+		if (targ.lives <= 0)
+		{
+			Killed (targ, attacker);
+			return;
+		}
+		else
+		{
+			targ.lives = targ.lives - 1;
+			targ.health = 100;
+			targ.air_finished = time + 12;
+			targ.dmg = 2;		// initial water damage
+		        targ.super_damage_finished = 0;
+		        targ.radsuit_finished = 0;
+		        targ.invisible_finished = 0;
+        		targ.effects = 0;
+
+        		targ.invincible_time = 1;	// invincible for 5 seconds
+		        targ.invincible_finished = time + 5;
+			targ.noweapon_time = 1;		// noweapon for 10 seconds
+			targ.noweapon_finished = time + 10;
+ 	}
 
 // react to the damage
 	oldself = self;
diff -u ./defs.qc ./defs.qc
--- ./defs.qc	Wed Jul 24 23:51:22 1996
+++ ./defs.qc	Thu Jan  8 00:38:03 1981
@@ -135,6 +135,7 @@
 // stats
 .float		health;
 .float		frags;
+.float		lives;			// Laser tag lives
 .float		weapon;			// one of the IT_SHOTGUN, etc flags
 .string		weaponmodel;
 .float		weaponframe;
@@ -240,6 +241,7 @@
 float	FL_PARTIALGROUND		= 1024;	// not all corners are valid
 float	FL_WATERJUMP			= 2048;	// player jumping out of water
 float	FL_JUMPRELEASED			= 4096;	// for jump debouncing
+float	FL_NOATTACK			= 8192; // Laser tag: can't attack after death
 
 // edict.movetype values
 float	MOVETYPE_NONE			= 0;	// never moves
@@ -462,11 +464,13 @@
 .float 		attack_finished;
 .float		pain_finished;
 
+.float		noweapon_finished;
 .float		invincible_finished;
 .float		invisible_finished;
 .float		super_damage_finished;
 .float		radsuit_finished;
 
+.float		noweapon_time;
 .float		invincible_time, invincible_sound;
 .float		invisible_time, invisible_sound;
 .float		super_time, super_sound;
diff -u ./weapons.qc ./weapons.qc
--- ./weapons.qc	Wed Jul 24 23:51:24 1996
+++ ./weapons.qc	Thu Jan  8 00:32:37 1981
@@ -887,6 +887,9 @@
 	if (!W_CheckNoAmmo ())
 		return;
 
+	if (time < self.noweapon_finished)
+		return;
+
 	makevectors	(self.v_angle);			// calculate forward angle for velocity
 	self.show_hostile = time + 1;	// wake monsters up
 
