// --------------------------------------------------------------------------
//
//	BFG 10000
//
// --------------------------------------------------------------------------

Actor U_BFG10k : BrutalWeapon replaces BFG10k
{
	Weapon.AmmoUse 2
	Weapon.AmmoGive 20
	Weapon.AmmoType "RailCore"
	Weapon.Kickback 100
	Weapon.SelectionOrder 3500
	-WEAPON.CHEATNOTWEAPON
	Inventory.PickupSound "BFGREADY"
	Inventory.Pickupmessage "You got the BFG 10000!"
	Obituary "%o was blasted by %k's BFG10K."
	Decal BFGLightning
	tag "BFG 10000"
	States
	{
	Spawn:
		BFG2 ABCBACBCACBACABACB 1
		Loop

	Select:
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist",1,"PuristGun")
//		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1002,5)==0,"PuristGun")
		TNT1 A 0 A_Giveinventory("BFG10kSelected",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:
		bg2a b 1 A_WeaponReady(WRF_NOFIRE)
		UNHG A 0 A_JumpIfInventory("IsStandingStill", 1, "Ready3")
		UNHG A 0 A_JumpIfInventory("IsTacticalClass", 1, "StartSprint")
		Goto Ready
		
	StartSprint:
		bg2a b 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)
		bg2a b 1 offset(-9,34) A_SetPitch(pitch -0.25) //-0.5
		bg2a b 1 offset(-6,36) A_SetPitch(pitch -0.25)
		bg2a b 1 offset(-3,38) A_SetPitch(pitch -0.25)
		bg2a b 1 offset(0,38) A_SetPitch(pitch -0.25)
		bg2a b 1 offset(3,36) A_SetPitch(pitch -0.25)
		bg2a b 1 offset(6,34) A_SetPitch(pitch -0.25)
		bg2a b 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)
		bg2a b 1 offset(9,34) A_SetPitch(pitch +0.5)
		bg2a b 1 offset(6,36) A_SetPitch(pitch +0.5)
		bg2a b 1 offset(3,38) A_SetPitch(pitch +0.5)
		bg2a b 1 offset(0,38) A_SetPitch(pitch +0.5)
		bg2a b 1 offset(-3,36) A_SetPitch(pitch +0.5)
		bg2a b 1 offset(-6,34) A_SetPitch(pitch +0.5)
		bg2a b 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:
		bg2a b 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)
		bg2a b 5 A_WeaponReady
		UNHG A 0 A_TakeInventory("UsedStamina", 2)
		bg2a b 5 A_WeaponReady
		UNHG A 0 A_TakeInventory("UsedStamina", 2)
		bg2a b 5 A_WeaponReady
		UNHG A 0 A_TakeInventory("UsedStamina", 2)
		bg2a b 5 A_WeaponReady
		UNHG A 0 A_TakeInventory("UsedStamina", 2)
		bg2a b 5 A_WeaponReady
		Goto Ready3
	StopSprint:
		bg2a b 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:
		//TNT1 A 0 A_StopSound(1)
		BG2S ABCDEF 1
		TNT1 A 0 A_TakeInventory("BFG10kSelected",1)
		TNT1 A 0 A_Lower
		Wait		

	Ready:
		TNT1 A 0 A_JumpIfInventory("GoFatality",1,"Steady")
		TNT1 A 0 A_PlaySound("BFGREADY")
	Ready1:
		BG2S FEDCBA 1
	Ready2:
		TNT1 A 0 A_GunFlash
	Ready3:
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2A BADC 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
		TNT1 A 0 A_JumpIfInventory("Taunting",1,"Taunt")
		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")
		BG2A ABCD 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
		TNT1 A 0 A_JumpIfInventory("Taunting",1,"Taunt")
		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")
		BG2A ACBD 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
		TNT1 A 0 A_JumpIfInventory("Taunting",1,"Taunt")
		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")
		Loop

