ACTOR NewBFG9500 : Weapon replaces BFG9000
{
Height 20
Scale 0.85
+WEAPON.NOAUTOFIRE
+WEAPON.NOALERT
-INVENTORY.UNDROPPABLE
Weapon.SelectionOrder 2800
Weapon.PreferredSkin "BFG9500-Marine"
Weapon.AmmoUse 40
Weapon.AmmoGive 40
Weapon.AmmoType "NewCell"
Inventory.PickupSound "weapons/bfgpickup"
Inventory.PickupMessage "BFG9500"
Weapon.SisterWeapon "PoweredBFG9500"
Obituary "%o was annihilated by %k's BFG9500."
Tag "BFG 9500"
States
	{
	Spawn:
		BF95 A -1
		Loop
	Ready:
		BFGG A 1 A_WeaponReady
		Loop
	Select:
		TNT1 A 0 A_PlayWeaponSound("weapons/bfgpickup")
	SelectLoop:
		BFGG A 1 A_Raise
		Loop
	Deselect:
		TNT1 A 0
		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")
	DeselectLoop:
		BFGG A 1 A_Lower
		Loop
	Fire:
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_JumpIfInventory("BfgUpgrade",1,"UpFire")
		TNT1 A 0 A_Light1
		BFGG A 2 Bright A_PlaySound("weapons/bfgf",CHAN_WEAPON)
		BFGC ABCDE 2 Bright Radius_Quake(2,2,0,1,0)
		BFGC FGHI 1 Bright Radius_Quake(3,2,0,1,0)
		BFGC FGHIF 1 Bright Radius_Quake(4,2,0,1,0)
		BFGC GH 1 Bright Radius_Quake(6,2,0,1,0)
		TNT1 A 0 A_Light2
		TNT1 A 0 A_GunFlash
		TNT1 A 0 Radius_Quake(12,4,0,1,0)
		DBFF A 4 Bright A_FireCustomMissile("BFG9500Ball",0,1)
		DBFF B 3 Bright
		TNT1 A 0 A_Light0
		BFGR ABCD 1
		BFGR EFG 2
		BFGG A 20 A_ReFire
		Goto Ready
	UpFire:
		TNT1 A 0 A_Light1
		BFGG A 2 Bright A_PlaySound("weapons/bfgf",CHAN_WEAPON)
		BFGC ABCDE 2 Bright Radius_Quake(2,2,0,1,0)
		BFGC FGHI 1 Bright Radius_Quake(3,2,0,1,0)
		BFGC FGHIF 1 Bright Radius_Quake(4,2,0,1,0)
		BFGC GH 1 Bright Radius_Quake(6,2,0,1,0)
		TNT1 A 0 A_Light2
		TNT1 A 0 A_GunFlash
		TNT1 A 0 Radius_Quake(12,4,0,1,0)
		DBFF A 4 Bright A_FireCustomMissile("UpBFG9500Ball",0,1)
		DBFF B 3 Bright
		TNT1 A 0 A_Light0
		BFGR ABCD 1
		BFGR EFG 2
		BFGG A 20 A_ReFire("UpFire")
		Goto Ready
	AltFire:
		TNT1 A 0 A_JumpIfInventory("BfgUpgrade",1,2)
		BFGG A 1 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
		TNT1 A 0 A_JumpIfInventory("NewCell",600,2)
		BFGG A 1 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_Light1
		BFGG A 2 Bright A_PlaySound("weapons/bfgf",CHAN_WEAPON)
		BFGC ABCDE 2 Bright Radius_Quake(2,2,0,1,0)
		BFGC FGHI 1 Bright Radius_Quake(3,2,0,1,0)
		BFGC FGHIF 1 Bright Radius_Quake(4,2,0,1,0)
		BFGC GH 1 Bright Radius_Quake(6,2,0,1,0)
		TNT1 A 0 A_Light2
		TNT1 A 0 A_GunFlash
		TNT1 A 0 Radius_Quake(12,4,0,1,0)
		TNT1 A 0 A_TakeInventory("NewCell",600)
		TNT1 A 0 A_FireCustomMissile("UpBFG9500Ball",-0.71,1)
		TNT1 A 0 A_FireCustomMissile("UpBFG9500Ball",0.71,1)
		TNT1 A 0 A_FireCustomMissile("UpBFG9500Ball",-2,1)
		TNT1 A 0 A_FireCustomMissile("UpBFG9500Ball",2,1)
		TNT1 A 0 A_FireCustomMissile("UpBFG9500Ball",-4,1)
		TNT1 A 0 A_FireCustomMissile("UpBFG9500Ball",4,1)
		TNT1 A 0 A_FireCustomMissile("UpBFG9500Ball",-6,1)
		TNT1 A 0 A_FireCustomMissile("UpBFG9500Ball",6,1)
		DBFF A 4 Bright
		DBFF B 3 Bright
		TNT1 A 0 A_Light0
		BFGR ABCD 1
		BFGR EFG 2
		BFGG A 20 A_ReFire
		Goto Ready
	Flash:
		TNT1 A 0
		Stop
	}
}

