Actor HeavyMissileLauncherUpgradeToken : Inventory {inventory.maxamount 1}
Actor HEMLStartToken : Inventory {inventory.maxamount 1}
Actor HEMLModeChanged : Inventory {inventory.maxamount 1}
Actor HEMLTargetLocked : Inventory {inventory.maxamount 1}
Actor HEMLTargetLockedCheck : Inventory {inventory.maxamount 1}
Actor HEMLTargetMonsterCheck : Inventory {inventory.maxamount 1}
Actor TertiaryFireToken : Inventory {inventory.maxamount 1}

Actor HeavyMissileLauncherGiver : CustomInventory Replaces "HeavyMissileLauncher"
{ //Scripted (Mutiplayer weapon spawn can break as well as functions in the upgrade ACS code... this counts for all upgradable weapon actors)
-COUNTITEM
+INVENTORY.BIGPOWERUP
+INVENTORY.AUTOACTIVATE
+INVENTORY.IGNORESKILL
Inventory.PickupSound "Weapons/GrenadePickup"
Inventory.PickupMessage "Heavy Missile Launcher"
States
{
   Spawn:
     TNT1 A 0
	 TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("CheckWeaponWorldSpawn") == 2,1)
	 Goto SpawnDropped
	 4RKL Z -1
	 Wait
   SpawnDropped:
     TNT1 A 1 A_SpawnItem("HMLGiverDropped")
	 Stop
   Pickup:
	 TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("MPWeaponCheck") == 2,"PickupMP")
	 TNT1 A 0 A_JumpIfInventory("HighExplosiveMissileLauncher",1,"GiveUpgrade")
	 TNT1 A 0 A_GiveInventory("Missile",20)
	 TNT1 A 1 A_GiveInventory("HeavyMissileLauncher2",1)
	 Stop
   GiveUpgrade:
     TNT1 A 0 A_GiveInventory("Missile",50)
     TNT1 A 1 A_GiveInventory("HighExplosiveMissileLauncher",1)
	 Stop
   PickupMP:
     TNT1 A 0 A_JumpIfInventory("HeavyMissileLauncher2",1,"Nope")
	 TNT1 A 0 A_JumpIfInventory("HighExplosiveMissileLauncher",1,"Nope")
	 TNT1 A 0 A_GiveInventory("Missile",20)
     TNT1 A 1 ACS_NamedExecuteAlways("SpawnWeaponActive",0,2)
	 Fail
   Nope:
     4RKL Z 1
	 Fail
	 }
}

Actor HMLGiverDropped : HeavyMissileLauncherGiver
{
+INVENTORY.TOSSED
+INVENTORY.NEVERRESPAWN
States
{
  Spawn:
   4RKL Z -1
   Loop
  Pickup:
   TNT1 A 0 A_JumpIfInventory("HighExplosiveMissileLauncher",1,"GiveUpgrade")
   TNT1 A 0 A_GiveInventory("Missile",20)
   TNT1 A 1 A_GiveInventory("HeavyMissileLauncher2",1)
   Stop
   }
}

