ACTOR PurpleImp : Imp 24105
{
    Health 1000
    Speed 10
    PainChance 25
	+QUICKTORETALIATE
	BloodColor "cf 00 b0"
	DropItem "LifeEssence" 125
	DropItem "ArmorBonusMax" 125
	DropItem "DemonAmmo" 128 60
    SeeSound "phaseimp/sight"
    PainSound "phaseimp/pain"
    DeathSound "phaseimp/death"
    ActiveSound "phaseimp/active"
    Obituary "%o was pierced by a Phase Imp."
    HitObituary "%o was lacerated by a Phase Imp."
	Tag "\c[j8]Void Phase Imp\c-"
    States
    {
    Spawn:
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpAspawner",0,0,0,0,0,0,0,0)
		
        DIMP A 1 A_Look
        Loop
    See:
		TNT1 A 0 A_Jump(46,"Evade")
		
		TNT1 AA 0 A_SpawnItemEx("VoidPhaseImpAspawner",0,0,0,0,0,0,0,0)
		TNT1 AA 0 A_SpawnItemEx("VoidPhaseImpBspawner",0,0,0,0,0,0,0,0)
		
		DIMP AABB 1 A_Chase
		
		TNT1 AA 0 A_SpawnItemEx("VoidPhaseImpCspawner",0,0,0,0,0,0,0,0)
		TNT1 AA 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		
		DIMP CCDD 1 A_Chase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		
		TNT1 A 0 A_Jump(12,"Teleport")
		TNT1 A 0 A_Jump(46,"Phase")		
        Loop
	Teleport:
		    DIMP AEFG 1 Bright A_UnSetShootable
			DIMP AAAA 0 A_SpawnItem("VoidPhaseImpTelSpawner",0,0,0,0)
			DIMP AAAAAAAAAA 1  A_FadeOut(0.1,0)
			DIMP A 2 
			DIMP AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
			DIMP AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
			DIMP A 1 A_PlayWeaponSound("boss/teleport")
			DIMP AAAA 0 A_SpawnItem("VoidPhaseImpTelSpawner",0,0,0,0)
			DIMP AAAAAAAAAA 1 A_FadeIn(0.1)
			DIMP A 1 Bright A_SetShootable
			Goto See		
    Evade:
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpAspawner",0,0,0,0,0,0,0,0)
		
		TNT1 A 0 A_Jump(128,7)
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpAspawner",0,0,0,0,0,0,0,0)
		
		TNT1 A 0 ThrustThing(Angle*256/360+64,16,0,0)
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpAspawner",0,0,0,0,0,0,0,0)
		
		DIMP AAAA 3 A_Chase
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpAspawner",0,0,0,0,0,0,0,0)
		
		TNT1 A 0 A_Stop
		Goto See
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpAspawner",0,0,0,0,0,0,0,0)
		
		TNT1 A 0 ThrustThing(Angle*256/360+192,16,0,0)
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpAspawner",0,0,0,0,0,0,0,0)
		
		DIMP AAAA 3 A_Chase
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpAspawner",0,0,0,0,0,0,0,0)
		
		TNT1 A 0 A_Stop
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpAspawner",0,0,0,0,0,0,0,0)
		
		Goto See
	Phased:
        DIMP AABBCCDDAABBCCDDAABBCCDDAABBCCDD 1 A_ExtChase(0,0)
        DIMP AABBCCDDAABBCCDD 1 A_Chase
		TNT1 A 0 A_Jump(24,"UnPhase")
        Goto Phased+32
    Melee:
        TNT1 A 0 A_SetTranslucent(1)
        DIMP EF 5 A_FaceTarget
        DIMP G 5 A_MeleeAttack
        DIMP FE 5 A_FaceTarget		
        Goto See
    Missile:
		TNT1 A 0 A_Jump(256,"NormalPhase","PhaseBaronBall","PhaseLazer","Comet")
        Goto See
	NormalPhase:
		TNT1 A 0 A_SetTranslucent(1)
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpEspawner",0,0,0,0,0,0,0,0)
        DIMP E 2 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpFspawner",0,0,0,0,0,0,0,0)
		DIMP F 2 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
		
		TNT1 A 0 A_CustomMissile("PhaseImpBall2", 32, 0, -30)
		TNT1 A 0 A_CustomMissile("PhaseImpBall2", 32, 0, -20)
		TNT1 A 0 A_CustomMissile("PhaseImpBall2", 32, 0, -10)
		
		TNT1 A 0 A_CustomMissile("PhaseImpBall2", 32, 0, 10)
		TNT1 A 0 A_CustomMissile("PhaseImpBall2", 32, 0, 20)
		TNT1 A 0 A_CustomMissile("PhaseImpBall2", 32, 0, 30)
		
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpGspawner",0,0,0,0,0,0,0,0)
        DIMP G 3 Bright A_CustomMissile("PhaseImpBall2", 32, 0, 0)
		DIMP FE 2
        Goto See
	PhaseBaronBall:
		TNT1 A 0 A_SetTranslucent(1)
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpEspawner",0,0,0,0,0,0,0,0)
        DIMP E 2 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpFspawner",0,0,0,0,0,0,0,0)
		DIMP F 2 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
		
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 185)
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
         DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 180)
		 TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		 DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 175)
		 TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, -85)
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
         DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, -90)
		 TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		 DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, -95)
		 TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 85)
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
         DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 90)
		 TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		 DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 95)
		 TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		 
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		 DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 5)
		 TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
         DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		 TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		 DIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, -5)
		 TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
		
		DIMP FE 2
        Goto See
	Comet:
		TNT1 A 0 A_SetTranslucent(1)
        TNT1 A 0 A_SpawnItemEx("VoidPhaseImpEspawner",0,0,0,0,0,0,0,0)
        DIMP E 3 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpFspawner",0,0,0,0,0,0,0,0)
		DIMP F 3 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpDspawner",0,0,0,0,0,0,0,0)
        DIMP G 5 Bright A_CustomMissile("PhaseImpComet", 32, 0, 0)
		DIMP FE 4
        Goto See
	PhaseLazer:
		TNT1 A 0 A_SetTranslucent(1)
       	TNT1 A 0 A_SpawnItemEx("VoidPhaseImpEspawner",0,0,0,0,0,0,0,0)
        DIMP E 3 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("VoidPhaseImpFspawner",0,0,0,0,0,0,0,0)
		DIMP F 3 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
		
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, 180)
		
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, -160)
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, 160)
		
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, -140)
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, 140)
		
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, -120)
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, 120)
		
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, -100)
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, 100)
		
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, -80)
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, 80)
		
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, -60)
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, 60)
		
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, -40)
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, 40)
		
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, -20)
		TNT1 A 0 A_CustomMissile("PhazoLaser",32, 0, 20)
		
        DIMP G 5 Bright A_CustomMissile("PhazoLaser", 32, 0, 0)
		
		
		DIMP FE 4
        Goto See
	Phase:
        TNT1 A 0 A_PlaySound("phaseimp/teleport")
        DIMP E 2 A_FaceTarget
        DIMP E 1 A_SetTranslucent(0.75)
        DIMP E 1 A_SetTranslucent(0.55)
        DIMP E 1 A_SetTranslucent(0.35)
		DIMP E 1 A_SetTranslucent(0.15)
        Goto Phased
	UnPhase:
        TNT1 A 0 A_PlaySound("phaseimp/teleport")
		DIMP E 1 A_SetTranslucent(0.15)
        DIMP E 1 A_SetTranslucent(0.35)
        DIMP E 1 A_SetTranslucent(0.55)
        DIMP E 1 A_SetTranslucent(0.75)
		TNT1 A 0 A_SetTranslucent(1)
        DIMP E 2 A_FaceTarget		
        Goto See
    Pain:
		
        DIMP H 2 A_SetTranslucent(1)
		TNT1 A 0 A_SpawnItemEx("PHellionSmokeSpawner")
        DIMP H 2 A_Pain
        Goto See
    Death:
        DIMP I 8 A_SetTranslucent(1)
        DIMP J 8 A_Scream
        DIMP K 6
        DIMP L 6 A_Fall
        DIMP M -1
        Stop
    XDeath:
		TNT1 A 0 A_SetTranslucent(1)
		PIKI N 3 
		PIKI O 3 A_XScream
		PIKI P 3 A_SpawnItemEx("MutantGibbedGenerator",0,0,0,0,0,0,0,128,0)
		PIKI Q 3 A_Fall
		PIKI RST 3
		PIKI U -1
        Stop
    Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
        PIKI TSRQPON 5
        Goto See
		}
}

