Actor CerebralRedeemer
{
  Obituary "%o was blown away by a Cerebral Redeemer."
  HitObituary "%o became a Cerebral Redeemer's lunch."
  Health 1300
  Radius 31
  Height 56
  Mass 800
  Speed 10
  PainChance 30
  MeleeDamage 12
  DamageFactor "SoulToxic", 0.0
  DamageFactor "BombBreath", 0.0
  DamageFactor "SoapOpera" , 0.0
  SeeSound "CBElem/Sight"
  PainSound "CBElem/Pain"
  DeathSound "CBElem/Death"
  ActiveSound "CBElem/Active"
  MeleeSound "caco/melee"
  Species "EleSouls"
  DropItem "HellStaff" 128
  DropItem "BossLifeEssence" 190
  DropItem "BossArmorBonusMax" 190
  DropItem "DemonAmmoBox" 256 
  DropItem "BigDustMana" 128 100
  DropItem "DustMana" 256 30
  DropItem "Demon Tech BFG10K" 60
  Monster
  +Float
  +NoGravity
  +MissileMore
  +Notarget
  +DontHarmSpecies
  +NoRadiusDMG
  States
  {
  Spawn:
    HELE A 10 A_Look
    Loop
  See:
    HELE A 0 A_SetShootable
    HELE AAAAAA 3 A_Chase
    HELE A 0 A_Jump(32,"Teleport")
    Goto See+1
  Teleport:
    HELE A 0 A_UnSetshootable
    HELE A 1
    HELE A 1 A_SetTranslucent(0.90)
    HELE A 1 A_SetTranslucent(0.80)
    HELE A 1 A_SetTranslucent(0.70)
    HELE A 1 A_SetTranslucent(0.60)
    HELE A 1 A_SetTranslucent(0.50)
    HELE A 1 A_SetTranslucent(0.40)
    HELE A 1 A_SetTranslucent(0.30)
    HELE A 1 A_SetTranslucent(0.20)
    HELE A 1 A_SetTranslucent(0.10)
    TNT1 A 0 A_Jump(128,25)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
    TNT1 A 0 A_Jump(128,25)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_ExtChase(0,0,1,1)
    HELE A 1 A_PlaySound("Boss/Teleport")
    HELE A 1 A_SetTranslucent(0.10)
    HELE A 1 A_SetTranslucent(0.20)
    HELE A 1 A_SetTranslucent(0.30)
    HELE A 1 A_SetTranslucent(0.40)
    HELE A 1 A_SetTranslucent(0.50)
    HELE A 1 A_SetTranslucent(0.60)
    HELE A 1 A_SetTranslucent(0.70)
    HELE A 1 A_SetTranslucent(0.80)
    HELE A 1 A_SetTranslucent(0.90)
    HELE A 1 A_SetTranslucent(1.0)
    HELE A 0 A_SetShootable
    Goto See
  Missile:
    HELE A 0 A_Jump(180,"HadesSpheres","HellStaffNormal","HellStaffHoming","BFG","15k","Demontech10k")
  Normal:
    HELE BC 5 Bright A_Facetarget
    HELE D 2 Bright A_CustomMissile("CBElemBall",24,0,0)
    HELE D 0 Bright A_CustomMissile("CBElemBall",24,0,-5)
    HELE D 2 Bright A_CustomMissile("CBElemBall",24,0,5)
    HELE D 0 Bright A_CustomMissile("CBElemBall",24,0,-10)
    HELE D 2 Bright A_CustomMissile("CBElemBall",24,0,10)
    HELE BC 5 Bright A_Facetarget
    HELE D 2 Bright A_CustomMissile("CBElemBall",24,0,0)
    HELE D 0 Bright A_CustomMissile("CBElemBall",24,0,-5)
    HELE D 2 Bright A_CustomMissile("CBElemBall",24,0,5)
    HELE D 0 Bright A_CustomMissile("CBElemBall",24,0,-10)
    HELE D 2 Bright A_CustomMissile("CBElemBall",24,0,10)
    HELE BC 5 Bright A_Facetarget
    HELE D 2 Bright A_CustomMissile("CBElemBall",24,0,0)
    HELE D 0 Bright A_CustomMissile("CBElemBall",24,0,-5)
    HELE D 2 Bright A_CustomMissile("CBElemBall",24,0,5)
    HELE D 0 Bright A_CustomMissile("CBElemBall",24,0,-10)
    HELE D 2 Bright A_CustomMissile("CBElemBall",24,0,10)
    Goto See
  HadesSpheres:
    HELE BC 5 Bright A_Facetarget
    HELE D 5 Bright A_DualPainAttack("HS")
    Goto See
  HellStaffNormal:
    HELE BC 7 Bright A_Facetarget
    HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall1",24,0,-10,0,0)
    HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall1",24,0,-5,0,0)
    HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall1",24,0,0,0,0)
    HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall1",24,0,5,0,0)
    HELE D 7 Bright A_CustomMissile("CBElemHellStaffBall1",24,0,10,0,0)
    HELE BC 7 Bright A_Facetarget
    HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall1",24,0,-10,0,0)
    HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall1",24,0,-5,0,0)
    HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall1",24,0,0,0,0)
    HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall1",24,0,5,0,0)
    HELE D 7 Bright A_CustomMissile("CBElemHellStaffBall1",24,0,10,0,0)
	Goto See
  HellStaffHoming:
	HELE EF 7 A_FaceTarget
	HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall2",24,0,-20)
	HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall2",24,0,20)
	HELE G 7 Bright A_CustomMissile("CBElemHellStaffBall2",24)
	HELE EF 7 A_FaceTarget
	HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall2",24,0,-20)
	HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall2",24,0,20)
	HELE G 7 Bright A_CustomMissile("CBElemHellStaffBall2",24)
	HELE EF 7 A_FaceTarget
	HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall2",24,0,-20)
	HELE D 0 Bright A_CustomMissile("CBElemHellStaffBall2",24,0,20)
	HELE G 7 Bright A_CustomMissile("CBElemHellStaffBall2",24)
	Goto See
  15K:
	TNT1 A 0 A_PlaySound("weapons/charge15k")
	HELE EEEEFF 3 Bright A_FaceTarget
	HELE G 8 Bright A_CustomMissile("CBElemBFG15k", 15, 0, random(-4,4))
	HELE F 4 Bright A_FaceTarget
	HELE G 8 Bright A_CustomMissile("CBElemBFG15k", 15, 0, random(-4,4))
	HELE F 4 Bright A_FaceTarget
	HELE G 8 Bright A_CustomMissile("CBElemBFG15k", 15, 0, random(-4,4))
	HELE F 4 Bright A_FaceTarget
	HELE G 8 Bright A_CustomMissile("CBElemBFG15k", 15, 0, random(-4,4))
	HELE F 4 Bright A_FaceTarget
	Goto See
  BFG:
	TNT1 A 0 A_PlaySound("weapons/bfgf")
	HELE E 15 A_FaceTarget
	HELE F 10 Bright A_FaceTarget
	HELE G 10 Bright A_CustomMissile("CBElemRedBFGBall",24)
	HELE FE 15 A_FaceTarget
	Goto See
  Demontech10k:
	TNT1 A 0 A_PlaySound("Cardinal/9k")
	HELE E 20 A_FaceTarget
	HELE F 15 Bright A_FaceTarget
	HELE G 10 Bright A_CustomMissile("CBElemDTBFG10kBall",15)
	HELE FE 15 A_FaceTarget
	Goto See
  Melee:
    HELE ABD 5 Bright A_Facetarget
    HELE C 5 Bright A_MeleeAttack
    Goto See
  Pain:
	TNT1 A 0 A_JumpIfHealthLower(250,"PainSuicide")
    HELE H 3
    HELE H 3 A_Pain
    HELE H 6
	TNT1 A 0 A_Jump(128,"Missile")
    Goto See
  PainSuicide:
	TNT1 A 0 A_JumpIfCloser(1250,1)
	Goto Pain+2
	TNT1 A 0 A_Jump(18,"See")
	TNT1 A 0 A_StopSound
	TNT1 A 0 A_ChangeFlag(NOPAIN,1)
	TNT1 A 0 A_ChangeFlag(NOTARGET,1)
	TNT1 A 0 A_SpawnItem("BombFireSpawner",0,0,0,0)
	HELE E 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItem("BombFireSpawner",0,0,0,0)
	HELE E 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItem("BombFireSpawner",0,0,0,0)
	HELE F 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItem("BombFireSpawner",0,0,0,0)
	HELE F 2 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItem("BombFireSpawner",0,0,0,0)
	TNT1 A 0 A_CustomMissile("CBElemSuicide",0,0,0,0) 
	HELE G 2 Bright A_Die("Suicide")
	Stop
  Death:
    HELE I 5 Bright A_Scream
	TNT1 AAAA 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, random(20,40), 0, 0, 0, 0, 128)  
	TNT1 AAAA 0 A_CustomMissile("SmokeFX", random(20,40), 0, random(0,360), 2, random(0,360))
	TNT1 AAAAAAA 0 A_CustomMissile("Kaboom18", random(20,40), 0, random(0,360), 2, random(0,360))	
    HELE JKL 5 Bright
    HELE M 5 Bright A_NoBlocking
    HELE M 0 Bright A_SpawnItemEx("HS",36,36)
    HELE M 0 Bright A_SpawnItemEx("HS",-36,36)
    HELE M 0 Bright A_SpawnItemEx("HS",-36,-36)
    HELE M 0 Bright A_SpawnItemEx("HS",36,-36)
    HELE NOP 5 Bright
    HELE QRSTU 5
    HELE V -1 A_SetFloorClip
    Stop
  Death.Suicide:
	TNT1 A 0
	TNT1 A 100 A_NoBlocking
	Stop
  }
}

