Actor "Legendary BFG" : Weapon 16606
{
//$Category Weapons/LCA
//$Sprite GRMGX0
//$Title "Legendary BFG"
  Inventory.PickupSound "misc/w_pkup"
  Inventory.PickupMessage "You picked up the Legendary BFG!  Words can't describe how strong this thing is!"
  obituary "%o was rekt off the planet with k's Legendary BFG."
  Weapon.PreferredSkin "LegendaryBFG-Marine"
  Weapon.AmmoGive 200
  Weapon.AmmoType "LDemonAmmo"
  Weapon.AmmoUse 100
  Weapon.AmmoUse2 "20"
  Weapon.AmmoType2 "LDemonAmmo"
  Weapon.KickBack 90
  Weapon.SlotNumber 8
  Weapon.UpSound "Weapons/GuruUp"
  Inventory.PickupSound "Weapons/GuruUp"
  +NOAUTOFIRE
  +INVENTORY.UNDROPPABLE
  states
  {
  Spawn:
	GRMG X -1
	Loop
  Select:
    TNT1 A 0 a_jumpifinventory("truelegendarybfgupgrade", 1, "trueselect")
    TNT1 A 0 a_playweaponsound("Weapons/GuruUp")
  	GRMU A 0 A_Raise
  	GRMU A 1 A_Raise
  	goto select+2
  trueselect:
    TNT1 A 0 a_playweaponsound("truelegbfg/equip")
  	TBFU A 0 A_Raise
  	TBFU A 1 A_Raise
  	goto trueselect+1
  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_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 a_jumpifinventory("truelegendarybfgupgrade", 1, "truedeselect")
  	GRMU A 0 A_StopSound(5)
    GRMU A 0 A_StopSound(6)
	GRMU A 0 A_ZoomFactor(1)
  	GRMU A 0 A_Lower
  	GRMU A 1 A_Lower
  	goto deselect+5
  truedeselect:
    TBFU A 0 A_StopSound(5)
    TBFU A 0 A_StopSound(6)
	TBFU A 0 A_ZoomFactor(1)
  	TBFU A 0 A_Lower
  	TBFU A 1 A_Lower
  	loop
  Ready:
    TNT1 A 0 a_jumpifinventory("truelegendarybfgupgrade", 1, "trueready")
  	GRMG A 0 A_PlaySound("Weapons/GuruIdle",5,1.0,1)
  	GRMG ABCDEFGHIJIHGFEDCB 1 A_WeaponReady
  	loop
  trueready:
    TBFG A 0 A_PlaySound("truelegbfg/idle",5,1.0,1)
  	TBFG ABCDEFGHIJIHGFEDCB 1 A_WeaponReady
	loop
  Fire:
    TNT1 A 0 a_jumpifinventory("truelegendarybfgupgrade", 1, "truefire")
  	GRMG A 0 A_PlaySound("Weapons/GuruTrigger",1)
  	GRMG ABCDEFGHIJ 1
  	GRMG A 0 A_PlaySound("Weapons/GuruCharge",6)
  	GRMG IHGFED 1
	GRMG A 0 A_GiveInventory("GuruCharge",5)
  Gurucharger:
	GRMG A 0 A_TakeInventory("GuruCharge",1)
	GRMC ABCDEFGHIJKLMNOPQRST 1 Bright A_Quake (4, 2, 0, 2,"none")
    GRMG A 0 A_JumpIfInventory("GuruCharge",1,"Gurucharger")
	GRMC ABC 1 Bright A_Quake (4, 2, 0, 2,"none")
    GRMG A 0 A_StopSound(5)
    GRMG A 0 A_PlaySound("Weapons/GuruFire",5)
  	GRMG A 0 A_PlaySound("Weapons/GuruAddFire",6)
  	GRMG A 0 A_FireCustomMissile("PlayerGuruBall", 0, 1, 12, 0)
  	GRMG A 0 A_Recoil(65)
	GRMG A 0 A_GunFlash
	GRMG A 0 A_SetBlend("Yellow",0.5,60)
	GRMG A 0 A_SetBlend("White",0.25,60)
	GRMF A 0 A_ZoomFactor(0.975)
	GRMF A 4 Bright //Offset(2,34)
	GRMF A 0 A_ZoomFactor(0.95)
	GRMF B 4 Bright //Offset(4,36)
	GRMF C 4 Bright A_ZoomFactor(0.955)
	GRMF D 4 Bright A_ZoomFactor(0.96)
	GRMF E 5 Bright A_ZoomFactor(0.965)
	GRMF F 5 Bright A_ZoomFactor(0.97)
	GRMF G 5 Bright A_ZoomFactor(0.975)
	GRMF H 6 Bright A_ZoomFactor(0.98)
	GRMF I 6 Bright A_ZoomFactor(0.99)
	GRMF J 6 Bright A_ZoomFactor(1)
	Goto Ready
  truefire:
    TBFG A 0 A_PlaySound("truelegbfg/trigger",1)
  	TBFG ABCDEFGHIJ 1
  	TBFG A 0 A_PlaySound("truelegbfg/charge",6)
  	TBFG IHGFED 1
	TBFG A 0 A_GiveInventory("GuruCharge",5)
  trueGurucharger:
	TBFG A 0 A_TakeInventory("GuruCharge",1)
	TBFC ABCDEFGHIJKLMNOPQRST 1 Bright A_Quake (4, 2, 0, 2,"none")
    TBFG A 0 A_JumpIfInventory("GuruCharge",1,"trueGurucharger")
	TBFC ABC 1 Bright A_Quake (4, 2, 0, 2,"none")
    TBFG A 0 A_StopSound(5)
    TBFG A 0 A_PlaySound("truelegbfg/fire",6)
  	TBFG A 0 A_PlaySound("truelegbfg/fire2",7)
  	TBFG A 0 A_FireCustomMissile("PlayerTrueGuruBall", 0, 1, 12, 0)
  	TBFG A 0 A_Recoil(45)
	TBFG A 0 A_GunFlash
	TBFG A 0 A_SetBlend("blue",0.45,75)
	TBFG A 0 A_SetBlend("White",0.225,75)
	TBFF A 0 A_ZoomFactor(0.95)
	TBFF A 4 Bright //Offset(2,34)
	TBFF A 0 A_ZoomFactor(0.9)
	TBFF B 4 Bright //Offset(4,36)
	TBFF C 4 Bright
	TBFF D 4 Bright A_ZoomFactor(0.915)
	TBFF E 5 Bright A_ZoomFactor(0.93)
	TBFF F 5 Bright A_ZoomFactor(0.945)
	TBFF G 5 Bright A_ZoomFactor(0.96)
	TBFF H 6 Bright A_ZoomFactor(0.975)
	TBFF I 6 Bright A_ZoomFactor(0.99)
	TBFF J 6 Bright A_ZoomFactor(1)
	Goto trueReady
  altfire:
    TNT1 A 0 a_jumpifinventory("truelegendarybfgupgrade", 1, "truealtfire")
  	GRMG A 0 A_PlaySound("Weapons/GuruAddFire",6)
  	GRMG A 0 A_FireCustomMissile("PlayerLaserBeam")
  	GRMG A 0 A_Recoil(25)
	GRMG A 0 A_GunFlash
	GRMG A 0 A_SetBlend("Yellow",0.25,35)
	GRMG A 0 A_SetBlend("White",0.125,35)
	GRMF A 0 A_ZoomFactor(0.975)
	GRMF A 4 Bright //Offset(2,34)
	GRMF A 0 A_ZoomFactor(0.95)
	GRMF B 4 Bright //Offset(4,36)
	GRMF C 4 Bright A_ZoomFactor(0.955)
	GRMF D 4 Bright A_ZoomFactor(0.96)
	GRMF E 5 Bright A_ZoomFactor(0.965)
	GRMF F 5 Bright A_ZoomFactor(0.97)
	GRMF G 5 Bright A_ZoomFactor(0.975)
	GRMF H 6 Bright A_ZoomFactor(0.98)
	GRMF I 6 Bright A_ZoomFactor(0.99)
	GRMF J 6 Bright A_ZoomFactor(1)
	Goto Ready
  truealtfire:
    TBFG A 50 bright a_playsound("truelegbfg/load", 6)
  truealtfirehold:
    TBFG A 0 a_giveinventory("gurucharge", 7)
  truealtfirecharge:
  	TBFG A 0 A_FireCustomMissile("PlayerTruelaserbeam", 0, false)
  	TBFG A 0 A_Recoil(0.333)
	TBFG A 0 A_GunFlash
	TBFG A 0 A_SetBlend("blue",0.15,20)
	TBFG A 0 A_SetBlend("White",0.1,20)
	TBFF A 0 A_ZoomFactor(0.95)
	TBFF A 1 Bright //Offset(2,34)
	TBFF A 0 A_ZoomFactor(0.9)
	TBFF B 1 Bright //Offset(4,36)
	TBFF A 0 a_takeinventory("gurucharge", 1)
	TBFF A 0 a_jumpifinventory("GuruCharge", 1, "truealtfirecharge")
	TBFF A 0 a_firecustommissile("nothing") //so ammo is used
	TBFF A 0 a_refire("truealtfirehold")
	TBFF C 4 Bright
	TBFF D 4 Bright A_ZoomFactor(0.915)
	TBFF E 5 Bright A_ZoomFactor(0.93)
	TBFF F 5 Bright A_ZoomFactor(0.945)
	TBFF G 5 Bright A_ZoomFactor(0.96)
	TBFF H 6 Bright A_ZoomFactor(0.975)
	TBFF I 6 Bright A_ZoomFactor(0.99)
	TBFF J 6 Bright A_ZoomFactor(1)
	Goto trueReady
  Flash:
      TNT1 A 7 bright A_Light2
      TNT1 A 4 bright A_Light1
      TNT1 A 0 bright A_Light0
      stop
  }
}

