Actor ExplosiveRifleGiver : CustomInventory Replaces ExplosiveRifleNEO
{ //Scripted (Mutiplayer weapon spawn can break as well as functions in the upgrade ACS code... this counts for all upgradable weapon actors)
Scale 0.95
-COUNTITEM
+INVENTORY.BIGPOWERUP
+INVENTORY.AUTOACTIVATE
+INVENTORY.IGNORESKILL
Inventory.PickupSound "ExplosiveRifle/Pickup"
Inventory.PickupMessage "Explosive Rifle: Press altfire while zoomed-unzoomed to enable gauss mode!"
States
{
   Spawn:
     TNT1 A 0
	 TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("CheckWeaponWorldSpawn") == 2,1)
	 Goto SpawnDropped
	 PGND A -1
	 Wait
   SpawnDropped:
     TNT1 A 1 A_SpawnItem("ExplosiveRifleGiverDropped")
	 Stop
   Pickup:
	 TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("MPWeaponCheck") == 2,"PickupMP")
	 TNT1 A 0 A_JumpIfInventory("Explosive Machinegun",1,"GiveUpgrade")
	 TNT1 A 0 A_GiveInventory("BulletMag",72)
	 TNT1 A 1 A_GiveInventory("ExplosiveRifle3",1)
	 Stop
   GiveUpgrade:
     TNT1 A 0 A_GiveInventory("ExplosiveAmmo",50)
     TNT1 A 1 A_GiveInventory("Explosive Machinegun",1)
	 Stop
   PickupMP:
     TNT1 A 0 A_JumpIfInventory("ExplosiveRifle3",1,"Nope")
	 TNT1 A 0 A_JumpIfInventory("Explosive Machinegun",1,"Nope")
	 TNT1 A 0 A_GiveInventory("BulletMag",20)
     TNT1 A 1 ACS_NamedExecuteAlways("SpawnWeaponActive",0,5)
	 Fail
   Nope:
     PGND A 1
	 Fail
	 }
}

Actor ExplosiveRifleGiver2 : ExplosiveRifleGiver Replaces ExplosiveRifle2 {}

Actor ExplosiveRifleGiverDropped : ExplosiveRifleGiver
{
+INVENTORY.TOSSED
+INVENTORY.NEVERRESPAWN
States
{
  Spawn:
   PGND A -1
   Loop
  Pickup:
   TNT1 A 0 A_JumpIfInventory("Explosive Machinegun",1,"GiveUpgrade")
   TNT1 A 0 A_GiveInventory("BulletMag",72)
   TNT1 A 1 A_GiveInventory("ExplosiveRifle3",1)
   Stop
   }
}

Actor ExplosiveRifleSwitch : Inventory {inventory.maxamount 1}
Actor ExplosiveRifleStart : Inventory {inventory.maxamount 1}

