class BaronBallX : BaronBall
{
	Default
	{
		SeeSound "weapons/pistol";
	}
}

class BaronBallBig : BaronBallX
{
	Default
	{
		Scale 2.0;
		Radius 12;
		Height 32;
		Damage 0;
	}
	States
	{
	Spawn:
		BAL7 ABABABAB 4 BRIGHT;
		BAL7 AB 0 A_Jump(256, "Death");
		Loop;
	Death:
		BAL7 CDE 0 {
			A_SpawnProjectile ("BaronBallX", 0, 0, 0, CMF_AIMDIRECTION, 0);
			A_SpawnProjectile ("BaronBallX", 0, 0, 45, CMF_AIMDIRECTION, 0);
			A_SpawnProjectile ("BaronBallX", 0, 0, 90, CMF_AIMDIRECTION, 0);
			A_SpawnProjectile ("BaronBallX", 0, 0, 135, CMF_AIMDIRECTION, 0);
			A_SpawnProjectile ("BaronBallX", 0, 0, 180, CMF_AIMDIRECTION, 0);
			A_SpawnProjectile ("BaronBallX", 0, 0, 225, CMF_AIMDIRECTION, 0);
			A_SpawnProjectile ("BaronBallX", 0, 0, 270, CMF_AIMDIRECTION, 0);
		}
		BAL7 CDE 6 BRIGHT;
		
		Stop;
	}
}

class BaronBallPants : BaronBallX
{
	Default
	{
		Scale 0.1;
		RenderStyle "Normal";
		Radius 12;
		Height 32;
		-ZDOOMTRANS
		Damage 32;
		SeeSound "JEAN/SHOOT";
	}
	States
	{
	Spawn:
		PANT A 8;
		Loop;
	Death:
		
		Stop;
	}
}

class JEANBOSS : Actor
{
	Default
	{
		Health 2000;
		+NEVERRESPAWN
		Radius 24;
		Height 64;
		Mass 1000;
		Speed 10;
		PainChance 50;
		+NOPAIN
		Monster;
		+FLOORCLIP
		+BOSSDEATH
		Scale 0.5;
		DeathSound "JEAN/OOF";
		Obituary "Jean saw you post cringe";
		HitObituary "JEAN";
		Tag "JEAN";
		+NODROPOFF
	}
	States
	{
		Spawn:
			JEAN A 1 A_Look;
			loop;
		See:
			JEAN A 4 A_FastChase;	
			loop;
		Missile:
			JEAN A 0 A_FaceTarget;
			JEAN A 0 A_Jump(64, "PantsMissile");
			JEAN A 0 A_Jump(64, "BigMissile");
			JEAN A 4 A_SpawnProjectile("BaronBallX", 32, 3 * random(1, 8));
			JEAN A 4 A_SpawnProjectile("BaronBallX", 32, 3 * random(1, 8));
			JEAN A 4 A_SpawnProjectile("BaronBallX", 32, 3 * random(1, 8));
			JEAN A 4 A_SpawnProjectile("BaronBallX", 32, 3 * random(1, 8));
			JEAN A 4 A_SpawnProjectile("BaronBallX", 32, 3 * random(1, 8));
			Goto See;
		BigMissile:
			JEAN A 4 A_SpawnProjectile("BaronBallBig", 32, 3 * random(1, 8));
			Goto See;
		PantsMissile:
			JEAN A 4 A_SpawnProjectile("BaronBallPants", 32, 3 * random(1, 8));
			Goto See;
		Death:
			JEAN A 1;
			JEAN A 35 A_ScreamAndUnblock;
			JEAN A 35;
			JEAN A 0 A_SetScale(1.0);
			CREX A 5 BRIGHT;
			CREX B 5 BRIGHT;
			CREX C 5 BRIGHT;
			Stop;
	}
}

class BaronBlue : BaronBallX
{
	States
	{
		Spawn:
			BUL7 AB 4 BRIGHT;
			Loop;
		Death:
			BUL7 CDE 6 BRIGHT;
			Stop;
	}
}
class BaronBlueX : BaronBallX
{
	Default
	{
		SeeSound "weapons/shotgf";
	}
	States
	{
		Spawn:
			BUL7 AB 4 BRIGHT;
			Loop;
		Death:
			BUL7 CDE 6 BRIGHT;
			Stop;
	}
}

