summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Data/Highscore3
-rw-r--r--src/GameTick.cpp4278
2 files changed, 2140 insertions, 2141 deletions
diff --git a/Data/Highscore b/Data/Highscore
index a87cc68..bc6fe45 100644
--- a/Data/Highscore
+++ b/Data/Highscore
@@ -1 +1,2 @@
-0
0
\ No newline at end of file
+225
+0
\ No newline at end of file
diff --git a/src/GameTick.cpp b/src/GameTick.cpp
index a0534a7..697d799 100644
--- a/src/GameTick.cpp
+++ b/src/GameTick.cpp
@@ -180,1947 +180,1944 @@ void Game::Tick()
 		return;
 	}
 
-	if (!mainmenu) {
-		XYZ facing;
-		XYZ flatfacing;
+	XYZ facing;
+	XYZ flatfacing;
 
-		if(person[1].health<=0||person[0].health<=0||killedinnocent){
-			losedelay-=multiplier/6;
-		}
-
-		if(person[1].health>0&&person[0].health>0&&!killedinnocent)timeremaining-=multiplier*25/40;
+	if(person[1].health<=0||person[0].health<=0||killedinnocent){
+		losedelay-=multiplier/6;
+	}
 
-		if(timeremaining<=0){
+	if(person[1].health>0&&person[0].health>0&&!killedinnocent)timeremaining-=multiplier*25/40;
 
-			flashamount=1;
+	if(timeremaining<=0){
 
-			flashr=0;flashg=1;flashb=0;
+		flashamount=1;
 
-			mission++;
+		flashr=0;flashg=1;flashb=0;
 
-			alSourcePlay(gSourceID[souloutsound]);
+		mission++;
 
-			score+=100+(mission*50);
+		alSourcePlay(gSourceID[souloutsound]);
 
-			if(mission>=nummissions){
+		score+=100+(mission*50);
 
-				beatgame=1;
+		if(mission>=nummissions){
 
-				mainmenu=1;
+			beatgame=1;
 
-				gameinprogress=0;
+			mainmenu=1;
 
-				alSourcePause(gSourceID[rainsound]);
+			gameinprogress=0;
 
-				alSourceStop(gSourceID[visionsound]);
+			alSourcePause(gSourceID[rainsound]);
 
-				alSourceStop(gSourceID[whichsong]);
+			alSourceStop(gSourceID[visionsound]);
 
-				alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 0);
+			alSourceStop(gSourceID[whichsong]);
 
-				alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 0);
+			alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 0);
 
-				whichsong=mainmenusong;
+			alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 0);
 
-				alSourceStop(gSourceID[whichsong]);
+			whichsong=mainmenusong;
 
-				alSourcef(gSourceID[whichsong], AL_PITCH, 1);
+			alSourceStop(gSourceID[whichsong]);
 
-				alSourcePlay(gSourceID[whichsong]);
+			alSourcef(gSourceID[whichsong], AL_PITCH, 1);
 
-				alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 1);
+			alSourcePlay(gSourceID[whichsong]);
 
-				alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 1);
+			alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 1);
 
-				saveHighScore();
-			}
+			alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 1);
 
-			if(!mainmenu){
+			saveHighScore();
+		}
 
-				InitGame();
+		if(!mainmenu){
 
-				if(environment==rainy_environment)alSourcePlay(gSourceID[rainsound]);
+			InitGame();
 
-				if(environment!=rainy_environment)alSourcePause(gSourceID[rainsound]);
+			if(environment==rainy_environment)alSourcePlay(gSourceID[rainsound]);
 
-				alSourceStop(gSourceID[visionsound]);
+			if(environment!=rainy_environment)alSourcePause(gSourceID[rainsound]);
 
-				alSourceStop(gSourceID[whichsong]);
+			alSourceStop(gSourceID[visionsound]);
 
-				if(person[0].whichgun==knife)whichsong=knifesong;
+			alSourceStop(gSourceID[whichsong]);
 
-				if(person[0].whichgun!=knife)whichsong=shootsong;
+			if(person[0].whichgun==knife)whichsong=knifesong;
 
-				if(type==zombie_type)whichsong=zombiesong;
+			if(person[0].whichgun!=knife)whichsong=shootsong;
 
-				alSourcef(gSourceID[whichsong], AL_PITCH, 1);
+			if(type==zombie_type)whichsong=zombiesong;
 
-				alSourcePlay(gSourceID[whichsong]);
+			alSourcef(gSourceID[whichsong], AL_PITCH, 1);
 
-				alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 1);
+			alSourcePlay(gSourceID[whichsong]);
 
-				alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 1);
+			alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 1);
 
-			}
+			alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 1);
 
 		}
 
-		if(losedelay<=0){
+	}
 
-			flashamount=1;
+	if(losedelay<=0){
 
-			flashr=0;flashg=0;flashb=0;
+		flashamount=1;
 
-			if(person[murderer].health>0)score=oldscore-200;
+		flashr=0;flashg=0;flashb=0;
 
-			if(person[murderer].health<=0)score=oldscore-100;
+		if(person[murderer].health>0)score=oldscore-200;
 
-			InitGame();
+		if(person[murderer].health<=0)score=oldscore-100;
 
-			alSourceStop(gSourceID[whichsong]);
+		InitGame();
 
-			if(person[0].whichgun==knife)whichsong=knifesong;
+		alSourceStop(gSourceID[whichsong]);
 
-			if(person[0].whichgun!=knife)whichsong=shootsong;
+		if(person[0].whichgun==knife)whichsong=knifesong;
 
-			if(type==zombie_type)whichsong=zombiesong;
+		if(person[0].whichgun!=knife)whichsong=shootsong;
 
-			alSourcef(gSourceID[whichsong], AL_PITCH, 1);
+		if(type==zombie_type)whichsong=zombiesong;
 
-			alSourcePlay(gSourceID[whichsong]);
+		alSourcef(gSourceID[whichsong], AL_PITCH, 1);
 
-			alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 1);
+		alSourcePlay(gSourceID[whichsong]);
 
-			alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 1);
+		alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 1);
 
-			alSourcePlay(gSourceID[soulinsound]);
+		alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 1);
 
-		}
+		alSourcePlay(gSourceID[soulinsound]);
 
-		unsigned char	theKeyMap[16];
+	}
 
-		GetKeys( ( unsigned long * )theKeyMap );
+	unsigned char	theKeyMap[16];
 
-		//Sprites
+	GetKeys( ( unsigned long * )theKeyMap );
 
-		sprites.DoStuff();
+	//Sprites
 
-		//Decals
+	sprites.DoStuff();
 
-		decals.DoStuff();
+	//Decals
 
-		//Facing
+	decals.DoStuff();
 
-		facing=0;
+	//Facing
 
-		facing.z=-1;
+	facing=0;
 
-		facing=DoRotation(facing,-camera.rotation2,0,0);
+	facing.z=-1;
 
-		facing=DoRotation(facing,0,0-camera.rotation,0);
+	facing=DoRotation(facing,-camera.rotation2,0,0);
 
-		flatfacing=facing;
+	facing=DoRotation(facing,0,0-camera.rotation,0);
 
-		flatfacing.y=0;
+	flatfacing=facing;
 
-		Normalise(&flatfacing);
+	flatfacing.y=0;
 