//////////////
//MISC-STUFF//
//////////////

//COUNTER\TRIGGER

ACTOR GuruCount : Inventory
{
     Inventory.MaxAmount 999
}

ACTOR GuruCharge : Inventory
{
     Inventory.MaxAmount 5
}

//INHERITANCE

ACTOR GuruEffectInheritance
{
	+NOCLIP
	+NOINTERACTION
	+NOGRAVITY
	+NOTIMEFREEZE
	Alpha 0.99
	Renderstyle Add
}

ACTOR GuruSpawnerInheritance
{
	+NOCLIP
	+NOINTERACTION
	+NOGRAVITY
	+NOTIMEFREEZE
}

ACTOR GuruSmokeInheritance
{
	+NOINTERACTION
	+NOGRAVITY
	+FORCERADIUSDMG
	+NOTIMEFREEZE
	+MTHRUSPECIES
	Renderstyle Add
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 1 A_Jump(255,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5","Spawn6")
	Stop
	Spawn1:
	 TNT1 A 0 A_SetScale(ScaleX +0.003, ScaleY +0.003)
	 THD1 A 0 A_Explode(15,128)
	 THD1 A 4 Bright A_FadeOut(0.009)
	 Loop
	Spawn2:
	 TNT1 A 0 A_SetScale(ScaleX +0.003, ScaleY +0.003)
	 THD1 A 0 A_Explode(15,128)
	 THD2 A 4 Bright A_FadeOut(0.007)
	 Loop
	Spawn3:
	 TNT1 A 0 A_SetScale(ScaleX +0.003, ScaleY +0.003)
	 THD1 A 0 A_Explode(15,128)
	 THD3 A 4 Bright A_FadeOut(0.006)
	 Loop
	Spawn4:
	 TNT1 A 0 A_SetScale(ScaleX -0.003, ScaleY -0.003)
	 THD1 A 0 A_Explode(15,128)
	 THD1 A 4 Bright A_FadeOut(0.0075)
	 Loop
	Spawn5:
	 TNT1 A 0 A_SetScale(ScaleX -0.001, ScaleY -0.001)
	 THD1 A 0 A_Explode(15,128)
	 THD2 A 4 Bright A_FadeOut(0.0065)
	 Loop
	Spawn6:
	 TNT1 A 0 A_SetScale(ScaleX -0.003, ScaleY -0.003)
	 THD1 A 0 A_Explode(15,128)
	 THD3 A 4 Bright A_FadeOut(0.008)
	 Loop
	}
}


