actor PyroImp 14564
{
Monster 
Health 100
Radius 20
Height 56
Speed 9
Mass 100
PainChance 80
PainChance "Fire", 0
+FLOORCLIP
+MissileMore
+DONTHURTSPECIES
Species "Imps"
PainChance "SoulToxic", 60
PainChance "FatFlamer", 0
PainChance "FiendFire", 0
DamageFactor "Fire", 0.001
//No Infighting
DamageFactor "ImpComet", 0.0
DropItem "LifeEssence", 125
DropItem "ArmorBonusMax", 125
DropItem "DemonAmmo", 70, 60
DropItem "Gas", 70, 60
SeeSound "imp/sight"
PainSound "imp/pain"
DeathSound "imp/death"
ActiveSound "imp/active"
MeleeSound "imp/melee"
Obituary "%o was burned by a pyro imp."
HitObituary "%o was cut open by a pyro imp."
MeleeDamage 3
States
	{
	Spawn:
		PRIM A 10 A_Look
		PRII A 10 A_Look
		Loop
	See:
		TNT1 A 0 A_Jump(46,"Evade")
		PRIM AABB 3 A_Chase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		PRIM CCDD 3 A_Chase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		Loop
	Evade:
		TNT1 A 0 A_Jump(128,"Evade2")
		TNT1 A 0 ThrustThing(Angle*256/360+64,16,0,0)
		PRIM AAAA 3 A_Chase
		TNT1 A 0 A_Stop
		Goto See
	Evade2:
		TNT1 A 0 ThrustThing(Angle*256/360+192,16,0,0)
		PRIM AAAA 3 A_Chase
		TNT1 A 0 A_Stop
		Goto See
	Melee:
		PRIM EF 5 A_FaceTarget
		PRIM G 5 A_MeleeAttack
		PRIM FE 5 A_FaceTarget
    Missile:
		PRIM EF 6 A_FaceTarget
		TNT1 A 0 A_CustomMissile("PyroImpBallNoGravity",32,0,5,0,0)
		TNT1 A 0 A_CustomMissile("PyroImpBallNoGravity",32,0,-5,0,0)
		PRIM G 5 A_CustomMissile("PyroImpBallNoGravity",32,0,0,0,0)
		Goto See
	Pain:
		TNT1 A 0
        PRIM H 4 A_Pain
        Goto See
	Death:
		TNT1 A 0
		PRIM N 5 A_SpawnItemEx("PyroImpExplosion",0,0,30)
		PRIM O 5 A_XScream
		PRIM P 5
		PRIM Q 5 A_Fall
		PRIM RST 5
		PRIM U 63000 CanRaise
		Stop
	Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		PRIM UTSRQPON 4
		Goto See
	}
}

Actor PyroImpBall : DoomImpBall
{
Renderstyle Add
+RANDOMIZE
+LOWGRAVITY
-NOGRAVITY
DamageType "Fire"
States
	{
	Spawn:
		BAL1 A 1 Bright A_SpawnItemEx("ImpBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		TNT1 A 0 Bright A_SpawnItemEx("PyroImpBallFire",random(1,-1),random(1,-1),random(1,-1),0,0,0,random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		BAL1 B 1 Bright A_SpawnItemEx("ImpBallTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		TNT1 A 0 Bright A_SpawnItemEx("PyroImpBallFire",random(1,-1),random(1,-1),random(1,-1),0,0,0,random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		Loop
	Death:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CustomMissile("PyroImpBallFire2",0,0,0,0)
		BAL1 C 3 Bright A_Explode(5,56,1)
		TNT1 AAAAAAAAA 0 Bright A_SpawnItemEx("PyroImpBallFire",random(1,-1),random(1,-1),random(1,-1),6,0,random(1,-1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		BAL1 DE 4 Bright
		Stop
	Crash:
	XDeath:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CustomMissile("PyroImpBallFire2",0,0,0,0)
		TNT1 A 0 Bright A_SpawnItemEx("OrangeParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom9",0,0,random(0,360),2,random(0,360))
		TNT1 AAA 0 Bright A_CustomMissile("SmokeFX4",0,0,random(0,360),2,random(0,360))
		BAL1 C 3 Bright A_Explode(5,56,1)
		TNT1 AAAAAAAAA 0 Bright A_SpawnItemEx("PyroImpBallFire",random(1,-1),random(1,-1),random(1,-1),6,0,random(1,-1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		BAL1 DE 4 Bright
		Stop
	}
}

actor PyroImpBallNoGravity : PyroImpBall
{
+NOGRAVITY
Speed 15
FastSpeed 19
DamageType "ImpComet"
States
	{
	Death:
		TNT1 A 0 Bright
		BAL1 C 3 Bright A_Explode(5,56,1)
		TNT1 AAAAAAAAA 0 Bright A_SpawnItemEx("PyroImpBallFire",random(1,-1),random(1,-1),random(1,-1),6,0,random(1,-1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		BAL1 DE 3 Bright
		Stop
	Crash:
	XDeath:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_SpawnItemEx("OrangeParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom9",0,0,random(0,360),2,random(0,360))
		TNT1 AAA 0 Bright A_CustomMissile("SmokeFX4",0,0,random(0,360),2,random(0,360))
		BAL1 C 3 Bright A_Explode(5,56,1)
		TNT1 AAAAAAAAA 0 Bright A_SpawnItemEx("PyroImpBallFire",random(1,-1),random(1,-1),random(1,-1),6,0,random(1,-1),random(0,360),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		BAL1 DE 3 Bright
		Stop
	}
}

Actor PyroImpFire
{
Height 8
Radius 6
Scale 0.7
Renderstyle Add
Damage (0)
+MISSILE
+DROPOFF
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+RANDOMIZE
States
	{
	Spawn:
		TNT1 A 0 Bright
		CFCF ABCDEFGHIJKLMNOP 2 Bright 
		Stop
	}
}

Actor PyroImpBallFire : PyroImpFire
{
Scale 0.4
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 2 Bright
		CFCF ABCDEFGHIJKLMNOP 1 Bright 
		Stop
	}
}

Actor PyroImpBallFire2
{
PROJECTILE
Height 40
Radius 8
Scale 2.0
Renderstyle Add
Alpha 0.90
-NOGRAVITY
+LOWGRAVITY
+NOEXPLODEFLOOR
+NODAMAGETHRUST
+THRUGHOST
DONTHURTSHOOTER
DamageType "Fire"
States
	{
	Spawn:
		TNT1 A 0 Bright
		CFCF PON 2 Bright 
		CFCF A 1 Bright A_PlaySound("weapons/onfire")
		CFCF A 1 Bright A_Explode(4,56,0)
		CFCF BCDEFGHIJKLM 2 Bright A_Explode (4,56,0)
		CFCF A 1 Bright A_PlaySound ("weapons/onfire")
		CFCF A 1 Bright A_Explode(4,56,0)
		CFCF BCDEFGHIJKLM 2 Bright A_Explode(4,56,0)
		CFCF A 1 Bright A_PlaySound ("weapons/onfire")
		CFCF A 1 Bright A_Explode(4,56,0)
		CFCF BCDEFGHIJKLM 2 Bright A_Explode(4,56,0)
		CFCF NOP 2 Bright 
		Stop
	}
}

Actor PyroImpExplosion
{
height 8
radius 6
scale 0.8
renderstyle Add
alpha 0.7
damage 0
+NOBLOCKMAP
+NOGRAVITY
DamageType "ImpComet"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_PlaySound ("weapons/rocklx")
		MISL B 4 Bright A_Explode(15,72,1)
		MISL CDE 6 Bright
		Stop
	}
}