class BabelSpiderMastermind : BabelMonster Replaces SpiderMastermind
{
	int user_loopCounter;
	default
	{
		Health 3000;
		Radius 128;
		Height 100;
		Mass 1000;
		Speed 12;
		Monster;
		MinMissileChance 160;
		+BOSS;
		+MISSILEMORE;
		+FLOORCLIP;
		+NORADIUSDMG;
		+DONTMORPH;
		+BOSSDEATH;
		SeeSound "spider/sight";
		AttackSound "spider/attack";
		PainSound "spider/pain";
		DeathSound "spider/death";
		ActiveSound "spider/active";
		Obituary "$OB_SPIDER";
		PainChance 10;
		PainChance "PlayerPistol", 15;
		DamageType "Monster";
		Tag "Spider Mastermind (Babel)";
		
		BabelMonster.AlternatePainSound	"spider/pain2";
	}
	action void A_BabelSMShot(double xspread, double yspread, string attackSound = "shotguy/attack")
	{
		string missileType = "CGuyShot";
		if(CVar.FindCVar("egr_enemy_tracer_type").GetInt() == 3)
		{
			missileType = "ClassicCGuyShot";
		}
		invoker.A_PlaySound(attackSound, CHAN_AUTO, 1.0, 0, 0.5);
		if(CVar.FindCVar("egr_default_projectile_origins").GetInt() == 1)
		{
			A_SpawnProjectile(missileType,32.0,0,  frandom(-xspread,xspread)+invoker.PredictPlayerMovementRough(80), CMF_OFFSETPITCH, frandom(-yspread,yspread));
			A_SpawnProjectile(missileType,32.0,0,  frandom(-xspread,xspread)+invoker.PredictPlayerMovementRough(80), CMF_OFFSETPITCH, frandom(-yspread,yspread));
		}
		else
		{
			A_SpawnProjectile(missileType,44.0,10, frandom(-xspread,xspread)+invoker.PredictPlayerMovementRough(80), CMF_OFFSETPITCH, frandom(-yspread,yspread));
			A_SpawnProjectile(missileType,44.0,10, frandom(-xspread,xspread)+invoker.PredictPlayerMovementRough(80), CMF_OFFSETPITCH, frandom(-yspread,yspread));
		}
		A_SetAngle(angle+invoker.PredictPlayerMovementRough(80));
	}
	States
	{
	Spawn:
		SPID AB 10 A_Look();
		Loop;
	See:
		SPID A 3 A_Metal;
		SPID ABB 3 A_Chase();
		SPID C 3 A_Metal;
		SPID CDD 3 A_Chase();
		SPID E 3 A_Metal;
		SPID EFF 3 A_Chase();
		Loop;
	Missile:
		SPID A 20 A_FaceTarget();
		SPID GH 2 Bright A_BabelSMShot(2, 2);
		SPID H 1 Bright A_SpidRefire;
		Goto Missile+1;
	Pain:
		SPID I 3;
		SPID I 3 A_BabelPain();
		Goto See;
	Death:
		TNT1 A 0 
		{
			ScareOthers("BabelMonster", 10000);
			if(random(0,255) < 224)
			{
				TriggerSync("BabelDemon", 65.0);
				TriggerSync("BabelImp", 80.0);
				TriggerSync("BabelZombieMan", 75.0);
				TriggerSync("BabelChaingunGuy", 65.0);
				TriggerSync("BabelShotgunGuy", 70.0);
				TriggerSync("BabelNazi", 75.0);
				TriggerSync("BabelBaronOfHell", 40.0);
				TriggerDodge(); //Cacodemon
				
				TriggerChain("BabelRevenant", 25.0);
				TriggerChain("BabelFatso", 25.0);
			}
		}
	Death.Monster:
		TNT1 A 0;
		SPID J 20 A_Scream();
		SPID K 10 A_NoBlocking;
		SPID LLLLLMMMMMMNNNNNNOOOOOOPPPPPP 2
		{
			for(user_loopCounter = 0; user_loopCounter < 3; user_loopCounter++)
			{
				if(CVar.FindCVar("egr_gore").GetInt())
				{
					A_SpawnProjectile("Bits", random(24, 110), random(-64, 64), random (0, 360), CMF_OFFSETPITCH, -random (0, 160));
					A_SpawnItemEx("BloodSpew", random(-64, 64), random(-64, 64), random(24, 75));
				}
				if(random(0, 1))
				{
					A_SpawnItemEx("BExplode", random(-64, 64), random(-64, 64), random(24, 75));
					if(CVar.FindCVar("egr_gore").GetInt())
					{
						A_SpawnProjectile("Chunks", random(24, 110), random(-64, 64), random (0, 360), CMF_OFFSETPITCH, -random (0, 160));
					}
				}
			}
		}
		SPID QR 10;
		SPID S 30;
		SPID S -1 A_BossDeath;
		Stop;
	Death.Massacre:
		TNT1 A 0;
		SPID J 20 A_Scream();
		SPID K 10 A_NoBlocking;
		SPID LLLLLMMMMMMNNNNNNOOOOOOPPPPPP 2;
		SPID QR 10;
		SPID S 30;
		SPID S -1 A_BossDeath;
		Stop;
	}
}