//Monster-Hellforge Smith
ACTOR Hellsmith1 30109
{ 
Health 6000
Radius 40 
Height 110 
Mass 5000 
Speed 16 
PainChance 10 
MONSTER
Obituary "%o was not match for the might of the Hellsmith."
HitObituary "%o was crushed under the Hellsmith's hoof." 
+FLOORCLIP
+NORADIUSDMG 
+BOSS 
+FIRERESIST
+NOTARGET
+MISSILEEVENMORE
Damage 30
MeleeDamage 20
MeleeRange 86
SeeSound "monster/smithw" 
PainSound "monster/smithp" 
DeathSound "monster/smithd" 
ActiveSound "monster/smitha"
MeleeSound "monster/hamhit"
SpawnID 179
States 
   {    
   Spawn: 
       BSMT AB 10 A_Look 
       Loop 
   See: 
       BSMT A 0 A_UnSetReflectiveInvulnerable 
       BSMT A 3 A_Playsound ("monster/fihoof") 
       BSMT ABB 3 A_Chase 
       BSMT C 3 A_Playsound ("monster/fihoof") 
       BSMT CDD 3 A_Chase
       Loop
   Melee:
       BSMT E 6 A_FaceTarget
       BSMT F 1 A_Playsound ("monster/hamswg")
       BSMT F 5 A_FaceTarget
       BSMT G 10 A_MeleeAttack
       BSMT B 0 A_Jump (192,1)
       Goto See
       BSMT J 6 A_FaceTarget
       BSMT K 1 A_Playsound ("monster/hamswg")
       BSMT K 5 A_FaceTarget
       BSMT L 10 A_MeleeAttack
       Goto See       
   Missile:
       BSMT A 0 A_Jump(128,3)
       BSMT A 0 A_Jump(128,3)
       BSMT A 0
       goto Charge
       BSMT A 0
       goto Missile1
       BSMT A 0
       goto Missile2
   Charge:
       BSMT O 1 A_Playsound ("weapons/suldth")
       BSMT O 2 A_SetReflectiveInvulnerable 
       BSMT O 2 A_SkullAttack
       BSMT O 0 A_SpawnItemEx("SmithGhost2",0,0,0,0,0,0,0,128,0)
       BSMT O 4 A_SkullAttack
       BSMT O 0 A_SpawnItemEx("SmithGhost2",0,0,0,0,0,0,0,128,0)
       BSMT O 4 A_SkullAttack
       BSMT O 0 A_SpawnItemEx("SmithGhost2",0,0,0,0,0,0,0,128,0)
       BSMT O 4 A_SkullAttack
       BSMT O 0 A_SpawnItemEx("SmithGhost2",0,0,0,0,0,0,0,128,0)
       BSMT O 4 A_SkullAttack
       BSMT O 0 A_SpawnItemEx("SmithGhost2",0,0,0,0,0,0,0,128,0)
       BSMT O 4 A_SkullAttack
       BSMT O 0 A_SpawnItemEx("SmithGhost2",0,0,0,0,0,0,0,128,0)
       BSMT O 4 A_SkullAttack
       BSMT O 0 A_SpawnItemEx("SmithGhost2",0,0,0,0,0,0,0,128,0)
       BSMT O 4 A_SkullAttack
       BSMT O 0 A_SpawnItemEx("SmithGhost2",0,0,0,0,0,0,0,128,0)
       BSMT O 0 A_Stop
       BSMT O 1
       Goto See
   Missile1:
       BSMT E 6 A_FaceTarget
       BSMT H 6 A_PlaySound ("monster/hamswg")
       BSMT N 0 A_PLaySound ("weapons/hellfi") 
       BSMT I 0 A_CustomMissile ("Hellshot2",52,0,0)
       BSMT I 0 A_CustomMissile ("Hellshot2",52,0,8)
       BSMT I 12 A_CustomMissile ("Hellshot2",52,0,-8)
       BSMT I 0 A_Jump (128,8)
       BSMT B 6
       BSMT J 6 A_FaceTarget
       BSMT M 6 A_PlaySound ("monster/hamswg")
       BSMT N 1 A_PLaySound ("weapons/hellfi") 
       BSMT N 0 A_CustomMissile ("Hellshot2",52,0,0)
       BSMT N 0 A_CustomMissile ("Hellshot2",52,0,8)
       BSMT N 11 A_CustomMissile ("Hellshot2",52,0,-8)
       BSMT N 0 A_Jump (128,1)
       Goto See
       BSMT N 0
       Goto Missile2
   Missile2:
       BSMT E 6 A_FaceTarget
       BSMT F 1 A_Playsound ("monster/hamswg")
       BSMT F 5 A_FaceTarget
       BSMT G 0 A_CustomMissile("STracer",0,0,15,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,30,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,45,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,60,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,75,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,90,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,105,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,120,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,135,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,150,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,165,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,180,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,195,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,210,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,225,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,240,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,255,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,270,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,285,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,300,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,315,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,330,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,345,0)
       BSMT G 0 A_CustomMissile("STracer",0,0,0,0)
       BSMT G 10 A_Playsound("monster/hamflr")
       BSMT B 0 A_Jump (128,1)
       Goto See
       BSMT N 0
       Goto Missile3
   Missile3:
       BSMT J 6 A_FaceTarget
       BSMT K 1 A_Playsound ("monster/hamswg")
       BSMT K 5 A_FaceTarget
       BSMT L 0 A_CustomMissile("STracer",0,0,15,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,30,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,45,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,60,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,75,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,90,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,105,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,120,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,135,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,150,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,165,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,180,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,195,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,210,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,225,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,240,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,255,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,270,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,285,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,300,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,315,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,330,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,345,0)
       BSMT L 0 A_CustomMissile("STracer",0,0,0,0)
       BSMT L 10 A_Playsound("monster/hamflr")
       Goto See           
   Pain: 
       BSMT P 10 A_Pain
       BSMT P 0 A_Jump (128,1)
       Goto See
       BSMT E 0 A_SetReflectiveInvulnerable
       BSMT E 6 A_FaceTarget
       BSMT F 1 A_Playsound ("monster/hamswg")
       BSMT F 5 A_FaceTarget
       BSMT F 0 A_CustomMissile("PentaLine1",0,0,-72,2)
       BSMT F 0 A_CustomMissile("PentaLine1",0,0,-144,2)
       BSMT F 0 A_CustomMissile("PentaLine1",0,0,-216,2)
       BSMT F 0 A_CustomMissile("PentaLine1",0,0,-288,2)
       BSMT F 0 A_CustomMissile("PentaLine1",0,0,0,2)
       BSMT G 1 A_Playsound ("monster/hamflr")
       BSMT G 7 HealThing(20)
       BSMT G 7 HealThing(20)
       BSMT G 7 HealThing(20)
       BSMT G 7 HealThing(20)
       BSMT G 7 HealThing(20)
       BSMT G 7 HealThing(20)
       BSMT G 7 HealThing(20)
       BSMT G 7 HealThing(20)
       BSMT G 7 HealThing(20)
       BSMT G 7 HealThing(20)
       BSMT B 0 A_UnSetReflectiveInvulnerable
       /*BSMT B 0 A_JumpIfHealthLower(1000,1)	//NOTE: This ACS function call hooks into Demon Eclipse.  It's designed to summon
       Goto See									//monsters (Sentinels) to assist the Smith.  This script event doesn't work outside of
       BSMT B 1 ACS_ExecuteAlways(100,0)*/		//Demon Eclipse, so provide your own equivalent spawn mechanism here if you want.
       Goto See
   Death:
       BSMT F 0 A_CustomMissile("PentaLine3",0,0,-72,2)
       BSMT F 0 A_CustomMissile("PentaLine3",0,0,-144,2)
       BSMT F 0 A_CustomMissile("PentaLine3",0,0,-216,2)
       BSMT F 0 A_CustomMissile("PentaLine3",0,0,-288,2)
       BSMT F 0 A_CustomMissile("PentaLine3",0,0,0,2)
       BSMT F 0 Radius_Quake(6,250,2,64,8)
       BSMT P 250 A_CustomMissile("SmithDFSpawner",0,0,0,0)
       BSMT Q 6 A_CustomMissile("SmithHammer",128,-40,-30,0)
       BSMT Q 0 A_CustomMissile("SmithFire",0,0,0,2)
       BSMT R 6 A_Scream
       BSMT R 0 A_CustomMissile("SmithFire",0,0,0,2)
       BSMT STU 6
       BSMT V 0 A_CustomMissile("SmithFire",0,0,0,2)
       BSMT V 6 A_NoBlocking 
       BSMT V 6 
       BSMT X 6
       BSMT X 0 A_CustomMissile("SmithFire",0,0,0,2)
       BSMT Y -1 A_BossDeath 
   } 
}

