ACTOR PhaseAnnihilatorImp : AnnihilatorImp
{
  Health 650
  BloodColor Purple
  DamageFactor 0.65
  DropItem "LifeEssence" 256
  DropItem "ArmorBonusMax" 256
  DropItem "BossLifeEssence" 128 25
  DropItem "BossArmorBonusMax" 128 1
  DropItem "DemonAmmo" 192 50
  DropItem "DemonAmmoBox" 64 100
  DropItem "Demon Tech Rifle" 128 1
  DropItem "CommanderExpMinigunUpgrade" 60 1
  Obituary "%o was phased out by a Phase Annihilator Imp."
  HitObituary "%o was smacked by a Phase Annihilator Imp's cannon."
  Tag "\ctPhase Annihilator Imp\c-"
  States
  {
  Spawn:
    1AMP A 10 A_Look
	1AMI A 10 A_Look
    Loop
  See:
	TNT1 A 0 A_Jump(87,"Rush","Phase")
	TNT1 A 0 A_ChangeFlag(NoDropOff,1)
    1AMP AABB 3 A_Chase
	TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
	1AMP CCDD 3 A_Chase
	TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
    Loop
  Phase:
    TNT1 A 0 A_PlaySound("phaseimp/teleport")
    1AMP D 2 A_FaceTarget
    1AMP D 1 A_SetTranslucent(0.75)
    1AMP D 1 A_SetTranslucent(0.55)
    1AMP D 1 A_SetTranslucent(0.35)
	1AMP D 1 A_SetTranslucent(0.15)
    Goto Phased
  UnPhase:
    TNT1 A 0 A_PlaySound("phaseimp/teleport")
	1AMP D 1 A_SetTranslucent(0.15)
    1AMP D 1 A_SetTranslucent(0.35)
    1AMP D 1 A_SetTranslucent(0.55)
    1AMP D 1 A_SetTranslucent(0.75)
    TNT1 A 0 A_SetTranslucent(1)
    1AMP D 2 A_FaceTarget		
    Goto See
  Phased:
    1AMP AABBCCDDAABBCCDDAABBCCDDAABBCCDD 1 A_ExtChase(0,0)
    1AMP AABBCCDDAABBCCDD 1 A_Chase
	TNT1 A 0 A_Jump(24,"UnPhase")
    Goto Phased+32
  Rush:
	1AMP A 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("PhaseAnnihilatorImpGhostA",0,0,0,0,0,0,0,128)
	1AMP A 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("PhaseAnnihilatorImpGhostA",0,0,0,0,0,0,0,128)
	1AMP A 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("PhaseAnnihilatorImpGhostB",0,0,0,0,0,0,0,128)
	1AMP B 2 A_Chase
	TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("PhaseAnnihilatorImpGhostB",0,0,0,0,0,0,0,128)
	1AMP C 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("PhaseAnnihilatorImpGhostC",0,0,0,0,0,0,0,128)
	1AMP C 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("PhaseAnnihilatorImpGhostC",0,0,0,0,0,0,0,128)
	TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
	1AMP D 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("PhaseAnnihilatorImpGhostD",0,0,0,0,0,0,0,128)
	1AMP D 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("PhaseAnnihilatorImpGhostD",0,0,0,0,0,0,0,128)
	TNT1 A 0 A_Jump(87,"See")		
	Loop
  Melee: 
    1AMP EF 5 A_FaceTarget
    1AMP G 4 A_MeleeAttack
	1AMP FE 5 A_FaceTarget
    Goto See 
  Lunge:
	TNT1 A 0 A_JumpIfCloser(300,1)
	Goto See
	TNT1 A 0 A_PlaySound("weapons/fistwiff")
	1AMP EF 7 A_FaceTarget
	TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,1)
	TNT1 A 0 ThrustThingZ(0,25,0,1)
	1AMP G 2 A_Recoil(-30)
	1AMP G 3 A_CustomMissile("PinkyLunge",18,0,0,CMF_AIMDIRECTION)
	1AMP G 6 
	1AMP F 2 A_ScaleVelocity(0.2)
	TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,0)
	1AMP E 1 A_ScaleVelocity(0)
	Goto See
  Missile:
    TNT1 A 0 A_Jump(150,"ARifle","DTech","Rockets")
    TNT1 A 0 A_JumpIfCloser(250,"Lunge")
    TNT1 A 0 A_JumpIfCloser(300,"ASG")
	TNT1 A 0 A_PlaySound("weapons/charge15k")
    1AMP EE 7 A_FaceTarget
    1AMP W 10 BRIGHT A_CustomMissile("PhaseImp15KBall",32,5,Random(2,-2)) 
	1AMP F 5
	1AMP G 6 A_FaceTarget
    1AMP V 10 BRIGHT A_CustomMissile("PhaseImp15KBall",32,-5,Random(2,-2)) 
	1AMP G 5
    Goto See
  ARifle:
    1AMP G 10 A_FaceTarget
	TNT1 A 0 A_PlaySound("sentient/fire")
    TNT1 A 0 A_SpawnItemEx("PurpleShellCasing", 0, -12, 36, Random(2, 6), 0, Random(1, 3), Random(-80, -90), 128)
    1AMP V 2 Bright A_CustomMissile("PhaseImpExplosiveTracer",32,-5,Random(-6,6))
    1AMP G 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("sentient/fire")
    TNT1 A 0 A_SpawnItemEx("PurpleShellCasing", 0, -12, 36, Random(2, 6), 0, Random(1, 3), Random(-80, -90), 128)
    1AMP V 2 Bright A_CustomMissile("PhaseImpExplosiveTracer",32,-5,Random(-6,6))
    1AMP G 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("sentient/fire")
    TNT1 A 0 A_SpawnItemEx("PurpleShellCasing", 0, -12, 36, Random(2, 6), 0, Random(1, 3), Random(-80, -90), 128)
    1AMP V 2 Bright A_CustomMissile("PhaseImpExplosiveTracer",32,-5,Random(-6,6))
    1AMP G 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("sentient/fire")
    TNT1 A 0 A_SpawnItemEx("PurpleShellCasing", 0, -12, 36, Random(2, 6), 0, Random(1, 3), Random(-80, -90), 128)
    1AMP V 2 Bright A_CustomMissile("PhaseImpExplosiveTracer",32,-5,Random(-6,6))
    1AMP G 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("sentient/fire")
    TNT1 A 0 A_SpawnItemEx("PurpleShellCasing", 0, -12, 36, Random(2, 6), 0, Random(1, 3), Random(-80, -90), 128)
    1AMP V 2 Bright A_CustomMissile("PhaseImpExplosiveTracer",32,-5,Random(-6,6))
    1AMP G 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("sentient/fire")
    TNT1 A 0 A_SpawnItemEx("PurpleShellCasing", 0, -12, 36, Random(2, 6), 0, Random(1, 3), Random(-80, -90), 128)
    1AMP V 2 Bright A_CustomMissile("PhaseImpExplosiveTracer",32,-5,Random(-6,6))
    1AMP G 10 A_FaceTarget
	TNT1 A 0 A_Jump(64,"Pause2")
    TNT1 A 0 A_CPosRefire
    Goto ARifle+1
  ASG:
    1AMP E 8 A_FaceTarget
	1AMP E 10 A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("PurpleShellCasing", 0, -12, 36, Random(2, 6), 0, Random(1, 3), Random(80, 90), 128)
	TNT1 AAA 0 A_CustomMissile("PhaseImpExplosiveTracer",32,5,Random(-7,7))
	1AMP W 2 Bright A_PlaySoundEx("weapons/ExplosiveSG/fire","Weapon")
    TNT1 A 0 A_Jump(64,"Pause")
    TNT1 A 0 A_SpidRefire
	Goto ASG+1
  Rockets:
    TNT1 A 0 A_Jump(128,"Homers")
    1AMP E 6 A_FaceTarget
    1AMP W 6 BRIGHT A_CustomMissile("PhaseImpRocket")
    1AMP E 6 A_FaceTarget
    1AMP W 6 BRIGHT A_CustomMissile("PhaseImpRocket")
	1AMP F 5
	1AMP G 6 A_FaceTarget
    1AMP V 6 BRIGHT A_CustomMissile("PhaseImpRocket")
	1AMP G 6 A_FaceTarget
    1AMP V 6 BRIGHT A_CustomMissile("PhaseImpRocket")
	1AMP G 5
	TNT1 A 0 A_Jump(32,"Homing")
    Goto See
  Homers:
    1AMP E 6 A_FaceTarget
    1AMP W 6 BRIGHT A_CustomMissile("PhaseImpHomer")
    1AMP E 6 A_FaceTarget
    1AMP W 6 BRIGHT A_CustomMissile("PhaseImpHomer")
	1AMP F 15
	1AMP G 6 A_FaceTarget
    1AMP V 6 BRIGHT A_CustomMissile("PhaseImpHomer")
	1AMP G 6 A_FaceTarget
    1AMP V 6 BRIGHT A_CustomMissile("PhaseImpHomer")
	1AMP G 5
    Goto See
  DTech:
    1AMP F 7 A_FaceTarget
	1AMP E 2
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
    1AMP W 4 BRIGHT A_CustomMissile("PhaseDTImpProjectile",32,10,Random(2,-2)) 
	1AMP E 2
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
    1AMP W 4 BRIGHT A_CustomMissile("PhaseDTImpProjectile",32,10,Random(2,-2)) 
	1AMP E 2
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
    1AMP W 4 BRIGHT A_CustomMissile("PhaseDTImpProjectile",32,10,Random(2,-2)) 
	1AMP E 2
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
    1AMP W 4 BRIGHT A_CustomMissile("PhaseDTImpProjectile",32,10,Random(2,-2)) 
	1AMP F 6
	1AMP G 2
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
    1AMP V 4 BRIGHT A_CustomMissile("PhaseDTImpProjectile",32,-10,Random(2,-2)) 
	1AMP G 2
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
    1AMP V 4 BRIGHT A_CustomMissile("PhaseDTImpProjectile",32,-10,Random(2,-2)) 
	1AMP G 2
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
    1AMP V 4 BRIGHT A_CustomMissile("PhaseDTImpProjectile",32,-10,Random(2,-2)) 
	1AMP G 2
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
    1AMP V 4 BRIGHT A_CustomMissile("PhaseDTImpProjectile",32,-10,Random(2,-2)) 
    Goto See
  Pause:
	1AMP E 10
	Goto See
  Pause2:
	1AMP G 10
	Goto See
  Pain:
    1AMP H 2
    1AMP H 2 A_Pain
    TNT1 A 0 A_Jump(80,"missile")
	Goto See
  XDeath:
  Death:
    TNT1 A 0 A_SetTranslucent(1)
    1AMP HHHHHHHH 3 A_SpawnItemEx("RMPurpleParticleSpawner",0,0,32,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,160)
	TNT1 A 0 A_Playsound("weapons/bfg95explode",7)
	TNT1 A 0 A_CustomMissile("PurpleKaboom4", 32, 0, random(0,360), 2, random(0,360))
	TNT1 A 0 A_CustomMissile("PurpleBFGShockwave", 32, 0, random(0,360), 2, random(0,360))
	TNT1 A 0 A_SpawnItemEx("MutantGibbedGenerator")
    1AMP N 2
	TNT1 A 0 A_custommissile("PhaseImpRocketArm2",30,-10,270)
	TNT1 A 0 A_custommissile("PhaseImpRocketArm",30,10,93)
	TNT1 A 0 A_SpawnItemEx("PhaseDemonTechEx",0,0,0,0,0,0,0,128,0)
    1AMP O 2 A_XScream
	1AMP P 2 A_Explode(80,100)
    1AMP Q 2 A_NoBlocking
    1AMP RST 2
    1AMP U -1
	Stop
  Raise:
    TNT1 A 0 A_GiveInventory("DontCountKill",1)
	TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
    1AMP TSRQPON 6
    Goto See
	}
}

