{
	saved_FirstTime [1]
	saved_onload [1]

	// Flow control
	//
	saved_Onslaught [0]		// Controls the runners
	saved_Treason[0]		// Controls your team shooting you in the spawn area
	saved_CueSnipers [0]		// Start the window snipers
	saved_SnipedAll [0]		// have you sniped all guards
	saved_GunrRespawn [1]		// keep spawning German snipers to retake the mg42s
	saved_MortarShake [1]
	//
	// Zone Control
	//
	saved_BeenBriefed [0]		// Makarow has given you a task
	saved_BeenBriefed2 [0]		// Makarow was briefed in the snipe tower
	saved_AtSnipeSpot [0]		// At top of stairs near snipe window
	saved_AtSnipeWindow [0]		// At the sniping window
	saved_AtTowerEnter [0]		// Entered sniping tower ground level
	saved_AtTowerExit [0]		// In front of the building for the first time
	saved_AtTowerGreenRoom [0]	// Entered Green room
	saved_AtTowerPurpleRoom [0]	// Entered Purple room
	saved_AtTowerYellowRoom [0]	// Entered Yellow room
	saved_AtTowerStairsBottom [0]	// Entered Bottom Stairwell
	saved_AtTowerStairsMid [0]	// Entered Mid Stairwell
	saved_DoorBlown [0]		// Entrance to tower is open
	//
	// Flood Controls
	//
	saved_LastSpawn [1]		// prevents spawn from same spot
	saved_Spacing [5]		// spawn new runner ever X node
	saved_Mortersaved_Spacing [4]	// Sprite morter over a dead guy every Nth death
	saved_MaxArmed [3]		// max number of armed runners
	saved_MaxRunners [12]		// max number of runners
	//
	// Counters
	//
	saved_ArmedMates [0]		// number of armed first squad
	saved_BarkCmd [0]		// which russian sgt. should bark commands to you
	saved_Barking [0]		// is any sgt. barking
	saved_NextMorter [0]		// counter when next morter is to happen
	saved_NumArmed [0]		// count of current armed runners
	saved_NumRunners [0]		// count of current runners
	saved_SpaceCnt[0]		// counter used in spacing
	saved_CurObjective[0]		// counter for killing officers

	Init[ (s)
	{
		SetVis_Default();

		if (saved_FirstTime = 1)
		{
			saved_FirstTime = 0;

			// Find Sgt. Makarov
			AddObjective( 194, 10096, 16368 );
			SetObjectiveActive(0, true);

			// Flank Opposition
			AddObjective( 195,13696,26898);
			SetObjectiveActive(1, false);

			// Kill Officers 1/4
			AddObjective( 196,13696,26898);
			SetObjectiveActive(2, false);

			// Kill Officers 2/4
			AddObjective( 197,13696,26898);
			SetObjectiveActive(3, false);

			// Kill Officers 3/4
			AddObjective( 198,13696,26898);
			SetObjectiveActive(4, false);

			// Kill Officers 4/4
			AddObjective( 199,13696,26898);
			SetObjectiveActive(5, false);

			Self = GetPlayer();
			Self.SetInvulnerable( false );
			Self.SetFrozen( true );
			Self.SetRunning();
			Self.SetNationality(3);

			AutoSave();
		}
	}]

	OnLevelLoad[ ()
	{
		PlayAmbient(103);

		if( saved_onload = 1 )
		{
			saved_onload = 0;

			SetMessage("Redsquare, Stalingrad",75,35);
			SetMessage2(541,75,50);
			SetMessage3(514,75,65);

			Sgt1 = GetEntity("RUSgt1");
			Sgt1.Delay(2,1);
		}
	}]

	EnterZone[ (zone)
	{
		if( zone = "MeetHere" )
		{
			if( saved_BeenBriefed = 0 )
			{
				saved_BeenBriefed = 1;
				SgtMakarow = GetEntity("Makarow");
				SgtMakarow.BriefPlayer();
			}
		}

		if( zone = "SnipeZone" )
		{
			saved_AtSnipeSpot = 1;
			GetEntity("SnprGrd").Kill();

			if( saved_AtSnipeWindow = 1 )
			{
				if( saved_SnipedAll = 0 )
				{
				buddy = GetEntity("Makarow");
					buddy.PlayAnimation(29,1,13);
				}
			}

			saved_GunrRespawn = 0;
			gun0 = GetEntity("GRGunr0");
			gun2 = GetEntity("GRGunr2");
			if( not gun0.IsDead() ){ gun0.Kill(); }
			if( not gun2.IsDead() ){ gun2.Kill(); }

			if( saved_BeenBriefed2 = 0 )
			{
				saved_BeenBriefed2 = 1;
				buddy = GetEntity("Makarow");
				buddy.BriefSnipe();
			}

		}

		if( zone = "SnipeWindow" )
		{
			saved_AtSnipeWindow = 1;

			if( not IsObjectiveComplete(1) )
			{
				ObjectiveComplete(1);
				SetObjectiveActive(2, true);
				saved_CurObjective = 2;
			}
		}

		if( zone = "TowerEnter" )
		{
			saved_MortarShake = 0;

			if( saved_AtTowerEnter = 0 )
			{
				saved_AtTowerEnter = 1;
				Infultrate("OrangePath");
			}
		}

		if( zone = "TowerPurpleRoom" )
		{
			if( saved_AtTowerPurpleRoom = 0 )
			{
				saved_AtTowerPurpleRoom = 1;
				saved_AtTowerGreenRoom = 1;
				Infultrate("LtGreenPath");
			}
		}

		if( zone = "TowerGreenRoom" )
		{
			if( saved_AtTowerGreenRoom = 0 )
			{
				saved_AtTowerGreenRoom = 1;
				saved_AtTowerPurpleRoom = 1;
				Infultrate("LtPurplePath");
			}
		}
		if( zone = "TowerYellowRoom" )
		{
			if( saved_AtTowerYellowRoom = 0 )
			{
				saved_AtTowerYellowRoom =1;
				Infultrate("LtYellowPath");
			}
		}
		if( zone = "TowerStairsBottom" )
		{
			if( saved_AtTowerStairsBottom = 0 )
			{
				saved_AtTowerStairsBottom = 1;
				Infultrate("LtPinkPath");
			}
		}
		if( zone = "TowerStairsMid" )
		{
			if( saved_AtTowerStairsMid = 0 )
			{
				saved_AtTowerStairsMid = 1;
				Infultrate("LtBluePath");
			}
		}
		if( zone = "Treason_On" )  {saved_Treason = 1;}
		if( zone = "Treason_Off" ) {saved_Treason = 0;}
		if( zone = "CueSnipers")   {saved_CueSnipers = 1;}
		if( zone = "TowerExit" )
		{
			if( saved_AtTowerExit = 0 )
			{
				if( saved_BeenBriefed = 1 )
				{
					saved_AtTowerExit = 1;
					if( saved_DoorBlown = 0 )
					{
						saved_DoorBlown = 1;
						gate = GetEntity("fence1");
						GetPlayer().PlaySound(3);
						gate.ShowEntity(false);
						gate.SetPassable(true);
						CreateEffect(55,61,0,14464,19318,40,128,14,16,16);
					}
				}
				return;
			}

			saved_MortarShake = 0;
		}
	}]

	ActorKilled[ (who)
	{
		if( who="GROff" )
		{
			if( IsObjectiveComplete((saved_CurObjective-1)) )
			{
				ObjectiveComplete( saved_CurObjective );
				if( saved_CurObjective < 5 )
				{
					SetObjectiveActive( (saved_CurObjective-2), false );
					SetObjectiveActive( (saved_CurObjective+1), true );
					saved_CurObjective = (saved_CurObjective + 1);
				}
			}
			if( IsObjectiveComplete(5) )
			{
				self.Win();
			}
		}
	}]

	Win[ ()
	{
		Mac = GetEntity("Makarow");
		Mac.Delay(1,20);
	}]

	BlowMortar[( which )
	{
		xPos = 0;
		yPos = 0;
		entity = GetPlayer();

		switch( which )
		{
			case 0 { xPos=2486;  yPos=26861; }
			case 1 { xPos=5248;  yPos=26898; }
			case 2 { xPos=6528;  yPos=27446; }
			case 3 { xPos=8009;  yPos=26697; }
			case 4 { xPos=9673;  yPos=27227; }
			case 5 { xPos=10624; yPos=27099; }
			case 6 { xPos=12306; yPos=25965; }
		}

		entity.PlaySound(3,6,true);
		CreateEffect(55,61,0,xPos,yPos,500,128,14,72,72);
	}]

	Infultrate[ (RunPath)
	{
		buddy = GetEntity("Makarow");
		buddy.SetRunning();
		buddy.PlayAnimation(1);
		buddy.FollowPath( RunPath );
	}]

	BeginOnslaught[ ()
	{
		saved_Onslaught = 1;
		saved_Treason = 1;

		Runner = CreateEntity(80,6912,1056,256);
		Runner.SetID("Runner");
		saved_NumRunners = 1;
		Runner.Reset();
	}]
}