////////
//FIRE//
////////


//PROJECTILE

ACTOR GuruBall : FastProjectile
{
  Radius 11
  Height 6
  Speed 15
  DamageType "LegendaryGuru"
  Damage 125
  Projectile
  Renderstyle Add
  +FORCERADIUSDMG
  +FOILINVUL
  +RIPPER
  +BLOODLESSIMPACT
  +DONTBLAST
  +SKYEXPLODE
  +NOTIMEFREEZE
  Scale 0.25
  MissileType "GuruLesserProjectileTrail"
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("Weapons/GuruFly",5,1.0,1)
	TNT1 A 0 A_Explode(600,64,0,1)
	TNT1 A 0 A_SpawnItemEx("GuruTrailSpark",random(28,-28),random(28,-28),random(28,-28),0,0,0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruTrail",-3,0,0,0,0,0,0,0,0)
	TNT1 A 0 A_CustomMissile("LegHumanDevastatorBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_CustomMissile("LegHumanLiteShot",0,0,Random(0,360))
	YBAL A 1 Bright A_SpawnItemEx("LegPlayerDTBFGProjectileAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	Loop
  Death:
	TNT1 A 0 A_PlaySound("Weapons/GuruBlast3",5)
	//COLLATERAL DAMAGE EFFECTS
	TNT1 A 0 A_Explode(6000,486,0,1)
	TNT1 A 0 A_BFGSpray("GuruSpray",15,20)
	//IMPACT STUFF
	TNT1 A 0 A_SpawnItemEx("GuruStruckGlowX",0,0,10,0,0,0,0,128,0)
	TNT1 A 0 A_SpawnItemEx("GuruStruckGlowY",0,0,10,0,0,0,0,128,0)
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("GuruSphereSmoke",random(126,-126),random(126,-126),random(66,-66),0.00001*random(100000,-100000),0.00001*random(100000,-100000),0.00001*random(100000,-100000),random(0,359),SXF_TRANSFERPOINTERS,0)
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("GuruChunkSpark",random(126,-126),random(126,-126),random(66,-66),0,0,0,0,0,0)
	TNT1 AAAAAAAAAAAAAAAAAAA 2 A_SpawnItemEx("GuruChunkSpark",random(126,-126),random(126,-126),random(66,-66),0,0,0,0,0,0)
	Stop
  }
}

ACTOR PlayerGuruBall : GuruBall
{
  Species "Player"
  DamageType "LegendaryGuruPlayer"
  +MTHRUSPECIES
  +NODAMAGETHRUST
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("Weapons/GuruFly",5,1.0,1)
	TNT1 A 0 A_Explode(600,64,0,1)
	TNT1 A 0 A_SpawnItemEx("GuruTrailSpark",random(28,-28),random(28,-28),random(28,-28),0,0,0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruTrail",-3,0,0,0,0,0,0,0,0)
	TNT1 A 0 A_CustomMissile("PlayerLegHumanDevastatorBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_CustomMissile("PlayerLegHumanLiteShot",0,0,Random(0,360))
	YBAL A 1 Bright A_SpawnItemEx("LegPlayerDTBFGProjectileAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	Loop
  Death:
	TNT1 A 0 A_PlaySound("Weapons/GuruBlast3",5)
	//COLLATERAL DAMAGE EFFECTS
	TNT1 A 0 A_Explode(6000,486,0,1)
	TNT1 A 0 A_BFGSpray("GuruSpray",15,20)
	//IMPACT STUFF
	TNT1 A 0 A_SpawnItemEx("GuruStruckGlowX",0,0,10,0,0,0,0,128,0)
	TNT1 A 0 A_SpawnItemEx("GuruStruckGlowY",0,0,10,0,0,0,0,128,0)
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("PlayerGuruSphereSmoke",random(126,-126),random(126,-126),random(66,-66),0.00001*random(100000,-100000),0.00001*random(100000,-100000),0.00001*random(100000,-100000),random(0,359),SXF_TRANSFERPOINTERS,0)
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("GuruChunkSpark",random(126,-126),random(126,-126),random(66,-66),0,0,0,0,0,0)
	TNT1 AAAAAAAAAAAAAAAAAAA 2 A_SpawnItemEx("GuruChunkSpark",random(126,-126),random(126,-126),random(66,-66),0,0,0,0,0,0)
	Stop
  }
}


ACTOR PlayerLegHumanDevastatorBolt
{
  Speed 35
  Radius 6
  Height 6
  Alpha 0.8
  Projectile
  +SEEKERMISSILE
  +MTHRUSPECIES
  +DONTREFLECT
  +BRIGHT
  ReactionTime 170
  RenderStyle Add
  DeathSound "bolt/explode"
 
  Damage 25
  Damagetype "LegendaryPlayer"
  Species "Player"
  +MTHRUSPECIES
  +NOTIMEFREEZE
  States
  {
  Spawn:
  	LVS1 A 0 A_Seekermissile(5,5,SMF_LOOK)
    LVS1 A 1 A_SpawnItemEx("LegBoltTrail")
    Loop
  Death:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "ToasterDeath")
    TNT1 A 0 A_SpawnItemEx("LegendaryGoldParticleSpawner",0,0,0,0,0,0,0,128)
    TNT1 AAAA 0 A_CustomMissile("LegKaboomDevastator15",0,0,random(0,360),2,random(0,360))
  ToasterDeath:
    LVS1 LMN 2
    Stop
  }
}

ACTOR PlayerLegHumanLiteShot
{
	Radius 8
   Height 12
   Speed 32
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.85
   +THRUGHOST
   SeeSound "weapons/devlit"
   DeathSound "weapons/devzap" 

   Damage 20
   Damagetype "LegendaryPlayer"
   +MTHRUSPECIES
   +NOTIMEFREEZE
   States
   {
   Spawn:
      LLIT AAABBBCCC 1 Bright A_SpawnItemEx("LegLiteTrail",0,0,0)
      Loop
   Death:
      LLIT DEFGHIJKLMNO 1 Bright
      Stop
   }
}

//TRAIL

ACTOR GuruTrail : GuruEffectInheritance
{
	Alpha 0.65
	Renderstyle Add
	+CLIENTSIDEONLY
	Scale 0.25
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    Fade:
	  TNT1 A 0 A_SetScale(ScaleX -0.01, ScaleY -0.01)
	  YBAL A 1 Bright A_FadeOut(0.1)
	  Loop
    Toaster:
      TNT1 A 0
      Stop
	}
}

ACTOR GuruTrailSpark : GuruEffectInheritance
{
	Scale 0.5
	+CLIENTSIDEONLY
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
      YELE ABCDEF 1 Bright A_FadeOut(0.1)
	  Stop
    Toaster:
      TNT1 A 0
      Stop
	}
}

//IMPACT

ACTOR GuruStruckGlowY : GuruEffectInheritance
{
	Alpha 0.5
	+CLIENTSIDEONLY
	Scale 0.2
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	Fade:
	  YBUM A 0 A_SetScale(ScaleX +0.025, ScaleY +0.1)
	  YBUM A 1 Bright A_FadeOut(0.01)
	  Loop
    Toaster:
      TNT1 A 0
      Stop
	}
}