ACTOR "HeavyMissileLauncher2" : "HeavyMissileLauncher"
{ //Scripted (Mutiplayer weapon spawn can break as well as functions in the upgrade ACS code... this counts for all upgradable weapon actors)
  Tag "Heavy Missile Launcher"
  Weapon.AmmoGive 0
  Dropitem "HMLGiverDropped"
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
    4RKL Z -1
    Stop
  Deselect:
  	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_TakeInventory("WEMAction",1)
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 A_Lower
	4RKL F 1 A_Lower
    Goto Deselect+5
  Select:
	TNT1 A 0 A_Raise
    Wait
  Ready:
    TNT1 A 0 A_PlayWeaponSound("Weapons/GrenadePickup")
	TNT1 A 0 A_TakeInventory("WEMAction",1)
	4RKL ABCDE 1
  ReadyLoop:
	TNT1 A 0 A_JumpIfInventory("WEMAction",1,"LowerWeapon")
    4RKL F 1 A_WeaponReady
    Loop
  LowerWeapon:
	TNT1 A 0 A_TakeInventory("WEMAction",1)
    4RKL F 1 Offset(5,39) A_PlayWeaponSound("weapons/weapondown")
    4RKL F 1 Offset(14,52)
    4RKL F 1 Offset(24,64)
    4RKL F 1 Offset(36,87)
    4RKL F 1 Offset(48,110)
    CHAG F 1 Offset(1,120)
	Wait
  Fire:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("Missile",5,1)
    Goto Empty
 	TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash
    TNT1 A 0 A_Light1 
    4RKF B 3 Bright
    4RKF D 0 Radius_Quake(4,3,0,1,0)
    4RKF C 3 Bright A_FireCustomMissile("PlayerHeavyRocket",0,1)
	4RKF D 2 Bright A_Light2
    4RKF E 2 Bright
	TNT1 A 0 A_Light0
	4RKF FGH 3
	4RKL F 30
    Goto ReadyLoop
  AltFire:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("Missile",5,1)
    Goto Empty
  AltFireContinue:
 	TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash
    TNT1 A 0 A_Light1 
    4RKF B 3 Bright
    4RKF D 0 Radius_Quake(4,3,0,1,0)
	4RKF D 0 A_PlayWeaponSound("digger/fire")
    4RKF C 3 Bright A_FireCustomMissile("PlayerDiggerGrenade",0,1)
	4RKF D 2 Bright A_Light2
    4RKF E 2 Bright
	TNT1 A 0 A_Light0
	4RKF FGH 3
	4RKL F 40
    Goto ReadyLoop
  Empty:
    4RKL F 5 A_PlayWeaponSound("weapons/click4")
	4RKL F 5
    Goto ReadyLoop
	}
}