Actor ExplosiveRifle3 : ExplosiveRifle2
{ //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: Complex Doom CF 3.0/4.1
//Sprite: ERXX
//Title: "Explosive Rifle" 
Weapon.AmmoType "EXPRMagazine"
Weapon.AmmoGive 0
Weapon.AmmoType2 "BulletMag"
Weapon.AmmoGive2 0 //108
Dropitem "ExplosiveRifleGiverDropped"
Inventory.PickupSound "ExplosiveRifle/Pickup"
Inventory.PickupMessage "Explosive Rifle: Press altfire while zoomed-unzoomed to enable gauss mode!"
Tag "Explosive Rifle"
+INVENTORY.UNDROPPABLE
States
{
  Spawn:
	PGND A -1
	Loop
  Select:
	TNT1 A 0
	TNT1 A 0 A_Raise
	Wait
  Deselect:
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"UnZoom")
	TNT1 A 0 A_PlaySound("weapons/weapondown",CHAN_BODY)
	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)
  DeselectLoop:
	TNT1 A 0 A_Lower
	ER7X A 1 A_Lower
	Loop
  Ready:
    TNT1 A 1 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleStart",1,1)
	Goto Startup
	TNT1 A 0 A_PlayWeaponSound("ExplosiveRifle/Draw")
	ER6X ABCDEFGH 1
  ReadyLoop:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
	TNT1 A 0 A_JumpIfInventory("WEMAction",1,"LowerWeapon")
	ER7X A 1 A_WeaponReady
	Loop
  LowerWeapon:
	TNT1 A 0 A_TakeInventory("WEMAction",1)
  	TNT1 A 0 A_PlaySound("executor/holster",6) 
	ER6X HGFEDCBA 1
	TNT1 A 1
	Wait
  Startup:
    TNT1 A 0 A_GiveInventory("ExplosiveRifleStart",1)
	TNT1 A 0 A_PlayWeaponSound("executor/foley")
	ER9X JKLMNOP 1
	Goto Reload+24
  UnZoom:
	TNT1 A 0 A_SetCrosshair(0)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	ER7X E 2 A_ZoomFactor(1.0)
	ER7X DCB 2
	TNT1 A 0 A_TakeInventory("ExplosiveRifleZoomed",1)
	Goto Deselect
  UnZoom2:
	ER5X A 3
	TNT1 A 0 A_SetCrosshair(0)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	ER7X E 2 A_ZoomFactor(1.0)
	ER7X DCB 2
	TNT1 A 0 A_TakeInventory("ExplosiveRifleZoomed",1)
	GoTo MineCheck
  UnZoom3:
	ER5X A 3
	TNT1 A 0 A_SetCrosshair(0)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	ER7X E 2 A_ZoomFactor(1.0)
	ER7X DCB 2
	TNT1 A 0 A_TakeInventory("ExplosiveRifleZoomed",1)
	GoTo GrenadeCheck
  UnZoom4:
	ER5X A 3
	TNT1 A 0 A_SetCrosshair(0)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	ER7X E 2 A_ZoomFactor(1.0)
	ER7X DCB 2
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_TakeInventory("ExplosiveRifleZoomed",1)
	Goto ReadyLoop
  UnZoom5:
    TNT1 A 0 A_PlayWeaponSound("weapons/click")
	ER5X AAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE)
	ER5X A 3
	TNT1 A 0 A_SetCrosshair(0)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	ER7X E 2 A_ZoomFactor(1.0)
	ER7X DCB 2
	TNT1 A 0 A_TakeInventory("ExplosiveRifleZoomed",1)
	Goto AltFire
  Fire:
	TNT1 A 0
	Goto Hold
  Hold:
    TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"FireSniper")
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleSwitch",1,"Gauss")
    TNT1 A 0 A_JumpIfInventory("EXPRMagazine",1,1)
	Goto Empty
	TNT1 A 0 A_JumpIfInventory("PowerDoubleFiringSpeed",1,"FireFaster")
	TNT1 A 0 A_JumpIfInventory("AgilityRuneRage",1,"FireFaster")
	TNT1 A 0 A_JumpIfInventory("TrueLegDoubleFiringSpeed",1,"FireFaster")
	TNT1 A 0 A_JumpIfInventory("PowerFireSpeedee",1,"FireFaster")
	TNT1 A 0 A_JumpIfInventory("CFSPFirepower",1,"FireFaster")
	TNT1 A 0 A_JumpIfInventory("DoomSlayerFirepower",1,"FireFaster")
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("PulseNail/fire",CHAN_AUTO)
	TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer2",ACS_NamedExecuteWithResult("FireRandomAngle",0,Random(-1,1)),0,0,6,0,ACS_NamedExecuteWithResult("FireRandomPitch",0,Random(-1,1)))
	TNT1 A 0 A_FireCustomMissile("ExplosiveBullet",ACS_NamedExecuteWithResult("FireRandomAngle",1),1,0,6,0,ACS_NamedExecuteWithResult("FireRandomPitch",1))
	TNT1 A 0 A_Recoil(1)
	ER7X F 1 Bright A_Light2
	ER7X G 1 Bright A_Light2
	ER7X H 1 Bright A_Light1
	ER7X I 1 A_Light0
	ER7X J 1
	ER7X K 2
	ER7X LLMM 1 A_Refire
	Goto ReadyLoop
  FireFaster:
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("PulseNail/fire",CHAN_AUTO)
	TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer2",ACS_NamedExecuteWithResult("FireRandomAngle",0,Random(-1,1)),0,0,6,0,ACS_NamedExecuteWithResult("FireRandomPitch",0,Random(-1,1)))
	TNT1 A 0 A_FireCustomMissile("ExplosiveBullet",ACS_NamedExecuteWithResult("FireRandomAngle",1),1,0,6,0,ACS_NamedExecuteWithResult("FireRandomPitch",1))
	TNT1 A 0 A_Recoil(1)
	ER7X F 1 Bright A_Light2
	ER7X G 1 Bright A_Light2
	ER7X H 1 Bright A_Light1
	ER7X I 1 A_Light0
	ER7X J 1
	ER7X KKLLMM 1 A_Refire("Hold")
	Goto ReadyLoop
  Gauss:
    TNT1 A 0 A_JumpIfInventory("DemonAmmo",60,1)
	Goto SwitchMode
    TNT1 A 0 Radius_Quake(4,10,0,10,0)
	TNT1 A 0 A_PlayWeaponSound("executor/fire")
	TNT1 A 0 A_FireCustomMissile("ExpGaussImpact",0,0,0,6)
	TNT1 A 0 A_Recoil(14)
	TNT1 A 0 A_Light2
	ER9X B 2 Bright A_RailAttack(Random(200,200), 0, 0, "ff 00 00", None, RGF_NOPIERCING|RGF_SILENT, 0, "PlayerRailPuffRed", 0, 0, 8192, 35, 0.5, 0.5, "ExpGaussRailCoreTrail")
	TNT1 A 0 A_TakeInventory("DemonAmmo",60,TIF_NOTAKEINFINITE)
	ER9X C 2 Bright A_Light2
	ER9X D 2 Bright A_Light1
	ER9X E 3 A_Light0
	ER9X F 45
	ER9X GH 2
	ER9X I 2
	ER7X KLM 2
	Goto ReadyLoop
  Zoom:
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_GiveInventory("ExplosiveRifleZoomed",1)
	ER7X BCDE 1
	TNT1 A 0 A_SetCrosshair(11)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	ER5X A 8 A_ZoomFactor(3.0)
	Goto ZoomLoop
  ZoomLoop:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"UnZoom3")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"UnZoom2")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"UnZoom4")
	ER5X A 1 A_WeaponReady
	Loop
  FireSniper:
    TNT1 A 0 A_JumpIfInventory("ExplosiveRifleSwitch",1,"SniperGauss")
    TNT1 A 0 A_JumpIfInventory("EXPRMagazine",1,1)
	Goto UnZoom5
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("PulseNail/fire",CHAN_AUTO)
	TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer2",0,0,0,6,0,0)
	TNT1 A 0 A_FireCustomMissile("ExplosiveBullet",0,1,0,6,0,0)
	TNT1 A 0 A_Recoil(1)
	TNT1 A 0 A_SetPitch(pitch-0.6)
	ER5X AA 1 A_Light2
	ER5X A 1 A_Light1
	ER5X A 1 A_Light0
	ER5X AAA 1 A_SetPitch(pitch+0.2,SPF_INTERPOLATE)
	ER5X AAAA 1 A_Refire("FireSniper2")
	Goto ZoomLoop
  FireSniper2:
    TNT1 A 0 A_JumpIfInventory("EXPRMagazine",1,1)
	Goto UnZoom5
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("PulseNail/fire",CHAN_AUTO)
	TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer2",ACS_NamedExecuteWithResult("FireRandomAngle",0,Random(-1,1)),0,0,6,0,ACS_NamedExecuteWithResult("FireRandomPitch",0,Random(-1,1)))
	TNT1 A 0 A_FireCustomMissile("ExplosiveBullet",ACS_NamedExecuteWithResult("FireRandomAngle",1),1,0,6,0,ACS_NamedExecuteWithResult("FireRandomPitch",1))
	TNT1 A 0 A_Recoil(1)
	TNT1 AA 0 A_SetPitch(pitch-0.6)
	ER5X AA 1 A_Light2
	ER5X A 1 A_Light1
	ER5X A 1 A_Light0
	ER5X AAA 1 A_SetPitch(pitch+0.2,SPF_INTERPOLATE)
	ER5X AAAA 1 A_Refire("FireSniper2")
	Goto ZoomLoop
  SniperGauss:
    TNT1 A 0 A_JumpIfInventory("DemonAmmo",60,1)
	Goto SwitchMode
    TNT1 A 0 Radius_Quake(2,10,0,10,0)
	TNT1 A 0 A_PlayWeaponSound("executor/fire")
	TNT1 A 0 A_FireCustomMissile("ExpGaussImpact",0,0,0,6)
	ER5X A 0 A_RailAttack(Random(50,150),0,0,"ff 00 00",None,RGF_NOPIERCING|RGF_SILENT,0,None,0,0,0,35,0.5,0.5,"ExpGaussRailCoreTrail")
	TNT1 A 0 A_TakeInventory("DemonAmmo",60,TIF_NOTAKEINFINITE)
	TNT1 A 0 A_Recoil(14)
	TNT1 A 0 A_SetPitch(pitch-2)
	ER5X AA 1 A_Light2
	ER5X A 1 A_Light1
	TNT1 A 0 A_Light0
	ER5X AAAAAAAAAAAAAAAAAAAA 1 A_SetPitch(pitch+0.1,SPF_INTERPOLATE)
	ER5X A 50
	Goto ZoomLoop	
  Empty:
    TNT1 A 0 A_PlayWeaponSound("weapons/click")
	ER7X LLLMMMAAA 1 A_WeaponReady(WRF_NOFIRE)
	TNT1 A 0 A_JumpIfInventory("BulletMag",3,"Reload")
	Goto ReadyLoop
  Empty2:
    TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"Empty3")
    TNT1 A 0 A_PlayWeaponSound("weapons/click4")
	ER7X LLLMMMAAA 1 A_WeaponReady(WRF_NOFIRE)
	Goto ReadyLoop
  Empty3:
    TNT1 A 0 A_PlayWeaponSound("weapons/click4")
	ER5X AAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE)
	Goto ZoomLoop
  AltHold:
    TNT1 A 0
	Goto Altfire
  AltFire:
    TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"SwitchMode")
  	TNT1 A 0 A_JumpIfInventory("EXPRMagazine",72,"SwitchMode")
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleSwitch",1,"SwitchMode2")
    TNT1 A 0 A_JumpIfInventory("BulletMag",3,"Reload")
	Goto SwitchMode
  Reload:
    TNT1 A 0 A_PlayWeaponSound("executor/foley")
	ER7X NOP 1
	ER7X QRSTUVW 2
	ER7X "X" 3 A_PlaySound("executor/magout",CHAN_AUTO)
	ER7X YZ 3
	ER8X ABCD 1
	ER8X EFGHIJK 2
	ER8X LM 3
  ReloadWeapon:
	TNT1 A 0 A_TakeInventory("BulletMag",3,TIF_NOTAKEINFINITE)
	TNT1 A 0 A_GiveInventory("EXPRMagazine",3)
	TNT1 A 0 A_JumpIfInventory("EXPRMagazine",72,2)
	TNT1 A 0 A_JumpIfInventory("BulletMag",3,"ReloadWeapon")
	ER8X N 3 A_PlaySound("executor/magin",CHAN_AUTO)
	ER8X OPQRSTU 2
	ER8X VWXYZ 1
	ER9X A 1
	Goto ReadyLoop
  SwitchMode:
    TNT1 A 0 A_JumpIfInventory("ExplosiveRifleSwitch",1,"SwitchMode2")
    TNT1 A 0 A_JumpIfInventory("DemonAmmo",60,1)
	Goto Empty2
    TNT1 A 0 A_PlayWeaponSound("executor/turnon")
	TNT1 A 0 A_GiveInventory("ExplosiveRifleSwitch",1)
	TNT1 A 0 A_Print("Gauss",1)
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"ZoomWait")
	ER7X LLLMMMAAA 1 A_WeaponReady(WRF_NOFIRE)
	Goto ReadyLoop
  SwitchMode2:
    TNT1 A 0 A_PlayWeaponSound("executor/turnoff")
	TNT1 A 0 A_TakeInventory("ExplosiveRifleSwitch",1)
	TNT1 A 0 A_Print("Explosive bullets",1)
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"ZoomWait")
	ER7X LLLMMMAAA 1 A_WeaponReady(WRF_NOFIRE)
	Goto ReadyLoop
  ZoomWait:
    ER5X AAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE)
	Goto ZoomLoop
  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto ReadyLoop
  GrenadeToss:
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"UnZoom3")
  	TNT1 A 0 A_PlaySound("executor/holster",6) 
	ER6X HGFEDCBA 1
	TNT1 A 4
	HGRN ABCDEFGHI 1
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadepin")
	HGRN JKLM 2
	TNT1 A 11
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1,TIF_NOTAKEINFINITE)
	HGRN N 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	HGRN OPQRS 1
	HGRN TU 2
	TNT1 A 6 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_PlaySound("executor/draw",6) 
	Goto Ready+3
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto ReadyLoop
  MineToss:
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"UnZoom2")
  	TNT1 A 0 A_PlaySound("executor/holster",6) 
	ER6X HGFEDCBA 1
	TNT1 A 8
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	MINE ABCDEF 1
	TNT1 A 0 A_TakeInventory("MineAmmo",1,TIF_NOTAKEINFINITE)
	MINE G 1 A_FireCustomMissile("ThrownMine",0,0,0,0,false)
	MINE HI 1
	MINE JKLM 1
	TNT1 A 5 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_PlaySound("executor/draw",6)
	Goto Ready+3
	}
}