ACTOR GuruStruckGlowX : GuruEffectInheritance
{
	Alpha 0.5
	+CLIENTSIDEONLY
	Scale 0.2
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	Fade:
	  YBUM A 0 A_SetScale(ScaleX +0.1, ScaleY +0.025)
	  YBUM A 1 Bright A_FadeOut(0.01)
	  Loop
    Toaster:
      TNT1 A 0
      Stop
	}
}

//SPRAY

ACTOR GuruSpray : GuruSpawnerInheritance
{
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("GuruSprayGlowX",0,0,0,0,0,0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruSprayGlowY",0,0,0,0,0,0,0,0,0)
	TNT1 AAAAAA 3 A_SpawnItemEx("GuruSpraySpark",random(24,-24),random(24,-24),random(24,-24),0,0,0,0,0,0)
	Stop
	}
}

ACTOR GuruSpraySpark : GuruEffectInheritance
{
	Scale 0.25
	+CLIENTSIDEONLY
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
      YELE ABCDEF 2 Bright A_FadeOut(0.1)
	  Stop
    Toaster:
      TNT1 A 0
      Stop
	}
}

ACTOR GuruSprayGlowY : GuruStruckGlowX
{
	Alpha 0.35
	Scale 0.025 // Use 0.025 when A_SetScale is supported.
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	Fade:
      YBUM A 0 A_SetScale(ScaleX +0.05, ScaleY +0.01)
	  YBUM A 1 Bright A_FadeOut(0.01) //A_FadeOut(0.01)
	  Loop
    Toaster:
      TNT1 A 0
      Stop
	}
}

ACTOR GuruSprayGlowX : GuruSprayGlowY
{
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	Fade:
	  YBUM A 0 A_SetScale(ScaleX +0.01, ScaleY +0.05)
	  YBUM A 1 Bright A_FadeOut(0.01) //A_FadeOut(0.01)
	  Loop
    Toaster:
      TNT1 A 0
      Stop
	}
}

ACTOR BlueGuruSprayGlowX : GuruSprayGlowX
{
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	Fade:
	  BBUM A 0 A_SetScale(ScaleX +0.01, ScaleY +0.05)
	  BBUM A 1 Bright A_FadeOut(0.01) //A_FadeOut(0.01)
	  Loop
    Toaster:
      TNT1 A 0
      Stop
	}
}

ACTOR BlueGuruSprayGlowY : GuruSprayGlowY
{
	Alpha 0.35
	Scale 0.025 // Use 0.025 when A_SetScale is supported.
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	Fade:
      BBUM A 0 A_SetScale(ScaleX +0.05, ScaleY +0.01)
	  BBUM A 1 Bright A_FadeOut(0.01) //A_FadeOut(0.01)
	  Loop
    Toaster:
      TNT1 A 0
      Stop
	}
}

////////////
//ALT FIRE//
////////////

//PROJECTILE

