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

script 100 open
{
	Waves	= 10;		// The amount of waves in this map

	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

	// Prison Stuff
	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, 4 );
	AddZone( 32, 33, 5 );

//	Monsters
	WaveEnemy(	1,	"ZombieMan",	5	);
	WaveEnemy(	1,	"ShotgunGuy",	3	);
	WaveEnemy(	1,	"DoomImp",	5	);

	WaveEnemy(	2,	"ZombieMan",	5	);
	WaveEnemy(	2,	"ShotgunGuy",	3	);
	WaveEnemy(	2,	"DoomImp",	7	);

	WaveEnemy(	3,	"ZombieMan",	7	);
	WaveEnemy(	3,	"ShotgunGuy",	5	);
	WaveEnemy(	3,	"DoomImp",	12	);

	WaveEnemy(	4,	"Demon",	3	);
	WaveEnemy(	4,	"ShotgunGuy",	7	);
	WaveEnemy(	4,	"DoomImp",	13	);

	WaveEnemy(	5,	"DoomImp",	13	);
	WaveEnemy(	5,	"Demon",	3	);
	WaveEnemy(	5,	"ChaingunGuy",	3	);

	WaveEnemy(	6,	"DoomImp",	13	);
	WaveEnemy(	6,	"HellKnight",	3	);
	WaveEnemy(	6,	"Demon",	3	);

	WaveEnemy(	7,	"DoomImp",	15	);
	WaveEnemy(	7,	"Zombieman",	22	);
	WaveEnemy(	7,	"Spectre",	4	);

	WaveEnemy(	8,	"DoomImp",	18	);
	WaveEnemy(	8,	"Shotgunguy",	14	);
	WaveEnemy(	8,	"Demon",	3	);
	WaveEnemy(	8,	"Spectre",	3	);

	WaveEnemy(	9,	"Demon",	3	);
	WaveEnemy(	9,	"Spectre",	3	);
	WaveEnemy(	9,	"HellKnight",	5	);

	WaveEnemy(	10,	"Demon",	3	);
	WaveEnemy(	10,	"Spectre",	3	);
	WaveEnemy(	10,	"BaronOfHell",	6	);

	WaveEnemy(	-1,	"Arachnotron",	1	);

//	Messages

	RadioName[0] =	RADIO_RANDOM;	// RADIO_RANDOM is default for all indexes, so this line isn't strictly needed
//	RadioName[1] =	RADIO_CLOUD;

//	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
	WaveMessage(	2,	0,	"This has only just\nstarted."	);
	WaveMessage(	2,	0,	"get a \cishotgun \cffrom the\nsupply room!"	);

	WaveMessage(	3,	0,	"Those \cazombies \cfare slow,\nand no real danger."	);
	WaveMessage(	3,	0,	"They won't be the only\nenemies you'll have to\nface..."	);

	WaveMessage(	4,	0,	"Those \caimps \cfcan be a pain."	);
	WaveMessage(	4,	0,	"A \cichaingun \cfshould help\nhere, go get it."	);

	WaveMessage(	5,	0,	"Make sure to take out the\nfaster \cademons \cffirst."	);
	WaveMessage(	5,	0,	"They can pass the\n\cjdeadline \cfwithout you even\nnoticing."	);

	WaveMessage(	6,	0,	"Damn, more \capinkies\n\cfapproaching..."	);
	WaveMessage(	6,	0,	"I see you're gonna need\nmore supplies - an \ciSSG's\nwaiting for you."	);

	WaveMessage(	7,	0,	"Okay, \ciland mines \cfshould\nsecure a few areas."	);
	WaveMessage(	7,	0,	"\caSpectres \cfapproach. Get\nthe mines from the supply\nroom!"	);

	WaveMessage(	8,	0,	"The demons found \cja second\n\cjway in!"	);
	WaveMessage(	8,	0,	"This is starting to get\ninteresting..."	);

	WaveMessage(	9,	0,	"We've sent you a \cirocket\n\cilauncher."	);
	WaveMessage(	9,	0,	"You'll need powerful\nweapons against more\npowerful demons."	);

	WaveMessage(	10,	0,	"The \cjgates \cfare starting to\nclose..."	);
	WaveMessage(	10,	0,	"But Hell's sending in its\nlast wave of opposition!"	);

	WaveMessageEnd(	11,	0	);

	WaveMessage(	-1,	0,	"You have activated\nthe extra wave!\nCollect your weapon!"	);

//	Items and stuff

	WavePowerup(	2,	"GreenArmor",	1	);
	WavePowerup(	5,	"Backpack",	1	);
	WavePowerup(	6,	"GreenArmor",	1	);
	WavePowerup(	10,	"BlueArmor",	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",	2	);
	WaveMedic(	8,	"MediKit",	2	);

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

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

	WaveWeapon(	2,	"Shotgun"	);
	WaveWeapon(	4,	"Chaingun"	);
	WaveWeapon(	6,	"SuperShotgun"	);
	WaveWeapon(	7,	"LandMineLayer"	);
//	WaveWeapon(	8,	"LandMineLayer"	); -- If "Weapons Stay" is set, putting a second LandMineLayer is pointless! Instead, spawn some Mine ammo in the WaveAmmo section (see below)
	WaveWeapon(	9,	"RocketLauncher"	);

	WaveWeapon(	-1,	"DEPlasmaRifle"	);

//	Ammo

	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(	3,	BULLETS,	50	);
	WaveAmmo(	3,	SHELLS,	12	);

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

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

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

	WaveAmmo(	7,	BULLETS,	50	);
	WaveAmmo(	7,	SHELLS,	40	);
	WaveAmmo(	7,	ROCKETS,	2	);

	WaveAmmo(	8,	SHELLS,	80	);
	WaveAmmo(	8,	ROCKETS,	4	);
	WaveAmmo(	8,	MINES,	6	);

	WaveAmmo(	9,	SHELLS,	80	);
	WaveAmmo(	9,	ROCKETS,	8	);

	WaveAmmo(	10,	SHELLS,	80	);
	WaveAmmo(	10,	ROCKETS,	32	);

	WaveAmmo(	-1,	CELLS,	60	);

//	Spots

	AddMedicSpot	( 100 );
	AddAmmoSpot	( 101 );
	AddPowerupSpot	( 102 );
	AddWeaponSpot	( 103 );
					// There should be only one mapspot for each of these tids
//	AddWeaponSpot	( 104 );	// Put another entry if you have more than one spawn point

//	Time to do stuff

	ACS_Execute(S_DEADLINE,0,0);	// Runs the main deadline script
	ScriptWait(S_DEADLINE);		// Makes this script wait until it's done

//	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
}

//	This script is called shortly before the wave starts, with the wave number passed to it.
script 101 (int wave)
{
	switch(wave)
	{
	case 8: // After Wave 7 - as wave 8 is about to start
		Floor_LowerByValue(3, 20, 120);
		AddZone( 34, 35, 1 );
		break;
	}
}

//	A bonus script showing off custom wave
script 105 (void)
{
	CallWave (-1);
}