ACTOR SmithFire
{   
   Radius 2
   Height 2
   Damage 0
   +NOCLIP
   Speed 0
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.75
   SeeSound "Weapons/hellex"
   States
   {
   Spawn:
      MNSM A 3 Bright
      MNSM B 3 Bright
      MNSM CDEFGHIJKLMNOPQ 3 Bright
      stop
   }
}

ACTOR SmithGhost1
{
	Radius 40
	Height 70
	Speed 1
	Damage 0
	RenderStyle Translucent
	Alpha 0.5
	PROJECTILE
	states
	{
	Spawn:
                SMT1 O 35
                SMT1 O 2 A_FadeOut(0.10)
		goto Spawn+1
	}
}

ACTOR SmithGhost2
{
	Radius 40
	Height 70
	Speed 1
	Damage 0
	RenderStyle Translucent
	Alpha 0.5
	PROJECTILE
	states
	{
	Spawn:
                BSMT O 35
		BSMT O 2 A_FadeOut(0.10)
		goto Spawn+1
	}
}

ACTOR PentaLine1
{
	Radius 0
	Height 32
	Speed 200
        RenderStyle NONE
	Alpha 0.85
	PROJECTILE
        +FLOORHUGGER
        +NOCLIP
        SeeSound "weapons/diasht"
	states
	{
	Spawn:
           TNT1 A 1
           TNT1 A 0 A_CustomMissile("PentaLine2",0,0,-198,2)
           TNT1 A 0 A_CustomMissile("PentaLine2",0,0,198,2)
	   stop
	}
}

