ACTOR CerebralCaco
{
	DamageFactor "CacoComet" , 0.0
	DamageFactor "WeakenerBall" , 0.0
	DamageFactor "SoapOpera" , 0.0
	Health 1100
	Radius 24
	Height 44
	Mass 400
	Meleedamage 8
	Speed 10
	PainChance 64
	Monster
	+FLOAT
	+NOGRAVITY
	+MISSILEEVENMORE
	+MISSILEMORE
	+QUICKTORETALIATE
	SeeSound "CBcaco/see"
	PainSound "CBcaco/pain"
	DeathSound "CBcaco/death"
	ActiveSound "CBcaco/active"
	MeleeSound "caco/melee"
	Obituary "%o was turned into a pile of mush by a Cerebral Cacodemon."
	DropItem "HellStaff" 128
	DropItem "BossLifeEssence" 150
    DropItem "BossArmorBonusMax" 150
	DropItem "DemonAmmoBox" 255 
	DropItem "Demon Tech BFG10K" 40
	States
	{
	Spawn:
		CCAC A 10 A_Look
		Loop
	See:
		TNT1 A 0 A_Jump(20,"FastChase")
		CCAC A 3 A_Chase
		TNT1 A 0 A_Jump(62,"Rush")
		Loop
	Rush:
	   TNT1 A 0 A_SpawnItemEx("CBCacoGhostA")	
	   CCAC A 1 A_Chase
	   TNT1 A 0 A_SpawnItemEx("CBCacoGhostA")	
	   CCAC A 1 A_Chase
	   TNT1 A 0 A_SpawnItemEx("CBCacoGhostA")	
	   CCAC A 1 A_Chase
	   TNT1 A 0 A_SpawnItemEx("CBCacoGhostA")	
	   CCAC A 1 A_Chase
	   TNT1 A 0 A_SpawnItemEx("CBCacoGhostA")	
	   CCAC A 1 A_Chase
	   TNT1 A 0 A_SpawnItemEx("CBCacoGhostA")	
	   CCAC A 1 A_Chase
	   TNT1 A 0 A_SpawnItemEx("CBCacoGhostA")	
	   CCAC A 1 A_Chase
	   TNT1 A 0 A_SpawnItemEx("CBCacoGhostA")	
	   CCAC A 1 A_Chase
	   TNT1 A 0 A_Jump(87,"See")
	   Loop
	FastChase:
		 CCAC A 3 A_FastChase
		 CCAC A 3 A_FastChase
		 Goto See
	Missile:
        TNT1 A 0 A_SetShootable
        TNT1 A 0 A_UnsetInvulnerable
        TNT1 A 0 A_SetTranslucent(1)
		TNT1 A 0 A_Jump(256, "BFG9500", "DTBFG10K", "15K", "HellStaffHoming", "HellStaff")
	BFG9500:
		TNT1 A 0 A_PlaySound("weapons/bfgf")
		CCAC B 15 A_FaceTarget
		CCAC C 10 Bright A_FaceTarget
		CCAC D 10 Bright A_CustomMissile("CBCacoRedBFGBall", 15)
		CCAC CB 15 A_FaceTarget
		Goto See
	DTBFG10K:
		TNT1 A 0 A_PlaySound("Cardinal/9k")
		CCAC B 20 A_FaceTarget
		CCAC C 15 Bright A_FaceTarget
		CCAC D 10 Bright A_CustomMissile("CBCacoDTBFG10KBall", 15)
		CCAC CB 15 A_FaceTarget
		Goto See
	15K:
		CCAC B 8
		CCAC C 8 Bright
		CCAC D 0 Bright A_CustomMissile("CBCacoBFG15K", 15, 0, -8)
		CCAC D 0 Bright A_CustomMissile("CBCacoBFG15K", 15, 0, 8)
		CCAC D 8 Bright A_CustomMissile("CBCacoBFG15K", 15)
		Goto See
	HellStaffHoming:
		CCAC B 4
		CCAC C 4
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall2", 15, 0, -20)
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall2", 15, 0, 20)
		CCAC D 4 Bright A_CustomMissile("CacoHellStaffBall2", 15)
		CCAC BC 4 A_FaceTarget
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall2", 15, 0, -20)
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall2", 15, 0, 20)
		CCAC D 4 Bright A_CustomMissile("CacoHellStaffBall2", 15)
		CCAC BC 4 A_FaceTarget
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall2", 15, 0, -20)
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall2", 15, 0, 20)
		CCAC D 4 Bright A_CustomMissile("CacoHellStaffBall2", 15)
		Goto See
	HellStaff:
		CCAC B 4
		CCAC C 4
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall1", 15, 0, -8)
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall1", 15, 0, 8)
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall1", 15, 0, -4)
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall1", 15, 0, 4)
		CCAC D 4 Bright A_CustomMissile("CacoHellStaffBall1", 15)
		CCAC BC 4 A_FaceTarget
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall1", 15, 0, -8)
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall1", 15, 0, 8)
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall1", 15, 0, -4)
		CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall1", 15, 0, 4)
		CCAC D 4 Bright A_CustomMissile("CacoHellStaffBall1", 15)
		Goto See
	Melee:
         CCAC BC 5 A_FaceTarget
		 CCAC D 5 A_MeleeAttack
		 CCAC CB 5 A_FaceTarget
		 Goto See
	Pain:
		CCAC E 3
		CCAC E 3 A_Pain
		CCAC F 6
		Goto See
	Death:
		CCAC G 8
		TNT1 A 0 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
		CCAC H 8 A_Scream
		CCAC I 8
		CCAC J 8 A_NoBlocking
		CCAC K -1 A_SetFloorClip
		Stop
	}
}