-		if(IsKeyDown(theKeyMap, psychickey)&&!oldvisionkey){
+	Normalise(&flatfacing);
 
-			oldvisionkey=1;
+	if(IsKeyDown(theKeyMap, psychickey)&&!oldvisionkey){
 
-			visions++;
+		oldvisionkey=1;
 
-			if(visions==2)visions=0;
+		visions++;
 
-			if(visions==0){
-				flashamount=1;
-				flashr=1;flashg=1;flashb=1;
+		if(visions==2)visions=0;
 
-				if(person[0].playercoords.x!=bodycoords.x||person[0].playercoords.z!=bodycoords.z){
+		if(visions==0){
+			flashamount=1;
+			flashr=1;flashg=1;flashb=1;
 
-					XYZ towards;
+			if(person[0].playercoords.x!=bodycoords.x||person[0].playercoords.z!=bodycoords.z){
 
-					towards=person[0].playercoords-bodycoords;
+				XYZ towards;
 
-					Normalise(&towards);
+				towards=person[0].playercoords-bodycoords;
 
-					camera.rotation=-asin(0-towards.x);
+				Normalise(&towards);
 
-					camera.rotation*=360/6.28;
+				camera.rotation=-asin(0-towards.x);
 
-					if(towards.z>0)camera.rotation=180-camera.rotation;
+				camera.rotation*=360/6.28;
 
-					camera.visrotation=camera.rotation;
+				if(towards.z>0)camera.rotation=180-camera.rotation;
 
-					camera.oldrotation=camera.rotation;
+				camera.visrotation=camera.rotation;
 
-					camera.oldoldrotation=camera.rotation;
+				camera.oldrotation=camera.rotation;
 
-				}
+				camera.oldoldrotation=camera.rotation;
 
-				person[0].playercoords=bodycoords;
+			}
 
-				person[0].oldplayercoords=bodycoords;
+			person[0].playercoords=bodycoords;
 
-				person[0].velocity=0;
+			person[0].oldplayercoords=bodycoords;
 
-				alSourcePlay(gSourceID[soulinsound]);
+			person[0].velocity=0;
 
-				alSourceStop(gSourceID[visionsound]);
+			alSourcePlay(gSourceID[soulinsound]);
 
-				alSourcef(gSourceID[knifesong], AL_PITCH, (ALfloat)(1));
+			alSourceStop(gSourceID[visionsound]);
 
-				alSourcef(gSourceID[shootsong], AL_PITCH, (ALfloat)(1));
+			alSourcef(gSourceID[knifesong], AL_PITCH, (ALfloat)(1));
 
-				alSourcef(gSourceID[zombiesong], AL_PITCH, (ALfloat)(1));
+			alSourcef(gSourceID[shootsong], AL_PITCH, (ALfloat)(1));
 
-			}
+			alSourcef(gSourceID[zombiesong], AL_PITCH, (ALfloat)(1));
 
-			if(visions==1){
+		}
 
-				alSourceStop(gSourceID[visionsound]);
+		if(visions==1){
 
-				flashamount=1;
+			alSourceStop(gSourceID[visionsound]);
 
-				flashr=1;flashg=0;flashb=0;
+			flashamount=1;
 
-				bodycoords=person[0].oldplayercoords;
+			flashr=1;flashg=0;flashb=0;
 
-				alSourcePlay(gSourceID[souloutsound]);
+			bodycoords=person[0].oldplayercoords;
 
-				alSourcef(gSourceID[knifesong], AL_PITCH, (ALfloat)(.5));
+			alSourcePlay(gSourceID[souloutsound]);
 
-				alSourcef(gSourceID[shootsong], AL_PITCH, (ALfloat)(.5));
+			alSourcef(gSourceID[knifesong], AL_PITCH, (ALfloat)(.5));
 
-				alSourcef(gSourceID[zombiesong], AL_PITCH, (ALfloat)(.5));
+			alSourcef(gSourceID[shootsong], AL_PITCH, (ALfloat)(.5));
 
-				alSourcePlay(gSourceID[visionsound]);
+			alSourcef(gSourceID[zombiesong], AL_PITCH, (ALfloat)(.5));
 
-			}
+			alSourcePlay(gSourceID[visionsound]);
 
 		}
 
-		if(!IsKeyDown(theKeyMap, psychickey)){
+	}
 
-			oldvisionkey=0;
+	if(!IsKeyDown(theKeyMap, psychickey)){
 
-		}
+		oldvisionkey=0;
 
-		if(IsKeyDown(theKeyMap, MAC_TAB_KEY)&&!tabkeydown&&debug){
+	}
 
-			thirdperson++;
+	if(IsKeyDown(theKeyMap, MAC_TAB_KEY)&&!tabkeydown&&debug){
 
-			if(thirdperson>2)thirdperson=0;
+		thirdperson++;
 
-			tabkeydown=1;
+		if(thirdperson>2)thirdperson=0;
 
-		}
+		tabkeydown=1;
 
-		if(!IsKeyDown(theKeyMap, MAC_TAB_KEY))
+	}
 
-			tabkeydown=0;
+	if(!IsKeyDown(theKeyMap, MAC_TAB_KEY))
 
-		if(IsKeyDown(theKeyMap, aimkey)&&!aimtoggle){
+		tabkeydown=0;
 
-			person[0].aiming=1-person[0].aiming;
+	if(IsKeyDown(theKeyMap, aimkey)&&!aimtoggle){
 
-			aimtoggle=1;
+		person[0].aiming=1-person[0].aiming;
 
-		}
+		aimtoggle=1;
 
-		if(!IsKeyDown(theKeyMap, aimkey))
+	}
 
-			aimtoggle=0;
+	if(!IsKeyDown(theKeyMap, aimkey))
 
-		if(IsKeyDown(theKeyMap, MAC_R_KEY)&&!reloadtoggle){
+		aimtoggle=0;
 
-			if(person[0].reloads[person[0].whichgun]>0&&person[0].reloading<=0)person[0].ammo=-1;
+	if(IsKeyDown(theKeyMap, MAC_R_KEY)&&!reloadtoggle){
 
-			reloadtoggle=1;
+		if(person[0].reloads[person[0].whichgun]>0&&person[0].reloading<=0)person[0].ammo=-1;
 
-		}
+		reloadtoggle=1;
 
-		if(!IsKeyDown(theKeyMap, MAC_R_KEY))
+	}
 
-			reloadtoggle=0;
+	if(!IsKeyDown(theKeyMap, MAC_R_KEY))
 
-		if(IsKeyDown(theKeyMap, psychicaimkey)&&!slomokeydown&&slomo==0){
+		reloadtoggle=0;
 
-			alSourcePlay(gSourceID[souloutsound]);
+	if(IsKeyDown(theKeyMap, psychicaimkey)&&!slomokeydown&&slomo==0){
 
-			slomo=2;
+		alSourcePlay(gSourceID[souloutsound]);
 
-			flashamount=.5;
+		slomo=2;
 
-			flashr=1;flashg=0;flashb=0;
+		flashamount=.5;
 
-			slomokeydown=1;
+		flashr=1;flashg=0;flashb=0;
 
-			score-=20;
+		slomokeydown=1;
 
-			alSourcef(gSourceID[knifesong], AL_PITCH, (ALfloat)(.5));
+		score-=20;
 
-			alSourcef(gSourceID[shootsong], AL_PITCH, (ALfloat)(.5));
+		alSourcef(gSourceID[knifesong], AL_PITCH, (ALfloat)(.5));
 
-			alSourcef(gSourceID[zombiesong], AL_PITCH, (ALfloat)(.5));
+		alSourcef(gSourceID[shootsong], AL_PITCH, (ALfloat)(.5));
 
-		}
+		alSourcef(gSourceID[zombiesong], AL_PITCH, (ALfloat)(.5));
 
-		if(!IsKeyDown(theKeyMap, psychicaimkey))
+	}
 
-			slomokeydown=0;
+	if(!IsKeyDown(theKeyMap, psychicaimkey))
 
-		//Mouse look
+		slomokeydown=0;
 
-		if((person[0].aimamount<=0&&person[0].targetanimation!=crouchanim)){
+	//Mouse look
 
-			camera.rotation=camera.visrotation;
+	if((person[0].aimamount<=0&&person[0].targetanimation!=crouchanim)){
 
-			camera.rotation2=camera.visrotation2;
+		camera.rotation=camera.visrotation;
 
-			mousesensitivity=usermousesensitivity;
+		camera.rotation2=camera.visrotation2;
 
-		}
+		mousesensitivity=usermousesensitivity;
 
-		if(person[0].aimamount>=1&&zoom==0){
+	}
 
-			mousesensitivity=usermousesensitivity*.8;
+	if(person[0].aimamount>=1&&zoom==0){
 
-		}
+		mousesensitivity=usermousesensitivity*.8;
 
-		if(slomo==2){
+	}
 
-			mousesensitivity*=.6;
+	if(slomo==2){
 
-		}
+		mousesensitivity*=.6;
 
-#if 0	// DDOI
-		GetMouse(&mouseloc);
+	}
 
-		if (mouseloc.h>600){MoveMouse(mouseloc.h-500,mouseloc.v,&mouseloc);}
+// DDOI
+	GetMouse(&mouseloc);
 
-		if (mouseloc.h<100){MoveMouse(mouseloc.h+500,mouseloc.v,&mouseloc);}
+	if (mouseloc.h>600){MoveMouse(mouseloc.h-500,mouseloc.v,&mouseloc);}
 
-		GetMouse(&mouseloc);
+	if (mouseloc.h<100){MoveMouse(mouseloc.h+500,mouseloc.v,&mouseloc);}
 
-		if (mouseloc.v>400){MoveMouse(mouseloc.h,mouseloc.v-300,&mouseloc);}
+	GetMouse(&mouseloc);
 
-		if (mouseloc.v<100){MoveMouse(mouseloc.h,mouseloc.v+300,&mouseloc);}
+	if (mouseloc.v>400){MoveMouse(mouseloc.h,mouseloc.v-300,&mouseloc);}
 
-		GetMouse(&mouseloc);
+	if (mouseloc.v<100){MoveMouse(mouseloc.h,mouseloc.v+300,&mouseloc);}
 
-#else
-		GetMouseRel(&mouseloc);
-#endif
+	GetMouse(&mouseloc);
 
-#if 0	// DDOI
-		oldmouserotation=(oldmouseloc.h/1.3888)*mousesensitivity;
 
-		oldmouserotation2=(oldmouseloc.v/1.3888)*mousesensitivity;
-#endif
+	GetMouseRel(&mouseloc);
 
-		mouserotation=(mouseloc.h/1.3888)*mousesensitivity;
 
-		mouserotation2=(mouseloc.v/1.3888)*mousesensitivity;
+// DDOI
+	oldmouserotation=(oldmouseloc.h/1.3888)*mousesensitivity;
 
-#if 0	// DDOI
-		if(abs(oldmouseloc.h-mouseloc.h)<400)camera.rotation+=mouserotation-oldmouserotation;
+	oldmouserotation2=(oldmouseloc.v/1.3888)*mousesensitivity;
 
-		if(abs(oldmouseloc.v-mouseloc.v)<200)camera.rotation2+=mouserotation2-oldmouserotation2;
 
-		if(mouseloc.h-oldmouseloc.h>400)camera.rotation+=mouserotation-oldmouserotation-(500/1.3888*mousesensitivity);
+	mouserotation=(mouseloc.h/1.3888)*mousesensitivity;
 
-		if(mouseloc.h-oldmouseloc.h<-400)camera.rotation+=mouserotation-oldmouserotation+(500/1.3888*mousesensitivity);
+	mouserotation2=(mouseloc.v/1.3888)*mousesensitivity;
 
-		if(mouseloc.v-oldmouseloc.v>200)camera.rotation2+=mouserotation2-oldmouserotation2-(300/1.3888*mousesensitivity);
+// DDOI
+	if(abs(oldmouseloc.h-mouseloc.h)<400)camera.rotation+=mouserotation-oldmouserotation;
 
-		if(mouseloc.v-oldmouseloc.v<-200)camera.rotation2+=mouserotation2-oldmouserotation2+(300/1.3888*mousesensitivity);
-#else
-		if(abs(mouseloc.h)<400)camera.rotation+=mouserotation;
-		if(abs(mouseloc.v)<200)camera.rotation2+=mouserotation2;
-		if(mouseloc.h>400)camera.rotation+=mouserotation-(500/1.3888*mousesensitivity);
-		if(mouseloc.h<-400)camera.rotation+=mouserotation+(500/1.3888*mousesensitivity);
+	if(abs(oldmouseloc.v-mouseloc.v)<200)camera.rotation2+=mouserotation2-oldmouserotation2;
 
-		if(mouseloc.v>200)camera.rotation2+=mouserotation2-(300/1.3888*mousesensitivity);
+	if(mouseloc.h-oldmouseloc.h>400)camera.rotation+=mouserotation-oldmouserotation-(500/1.3888*mousesensitivity);
 
-		if(mouseloc.v<-200)camera.rotation2+=mouserotation2+(300/1.3888*mousesensitivity);
-#endif
+	if(mouseloc.h-oldmouseloc.h<-400)camera.rotation+=mouserotation-oldmouserotation+(500/1.3888*mousesensitivity);
 
-		if(camera.rotation2>89){camera.rotation2=89;}
+	if(mouseloc.v-oldmouseloc.v>200)camera.rotation2+=mouserotation2-oldmouserotation2-(300/1.3888*mousesensitivity);
 
-		if(camera.rotation2<-89){camera.rotation2=-89;}
+	if(mouseloc.v-oldmouseloc.v<-200)camera.rotation2+=mouserotation2-oldmouserotation2+(300/1.3888*mousesensitivity);
 
-		//Smooth
+	if(abs(mouseloc.h)<400)camera.rotation+=mouserotation;
+	if(abs(mouseloc.v)<200)camera.rotation2+=mouserotation2;
+	if(mouseloc.h>400)camera.rotation+=mouserotation-(500/1.3888*mousesensitivity);
+	if(mouseloc.h<-400)camera.rotation+=mouserotation+(500/1.3888*mousesensitivity);
 
-		camera.rotation=(camera.oldoldrotation+((camera.rotation-camera.oldoldrotation)*.7+(camera.oldrotation-camera.oldoldrotation)*.3));
+	if(mouseloc.v>200)camera.rotation2+=mouserotation2-(300/1.3888*mousesensitivity);
 
-		camera.rotation2=(camera.oldoldrotation2+((camera.rotation2-camera.oldoldrotation2)*.7+(camera.oldrotation2-camera.oldoldrotation2)*.3));
+	if(mouseloc.v<-200)camera.rotation2+=mouserotation2+(300/1.3888*mousesensitivity);
 
-		if(camera.visrotation<camera.rotation-7)camera.visrotation=camera.rotation-7;
 
-		if(camera.visrotation>camera.rotation+7)camera.visrotation=camera.rotation+7;
+	if(camera.rotation2>89){camera.rotation2=89;}
 
-		if(camera.visrotation2<camera.rotation2-15)camera.visrotation2=camera.rotation2-15;
+	if(camera.rotation2<-89){camera.rotation2=-89;}
 
-		if(camera.visrotation2>camera.rotation2+15)camera.visrotation2=camera.rotation2+15;
+	//Smooth
 
-		if(zoom||person[0].aimamount<=0||person[0].whichgun==nogun||visions||person[0].whichgun==grenade||person[0].whichgun==knife){
+	camera.rotation=(camera.oldoldrotation+((camera.rotation-camera.oldoldrotation)*.7+(camera.oldrotation-camera.oldoldrotation)*.3));
 
-			camera.visrotation=camera.rotation;
+	camera.rotation2=(camera.oldoldrotation2+((camera.rotation2-camera.oldoldrotation2)*.7+(camera.oldrotation2-camera.oldoldrotation2)*.3));
 
-			camera.visrotation2=camera.rotation2;
+	if(camera.visrotation<camera.rotation-7)camera.visrotation=camera.rotation-7;
 
-		}
+	if(camera.visrotation>camera.rotation+7)camera.visrotation=camera.rotation+7;
 
-		oldzoom=zoom;
+	if(camera.visrotation2<camera.rotation2-15)camera.visrotation2=camera.rotation2-15;
 
-		camera.oldoldrotation=camera.oldrotation;
+	if(camera.visrotation2>camera.rotation2+15)camera.visrotation2=camera.rotation2+15;
 
-		camera.oldoldrotation2=camera.oldrotation2;
+	if(zoom||person[0].aimamount<=0||person[0].whichgun==nogun||visions||person[0].whichgun==grenade||person[0].whichgun==knife){
 
-		camera.oldrotation=camera.rotation;
+		camera.visrotation=camera.rotation;
 
-		camera.oldrotation2=camera.rotation2;
+		camera.visrotation2=camera.rotation2;
 
-		//Check collision with buildings
+	}
 
-		int beginx,endx;
+	oldzoom=zoom;
 
-		int beginz,endz;
+	camera.oldoldrotation=camera.oldrotation;
 
-		XYZ collpoint;
+	camera.oldoldrotation2=camera.oldrotation2;
 
-		XYZ move;
+	camera.oldrotation=camera.rotation;
 
-		int whichtri;
+	camera.oldrotation2=camera.rotation2;
 
-		XYZ underpoint;
+	//Check collision with buildings
 
-		XYZ overpoint;
+	int beginx,endx;
 
-		int pointnum;
+	int beginz,endz;
 
-		float depth;
+	XYZ collpoint;
 
-		XYZ normalrotated;
+	XYZ move;
 
-		bool inblock;
+	int whichtri;
 
-		person[0].playerrotation=180-camera.rotation;
+	XYZ underpoint;
 
-		//Check people collisions
+	XYZ overpoint;
 
-		for(int k=0;k<numpeople;k++){
-			// SBF - backing up the old coordinates makes
-			// the most sense here.
-			person[k].oldplayercoords=person[k].playercoords;
+	int pointnum;
 
-			person[k].DoStuff(k);
+	float depth;
 
-			if(person[k].skeleton.free<1){
+	XYZ normalrotated;
 
-			if(1==1){
+	bool inblock;
 
-			person[k].onground=0;
+	person[0].playerrotation=180-camera.rotation;
 
-			overpoint=person[k].playercoords;
+	//Check people collisions
 
-			overpoint.y+=3000;
+	for(int k=0;k<numpeople;k++){
+		// SBF - backing up the old coordinates makes
+		// the most sense here.
+		person[k].oldplayercoords=person[k].playercoords;
 
-			underpoint=person[k].playercoords;
+		person[k].DoStuff(k);
 
-			underpoint.y-=3000;
+		if(person[k].skeleton.free<1){
 
-			beginx=(person[k].playercoords.x+block_spacing/2)/block_spacing;
+		if(1==1){
 
-			if(beginx<0)beginx=0;
+		person[k].onground=0;
 
-			beginz=(person[k].playercoords.z+block_spacing/2)/block_spacing;
+		overpoint=person[k].playercoords;
 
-			if(beginz<0)beginz=0;
+		overpoint.y+=3000;
 
-			endx=(person[k].playercoords.x+block_spacing/2)/block_spacing+1;
+		underpoint=person[k].playercoords;
 
-			if(endx>num_blocks-1)endx=num_blocks-1;
+		underpoint.y-=3000;
 
-			endz=(person[k].playercoords.z+block_spacing/2)/block_spacing+1;
+		beginx=(person[k].playercoords.x+block_spacing/2)/block_spacing;
 
-			if(endz>num_blocks-1)endz=num_blocks-1;
+		if(beginx<0)beginx=0;
 
-			if(k!=0){
-				/* TODO: huh? */
-				beginx==person[k].whichblockx;
+		beginz=(person[k].playercoords.z+block_spacing/2)/block_spacing;
 
-				beginz==person[k].whichblocky;
+		if(beginz<0)beginz=0;
 
-				endx==person[k].whichblockx;
+		endx=(person[k].playercoords.x+block_spacing/2)/block_spacing+1;
 
-				endz==person[k].whichblocky;
+		if(endx>num_blocks-1)endx=num_blocks-1;
 
-			}
+		endz=(person[k].playercoords.z+block_spacing/2)/block_spacing+1;
 
-			if(beginx<=endx&&beginz<=endz)
+		if(endz>num_blocks-1)endz=num_blocks-1;
 
-			for(int i=beginx;i<=endx;i++)
+		if(k!=0){
+			/* TODO: huh? */
+			beginx==person[k].whichblockx;
 
-				for(int j=beginz;j<=endz;j++){
+			beginz==person[k].whichblocky;
 
-					inblock=0;
+			endx==person[k].whichblockx;
 
-					//Ground collision
+			endz==person[k].whichblocky;
 
-					move=0;
+		}
 
-					move.x=i*block_spacing;
+		if(beginx<=endx&&beginz<=endz)
 
-					move.z=j*block_spacing;
+		for(int i=beginx;i<=endx;i++)
 
-					whichtri=sidewalkcollide.LineCheck2(overpoint,underpoint,&collpoint,move,cityrotation[i][j]*90);
+			for(int j=beginz;j<=endz;j++){
 
-					if(whichtri!=-1&&person[k].playercoords.y<=collpoint.y&&person[k].velocity.y<=0){
+				inblock=0;
 
-						person[k].playercoords.y=collpoint.y;
+				//Ground collision
 
-						person[k].onground=1;
+				move=0;
 
-						if(person[k].velocity.y<-maxfallvel)Splat(k);
+				move.x=i*block_spacing;
 
-						else person[k].velocity.y=0;
+				move.z=j*block_spacing;
 
-					}
+				whichtri=sidewalkcollide.LineCheck2(overpoint,underpoint,&collpoint,move,cityrotation[i][j]*90);
 
-					if(whichtri!=-1){
+				if(whichtri!=-1&&person[k].playercoords.y<=collpoint.y&&person[k].velocity.y<=0){
 
-						inblock=1;
+					person[k].playercoords.y=collpoint.y;
 
-						if(k==0){onblockx=i;onblocky=j;}
+					person[k].onground=1;
 
-					}
+					if(person[k].velocity.y<-maxfallvel)Splat(k);
 
-					//Wall collision
+					else person[k].velocity.y=0;
 
-					if(k==0){
+				}
 
-						if(inblock){
+				if(whichtri!=-1){
 
-							for(int l=0;l<8;l++){
+					inblock=1;
 
-								move=0;
+					if(k==0){onblockx=i;onblocky=j;}
 
-								move.x=i*block_spacing;
+				}
 
-								move.z=j*block_spacing;
+				//Wall collision
 
-								whichtri=blockwalls[citytype[i][j]].LineCheck3(person[k].oldplayercoords+boundingpoints[l],person[k].playercoords+boundingpoints[l],&collpoint,move,cityrotation[i][j]*90,&depth);
+				if(k==0){
 
-								if(whichtri!=-1){
+					if(inblock){
 
-									normalrotated=DoRotation(blockwalls[citytype[i][j]].normals[whichtri],0,cityrotation[i][j]*90,0);
+						for(int l=0;l<8;l++){
 
-									person[k].playercoords+=normalrotated*(-(dotproduct(normalrotated,person[k].playercoords-person[k].oldplayercoords))-depth);
+							move=0;
 
-								}
+							move.x=i*block_spacing;
+
+							move.z=j*block_spacing;
+
+							whichtri=blockwalls[citytype[i][j]].LineCheck3(person[k].oldplayercoords+boundingpoints[l],person[k].playercoords+boundingpoints[l],&collpoint,move,cityrotation[i][j]*90,&depth);
+
+							if(whichtri!=-1){
+
+								normalrotated=DoRotation(blockwalls[citytype[i][j]].normals[whichtri],0,cityrotation[i][j]*90,0);
+
+								person[k].playercoords+=normalrotated*(-(dotproduct(normalrotated,person[k].playercoords-person[k].oldplayercoords))-depth);
 
 							}
 
-							for(int l=0;l<8;l++){
+						}
 
-								pointnum=k+1;
+						for(int l=0;l<8;l++){
 
-								if(pointnum>3)pointnum=0;
+							pointnum=k+1;
 
-								move=0;
+							if(pointnum>3)pointnum=0;
 
-								move.x=i*block_spacing;
+							move=0;
 
-								move.z=j*block_spacing;
+							move.x=i*block_spacing;
 
-								whichtri=blockwalls[citytype[i][j]].LineCheck3(person[k].playercoords+boundingpoints[l],person[k].playercoords+boundingpoints[pointnum],&collpoint,move,cityrotation[i][j]*90,&depth);
+							move.z=j*block_spacing;
 
-								if(whichtri!=-1){
+							whichtri=blockwalls[citytype[i][j]].LineCheck3(person[k].playercoords+boundingpoints[l],person[k].playercoords+boundingpoints[pointnum],&collpoint,move,cityrotation[i][j]*90,&depth);
 
-									normalrotated=DoRotation(blockwalls[citytype[i][j]].normals[whichtri],0,cityrotation[i][j]*90,0);
+							if(whichtri!=-1){
 
-									person[k].playercoords+=normalrotated;
+								normalrotated=DoRotation(blockwalls[citytype[i][j]].normals[whichtri],0,cityrotation[i][j]*90,0);
 
-								}
+								person[k].playercoords+=normalrotated;
 
 							}
 
 						}
 
-						//Roof collision
-
-						if(inblock&&person[k].playercoords.y>30){
+					}
 
-							if(!person[k].onground){
+					//Roof collision
 
-								move=0;
+					if(inblock&&person[k].playercoords.y>30){
 
-								move.x=i*block_spacing;
+						if(!person[k].onground){
 
-								move.z=j*block_spacing;
+							move=0;
 
-								whichtri=blockroofs[citytype[i][j]].LineCheck2(overpoint,underpoint,&collpoint,move,cityrotation[i][j]*90);
+							move.x=i*block_spacing;
 
-								if(whichtri!=-1&&person[k].playercoords.y<=collpoint.y&&person[k].velocity.y<=0){
+							move.z=j*block_spacing;
 
-									person[k].playercoords.y=collpoint.y;
+							whichtri=blockroofs[citytype[i][j]].LineCheck2(overpoint,underpoint,&collpoint,move,cityrotation[i][j]*90);
 
-									person[k].onground=1;
+							if(whichtri!=-1&&person[k].playercoords.y<=collpoint.y&&person[k].velocity.y<=0){
 
-									if(person[k].velocity.y<-maxfallvel)Splat(k);
+								person[k].playercoords.y=collpoint.y;
 
-									else person[k].velocity.y=0;
+								person[k].onground=1;
 
-								}
+								if(person[k].velocity.y<-maxfallvel)Splat(k);
 
-								if(whichtri!=-1)inblock=1;
+								else person[k].velocity.y=0;
 
 							}
 
+							if(whichtri!=-1)inblock=1;
+
 						}
 
 					}
 
 				}
 
-			if(person[k].playercoords.y<=0){
+			}
 
-				person[k].onground=1;
+		if(person[k].playercoords.y<=0){
 
-				person[k].playercoords.y=0;
+			person[k].onground=1;
 
-				if(person[k].velocity.y<-maxfallvel)Splat(k);
+			person[k].playercoords.y=0;
 
-				else person[k].velocity.y=0;
+			if(person[k].velocity.y<-maxfallvel)Splat(k);
 
-				if(k==0)onblockx=-1;onblocky=-1;
+			else person[k].velocity.y=0;
 
-			}
+			if(k==0)onblockx=-1;onblocky=-1;
 
-			// SBF - this is definately in the wrong spot!
-			//person[k].oldplayercoords=person[k].playercoords;
+		}
 
-			}
+		// SBF - this is definately in the wrong spot!
+		//person[k].oldplayercoords=person[k].playercoords;
 
-			}
+		}
 
 		}
 
-		if(IsKeyDown( theKeyMap, MAC_SPACE_KEY )){
+	}
 
-			if(visions==0&&person[0].targetanimation==joganim&&person[0].currentanimation==joganim&&person[0].backwardsanim==0&&person[0].playerrotation==person[0].playerlowrotation){
+	if(IsKeyDown( theKeyMap, MAC_SPACE_KEY )){
 
-				person[0].targetanimation=diveanim;
+		if(visions==0&&person[0].targetanimation==joganim&&person[0].currentanimation==joganim&&person[0].backwardsanim==0&&person[0].playerrotation==person[0].playerlowrotation){
 
-				person[0].targetframe=0;
+			person[0].targetanimation=diveanim;
 
-				person[0].target=0;
+			person[0].targetframe=0;
 
-				person[0].aimamount=0;
+			person[0].target=0;
 
-			}
+			person[0].aimamount=0;
 
 		}
 
-		//Camera
-		camera.oldposition=camera.position;
-		camera.targetoffset=0;
-		camera.targetoffset.z=-5;
+	}
 
-		// Spawn people
-		int cyclenum = 0;
-		int blockspawnx = 0, blockspawny = 0;
-		do {
-			auto block = person[0].playercoords / block_spacing;
-			blockspawnx = block.x + 0.5f + Random() % 2;
-			blockspawny = block.z + 0.5f + Random() % 2;
+	//Camera
+	camera.oldposition=camera.position;
+	camera.targetoffset=0;
+	camera.targetoffset.z=-5;
 
-			auto& people = citypeoplenum[blockspawnx][blockspawny];
-			if (people < max_people_block)
-				break;
-		} while (++cyclenum < 10);
+	// Spawn people
+	int cyclenum = 0;
+	int blockspawnx = 0, blockspawny = 0;
+	do {
+		auto block = person[0].playercoords / block_spacing;
+		blockspawnx = block.x + 0.5f + Random() % 2;
+		blockspawny = block.z + 0.5f + Random() % 2;
 
-		spawndelay -= multiplier;
-		if(cyclenum<10){
+		auto& people = citypeoplenum[blockspawnx][blockspawny];
+		if (people < max_people_block)
+			break;
+	} while (++cyclenum < 10);
 
-		if(spawndelay<0&&numpeople<max_people){
+	spawndelay -= multiplier;
+	if(cyclenum<10){
 
-			if(type==randomshoot_type){
+	if(spawndelay<0&&numpeople<max_people){
 
-				if(abs(Random()%evilprobability)==0)person[numpeople].type=eviltype;
+		if(type==randomshoot_type){
 
-				else person[numpeople].type=civiliantype;
+			if(abs(Random()%evilprobability)==0)person[numpeople].type=eviltype;
 
-			}
+			else person[numpeople].type=civiliantype;
 
-			if(type==zombie_type){
+		}
 
-				person[numpeople].type=zombietype;
+		if(type==zombie_type){
 
-			}
+			person[numpeople].type=zombietype;
 
-			if(person[numpeople].type!=civiliantype&&blockspawnx==person[1].whichblockx&&blockspawny==person[1].whichblocky){
+		}
 
-				while((citypeoplenum[blockspawnx][blockspawny]>=max_people_block&&cyclenum<10)||blockspawnx==0||(blockspawnx==person[1].whichblockx&&blockspawny==person[1].whichblocky)){
+		if(person[numpeople].type!=civiliantype&&blockspawnx==person[1].whichblockx&&blockspawny==person[1].whichblocky){
 
-					blockspawnx=((person[0].playercoords.x+block_spacing/2)/block_spacing)+Random()%2;
+			while((citypeoplenum[blockspawnx][blockspawny]>=max_people_block&&cyclenum<10)||blockspawnx==0||(blockspawnx==person[1].whichblockx&&blockspawny==person[1].whichblocky)){
 
-					blockspawny=((person[0].playercoords.z+block_spacing/2)/block_spacing)+Random()%2;
+				blockspawnx=((person[0].playercoords.x+block_spacing/2)/block_spacing)+Random()%2;
 
-					cyclenum++;
+				blockspawny=((person[0].playercoords.z+block_spacing/2)/block_spacing)+Random()%2;
 
-				}
+				cyclenum++;
 
 			}
 
-			person[numpeople].playerrotation=0;
+		}
 
-			person[numpeople].whichcostume=casualcostumes+abs(Random())%numcasual;
+		person[numpeople].playerrotation=0;
 
-			person[numpeople].whichblockx=blockspawnx;
+		person[numpeople].whichcostume=casualcostumes+abs(Random())%numcasual;
 
-			person[numpeople].whichblocky=blockspawny;
+		person[numpeople].whichblockx=blockspawnx;
 
-			person[numpeople].pathnum=-1;
+		person[numpeople].whichblocky=blockspawny;
 
-			person[numpeople].oldpathnum=-1;
+		person[numpeople].pathnum=-1;
 
-			person[numpeople].oldoldpathnum=-1;
+		person[numpeople].oldpathnum=-1;
 
-			person[numpeople].oldoldoldpathnum=-1;
+		person[numpeople].oldoldpathnum=-1;
 
-			while(person[numpeople].pathnum<0||person[numpeople].pathnum>=path.vertexNum||person[numpeople].pathnum==1){
+		person[numpeople].oldoldoldpathnum=-1;
 
-				person[numpeople].pathnum=Random()%path.vertexNum;
+		while(person[numpeople].pathnum<0||person[numpeople].pathnum>=path.vertexNum||person[numpeople].pathnum==1){
 
-			}
+			person[numpeople].pathnum=Random()%path.vertexNum;
 
-			person[numpeople].pathtarget.x=path.vertex[person[numpeople].pathnum].x;
+		}
 
-			person[numpeople].pathtarget.z=path.vertex[person[numpeople].pathnum].z;
+		person[numpeople].pathtarget.x=path.vertex[person[numpeople].pathnum].x;
 
-			person[numpeople].pathsize=.98+float(abs(Random()%20))/400;
+		person[numpeople].pathtarget.z=path.vertex[person[numpeople].pathnum].z;
 
-			person[numpeople].pathtarget*=person[numpeople].pathsize;
+		person[numpeople].pathsize=.98+float(abs(Random()%20))/400;
 
-			person[numpeople].pathtarget.x+=person[numpeople].whichblockx*block_spacing;
+		person[numpeople].pathtarget*=person[numpeople].pathsize;
 
-			person[numpeople].pathtarget.z+=person[numpeople].whichblocky*block_spacing;
+		person[numpeople].pathtarget.x+=person[numpeople].whichblockx*block_spacing;
 
-			person[numpeople].playercoords=person[numpeople].pathtarget;
+		person[numpeople].pathtarget.z+=person[numpeople].whichblocky*block_spacing;
 
-			person[numpeople].oldplayercoords=person[numpeople].playercoords;
+		person[numpeople].playercoords=person[numpeople].pathtarget;
 
-			person[numpeople].skeleton.free=0;
+		person[numpeople].oldplayercoords=person[numpeople].playercoords;
 
-			person[numpeople].targetanimation=walkanim;
+		person[numpeople].skeleton.free=0;
 
-			if(person[numpeople].type==zombietype)person[numpeople].targetanimation=zombiewalkanim;
+		person[numpeople].targetanimation=walkanim;
 
-			person[numpeople].speed=1;
+		if(person[numpeople].type==zombietype)person[numpeople].targetanimation=zombiewalkanim;
 
-			person[numpeople].existing=0;
+		person[numpeople].speed=1;
 
-			person[numpeople].speedmult=.8+float(abs(Random()%20))/50;
+		person[numpeople].existing=0;
 
-			person[numpeople].health=100;
+		person[numpeople].speedmult=.8+float(abs(Random()%20))/50;
 
-			person[numpeople].maxhealth=100;
+		person[numpeople].health=100;
 
-			person[numpeople].playerrotation2=0;
+		person[numpeople].maxhealth=100;
 
-			person[numpeople].lastdistancevictim=200000;
+		person[numpeople].playerrotation2=0;
 
-			if(person[numpeople].skeleton.broken)person[numpeople].skeleton.Load((char *)":Data:Skeleton:Basic Figure");
+		person[numpeople].lastdistancevictim=200000;
 
-			if(numpeople==1)person[numpeople].type=viptype;
+		if(person[numpeople].skeleton.broken)person[numpeople].skeleton.Load((char *)":Data:Skeleton:Basic Figure");
 
-			person[numpeople].killtarget=-1;
+		if(numpeople==1)person[numpeople].type=viptype;
 
-			if(person[numpeople].type==eviltype){person[numpeople].existing=1; person[numpeople].pathsize=1.04; person[numpeople].whichgun=nogun; person[numpeople].aiming=1; person[numpeople].killtarget=-1; person[numpeople].speedmult=1+.3*difficulty;}
+		person[numpeople].killtarget=-1;
 
-			if(person[numpeople].type==zombietype){person[numpeople].existing=1; person[numpeople].pathsize=1.04; person[numpeople].whichgun=nogun; person[numpeople].aiming=0; person[numpeople].killtarget=-1; person[numpeople].speedmult=0.7+.2*difficulty;}
+		if(person[numpeople].type==eviltype){person[numpeople].existing=1; person[numpeople].pathsize=1.04; person[numpeople].whichgun=nogun; person[numpeople].aiming=1; person[numpeople].killtarget=-1; person[numpeople].speedmult=1+.3*difficulty;}
 
-			else {person[numpeople].whichgun=nogun; person[numpeople].aiming=0; person[numpeople].killtarget=-1;}
+		if(person[numpeople].type==zombietype){person[numpeople].existing=1; person[numpeople].pathsize=1.04; person[numpeople].whichgun=nogun; person[numpeople].aiming=0; person[numpeople].killtarget=-1; person[numpeople].speedmult=0.7+.2*difficulty;}
 
-			if(person[numpeople].type==viptype){person[numpeople].existing=1;}
+		else {person[numpeople].whichgun=nogun; person[numpeople].aiming=0; person[numpeople].killtarget=-1;}
 
-			if(enemystate==2)person[numpeople].killtarget=1;
+		if(person[numpeople].type==viptype){person[numpeople].existing=1;}
 
-			numpeople++;
+		if(enemystate==2)person[numpeople].killtarget=1;
 
-			citypeoplenum[blockspawnx][blockspawny]++;
+		numpeople++;
 
-			spawndelay=.1;
+		citypeoplenum[blockspawnx][blockspawny]++;
 
-		}
+		spawndelay=.1;
 
-		if(spawndelay<0&&numpeople>=max_people){
+	}
 
-			if(cycle>=max_people)cycle=0;
+	if(spawndelay<0&&numpeople>=max_people){
 
-			cyclenum=0;
+		if(cycle>=max_people)cycle=0;
 
-			while(cyclenum<max_people&&(person[cycle].type==playertype||person[cycle].type==viptype||(abs(person[cycle].whichblockx-((person[0].playercoords.x+block_spacing/2)/block_spacing))<2&&abs(person[cycle].whichblocky-((person[0].playercoords.z+block_spacing/2)/block_spacing))<2))){
+		cyclenum=0;
 
-				cycle++;
+		while(cyclenum<max_people&&(person[cycle].type==playertype||person[cycle].type==viptype||(abs(person[cycle].whichblockx-((person[0].playercoords.x+block_spacing/2)/block_spacing))<2&&abs(person[cycle].whichblocky-((person[0].playercoords.z+block_spacing/2)/block_spacing))<2))){
 
-				cyclenum++;
+			cycle++;
 
-				if(cycle>=max_people)cycle=0;
+			cyclenum++;
 
-			}
+			if(cycle>=max_people)cycle=0;
 
-			if(cycle<max_people&&cyclenum<max_people){
+		}
 
-				if(type==randomshoot_type){
+		if(cycle<max_people&&cyclenum<max_people){
 
-					if(abs(Random()%evilprobability)==0)person[cycle].type=eviltype;
+			if(type==randomshoot_type){
 
-					else person[cycle].type=civiliantype;
+				if(abs(Random()%evilprobability)==0)person[cycle].type=eviltype;
 
-				}
+				else person[cycle].type=civiliantype;
 
-				if(type==zombie_type){
+			}
 
-					person[cycle].type=zombietype;
+			if(type==zombie_type){
 
-				}
+				person[cycle].type=zombietype;
 
-				if(person[cycle].type!=civiliantype&&blockspawnx==person[1].whichblockx&&blockspawny==person[1].whichblocky){
+			}
 
-					while((citypeoplenum[blockspawnx][blockspawny]>=max_people_block&&cyclenum<10)||blockspawnx==0||(blockspawnx==person[1].whichblockx&&blockspawny==person[1].whichblocky)){
+			if(person[cycle].type!=civiliantype&&blockspawnx==person[1].whichblockx&&blockspawny==person[1].whichblocky){
 
-						blockspawnx=((person[0].playercoords.x+block_spacing/2)/block_spacing)+Random()%2;
+				while((citypeoplenum[blockspawnx][blockspawny]>=max_people_block&&cyclenum<10)||blockspawnx==0||(blockspawnx==person[1].whichblockx&&blockspawny==person[1].whichblocky)){
 
-						blockspawny=((person[0].playercoords.z+block_spacing/2)/block_spacing)+Random()%2;
+					blockspawnx=((person[0].playercoords.x+block_spacing/2)/block_spacing)+Random()%2;
 
-						cyclenum++;
+					blockspawny=((person[0].playercoords.z+block_spacing/2)/block_spacing)+Random()%2;
 
-					}
+					cyclenum++;
 
 				}
 
-				person[cycle].playerrotation=0;
+			}
 
-				person[cycle].whichcostume=casualcostumes+abs(Random())%numcasual;
+			person[cycle].playerrotation=0;
 
-				citypeoplenum[person[cycle].whichblockx][person[cycle].whichblocky]--;
+			person[cycle].whichcostume=casualcostumes+abs(Random())%numcasual;
 
-				person[cycle].whichblockx=blockspawnx;
+			citypeoplenum[person[cycle].whichblockx][person[cycle].whichblocky]--;
 
-				person[cycle].whichblocky=blockspawny;
+			person[cycle].whichblockx=blockspawnx;
 
-				person[cycle].pathnum=-1;
+			person[cycle].whichblocky=blockspawny;
 
-				person[cycle].oldpathnum=-1;
+			person[cycle].pathnum=-1;
 
-				person[cycle].oldoldpathnum=-1;
+			person[cycle].oldpathnum=-1;
 
-				person[cycle].oldoldoldpathnum=-1;
+			person[cycle].oldoldpathnum=-1;
 
-				while(person[cycle].pathnum<0||person[cycle].pathnum>=path.vertexNum||person[cycle].pathnum==1){
+			person[cycle].oldoldoldpathnum=-1;
 
-					person[cycle].pathnum=Random()%path.vertexNum;
+			while(person[cycle].pathnum<0||person[cycle].pathnum>=path.vertexNum||person[cycle].pathnum==1){
 
-				}
+				person[cycle].pathnum=Random()%path.vertexNum;
 
-				person[cycle].pathtarget.x=path.vertex[person[cycle].pathnum].x;
+			}
 
-				person[cycle].pathtarget.z=path.vertex[person[cycle].pathnum].z;
+			person[cycle].pathtarget.x=path.vertex[person[cycle].pathnum].x;
 
-				person[cycle].pathsize=.98+float(abs(Random()%20))/400;
+			person[cycle].pathtarget.z=path.vertex[person[cycle].pathnum].z;
 
-				person[cycle].pathtarget*=person[cycle].pathsize;
+			person[cycle].pathsize=.98+float(abs(Random()%20))/400;
 
-				person[cycle].pathtarget.x+=person[cycle].whichblockx*block_spacing;
+			person[cycle].pathtarget*=person[cycle].pathsize;
 
-				person[cycle].pathtarget.z+=person[cycle].whichblocky*block_spacing;
+			person[cycle].pathtarget.x+=person[cycle].whichblockx*block_spacing;
 
-				person[cycle].playercoords=person[cycle].pathtarget;
+			person[cycle].pathtarget.z+=person[cycle].whichblocky*block_spacing;
 
-				person[cycle].oldplayercoords=person[cycle].playercoords;
+			person[cycle].playercoords=person[cycle].pathtarget;
 
-				person[cycle].skeleton.free=0;
+			person[cycle].oldplayercoords=person[cycle].playercoords;
 
-				person[cycle].targetanimation=walkanim;
+			person[cycle].skeleton.free=0;
 
-				if(person[cycle].type==zombietype)person[cycle].targetanimation=zombiewalkanim;
+			person[cycle].targetanimation=walkanim;
 
-				person[cycle].speed=1;
+			if(person[cycle].type==zombietype)person[cycle].targetanimation=zombiewalkanim;
 
-				person[cycle].existing=0;
+			person[cycle].speed=1;
 
-				person[cycle].speedmult=.8+float(abs(Random()%20))/50;
+			person[cycle].existing=0;
 
-				person[cycle].health=100;
+			person[cycle].speedmult=.8+float(abs(Random()%20))/50;
 
-				person[cycle].maxhealth=100;
+			person[cycle].health=100;
 
-				person[cycle].playerrotation2=0;
+			person[cycle].maxhealth=100;
 
-				if(person[cycle].skeleton.broken)person[cycle].skeleton.Load((char *)":Data:Skeleton:Basic Figure");
+			person[cycle].playerrotation2=0;
 
-				if(enemystate==1)person[cycle].killtarget=-1;
+			if(person[cycle].skeleton.broken)person[cycle].skeleton.Load((char *)":Data:Skeleton:Basic Figure");
 
-				if(person[cycle].type==eviltype){person[cycle].existing=1;  person[cycle].pathsize=1.04; person[cycle].whichgun=nogun; person[cycle].aiming=1; person[cycle].killtarget=-1; person[cycle].speedmult=1+.3*difficulty;}
+			if(enemystate==1)person[cycle].killtarget=-1;
 
-				if(person[cycle].type==zombietype){person[cycle].existing=1; person[cycle].pathsize=1.04; person[cycle].whichgun=nogun; person[cycle].aiming=0; person[cycle].killtarget=-1; person[cycle].speedmult=.7+.2*difficulty;}
+			if(person[cycle].type==eviltype){person[cycle].existing=1;  person[cycle].pathsize=1.04; person[cycle].whichgun=nogun; person[cycle].aiming=1; person[cycle].killtarget=-1; person[cycle].speedmult=1+.3*difficulty;}
 
-				else {person[cycle].whichgun=nogun; person[cycle].aiming=0; person[cycle].killtarget=-1;}
+			if(person[cycle].type==zombietype){person[cycle].existing=1; person[cycle].pathsize=1.04; person[cycle].whichgun=nogun; person[cycle].aiming=0; person[cycle].killtarget=-1; person[cycle].speedmult=.7+.2*difficulty;}
 
-				person[cycle].lastdistancevictim=200000;
+			else {person[cycle].whichgun=nogun; person[cycle].aiming=0; person[cycle].killtarget=-1;}
 
-				if(enemystate==2)person[cycle].killtarget=1;
+			person[cycle].lastdistancevictim=200000;
 
-				if(numpeople<max_people)numpeople++;
+			if(enemystate==2)person[cycle].killtarget=1;
 
-				citypeoplenum[blockspawnx][blockspawny]++;
+			if(numpeople<max_people)numpeople++;
 
-				cycle++;
+			citypeoplenum[blockspawnx][blockspawny]++;
 
-				spawndelay=.1;
+			cycle++;
 
-			}
-
-		}}
-
-		XYZ towards;
-		XYZ finaltarget;
-		XYZ blah;
-		int closesttarget = 0;
-		float leastdistance = 0.0;
-		XYZ bleedloc;
-		XYZ vel;
-		float tooclose;
-		float toofar;
-
-		//People
-		for(int i=0;i<numpeople;i++){
-			if(person[i].health<0&&person[i].longdead<0&&person[i].firstlongdead==0){
-				if(person[i].type!=zombietype){
-					overpoint=person[i].skeleton.joints[person[i].skeleton.jointlabels[abdomen]].position;
-					overpoint.y+=3000;
-					underpoint=person[i].skeleton.joints[person[i].skeleton.jointlabels[abdomen]].position;
-					underpoint.y-=3000;
+			spawndelay=.1;
 
-					move=0;
-					move.x=person[i].whichblockx*block_spacing;
-					move.z=person[i].whichblocky*block_spacing;
+		}
 
-					XYZ temp;
-					whichtri=sidewalkcollide.LineCheck2(overpoint,underpoint,&temp,move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
+	}}
+
+	XYZ towards;
+	XYZ finaltarget;
+	XYZ blah;
+	int closesttarget = 0;
+	float leastdistance = 0.0;
+	XYZ bleedloc;
+	XYZ vel;
+	float tooclose;
+	float toofar;
+
+	//People
+	for(int i=0;i<numpeople;i++){
+		if(person[i].health<0&&person[i].longdead<0&&person[i].firstlongdead==0){
+			if(person[i].type!=zombietype){
+				overpoint=person[i].skeleton.joints[person[i].skeleton.jointlabels[abdomen]].position;
+				overpoint.y+=3000;
+				underpoint=person[i].skeleton.joints[person[i].skeleton.jointlabels[abdomen]].position;
+				underpoint.y-=3000;
 
-					XYZ normish;
-					normish=0;
-					normish.y=1;
+				move=0;
+				move.x=person[i].whichblockx*block_spacing;
+				move.z=person[i].whichblocky*block_spacing;
 
-					if(whichtri>=0){
-						decals.MakeDecal(bloodpool,temp,12,normish, whichtri, &sidewalkcollide, move, cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
-					}
-					if(whichtri==-1){
-						temp=person[i].skeleton.joints[person[i].skeleton.jointlabels[abdomen]].position;
-						temp.y=-.5;
-						move=0;
-						decals.MakeDecal(bloodpool,temp,12,normish, 0, &sidewalkcollide, move, 0);
-					}
+				XYZ temp;
+				whichtri=sidewalkcollide.LineCheck2(overpoint,underpoint,&temp,move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
 
-					person[i].firstlongdead=1;
+				XYZ normish;
+				normish=0;
+				normish.y=1;
 
+				if(whichtri>=0){
+					decals.MakeDecal(bloodpool,temp,12,normish, whichtri, &sidewalkcollide, move, cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
+				}
+				if(whichtri==-1){
+					temp=person[i].skeleton.joints[person[i].skeleton.jointlabels[abdomen]].position;
+					temp.y=-.5;
+					move=0;
+					decals.MakeDecal(bloodpool,temp,12,normish, 0, &sidewalkcollide, move, 0);
 				}
 
-			}
+				person[i].firstlongdead=1;
 
-			if(person[i].health<100&&person[i].type!=zombietype){
-			 		person[i].health-=multiplier*120;
 			}
 
-			if(person[i].health<100&&person[i].type==zombietype){
-			 		person[i].health+=multiplier*10;
-			 		if(person[i].health>person[i].maxhealth)person[i].health=person[i].maxhealth;
-			}
+		}
 
-			if(person[i].health<100&&person[i].type==zombietype&&person[i].skeleton.free==1){
-			 		person[i].health+=multiplier*10;
-			 		if(person[i].health>person[i].maxhealth)person[i].health=person[i].maxhealth;
-			}
+		if(person[i].health<100&&person[i].type!=zombietype){
+		 		person[i].health-=multiplier*120;
+		}
 
-			if(person[i].health<40&&person[i].type==zombietype){
-			 		person[i].speedmult-=multiplier/20;
-			 		if(person[i].speedmult<.6){
-						person[i].speedmult=.6;
-						person[i].killtarget=-1;
-					}
-			}
+		if(person[i].health<100&&person[i].type==zombietype){
+		 		person[i].health+=multiplier*10;
+		 		if(person[i].health>person[i].maxhealth)person[i].health=person[i].maxhealth;
+		}
 
-			if(person[i].health>=40&&person[i].type==zombietype){
-			 		person[i].speedmult+=multiplier/40;
-			 		if(person[i].speedmult>.7+difficulty*.2){
-						person[i].speedmult=.7+difficulty*.2;
-						person[i].killtarget=1;
-					}
-			}
+		if(person[i].health<100&&person[i].type==zombietype&&person[i].skeleton.free==1){
+		 		person[i].health+=multiplier*10;
+		 		if(person[i].health>person[i].maxhealth)person[i].health=person[i].maxhealth;
+		}
 
-			if(person[i].maxhealth<100&&person[i].type==zombietype){
-			 		person[i].maxhealth+=multiplier*2;
-			 		if(person[i].maxhealth>100)person[i].maxhealth=100;
-			}
+		if(person[i].health<40&&person[i].type==zombietype){
+		 		person[i].speedmult-=multiplier/20;
+		 		if(person[i].speedmult<.6){
+					person[i].speedmult=.6;
+					person[i].killtarget=-1;
+				}
+		}
 
-			if(person[i].bleeding>0){
-				person[i].bleeding-=multiplier;
-				person[i].bleeddelay-=multiplier*10;
-				if(person[i].bleeddelay<=0){
-					person[i].bleeddelay=1;
-					if(person[i].skeleton.free==0){
-						bleedloc=DoRotation((person[i].bjoint1->position+person[i].bjoint2->position)/2,0,person[i].playerrotation,0)+person[i].playercoords;
-					}
-					if(person[i].skeleton.free>0){
-						bleedloc=(person[i].bjoint1->position+person[i].bjoint2->position)/2;
-					}
-					vel=0;
-					sprites.MakeSprite(bloodspritedown, .6, 1, .2, .2,bleedloc, vel, 3*person[i].bleeding);
+		if(person[i].health>=40&&person[i].type==zombietype){
+		 		person[i].speedmult+=multiplier/40;
+		 		if(person[i].speedmult>.7+difficulty*.2){
+					person[i].speedmult=.7+difficulty*.2;
+					person[i].killtarget=1;
 				}
+		}
 
+		if(person[i].maxhealth<100&&person[i].type==zombietype){
+		 		person[i].maxhealth+=multiplier*2;
+		 		if(person[i].maxhealth>100)person[i].maxhealth=100;
+		}
+
+		if(person[i].bleeding>0){
+			person[i].bleeding-=multiplier;
+			person[i].bleeddelay-=multiplier*10;
+			if(person[i].bleeddelay<=0){
+				person[i].bleeddelay=1;
+				if(person[i].skeleton.free==0){
+					bleedloc=DoRotation((person[i].bjoint1->position+person[i].bjoint2->position)/2,0,person[i].playerrotation,0)+person[i].playercoords;
+				}
+				if(person[i].skeleton.free>0){
+					bleedloc=(person[i].bjoint1->position+person[i].bjoint2->position)/2;
+				}
+				vel=0;
+				sprites.MakeSprite(bloodspritedown, .6, 1, .2, .2,bleedloc, vel, 3*person[i].bleeding);
 			}
 
-			if(person[i].skeleton.free==0){
-				//Gun
-				if(person[i].type==playertype||person[i].type==eviltype){
-					if(i==0){
-						if(person[i].whichgun==shotgun)person[i].recoil-=multiplier*4;
-					 	if(person[i].whichgun==sniperrifle)person[i].recoil-=multiplier*2;
-					 	if(person[i].whichgun==handgun1)person[i].recoil-=multiplier*5;
-					 	if(person[i].whichgun==handgun2)person[i].recoil-=multiplier*5;
-					 	if(person[i].whichgun==assaultrifle)person[i].recoil-=multiplier*10;
-				 	}
-
-				 	if(i!=0){
-						if(person[i].whichgun==shotgun)person[i].recoil-=multiplier*1;
-					 	if(person[i].whichgun==sniperrifle)person[i].recoil-=multiplier*1;
-					 	if(person[i].whichgun==handgun1)person[i].recoil-=multiplier*2;
-					 	if(person[i].whichgun==handgun2)person[i].recoil-=multiplier*2;
-					 	if(person[i].whichgun==assaultrifle)person[i].recoil-=multiplier*10;
-				 	}
-
-				 	if(person[i].recoil<0)person[i].recoil=0;
-
-					if(i==0){
-						if(zoom){
-							mousesensitivity=.05*usermousesensitivity;
-							if(person[i].targetanimation!=crouchanim||person[i].currentanimation!=crouchanim||person[i].aiming<1){
-								zoom=0;
-							}
-							if(visions==1)zoom=0;
-						}
+		}
 
-						if(person[i].currentanimation==crouchanim&&person[i].targetanimation==crouchanim&&person[i].aiming>=1&&person[i].whichgun==sniperrifle){
-							zoom=1;
-							if(zoom&&!oldzoom)camera.rotation2-=6;
-						}
+		if(person[i].skeleton.free==0){
+			//Gun
+			if(person[i].type==playertype||person[i].type==eviltype){
+				if(i==0){
+					if(person[i].whichgun==shotgun)person[i].recoil-=multiplier*4;
+				 	if(person[i].whichgun==sniperrifle)person[i].recoil-=multiplier*2;
+				 	if(person[i].whichgun==handgun1)person[i].recoil-=multiplier*5;
+				 	if(person[i].whichgun==handgun2)person[i].recoil-=multiplier*5;
+				 	if(person[i].whichgun==assaultrifle)person[i].recoil-=multiplier*10;
+			 	}
 
-						if(!zoom)mousesensitivity=1*usermousesensitivity;
+			 	if(i!=0){
+					if(person[i].whichgun==shotgun)person[i].recoil-=multiplier*1;
+				 	if(person[i].whichgun==sniperrifle)person[i].recoil-=multiplier*1;
+				 	if(person[i].whichgun==handgun1)person[i].recoil-=multiplier*2;
+				 	if(person[i].whichgun==handgun2)person[i].recoil-=multiplier*2;
+				 	if(person[i].whichgun==assaultrifle)person[i].recoil-=multiplier*10;
+			 	}
+
+			 	if(person[i].recoil<0)person[i].recoil=0;
 
-						if(person[i].whichgun!=sniperrifle)zoom=0;
+				if(i==0){
+					if(zoom){
+						mousesensitivity=.05*usermousesensitivity;
+						if(person[i].targetanimation!=crouchanim||person[i].currentanimation!=crouchanim||person[i].aiming<1){
+							zoom=0;
+						}
+						if(visions==1)zoom=0;
 					}
-				}
 
-				//Zombie eat
-				if(i > 0
-				   && person[i].targetanimation == zombieeatanim
-				   && person[person[i].killtarget].eaten == i) {
-			 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[head]].locked=1;
-			 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[rightshoulder]].locked=1;
-
-				 	for(int k=0;k<2;k++){
-			 			person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[head]].position=DoRotation(person[i].skeleton.joints[person[i].skeleton.jointlabels[righthand]].position,0,person[i].playerrotation,0)+person[i].playercoords;
-				 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[head]].velocity=0;
-				 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[rightshoulder]].position=DoRotation(person[i].skeleton.joints[person[i].skeleton.jointlabels[lefthand]].position,0,person[i].playerrotation,0)+person[i].playercoords;
-				 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[rightshoulder]].velocity=0;
-				 		person[person[i].killtarget].skeleton.DoConstraints();
-						person[person[i].killtarget].skeleton.DoConstraints(&blocksimplecollide[citytype[person[i].whichblockx][person[i].whichblocky]],&move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
+					if(person[i].currentanimation==crouchanim&&person[i].targetanimation==crouchanim&&person[i].aiming>=1&&person[i].whichgun==sniperrifle){
+						zoom=1;
+						if(zoom&&!oldzoom)camera.rotation2-=6;
 					}
 
-					person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[head]].locked=0;
-			 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[rightshoulder]].locked=0;
-			 		person[person[i].killtarget].longdead=1;
-			 	}
+					if(!zoom)mousesensitivity=1*usermousesensitivity;
 
-				if(i>0&&enemystate!=1&&person[i].type==zombietype&&person[i].speedmult>.7){
-					if(findDistancefast(person[i].playercoords,person[1].playercoords)<20000)person[i].killtarget=1;
-					else person[i].killtarget=-1;
+					if(person[i].whichgun!=sniperrifle)zoom=0;
 				}
+			}
 
-				if(i>0&&enemystate!=1&&person[i].type==zombietype&&person[i].speedmult<.7){
-					person[i].killtarget=-1;
+			//Zombie eat
+			if(i > 0
+			   && person[i].targetanimation == zombieeatanim
+			   && person[person[i].killtarget].eaten == i) {
+		 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[head]].locked=1;
+		 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[rightshoulder]].locked=1;
+
+			 	for(int k=0;k<2;k++){
+		 			person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[head]].position=DoRotation(person[i].skeleton.joints[person[i].skeleton.jointlabels[righthand]].position,0,person[i].playerrotation,0)+person[i].playercoords;
+			 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[head]].velocity=0;
+			 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[rightshoulder]].position=DoRotation(person[i].skeleton.joints[person[i].skeleton.jointlabels[lefthand]].position,0,person[i].playerrotation,0)+person[i].playercoords;
+			 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[rightshoulder]].velocity=0;
+			 		person[person[i].killtarget].skeleton.DoConstraints();
+					person[person[i].killtarget].skeleton.DoConstraints(&blocksimplecollide[citytype[person[i].whichblockx][person[i].whichblocky]],&move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
 				}
 
-				bool realcheck = false;
-
-				//Pathfinding
-			 	if(i>0&&person[i].targetanimation!=getupfrontanim&&person[i].targetanimation!=thrownanim&&person[i].targetanimation!=getupbackanim&&person[i].currentanimation!=getupfrontanim&&person[i].currentanimation!=getupbackanim){
+				person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[head]].locked=0;
+		 		person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[rightshoulder]].locked=0;
+		 		person[person[i].killtarget].longdead=1;
+		 	}
 
-			 		person[i].pathcheckdelay-=multiplier;
+			if(i>0&&enemystate!=1&&person[i].type==zombietype&&person[i].speedmult>.7){
+				if(findDistancefast(person[i].playercoords,person[1].playercoords)<20000)person[i].killtarget=1;
+				else person[i].killtarget=-1;
+			}
 
-					// Realcheck tells us
-					// a) we've got close to the end of our path or
-					// b) we're moving away from our target
-			 		realcheck=(abs(person[i].playercoords.x-person[i].pathtarget.x)<1&&abs(person[i].playercoords.z-person[i].pathtarget.z)<1)
-					  ||findDistancefast(person[i].playercoords,person[i].pathtarget)>findDistancefast(person[i].oldplayercoords,person[i].pathtarget);
+			if(i>0&&enemystate!=1&&person[i].type==zombietype&&person[i].speedmult<.7){
+				person[i].killtarget=-1;
+			}
 
-					if(person[i].targetanimation==idleanim&&person[i].killtargetvisible==0){
-						person[i].targetanimation=walkanim;
-						if(person[i].type==zombietype)person[i].targetanimation=zombiewalkanim;
-						realcheck=1;
-					}
+			bool realcheck = false;
 
-					if((realcheck||((person[i].killtarget>-1&&person[i].type!=civiliantype)&&person[i].pathcheckdelay<=0)||person[i].killtargetvisible)){
-				 		person[i].pathcheckdelay=1.2;
-
-				 		if((person[i].killtarget==-1||person[i].type==civiliantype)&&!person[i].running){
-					 		person[i].killtargetvisible=0;
-					 		leastdistance=2000000;
-					 		for(int j=0;j<path.vertexNum;j++){
-					 			person[i].pathtarget.x=path.vertex[j].x;
-								person[i].pathtarget.z=path.vertex[j].z;
-								person[i].pathtarget.y=path.vertex[j].y;
-								person[i].pathtarget*=person[i].pathsize;
-								person[i].pathtarget.x+=person[i].whichblockx*block_spacing;
-								person[i].pathtarget.z+=person[i].whichblocky*block_spacing;
-
-								if(findDistancefast(person[i].playercoords,person[i].pathtarget)<leastdistance&&j!=1&&j!=person[i].oldpathnum&&j!=person[i].oldoldpathnum&&j!=person[i].oldoldoldpathnum){
-									leastdistance=findDistancefast(person[i].playercoords,person[i].pathtarget);
-									closesttarget=j;
-								}
-					 		}
-
-					 		if(closesttarget>=0&&closesttarget<path.vertexNum){
-						 		person[i].oldoldoldpathnum=person[i].oldoldpathnum;
-						 		person[i].oldoldpathnum=person[i].oldpathnum;
-						 		person[i].oldpathnum=person[i].pathnum;
-						 		person[i].pathnum=closesttarget;
-								person[i].pathtarget.x=path.vertex[person[i].pathnum].x;
-								person[i].pathtarget.z=path.vertex[person[i].pathnum].z;
-								person[i].pathtarget*=person[i].pathsize;
-								person[i].pathtarget.x+=person[i].whichblockx*block_spacing;
-								person[i].pathtarget.z+=person[i].whichblocky*block_spacing;
-							}
-						}
+			//Pathfinding
+		 	if(i>0&&person[i].targetanimation!=getupfrontanim&&person[i].targetanimation!=thrownanim&&person[i].targetanimation!=getupbackanim&&person[i].currentanimation!=getupfrontanim&&person[i].currentanimation!=getupbackanim){
 
-						if(person[i].running&&realcheck){
-							person[i].killtargetvisible=0;
-							person[i].targetanimation=joganim;
+		 		person[i].pathcheckdelay-=multiplier;
 
-							//Dead target?
-							if(person[person[i].killtarget].health<=0){
-							 	person[i].running=0;
-							 }
+				// Realcheck tells us
+				// a) we've got close to the end of our path or
+				// b) we're moving away from our target
+		 		realcheck=(abs(person[i].playercoords.x-person[i].pathtarget.x)<1&&abs(person[i].playercoords.z-person[i].pathtarget.z)<1)
+				  ||findDistancefast(person[i].playercoords,person[i].pathtarget)>findDistancefast(person[i].oldplayercoords,person[i].pathtarget);
 
-							 person[i].killtarget=1;
-
-							 //If pathfind
-							if(realcheck){
-					 		leastdistance=2000000;
-					 		person[i].lastdistancevictim=0;
-					 		closesttarget=-1;
-
-					 		//Check best path
-					 		closesttarget=person[i].pathnum;
-
-					 		//Check other blocks?
-					 		if ((closesttarget==person[i].pathnum)){
-					 			beginx=person[i].whichblockx-2;
-								if(beginx<0)beginx=0;
-								beginz=person[i].whichblocky-2;
-								if(beginz<0)beginz=0;
-								endx=person[i].whichblockx+2;
-								if(endx>num_blocks-1)endx=num_blocks-1;
-								endz=person[i].whichblocky+2;
-								if(endz>num_blocks-1)endz=num_blocks-1;
-								leastdistance=2000000;
-
-					 			for(int l=beginx;l<=endx;l++){
-									for(int m=beginx;m<=endx;m++){
-								 		for(int j=0;j<path.vertexNum;j++){
-								 			person[i].pathtarget.x=path.vertex[j].x;
-											person[i].pathtarget.y=path.vertex[j].y;
-											person[i].pathtarget.z=path.vertex[j].z;
-											person[i].pathtarget*=person[i].pathsize;
-											person[i].pathtarget.x+=l*block_spacing;
-											person[i].pathtarget.z+=m*block_spacing;
-
-											if(findDistancefast(person[i].playercoords,person[i].pathtarget)<leastdistance&&findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords)>findDistancefast(person[i].playercoords,person[person[i].killtarget].playercoords)&&j!=1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[person[i].whichblockx][person[i].whichblocky])==-1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[l][m])==-1){
-												person[i].lastdistancevictim=findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords);
-												leastdistance=findDistancefast(person[i].playercoords,person[i].pathtarget);
-												closesttarget=j;
-												finaltarget=person[i].pathtarget;
-												person[i].whichblockx=l;
-												person[i].whichblocky=m;
-					 						}
-								 		}
-								 		}
-								 	}
-								 }
+				if(person[i].targetanimation==idleanim&&person[i].killtargetvisible==0){
+					person[i].targetanimation=walkanim;
+					if(person[i].type==zombietype)person[i].targetanimation=zombiewalkanim;
+					realcheck=1;
+				}
 
-					  		if(closesttarget!=-1){
-								person[i].pathnum=closesttarget;
-								person[i].pathtarget=finaltarget;
-							}
+				if((realcheck||((person[i].killtarget>-1&&person[i].type!=civiliantype)&&person[i].pathcheckdelay<=0)||person[i].killtargetvisible)){
+			 		person[i].pathcheckdelay=1.2;
+
+			 		if((person[i].killtarget==-1||person[i].type==civiliantype)&&!person[i].running){
+				 		person[i].killtargetvisible=0;
+				 		leastdistance=2000000;
+				 		for(int j=0;j<path.vertexNum;j++){
+				 			person[i].pathtarget.x=path.vertex[j].x;
+							person[i].pathtarget.z=path.vertex[j].z;
+							person[i].pathtarget.y=path.vertex[j].y;
+							person[i].pathtarget*=person[i].pathsize;
+							person[i].pathtarget.x+=person[i].whichblockx*block_spacing;
+							person[i].pathtarget.z+=person[i].whichblocky*block_spacing;
+
+							if(findDistancefast(person[i].playercoords,person[i].pathtarget)<leastdistance&&j!=1&&j!=person[i].oldpathnum&&j!=person[i].oldoldpathnum&&j!=person[i].oldoldoldpathnum){
+								leastdistance=findDistancefast(person[i].playercoords,person[i].pathtarget);
+								closesttarget=j;
 							}
+				 		}
+
+				 		if(closesttarget>=0&&closesttarget<path.vertexNum){
+					 		person[i].oldoldoldpathnum=person[i].oldoldpathnum;
+					 		person[i].oldoldpathnum=person[i].oldpathnum;
+					 		person[i].oldpathnum=person[i].pathnum;
+					 		person[i].pathnum=closesttarget;
+							person[i].pathtarget.x=path.vertex[person[i].pathnum].x;
+							person[i].pathtarget.z=path.vertex[person[i].pathnum].z;
+							person[i].pathtarget*=person[i].pathsize;
+							person[i].pathtarget.x+=person[i].whichblockx*block_spacing;
+							person[i].pathtarget.z+=person[i].whichblocky*block_spacing;
 						}
+					}
 
-						//Assassin
-						if((person[i].killtarget>-1&&person[i].type!=civiliantype)&&!person[i].running){
-							//Dead target?
-							if(person[person[i].killtarget].health<=0&&person[i].type==eviltype){
-							 	person[i].playerrotation2=0;
-							 	person[i].whichgun=nogun;
-							 	person[i].targetanimation=walkanim;
-							 	person[i].lastdistancevictim=200000;
-							 	person[i].pathnum=-1;
-							 	enemystate=1;
-							 	person[i].killtarget=-1;
-							 	realcheck=1;
+					if(person[i].running&&realcheck){
+						person[i].killtargetvisible=0;
+						person[i].targetanimation=joganim;
+
+						//Dead target?
+						if(person[person[i].killtarget].health<=0){
+						 	person[i].running=0;
+						 }
+
+						 person[i].killtarget=1;
+
+						 //If pathfind
+						if(realcheck){
+				 		leastdistance=2000000;
+				 		person[i].lastdistancevictim=0;
+				 		closesttarget=-1;
+
+				 		//Check best path
+				 		closesttarget=person[i].pathnum;
+
+				 		//Check other blocks?
+				 		if ((closesttarget==person[i].pathnum)){
+				 			beginx=person[i].whichblockx-2;
+							if(beginx<0)beginx=0;
+							beginz=person[i].whichblocky-2;
+							if(beginz<0)beginz=0;
+							endx=person[i].whichblockx+2;
+							if(endx>num_blocks-1)endx=num_blocks-1;
+							endz=person[i].whichblocky+2;
+							if(endz>num_blocks-1)endz=num_blocks-1;
+							leastdistance=2000000;
+
+				 			for(int l=beginx;l<=endx;l++){
+								for(int m=beginx;m<=endx;m++){
+							 		for(int j=0;j<path.vertexNum;j++){
+							 			person[i].pathtarget.x=path.vertex[j].x;
+										person[i].pathtarget.y=path.vertex[j].y;
+										person[i].pathtarget.z=path.vertex[j].z;
+										person[i].pathtarget*=person[i].pathsize;
+										person[i].pathtarget.x+=l*block_spacing;
+										person[i].pathtarget.z+=m*block_spacing;
+
+										if(findDistancefast(person[i].playercoords,person[i].pathtarget)<leastdistance&&findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords)>findDistancefast(person[i].playercoords,person[person[i].killtarget].playercoords)&&j!=1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[person[i].whichblockx][person[i].whichblocky])==-1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[l][m])==-1){
+											person[i].lastdistancevictim=findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords);
+											leastdistance=findDistancefast(person[i].playercoords,person[i].pathtarget);
+											closesttarget=j;
+											finaltarget=person[i].pathtarget;
+											person[i].whichblockx=l;
+											person[i].whichblocky=m;
+				 						}
+							 		}
+							 		}
+							 	}
 							 }
 
-							 if(person[i].type==zombietype&&person[person[i].killtarget].health<=0){
-								if(person[person[i].killtarget].eaten!=i){
-									person[i].playerrotation2=0;
-							 		person[i].targetanimation=zombiewalkanim;
-							 		person[i].lastdistancevictim=200000;
-							 		person[i].pathnum=-1;
-							 		realcheck=1;
-							 		person[i].killtarget=-1;
-							 	}
+				  		if(closesttarget!=-1){
+							person[i].pathnum=closesttarget;
+							person[i].pathtarget=finaltarget;
+						}
+						}
+					}
 
-							 	if(person[person[i].killtarget].eaten==i&&person[i].targetanimation!=zombieeatanim){
-							 		person[i].targetanimation=zombieeatanim;
-									person[i].targetframe=0;
-									person[i].target=0;
+					//Assassin
+					if((person[i].killtarget>-1&&person[i].type!=civiliantype)&&!person[i].running){
+						//Dead target?
+						if(person[person[i].killtarget].health<=0&&person[i].type==eviltype){
+						 	person[i].playerrotation2=0;
+						 	person[i].whichgun=nogun;
+						 	person[i].targetanimation=walkanim;
+						 	person[i].lastdistancevictim=200000;
+						 	person[i].pathnum=-1;
+						 	enemystate=1;
+						 	person[i].killtarget=-1;
+						 	realcheck=1;
+						 }
+
+						 if(person[i].type==zombietype&&person[person[i].killtarget].health<=0){
+							if(person[person[i].killtarget].eaten!=i){
+								person[i].playerrotation2=0;
+						 		person[i].targetanimation=zombiewalkanim;
+						 		person[i].lastdistancevictim=200000;
+						 		person[i].pathnum=-1;
+						 		realcheck=1;
+						 		person[i].killtarget=-1;
+						 	}
+
+						 	if(person[person[i].killtarget].eaten==i&&person[i].targetanimation!=zombieeatanim){
+						 		person[i].targetanimation=zombieeatanim;
+								person[i].targetframe=0;
+								person[i].target=0;
+						 	}
+						 	enemystate=1;
+						 }
+
+						 if(person[person[i].killtarget].health>0){
+						 if(person[person[i].killtarget].skeleton.free){
+						 	person[person[i].killtarget].playercoords=person[person[i].killtarget].averageloc;
+						 }
+
+						 //If pathfind
+						if(realcheck){
+				 		leastdistance=2000000;
+				 		person[i].lastdistancevictim=2000000;
+				 		closesttarget=-1;
+
+				 		//Check best path
+				 		for(int j=0;j<path.vertexNum;j++){
+				 			person[i].pathtarget.x=path.vertex[j].x;
+							person[i].pathtarget.z=path.vertex[j].z;
+							person[i].pathtarget.y=path.vertex[j].y;
+							person[i].pathtarget*=person[i].pathsize;
+							person[i].pathtarget.x+=person[i].whichblockx*block_spacing;
+							person[i].pathtarget.z+=person[i].whichblocky*block_spacing;
+
+							if(findDistancefast(person[i].playercoords,person[i].pathtarget)<leastdistance&&findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords)<person[i].lastdistancevictim&&j!=1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[person[i].whichblockx][person[i].whichblocky])==-1){
+								leastdistance=findDistancefast(person[i].playercoords,person[i].pathtarget);
+								person[i].lastdistancevictim=findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords);
+								closesttarget=j;
+								finaltarget=person[i].pathtarget;
+							}
+				 		}
+
+				 		leastdistance=2000000;
+				 		for(int j=0;j<path.vertexNum;j++){
+				 			person[i].pathtarget.x=path.vertex[j].x;
+							person[i].pathtarget.z=path.vertex[j].z;
+							person[i].pathtarget.y=path.vertex[j].y;
+							person[i].pathtarget*=person[i].pathsize;
+							person[i].pathtarget.x+=person[i].whichblockx*block_spacing;
+							person[i].pathtarget.z+=person[i].whichblocky*block_spacing;
+
+							if(findDistancefast(person[i].playercoords,person[i].pathtarget)<leastdistance&&findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords)<person[i].lastdistancevictim&&j!=1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[person[i].whichblockx][person[i].whichblocky])==-1){
+								leastdistance=findDistancefast(person[i].playercoords,person[i].pathtarget);
+								person[i].lastdistancevictim=findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords);
+								closesttarget=j;
+								finaltarget=person[i].pathtarget;
+							}
+				 		}
+
+				 		//Check other blocks?
+				 		if((closesttarget==person[i].pathnum)||closesttarget==-1){
+				 			beginx=person[i].whichblockx-2;
+							if(beginx<0)beginx=0;
+							beginz=person[i].whichblocky-2;
+							if(beginz<0)beginz=0;
+							endx=person[i].whichblockx+2;
+							if(endx>num_blocks-1)endx=num_blocks-1;
+							endz=person[i].whichblocky+2;
+							if(endz>num_blocks-1)endz=num_blocks-1;
+							leastdistance=2000000;
+
+				 			for(int l=beginx;l<=endx;l++){
+								for(int m=beginx;m<=endx;m++){
+							 		if(l!=person[i].whichblockx||m!=person[i].whichblocky){
+
+							 		for(int j=0;j<path.vertexNum;j++){
+							 			person[i].pathtarget.x=path.vertex[j].x;
+										person[i].pathtarget.y=path.vertex[j].y;
+										person[i].pathtarget.z=path.vertex[j].z;
+										person[i].pathtarget*=person[i].pathsize;
+										person[i].pathtarget.x+=l*block_spacing;
+										person[i].pathtarget.z+=m*block_spacing;
+
+										if(findDistancefast(person[i].playercoords,person[i].pathtarget)<leastdistance&&findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords)<findDistancefast(person[i].playercoords,person[person[i].killtarget].playercoords)&&j!=1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[l][m])==-1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[person[i].whichblockx][person[i].whichblocky])==-1){
+											leastdistance=findDistancefast(person[i].playercoords,person[i].pathtarget);
+											closesttarget=j;
+											finaltarget=person[i].pathtarget;
+											person[i].whichblockx=l;
+											person[i].whichblocky=m;
+				 						}
+							 		}
+							 		}
 							 	}
-							 	enemystate=1;
-							 }
-
-							 if(person[person[i].killtarget].health>0){
-							 if(person[person[i].killtarget].skeleton.free){
-							 	person[person[i].killtarget].playercoords=person[person[i].killtarget].averageloc;
 							 }
+				 		}
 
-							 //If pathfind
-							if(realcheck){
-					 		leastdistance=2000000;
-					 		person[i].lastdistancevictim=2000000;
-					 		closesttarget=-1;
-
-					 		//Check best path
-					 		for(int j=0;j<path.vertexNum;j++){
-					 			person[i].pathtarget.x=path.vertex[j].x;
-								person[i].pathtarget.z=path.vertex[j].z;
-								person[i].pathtarget.y=path.vertex[j].y;
-								person[i].pathtarget*=person[i].pathsize;
-								person[i].pathtarget.x+=person[i].whichblockx*block_spacing;
-								person[i].pathtarget.z+=person[i].whichblocky*block_spacing;
-
-								if(findDistancefast(person[i].playercoords,person[i].pathtarget)<leastdistance&&findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords)<person[i].lastdistancevictim&&j!=1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[person[i].whichblockx][person[i].whichblocky])==-1){
-									leastdistance=findDistancefast(person[i].playercoords,person[i].pathtarget);
-									person[i].lastdistancevictim=findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords);
-									closesttarget=j;
-									finaltarget=person[i].pathtarget;
-								}
-					 		}
-
-					 		leastdistance=2000000;
-					 		for(int j=0;j<path.vertexNum;j++){
-					 			person[i].pathtarget.x=path.vertex[j].x;
-								person[i].pathtarget.z=path.vertex[j].z;
-								person[i].pathtarget.y=path.vertex[j].y;
-								person[i].pathtarget*=person[i].pathsize;
-								person[i].pathtarget.x+=person[i].whichblockx*block_spacing;
-								person[i].pathtarget.z+=person[i].whichblocky*block_spacing;
-
-								if(findDistancefast(person[i].playercoords,person[i].pathtarget)<leastdistance&&findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords)<person[i].lastdistancevictim&&j!=1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[person[i].whichblockx][person[i].whichblocky])==-1){
-									leastdistance=findDistancefast(person[i].playercoords,person[i].pathtarget);
-									person[i].lastdistancevictim=findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords);
-									closesttarget=j;
-									finaltarget=person[i].pathtarget;
-								}
-					 		}
-
-					 		//Check other blocks?
-					 		if((closesttarget==person[i].pathnum)||closesttarget==-1){
-					 			beginx=person[i].whichblockx-2;
-								if(beginx<0)beginx=0;
-								beginz=person[i].whichblocky-2;
-								if(beginz<0)beginz=0;
-								endx=person[i].whichblockx+2;
-								if(endx>num_blocks-1)endx=num_blocks-1;
-								endz=person[i].whichblocky+2;
-								if(endz>num_blocks-1)endz=num_blocks-1;
-								leastdistance=2000000;
-
-					 			for(int l=beginx;l<=endx;l++){
-									for(int m=beginx;m<=endx;m++){
-								 		if(l!=person[i].whichblockx||m!=person[i].whichblocky){
-
-								 		for(int j=0;j<path.vertexNum;j++){
-								 			person[i].pathtarget.x=path.vertex[j].x;
-											person[i].pathtarget.y=path.vertex[j].y;
-											person[i].pathtarget.z=path.vertex[j].z;
-											person[i].pathtarget*=person[i].pathsize;
-											person[i].pathtarget.x+=l*block_spacing;
-											person[i].pathtarget.z+=m*block_spacing;
-
-											if(findDistancefast(person[i].playercoords,person[i].pathtarget)<leastdistance&&findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords)<findDistancefast(person[i].playercoords,person[person[i].killtarget].playercoords)&&j!=1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[l][m])==-1&&blocksimple.LineCheck2(person[i].playercoords,person[i].pathtarget,&blah,move,cityrotation[person[i].whichblockx][person[i].whichblocky])==-1){
-												leastdistance=findDistancefast(person[i].playercoords,person[i].pathtarget);
-												closesttarget=j;
-												finaltarget=person[i].pathtarget;
-												person[i].whichblockx=l;
-												person[i].whichblocky=m;
-					 						}
-								 		}
-								 		}
-								 	}
-								 }
-					 		}
+				 		if(closesttarget!=-1){
+				 			person[i].onpath=1;
+							person[i].pathnum=closesttarget;
+							person[i].pathtarget=finaltarget;
+						}
+						}
 
-					 		if(closesttarget!=-1){
-					 			person[i].onpath=1;
-								person[i].pathnum=closesttarget;
-								person[i].pathtarget=finaltarget;
-							}
+						//Check killtargetvisible
+						person[i].killtargetvisible=1;
+
+						if(person[person[i].killtarget].health<=0)person[i].killtargetvisible=0;
+
+						if(closesttarget!=-1&&findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)>30000)person[i].killtargetvisible=0;
+
+				 		if(person[i].killtarget==0&&visions==1)person[i].killtargetvisible=0;
+
+				 		if(person[i].killtargetvisible){
+					 		beginx=person[i].whichblockx-2;
+							if(beginx<0)beginx=0;
+							beginz=person[i].whichblocky-2;
+							if(beginz<0)beginz=0;
+							endx=person[i].whichblockx+2;
+							if(endx>num_blocks-1)endx=num_blocks-1;
+							endz=person[i].whichblocky+2;
+							if(endz>num_blocks-1)endz=num_blocks-1;
+
+					 		for(int l=beginx;l<=endx;l++){
+								for(int m=beginx;m<=endx;m++){
+							 		move.x=l*block_spacing;
+									move.z=m*block_spacing;
+									move.y=-3;
+									if(person[i].killtargetvisible){
+								 		if(blocksimple.LineCheck2(person[i].playercoords,person[person[i].killtarget].playercoords,&blah,move,cityrotation[l][m])!=-1)
+			 							{
+			 								person[i].killtargetvisible=0;
+			 							}
+			 						}
+							 	}
+							 }
 							}
 
-							//Check killtargetvisible
-							person[i].killtargetvisible=1;
-
-							if(person[person[i].killtarget].health<=0)person[i].killtargetvisible=0;
-
-							if(closesttarget!=-1&&findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)>30000)person[i].killtargetvisible=0;
-
-					 		if(person[i].killtarget==0&&visions==1)person[i].killtargetvisible=0;
-
-					 		if(person[i].killtargetvisible){
-						 		beginx=person[i].whichblockx-2;
-								if(beginx<0)beginx=0;
-								beginz=person[i].whichblocky-2;
-								if(beginz<0)beginz=0;
-								endx=person[i].whichblockx+2;
-								if(endx>num_blocks-1)endx=num_blocks-1;
-								endz=person[i].whichblocky+2;
-								if(endz>num_blocks-1)endz=num_blocks-1;
-
-						 		for(int l=beginx;l<=endx;l++){
-									for(int m=beginx;m<=endx;m++){
-								 		move.x=l*block_spacing;
-										move.z=m*block_spacing;
-										move.y=-3;
-										if(person[i].killtargetvisible){
-									 		if(blocksimple.LineCheck2(person[i].playercoords,person[person[i].killtarget].playercoords,&blah,move,cityrotation[l][m])!=-1)
-				 							{
-				 								person[i].killtargetvisible=0;
-				 							}
-				 						}
-								 	}
+							if(person[i].type==eviltype){
+								 if(!person[i].killtargetvisible&&person[i].targetanimation==idleanim){
+								 	person[i].targetanimation=joganim;
 								 }
-								}
-
-								if(person[i].type==eviltype){
-									 if(!person[i].killtargetvisible&&person[i].targetanimation==idleanim){
-									 	person[i].targetanimation=joganim;
-									 }
 
-									 if(!person[i].killtargetvisible){
-									 	person[i].aiming=0;
-									 }
+								 if(!person[i].killtargetvisible){
+								 	person[i].aiming=0;
+								 }
 
-									 if(person[i].killtargetvisible){
-									 	person[i].onpath=0;
-									 	person[i].lastdistancevictim=200000;
-									 	person[i].pathnum=-1;
+								 if(person[i].killtargetvisible){
+								 	person[i].onpath=0;
+								 	person[i].lastdistancevictim=200000;
+								 	person[i].pathnum=-1;
 
-									 	if(person[i].whichgun==nogun){
-									 		person[i].whichgun=possiblegun[abs(Random()%numpossibleguns)];
-									 		person[i].reloads[person[i].whichgun]=1;
-									 		if(person[i].whichgun==knife)person[i].speedmult=.8+.5*difficulty;
-									 	}
+								 	if(person[i].whichgun==nogun){
+								 		person[i].whichgun=possiblegun[abs(Random()%numpossibleguns)];
+								 		person[i].reloads[person[i].whichgun]=1;
+								 		if(person[i].whichgun==knife)person[i].speedmult=.8+.5*difficulty;
+								 	}
 
-									 	if(person[i].aiming==0)person[i].shotdelay=shotdelayamount/difficulty;
+								 	if(person[i].aiming==0)person[i].shotdelay=shotdelayamount/difficulty;
 
-									 	person[i].aiming=1;
+								 	person[i].aiming=1;
 
-									 	if(person[i].reloading>0)person[i].aiming=0;
+								 	if(person[i].reloading>0)person[i].aiming=0;
 
-									 	if(person[i].whichgun==handgun1||person[i].whichgun==handgun2)person[i].playerrotation2=-10;
+								 	if(person[i].whichgun==handgun1||person[i].whichgun==handgun2)person[i].playerrotation2=-10;
 
-									 	if(person[i].whichgun==assaultrifle||person[i].whichgun==sniperrifle||person[i].whichgun==shotgun)person[i].playerrotation2=20;
+								 	if(person[i].whichgun==assaultrifle||person[i].whichgun==sniperrifle||person[i].whichgun==shotgun)person[i].playerrotation2=20;
 
-									 	tooclose=1300;
-									 	toofar=3000;
+								 	tooclose=1300;
+								 	toofar=3000;
 
-									 	if(person[i].whichgun==shotgun){
-									 		tooclose=1400;
-									 		toofar=5000;
-									 	}
+								 	if(person[i].whichgun==shotgun){
+								 		tooclose=1400;
+								 		toofar=5000;
+								 	}
 
-									 	if(person[i].whichgun==assaultrifle){
-									 		tooclose=5000;
-									 		toofar=9000;
-									 	}
+								 	if(person[i].whichgun==assaultrifle){
+								 		tooclose=5000;
+								 		toofar=9000;
+								 	}
 
-									 	if(person[i].whichgun==sniperrifle){
-									 		tooclose=10000;
-									 		toofar=20000;
-									 	}
+								 	if(person[i].whichgun==sniperrifle){
+								 		tooclose=10000;
+								 		toofar=20000;
+								 	}
 
-									 	if(person[i].whichgun==knife){
-									 		tooclose=20;
-									 		toofar=20000;
-									 	}
+								 	if(person[i].whichgun==knife){
+								 		tooclose=20;
+								 		toofar=20000;
+								 	}
 
-									 	if(findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)>toofar)
-										 	person[i].targetanimation=joganim;
+								 	if(findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)>toofar)
+									 	person[i].targetanimation=joganim;
 
-									 	if((findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)<=tooclose&&person[person[i].killtarget].skeleton.free==0)||(tooclose>200&&findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)<=200)||(tooclose<=200&&findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)<tooclose)){
-									 		if(person[i].targetanimation!=idleanim){
-										 		person[i].targetanimation=idleanim;
-												person[i].targetframe=0;
-												person[i].target=0;
-											}
+								 	if((findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)<=tooclose&&person[person[i].killtarget].skeleton.free==0)||(tooclose>200&&findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)<=200)||(tooclose<=200&&findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)<tooclose)){
+								 		if(person[i].targetanimation!=idleanim){
+									 		person[i].targetanimation=idleanim;
+											person[i].targetframe=0;
+											person[i].target=0;
+										}
 
-											if(person[i].whichgun==knife&&person[person[i].killtarget].health==100){
-												murderer=i;
-												person[i].attacktarget=0;
-												person[i].attackframe=0;
-
-												float gLoc[3];
-												gLoc[0]=(camera.position.x+((person[i].playercoords.x+flatfacing.x)-camera.position.x)/2)/soundscalefactor;
-												gLoc[1]=(camera.position.y+((person[i].playercoords.y+flatfacing.y)-camera.position.y)/2)/soundscalefactor;
-												gLoc[2]=(camera.position.z+((person[i].playercoords.z+flatfacing.z)-camera.position.z)/2)/soundscalefactor;
-
-												if(person[person[i].killtarget].type!=zombietype)
-												{
-													alSourcefv(gSourceID[knifeslashsound], AL_POSITION, gLoc);
-													alSourcePlay(gSourceID[knifeslashsound]);
-													person[person[i].killtarget].bjoint1=&person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[neck]];
-													person[person[i].killtarget].bjoint2=&person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[neck]];
-													person[person[i].killtarget].bleeding=1;
-													person[person[i].killtarget].bleeddelay=1;
-													person[person[i].killtarget].health-=20;
-													person[person[i].killtarget].targetanimation=chestpainanim;
-													person[person[i].killtarget].targetframe=0;
-													person[person[i].killtarget].target=0;
-													person[person[i].killtarget].longdead=1;
-												}
+										if(person[i].whichgun==knife&&person[person[i].killtarget].health==100){
+											murderer=i;
+											person[i].attacktarget=0;
+											person[i].attackframe=0;
+
+											float gLoc[3];
+											gLoc[0]=(camera.position.x+((person[i].playercoords.x+flatfacing.x)-camera.position.x)/2)/soundscalefactor;
+											gLoc[1]=(camera.position.y+((person[i].playercoords.y+flatfacing.y)-camera.position.y)/2)/soundscalefactor;
+											gLoc[2]=(camera.position.z+((person[i].playercoords.z+flatfacing.z)-camera.position.z)/2)/soundscalefactor;
+
+											if(person[person[i].killtarget].type!=zombietype)
+											{
+												alSourcefv(gSourceID[knifeslashsound], AL_POSITION, gLoc);
+												alSourcePlay(gSourceID[knifeslashsound]);
+												person[person[i].killtarget].bjoint1=&person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[neck]];
+												person[person[i].killtarget].bjoint2=&person[person[i].killtarget].skeleton.joints[person[person[i].killtarget].skeleton.jointlabels[neck]];
+												person[person[i].killtarget].bleeding=1;
+												person[person[i].killtarget].bleeddelay=1;
+												person[person[i].killtarget].health-=20;
+												person[person[i].killtarget].targetanimation=chestpainanim;
+												person[person[i].killtarget].targetframe=0;
+												person[person[i].killtarget].target=0;
+												person[person[i].killtarget].longdead=1;
 											}
 										}