ACTOR "HighExplosiveMissileLauncher" : "HeavyMissileLauncher"
{ //Scripted (Mutiplayer weapon spawn can break as well as functions in the upgrade ACS code... this counts for all upgradable weapon actors)
//Creator: Fluffy
//Origin: Nexus Infinity
//Sprite: HEM1/HEZ0
//Title: "High Explosive Missile Launcher" 
  Tag "High Explosive Missile Launcher"
  Weapon.AmmoType "Missile"
  Weapon.AmmoGive 0
  Weapon.AmmoType "Missile"
  Weapon.AmmoType2 "Missile"
  Weapon.Ammouse 10
  Weapon.AmmoUse2 10
  Inventory.PickupMessage "You got the HEML, seek and destroy!"
  Inventory.PickupSound "Weapons/GrenadePickup"
  Weapon.UpSound "hemissilelauncher/up"
  Dropitem "HMLGiverDropped"
  Scale 0.6
  +NOAUTOAIM
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
    HEZ0 A -1
    Stop
  Deselect:
  	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_TakeInventory("WEMAction",1)
	TNT1 A 0 A_TakeInventory("TertiaryFireToken",1)
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 A_Lower
	HEM1 A 1 A_Lower
    Goto Deselect+6
  Select:
    TNT1 A 1 A_TakeInventory("RailgunAction",1)
    TNT1 A 0 ACS_NamedExecuteAlways("HEMLActiveScript",0)
	TNT1 A 0 A_TakeInventory("TertiaryFireToken",1)
	TNT1 A 0 A_JumpIfInventory("HEMLStartToken",1,1)
	Goto Startup
  SelectLoop:
    TNT1 A 0 A_Raise
    HEM1 A 1 A_Raise
    Loop
  Startup:
	TNT1 A 0 A_GiveInventory("HeavyMissileLauncherUpgradeToken",1)
	TNT1 A 0 A_TakeInventory("HeavyMissileLauncher2",1)
	TNT1 A 0 A_GiveInventory("HEMLStartToken",1)
	Goto SelectLoop
  Ready:
	TNT1 A 0 A_JumpIfInventory("WEMAction",1,"LowerWeapon")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
	TNT1 A 0 A_JumpIfInventory("TertiaryFireToken",1,"Fire3")
    HEM1 A 1 A_WeaponReady
    Loop
  LowerWeapon:
	TNT1 A 0 A_TakeInventory("WEMAction",1)
    HEM1 A 1 Offset(5,39) A_PlayWeaponSound("weapons/weapondown")
    HEM1 A 1 Offset(14,52)
    HEM1 A 1 Offset(24,64)
    HEM1 A 1 Offset(36,87)
    HEM1 A 1 Offset(48,110)
    HEM1 A 1 Offset(1,130)
	Wait
  Fire:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("Missile",10,1)
    Goto Empty
	TNT1 A 0 A_JumpIfInventory("HEMLModeChanged",1,"Fire2")
 	TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash
    TNT1 A 0 A_Light1
	TNT1 A 0 A_PlayWeaponSound("hemissilelauncher/fire")
    HEM1 B 3 Bright
    HEM1 B 0 Radius_Quake(4,3,0,1,0)
    HEM1 C 3 Bright A_FireCustomMissile("PlayerHERocket",0,1,0,5)
	HEM1 D 2 Bright A_Light2
    HEM1 E 2 Bright
	TNT1 A 0 A_Light0
	HEM1 FGHIJK 2
	HEM1 A 30
    Goto Ready
  Fire2:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("Missile",10,1)
    Goto Empty
	TNT1 A 0 A_JumpIfInventory("HEMLTargetLocked",1,1)
	Goto Error
 	TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash
    TNT1 A 0 A_Light1
	TNT1 A 0 A_PlayWeaponSound("hemissilelauncher/fire")
    HEM1 B 3 Bright
    HEM1 B 0 Radius_Quake(4,3,0,1,0)
	TNT1 A 0 A_TakeInventory("Missile",10,TIF_NOTAKEINFINITE)
    HEM1 C 3 Bright A_SpawnitemEx("HEMLHomingShot",0,0,50,0,0,0,0,SXF_NOCHECKPOSITION,0,tid)
	HEM1 D 2 Bright A_Light2
    HEM1 E 2 Bright
	TNT1 A 0 A_Light0
	HEM1 FGHIJK 2
	HEM1 A 30
    Goto Ready
  Fire3: //Don't tell anyone
    TNT1 A 0 A_TakeInventory("TertiaryFireToken",1)
	TNT1 A 0 A_JumpIfInventory("Missile",10,1)
    Goto Empty
 	TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash
    TNT1 A 0 A_Light1
	TNT1 A 0 A_PlayWeaponSound("hemissilelauncher/fire")
    HEM1 B 3 Bright
    HEM1 B 0 Radius_Quake(4,3,0,1,0)
	TNT1 A 0 A_TakeInventory("Missile",10,TIF_NOTAKEINFINITE)
    HEM1 C 3 Bright A_SpawnitemEx("HEMLHomingShot2",0,0,50,0,0,0,0,SXF_NOCHECKPOSITION,0,tid-5)
	HEM1 D 2 Bright A_Light2
    HEM1 E 2 Bright
	TNT1 A 0 A_Light0
	HEM1 FGHIJK 2
	HEM1 A 30
    Goto Ready
  AltFire:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("Missile",10,1)
    Goto Empty
	TNT1 A 0 A_JumpIfInventory("HEMLModeChanged",1,"AltFire2")
 	TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash
    TNT1 A 0 A_Light1
	TNT1 A 0 A_PlayWeaponSound("hemissilelauncher/fire")
    HEM1 B 3 Bright
    HEM1 B 0 Radius_Quake(4,3,0,1,0)
    HEM1 C 3 Bright A_FireCustomMissile("PlayerHEDiggerRocket",0,1,0,5)
	HEM1 D 2 Bright A_Light2
    HEM1 E 2 Bright
	TNT1 A 0 A_Light0
	HEM1 FGHIJK 2
	HEM1 A 30
    Goto Ready
  AltFire2:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("Missile",10,1)
    Goto Empty
	TNT1 A 0 A_JumpIfInventory("HEMLTargetLocked",1,1)
	Goto Error
 	TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash
    TNT1 A 0 A_Light1
	TNT1 A 0 A_PlayWeaponSound("hemissilelauncher/fire")
    HEM1 B 3 Bright
    HEM1 B 0 Radius_Quake(4,3,0,1,0)
	TNT1 A 0 A_TakeInventory("Missile",10,TIF_NOTAKEINFINITE)
    HEM1 C 3 Bright A_SpawnitemEx("HEMLHomingDiggerShot",0,0,50,0,0,0,0,SXF_NOCHECKPOSITION,0,tid)
	HEM1 D 2 Bright A_Light2
    HEM1 E 2 Bright
	TNT1 A 0 A_Light0
	HEM1 FGHIJK 2
	HEM1 A 30
    Goto Ready
  Empty:
    TNT1 A 0 A_PlayWeaponSound("weapons/click4")
    HEM1 KJIIJK 2
	HEM1 A 5
    Goto Ready
  Error:
    TNT1 A 0 A_PlayWeaponSound("hemissilelauncher/fail")
    HEM1 KJIIJK 2
    Goto Ready
  Zoom:
    TNT1 A 0 A_TakeInventory("RailgunAction",1)
  ChangeMode:
	TNT1 A 0 A_JumpIfInventory("HEMLModeChanged",1,"ChangeMode2")
	TNT1 A 0 A_Print("Lock-On Mode",1)
	TNT1 A 0 A_GiveInventory("HEMLModeChanged",1)
	TNT1 A 0 A_PlaySound("hemissilelauncher/mode",5,1.0,false,2.0)
	HEM1 KJIIJK 2
	Goto Ready
  ChangeMode2:
    TNT1 A 0 A_Print("Normal",1)
	TNT1 A 0 A_TakeInventory("HEMLModeChanged",1)
	HEM1 KJIIJK 2
	TNT1 A 0 ACS_NamedExecuteAlways("HEMLActiveScript",0)
	Goto Ready
	}
}