ACTOR PentaLine2
{
	Radius 0
	Height 32
	Speed 16
        RenderStyle NONE
	Alpha 0.85
	PROJECTILE
        +FLOORHUGGER
        +NOCLIP
	states
	{
	Spawn:
           TNT1 AAAAAAAAAAAAAAAA 1 A_SpawnItem("PentaFire",0,0)
	   stop
	}
}

ACTOR PentaFire
{
	Radius 0
	Height 32
	Speed 0
        DamageType fire
        RenderStyle Add
	Alpha 0.85
        ReactionTime 2
	PROJECTILE
        +FLOORHUGGER
        +DONTSPLASH
        -NOGRAVITY
	states
	{
	Spawn:
           CFCF A 1 Bright A_Explode(1,32,1)
           CFCF A 2 Bright A_PlaySound("weapons/onfire")
           CFCF BCDEFGHIJKLM 3 Bright A_Explode(1,32,1)
           CFCF A 0 Bright A_CountDown
	   loop
        Death:
           CFCF NOP 3 Bright A_Explode(2,32,1)
           stop
	}
}

ACTOR SmithDFSpawner
{
	Radius 0
	Height 1
	Speed 0
	Damage 0
	RenderStyle None
        ReactionTime 300
	Alpha 0.5
	PROJECTILE
        +NOEXPLODEFLOOR
        States
	{
	Spawn:
              TNT1 A 1 A_CustomMissile("SmithDeathFire",0,0,0,2,90)
	      TNT1 A 0 A_CountDown
              Loop
        Death:
              TNT1 A 1
              stop
	}
}

ACTOR SmithDeathFire
{
   Radius 2
   Height 2
   Speed 16
   Damage 1
   PROJECTILE
   RENDERSTYLE ADD
   DamageType Fire
   ALPHA 0.67
   Scale 2.0
   SeeSound "weapons/bigbrn"
   +NOCLIP
   +DONTSPLASH
   States
   {
   Spawn:
      FRFX JKLMNOP 2 Bright
      stop
   Death:
      TNT1 A 1
      stop
   }
}

ACTOR PentaLine3
{
	Radius 0
	Height 32
	Speed 200
        RenderStyle NONE
	Alpha 0.85
	PROJECTILE
        +FLOORHUGGER
        +NOCLIP
        SeeSound "weapons/diasht"
	states
	{
	Spawn:
           TNT1 A 1
           TNT1 A 0 A_CustomMissile("PentaLine4",0,0,-198,2)
           TNT1 A 0 A_CustomMissile("PentaLine4",0,0,198,2)
	   stop
	}
}

ACTOR PentaLine4
{
	Radius 0
	Height 32
	Speed 16
        RenderStyle NONE
	Alpha 0.85
	PROJECTILE
        +FLOORHUGGER
        +NOCLIP
	states
	{
	Spawn:
           TNT1 AAAAAAAAAAAAAAAA 1 A_SpawnItem("PentaFire2",0,0)
	   stop
	}
}

ACTOR PentaFire2
{
	Radius 0
	Height 32
	Speed 0
        RenderStyle Add
	Alpha 0.85
        ReactionTime 7
	PROJECTILE
        +FLOORHUGGER
        +DONTSPLASH
        -NOGRAVITY
	states
	{
	Spawn:
           CFCF A 1 Bright A_Explode(1,32,1)
           CFCF A 2 Bright A_PlaySound("weapons/onfire")
           CFCF BCDEFGHIJKLM 3 Bright A_Explode(1,32,1)
           CFCF A 0 Bright A_CountDown
	   loop
        Death:
           CFCF NOP 3 Bright A_Explode(1,32,1)
           stop
	}
}

