actor GEWeapon : Weapon
{
	Weapon.BobStyle InverseSmooth
	Weapon.BobSpeed 1.75
	Weapon.BobRangeX 0.5
	Weapon.BobRangeY 0.5
	Weapon.UpSound "misc/w_pkup"
	Weapon.AmmoGive1 0
	Weapon.AmmoGive2 0
}

ACTOR PP7Clip : Ammo
{
	Inventory.MaxAmount 7 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 7 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon ICONBULL
	+INVENTORY.IGNORESKILL
}

ACTOR PP7Accuracy : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 8
	-INVBAR
}

ACTOR PP7 : GEWeapon Replaces Pistol
{
	Decal BulletChip
	Weapon.SelectionOrder 1900
	Weapon.AmmoUse 1
	Weapon.AmmoType "PP7Clip"
	Weapon.AmmoType2 "9mmBullets"
	Weapon.SisterWeapon "PP7Paintball"
	Obituary "%o was capped by %k's PP7."
	+WEAPON.WIMPY_WEAPON
	//+WEAPON.ALLOW_WITH_RESPAWN_INVUL
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.NOAUTOFIRE
	Inventory.Pickupmessage "PP7"
	Radius 20
	Height 16
	Attacksound "weapons/pistol"
	States
	{
		Ready:
			PP7G A 0 A_WeaponReady
			goto ReloadCheck
			PP7G AA 1 A_WeaponReady
			PP7G A 0 A_TakeInventory("PP7Accuracy", 1)
			goto Ready+1

		ReloadCheck:
		 PP7G A 0 A_JumpIfInventory("PP7Clip",7,2)
		 PP7G A 0 A_JumpIfInventory("9mmBullets",1,"ReloadStart")
		 PP7G A 0
		 goto Ready+1

		ReloadStart:
		 PP7R A 0 A_PlayWeaponSound("WeaponReload")
		 PP7R A 0 A_TakeInventory("PP7Accuracy", 2)
		 PP7R ABCDEFG 1
		 TNT1 A 5
		 goto ReloadAmmo

		ReloadAmmo:
		 TNT1 A 0 A_TakeInventory("9mmBullets",1)
		 TNT1 A 0 A_GiveInventory("PP7Clip",1)
		 TNT1 A 0 A_JumpIfInventory("PP7Clip",7,"ReloadDone")
		 TNT1 A 0 A_JumpIfInventory("9mmBullets",1,"ReloadAmmo")
		 goto ReloadDone

		ReloadDone:
		 TNT1 A 5
		 PP7R GFEDCBA 1
		 goto Ready+1

		Deselect:
			PP7G A 1 A_Lower
			TNT1 A 0 A_Lower
			Loop
		Select:
			PP7G A 1 A_Raise
			TNT1 A 0 A_Raise
			Loop
		Fire:
			PP7G A 0 A_JumpIfNoAmmo("ReloadCheck")
			PP7G B 0 BRIGHT A_Gunflash
			PP7G B 0 A_JumpIfInventory("PP7Accuracy", 8, "FireAccuracy8")
			PP7G B 0 A_JumpIfInventory("PP7Accuracy", 7, "FireAccuracy7")
			PP7G B 0 A_JumpIfInventory("PP7Accuracy", 6, "FireAccuracy6")
			PP7G B 0 A_JumpIfInventory("PP7Accuracy", 5, "FireAccuracy5")
			PP7G B 0 A_JumpIfInventory("PP7Accuracy", 4, "FireAccuracy4")
			PP7G B 0 A_JumpIfInventory("PP7Accuracy", 3, "FireAccuracy3")
			PP7G B 0 A_JumpIfInventory("PP7Accuracy", 2, "FireAccuracy2")
			PP7G B 0 A_JumpIfInventory("PP7Accuracy", 1, "FireAccuracy1")
			goto FireAccuracy0
		FireAccuracy0:
			PP7G B 1 BRIGHT A_FireBullets (0, 0, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
			goto FireDone

		FireAccuracy1:
			PP7G B 1 BRIGHT A_FireBullets (1, 0.5, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
			goto FireDone

		FireAccuracy2:
			PP7G B 1 BRIGHT A_FireBullets (1, 1, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
			goto FireDone

		FireAccuracy3:
			PP7G B 1 BRIGHT A_FireBullets (1.5, 1, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
			goto FireDone

		FireAccuracy4:
			PP7G B 1 BRIGHT A_FireBullets (1.8, 1.5, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
			goto FireDone

		FireAccuracy5:
			PP7G B 1 BRIGHT A_FireBullets (2, 1.5, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
			goto FireDone

		FireAccuracy6:
			PP7G B 1 BRIGHT A_FireBullets (2, 2, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
			goto FireDone

		FireAccuracy7:
			PP7G B 1 BRIGHT A_FireBullets (2.5, 2, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
			goto FireDone

		FireAccuracy8:
			PP7G B 1 BRIGHT A_FireBullets (3, 3, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
			goto FireDone

		FireDone:
			PP7G B 0 BRIGHT A_FireCustomMissile ("BulletCasing", Random(-40, -50), 0, 1, 7, 0)
			PP7G CD 1
			PP7G E 1 A_WeaponReady(WRF_NOBOB)
			PP7G F 2 A_WeaponReady(WRF_NOBOB)
			PP7G G 1 A_WeaponReady(WRF_NOBOB)
			PP7G G 0 A_TakeInventory("PP7Accuracy", 1)
			PP7G G 1 A_WeaponReady(WRF_NOBOB)
			PP7G G 0 A_TakeInventory("PP7Accuracy", 1)
			PP7G A 3 A_WeaponReady
			PP7G A 0 A_ReFire
			Goto Ready+1
		AltFire:
			TNT1 A 0
			goto ReloadCheck
		Flash:
			TNT1 A 2 Bright A_Light1
			TNT1 A 0 Bright A_Light0
			stop
		Spawn:
			PIST A -1
			Stop
	}
}

actor PP7Paintball : PP7
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "PP7"
	+WEAPON.POWERED_UP
}

ACTOR AutomaticShotgunClip : Ammo
{
	Inventory.MaxAmount 5 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 5 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon "SGNSHELL"
	+INVENTORY.IGNORESKILL
}

actor AutomaticShotgun : GEWeapon Replaces SuperShotgun
{
  Decal BulletChip
  spawnid 33
  obituary "%o ate %k's load."
  radius 20
  height 16
  attacksound "weapons/sshotf"
  inventory.pickupmessage "Automatic Shotgun"
  Weapon.SisterWeapon "AutomaticShotgunPaintball"
  Weapon.UpSound "misc/w_pkup"
  weapon.selectionorder 400
  weapon.kickback 100
  Weapon.Ammotype "AutomaticShotgunClip"
  weapon.ammotype2 "ShotgunCartridges"
  weapon.ammouse 1
  Scale 0.9
  +WEAPON.AMMO_OPTIONAL
  states
  {
  Ready:
	ASHG A 0 A_WeaponReady
	goto ReloadCheck
	ASHG A 1 A_WeaponReady
	goto Ready+1

  ReloadCheck:
	 ASHG A 0 A_JumpIfInventory("AutomaticShotgunClip",5,2)
	 ASHG A 0 A_JumpIfInventory("ShotgunCartridges",1,"ReloadStart")
	 ASHG A 0
	 goto Ready+1

  ReloadStart:
	 ASHG A 0 A_PlayWeaponSound("WeaponReload")
	 ASHG A 1 Offset (0, 40)
	 ASHG A 1 Offset (0, 50)
	 ASHG A 1 Offset (0, 60)
	 ASHG A 1 Offset (0, 70)
	 ASHG A 1 Offset (0, 80)
	 ASHG A 1 Offset (0, 90)
	 ASHG A 1 Offset (0, 100)
	 TNT1 A 5
	 goto ReloadAmmo

  ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("ShotgunCartridges",1)
	 TNT1 A 0 A_GiveInventory("AutomaticShotgunClip",1)
	 TNT1 A 0 A_JumpIfInventory("AutomaticShotgunClip",5,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("ShotgunCartridges",1,"ReloadAmmo")
	 goto ReloadDone

  ReloadDone:
	 TNT1 A 5
	 ASHG A 1 Offset (0, 100)
	 ASHG A 1 Offset (0, 90)
	 ASHG A 1 Offset (0, 80)
	 ASHG A 1 Offset (0, 70)
	 ASHG A 1 Offset (0, 60)
	 ASHG A 1 Offset (0, 50)
	 ASHG A 1 Offset (0, 40)
	 goto Ready+1

  Deselect:
	ASHG A 1 A_Lower
	TNT1 A 0 A_Lower
	loop
  Select:
	ASHG A 1 A_Raise
	TNT1 A 0 A_Raise
	loop
  Fire:
	ASHG A 0 A_JumpIfNoAmmo("ReloadCheck")
	ASHG A 0 A_FireCustomMissile("ShellCasing", Random(-40, -50), 0, 2, 4, 0)
	ASHG A 0 A_FireBullets (6, 4, 5, 15, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
	ASHG A 0 A_GunFlash
	ASHG B 1
	ASHG CDEF 2
	ASHG GHI 2
	ASHG A 5
	ASHG A 2 A_ReFire
	goto Ready+1
  Altfire:
	ASHG A 0
	goto ReloadCheck
  Flash:
  	TNT1 A 0 Bright Radius_Quake(3, 2, 0, 1, 0)
  	NULL A 0 bright A_Jump(127, "Flash2")
	NULL A 2 bright A_Light2
	TNT1 A 0 bright A_Light0
	stop
  Flash2:
  	NULL B 2 bright A_Light2
  	TNT1 A 0 bright	A_Light0
  	stop
  Spawn:
	SGN2 A -1
	stop
  }
}

actor AutomaticShotgunPaintball : AutomaticShotgun
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "AutomaticShotgun"
	+WEAPON.POWERED_UP
}

ACTOR ZMGClip : Ammo
{
	Inventory.MaxAmount 32 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 32 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon ICONBULL
	+INVENTORY.IGNORESKILL
}

ACTOR ZMG : GEWeapon 5014
{
	Decal BulletChip
	Weapon.UpSound "misc/w_pkup"
	Weapon.AmmoType "ZMGClip"
	Weapon.AmmoType2 "9mmBullets"
	Weapon.AmmoUse 1
	Weapon.Selectionorder 700
	Weapon.Kickback 100
	Weapon.SisterWeapon "ZMGPaintball"
	Inventory.PickupMessage "ZMG"
	Obituary "%o was drilled by %k's ZMG"
	AttackSound "ZMGFire"
	SpawnID 214
	Radius 20
	Height 16
	+WEAPON.AMMO_OPTIONAL
	States
	{
	Spawn:
		ZMGP A -1
		Loop
  Ready:
	ZMGG A 0 A_WeaponReady
	goto ReloadCheck
	ZMGG A 1 A_WeaponReady
	goto Ready+1

  ReloadCheck:
	 ZMGG A 0 A_JumpIfInventory("ZMGClip",32,2)
	 ZMGG A 0 A_JumpIfInventory("9mmBullets",1,"ReloadStart")
	 ZMGG A 0
	 goto Ready+1

  ReloadStart:
	 ZMGR A 0 A_PlayWeaponSound("WeaponReload")
	 ZMGR ABCDEFG 1
	 TNT1 A 5
	 goto ReloadAmmo

  ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("9mmBullets",1)
	 TNT1 A 0 A_GiveInventory("ZMGClip",1)
	 TNT1 A 0 A_JumpIfInventory("ZMGClip",32,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("9mmBullets",1,"ReloadAmmo")
	 goto ReloadDone

  ReloadDone:
	 TNT1 A 5
	 ZMGR GFEDCBA 1
	 goto Ready+1
	Deselect:
		ZMGG A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Select:
		ZMGG A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Fire:
		ZMGG A 0 A_JumpIfNoAmmo("ReloadCheck")
		ZMGG A 2
		ZMGG A 0 A_GunFlash
		ZMGG B 0 A_FireCustomMissile("BulletCasing", Random(-40, -50), 0, 2, 6, 0)
		ZMGG B 1 BRIGHT A_FireBullets(5, 4, 1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		ZMGG A 0 A_ReFire
		ZMGG CDEFGHA 2
		goto Ready+1
	AltFire:
		ZMGG A 0
		goto ReloadCheck
	Flash:
		TNT1 A 2 BRIGHT A_Light1
		TNT1 A 0 BRIGHT A_Light0
		Stop
	}
}

actor ZMGPaintball : ZMG
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "ZMG"
	+WEAPON.POWERED_UP
}

ACTOR KlobbClip : Ammo
{
	Inventory.MaxAmount 20 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 20 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon ICONBULL
	+INVENTORY.IGNORESKILL
}

ACTOR Klobb : GEWeapon Replaces Chaingun
{
	Decal BulletChip
	Weapon.UpSound "misc/w_pkup"
	Game Doom
	SpawnID 28
	Weapon.SelectionOrder 700
	Weapon.AmmoUse 1
	Weapon.AmmoType "KlobbClip"
	Weapon.AmmoType2 "9mmBullets"
	Weapon.SisterWeapon "KlobbPaintball"
	Inventory.PickupMessage "Klobb"
	Obituary "%o was klobbered by %k, how humiliating."
	+WEAPON.AMMO_OPTIONAL
	States
	{
  Ready:
	KLBG A 0 A_WeaponReady
	goto ReloadCheck
	KLBG A 1 A_WeaponReady
	goto Ready+1

  ReloadCheck:
	 KLBG A 0 A_JumpIfInventory("KlobbClip",20,2)
	 KLBG A 0 A_JumpIfInventory("9mmBullets",1,"ReloadStart")
	 KLBG A 0
	 goto Ready+1

  ReloadStart:
	 KLBR A 0 A_PlayWeaponSound("WeaponReload")
	 KLBR ABCDEFG 1
	 TNT1 A 5
	 goto ReloadAmmo

  ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("9mmBullets",1)
	 TNT1 A 0 A_GiveInventory("KlobbClip",1)
	 TNT1 A 0 A_JumpIfInventory("KlobbClip",20,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("9mmBullets",1,"ReloadAmmo")
	 goto ReloadDone

  ReloadDone:
	 TNT1 A 5
	 KLBR GFEDCBA 1
	 goto Ready+1
	Deselect:
		KLBG A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Select:
		KLBG A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Fire:
		KLBG B 0 A_JumpIfNoAmmo("ReloadCheck")
		KLBG B 0 BRIGHT A_PlaySound("weapons/chngun", CHAN_WEAPON)
		KLBG B 0 BRIGHT A_GunFlash
		KLBG B 0 BRIGHT A_FireCustomMissile("BulletCasing", Random(-40, -50), 0, 2, 6, 0)
		KLBG B 1 BRIGHT A_FireBullets(5, 3, -1, 7, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		KLBG A 2
		KLBG A 0 A_ReFire("Fire2")
		goto Ready+1
	Fire2:
		KLBG B 0 A_JumpIfNoAmmo("ReloadCheck")
		KLBG B 0 BRIGHT A_GunFlash
		KLBG B 0 BRIGHT A_FireCustomMissile("BulletCasing", Random(-40, -50), 0, 2, 6, 0)
		KLBG B 1 BRIGHT A_FireBullets(5, 3, -1, 7, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		KLBG A 2
		CHGG B 0 A_ReFire("Fire")
		Goto Ready+1
	AltFire:
		KLBG A 0
		goto ReloadCheck
	Flash:
		TNT1 A 2 Bright A_Light1
		TNT1 A 0 Bright A_Light0
		stop
	Spawn:
		MGUN A -1
		Stop
	}
}

actor KlobbPaintball : Klobb
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "Klobb"
	+WEAPON.POWERED_UP
}

ACTOR KF7SovietClip : Ammo
{
	Inventory.MaxAmount 30 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 30 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon "POINTBUL"
	+INVENTORY.IGNORESKILL
}

actor KF7Soviet : GEWeapon 18212
{
  Obituary "%o was riddled by %k's KF7 Soviet."
  Weapon.Ammotype1 "KF7SovietClip"
  Weapon.Ammotype2 "PointedBullets"
  Decal BulletChip
  Weapon.UpSound "misc/w_pkup"
  Inventory.Pickupmessage "KF7 Soviet"
  AttackSound "KF7Fire"
  Weapon.Selectionorder 650
  Weapon.AmmoUse1 1
  Weapon.SisterWeapon "KF7SovietPaintball"
  -WEAPON.NOAUTOFIRE
  +WEAPON.AMMO_OPTIONAL
  States
  {
  Ready:
	KF7S A 0 A_WeaponReady
	goto ReloadCheck
	KF7S A 1 A_WeaponReady
	goto Ready+1

  ReloadCheck:
	 KF7S A 0 A_JumpIfInventory("KF7SovietClip",30,2)
	 KF7S A 0 A_JumpIfInventory("PointedBullets",1,"ReloadStart")
	 KF7S A 0
	 goto Ready+1
	 
	ReloadStart:
	 KF7S A 0 A_PlayWeaponSound("WeaponReload")
	 KF7S A 1 Offset (0, 40)
	 KF7S A 1 Offset (0, 50)
	 KF7S A 1 Offset (0, 60)
	 KF7S A 1 Offset (0, 70)
	 KF7S A 1 Offset (0, 80)
	 KF7S A 1 Offset (0, 90)
	 KF7S A 1 Offset (0, 100)
	 TNT1 A 5
	 goto ReloadAmmo

	ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("PointedBullets",1)
	 TNT1 A 0 A_GiveInventory("KF7SovietClip",1)
	 TNT1 A 0 A_JumpIfInventory("KF7SovietClip",30,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("PointedBullets",1,"ReloadAmmo")
	 goto ReloadDone

	ReloadDone:
	 TNT1 A 5
	 KF7S A 1 Offset (0, 100)
	 KF7S A 1 Offset (0, 90)
	 KF7S A 1 Offset (0, 80)
	 KF7S A 1 Offset (0, 70)
	 KF7S A 1 Offset (0, 60)
	 KF7S A 1 Offset (0, 50)
	 KF7S A 1 Offset (0, 40)
	 goto Ready+1

	Deselect:
		KF7S A 1 A_Lower
		TNT1 A 0 A_Lower
		loop
	Select:
		KF7S A 1 A_Raise
		TNT1 A 0 A_Raise
		loop
	Hold: // Intentional Fall-Through
	Fire:
		KF7S A 0 A_JumpIfNoAmmo("ReloadCheck")
		KF7S B 0 BRIGHT A_GunFlash("Flash")
		KF7S B 1 BRIGHT A_FireBullets(4, 2, 1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		KF7S A 0 A_FireCustomMissile("PointedBulletCasing", Random(-40, -50), 0, 3, 6, 0)
		KF7S A 2 A_JumpIfNoAmmo("ReloadCheck")
		KF7S B 0 BRIGHT A_GunFlash("Flash2")
		KF7S B 2 BRIGHT A_FireBullets(4, 2, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		KF7S A 0 A_FireCustomMissile("PointedBulletCasing", Random(-40, -50), 0, 3, 6, 0)
		KF7S A 2 A_JumpIfNoAmmo("ReloadCheck")
		KF7S B 0 BRIGHT A_GunFlash("Flash")
		KF7S B 1 BRIGHT A_FireBullets(4, 2, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		KF7S A 0 A_FireCustomMissile("PointedBulletCasing", Random(-40, -50), 0, 3, 6, 0)
		KF7S A 2 A_JumpIfNoAmmo("ReloadCheck")
		KF7S A 0 A_Refire
		KF7S CDE 3
		goto Ready+1
	AltFire:
		KF7S A 0
		goto ReloadCheck
	Flash:
		NULL A 2 bright A_Light2
		TNT1 A 0 bright A_Light0
		stop
	Flash2:
		NULL B 2 bright A_Light2
		TNT1 A 0 bright	A_Light0
		stop
	Spawn:
		KF7P A -1
		stop
  }
}

actor KF7SovietPaintball : KF7Soviet
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "KF7Soviet"
	+WEAPON.POWERED_UP
}

ACTOR GoldenGunClip : Ammo
{
	Inventory.MaxAmount 1
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 1
	Inventory.Icon "GBULLET"
}

ACTOR GoldenGun : GEWeapon Replaces BFG9000
{
	Decal BulletChip
	Weapon.UpSound "misc/w_pkup"
	Game Doom
	Height 20
	SpawnID 31
	Weapon.SelectionOrder 2800
	Weapon.AmmoUse 1
	Weapon.AmmoType "GoldenGunClip"
	Weapon.AmmoType2 "GoldenBullet"
	Weapon.SisterWeapon "GoldenGunPaintball"
	+WEAPON.BFG
	+WEAPON.NOLMS
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.NOAUTOAIM
	+INVENTORY.IGNORESKILL
	Obituary "%k put a golden bullet into %o's skull."
	Inventory.PickupMessage "Golden Gun"
	AttackSound "GoldenGunFire"
	States
	{
	Ready:
	 GOLD A 0 A_WeaponReady
	 goto ReloadCheck
	 GOLD A 1 A_WeaponReady
	 goto Ready+1

	ReloadCheck:
	 GOLD A 0 A_JumpIfInventory("GoldenGunClip",1,2)
	 GOLD A 0 A_JumpIfInventory("GoldenBullet",1,"ReloadStart")
	 GOLD A 0
	 goto Ready+1

	ReloadStart:
	 GOLR A 0 A_PlayWeaponSound("WeaponReload")
	 GOLR ABCDEFG 1
	 TNT1 A 5
	 goto ReloadAmmo

	ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("GoldenBullet",1)
	 TNT1 A 0 A_GiveInventory("GoldenGunClip",1)
	 TNT1 A 0 A_JumpIfInventory("GoldenGunClip",1,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("GoldenBullet",1,"ReloadAmmo")
	 goto ReloadDone

	ReloadDone:
	 TNT1 A 5
	 GOLR GFEDCBA 1
	 GOLD A 3
	 goto Ready+1

	Deselect:
		GOLD A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Select:
		GOLD A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Fire:
		GOLD A 0 A_JumpIfNoAmmo("ReloadCheck")
		GOLD A 0 A_GunFlash
		GOLD A 0 BRIGHT A_FireBullets(1, 1, -1, 150, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		GOLD B 0 BRIGHT A_SetAngle(angle-frandom(2.0, 4.0))
		GOLD B 1 BRIGHT A_SetPitch(pitch-2.0)
		GOLD CDEF 2
		GOLD A 15
		GOLD A 0 A_Refire
		Goto Ready
	AltFire:
	  GOLD A 0
	  goto ReloadCheck
	Flash:
		TNT1 A 2 Bright A_Light1
		TNT1 A 0 Bright A_Light0
		stop
	Spawn:
		BFUG A -1
		Stop
	}
}

actor GoldenGunPaintball : GoldenGun
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "GoldenGun"
	+WEAPON.POWERED_UP
}

ACTOR GE64ShotgunClip : Ammo
{
	Inventory.MaxAmount 5 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 5 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon "SGNSHELL"
	+INVENTORY.IGNORESKILL
}

actor GE64Shotgun : GEWeapon Replaces Shotgun
{
  Decal BulletChip
  Weapon.UpSound "misc/w_pkup"
  spawnid 27
  obituary "%o chewed on %k's boomstick."
  radius 20
  height 16
  attacksound "weapons/shotgf"
  inventory.pickupmessage "Shotgun"
  weapon.selectionorder 1300
  weapon.kickback 100
  Weapon.Ammotype "GE64ShotgunClip"
  weapon.ammotype2 "ShotgunCartridges"
  weapon.ammouse 1
  Weapon.SisterWeapon "GE64ShotgunPaintball"
  Scale 0.9
  +WEAPON.AMMO_OPTIONAL
  states
  {
  Ready:
	SHTG A 0 A_WeaponReady
	goto ReloadCheck
	SHTG A 1 A_WeaponReady
	goto Ready+1

  ReloadCheck:
	 SHTG A 0 A_JumpIfInventory("GE64ShotgunClip",5,2)
	 SHTG A 0 A_JumpIfInventory("ShotgunCartridges",1,"ReloadStart")
	 SHTG A 0
	 goto Ready+1

  ReloadStart:
	 SHTR A 0 A_PlayWeaponSound("WeaponReload")
	 SHTR ABCDEFG 1
	 TNT1 A 5
	 goto ReloadAmmo

  ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("ShotgunCartridges",1)
	 TNT1 A 0 A_GiveInventory("GE64ShotgunClip",1)
	 TNT1 A 0 A_JumpIfInventory("GE64ShotgunClip",5,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("ShotgunCartridges",1,"ReloadAmmo")
	 goto ReloadDone

  ReloadDone:
	 TNT1 A 5
	 SHTR GFEDCBA 1
	 goto Ready+1

  Deselect:
	SHTG A 1 A_Lower
	TNT1 A 0 A_Lower
	loop
  Select:
	SHTG A 1 A_Raise
	TNT1 A 0 A_Raise
	loop
  Fire:
	SHTG A 0 A_JumpIfNoAmmo("ReloadCheck")
	SHTG A 0 A_FireCustomMissile("ShellCasing", Random(-40, -50), 0, 2, 6, 0)
	SHTG A 0 A_FireBullets (5, 4, 5, 10, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
	SHTG B 1 A_GunFlash
	SHTG CDEF 2
	SHTG GHI 2
	SHTG A 5
	SHTG A 2 A_ReFire
	goto Ready+1
  Altfire:
	SHTG A 0
	goto ReloadCheck
  Flash:
    TNT1 A 0 Bright Radius_Quake(2, 2, 0, 1, 0)
	TNT1 A 2 bright A_Light2
	TNT1 A 0 bright A_Light0
	stop
  Spawn:
	SHOT A -1
	stop
  }
}

actor GE64ShotgunPaintball : GE64Shotgun
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "GE64Shotgun"
	+WEAPON.POWERED_UP
}

ACTOR GE64RocketLauncherClip : Ammo
{
	Inventory.MaxAmount 1
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 1
	Inventory.Icon "ROCKET"
}

ACTOR GE64RocketLauncher : GEWeapon Replaces RocketLauncher
{
	Game Doom
	Weapon.UpSound "misc/w_pkup"
	SpawnID 29
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoType "GE64RocketLauncherClip"
	Weapon.AmmoType2 "Rockets"
	+WEAPON.NOAUTOFIRE
	+WEAPON.AMMO_OPTIONAL
	Inventory.PickupMessage "Rocket Launcher"
	States
	{
  Ready:
	RLAU A 0 A_WeaponReady
	goto ReloadCheck
	RLAU A 1 A_WeaponReady
	RLAU A 0 A_JumpIfNoAmmo("EmptyReady")
	goto Ready+1

  EmptyReady:
	RLAU C 0 A_JumpIfInventory("GE64RocketLauncherClip",1,3)
	RLAU C 1 A_WeaponReady
	RLAU C 0 A_JumpIfInventory("GE64RocketLauncherClip",1,1)
	loop
	RLAU C 0
	goto Ready+1

  ReloadCheck:
	 RLAU C 0 A_JumpIfInventory("GE64RocketLauncherClip",1,2)
	 RLAU C 0 A_JumpIfInventory("Rockets",1,"ReloadStart")
	 RLAU C 0
	 goto EmptyReady//+1

  ReloadStart:
	 RLR1 A 0 A_PlayWeaponSound("WeaponReload")
	 RLR1 ABCDEFG 1
	 TNT1 A 5
	 goto ReloadAmmo

  ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("Rockets",1)
	 TNT1 A 0 A_GiveInventory("GE64RocketLauncherClip",1)
	 TNT1 A 0 A_JumpIfInventory("GE64RocketLauncherClip",1,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("Rockets",1,"ReloadAmmo")
	 goto ReloadDone

  ReloadDone:
	 TNT1 A 5
	 RLR2 GFEDCBA 1
	 goto Ready+1

	Deselect:
		RLAU A 0 A_JumpIfInventory("GE64RocketLauncherClip",1,2)
		RLAU C 1 A_Lower
		Loop
		RLAU A 1 A_Lower
		goto Deselect+2
	Select:
		RLAU A 0 A_JumpIfInventory("GE64RocketLauncherClip",1,2)
		RLAU C 1 A_Raise
		Loop
		RLAU A 1 A_Raise
		goto Select+2
	Fire:
		RLAU A 0 A_JumpIfNoAmmo("ReloadCheck")
		RLAU B 0 A_GunFlash
		RLAU B 3 A_FireCustomMissile("GE64Rocket", 0, 1, 4, 6, 0)
		RLAU C 16
		RLAU C 0 A_ReFire
		Goto ReloadCheck
	AltFire:
		RLAU C 0
		RLAU C 0 A_JumpIfInventory("GE64RocketLauncherClip",1,1)
		goto ReloadCheck
		RLAU C 0
		goto Ready+1
	Flash:
		TNT1 A 0 Bright Radius_Quake(1, 4, 0, 1, 0)
		TNT1 A 2 Bright A_Light2
		TNT1 A 1 Bright A_Light1
		TNT1 A 0 Bright A_Light0
		stop
	Spawn:
		LAUN A -1
		Stop
	}
}

ACTOR MoonrakerLaser : GEWeapon Replaces PlasmaRifle
{
	Game Doom
	SpawnID 30
	Weapon.UpSound "LaserUp"
	Weapon.SelectionOrder 100
	Weapon.AmmoUse 0
	Weapon.AmmoType "None"
	+WEAPON.NOAUTOFIRE
	Inventory.PickupMessage "Moonraker Laser"
	States
	{
	Ready:
		MOON A 1 A_WeaponReady
		Loop
	Deselect:
		MOON A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Select:
		MOON A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Fire:
		MOON B 0 BRIGHT A_PlaySoundEx("weapons/plasmaf", "Auto", 0)
		MOON B 0 BRIGHT A_GunFlash
		MOON B 1 BRIGHT A_FireCustomMissile("LaserBeam", 0, 1, 7, 1, 0)
		MOON A 4
		MOON AAA 2 A_WeaponReady(WRF_NOBOB)
		MOON A 0 A_Refire
		Goto Ready
	Flash:
		NULL A 0 BRIGHT A_Jump(127, "Flash1", "Flash2")
		NULL A 2 BRIGHT A_Light1
		TNT1 A 0 Bright A_Light0
		stop
	Flash1:
		NULL B 2 BRIGHT A_Light1
		TNT1 A 0 Bright A_Light0
		stop
	Flash2:
		NULL C 2 BRIGHT A_Light1
		TNT1 A 0 Bright A_Light0
		stop
	Spawn:
		PLAS A -1
		Stop
	}
}

ACTOR CougarMagnumClip : Ammo
{
	Inventory.MaxAmount 6
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 6
	Inventory.Icon "MAGNUM"
	+INVENTORY.IGNORESKILL
}

ACTOR CougarMagnum : GEWeapon
{
	Decal BulletChip
	Weapon.UpSound "misc/w_pkup"
	SpawnID 164
	Radius 20
	Height 16
	Weapon.Selectionorder 100
	Weapon.AmmoUse1 1
	Weapon.AmmoType1 "CougarMagnumClip"
	Weapon.AmmoType2 "MagnumBullets"
	Weapon.SisterWeapon "CougarMagnumPaintball"
	Inventory.Pickupmessage "Cougar Magnum"
	Obituary "%o bit %k's silver bullet."
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.NOAUTOAIM
	+WEAPON.NOAUTOFIRE
	States
	{
	Ready:
		COUG A 0 A_WeaponReady
		goto ReloadCheck
		COUG A 1 A_WeaponReady
		goto Ready+1

  ReloadCheck:
	 COUG A 0 A_JumpIfInventory("CougarMagnumClip",6,2)
	 COUG A 0 A_JumpIfInventory("MagnumBullets",1,"ReloadStart")
	 COUG A 0
	 goto Ready+1

  ReloadStart:
	 COUR A 0 A_PlayWeaponSound("WeaponReload")
	 COUR ABCDEFG 1
	 TNT1 A 5
	 goto ReloadAmmo

  ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("MagnumBullets",1)
	 TNT1 A 0 A_GiveInventory("CougarMagnumClip",1)
	 TNT1 A 0 A_JumpIfInventory("CougarMagnumClip",6,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("MagnumBullets",1,"ReloadAmmo")
	 goto ReloadDone

  ReloadDone:
	 TNT1 A 5
	 COUR GFEDCBA 1
	 goto Ready+1

	Deselect:
		COUG A 1 A_Lower
		TNT1 A 0 A_Lower
		loop
	Select:
		COUG A 1 A_Raise
		TNT1 A 0 A_Raise
		loop
	Fire:
		COUG A 0 A_JumpIfNoAmmo("ReloadCheck")
		COUG BC 3
		COUG D 0 A_GunFlash
		COUG D 0 A_FireBullets(0, 0, 1, 0, "BulletPuff")
		COUG D 1 BRIGHT A_RailAttack(50, 0, 0, none, none, 0, 0 , "BulletSpark")
		COUG EFGHI 2
		COUG J 2 A_WeaponReady(WRF_NOBOB)
		COUG A 5 A_WeaponReady(WRF_NOBOB)
		COUG A 0 A_ReFire
		goto Ready+1
	AltFire:
		COUG A 0
		goto ReloadCheck
	Flash:
		TNT1 A 0 Radius_Quake(1, 2, 0, 1, 0)
		TNT1 A 2 bright A_Light1
		TNT1 A 1 bright A_Light2
		TNT1 A 0 bright A_Light0
		stop
	Spawn:
		RAIL A -1
		stop
	}
}

actor CougarMagnumPaintball : CougarMagnum
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "CougarMagnum"
	+WEAPON.POWERED_UP
}

ACTOR SniperRifleClip : Ammo
{
	Inventory.MaxAmount 8 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 8 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon "POINTBUL"
	+INVENTORY.IGNORESKILL
}

ACTOR SniperRifle : GEWeapon
{
	Decal BulletChip
	Weapon.UpSound "misc/w_pkup"
	Weapon.SelectionOrder 2000
	Weapon.AmmoUse 1
	Weapon.AmmoType "SniperRifleClip"
	Weapon.AmmoType2 "PointedBullets"
	Weapon.SisterWeapon "SniperRiflePaintball"
	Obituary "%o was sniped by %k."
	+WEAPON.WIMPY_WEAPON
	//+WEAPON.ALLOW_WITH_RESPAWN_INVUL
	+WEAPON.AMMO_OPTIONAL
	Inventory.Pickupmessage "Sniper Rifle"
	Radius 20
	Height 16
	Attacksound "SniperFire"
	States
	{
	Ready:
	 SNIP A 0 A_WeaponReady
	 goto ReloadCheck
	 SNIP A 1 A_WeaponReady
	 goto Ready+1

	ReloadCheck:
	 SNIP A 0 A_JumpIfInventory("SniperRifleClip",8,2)
	 SNIP A 0 A_JumpIfInventory("PointedBullets",1,"ReloadStart")
	 SNIP A 0
	 goto Ready+1

	ReloadStart:
	 SNIR A 0 A_PlayWeaponSound("WeaponReload")
	 SNIR ABCDEFG 1
	 TNT1 A 5
	 goto ReloadAmmo

	ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("PointedBullets",1)
	 TNT1 A 0 A_GiveInventory("SniperRifleClip",1)
	 TNT1 A 0 A_JumpIfInventory("SniperRifleClip",8,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("PointedBullets",1,"ReloadAmmo")
	 goto ReloadDone

	ReloadDone:
	 TNT1 A 5
	 SNIR GFEDCBA 1
	 goto Ready+1

	Deselect:
		SNIP A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Select:
		SNIP A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Fire:
		SNIP B 0 A_JumpIfNoAmmo("ReloadCheck")
		SNIP B 1 BRIGHT A_FireBullets(0, 0, 1, 25, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		SNIP A 12 A_FireCustomMissile("PointedBulletCasing", Random(-40, -50), 0, 3, 6, 0)
		SNIP A 1 A_ReFire
		Goto Ready+1
	AltFire:
		TNT1 A 0
		goto ReloadCheck
	Spawn:
		SNPR A -1
		Stop
	}
}

actor SniperRiflePaintball : SniperRifle
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "SniperRifle"
	+WEAPON.POWERED_UP
}

ACTOR GE64GrenadeLauncherClip : Ammo
{
Inventory.MaxAmount 6 // size of the clip
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 6 //MUST be the same as Inventory.MaxAmmount
Inventory.Icon "GRENADE"
+INVENTORY.IGNORESKILL
}

actor GE64GrenadeLauncher : GEWeapon
{
  Weapon.AmmoType "GE64GrenadeLauncherClip"
  Weapon.AmmoType2 "GrenadeRounds"
  Weapon.AmmoUse1 1
  Weapon.AmmoUse2 0
  Inventory.Pickupmessage "Grenade Launcher"
  Weapon.UpSound "misc/w_pkup"
  Obituary "%o was blown to smithereens by %k's grenade launcher."
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.EXPLOSIVE
  +WEAPON.NOAUTOAIM
  States
  {
	Ready:
	GLAU A 0 A_WeaponReady
	goto ReloadCheck
	GLAU A 1 A_WeaponReady
	goto Ready+1

  ReloadCheck:
	 GLAU A 0 A_JumpIfInventory("GE64GrenadeLauncherClip",6,2)
	 GLAU A 0 A_JumpIfInventory("GrenadeRounds",1,"ReloadStart")
	 GLAU A 0
	 goto Ready+1

  ReloadStart:
	 GLAR A 0 A_PlayWeaponSound("WeaponReload")
	 GLAR ABCDEFG 1
	 TNT1 A 5
	 goto ReloadAmmo

  ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("GrenadeRounds",1)
	 TNT1 A 0 A_GiveInventory("GE64GrenadeLauncherClip",1)
	 TNT1 A 0 A_JumpIfInventory("GE64GrenadeLauncherClip",6,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("GrenadeRounds",1,"ReloadAmmo")
	 goto ReloadDone

  ReloadDone:
	 TNT1 A 5
	 GLAR GFEDCBA 1
	 goto Ready+1

	Deselect:
		GLAU A 1 A_Lower
		TNT1 A 0 A_Lower
		loop
	Select:
		GLAU A 1 A_Raise
		TNT1 A 0 A_Raise
		loop
	Hold: // Intentional Fall-Through
	Fire:
		GLAU A 0 A_JumpIfNoAmmo("ReloadCheck")
		GLAU B 4
		GLAU C 0 A_PlayWeaponSound("weapons/grenlf")
		GLAU C 0 A_GunFlash
		GLAU C 1 Bright A_FireCustomMissile("Grenade", 0, true, 1, 9, 0, 4)
		GLAU DEFGHI 2
		GLAU A 9
		GLAU A 0 A_ReFire
		goto Ready+1
	AltFire:
		GLAU A 0
		goto ReloadCheck
	Flash:
		TNT1 A 0 Bright Radius_Quake(1, 3, 0, 1, 0)
		TNT1 A 2 bright A_Light1
		TNT1 A 1 bright A_Light2
		TNT1 A 0 bright A_Light0
		stop
	Spawn:
		GRLN A -1
		stop
  }
}

ACTOR RCP90Clip : Ammo
{
	Inventory.MaxAmount 80 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 80 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon ICONBULL
	+INVENTORY.IGNORESKILL
}

actor RCP90 : GEWeapon
{
  Obituary "%o was ripped apart by %k's RC-P90."
  Weapon.Ammotype1 "RCP90Clip"
  Weapon.Ammotype2 "9mmBullets"
  Decal BulletChip
  Weapon.UpSound "misc/w_pkup"
  Weapon.ReadySound ""
  Inventory.Pickupmessage "RC-P90"
  AttackSound "RCP90Fire"
  Weapon.Selectionorder 2
  Weapon.AmmoUse1 1
  Weapon.SisterWeapon "RCP90Paintball"
  -WEAPON.NOAUTOFIRE
  -WEAPON.NOLMS
  +WEAPON.BFG
  +WEAPON.AMMO_OPTIONAL
  States
  {
  Ready:
	RCP9 A 0 A_WeaponReady
	goto ReloadCheck
	RCP9 A 1 A_WeaponReady
	goto Ready+1

  ReloadCheck:
	 RCP9 A 0 A_JumpIfInventory("RCP90Clip",80,2)
	 RCP9 A 0 A_JumpIfInventory("9mmBullets",1,"ReloadStart")
	 RCP9 A 0
	 goto Ready+1

  ReloadStart:
	 RCPR A 0 A_PlayWeaponSound("WeaponReload")
	 RCPR ABCDEFG 1
	 TNT1 A 5
	 goto ReloadAmmo

  ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("9mmBullets",1)
	 TNT1 A 0 A_GiveInventory("RCP90Clip",1)
	 TNT1 A 0 A_JumpIfInventory("RCP90Clip",80,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("9mmBullets",1,"ReloadAmmo")
	 goto ReloadDone

  ReloadDone:
	 TNT1 A 5
	 RCPR GFEDCBA 1
	 goto Ready+1

	Deselect:
		RCP9 A 1 A_Lower
		TNT1 A 0 A_Lower
		loop
	Select:
		RCP9 A 1 A_Raise
		TNT1 A 0 A_Raise
		loop
	Hold: // Intentional Fall-Through
	Fire:
		RCP9 A 0 A_JumpIfNoAmmo("ReloadCheck")
		RCP9 A 1
		RCP9 A 0 A_GunFlash
		RCP9 B 1 BRIGHT A_FireBullets(4, 3, 1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		RCP9 D 0 A_FireCustomMissile("BulletCasing", Random(-40, -50), 0, 1, 6, 0)
		RCP9 D 0 A_Refire("Fire2")
		goto FireEnd
	Fire2:
		RCP9 A 0 A_JumpIfNoAmmo("ReloadCheck")
		RCP9 A 1
		RCP9 A 0 A_GunFlash
		RCP9 C 1 BRIGHT A_FireBullets(3, 3, 1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		RCP9 D 0 A_FireCustomMissile("BulletCasing", Random(-40, -50), 0, 1, 6, 0)
		RCP9 D 0 A_Refire("Fire")
		goto FireEnd
	FireEnd:
		RCP9 D 1
		RCP9 EFG 3
		goto Ready+1
	AltFire:
		RCP9 A 0
		goto ReloadCheck
	Flash:
		TNT1 A 2 bright A_Light1
		TNT1 A 1 bright A_Light2
		TNT1 A 0 bright A_Light0
		stop
	Spawn:
		RCPP A -1
		stop
  }
}

actor RCP90Paintball : RCP90
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "RCP90"
	+WEAPON.POWERED_UP
}

ACTOR PistolAccuracy : Inventory
{
   Inventory.Amount 1
   Inventory.MaxAmount 8
   -INVBAR
}

ACTOR DD44Clip : Ammo
{
	Inventory.MaxAmount 8 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 8 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon ICONBULL
	+INVENTORY.IGNORESKILL
}

actor DD44 : GEWeapon
{
	Decal BulletChip
	obituary "%o was pistol-raped by %k."
	attacksound "DD44Fire"
	Inventory.PickupSound "misc/w_pkup"
	Inventory.PickupMessage "DD44 Dostovei"
	Weapon.UpSound "misc/w_pkup"
	Weapon.AmmoType1 "DD44Clip"
	Weapon.AmmoType2 "9mmBullets"
	Weapon.AmmoUse1 1
	Weapon.SisterWeapon "DD44Paintball"
	weapon.selectionorder 2900
	+WEAPON.WIMPY_WEAPON
	+WEAPON.NOAUTOFIRE
	+WEAPON.AMMO_OPTIONAL
	states
	{
		Ready:
			DD44 A 0 A_WeaponReady
			goto ReloadCheck
			DD44 AA 1 A_WeaponReady
			DD44 A 0 A_TakeInventory("PistolAccuracy", 1)
			goto Ready+1
		Deselect:
			DD44 A 1 A_Lower
			DD44 A 0 A_Lower
			DD44 A 0 A_TakeInventory("PistolAccuracy", 100)
			loop
		Select:
			DD44 A 1 A_Raise
			DD44 A 0 A_Raise
			loop


		ReloadCheck:
			DD44 A 0 A_JumpIfInventory("DD44Clip",8,2)
			DD44 A 0 A_JumpIfInventory("9mmBullets",1,"ReloadStart")
			DD44 A 0
			goto Ready+1

		ReloadStart:
			DD4R A 0 A_PlayWeaponSound("WeaponReload")
			DD4R A 0 A_TakeInventory("PistolAccuracy", 2)
			DD4R ABCDEFG 1
			TNT1 A 5
			goto ReloadAmmo

		ReloadAmmo:
			TNT1 A 0 A_TakeInventory("9mmBullets",1)
			TNT1 A 0 A_GiveInventory("DD44Clip",1)
			TNT1 A 0 A_JumpIfInventory("DD44Clip",8,"ReloadDone")
			TNT1 A 0 A_JumpIfInventory("9mmBullets",1,"ReloadAmmo")
			goto ReloadDone

		ReloadDone:
			TNT1 A 5
			DD4R GFEDCBA 1
			goto Ready+1

		Fire:
			DD44 A 0 A_JumpIfNoAmmo("ReloadCheck")
			DD44 B 0 BRIGHT A_Gunflash
			DD44 B 0 A_JumpIfInventory("PistolAccuracy", 8, "FireAccuracy8")
			DD44 B 0 A_JumpIfInventory("PistolAccuracy", 7, "FireAccuracy7")
			DD44 B 0 A_JumpIfInventory("PistolAccuracy", 6, "FireAccuracy6")
			DD44 B 0 A_JumpIfInventory("PistolAccuracy", 5, "FireAccuracy5")
			DD44 B 0 A_JumpIfInventory("PistolAccuracy", 4, "FireAccuracy4")
			DD44 B 0 A_JumpIfInventory("PistolAccuracy", 3, "FireAccuracy3")
			DD44 B 0 A_JumpIfInventory("PistolAccuracy", 2, "FireAccuracy2")
			DD44 B 0 A_JumpIfInventory("PistolAccuracy", 1, "FireAccuracy1")
			goto FireAccuracy0

		FireAccuracy0:
			DD44 B 1 BRIGHT A_FireBullets (1, 0, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			DD44 B 0 A_GiveInventory("PistolAccuracy", 1)
			goto FireDone

		FireAccuracy1:
			DD44 B 1 BRIGHT A_FireBullets (1, 1.2, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			DD44 B 0 A_GiveInventory("PistolAccuracy", 1)
			goto FireDone

		FireAccuracy2:
			DD44 B 1 BRIGHT A_FireBullets (2, 1.5, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			DD44 B 0 A_GiveInventory("PistolAccuracy", 1)
			goto FireDone

		FireAccuracy3:
			DD44 B 1 BRIGHT A_FireBullets (2, 2, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			DD44 B 0 A_GiveInventory("PistolAccuracy", 1)
			goto FireDone

		FireAccuracy4:
			DD44 B 1 BRIGHT A_FireBullets (2, 2.2, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			DD44 B 0 A_GiveInventory("PistolAccuracy", 1)
			goto FireDone

		FireAccuracy5:
			DD44 B 1 BRIGHT A_FireBullets (2, 2.5, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			DD44 B 0 A_GiveInventory("PistolAccuracy", 1)
			goto FireDone

		FireAccuracy6:
			DD44 B 1 BRIGHT A_FireBullets (3, 3, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			DD44 B 0 A_GiveInventory("PistolAccuracy", 1)
			goto FireDone

		FireAccuracy7:
			DD44 B 1 BRIGHT A_FireBullets (3, 3.2, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			DD44 B 0 A_GiveInventory("PistolAccuracy", 1)
			goto FireDone

		FireAccuracy8:
			DD44 B 1 BRIGHT A_FireBullets (3, 3.5, -1, 12, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
			DD44 B 0 A_GiveInventory("PistolAccuracy", 1)
			goto FireDone

		FireDone:
			DD44 B 0 A_FireCustomMissile ("BulletCasing", Random(-40, -50), 0, 1, 7, 0)
			DD44 C 2 BRIGHT
			DD44 D 2 A_WeaponReady(WRF_NOBOB)
			DD44 E 2 A_WeaponReady(WRF_NOBOB)
			DD44 F 2 A_WeaponReady(WRF_NOBOB)
			DD4R A 0 A_TakeInventory("PistolAccuracy", 2)
			DD44 G 2 A_WeaponReady(WRF_NOBOB)
			DD44 A 2 A_WeaponReady
			DD44 A 0 A_Refire
			goto Ready+1

		Altfire:
			DD44 A 0
			goto ReloadCheck

		Flash:
			TNT1 A 2 bright A_Light1
			TNT1 A 0 bright A_Light0
			stop

		Spawn:
			DD4P A -1
			loop
	}
}

actor DD44Paintball : DD44
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "DD44"
	+WEAPON.POWERED_UP
}

ACTOR AR33Clip : Ammo
{
	Inventory.MaxAmount 30 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 30 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon "POINTBUL"
	+INVENTORY.IGNORESKILL
}

actor AR33 : GEWeapon
{
  Obituary "%o was splattered by %k's AR-33."
  Weapon.Ammotype1 "AR33Clip"
  Weapon.Ammotype2 "PointedBullets"
  Decal BulletChip
  Weapon.UpSound "misc/w_pkup"
  Inventory.Pickupmessage "AR-33"
  AttackSound "Ar33Fire"
  Weapon.Selectionorder 450
  Weapon.AmmoUse1 1
  Weapon.SisterWeapon "AR33Paintball"
  -WEAPON.NOAUTOFIRE
  +WEAPON.AMMO_OPTIONAL
  States
  {
  Ready:
	AR33 A 0 A_WeaponReady
	goto ReloadCheck
	AR33 A 1 A_WeaponReady
	goto Ready+1

  ReloadCheck:
	 AR33 A 0 A_JumpIfInventory("AR33Clip",30,2)
	 AR33 A 0 A_JumpIfInventory("PointedBullets",1,"ReloadStart")
	 AR33 A 0
	 goto Ready+1

  ReloadStart:
	 AR3R A 0 A_PlayWeaponSound("WeaponReload")
	 AR3R ABCDEFG 1
	 TNT1 A 5
	 goto ReloadAmmo

  ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("PointedBullets",1)
	 TNT1 A 0 A_GiveInventory("AR33Clip",1)
	 TNT1 A 0 A_JumpIfInventory("AR33Clip",30,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("PointedBullets",1,"ReloadAmmo")
	 goto ReloadDone

  ReloadDone:
	 TNT1 A 5
	 AR3R GFEDCBA 1
	 goto Ready+1

	Deselect:
		AR33 A 1 A_Lower
		TNT1 A 0 A_Lower
		loop
	Select:
		AR33 A 1 A_Raise
		TNT1 A 0 A_Raise
		loop
	Hold: // Intentional Fall-Through
	Fire:
		AR33 A 0 A_JumpIfNoAmmo("ReloadCheck")
		AR33 A 0 A_GunFlash
		AR33 B 1 BRIGHT A_FireBullets(4, 2, 1, 16, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		AR33 A 0 A_FireCustomMissile("PointedBulletCasing", Random(-40, -50), 0, 3, 6, 0)
		AR33 A 2 A_JumpIfNoAmmo("ReloadCheck")
		AR33 A 0 A_GunFlash
		AR33 C 2 BRIGHT A_FireBullets(4, 2, 1, 16, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		AR33 A 0 A_FireCustomMissile("PointedBulletCasing", Random(-40, -50), 0, 3, 6, 0)
		AR33 A 2 A_JumpIfNoAmmo("ReloadCheck")
		AR33 A 0 A_GunFlash
		AR33 B 1 BRIGHT A_FireBullets(4, 2, 1, 16, "BulletPuff", FBF_NORANDOM | FBF_USEAMMO)
		AR33 A 0 A_FireCustomMissile("PointedBulletCasing", Random(-40, -50), 0, 3, 6, 0)
		AR33 A 2 A_JumpIfNoAmmo("ReloadCheck")
		AR33 D 0 A_Refire
		AR33 DEFGHIJ 2
		goto Ready+1
	AltFire:
		AR33 A 0
		goto ReloadCheck
	Flash:
		TNT1 A 0 Bright Radius_Quake(1, 2, 0, 1, 0)
		TNT1 A 2 bright A_Light1
		TNT1 A 1 bright A_Light2
		TNT1 A 0 bright A_Light0
		stop
	Spawn:
		AR3P A -1
		stop
  }
}

actor AR33Paintball : AR33
{
	Decal PaintBallSplat
	Weapon.SisterWeapon "AR33"
	+WEAPON.POWERED_UP
}

ACTOR HuntingKnife : GEWeapon
{
	Radius 8
	Height 8
	Weapon.SelectionOrder 3700
	Weapon.Kickback 60
	Obituary "%o was Shanked by %k"
	AttackSound "KnifeHit"
	Inventory.PickupMessage "Throwing Knife"
	Inventory.PickupSound "KnifeUp"
	Weapon.UpSound "KnifeUp"
	Weapon.AmmoUse 0
	Scale 0.5
	+INVENTORY.ALWAYSPICKUP
	+WEAPON.WIMPY_WEAPON
	+WEAPON.MELEEWEAPON
	+WEAPON.ALLOW_WITH_RESPAWN_INVUL
	States
	{
	Ready:
		KNIF A 1 A_WeaponReady
		Loop
	Deselect:
		KNIF A 1 A_Lower
		TNT1 A 0 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Select:
		KNIF A 1 A_Raise
		TNT1 A 0 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Fire:
		KNIF BC 2
		KNIF D 1
		KNIF F 0 A_Recoil(-4)
		KNIF E 2 A_PlayWeaponSound("KnifeSwing")
		KNIF F 1 A_CustomPunch (75, true, 0, "BulletSpark", 70)
		KNIF GH 1
		TNT1 A 14
		KNIF HG 1
		KNIF A 3
		KNIF A 0 A_ReFire
		Goto Ready
	Spawn:
		TKNP A 0
		TKNP A 0 A_SpawnItem("Knives", 8)
		stop
	}
}

ACTOR ThrowingKnives : GEWeapon
{
	Weapon.SelectionOrder 3600
	Weapon.Kickback 60
	Obituary "%o gets a throwing knife up %p ass by %k."
	Inventory.PickupMessage "Throwing Knife"
	Inventory.PickupSound "KnifeUp"
	Weapon.UpSound "KnifeUp"
	Weapon.AmmoType "Knives"
	Weapon.AmmoUse 1
	Scale 0.5
	+WEAPON.WIMPY_WEAPON
	+WEAPON.NOAUTOAIM
	+INVENTORY.ALWAYSPICKUP
	//+WEAPON.ALLOW_WITH_RESPAWN_INVUL
	States
	{
	Ready:
		THRO A 1 A_WeaponReady
		Loop
	Deselect:
		THRO A 1 A_Lower
		TNT1 A 0 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Select:
		THRO A 1 A_Raise
		TNT1 A 0 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Fire:
		THRO A 2
		THRO BCD 3
		TNT1 A 0 A_Refire("Hold")
		goto Throw
	Hold:
		TNT1 A 1 
		TNT1 A 0 A_Refire("Hold")
		goto Throw
	Throw:
		TNT1 A 0 A_PlayWeaponSound("KnifeSwing")
		TNT1 A 8 A_FireCustomMissile("ThrownKnife", 0, 1, 4, 0, 0)
		TNT1 A 0 A_JumpIfNoAmmo("TakeAway")
		THRO EFGH 2
		THRO A 4
		THRO A 0 A_ReFire("Fire")
		Goto Ready
	TakeAway:
		TNT1 A 0 A_TakeInventory("ThrowingKnives", 1)
		stop
	Spawn:
		TKNP A 0
		TKNP A 0 A_SpawnItem("KnifePickup", 8)
		stop
	}
}

ACTOR CycloneClip : Ammo
{
	Inventory.MaxAmount 50 // size of the clip
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 50 //MUST be the same as Inventory.MaxAmmount
	Inventory.Icon ICONBULL
	+INVENTORY.IGNORESKILL
}


actor PD_Cyclone : GEWeapon 18244
{
  Obituary "%o was vaporized by %k's cyclone."
  Weapon.Ammotype1 "CycloneClip"
  Weapon.Ammotype2 "CycloneCell"
  Decal BulletChip
  Weapon.UpSound "misc/w_pkup"
  Inventory.Pickupmessage "Cyclone"
  AttackSound "CycloneFire"
  Weapon.Selectionorder 550
  Weapon.AmmoUse1 1
  Weapon.AmmoGive1 50
  Weapon.AmmoGive2 50
  Scale 0.9
  -WEAPON.NOAUTOFIRE
  +WEAPON.AMMO_OPTIONAL
  States
  {
  Ready:
	CYCL A 0 A_WeaponReady
	goto ReloadCheck
	CYCL A 1 A_WeaponReady
	goto Ready+1

  ReloadCheck:
	 CYCL A 0 A_JumpIfInventory("CycloneClip",50,2)
	 CYCL A 0 A_JumpIfInventory("CycloneCell",1,"ReloadStart")
	 CYCL A 0
	 goto Ready+1

  ReloadStart:
	 CYCR A 0 A_PlayWeaponSound("CycloneReload")
	 CYCR ABCDEF 3
	 goto ReloadAmmo

  ReloadAmmo:
	 TNT1 A 0 A_TakeInventory("CycloneCell",1)
	 TNT1 A 0 A_GiveInventory("CycloneClip",1)
	 TNT1 A 0 A_JumpIfInventory("CycloneClip",50,"ReloadDone")
	 TNT1 A 0 A_JumpIfInventory("CycloneCell",1,"ReloadAmmo")
	 goto ReloadDone

  ReloadDone:
	 CYCR GHIJK 3
	 goto Ready+1

	Deselect:
		CYCL A 1 A_Lower
		TNT1 A 0 A_Lower
		loop
	Select:
		CYCL A 1 A_Raise
		TNT1 A 0 A_Raise
		loop
	Hold: // Intentional Fall-Through
	Fire:
		CYCL A 0 A_JumpIfNoAmmo("ReloadCheck")
		CYCL A 0 A_GunFlash
		CYCL B 0 A_Jump(128, "FireRandom")
		CYCL B 1 BRIGHT A_FireCustomMissile("CyclonePlasma", Random(-1,1), 1, 11, -2, 0, Random(-1,1))
		CYCL A 2
		CYCL D 0 A_Refire
		CYCL DEF 3
		goto Ready+1
	FireRandom:
		CYCL C 1 BRIGHT A_FireCustomMissile("CyclonePlasma", Random(-1,1), 1, 11, -2, 0, Random(-1,1))
		goto Fire+4
	AltFire:
		CYCL A 0
		goto ReloadCheck
	Flash:
		TNT1 A 2 bright A_Light1
		TNT1 A 1 bright A_Light2
		TNT1 A 0 bright A_Light0
		stop
	Spawn:
		CYCP A -1
		stop
  }
}

actor ProximityMines : GEWeapon
{
  Obituary "%o didn't see %k's proximity mine."
  Weapon.Ammotype1 "ProxMineAmmo"
  Weapon.UpSound "ProxBeep"
  Inventory.Pickupmessage "Picked up a proximity mine"
  Weapon.Selectionorder 900
  Weapon.AmmoUse1 1
  Scale 0.3
  +WEAPON.NOAUTOFIRE
  +WEAPON.NOAUTOAIM
  +FLOATBOB
  States
  {
	Spawn:
		MINE A -1
		stop
	Select:
		TNT1 A 1 A_Raise
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		loop
	Deselect:
		TNT1 A 1 A_Lower
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		loop
	Ready:
		TNT1 A 1 A_WeaponReady
		loop
	Fire:
		TNT1 A 30 A_FireCustomMissile("ProxProj", 0, true, 5, 0, 0, 4)
		TNT1 A 0 A_Refire
		goto Ready
  }
}

actor RemoteMines : GEWeapon
{
  Obituary "%k detonated a remote mine in %o's face."
  Weapon.Ammotype1 "RemoteMineAmmo"
  Weapon.UpSound "ProxBeep"
  Inventory.Pickupmessage "Picked up a remote mine"
  Weapon.Selectionorder 910
  Weapon.AmmoUse1 1
  Scale 0.3
  +WEAPON.NOAUTOFIRE
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.NOAUTOAIM
  +FLOATBOB
  States
  {
	Spawn:
		RMIP A -1
		stop
	Select:
		TNT1 A 1 A_Raise
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		loop
	Deselect:
		TNT1 A 1 A_Lower
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		loop
	Ready:
		TNT1 A 1 A_WeaponReady
		loop
	Fire:
		TNT1 A 0 A_JumpIfNoAmmo("AltFire")
		TNT1 A 1 A_FireCustomMissile("RemoteMine", 0, true, 5, 0, 0, 4)
		TNT1 A 29 A_WeaponReady(WRF_NOPRIMARY)
		TNT1 A 0 A_Refire
		goto Ready
	AltFire:
		TNT1 A 1
		DETO ABCD 1
		DETO E 5
		DETO F 0 A_PlayWeaponSound("RemoteButton")
		DETO F 0 A_GiveInventory("Detonator", 1)
		DETO F 5
		DETO E 5
		DETO DCBA 1
		TNT1 A 0 A_TakeInventory("Detonator", 999)
		TNT1 A 10 A_WeaponReady(WRF_NOSECONDARY)
		TNT1 A 0 A_Refire
		goto Ready
  }
}

actor TimedMines : GEWeapon
{
  Obituary "%o's time was cut short by %k's timed mine."
  Weapon.Ammotype1 "TimedMineAmmo"
  Weapon.UpSound "ProxBeep"
  Inventory.Pickupmessage "Picked up a timed mine"
  Weapon.Selectionorder 900
  Weapon.AmmoUse1 1
  Scale 0.3
  +WEAPON.NOAUTOFIRE
  +WEAPON.NOAUTOAIM
  +FLOATBOB
  States
  {
	Spawn:
		MINE A -1
		stop
	Select:
		TNT1 A 1 A_Raise
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		loop
	Deselect:
		TNT1 A 1 A_Lower
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		loop
	Ready:
		TNT1 A 1 A_WeaponReady
		loop
	Fire:
		TNT1 A 30 A_FireCustomMissile("TimedMine", 0, true, 5, 0, 0, 4)
		TNT1 A 0 A_Refire
		goto Ready
  }
}

actor HandGrenades : GEWeapon
{
  Weapon.Ammotype1 "HandGrenadeAmmo"
  Inventory.Pickupmessage "Picked up a grenade."
  Weapon.Selectionorder 900
  Weapon.AmmoUse1 1
  +WEAPON.NOAUTOFIRE
  +WEAPON.NOAUTOAIM
  States
  {
	Spawn:
		AMMO A 0
		stop
	Select:
		TNT1 A 1 A_Raise
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		loop
	Deselect:
		TNT1 A 1 A_Lower
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		loop
	Ready:
		TNT1 A 1 A_WeaponReady
		loop
	Fire:
		TNT1 A 1 A_PlaySound("PinPull", CHAN_WEAPON)
		TNT1 A 0 A_Refire("Hold")
		goto Throw
	Hold:
		TNT1 A 1 A_GiveInventory("GrenadeTimer", 1)
		TNT1 A 0 A_JumpIfInventory("GrenadeTimer", 140, "Throw")
		TNT1 A 0 A_Refire("Hold")
		goto Throw
	Throw:
		TNT1 A 30 A_FireCustomMissile("HandGrenade", 0, true, 5, 0, 0, 4)
		TNT1 A 0 A_Refire("Fire")
		goto Ready
  }
}