ACTOR PhaseImp15KBall : PhaseCyber15KBall
{
FastSpeed 50
-THRUSPECIES
Species "Imps"
DamageType "ImpComet"
}

Actor PhaseImpExplosiveTracer : ManipulatorExplosiveTracer
{
Species "Imps"
DamageType "ImpComet"
States
{
Spawn:
    TPA3 A 1 Bright
	Loop
Death:
	TNT1 A 0
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("CommanderExplosiveEffect")
    CISL B 4 Bright A_Explode(Random(3,6)*5,72)
    CISL CD 3 Bright
    Stop
	}
}

ACTOR PhaseImpRocket : PhaseCyberRocket
{
Speed 22
FastSpeed 26
Species "Imps"
DamageType "ImpComet"
}

ACTOR PhaseImpHomer : PhaseCyberHomer
{
Species "Imps"
DamageType "ImpComet"
}

Actor PhaseDTImpProjectile
{
   Height 4
   Radius 4
   Speed 50
   Damage 10
   Scale 0.06
   PROJECTILE
   +THRUSPECIES
   +FORCERADIUSDMG
   DamageType "ImpComet"
   Species "Imps"
   DeathSound "weapons/demontechex"
   Decal DTRScorch
   States
   {
   Spawn:
	  TNT1 A 0 A_SeekerMissile(12,0)
	  TNT1 A 0
	  TNT1 A 0 A_Jump(128,"Spawn2")
   Normal:
	  TNT1 A 0 A_SeekerMissile(12,0)
   	  TNT1 A 0 A_Jump(128,"NormalFX")
      PTPR A 4 Bright A_SpawnItemEx("PhaseImpDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      Loop
   NormalFX:
      PTPR A 4 Bright A_SpawnItemEx("PhaseImpDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      PTPR A 4 Bright A_SpawnItemEx("PhaseImpDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      Goto Normal
   Spawn2:
	  TNT1 A 0 A_SeekerMissile(12,0)
	  TNT1 A 0 A_Jump(128,"Spawn2FX")
      PTPR A 4 Bright A_SpawnItemEx("PhaseImpDemonTechTrail2",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      Loop
   Spawn2FX:
      PTPR A 4 Bright A_SpawnItemEx("PhaseImpDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      PTPR A 4 Bright A_SpawnItemEx("PhaseImpDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      Goto Spawn2
   Death:
   	  TNT1 A 0
	  TNT1 A 0 A_RadiusGive("phasemindfuck", 64, RGF_PLAYERS)
	  TNT1 A 0 A_SpawnItemEx("PhaseDemonTechEx",0,0,0,0,0,0,0,128,0)
	  TNT1 A 0 A_CustomMissile("Kaboom8", 0, 0, random(0,360), 2, random(0,360))
	  TNT1 A 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
	  TNT1 A 1 Bright A_Explode(20,64)
      Stop
	}
}

ACTOR PhaseDemonTechEx
{
RenderStyle Add
Alpha 0.75
Scale 0.5
PROJECTILE
+NOINTERACTION
+CLIENTSIDEONLY
States
{
Spawn:
PTXP ABCDEFGH 2 Bright A_FadeOut(0.1)
Stop
}
}

ACTOR PhaseImpDemonTechTrail : BFG9500Trail
{
+NOINTERACTION
+CLIENTSIDEONLY
Scale 0.04
Alpha 0.65
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 2
    PTRI AAAAAABBBBBBBB 1 Bright A_FadeOut(0.05)
    Stop
    }
}

ACTOR PhaseImpDemonTechTrail2 : DemonTechTrail
{
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 2
    PTRI AAAAAACCCCCCCC 1 Bright A_FadeOut(0.05)
    Stop
    }
}

//Gore stuff
ACTOR PhaseImpRocketArm
{
	Radius 12
	Height 10
	Speed 4
	+DOOMBOUNCE
	+DROPOFF
	+Missile
      States
	{
	Spawn:
     1IRM ABCD 3
     Loop
	Death:
	 1IRM E -1
	 Loop
	}
} 

ACTOR PhaseImpRocketArm2
{
	Radius 12
	Height 10
	Speed 4
	+DOOMBOUNCE
	+DROPOFF
	+Missile
      States
	{
	Spawn:
     1IR2 ABCD 3
     Loop
	Death:
	 1IR2 E -1
	 Loop
	}
} 

//After images
ACTOR PhaseAnnihilatorImpGhostA
{
Scale 1.05
RENDERSTYLE Translucent
Alpha 0.75
+NOGRAVITY
+CLIENTSIDEONLY
+DONTSPLASH
+NOINTERACTION
+NOCLIP
States
{
Spawn:
    1AMP A 2 A_FadeOut(0.18)
    Loop
    }
}

ACTOR PhaseAnnihilatorImpGhostB : PhaseAnnihilatorImpGhostA
{   
States
{
Spawn:
    1AMP B 2 A_FadeOut(0.18)
    Loop
    }
}

ACTOR PhaseAnnihilatorImpGhostC : PhaseAnnihilatorImpGhostA
{   
States
{
Spawn:
    1AMP C 2 A_FadeOut(0.18)
    Loop
    }
}

ACTOR PhaseAnnihilatorImpGhostD : PhaseAnnihilatorImpGhostA
{   
States
{
Spawn:
    1AMP D 2 A_FadeOut(0.18)
    Loop
    }
}