ACTOR CBElemSuicide : BombSuicide
{
Speed 35
DeathSound "CBElem/Death"
States
{
Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("CBElem/Charge",7)
	TNT1 A 0 A_SeekerMissile(10,0)
	HELE GG 1 Bright A_SpawnItem("BombFireSpawner",0,0,0,0)
	TNT1 A 0 A_PlaySoundEx("bomb/suiciderush","Voice",1)	
    Goto Spawn+2
Death:
	TNT1 A 0 A_Die
Explode:
	TNT1 A 0 A_ChangeFlag(NOBLOCKMAP,1)
	TNT1 A 0 A_Explode
	TNT1 A 0 A_StopSoundEx("Voice")
	TNT1 A 0 A_PlaySound("bomb/explode")
	HELE I 5 Bright
	TNT1 AAAA 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, random(20,40), 0, 0, 0, 0, 128)  
	TNT1 AAAA 0 A_CustomMissile("SmokeFX", random(20,40), 0, random(0,360), 2, random(0,360))
	TNT1 AAAAAAA 0 A_CustomMissile("Kaboom18", random(20,40), 0, random(0,360), 2, random(0,360))	
    HELE JKL 5 Bright
    HELE M 5 Bright A_Gravity
    HELE M 0 Bright A_SpawnItemEx("HS",36,36)
    HELE M 0 Bright A_SpawnItemEx("HS",-36,36)
    HELE M 0 Bright A_SpawnItemEx("HS",-36,-36)
    HELE M 0 Bright A_SpawnItemEx("HS",36,-36)
    HELE NOP 5 Bright
    HELE QRSTU 5
    HELE V -1 A_SetFloorClip
	Stop
    } 
}

