Actor ImpureVile : Archvile 17563
{
//$Category Monsters/DUST
//$Sprite IMVIA1D1
//$Title "Impure Vile"
  Obituary "%o was depurified by the Impure Vile."
  Health 1200
  Radius 20 
  Height 56 
  Mass 500
  Speed 18
  PainChance 5
  Bloodcolor Black
  Species "Viles"
  DamageFactor "VileFires", 0.0
  DropItem "BossLifeEssence" 210
  DropItem "BossArmorBonusMax" 210
  DropItem "HellionRegen" 200 1
  DropItem "BigDustMana" 128 100
  DropItem "OccultSpellbook" 16
  Monster
  +FLOORCLIP
  +NOTARGET
  +MISSILEMORE
  +MISSILEEVENMORE
  +QUICKTORETALIATE
  +NOINFIGHTING
  SeeSound "ImpureVile/Sight" 
  PainSound "ImpureVile/Pain" 
  DeathSound "ImpureVile/Death" 
  ActiveSound "ImpureVile/Active" 
  States 
  { 
  Spawn: 
    IMVI A 10 A_Look 
    Loop 
See:
	TNT1 A 0 A_Jump(82,"Rush")
    IMVI A 0 A_SpawnItem("HumanishStep",0,0,0,0)
    IMVI AABBCC 2 A_VileChase
    TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
    IMVI DDEEFF 2 A_VileChase
    Loop
   Rush:
	TNT1 A 0 A_SpawnItemEx("IMVGhostA",0,0,0,0,0,0,0,128)
	IMVI A 1 A_VileChase
	TNT1 A 0 A_SpawnItemEx("IMVGhostA",0,0,0,0,0,0,0,128)		
	IMVI A 1 A_VileChase
	TNT1 A 0 A_SpawnItemEx("IMVGhostB",0,0,0,0,0,0,0,128)
	IMVI B 1 A_VileChase
	TNT1 A 0 A_SpawnItemEx("IMVGhostB",0,0,0,0,0,0,0,128)
	IMVI B 1 A_VileChase		
	TNT1 A 0 A_SpawnItemEx("IMVGhostC",0,0,0,0,0,0,0,128)
	IMVI C 1 A_VileChase
	TNT1 A 0 A_SpawnItemEx("IMVGhostC",0,0,0,0,0,0,0,128)
	IMVI C 1 A_VileChase
	TNT1 A 0 A_SpawnItemEx("IMVGhostD",0,0,0,0,0,0,0,128)
	IMVI D 1 A_VileChase
	TNT1 A 0 A_SpawnItemEx("IMVGhostD",0,0,0,0,0,0,0,128)
	IMVI D 1 A_VileChase		
	TNT1 A 0 A_SpawnItemEx("IMVGhostE",0,0,0,0,0,0,0,128)
	IMVI E 1 A_VileChase
	TNT1 A 0 A_SpawnItemEx("IMVGhostE",0,0,0,0,0,0,0,128)
	IMVI E 1 A_VileChase
	TNT1 A 0 A_SpawnItemEx("IMVGhostF",0,0,0,0,0,0,0,128)
	IMVI F 1 A_VileChase
	TNT1 A 0 A_SpawnItemEx("IMVGhostF",0,0,0,0,0,0,0,128)
	IMVI F 1 A_VileChase
	TNT1 A 0 A_JumpIfTargetinLOS("Missile")
	TNT1 A 0 A_Jump(32,"See")
	Loop
  Missile:
    TNT1 A 0 Bright A_Jump(128,"Floorshits","ImpureSouls")
    TNT1 A 0 Bright A_FaceTarget
    IMVI G 10 Bright A_PlaySound("exile/voidstart")
    IMVI H 8 Bright A_VileTarget("ImpureVileFire")
    IMVI IJKLMN 8 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("exile/voidend")
    IMVI O 8 Bright A_VileAttack
    IMVI P 20 Bright
    Goto See
  Floorshits:
    IMV2 AABB 10 Bright A_FaceTarget 
    IMV2 C 0 Bright A_CustomMissile("ImpureVileFloorshits",40,0,30)
    IMV2 C 0 Bright A_CustomMissile("ImpureVileFloorshits",40,0,-30)
    IMV2 C 10 Bright A_CustomMissile("ImpureVileFloorshits",40,0,0)
    Goto See
  ImpureSouls:
    IMVI KLM 8 Bright A_FaceTarget
    IMVI N 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI O 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI N 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI O 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI N 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI O 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI N 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI O 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI N 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI O 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI N 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI O 5 Bright A_CustomMissile("ImpureVileSoul",34,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
    IMVI P 20 Bright
    Goto See
  Pain: 
    IMVI Q 5 
    IMVI Q 5 A_Pain 
    TNT1 A 0 A_Jump(256,"Rush")
    Goto See 
  Death:
    IMVI Q 6 A_SpawnItemEx("BlackGibbedGenerator",0,0,0,0,0,0,0,128,0)
    IMVI R 5 A_Scream
    IMVI S 5 A_Fall
    IMVI TUV 5
	IMVI W 4 A_SpawnItem("BodyCrash",0,0,0,0)
    IMVI XY 4
    IMVI Z -1
    Stop
  Heal:
    IMV2 ABC 10 Bright
    Goto See
  } 
}

ACTOR ImpureVileFire : ExileFireFX
{
Scale 1.5
  States
  {
  Spawn:
    TNT1 A 0
    LRD3 H 1 Bright A_PlaySoundEx("exile/voidsuck","Voice")
    LRD3 HGGHHGGHHGGFFEEFFEEFFEEDDEEDDEEDDCCDDCCDDCCBBCCBBCCBBBBAAAA 1 Bright A_Fire
	LRD3 B 1 Bright A_StopSoundEx("Voice")
	LRD3 C 1 Bright A_PlaySoundEx("exile/voidend","Voice")
	TNT1 A 0 A_PlaySound("brain/spit", 7)
	TNT1 A 0 A_CustomMissile("VelociratorResRadius",10,0,0,0)
	TNT1 A 0 A_CustomMissile("VelociratorResRadius",10,0,40,0)
	TNT1 A 0 A_CustomMissile("VelociratorResRadius",10,0,80,0)
	TNT1 A 0 A_CustomMissile("VelociratorResRadius",10,0,120,0)
	TNT1 A 0 A_CustomMissile("VelociratorResRadius",10,0,160,0)
	TNT1 A 0 A_CustomMissile("VelociratorResRadius",10,0,200,0)
	TNT1 A 0 A_CustomMissile("VelociratorResRadius",10,0,240,0)
	TNT1 A 0 A_CustomMissile("VelociratorResRadius",10,0,280,0)
	TNT1 A 0 A_CustomMissile("VelociratorResRadius",10,0,320,0)
	LRD3 DEFGH 1 Bright
	TNT1 A 20
    Stop
	}
}

Actor ImpureVileSoul
{
	Speed 25
	damage 5
	scale 0.35
	radius 6
	height 12
	RENDERSTYLE ADD
	Alpha 0.75
	Bouncetype Doom
	Bouncecount 3
	Damagetype "VileFires"
	PROJECTILE
	+STRIFEDAMAGE
	+SEEKERMISSILE
	+PIERCEARMOR
	seesound "Soul/Fire"
	deathsound "Soul/Hit"
	states
	{
	Spawn:
		IMSO A 2 Bright
		TNT1 A 0 A_CustomMissile("ImpureVileSoulTrail",0,0,0)
		IMSO A 2 Bright
		TNT1 A 0 A_CustomMissile("ImpureVileSoulTrail",0,0,0)
		IMSO B 2 Bright
		TNT1 A 0 A_CustomMissile("ImpureVileSoulTrail",0,0,0)
		IMSO B 2 Bright
		TNT1 A 0 A_CustomMissile("ImpureVileSoulTrail",0,0,0)
		Loop
	Death:
		IMSO CCDDEEFFGGHHIIJJKKLL 2 Bright A_FadeOut(0.05)
		stop
	}
}
Actor ImpureVileSoulTrail
{
	Projectile
	+CLIENTSIDEONLY
	+NOINTERACTION
	Damage 0
	RenderStyle Add
	Alpha 0.45
	Scale 0.9
	States
	{
	Spawn:
		TNT1 A 2
		PUF6 BDFHJLNPRTVXZ 1
		PUF7 B 1 A_FadeOut(0.2)
		Wait
	}
}

ACTOR ImpureVileFloorshits      
{
  PROJECTILE
  +DROPOFF
  -NoGravity
  +FloorHugger
  +SeekerMissile
  Speed 23
  RenderStyle Add
  Alpha 0.8
  Scale 1.5
  Damage 5
  Damagetype "VileFires"
  SeeSound "weapons/diasht"
  DeathSound "weapons/firex3"
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_PlaySoundEx("monster/ambientfire2","Voice",1)
	FLFB C 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB C 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB D 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB D 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB C 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB C 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB D 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB D 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	TNT1 A 0 A_Seekermissile(5, 25)
	Loop
    Death:
	TNT1 A 0
    TNT1 A 0 A_StopSoundEx("Voice")
	TNT1 A 0 A_Explode(90, 120)
	TNT1 AAAA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))
	FLFB KLMNO 4
	Stop
  }
}

