Actor Ethereal : McM_Monster replaces Cacodemon { 
	Health 150
	Radius 20
	Height 60
	Mass 200
	Speed 10 
	PainChance 128 
	Monster
	+NoGravity
	+Float
	Obituary "%o got blasted by an Ethereal."
	SeeSound "Ethereal/See" 
	PainSound "Ethereal/Pain" 
	DeathSound "Ethereal/Die" 
	ActiveSound "Ethereal/Act"
	Renderstyle Translucent
	Tag "Ethereal"
	Scale 0.925
	States { 
		Idle:
			TNT1 A 0 A_SetShootable
			TNT1 A 0 A_SetTranslucent(1.0)
		IdleLoop:
			WICK ABCD 8 A_Look 
		Loop 
		See:
			TNT1 A 0 A_SetTranslucent(1.0)
			WICK AABBCCDD 4 A_Chase
		See2:
			WICK EEFFGGHH 2 A_Chase
			WICK E 0 A_Jump(96, "See")
		Loop
		Missile:
			WICK I 1 A_PlaySound("Ethereal/Attack")
			WICK I 4 A_FaceTarget
			TNT1 A 0 A_FaceTarget
			WICK JJJJJ 1 BRIGHT A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, random(-6, 6))
			TNT1 A 0 A_CustomMissile("EtherealShot",60,0,0)
			WICK KKKKKKKK 1 BRIGHT A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, random(-6, 6))
			WICK L 5 
		Goto See       
		Pain: 
			WICK M 4
			WICK M 4 A_Pain 
			TNT1 A 0 A_JumpIfInventory("MCM_BehaviorToggle", 1, "Vanish")
		Goto See
		Vanish:
			WICK M 2 A_UnsetShootable
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_Stop
			WICK J 1 A_FadeOut(0.2, 0)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, -6)
			WICK J 1 A_FadeOut(0.2, 0)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, -6)
			WICK J 1 A_FadeOut(0.2, 0)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, -6)
			WICK J 1 A_FadeOut(0.2, 0)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, -6)
			WICK J 1 A_FadeOut(0.2, 0)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_1", 0, 0, 0, 0, -6)
			TNT1 A 30
			TNT1 A 0 A_FaceTarget
			WICK K 1 A_FadeIn(0.1)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, -6)
			WICK K 1 A_FadeIn(0.1)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, -6)
			WICK K 1 A_FadeIn(0.1)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, -6)
			WICK K 1 A_FadeIn(0.1)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, -6)
			WICK K 1 A_FadeIn(0.1)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, -6)
			WICK K 1 A_FadeIn(0.1)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, -6)
			WICK K 1 A_FadeIn(0.1)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, -6)
			WICK K 1 A_FadeIn(0.1)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, -6)
			WICK K 1 A_FadeIn(0.1)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, -6)
			TNT1 A 0 A_SetShootable
			WICK K 1 A_FadeIn(0.1)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, 6)
			TNT1 A 0 A_SpawnItemEx("EtherealFireFX_2", 0, 0, 0, 0, -6)
		Goto See
		Death:
			WICK N 5 A_Scream
			WICK OP 5 
			WICK P 0 A_SpawnItemEX("EtherealTorso",0,0,48,0,0,0,0,16)
			WICT A 5 A_NoBlocking
			WICT BCDEF 5 
			WICT G -1 A_SetFloorClip 
		Stop 
		Raise:
			WICT G 0 A_RemoveChildren(TRUE)
			WICK G 0 A_SpawnItemEx("EtherealTorsoRes",0,0,0,0,0,1,0,0)
			WICT G 5 A_UnSetFloorClip
			WICT FEDBC 5
			WICK PON 5
		Goto See
		Death.Corpse:
			WICT G -1
		Stop
	} 
}

Actor EtherealFireFX_1 {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Translucent
	Alpha 0.0
	Scale 0.925
	States {
		Spawn:
			WICK JJJJJJJJJJ 1 A_FadeIn(0.05)
			WICK JJJJJJJJJJ 1 A_FadeOut(0.05)
		Stop
	}
}

Actor EtherealFireFX_2 : EtherealFireFX_1 {
	States {
		Spawn:
			WICK KKKKKKKKKK 1 A_FadeIn(0.05)
			WICK KKKKKKKKKK 1 A_FadeOut(0.05)
		Stop
	}
}

Actor EtherealShot {
	Radius 8
	Height 8
	Speed 10
	Damage (5 * random(3, 5))
	RenderStyle Add
	Alpha 0.67
	Projectile
	+ThruGhost
	+SeekerMissile
	+ForceXYBillboard
	+PIERCEARMOR
	+NODAMAGETHRUST
	SeeSound "weapons/firmfi"
	DeathSound "weapons/firex5"
	Decal "DoomImpScorch"
	States {
		Spawn:
			WIBL ABCDABCDABCDABCDABCDABCDABCD 1 Bright A_SpawnItemEx("EtherealFX",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,128,0)
			TNT1 AAAA 0 A_SeekerMissile(90, 90)
		Loop
		Death:
			WIBL JKLMN 3 Bright
		Stop
	}
}

Actor EtherealFX
{   
  Radius 2
  Height 2
  +NoBlockMap
  +NoGravity
  +DontSplash
  +ForceXYBillboard
  +CLIENTSIDEONLY
  RenderStyle Add
  Alpha 0.67
  States
  {
  Spawn:
    TNT1 A 3 Bright
    WIBL EFGHI 3 BRIGHT
    Stop 
  }
}

Actor EtherealTorso
{
  Mass 1000000
  Radius 1
  Height 1
  +IsMonster
  +Corpse
  Scale 0.925
  States
  {
  Spawn:
    WICK Q 5 NoDelay A_PlaySound("Ethereal/Torso")
    WICK R 5
    Wait
  Crash:
    WICK S 1 A_SetFloorClip
    WICK S 4 A_PlaySound("Ethereal/TorsoLand")
    WICK TUV 5
    WICK W -1
    Stop
  }
}

Actor EtherealTorsoRes
{   
  Radius 24
  Height 24
  +NoGravity
  +NoBlockMap
  +NoClip
  +CLIENTSIDEONLY
  Scale 0.925
  States
  {
  Spawn:
    WICK WVUTSRQ 5
    Stop     
  }
}