-									 	finaltarget=person[person[i].killtarget].playercoords;
-									 }
-								}
-
-								if(person[i].type==zombietype&&person[person[i].killtarget].health>0){
-									 if(!person[i].killtargetvisible&&person[i].targetanimation==idleanim){
-									 	person[i].targetanimation=zombiejoganim;
-									 }
+									}
+								 	finaltarget=person[person[i].killtarget].playercoords;
+								 }
+							}
 
-									 if(!person[i].killtargetvisible){
-									 	person[i].aiming=0;
-									 }
+							if(person[i].type==zombietype&&person[person[i].killtarget].health>0){
+								 if(!person[i].killtargetvisible&&person[i].targetanimation==idleanim){
+								 	person[i].targetanimation=zombiejoganim;
+								 }
 
-									 if(person[i].killtargetvisible){
-									 	person[i].onpath=0;
-									 	person[i].lastdistancevictim=200000;
-									 	person[i].pathnum=-1;
+								 if(!person[i].killtargetvisible){
+								 	person[i].aiming=0;
+								 }
 
-									 	if(person[i].aiming==0)person[i].shotdelay=shotdelayamount/difficulty;
+								 if(person[i].killtargetvisible){
+								 	person[i].onpath=0;
+								 	person[i].lastdistancevictim=200000;
+								 	person[i].pathnum=-1;
 
-									 	if(findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)>20||person[i].targetanimation!=idleanim)
-										 	person[i].targetanimation=zombiejoganim;
+								 	if(person[i].aiming==0)person[i].shotdelay=shotdelayamount/difficulty;
 
-									 	if(findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)<=20){
-									 		murderer=i;
-									 		person[person[i].killtarget].health=0;
-									 		person[person[i].killtarget].eaten=i;
-										}
-									 	finaltarget=person[person[i].killtarget].playercoords;
-									 }
-								}
+								 	if(findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)>20||person[i].targetanimation!=idleanim)
+									 	person[i].targetanimation=zombiejoganim;
 