ACTOR NewBFG9500Ball : BFGBall replaces BFGBall
{
+THRUSPECIES
Species "Player"
DamageType "BFG9500Ball"
Obituary "%o was obliterated by %k's BFG9500 ball."
DeathSound "BFG9K/Explode"
States
	{
	Spawn:
		BFS3 AAABBB 1 Bright A_SpawnItemEx("BFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("BFGShockwave2",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		TNT1 AAAAAA 0 A_CustomMissile("Kaboom11",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		BFE3 AB 8 Bright A_SpawnItemEx("GreenParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		BFE3 C 8 Bright A_BFGSpray("PCustomSpray")
		BFE3 DEF 8 Bright
		Stop    
    }
}

ACTOR UpBFG9500Ball : NewBFG9500Ball
{
+FORCERADIUSDMG
DamageType ""
DamageType "UpBFG9500Ball"
States
	{
	Spawn:
		BFS3 AAABBB 1 Bright A_SpawnItemEx("BFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_Explode(damage*random(1,8),128,0,0)
		TNT1 A 0 A_SpawnItemEx("BFGShockwave2",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		TNT1 AAAAAA 0 A_CustomMissile("Kaboom11",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		BFE3 AB 8 Bright A_SpawnItemEx("GreenParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		BFE3 C 8 Bright A_BFGSpray("UpCustomSpray")
		BFE3 DEF 8 Bright
		Stop    
	}
}

ACTOR PCustomSpray
{
Height 1
Radius 1
Speed 0
RENDERSTYLE ADD
Damage 0
+DROPOFF
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+EXTREMEDEATH
+ACTIVATEPCROSS
+ACTIVATEIMPACT
+THRUSPECIES
+MTHRUSPECIES
+PUFFGETSOWNER
DamageType "BFGSplash"
States
	{
	Spawn:
		TNT1 A 0
		BFE2 A 6 Bright A_SpawnItemEx("GreenParticleSpawnerDT",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		BFE2 BCD 6 Bright 
		Stop
	}
}

ACTOR UpCustomSpray : PCustomSpray
{
DamageType ""
DamageType "UpBFGSplash"
}

Actor BfgUpgrade : inventory
{
+COUNTITEM
+INVENTORY.UNDROPPABLE
+INVENTORY.HUBPOWER
+INVENTORY.PERSISTENTPOWER
Inventory.Amount 1
Inventory.MaxAmount 1
Inventory.Pickupsound "upgrade/pickup"
Inventory.Pickupmessage "BFG9500 upgrade!"
Tag "Bfg Upgrade"
States
	{
	Spawn:
		RBUP ABCDCB 3
		Loop
	}
}