Actor PlayerHERocket : FastProjectile
{
Radius 11
Height 8
Speed 20
Damage 120
SeeSound ""
DeathSound "hemissilelauncher/exp"
Damagetype "Normal"
Species "Player"
Decal RocketScorch
Scale 0.7
+DEHEXPLOSION
+MTHRUSPECIES
+FORCERADIUSDMG
+SKYEXPLODE
+EXPLODEONWATER
var int user_airtime;
States
{
  Spawn:
    TNT1 A 0
  Airtime:
    HEM2 A 1 ThrustThingZ(0,1,1,1)
	TNT1 A 0 A_ScaleVelocity(0.96)
    TNT1 A 0 A_JumpIf(user_airtime >= 10,"SpeedUp")
    TNT1 A 0 A_SetUserVar("user_airtime",user_airtime+1)
	Loop
  Speedup:
	TNT1 A 0 A_PlaySound("rpg/fly",7,1.0,TRUE)
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2))
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
    HEM2 B 1 Bright ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
    HEM2 B 1 Bright ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
    HEM2 C 1 Bright ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
    HEM2 C 1 Bright ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
    HEM2 D 1 Bright ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
    HEM2 D 1 Bright ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
    HEM2 D 1 Bright ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
  Fly:
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 B 1 Bright
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 B 1 Bright
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 C 1 Bright
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 C 1 Bright
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 D 1 Bright
	TNT1 A 0 A_CustomMissile("RocketSmoke",Random(-8,-4),Random(-2,2)) 
	TNT1 AAA 0 A_CustomMissile("NewRockeParticleTrail",Random(-8,-4),Random(-2,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 D 1 Bright
    Loop
  Death:
    TNT1 A 0 A_StopSound(7)
	TNT1 A 0 A_Explode(18,798)
	TNT1 A 0 A_Explode(48,590)
	TNT1 A 0 A_Explode(144,320)	
	TNT1 A 0 A_Explode(256,220)	
	TNT1 A 0 Radius_Quake(6,28,0,32,0)
    TNT1 A 0 A_PlaySound("digger/explode")
	TNT1 A 0 A_PlaySound("hemissilelauncher/far",6)
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("OrangeParticleSpawner",0,0,0,0,0,0,0,0,128) 
	TNT1 A 0 A_CustomMissile("SmokeFX3",0,0,random(80,100),2,random(80,100))
	TNT1 A 0 A_SpawnItemEx("HEMLFire",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	CGE2 A 1 Bright A_SpawnItemEx("RPGRocketKaBoom",0,0,0,0,0,0,0)
    CGE2 BCDEFGHIJK 3 Bright A_CustomMissile("SmokeFX3",0,0,random(80,100),2,random(80,100))
    CGE2 LLLLLLLLLLLLL 1 Bright A_FadeOut(0.1,0)
	Stop
  }
}

ACTOR HEMLTargetCircleSpawner : CrusaderBuff
{
States
{
  Pickup:
    TNT1 A 0
	TNT1 A 0 A_GiveInventory("HEMLTargetMonsterCheck",1)
	TNT1 A 1 A_SpawnItemEx("HEMLTargetCircle",0,0,0,0,0,0,0,SXF_SETMASTER,0,tid-1)
	Stop
}
}

ACTOR HEMLTargetCircle
{
RenderStyle Add
Height 1
Radius 1
+ISMONSTER
+NOBLOCKMAP
+NOINTERACTION
+FLOORHUGGER
States
{
  Spawn:
    TNT1 A 0
	//TNT1 A 0 ACS_NamedExecuteAlways("AssignTargetTID",0)
	TNT1 A 0 A_GiveInventory("HEMLTargetLockedCheck",1)
  Warp:
    NADA A 1
	TNT1 A 0 A_JumpIfInventory("HEMLTargetLockedCheck",1,1)
	Goto Death
	TNT1 A 0 Bright A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION,"Warp")
  Death:
    NADA A 1 Bright A_StopSound(7)
	NADA AAAAAAAAAAAAAAAAAAA 1 Bright A_Fadeout(0.05,0)
	Stop
	}
}