// --------------------------------------------------------------------------
//
//	Fire
//
// --------------------------------------------------------------------------

	Fire:
		TNT1 A 0 A_StopSound(2)
		BG2A E 12 A_PlaySound("10KSTART",1,0.8)
		BG2A FGHIJ 4
		BG2A K 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 A_PlaySound("10KFIRE",5)
		BG2A L 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		//TNT1 A 0 A_FireBullets(0,0,1,100,"U_BrutalBFG10kShot")
		TNT1 A 0 A_FireCustomMissile("BFG10K_Ball",0,1,0,0)
		TNT1 A 0 A_SetPitch(-3.0 + pitch)
		TNT1 A 0 A_SetAngle(angle + frandom(-2,2))
		BG2A M 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		BG2A N 1 A_SetPitch(0.35 + pitch)
		TNT1 A 0 A_ReFire
		TNT1 A 0 A_PlaySound("10KSTOP",2,0.7)
		BG2A OOOO 1 A_SetPitch(0.35 + pitch)
		BG2A O 15
		Goto Ready2

	Hold:
		BG2A FGHIJ 1 A_SetPitch(0.25 + pitch)
		BG2A K 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 A_PlaySound("10KFIRE",5)
		BG2A L 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("BFG10K_Ball",0,1,0,0)
		TNT1 A 0 A_SetPitch(-3.0 + pitch)
		TNT1 A 0 A_SetAngle(angle + frandom(-2,2))
		BG2A M 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		BG2A N 1 A_SetPitch(0.35 + pitch)
		TNT1 A 0 A_ReFire
		TNT1 A 0 A_PlaySound("10KSTOP",2,0.7)
		BG2A OOOO 1 A_SetPitch(0.35 + pitch)
		BG2A O 15
		Goto Ready2
/*
	AltFire:
		TNT1 A 0 A_StopSound(2)
		BG2A E 10 A_PlaySound("10KSTART",1,0.8)
		BG2A FGHIJ 4
		
	AltHold:
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.7)
		TNT1 A 0 A_FireCustomMissile("BFG10kFlareSpawn",0,0,0,0)
		BG2A E 1 offset(0,32)
		TNT1 A 0 A_FireCustomMissile("BFG10kFlareSpawn",0,0,0,0)
		BG2A E 1 offset(0,33)
		TNT1 A 0 A_FireCustomMissile("BFG10kFlareSpawn",0,0,0,0)
		BG2A E 1 offset(1,32)
		TNT1 A 0 A_FireCustomMissile("BFG10kFlareSpawn",0,0,0,0)
		BG2A E 1 offset(-1,32)
		TNT1 A 0 A_ReFire
		
		TNT1 A 0 A_StopSound(1)
		BG2A K 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 A_PlaySound("10KFIRE",5)
		BG2A L 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("BFG10K_Ball",0,1,0,0)
		TNT1 A 0 A_SetPitch(-3.0 + pitch)
		TNT1 A 0 A_SetAngle(angle + frandom(-2,2))
		BG2A M 1 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
		BG2A N 1 A_SetPitch(0.35 + pitch)
		TNT1 A 0 A_PlaySound("10KSTOP",2,0.7)
		BG2A OOOO 1 A_SetPitch(0.35 + pitch)
		BG2A O 15
		Goto Ready2
*/
// --------------------------------------------------------------------------
//
//	Misc.
//
// --------------------------------------------------------------------------

	PuristGun:
		TNT1 A 0 A_TakeInventory("BFG10k",1)
		Goto Ready

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

	TauntFlash:
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K ABCD 1
		BG2K EFGHEGFE 1
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K HGEHFGEFGHEG 1
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K FHGEFHFEFGHE 1
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K FGH 1
		BG2K DCBA 1
		BG2A C 1
		Stop

	KickFlash:
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K ABCD 1
		BG2K EFGHEFGH 1
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K DCBA 1
		BG2A C 1
		Stop

	AirKickFlash:
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K ABCD 1
		BG2K EFGEHGEG 1
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K FH 1
		BG2K DCBA 1
		BG2A C 1
		Stop

	SlideKickStartFlash:
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K ABCD 1
		BG2K EFGHEGFE 1
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K HGEHFGEFG 1
		Stop

	SlideKickEndFlash:
		TNT1 A 0 A_PlaySound("10KIDLE",1,0.5)
		BG2K HE 1
		BG2K DCBA 2
		BG2A C 1
		Stop

	GrenadeFlash:
		//TNT1 A 0 A_StopSound(1)
		BG2S ABCDEF 1
		Stop
	}
}