ACTOR STracer
{
   Radius 5
   Height 5
   Speed 15
   Damage 15
   ExplosionDamage 64
   ExplosionRadius 128
   RenderStyle ADD
   DamageType fire
   Alpha 0.67
   PROJECTILE
   +FLOORHUGGER
   +THRUGHOST
   -NOGRAVITY
   +DONTSPLASH
   Seesound "weapons/diasht"
   DeathSound "weapons/firex3"   
   States
   {
   Spawn:
      TNT1 A 1 Bright A_CStaffMissileSlither
      TNT1 A 0 Bright A_SpawnItem("STracerPuff",0,0)
      loop
   Death:
      FTRA K 4 Bright
      FTRA L 4 Bright A_Explode
      FTRA MNO 3 Bright
      stop
   }
}

ACTOR STracerPuff
{
   Radius 1
   Height 1
   Speed 0
   RENDERSTYLE ADD
   DamageType fire
   ALPHA 0.67
   PROJECTILE
   ExplosionRadius 8
   ExplosionDamage 4
   +FLOORHUGGER
   -NOGRAVITY
   +DONTSPLASH
   States
   {
   Spawn:
      FTRA ABCDEFGHIJ 3 Bright A_Explode
      stop
   }
}

ACTOR SmithHammer
{
   Radius 5
   Height 5
   Speed 2
   Damage 0
   RenderStyle NORMAL
   PROJECTILE
   -NOGRAVITY
   +LOWGRAVITY
   DeathSound "monsters/hamflr"   
   States
   {
   Spawn:
      MAUL A 3  
      MAUL B 4
      MAUL C 5
      goto Spawn+2
   Death:
      MAUL D -1 
      stop
   }
}

ACTOR Hellshot2
{
   Radius 8
   Height 12
   Speed 25
   Damage 40
   PROJECTILE
   RENDERSTYLE ADD
   DamageType Fire
   ALPHA 0.95
   DeathSound "weapons/hellex"
   ExplosionDamage 128
   ExplosionRadius 128
   DONTHURTSHOOTER
   +THRUGHOST
   Decal "Scorch"
   States
   {
   Spawn: 
      HEPA ABCDEF 3 Bright A_SpawnItemEx("RedPuff",0,0,0,0,0,0,0,8)
      loop
   Death:
      HELX A 3 Bright
      HELX B 0 Bright A_CustomMissile("HellBoom",0,0,0,6)
      HELX B 0 Bright A_CustomMissile("HellBoom",0,0,45,6)
      HELX B 0 Bright A_CustomMissile("HellBoom",0,0,90,6)
      HELX B 0 Bright A_CustomMissile("HellBoom",0,0,135,6)
      HELX B 0 Bright A_CustomMissile("HellBoom",0,0,180,6)
      HELX B 0 Bright A_CustomMissile("HellBoom",0,0,225,6)
      HELX B 0 Bright A_CustomMissile("HellBoom",0,0,270,6)
      HELX B 0 Bright A_CustomMissile("HellBoom",0,0,315,6)
      HELX B 3 Bright A_Explode
      HELX CDEFGHIJ 3 Bright
      stop
   }
}

ACTOR HellBoom
{
   Radius 8
   Height 8
   Speed 6
   Damage 0
   PROJECTILE
   RENDERSTYLE ADD
   DONTHURTSHOOTER
   +RIPPER
   +THRUGHOST
   +BLOODLESSIMPACT
   SeeSound "weapons/firex3"
   ALPHA 0.80
   States
   {
   Spawn:
      TNT1 AAAAA 6 A_SpawnItem("HellFX",0,0)
      Stop
   }
}

ACTOR HellFX
{   
   Radius 5
   Height 5
   Speed 0
   Damage 0
   PROJECTILE
   RENDERSTYLE ADD
   Damagetype Fire
   ALPHA 0.80
   SeeSound "weapons/firex3"
   States
   {
   Spawn:
      HELX A 3 Bright
      HELX B 3 Bright A_Explode (96,96,0)
      HELX CDEFGHIJ 3 Bright
      stop
   }
}

ACTOR RedPuff
{   
   Radius 0
   Height 1
   Speed 0
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.85
   States
   {
   Spawn:
      TNT1 A 3 Bright
      RPUF ABCDE 3 Bright
      Stop 
   }
}

Actor Hellsmith1Spot : CustomMonsterInvasionSpot 30110
{
DropItem Hellsmith1
}
//End of Hellsmith