ACTOR EXPRMagazine : Ammo
{
Inventory.Amount 0
Inventory.MaxAmount 72
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 72
Inventory.Icon "PGNDA0"
+IGNORESKILL
}

Actor ExplosiveBullet2 : ExplosiveBullet Replaces ExplosiveBullet { Speed 500 Decal DoomImpScorch }

Actor ExpGaussImpact : PulseSlugImpact
{
Scale 0.1
MissileType "ExpGaussShockWave"
MissileHeight 5
Damagetype "Havoc"
Decal BigRedScorch
Seesound "uroboros/laser"
+FORCEPAIN
+FOILINVUL
States
{
  Spawn:
    E3FD A 1 Bright A_SpawnItemEx("ExpGaussFlySpark",Random(4,-4),Random(4,-4),Random(4,-4),0,0,0,0,0,128)
	Loop
  Death:
    TNT1 AAA 0 A_StopSound(CHAN_VOICE)
    TNT1 A 0 Radius_Quake(9,8,0,16,0)
	TNT1 A 0 Radius_Quake(8,10,0,18,0)
	TNT1 A 0 Radius_Quake(7,12,0,20,0)
	TNT1 A 0 Radius_Quake(6,14,0,22,0)
	TNT1 A 0 Radius_Quake(5,16,0,24,0)
	TNT1 A 0 Radius_Quake(4,18,0,26,0)
	TNT1 A 0 Radius_Quake(3,20,0,28,0)
	TNT1 A 0 Radius_Quake(2,24,0,30,0)
	TNT1 A 0 Radius_Quake(1,26,0,32,0)
	TNT1 A 0 A_Explode(64,512,0)
	TNT1 A 0 A_Explode(128,384,0)
	TNT1 A 0 A_Explode(360,256,XF_HURTSOURCE)
	TNT1 A 0 A_SpawnItemEx("ExpGaussProjectileExplosionSmall",0,0,0)
	//TNT1 A 0 A_PlaySound("GreenHuge/Explosion")
    TNT1 AAAAAA 0 A_SpawnItemEx("EradicationBFGProjectilSmokeSmall",0,0,0,frandom(-6,6),frandom(-6,6),frandom(-6,6))
	TNT1 AAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ExpGaussFlySparkRandom",random(-12,12),random(-12,12),random(12,22),random(-2,2),random(-2,2),random(-2,2),random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	X2W1 AAABBBCCC 1 A_SpawnItemEx("RedExplosionKaboom",0,0,0,frandom(-12,12),frandom(-12,12),frandom(-12,12))
	X2W1 DDDEEEFFFGGGHHHIIIJJJKKK 1
	Stop
	}
}

