ACTOR VeryEasyMonsterSpawner : BasicWeaponPickup//<=200 hp monsters
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_SpawnItem("TeleportFog")
			TNT1 A 0 A_Jump(4, "Spectre")
			TNT1 A 0 A_Jump(8, "Demon")
			TNT1 A 0 A_Jump(16, "LostSoul")
			TNT1 A 0 A_Jump(32, "ChaingunGuy")
			TNT1 A 0 A_Jump(64, "DoomImp")
			TNT1 A 0 A_Jump(128, "ShotgunGuy")
			
			ZombieMan:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("ZombieMan",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
			
			ShotgunGuy:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("ShotgunGuy",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
			
			DoomImp:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("DoomImp",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
			
			ChaingunGuy:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("ChaingunGuy",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
			
			LostSoul:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("LostSoul",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			Demon:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Demon",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			Spectre:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Spectre",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
	}
}

ACTOR EasyMonsterSpawner : BasicWeaponPickup//<=500 hp monsters
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_SpawnItem("TeleportFog")
			TNT1 A 0 A_Jump(16, "VeryEasyMonsterSpawner")
			TNT1 A 0 A_Jump(32, "HellKnight")
			TNT1 A 0 A_Jump(64, "PainElemental")
			TNT1 A 0 A_Jump(128, "Cacodemon")
				
			Revenant:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Revenant",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			Cacodemon:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Cacodemon",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			PainElemental:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("PainElemental",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			HellKnight:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("HellKnight",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
			
			VeryEasyMonsterSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("VeryEasyMonsterSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
	}
}

ACTOR NormalMonsterSpawner : BasicWeaponPickup//<=1000 hp monsters
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_SpawnItem("TeleportFog")
			TNT1 A 0 A_Jump(8, "VeryEasyMonsterSpawner")
			TNT1 A 0 A_Jump(16, "EasyMonsterSpawner")
			TNT1 A 0 A_Jump(32, "BaronofHell")
			TNT1 A 0 A_Jump(64, "Archvile")
			TNT1 A 0 A_Jump(128, "Arachnotron")
				
			Fatso:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Fatso",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			Arachnotron:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Arachnotron",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			Archvile:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Archvile",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			BaronofHell:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("BaronofHell",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
			
			VeryEasyMonsterSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("VeryEasyMonsterSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			EasyMonsterSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("EasyMonsterSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
	}
}

ACTOR HardMonsterSpawner : BasicWeaponPickup//all non-boss monsters
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_SpawnItem("TeleportFog")
			TNT1 A 0 A_Jump(4, "VeryEasyMonsterSpawner")
			TNT1 A 0 A_Jump(8, "EasyMonsterSpawner")
			TNT1 A 0 A_Jump(16, "NormalMonsterSpawner")
			TNT1 A 0 A_Jump(32, "EnemyVehicleSpawner")
			TNT1 A 0 A_Jump(64, "Belphegor2")
			TNT1 A 0 A_Jump(128, "Volcabus")
			
			Arachnotron2:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Arachnotron2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			Volcabus:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Volcabus",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			Belphegor2:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Belphegor2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			EnemyVehicleSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("EnemyVehicleSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			VeryEasyMonsterSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("VeryEasyMonsterSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			EasyMonsterSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("EasyMonsterSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			NormalMonsterSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("NormalMonsterSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
	}
}

ACTOR EnemyVehicleSpawner : BasicWeaponPickup//vehicle monsters
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_SpawnItem("TeleportFog")
			TNT1 A 0 A_Jump(32, "ZombieMech")
			TNT1 A 0 A_Jump(64, "ZombieMainBattleTank")
			TNT1 A 0 A_Jump(128, "ZombieArtilleryTank")
			
		ZombieHelicopter:
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_SpawnItemEx ("ZombieHelicopter",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
			Stop
			
		ZombieArtilleryTank:
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_SpawnItemEx ("ZombieArtilleryTank",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
			Stop
			
		ZombieMainBattleTank:
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_SpawnItemEx ("ZombieMainBattleTank",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
			Stop
			
		ZombieMech:
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_SpawnItemEx ("ZombieMech",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
			Stop
	}
}

ACTOR BossMonsterSpawner : BasicWeaponPickup//all monsters
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_SpawnItem("TeleportFog")
			TNT1 A 0 A_Jump(2, "VeryEasyMonsterSpawner")
			TNT1 A 0 A_Jump(4, "EasyMonsterSpawner")
			TNT1 A 0 A_Jump(8, "NormalMonsterSpawner")
			TNT1 A 0 A_Jump(16, "HardMonsterSpawner")
			TNT1 A 0 A_Jump(32, "Motherdemon")
			TNT1 A 0 A_Jump(64, "Cyberdemon")
			TNT1 A 0 A_Jump(128, "Juggernaut")
			
			SpiderMastermind:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("SpiderMastermind",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			Juggernaut:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Juggernaut",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			Cyberdemon:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Cyberdemon",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			Motherdemon:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("Motherdemon",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			VeryEasyMonsterSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("VeryEasyMonsterSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			EasyMonsterSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("EasyMonsterSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			NormalMonsterSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("NormalMonsterSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
				
			HardMonsterSpawner:
				TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
				TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
				TNT1 A 0 A_SpawnItemEx ("HardMonsterSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
				Stop
	}
}