Class ZScapeRoomDimensions : SActor {
	Default
	{
		-SOLID;
		+NOGRAVITY
		-FLOORCLIP
		+FLOAT
	}
	Override Void BeginPlay() {
		Super.BeginPlay();
		A_SetAngle(0);
		ShootRoomMeasurers();
		
	} 
	
	bool ShootRoomMeasurers() {
		For(int i = 0; i < 8; i++) {
			ZScapeRoomMarker Missile =  ZScapeRoomMarker(Actor.Spawn("ZScapeRoomMarker"));
			if(Missile) {
				Missile.SetOrigin(self.pos, true); // SetOrigin to ZKScape
				Missile.A_SetAngle(45*i); // The Circle o' Doom
				Missile.VelFromAngle(100); // Smack into the wall
			}
		}
		return true;
	}
}

Class ZScapeRoomMarker : SActor {
	Default
	{
		Radius 50;
		Height 1;
		Speed 200;
		Damage 0;
		Projectile;
		+THRUSPECIES;
	}
	
	int spawnAngle;
	
	States
	{
		Spawn:
			TNT1 A 1;
			Loop;
			
		Death:
			TNT1 A 1{ 
				// These will basically flip the angle of the rocket so 
				//they all face the middle instead of the wall
				
				if( self.angle > 180) spawnAngle = self.angle - 180;
				else spawnAngle = self.angle + 180;

				A_SpawnItemEx("ZScapeMinionSpawner", 0, 0, 0, 0 ,0 ,0, spawnangle, SXF_ABSOLUTEANGLE, 0, 32767);
			}
			Stop;
	}
}

Class ZScapeMinionSpawner : SActor {
	States 
	{
		Spawn:
			TNT1 A 1 A_CheckRange(55, 1); // Check if the player is foolin around in the collision box
			TNT1 A 2000 {
				A_SpawnItemEx("ZMRandom", 0, 0, 0, 0 ,0 ,0, 0, 0, 0, 32767);
				//A_PrintBold("Minions Spawned");
				A_SpawnItemEx("TeleportFog");
			}
			Stop;
		
	}
}

Class ZMRandom : RandomSpawner {
	Default
	{
		Dropitem "ZDoomImp";
		Dropitem "ZDemon";
	}
}