Actor ExpGaussProjectileExplosionSmall : RedHugeExplosion
{ 
States 
{ 
  Spawn:  
	TNT1 A 0
	TNT1 A 0 Radius_Quake(6,28,0,10,0)
    TNT1 A 0 A_SpawnItemEx("RedRocketEx",0,0,0)
    TNT1 A 0 A_SpawnItemEx("RedExplosionFlareSmaller",0,0,0,0,0,0,0,0)
    TNT1 A 0 A_SpawnItemEx("ExpGaussShockWaveBig",0,0,0,0,0,0,0,0)
	TNT1 A 0 A_PlaySound("GreenHuge/Explosion")
	TNT1 AAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RedHugeExplosionParticle",random(64,-64),random(64,-64),random(64,-64),random(8,-8),random(8,-8),random(8,-8),0,128)
	TNT1 AAAAAAAAAAA 1 A_SpawnItemEx("RedExplosionKaboom",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4))
	TNT1 AA 0 A_SpawnItemEx("HugeExplosionSmoke",random(16,-16),random(16,-16),random(16,-16),random(8,-8),random(8,-8),random(0,6),0,128)
    TNT1 A 10
	Stop
    } 
}

Actor RedExplosionFlareSmaller : RedHugeExplosionFlare { Scale 1.0 }

Actor EradicationBFGProjectilSmokeSmall : EradicationBFGProjectilSmoke  { Scale 0.5 }

ACTOR ExpGaussRailCoreTrail : PoweredDTRailCoreTrail
{
States
{
Spawn:
	TNT1 AA 0
BurnOut:
	SRPK ABC 1 Bright A_FadeOut(0.01)
	SRPK BABC 1 Bright A_FadeOut(0.01)
	SRPK BABC 1 Bright A_FadeOut(0.01)
	SRPK BABC 1 Bright A_FadeOut(0.01)
	SRPK BABC 1 Bright A_FadeOut(0.01)
	SRPK BABC 1 Bright A_FadeOut(0.01)
	SRPK B 1 Bright A_FadeOut(0.01)
	SRPK D 2 Bright
	SRPK E 2 Bright
	SRPK F 2 Bright
	Stop
}
}

Actor ExpGaussShockWave : PulseShockWave2
{
Scale 0.04
States
{
  Spawn:
    TNT1 A 0 NoDelay A_Spawnitem("ExpGaussFlySparkSpawner")
	TNT1 A 0 A_Jump(255,"One","Two","Three")
  One:
    EKXW AAAAAA 1 Bright A_SetScale(Scalex+0.01)
  SpawnLoop:
    EKXW A 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW A 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW A 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW A 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW A 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW A 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
  Two:
    EKXW BBBBBB 1 Bright A_SetScale(Scalex+0.01)
  SpawnLoop:
    EKXW B 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW B 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW B 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW B 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW B 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW B 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
  Three:
    EKXW CCCCCC 1 Bright A_SetScale(Scalex+0.01)
  SpawnLoop:
    EKXW C 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW C 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW C 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW C 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW C 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW C 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
	}
}

Actor ExpGaussShockWaveBig : ExpGaussShockWave
{
Scale 1.6
States
{
  Spawn:
	TNT1 A 0 NoDelay A_Jump(255,"One","Two","Three")
  One:
    EKXW AAAAAA 1 Bright A_SetScale(Scalex+0.03)
  SpawnLoop:
    EKXW A 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW A 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW A 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW A 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW A 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW A 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
  Two:
    EKXW BBBBBB 1 Bright A_SetScale(Scalex+0.03)
  SpawnLoop:
    EKXW B 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW B 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW B 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW B 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW B 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW B 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
  Three:
    EKXW CCCCCC 1 Bright A_SetScale(Scalex+0.03)
  SpawnLoop:
    EKXW C 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW C 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW C 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW C 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW C 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW C 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
	}
}

ACTOR ExpGaussFlySparkSpawner : BluePowerLineSpawner
{
States
{
Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
	TNT1 AAAAAAAAAAAAAA 1 Bright A_SpawnItemEx("ExpGaussFlySparkRandom",Random(6,-6),Random(6,-6),Random(6,-6),0,0,0,0,128)
    Stop
    }
}

Actor ExpGaussFlySparkRandom : RandomSpawner
{
Dropitem "ExpGaussFlySpark", 256, 1
Dropitem "ExpGaussFlySpark2", 256, 1
}

ACTOR ExpGaussFlySpark : DemonTechRailGunTrailSpark
{
Scale 0.03
+CLIENTSIDEONLY
States
{
  Spawn:
    TNT1 A 0 NoDelay A_SetScale(FRandom(0.02,0.05))
  SpawnLoop:
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
	LS5B A 0 A_JumpIf(ScaleX <= 0, "NULL")
	LS5B A 0 A_SetScale(ScaleX-0.0008)
    LS5B A 1 bright A_ChangeVelocity (frandom(-0.2, 0.2), frandom(-0.2, 0.2), frandom(-0.2, 0.2), 0)
    LS5B A 2 bright A_FadeOut(0.05)
    Loop
    }
}

ACTOR ExpGaussFlySpark2 : ExpGaussFlySpark
{
Scale 0.09
States
{
  Spawn:
    TNT1 A 0 NoDelay A_SetScale(FRandom(0.07,0.1))
  SpawnLoop:
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
	PAO3 A 0 A_JumpIf(ScaleX <= 0, "NULL")
	PAO3 A 0 A_SetScale(ScaleX-0.0008)
    PAO3 A 1 bright A_ChangeVelocity (frandom(-0.2, 0.2), frandom(-0.2, 0.2), frandom(-0.2, 0.2), 0)
    PAO3 A 2 bright A_FadeOut(0.05)
    Loop
    }
}

Actor ExplosiveMGSwitch : Inventory {inventory.maxamount 1}
Actor ExplosiveMGZoomed : Inventory {inventory.maxamount 1}
Actor ExplosiveMGStart : Inventory {inventory.maxamount 1}
ACTOR ExplosiveMGUpgradeToken : Inventory {Inventory.MaxAmount 1}