-							 if(person[i].killtargetvisible||realcheck)person[i].pathtarget=finaltarget;
-							 if(realcheck)person[i].lastdistancevictim=findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords);
+								 	if(findDistancefast(person[i].playercoords, person[person[i].killtarget].playercoords)<=20){
+								 		murderer=i;
+								 		person[person[i].killtarget].health=0;
+								 		person[person[i].killtarget].eaten=i;
+									}
+								 	finaltarget=person[person[i].killtarget].playercoords;
+								 }
 							}
-						}
 
-						if(person[i].targetanimation!=zombieeatanim||person[i].type!=zombietype){
-							towards=person[i].playercoords-person[i].pathtarget;
-							Normalise(&towards);
-							person[i].playerrotation=asin(0-towards.x)*360/6.28;
-							if(towards.z>0)person[i].playerrotation=180-person[i].playerrotation;
+						 if(person[i].killtargetvisible||realcheck)person[i].pathtarget=finaltarget;
+						 if(realcheck)person[i].lastdistancevictim=findDistancefast(person[i].pathtarget,person[person[i].killtarget].playercoords);
 						}
 					}
-			 	}
 
-			 	person[i].whichblockx=((person[i].playercoords.x+block_spacing/2)/block_spacing);
-			 	person[i].whichblocky=((person[i].playercoords.z+block_spacing/2)/block_spacing);
-				if(!person[i].onground)person[i].velocity.y+=multiplier*gravity;
-			 	if(!person[i].onground&&(i!=0||visions!=1))person[i].playercoords+=person[i].velocity*multiplier;
-
-			 	//Death by bleeding/shock
-		 		if(person[i].health<=0){
-		 			person[i].skeleton.offset=0;
-					person[i].skeleton.free=1;
-					person[i].longdead=1;
-
-					for(int j=0;j<person[i].skeleton.num_joints;j++){
-						person[i].skeleton.joints[j].position+=person[i].skeleton.joints[j].offset;
-						person[i].skeleton.joints[j].position=DoRotation(person[i].skeleton.joints[j].position,0,person[i].playerrotation,0);
-						person[i].skeleton.joints[j].position+=person[i].playercoords;
-						person[i].skeleton.joints[j].realoldposition=person[i].skeleton.joints[j].position;
-						person[i].skeleton.joints[j].velocity=DoRotation(person[i].skeleton.joints[j].velocity,0,person[i].playerrotation,0);
-						person[i].skeleton.joints[j].velocity+=person[i].velocity;
-						person[i].skeleton.joints[j].velocity+=person[i].facing*4;
+					if(person[i].targetanimation!=zombieeatanim||person[i].type!=zombietype){
+						towards=person[i].playercoords-person[i].pathtarget;
+						Normalise(&towards);
+						person[i].playerrotation=asin(0-towards.x)*360/6.28;
+						if(towards.z>0)person[i].playerrotation=180-person[i].playerrotation;
 					}
 				}
-			 }
-
-		 	//Rag doll
-			if(person[i].skeleton.free==1&&person[i].longdead>0){
-				person[i].whichblockx=((person[i].skeleton.joints[0].position.x+block_spacing/2)/block_spacing);
-				person[i].whichblocky=((person[i].skeleton.joints[0].position.z+block_spacing/2)/block_spacing);
+		 	}
 
-				move=0;
-				move.x=person[i].whichblockx*block_spacing;
-				move.z=person[i].whichblocky*block_spacing;
-				person[i].skeleton.DoGravity();
+		 	person[i].whichblockx=((person[i].playercoords.x+block_spacing/2)/block_spacing);
+		 	person[i].whichblocky=((person[i].playercoords.z+block_spacing/2)/block_spacing);
+			if(!person[i].onground)person[i].velocity.y+=multiplier*gravity;
+		 	if(!person[i].onground&&(i!=0||visions!=1))person[i].playercoords+=person[i].velocity*multiplier;
 
-				if(person[i].averageloc.y<=50)person[i].skeleton.DoConstraints(&blocksimplecollide[citytype[person[i].whichblockx][person[i].whichblocky]],&move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
-				if(person[i].averageloc.y>50)person[i].skeleton.DoConstraints(&blockcollide[citytype[person[i].whichblockx][person[i].whichblocky]],&move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
-
-				person[i].oldaverageloc=person[i].averageloc;
-				person[i].averageloc=0;
+		 	//Death by bleeding/shock
+	 		if(person[i].health<=0){
+	 			person[i].skeleton.offset=0;
+				person[i].skeleton.free=1;
+				person[i].longdead=1;
 
 				for(int j=0;j<person[i].skeleton.num_joints;j++){
-					person[i].averageloc+=person[i].skeleton.joints[j].position;
+					person[i].skeleton.joints[j].position+=person[i].skeleton.joints[j].offset;
+					person[i].skeleton.joints[j].position=DoRotation(person[i].skeleton.joints[j].position,0,person[i].playerrotation,0);
+					person[i].skeleton.joints[j].position+=person[i].playercoords;
+					person[i].skeleton.joints[j].realoldposition=person[i].skeleton.joints[j].position;
+					person[i].skeleton.joints[j].velocity=DoRotation(person[i].skeleton.joints[j].velocity,0,person[i].playerrotation,0);
+					person[i].skeleton.joints[j].velocity+=person[i].velocity;
+					person[i].skeleton.joints[j].velocity+=person[i].facing*4;
 				}
-
-				person[i].averageloc/=person[i].skeleton.num_joints;
-				person[i].playercoords=person[i].averageloc;
-				if(person[i].longdead<multiplier/2&&person[i].longdead>0)person[i].DrawSkeleton(i);
-				if(findDistancefast(person[i].averageloc,person[i].oldaverageloc)<.2*multiplier)person[i].longdead-=multiplier/2;
 			}
+		 }
 
-			if(person[i].skeleton.free==1&&person[i].longdead<=0&&person[i].health>0&&person[i].longdead!=-1){
-				person[i].longdead=1;
-				person[i].skeleton.free=0;
-				person[i].currentanimation=lyinganim;
-				person[i].target=0;
-				person[i].targetframe=0;
-
-				//Get up from front or back?
-				if(person[i].skeleton.forward.y>0)
-				person[i].targetanimation=getupfrontanim;
-				else
-				person[i].targetanimation=getupbackanim;
-
-				//Find playercoords
-				person[i].playercoords=person[i].averageloc;
-				for(int j=0;j<person[i].skeleton.num_joints;j++){
-					if(person[i].skeleton.joints[j].position.y>person[i].playercoords.y)person[i].playercoords.y=person[i].skeleton.joints[j].position.y;
-				}
+	 	//Rag doll
+		if(person[i].skeleton.free==1&&person[i].longdead>0){
+			person[i].whichblockx=((person[i].skeleton.joints[0].position.x+block_spacing/2)/block_spacing);
+			person[i].whichblocky=((person[i].skeleton.joints[0].position.z+block_spacing/2)/block_spacing);
 
-				//Find orientation
-				XYZ firsttop=person[i].skeleton.joints[person[i].skeleton.jointlabels[neck]].position-person[i].skeleton.joints[person[i].skeleton.jointlabels[groin]].position;
-			 	Normalise(&firsttop);
-				person[i].playerrotation=acos(0-firsttop.z);
-				person[i].playerrotation*=360/6.28;
-				if(0>firsttop.x)person[i].playerrotation=360-person[i].playerrotation;
-				person[i].playerrotation*=-1;
-				person[i].playervelocity=0;
-				if(person[i].targetanimation==getupfrontanim)person[i].playerrotation+=180;
+			move=0;
+			move.x=person[i].whichblockx*block_spacing;
+			move.z=person[i].whichblocky*block_spacing;
+			person[i].skeleton.DoGravity();
 
-				for(int j=0;j<person[i].skeleton.num_joints;j++){
-					person[i].tempanimation.position[j][0]=person[i].skeleton.joints[j].position-person[i].playercoords;
-					person[i].tempanimation.position[j][0]=DoRotation(person[i].tempanimation.position[j][0],0,-person[i].playerrotation,0);
-				}
+			if(person[i].averageloc.y<=50)person[i].skeleton.DoConstraints(&blocksimplecollide[citytype[person[i].whichblockx][person[i].whichblocky]],&move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
+			if(person[i].averageloc.y>50)person[i].skeleton.DoConstraints(&blockcollide[citytype[person[i].whichblockx][person[i].whichblocky]],&move,cityrotation[person[i].whichblockx][person[i].whichblocky]*90);
+
+			person[i].oldaverageloc=person[i].averageloc;
+			person[i].averageloc=0;
+
+			for(int j=0;j<person[i].skeleton.num_joints;j++){
+				person[i].averageloc+=person[i].skeleton.joints[j].position;
 			}
+
+			person[i].averageloc/=person[i].skeleton.num_joints;
+			person[i].playercoords=person[i].averageloc;
+			if(person[i].longdead<multiplier/2&&person[i].longdead>0)person[i].DrawSkeleton(i);
+			if(findDistancefast(person[i].averageloc,person[i].oldaverageloc)<.2*multiplier)person[i].longdead-=multiplier/2;
 		}
 
-		//Grenade
-		if(Button()&&person[0].whichgun==grenade&&person[0].ammo>0&&person[0].reloading<=0&&person[0].attackframe<0&&person[0].targetanimation!=crouchanim){
-			if(person[0].grenphase==0){
-				XYZ soundsource=DoRotation(person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]].position,0,person[0].playerrotation,0)+person[0].playercoords;
-				float gLoc[3];
-				gLoc[0]=soundsource.x/soundscalefactor;
-				gLoc[1]=soundsource.y/soundscalefactor;
-				gLoc[2]=soundsource.z/soundscalefactor;
-				alSourcefv(gSourceID[pinpullsound], AL_POSITION, gLoc);
-				alSourcePlay(gSourceID[pinpullsound]);
-				person[0].grenphase=1;
+		if(person[i].skeleton.free==1&&person[i].longdead<=0&&person[i].health>0&&person[i].longdead!=-1){
+			person[i].longdead=1;
+			person[i].skeleton.free=0;
+			person[i].currentanimation=lyinganim;
+			person[i].target=0;
+			person[i].targetframe=0;
+
+			//Get up from front or back?
+			if(person[i].skeleton.forward.y>0)
+			person[i].targetanimation=getupfrontanim;
+			else
+			person[i].targetanimation=getupbackanim;
+
+			//Find playercoords
+			person[i].playercoords=person[i].averageloc;
+			for(int j=0;j<person[i].skeleton.num_joints;j++){
+				if(person[i].skeleton.joints[j].position.y>person[i].playercoords.y)person[i].playercoords.y=person[i].skeleton.joints[j].position.y;
 			}
-		}
 
-		if((!Button())&&person[0].whichgun==grenade){
-			if(person[0].grenphase==1){
-				person[0].grenphase=0;
-				person[0].attackframe=0;
-				person[0].attacktarget=0;
-				person[0].killtarget=0;
+			//Find orientation
+			XYZ firsttop=person[i].skeleton.joints[person[i].skeleton.jointlabels[neck]].position-person[i].skeleton.joints[person[i].skeleton.jointlabels[groin]].position;
+		 	Normalise(&firsttop);
+			person[i].playerrotation=acos(0-firsttop.z);
+			person[i].playerrotation*=360/6.28;
+			if(0>firsttop.x)person[i].playerrotation=360-person[i].playerrotation;
+			person[i].playerrotation*=-1;
+			person[i].playervelocity=0;
+			if(person[i].targetanimation==getupfrontanim)person[i].playerrotation+=180;
+
+			for(int j=0;j<person[i].skeleton.num_joints;j++){
+				person[i].tempanimation.position[j][0]=person[i].skeleton.joints[j].position-person[i].playercoords;
+				person[i].tempanimation.position[j][0]=DoRotation(person[i].tempanimation.position[j][0],0,-person[i].playerrotation,0);
 			}
 		}
+	}
 
-		if(person[0].targetanimation==crouchanim){
-			if(person[0].grenphase==1){
-				person[0].grenphase=0;
-				XYZ soundsource=DoRotation(person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]].position,0,person[0].playerrotation,0)+person[0].playercoords;
-				float gLoc[3];
-				gLoc[0]=soundsource.x/soundscalefactor;
-				gLoc[1]=soundsource.y/soundscalefactor;
-				gLoc[2]=soundsource.z/soundscalefactor;
-				alSourcefv(gSourceID[pinreplacesound], AL_POSITION, gLoc);
-				alSourcePlay(gSourceID[pinreplacesound]);
-			}
+	//Grenade
+	if(Button()&&person[0].whichgun==grenade&&person[0].ammo>0&&person[0].reloading<=0&&person[0].attackframe<0&&person[0].targetanimation!=crouchanim){
+		if(person[0].grenphase==0){
+			XYZ soundsource=DoRotation(person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]].position,0,person[0].playerrotation,0)+person[0].playercoords;
+			float gLoc[3];
+			gLoc[0]=soundsource.x/soundscalefactor;
+			gLoc[1]=soundsource.y/soundscalefactor;
+			gLoc[2]=soundsource.z/soundscalefactor;
+			alSourcefv(gSourceID[pinpullsound], AL_POSITION, gLoc);
+			alSourcePlay(gSourceID[pinpullsound]);
+			person[0].grenphase=1;
 		}
+	}
 
-		//Get gun
-		int temp;
-		int temp2;
-		bool switched=0;
-		if(Button()&&!oldbutton&&(person[0].aiming==0||person[0].whichgun==grenade||person[0].whichgun==nogun||person[0].whichgun==knife)&&person[0].currentanimation==crouchanim){
+	if((!Button())&&person[0].whichgun==grenade){
+		if(person[0].grenphase==1){
+			person[0].grenphase=0;
+			person[0].attackframe=0;
+			person[0].attacktarget=0;
+			person[0].killtarget=0;
+		}
+	}
 
-			for(int i=0;i<max_people;i++){
+	if(person[0].targetanimation==crouchanim){
+		if(person[0].grenphase==1){
+			person[0].grenphase=0;
+			XYZ soundsource=DoRotation(person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]].position,0,person[0].playerrotation,0)+person[0].playercoords;
+			float gLoc[3];
+			gLoc[0]=soundsource.x/soundscalefactor;
+			gLoc[1]=soundsource.y/soundscalefactor;
+			gLoc[2]=soundsource.z/soundscalefactor;
+			alSourcefv(gSourceID[pinreplacesound], AL_POSITION, gLoc);
+			alSourcePlay(gSourceID[pinreplacesound]);
+		}
+	}
 
-				if(!switched&&person[i].skeleton.free==1&&findDistancefast(person[0].playercoords,person[i].averageloc)<200){
+	//Get gun
+	int temp;
+	int temp2;
+	bool switched=0;
+	if(Button()&&!oldbutton&&(person[0].aiming==0||person[0].whichgun==grenade||person[0].whichgun==nogun||person[0].whichgun==knife)&&person[0].currentanimation==crouchanim){
 
-					float gLoc[3];
+		for(int i=0;i<max_people;i++){
+
+			if(!switched&&person[i].skeleton.free==1&&findDistancefast(person[0].playercoords,person[i].averageloc)<200){
 
-					gLoc[0]=person[0].playercoords.x/soundscalefactor;
+				float gLoc[3];
 
-					gLoc[1]=person[0].playercoords.y/soundscalefactor;
+				gLoc[0]=person[0].playercoords.x/soundscalefactor;
 
-					gLoc[2]=person[0].playercoords.z/soundscalefactor;
+				gLoc[1]=person[0].playercoords.y/soundscalefactor;
 
-					alSourcefv(gSourceID[clicksound], AL_POSITION, gLoc);
+				gLoc[2]=person[0].playercoords.z/soundscalefactor;
 
-					alSourcePlay(gSourceID[clicksound]);
+				alSourcefv(gSourceID[clicksound], AL_POSITION, gLoc);
 
-					temp=person[0].whichgun;
+				alSourcePlay(gSourceID[clicksound]);
 
-					temp2=person[0].ammo;
+				temp=person[0].whichgun;
 
-					person[0].whichgun=person[i].whichgun;
+				temp2=person[0].ammo;
 
-					person[0].ammo=person[i].ammo;
+				person[0].whichgun=person[i].whichgun;
 
-					person[i].whichgun=temp;
+				person[0].ammo=person[i].ammo;
 
-					person[i].ammo=temp2;
+				person[i].whichgun=temp;
 
-					person[0].aiming=1;
+				person[i].ammo=temp2;
 
-					person[0].aimamount=0;
+				person[0].aiming=1;
 
-					switched=1;
+				person[0].aimamount=0;
 
-				}
+				switched=1;
 
 			}
 
 		}
 
-		//Throw
+	}
 
-		if(Button()&&person[0].attackframe<0&&((person[0].whichgun==nogun||person[0].aiming==0)&&person[0].whichgun!=knife)&&person[0].currentanimation!=crouchanim&&person[0].targetanimation!=crouchanim&&person[0].targetanimation!=throwanim&&visions==0){
+	//Throw
 
-			if(person[0].targetanimation==idleanim||person[0].targetanimation==walkanim){
+	if(Button()&&person[0].attackframe<0&&((person[0].whichgun==nogun||person[0].aiming==0)&&person[0].whichgun!=knife)&&person[0].currentanimation!=crouchanim&&person[0].targetanimation!=crouchanim&&person[0].targetanimation!=throwanim&&visions==0){
 
-				bool attacking=0;
+		if(person[0].targetanimation==idleanim||person[0].targetanimation==walkanim){
 
-				person[0].killtarget=-1;
+			bool attacking=0;
 
-				float closedistance=-1;
+			person[0].killtarget=-1;
 
-				for(int i=1;i<numpeople;i++){
+			float closedistance=-1;
 
-					if(person[i].skeleton.free<1&&(person[i].whichgun!=nogun)&&findDistancefast(person[i].playercoords,person[0].playercoords+flatfacing)<12){
+			for(int i=1;i<numpeople;i++){
 
-						attacking=1;
+				if(person[i].skeleton.free<1&&(person[i].whichgun!=nogun)&&findDistancefast(person[i].playercoords,person[0].playercoords+flatfacing)<12){
 
-						if(person[0].killtarget==-1||findDistancefast(person[i].playercoords,person[0].playercoords)<closedistance){
+					attacking=1;
 
-							person[0].killtarget=i;
+					if(person[0].killtarget==-1||findDistancefast(person[i].playercoords,person[0].playercoords)<closedistance){
 
-							closedistance=findDistancefast(person[i].playercoords,person[0].playercoords);
+						person[0].killtarget=i;
 
-						}
+						closedistance=findDistancefast(person[i].playercoords,person[0].playercoords);
 
 					}
 
 				}
 
-				if(attacking){
+			}
 
-					score+=150;
+			if(attacking){
 
-					person[0].aiming=1;
+				score+=150;
 
-					person[0].whichgun=person[person[0].killtarget].whichgun;
+				person[0].aiming=1;
 
-					person[0].ammo=person[person[0].killtarget].ammo;
+				person[0].whichgun=person[person[0].killtarget].whichgun;
 
-					person[person[0].killtarget].whichgun=nogun;
+				person[0].ammo=person[person[0].killtarget].ammo;
 
-					person[person[0].killtarget].killtarget=-1;
+				person[person[0].killtarget].whichgun=nogun;
 
-					person[0].targetframe=0;
+				person[person[0].killtarget].killtarget=-1;
 
-					person[0].targetanimation=throwanim;
+				person[0].targetframe=0;
 
-					person[0].target=1;
+				person[0].targetanimation=throwanim;
 
-					person[0].speed=1;
+				person[0].target=1;
 
-					person[person[0].killtarget].targetframe=0;
+				person[0].speed=1;
 
-					person[person[0].killtarget].targetanimation=thrownanim;
+				person[person[0].killtarget].targetframe=0;
 
-					person[person[0].killtarget].target=1;
+				person[person[0].killtarget].targetanimation=thrownanim;
 
-					person[person[0].killtarget].playercoords=person[0].playercoords;
+				person[person[0].killtarget].target=1;
 
-					person[person[0].killtarget].playerrotation=person[0].playerrotation;
+				person[person[0].killtarget].playercoords=person[0].playercoords;
 
-					person[person[0].killtarget].speed=person[0].speed;
+				person[person[0].killtarget].playerrotation=person[0].playerrotation;
 
-					person[person[0].killtarget].speedmult=1;
+				person[person[0].killtarget].speed=person[0].speed;
 
-				}
+				person[person[0].killtarget].speedmult=1;
 
 			}
 
 		}
 
-		//Gun whacking
+	}
 
-		if(Button()&&(person[0].aiming==0||person[0].ammo<=0||person[0].whichgun==nogun||person[0].whichgun==knife||person[0].targetanimation==joganim)&&person[0].currentanimation!=crouchanim&&person[0].targetanimation!=throwanim&&person[0].whichgun!=grenade&&person[0].targetanimation!=crouchanim&&visions==0){
+	//Gun whacking
 
-			if(person[0].attackframe==-1||person[person[0].killtarget].skeleton.free==1){
+	if(Button()&&(person[0].aiming==0||person[0].ammo<=0||person[0].whichgun==nogun||person[0].whichgun==knife||person[0].targetanimation==joganim)&&person[0].currentanimation!=crouchanim&&person[0].targetanimation!=throwanim&&person[0].whichgun!=grenade&&person[0].targetanimation!=crouchanim&&visions==0){
 
-				bool attacking=0;
+		if(person[0].attackframe==-1||person[person[0].killtarget].skeleton.free==1){
 
-				person[0].killtarget=-1;
+			bool attacking=0;
 
-				float closedistance=-1;
+			person[0].killtarget=-1;
 
-				for(int i=1;i<numpeople;i++){
+			float closedistance=-1;
 
-					if(person[i].existing&&person[i].type!=viptype&&person[i].skeleton.free<1&&findDistancefast(person[i].playercoords,person[0].playercoords+flatfacing)<12+(person[0].whichgun==knife)*10){
+			for(int i=1;i<numpeople;i++){
 
-						if(person[0].killtarget==-1||findDistancefast(person[i].playercoords,person[0].playercoords)<closedistance){
+				if(person[i].existing&&person[i].type!=viptype&&person[i].skeleton.free<1&&findDistancefast(person[i].playercoords,person[0].playercoords+flatfacing)<12+(person[0].whichgun==knife)*10){
 
-							attacking=1;
+					if(person[0].killtarget==-1||findDistancefast(person[i].playercoords,person[0].playercoords)<closedistance){
 
-							person[0].killtarget=i;
+						attacking=1;
 
-							closedistance=findDistancefast(person[i].playercoords,person[0].playercoords);
+						person[0].killtarget=i;
 
-						}
+						closedistance=findDistancefast(person[i].playercoords,person[0].playercoords);
 
 					}
 
 				}
 
-				if(attacking){
-
-					person[0].attacktarget=0;
+			}
 
-					person[0].attackframe=0;
+			if(attacking){
 
-				}
+				person[0].attacktarget=0;
 
-				whacked=0;
+				person[0].attackframe=0;
 
 			}
 
+			whacked=0;
+
 		}
 
-		XYZ velocity;
+	}
 
-		if(person[0].attackframe>1||(person[0].attackframe>=0&&person[0].currentanimation==joganim)){
+	XYZ velocity;
 
-			if(person[person[0].killtarget].skeleton.free<1&&person[0].killtarget!=0&&(person[0].aiming<1||person[0].whichgun==nogun||person[0].whichgun==knife||person[0].targetanimation==joganim)){
+	if(person[0].attackframe>1||(person[0].attackframe>=0&&person[0].currentanimation==joganim)){
 
-				float gLoc[3];
+		if(person[person[0].killtarget].skeleton.free<1&&person[0].killtarget!=0&&(person[0].aiming<1||person[0].whichgun==nogun||person[0].whichgun==knife||person[0].targetanimation==joganim)){
 
-				gLoc[0]=(camera.position.x+((person[0].playercoords.x+flatfacing.x)-camera.position.x)/2)/soundscalefactor;
+			float gLoc[3];
 
-				gLoc[1]=(camera.position.y+((person[0].playercoords.y+flatfacing.y)-camera.position.y)/2)/soundscalefactor;
+			gLoc[0]=(camera.position.x+((person[0].playercoords.x+flatfacing.x)-camera.position.x)/2)/soundscalefactor;
 
-				gLoc[2]=(camera.position.z+((person[0].playercoords.z+flatfacing.z)-camera.position.z)/2)/soundscalefactor;
+			gLoc[1]=(camera.position.y+((person[0].playercoords.y+flatfacing.y)-camera.position.y)/2)/soundscalefactor;
 
-				if(person[person[0].killtarget].type!=zombietype)
+			gLoc[2]=(camera.position.z+((person[0].playercoords.z+flatfacing.z)-camera.position.z)/2)/soundscalefactor;
 
-				{
+			if(person[person[0].killtarget].type!=zombietype)
 
-					if(person[0].whichgun!=knife){
+			{
 
-						alSourcefv(gSourceID[headwhacksound], AL_POSITION, gLoc);
+				if(person[0].whichgun!=knife){
 
-						alSourcePlay(gSourceID[headwhacksound]);
+					alSourcefv(gSourceID[headwhacksound], AL_POSITION, gLoc);
 
-					}
+					alSourcePlay(gSourceID[headwhacksound]);
 
-					if(person[0].whichgun==knife){
+				}
 
-						alSourcefv(gSourceID[knifeslashsound], AL_POSITION, gLoc);
+				if(person[0].whichgun==knife){
 
-						alSourcePlay(gSourceID[knifeslashsound]);
+					alSourcefv(gSourceID[knifeslashsound], AL_POSITION, gLoc);
 
-						person[person[0].killtarget].bjoint1=&person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]];
+					alSourcePlay(gSourceID[knifeslashsound]);
 
-						person[person[0].killtarget].bjoint2=&person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]];
+					person[person[0].killtarget].bjoint1=&person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]];
 
-						person[person[0].killtarget].bleeding=1;
+					person[person[0].killtarget].bjoint2=&person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]];
 
-						person[person[0].killtarget].bleeddelay=1;
+					person[person[0].killtarget].bleeding=1;
 
-						person[0].bjoint1=&person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]];
+					person[person[0].killtarget].bleeddelay=1;
 
-						person[0].bjoint2=&person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]];
+					person[0].bjoint1=&person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]];
 
-						person[0].bleeding=1;
+					person[0].bjoint2=&person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]];
 