ACTOR CBCacoGhostA
{
Radius 2
Height 2
Speed 0
Alpha 0.85
Scale 1.0
PROJECTILE
RENDERSTYLE Translucent
+CLIENTSIDEONLY
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
Fade:
    TNT1 A 1
	CCAC A 2 A_FadeOut(0.15)
	Goto Fade+1
Toaster:
    TNT1 A 0
    Stop
    }
}

ACTOR CBCacoRedBFGBall : SentientBFG9500Ball
{
FastSpeed 30
-THRUSPECIES
DamageType "WeakenerBall"
Obituary "%o stood in the way of the Cerebral Cacodemon."  
Decal BFG9500Lightning
}

ACTOR CacoHellStaffBall1 : HellStaffBall1
{
  Species "Caco"
  DamageType "CacoComet"
}

ACTOR CacoHellStaffBall2 : HellStaffBall2
{
  Species "Caco"
  DamageType "CacoComet"
  States
  {
  Spawn:
	FX00 CCC 1 BRIGHT A_SpawnItemEx("HellStaffTrail1", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 A 0 A_SeekerMissile(10, 15)
	FX00 DDD 1 BRIGHT A_SpawnItemEx("HellStaffTrail2", 0, 0, 0, 0, 0, 0, 0, 128)
	FX00 EEE 1 BRIGHT A_SpawnItemEx("HellStaffTrail1", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 A 0 A_SeekerMissile(10, 15)
	FX00 FFF 1 BRIGHT A_SpawnItemEx("HellStaffTrail2", 0, 0, 0, 0, 0, 0, 0, 128)
    Loop
  }
}

ACTOR CBCacoDTBFG10KBall : SentientDTBFG10KBall
{
DamageType "SoapOpera"
Obituary "%o turned into a pile of mush by the Cerebral Cacodemon."  
States
{
Spawn:
    TNT1 A 0
	TNT1 A 0 A_Jump(128,"DTBFGSFX")
    TNT1 A 0 A_PlaySoundEx("weapons/dtech10kball","Voice",1)
    TNT1 A 0 A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
    CRS1 A 1 Bright A_CustomMissile("ZombieDTBFGProjectileAttack",Random(-10,10),0,0,CMF_TRACKOWNER)
    CRS1 B 1 Bright A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
    TNT1 A 0 A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
    CRS1 C 1 Bright A_CustomMissile("ZombieDTBFGProjectileAttack",Random(-10,10),0,0,CMF_TRACKOWNER)
    CRS1 D 1 Bright A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
    Loop  
DTBFGSFX:
	TNT1 A 0 A_PlaySoundEx("weapons/dtech10kball","Voice",1)
	TNT1 A 0 A_SpawnItemEx("DTBFGLightningRed",Random(6,-6),Random(6,-6),Random(16,8),0,0,0,0,128)
    TNT1 A 0 A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
    CRS1 A 1 Bright A_CustomMissile("ZombieDTBFGProjectileAttack",Random(-10,10),0,0,CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("DTBFGLightningRed2",Random(6,-6),Random(6,-6),Random(16,8),0,0,0,0,128)
    CRS1 B 1 Bright A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_SpawnItemEx("DTBFGLightningRed",Random(6,-6),Random(6,-6),Random(16,8),0,0,0,0,128)
    TNT1 A 0 A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
    CRS1 C 1 Bright A_CustomMissile("ZombieDTBFGProjectileAttack",Random(-10,10),0,0,CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("DTBFGLightningRed2",Random(6,-6),Random(6,-6),Random(16,8),0,0,0,0,128)
    CRS1 D 1 Bright A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
    Goto Spawn	
Death:
    TNT1 A 0
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 Radius_Quake(5,60,0,10,0)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,0,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,10,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,20,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,30,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,40,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,50,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,60,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,70,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,80,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,90,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,100,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,110,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,120,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,130,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,140,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,150,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,160,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,170,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,180,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,190,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,200,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,210,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,220,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,230,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,240,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,250,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,260,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,270,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,280,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,290,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,300,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,310,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,320,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,330,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,340,CMF_TRACKOWNER)
	TNT1 A 0 A_CustomMissile("DTBFG10KTracerCyber",0,0,350,CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("DTBFGLightningRedSpawner", 0, 0, 15, 0, 0, 0, 0, 128)	
	CRS1 ABCD 6 Bright A_SpawnItemEx("DTech10KShockwave", 0, 0, 15, 0, 0, 0, 0, 128)
	TNT1 A 0 A_Explode(800,300)
	TNT1 A 0 A_StopSoundEx("Voice")
	TNT1 A 0 Radius_Quake(20,12,0,12,0)
	TNT1 A 0 A_PlaySound("weapons/dtech10kexplode")
	TNT1 A 0 A_SpawnItemEx("DTech10KShockwave2", 0, 0, 15, 0, 0, 0, 0, 128)
    TNT1 A 20 A_SpawnItem("RedDTBFGEx",0,-10)
    Stop
    }
}

ACTOR CBCacoBFG15K : BFG15KBall
{
FastSpeed 30
Scale 0.6
SeeSound "weapons/bfg15kfire"
DamageType "CacoComet"
-THRUSPECIES
States
{
Spawn:
    TNT1 AA 0 A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-8,8),Random(-8,8),Random(-8,8),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
    CFS1 A 4 Bright
    TNT1 AA 0 A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-8,8),Random(-8,8),Random(-8,8),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
	CFS1 B 4 Bright
    Loop
Death:
	TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom14", 0, 0, random(0,360), 2, random(0,360))	
    CFE1 A 3 Bright A_Explode
    CFE1 BC 3 Bright 
    CFE1 BA 3 Bright
    CFG9 ABCDEF 3 Bright   
    Stop
    }
}