Actor StoneDemon : BullFiend
{
Monster
Health 400
Height 48
Radius 24
Speed 13
Mass 800
MaxTargetRange 200
RadiusDamageFactor 0.25
BloodType "StoneBitsSpawner1"
+NOPAIN
+FLOORCLIP
+FASTMELEE
+DONTHURTSPECIES
+DONTHARMSPECIES
+DONTHARMCLASS
Species "Fiends"
Damagefactor "Acid", 0.0
Damagefactor "Fire", 0.1
DamageFactor "Ice", 0.1
DamageFactor "FreezerBurn", 0.1
Damagefactor "Poison", 0.0
Damagefactor "PoisonCloud", 0.0
Damagefactor "Electric", 0.01
Damagefactor "Disintegrate", 0.25
DamageFactor "PDTBFG", 0.25
DamageFactor "PDTBFGTracer", 0.25
DamageFactor "PlayerDevBall", 0.125
DamageFactor "PlayerDevBall2", 0.125
DamageFactor "PlayerDevTracer", 0.125
DamageFactor "PlayerDTBFGRailgunSlug", 0.125
DamageFactor 0.75
//No Infighting
Damagefactor "Stun", 0.0
DamageFactor "FiendFire", 0.0
DamageFactor "DTFiendEx", 0.0
DropItem "LifeEssence", 125
DropItem "ArmorBonusMax", 125
DropItem "ArmorBonusMax", 125
SeeSound "stone/sight"
ActiveSound "demon/active"
AttackSound "demon/melee"
PainSound "demon/pain"
DeathSound "stone/death"
HitObituary "%o was smashed by a stone demon."
Tag "Stone Demon"
States
	{
	Spawn:
		STD2 A 10 A_Look
		Loop
	See: 
		STD2 AABB 2 A_Chase
		TNT1 A 0 A_SpawnItem("HeavyFleshStep",0,0,0,0)
		STD2 CCDD 2 A_Chase
		TNT1 A 0 A_SpawnItem("HeavyFleshStep",0,0,0,0)
		Loop
	Melee:
		TNT1 A 0
		STD2 EF 8 A_FaceTarget
		STD2 G 6 A_CustomMeleeAttack(28,"stone/melee",none,"Stun")
		Goto See
	Missile:
		TNT1 A 0
		TNT1 A 0 A_JumpIfCloser(200,"Missile2")
		Goto See
	Missile2:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("demon/melee")
		STD2 EF 7 A_FaceTarget
		TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,1)
		TNT1 A 0 ThrustThingZ(0,20,0,1)
		STD2 F 2 A_Recoil(-24)
		STD2 F 3 A_CustomMissile("PinkyLunge",18,0,0,CMF_AIMDIRECTION)
		STD2 G 6
		STD2 G 2 A_ScaleVelocity(0.2)
		TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,0)
		STD2 G 1 A_ScaleVelocity(0)
		Goto See	
	Pain:
		STD2 H 3
		STD2 H 3 A_Pain
		TNT1 A 0 A_JumpIfTargetInLos("Missile2",90,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
		Goto See
	XDeath:
	Death:
		TNT1 A 0
		STD2 I 5 A_CustomMissile("SmokeFX",Random(10,40),0,random(0,360),2,random(0,360))
		TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,0,Random(4,-4),Random(4,-4),Random(4,8),0,SXF_CLIENTSIDE,0)
		STD2 J 5 A_Scream
		STD2 K 5 A_CustomMissile("SmokeFX",Random(10,40),0,random(0,360),2,random(0,360))
		TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,0,Random(4,-4),Random(4,-4),Random(4,8),0,SXF_CLIENTSIDE,0)
		STD2 L 5 A_NoBlocking
		STD2 MNOP 4
		STD2 Q 63000 CanRaise
		Stop
	Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		STD2 OPNMLKJI 3
		Goto See	
	}
}

ACTOR StoneBitsSpawner1 : 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)
		Goto SpawnPuff
	SpawnPuff:
		PUFF A 4 Bright A_PlaySound("stoneimp/impact")
		PUFF ABCD 4
		Stop
	}
}

ACTOR StoneBitsBase1
{
Radius 2
Height 2
+NOTELEPORT
+NOBLOCKMAP
States
	{
	Fade:
		"####" "#" 1 A_FadeOut(0.25,1)
		Wait
	}
}

ACTOR StoneBitsSmall : StoneBitsBase1
{
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 Fade
		STB1 B 10
		Goto Fade
		STB1 C 10
		Goto Fade
		STB1 D 10
		Goto Fade
	SpawnB:
		TNT1 A 0 A_Jump(256,1,2)
		STB2 A 10
		Goto Fade
		STB2 B 10
		Goto Fade
	}
}

ACTOR StoneBitsMedium : StoneBitsBase1
{
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 Fade
		STB1 B 10
		Goto Fade
		STB1 C 10
		Goto Fade
		STB1 D 10
		Goto Fade
	SpawnB:
		TNT1 A 0 A_Jump(256,1,2)
		STB2 A 10
		Goto Fade
		STB2 B 10
		Goto Fade
	SpawnC:
		TNT1 A 0 A_Jump(256,1,2,3,4)
		STB3 A 10
		Goto Fade
		STB3 B 10
		Goto Fade
		STB3 C 10
		Goto Fade
		STB3 D 10
		Goto Fade
	}
}

ACTOR StoneBitsLarge : StoneBitsBase1
{
States
	{
	Spawn:
		TNT1 AA 0 A_Jump(256,"SpawnB","SpawnC","SpawnD")
		SpawnB:
		TNT1 A 0 A_Jump(256,1,2)
		STB2 A 10
		Goto Fade
		STB2 B 10
		Goto Fade
	SpawnC:
		TNT1 A 0 A_Jump(256,1,2,3,4)
		STB3 A 10
		Goto Fade
		STB3 B 10
		Goto Fade
		STB3 C 10
		Goto Fade
		STB3 D 10
		Goto Fade
	SpawnD:
		TNT1 A 0 A_Jump(256,1,2,3,4)
		STB4 A 10
		Goto Fade
		STB4 B 10
		Goto Fade
		STB4 C 10
		Goto Fade
		STB4 D 10
		Goto Fade
	}
}