Actor HEMLHomingShot
{
Monster
Speed 12
FloatSpeed 9
Radius 11
Height 8
Scale 0.7
Species "player"
DamageType "Players"
SeeSound ""
Health 0x7FFFFFFF
Mass 0x7FFFFFFF
+NOPAIN
+NOFEAR
+NOGRAVITY
+FLOAT
+FLOATBOB
+NOTARGET
+LOOKALLAROUND
+THRUSPECIES
+NOBLOCKMONST
-SOLID
-SHOOTABLE
-COUNTKILL
var int user_timer;
var int user_tracker;
States
{
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_ClearTarget
   TNT1 A 1 ACS_NamedExecuteAlways("HEMLHateTarget",0)
  SpawnLoop:
   HEM2 A 1 A_look
   TNT1 A 0 A_JumpIf(user_timer >= 500,"Death")
   TNT1 A 0 A_SetUserVar("user_timer",user_timer+1)
   Loop
  Idle:
   TNT1 A 0 A_PlaySound("rpg/fly",7,1.0,TRUE)
   TNT1 A 0 A_PlaySound("hemissilelauncher/beep",6,1.0,TRUE)
  IdleLoop:
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   TNT1 A 0 A_Look
   HEM2 B 1 Bright A_Wander
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   TNT1 A 0 A_Look
   HEM2 B 1 Bright A_Wander
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   TNT1 A 0 A_Look
   HEM2 C 1 Bright A_Wander
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   TNT1 A 0 A_Look
   HEM2 C 1 Bright A_Wander
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   TNT1 A 0 A_Look
   HEM2 D 1 Bright A_Wander
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   TNT1 A 0 A_Look
   HEM2 D 1 Bright A_Wander
   TNT1 A 0 A_JumpIf(user_timer >= 100,"Fall")
   TNT1 A 0 A_SetUserVar("user_timer",user_timer+1)
   Loop
  See:
   HEM2 A 15 ThrustThing(angle*256/360,20)
   TNT1 A 0 A_Stop
   HEM2 A 1 A_Chase
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   HEM2 A 1 A_Chase
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   HEM2 A 1 A_Chase
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   HEM2 A 1 A_Chase
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   TNT1 A 0 A_PlaySound("rpg/fly",7,1.0,TRUE)
  SeeLoop:
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   HEM2 B 1 Bright A_Chase
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   HEM2 B 1 Bright A_Chase
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   HEM2 C 1 Bright A_Chase
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   HEM2 C 1 Bright A_Chase
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   HEM2 D 1 Bright A_Chase
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
   HEM2 D 1 Bright A_Chase
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   TNT1 A 0 A_JumpIf(user_timer >= 200,"Fall")
   TNT1 A 0 A_SetUserVar("user_timer",user_timer+1)
   Loop
  Missile:
   TNT1 A 0 A_FaceTarget
   HEM2 BBBBBBB 1 Bright A_Chase("","")
   TNT1 A 0 A_StopSound(7)
   HEM2 A 1 A_CustomMissile("PlayerHERocketHoming",0,0,0,0)
   TNT1 A 1 A_Fall
   Stop
  Fall:
   TNT1 A 0 A_ChangeFlag(FLOAT,0)
   TNT1 A 0 A_ChangeFlag(FLOATBOB,0)
   TNT1 A 0 A_ChangeFlag(NOGRAVITY,0)
   TNT1 A 0 ThrustThing(angle*256/360,12)
   HEM2 A 8 A_SetGravity(0.9)
  FallLoop:
   HEM2 A 1 A_JumpIf(velz == 0,"Death")
   Wait
  Death:
   TNT1 A 0 A_StopSound(7)
   TNT1 A 0 A_StopSound(6)
   TNT1 A 0 A_Explode(18,798)
   TNT1 A 0 A_Explode(48,590)
   TNT1 A 0 A_Explode(144,320)	
   TNT1 A 0 A_Explode(256,220)	
   TNT1 A 0 Radius_Quake(6,28,0,32,0)
   TNT1 A 0 A_PlaySound("digger/explode")
   TNT1 A 0 A_PlaySound("hemissilelauncher/far",6)
   TNT1 AAAAAAAAA 0 A_SpawnItemEx("OrangeParticleSpawner",0,0,0,0,0,0,0,0,128) 
   TNT1 A 0 A_CustomMissile("SmokeFX3",0,0,random(80,100),2,random(80,100))
   TNT1 A 0 A_SpawnItemEx("HEMLFire",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
   CGE2 A 1 Bright A_SpawnItemEx("RPGRocketKaBoom",0,0,0,0,0,0,0)
   CGE2 BCDEFGHIJK 3 Bright A_CustomMissile("SmokeFX3",0,0,random(80,100),2,random(80,100))
   CGE2 LLLLLLLLLLLLL 1 Bright A_FadeOut(0.1,0)
   TNT1 A 0 A_Fall
   Stop
   }
}

Actor HEMLHomingShot2 : HEMLHomingShot
{
States
{
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_ClearTarget
   TNT1 A 1 ACS_NamedExecuteAlways("HEMLHateTarget2",0)
   TNT1 A 0 A_PlaySound("rpg/fly",7,1.0,TRUE)
  SpawnLoop:
   HEM2 BBCCDD 1 Bright A_look
   TNT1 A 0 A_JumpIf(user_timer >= 200,"Fall")
   TNT1 A 0 A_SetUserVar("user_timer",user_timer+1)
   Loop
  See:
   TNT1 A 0
  SeeLoop:
   TNT1 A 0 A_FaceTarget
   HEM2 B 1 Bright A_Chase("","",CHF_DONTMOVE)
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   TNT1 A 0 A_FaceTarget
   HEM2 C 1 Bright A_Chase("","",CHF_DONTMOVE)
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   TNT1 A 0 A_FaceTarget
   HEM2 D 1 Bright A_Chase("","",CHF_DONTMOVE)
   TNT1 A 0 A_JumpIfTargetInLOS("Missile")
   TNT1 A 0 A_JumpIf(user_timer >= 1000,"Fall")
   TNT1 A 0 A_SetUserVar("user_timer",user_timer+1)
   Loop
  Fall:
   TNT1 A 0 A_ChangeFlag(FLOAT,0)
   TNT1 A 0 A_ChangeFlag(FLOATBOB,0)
   TNT1 A 0 A_ChangeFlag(NOGRAVITY,0)
   HEM2 A 8 A_SetGravity(0.9)
  FallLoop:
   HEM2 A 1 A_JumpIf(velz == 0,"Death")
   Wait
   }
}

Actor HEMLHomingDiggerShot : HEMLHomingShot
{
States
{
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_ClearTarget
   TNT1 A 1 ACS_NamedExecuteAlways("HEMLHateTarget",0)
  SpawnLoop:
   HEM2 A 1 A_look
   TNT1 A 0 A_JumpIf(user_timer >= 500,"Death")
   TNT1 A 0 A_SetUserVar("user_timer",user_timer+1)
   Loop
  See:
   TNT1 A 0 A_ChangeFlag(NOGRAVITY,0)
   TNT1 A 0 A_ChangeFlag(FLOAT,0)
   TNT1 A 0 A_ChangeFlag(FLOATBOB,0)
   HEM2 A 0 ThrustThing(angle*256/360,20)
   HEM2 A 5 A_FaceTarget
  SeeLoop:
   HEM2 A 1 A_Chase("","",CHF_DONTMOVE)
   TNT1 A 0 A_JumpIf(velz == 0,"Missile")
   Loop
  Missile:
   HEM2 A 1 A_CustomMissile("PlayerHEDiggerHoming",0,0,0,0)
   TNT1 A 1 A_Fall
   Stop
   }
}

Actor PlayerHERocketHoming : PlayerHERocket
{
+SEEKERMISSILE
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_Jump(240,2)
	TNT1 A 0 A_PlaySound("hemissilelauncher/humm",6,1.0,FALSE,ATTN_NONE)
	TNT1 A 0
	Goto Speedup
  Speedup:
	TNT1 A 0 A_PlaySound("rpg/fly",7,1.0,TRUE)
	TNT1 A 0 A_PlaySound("hemissilelauncher/beep",6,1.0,TRUE)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    HEM2 B 1 Bright A_SeekerMissile(7,12,SMF_CURSPEED|SMF_PRECISE,256)
	TNT1 A 0 ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    HEM2 B 1 Bright A_SeekerMissile(7,12,SMF_CURSPEED|SMF_PRECISE,256)
	TNT1 A 0 ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    HEM2 C 1 Bright A_SeekerMissile(7,12,SMF_CURSPEED|SMF_PRECISE,256)
	TNT1 A 0 ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    HEM2 C 1 Bright A_SeekerMissile(7,12,SMF_CURSPEED|SMF_PRECISE,256)
	TNT1 A 0 ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    HEM2 D 1 Bright A_SeekerMissile(7,12,SMF_CURSPEED|SMF_PRECISE,256)
	TNT1 A 0 ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    HEM2 D 1 Bright A_SeekerMissile(7,12,SMF_CURSPEED|SMF_PRECISE,256)
	TNT1 A 0 ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    HEM2 D 1 Bright A_SeekerMissile(7,12,SMF_CURSPEED|SMF_PRECISE,256)
	TNT1 A 0 ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_ScaleVelocity(1.2)
  Fly:
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 B 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 B 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 C 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 C 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 D 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
    TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
    TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(-4,2))
	TNT1 A 0 A_ScaleVelocity(1.1)
    HEM2 D 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
    Loop
	}
}

