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

ACTOR BIG_FUCKING_GUN : BFG9000 Replaces BFG9000
{
	Game Doom
	Height 20
	SpawnID 31
	Weapon.SelectionOrder 2800
	Weapon.AmmoUse 40
	Weapon.AmmoGive 40
	Weapon.AmmoType "Cell"
    Inventory.PickupSound "BFGREADY"
	DamageType Desintegrate
     +WEAPON.NOAUTOAIM
	Inventory.PickupMessage "You got the BFG-9000! FUCK YEAH!"
	States
	{
	Steady:
	TNT1 A 1
	Goto Ready
	Ready:
	    TNT1 A 0
	    TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
        TNT1 A 0 A_PlaySound("BFGREADY")
        TNT1 AAA 0
        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")
		BFGG A 4 A_WeaponReady
		Goto Ready+5
	Deselect:
		BFGG A 1 A_Lower
		Loop
	Select:
		TNT1 A 0 A_Takeinventory("FistsSelected",1)
	TNT1 A 0 A_Takeinventory("SawSelected",1)
	TNT1 A 0 A_Takeinventory("ShotgunSelected",1)
	TNT1 A 0 A_Takeinventory("SSGSelected",1)
	TNT1 A 0 A_Takeinventory("MinigunSelected",1)
	TNT1 A 0 A_Takeinventory("PlasmaGunSelected",1)
	TNT1 A 0 A_Takeinventory("RocketLauncherSelected",1)
    TNT1 A 0 A_Takeinventory("GrenadeLauncherSelected",1)
	TNT1 A 0 A_Giveinventory("BFGSelected",1)
	TNT1 A 0 A_Takeinventory("BFG10kSelected",1)
	TNT1 A 0 A_Takeinventory("RailGunSelected",1)
	TNT1 A 0 A_Takeinventory("SubMachineGunSelected",1)
	TNT1 A 0 A_Takeinventory("RevenantLauncherSelected",1)
	TNT1 A 0 A_Takeinventory("LostSoulSelected",1)
	TNT1 A 0 A_Takeinventory("FlameCannonSelected",1)
	TNT1 A 0 A_Takeinventory("HasBarrel",1)
	
		BFGG A 1 A_Raise
		wait
	Fire:
        TNT1 A 0 A_PlaySound("BFGCHARGE")
		BFGC ABABABABABABABAB 2 BRIGHT A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
        BFGF A 2 BRIGHT A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
        TNT1 A 0 A_PlaySound("BFGFIRE")
		TNT1 AAA 0 A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
        TNT1 A 0 A_Recoil(8)
        //TNT1 A 0 A_ZoomFactor(1.3)
        TNT1 A 0 BRIGHT A_FireCustomMissile("Alerter", 0, 0, -1, 0)
		BFGF B 2 BRIGHT A_FireCustomMissile("SuperBFGBall", 0, 1, 0, 0)
		TNT1 A 0 A_FireCustomMissile("ShakeYourAssDouble", 0, 0, 0, 0)
        BFGF CDEF 2 BRIGHT A_FireCustomMissile("GreenFlareSpawn",0,0,0,0)
        //TNT1 A 0 A_ZoomFactor(1.0)
        BFGG A 1 BRIGHT
        TNT1 A 0  A_Refire
		Goto Ready+5

        DoKick:
	    TNT1 A 0
		TNT1 A 0 A_Takeinventory("Zoomed",1)
        TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 A 0 A_Takeinventory("ADSmode",1)
		NULL A 0 A_JumpIf (momZ > 0, "AirKick")
		NULL A 0 A_JumpIf (momZ < 0, "AirKick")
		
        TNT1 A 0 A_jumpifinventory("PowerStrength",1,"BerserkerKick")
		TNT1 A 0 A_PlaySound("KICK")
		TNT1 A 0 SetPlayerProperty(0,1,0)
		KICK BCD 1
		RIFF A 0 A_FireCustomMissile("KickAttack", 0, 0, 0, -7)
        KICK H 4
		KICK A 0 A_Takeinventory("Kicking",1)
		KICK IGFEDCBA 1 
		TNT1 A 0 SetPlayerProperty(0,0,0)
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		Goto Ready+6
    BerserkerKick:
		TNT1 A 0 A_PlaySound("KICK")
		TNT1 A 0 SetPlayerProperty(0,1,0)
		KICK ABCDEFG 1
        RIFF A 0 A_FireCustomMissile("SuperKickAttack", 0, 0, 0, -7)
        KICK H 3
		KICK A 0 A_Takeinventory("Kicking",1)
		KICK IGFEDCBA 1 
		TNT1 A 0 SetPlayerProperty(0,0,0)
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		Goto Ready+6
	
	AirKick:
	    TNT1 A 0 A_jumpifinventory("PowerStrength",1,"SuperAirKick")
		TNT1 A 0 A_PlaySound("KICK")
		TNT1 A 0 A_Recoil (-6)
		KICK JKLMN 1
        RIFF A 0 A_FireCustomMissile("AirKickAttack", 0, 0, 0, -31)
        KICK O 3
		KICK A 0 A_Takeinventory("Kicking",1)
		KICK PQRST 2
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		Goto Ready+6
		
	SuperAirKick:
		TNT1 A 0 A_PlaySound("KICK")
		TNT1 A 0 A_Recoil (-6)
		KICK JKLMN 1
        RIFF A 0 A_FireCustomMissile("SuperAirKickAttack", 0, 0, 0, -31)
        KICK O 3
		KICK A 0 A_Takeinventory("Kicking",1)
		KICK PQRST 2
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		Goto Ready+6

    Taunt:
        TNT1 A 5
		FUCK A 2
		TNT1 A 0 BRIGHT A_FireCustomMissile("Taunter", 0, 0, -1, 0)
		TNT1 A 0 BRIGHT A_FireCustomMissile("Taunter", -9, 0, -1, 0)
		TNT1 A 0 BRIGHT A_FireCustomMissile("Taunter", 9, 0, -1, 0)
        FUCK B 2 A_PlaySound("FUCK", 1)
        FUCK C 2 A_AlertMonsters
		FUCK D 15 A_Takeinventory("Taunting",1)
        FUCK CBA 5
        TNT1 A 5 
		Goto Ready
	Salute:
	    TNT1 A 0 SetPlayerProperty(0,1,0)
		TNT1 A 0 A_ALertMonsters
		SALU ABCDEDCDEDCDEDCBA 4
		TNT1 A 0 A_TakeInventory("Salute1",1)
		TNT1 A 0 A_TakeInventory("Salute2",1)
		TNT1 A 0 SetPlayerProperty(0,0,0)
		Goto Ready
	}
}