ACTOR GuruDeathball : FastProjectile
{
  Radius 12
  Height 7
  Speed 10
  Damage 0
  Projectile
  Renderstyle Add
  +FORCERADIUSDMG
  +FOILINVUL
  +RIPPER
  +BLOODLESSIMPACT
  +DONTBLAST
  +NOTIMEFREEZE
  Scale 0.35
  MissileType "GuruLesserProjectileTrail"
  DamageType "Legendary"
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySoundEx("Weapons/GuruFly","SoundSlot6",1)
	TNT1 A 0 A_Explode(1600,92,0,1)
	TNT1 A 0 A_SpawnItemEx("GuruTrailSpark",random(42,-42),random(42,-42),random(42,-42),0,0,0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruEmpowerTrail",-3,0,0,0,0,0,0,0,0)
	YBAL A 1 bright
	loop
  Death:
	TNT1 A 0 A_PlaySound("Weapons/GuruBlast",6)
	//IMPACT STUFF
	TNT1 A 0 A_SpawnItemEx("GuruGigaStruckGlowX",0,0,10,0,0,0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruGigaStruckGlowY",0,0,10,0,0,0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruChunkRainSpawner",0,0,15,0,0,0,0,0,0)
	//AFTER-HIT EFFECTS
	TNT1 A 0 A_SpawnItemEx("GuruSparkSpawner",0,0,10,0,0,0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruSpiralSpawner",0,0,30,0,0,0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruSphere",0,0,15,0,0,0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruSpiralSounder",0,0,0,0,0,0,0,0,0)
	//COLLATERAL DAMAGE EFFECTS
	TNT1 A 1 A_Explode(80000,768,0,1)
	Stop
  }
}

//TRAIL

ACTOR GuruEmpowerTrail : GuruTrail
{
+CLIENTSIDEONLY
	Scale 0.35
}

//IMPACT

ACTOR GuruGigaStruckGlowX : GuruEffectInheritance
{
	Alpha 0.5
	+CLIENTSIDEONLY
	Scale 3.5
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    Fade:
      YBUM A 0 A_SetScale(ScaleX +0.4, ScaleY +0.1)
	  YBUM A 1 Bright A_FadeOut(0.005)
	  Loop
    Toaster:
      TNT1 A 0
      Stop
	}
}

ACTOR GuruGigaStruckGlowY : GuruEffectInheritance
{
	Alpha 0.5
	+CLIENTSIDEONLY
	Scale 3.5
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    Fade:
	  YBUM A 0 A_SetScale(ScaleX +0.1, ScaleY +0.4)
	  YBUM A 1 Bright A_FadeOut(0.005)
	  Loop
    Toaster:
      TNT1 A 0
      Stop
	}
}

ACTOR GuruSparkSpawner : GuruSpawnerInheritance
{
	ReactionTime 90
	States
	{
	Spawn:
	Smoking:
	  TNT1 A 0 A_Countdown
	  TNT1 A 0 A_SpawnItemEx("GuruHitSpark",random(355,-355),random(355,-355),random(135,-20),random(2,-2),random(2,-2),random(2,-2),random(0,359),0)
	  TNT1 A 2
	  Loop
	Death:
	  TNT1 A 1
	  Stop
	}
}

ACTOR GuruHitSpark : GuruTrailSpark
{
+CLIENTSIDEONLY
	Scale 0.85
}

//SPHERE

ACTOR GuruSphere : GuruEffectInheritance
{
	Alpha 0.95
	Scale 1.25
	ReactionTime 95
	States
	{
	Spawn:
	YBAL A 0
	YBAL A 0 A_Countdown
	YBAL AA 0 A_SpawnItemEx("GuruHitSpark",random(225,-225),random(225,-225),random(-375,145),0,0,0)
	YBAL A 0 A_SpawnItemEx("GuruSphereSmoke",random(155,-155),random(155,-155),random(-75,145),0,0,0.00001*random(-300000,-100000),0,0)
	YBAL A 1 Bright
	YBAL A 0 ThrustThingZ(0, 18, 0, 0)
	Loop
	Death:
	YBAL A 0 A_SpawnItemEx("GuruSphere2",0,0,0,0,0,0,0,0,0)
	Stop
	}
}

ACTOR GuruSphere2 : GuruSphere
{
	ReactionTime 85
	States
	{
	Spawn:
	YBAL A 0
	YBAL A 0 A_Countdown
	YBAL AA 0 A_SpawnItemEx("GuruHitSpark",random(225,-225),random(225,-225),random(-325,145),0,0,0)
	YBAL A 0 A_SpawnItemEx("GuruSphereSmoke",random(155,-155),random(155,-155),random(-85,45),0,0,0.00001*random(-300000,-100000),0,0)
	YBAL A 1 Bright
	YBAL A 0 ThrustThingZ(0, 12, 0, 0)
	Loop
	Death:
	CBAL A 0 A_SpawnItemEx("GuruSphere3",0,0,0,0,0,0,0,0,0)
	Stop
	}
}

ACTOR GuruSphere3 : GuruSphere
{
	ReactionTime 75
	States
	{
	Spawn:
	YBAL A 0
	YBAL A 0 A_Countdown
	YBAL AA 0 A_SpawnItemEx("GuruHitSpark",random(225,-225),random(225,-225),random(-350,145),0,0,0)
	YBAL A 0 A_SpawnItemEx("GuruSphereSmoke",random(155,-155),random(155,-155),random(-85,45),0,0,0.00001*random(-300000,-100000),0,0)
	YBAL A 1 Bright
	YBAL A 0 ThrustThingZ(0, 6, 0, 0)
	Loop
	Death:
	CBAL A 0 A_SpawnItemEx("GuruSphere4",0,0,0,0,0,0,0,0,0)
	Stop
	}
}

ACTOR GuruSphere4 : GuruSphere
{
	ReactionTime 65
	States
	{
	Spawn:
	YBAL A 0
	YBAL A 0 A_Countdown
	YBAL AA 0 A_SpawnItemEx("GuruHitSpark",random(225,-225),random(225,-225),random(-375,145),0,0,0)
	YBAL A 0 A_SpawnItemEx("GuruSphereSmoke",random(155,-155),random(155,-155),random(-85,45),0,0,0.00001*random(-300000,-100000),0,0)
	YBAL A 1 Bright
	YBAL A 0 ThrustThingZ(0, 2, 0, 0)
	Loop
	Death:
	CBAL A 0 A_SpawnItemEx("GuruSphereStill",0,0,0,0,0,0,0,0,0)
	Stop
	}
}