ACTOR PhaseImpBall2 : PhaseImpBall
{
-SEEKERMISSILE
}

ACTOR PhaseImpComet : PArchonComet
{
scale 0.75
States
{
Spawn: 
      LRCB AAAABBBBCCCC 1 Bright A_SpawnItem("PhaseImpCometTrail",0,0)
      loop
Death:
      LRCB J 0 Bright A_SetTranslucent (0.67,1)
      LRCB J 3 Bright
      LRCB K 3 Bright A_Explode(28,128,0)
      LRCB LMN 3 Bright
      stop
}
}

Actor PhaseImpCometTrail : PArchonCometTrail
{
scale 0.75
}

actor VoidPhaseImpAspawner
{
  +nointeraction
  +clientsideonly
  scale 1.2
  renderstyle translucent
  alpha 0.5
  states
  {
  spawn:
    TNT1 A 0
	TNT1 A 0 a_spawnitemex("VoidPhaseImpA", 0, 0, -20, random(3, -3)*0.5, random(3, -3)*0.5, random(6, 13)*0.5)
	stop
  }
}

actor VoidPhaseImpA : VoidPhaseImpAspawner
{
  states
  {
  spawn:
    TNT1 A 8
	DIMP A 1 a_fadeout(0.1)
	goto spawn+1
  }
}