Actor SuperBFGBall : BFGBall replaces BFGBall
{
    +EXTREMEDEATH
	Damage 100
  Decal BFGLightning
	DeathSound "BFGEXPLO"
    //DamageType Desintegrate
  States
  {
  Spawn:
    TNT1 A 0 A_SpawnItemEx("BFGFOG", 0, 0)
    BFS1 A 1 BRIGHT A_SpawnItem("GreenFlareMedium",0,0)
    BFS1 A 1 BRIGHT 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)
    TNT1 A 0 A_SpawnItemEx("BFGFOG", 0, 0)
    BFS1 B 1 BRIGHT A_SpawnItem("GreenFlareMedium",0,0)
    BFS1 B 1 BRIGHT 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
 
 Death:
    TNT1 A 0
    //TNT1 A 0 Radius_Quake(4,34,0,12,0)
	TNT1 A 0 A_Explode(80,300,0)
	TNT1 A 0 Bright A_SpawnItem("GreenShockWave",0,0,0)
    BFE1 A 0 A_SpawnItemEx("BFGDeathParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
    BFE1 A 0 A_SpawnItemEx("BFGSuperParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	EXPL AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("BFGBIGFOG", 0, 0, random (0, 360), 2, random (0, 360))
	EXPL AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("BFGBIGFOG", 0, 0, random (0, 360), 2, random (0, 360))
	EXPL AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("BFGSuperParticle", 0, 0, random (0, 360), 2, random (0, 360))
    BFE1 AAAABBBB 2 Bright A_SpawnItem("GreenFlare",0,0)
    BFE1 CC 1 Bright A_BFGSpray
    BFE1 CCDDDDEEEEFFFF 2 Bright A_SpawnItem("GreenFlare",0,0)
    Stop
  }
}


Actor BFGTrailParticle
{
  Height 0
  Radius 0
  Mass 0
  Speed 3
  +Missile
  +NoBlockMap
  +NoGravity
  +DontSplash
  RenderStyle Add
  Scale 0.05
  States
  {
  Spawn:
    SPKG A 2 Bright A_FadeOut(0.02)
    Loop
  }
}



Actor BFGDeathParticle
{
  Height 0
  Radius 0
  Mass 0
  +Missile
  +NoBlockMap
  -NoGravity
  +LowGravity
  +DontSplash
  +DoomBounce
  BounceFactor 0.5
  RenderStyle Add
  Scale 0.04
  States
  {
  Spawn:
  Death:
    SPKG A 2 Bright A_FadeOut(0.02)
    Loop
  }
}

Actor SuperBFGExtra : BFGExtra Replaces BFGExtra
{
  +NoBlockMap
  +NoGravity
  RenderStyle Add
  +FORCERADIUSDMG
  +EXTREMEDEATH
  Alpha 0.75
  Damage 0
  States
  {
  Spawn:
    BFE2 A 0
    TNT1 AAAAA 0 A_SpawnItemEx("BFGExtraParticle", 0, 0, 14, (0.1)*Random(10, 40), 0, (0.1)*Random(-40, 40), Random(0, 360), 128)
    TNT1 AAAAA 0 A_SpawnItemEx("BFGExtraParticle", 0, 0, 14, (0.1)*Random(10, 40), 0, (0.1)*Random(-40, 40), Random(0, 360), 128)
    TNT1 AAAAA 0 A_SpawnItemEx("BFGExtraParticle", 0, 0, 14, (0.1)*Random(10, 40), 0, (0.1)*Random(-40, 40), Random(0, 360), 128)
	BFE2 AAAABBBBCCCCDDDD 2 Bright A_SpawnItem("GreenFlareMedium",0,0)
    stop
  }
}

Actor BFGExtraParticle
{
  Height 0
  Radius 0
  Mass 0
  +Missile
  +NoBlockMap
  +DontSplash
  +NoInteraction
  RenderStyle Add
  Scale 0.035
  States
  {
  Spawn:
  Death:
    SPKG A 2 Bright A_FadeOut(0.1)
    Loop
  }
}


ACTOR GreenShockWave 
{ 
   Speed 0
   Height 64 
   Radius 32
   Scale 2.25 
   RenderStyle add
   Alpha 0.9
   +DROPOFF 
   +NOBLOCKMAP 
   +NOGRAVITY 
   States 
   { 
   Spawn: 
      SHOK A 1 BRIGHT
      Goto Death 
   Death: 
      SHOK BCDEFFGGHHIIIJJJKKKLLMMNNOPQR 1 BRIGHT A_FadeOut(0.03)
      Stop 
   } 
} 

ACTOR BFGFOG
{
    Radius 1
    Height 1
	Alpha 0.7
	RenderStyle Add
	Scale 0.4
	Speed 8
	Gravity 0
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
	+MISSILE
	+FORCEXYBILLBOARD
    +CLIENTSIDEONLY
    States
    {
    Spawn:
        BFOG ABCDEF 3 BRIGHT A_SpawnItem("GreenFlareMedium",0,0)
        Goto Death
	Death:
	    BFOG G 3 BRIGHT A_SpawnItem("GreenFlareMedium",0,0)
		Stop
    }
}

ACTOR BFGBIGFOG: BFGFOG
{
	Scale 0.8
}

ACTOR SmallGreenFog: BFGFOG
{
	Speed 3
	Scale 0.5
}

Actor BFGDeathParticleSpawner
{
  +NoClip
  +NoBlockMap
  +NoGravity
  +Missile
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 AAAAA 0 A_SpawnItemEx("BFGDeathParticle", 0, 0, 0, (0.1)*Random(20, 45), 0, (0.1)*Random(-40, 40), Random(0, 360), 128)
    TNT1 AAAAA 0 A_SpawnItemEx("BFGDeathParticle", 0, 0, 0, (0.1)*Random(20, 45), 0, (0.1)*Random(-40, 40), Random(0, 360), 128)
    TNT1 AAAAA 0 A_SpawnItemEx("BFGDeathParticle", 0, 0, 0, (0.1)*Random(20, 45), 0, (0.1)*Random(-40, 40), Random(0, 360), 128)
    TNT1 AAAAA 0 A_SpawnItemEx("BFGDeathParticle", 0, 0, 0, (0.1)*Random(20, 45), 0, (0.1)*Random(-40, 40), Random(0, 360), 128)
    TNT1 A 1
    Stop
  }
}

Actor BFGSuperParticleSpawner
{
  +NoClip
  +NoBlockMap
  +NoGravity
  +Missile
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("BFGSuperParticle", 0, 0, 0, (0.1)*Random(10, 35), 0, (0.1)*Random(-20, 20), Random(0, 360), 128)
    TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("BFGSuperParticle", 0, 0, 0, (0.1)*Random(10, 35), 0, (0.1)*Random(-20, 20), Random(0, 360), 128)
    TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("BFGSuperParticle", 0, 0, 0, (0.1)*Random(10, 35), 0, (0.1)*Random(-20, 20), Random(0, 360), 128)
    TNT1 A 1
    Stop
  }
}


Actor BFGSuperParticle
{
  Height 0
  Radius 0
  Mass 0
  +Missile
  +NoBlockMap
  +NOGRAVITY
  +DontSplash
  +FORCEXYBILLBOARD
  RenderStyle Add
  Scale 0.04
  Speed 24
  States
  {
  Spawn:
  Death:
    SPKG A 2 Bright A_FadeOut(0.02)
    Loop
  }
}
