// --------------------------------------------------------------------------
//
//	BFG 9000
//
// --------------------------------------------------------------------------

ACTOR U_BFG9000: BaseWeapon
{
	Weapon.AmmoUse 40
	Weapon.AmmoGive 40
	Weapon.AmmoType "AmmoCell"
	Weapon.SelectionOrder 2800
	-WEAPON.CHEATNOTWEAPON
	Inventory.PickupSound "BFGREADY"
	Inventory.PickupMessage "You got the BFG 9000!"
	tag "BFG 9000"
	States
	{
	Spawn:
		BFUG A -1
		Stop

	Select:
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist",1,"PuristGun")
		TNT1 A 0 A_Giveinventory("BFGSelected",1)
		TNT1 A 0 A_Giveinventory("GoSpecial",1)
		TNT1 A 0 A_Takeinventory("Unloading",1)
		TNT1 A 0 A_Takeinventory("Reloading",1)
		TNT1 A 0 A_TakeInventory("TossGrenade",1)
		TNT1 A 0 A_Takeinventory("WeapSpecial",1)
		TNT1 A 0 A_Takeinventory("SwitchFlashlight",1)
		TNT1 A 0 A_Takeinventory("Taunting",1)
		TNT1 A 0 A_Takeinventory("IdleCounter",200)
		TNT1 A 4
		TNT1 A 0 A_Raise
		Wait


	CheckSprint:
		bfgi a 1 A_WeaponReady(WRF_NOFIRE)
		UNHG A 0 A_JumpIfInventory("IsStandingStill", 1, "Ready3")
		UNHG A 0 A_JumpIfInventory("IsTacticalClass", 1, "StartSprint")
		Goto Ready3
		
	StartSprint:
		bfgi a 1 A_WeaponReady(WRF_NOFIRE)
		UNHG A 0 A_Takeinventory("Zoomed",1)
		UNHG A 0 A_Takeinventory("ADSmode",1)
		UNHG A 0 A_ZoomFactor(1.0)
		UNHG A 0 A_JumpIfInventory("UsedStamina", 40, "StopSprintTired")
		
	Sprinting:	
		UNHG A 0 offset(-9,32) 
		UNHG A 0 offset(-9,32) A_JumpIfInventory("IsStandingStill", 1, "Ready3")
		UNHG A 0 offset(-9,32) A_JumpIfInventory("UsedStamina", 100, "StopSprintTired")
		PLAY A 0 offset(-9,32) ACS_ExecuteAlways(852, 0, 0, 0, 0)//Makes player faster.
		UNHG A 0 offset(-9,32) A_JumpIfInventory("PowerStrength", 1, 2)
		UNHG A 0 offset(-9,32) A_GiveInventory("UsedStamina", 12)
		UNHG A 0 offset(-9,32)
		bfgi a 1 offset(-9,34) A_SetPitch(pitch -0.25) //-0.5
		bfgi a 1 offset(-6,36) A_SetPitch(pitch -0.25)
		bfgi a 1 offset(-3,38) A_SetPitch(pitch -0.25)
		bfgi a 1 offset(0,38) A_SetPitch(pitch -0.25)
		bfgi a 1 offset(3,36) A_SetPitch(pitch -0.25)
		bfgi a 1 offset(6,34) A_SetPitch(pitch -0.25)
		bfgi a 1 offset(9,32) A_SetPitch(pitch -0.25)
		UNHG A 0 offset(9,32) A_WeaponReady(WRF_NOBOB)
		UNHG A 0 A_JumpIfInventory("Kicking",1,"DoKick")
        UNHG A 0 A_JumpIfInventory("Taunting",1,"Taunt")
        UNHG A 0 A_JumpIfInventory("Reloading",1,"Reload")
		UNHG A 0 offset(-9,32) A_GiveInventory("UsedStamina", 12)
		UNHG A 0 offset(9,33) A_SpawnItemEx("FootStep", 0, 0, 2, 0, 0, -4)
		bfgi a 1 offset(9,34) A_SetPitch(pitch +0.5)
		bfgi a 1 offset(6,36) A_SetPitch(pitch +0.5)
		bfgi a 1 offset(3,38) A_SetPitch(pitch +0.5)
		bfgi a 1 offset(0,38) A_SetPitch(pitch +0.5)
		bfgi a 1 offset(-3,36) A_SetPitch(pitch +0.5)
		bfgi a 1 offset(-6,34) A_SetPitch(pitch +0.5)
		bfgi a 1 offset(-9,32) A_SetPitch(pitch +0.5)
		UNHG A 0 offset(-9,32) A_WeaponReady(WRF_NOBOB)
		UNHG A 0 offset(-9,32) A_JumpIfInventory("IsRunning", 1, "Sprinting")
		Goto StopSprint
		
	StopSprintTired:
		bfgi a 1
		PLAY A 0 ACS_ExecuteAlways(853, 0, 0, 0, 0)//Makes player slower.
		UNHG A 0 A_PlaySound("Tired", 2)
		UNHG A 0 A_TakeInventory("UsedStamina", 2)
		bfgi a 5 A_WeaponReady
		UNHG A 0 A_TakeInventory("UsedStamina", 2)
		bfgi a 5 A_WeaponReady
		UNHG A 0 A_TakeInventory("UsedStamina", 2)
		bfgi a 5 A_WeaponReady
		UNHG A 0 A_TakeInventory("UsedStamina", 2)
		bfgi a 5 A_WeaponReady
		UNHG A 0 A_TakeInventory("UsedStamina", 2)
		bfgi a 5 A_WeaponReady
		Goto Ready3
	StopSprint:
		bfgi a 1
		UNHG A 0 A_JumpIfInventory("UsedStamina", 60, "StopSprintTired")
		PLAY A 0 ACS_ExecuteAlways(853, 0, 0, 0, 0)//Makes player slower.
		Goto Ready3












	Deselect:
		BFGS ABCDEF 1
		TNT1 A 0 A_TakeInventory("BFGSelected",1)
UNHG A 0 A_ZoomFactor(1.0)
		TNT1 A 0 A_Lower
		Wait

	Ready:
		TNT1 A 0 A_JumpIfInventory("GoFatality",1,"Steady")
		TNT1 A 0 A_PlaySound("BFGREADY")
	Ready1:
		BFGS FEDCBA 1
	Ready2:
		TNT1 A 0 A_GunFlash
	Ready3:
		TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
		TNT1 A 0 A_JumpIfInventory("Taunting",1,"Taunt") //R
		TNT1 A 0 A_JumpIfInventory("Salute1",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("Salute2",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
TNT1 A 0 A_JumpIfInventory("IsRunning",1,"Checksprint")
		BFGI AB 2 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
	TNT1 A 0 A_JumpIfInventory("Taunting",1,"Taunt") //R
		TNT1 A 0 A_JumpIfInventory("Salute1",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("Salute2",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
TNT1 A 0 A_JumpIfInventory("IsRunning",1,"Checksprint")
		BFGI CD 2 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
		TNT1 A 0 A_JumpIfInventory("Taunting",1,"Taunt")//R
		TNT1 A 0 A_JumpIfInventory("Salute1",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("Salute2",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
TNT1 A 0 A_JumpIfInventory("IsRunning",1,"Checksprint")
	//	TNT1 A 0 A_JumpIfInventory("IdleCounter",200,"PlayerIsIdle")
		BFGI EF 2 A_WeaponReady
		Goto Ready2

// --------------------------------------------------------------------------
//
//	Fire
//
// --------------------------------------------------------------------------
		
	Fire:
		TNT1 A 0 A_PlaySound("BFGCHARGE",1)
		TNT1 A 0 A_GunFlash("FireFlash")
		TNT1 A 0 Radius_Quake(1,4,0,2,0)
		//Start charging
		BFGC AB 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(1,4,0,2,0)
		BFGC CD 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(1,4,0,2,0)
		BFGC EF 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(2,4,0,2,0)
		BFGC GH 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(2,4,0,2,0)
		BFGC IJ 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(2,4,0,2,0)
		BFGC KF 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(3,4,0,2,0)
		BFGC GH 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(3,6,0,2,0)
		BFGC IJK 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		//FIRE!
//		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1023,2)==0,2)
		TNT1 A 0 A_Firebullets(10,0,6,80,"BfgPuff",0,120)//Kills smaller enemies at point blank so the projectile gets a chanse to fly.
		BFGF A 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		BFGF A 1 A_PlaySound("BFGFIRE",1)
		TNT1 A 0 A_AlertMonsters
		TNT1 AAA 0 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 A_Recoil(8)
		TNT1 A 0 Radius_Quake(2,2,0,2,0)
		TNT1 A 0 A_FireCustomMissile("Alerter",0,0,-1,0)
		TNT1 A 0 A_FireCustomMissile("ShakeYourAssDouble",0,0,0,0)
		TNT1 A 0 A_SetPitch(-1.0 + pitch)
		BFGF B 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 A_SetPitch(-1.0 + pitch)
		BFGF B 1 Radius_Quake(1,4,0,2,0)
		TNT1 A 0 A_SetPitch(+2.0 + pitch)
	//	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1023,2)==0,3)
		TNT1 A 0 A_FireCustomMissile("U_BFGBall")
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_FireCustomMissile("BFGBall")
		TNT1 A 0 A_SetPitch(-4.0 + pitch)
		BFGF CCDDEEFF 1 A_SetPitch(+0.5 + pitch)
		BFGF G 2
		BFGI ABCDEF 2
		TNT1 A 0 A_Refire
		Goto Ready2



AltFire:
		TNT1 A 0 A_JumpIfInventory("AmmoCell",20,1)
		Goto Ready2
		TNT1 A 0 A_PlaySound("BFGCHARGE",1)
		TNT1 A 0 Radius_Quake(1,4,0,2,0)
		//Start charging
		BFGC AB 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(1,4,0,2,0)
		BFGC CD 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(1,4,0,2,0)
		BFGC EF 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 A_GunFlash("FireFlash")
		TNT1 A 0 Radius_Quake(2,4,0,2,0)
		BFGC GH 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(2,4,0,2,0)
		BFGC IJ 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 Radius_Quake(2,4,0,2,0)
		BFGC KF 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
//		TNT1 A 0 Radius_Quake(3,4,0,2,0)
//		BFGC GH 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
//		TNT1 A 0 Radius_Quake(3,6,0,2,0)
//		BFGC IJ 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
//		TNT1 A 0 Radius_Quake(3,6,0,2,0)
//		BFGC KF 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
//		TNT1 A 0 Radius_Quake(4,6,0,2,0)
//		BFGC GH 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
///		TNT1 A 0 Radius_Quake(4,6,0,2,0)
	//	BFGC IJK 2 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		//FIRE!

TNT1 A 0 A_PlaySound("10KSTART",1,0.8)
		BFGF A 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		BFGF A 1 A_PlaySound("BFGFIRE",1)
		TNT1 A 0 A_AlertMonsters
		TNT1 AAA 0 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 A_TakeInventory("AmmoCell",20)
		TNT1 A 0 A_Recoil(1)
		TNT1 A 0 Radius_Quake(2,2,0,2,0)
		TNT1 A 0 A_FireCustomMissile("Alerter",0,0,-1,0)
		TNT1 A 0 A_FireCustomMissile("ShakeYourAssDouble",0,0,0,0)
	//	TNT1 A 0 A_SetPitch(-1.0 + pitch)
		BFGF B 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
	//	TNT1 A 0 A_SetPitch(-1.0 + pitch)
		BFGF B 1 Radius_Quake(1,4,0,2,0)
	//	TNT1 A 0 A_SetPitch(+2.0 + pitch)
		//TNT1 A 0 A_FireCustomMissile("BFGAltFire")
TNT1 A 0 A_PlaySound("10KFIRE",5)
TNT1 A 0 A_FireCustomMissile("BFG10K_Ball",0,1,0,0)		
//TNT1 A 0 A_SetPitch(-4.0 + pitch)
		BFGF CCDDEEFF 1 //A_SetPitch(+0.5 + pitch)
TNT1 A 0 A_PlaySound("10KSTOP",2,0.7)
		BFGF G 2
		BFGI ABCDEF 2
		TNT1 A 0 A_Refire
		Goto Ready2


	FireFlash:
		TNT1 A 22
		TNT1 A 1 A_ZoomFactor(0.99)
		TNT1 A 1 A_ZoomFactor(0.99)
		TNT1 A 1 A_ZoomFactor(0.98)
		TNT1 A 1 A_ZoomFactor(0.98)
		TNT1 A 1 A_ZoomFactor(0.97)
		TNT1 A 1 A_ZoomFactor(0.96)
		TNT1 A 1 A_ZoomFactor(0.95)
		TNT1 A 1 A_ZoomFactor(0.93)
		TNT1 A 1 A_ZoomFactor(0.91)
		TNT1 A 1 A_ZoomFactor(0.89)
		TNT1 A 1 A_ZoomFactor(0.86)
		TNT1 A 1 A_ZoomFactor(0.83)
		TNT1 A 0 //Fire!
		TNT1 A 1 A_ZoomFactor(0.81)
		TNT1 A 1 A_ZoomFactor(0.80)
		TNT1 A 1 A_ZoomFactor(0.80)
		TNT1 A 1 A_ZoomFactor(0.81)
		TNT1 A 1 A_ZoomFactor(0.81)
		TNT1 A 1 A_ZoomFactor(0.82)
		TNT1 A 1 A_ZoomFactor(0.83)
		TNT1 A 1 A_ZoomFactor(0.94)
		TNT1 A 1 A_ZoomFactor(0.85)
		TNT1 A 1 A_ZoomFactor(0.96)
		TNT1 A 1 A_ZoomFactor(0.88)
		TNT1 A 1 A_ZoomFactor(1.00)
		Stop

// --------------------------------------------------------------------------
//
//	Misc.
//
// --------------------------------------------------------------------------

	PuristGun:
		TNT1 A 0 A_GiveInventory("VanillaBFG9000",1)
		TNT1 A 0 A_TakeInventory("BIG_FUCKING_GUN",1)
		Goto Ready

// --------------------------------------------------------------------------
//
//	End Stuff
//
// --------------------------------------------------------------------------

	TauntFlash:
		BFGK ABCD 1
		BFGK E 35
		BFGK DCBA 1
		BFGI A 1
		Stop

	KickFlash:
		BFGK ABCD 1
		BFGK E 8
		BFGK DCBA 1
		BFGI A 1
		Stop

	AirKickFlash:
		BFGK ABCD 1
		BFGK E 10
		BFGK DCBA 1
		BFGI A 1
		Stop

	SlideKickStartFlash:
		BFGK ABCD 1
		BFGK E 17
		Stop

	SlideKickEndFlash:
		BFGK EDCBA 2
		BFGI A 1
		Stop

	GrenadeFlash:
		BFGS ABCDE 1
		Stop
	}
}

Actor U_BFGBall //Updated ball
{
	Radius 5
	Height 5
	Projectile
	Speed 40
	Damage (random(1200,1200))  //400,600
	DamageType Desintegrate
	RenderStyle Add
	Alpha 0.9
	Scale 0.7
	Decal BFGLightning
	DeathSound "BFGEXPLO"
	Obituary "$OB_MPBFG_BOOM"
	Species "Marines"
	+RANDOMIZE
	+EXTREMEDEATH
	+THRUSPECIES
	+MTHRUSPECIES
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("CheckIfDM")
	Spawn1:
		BFGP A 1 Bright A_SpawnItem("U_GreenFlare",0,0)
		TNT1 A 0 A_Explode(90,160,0,0,5,0,0,"SuperBFGExtra")
		TNT1 A 0 A_SpawnItem("BFGLightning",0,0)
		TNT1 AA 0 A_SpawnItemEx("BFGTrailParticle",Random(-13,13),Random(-13,13),Random(0,18),fRandom(1,3),0,(0.1)*Random(-10,10),Random(-20,20),128)
		BFGP B 1 Bright A_SpawnItem("U_GreenFlare",0,0)
		TNT1 A 0 A_Explode(90,160,0,0,5,0,0,"SuperBFGExtra")
		TNT1 A 0 A_SpawnItem("BFGLightning",0,0)
		TNT1 AA 0 A_SpawnItemEx("BFGTrailParticle",Random(-13,13),Random(-13,13),Random(0,18),fRandom(1,3),0,(0.1)*Random(-10,10),Random(-20,20),128)
		BFGP C 1 Bright A_SpawnItem("U_GreenFlare",0,0)
		TNT1 A 0 A_Explode(90,160,0,0,5,0,0,"SuperBFGExtra")
		TNT1 A 0 A_SpawnItem("BFGLightning",0,0)
		TNT1 AA 0 A_SpawnItemEx("BFGTrailParticle",Random(-13,13),Random(-13,13),Random(0,18),fRandom(1,3),0,(0.1)*Random(-10,10),Random(-20,20),128)
		BFGP D 1 Bright A_SpawnItem("U_GreenFlare",0,0)
		TNT1 A 0 A_Explode(90,160,0,0,5,0,0,"SuperBFGExtra")
		TNT1 A 0 A_SpawnItem("BFGLightning",0,0)
		TNT1 AA 0 A_SpawnItemEx("BFGTrailParticle",Random(-13,13),Random(-13,13),Random(0,18),fRandom(1,3),0,(0.1)*Random(-10,10),Random(-20,20),128)
		BFGP E 1 Bright A_SpawnItem("U_GreenFlare",0,0)
		TNT1 A 0 A_Explode(90,160,0,0,5,0,0,"SuperBFGExtra")
		TNT1 A 0 A_SpawnItem("BFGLightning",0,0)
		TNT1 AA 0 A_SpawnItemEx("BFGTrailParticle",Random(-13,13),Random(-13,13),Random(0,18),Random(1,3),0,(0.1)*Random(-10,10),Random(-20,20),128)
		Loop
	DM:
		TNT1 A 0 A_ChangeFlag("THRUSPECIES",0)
		TNT1 A 0 A_ChangeFlag("MTHRUSPECIES",0)
		Goto Spawn1
	Death:
		TNT1 A 0 Radius_Quake(4,34,0,12,0)
		TNT1 A 0 Radius_Quake(1,34,0,32,0)
		TNT1 A 0 A_SpawnItemEx("ExplosionSplashSpawner",0,0,-20)
		TNT1 A 0 A_SpawnItemEx("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItemEx("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItemEx("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		//TNT1 A 0 A_SpawnItem("GreenShockWave",0,0,0)
		TNT1 A 0 A_SpawnItemEx("BFGDeathParticleSpawner",0,0,0,0,0,0,0,128)
		TNT1 A 0 A_SpawnItemEx("BFGSuperParticleSpawner",0,0,0,0,0,0,0,128)
		TNT1 A 0 A_SpawnItem("BFGSplashFX")
		TNT1 A 0 A_Explode(180,500,0,1,5,0,0,"SuperBFGExtra")
		BFGB AAABBBCCC 1 Bright A_SpawnItem("U_GreenFlare",0,0)
		TNT1 A 0 A_Explode(180,500,0,1,5,0,0,"SuperBFGExtra")
		BFGB DDDEEEFFF 1 Bright A_SpawnItem("U_GreenFlare",0,0)
		TNT1 A 0 A_Explode(180,500,0,1,5,0,0,"SuperBFGExtra")
		BFGB GGGHHHIIIJJJKKKLLL 1 Bright A_SpawnItem("U_GreenFlare",0,0)
		Stop
	}
}

ACTOR BfgPuff
{
	renderstyle Translucent
	alpha 0.4
	Scale 1.5
	radius 0
	height 0
	Gravity 0.01
	DamageType Desintegrate
	Decal BFGLightning
	+NOBLOCKMAP
	+NOGRAVITY
	+NOEXTREMEDEATH
	+FORCEXYBILLBOARD
	+DONTSPLASH
	-EXPLODEONWATER
	states
	{
	Spawn:
		TNT1 A 0
	Melee:
		TNT1 A 1
		stop
	}
}

Actor U_GreenFlare : Flare_General
{
	alpha 0.4
	scale 0.3
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,"Spawn2")
	Spawn1:
		LENG A 1 Bright
		TNT1 A 0 A_FadeOut(0.15)
		loop
	Spawn2:
		LENG B 1 Bright
		TNT1 A 0 A_FadeOut(0.15)
		loop
	}
}

Actor U_GreenFlare2 : U_GreenFlare
{
	alpha 0.4
	scale 0.6
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,"Spawn2")
	Spawn1:
		LENG A 1 Bright
		TNT1 A 0 A_FadeOut(0.07)
		loop
	Spawn2:
		LENG B 1 Bright
		TNT1 A 0 A_FadeOut(0.07)
		loop
	}
}

Actor BFGLightning : Flare_General
{
	alpha 1.0
	Scale 0.8
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetScale(0.8*random(-1,1),0.8*random(-1,1))
		TNT1 A 0 A_Jump(128,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5","Spawn6","Spawn7","Spawn8","Spawn9","Spawn0")
		Stop
	Spawn1:
		BFGL A 1 Bright
		Stop
	Spawn2:
		BFGL B 1 Bright
		Stop
	Spawn3:
		BFGL C 1 Bright
		Stop
	Spawn4:
		BFGL D 1 Bright
		Stop
	Spawn5:
		BFGL E 1 Bright
		Stop
	Spawn6:
		BFGL F 1 Bright
		Stop
	Spawn7:
		BFGL G 1 Bright
		Stop
	Spawn8:
		BFGL H 1 Bright
		Stop
	Spawn9:
		BFGL I 1 Bright
		Stop
	Spawn0:
		BFGL J 1 Bright
		Stop
	}
}

Actor BFGSplashFX
{
	+NoBlockMap
	+NoGravity
	RenderStyle Add
	+FORCERADIUSDMG
	+THRUGHOST
	Alpha 0.9
	Damage 0
	Scale 2.5
	Radius 1
	Height 1
	DamageType "Desintegrate"
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 AAA 0 A_SpawnItemEx("BFGExtraParticle",0,0,14,(0.1)*Random(10,40),0,(0.1)*Random(-40,40),Random(0,360),128)
	BFGB ABCD 2 Bright A_SpawnItem("U_GreenFlare2",0,0)
	TNT1 AAA 0 A_SpawnItemEx("BFGExtraParticle",0,0,14,(0.1)*Random(10,40),0,(0.1)*Random(-40,40),Random(0,360),128)
	BFGB EFGH 2 Bright A_SpawnItem("U_GreenFlare2",0,0)
	TNT1 AAA 0 A_SpawnItemEx("BFGExtraParticle",0,0,14,(0.1)*Random(10,40),0,(0.1)*Random(-40,40),Random(0,360),128)
	BFGB IJKL 2 Bright A_SpawnItem("U_GreenFlare2",0,0)
	Stop
	}
}

Actor BFGSplashFXsmall : BFGSplashFX
{
	Scale 0.5
}

ACTOR BFGAltFire
{
	Radius 5
	Height 5
	Speed 25
	Damage (random(600,800))
	DamageType Desintegrate
	Projectile
	+EXTREMEDEATH
	+THRUSPECIES
	+MTHRUSPECIES
	DeathSound "weapons/bfgx"//BFGEXPL2
	Obituary "$OB_MPBFG_BOOM"
	Species "Marines"
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("BFGEXPL2")
		TNT1 A 0 A_SpawnItemEx("BFGSplashFXsmall",0,0,-5)
		TNT1 AAAAAAAAAA 0 A_SpawnItemEx("BFGDeathParticle",0,0,0,frandom(6,18),frandom(0,6),frandom(-6,6),0,128)
		TNT1 AAAAAAAAAA 0 A_SpawnItemEx("BFGDeathParticle",0,0,0,frandom(6,18),frandom(-6,0),frandom(-6,6),0,128)
		TNT1 AAAAAAAAAA 0 A_SpawnItemEx("U_BFGSuperParticle",0,0,0,frandom(5,15),frandom(0,5),frandom(-5,5),0,128)
		TNT1 AAAAAAAAAA 0 A_SpawnItemEx("U_BFGSuperParticle",0,0,0,frandom(5,15),frandom(-5,0),frandom(-5,5),0,128)
		TNT1 A 4
	Death:
		TNT1 A 0 A_SpawnItemEx("BFGDeathParticleSpawner",0,0,0,0,0,0,0,128)
		TNT1 A 0 A_Stop
		TNT1 A 0 A_BFGSpray("SuperBFGExtra",25)
		TNT1 A 5
		TNT1 A 0 A_BFGSpray("SuperBFGExtra",25)
		TNT1 A 5
		TNT1 A 0 A_BFGSpray("SuperBFGExtra",25)
		Stop
	}
}
