ACTOR HEMStoneImp 30342
{
Monster
Health 500
Height 58
Radius 20
Mass 600
Scale 1.15
Speed 3
FastSpeed 4
MeleeRange 70
BloodCOLOR "None"
BloodType "StoneBitsSpawner"
PainChance 8
Painchance "Stun", 0
Painchance "Mine", 0
Painchance "Explosion", 0
Painchance "AdvancedImp", 0
Painchance "Shadow", 0
Missiletype "LobbedRock"
+NOFEAR
+FLOORCLIP
+DONTRIP
+NORADIUSDMG
+NOBLOODDECALS
+QUICKTORETALIATE
+DONTHARMSPECIES
Species "Imps"
Damagetype "Stun"
Damagefactor "Acid", 0.0
Damagefactor "Fire", 0.1
DamageFactor "Ice", 0.1
Damagefactor "Poison", 0.0
Damagefactor "PoisonCloud", 0.0
Damagefactor "Electric", 0.01
Damagefactor "Disintegrate", 0.25
Damagefactor "AdvancedImp", 0.2
DamageFactor "PDTBFG", 0.5
DamageFactor "PDTBFGTracer", 0.5
DamageFactor "PlayerDevTracer", 0.25
DamageFactor 0.95
//No Infighting
Damagefactor "Stun", 0.0
Damagefactor "HellionFire", 0.0
DropItem "LifeEssence", 200, 4
DropItem "HEMArmorBonusMax4", 200
SeeSound "imp/sight"
ActiveSound "imp/active"
PainSound "imp/pain"
DeathSound "imp/death"
Obituary "%o got some fisting from a Stone Imp."
Tag "Stone Imp"
States
	{
	Spawn:
		GIMP A 10 A_Look
		Loop
	See:
		GIMP AAAAAABBBBBB 1 A_Chase("Melee","")
		TNT1 A 0 A_SpawnItemEx("HoofStep2",0,0,2,0,0,-20)
		GIMP CCCCCCDDDDDD 1 A_Chase("Melee","")
		TNT1 A 0 A_SpawnItemEx("HoofStep2",0,0,2,0,0,-20)
		GIMP A 0 A_Jump(30,"Missile")
		Loop
	Melee:
		TNT1 A 0
		GIMP EF 8 A_FaceTarget
		GIMP G 6 A_CustomMeleeAttack(8*random(3,7),"stoneimp/hit","None","Stun")
		Goto See
	Missile:
		TNT1 A 0
		TNT1 A 0 A_JumpIfTargetInLos("Missile2",90,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
		GoTo See
	Missile2:
		GIMP EF 4 A_FaceTarget
		GIMP G 2 A_ThrowGrenade("LobbedRock",37)//A_MissileAttack
		GoTo See
	Pain:
		TNT1 A 0
		GIMP H 2
		GIMP H 2 A_Pain
		TNT1 A 0 A_Jump(128,"Missile")
		Goto See
	Death:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,"RePetrification")
		GIMP I 6 A_ScreamAndUnblock
		TNT1 A 0 A_PlaySound("StoneArmor/Destroy",0,1.5,0)
		TNT1 AAAAAA 0 A_SpawnItemEx("StoneBitsSpawner2",0,0,35)
		TNT1 AAAA 0 A_CustomMissile("SmokeFX3",36,0,random(0,360),2,random(0,360))
		GIMP J 5
		GIMP K 4
		GIMP L 3
		GIMP M 3
		GIMP N 63000 CanRaise
		Stop
	RePetrification:
		TNT1 A 0
		GIMP I 6 A_ScreamAndUnblock
		TNT1 A 0 A_PlaySound("StoneArmor/Destroy",0,1.5,0)
		TNT1 AAAAAA 0 A_SpawnItemEx("StoneBitsSpawner2",0,0,35)
		TNT1 A 0 A_SpawnItemEx("HemDoomImp1",0,0,1,0,0,0,0,SXF_NOCHECKPOSITION)
		TNT1 AAAA 0 A_CustomMissile("SmokeFX3",36,0,random(0,360),2,random(0,360))
		GIMP JJJJJJJJJJ 1 A_FadeOut(0.3,1)
		Stop
	Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		GIMP ML 8
		GIMP KJI 6
		Goto See
	}
}

Actor LobbedRock
{
PROJECTILE
Height 6
Radius 3
Scale 0.7
Speed 20
VSpeed 3
Bouncetype Doom
Bouncecount 10
Damage (random(15,30))
-NOGRAVITY
+DOOMBOUNCE
+BOUNCEONACTORS
Damagetype "Stun"
SeeSound "stoneimp/hit"
States
	{
	Spawn:
		STNB ABCDEFGH 3
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag("MISSILE",0)
		STNB H 200
		STNB H 5 A_FadeOut(0.1,1)
		Wait
	}
}

