ACTOR CerebralCaco
{
  Health 1100
  Radius 24
  Height 44
  Mass 400
  Meleedamage 8
  Speed 10
  PainChance 64
  Monster
  +FLOAT
  +NOGRAVITY
  +MISSILEEVENMORE
  +MISSILEMORE
  +QUICKTORETALIATE
  +DONTHARMSPECIES
  DamageFactor "CacoComet", 0.0
  DamageFactor "WeakenerBall", 0.0
  DamageFactor "SoapOpera", 0.0
  Species "CacoDemon"
  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" 256 
  DropItem "BigDustMana" 128 100
  DropItem "DustMana" 256 30
  DropItem "Demon Tech BFG10K" 60
  States
	{
  Spawn:
	CCAC A 10 A_Look
	Loop
  See:
	CCAC A 3 A_Chase
	TNT1 A 0 A_Jump(20,"Evade")
	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
  Evade:
	TNT1 A 0 A_Jump(128,7)
	TNT1 A 0 ThrustThing(Angle*256/360+64,14,0,0)
	CCAC AAAA 3 A_Chase
	TNT1 A 0 A_Stop
	Goto See
	TNT1 A 0 ThrustThing(Angle*256/360+192,14,0,0)		 
	CCAC AAAA 3 A_Chase
	TNT1 A 0 A_Stop		 
	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 Bright 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 Bright A_FaceTarget
	CCAC C 15 Bright A_FaceTarget
	CCAC D 10 Bright A_CustomMissile("CBCacoDTBFG10KBall", 15)
	CCAC CB 15 A_FaceTarget
	Goto See
  15K:
	TNT1 A 0 A_PlaySound("weapons/charge15k")
	CCAC BBBBCC 3 Bright A_FaceTarget
	CCAC D 8 Bright A_CustomMissile("CBCacoBFG15K", 15, 0, random(-4,4))
	CCAC C 4 Bright A_FaceTarget
	CCAC D 8 Bright A_CustomMissile("CBCacoBFG15K", 15, 0, random(-4,4))
	CCAC C 4 Bright A_FaceTarget
	CCAC D 8 Bright A_CustomMissile("CBCacoBFG15K", 15, 0, random(-4,4))
	CCAC C 4 Bright A_FaceTarget
	CCAC D 8 Bright A_CustomMissile("CBCacoBFG15K", 15, 0, random(-4,4))
	CCAC C 4 Bright A_FaceTarget
	Goto See
  HellStaffHoming:
	CCAC B 6
	CCAC C 6
	CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall2", 15, 0, -20)
	CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall2", 15, 0, 20)
	CCAC D 6 Bright A_CustomMissile("CacoHellStaffBall2", 15)
	CCAC BC 6 A_FaceTarget
	CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall2", 15, 0, -20)
	CCAC D 0 Bright A_CustomMissile("CacoHellStaffBall2", 15, 0, 20)
	CCAC D 6 Bright A_CustomMissile("CacoHellStaffBall2", 15)
	Goto See
  HellStaff:
	CCAC B 6
	CCAC C 6
	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 6 Bright A_CustomMissile("CacoHellStaffBall1", 15)
	CCAC BC 6 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 6 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 CacoHellStaffBall1
{
  Projectile
  Radius 12
  Height 8
  Speed 30
  Damage 5
  Scale 0.75
  -NOBLOCKMAP
  RenderStyle Add
  Species "Cacodemon"
  DamageType "CacoComet"
  SeeSound "HellStaff/Fire"
  DeathSound "HellStaff/Explode"
  States
  {
  Spawn:
    HPRO AABBCC 1 Bright A_SpawnItemEx("HellStaffParticle",0,0,0,0,frandom(-1,1),frandom(-1,1),random(0,359))
    Loop
  Death:
	TNT1 A 0
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("HellStaffParticle",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4),random(0,359))
    CLBA B 1 Bright A_FadeOut(0.2)
    Goto Death+1
  }
}

ACTOR CacoHellStaffBall2 : CacoHellStaffBall1
{
  Speed 25
  Damage 5
  Scale 0.8
  +SEEKERMISSILE
  +FORCERADIUSDMG
  States
  {
  Spawn:
    HPRO AABBCC 1 Bright A_SpawnItem("HellStaffTrail")
	TNT1 A 0 A_SeekerMissile(30, 45)
    Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_Explode(20,48)
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("HellStaffParticle",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4),random(0,359))
    CLBA B 1 Bright A_FadeOut(0.2)
    Goto Death+2
  }
}

ACTOR HellStaffParticle
{
  +NoInteraction
  +ClientSideOnly
  Renderstyle Add
  Scale 0.05
  States
  {
  Spawn:
	TNT1 A 2
	CLBA B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.048)
	CLBA B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.046)
	CLBA B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.044)
	CLBA B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.042)
	CLBA B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.040)
	CLBA B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.038)
	CLBA B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.036)
	CLBA B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.034)
	CLBA B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.032)
    Stop
  }
}

ACTOR HellStaffTrail
{
  +NoInteraction
  +ClientSideOnly
  Renderstyle Add
  Scale 0.7
  States
  {
  Spawn:
	TNT1 A 2
	TNT1 A 0 A_Jump(256,"one","two","three")
  One:
	HPRO A 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.68)
	HPRO A 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.66)
	HPRO B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.64)
	HPRO B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.62)
	HPRO C 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.6)
	HPRO C 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.58)
	HPRO A 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.56)
	HPRO A 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.54)
	HPRO B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.52)
    Stop
  Two:
	HPRO B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.68)
	HPRO B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.66)
	HPRO C 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.64)
	HPRO C 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.62)
	HPRO A 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.6)
	HPRO A 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.58)
	HPRO B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.56)
	HPRO B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.54)
	HPRO C 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.52)
    Stop
  Three:
	HPRO C 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.68)
	HPRO C 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.66)
	HPRO A 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.64)
	HPRO A 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.62)
	HPRO B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.6)
	HPRO B 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.58)
	HPRO C 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.56)
	HPRO C 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.54)
	HPRO A 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(0.52)
    Stop
  }
}

ACTOR CBCacoRedBFGBall : SentientBFG9500Ball
{
  DamageType "CacoComet"
  Species "Cacodemon"
  Obituary "%o turned into a pile of mush by the Cerebral Cacodemon."   
}

ACTOR CBCacoDTBFG10KBall : ZombieDTBFG10KBall
{
  Species "Cacodemon"
  Obituary "%o turned into a pile of mush by the Cerebral Cacodemon."  
}

ACTOR CBCacoBFG15K : Cybruiser15k
{
  DamageType "CacoComet"
  Species "Cacodemon"
}