ACTOR GuruSphereStill : GuruSphere
{
	ReactionTime 55
	States
	{
	Spawn:
	YBAL A 0
	YBAL A 0 A_PlaySound("Weapons/GuruFuuu",6,1)
	Looplet:
	YBAL AA 0 A_SpawnItemEx("GuruHitSpark",random(225,-225),random(225,-225),random(-400,145),0,0,0)
	YBAL A 0 A_SpawnItemEx("GuruHitSpark",random(125,-125),random(125,-125),random(-65,65),0,0,0)
	YBAL A 0 A_SpawnItemEx("GuruSphereSmoke",random(155,-155),random(155,-155),random(-85,45),0,0,0.00001*random(-300000,-100000),0,0)
	YBAL A 1 Bright
	YBAL A 0 A_Countdown
	Loop
	Death:
	YBAL A 0 A_PlaySound("Weapons/GuruBoom",6)
	YBAL A 0 A_PlaySound("Weapons/GuruBlast2",5)
	YBAL A 0 A_SpawnItemEx("GuruStormSpawner",0,0,0,0,0,0,0,0,0)
	YBAL AAA 0 A_SpawnItemEx("GuruKaboom",0,0,0,0,0,0,0,0,0)
	Stop
	}
}

ACTOR GuruSphereSmoke : GuruSmokeInheritance
{
	Scale 1.8
	Alpha 0.45
	PROJECTILE
	DamageType "Legendary"
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 1 A_Jump(255,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5","Spawn6")
	Stop
	Spawn1:
	 TNT1 A 0 A_SetScale(ScaleX -0.002, ScaleY -0.002)
	 TNT1 A 0 A_JumpIf(Alpha<0.3,2)
	 THD1 A 0 A_Explode(10,164)
	 THD1 A 4 Bright A_FadeOut(0.0065)
	 Loop
	Spawn2:
	 TNT1 A 0 A_SetScale(ScaleX -0.002, ScaleY -0.002)
	 TNT1 A 0 A_JumpIf(Alpha<0.3,2)
	 THD1 A 0 A_Explode(10,164)
	 THD2 A 4 Bright A_FadeOut(0.0065)
	 Loop
	Spawn3:
	 TNT1 A 0 A_SetScale(ScaleX -0.002, ScaleY -0.002)
	 TNT1 A 0 A_JumpIf(Alpha<0.3,2)
	 THD1 A 0 A_Explode(10,164)
	 THD3 A 4 Bright A_FadeOut(0.0065)
	 Loop
	Spawn4:
	 TNT1 A 0 A_SetScale(ScaleX -0.002, ScaleY -0.002)
	 TNT1 A 0 A_JumpIf(Alpha<0.3,2)
	 THD1 A 0 A_Explode(10,164)
	 THD1 A 4 Bright A_FadeOut(0.0065)
	 Loop
	Spawn5:
	 TNT1 A 0 A_SetScale(ScaleX -0.002, ScaleY -0.002)
	 TNT1 A 0 A_JumpIf(Alpha<0.3,2)
	 THD1 A 0 A_Explode(10,164)
	 THD2 A 4 Bright A_FadeOut(0.0065)
	 Loop
	Spawn6:
	 TNT1 A 0 A_SetScale(ScaleX -0.002, ScaleY -0.002)
	 TNT1 A 0 A_JumpIf(Alpha<0.3,2)
	 THD1 A 0 A_Explode(10,164)
	 THD3 A 4 Bright A_FadeOut(0.0065)
	 Loop
	}
}

ACTOR PlayerGuruSphereSmoke : GuruSphereSmoke
{
DamageType "LegendaryPlayer"
+MTHRUSPECIES
+NODAMAGETHRUST
}

//CHUNKLER

actor GuruChunkRainSpawner : GuruSpawnerInheritance
{
	ReactionTime 32
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 AAA 1 ThrustThingZ(0, 18, 0, 0)
	TNT1 A 0 A_SpawnItemEx("GuruSphereChunker",0,0,0,0,0,0,0,0,0)
	TNT1 A 0 A_Countdown
	loop
	Death:
	TNT1 A 0 //A_SpawnItemEx("GuruChunkRainSpawner2",0,0,0,0,0,0,0,128,0)
	stop
	}
}

actor GuruSphereChunker : GuruSpawnerInheritance
{
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 AAA 3 A_SpawnItemEx("GuruSphereChunk",random(100,-100),random(100,-100),random(70,-70),frandom(1,12),frandom(1,12),frandom(16,20),random(0,359),0,0)
	Stop
	Death:
	TNT1 A 0
	stop
	}
}

ACTOR GuruSphereChunk
{
	Radius 12
	Height 5
	Renderstyle Add
	Gravity 0.25
	Alpha 1
	Scale 1
 	DamageType "Superweapon"
	PROJECTILE
	-NOGRAVITY
	+NOTIMEFREEZE
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Jump(128,2)
	YSHK A 2 Bright A_SpawnItemEx("GuruTrailSpark",0,0,0,0,0,0,0,0,0)
	Loop
	YSHK A 2 Bright A_SpawnItemEx("GuruChunkTrail",frandom(-5,5),frandom(-5,5),frandom(-5,5),0.00001*random(10000,-10000),0.00001*random(10000,-10000),0.00001*random(10000,-10000),random(0,359),0,0)
	Goto Spawn
	Death:
	TNT1 A 0 A_PlaySound("Weapons/GuruHit")
	TNT1 A 0 A_PlaySound("Weapons/GuruBlast3",5)
	TNT1 A 0 A_Explode(5000,192)
	TNT1 AAA 0 A_SpawnItemEx("GuruChunkSpark",random(8,-8),random(8,-8),random(8,-8),0,0,0,0,0,0)
	TNT1 AA 0 A_SpawnItemEx("GuruSphereSmoke",0,0,0,0.00001*random(100000,-100000),0.00001*random(100000,-100000),0.00001*random(100000,-100000),random(0,359),0,0)
	Stop
	}
}