Actor "Explosive Machinegun" : ExplosiveRifle3 //DAKDAKDAKDAKDAKDAKDAK
{ //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: EMXX
//Title: "Explosive Machinegun" 
Weapon.AmmoType "EXPMMagazine"
Weapon.AmmoGive 0
Weapon.AmmoUse 1
Weapon.AmmoType2 "ExplosiveAmmo"
Weapon.AmmoGive2 0 //60
Weapon.KickBack 35
Dropitem "ExplosiveRifleGiverDropped"
Inventory.PickupSound "ExplosiveRifle/Pickup"
Inventory.PickupMessage "Explosive Machinegun"
Tag "Explosive Machinegun"
+INVENTORY.UNDROPPABLE
+WEAPON.CHEATNOTWEAPON
States
{
  Spawn:
	EMX3 A -1
	Loop
  Ready:
    TNT1 A 1 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_JumpIfInventory("ExplosiveMGStart",1,1)
	Goto Startup
	TNT1 A 0 A_PlayWeaponSound("explosivemg/draw")
	EMX4 ABC 3
	EMX4 DEFGHIJKLM 2
  ReadyLoop:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
	TNT1 A 0 A_JumpIfInventory("WEMAction",1,"LowerWeapon")
	EMX5 A 1 A_WeaponReady
	Loop
  Startup:
    TNT1 A 0 A_GiveInventory("ExplosiveMGUpgradeToken",1)
	TNT1 A 0 A_TakeInventory("ExplosiveRifle3",1)
	TNT1 A 0 A_GiveInventory("ExplosiveMGStart",1)
	TNT1 A 0 A_PlayWeaponSound("explosivemg/foley")
	EMX7 VW 3
	EMX7 XYZ 2
	Goto ReloadWeapon+11
  LowerWeapon:
	TNT1 A 0 A_TakeInventory("WEMAction",1)
  	TNT1 A 0 A_PlaySound("explosivemg/foley",6) 
	EMX7 OPQRSTU 1
	TNT1 A 1
	Wait
  Deselect:
	TNT1 A 0 A_JumpIfInventory("ExplosiveMGZoomed",1,"UnZoom")
	TNT1 A 0 A_PlaySound("weapons/weapondown",CHAN_BODY)
	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)
  DeselectLoop:
	TNT1 A 0 A_Lower
	EMX5 A 1 A_Lower
	Loop
  Fire:
	TNT1 A 0
	Goto Hold
  Hold:
    TNT1 A 0 A_JumpIfInventory("ExplosiveMGZoomed",1,"FireSniper")
	TNT1 A 0 A_JumpIfInventory("ExplosiveMGSwitch",1,"Seeker")
    TNT1 A 0 A_JumpIfInventory("EXPMMagazine",1,1)
	Goto Empty
	TNT1 A 0 A_JumpIfInventory("PowerDoubleFiringSpeed",1,"FireFaster")
	TNT1 A 0 A_JumpIfInventory("AgilityRuneRage",1,"FireFaster")
	TNT1 A 0 A_JumpIfInventory("TrueLegDoubleFiringSpeed",1,"FireFaster")
	TNT1 A 0 A_JumpIfInventory("PowerFireSpeedee",1,"FireFaster")
	TNT1 A 0 A_JumpIfInventory("CFSPFirepower",1,"FireFaster")
	TNT1 A 0 A_JumpIfInventory("DoomSlayerFirepower",1,"FireFaster")
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("explosivemg/fire",CHAN_AUTO)
	TNT1 A 0 A_FireCustomMissile("ExplosiveRevolverTracer",FRandom(-1,1),1,0,6,0,FRandom(-1,1))
	TNT1 A 0 A_Recoil(2)
	EMX5 B 1 Bright A_Light2
	EMX5 C 1 Bright A_Light2
	EMX5 D 1 Bright A_Light1
	EMX5 E 1 A_Light0
	EMX5 FGH 1
	EMX5 I 2
	EMX5 JJKK 1 A_Refire
	Goto ReadyLoop
  FireFaster:
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("explosivemg/fire",CHAN_AUTO)
	TNT1 A 0 A_FireCustomMissile("ExplosiveRevolverTracer",FRandom(-1,1),1,0,6,0,FRandom(-1,1))
	TNT1 A 0 A_Recoil(2)
	EMX5 B 1 Bright A_Light2
	EMX5 C 1 Bright A_Light2
	EMX5 D 1 Bright A_Light1
	EMX5 E 1 A_Light0
	EMX5 FGH 1
	EMX5 IIJJKK 1 A_Refire
	Goto ReadyLoop
  Seeker:
    TNT1 A 0 A_JumpIfInventory("Dcell",10,1)
	Goto SwitchMode
    TNT1 A 0 Radius_Quake(6,10,0,10,0)
	TNT1 A 0 A_PlayWeaponSound("explosivemg/seekerfire")
	TNT1 A 0 A_Recoil(5)
	TNT1 A 0 A_Light2
	TNT1 A 0 A_TakeInventory("Dcell",5)
	TNT1 A 0 A_TakeInventory("Dcell",5,TIF_NOTAKEINFINITE)
	EMX8 A 2 Bright A_FireCustomMissile("ExplosiveMGDSeeker",0,0,0,6)
	EMX8 B 2 Bright A_Light2
	EMX8 C 2 Bright A_Light1
	EMX8 D 3 A_Light0
	EMX8 E 3
	EMX8 F 20
	EMX8 G 2
	EMX5 FGHI 2
	EMX5 JJKK 1 A_Refire("Seeker")
	Goto ReadyLoop
  FireSniper:
    TNT1 A 0 A_JumpIfInventory("ExplosiveMGSwitch",1,"SniperSeeker")
    TNT1 A 0 A_JumpIfInventory("EXPMMagazine",1,1)
	Goto UnZoom5
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("explosivemg/fire",CHAN_AUTO)
	TNT1 A 0 A_FireCustomMissile("ExplosiveRevolverTracer",0,1,0,6,0,0)
	TNT1 A 0 A_Recoil(1)
	TNT1 A 0 A_SetPitch(pitch-1)
	EMX3 BB 1 A_Light2
	EMX3 B 1 A_Light1
	EMX3 B 1 A_Light0
	EMX3 BBBBB 1 A_SetPitch(pitch+0.2,SPF_INTERPOLATE)
	EMX3 B 10
	Goto ZoomLoop
  SniperSeeker:
    TNT1 A 0 A_JumpIfInventory("Dcell",10,1)
	Goto SwitchMode
    TNT1 A 0 Radius_Quake(2,10,0,10,0)
	TNT1 A 0 A_PlayWeaponSound("explosivemg/seekerfire")
	EMX3 B 0 A_FireCustomMissile("ExplosiveMGDSniperSeeker",0,0,0,6)
	TNT1 A 0 A_TakeInventory("Dcell",5)
	TNT1 A 0 A_TakeInventory("Dcell",5,TIF_NOTAKEINFINITE)
	TNT1 A 0 A_Recoil(5)
	TNT1 A 0 A_SetPitch(pitch-2)
	EMX3 BB 1 A_Light2
	EMX3 B 1 A_Light1
	TNT1 A 0 A_Light0
	EMX3 BBBBBBBBBBBBBBBBBBBB 1 A_SetPitch(pitch+0.1,SPF_INTERPOLATE)
	EMX3 B 25
	Goto ZoomLoop
  Zoom:
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_GiveInventory("ExplosiveMGZoomed",1)
	EMX5 A 3
	TNT1 A 0 A_SetCrosshair(11)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EMX3 B 8 A_ZoomFactor(3.0)
	Goto ZoomLoop
  ZoomLoop:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"UnZoom3")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"UnZoom2")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"UnZoom4")
	EMX3 B 1 A_WeaponReady
	Loop
  UnZoom:
	TNT1 A 0 A_SetCrosshair(0)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EMX5 A 8 A_ZoomFactor(1.0)
	TNT1 A 0 A_TakeInventory("ExplosiveMGZoomed",1)
	Goto Deselect
  UnZoom2:
	EMX3 B 3
	TNT1 A 0 A_SetCrosshair(0)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EMX5 A 8 A_ZoomFactor(1.0)
	TNT1 A 0 A_TakeInventory("ExplosiveMGZoomed",1)
	GoTo MineCheck
  UnZoom3:
	EMX3 B 3
	TNT1 A 0 A_SetCrosshair(0)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EMX5 A 8 A_ZoomFactor(1.0)
	TNT1 A 0 A_TakeInventory("ExplosiveMGZoomed",1)
	GoTo GrenadeCheck
  UnZoom4:
	EMX3 B 3
	TNT1 A 0 A_SetCrosshair(0)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EMX5 A 8 A_ZoomFactor(1.0)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_TakeInventory("ExplosiveMGZoomed",1)
	Goto ReadyLoop
  UnZoom5:
    TNT1 A 0 A_PlayWeaponSound("weapons/click")
	EMX3 BBBBBBBBB 1 A_WeaponReady(WRF_NOFIRE)
	EMX3 B 3
	TNT1 A 0 A_SetCrosshair(0)
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EMX5 A 8 A_ZoomFactor(1.0)
	TNT1 A 0 A_TakeInventory("ExplosiveMGZoomed",1)
	Goto AltFire
  Empty:
    TNT1 A 0 A_PlayWeaponSound("weapons/click")
	EMX5 IIIJJJKKK 1 A_WeaponReady(WRF_NOFIRE)
	TNT1 A 0 A_JumpIfInventory("ExplosiveAmmo",1,"Reload")
	Goto ReadyLoop
  Empty2:
    TNT1 A 0 A_JumpIfInventory("ExplosiveMGZoomed",1,"Empty3")
    TNT1 A 0 A_PlayWeaponSound("weapons/click4")
	EMX5 IIIJJJKKK 1 A_WeaponReady(WRF_NOFIRE)
	Goto ReadyLoop
  Empty3:
    TNT1 A 0 A_PlayWeaponSound("weapons/click4")
	EMX3 BBBBBBBBB 1 A_WeaponReady(WRF_NOFIRE)
	Goto ZoomLoop
  AltHold:
    TNT1 A 0
	Goto Altfire
  AltFire:
	TNT1 A 0 A_JumpIfInventory("ExplosiveMGZoomed",1,"SwitchMode")
	TNT1 A 0 A_JumpIfInventory("EXPMMagazine",51,"SwitchMode")
	TNT1 A 0 A_JumpIfInventory("ExplosiveMGSwitch",1,"SwitchMode2")
    TNT1 A 0 A_JumpIfInventory("ExplosiveAmmo",1,"Reload")
	Goto SwitchMode
  Reload:
    TNT1 A 0 A_PlaySound("explosivemg/foley",CHAN_AUTO)
    EMX5 LMNOP 1
	EMX5 QRST 2
	EMX5 UV 3
	EMX5 WXYZ 2
	EMX6 ABC 2
	EMX6 D 2 A_PlaySound("explosivemg/magout",CHAN_AUTO)
	EMX6 EFGH 2
	EMX6 I 20
	EMX6 JK 2
	EMX6 L 3
	TNT1 A 0 A_JumpIfInventory("EXPMMagazine",1,"BITCH")
  ReloadWeapon:
	TNT1 A 0 A_TakeInventory("ExplosiveAmmo",1,TIF_NOTAKEINFINITE)
	TNT1 A 0 A_GiveInventory("EXPMMagazine",1)
	TNT1 A 0 A_JumpIfInventory("EXPMMagazine",50,2)
	TNT1 A 0 A_JumpIfInventory("ExplosiveAmmo",1,"ReloadWeapon")
	EMX6 M 3 A_PlaySound("explosivemg/magin",CHAN_AUTO)
	EMX6 "NO" 3
	EMX6 PQRS 2
	EMX6 T 4 A_PlaySound("explosivemg/magload",CHAN_AUTO)
	EMX6 UVWXYZ 1
	EMX7 AB 2
	EMX7 CDE 3
	EMX7 FGHIJ 2
	Goto ReadyLoop
  BITCH: //If you were wondering, this is short for "Bullet In The Chamber"
	TNT1 A 0 A_TakeInventory("ExplosiveAmmo",1,TIF_NOTAKEINFINITE)
	TNT1 A 0 A_GiveInventory("EXPMMagazine",1)
	TNT1 A 0 A_JumpIfInventory("EXPMMagazine",51,2)
	TNT1 A 0 A_JumpIfInventory("ExplosiveAmmo",1,"BITCH")
	EMX6 M 3 A_PlaySound("explosivemg/magin",CHAN_AUTO)
	EMX6 "NO" 3
	EMX6 P 2
    EMX7 KLMN 2
	EMX7 FGHIJ 2
	Goto ReadyLoop
  SwitchMode:
    TNT1 A 0 A_JumpIfInventory("ExplosiveMGSwitch",1,"SwitchMode2")
    TNT1 A 0 A_JumpIfInventory("Dcell",10,1)
	Goto Empty2
    TNT1 A 0 A_PlayWeaponSound("explosivemg/seekerenable")
	TNT1 A 0 A_GiveInventory("ExplosiveMGSwitch",1)
	TNT1 A 0 A_Print("D-Seeker",1)
	TNT1 A 0 A_JumpIfInventory("ExplosiveMGZoomed",1,"ZoomWait")
	EMX5 IIIJJJKKK 1 A_WeaponReady(WRF_NOFIRE)
	Goto ReadyLoop
  SwitchMode2:
    TNT1 A 0 A_PlayWeaponSound("explosivemg/seekerdisable")
	TNT1 A 0 A_TakeInventory("ExplosiveMGSwitch",1)
	TNT1 A 0 A_Print("Explosive bullets",1)
	TNT1 A 0 A_JumpIfInventory("ExplosiveMGZoomed",1,"ZoomWait")
	EMX5 IIIJJJKKK 1 A_WeaponReady(WRF_NOFIRE)
	Goto ReadyLoop
  ZoomWait:
    EMX3 BBBBBBBBB 1 A_WeaponReady(WRF_NOFIRE)
	Goto ZoomLoop
  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto ReadyLoop
  GrenadeToss:
	TNT1 A 0 A_JumpIfInventory("ExplosiveMGZoomed",1,"UnZoom3")
  	TNT1 A 0 A_PlaySound("explosivemg/foley",6) 
	EMX7 OPQRSTU 1
	TNT1 A 4
	HGRN ABCDEFGHI 1
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadepin")
	HGRN JKLM 2
	TNT1 A 11
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1,TIF_NOTAKEINFINITE)
	HGRN N 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	HGRN OPQRS 1
	HGRN TU 2
	TNT1 A 6 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_PlaySound("explosivemg/draw",6)
	EMX4 ABCDEFGHIJKLM 1
	Goto ReadyLoop
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto ReadyLoop
  MineToss:
	TNT1 A 0 A_JumpIfInventory("ExplosiveMGZoomed",1,"UnZoom2")
  	TNT1 A 0 A_PlaySound("explosivemg/foley",6) 
	EMX7 OPQRSTU 1
	TNT1 A 8
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	MINE ABCDEF 1
	TNT1 A 0 A_TakeInventory("MineAmmo",1,TIF_NOTAKEINFINITE)
	MINE G 1 A_FireCustomMissile("ThrownMine",0,0,0,0,false)
	MINE HI 1
	MINE JKLM 1
	TNT1 A 5 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_PlaySound("explosivemg/draw",6)
	EMX4 ABCDEFGHIJKLM 1
	Goto ReadyLoop
	}
}

