ACTOR ShadowPhaseImp : Imp
{
    Health 250
    Speed 10
    PainChance 25
	+QUICKTORETALIATE
	BloodColor "cf 00 b0"
	DropItem "LifeEssence" 125
	DropItem "ArmorBonusMax" 125
	DropItem "DemonAmmo" 88 60
    SeeSound "phaseimp/sight"
    PainSound "phaseimp/pain"
    DeathSound "phaseimp/death"
    ActiveSound "phaseimp/active"
	DamageFactor "fire", 0.0
    Obituary "%o was pierced by a Shadow Phase Imp."
    HitObituary "%o was lacerated by a Shadow Phase Imp."
	Tag "\c[j8]Shadow Phase Imp\c-"
    States
    {
    Spawn:
		VIMP A 1 A_Look
        Loop
    See:
		VIMP AABB 1 A_Chase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		VIMP CCDD 1 A_Chase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		TNT1 A 0 A_Jump(24,"Teleport")
		TNT1 A 0 A_Jump(46,"Phase")		
        Loop
	Teleport:
		VIMP AEFG 1 Bright A_UnSetShootable
		VIMP AAAA 0 A_SpawnItem("VoidPhaseImpTelSpawner",0,0,0,0)
		VIMP AAAAAAAAAA 1  A_FadeOut(0.1,0)
		VIMP A 2 
		VIMP AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
		VIMP AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
		VIMP A 1 A_PlayWeaponSound("boss/teleport")
		VIMP AAAA 0 A_SpawnItem("VoidPhaseImpTelSpawner",0,0,0,0)
		VIMP AAAAAAAAAA 1 A_FadeIn(0.1)
		VIMP A 1 Bright A_SetShootable
		Goto See		
    Phased:
        VIMP AABBCCDDAABBCCDDAABBCCDDAABBCCDD 1 A_ExtChase(0,0)
        VIMP AABBCCDDAABBCCDD 1 A_Chase
		TNT1 A 0 A_Jump(24,"UnPhase")
        Goto Phased+32
    Melee:
        TNT1 A 0 A_SetTranslucent(1)
        VIMP EF 5 A_FaceTarget
        VIMP G 5 A_MeleeAttack
        VIMP FE 5 A_FaceTarget		
        Goto See
    Missile:
		TNT1 A 0 A_Jump(130,"ShadowBall")
		TNT1 A 0 A_Jump(60,"NormalPhase")
		TNT1 A 0 A_Jump(25,"PhaseLaser")
		TNT1 A 0 A_Jump(35,"Comet")
        Goto See
	NormalPhase:
		TNT1 A 0 A_SetTranslucent(1)
		VIMP E 2 A_FaceTarget
		VIMP 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)
		VIMP G 3 Bright A_CustomMissile("PhaseImpBall2", 32, 0, 0)
		VIMP FE 2
        Goto See
	ShadowBall:
	    TNT1 A 0 A_SetTranslucent(1)
		VIMP E 2 A_FaceTarget
		VIMP F 2 A_FaceTarget
		VIMP G 6 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
		VIMP E 2 A_FaceTarget
		VIMP F 2 A_FaceTarget
		VIMP G 6 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
		VIMP E 2 A_FaceTarget
		VIMP F 2 A_FaceTarget
		VIMP G 6 Bright A_Custommissile("SSatyrBall", 32, 0, 0)
		Goto See
	PhaseLaser:
		TNT1 A 0 A_SetTranslucent(1)
		VIMP E 2 A_FaceTarget
		VIMP F 2 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("imp/attack")
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP G 3 Bright A_CustomMissile("PhazoFastShot", 32, 0, 0)
		VIMP FE 2
        Goto See
	Comet:
		TNT1 A 0 A_SetTranslucent(1)
        VIMP E 3 A_FaceTarget
		VIMP 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)
        VIMP G 5 Bright A_CustomMissile("PhaseImpComet", 32, 0, 0)
		VIMP FE 4
        Goto See
	Phase:
        TNT1 A 0 A_PlaySound("phaseimp/teleport")
        VIMP E 2 A_FaceTarget
        VIMP E 1 A_SetTranslucent(0.75)
        VIMP E 1 A_SetTranslucent(0.55)
        VIMP E 1 A_SetTranslucent(0.35)
		VIMP E 1 A_SetTranslucent(0.15)
        Goto Phased
	UnPhase:
        TNT1 A 0 A_PlaySound("phaseimp/teleport")
		VIMP E 1 A_SetTranslucent(0.15)
        VIMP E 1 A_SetTranslucent(0.35)
        VIMP E 1 A_SetTranslucent(0.55)
        VIMP E 1 A_SetTranslucent(0.75)
		TNT1 A 0 A_SetTranslucent(1)
        VIMP E 2 A_FaceTarget		
        Goto See
    Pain:
		VIMP H 2 A_SetTranslucent(1)
		TNT1 A 0 A_SpawnItemEx("PHellionSmokeSpawner")
        VIMP H 2 A_Pain
		TNT1 A 0 A_Jump(70,"Teleport")
        Goto See
    Death:
        VIMP I 8 A_SetTranslucent(1)
        VIMP J 8 A_Scream
        VIMP K 6
        VIMP L 6 A_Fall
        VIMP 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 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		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
	Toaster:
		TNT1 A 0
		Stop 
	}
}

actor VoidPhaseImpA : VoidPhaseImpAspawner
{
  states
  {
  spawn:
    TNT1 A 8
	VIMP A 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
  }
}