-						person[0].bleeddelay=1;
+					person[0].bleeding=1;
 
-						velocity=DoRotation(flatfacing,0,70,0)*50+person[0].velocity*2;
+					person[0].bleeddelay=1;
 
-						velocity.y+=30;
+					velocity=DoRotation(flatfacing,0,70,0)*50+person[0].velocity*2;
 
-						sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.3, 2);
+					velocity.y+=30;
 
-						sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.2, 3);
+					sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.3, 2);
 
-						sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.1, 4);
+					sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.2, 3);
 
-					}
+					sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.1, 4);
 
-					person[person[0].killtarget].health-=100;
+				}
 
-					person[person[0].killtarget].skeleton.free=1;
+				person[person[0].killtarget].health-=100;
 
-					person[person[0].killtarget].longdead=1;
+				person[person[0].killtarget].skeleton.free=1;
 
-					for(int j=0;j<person[person[0].killtarget].skeleton.num_joints;j++){
+				person[person[0].killtarget].longdead=1;
 
-						person[person[0].killtarget].skeleton.joints[j].position=DoRotation(person[person[0].killtarget].skeleton.joints[j].position,0,person[person[0].killtarget].playerrotation,0);
+				for(int j=0;j<person[person[0].killtarget].skeleton.num_joints;j++){
 
-						person[person[0].killtarget].skeleton.joints[j].position+=person[person[0].killtarget].playercoords;
+					person[person[0].killtarget].skeleton.joints[j].position=DoRotation(person[person[0].killtarget].skeleton.joints[j].position,0,person[person[0].killtarget].playerrotation,0);
 
-						person[person[0].killtarget].skeleton.joints[j].realoldposition=person[person[0].killtarget].skeleton.joints[j].position;
+					person[person[0].killtarget].skeleton.joints[j].position+=person[person[0].killtarget].playercoords;
 
-						person[person[0].killtarget].skeleton.joints[j].velocity=person[person[0].killtarget].velocity;
+					person[person[0].killtarget].skeleton.joints[j].realoldposition=person[person[0].killtarget].skeleton.joints[j].position;
 
-						person[person[0].killtarget].skeleton.joints[j].velocity.x+=abs(Random()%10)-5;
+					person[person[0].killtarget].skeleton.joints[j].velocity=person[person[0].killtarget].velocity;
 
-						person[person[0].killtarget].skeleton.joints[j].velocity.y+=abs(Random()%10)-5;
+					person[person[0].killtarget].skeleton.joints[j].velocity.x+=abs(Random()%10)-5;
 
-						person[person[0].killtarget].skeleton.joints[j].velocity.z+=abs(Random()%10)-5;
+					person[person[0].killtarget].skeleton.joints[j].velocity.y+=abs(Random()%10)-5;
 
-					}
+					person[person[0].killtarget].skeleton.joints[j].velocity.z+=abs(Random()%10)-5;
 
-					if(person[0].whichgun!=knife){
+				}
 
-						person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[head]].velocity+=DoRotation(flatfacing,0,40,0)*50;
+				if(person[0].whichgun!=knife){
 
-						person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[head]].velocity+=person[0].velocity*2;
+					person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[head]].velocity+=DoRotation(flatfacing,0,40,0)*50;
 
-					}
+					person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[head]].velocity+=person[0].velocity*2;
 
 				}
 
-				else
+			}
 
-				{
+			else
 
-					if(whacked==0){
+			{
 
-						whacked=1;
+				if(whacked==0){
 
-						if(person[0].whichgun!=knife){
+					whacked=1;
 
-							alSourcefv(gSourceID[headwhacksound], AL_POSITION, gLoc);
+					if(person[0].whichgun!=knife){
 
-							alSourcePlay(gSourceID[headwhacksound]);
+						alSourcefv(gSourceID[headwhacksound], AL_POSITION, gLoc);
 
-						}
+						alSourcePlay(gSourceID[headwhacksound]);
 
-						if(person[0].whichgun==knife){
+					}
 
-							alSourcefv(gSourceID[knifeslashsound], AL_POSITION, gLoc);
+					if(person[0].whichgun==knife){
 
-							alSourcePlay(gSourceID[knifeslashsound]);
+						alSourcefv(gSourceID[knifeslashsound], AL_POSITION, gLoc);
 
-							person[person[0].killtarget].bjoint1=&person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]];
+						alSourcePlay(gSourceID[knifeslashsound]);
 
-							person[person[0].killtarget].bjoint2=&person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]];
+						person[person[0].killtarget].bjoint1=&person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]];
 
-							person[person[0].killtarget].bleeding=1;
+						person[person[0].killtarget].bjoint2=&person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]];
 
-							person[person[0].killtarget].bleeddelay=1;
+						person[person[0].killtarget].bleeding=1;
 
-							person[0].bjoint1=&person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]];
+						person[person[0].killtarget].bleeddelay=1;
 
-							person[0].bjoint2=&person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]];
+						person[0].bjoint1=&person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]];
 
-							person[0].bleeding=1;
+						person[0].bjoint2=&person[0].skeleton.joints[person[0].skeleton.jointlabels[righthand]];
 
-							person[0].bleeddelay=1;
+						person[0].bleeding=1;
 
-							velocity=DoRotation(flatfacing,0,70,0)*50+person[0].velocity*2;
+						person[0].bleeddelay=1;
 
-							velocity.y+=30;
+						velocity=DoRotation(flatfacing,0,70,0)*50+person[0].velocity*2;
 
-							sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.3, 2);
+						velocity.y+=30;
 
-							sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.2, 3);
+						sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.3, 2);
 
-							sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.1, 4);
+						sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.2, 3);
 
-						}
+						sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,DoRotation(person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[neck]].position,0,person[person[0].killtarget].playerrotation,0)+person[person[0].killtarget].playercoords, velocity*.1, 4);
 
-						person[person[0].killtarget].health-=200;
+					}
 
-						person[person[0].killtarget].maxhealth-=20;
+					person[person[0].killtarget].health-=200;
 
-						person[person[0].killtarget].skeleton.free=1;
+					person[person[0].killtarget].maxhealth-=20;
 
-						person[person[0].killtarget].longdead=1;
+					person[person[0].killtarget].skeleton.free=1;
 
-						for(int j=0;j<person[person[0].killtarget].skeleton.num_joints;j++){
+					person[person[0].killtarget].longdead=1;
 
-							person[person[0].killtarget].skeleton.joints[j].position=DoRotation(person[person[0].killtarget].skeleton.joints[j].position,0,person[person[0].killtarget].playerrotation,0);
+					for(int j=0;j<person[person[0].killtarget].skeleton.num_joints;j++){
 
-							person[person[0].killtarget].skeleton.joints[j].position+=person[person[0].killtarget].playercoords;
+						person[person[0].killtarget].skeleton.joints[j].position=DoRotation(person[person[0].killtarget].skeleton.joints[j].position,0,person[person[0].killtarget].playerrotation,0);
 
-							person[person[0].killtarget].skeleton.joints[j].realoldposition=person[person[0].killtarget].skeleton.joints[j].position;
+						person[person[0].killtarget].skeleton.joints[j].position+=person[person[0].killtarget].playercoords;
 
-							person[person[0].killtarget].skeleton.joints[j].velocity=person[person[0].killtarget].velocity;
+						person[person[0].killtarget].skeleton.joints[j].realoldposition=person[person[0].killtarget].skeleton.joints[j].position;
 
-							person[person[0].killtarget].skeleton.joints[j].velocity.x+=abs(Random()%10)-5;
+						person[person[0].killtarget].skeleton.joints[j].velocity=person[person[0].killtarget].velocity;
 
-							person[person[0].killtarget].skeleton.joints[j].velocity.y+=abs(Random()%10)-5;
+						person[person[0].killtarget].skeleton.joints[j].velocity.x+=abs(Random()%10)-5;
 
-							person[person[0].killtarget].skeleton.joints[j].velocity.z+=abs(Random()%10)-5;
+						person[person[0].killtarget].skeleton.joints[j].velocity.y+=abs(Random()%10)-5;
 
-						}
+						person[person[0].killtarget].skeleton.joints[j].velocity.z+=abs(Random()%10)-5;
 
-						if(person[0].whichgun!=knife){
+					}
 
-							person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[head]].velocity+=DoRotation(flatfacing,0,40,0)*50;
+					if(person[0].whichgun!=knife){
 
-							person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[head]].velocity+=person[0].velocity*2;
+						person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[head]].velocity+=DoRotation(flatfacing,0,40,0)*50;
 
-						}
+						person[person[0].killtarget].skeleton.joints[person[person[0].killtarget].skeleton.jointlabels[head]].velocity+=person[0].velocity*2;
 
 					}
 
@@ -2130,400 +2127,400 @@ void Game::Tick()
 
 		}
 
-		//Tackle
-		if (person[0].currentanimation == diveanim && visions == 0) {
-			for (int i = 1; i < numpeople; i++) {
-				if (person[i].skeleton.free > 0
-				    || findDistancefast(person[i].playercoords,
-				                        person[0].playercoords
-				                        + flatfacing) > 22)
-					continue;
-
-				float gLoc[3] {
-					(camera.position.x
-					 + person[0].playercoords.x
-					 + flatfacing.x) / soundscalefactor / 2,
-					(camera.position.y
-					 + person[0].playercoords.y
-					 + flatfacing.y) / soundscalefactor / 2,
-					(camera.position.z
-					 + person[0].playercoords.z
-					 + flatfacing.z) / soundscalefactor / 2,
-				};
-
-				alSourcefv(gSourceID[headwhacksound],
-				           AL_POSITION, gLoc);
-				alSourcePlay(gSourceID[headwhacksound]);
-				person[i].skeleton.free = 1;
-				person[i].longdead = 1;
-
-				for (auto& joint : person[i].skeleton.joints) {
-					joint.position = DoRotation(joint.position, 0, person[i].playerrotation, 0);
-					joint.position += person[i].playercoords;
-					joint.realoldposition = joint.position;
-					joint.velocity = person[0].velocity;
-					joint.velocity.y = -10;
-					joint.velocity.x += abs(Random() % 10) - 5;
-					joint.velocity.y += abs(Random() % 10) - 5;
-					joint.velocity.z += abs(Random() % 10) - 5;
-				}
-			}
-		}
+	}
+
+	//Tackle
+	if (person[0].currentanimation == diveanim && visions == 0) {
+		for (int i = 1; i < numpeople; i++) {
+			if (person[i].skeleton.free > 0
+			    || findDistancefast(person[i].playercoords,
+			                        person[0].playercoords
+			                        + flatfacing) > 22)
+				continue;
 
-		// Fire/wing
-		bool firing = false;
-		if (!Button()) {
-			oldbutton = 0;
-		} else if (oldbutton) {
-		} else if (person[0].ammo <= 0 && person[0].aiming
-		           && person[0].targetanimation != joganim
-		           && person[0].whichgun != nogun
-		           && person[0].whichgun != knife
-		           && person[0].whichgun != grenade) {
-			auto& coords = person[0].playercoords;
 			float gLoc[3] {
-				coords.x / soundscalefactor,
-				coords.y / soundscalefactor,
-				coords.z / soundscalefactor,
+				(camera.position.x
+				 + person[0].playercoords.x
+				 + flatfacing.x) / soundscalefactor / 2,
+				(camera.position.y
+				 + person[0].playercoords.y
+				 + flatfacing.y) / soundscalefactor / 2,
+				(camera.position.z
+				 + person[0].playercoords.z
+				 + flatfacing.z) / soundscalefactor / 2,
 			};
-			alSourcefv(gSourceID[clicksound], AL_POSITION, gLoc);
-			alSourcePlay(gSourceID[clicksound]);
-			oldbutton = 1;
-		} else if (visions == 1) {
-			alSourcePlay(gSourceID[soulinsound]);
-		} else {
-			firing = true;
-			// Assault rifles are automatic.
-			if (person[0].whichgun != assaultrifle)
-				oldbutton = 1;
-		}
 
-		XYZ wallhit;
-		XYZ start;
-		XYZ finalwallhit;
-		float inaccuracy = 0.0;
-		int numshots;
-		XYZ hitnorm;
-		XYZ hitmove;
-		int hitpoly = 0;
-		float hitrotation = 0.0f;
-		Model* model = NULL;
-
-		for (int j = 0; j < numpeople; j++) {
-			if (j && person[j].type != eviltype)
-				continue;
-
-			if (person[j].ammo <= 0
-			    || person[j].reloading > 0
-			    || person[j].targetanimation == joganim
-			    || person[j].aimamount < 1)
-				firing = false;
-			else if (j)
-				firing = person[j].whichgun != nogun
-					&& person[j].whichgun != knife
-					&& person[j].killtargetvisible
-					&& person[j].shotdelay < 0;
-
-			if (j && person[j].killtargetvisible
-			    && person[j].whichgun != nogun
-			    && person[j].whichgun != knife) {
-				person[j].aiming = 1;
-				if (person[j].shotdelay > 0)
-					person[j].shotdelay -= multiplier * 0.9;
+			alSourcefv(gSourceID[headwhacksound],
+			           AL_POSITION, gLoc);
+			alSourcePlay(gSourceID[headwhacksound]);
+			person[i].skeleton.free = 1;
+			person[i].longdead = 1;
+
+			for (auto& joint : person[i].skeleton.joints) {
+				joint.position = DoRotation(joint.position, 0, person[i].playerrotation, 0);
+				joint.position += person[i].playercoords;
+				joint.realoldposition = joint.position;
+				joint.velocity = person[0].velocity;
+				joint.velocity.y = -10;
+				joint.velocity.x += abs(Random() % 10) - 5;
+				joint.velocity.y += abs(Random() % 10) - 5;
+				joint.velocity.z += abs(Random() % 10) - 5;
 			}
+		}
+	}
 
-			if (person[j].skeleton.free == 1
-			    || person[j].targetanimation == getupfrontanim
-			    || person[j].targetanimation == getupbackanim)
-				person[j].shotdelay = shotdelayamount
-					/ difficulty;
+	// Fire/wing
+	bool firing = false;
+	if (!Button()) {
+		oldbutton = 0;
+	} else if (oldbutton) {
+	} else if (person[0].ammo <= 0 && person[0].aiming
+	           && person[0].targetanimation != joganim
+	           && person[0].whichgun != nogun
+	           && person[0].whichgun != knife
+	           && person[0].whichgun != grenade) {
+		auto& coords = person[0].playercoords;
+		float gLoc[3] {
+			coords.x / soundscalefactor,
+			coords.y / soundscalefactor,
+			coords.z / soundscalefactor,
+		};
+		alSourcefv(gSourceID[clicksound], AL_POSITION, gLoc);
+		alSourcePlay(gSourceID[clicksound]);
+		oldbutton = 1;
+	} else if (visions == 1) {
+		alSourcePlay(gSourceID[soulinsound]);
+	} else {
+		firing = true;
+		// Assault rifles are automatic.
+		if (person[0].whichgun != assaultrifle)
+			oldbutton = 1;
+	}
 
-			if (person[j].ammo == 0
-			    && person[j].reloads[person[j].whichgun] > 0) {
-				person[j].ammo = -1;
-				person[j].aiming = 0;
-			}
+	XYZ wallhit;
+	XYZ start;
+	XYZ finalwallhit;
+	float inaccuracy = 0.0;
+	int numshots;
+	XYZ hitnorm;
+	XYZ hitmove;
+	int hitpoly = 0;
+	float hitrotation = 0.0f;
+	Model* model = NULL;
+
+	for (int j = 0; j < numpeople; j++) {
+		if (j && person[j].type != eviltype)
+			continue;
+
+		if (person[j].ammo <= 0
+		    || person[j].reloading > 0
+		    || person[j].targetanimation == joganim
+		    || person[j].aimamount < 1)
+			firing = false;
+		else if (j)
+			firing = person[j].whichgun != nogun
+				&& person[j].whichgun != knife
+				&& person[j].killtargetvisible
+				&& person[j].shotdelay < 0;
+
+		if (j && person[j].killtargetvisible
+		    && person[j].whichgun != nogun
+		    && person[j].whichgun != knife) {
+			person[j].aiming = 1;
+			if (person[j].shotdelay > 0)
+				person[j].shotdelay -= multiplier * 0.9;
+		}
 
-			if (firing) {
-				if(person[j].whichgun==handgun1||person[j].whichgun==handgun2)inaccuracy=8;
+		if (person[j].skeleton.free == 1
+		    || person[j].targetanimation == getupfrontanim
+		    || person[j].targetanimation == getupbackanim)
+			person[j].shotdelay = shotdelayamount
+				/ difficulty;
 
-				if(person[j].whichgun==assaultrifle)inaccuracy=6;
+		if (person[j].ammo == 0
+		    && person[j].reloads[person[j].whichgun] > 0) {
+			person[j].ammo = -1;
+			person[j].aiming = 0;
+		}
 
-				if(person[j].whichgun==sniperrifle)inaccuracy=2;
+		if (firing) {
+			if(person[j].whichgun==handgun1||person[j].whichgun==handgun2)inaccuracy=8;
 
-				if(person[j].whichgun==shotgun)inaccuracy=6;
+			if(person[j].whichgun==assaultrifle)inaccuracy=6;
 
-				if(person[person[j].killtarget].skeleton.free==1)inaccuracy*=3;
+			if(person[j].whichgun==sniperrifle)inaccuracy=2;
 
-				person[j].shotdelay=shotdelayamount/difficulty;
+			if(person[j].whichgun==shotgun)inaccuracy=6;
 
-				if(person[j].aiming>=1&&person[j].recoil<=0){
+			if(person[person[j].killtarget].skeleton.free==1)inaccuracy*=3;
 
-					//Firing
+			person[j].shotdelay=shotdelayamount/difficulty;
 
-					person[j].litup=1;
+			if(person[j].aiming>=1&&person[j].recoil<=0){
 
-					person[j].recoil=1;
+				//Firing
 
-					XYZ end, aim, oldend;
+				person[j].litup=1;
 
-					HitStruct hitstruct,temphitstruct;
+				person[j].recoil=1;
 
-					float olddistance = 0.0f;
+				XYZ end, aim, oldend;
 
-					float distance = 0.0f;
+				HitStruct hitstruct,temphitstruct;
 
-					float totalarea = 0.0f;
+				float olddistance = 0.0f;
 
-					int whichhit=-1;
+				float distance = 0.0f;
 
-					if(person[j].whichgun==shotgun)numshots=7;
+				float totalarea = 0.0f;
 
-					if(person[j].whichgun!=shotgun)numshots=1;
+				int whichhit=-1;
 
-					if(person[j].whichgun!=grenade)person[j].ammo--;
+				if(person[j].whichgun==shotgun)numshots=7;
 
-					for(int p=0;p<numshots;p++){
+				if(person[j].whichgun!=shotgun)numshots=1;
 
-					if(!zoom||j!=0){
+				if(person[j].whichgun!=grenade)person[j].ammo--;
 
-						if(person[j].whichgun==assaultrifle)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,0,person[j].playerrotation-2.5,0);
+				for(int p=0;p<numshots;p++){
 
-						if(person[j].whichgun==sniperrifle)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,0,person[j].playerrotation+4,0);
+				if(!zoom||j!=0){
 
-						if(person[j].whichgun==shotgun)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,2+(float)(Random()%1000)/500,0,0);
+					if(person[j].whichgun==assaultrifle)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,0,person[j].playerrotation-2.5,0);
 
-						if(person[j].whichgun==shotgun)aim=DoRotation(aim,0,person[j].playerrotation-1+(float)(Random()%1000)/500,0);
+					if(person[j].whichgun==sniperrifle)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,0,person[j].playerrotation+4,0);
 
-						if(person[j].whichgun==handgun1&&!thirdperson&&j==0)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.65+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.35),0,person[j].playerrotation-.9,0);
+					if(person[j].whichgun==shotgun)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,2+(float)(Random()%1000)/500,0,0);
 
-						if(person[j].whichgun==handgun1&&(thirdperson||j!=0))aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.35+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.65),0,person[j].playerrotation-.9,0);
+					if(person[j].whichgun==shotgun)aim=DoRotation(aim,0,person[j].playerrotation-1+(float)(Random()%1000)/500,0);
 
-						if(person[j].whichgun==handgun2&&!thirdperson&&j==0)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.65+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.35),0,person[j].playerrotation-.9,0);
+					if(person[j].whichgun==handgun1&&!thirdperson&&j==0)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.65+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.35),0,person[j].playerrotation-.9,0);
 
-						if(person[j].whichgun==handgun2&&(thirdperson||j!=0))aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.35+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.65),0,person[j].playerrotation-.9,0);
+					if(person[j].whichgun==handgun1&&(thirdperson||j!=0))aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.35+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.65),0,person[j].playerrotation-.9,0);
 
-						if(j!=0&&person[person[j].killtarget].skeleton.free==0)aim=(DoRotation(person[person[j].killtarget].skeleton.joints[person[person[j].killtarget].skeleton.jointlabels[abdomen]].position,0,person[person[j].killtarget].playerrotation,0)+person[person[j].killtarget].playercoords)-(DoRotation(person[j].skeleton.joints[person[j].skeleton.jointlabels[lefthand]].position,0,person[j].playerrotation,0)+person[j].playercoords);
+					if(person[j].whichgun==handgun2&&!thirdperson&&j==0)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.65+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.35),0,person[j].playerrotation-.9,0);
 
-						if(j!=0&&person[person[j].killtarget].skeleton.free!=0)aim=person[person[j].killtarget].skeleton.joints[person[person[j].killtarget].skeleton.jointlabels[abdomen]].position-(DoRotation(person[j].skeleton.joints[person[j].skeleton.jointlabels[lefthand]].position,0,person[j].playerrotation,0)+person[j].playercoords);
+					if(person[j].whichgun==handgun2&&(thirdperson||j!=0))aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.35+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.65),0,person[j].playerrotation-.9,0);
 
-						if(j!=0)aim=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),(float)(abs(Random()%2000))/2000*inaccuracy-inaccuracy/2,(float)(abs(Random()%2000))/2000*inaccuracy-inaccuracy/2,0),0,person[j].playerrotation,0);
+					if(j!=0&&person[person[j].killtarget].skeleton.free==0)aim=(DoRotation(person[person[j].killtarget].skeleton.joints[person[person[j].killtarget].skeleton.jointlabels[abdomen]].position,0,person[person[j].killtarget].playerrotation,0)+person[person[j].killtarget].playercoords)-(DoRotation(person[j].skeleton.joints[person[j].skeleton.jointlabels[lefthand]].position,0,person[j].playerrotation,0)+person[j].playercoords);
 
-					}
+					if(j!=0&&person[person[j].killtarget].skeleton.free!=0)aim=person[person[j].killtarget].skeleton.joints[person[person[j].killtarget].skeleton.jointlabels[abdomen]].position-(DoRotation(person[j].skeleton.joints[person[j].skeleton.jointlabels[lefthand]].position,0,person[j].playerrotation,0)+person[j].playercoords);
 
-					if(zoom&&j==0){
+					if(j!=0)aim=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),(float)(abs(Random()%2000))/2000*inaccuracy-inaccuracy/2,(float)(abs(Random()%2000))/2000*inaccuracy-inaccuracy/2,0),0,person[j].playerrotation,0);
 
-						start=camera.position;
+				}
 
-						aim=facing;
+				if(zoom&&j==0){
 
-					}
+					start=camera.position;
 
-					Normalise(&aim);
+					aim=facing;
 
-					if(person[j].whichgun==sniperrifle){
+				}
 
-						start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
+				Normalise(&aim);
 
-						float gLoc[3];
+				if(person[j].whichgun==sniperrifle){
 
-						start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*.35;
+					start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
 
-						gLoc[0]=(camera.position.x+(start.x-camera.position.x)/4)/soundscalefactor;
+					float gLoc[3];
 
-						gLoc[1]=(camera.position.y+(start.y-camera.position.y)/4)/soundscalefactor;
+					start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*.35;
 
-						gLoc[2]=(camera.position.z+(start.z-camera.position.z)/4)/soundscalefactor;
+					gLoc[0]=(camera.position.x+(start.x-camera.position.x)/4)/soundscalefactor;
 
-						alSourcefv(gSourceID[riflesound], AL_POSITION, gLoc);
+					gLoc[1]=(camera.position.y+(start.y-camera.position.y)/4)/soundscalefactor;
 
-						alSourcePlay(gSourceID[riflesound]);
+					gLoc[2]=(camera.position.z+(start.z-camera.position.z)/4)/soundscalefactor;
 
-						if(j==0){
+					alSourcefv(gSourceID[riflesound], AL_POSITION, gLoc);
 
-							if(person[j].currentanimation!=crouchanim)camera.rotation2-=7;
+					alSourcePlay(gSourceID[riflesound]);
 
-							if(person[j].currentanimation==crouchanim)camera.rotation2-=3;
+					if(j==0){
 
-						}
+						if(person[j].currentanimation!=crouchanim)camera.rotation2-=7;
+
+						if(person[j].currentanimation==crouchanim)camera.rotation2-=3;
 
 					}
 
-					if(person[j].whichgun==shotgun){
+				}
 
-						start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
+				if(person[j].whichgun==shotgun){
 
-						float gLoc[3];
+					start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
 
-						start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*.35;
+					float gLoc[3];
 
-						if(p==numshots-1){
+					start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*.35;
 
-						gLoc[0]=(camera.position.x+(start.x-camera.position.x)/4)/soundscalefactor;
+					if(p==numshots-1){
 
-						gLoc[1]=(camera.position.y+(start.y-camera.position.y)/4)/soundscalefactor;
+					gLoc[0]=(camera.position.x+(start.x-camera.position.x)/4)/soundscalefactor;
 
-						gLoc[2]=(camera.position.z+(start.z-camera.position.z)/4)/soundscalefactor;
+					gLoc[1]=(camera.position.y+(start.y-camera.position.y)/4)/soundscalefactor;
 
-						alSourcefv(gSourceID[shotgunsound], AL_POSITION, gLoc);
+					gLoc[2]=(camera.position.z+(start.z-camera.position.z)/4)/soundscalefactor;
 
-						alSourcePlay(gSourceID[shotgunsound]);
+					alSourcefv(gSourceID[shotgunsound], AL_POSITION, gLoc);
 
-						if(j==0){
+					alSourcePlay(gSourceID[shotgunsound]);
 
-							if(person[j].currentanimation!=crouchanim)camera.rotation2-=7;
+					if(j==0){
 
-							if(person[j].currentanimation==crouchanim)camera.rotation2-=3;
+						if(person[j].currentanimation!=crouchanim)camera.rotation2-=7;
 
-						}
+						if(person[j].currentanimation==crouchanim)camera.rotation2-=3;
 
-						}
+					}
 
 					}
 
-					if(person[j].whichgun==handgun1){
+				}
 
-						start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[rightwrist])].position,0,person[j].playerrotation,0);
+				if(person[j].whichgun==handgun1){
 
-						start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*.55;
+					start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[rightwrist])].position,0,person[j].playerrotation,0);
 
-						float gLoc[3];
+					start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*.55;
 
-						gLoc[0]=(camera.position.x+(start.x-camera.position.x)/4)/soundscalefactor;
+					float gLoc[3];
 
