Actor CerebralImp 17570
{
//$Category Monsters/DUST
//$Sprite CIM0A1
//$Title "Cerebral Imp"
  obituary "%o was struck down by a Cerebral Imp."
  hitobituary "%o was torn to unrecognizable shreds by a Cerebral Imp."
  health 350
  radius 20
  height 56
  mass 100
  speed 9
  Scale 1.25
  painchance 80
  PainChance "SoulToxic", 60
  PainChance "FatFlamer", 60
  PainChance "FiendFire", 60
  DamageFactor "ImpComet", 0.0
  DropItem "BossLifeEssence" 120
  DropItem "BossArmorBonusMax" 120
  DropItem "DemonAmmo" 160
  DropItem "DemonAmmo" 160
  Tag "Cerebral Imp"
  Species "Imps"
  seesound "CBImp/Sight"
  painsound "CBImp/Pain"
  deathsound "CBImp/Death"
  activesound "CBImp/Active"
  MeleeSound "imps/melee"
  MONSTER
  +FLOORCLIP
  +MissileMore
  +QUICKTORETALIATE
  +DontHurtSpecies
  states
  {
  Spawn:
    CIM0 A 5 A_Look
    loop
  See:
  	TNT1 A 0 A_Jump(46,"Evade")
    CIM0 AABB 3 A_Chase
	TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
	CIM0 CCDD 3 A_Chase
	TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
    loop
  Evade:
	TNT1 A 0 A_Jump(128,7)
	TNT1 A 0 ThrustThing(Angle*256/360+64,16,0,0)
	CIM0 AAAA 3 A_Chase
	TNT1 A 0 A_Stop
	Goto See
	TNT1 A 0 ThrustThing(Angle*256/360+192,16,0,0)
	CIM0 AAAA 3 A_Chase
	TNT1 A 0 A_Stop
	TNT1 A 0 A_JumpIfTargetInLOS("Missile")
	Goto See
  Melee: 
    CIM0 EF 5 A_FaceTarget
    CIM0 G 4 A_CustomMeleeAttack(40,"imps/melee")
	CIM0 FE 5 A_FaceTarget
    Goto See 
  Missile:
	CIM0 E 0 A_JumpIfCloser(200,"CloseFire")
    CIM0 E 0 A_Jump(200,"GreenLightning","RedFireball")
    CIM0 E 0 A_Jump(256,"BFG15K")
    Goto See
  CloseFire:
	TNT1 A 0 A_PlaySound("magma/firebreath")
    CIM0 IJ 6 A_FaceTarget
    CIM0 KKK 2 A_CustomMissile ("CerebralImpFire", 34, 0, random(-6,6))
	TNT1 A 0 A_FaceTarget
    CIM0 KKK 2 A_CustomMissile ("CerebralImpFire", 34, 0, random(-6,6))
	TNT1 A 0 A_FaceTarget
    CIM0 KKK 2 A_CustomMissile ("CerebralImpFire", 34, 0, random(-6,6))
	TNT1 A 0 A_FaceTarget
    CIM0 KKK 2 A_CustomMissile ("CerebralImpFire", 34, 0, random(-6,6))
	TNT1 A 0 A_FaceTarget
    CIM0 KKK 2 A_CustomMissile ("CerebralImpFire", 34, 0, random(-6,6))
	TNT1 A 0 A_FaceTarget
	CIM0 JI 6 A_FaceTarget
	Goto See
  GreenLightning:
    CIM0 EF 8 A_FaceTarget
    CIM0 G 6 A_CustomMissile ("ChaosLightning", 34, 0, 0)
    CIM0 FEF 6 A_FaceTarget
    CIM0 G 6 A_CustomMissile ("ChaosLightning", 34, 0, 0)
    Goto See
  RedFireball:
    CIM0 IJ 8 A_FaceTarget
    CIM0 K 6 A_CustomMissile ("CerebralImpFireball", 34, 0, 0)
    CIM0 JIJ 8 A_FaceTarget
    CIM0 K 6 A_CustomMissile ("CerebralImpFireball", 34, 0, 0)
    Goto See
  BFG15K:
	TNT1 A 0 A_PlaySound("weapons/charge15k")
	TNT1 A 0 A_FaceTarget
    CIM0 III 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 III 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 III 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 III 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 III 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 III 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 III 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 JJJ 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 JJJ 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 JJJ 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 JJJ 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 JJJ 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_FaceTarget
    CIM0 K 20 A_CustomMissile ("CBImpBFG15K", 34, 0, 0)
    CIM0 JI 12
    Goto See
  Pain:
    CIM0 H 2 
    CIM0 H 2 A_Pain
    goto See
  Death:
	TNT1 A 0 A_Jump(100,"XDeath")
    CIM0 L 8 A_Scream
    CIM0 MN 6
    CIM0 O 6 A_Fall
    CIM0 P -1
    Stop
  XDeath:
	TNT1 A 0 A_PlaySound("CerebralImp/ChargeDeath")
	TNT1 A 0 A_FaceTarget
    CIM0 HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 1 A_SpawnItem("CerebralImpSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_Playsound("weapons/bfg95explode",7)
	TNT1 A 0 A_SpawnItemEx("BFGShockwaveRed", 0, 0, 32, 0, 0, 0, 0, 128)
    TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 32, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom14", 32, 0, random(0,360), 2, random(0,360))
    CIM0 Q 3 A_Explode
	CIM0 R 3 A_XScream
	CIM0 S 3 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
	CIM0 T 3 A_Fall
	CIM0 UVW 3
	CIM0 X -1
    Stop
  Raise:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	CIM0 PONML 6
	Goto See
  }
}

ACTOR CerebralImpSmokeSpawner : RedParticleSpawner
{
  States
  {
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    TNT1 A 0 A_SpawnItemEx("CerebralImpFireBallFX",random(-30,30),random(-30,30),random(5,45),0,0,1)
    TNT1 A 1
    Stop
  }
}


ACTOR CerebralImpFire : PoisonSoulCloud
{ 
    Radius 10
    Height 10
	Scale 0.35
	Speed 15
	DamageType "ImpComet"
	PROJECTILE
	-THRUSPECIES
	-THRUACTORS
	-SKYEXPLODE
	Decal Scorch
    States 
    { 
    Spawn: 
        FRR1 LKJIHGFEDCB 2 Bright A_Explode(4,68) 
	Death:
		FRR1 AA 2 Bright A_FadeOut(0.25)
	    Stop
	} 
}

actor CerebralImpFireBall
{
	Damagetype "ImpComet"
    Radius 8
    Height 6
    Speed 30
    Damage 6
    PROJECTILE
    RENDERSTYLE ADD
    ALPHA 0.67
	Scale 1.2
    SeeSound "monsters/newfireshoot"
    DeathSound "monsters/newfireexplode"
	+SEEKERMISSILE
    Decal DoomImpScorch
    States
    {
    Spawn:
        IBAL FFFF 1 Bright A_SpawnItemEx ("CerebralImpFireBallFX", 0, 0, 0, random(0, -4), random(-2, 2), random(-2, 2), 0, 0, 0)
		TNT1 A 0 A_SeekerMissile(4,8)
        IBAL GGGG 1 Bright A_SpawnItemEx ("CerebralImpFireBallFX", 0, 0, 0, random(0, -4), random(-2, 2), random(-2, 2), 0, 0, 0)
		TNT1 A 0 A_SeekerMissile(4,8)
        Loop
    Death:
		TNT1 A 0 A_Explode(20,80)
		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))
		TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
        IBAL HIJ 4 Bright
        Stop
    }
}

ACTOR CerebralImpFireBallFX
{
   Radius 2
   Height 4
   Speed 2
   Projectile
   RenderStyle Add
   Alpha 1
   Scale 0.35
   +NOINTERACTION
   +FORCEXYBILLBOARD
   +CLIENTSIDEONLY
   States
   {
   Spawn:
      TNT1 A 2
      FRR1 ABCDEFGHIJKL 1 Bright A_ChangeVelocity(0,0,1)
      stop
   }
}

ACTOR CBImpBFG15K : CBCacoBFG15K
{
DamageType "ImpComet"
Species "Imp"
}