Actor BFG3500 : Weapon 2969
{
//$Category Weapons/BFG20K
//$Sprite BFC9H0
//$Title "The BFG 3500"
  Weapon.PreferredSkin "BFG9500-Marine"
  Weapon.AmmoUse 10
  Weapon.AmmoGive 40
  Weapon.AmmoType "DCell"
  Weapon.AmmoType2 "DCell"
  Weapon.UpSound "freeze/up"
  Inventory.Icon "BOG9H0"
  +INVENTORY.UNDROPPABLE
  +WEAPON.NOAUTOFIRE
  Inventory.PickupSound "misc/w_pkup2"
  Inventory.PickupMessage "the BFG 3500"
  Weapon.PreferredSkin "BFG-Marine"
  Obituary "%o was turned into a blue crisp thanks to %k's BFG 3500"
  Tag "BFG 3500"
  States
  {
  Ready:
	BFG9 A 1 A_WeaponReady
	TNT1 A 0 A_JumpIfNoAmmo("Ready2")
    TNT1 A 0 A_PlayWeaponSound("weapons/bfg15kidle")
    BFC9 BBBBB 1 A_WeaponReady
    BFC9 CCCCC 1 A_WeaponReady
    BFC9 DDDDD 1 A_WeaponReady
    BFC9 EEEEE 1 A_WeaponReady
	BFC9 FFFFF 1 A_WeaponReady
	BFC9 EEEEE 1 A_WeaponReady
	BFC9 DDDDD 1 A_WeaponReady
	BFC9 CCCCC 1 A_WeaponReady
	Loop
  Ready2:
    TNT1 A 0 A_JumpIfInventory("DCell",10,"Ready")
    BFG9 A 1 A_WeaponReady
	Loop
  Deselect:
	BFG9 A 1 A_Lower
	Loop
  Select:
	BFG9 A 1 A_Raise
	BFG9 A 1 Offset(-90,69)
	BFG9 A 1 Offset(-70,60)
	BFG9 A 1 Offset(-55,52)
	BFG9 A 1 Offset(-35,45)
	BFG9 A 1 Offset(-15,39)
	BFG9 A 1 Offset(-1,35)
SelectRaise:
	BFG9 A 1 A_Raise
	Loop
  Fire:
	BFG9 A 0 A_PlayWeaponSound("bfg3500/fire")
	BFG9 A 0 A_GunFlash
	BFG9 B 1 Bright Radius_Quake(1,2,0,1,0)
	BFG9 BBBBBB 1 Bright
	BFG9 C 1 Bright Radius_Quake(2,2,0,1,0)
	BFG9 CCCCCC 1 Bright
	BFG9 D 1 Bright Radius_Quake(4,2,0,1,0)
	BFG9 DDDDDD 1 Bright
	BFG9 E 1 Bright Radius_Quake(6,2,0,1,0)
	BFG9 EEEEEE 1 Bright
	BFG9 F 1 Bright Radius_Quake(8,2,0,1,0)
	BFG9 FFFFFF 1 Bright
	BFG9 A 0 Radius_Quake(10,4,0,1,0)
	BFG9 A 0 A_Recoil(10)	
	BFG9 A 0 Radius_Quake(10,6,0,1,0)
	TNT1 A 0 A_SetBlend("Blue", 0.03, 4)
	BFG9 G 1 Bright A_FireCustomMissile("BFG3500Ball")
	TNT1 A 1 A_PlaySound ("Weapons/dbfgcooldown2")
	BFG9 GGGHHHGG 1 Bright
	BFG9 FEDCB 2
	BFG9 A 0 A_Light0
	BFG9 A 0 Radius_Quake(3,10,0,1,0)
	BFG9 A 0 A_PlaySound("weapons/dtech10ksteam")
	BFG9 AAAAAAAAAAAA 1 A_FireCustomMissile("DTech10KSteam",-58+Random(-4,4),0,0,0)
	BFG9 A 20
	BFG9 A 3 A_Refire
	Goto Ready
  Spawn:
	BOG9 H -1
	Loop
	}
}

