Actor Hellion
{
Monster
Health 210
Radius 18
Height 54
Mass 120
Speed 6
BloodColor Yellow
Painchance "Mine", 128
Painchance "AdvancedImp", 0
Painchance "Shadow", 0
PainChance 60
+NoTarget
+FloorClip
+QuickToRetaliate
+DONTHARMSPECIES
Species "Viles"
Species "AdvancedImp"
Damagetype "AdvancedImp"
Damagefactor "Acid", 0.7
Damagefactor "Fire", 0.1
//No Infighting
Damagefactor "VileFires", 0.0
Damagefactor "HellionFire", 0.0
Damagefactor "AdvancedImp", 0.0
Damagefactor "Shadow", 0.0
Damagefactor "Nightshade", 0.0
Damagefactor "Catharsi15k", 0.0
Damagefactor "Catharsi10K", 0.0
DropItem "LifeEssence", 200, 8
DropItem "HEMArmorBonusMax8", 200
SeeSound "monster/hlnsit"
PainSound "monster/hlnpai"
DeathSound "monster/hlndth"
ActiveSound "monster/hlnact"
Obituary "A Hellion ignited %o alive."
var int user_health;
States
	{
	Spawn:
		H2LN A 10 A_Look
		Loop
	Idle:
		H2LN A 7 A_Look
		TNT1 A 0 HealThing(1)
		H2LN A 7 A_Look
		TNT1 A 0 HealThing(1)
		H2LN A 7 A_Look
		TNT1 A 0 HealThing(1)
		H2LN A 7 A_Look
		TNT1 A 0 HealThing(1)
		H2LN A 7 A_Look
		TNT1 A 0 HealThing(1)
		Loop
	See:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag(NOPAIN,0)
		TNT1 A 0 A_Jump(40,"Revive")
		TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
		H2LN AAAABBBBCCCCDDDD 1 A_Chase
		TNT1 A 0 HealThing(random(1,3))
		TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
		H2LN EEEFFF 1 A_Chase
		Loop
	Revive:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		H2LN AAAABBBBCCCCDDDD 1 A_VileChase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		H2LN EEEEFFFF 1 A_VileChase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		H2LN AAAABBBBCCCCDDDD 1 A_VileChase
		TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
		H2LN EEEEFFFF 1 A_VileChase
		TNT1 A 0 A_Jump(72,"See")
		Loop
	QuadRevive:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag(NOPAIN,1)
		TNT1 A 0 A_SpawnItemEx("DarkHellionReviveGhost")
		H2LN GGGG 2 Bright A_SpawnItemEx("HemHellionResRadius",0,0,0,random(20,-20),random(20,-20),0,random(0,360),128)
		H2LN HGHG 10 Bright
		TNT1 A 0 A_Explode(30,36,0)
		TNT1 A 0 A_SetUserVar("user_health",ACS_NamedExecuteWithResult("Hem_GetCurrentHealth")-20)
		TNT1 A 0 A_JumpIf(user_health < 1,"Kill")
		TNT1 A 0 ACS_NamedExecuteAlways("Hem_SetCurrentHealth",0,user_health)
		GoTo See
	Heal:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag(NOPAIN,1)
		TNT1 A 0 A_Jump(20,"QuadRevive")
		H2LN "GHG" 10 Bright
		TNT1 A 0 A_Explode(10,36,0)
		TNT1 A 0 A_SetUserVar("user_health",ACS_NamedExecuteWithResult("Hem_GetCurrentHealth")-10)
		TNT1 A 0 A_JumpIf(user_health < 1,"Kill")
		TNT1 A 0 ACS_NamedExecuteAlways("Hem_SetCurrentHealth",0,user_health)
		GoTo See
	Missile:
		TNT1 A 0
		TNT1 A 0 A_Jump(20,"QuadRevive")
		TNT1 A 0 HealThing(random(1,2))
		H2LN G 0 A_VileStart
		H2LN GHIJ 6 Bright A_FaceTarget
		TNT1 A 0 A_Jump(53,"Spreadshot")
		TNT1 A 0 A_Jump(39,"Tracers")
		H2LN KKKKK 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("HellionBall",32,0,random(-2,2),0,0)
		H2LN KKKKK 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("HellionBall",32,0,random(-2,2),0,0)
		H2LN KKKKK 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("HellionBall",32,0,random(-2,2),0,0)
		H2LN KKKKK 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("HellionBall",32,0,random(-2,2),0,0)
		H2LN KKKKK 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("HellionBall",32,0,random(-2,2),0,0)
		H2LN L 7
		Goto See
	Spreadshot:
		H2LN KKKKKKKK 1 Bright A_FaceTarget
		TNT1 AAA 0 A_CustomMissile("HellionBall",32,0,0,0,0)
		TNT1 AA 0 A_CustomMissile("HellionBall",32,0,-20,0,0)
		TNT1 AA 0 A_CustomMissile("HellionBall",32,0,20,0,0)
		H2LN L 7
		GoTo See
	Tracers:
		H2LN KKKKKKKK 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("HellionTracer1",32,5,0,0,0)
		TNT1 A 0 A_CustomMissile("HellionTracer2",32,-5,0,0,0)
		H2LN L 7
		GoTo See
	Pain:
		H2LN M 2
		H2LN M 2 A_Pain
		Goto See
	Kill:
		TNT1 A 0
		TNT1 A 0 A_Die
		Goto Death
	XDeath:
	Death:
		H2LN N 6
		H2LN O 6 A_Scream
		H2LN PQR 6
		H2LN S 6 A_Fall
		TNT1 A 0 A_ChangeFlag(SOLID,0)
		TNT1 A 0 A_ChangeFlag(THRUACTORS,1)
		Goto Fall
	Fall:
		H2LN S 1 A_CheckFloor("Land")
		TNT1 A 0 A_JumpIfInventory("Tic",525,"Land")
		TNT1 A 0 A_GiveInventory("Tic",1)
		Loop
	Land:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_SpawnItem("BodyCrash",0,0,0,0)
		TNT1 A 0 A_ChangeFlag(CORPSE,1)
		TNT1 A 0 A_ChangeFlag(SOLID,0)
		TNT1 A 0 A_ChangeFlag(THRUACTORS,0)
		TNT1 A 0 A_ChangeFlag(MOVEWITHSECTOR,1)
		H2LN T 1
		HLDT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_SpawnItemEx("HellionCorpseIgnition",0,0,0)
		HLDT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_SpawnItemEx("HellionCorpseIgnition",0,0,0)
		HLDT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_SpawnItemEx("HellionCorpseIgnition",0,0,0)
		HLDT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_SpawnItemEx("HellionCorpseIgnition",0,0,0)
		HLDT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_SpawnItemEx("HellionCorpseIgnition",0,0,0)
		HLDT BBBCCCDDD 2 Bright A_SpawnItemEx("HellionCorpseIgnition",0,0,0)
		HLDT EFG 3
		TNT1 A 0 A_RemoveChildren
		HLDT H 63000 CanRaise
		Stop
	/*XDeath:
		H2LN U 5
		H2LN V 5 A_XScream
		H2LN W 5
		H2LN X 5 A_NoBlocking
		H2LN YZ 5
		H2L2 "AB" 5
		H2L2 C 63000 CanRaise
		Stop*/
	Raise:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag(MOVEWITHSECTOR,0)
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		HLDT HGFE 4
		H2LN TSRQPON 6
		Goto See
	}
}