ACTOR CBElemRedBFGBall : SentientBFG9500Ball
{
DamageType "BombBreath"
Species "EleSouls"
Obituary "%o was blown away by a Cerebral Redeemer." 
}

ACTOR CBElemBFG15k : CBCacoBFG15K
{
Damagetype "BombBreath"
Species "EleSouls"
}

ACTOR CBElemDTBFG10kBall : ZombieDTBFG10KBall
{
Species "EleSouls"
Obituary "%o was blown away by a Cerebral Redeemer." 
}

ACTOR CBElemHellStaffBall1 : CacoHellStaffBall1
{
  Species "EleSouls"
  DamageType "BombBreath"
}

ACTOR CBElemHellStaffBall2 : CacoHellStaffBall2
{
  Species "EleSouls"
  DamageType "BombBreath"
}

Actor CBElemBall : CacodemonBall
{
  Damage 6
  Speed 25
  Alpha 0.80
  +ThruGhost
  +ForceXYBillboard
  SeeSound "HSphere/Tele"
  DeathSound "HSphere/Sight"
  Decal "CacoScorch"
  States
  {
  Spawn:
	HEF0 AAA 0 A_SpawnItemEx("CBElemBallTrail", Random(-6, 6), 0, Random(-6, 6), 0, 0, 0, 0, 160)
    HEF0 A 1 Bright
	HEF0 AAA 0 A_SpawnItemEx("CBElemBallTrail", Random(-6, 6), 0, Random(-6, 6), 0, 0, 0, 0, 160)
	HEF0 A 1 Bright
	HEF0 AAA 0 A_SpawnItemEx("CBElemBallTrail", Random(-6, 6), 0, Random(-6, 6), 0, 0, 0, 0, 160)
	HEF0 A 1 Bright
	HEF0 AAA 0 A_SpawnItemEx("CBElemBallTrail", Random(-6, 6), 0, Random(-6, 6), 0, 0, 0, 0, 160)
	HEF0 A 1 Bright
	HEF0 AAA 0 A_SpawnItemEx("CBElemBallTrail", Random(-6, 6), 0, Random(-6, 6), 0, 0, 0, 0, 160)
	HEF0 B 1 Bright
	HEF0 AAA 0 A_SpawnItemEx("CBElemBallTrail", Random(-6, 6), 0, Random(-6, 6), 0, 0, 0, 0, 160)
	HEF0 B 1 Bright
	HEF0 AAA 0 A_SpawnItemEx("CBElemBallTrail", Random(-6, 6), 0, Random(-6, 6), 0, 0, 0, 0, 160)
	HEF0 B 1 Bright
	HEF0 AAA 0 A_SpawnItemEx("CBElemBallTrail", Random(-6, 6), 0, Random(-6, 6), 0, 0, 0, 0, 160)
	HEF0 B 1 Bright
    Loop
  Death:
    HEF0 CDEEFGH 3 bright
    Stop
  }
}