class PORTBOSS : JEANBOSS
{
	Default
	{
		+NEVERRESPAWN
		Radius 24;
		Height 64;
		Mass 1000;
		Speed 10;
		PainChance 50;
		+NOPAIN
		Monster;
		+FLOORCLIP
		+BOSSDEATH
		Scale 0.25;
		DeathSound "PORT/OOF";
		Obituary "Port reported your zdoom forum post";
		HitObituary "Port";
		Tag "PORT";
		+NODROPOFF
	}
	States
	{
		Spawn:
			PORT A 1 A_Look;
			loop;
		See:
			PORT A 2 A_FastChase;	
			loop;
		Missile:
			PORT A 0 A_FaceTarget;
			PORT A 0 A_Jump(127, "BigMissile");
			PORT A 4 A_SpawnProjectile("BaronBlue", 32, 3 * random(1, 8));
			PORT A 4 A_SpawnProjectile("BaronBlue", 32, 3 * random(1, 8));
			PORT A 4 A_SpawnProjectile("BaronBlue", 32, 3 * random(1, 8));
			PORT A 4 A_SpawnProjectile("BaronBlue", 32, 3 * random(1, 8));
			PORT A 4 A_SpawnProjectile("BaronBlue", 32, 3 * random(1, 8));
			Goto See;
		BigMissile:
			PORT A 0 A_SpawnProjectile("BaronBlueX", 32, 3 * random(1, 8),45);
			PORT A 0 A_SpawnProjectile("BaronBlueX", 32, 3 * random(1, 8),22);
			PORT A 0 A_SpawnProjectile("BaronBlueX", 32, 3 * random(1, 8),0);
			PORT A 0 A_SpawnProjectile("BaronBlueX", 32, 3 * random(1, 8),-22);
			PORT A 4 A_SpawnProjectile("BaronBlueX", 32, 3 * random(1, 8),-45);
			Goto See;
		Death:
			PORT A 1;
			PORT A 35 A_ScreamAndUnblock;
			PORT A 0 A_SetScale(1.0);
			CREX A 5 BRIGHT;
			CREX B 5 BRIGHT;
			CREX C 5 BRIGHT;
			Stop;
	}
}

class BaronPurp : BaronBallX
{
	States
	{
		Spawn:
			BEL7 AB 4 BRIGHT;
			Loop;
		Death:
			BEL7 CDE 6 BRIGHT;
			Stop;
	}
}

class XEROBOSS : JEANBOSS
{
	Default
	{
		+NEVERRESPAWN
		Radius 24;
		Height 64;
		Mass 1000;
		Speed 10;
		PainChance 50;
		+NOPAIN
		Monster;
		+FLOORCLIP
		+BOSSDEATH
		Scale 0.25;
		DeathSound "XERO/OOF";
		Obituary "Xerroz made you to do repression work";
		HitObituary "Xero";
		Tag "XERO";
		+NODROPOFF
	}
	States
	{
		Spawn:
			XERO A 1 A_Look;
			loop;
		See:
			XERO A 4 A_FastChase;	
			loop;
		Missile:
			XERO A 0 A_FaceTarget;
			XERO A 4 A_SpawnProjectile("BaronPurp", 32, 3 * random(1, 8));
			XERO A 4 A_SpawnProjectile("BaronPurp", 32, 3 * random(1, 8));
			XERO A 4 A_SpawnProjectile("BaronPurp", 32, 3 * random(1, 8));
			XERO A 4 A_SpawnProjectile("BaronPurp", 32, 3 * random(1, 8));
			XERO A 4 A_SpawnProjectile("BaronPurp", 32, 3 * random(1, 8));
			XERO A 4 A_SpawnProjectile("BaronPurp", 32, 3 * random(1, 8));
			XERO A 4 A_SpawnProjectile("BaronPurp", 32, 3 * random(1, 8));
			XERO A 4 A_SpawnProjectile("BaronPurp", 32, 3 * random(1, 8));
			XERO A 4 A_SpawnProjectile("BaronPurp", 32, 3 * random(1, 8));
			XERO A 4 A_SpawnProjectile("BaronPurp", 32, 3 * random(1, 8));
			Goto See;
		Death:
			XERO A 1;
			XERO A 35 A_ScreamAndUnblock;
			XERO A 0 A_SetScale(1.0);
			CREX A 5 BRIGHT;
			CREX B 5 BRIGHT;
			CREX C 5 BRIGHT;
			Stop;
	}
}

class RespawningStimPack : Stimpack
{
	Default
	{
		+INVENTORY.ALWAYSRESPAWN
	}
}
class RespawningShell : Shell
{
	Default
	{
		+INVENTORY.ALWAYSRESPAWN
	}
}
class RespawningClip : Clip
{
	Default
	{
		+INVENTORY.ALWAYSRESPAWN
	}
}
class RespawningCell : Cell
{
	Default
	{
		+INVENTORY.ALWAYSRESPAWN
	}
}

class RespawningRocketAmmo : RocketAmmo
{
	Default
	{
		+INVENTORY.ALWAYSRESPAWN
	}
}