-						gLoc[1]=(camera.position.y+(start.y-camera.position.y)/4)/soundscalefactor;
+					gLoc[0]=(camera.position.x+(start.x-camera.position.x)/4)/soundscalefactor;
 
-						gLoc[2]=(camera.position.z+(start.z-camera.position.z)/4)/soundscalefactor;
+					gLoc[1]=(camera.position.y+(start.y-camera.position.y)/4)/soundscalefactor;
 
-						alSourcefv(gSourceID[pistol1sound], AL_POSITION, gLoc);
+					gLoc[2]=(camera.position.z+(start.z-camera.position.z)/4)/soundscalefactor;
 
-						alSourcePlay(gSourceID[pistol1sound]);
+					alSourcefv(gSourceID[pistol1sound], AL_POSITION, gLoc);
 
-						if(j==0){
+					alSourcePlay(gSourceID[pistol1sound]);
 
-							if(person[j].currentanimation!=crouchanim)camera.rotation2-=6;
+					if(j==0){
 
-							if(person[j].currentanimation==crouchanim)camera.rotation2-=4;
+						if(person[j].currentanimation!=crouchanim)camera.rotation2-=6;
 
-						}
+						if(person[j].currentanimation==crouchanim)camera.rotation2-=4;
 
 					}
 
-					if(person[j].whichgun==handgun2){
+				}
 
-						start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[rightwrist])].position,0,person[j].playerrotation,0);
+				if(person[j].whichgun==handgun2){
 
-						start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*.55;
+					start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[rightwrist])].position,0,person[j].playerrotation,0);
 
-						float gLoc[3];
+					start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*.55;
 
-						gLoc[0]=(camera.position.x+(start.x-camera.position.x)/4)/soundscalefactor;
+					float gLoc[3];
 
-						gLoc[1]=(camera.position.y+(start.y-camera.position.y)/4)/soundscalefactor;
+					gLoc[0]=(camera.position.x+(start.x-camera.position.x)/4)/soundscalefactor;
 
-						gLoc[2]=(camera.position.z+(start.z-camera.position.z)/4)/soundscalefactor;
+					gLoc[1]=(camera.position.y+(start.y-camera.position.y)/4)/soundscalefactor;
 
-						alSourcefv(gSourceID[pistol2sound], AL_POSITION, gLoc);
+					gLoc[2]=(camera.position.z+(start.z-camera.position.z)/4)/soundscalefactor;
 
-						alSourcePlay(gSourceID[pistol2sound]);
+					alSourcefv(gSourceID[pistol2sound], AL_POSITION, gLoc);
 
-						if(j==0){
+					alSourcePlay(gSourceID[pistol2sound]);
 
-							if(person[j].currentanimation!=crouchanim)camera.rotation2-=5;
+					if(j==0){
 
-							if(person[j].currentanimation==crouchanim)camera.rotation2-=3;
+						if(person[j].currentanimation!=crouchanim)camera.rotation2-=5;
 
-						}
+						if(person[j].currentanimation==crouchanim)camera.rotation2-=3;
 
 					}
 
-					if(person[j].whichgun==assaultrifle){
+				}
 
-						start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
+				if(person[j].whichgun==assaultrifle){
 
-						start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*.25;
+					start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
 
-						float gLoc[3];
+					start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*.25;
 
-						gLoc[0]=(camera.position.x+(start.x-camera.position.x)/4)/soundscalefactor;
+					float gLoc[3];
 
-						gLoc[1]=(camera.position.y+(start.y-camera.position.y)/4)/soundscalefactor;
+					gLoc[0]=(camera.position.x+(start.x-camera.position.x)/4)/soundscalefactor;
 
-						gLoc[2]=(camera.position.z+(start.z-camera.position.z)/4)/soundscalefactor;
+					gLoc[1]=(camera.position.y+(start.y-camera.position.y)/4)/soundscalefactor;
 
-						alSourcefv(gSourceID[machinegunsound], AL_POSITION, gLoc);
+					gLoc[2]=(camera.position.z+(start.z-camera.position.z)/4)/soundscalefactor;
 
-						alSourcePlay(gSourceID[machinegunsound]);
+					alSourcefv(gSourceID[machinegunsound], AL_POSITION, gLoc);
 
-						if(j==0){
+					alSourcePlay(gSourceID[machinegunsound]);
 
-							if(person[j].currentanimation!=crouchanim){
+					if(j==0){
 
-								camera.rotation2-=2.3;
+						if(person[j].currentanimation!=crouchanim){
 
-								camera.rotation+=(float)(Random()%100)/50;
+							camera.rotation2-=2.3;
 
-							}
+							camera.rotation+=(float)(Random()%100)/50;
 
-							if(person[j].currentanimation==crouchanim){
+						}
 
-								camera.rotation2-=1.5;
+						if(person[j].currentanimation==crouchanim){
 
-								camera.rotation+=(float)(Random()%100)/60;
+							camera.rotation2-=1.5;
 
-							}
+							camera.rotation+=(float)(Random()%100)/60;
 
 						}
 
 					}
 
-					end=start+aim*1000;
+				}
 
-					if(debug){
+				end=start+aim*1000;
 
-					if(IsKeyDown(theKeyMap, MAC_G_KEY)&&j==0){
+				if(debug){
 
-						sprites.MakeSprite(grenadesprite, 1, 1, 1, 1, start, aim*200, 1.01);
+				if(IsKeyDown(theKeyMap, MAC_G_KEY)&&j==0){
 
-					}
+					sprites.MakeSprite(grenadesprite, 1, 1, 1, 1, start, aim*200, 1.01);
 
-					}
+				}
 
-					if(!IsKeyDown(theKeyMap, MAC_G_KEY)||j!=0||!debug){
+				}
 
-					int bulletstrength=1;
+				if(!IsKeyDown(theKeyMap, MAC_G_KEY)||j!=0||!debug){
 
-					int firstpass=-1;
+				int bulletstrength=1;
 
-					bool penetrate;
+				int firstpass=-1;
 
-					for(int m=0;m<bulletstrength;m++){
+				bool penetrate;
 
-						//People
+				for(int m=0;m<bulletstrength;m++){
 
-						whichhit=-1;
+					//People
 
-						for(int i=0;i<numpeople;i++){
+					whichhit=-1;
 
-							if(i!=j&&i!=firstpass&&person[i].existing){
+					for(int i=0;i<numpeople;i++){
 
-								temphitstruct=person[i].BulletCollideWithPlayer(i, start, end);
+						if(i!=j&&i!=firstpass&&person[i].existing){
 
-								if(temphitstruct.collision){
+							temphitstruct=person[i].BulletCollideWithPlayer(i, start, end);
 
-									distance=findDistancefast(start,temphitstruct.hitlocation);
+							if(temphitstruct.collision){
 
-									if(distance<olddistance||whichhit==-1){
+								distance=findDistancefast(start,temphitstruct.hitlocation);
 
-										end=temphitstruct.hitlocation;
+								if(distance<olddistance||whichhit==-1){
 
-										olddistance=distance;
+									end=temphitstruct.hitlocation;
 
-										hitstruct=temphitstruct;
+									olddistance=distance;
 
-										whichhit=i;
+									hitstruct=temphitstruct;
 
-									}
+									whichhit=i;
 
 								}
 
@@ -2531,387 +2528,387 @@ void Game::Tick()
 
 						}
 
-						//Blocks
+					}
 
-						wallhit=0;
+					//Blocks
 
-						beginx=(person[j].playercoords.x+block_spacing/2)/block_spacing-3;
+					wallhit=0;
 
-						if(beginx<0)beginx=0;
+					beginx=(person[j].playercoords.x+block_spacing/2)/block_spacing-3;
 
-						beginz=(person[j].playercoords.z+block_spacing/2)/block_spacing-3;
+					if(beginx<0)beginx=0;
 
-						if(beginz<0)beginz=0;
+					beginz=(person[j].playercoords.z+block_spacing/2)/block_spacing-3;
 
-						endx=(person[j].playercoords.x+block_spacing/2)/block_spacing+3;
+					if(beginz<0)beginz=0;
 
-						if(endx>num_blocks-1)endx=num_blocks-1;
+					endx=(person[j].playercoords.x+block_spacing/2)/block_spacing+3;
 
-						endz=(person[j].playercoords.z+block_spacing/2)/block_spacing+3;
+					if(endx>num_blocks-1)endx=num_blocks-1;
 
-						if(endz>num_blocks-1)endz=num_blocks-1;
+					endz=(person[j].playercoords.z+block_spacing/2)/block_spacing+3;
 
-						if(beginx<endx&&beginz<endz)
+					if(endz>num_blocks-1)endz=num_blocks-1;
 
-						finalwallhit=0;
+					if(beginx<endx&&beginz<endz)
 
-						for(int i=beginx;i<=endx;i++)
+					finalwallhit=0;
 
-							for(int j=beginz;j<=endz;j++){
+					for(int i=beginx;i<=endx;i++)
 
-								move=0;
+						for(int j=beginz;j<=endz;j++){
 
-								move.x=i*block_spacing;
+							move=0;
 
-								move.z=j*block_spacing;
+							move.x=i*block_spacing;
 
-								whichtri=blocks[citytype[i][j]].LineCheck2(start,end,&wallhit,move,cityrotation[i][j]*90);
+							move.z=j*block_spacing;
 
-								if(whichtri!=-1){
+							whichtri=blocks[citytype[i][j]].LineCheck2(start,end,&wallhit,move,cityrotation[i][j]*90);
 
-									whichhit=-1;
+							if(whichtri!=-1){
 
-									end=wallhit;
+								whichhit=-1;
 
-									finalwallhit=wallhit;
+								end=wallhit;
 
-									hitnorm=DoRotation(blocks[citytype[i][j]].normals[whichtri],0,cityrotation[i][j]*90,0);
+								finalwallhit=wallhit;
 
-									hitmove=move;
+								hitnorm=DoRotation(blocks[citytype[i][j]].normals[whichtri],0,cityrotation[i][j]*90,0);
 
-									hitrotation=cityrotation[i][j]*90;
+								hitmove=move;
 
-									hitpoly=whichtri;
+								hitrotation=cityrotation[i][j]*90;
 
-									model=&blocks[citytype[i][j]];
+								hitpoly=whichtri;
 
-									if(j==0&&blocks[citytype[i][j]].normals[whichtri].y>.9)bulletstrength=2;
+								model=&blocks[citytype[i][j]];
 
-								}
+								if(j==0&&blocks[citytype[i][j]].normals[whichtri].y>.9)bulletstrength=2;
 
 							}
 
-						wallhit=0;
+						}
 
-						wallhit.x=camera.position.x;
+					wallhit=0;
 
-						wallhit.z=camera.position.z;
+					wallhit.x=camera.position.x;
 
-						whichtri=Bigstreet.LineCheck2(start,end,&wallhit,wallhit,0);
+					wallhit.z=camera.position.z;
 
-						if(whichtri!=-1){
+					whichtri=Bigstreet.LineCheck2(start,end,&wallhit,wallhit,0);
 
-							end.y-=.5;
+					if(whichtri!=-1){
 
-							end=wallhit;
+						end.y-=.5;
 
-							finalwallhit=wallhit;
+						end=wallhit;
 
-							bulletstrength=2;
+						finalwallhit=wallhit;
 
-							hitnorm=0;
+						bulletstrength=2;
 
-							hitnorm.y=1;
+						hitnorm=0;
 
-							hitmove=0;
+						hitnorm.y=1;
 
-							hitrotation=0;
+						hitmove=0;
 
-						}
+						hitrotation=0;
 
-						if(m==0){
+					}
 
-							if(j==0&&slomo==2){
+					if(m==0){
 
-								soundscalefactor=soundscalefactordefault;
+						if(j==0&&slomo==2){
 
-								alSourceStop(gSourceID[whichsong]);
+							soundscalefactor=soundscalefactordefault;
 
-								alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 0);
+							alSourceStop(gSourceID[whichsong]);
 
-								alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 0);
+							alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 0);
 
-								if(person[0].whichgun==knife)whichsong=knifesong;
+							alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 0);
 
-								if(person[0].whichgun!=knife)whichsong=shootsong;
+							if(person[0].whichgun==knife)whichsong=knifesong;
 
-								if(type==zombie_type)whichsong=zombiesong;
+							if(person[0].whichgun!=knife)whichsong=shootsong;
 
-								alSourcef(gSourceID[whichsong], AL_PITCH, 1);
+							if(type==zombie_type)whichsong=zombiesong;
 
-								alSourcePlay(gSourceID[whichsong]);
+							alSourcef(gSourceID[whichsong], AL_PITCH, 1);
 
-								alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 1);
+							alSourcePlay(gSourceID[whichsong]);
 
-								alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 1);
+							alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 1);
 
-								slomo=0;
+							alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 1);
 
-								if(whichhit==-1)alSourcePlay(gSourceID[disguisekillsound]);
+							slomo=0;
 
-								flashamount=.5;
+							if(whichhit==-1)alSourcePlay(gSourceID[disguisekillsound]);
 
-								flashr=1;flashg=1;flashb=1;
+							flashamount=.5;
 
-							}
+							flashr=1;flashg=1;flashb=1;
 
 						}
 
-						//Impact
+					}
 
-						oldend=end;
+					//Impact
 
-						//with person
+					oldend=end;
 
-						if(whichhit!=-1&&whichhit!=firstpass){
+					//with person
 
-							if(j==0)person[whichhit].dead=1;
+					if(whichhit!=-1&&whichhit!=firstpass){
 
-							if(whichhit==1){
+						if(j==0)person[whichhit].dead=1;
 
-								murderer=j;
+						if(whichhit==1){
 
-							}
+							murderer=j;
 
-							if(person[whichhit].health==100&&j==0){
+						}
 
-								if(person[whichhit].type==civiliantype)civkills++;
+						if(person[whichhit].health==100&&j==0){
 
-								if(person[whichhit].type==eviltype)goodkills++;
+							if(person[whichhit].type==civiliantype)civkills++;
 
-							}
+							if(person[whichhit].type==eviltype)goodkills++;
 
-							if(person[whichhit].health==100&&j!=0){
+						}
 
-								badkills++;
+						if(person[whichhit].health==100&&j!=0){
 
-							}
+							badkills++;
 
-							//penetrate
+						}
 
-								penetrate=abs(Random()%2)==1;
+						//penetrate
 
-								if(numshots>1)penetrate=0;
+							penetrate=abs(Random()%2)==1;
 
-								if(penetrate){bulletstrength=2;
+							if(numshots>1)penetrate=0;
 
-								firstpass=whichhit;
+							if(penetrate){bulletstrength=2;
 
-								end=start+aim*1000;}
+							firstpass=whichhit;
 
-							if(person[j].whichgun==assaultrifle)person[whichhit].health-=20;
+							end=start+aim*1000;}
 
-							if(person[j].whichgun==assaultrifle&&person[whichhit].type==zombietype)person[whichhit].health-=60;
+						if(person[j].whichgun==assaultrifle)person[whichhit].health-=20;
 
-							if(person[j].whichgun==handgun1){
+						if(person[j].whichgun==assaultrifle&&person[whichhit].type==zombietype)person[whichhit].health-=60;
 
-								if(person[whichhit].type!=zombietype)person[whichhit].health-=100;
+						if(person[j].whichgun==handgun1){
 
-								if(person[whichhit].type==zombietype)person[whichhit].health-=100;
+							if(person[whichhit].type!=zombietype)person[whichhit].health-=100;
 
-								person[whichhit].DoAnimations(whichhit);
+							if(person[whichhit].type==zombietype)person[whichhit].health-=100;
 
-							}
+							person[whichhit].DoAnimations(whichhit);
 
-							if(person[j].whichgun==handgun2)person[whichhit].health-=20;
+						}
 
-							if(person[j].whichgun==handgun2&&person[whichhit].type==zombietype)person[whichhit].health-=60;
+						if(person[j].whichgun==handgun2)person[whichhit].health-=20;
 
-							if(person[j].whichgun==sniperrifle&&m!=0)person[whichhit].health-=30;
+						if(person[j].whichgun==handgun2&&person[whichhit].type==zombietype)person[whichhit].health-=60;
 
-							if(person[j].whichgun==shotgun)person[whichhit].health-=60;
+						if(person[j].whichgun==sniperrifle&&m!=0)person[whichhit].health-=30;
 
-							if(person[j].whichgun==sniperrifle&&m==0){
+						if(person[j].whichgun==shotgun)person[whichhit].health-=60;
 
-								if(person[whichhit].type!=zombietype)person[whichhit].health-=100;
+						if(person[j].whichgun==sniperrifle&&m==0){
 
-								if(person[whichhit].type==zombietype)person[whichhit].health-=120;
+							if(person[whichhit].type!=zombietype)person[whichhit].health-=100;
 
-								person[whichhit].DoAnimations(whichhit);
+							if(person[whichhit].type==zombietype)person[whichhit].health-=120;
 
-							}
+							person[whichhit].DoAnimations(whichhit);
 
-							if(hitstruct.joint1->modelnum==headmodel&&person[whichhit].type!=zombietype){
+						}
 
-								person[whichhit].health-=60;
+						if(hitstruct.joint1->modelnum==headmodel&&person[whichhit].type!=zombietype){
 
-							}
+							person[whichhit].health-=60;
 
-							if(person[whichhit].type==zombietype)person[whichhit].speedmult-=.05;
+						}
 
-							if(person[whichhit].type==zombietype)person[whichhit].maxhealth-=10;
+						if(person[whichhit].type==zombietype)person[whichhit].speedmult-=.05;
 
-							if(whichhit==0){
+						if(person[whichhit].type==zombietype)person[whichhit].maxhealth-=10;
 
-								bulletstrength=1;
+						if(whichhit==0){
 
-								person[0].health=100;
+							bulletstrength=1;
 
-								flashr=0;
+							person[0].health=100;
 
-								flashg=0;
+							flashr=0;
 
-								flashb=0;
+							flashg=0;
 
-								flashamount=1;
+							flashb=0;
 
-								float gLoc[3];
+							flashamount=1;
 
-								gLoc[0]=hitstruct.hitlocation.x/soundscalefactor;
+							float gLoc[3];
 
-								gLoc[1]=hitstruct.hitlocation.y/soundscalefactor;
+							gLoc[0]=hitstruct.hitlocation.x/soundscalefactor;
 
-								gLoc[2]=hitstruct.hitlocation.z/soundscalefactor;
+							gLoc[1]=hitstruct.hitlocation.y/soundscalefactor;
 
-								alSourcefv(gSourceID[bodywhacksound], AL_POSITION, gLoc);
+							gLoc[2]=hitstruct.hitlocation.z/soundscalefactor;
 
-								alSourcePlay(gSourceID[bodywhacksound]);
+							alSourcefv(gSourceID[bodywhacksound], AL_POSITION, gLoc);
 
-							}
+							alSourcePlay(gSourceID[bodywhacksound]);
 
-							person[whichhit].longdead=1;
+						}
 
-							if(person[whichhit].health<=0){
+						person[whichhit].longdead=1;
 
-								person[whichhit].skeleton.offset=0;
+						if(person[whichhit].health<=0){
 
-								if(person[whichhit].skeleton.free!=1){
+							person[whichhit].skeleton.offset=0;
 
-									person[whichhit].skeleton.free=1;
+							if(person[whichhit].skeleton.free!=1){
 
-									totalarea=0;
+								person[whichhit].skeleton.free=1;
 
-									for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
+								totalarea=0;
 
-										person[whichhit].skeleton.joints[j].position=DoRotation(person[whichhit].skeleton.joints[j].position,0,person[whichhit].playerrotation,0);
+								for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
 
-										person[whichhit].skeleton.joints[j].position+=person[whichhit].playercoords;
+									person[whichhit].skeleton.joints[j].position=DoRotation(person[whichhit].skeleton.joints[j].position,0,person[whichhit].playerrotation,0);
 
-										person[whichhit].skeleton.joints[j].realoldposition=person[whichhit].skeleton.joints[j].position;
+									person[whichhit].skeleton.joints[j].position+=person[whichhit].playercoords;
 
-										person[whichhit].skeleton.joints[j].velocity=person[whichhit].velocity;
+									person[whichhit].skeleton.joints[j].realoldposition=person[whichhit].skeleton.joints[j].position;
 
-										person[whichhit].skeleton.joints[j].velocity.x+=(float)(abs(Random()%20)-10)/2;
+									person[whichhit].skeleton.joints[j].velocity=person[whichhit].velocity;
 
-										person[whichhit].skeleton.joints[j].velocity.y+=(float)(abs(Random()%20)-10)/2;
+									person[whichhit].skeleton.joints[j].velocity.x+=(float)(abs(Random()%20)-10)/2;
 
-										person[whichhit].skeleton.joints[j].velocity.z+=(float)(abs(Random()%20)-10)/2;
+									person[whichhit].skeleton.joints[j].velocity.y+=(float)(abs(Random()%20)-10)/2;
 
-									}
+									person[whichhit].skeleton.joints[j].velocity.z+=(float)(abs(Random()%20)-10)/2;
 
 								}
 
-								for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
+							}
 
-									if(findDistancefast(person[whichhit].skeleton.joints[j].position,hitstruct.hitlocation)<200){
+							for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
 
-										totalarea+=(200/findDistancefast(person[whichhit].skeleton.joints[j].position,hitstruct.hitlocation));
+								if(findDistancefast(person[whichhit].skeleton.joints[j].position,hitstruct.hitlocation)<200){
 
-									}
+									totalarea+=(200/findDistancefast(person[whichhit].skeleton.joints[j].position,hitstruct.hitlocation));
 
 								}
 
-								for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
+							}
 
-									if(findDistancefast(person[whichhit].skeleton.joints[j].position,hitstruct.hitlocation)<200){
+							for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
 
-										person[whichhit].skeleton.joints[j].velocity+=aim*((200/findDistancefast(person[whichhit].skeleton.joints[j].position,hitstruct.hitlocation))/totalarea*200);
+								if(findDistancefast(person[whichhit].skeleton.joints[j].position,hitstruct.hitlocation)<200){
 
-									}
+									person[whichhit].skeleton.joints[j].velocity+=aim*((200/findDistancefast(person[whichhit].skeleton.joints[j].position,hitstruct.hitlocation))/totalarea*200);
 
 								}
 
 							}
 
-							if(person[whichhit].health>0){
+						}
 
-								if(person[whichhit].killtargetvisible==0&&person[whichhit].type!=zombietype&&person[whichhit].currentanimation!=getupfrontanim&person[whichhit].currentanimation!=getupbackanim){
+						if(person[whichhit].health>0){
 
-									if(hitstruct.joint1->modelnum==headmodel)person[whichhit].targetanimation=headpainanim;
+							if(person[whichhit].killtargetvisible==0&&person[whichhit].type!=zombietype&&person[whichhit].currentanimation!=getupfrontanim&person[whichhit].currentanimation!=getupbackanim){
 
-									if(hitstruct.joint1->modelnum==chestmodel)person[whichhit].targetanimation=chestpainanim;
+								if(hitstruct.joint1->modelnum==headmodel)person[whichhit].targetanimation=headpainanim;
 
-									if(hitstruct.joint1->modelnum==abdomenmodel)person[whichhit].targetanimation=stomachpainanim;
+								if(hitstruct.joint1->modelnum==chestmodel)person[whichhit].targetanimation=chestpainanim;
 
-									if(hitstruct.joint1->label==rightelbow||hitstruct.joint1->label==rightshoulder||hitstruct.joint1->label==rightwrist||hitstruct.joint1->label==righthand)person[whichhit].targetanimation=rightarmpainanim;
+								if(hitstruct.joint1->modelnum==abdomenmodel)person[whichhit].targetanimation=stomachpainanim;
 
-									if(hitstruct.joint1->label==leftelbow||hitstruct.joint1->label==leftshoulder||hitstruct.joint1->label==leftwrist||hitstruct.joint1->label==lefthand)person[whichhit].targetanimation=leftarmpainanim;
+								if(hitstruct.joint1->label==rightelbow||hitstruct.joint1->label==rightshoulder||hitstruct.joint1->label==rightwrist||hitstruct.joint1->label==righthand)person[whichhit].targetanimation=rightarmpainanim;
 
-									if(hitstruct.joint1->label==rightknee||hitstruct.joint1->label==righthip||hitstruct.joint1->label==rightankle||hitstruct.joint1->label==rightfoot)person[whichhit].targetanimation=rightlegpainanim;
+								if(hitstruct.joint1->label==leftelbow||hitstruct.joint1->label==leftshoulder||hitstruct.joint1->label==leftwrist||hitstruct.joint1->label==lefthand)person[whichhit].targetanimation=leftarmpainanim;
 
-									if(hitstruct.joint1->label==leftknee||hitstruct.joint1->label==lefthip||hitstruct.joint1->label==leftankle||hitstruct.joint1->label==leftfoot)person[whichhit].targetanimation=leftlegpainanim;
+								if(hitstruct.joint1->label==rightknee||hitstruct.joint1->label==righthip||hitstruct.joint1->label==rightankle||hitstruct.joint1->label==rightfoot)person[whichhit].targetanimation=rightlegpainanim;
 
-									person[whichhit].targetframe=0;
+								if(hitstruct.joint1->label==leftknee||hitstruct.joint1->label==lefthip||hitstruct.joint1->label==leftankle||hitstruct.joint1->label==leftfoot)person[whichhit].targetanimation=leftlegpainanim;
 
-									person[whichhit].target=0;
+								person[whichhit].targetframe=0;
 
-								}
+								person[whichhit].target=0;
 
-								person[whichhit].skeleton.offset=1;
+							}
 
-								for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
+							person[whichhit].skeleton.offset=1;
 
-									if(findDistancefast(DoRotation(person[whichhit].skeleton.joints[j].position,0,person[whichhit].playerrotation,0)+person[whichhit].playercoords,hitstruct.hitlocation)<200){
+							for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
 
-										totalarea+=(200/findDistancefast(DoRotation(person[whichhit].skeleton.joints[j].position,0,person[whichhit].playerrotation,0)+person[whichhit].playercoords,hitstruct.hitlocation));
+								if(findDistancefast(DoRotation(person[whichhit].skeleton.joints[j].position,0,person[whichhit].playerrotation,0)+person[whichhit].playercoords,hitstruct.hitlocation)<200){
 
-									}
+									totalarea+=(200/findDistancefast(DoRotation(person[whichhit].skeleton.joints[j].position,0,person[whichhit].playerrotation,0)+person[whichhit].playercoords,hitstruct.hitlocation));
 
 								}
 
-								float offsetlength;
+							}
 
-								for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
+							float offsetlength;
 
-									if(findDistancefast(DoRotation(person[whichhit].skeleton.joints[j].position,0,person[whichhit].playerrotation,0)+person[whichhit].playercoords,hitstruct.hitlocation)<200){
+							for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
 
-										person[whichhit].skeleton.joints[j].offset+=DoRotation(aim*((200/findDistancefast(DoRotation(person[whichhit].skeleton.joints[j].position,0,person[whichhit].playerrotation,0)+person[whichhit].playercoords,hitstruct.hitlocation))/totalarea*10),0,-person[whichhit].playerrotation,0);
+								if(findDistancefast(DoRotation(person[whichhit].skeleton.joints[j].position,0,person[whichhit].playerrotation,0)+person[whichhit].playercoords,hitstruct.hitlocation)<200){
 
-									}
+									person[whichhit].skeleton.joints[j].offset+=DoRotation(aim*((200/findDistancefast(DoRotation(person[whichhit].skeleton.joints[j].position,0,person[whichhit].playerrotation,0)+person[whichhit].playercoords,hitstruct.hitlocation))/totalarea*10),0,-person[whichhit].playerrotation,0);
 
-									offsetlength=findLengthfast(person[whichhit].skeleton.joints[j].offset);
+								}
 
-									if(offsetlength>36){
+								offsetlength=findLengthfast(person[whichhit].skeleton.joints[j].offset);
 
-										Normalise(&person[whichhit].skeleton.joints[j].offset);
+								if(offsetlength>36){
 
-										person[whichhit].skeleton.joints[j].offset*=6;
+									Normalise(&person[whichhit].skeleton.joints[j].offset);
 
-									}
+									person[whichhit].skeleton.joints[j].offset*=6;
 
 								}
 
 							}
 
-							if(hitstruct.joint1->modelnum==headmodel&&person[whichhit].health<=0){
+						}
 
-								for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
+						if(hitstruct.joint1->modelnum==headmodel&&person[whichhit].health<=0){
 
-									if(&person[whichhit].skeleton.joints[j]==hitstruct.joint1||&person[whichhit].skeleton.joints[j]==hitstruct.joint2){
+							for(int j=0;j<person[whichhit].skeleton.num_joints;j++){
 
-										if(j!=person[whichhit].skeleton.jointlabels[abdomen]&&j!=person[whichhit].skeleton.jointlabels[groin]&&j!=person[whichhit].skeleton.jointlabels[neck]){
+								if(&person[whichhit].skeleton.joints[j]==hitstruct.joint1||&person[whichhit].skeleton.joints[j]==hitstruct.joint2){
 
-											sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[whichhit].skeleton.joints[j].position, person[whichhit].skeleton.joints[j].velocity/3, 9);
+									if(j!=person[whichhit].skeleton.jointlabels[abdomen]&&j!=person[whichhit].skeleton.jointlabels[groin]&&j!=person[whichhit].skeleton.jointlabels[neck]){
 
-											sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[whichhit].skeleton.joints[j].position, DoRotation(person[whichhit].skeleton.joints[j].velocity/3,Random()%360,Random()%360,0)/5, 5);
+										sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[whichhit].skeleton.joints[j].position, person[whichhit].skeleton.joints[j].velocity/3, 9);
 
-											sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[whichhit].skeleton.joints[j].position, DoRotation(person[whichhit].skeleton.joints[j].velocity/3,Random()%360,Random()%360,0)/5, 5);
+										sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[whichhit].skeleton.joints[j].position, DoRotation(person[whichhit].skeleton.joints[j].velocity/3,Random()%360,Random()%360,0)/5, 5);
 
-											sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[whichhit].skeleton.joints[j].position, DoRotation(person[whichhit].skeleton.joints[j].velocity/3,Random()%360,Random()%360,0)/5, 5);
+										sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[whichhit].skeleton.joints[j].position, DoRotation(person[whichhit].skeleton.joints[j].velocity/3,Random()%360,Random()%360,0)/5, 5);
 
-											sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[whichhit].skeleton.joints[j].position, DoRotation(person[whichhit].skeleton.joints[j].velocity/3,Random()%360,Random()%360,0)/5, 5);
+										sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[whichhit].skeleton.joints[j].position, DoRotation(person[whichhit].skeleton.joints[j].velocity/3,Random()%360,Random()%360,0)/5, 5);
 
-											person[whichhit].skeleton.DeleteJoint(j);
+										sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[whichhit].skeleton.joints[j].position, DoRotation(person[whichhit].skeleton.joints[j].velocity/3,Random()%360,Random()%360,0)/5, 5);
 
-											person[whichhit].skeleton.broken=1;
+										person[whichhit].skeleton.DeleteJoint(j);
 
-											person[whichhit].health=-10000;
+										person[whichhit].skeleton.broken=1;
 