Actor PlayerHEDiggerRocket
{
Projectile
Radius 11
Height 8
Speed 25
Damage 120
SeeSound ""
DeathSound "hemissilelauncher/exp"
Damagetype "Normal"
Species "Player"
Decal RocketScorch
Scale 0.7
Gravity 0.88
+DEHEXPLOSION
+MTHRUSPECIES
+FORCERADIUSDMG
+EXPLODEONWATER
-NOGRAVITY
States
{
  Spawn:
   HEM2 A 5
   TNT1 A 0 A_ChangeFlag(NOEXPLODEFLOOR,1)
   HEM2 A 1 A_JumpIf(velz == 0,"Digger")
   Wait
  Digger:
   TNT1 A 0 A_NoGravity
   TNT1 A 0 A_PlaySound("rpg/fly",7,1.0,TRUE)
   TNT1 A 0 A_ChangeFlag(FLOORHUGGER,1)
  DiggerLoop:
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(4,6))
   HEM2 A 0 A_ScaleVelocity(1.2)
   HEM2 B 1 Bright A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(4,6))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(4,6))
   HEM2 A 0 A_ScaleVelocity(1.2)
   HEM2 C 1 Bright A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(4,6))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(4,6))
   HEM2 A 0 A_ScaleVelocity(1.2)
   HEM2 D 1 Bright A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(4,6))
   Loop
  Death:
   TNT1 A 0 A_StopSound(7)
   TNT1 A 0 A_StopSound(6)
   TNT1 A 0 A_Explode(18,798)
   TNT1 A 0 A_Explode(48,590)
   TNT1 A 0 A_Explode(144,320)	
   TNT1 A 0 A_Explode(256,220)	
   TNT1 A 0 Radius_Quake(6,28,0,32,0)
   TNT1 A 0 A_PlaySound("digger/explode")
   TNT1 A 0 A_PlaySound("hemissilelauncher/far",6)
   TNT1 AAAAAAAAA 0 A_SpawnItemEx("OrangeParticleSpawner",0,0,0,0,0,0,0,0,128) 
   TNT1 A 0 A_CustomMissile("SmokeFX3",0,0,random(80,100),2,random(80,100))
   TNT1 A 0 A_SpawnItemEx("HEMLFire",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
   CGE2 A 1 Bright A_SpawnItemEx("RPGRocketKaBoom",0,0,0,0,0,0,0)
   CGE2 BCDEFGHIJK 3 Bright A_CustomMissile("SmokeFX3",0,0,random(80,100),2,random(80,100))
   CGE2 LLLLLLLLLLLLL 1 Bright A_FadeOut(0.1,0)
   Stop
   }
}

