actor PyroImp 14564
{
    Health 100
    Radius 20
    Height 56
    Speed 9
    PainChance 80
	Mass 100
    MONSTER 
    +FLOORCLIP
	+DONTHURTSPECIES
	+MissileMore
	Species "Imps"
	PainChance "SoulToxic", 60
    PainChance "FatFlamer", 0
    PainChance "FiendFire", 0
    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,7)
	TNT1 A 0 ThrustThing(Angle*256/360+64,16,0,0)
	PRIM AAAA 3 A_Chase
	TNT1 A 0 A_Stop
	Goto See
	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
		PRIM G 0 A_CustomMissile ("PyroImpBallNoGravity",32,0,5,0,0)
		PRIM G 0 A_CustomMissile ("PyroImpBallNoGravity",32,0,-5,0,0)
        PRIM G 5 A_CustomMissile ("PyroImpBallNoGravity",32,0,0,0,0)
		Goto See
    Pain:
        PRIM H 4 A_Pain
        Goto See
Death:
    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 -1
    Stop
Raise:
    PRIM UTSRQPON 4
    Goto See
    }
}

actor PyroImpBall : DoomImpBall
{
  renderstyle Add
  DamageType Fire
  +RANDOMIZE
  +LOWGRAVITY
  -NOGRAVITY
  states
  {
  Spawn:
    BAL1 A 1 bright A_SpawnItemEx("ImpBallTrail",0,0,0,0,0,0,0,128,0)
    BAL1 A 0 bright A_SpawnItemEx (PyroImpBallFire, random(1,-1), random(1,-1), random(1,-1), 0, 0, 0 , random(0,360), 16, 0)
    BAL1 B 1 bright A_SpawnItemEx("ImpBallTrail",0,0,0,0,0,0,0,128,0)
    BAL1 B 0 bright A_SpawnItemEx (PyroImpBallFire, random(1,-1), random(1,-1), random(1,-1), 0, 0, 0 , random(0,360), 16, 0)
    loop
  Death:
	BAL1 C 0 bright A_CustomMissile (PyroImpBallFire2, 0, 0, 0, 0)
    TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom9", 0, 0, random(0,360), 2, random(0,360))
    TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
    BAL1 C 3 bright A_Explode (5, 56, 1)
    BAL1 CCCCCCCCC 0 bright A_SpawnItemEx (PyroImpBallFire, random(1,-1), random(1,-1), random(1,-1), 6, 0, random(1,-1) , random(0,360), 0, 0)
    BAL1 DE 4 bright
    stop
  }
}

actor PyroImpBallNoGravity : PyroImpBall
{
	+NOGRAVITY
	 Speed 15
     FastSpeed 19
	 DamageType "ImpComet"
	states
  	{
  Death:
    TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom9", 0, 0, random(0,360), 2, random(0,360))
    TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
    BAL1 C 3 bright A_Explode (5, 56, 1)
    BAL1 CCCCCCCCC 0 bright A_SpawnItemEx (PyroImpBallFire, random(1,-1), random(1,-1), random(1,-1), 6, 0, random(1,-1) , random(0,360), 0, 0)
    BAL1 DE 3 bright
    stop
  }
}

actor PyroImpFire
{
  radius 6
  height 8
  damage 0
  scale 0.7
  renderstyle Add
  +NOBLOCKMAP
  +NOGRAVITY
  +MISSILE
  +NOTELEPORT
  +DONTSPLASH
  +RANDOMIZE
  states
  {
  Spawn:
    CFCF ABCDEFGHIJKLMNOP 2 bright 
    stop
  }
}

actor PyroImpBallFire : PyroImpFire
{
  scale 0.4
  states
  {
  Spawn:
    TNT1 A 2
    CFCF ABCDEFGHIJKLMNOP 1 bright 
    stop
  }
}

actor PyroImpBallFire2
{
  DamageType Fire
  scale 2.0
  Radius 8
  Height 40
  renderstyle Add
  alpha 0.90
  PROJECTILE
  -NOGRAVITY
  +LOWGRAVITY
  +NOEXPLODEFLOOR
  +NODAMAGETHRUST
  +THRUGHOST
  DONTHURTSHOOTER
  states
  {
  Spawn:
    CFCF PON 2 bright 
	CFCF A 1 bright A_PlaySound("weapons/onfire")
	CFCF A 1 bright A_Explode (4, 56)
	CFCF BCDEFGHIJKLM 2 bright A_Explode (4, 56)
	CFCF A 1 bright A_PlaySound ("weapons/onfire")
	CFCF A 1 bright A_Explode (4, 56)
	CFCF BCDEFGHIJKLM 2 bright A_Explode(4, 56)
	CFCF A 1 bright A_PlaySound ("weapons/onfire")
	CFCF A 1 bright A_Explode (4, 56)
	CFCF BCDEFGHIJKLM 2 bright A_Explode (4, 56)
	CFCF NOP 2 bright 
    stop
  }
}

actor PyroImpExplosion
{
  radius 6
  height 8
  damage 0
  scale 0.8
  renderstyle Add
  DamageType "ImpComet"
  alpha 0.7
  +NOBLOCKMAP
  +NOGRAVITY
  states
  {
  Spawn:
    MISL B 0 bright A_PlaySound ("weapons/rocklx")
  	MISL B 4 bright A_Explode (15, 72, 1)
	MISL CDE 6 bright
	stop
  }
}