Actor HemDoomImp1
{
Monster
Health 200
Height 56
Radius 20
Mass 100
Speed 8
Mass 600
PainChance 200
PainChance "AdvancedImp", 0
Missiletype "NewDoomImpBall"
MeleeDamage 4
+FLOORCLIP
+QuickToRetaliate
+NORADIUSDMG
+DONTRIP
+NOBLOODDECALS
+DontHurtSpecies
+DontHarmSpecies
+DONTHARMCLASS
Species "Imps"
Damagefactor "AdvancedImp", 0.2
//No Infighting
Damagefactor "Stun", 0.0
Damagefactor "HellionFire", 0.0
DropItem "LifeEssence", 196
DropItem "LifeEssence", 196
DropItem "LifeEssence", 196
DropItem "LifeEssence", 196
DropItem "HEMArmorBonusMax15", 196
SeeSound "imp/sight"
ActiveSound "imp/active"
PainSound "imp/pain"
DeathSound "imp/death"
Obituary "%o was burnt to a crisp by an Imp."
HitObituary "$OB_IMPHIT"
Tag "Imp"
States
	{
	Spawn:
		TROO A 10 A_Look
		Loop
	See:
		TROO AAAABBBB 1 A_Chase
		TROO A 0 A_FastChase
		TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
		TROO CCCCDDDD 1 A_Chase
		TROO A 0 A_FastChase
		TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
		Loop
	Melee:
	Missile:
		TROO EEFFG 2 A_FaceTarget
		TROO G 1 A_ComboAttack
		Goto See
	Pain:
		TROO H 2
		TROO H 2 A_Pain
		Goto See
	Death:
		TROO I 6
		TROO J 6 A_Scream
		TROO K 5
		TROO L 5 A_Fall
		TROO M 1 A_SpawnItem("BodyCrash",0,0,0,0)
		TROO M 63000 CanRaise
		Stop
	XDeath:
		TROO N 3 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
		TROO O 3 A_XScream
		TROO P 3
		TROO Q 3 A_Fall
		TROO RST 3
		TROO U 63000 CanRaise
		Stop
	Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		TROO TSRQPON 5
		Goto See
	}
}

Actor NewDoomImpBall : DoomImpBall
{
Speed 19
FastSpeed 25
Scale 1.28
Decal DoomImpScorch
Damage (5*random(1,4))
+DontHurtSpecies
+DontHarmSpecies
+DONTHARMCLASS
Species "Imps"
States
	{
	Spawn:	
		BAL8 AB 1 Bright A_SpawnItemEx("DoomImpBallTrail",0,0,RANDOM(-3,3),0,0,0,0,128,0)	
		Loop
	Crash:
	Death:
		TNT1 A 0
		BAL8 CDE 3 Bright
		Stop
	XDeath:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("RedParticleSpawner",0,0,0,0,0,0,0,128)
		TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner",0,0,0,0,0,0,0,128)
		TNT1 AAAA 0 A_CustomMissile("Kaboom10",0,0,random(0,360),2,random(0,360))
		TNT1 AA 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))
		TNT1 A 0 A_Explode(12,80,0)
		BAL8 CDE 3 Bright
		Stop
	}
}

ACTOR DoomImpBallTrail
{
RENDERSTYLE Add
+ClientSideOnly
+NOINTERACTION
+FORCEXYBILLBOARD
States
	{
	Spawn:
		TNT1 A 1
		BAL8 AB 1 Bright A_FadeOut(0.15,1)
		Goto Spawn+1
	}
}