Actor PlayerHEDiggerHoming : PlayerHEDiggerRocket
{
+SEEKERMISSILE
var int user_timer;
States
{
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_Jump(240,2)
   TNT1 A 0 A_PlaySound("hemissilelauncher/humm",6,1.0,FALSE,ATTN_NONE)
   TNT1 A 0
   Goto Digger
  Digger:
   TNT1 A 0 A_NoGravity
   TNT1 A 0 A_PlaySound("rpg/fly",7,1.0,TRUE)
   TNT1 A 0 A_PlaySound("hemissilelauncher/beep",6,1.0,TRUE)
   TNT1 A 0 A_ChangeFlag(FLOORHUGGER,1)
  DiggerLoop:
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(4,6))
   HEM2 A 0 A_ScaleVelocity(1.2)
   TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
   HEM2 B 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(4,6))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(4,6))
   HEM2 A 0 A_ScaleVelocity(1.2)
   TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
   HEM2 C 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(4,6))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(4,6))
   HEM2 A 0 A_ScaleVelocity(1.2)
   TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
   HEM2 D 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(4,6))
   TNT1 A 0 A_JumpIf(user_timer >= 10,"DiggerLoop2")
   TNT1 A 0 A_SetUserVar("user_timer",user_timer+1)
   Loop
  DiggerLoop2:
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(4,6))
   TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
   HEM2 B 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(4,6))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(4,6))
   TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
   HEM2 C 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(4,6))
   TNT1 AAA 0 A_SpawnItemEx("NewRockeParticleTrail",Random(-2,2),0,Random(4,6))
   TNT1 A 0 A_SpawnItem("HEMLRocketFlare",-20,-2)
   HEM2 D 1 Bright A_SeekerMissile(15,30,SMF_CURSPEED|SMF_PRECISE,256)
   TNT1 A 0 A_SpawnItemEx("RocketSmoke",Random(-2,2),0,Random(4,6))
   Loop
   }
}

Actor HEMLFire : CyberSmithEnergyFireExplosion
{
States
{
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("CyberSmithEnergyFire", 0, 0, 0, 0.00006 * Random(0, 400000), 0.00006 * Random(0, 400000), 0.5, Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   Stop
   }
}

Actor HEMLRocketFlare
{

Radius 1
Height 1
Scale 0.6
RENDERSTYLE Add
alpha 1.0
+NOCLIP
+NOBLOCKMAP
+NOGRAVITY
+CLIENTSIDEONLY
+NOINTERACTION
+FORCEXYBILLBOARD
states
	{
	Spawn:
	    HEM2 E 2 BRIGHT
		Stop
	}
}