ACTOR Agathodemon : Cacodemon~
{
  Health 600
  Speed 8
  PainChance 60
  MeleeDamage 7
  DamageFactor "CacoComet", 0.0
  DamageFactor "WeakenerBall", 0.0
  Species "CacoDemon"
  SeeSound "monsters/watchersight"
  PainSound "monsters/watcherpain"
  DeathSound "monsters/watcherdeath"
  ActiveSound "caco/active"
  Obituary "%o was blasted by an Agathodemon."
  HitObituary "%o was caught in an Agathodemon's jaws." 
  DropItem "LifeEssence" 90
  DropItem "ArmorBonusMax" 90
  BloodColor "Red"
  var int user_phased;
  States
  {
  Spawn:
	AGAH A 1 A_Look
	Loop
  See:
	AGAH A 3 A_Chase
	TNT1 A 0 A_Jump(10,"Evade")	
	TNT1 A 0 A_Jump(12,"Phase")		
	Loop
  Evade:
	TNT1 A 0 A_Jump(128,7)
	TNT1 A 0 ThrustThing(Angle*256/360+64,14,0,0)
	AGAH AAAA 3 A_Chase
	TNT1 A 0 A_Stop
	Goto See
	TNT1 A 0 ThrustThing(Angle*256/360+192,14,0,0)	
	AGAH AAAA 3 A_Chase
	TNT1 A 0 A_Stop	
	Goto See
  Phase:
	TNT1 A 0 A_JumpIf(user_phased == 1,"UnPhase")
	TNT1 A 0 A_PlaySound("phaseimp/teleport")
	TNT1 A 0 A_SetUserVar("user_phased",1)
	AGAH A 2 A_FaceTarget
	AGAH A 1 A_SetTranslucent(0.75)
	AGAH A 1 A_SetTranslucent(0.55)
	AGAH A 1 A_SetTranslucent(0.35)
	AGAH A 1 A_SetTranslucent(0.15)
	Goto Phased
  Phased:
	AGAH AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_ExtChase(0,0)
	AGAH A 1 A_Chase
	TNT1 A 0 A_Jump(4,"UnPhase")
	Goto Phased+32
  UnPhase:
	TNT1 A 0 A_PlaySound("phaseimp/teleport")
	TNT1 A 0 A_SetUserVar("user_phased",0)
	AGAH A 1 A_SetTranslucent(0.15)
	AGAH A 1 A_SetTranslucent(0.35)
	AGAH A 1 A_SetTranslucent(0.55)
	AGAH A 1 A_SetTranslucent(0.75)
	TNT1 A 0 A_SetTranslucent(1)
	AGAH A 2 A_FaceTarget		
	Goto See
  Missile:
	TNT1 A 0 A_Jump(128,2)
	TNT1 A 0 A_JumpIfCloser(300,"CloseAttack")
	TNT1 A 0 A_Jump(100,"Homing")
	AGAH BC 6 A_FaceTarget
	AGAH D 2 Bright A_FaceTarget
	AGAH D 1 Bright A_CustomMissile("CBElemBall",24,0,0,0,0)
	TNT1 A 0 Bright A_CustomMissile("CBElemBall",24,0,6,0,0)
	AGAH D 1 Bright A_CustomMissile("CBElemBall",24,0,-6,0,0)
	AGAH CB 4 A_FaceTarget
	TNT1 A 0 A_JumpIf(user_phased == 1,"UnPhase")
	Goto See
  Homing:
    AGAH BC 6 A_FaceTarget
    AGAH D 0 A_CustomMissile("AgathodemonHomingBall",22,0,-30,0)
    AGAH D 8 A_CustomMissile("AgathodemonHomingBall",22,0,30,0)
	AGAH CB 5 A_FaceTarget
	Goto See
  CloseAttack:
    AGAH B 6 A_FaceTarget
    TNT1 A 0 A_PlaySound ("Agathodemon/Attack",7)
    AGAH C 6 A_FaceTarget
    AGAH DDDDDDDDDDDDDDDDDDDD 1 Bright A_CustomMissile("AgathodemonMiniBall",random(10,22),random(-6,6),random(-4,4),CMF_OFFSETPITCH,random(-4,4)) 
    AGAH CB 4 A_FaceTarget
	TNT1 A 0 A_JumpIf(user_phased == 1,"UnPhase")
	Goto See
  Melee:
	AGAH BC 5 A_FaceTarget
	AGAH D 5 A_MeleeAttack
	AGAH CB 5 A_FaceTarget
	Goto See
  Pain:
	AGAH E 6 A_Pain
	AGAH F 6
	Goto See
  Death:
	TNT1 A 0
	TNT1 A 0 A_SetTranslucent(1)
	AGAH G 7 A_Scream
	AGAH H 7 A_NoBlocking
	AGAH I 6
	AGAH J 5
	AGAH K 4
	AGAH L -1
	Stop
  XDeath:
	TNT1 A 0
	TNT1 A 0 A_SetTranslucent(1)
	AGAX A 4 
	AGAX B 3 A_PlaySound("Gore/Splat")
	AGAX C 3 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
	AGAX D 3 A_NoBlocking
	AGAX EFGHI 3
	AGAX J -1
	Stop	
  Raise:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	AGAH KJIHG 4
	Goto See	
	}
}

ACTOR AgathodemonMiniBall
{
  Radius 4
  Height 6
  Speed 20
  FastSpeed 30
  Damage 2
  DeathSound "HSphere/Tele"
  Projectile
  RenderStyle Add
  Scale 0.5
  Damagetype "CacoComet"
  States
  {
  Spawn:
    HEF0 AB 3 bright
    Loop
  Death:
    HEF0 CDEFGH 3 bright
    Stop
  }
}

ACTOR AgathodemonHomingBall : CacodemonBall
{
  +SEEKERMISSILE
  Speed 15
  Damage 6
  Damagetype "CacoComet"
  States
  {
  Spawn:
	TNT1 A 0 A_Tracer2
	AGFB AAAA 1 Bright A_SpawnItemEx("AgathoBallTrail")
	TNT1 A 0 A_Tracer2
	AGFB BBBB 1 Bright A_SpawnItemEx("AgathoBallTrail")
	TNT1 A 0 A_Tracer2
	AGFB CCCC 1 Bright A_SpawnItemEx("AgathoBallTrail")
	Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("KaboomRed", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
    AGFB DEFG 4 Bright
    Stop
  }
}

ACTOR AgathoBallTrail : BFG9500Trail
{
Scale 1
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 1
    AGFT ABCDEF 1 A_FadeOut(0.1)
	Stop
    }
}