actor CBElemBallTrail : ImpballTrail
{
  Radius 2
  Height 2
  Scale 0.4
  Renderstyle Add
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    TNT1 A 1
    ZAP9 C 0 A_Jump(255, "Puff1", "Puff2", "Puff3", "Puff4")
  Puff1:
    ZAP9 C 1 Bright A_FadeOut(0.1)
    Loop
  Puff2:
    ZAP9 D 1 Bright A_FadeOut(0.1)
    Loop
  Puff3:
    ZAP9 E 1 Bright A_FadeOut(0.1)
    Loop
  Puff4:
    ZAP9 F 1 Bright A_FadeOut(0.1)
    Loop
  }
}

ACTOR HS
{
  Health 35
  Radius 24
  Height 48
  Mass 3000
  Speed 20
  Obituary "%o was blown apart by a Hades Sphere."
  Monster
  SeeSound "HSphere/Sight"
  DeathSound "HSphere/Explode"
  Species "EleSouls"
  MeleeRange 80
  +LOOKALLAROUND
  +DONTHURTSPECIES
  +DONTGIB
  +NOTARGET
  +NOGRAVITY
  +FLOAT
  +DONTFALL
  +NOICEDEATH
  States
  {
  Spawn:
    TNT1 A 1 Bright A_Look
    Loop
  See:
    HADE EFGH 4 Bright
  SeeLoop:
	TNT1 A 0 A_Playsound("HSphere/Active")
    HADE AABBCCDD 2 Bright A_Chase
    TNT1 A 0 A_Jump(16, "TeleportOut")
    Loop
  TeleportOut:
    TNT1 A 0 A_UnSetSolid
    TNT1 A 0 A_UnSetShootable
    HADE H 3 Bright A_Playsound("HSphere/Tele")
    HADE GFEIJKL 2 Bright
  SeeTeleport:
    TNT1 AAAAAAAAAAA 1 A_Chase(0)
    TNT1 A 0 A_Jump(96, "TeleportIn")
    Loop
  TeleportIn:
    HADE L 2 Bright A_Playsound("HSphere/Tele")
    HADE KJIEFG 2 Bright
    TNT1 A 0 A_SetShootable
    TNT1 A 0 A_SetSolid
    Goto SeeLoop
  Melee:
    TNT1 A 0 A_SetInvulnerable
    TNT1 A 0 A_UnSetInvulnerable
    TNT1 A 0 A_SetShootable
    TNT1 A 0 A_Die
    Stop
  Death:
    TNT1 A 0 A_NoBlocking
	TNT1 A 0 A_SetTranslucent(0.9, 1)
	TNT1 A 0 A_Scream
	TNT1 AAA 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, random(15,35), 0, 0, 0, 0, 128)  
	TNT1 AAA 0 A_CustomMissile("SmokeFX", random(15,35), 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("Kaboom18",random(15,35),0,random(0,360),2,random(0,360))	
	HADE M 4 Bright A_Explode(112, 112)
    HADE NOPQ 5 Bright
    Stop
  }
}

ACTOR HS_SpecialChase : CustomInventory
{
  States
  {
  Pickup:
    TNT1 A 0 A_CheckFlag("SKULLFLY", "ThrustChase")
    TNT1 A 0 A_Chase
    Stop
  ThrustChase:
    TNT1 A 0 A_Chase("", "")
    Stop
  }
}