ACTOR GuruChunkSpark : GuruTrailSpark
{
	Scale 1.15
	+CLIENTSIDEONLY
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
      YELE ABCDEF 2 Bright A_FadeOut(0.1)
      Stop
    Toaster:
      TNT1 A 0
      Stop
	}
}

ACTOR GuruChunkTrail : GuruSmokeInheritance
{
	Scale 0.65
	+CLIENTSIDEONLY
	Alpha 0.2
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
      TNT1 A 1 A_Jump(255,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5","Spawn6")
	  Stop
    Toaster:
      TNT1 A 0
      Stop
	Spawn1:
	 TNT1 A 0 A_SetScale(ScaleX +0.003, ScaleY +0.003)
	 THD1 A 1 Bright A_FadeOut(0.009)
	 Loop
	Spawn2:
	 TNT1 A 0 A_SetScale(ScaleX +0.003, ScaleY +0.003)
	 THD2 A 1 Bright A_FadeOut(0.007)
	 Loop
	Spawn3:
	 TNT1 A 0 A_SetScale(ScaleX +0.003, ScaleY +0.003)
	 THD3 A 1 Bright A_FadeOut(0.006)
	 Loop
	Spawn4:
	 TNT1 A 0 A_SetScale(ScaleX -0.003, ScaleY -0.003)
	 THD1 A 1 Bright A_FadeOut(0.0075)
	 Loop
	Spawn5:
	 TNT1 A 0 A_SetScale(ScaleX -0.001, ScaleY -0.001)
	 THD2 A 1 Bright A_FadeOut(0.0065)
	 Loop
	Spawn6:
	 TNT1 A 0 A_SetScale(ScaleX -0.003, ScaleY -0.003)
	 THD3 A 1 Bright A_FadeOut(0.008)
	 Loop
	}
}

//SPIRAL

ACTOR GuruSpiralSounder : GuruEffectInheritance
{
+CLIENTSIDEONLY
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 375 A_PlaySound("Weapons/GuruLoop",6,1,1)
	TNT1 A 0 A_StopSound(5)
	Stop
	}
}

actor GuruSpiralSpawner : GuruSpawnerInheritance
{
	ReactionTime 95
	States
	{
	Spawn:
	TNT1 A 0
	YBAL A 0 ThrustThingZ(0, 18, 0, 0)
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,270,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,180,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,90,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,0,0,0)
	TNT1 A 1 bright A_SetAngle(9 + angle)
	loop
	Death:
	TNT1 A 0 A_SpawnItemEx("GuruSpiralSpawner2",0,0,0,0,0,0,0,0,0)
	stop
	}
}

actor GuruSpiralSpawner2 : GuruSpiralSpawner
{
	ReactionTime 85
	States
	{
	Spawn:
	TNT1 A 0
	YBAL A 0 ThrustThingZ(0, 12, 0, 0)
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,270,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,180,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,90,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,0,0,0)
	TNT1 A 1 bright A_SetAngle(9 + angle)
	loop
	Death:
	TNT1 A 0 A_SpawnItemEx("GuruSpiralSpawner3",0,0,0,0,0,0,0,0,0)
	stop
	}
}

actor GuruSpiralSpawner3 : GuruSpiralSpawner
{
	ReactionTime 75
	States
	{
	Spawn:
	TNT1 A 0
	YBAL A 0 ThrustThingZ(0, 6, 0, 0)
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,270,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,180,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,90,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,0,0,0)
	TNT1 A 1 bright A_SetAngle(9 + angle)
	loop
	Death:
	TNT1 A 0 A_SpawnItemEx("GuruSpiralSpawner4",0,0,0,0,0,0,0,0,0)
	stop
	}
}

actor GuruSpiralSpawner4 : GuruSpiralSpawner
{
	ReactionTime 65
	States
	{
	Spawn:
	TNT1 A 0
	YBAL A 0 ThrustThingZ(0, 3, 0, 0)
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,270,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,180,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,90,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,0,0,0)
	TNT1 A 1 bright A_SetAngle(9 + angle)
	loop
	Death:
	TNT1 A 0 A_SpawnItemEx("GuruSpiralSpawnerStill",0,0,0,0,0,0,0,0,0)
	stop
	}
}

actor GuruSpiralSpawnerStill : GuruSpiralSpawner
{
	ReactionTime 55
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,270,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,180,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,90,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,0,0,0)
	TNT1 A 1 bright A_SetAngle(9 + angle)
	loop
	Death:
	TNT1 A 1
	stop
	}
}

ACTOR GuruShocklet : GuruEffectInheritance
{
	ReactionTime 25
	DamageType "Superweapon"
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_Explode(19500,128)
	TNT1 A 1 A_SpawnItemEx("GuruShockletSpark",frandom(5,-5),frandom(5,-5),frandom(5,-5),frandom(1,-1),frandom(1,-1),frandom(1,-1),random(0,359),0,0)
	Loop
	Death:
	TNT1 A 1 A_SpawnItemEx("GuruShockletSphere",0,0,0,0,0,0,0,0)
	Stop
	}
}

ACTOR GuruShockletSpark : GuruTrailSpark
{
+CLIENTSIDEONLY
	Scale 0.5
}

ACTOR GuruShockletSphere : GuruEffectInheritance
{
	Alpha 0.95
	Scale 1.25
	+CLIENTSIDEONLY
	States
	{
	Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    Fade:
      YSHK A 1 Bright A_FadeOut(0.1)
      YSHK A 0 A_SetScale(ScaleX-0.05,ScaleY-0.05)
	  Loop
    Toaster:
      TNT1 A 0
      Stop
	}
}

//SPHERE KABOOM