-											person[whichhit].skeleton.joints[j].existing=0;
+										person[whichhit].health=-10000;
 
-											if(person[whichhit].type==zombietype)score+=300;
+										person[whichhit].skeleton.joints[j].existing=0;
 
-										}
+										if(person[whichhit].type==zombietype)score+=300;
 
 									}
 
@@ -2919,211 +2916,211 @@ void Game::Tick()
 
 							}
 
-							XYZ velocity;
+						}
 
-							velocity=aim*-8;
+						XYZ velocity;
 
-							//blood
+						velocity=aim*-8;
 
-							if(!hitstruct.joint1->modelnum==headmodel){
+						//blood
 
-							if(person[j].whichgun==sniperrifle)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*0, 5);
+						if(!hitstruct.joint1->modelnum==headmodel){
 
-							if(person[j].whichgun==sniperrifle&&penetrate)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*-3, 7);
+						if(person[j].whichgun==sniperrifle)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*0, 5);
 
-							if(person[j].whichgun==shotgun)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*0, 5);
+						if(person[j].whichgun==sniperrifle&&penetrate)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*-3, 7);
 
-							if(person[j].whichgun==shotgun&&penetrate)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*-3, 7);
+						if(person[j].whichgun==shotgun)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*0, 5);
 
-							if(person[j].whichgun==assaultrifle)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*0, 3);
+						if(person[j].whichgun==shotgun&&penetrate)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*-3, 7);
 
-							if(person[j].whichgun==assaultrifle&&penetrate)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*-3, 7);
+						if(person[j].whichgun==assaultrifle)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*0, 3);
 
-							if(person[j].whichgun==handgun1)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*0, 3);
+						if(person[j].whichgun==assaultrifle&&penetrate)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*-3, 7);
 
-							if(person[j].whichgun==handgun1&&penetrate)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*-3, 4);
+						if(person[j].whichgun==handgun1)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*0, 3);
 
-							if(person[j].whichgun==handgun2)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*0, 3);
+						if(person[j].whichgun==handgun1&&penetrate)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*-3, 4);
 
-							if(person[j].whichgun==handgun2&&penetrate)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*-3, 4);
+						if(person[j].whichgun==handgun2)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*0, 3);
 
-							}else{
+						if(person[j].whichgun==handgun2&&penetrate)sprites.MakeSprite(bloodspritenoup, 1, 1, 0, 0, hitstruct.hitlocation, velocity*-3, 4);
 
-								sprites.MakeSprite(bloodspritenoup, 1, 1, .2, .2, hitstruct.hitlocation, velocity*0, 6);
+						}else{
 
-								sprites.MakeSprite(bloodspritenoup, 1, 1, .5, .5, hitstruct.hitlocation, velocity*-2, 7);
+							sprites.MakeSprite(bloodspritenoup, 1, 1, .2, .2, hitstruct.hitlocation, velocity*0, 6);
 
-								sprites.MakeSprite(bloodspritenoup, 1, 1, .2, .2, hitstruct.hitlocation, velocity*-3, 10);
+							sprites.MakeSprite(bloodspritenoup, 1, 1, .5, .5, hitstruct.hitlocation, velocity*-2, 7);
 
-							}
+							sprites.MakeSprite(bloodspritenoup, 1, 1, .2, .2, hitstruct.hitlocation, velocity*-3, 10);
 
-							person[whichhit].bjoint1=hitstruct.joint1;
+						}
 
-							person[whichhit].bjoint2=hitstruct.joint2;
+						person[whichhit].bjoint1=hitstruct.joint1;
 
-							person[whichhit].bleeding=1;
+						person[whichhit].bjoint2=hitstruct.joint2;
 
-							person[whichhit].bleeddelay=1;
+						person[whichhit].bleeding=1;
 
-							float gLoc[3];
+						person[whichhit].bleeddelay=1;
 
-							gLoc[0]=(camera.position.x+(hitstruct.hitlocation.x-camera.position.x)/4)/soundscalefactor;
+						float gLoc[3];
 
-							gLoc[1]=(camera.position.y+(hitstruct.hitlocation.y-camera.position.y)/4)/soundscalefactor;
+						gLoc[0]=(camera.position.x+(hitstruct.hitlocation.x-camera.position.x)/4)/soundscalefactor;
 
-							gLoc[2]=(camera.position.z+(hitstruct.hitlocation.z-camera.position.z)/4)/soundscalefactor;
+						gLoc[1]=(camera.position.y+(hitstruct.hitlocation.y-camera.position.y)/4)/soundscalefactor;
 
-							if(!hitstruct.joint1->modelnum==headmodel){
+						gLoc[2]=(camera.position.z+(hitstruct.hitlocation.z-camera.position.z)/4)/soundscalefactor;
 
-								if(!thirdperson)alSourcef(gSourceID[bodyhitsound], AL_MIN_GAIN, 1);
+						if(!hitstruct.joint1->modelnum==headmodel){
 
-								if(thirdperson)alSourcef(gSourceID[bodyhitsound], AL_MIN_GAIN, .1);
+							if(!thirdperson)alSourcef(gSourceID[bodyhitsound], AL_MIN_GAIN, 1);
 
-								alSourcefv(gSourceID[bodyhitsound], AL_POSITION, gLoc);
+							if(thirdperson)alSourcef(gSourceID[bodyhitsound], AL_MIN_GAIN, .1);
 
-								alSourcePlay(gSourceID[bodyhitsound]);
+							alSourcefv(gSourceID[bodyhitsound], AL_POSITION, gLoc);
 
-							}
+							alSourcePlay(gSourceID[bodyhitsound]);
 
-							if(hitstruct.joint1->modelnum==headmodel){
+						}
 
-								if(!thirdperson)alSourcef(gSourceID[headshotsound], AL_MIN_GAIN, 1);
+						if(hitstruct.joint1->modelnum==headmodel){
 
-								if(thirdperson)alSourcef(gSourceID[headshotsound], AL_MIN_GAIN, .1);
+							if(!thirdperson)alSourcef(gSourceID[headshotsound], AL_MIN_GAIN, 1);
 
-								alSourcefv(gSourceID[headshotsound], AL_POSITION, gLoc);
+							if(thirdperson)alSourcef(gSourceID[headshotsound], AL_MIN_GAIN, .1);
 
-								alSourcePlay(gSourceID[headshotsound]);
+							alSourcefv(gSourceID[headshotsound], AL_POSITION, gLoc);
 
-							}
+							alSourcePlay(gSourceID[headshotsound]);
 
-						}//with wall
+						}
 
-						if(oldend==finalwallhit){
+					}//with wall
 
-							decals.MakeDecal(bullethole, finalwallhit,.7,hitnorm, hitpoly, model, hitmove, hitrotation);
+					if(oldend==finalwallhit){
 
-							XYZ velocity;
+						decals.MakeDecal(bullethole, finalwallhit,.7,hitnorm, hitpoly, model, hitmove, hitrotation);
 
-							velocity=aim*-4;
+						XYZ velocity;
 
-							velocity=hitnorm*3;
+						velocity=aim*-4;
 
-							if(person[j].whichgun==sniperrifle){
+						velocity=hitnorm*3;
 
-								sprites.MakeSprite(smokesprite, .4, 1, 1, 1, finalwallhit, velocity, 10);
+						if(person[j].whichgun==sniperrifle){
 
-								sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, finalwallhit, velocity, 2);
+							sprites.MakeSprite(smokesprite, .4, 1, 1, 1, finalwallhit, velocity, 10);
 
-							}
+							sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, finalwallhit, velocity, 2);
 
-							if(person[j].whichgun==shotgun){
+						}
 
-								sprites.MakeSprite(smokesprite, .4, 1, 1, 1, finalwallhit, velocity, 5);
+						if(person[j].whichgun==shotgun){
 
-								sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, finalwallhit, velocity, .8);
+							sprites.MakeSprite(smokesprite, .4, 1, 1, 1, finalwallhit, velocity, 5);
 
-							}
+							sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, finalwallhit, velocity, .8);
 
-							if(person[j].whichgun==assaultrifle){
+						}
 
-								sprites.MakeSprite(smokesprite, .4, 1, 1, 1, finalwallhit, velocity, 6);
+						if(person[j].whichgun==assaultrifle){
 
-								sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, finalwallhit, velocity, 1);
+							sprites.MakeSprite(smokesprite, .4, 1, 1, 1, finalwallhit, velocity, 6);
 
-							}
+							sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, finalwallhit, velocity, 1);
 
-							if(person[j].whichgun==handgun1){
+						}
 
-								sprites.MakeSprite(smokesprite, .4, 1, 1, 1, finalwallhit, velocity, 6);
+						if(person[j].whichgun==handgun1){
 
-								sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, finalwallhit, velocity, 1);
+							sprites.MakeSprite(smokesprite, .4, 1, 1, 1, finalwallhit, velocity, 6);
 
-							}
+							sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, finalwallhit, velocity, 1);
 
-							if(person[j].whichgun==handgun2){
+						}
 
-								sprites.MakeSprite(smokesprite, .4, 1, 1, 1, finalwallhit, velocity, 6);
+						if(person[j].whichgun==handgun2){
 
-								sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, finalwallhit, velocity, 1);
+							sprites.MakeSprite(smokesprite, .4, 1, 1, 1, finalwallhit, velocity, 6);
 
-							}
+							sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, finalwallhit, velocity, 1);
 
-							float gLoc[3];
+						}
 
-							gLoc[0]=finalwallhit.x/soundscalefactor;
+						float gLoc[3];
 
-							gLoc[1]=finalwallhit.y/soundscalefactor;
+						gLoc[0]=finalwallhit.x/soundscalefactor;
 
-							gLoc[2]=finalwallhit.z/soundscalefactor;
+						gLoc[1]=finalwallhit.y/soundscalefactor;
 
-							alSourcefv(gSourceID[wallhitsound], AL_POSITION, gLoc);
+						gLoc[2]=finalwallhit.z/soundscalefactor;
 
-							alSourcePlay(gSourceID[wallhitsound]);
+						alSourcefv(gSourceID[wallhitsound], AL_POSITION, gLoc);
 
-						}
+						alSourcePlay(gSourceID[wallhitsound]);
 
-						lastshot[0]=start;
+					}
 
-						lastshot[1]=oldend;
+					lastshot[0]=start;
 
-						velocity=aim*8;
+					lastshot[1]=oldend;
 
-						if(person[j].whichgun!=sniperrifle&&person[j].whichgun!=shotgun&&p==numshots-1)sprites.MakeSprite(smokesprite, .3, 1, 1, 1, start+aim*1.5, velocity, 3);
+					velocity=aim*8;
 
-						if(person[j].whichgun==shotgun&&p==numshots-1)sprites.MakeSprite(smokesprite, .4, 1, 1, 1, start+aim*1.5, velocity, 5);
+					if(person[j].whichgun!=sniperrifle&&person[j].whichgun!=shotgun&&p==numshots-1)sprites.MakeSprite(smokesprite, .3, 1, 1, 1, start+aim*1.5, velocity, 3);
 
-						if(person[j].whichgun==sniperrifle&&!zoom)sprites.MakeSprite(smokesprite, .3, 1, 1, 1, start+aim*2.2, velocity, 4);
+					if(person[j].whichgun==shotgun&&p==numshots-1)sprites.MakeSprite(smokesprite, .4, 1, 1, 1, start+aim*1.5, velocity, 5);
 
-						if(j!=0||zoom==0)sprites.MakeSprite(bullet, .07, 1, 1, .7, lastshot[0]+aim*1, lastshot[1], .2);
+					if(person[j].whichgun==sniperrifle&&!zoom)sprites.MakeSprite(smokesprite, .3, 1, 1, 1, start+aim*2.2, velocity, 4);
 
-						//Nearby bullet whoosh
+					if(j!=0||zoom==0)sprites.MakeSprite(bullet, .07, 1, 1, .7, lastshot[0]+aim*1, lastshot[1], .2);
 
-						long dot_ta,dot_tb;
+					//Nearby bullet whoosh
 
-						XYZ *a,*b,*c,nearest;
+					long dot_ta,dot_tb;
 
-						a=&lastshot[0];
+					XYZ *a,*b,*c,nearest;
 
-						*a+=aim*1;
+					a=&lastshot[0];
 
-						b=&lastshot[1];
+					*a+=aim*1;
 
-						c=&camera.position;
+					b=&lastshot[1];
 
-						nearest=0;
+					c=&camera.position;
 
-						dot_ta = (c->x - a->x)*(b->x - a->x) + (c->y - a->y)*(b->y - a->y) + (c->z - a->z)*(b->z - a->z);
+					nearest=0;
 
-						dot_tb = (c->x - b->x)*(a->x - b->x) + (c->y - b->y)*(a->y - b->y) + (c->z - b->z)*(a->z - b->z);
+					dot_ta = (c->x - a->x)*(b->x - a->x) + (c->y - a->y)*(b->y - a->y) + (c->z - a->z)*(b->z - a->z);
 
-						if (!dot_ta <= 0&&!dot_tb <= 0){
+					dot_tb = (c->x - b->x)*(a->x - b->x) + (c->y - b->y)*(a->y - b->y) + (c->z - b->z)*(a->z - b->z);
 
-								nearest.x = a->x + ((b->x - a->x) * dot_ta)/(dot_ta + dot_tb);
+					if (!dot_ta <= 0&&!dot_tb <= 0){
 
-								nearest.y = a->y + ((b->y - a->y) * dot_ta)/(dot_ta +dot_tb);
+							nearest.x = a->x + ((b->x - a->x) * dot_ta)/(dot_ta + dot_tb);
 
-								nearest.z = a->z + ((b->z - a->z) * dot_ta)/(dot_ta +dot_tb);
+							nearest.y = a->y + ((b->y - a->y) * dot_ta)/(dot_ta +dot_tb);
 
-							}
+							nearest.z = a->z + ((b->z - a->z) * dot_ta)/(dot_ta +dot_tb);
 
-						if(nearest.x){
+						}
 
-							if(findDistancefast(nearest,camera.position)<10&&(thirdperson==2||j!=0)){
+					if(nearest.x){
 
-								float gLoc[3];
+						if(findDistancefast(nearest,camera.position)<10&&(thirdperson==2||j!=0)){
 
-								gLoc[0]=(camera.position.x+(nearest.x-camera.position.x))/soundscalefactor;
+							float gLoc[3];
 
-								gLoc[1]=(camera.position.y+(nearest.y-camera.position.y))/soundscalefactor;
+							gLoc[0]=(camera.position.x+(nearest.x-camera.position.x))/soundscalefactor;
 
-								gLoc[2]=(camera.position.z+(nearest.z-camera.position.z))/soundscalefactor;
+							gLoc[1]=(camera.position.y+(nearest.y-camera.position.y))/soundscalefactor;
 
-								alSourcefv(gSourceID[nearbulletsound], AL_POSITION, gLoc);
+							gLoc[2]=(camera.position.z+(nearest.z-camera.position.z))/soundscalefactor;
 
-								alSourcePlay(gSourceID[nearbulletsound]);
+							alSourcefv(gSourceID[nearbulletsound], AL_POSITION, gLoc);
 
-							}
+							alSourcePlay(gSourceID[nearbulletsound]);
 
 						}
 
@@ -3131,189 +3128,189 @@ void Game::Tick()
 
 				}
 
-				}
+			}
 
-				}
 			}
-		}
 
-		if(lasersight&&person[0].whichgun!=grenade){
+			}
+		}
+	}
 
-		for(int j=0;j<numpeople;j++){
+	if(lasersight&&person[0].whichgun!=grenade){
 
-			if(person[j].type==playertype){
+	for(int j=0;j<numpeople;j++){
 
-				if(person[j].aiming>=1){
+		if(person[j].type==playertype){
 
-					//Firing
+			if(person[j].aiming>=1){
 
-					XYZ end, aim;
+				//Firing
 
-					HitStruct hitstruct,temphitstruct;
+				XYZ end, aim;
 
-					float olddistance = 0.0f;
+				HitStruct hitstruct,temphitstruct;
 
-					float distance;
+				float olddistance = 0.0f;
 
-					int whichhit=-1;
+				float distance;
 
-					if(!zoom||j!=0){
+				int whichhit=-1;
 
-						if(person[j].whichgun==assaultrifle)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,0,person[j].playerrotation-2.5,0);
+				if(!zoom||j!=0){
 
-						if(person[j].whichgun==sniperrifle)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,0,person[j].playerrotation+4,0);
+					if(person[j].whichgun==assaultrifle)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,0,person[j].playerrotation-2.5,0);
 
-						if(person[j].whichgun==shotgun)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,0,person[j].playerrotation+4,0);
+					if(person[j].whichgun==sniperrifle)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,0,person[j].playerrotation+4,0);
 
-						if(person[j].whichgun==handgun1&&!thirdperson&&j==0)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.65+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.35),0,person[j].playerrotation-.9,0);
+					if(person[j].whichgun==shotgun)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position-person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position,0,person[j].playerrotation+4,0);
 
-						if(person[j].whichgun==handgun1&&(thirdperson||j!=0))aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.35+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.65),0,person[j].playerrotation-.9,0);
+					if(person[j].whichgun==handgun1&&!thirdperson&&j==0)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.65+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.35),0,person[j].playerrotation-.9,0);
 
-						if(person[j].whichgun==handgun2&&!thirdperson&&j==0)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.65+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.35),0,person[j].playerrotation-.9,0);
+					if(person[j].whichgun==handgun1&&(thirdperson||j!=0))aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.35+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.65),0,person[j].playerrotation-.9,0);
 
-						if(person[j].whichgun==handgun2&&(thirdperson||j!=0))aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.35+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.65),0,person[j].playerrotation-.9,0);
+					if(person[j].whichgun==handgun2&&!thirdperson&&j==0)aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.65+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.35),0,person[j].playerrotation-.9,0);
 
-					}
+					if(person[j].whichgun==handgun2&&(thirdperson||j!=0))aim=DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[righthand])].position-(person[j].skeleton.joints[person[j].skeleton.jointlabels[head]].position*.35+person[j].skeleton.joints[person[j].skeleton.jointlabels[neck]].position*.65),0,person[j].playerrotation-.9,0);
 
-					if(zoom&&j==0){
+				}
 
-						start=camera.position;
+				if(zoom&&j==0){
 
-						aim=facing;
+					start=camera.position;
 
-					}
+					aim=facing;
 
-					Normalise(&aim);
+				}
 
-					if(person[j].whichgun==sniperrifle){
+				Normalise(&aim);
 
-						start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
+				if(person[j].whichgun==sniperrifle){
 
-						start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*(0-.4);
+					start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
 
-					}
+					start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*(0-.4);
 
-					if(person[j].whichgun==shotgun){
+				}
 
-						start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
+				if(person[j].whichgun==shotgun){
 
-						start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*(0-.4);
+					start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
 
-					}
+					start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*(0-.4);
 
-					if(person[j].whichgun==handgun1){
+				}
 
-						start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[rightwrist])].position,0,person[j].playerrotation,0);
+				if(person[j].whichgun==handgun1){
 
-						start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*(.55-.4);
+					start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[rightwrist])].position,0,person[j].playerrotation,0);
 
-					}
+					start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*(.55-.4);
 
-					if(person[j].whichgun==handgun2){
+				}
 
-						start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[rightwrist])].position,0,person[j].playerrotation,0);
+				if(person[j].whichgun==handgun2){
 
-						start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*(.55-.4);
+					start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[rightwrist])].position,0,person[j].playerrotation,0);
 
-					}
+					start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*(.55-.4);
 
-					if(person[j].whichgun==assaultrifle){
+				}
 
-						start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
+				if(person[j].whichgun==assaultrifle){
 
-						start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*(.25-.4);
+					start=person[j].playercoords+DoRotation(person[j].skeleton.joints[(person[j].skeleton.jointlabels[lefthand])].position,0,person[j].playerrotation,0);
 
-					}
+					start-=DoRotation(DoRotation(DoRotation(aim,0,-person[j].playerrotation,0),90,0,0),0,person[j].playerrotation,0)*(.25-.4);
 
-					end=start+aim*1000;
+				}
 
-					//Blocks
+				end=start+aim*1000;
 
-					wallhit=0;
+				//Blocks
 
-					beginx=(person[j].playercoords.x+block_spacing/2)/block_spacing-2;
+				wallhit=0;
 
-					if(beginx<0)beginx=0;
+				beginx=(person[j].playercoords.x+block_spacing/2)/block_spacing-2;
 
-					beginz=(person[j].playercoords.z+block_spacing/2)/block_spacing-2;
+				if(beginx<0)beginx=0;
 
-					if(beginz<0)beginz=0;
+				beginz=(person[j].playercoords.z+block_spacing/2)/block_spacing-2;
 
-					endx=(person[j].playercoords.x+block_spacing/2)/block_spacing+2;
+				if(beginz<0)beginz=0;
 
-					if(endx>num_blocks-1)endx=num_blocks-1;
+				endx=(person[j].playercoords.x+block_spacing/2)/block_spacing+2;
 
-					endz=(person[j].playercoords.z+block_spacing/2)/block_spacing+2;
+				if(endx>num_blocks-1)endx=num_blocks-1;
 
-					if(endz>num_blocks-1)endz=num_blocks-1;
+				endz=(person[j].playercoords.z+block_spacing/2)/block_spacing+2;
 
-					if(beginx<endx&&beginz<endz)
+				if(endz>num_blocks-1)endz=num_blocks-1;
 
-					finalwallhit=0;
+				if(beginx<endx&&beginz<endz)
 
-					for(int i=beginx;i<=endx;i++)
+				finalwallhit=0;
 
-						for(int j=beginz;j<=endz;j++){
+				for(int i=beginx;i<=endx;i++)
 
-							move=0;
+					for(int j=beginz;j<=endz;j++){
 
-							move.x=i*block_spacing;
+						move=0;
 
-							move.z=j*block_spacing;
+						move.x=i*block_spacing;
 
-							whichtri=blocks[citytype[i][j]].LineCheck2(start,end,&wallhit,move,cityrotation[i][j]*90);
+						move.z=j*block_spacing;
 
-							if(whichtri!=-1){
+						whichtri=blocks[citytype[i][j]].LineCheck2(start,end,&wallhit,move,cityrotation[i][j]*90);
 
-								end=wallhit;
+						if(whichtri!=-1){
 
-								finalwallhit=wallhit;
+							end=wallhit;
 
-							}
+							finalwallhit=wallhit;
 
 						}
 
-					wallhit=0;
+					}
 
-					wallhit.x=camera.position.x;
+				wallhit=0;
 
-					wallhit.z=camera.position.z;
+				wallhit.x=camera.position.x;
 
-					whichtri=Bigstreet.LineCheck2(start,end,&wallhit,wallhit,0);
+				wallhit.z=camera.position.z;
 
-					if(whichtri!=-1){
+				whichtri=Bigstreet.LineCheck2(start,end,&wallhit,wallhit,0);
 
-						end=wallhit;
+				if(whichtri!=-1){
 
-						finalwallhit=wallhit;
+					end=wallhit;
 
-					}
+					finalwallhit=wallhit;
 
-					//People
+				}
 
-					whichhit=-1;
+				//People
 
-					for(int i=0;i<numpeople;i++){
+				whichhit=-1;
 
-						if(i!=j&&findDistancefast(person[j].playercoords,person[i].playercoords)<20000){
+				for(int i=0;i<numpeople;i++){
 
-							temphitstruct=person[i].BulletCollideWithPlayer(i, start, end);
+					if(i!=j&&findDistancefast(person[j].playercoords,person[i].playercoords)<20000){
 
-							if(temphitstruct.collision){
+						temphitstruct=person[i].BulletCollideWithPlayer(i, start, end);
 
-								distance=findDistancefast(start,temphitstruct.hitlocation);
+						if(temphitstruct.collision){
 
-								if(distance<olddistance||whichhit==-1){
+							distance=findDistancefast(start,temphitstruct.hitlocation);
 
-									end=temphitstruct.hitlocation;
+							if(distance<olddistance||whichhit==-1){
 
-									olddistance=distance;
+								end=temphitstruct.hitlocation;
 
-									hitstruct=temphitstruct;
+								olddistance=distance;
 
-									whichhit=i;
+								hitstruct=temphitstruct;
 
-								}
+								whichhit=i;
 
 							}
 
@@ -3321,289 +3318,289 @@ void Game::Tick()
 
 					}
 
-					aimer[0]=start;
+				}
 
-					aimer[1]=end;
+				aimer[0]=start;
 
-					sprites.MakeSprite(bulletinstant, .4, 1, 0, 0, aimer[0], aimer[1], .2);
+				aimer[1]=end;
 
-				}
+				sprites.MakeSprite(bulletinstant, .4, 1, 0, 0, aimer[0], aimer[1], .2);
 
 			}
 
 		}
 
-		}
-
-		//Snow
+	}
 
-		snowdelay-=multiplier;
+	}
 
-		while(snowdelay<0&&environment==snowy_environment){
+	//Snow
 
-			snowdelay+=1/precipitationdensity*2;
+	snowdelay-=multiplier;
 
-			velocity=0;
+	while(snowdelay<0&&environment==snowy_environment){
 
-			velocity.y=-5;
+		snowdelay+=1/precipitationdensity*2;
 
-			start=camera.position;
+		velocity=0;
 
-			start.y+=precipitationvert;
+		velocity.y=-5;
 
-			start.x+=Random()%(int)precipitationhorz;
+		start=camera.position;
 
-			start.z+=Random()%(int)precipitationhorz;
+		start.y+=precipitationvert;
 
-			sprites.MakeSprite(snowsprite, 1, 1, 1, 1, start, velocity, 1.01);
+		start.x+=Random()%(int)precipitationhorz;
 
-		}
+		start.z+=Random()%(int)precipitationhorz;
 
-		while(snowdelay<0&&environment==rainy_environment){
+		sprites.MakeSprite(snowsprite, 1, 1, 1, 1, start, velocity, 1.01);
 
-			snowdelay+=1/precipitationdensity/4;
+	}
 
-			velocity=0;
+	while(snowdelay<0&&environment==rainy_environment){
 
-			velocity.y=-100;
+		snowdelay+=1/precipitationdensity/4;
 
-			start=camera.position;
+		velocity=0;
 
-			start.y+=precipitationvert;
+		velocity.y=-100;
 
-			start.x+=Random()%(int)precipitationhorz*.5;
+		start=camera.position;
 
-			start.z+=Random()%(int)precipitationhorz*.5;
+		start.y+=precipitationvert;
 
-			sprites.MakeSprite(rainsprite, .5, 1, 1, 1, start, velocity, 2.00);
+		start.x+=Random()%(int)precipitationhorz*.5;
 
-		}
+		start.z+=Random()%(int)precipitationhorz*.5;
 
-		//Grenade collision
+		sprites.MakeSprite(rainsprite, .5, 1, 1, 1, start, velocity, 2.00);
 
-		int wherex, wherey, whichsound;
+	}
 
-		bool impact;
+	//Grenade collision
 
