Actor ImpureElemental
{
MONSTER
Health 1700
Speed 6
FloatSpeed 6
Radius 30
Height 56
Mass 1200
PainChance 15
BloodColor "Blue"
MeleeRange 70
Meleedamage 15
+FLOAT
+NoGravity
+NOTARGET
+MISSILEMORE
+MissileEvenMore
+QuickToRetaliate
+DONTHARMSPECIES
Species "EleSouls"
Species "Cacodemon"
Species "SatanGuard"
Damagetype "SatanGuard"
Damagefactor "Acid", 0.3
DamageFactor "PDTBFG", 0.25
DamageFactor "PDTBFGTracer", 0.25
DamageFactor "PlayerDevBall", 0.125
DamageFactor "PlayerDevBall2", 0.125
DamageFactor "PlayerDevTracer", 0.125
DamageFactor "Legendary", 0.3
DamageFactor "LegendaryPlayer", 0.3
DamageFactor 0.75
//No Infighting
DamageFactor "SatanGuard", 0.0
DamageFactor "CacoLich", 0.0
DamageFactor "PhazoDemon", 0.0
DamageFactor "CacoComet", 0.0
DamageFactor "CurseComet", 0.0
DamageFactor "HelementalComet", 0.0
Damagefactor "BloodSkull", 0.0
DamageFactor "SoulToxic", 0.0
DamageFactor "BombBreath", 0.0
Damagefactor "EleSouls", 0.0
DropItem "BossLifeEssence", 200, 30
DropItem "HEMBossArmorBonusMax30", 200
DropItem "ModdedSoulSphere", 32
SeeSound "ImpElem/sight"
PainSound "ImpElem/pain"
ActiveSound "ImpElem/active"
MeleeSound "caco/melee"
DeathSound "ImpElem/death"
Obituary "%o was reduced to ashes by an Impure Elemental"
HitObituary "%o was mangled by an Impure Elemental." 
var int user_currenthp;
Tag "\c[g6]Impure Elemental\c-"
States
	{
	Spawn:
		IMCC A 10 Bright A_Look
		Loop
	Idle:
		TNT1 A 0 Bright A_SetSolid
		IMCC A 10 Bright A_Look
		TNT1 A 0 Bright HealThing(2)
		TNT1 A 0 Bright A_SetUserVar("user_currenthp",ACS_NamedExecuteWithResult("Hem_GetCurrentHealth"))
		Loop
	See:
		TNT1 A 0 Bright A_SetSolid
		IMCC AAAAAAA 1 Bright A_Chase
		IMCC AAAAAAA 1 Bright A_Chase
		IMCC AAAAAAA 1 Bright A_Chase
		IMCC AAAAAAA 1 Bright A_Chase
		IMCC AAAAAAA 1 Bright A_Chase
		TNT1 A 0 Bright HealThing(random(1,2))
		TNT1 A 0 Bright A_SetUserVar("user_currenthp",ACS_NamedExecuteWithResult("Hem_GetCurrentHealth"))
		Loop
	Melee:
		TNT1 A 0 Bright A_SetSolid
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_Stop
		IMCC EFG 4 Bright A_FaceTarget
		TNT1 A 0 Bright A_MeleeAttack
		IMCC FE 4 Bright
		GoTo See
	Missile:
		TNT1 A 0 Bright A_SetSolid
		TNT1 A 0 Bright A_Stop
		TNT1 A 0 Bright A_Jump(128,"RapidFire","Comet")
		TNT1 A 0 Bright A_Jump(64,"HomingComets","Souls")
		TNT1 A 0 Bright A_JumpIfHealthLower((ACS_NamedExecuteWithResult("Hem_SpawnHealth",0)*0.13),"Dual")
		IMCC EF 3 Bright A_FaceTarget
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,0,0)
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,5,0)
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,10,0)
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,-5,0)
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,-10,0)
		IMCC FE 3 Bright
		GoTo See
	RapidFire:
		IMCC EF 3 Bright A_FaceTarget
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,0,random(-2,2))
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,0,random(-2,2))
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,0,random(-2,2))
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,0,random(-2,2))
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,0,random(-2,2))
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 Bright A_CustomMissile("PaladinBall",24,0,random(-2,2))
		IMCC FE 3 Bright
		GoTo See
	Comet:
		IMCC EF 4 Bright A_FaceTarget
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 Bright A_CustomMissile("PaladinComet",24,0,0)
		IMCC GFE 3 Bright
		GoTo See
	HomingComets:
		IMCC EF 4 Bright A_FaceTarget
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("HomingComet",24,0,5)
		TNT1 A 0 A_CustomMissile("HomingComet",24,0,-5)
		IMCC GFE 3 Bright
		TNT1 A 0 A_Jump(128,"RapidFire","Comet")
		TNT1 A 0 A_Jump(89,"Souls")
		GoTo See
	Souls:
		IMCC EF 5 Bright
		IMCC G 3 Bright A_FaceTarget
		//TNT1 A 0 Bright A_Jump(32,"LegLostSoul")
		TNT1 A 0 Bright A_PainAttack("ImpureSoul")
		IMCC EF 3 Bright
		GoTo See
	LegLostSoul:
		TNT1 A 0 Bright A_PainAttack("LegendaryHeroSoul")
		IMCC EF 3 Bright
		GoTo See
	Dual:
		IMCC EF 5 Bright
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 Bright A_DualPainAttack("ImpureSoul")
		IMCC EF 3 Bright
		TNT1 A 0 Bright A_Jump(128,"RapidFire","Comet")
		TNT1 A 0 Bright A_Jump(89,"Rapid")
		GoTo See
	Rapid:
		IMCC EF 5 Bright
		IMCC G 3 Bright A_FaceTarget
		TNT1 A 0 Bright A_PainAttack("ImpureSoul")
		IMCC G 5 Bright A_FaceTarget
		TNT1 A 0 Bright A_PainAttack("ImpureSoul")
		IMCC G 5 Bright A_FaceTarget
		TNT1 A 0 Bright A_PainAttack("ImpureSoul")
		IMCC G 5 Bright A_FaceTarget
		TNT1 A 0 Bright A_PainAttack("ImpureSoul")
		IMCC EF 3 Bright
		TNT1 A 0 Bright A_Jump(128,"RapidFire","Comet")
		GoTo See
	Pain:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_GiveInventory("MonsterAvoid",1)
		IMCC H 3 Bright A_Pain
		TNT1 A 0 Bright A_Jump(40,"Missile")
		GoTo See
	XDeath:
	Death:
		TNT1 A 0 Bright
		IMCC I 6 Bright A_Scream
		IMCC J 3 Bright A_Fall
		TNT1 A 0 Bright A_PlaySound("comet/explosion",CHAN_BODY,1.0,0)
		TNT1 AAAA 0 Bright A_SpawnItemEx("BlueParticleSpawner",0,0,0,0,0,0,0,128)
		TNT1 A 0 Bright A_Explode(70,198)
		TNT1 AAAAAA 0 A_SpawnItemEx("Debris",0,0,32,Random(8,-8),Random(8,-8),Random(8,12),0,128)
		TNT1 AAAA 0 A_CustomMissile("SmokeFX",32,0,random(0,360),2,random(0,360))
		TNT1 AAAAAA 0 A_CustomMissile("Kaboom27",32,0,random(0,360),2,random(0,360))
		TNT1 A 0 A_PainDie("ImpureSoul")
		IMCC KL 3 Bright
		IMCC MNOP 2 Bright
		TNT1 A 0 A_ChangeFlag(SOLID,0)
		TNT1 A 0 A_ChangeFlag(THRUACTORS,1)
		TNT1 A 0 A_TakeInventory("Tic",999999)
	Fall:
		IMCC Q 1 A_CheckFloor("Land")
		TNT1 A 0 A_JumpIfInventory("Tic",525,"Land")
		TNT1 A 0 A_GiveInventory("Tic",1)
		Loop
	Land:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_ChangeFlag(CORPSE,1)
		IMCC RSTU 3
		TNT1 A 0 A_ChangeFlag(SOLID,0)
		TNT1 A 0 A_ChangeFlag(THRUACTORS,0)
		TNT1 A 0 A_ChangeFlag(MOVEWITHSECTOR,1)
		IMCC V 63000 CanRaise
		Stop
	}
}