#include "zcommon.acs"
#import "strnghld.acs"

script 100 open
{
	// Change these variables to suit your map, match the right tids, etc.
	Waves	= 10;
	HateEpicenter	= 996;

	EventScript	= 101;	// Similar to old script 667, but a bit different
				// Called when new wave X is announced message disappears, as items
				// for wave X spawn.
				// First argument given to script is the integer X

	ExitPos		= 0;	// Spawn position of player for next map.
				// When this map is over, Exit_Normal(ExitPos) will be called.

	// Prison Stuff - If you use the same prison from STR02, none of this will neeed changes
	PrisonSpot	= 678;	// There should be multiple teleport spots with this tid
				// (Not a series of tids as in older versions!)
				// Set to 0 (or don't set it at all as it is the default) if map doesn't use a prison
	PrisonExit	= 699;

	PrisonCamStart	= 691;	// This is the tid of the first camera for the jail. The next 5 tids should also be cameras.
				// These will be set as the cameras for the CT_1 through CT_6 textures.

	PrisonTeleporterLineId	= 99;

	PrisonTeleporterThrustAngle = 0;	// Angle the teleporter thrusts when it is off
	PrisonExitThrustAngle	= 128;	// Angle prison exit thrusts when there are players still in game

	TeleporterOnLight	= 99;	// This will be activated when prison teleporter is on
	TeleporterOffLight	= 98;	// This will be activated when prison teleporter is off

	// Corner A, corner b, first patrol node
	// You define a zone by setting two map spots to form the opposite corners of a rectangle that will be
	// the zone that monsters spawn in. The difference in height between the mapspots will also be taken into
	// account to define the height of the rectangle (useful for flying enemies). The angle the monsters face
	// is the angle of the first mapspot given here.
	AddZone( 30, 31, 2 );

//	Monsters
//			wave,	   actor,	number to spawn
	WaveEnemy(	1,	"ZombieMan",	4	);
	WaveEnemy(	1,	"ShotgunGuy",	4	);
	WaveEnemy(	1,	"DoomImp",	4	);

	WaveEnemy(	2,	"ZombieMan",	8	);
	WaveEnemy(	2,	"ShotgunGuy",	12	);
	WaveEnemy(	2,	"DoomImp",	12	);

	WaveEnemy(	3,	"Demon",	8	);
	WaveEnemy(	3,	"ShotgunGuy",	12	);
	WaveEnemy(	3,	"DoomImp",	16	);

	WaveEnemy(	4,	"Demon",	16	);
	WaveEnemy(	4,	"ShotgunGuy",	20	);
	WaveEnemy(	4,	"DoomImp",	24	);

	WaveEnemy(	5,	"HellKnight",	8	);
	WaveEnemy(	5,	"Demon",	10	);
	WaveEnemy(	5,	"ChaingunGuy",	10	);

	WaveEnemy(	6,	"Spectre",	16	);
	WaveEnemy(	6,	"HellKnight",	8	);
	WaveEnemy(	6,	"Demon",	2	);

	WaveEnemy(	7,	"Spectre",	10	);
	WaveEnemy(	7,	"DuneWarrior",	4	);
	WaveEnemy(	7,	"DoomImp",	6	);
	WaveEnemy(	7,	"BaronOfHell",	8	);

	WaveEnemy(	8,	"Spectre",	8	);
	WaveEnemy(	8,	"DoomImp",	20	);
	WaveEnemy(	8,	"Revenant",	8	);

	WaveEnemy(	9,	"Revenant",	12	);
	WaveEnemy(	9,	"BaronOfHell",	12	);
	WaveEnemy(	9,	"BloodDemon",	10	);

	WaveEnemy(	10,	"BloodDemon",	16	);
	WaveEnemy(	10,	"Catharsi",	12	);
	WaveEnemy(	10,	"Archvile",	4	);


//	Messages

	RadioName[0] =	RADIO_RANDOM;

//	First argument is ID. Positive values correspond to the beginning of that number wave. 0 is not usable.
//	Second argument tells who gives the message
//	Third argument is the message. Length per line shouldn't be more than 25 characters, use \n for newline!
	WaveMessage(	2,	0,	"Alright, the slow units\nare no problem."	);
	WaveMessage(	2,	0,	"But stay sharp when they\nemerge en masse."	);

	WaveMessage(	3,	0,	"Okay, \capinkies \cfare on\ntheir way."	);
	WaveMessage(	3,	0,	"Make sure to use those\nbarrels to your advantage."	);

	WaveMessage(	4,	0,	"More of roughly the same\nmonsters approaching."	);
	WaveMessage(	4,	0,	"A \cichaingun \cfshould\ndespatch them quickly."	);

	WaveMessage(	5,	0,	"\caHell knights \cfand \cachain-\n\cagunners \cfapproach."	);
	WaveMessage(	5,	0,	"Use that chaingun to\nwipe 'em out!"	);

	WaveMessage(	6,	0,	"Fast melee units are on\ntheir way."	);
	WaveMessage(	6,	0,	"An \ciSSG \cfis waiting for you\nin the supply room."	);

	WaveMessage(	7,	0,	"We're sending over some\n\ciland mines."	);
	WaveMessage(	7,	0,	"Bar off the corridor to\nthe core with them."	);

	WaveMessage(	8,	0,	"\caRevenants \cfare on their\nway - now they are fast\nAND powerful."	);
	WaveMessage(	8,	0,	"Have some more \ciland mines\nto secure the core."	);

	WaveMessage(	9,	0,	"Argh, more \carevenants \cfand\n\cablood demons."	);
	WaveMessage(	9,	0,	"A \cirocket launcher \cfshould\nhelp things here."	);

	WaveMessage(	10,	0,	"Oh shit, \cacatharsi \cfand\n\caarchviles. \cfHold on..."	);
	WaveMessage(	10,	0,	"You're gonna need a\n\chmegasphere \cfand \cirailgun\nfor this last one. Give\n'em hell!"	);

	WaveMessage(	11,	0,	"Fantastic work, marine!"	);
	WaveMessage(	11,	0,	"You have successfully\ndefended this UAC\ninstallation!"	);

//	WaveMessageEnd(	11,	0	);	// This is a recommended shortcut to call the following two commands:

//	WaveMessage(	11,	0,	"Incredible job, marine!"	);
//	WaveMessage(	11,	0,	"You have successfully\ndefended this UAC\ninstallation!"	);

//	Items and stuff

	WavePowerup(	2,	"GreenArmor",	1	);
	WavePowerup(	4,	"GreenArmor",	1	);
	WavePowerup(	5,	"Backpack",	1	);
	WavePowerup(	6,	"GreenArmor",	1	);
	WavePowerup(	8,	"BlueArmor",	1	);
	WavePowerup(	10,	"Megasphere",	1	);

	WaveMedic(	1,	"Stimpack",	4	);
	WaveMedic(	2,	"Stimpack",	4	);
	WaveMedic(	3,	"Stimpack",	5	);
	WaveMedic(	4,	"Stimpack",	5	);
	WaveMedic(	5,	"Stimpack",	6	);
	WaveMedic(	6,	"Stimpack",	6	);

	WaveMedic(	7,	"Stimpack",	2	);
	WaveMedic(	7,	"MediKit",	2	);

	WaveMedic(	8,	"Stimpack",	4	);
	WaveMedic(	8,	"MediKit",	2	);

	WaveMedic(	9,	"Stimpack",	5	);
	WaveMedic(	9,	"MediKit",	2	);

	WaveMedic(	10,	"Stimpack",	5	);
	WaveMedic(	10,	"MediKit",	3	);

	WaveWeapon(	2,	"Shotgun"	);
	WaveWeapon(	4,	"Chaingun"	);
	WaveWeapon(	6,	"SuperShotgun"	);
	WaveWeapon(	7,	"LandMineLayer"	);
	WaveWeapon(	9,	"RocketLauncher"	);
	WaveWeapon(	10,	"Railgun"	);


//	Ammo
//	The amount given here is the actual amount of ammo spawned. The script knows about all
//	of the ammo pickups and how much is in each, and correctly spawns the right types.
//	WaveAmmo(	2,	BULLETS,	50	);
//	WaveAmmo(	2,	SHELLS,	8	);
//	WaveAmmo(	2,	ROCKETS,	0	);
//	WaveAmmo(	2,	CELLS,	0	);
//	WaveAmmo(	2,	GAS,	0	);
//	WaveAmmo(	2,	MINES,	0	);

	WaveAmmo(	2,	BULLETS,	50	);
	WaveAmmo(	2,	SHELLS,	8	);

	WaveAmmo(	3,	BULLETS,	50	);
	WaveAmmo(	3,	SHELLS,	20	);

	WaveAmmo(	4,	BULLETS,	75	);
	WaveAmmo(	4,	SHELLS,	32	);

	WaveAmmo(	5,	BULLETS,	75	);
	WaveAmmo(	5,	SHELLS,	40	);

	WaveAmmo(	6,	BULLETS,	50	);
	WaveAmmo(	6,	SHELLS,	48	);

	WaveAmmo(	7,	BULLETS,	100	);
	WaveAmmo(	7,	SHELLS,	80	);
	WaveAmmo(	7,	ROCKETS,	2	);
	WaveAmmo(	7,	MINES,	5	);

	WaveAmmo(	8,	BULLETS,	20	);
	WaveAmmo(	8,	SHELLS,	96	);
	WaveAmmo(	8,	ROCKETS,	4	);
	WaveAmmo(	8,	MINES,	5	);

	WaveAmmo(	9,	BULLETS,	20	);
	WaveAmmo(	9,	SHELLS,	116	);
	WaveAmmo(	9,	ROCKETS,	14	);
	WaveAmmo(	9,	CELLS,	20	);
	WaveAmmo(	9,	MINES,	10	);

	WaveAmmo(	10,	BULLETS,	100	);
	WaveAmmo(	10,	SHELLS,	80	);
	WaveAmmo(	10,	ROCKETS,	48	);
	WaveAmmo(	10,	CELLS,	200	);


//	Spots
//	The tids of the mapspots at each of the spawners are given here.
	AddMedicSpot	( 100 );
	AddAmmoSpot	( 101 );
	AddPowerupSpot	( 102 );
	AddWeaponSpot	( 103 );

//	Time to do stuff

	ACS_ExecuteWait(S_CORE_GAME,0,0);	// Runs the main deadline script

//	The player has beaten the deadline mode!

	ACS_Execute(S_MISSION_COMPLETE,0,0);	// Says "Mission Complete", screen fades out, and Exit_Normal(0) is called
}

script 101 (int wave)
{
	switch(wave)
	{
	case 7: // After Wave 6 - as wave 7 is about to start

		break;
  	case 9: // After Wave 8 - as wave 9 is about to start
		
		break;
	}
}