Actor ImpureVileFloorshitsTrail
{
  Projectile
  RenderStyle Add
  +NoClip
  Alpha 0.7
  Scale 1.5
  States
  {
  Spawn:
    FLFB CDEFGHIJ 2 Bright A_FadeOut(0.1)
    Stop
  }
}











ACTOR IMVGhostA
{
RENDERSTYLE Translucent
Alpha 0.75
Scale 1.05
+NOGRAVITY
+CLIENTSIDEONLY
+DONTSPLASH
+NOINTERACTION
+NOCLIP
States
{
Spawn:
    IMVI A 2 A_FadeOut(0.18)
    Loop
    }
}

ACTOR IMVGhostB : IMVGhostA
{
States
{
Spawn:
    IMVI B 2 A_FadeOut(0.18)
    Loop
    }
}

ACTOR IMVGhostC : IMVGhostA
{
States
{
Spawn:
    IMVI C 2 A_FadeOut(0.18)
    Loop
    }
}

ACTOR IMVGhostD : IMVGhostA
{
States
{
Spawn:
    IMVI D 2 A_FadeOut(0.18)
    Loop
    }
}

ACTOR IMVGhostE : IMVGhostA
{
States
{
Spawn:
    IMVI E 2 A_FadeOut(0.18)
    Loop
    }
}

ACTOR IMVGhostF : IMVGhostA
{
States
{
Spawn:
    IMVI F 2 A_FadeOut(0.18)
    Loop
    }
}