ACTOR GuruKaboom : GuruSpawnerInheritance
{
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("GuruKaplosionSpawner",0,0,0,0,0,0,0,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruStormSpawner",0,0,0,0,0,0,0,0,0)
	Stop
	}
}

ACTOR GuruKaplosionSpawner : GuruSpawnerInheritance
{
	+FORCERADIUSDMG
	ReactionTime 25
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Countdown
	TNT1 A 1 A_SpawnItemEx("GuruKaploder",0,0,0,0,0,0,0,0,0)
	Loop
	Death:
	TNT1 A 0
	Stop
	}
}

ACTOR GuruKaploder : GuruSpawnerInheritance
{
	+FORCERADIUSDMG
	ReactionTime 25
	DamageType "Superweapon"
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Explode(2000,1280)
	TNT1 A 0 A_Countdown
	TNT1 A 0 A_SpawnItemEx("GuruKaplosion",random(80,-80),random(80,-80),random(80,-80),frandom(25,29),frandom(25,29),frandom(-30,30),random(0,359),0,0)
	Loop
	Death:
	TNT1 A 0
	Stop
	}
}

ACTOR GuruKaplosion : GuruEffectInheritance
{
	Alpha 0.95
	Scale 0.75
	DamageType "Superweapon"
	+CLIENTSIDEONLY
	States
	{
	Spawn:
	YSHK A 0
	TNT1 A 0 A_Explode(100,128,0,1)
	YSHK A 1 Bright A_FadeOut(0.025)
	YSHK A 0 A_SetScale(ScaleX+0.05,ScaleY+0.05)
	Loop
	Death:
	YBAL A 0
	Stop
	}
}

ACTOR GuruStormSpawner : GuruSpawnerInheritance
{
	ReactionTime 6
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 24 A_CustomMissile("GuruBoltage",-16,0,frandom(0,359),2) //A_SpawnItemEx("GuruBoltage",random(60,-60),random(60,-60),0,frandom(25,29),frandom(25,29),0,random(0,359),128,0)
	TNT1 A 0 A_Countdown
	Loop
	Death:
	TNT1 A 0
	Stop
	}
}

actor GuruBoltage
{
  Radius 8
  Height 13
  Speed 25
  Projectile
  +NOINTERACTION
  +NOCLIP
  +SEEKERMISSILE
  +CEILINGHUGGER
  +SPAWNCEILING
  +NOTIMEFREEZE
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 40
  HereComesTehBoi:
    TNT1 AAAAAAAAAAAAAAA 2 A_SeekerMissile(90,90,SMF_LOOK|SMF_PRECISE,100,7)
    TNT1 A 0 A_SpawnItemEx("GuruStormBolt",0,0,0,0,0,random(-160,-170),0,0,0)
    Stop
  }
}

ACTOR GuruStormBolt
{
   Speed 1
   Radius 8
   Height 12
   Renderstyle Add
   SeeSound ""
   PROJECTILE
   -NOGRAVITY
   +BLOODLESSIMPACT
   +RIPPER
   +FORCERADIUSDMG
   +SEEKERMISSILE
   +SCREENSEEKER
   +NOTIMEFREEZE
   DamageType "Superweapon"
   States
   {
   Spawn:
      TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,240,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,120,0,0)
	TNT1 A 0 A_SpawnItemEx("GuruShocklet",0,0,0,30,0,0,0,0,0)
	TNT1 A 0 bright A_SetAngle(7 + angle)
      TNT1 A 2 A_SpawnItemEx("StormBoltFade",0,0,0,frandom(0.25,-0.25),frandom(0.25,-0.25),frandom(0.25,-0.25),0,0)
      Loop
   Death:
      TNT1 A 0 A_PlaySoundEx("Weapons/GuruStruck",5)
      TNT1 A 0 A_Explode(30000,768,0,1)
      TNT1 A 0 A_SpawnItemEx("GuruBoltStruckGlowX",0,0,0,0,0,0,0,0,0)
      TNT1 A 0 A_SpawnItemEx("GuruBoltStruckGlowY",0,0,0,0,0,0,0,0,0)
      TNT1 AAAAAAA 2 A_SpawnItemEx("GuruHitSpark",random(20,-20),random(20,-20),random(30,-5),0,0,0,0,0,0)
      stop
   }
}

ACTOR StormBoltFade : GuruEffectInheritance
{
   Damage 0
   Renderstyle Add
   SeeSound ""
   PROJECTILE
   +NOGRAVITY
   +NOINTERACTION
   +FORCEYBILLBOARD
   States
   {
   Spawn:
      TNT1 A 0
      TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
      LITE ABCDABCDABCD 1 Bright A_FadeOut(0.05)
	  Stop
    Toaster:
      TNT1 A 0
      Stop
   }
}
ACTOR GuruBoltStruckGlowY : GuruGigaStruckGlowY
{
	Scale 0.35
}

ACTOR GuruBoltStruckGlowX : GuruGigaStruckGlowX
{
	Scale 0.35
}

ACTOR LegPlayerDTBFGProjectileAttack : PlayerDTBFGProjectileAttack
{
PROJECTILE
+LOOKALLAROUND
+ISMONSTER
+QUICKTORETALIATE
+NOTARGET
+FRIENDLY
+NOCLIP
+NOTIMEFREEZE
Obituary "%o got obliterated by %k's Legendary BFG."
MissileType "PlayerDTBFGRailgunSlug"
States
{
Spawn:
    TNT1 A 0
	TNT1 AAAAA 1 A_Look
	Stop
See:
    TNT1 A 0
	TNT1 A 1 A_JumpIfCloser(1250,"Attack")
	Stop
Attack:
    TNT1 A 0
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_MissileAttack
	TNT1 A 1 A_CustomRailgun(-1,0,NONE,"Yellow",1,1,1)
	Goto Death	
Death:
	TNT1 A 1
	Stop
	}
}