ACTOR U_BFG10K_Ball: FastProjectile replaces BFG10K_Ball
{
	Radius 6
	Height 6
	Speed 200
	Damage (random(200,300))
	DamageType Extreme
	Decal "SmallerScorch"
	Projectile
	+RANDOMIZE
	+SPECTRAL
	//+SHOOTABLE
	-NOBLOCKMAP
	+NOBLOOD
	+NORADIUSDMG
	+THRUSPECIES
	+MTHRUSPECIES
	+FORCEXYBILLBOARD
	Species "Marines"
	Scale 1.0
	renderstyle Add
	alpha 0.99
	Scale 0.4
	DeathSound "weapons/plasmax"
	SeeSound "None"
	Obituary "$OB_BFG10K"
	States
	{
	Spawn:
		BFS1 ABCD 1 BRIGHT A_CustomMissile("BFGDeathParticleFast",0,0,frandom(-10,10),2,frandom(-10,10))
		TNT1 A 0 A_JumpIf((ABS (MomY) < 1) && (ABS (MomX) < 1), "Death")
		Loop
	Death:
		TNT1 A 0 A_Explode(150,150,0,1,10)
		TNT1 A 0 A_PlaySound("FAREXPL")
		TNT1 A 0 Radius_Quake(3,2,0,12,0)
		TNT1 A 0 A_SpawnItem("GreenShockWave",0,0,0)
		TNT1 A 0 A_SpawnItem("BFG10kExplosion1",0,0,0)
		TNT1 A 0 A_SpawnItem("BFG10kExplosion2",0,0,0)
		TNT1 AAAAAAAAAAAAAAAAA 0 A_CustomMissile("BFGDeathParticleSuperFast",0,0,random(0,360),2,random(0,360))
		TNT1 AAAAAAAAAAAAAAAAA 0 A_CustomMissile("BFGDeathParticleFast",0,0,random(0,360),2,random(0,360))
		//TNT1 AAAA 0 A_CustomMissile("BFGBIGFOG",0,0,random(0,360),2,random(0,360))
		//TNT1 AAAAAAA 0 A_CustomMissile("GreenExplosionFire",2,0,random(0,360),2,random(0,360))
		TNT1 A 0 A_SetScale(0.7,1)
		BFGB CDEFGHIJKL 2 Bright //A_CustomMissile("BigNeoSmoke",2,0,random(0,360),2,random(0,360))
		TNT1 AAA 0 A_CustomMissile("BigNeoSmoke",0,0,random(0,360),2,random(0,360))
		Stop
	}
}

ACTOR BFG10kFlareSpawn
{
	Speed 20
	PROJECTILE
	+NOCLIP
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_CustomMissile("BFG10kFlare",-5,0,-85,0,random(-10,10))
		Stop
	}
}

Actor BFG10kFlare : Flare_General
{
	alpha 0.4
	scale 0.15
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,2)
		L2NG A 1 Bright
		Stop
		L2NG B 1 Bright
		Stop
	}
}

ACTOR BFG10kExplosion1: FlameTrails
{
	Scale 0.6
	Speed 1
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_SetScale(-1 * scaleX,scaleY)//Random X-flip
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_SetScale(scaleX,-1 * scaleY)//Random Y-flip
		BFGB MMMNNNOOOPPPQQQRRRSSS 1 Bright A_SetScale(scaleX * 1.07,scaleY * 1.07)
		Stop
	}
}

ACTOR BFG10kExplosion2 : FlameTrails
{
    Scale 0.6
	Speed 1
	States
	{
    Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_SetScale(-1 * scaleX,scaleY)//Random X-flip
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_SetScale(scaleX,-1 * scaleY)//Random Y-flip
        FIR6 ABCDEFGHIJKLMNOP 1 Bright A_SetScale(scaleX * 1.09,scaleY * 1.09)
        Stop
	}
}