-		for(int i=0;i<sprites.howmanysprites;i++){
+	int wherex, wherey, whichsound;
 
-			if(sprites.type[i]==grenadesprite||sprites.type[i]==spoonsprite||sprites.type[i]==pinsprite){
+	bool impact;
 
-				impact=0;
+	for(int i=0;i<sprites.howmanysprites;i++){
 
-				if(sprites.type[i]!=grenadesprite){
+		if(sprites.type[i]==grenadesprite||sprites.type[i]==spoonsprite||sprites.type[i]==pinsprite){
 
-					sprites.brightness[i]-=multiplier*.2;
+			impact=0;
 
-				}
+			if(sprites.type[i]!=grenadesprite){
 
-				if(findLengthfast(sprites.velocity[i])>0){
+				sprites.brightness[i]-=multiplier*.2;
 
-					wherex=(sprites.location[i].x+block_spacing/2)/block_spacing;
+			}
 
-					wherey=(sprites.location[i].z+block_spacing/2)/block_spacing;
+			if(findLengthfast(sprites.velocity[i])>0){
 
-					move=0;
+				wherex=(sprites.location[i].x+block_spacing/2)/block_spacing;
 
-					move.x=wherex*block_spacing;
+				wherey=(sprites.location[i].z+block_spacing/2)/block_spacing;
 
-					move.z=wherey*block_spacing;
+				move=0;
 
-					whichtri=blocks[citytype[wherex][wherey]].LineCheck2(sprites.oldlocation[i],sprites.location[i],&wallhit,move,cityrotation[wherex][wherey]*90);
+				move.x=wherex*block_spacing;
 
-					if(whichtri!=-1){
+				move.z=wherey*block_spacing;
 
-						impact=1;
+				whichtri=blocks[citytype[wherex][wherey]].LineCheck2(sprites.oldlocation[i],sprites.location[i],&wallhit,move,cityrotation[wherex][wherey]*90);
 
-						normalrotated=DoRotation(blocks[citytype[wherex][wherey]].normals[whichtri],0,cityrotation[wherex][wherey]*90,0);
+				if(whichtri!=-1){
 
-						if(sprites.size[i]>1)decals.MakeDecal(crater, wallhit,9,normalrotated, whichtri, &blocks[citytype[wherex][wherey]], move, cityrotation[wherex][wherey]*90);
+					impact=1;
 
-						sprites.location[i]=wallhit+normalrotated*.02;
+					normalrotated=DoRotation(blocks[citytype[wherex][wherey]].normals[whichtri],0,cityrotation[wherex][wherey]*90,0);
 
-						ReflectVector(&sprites.velocity[i],&normalrotated);
+					if(sprites.size[i]>1)decals.MakeDecal(crater, wallhit,9,normalrotated, whichtri, &blocks[citytype[wherex][wherey]], move, cityrotation[wherex][wherey]*90);
 
-						sprites.velocity[i]*=.3;
+					sprites.location[i]=wallhit+normalrotated*.02;
 
-						if(sprites.type[i]==grenadesprite){
+					ReflectVector(&sprites.velocity[i],&normalrotated);
 
-							float gLoc[3];
+					sprites.velocity[i]*=.3;
 
-							gLoc[0]=(((sprites.location[i].x)-camera.position.x)/findLengthfast(sprites.velocity[i])*5+camera.position.x)/soundscalefactor;
+					if(sprites.type[i]==grenadesprite){
 
-							gLoc[1]=(((sprites.location[i].y)-camera.position.y)/findLengthfast(sprites.velocity[i])*5+camera.position.y)/soundscalefactor;
+						float gLoc[3];
 
-							gLoc[2]=(((sprites.location[i].z)-camera.position.z)/findLengthfast(sprites.velocity[i])*5+camera.position.z)/soundscalefactor;
+						gLoc[0]=(((sprites.location[i].x)-camera.position.x)/findLengthfast(sprites.velocity[i])*5+camera.position.x)/soundscalefactor;
 
-							whichsound=abs(Random()%2);
+						gLoc[1]=(((sprites.location[i].y)-camera.position.y)/findLengthfast(sprites.velocity[i])*5+camera.position.y)/soundscalefactor;
 
-							alSourcefv(gSourceID[bouncesound+whichsound], AL_POSITION, gLoc);
+						gLoc[2]=(((sprites.location[i].z)-camera.position.z)/findLengthfast(sprites.velocity[i])*5+camera.position.z)/soundscalefactor;
 
-							if(sprites.size[i]<=1)alSourcePlay(gSourceID[bouncesound+whichsound]);
+						whichsound=abs(Random()%2);
 
-						}
+						alSourcefv(gSourceID[bouncesound+whichsound], AL_POSITION, gLoc);
 
-						if(findLengthfast(sprites.velocity[i])<=10)sprites.velocity[i]=0;
+						if(sprites.size[i]<=1)alSourcePlay(gSourceID[bouncesound+whichsound]);
 
 					}
 
-					if(sprites.location[i].y<0){
+					if(findLengthfast(sprites.velocity[i])<=10)sprites.velocity[i]=0;
 
-						impact=1;
+				}
 
-						sprites.velocity[i].y*=-1;
+				if(sprites.location[i].y<0){
 
-						sprites.velocity[i]*=.3;
+					impact=1;
 
-						sprites.location[i].y=0;
+					sprites.velocity[i].y*=-1;
 
-						if(sprites.type[i]==grenadesprite){
+					sprites.velocity[i]*=.3;
 
-							if(sprites.size[i]>1){
+					sprites.location[i].y=0;
 
-								move=0;
+					if(sprites.type[i]==grenadesprite){
 
-								sprites.location[i].y=-.5;
+						if(sprites.size[i]>1){
 
-								XYZ normish;
+							move=0;
 
-								normish=0;
+							sprites.location[i].y=-.5;
 
-								normish.y=1;
+							XYZ normish;
 
-								decals.MakeDecal(crater, sprites.location[i],9,normish, 0, &blocks[citytype[wherex][wherey]], move, 0);
+							normish=0;
 
-							}
+							normish.y=1;
 
-							float gLoc[3];
+							decals.MakeDecal(crater, sprites.location[i],9,normish, 0, &blocks[citytype[wherex][wherey]], move, 0);
 
-							gLoc[0]=(((sprites.location[i].x)-camera.position.x)/findLengthfast(sprites.velocity[i])*5+camera.position.x)/soundscalefactor;
+						}
 
-							gLoc[1]=(((sprites.location[i].y)-camera.position.y)/findLengthfast(sprites.velocity[i])*5+camera.position.y)/soundscalefactor;
+						float gLoc[3];
 
-							gLoc[2]=(((sprites.location[i].z)-camera.position.z)/findLengthfast(sprites.velocity[i])*5+camera.position.z)/soundscalefactor;
+						gLoc[0]=(((sprites.location[i].x)-camera.position.x)/findLengthfast(sprites.velocity[i])*5+camera.position.x)/soundscalefactor;
 
-							whichsound=abs(Random()%2);
+						gLoc[1]=(((sprites.location[i].y)-camera.position.y)/findLengthfast(sprites.velocity[i])*5+camera.position.y)/soundscalefactor;
 
-							alSourcefv(gSourceID[bouncesound+whichsound], AL_POSITION, gLoc);
+						gLoc[2]=(((sprites.location[i].z)-camera.position.z)/findLengthfast(sprites.velocity[i])*5+camera.position.z)/soundscalefactor;
 
-							if(sprites.size[i]<=1)alSourcePlay(gSourceID[bouncesound+whichsound]);
+						whichsound=abs(Random()%2);
 
-						}
+						alSourcefv(gSourceID[bouncesound+whichsound], AL_POSITION, gLoc);
 
-						if(findLengthfast(sprites.velocity[i])<=10)sprites.velocity[i]=0;
+						if(sprites.size[i]<=1)alSourcePlay(gSourceID[bouncesound+whichsound]);
 
 					}
 
-					if(sprites.type[i]==grenadesprite&&findLengthfast(sprites.velocity[i])>20){
+					if(findLengthfast(sprites.velocity[i])<=10)sprites.velocity[i]=0;
 
-						HitStruct hitstruct;
+				}
 
-						for(int j=0;j<numpeople;j++){
+				if(sprites.type[i]==grenadesprite&&findLengthfast(sprites.velocity[i])>20){
 
-							if((j!=0||sprites.brightness[i]<.9)&&person[j].existing){
+					HitStruct hitstruct;
 
-								hitstruct=person[j].BulletCollideWithPlayer(j, sprites.oldlocation[i], sprites.location[i]);
+					for(int j=0;j<numpeople;j++){
 
-								if(hitstruct.collision){
+						if((j!=0||sprites.brightness[i]<.9)&&person[j].existing){
 
-									impact=1;
+							hitstruct=person[j].BulletCollideWithPlayer(j, sprites.oldlocation[i], sprites.location[i]);
 
-									sprites.location[i]=hitstruct.hitlocation;
+							if(hitstruct.collision){
 
-									float gLoc[3];
+								impact=1;
 
-									gLoc[0]=(((sprites.location[i].x)-camera.position.x)/findLengthfast(sprites.velocity[i])*5+camera.position.x)/soundscalefactor;
+								sprites.location[i]=hitstruct.hitlocation;
 
-									gLoc[1]=(((sprites.location[i].y)-camera.position.y)/findLengthfast(sprites.velocity[i])*5+camera.position.y)/soundscalefactor;
+								float gLoc[3];
 
-									gLoc[2]=(((sprites.location[i].z)-camera.position.z)/findLengthfast(sprites.velocity[i])*5+camera.position.z)/soundscalefactor;
+								gLoc[0]=(((sprites.location[i].x)-camera.position.x)/findLengthfast(sprites.velocity[i])*5+camera.position.x)/soundscalefactor;
 
-									if(person[j].skeleton.free<1){
+								gLoc[1]=(((sprites.location[i].y)-camera.position.y)/findLengthfast(sprites.velocity[i])*5+camera.position.y)/soundscalefactor;
 
-									if((hitstruct.joint1->label==head||hitstruct.joint2->label==head)&&person[j].type!=zombietype){
+								gLoc[2]=(((sprites.location[i].z)-camera.position.z)/findLengthfast(sprites.velocity[i])*5+camera.position.z)/soundscalefactor;
 
-										alSourcefv(gSourceID[headwhacksound], AL_POSITION, gLoc);
+								if(person[j].skeleton.free<1){
 
-										if(sprites.size[i]<=1)alSourcePlay(gSourceID[headwhacksound]);
+								if((hitstruct.joint1->label==head||hitstruct.joint2->label==head)&&person[j].type!=zombietype){
 
-										person[j].skeleton.free=1;
+									alSourcefv(gSourceID[headwhacksound], AL_POSITION, gLoc);
 
-										person[j].longdead=1;
+									if(sprites.size[i]<=1)alSourcePlay(gSourceID[headwhacksound]);
 
-										for(int k=0;k<person[j].skeleton.num_joints;k++){
+									person[j].skeleton.free=1;
 
-											person[j].skeleton.joints[k].position=DoRotation(person[j].skeleton.joints[k].position,0,person[j].playerrotation,0);
+									person[j].longdead=1;
 
-											person[j].skeleton.joints[k].position+=person[j].playercoords;
+									for(int k=0;k<person[j].skeleton.num_joints;k++){
 
-											person[j].skeleton.joints[k].realoldposition=person[j].skeleton.joints[k].position;
+										person[j].skeleton.joints[k].position=DoRotation(person[j].skeleton.joints[k].position,0,person[j].playerrotation,0);
 
-											person[j].skeleton.joints[k].velocity=person[j].velocity;
+										person[j].skeleton.joints[k].position+=person[j].playercoords;
 
-											person[j].skeleton.joints[k].velocity.x+=abs(Random()%10)-5;
+										person[j].skeleton.joints[k].realoldposition=person[j].skeleton.joints[k].position;
 
-											person[j].skeleton.joints[k].velocity.y+=abs(Random()%10)-5;
+										person[j].skeleton.joints[k].velocity=person[j].velocity;
 
-											person[j].skeleton.joints[k].velocity.z+=abs(Random()%10)-5;
+										person[j].skeleton.joints[k].velocity.x+=abs(Random()%10)-5;
 
-										}
+										person[j].skeleton.joints[k].velocity.y+=abs(Random()%10)-5;
 
-										hitstruct.joint1->velocity+=sprites.velocity[i];
+										person[j].skeleton.joints[k].velocity.z+=abs(Random()%10)-5;
 
-										hitstruct.joint2->velocity+=sprites.velocity[i];
+									}
 
-										if(person[j].type==civiliantype)civkills++;
+									hitstruct.joint1->velocity+=sprites.velocity[i];
 
-										if(person[j].type==eviltype)goodkills++;
+									hitstruct.joint2->velocity+=sprites.velocity[i];
 
-									}else{
+									if(person[j].type==civiliantype)civkills++;
 
-										float totalarea = 0.0f;
+									if(person[j].type==eviltype)goodkills++;
 
-										alSourcefv(gSourceID[bodywhacksound], AL_POSITION, gLoc);
+								}else{
 
-										if(sprites.size[i]<=1)alSourcePlay(gSourceID[bodywhacksound]);
+									float totalarea = 0.0f;
 
-										person[j].skeleton.offset=1;
+									alSourcefv(gSourceID[bodywhacksound], AL_POSITION, gLoc);
 
-										for(int k=0;k<person[j].skeleton.num_joints;k++){
+									if(sprites.size[i]<=1)alSourcePlay(gSourceID[bodywhacksound]);
 
-											if(findDistancefast(DoRotation(person[j].skeleton.joints[k].position,0,person[j].playerrotation,0)+person[j].playercoords,hitstruct.hitlocation)<200){
+									person[j].skeleton.offset=1;
 
-												totalarea+=(200/findDistancefast(DoRotation(person[j].skeleton.joints[k].position,0,person[j].playerrotation,0)+person[j].playercoords,hitstruct.hitlocation));
+									for(int k=0;k<person[j].skeleton.num_joints;k++){
 
-											}
+										if(findDistancefast(DoRotation(person[j].skeleton.joints[k].position,0,person[j].playerrotation,0)+person[j].playercoords,hitstruct.hitlocation)<200){
+
+											totalarea+=(200/findDistancefast(DoRotation(person[j].skeleton.joints[k].position,0,person[j].playerrotation,0)+person[j].playercoords,hitstruct.hitlocation));
 
 										}
 
-										float offsetlength;
+									}
 
-										for(int k=0;k<person[j].skeleton.num_joints;k++){
+									float offsetlength;
 
-											if(findDistancefast(DoRotation(person[j].skeleton.joints[k].position,0,person[j].playerrotation,0)+person[j].playercoords,hitstruct.hitlocation)<200){
+									for(int k=0;k<person[j].skeleton.num_joints;k++){
 
-												person[j].skeleton.joints[k].offset+=DoRotation(sprites.velocity[i]*.1*((200/findDistancefast(DoRotation(person[j].skeleton.joints[k].position,0,person[j].playerrotation,0)+person[j].playercoords,hitstruct.hitlocation))/totalarea*10),0,-person[j].playerrotation,0);
+										if(findDistancefast(DoRotation(person[j].skeleton.joints[k].position,0,person[j].playerrotation,0)+person[j].playercoords,hitstruct.hitlocation)<200){
 
-											}
+											person[j].skeleton.joints[k].offset+=DoRotation(sprites.velocity[i]*.1*((200/findDistancefast(DoRotation(person[j].skeleton.joints[k].position,0,person[j].playerrotation,0)+person[j].playercoords,hitstruct.hitlocation))/totalarea*10),0,-person[j].playerrotation,0);
 
-											offsetlength=findLengthfast(person[j].skeleton.joints[k].offset);
+										}
 
-											if(offsetlength>9){
+										offsetlength=findLengthfast(person[j].skeleton.joints[k].offset);
 
-												Normalise(&person[j].skeleton.joints[k].offset);
+										if(offsetlength>9){
 
-												person[j].skeleton.joints[k].offset*=3;
+											Normalise(&person[j].skeleton.joints[k].offset);
 
-											}
+											person[j].skeleton.joints[k].offset*=3;
 
 										}
 
-									}}
+									}
 
-									sprites.velocity[i]*=-.3;
+								}}
 
-								}
+								sprites.velocity[i]*=-.3;
 
 							}
 
@@ -3611,181 +3608,181 @@ void Game::Tick()
 
 					}
 
-					sprites.oldlocation[i]=sprites.location[i];
-
 				}
 
-				//Explode
+				sprites.oldlocation[i]=sprites.location[i];
 
-				if(sprites.type[i]==grenadesprite){
+			}
 
-					sprites.brightness[i]-=multiplier*.3;
+			//Explode
 
-					if(sprites.brightness[i]<=0||(impact&&sprites.size[i]>1)){
+			if(sprites.type[i]==grenadesprite){
 
-						sprites.brightness[i]=0;
+				sprites.brightness[i]-=multiplier*.3;
 
-						sprites.MakeSprite(smokesprite, 1, 1, 1, 1, sprites.location[i], facing*0, 60);
+				if(sprites.brightness[i]<=0||(impact&&sprites.size[i]>1)){
 
-						sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, sprites.location[i], facing*0, 9);
+					sprites.brightness[i]=0;
 
-						float gLoc[3];
+					sprites.MakeSprite(smokesprite, 1, 1, 1, 1, sprites.location[i], facing*0, 60);
 
-						gLoc[0]=(((sprites.location[i].x)-camera.position.x)/3+camera.position.x)/soundscalefactor;
+					sprites.MakeSprite(muzzleflashsprite, 1, 1, 1, 1, sprites.location[i], facing*0, 9);
 
-						gLoc[1]=(((sprites.location[i].y)-camera.position.y)/3+camera.position.y)/soundscalefactor;
+					float gLoc[3];
 
-						gLoc[2]=(((sprites.location[i].z)-camera.position.z)/3+camera.position.z)/soundscalefactor;
+					gLoc[0]=(((sprites.location[i].x)-camera.position.x)/3+camera.position.x)/soundscalefactor;
 
-						alSourcefv(gSourceID[explosionsound], AL_POSITION, gLoc);
+					gLoc[1]=(((sprites.location[i].y)-camera.position.y)/3+camera.position.y)/soundscalefactor;
 
-						alSourcePlay(gSourceID[explosionsound]);
+					gLoc[2]=(((sprites.location[i].z)-camera.position.z)/3+camera.position.z)/soundscalefactor;
 
-						XYZ relation;
+					alSourcefv(gSourceID[explosionsound], AL_POSITION, gLoc);
 
-						camerashake=1-findDistance(person[0].playercoords,sprites.location[i])/200;
+					alSourcePlay(gSourceID[explosionsound]);
 
-						//if(!sprites.size[i]>1){
+					XYZ relation;
 
-							overpoint=sprites.location[i];
+					camerashake=1-findDistance(person[0].playercoords,sprites.location[i])/200;
 
-							overpoint.y+=3000;
+					//if(!sprites.size[i]>1){
 
-							underpoint=sprites.location[i];
+						overpoint=sprites.location[i];
 
-							underpoint.y-=3000;
+						overpoint.y+=3000;
 
-							move=0;
+						underpoint=sprites.location[i];
 
-							wherex=(sprites.location[i].x+block_spacing/2)/block_spacing;
+						underpoint.y-=3000;
 
-							wherey=(sprites.location[i].z+block_spacing/2)/block_spacing;
+						move=0;
 
-							move.x=wherex*block_spacing;
+						wherex=(sprites.location[i].x+block_spacing/2)/block_spacing;
 
-							move.z=wherey*block_spacing;
+						wherey=(sprites.location[i].z+block_spacing/2)/block_spacing;
 
-							XYZ temp;
+						move.x=wherex*block_spacing;
 
-							whichtri=sidewalkcollide.LineCheck2(overpoint,underpoint,&temp,move,cityrotation[wherex][wherey]*90);
+						move.z=wherey*block_spacing;
 
-							XYZ normish;
+						XYZ temp;
 
-							normish=0;
+						whichtri=sidewalkcollide.LineCheck2(overpoint,underpoint,&temp,move,cityrotation[wherex][wherey]*90);
 
-							normish.y=1;
+						XYZ normish;
 
-							if(whichtri>=0){
+						normish=0;
 
-								decals.MakeDecal(crater, sprites.location[i],9,normish, 0, &sidewalkcollide, move, cityrotation[wherex][wherey]*90);
+						normish.y=1;
 
-							}
+						if(whichtri>=0){
 
-							if(whichtri==-1){
+							decals.MakeDecal(crater, sprites.location[i],9,normish, 0, &sidewalkcollide, move, cityrotation[wherex][wherey]*90);
 
-								temp=sprites.location[i];
+						}
 
-								temp.y=-.5;
+						if(whichtri==-1){
 
-								move=0;
+							temp=sprites.location[i];
 
-								decals.MakeDecal(crater, sprites.location[i],9,normish, 0, &sidewalkcollide, move, 0);
+							temp.y=-.5;
 
-							}
+							move=0;
 
-						//}
+							decals.MakeDecal(crater, sprites.location[i],9,normish, 0, &sidewalkcollide, move, 0);
 
-						for(int k=0;k<numpeople;k++){
+						}
 
-							if(person[k].existing&&(person[k].longdead!=-1||person[k].skeleton.free<1)){
+					//}
 
-							if((findDistancefast(person[k].playercoords,sprites.location[i])<700&&person[k].skeleton.free<1)||(findDistancefast(person[k].averageloc,sprites.location[i])<700&&person[k].skeleton.free>=1)){
+					for(int k=0;k<numpeople;k++){
 
-							if(person[k].skeleton.free!=1){
+						if(person[k].existing&&(person[k].longdead!=-1||person[k].skeleton.free<1)){
 
-							if(person[k].type==civiliantype)civkills++;
+						if((findDistancefast(person[k].playercoords,sprites.location[i])<700&&person[k].skeleton.free<1)||(findDistancefast(person[k].averageloc,sprites.location[i])<700&&person[k].skeleton.free>=1)){
 
-							if(person[k].type==eviltype)goodkills++;
+						if(person[k].skeleton.free!=1){
 
-							person[k].skeleton.free=1;
+						if(person[k].type==civiliantype)civkills++;
 
-							person[k].killtargetvisible=0;
+						if(person[k].type==eviltype)goodkills++;
 
-							if((findDistancefast(person[k].playercoords,sprites.location[i])<600&&person[k].skeleton.free<1)||(findDistancefast(person[k].averageloc,sprites.location[i])<600&&person[k].skeleton.free>=1)||person[k].type==playertype){
+						person[k].skeleton.free=1;
 
-								person[k].health-=100;
+						person[k].killtargetvisible=0;
 
-								person[k].bleeding=1;
+						if((findDistancefast(person[k].playercoords,sprites.location[i])<600&&person[k].skeleton.free<1)||(findDistancefast(person[k].averageloc,sprites.location[i])<600&&person[k].skeleton.free>=1)||person[k].type==playertype){
 
-							}
+							person[k].health-=100;
 
-							person[k].DoAnimations(k);
+							person[k].bleeding=1;
 
-							person[k].longdead=1;
+						}
 
-							person[k].bleeddelay=1;
+						person[k].DoAnimations(k);
 
-							person[k].bjoint1=&person[k].skeleton.joints[person[k].skeleton.jointlabels[head]];
+						person[k].longdead=1;
 
-							person[k].bjoint2=&person[k].skeleton.joints[person[k].skeleton.jointlabels[neck]];
+						person[k].bleeddelay=1;
 
-							for(int j=0;j<person[k].skeleton.num_joints;j++){
+						person[k].bjoint1=&person[k].skeleton.joints[person[k].skeleton.jointlabels[head]];
 
-								person[k].skeleton.joints[j].position=DoRotation(person[k].skeleton.joints[j].position,0,person[k].playerrotation,0);
+						person[k].bjoint2=&person[k].skeleton.joints[person[k].skeleton.jointlabels[neck]];
 
-								person[k].skeleton.joints[j].position+=person[k].playercoords;
+						for(int j=0;j<person[k].skeleton.num_joints;j++){
 
-								person[k].skeleton.joints[j].realoldposition=person[k].skeleton.joints[j].position;
+							person[k].skeleton.joints[j].position=DoRotation(person[k].skeleton.joints[j].position,0,person[k].playerrotation,0);
 
-								person[k].skeleton.joints[j].velocity=DoRotation(person[k].skeleton.joints[j].velocity,0,person[k].playerrotation,0);
+							person[k].skeleton.joints[j].position+=person[k].playercoords;
 
-								person[k].skeleton.joints[j].velocity+=person[k].velocity;
+							person[k].skeleton.joints[j].realoldposition=person[k].skeleton.joints[j].position;
 
-								person[k].skeleton.joints[j].velocity.x+=abs(Random()%20)-10;
+							person[k].skeleton.joints[j].velocity=DoRotation(person[k].skeleton.joints[j].velocity,0,person[k].playerrotation,0);
 
-								person[k].skeleton.joints[j].velocity.y+=abs(Random()%20)-10;
+							person[k].skeleton.joints[j].velocity+=person[k].velocity;
 
-								person[k].skeleton.joints[j].velocity.z+=abs(Random()%20)-10;
+							person[k].skeleton.joints[j].velocity.x+=abs(Random()%20)-10;
 
-							}}
+							person[k].skeleton.joints[j].velocity.y+=abs(Random()%20)-10;
 
-							for(int j=0;j<person[k].skeleton.num_joints;j++){
+							person[k].skeleton.joints[j].velocity.z+=abs(Random()%20)-10;
 
-								relation=person[k].skeleton.joints[j].position-sprites.location[i];
+						}}
 
-								Normalise(&relation);
+						for(int j=0;j<person[k].skeleton.num_joints;j++){
 
-								if(findDistance(person[k].skeleton.joints[j].position,sprites.location[i])>1)person[k].skeleton.joints[j].velocity+=relation/findDistance(person[k].skeleton.joints[j].position,sprites.location[i])*300;
+							relation=person[k].skeleton.joints[j].position-sprites.location[i];
 
-								else person[k].skeleton.joints[j].velocity+=relation*300;
+							Normalise(&relation);
 
-							}
+							if(findDistance(person[k].skeleton.joints[j].position,sprites.location[i])>1)person[k].skeleton.joints[j].velocity+=relation/findDistance(person[k].skeleton.joints[j].position,sprites.location[i])*300;
 
-							person[k].longdead=1;
+							else person[k].skeleton.joints[j].velocity+=relation*300;
 
-							for(int j=0;j<person[k].skeleton.num_joints;j++){
+						}
 
-								//Sever stuff
+						person[k].longdead=1;
 
-								if(findLengthfast(person[k].skeleton.joints[j].velocity)>1500&&person[k].skeleton.joints[j].existing==1&&abs(Random()%3)!=1){
+						for(int j=0;j<person[k].skeleton.num_joints;j++){
 
-									sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[k].skeleton.joints[j].position, person[k].skeleton.joints[j].velocity/3, 9);
+							//Sever stuff
 
-									person[k].skeleton.DeleteJoint(j);
+							if(findLengthfast(person[k].skeleton.joints[j].velocity)>1500&&person[k].skeleton.joints[j].existing==1&&abs(Random()%3)!=1){
 
-									person[k].skeleton.broken=2;
+								sprites.MakeSprite(bloodspritedown, .8, 1, .2, .2,person[k].skeleton.joints[j].position, person[k].skeleton.joints[j].velocity/3, 9);
 
-									person[k].health=-10000;
+								person[k].skeleton.DeleteJoint(j);
 
-									person[k].skeleton.joints[j].existing=0;
+								person[k].skeleton.broken=2;
 
-								}
+								person[k].health=-10000;
 
-							}
+								person[k].skeleton.joints[j].existing=0;
 
 							}
 
-							}
+						}
+
+						}
 
 						}
 
@@ -3797,105 +3794,106 @@ void Game::Tick()
 
 		}
 
-		//camera shake
-		camerashake-=multiplier;
-		if(camerashake<0)camerashake=0;
+	}
 
-		//camera position
-		XYZ average;
+	//camera shake
+	camerashake-=multiplier;
+	if(camerashake<0)camerashake=0;
 
-		if(!zoom)average=person[0].skeleton.joints[(person[0].skeleton.jointlabels[head])].position*(person[0].aimamount/2+.5)+person[0].skeleton.joints[(person[0].skeleton.jointlabels[neck])].position*((1-person[0].aimamount)/2);
+	//camera position
+	XYZ average;
 
-		if(zoom)average=person[0].skeleton.joints[(person[0].skeleton.jointlabels[righthand])].position;
+	if(!zoom)average=person[0].skeleton.joints[(person[0].skeleton.jointlabels[head])].position*(person[0].aimamount/2+.5)+person[0].skeleton.joints[(person[0].skeleton.jointlabels[neck])].position*((1-person[0].aimamount)/2);
 
-		if(person[0].skeleton.free==0&&thirdperson!=2)camera.position=person[0].playercoords+DoRotation(average,0,person[0].playerrotation,0);
+	if(zoom)average=person[0].skeleton.joints[(person[0].skeleton.jointlabels[righthand])].position;
 
-		if(person[0].skeleton.free==1&&thirdperson!=2)camera.position=average;
+	if(person[0].skeleton.free==0&&thirdperson!=2)camera.position=person[0].playercoords+DoRotation(average,0,person[0].playerrotation,0);
 
-		//Restraints
+	if(person[0].skeleton.free==1&&thirdperson!=2)camera.position=average;
 
-		if(camera.position.y<.1)camera.position.y=.1;
+	//Restraints
 
-		if(thirdperson!=2){
-			oldrot=camera.visrotation;
-			oldrot2=camera.visrotation2;
-		}
+	if(camera.position.y<.1)camera.position.y=.1;
 
-		//Kill count
-		for(int i=0;i<numpeople;i++){
-			if(person[i].oldhealth>0&&person[i].health<=0){
-				if(i==1)alSourcePlay(gSourceID[losesound]);
-				if(person[i].type==civiliantype){
-					alSourcePlay(gSourceID[disguisekillsound]);
-					score-=300;
-				}
+	if(thirdperson!=2){
+		oldrot=camera.visrotation;
+		oldrot2=camera.visrotation2;
+	}
 
-				if(person[i].type==eviltype){
-					alSourcePlay(gSourceID[soulinsound]);
-					score+=75;
-					if(person[i].whichgun==knife)score+=50;
-				}
-				person[i].firstlongdead=0;
+	//Kill count
+	for(int i=0;i<numpeople;i++){
+		if(person[i].oldhealth>0&&person[i].health<=0){
+			if(i==1)alSourcePlay(gSourceID[losesound]);
+			if(person[i].type==civiliantype){
+				alSourcePlay(gSourceID[disguisekillsound]);
+				score-=300;
 			}
-			person[i].oldhealth=person[i].health;
-		}
 
-		if(slomo==2){
-			psychicpower-=multiplier*15;
-			if(psychicpower<0){
-				soundscalefactor=soundscalefactordefault;
-				alSourceStop(gSourceID[whichsong]);
-				alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 0);
-				alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 0);
-				if(person[0].whichgun==knife)whichsong=knifesong;
-				if(person[0].whichgun!=knife)whichsong=shootsong;
-				if(type==zombie_type)whichsong=zombiesong;
-				alSourcef(gSourceID[whichsong], AL_PITCH, 1);
-				alSourcePlay(gSourceID[whichsong]);
-				alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 1);
-				alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 1);
-				slomo=0;
+			if(person[i].type==eviltype){
 				alSourcePlay(gSourceID[soulinsound]);
-				psychicpower=0;
-				flashamount=.5;
-				flashr=1;flashg=1;flashb=1;
+				score+=75;
+				if(person[i].whichgun==knife)score+=50;
 			}
+			person[i].firstlongdead=0;
 		}
+		person[i].oldhealth=person[i].health;
+	}
 
-		psychicpower+=multiplier*5;
-		if(psychicpower>10)psychicpower=10;
-
-		//3d sound
-		float gLoc[3];
-		gLoc[0]=camera.position.x/soundscalefactor;
-		gLoc[1]=camera.position.y/soundscalefactor;
-		gLoc[2]=camera.position.z/soundscalefactor;
-
-		//Set listener position
-		alListenerfv(AL_POSITION, gLoc);
-
-		//Set orientation with forward and up vectors
-		XYZ upvector;
-		upvector=0;
-		upvector.z=-1;
-		upvector=DoRotation(upvector,-camera.rotation2+90,0,0);
-		upvector=DoRotation(upvector,0,0-camera.rotation,0);
-
-		float ori[6];
-	   	ori[0] = -facing.x;
-	   	ori[1] = facing.y;
-	   	ori[2] = facing.z;
-	   	ori[3] = -upvector.x;
-	   	ori[4] = upvector.y;
-	   	ori[5] = upvector.z;
-		alListenerfv(AL_ORIENTATION, ori);
-
-		if(person[0].currentanimation==throwanim||person[0].currentanimation==diveanim||paused){
-			MoveMouse(oldmouseloc.h,oldmouseloc.v,&mouseloc);
-			GetMouse(&mouseloc);
+	if(slomo==2){
+		psychicpower-=multiplier*15;
+		if(psychicpower<0){
+			soundscalefactor=soundscalefactordefault;
+			alSourceStop(gSourceID[whichsong]);
+			alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 0);
+			alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 0);
+			if(person[0].whichgun==knife)whichsong=knifesong;
+			if(person[0].whichgun!=knife)whichsong=shootsong;
+			if(type==zombie_type)whichsong=zombiesong;
+			alSourcef(gSourceID[whichsong], AL_PITCH, 1);
+			alSourcePlay(gSourceID[whichsong]);
+			alSourcef(gSourceID[whichsong], AL_MIN_GAIN, 1);
+			alSourcef(gSourceID[whichsong], AL_MAX_GAIN, 1);
+			slomo=0;
+			alSourcePlay(gSourceID[soulinsound]);
+			psychicpower=0;
+			flashamount=.5;
+			flashr=1;flashg=1;flashb=1;
 		}
+	}
 
-		oldmouseloc=mouseloc;
-		if(score<0)score=0;
+	psychicpower+=multiplier*5;
+	if(psychicpower>10)psychicpower=10;
+
+	//3d sound
+	float gLoc[3];
+	gLoc[0]=camera.position.x/soundscalefactor;
+	gLoc[1]=camera.position.y/soundscalefactor;
+	gLoc[2]=camera.position.z/soundscalefactor;
+
+	//Set listener position
+	alListenerfv(AL_POSITION, gLoc);
+
+	//Set orientation with forward and up vectors
+	XYZ upvector;
+	upvector=0;
+	upvector.z=-1;
+	upvector=DoRotation(upvector,-camera.rotation2+90,0,0);
+	upvector=DoRotation(upvector,0,0-camera.rotation,0);
+
+	float ori[6];
+   	ori[0] = -facing.x;
+   	ori[1] = facing.y;
+   	ori[2] = facing.z;
+   	ori[3] = -upvector.x;
+   	ori[4] = upvector.y;
+   	ori[5] = upvector.z;
+	alListenerfv(AL_ORIENTATION, ori);
+
+	if(person[0].currentanimation==throwanim||person[0].currentanimation==diveanim||paused){
+		MoveMouse(oldmouseloc.h,oldmouseloc.v,&mouseloc);
+		GetMouse(&mouseloc);
 	}
+
+	oldmouseloc=mouseloc;
+	if(score<0)score=0;
 }