Actor ImpureSoul
{
Monster
Health 190
Height 56
Radius 16
Scale 1.25
Mass 50
Speed 7
FloatSpeed 7
FastSpeed 7
ReactionTime 17
Damage (random(14,16))
Bloodcolor Blue
PainChance "SatanGuard", 0
Painchance "BloodElemental", 0
Painchance "BabyWatcher", 0
Painchance "Broat", 0
PainChance 100
+DONTFALL
+NOICEDEATH
+NOBLOODDECALS
+NODAMAGETHRUST
+FLOAT
+NOGRAVITY
+MISSILEMORE
+MissileEvenMore
+DontHurtSpecies
+DontHarmSpecies
+DontHarmClass
Species "EleSouls"
Species "Souls"
Damagetype "SatanGuard"
DamageFactor "PDTBFG", 0.25
DamageFactor "PDTBFGTracer", 0.25
DamageFactor "PlayerDevBall", 0.125
DamageFactor "PlayerDevBall2", 0.125
DamageFactor "PlayerDevTracer", 0.125
DamageFactor "PlayerDevTracer", 0.125
DamageFactor "LegendaryPlayer", 0.3
DamageFactor "LegendaryGuruPlayer", 0.3
//No Infighting
DamageFactor "SatanGuard", 0.0
Damagefactor "Wicked", 0.0
Damagefactor "BloodSkull", 0.0
Damagefactor "BloodElemental", 0.0
Damagefactor "Broat", 0.0
DamageFactor "CurseComet", 0.0
DamageFactor "HelementalComet", 0.0
DamageFactor "SoulToxic", 0.0
DamageFactor "BombBreath", 0.0
Damagefactor "EleSouls", 0.0
DropItem "BossLifeEssence", 180
DropItem "HEMArmorBonusMax10", 180
SeeSOund "ImpureSoul/Sight"
ActiveSound "ImpureSoul/Active"
AttackSound "ImpureSoul/Sight"
PainSound "ImpureSoul/pain"
DeathSound "ImpureSoul/death"
Obituary "%o was crisped by an Impure Soul."
HitObituary "%o was severed by an Impure Soul."
Tag "\c[x5]Impure Soul\c-"
States
	{
	Spawn:
		ISUL A 1 Bright A_Look
		//TNT1 A 0 Bright A_Explode(3,65,0)
		TNT1 A 0 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,64)
		ISUL A 1 Bright A_Look
		//TNT1 A 0 Bright A_Explode(3,65,0)
		TNT1 A 0 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,64)
		ISUL A 1 Bright A_Look
		//TNT1 A 0 Bright A_Explode(3,65,0)
		TNT1 A 0 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,64)
		//TNT1 A 0 Bright HealThing(1)
		Loop
	Idle:
		ISUL A 1 Bright A_Look
		//TNT1 A 0 Bright A_Explode(3,65,0)
		TNT1 A 0 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,64)
		ISUL A 1 Bright A_Look
		//TNT1 A 0 Bright A_Explode(3,65,0)
		TNT1 A 0 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,64)
		ISUL A 1 Bright A_Look
		//TNT1 A 0 Bright A_Explode(3,65,0)
		TNT1 A 0 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,64)
		TNT1 A 0 Bright HealThing(1)
		Loop
	See:
		ISUL A 1 Bright A_Chase
		TNT1 A 0 Bright A_Explode(3,65,0)
		TNT1 A 0 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_Chase
		TNT1 A 0 Bright A_Explode(3,65,0)
		TNT1 A 0 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_Chase
		TNT1 A 0 Bright A_Explode(3,65,0)
		TNT1 A 0 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright HealThing(1)
		Loop
	Missile:
		TNT1 A 0
		TNT1 A 0 A_JumpIfTargetInLOS("VeryFarRange",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,0,1500)
		TNT1 A 0 A_JumpIfTargetInLOS("FarRange",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,0,1000)
		TNT1 A 0 A_JumpIfTargetInLOS("LongRange",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,0,800)
		TNT1 A 0 A_JumpIfTargetInLOS("NearRange",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,0,500)
		TNT1 A 0 A_JumpIfTargetInLOS("CloseRange",90,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,500,0)
		Goto Normal
	Normal:
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_FaceTarget
		ISUL A 1 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_SkullAttack(39)
		ISUL BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 1 Bright A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),0,0,0,random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_Stop
		GoTo See
	VeryFarRange:
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"Normal","FireBall","FireBall","MiniComet","MiniComet","MiniComet","MiniComet")
	FarRange:
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"Normal","FireBall","MiniComet","MiniComet")
	LongRange:
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"Normal","FireBall","MiniComet")
	NearRange:
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"Normal","FireBall","FireBall","MiniComet")
	CloseRange:
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"Normal","Normal","FireBall","MiniComet")
		Goto See
	FireBall:
		TNT1 A 0
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL B 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL B 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL B 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_CustomMissile("PaladinBall",23,0,-11)
		TNT1 A 0 A_CustomMissile("PaladinBall",23,0,11)
		TNT1 A 0 A_CustomMissile("PaladinBall",23,0,0)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		GoTo See
	MiniComet:
		TNT1 A 0
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL B 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL B 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL B 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_CustomMissile("MiniComet",23,0,0)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("BlueFire3",random(-5,-9),random(-3,3),random(10,45),random(-1,1),random(-1,1),random(-1,1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL A 1 Bright A_FaceTarget
		GoTo See
	Pain:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_Stop
		ISUL C 5 Bright A_Pain
		GoTo See
	Death:
		TNT1 A 0
		TNT1 A 0 A_SetTranslucent(0.75,1)
		ISUL C 4 Bright A_NoGravity
		TNT1 A 0 A_PlaySound("weapons/rocklx",0,1.0,0)
		ISUL D 4 Bright A_Scream
		TNT1 A 0 A_Explode(20,92)
		TNT1 AA 0 A_SpawnItemEx("BlueParticleSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE) 
		TNT1 AAAA 0 A_CustomMissile("SmokeFX2",15,0,random(0,360),2,random(0,360))
		TNT1 AAAA 0 A_CustomMissile("Kaboom23",15,0,random(0,360),2,random(0,360))
		TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,15,Random(4,-4),Random(4,-4),Random(4,8),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ISUL E 3 Bright
		ISUL F 2 Bright A_Fall
		ISUL G 4
		ISUL H 4
		TNT1 A 1
		Stop
	}
}

Actor MiniComet : HEMHomingCometBase
{
Speed 21
FastSpeed 25
Scale 0.6
Reactiontime 29
Damage 3
Damagetype "SatanGuard"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_Jump(155,"Homing")
		GoTo Normal
	}
}