ACTOR EXPMMagazine : Ammo
{
Inventory.Amount 0
Inventory.MaxAmount 51
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 51
Inventory.Icon "EMX3A0"
+IGNORESKILL
}

Actor ExplosiveMGDSeeker : ExpGaussImpact
{
Const int BallDmg = 6;
Const int BallRad = 300;
Const int FullDamage = 64;
Const int Thresh = 1;
Const int MaxTurn = 90;
Const int TurnChance = 256;
Speed 100
Damage (Random(5,10))
Scale 0.125
ReactionTime 6
Damagetype "Lightning"
Species "Player"
SeeSound "weapons/plasmaultimate"
MissileType "TrueExpGaussShockWave"
Radius 1
Height 1
+THRUACTORS
+FOILINVUL
+DONTREFLECT
+SEEKERMISSILE
+DONTBLAST
+FORCERADIUSDMG
+NOTIMEFREEZE
+RIPPER
+NOBLOOD
+PAINLESS
+DROPOFF
+STEPMISSILE
States
{
  Spawn:
    TNT1 A 0 NoDelay A_PlaySound("plasma/flyultimate",5,1.0,1)
	TNT1 A 0 A_PlaySound("plasma/flyultimate",6,1.0,1)
  Looping:
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 A 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 B 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 C 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 D 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 E 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 F 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 G 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 H 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 I 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 J 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 K 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 L 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 M 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 N 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 O 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 P 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 Q 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 R 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 S 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 T 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 U 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 V 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 W 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 "X" 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 "Y" 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ9 "Z" 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ0 A 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ0 B 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ0 C 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ0 D 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	TNT1 A 0 A_Explode(BallDmg,BallRad,FALSE,FALSE,FullDamage)
	TNT1 A 0 A_SpawnItemEx("T3DBFGBallTrailSmall",0,random(-2,2),random(-2,2),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("PlayerExplosiveMGShockAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	CSZ0 E 1 Bright A_SeekerMissile(Thresh,MaxTurn,SMF_LOOK|SMF_PRECISE,TurnChance,16)
	"####" "#" 0 A_Countdown
	Loop
  Death:
    TNT1 A 0 Radius_Quake(9,8,0,16,0)
	TNT1 A 0 Radius_Quake(8,10,0,18,0)
	TNT1 A 0 Radius_Quake(7,12,0,20,0)
	TNT1 A 0 Radius_Quake(6,14,0,22,0)
	TNT1 A 0 Radius_Quake(5,16,0,24,0)
	TNT1 A 0 Radius_Quake(4,18,0,26,0)
	TNT1 A 0 Radius_Quake(3,20,0,28,0)
	TNT1 A 0 Radius_Quake(2,24,0,30,0)
	TNT1 A 0 Radius_Quake(1,26,0,32,0)
	TNT1 A 0 A_PlaySound("Weapons/dbfgexplode",5)
	//TNT1 A 0 A_PlaySound("Weapons/dbfgexplode",6)
	TNT1 A 0 A_SpawnItemEx("ExpMGProjectileExplosionSmall",0,0,0)
	TNT1 A 30 A_Explode(250,250)
	Stop
	}
}

Actor ExplosiveMGDSniperSeeker : ExplosiveMGDSeeker { +SCREENSEEKER }

Actor ExpMGProjectileExplosionSmall : RedHugeExplosion
{ 
States 
{ 
  Spawn:  
	TNT1 A 0
	TNT1 A 0 Radius_Quake(4,28,0,10,0)
    TNT1 A 0 A_SpawnItemEx("BlueRocketEx3",0,0,0)
    TNT1 A 0 A_SpawnItemEx("BlueExplosionFlareSmaller",0,0,0,0,0,0,0,0)
    TNT1 A 0 A_SpawnItemEx("TrueExpGaussShockWaveMedium",0,0,0,0,0,0,0,0)
	//TNT1 A 0 A_PlaySound("GreenHuge/Explosion")
	TNT1 AAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("T3DBFGBallParticleFloater",random(64,-64),random(64,-64),random(64,-64),random(8,-8),random(8,-8),random(8,-8),0,128)
	TNT1 AAAAAAAAAAA 1 A_SpawnItemEx("BlueExplosionKaboom3",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4))
	TNT1 AA 0 A_SpawnItemEx("HugeExplosionSmoke",random(16,-16),random(16,-16),random(16,-16),random(8,-8),random(8,-8),random(0,6),0,128)
    TNT1 A 10
	Stop
    } 
}

Actor BlueRocketEx3 : GreenRocketEx
{
States
{
  Spawn:
	BEX5 ABCEFGH 2 Bright
	Stop
}
}

Actor BlueExplosionKaboom3 : Kaboom
{
States
{
  Spawn:
	TNT1 A 0
	FBBB ABCDEFGHIJKLMN 1 Bright A_FadeOut(0.05)
	Stop
}
}

ACTOR T3DBFGBoltExpBFaster : T3DBFGBoltExpB
{
States
{
	Spawn:
		TNT1 A 0 NoDelay A_PlaySound("Weapons/dbfgwave",5)
		TNT1 A 0 A_PlaySound("Weapons/dbfgwave",6)
		D3P1 A 1 Bright A_FadeOut(0.05,1)
		D3P1 B 1 Bright A_FadeOut(0.05,1)
		D3P1 C 1 Bright A_FadeOut(0.045,1)
		D3P1 D 1 Bright A_FadeOut(0.035,1)
		D3P1 E 1 Bright A_FadeOut(0.025,1)
		D3P1 F 1 Bright A_FadeOut(0.015,1)
		D3P1 G 1 Bright A_FadeOut(0.065,1)
	Continuous:
		D3P1 G 1 Bright A_FadeOut(0.065,1)
		Loop
	}
}

Actor BlueExplosionFlareSmaller : RedExplosionFlareSmaller 
{ 
Scale 1.0
States
{
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
  Vanish:
	T804 F 1 A_FadeOut(0.04)
	TNT1 A 0 A_SetScale(ScaleX-0.02)
	Loop
	}
}

ACTOR PlayerExplosiveMGShockAttack : T3DBFGShockAttack0
{
+FRIENDLY
//+PAINLESS
Species "Player"
DamageType ""
DamageType "Lightning"
MissileType "PlayerT3DBFGRailgunSlug"
States
{
  Attack:
    TNT1 A 0 A_JumpIfCloser(200,1)
	Goto Death
	TNT1 A 0 A_SetAngle(angle+180)
	TNT1 A 0 A_CustomRailgun(Random(25,50),0,NONE,NONE,RGF_SILENT|RGF_FULLBRIGHT|RGF_NOPIERCING,0,0,"RailTargetPuff",0,0,100,0,2,0,"PlayerDBFGRailTrailShorter",-25)
	TNT1 A 0 A_CustomRailgun(Random(25,50),0,NONE,NONE,RGF_SILENT|RGF_FULLBRIGHT|RGF_NOPIERCING,0,0,"RailTargetPuff",0,0,100,0,2,0,"PlayerDBFGRailTrailShorter",0)
	TNT1 A 0 A_CustomRailgun(Random(25,50),0,NONE,NONE,RGF_SILENT|RGF_FULLBRIGHT|RGF_NOPIERCING,0,0,"RailTargetPuff",0,0,100,0,2,0,"PlayerDBFGRailTrailShorter",-10)
	TNT1 A 1 Bright A_MissileAttack
	TNT1 A 0 A_CustomRailgun(-1,0,NONE,NONE,RGF_SILENT|RGF_FULLBRIGHT|RGF_NOPIERCING,1,0,"StrikeLightningPuff",0,0,150,0,2,0,"PlayerDBFGRailTrailLonger",-10)
	Goto Death
	}
}

ACTOR PlayerDBFGRailTrailLonger : PlayerDBFGRailTrail
{
States
{
  Spawn:
	HSPB A 10 Bright
	Stop
	}
}

ACTOR PlayerDBFGRailTrailShorter : PlayerDBFGRailTrail
{
States
{
  Spawn:
	HSPB A 3 Bright
	Stop
	}
}

Actor T3DBFGBallTrailSmall : T3DBFGBallTrail { Scale 0.4 }

Actor TrueExpGaussShockWave : ExpGaussShockWave
{
States
{
  Spawn:
    TNT1 A 0 NoDelay A_Spawnitem("TrueExpGaussFlySparkSpawner")
	TNT1 A 0 A_Jump(255,"One","Two","Three")
  One:
    EKXW DDDDDD 1 Bright A_SetScale(Scalex+0.01)
  SpawnLoop:
    EKXW D 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW D 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW D 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW D 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW D 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW D 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
  Two:
    EKXW EEEEEE 1 Bright A_SetScale(Scalex+0.01)
  SpawnLoop:
    EKXW E 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW E 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW E 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW E 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW E 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW E 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
  Three:
    EKXW FFFFFF 1 Bright A_SetScale(Scalex+0.01)
  SpawnLoop:
    EKXW F 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW F 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW F 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW F 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW F 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW F 1 Bright A_SetScale(Scalex+0.02)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
	}
}

Actor TrueExpGaussShockWaveMedium : ExpGaussShockWaveBig
{
Scale 1.0
States
{
  Spawn:
	TNT1 A 0 NoDelay A_Jump(255,"One","Two","Three")
  One:
    EKXW DDDDDD 1 Bright A_SetScale(Scalex+0.03)
  SpawnLoop:
    EKXW D 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW D 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW D 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW D 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW D 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW D 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
  Two:
    EKXW EEEEEE 1 Bright A_SetScale(Scalex+0.03)
  SpawnLoop:
    EKXW E 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW E 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW E 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW E 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW E 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW E 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
  Three:
    EKXW FFFFFF 1 Bright A_SetScale(Scalex+0.03)
  SpawnLoop:
    EKXW F 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW F 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW F 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW F 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW F 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	EKXW F 1 Bright A_SetScale(Scalex+0.07)
	TNT1 A 0 A_FadeOut(0.07)
	Loop
	}
}

ACTOR TrueExpGaussFlySparkSpawner : ExpGaussFlySparkSpawner
{
States
{
Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
	TNT1 A 1 Bright A_SpawnItemEx("TrueExpGaussFlySparkRandom",Random(6,-6),Random(6,-6),Random(6,-6),0,0,0,0,128)
    Stop
    }
}

Actor TrueExpGaussFlySparkRandom : RandomSpawner
{
Dropitem "TrueExpGaussFlySpark", 256, 1
Dropitem "TrueExpGaussFlySpark2", 256, 1
}

ACTOR TrueExpGaussFlySpark : ExpGaussFlySpark
{
States
{
  Spawn:
    TNT1 A 0 NoDelay A_SetScale(FRandom(0.02,0.05))
  SpawnLoop:
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
	LSKB A 0 A_JumpIf(ScaleX <= 0, "NULL")
	LSKB A 0 A_SetScale(ScaleX-0.0008)
    LSKB A 1 bright A_ChangeVelocity (frandom(-0.2, 0.2), frandom(-0.2, 0.2), frandom(-0.2, 0.2), 0)
    LSKB A 2 bright A_FadeOut(0.05)
    Loop
    }
}

ACTOR TrueExpGaussFlySpark2 : ExpGaussFlySpark2
{
States
{
  Spawn:
    TNT1 A 0 NoDelay A_SetScale(FRandom(0.07,0.1))
  SpawnLoop:
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
	PAO2 A 0 A_JumpIf(ScaleX <= 0, "NULL")
	PAO2 A 0 A_SetScale(ScaleX-0.0008)
    PAO2 A 1 bright A_ChangeVelocity (frandom(-0.2, 0.2), frandom(-0.2, 0.2), frandom(-0.2, 0.2), 0)
    PAO2 A 2 bright A_FadeOut(0.05)
    Loop
    }
}