Actor HellionCorpseIgnition : RedParticleSpawner
{
-ClientSideOnly
-NoInteraction
+Notarget
+BloodlessImpact
+NODAMAGETHRUST
-Solid
-Shootable
+Ripper
+ThruSpecies
+DontHurtSpecies
+DontHarmSpecies
Species "AdvancedImp"
Damagetype "HellionFire"
Obituary "%o was burnt by a Hellion's corpse."
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_Explode(random(1,4),50)
		TNT1 A 0 Bright A_PlaySound("monster/ambientfire")
		TNT1 AA 0 Bright A_SpawnItemEx("GhostFire",random(-18,18),random(18,-18),random(5,12),0,0,random(2,5),0,SXF_CLIENTSIDE,0)
		TNT1 A 1 Bright
		Stop
	}
}

Actor HellionBall : CacodemonBall
{
Damage 5
Speed 15 
Scale 0.9
Decal DoomImpScorch
+DontHurtSpecies
+DontHarmSpecies
+ThruSpecies
+ThruGhost
+StrifeDamage
+ForceXYBillboard
Species ""
Species "Viles"
Species "AdvancedImp"
Damagetype ""
Damagetype "AdvancedImp"
SeeSound "hellion/ballfire"
DeathSound "Hellion/balldth"
States
	{
	Spawn:
		H2BL AAABBB 1 Bright A_SpawnItemEx("HellionPuff",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		Loop
	Death:
		TNT1 A 0 Bright
		H2BL JKLMN 3 Bright
		Stop
	Crash:
	XDeath:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_SpawnItemEx("OrangeParticleSpawner",0,0,0,0,0,0,0,128)
		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))
		H2BL JKLMN 3 Bright
		Stop
	}
}