actor VoidPhaseImpBspawner
{
  +nointeraction
  +clientsideonly
  scale 1.2
  alpha 0.5
  states
  {
  spawn:
    TNT1 A 0
	TNT1 A 0 a_spawnitemex("VoidPhaseImpB", 0, 0, -20, random(3, -3)*0.5, random(3, -3)*0.5, random(6, 13)*0.5)
	stop
  }
}

actor VoidPhaseImpB : VoidPhaseImpBspawner
{
  states
  {
  spawn:
    TNT1 A 8
	DIMP B 1 a_fadeout(0.1)
	goto spawn+1
  }
}

actor VoidPhaseImpCspawner
{
  +nointeraction
  +clientsideonly
  scale 1.2
  alpha 0.5
  states
  {
  spawn:
    TNT1 A 0
	TNT1 A 0 a_spawnitemex("VoidPhaseImpC", 0, 0, -20, random(3, -3)*0.5, random(3, -3)*0.5, random(6, 13)*0.5)
	stop
  }
}

actor VoidPhaseImpC : VoidPhaseImpCspawner
{
  states
  {
  spawn:
    TNT1 A 8
	DIMP C 1 a_fadeout(0.1)
	goto spawn+1
  }
}

actor VoidPhaseImpDspawner
{
  +nointeraction
  +clientsideonly
  scale 1.2
  alpha 0.5
  states
  {
  spawn:
    TNT1 A 0
	TNT1 A 0 a_spawnitemex("VoidPhaseImpD", 0, 0, -20, random(3, -3)*0.5, random(3, -3)*0.5, random(6, 13)*0.5)
	stop
  }
}

actor VoidPhaseImpD : VoidPhaseImpDspawner
{
  states
  {
  spawn:
    TNT1 A 8
	DIMP D 1 a_fadeout(0.1)
	goto spawn+1
  }
}

actor VoidPhaseSpawnspawner
{
  +nointeraction
  +clientsideonly
  scale 1.2
  alpha 0.5
  states
  {
  spawn:
    TNT1 A 0
	TNT1 A 0 a_spawnitemex("VoidPhaseImpC", 0, 0, -20, random(3, -3)*0.5, random(3, -3)*0.5, random(6, 13)*0.5)
	stop
  }
}

actor VoidPhaseSpawn : VoidPhaseSpawnspawner
{
  states
  {
  spawn:
    TNT1 A 8
	DIMI A 1 a_fadeout(0.1)
	goto spawn+1
  }
}

actor VoidPhaseImpEspawner
{
  +nointeraction
  +clientsideonly
  scale 1.2
  renderstyle translucent
  alpha 0.5
  states
  {
  spawn:
    TNT1 A 0
	TNT1 A 0 a_spawnitemex("VoidPhaseImpE", 0, 0, -20, random(3, -3)*0.5, random(3, -3)*0.5, random(6, 13)*0.5)
	stop
  }
}

actor VoidPhaseImpE : VoidPhaseImpEspawner
{
  states
  {
  spawn:
    TNT1 A 8
	DIMP E 1 a_fadeout(0.1)
	goto spawn+1
  }
}

actor VoidPhaseImpFspawner
{
  +nointeraction
  +clientsideonly
  scale 1.2
  renderstyle translucent
  alpha 0.5
  states
  {
  spawn:
    TNT1 A 0
	TNT1 A 0 a_spawnitemex("VoidPhaseImpF", 0, 0, -20, random(3, -3)*0.5, random(3, -3)*0.5, random(6, 13)*0.5)
	stop
  }
}

actor VoidPhaseImpF : VoidPhaseImpFspawner
{
  states
  {
  spawn:
    TNT1 A 8
	DIMP F 1 a_fadeout(0.1)
	goto spawn+1
  }
}

actor VoidPhaseImpGspawner
{
  +nointeraction
  +clientsideonly
  scale 1.2
  renderstyle translucent
  alpha 0.5
  states
  {
  spawn:
    TNT1 A 0
	TNT1 A 0 a_spawnitemex("VoidPhaseImpF", 0, 0, -20, random(3, -3)*0.5, random(3, -3)*0.5, random(6, 13)*0.5)
	stop
  }
}

actor VoidPhaseImpG : VoidPhaseImpGspawner
{
  states
  {
  spawn:
    TNT1 A 8
	DIMP G 1 a_fadeout(0.1)
	goto spawn+1
  }
}

actor VoidPhaseImpTelspawner
{
  +nointeraction
  +clientsideonly
  scale 1.2
  alpha 0.5
  states
  {
  spawn:
    TNT1 A 0
	TNT1 A 0 a_spawnitemex("VoidPhaseImpTel", 0, 0, -20, random(3, -3)*0.5, random(3, -3)*0.5, random(6, 13)*0.5)
	stop
  }
}

actor VoidPhaseImpTel : VoidPhaseImpTelspawner
{
  states
  {
  spawn:
    TNT1 A 8
	TDIM G 1 a_fadeout(0.1)
	goto spawn+1
  }
}