Actor BFG3500Ball
{
  Radius 13
  Height 8 
  Speed 25
  PROJECTILE
  Damage (1200)
  +RANDOMIZE
  +FORCERADIUSDMG
  +NODAMAGETHRUST
  +FORCEPAIN
  +NOEXTREMEDEATH
  +MTHRUSPECIES
  DamageType "DBFG"
  Species "player"
  Renderstyle Add
  Alpha 0.8
  DeathSound ""
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_PlaySoundEx("weapons/dtech10kball","Voice",1)
    BFS9 ABCD 1 Bright A_SpawnItemEx("BFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
    Loop
  Death:	
    TNT1 A 0
	TNT1 A 0 A_SetTranslucent(0.75,1)	
	TNT1 A 0 A_RadiusGive("BFG3500BallEffect",584,RGF_MONSTERS|RGF_PLAYERS,1)
	TNT1 A 0 A_Explode((500),584,0)
	TNT1 A 0 A_SpawnItemEx("BFG3500ShockWave",0,0,24,0,0,0,0,128)
	BFS9 ABCDABCDABCDABCDABCDABCDABCDABCDABCD 1 Bright A_SpawnItemEx("BFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	//TNT1 A 0 A_Explode(8,512,0)
	TNT1 A 0 A_RadiusGive("BFG3500BallEffect",584,RGF_MONSTERS|RGF_PLAYERS,1)
	TNT1 A 0 A_Explode((500),584,0)
	TNT1 A 0 A_SpawnItemEx("BFG3500ShockWave",0,0,24,0,0,0,0,128)
	BFS9 ABCDABCDABCDABCDABCDABCDABCDABCDABCD 1 Bright A_SpawnItemEx("BFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_RadiusGive("BFG3500BallEffect",584,RGF_MONSTERS|RGF_PLAYERS,1)
	TNT1 A 0 A_Explode((500),584,0)
	TNT1 A 0 A_SpawnItemEx("BFG3500ShockWave",0,0,24,0,0,0,0,128)
	BFS9 ABCDABCDABCDABCDABCDABCDABCDABCDABCD 1 Bright A_SpawnItemEx("BFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_RadiusGive("BFG3500BallEffect",584,RGF_MONSTERS|RGF_PLAYERS,1)
	TNT1 A 0 A_Explode((500),584,0)
	TNT1 A 0 A_SpawnItemEx("BFG3500ShockWave",0,0,24,0,0,0,0,128)
	BFS9 ABCDABCDABCDABCDABCDABCDABCDABCDABCD 1 Bright A_SpawnItemEx("BFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_RadiusGive("BFG3500BallEffect",584,RGF_MONSTERS|RGF_PLAYERS,1)
	TNT1 A 0 A_Explode((500),584,0)
	TNT1 A 0 A_SpawnItemEx("BFG3500ShockWave",0,0,24,0,0,0,0,128)
	BFS9 ABCDABCDABCDABCDABCDABCDABCDABCDABCD 1 Bright A_SpawnItemEx("BFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_RadiusGive("BFG3500BallEffect",584,RGF_MONSTERS|RGF_PLAYERS,1)
	TNT1 A 0 A_Explode((500),584,0)
	TNT1 A 0 A_SpawnItemEx("BFG3500ShockWave",0,0,24,0,0,0,0,128)
	BFS9 ABCDABCDABCDABCDABCDABCDABCDABCDABCD 1 Bright A_SpawnItemEx("BFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_RadiusGive("BFG3500BallEffect",584,RGF_MONSTERS|RGF_PLAYERS,1)
	TNT1 A 0 A_Explode((500),584,0)
	TNT1 A 0 A_SpawnItemEx("BFG3500ShockWave",0,0,24,0,0,0,0,128)
	BFS9 ABCDABCDABCDABCDABCDABCDABCDABCDABCD 1 Bright A_SpawnItemEx("BFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_RadiusGive("BFG3500BallEffect",584,RGF_MONSTERS|RGF_PLAYERS,1)
	TNT1 A 0 A_Explode((500),584,0)
	TNT1 A 0 A_SpawnItemEx("BFG3500ShockWave",0,0,24,0,0,0,0,128)
	BFS9 ABCDABCDABCDABCDABCDABCDABCDABCDABCD 1 Bright A_SpawnItemEx("BFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_Explode((250),584,0)
	TNT1 A 0 Radius_Quake(3,35,0,10,0)
	TNT1 A 0 A_RadiusGive("BFG3500BallEffect",584,RGF_MONSTERS|RGF_PLAYERS,1)
	TNT1 A 0 A_SpawnItemEx("BFG3500ShockWave",0,0,24,0,0,0,0,128)
	TNT1 A 0 A_StopSoundEx("Voice")
	TNT1 A 0 Radius_Quake(20,12,0,12,0)
	TNT1 A 0 A_PlaySound("bfg3500/explode")
	BFE9 A 8 Bright A_SpawnItem("BFG3500BallEx",0,-10)
	BFE9 BCD 8 Bright
    Stop 
    }
}

Actor BFG3500BallEffect : CustomInventory
{  
  +INVENTORY.QUIET
  +INVENTORY.UNDROPPABLE
  +INVENTORY.ALWAYSPICKUP
  +INVENTORY.AUTOACTIVATE       
  Inventory.Amount 1
  Inventory.MaxAmount 0
  States
  {
  PickUp:
    NULL A 1
	NULL A 1 //A_Jump(80,3)
	//NULL A 1 ACS_NamedExecuteAlways("",0,0,random(64,388),0)
    NULL A 1 A_SpawnItemEx("BFG3500Spray",0,0,36)   
	NULL A 1
    Stop
  }
}

ACTOR BFG3500Spray
{
+NOBLOCKMAP
+NOGRAVITY
+ACTIVATEPCROSS
+ACTIVATEIMPACT
+NOTELEPORT
+DROPOFF
+EXTREMEDEATH
RENDERSTYLE ADD
Radius 1
Height 1
Damage 0
Speed 0
States
{
Spawn:
   TNT1 A 0
   BSS9 A 6 Bright A_SpawnItemEx("BlueParticleSpawnerDT", 0, 0, 0, 0, 0, 0, 0, 128)
   BSS9 BCD 6 Bright 
   Stop
   }
}

ACTOR BFG3500ShockWave
{
Speed 0
Scale 1
Radius 1
Height 1
Speed 2
Damage 0
Renderstyle Translucent
Alpha 0.75
PROJECTILE
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+NOGRAVITY
+MISSILE
+FORCEXYBILLBOARD
+CLIENTSIDEONLY
+NOINTERACTION
+NOCLIP
Scale 2.5
States
{
Spawn:
SHK9 ABCDEFGHIJKLMNOPQR 2 Bright A_FadeOut(0.015)
Stop
}
}

ACTOR BFG3500BallEx
{
RenderStyle Add
Alpha 0.85
+CLIENTSIDEONLY
+NOGRAVITY
States
{
Spawn:
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_CustomMissile("Kaboom15Blue", 0, 0, random(0,360), 2, random(0,360))
Stop
}
}

ACTOR Kaboom15Blue : Kaboom
{
Speed 6
Scale 1.15
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
FXPB AABBCDEFGHIJKLM 2 Bright A_FadeOut(0.05)
Stop
}
}
