Actor PhaseExile : Exile
{
  Health 1650
  DropItem "LifeEssence" 100
  DropItem "ArmorBonusMax" 100
  Obituary "%o was caught by a Phase Exile."
  SeeSound "ImpureVile/Sight" 
  PainSound "ImpureVile/Pain" 
  DeathSound "ImpureVile/Death" 
  ActiveSound "ImpureVile/Active" 
  Speed 24
  Scale 1.0
  +MISSILEMORE
  +MISSILEEVENMORE
  BloodColor "51 07 94"
  DamageFactor "PlayerDTRG", 0.5
  DamageFactor "Legendary", 0.25
  DamageFactor "LegendaryPlayer", 0.25
  DamageFactor "LegendaryGuru", 0.25
  DamageFactor "LegendaryGuruPlayer", 0.25
  DamageFactor "Ice", 0.333
  DamageFactor "FreezerBurn", 0.333
  Tag "\ctPhase Exile\c-"
  var int user_phased;
  States
  {
  Spawn:
	TNT1 A 0 A_Look
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
    Loop
  See:
    TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
	TNT1 A 0 A_VileChase
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_VileChase
	PVIL B 2 A_SpawnItemEx("PhaseExileFXB",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_VileChase
	PVIL C 2 A_SpawnItemEx("PhaseExileFXC",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_Jump(12,"Phase")	
    TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
	TNT1 A 0 A_VileChase
	PVIL D 2 A_SpawnItemEx("PhaseExileFXD",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_VileChase
	PVIL E 2 A_SpawnItemEx("PhaseExileFXE",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_VileChase
	PVIL F 2 A_SpawnItemEx("PhaseExileFXF",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	Loop
  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)
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
	TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),14,0,0)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha-0.15)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha-0.15)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha-0.15)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha-0.15)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha-0.15)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha-0.15)
	PVIL A 6
	TNT1 A 0 A_ChangeFlag("NOPAIN",0)
	TNT1 A 0 A_Stop
	Goto Phased
  Phased:
	PVIL ABCDEFABCDEF 1 A_Chase("","")
  PhasedLoop:
	PVIL ABCDEF 1 A_Chase
	TNT1 A 0 A_Jump(24,"UnPhase")
	Loop
  UnPhase:
	TNT1 A 0 A_SetUserVar("user_phased",0)
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
	TNT1 A 0 ThrustThing(Angle*256/360+random(64,192),14,0,0)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha+0.15)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha+0.15)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha+0.15)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha+0.15)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha+0.15)
	PVIL A 2 A_SpawnItemEx("PhaseExileFXA",0,0,0,frandom(-2,2),frandom(-2,2),frandom(0,4))
	TNT1 A 0 A_SetTranslucent(alpha+0.15)
	PVIL A 6
	TNT1 A 0 A_ChangeFlag("NOPAIN",0)
	TNT1 A 0 A_Stop
	Goto See
  Missile:
	TNT1 A 0 A_JumpIf(user_phased == 1,2)
	TNT1 A 0 A_Jump(64,"Phase")
	TNT1 A 0 A_Jump(128,"PhaseFamineBalls")
  VileAttack:
    TNT1 A 0 A_FaceTarget
    PVIL G 10 Bright A_PlaySound("exile/voidstart")
    PVIL H 8 Bright A_VileTarget("PhaseExileFireFX")
    PVIL IJKLMN 8 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("exile/voidend")
	TNT1 A 0 A_JumpIfTargetInLOS(2)
	TNT1 A 0 A_Jump(256,4)
	TNT1 AAA 0 A_GiveToTarget("PhaseMindfuck")
    PVIL O 8 Bright A_VileAttack("vile/stop",40,80,120,1.5)
    PVIL P 20 Bright
	TNT1 A 0 A_JumpIf(user_phased == 1,"UnPhase")
    Goto See	
  PhaseFamineBalls:
    PVI2 AAABBB 5 Bright A_SpawnItemEx("PhaseExileFlameSpawner")
	PVI2 CCCCC 4 Bright A_CustomMissile("PhaseExileFamineBall",32,0,random(-8,8))
	Goto See
  Heal:
	TNT1 A 0 A_PlaySound("brain/spit")
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,0,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,20,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,40,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,60,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,80,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,100,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,120,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,140,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,160,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,180,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,200,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,220,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,240,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,260,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,280,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,300,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,320,0)
	TNT1 A 0 A_CustomMissile("HellionResRadius",10,0,340,0)
    PVI2 ABC 10 Bright
    Goto See
  Pain:
    PVIL Q 10 A_Pain
    Goto See
  Death:
    PVIL Q 6 A_SetTranslucent(1.0)
    PVIL R 5 A_Scream
    PVIL S 5 A_Fall
    PVIL TUV 5
	PVIL W 4 A_SpawnItem("BodyCrash",0,0,0,0)
    PVIL XY 4
    PVIL Z -1
    Stop
  XDeath:
	PVIX A 4
	PVIX B 3 A_XScream
	PVIX C 3 A_SpawnItemEx("MutantGibbedGenerator",0,0,0,0,0,0,0,128,0)
	PVIX D 3 A_Fall
	PVIX E 3 A_SpawnItem("BodyCrash",0,0,0,0)
	PVIX FG 3
	PVIX H -1
	Stop
    }
}

Actor PhaseExileFireFX : ExileFireFX
{
  States
  {
  Spawn:
    TNT1 A 0
    PVOI H 1 Bright A_PlaySoundEx("exile/voidsuck","Voice")
    PVOI HGGHHGGHHGGFFEEFFEEFFEEDDEEDDEEDDCCDDCCDDCCBBCCBBCCBBBBAAAA 1 Bright A_Fire
	PVOI B 1 Bright A_StopSoundEx("Voice")
	PVOI C 1 Bright A_PlaySoundEx("exile/voidend","Voice")
	PVOI DEFGH 1 Bright
	TNT1 A 20
	TNT1 A 0 A_StopSoundEx("Voice")
    Stop
	}
}

Actor PhaseExileFamineBall : PhaseArchonTracer
{
  DamageType "VileFires"
}

Actor PhaseExileFlameSpawner : DarkCyberFlameSpawner
{
  States
  {
  Spawn:
    TNT1 AAA 0 A_SpawnItemEx("PhaseCyberFlame",random(-15,15),random(-15,15),random(10,50),0,0,random(2,6))
    TNT1 A 1
    Stop
  }
}

Actor PhaseExileFXA
{
  +CLIENTSIDEONLY
  +NOINTERACTION
  Renderstyle Translucent
  Alpha 0.9
  States
  {
  Spawn:
	TNT1 A 3
	Goto SpawnLoop
  SpawnLoop:
	PVIL A 2 A_FadeOut
	Loop
	}
}

Actor PhaseExileFXB : PhaseExileFXA
{
  States
  {
  SpawnLoop:
	PVIL B 2 A_FadeOut
	Loop
	}
}

Actor PhaseExileFXC : PhaseExileFXA
{
  States
  {
  SpawnLoop:
	PVIL C 2 A_FadeOut
	Loop
	}
}

Actor PhaseExileFXD : PhaseExileFXA
{
  States
  {
  SpawnLoop:
	PVIL D 2 A_FadeOut
	Loop
	}
}

Actor PhaseExileFXE : PhaseExileFXA
{
  States
  {
  SpawnLoop:
	PVIL E 2 A_FadeOut
	Loop
	}
}

Actor PhaseExileFXF : PhaseExileFXA
{
  States
  {
  SpawnLoop:
	PVIL F 2 A_FadeOut
	Loop
	}
}