Actor HellionPuff
{   
Radius 3
Height 3
Scale 0.7
RenderStyle Add
Alpha 1.0
+ClientsideOnly
+NoInteraction
+ForceXYBillboard
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TNT1 A 1 Bright
		H2BL ABCDEFGHI 1 Bright A_FadeOut(0.1,1)
		Wait
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

Actor HellionTracer1 : HellionBall
{
Speed 35
Scale 1.3
Damage 3
Decal DoomImpScorch
+SeekerMissile
+HexenBounce
BounceCount 3
BounceFactor 1.2
WallBounceFactor 1.2
SeeSound "HellionTracerFire"
DeathSound "HellionTracerHit"
States
	{
	Spawn:
		CFFX N 1 Bright A_SpawnItem("HellionTracerTail")
		TNT1 A 0 Bright A_Explode(3,70,0)
		TNT1 A 0 Bright A_Weave(3,3,1,1.5)
		CFFX N 1 Bright A_SpawnItem("HellionTracerTail")
		TNT1 A 0 Bright A_Explode(3,70,0)
		TNT1 A 0 Bright A_Weave(3,3,1,1.5)
		CFFX N 1 Bright A_SpawnItem("HellionTracerTail")
		TNT1 A 0 Bright A_Weave(3,3,1,1.5)
		TNT1 A 0 Bright A_Explode(3,70,0)
		CFFX N 1 Bright A_SpawnItem("HellionTracerTail")
		TNT1 A 0 Bright A_Weave(3,3,1,1.5)
		TNT1 A 0 Bright A_Explode(3,70,0)
		CFFX N 1 Bright A_SpawnItem("HellionTracerTail")
		TNT1 A 0 Bright A_Weave(3,3,1,1.5)
		TNT1 A 0 Bright A_Explode(3,70,0)
		TNT1 A 0 Bright A_SeekerMissile(18,9)
		Loop
	Death:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_Explode(15,64,0)
		TNT1 A 0 Bright A_SpawnItemEx("OrangeParticleSpawner",0,0,0,0,0,0,0,128)
		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))
		CFCF QRSTUVWXYZZZZZZZZZ 3 Bright A_FadeOut(0.1,1)
		Stop
	}
}

Actor HellionTracer2 : HellionTracer1
{ 
States
	{
	Spawn:
		CFFX N 1 Bright A_SpawnItem("HellionTracerTail")
		TNT1 A 0 Bright A_Weave(3,3,-1,-1.5)
		TNT1 A 0 Bright A_Explode(3,70,0)
		CFFX N 1 Bright A_SpawnItem("HellionTracerTail")
		TNT1 A 0 Bright A_Weave(3,3,-1,-1.5)
		TNT1 A 0 Bright A_Explode(3,70,0)
		CFFX N 1 Bright A_SpawnItem("HellionTracerTail")
		TNT1 A 0 Bright A_Weave(3,3,-1,-1.5)
		TNT1 A 0 Bright A_Explode(3,70,0)
		CFFX N 1 Bright A_SpawnItem("HellionTracerTail")
		TNT1 A 0 Bright A_Weave(3,3,-1,-1.5)
		TNT1 A 0 Bright A_Explode(3,70,0)
		CFFX N 1 Bright A_SpawnItem("HellionTracerTail")
		TNT1 A 0 Bright A_Weave(3,3,-1,-1.5)
		TNT1 A 0 Bright A_Explode(3,70,0)
		TNT1 A 0 Bright A_SeekerMissile(18,9)
		Loop
	}
}

Actor HellionTracerTail : HellionPuff
{   
Scale 1.3
States
	{
	Spawn:
		TNT1 A 0 Bright 
		TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TNT1 A 1 Bright
		CFFX NNNOOOOPPPP 1 Bright A_FadeOut(0.1,1)
		Wait
	}
}

ACTOR DarkHellionReviveGhost : RedParticleSpawner
{
Scale 1.25
Renderstyle Translucent
Alpha 0.7
+NOINTERACTION
States
	{
	Spawn:
		HELN GHGHG 10 Bright
		Goto Fade
	Fade:
		HELN G 1 Bright A_FadeOut(0.1,1)
		Loop
	}
}

ACTOR HemHellionResRadius
{
PROJECTILE
Radius 8
Height 4
Speed 25
Renderstyle None
+ISMONSTER
-COUNTKILL
+NORADIUSDMG
+INVULNERABLE
+THRUACTORS
+FLOORHUGGER
+NOEXPLODEFLOOR
States
	{
	Spawn:
		TNT1 AAAAA 2 A_VileChase
		Stop
	Heal:
		TNT1 A 1
		Stop
	}
}