ACTOR StoneBitsSpawner : BulletPuff
{
-ALLOWPARTICLES
States
	{
	Spawn:
		TNT1 A 0
		Goto High
		TNT1 A 0
		Goto Medium
		TNT1 A 0
	Low:
		TNT1 AA 0 A_SpawnItemEx("StoneBitsSmall",0,0,8,random(-4,4),random(-4,4),random(2,5),0,SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
		Goto SpawnPuff
	Medium:
		TNT1 AAA 0 A_SpawnItemEx("StoneBitsMedium",0,0,8,random(-4,4),random(-4,4),random(2,5),0,SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
		Goto SpawnPuff
	High:
		TNT1 AAAAA 0 A_SpawnItemEx("StoneBitsLarge",0,0,8,random(-4,4),random(-4,4),random(2,5),0,SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
	SpawnPuff:
		PUFF A 4
		PUFF ABCD 4
		Stop
	}
}

Actor StoneBitsSpawner2 : BulletPuff
{
-ALLOWPARTICLES
States
	{
	Spawn:
		TNT1 A 0
		Goto High
		TNT1 A 0
		Goto Medium
		TNT1 A 0
	Low:
		TNT1 AA 0 A_SpawnItemEx("StoneBitsSmall",0,0,0,random(-8,8),random(-8,8),random(-5,11),0,SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
		Goto SpawnPuff
	Medium:
		TNT1 AAA 0 A_SpawnItemEx("StoneBitsMedium",0,0,0,random(-8,8),random(-8,8),random(-5,11),0,SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
		Goto SpawnPuff
	High:
		TNT1 AAAAA 0 A_SpawnItemEx("StoneBitsLarge",0,0,0,random(-8, 8),random(-8,8),random(-5,11),0,SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
	SpawnPuff:
		PUFF A 4
		PUFF ABCD 4
		Stop
	}
}

ACTOR StoneBitsBase
{
Height 2
Radius 1
+NOTELEPORT
+NOBLOCKMAP
States
	{
	Fade1A:
		STB1 A 1 A_FadeOut(0.25,1)
		Wait
	Fade1B:
		STB1 B 1 A_FadeOut(0.25,1)
		Wait
	Fade1C:
		STB1 C 1 A_FadeOut(0.25,1)
		Wait
	Fade1D:
		STB1 D 1 A_FadeOut(0.25,1)
		Wait
	Fade3A:
		STB3 A 1 A_FadeOut(0.25,1)
		Wait
	Fade3B:
		STB3 B 1 A_FadeOut(0.25,1)
		Wait
	Fade3C:
		STB3 C 1 A_FadeOut(0.25,1)
		Wait
	Fade3D:
		STB3 D 1 A_FadeOut(0.25,1)
		Wait
	Fade4A:
		STB4 A 1 A_FadeOut(0.25,1)
		Wait
	Fade4B:
		STB4 B 1 A_FadeOut(0.25,1)
		Wait
	Fade4C:
		STB4 C 1 A_FadeOut(0.25,1)
		Wait
	Fade4D:
		STB4 D 1 A_FadeOut(0.25,1)
		Wait
	Fade2A:
		STB2 A 1 A_FadeOut(0.25,1)
		Wait
	Fade2B:
		STB2 B 1 A_FadeOut(0.25,1)
		Wait
	}
}

ACTOR StoneBitsSmall : StoneBitsBase
{
States
	{
	Spawn:
		TNT1 AA 0 A_Jump(256,"SpawnA","SpawnB")
	SpawnA:
		TNT1 A 0 A_Jump(256,1,2,3,4)
		STB1 A 10
		Goto Fade1A
		STB1 B 10
		Goto Fade1B
		STB1 C 10
		Goto Fade1C
		STB1 D 10
		Goto Fade1D
	SpawnB:
		TNT1 A 0 A_Jump(256,1,2)
		STB2 A 10
		Goto Fade2A
		STB2 B 10
		Goto Fade2B
	}
}

ACTOR StoneBitsMedium : StoneBitsBase
{
States
	{
	Spawn:
		TNT1 AA 0 A_Jump(256,"SpawnA","SpawnB","SpawnC")
	SpawnA:
		TNT1 A 0 A_Jump(256,1,2,3,4)
		STB1 A 10
		Goto Fade1A
		STB1 B 10
		Goto Fade1B
		STB1 C 10
		Goto Fade1C
		STB1 D 10
		Goto Fade1D
	SpawnB:
		TNT1 A 0 A_Jump(256,1,2)
		STB2 A 10
		Goto Fade2A
		STB2 B 10
		Goto Fade2B
	SpawnC:
		TNT1 A 0 A_Jump(256,1,2,3,4)
		STB3 A 10
		Goto Fade3A
		STB3 B 10
		Goto Fade3B
		STB3 C 10
		Goto Fade3C
		STB3 D 10
		Goto Fade3D
	}
}

ACTOR StoneBitsLarge : StoneBitsBase
{
States
	{
	Spawn:
		TNT1 AA 0 A_Jump(256,"SpawnB","SpawnC","SpawnD")
	SpawnB:
		TNT1 A 0 A_Jump(256,1,2)
		STB2 A 10
		Goto Fade2A
		STB2 B 10
		Goto Fade2B
	SpawnC:
		TNT1 A 0 A_Jump(256,1,2,3,4)
		STB3 A 10
		Goto Fade3A
		STB3 B 10
		Goto Fade3B
		STB3 C 10
		Goto Fade3C
		STB3 D 10
		Goto Fade3D
	SpawnD:
		TNT1 A 0 A_Jump(256,1,2,3,4)
		STB4 A 10
		Goto Fade4A
		STB4 B 10
		Goto Fade4B
		STB4 C 10
		Goto Fade4C
		STB4 D 10
		Goto Fade4D
	}
}