//////////////////////////////
// KOSAK MELEE
//////////////////////////////
ACTOR KosakMelee : Weapon
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.SelectionOrder 3700
	Weapon.Kickback 100
	+WEAPON.WIMPY_WEAPON
	+WEAPON.MELEEWEAPON
	+NOEXTREMEDEATH
	States
	{
	Spawn:
		MHTE A -1
	Loop

	Ready:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		MHT4 B 1 A_WeaponReady
	Loop

	Select:
		TNT1 A 0 A_Playsound ("KNIFPREP", 2, 128, FALSE)
		MHTZ ABCDEFGHIJKLM 1 A_Raise
	Goto Ready
	
	Deselect:
		MHTZ MMLLKKJJIIHHGGFFEDCCBBAA 1 A_Lower
	Loop
	
	Fire:
		MHT3 A 2 A_Playsound ("MACHTHRU", 3, 128, FALSE)
		MHT3 B 1 
		MHT3 C 1 A_CustomPunch (3,0,0,"KosakMachSmoke")
		MHT3 D 1
		MHT3 E 1
		MHT3 F 1
		MHT3 G 1
		MHT4 A 2 A_Playsound ("MACHTHRU", 3, 128, FALSE)
		MHT4 B 1 
		MHT4 C 1 A_CustomPunch (6,0,0,"KosakMachSmoke")
		MHT4 D 1
		MHT4 E 1
		MHT4 F 1
		MHT4 G 1
	Goto Ready  
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto Ready
	}
}

/////////////////////////
ACTOR KosakMachSmoke
{
	+NOBLOCKMAP
	+NOGRAVITY
	+NOEXTREMEDEATH
	+PUFFONACTORS
	RenderStyle Translucent
	Alpha 0.3
	SeeSound "MACHATK"
	AttackSound "MACHATK2"
	VSpeed 1
	States
	{
	Spawn:
		PUFF ABCD 4
	Stop
	}
} 

//////////////////////////////
// DOOMGUY MELEE
//////////////////////////////
ACTOR DoomguyFists : Weapon
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.SelectionOrder 3700
	Weapon.Kickback 100
	+WEAPON.MELEEWEAPON
	+WEAPON.WIMPY_WEAPON
	+WEAPON.MELEEWEAPON
	+WEAPON.ALLOW_WITH_RESPAWN_INVUL
	States
	{
	Spawn:
		FIST P -1
	Loop

	Ready:
		KRAK A 3 A_PlaySound ("KNUCKLES")
		KRAK BCDCBA 3
	Goto RealReady
	
	RealReady:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		PUCH A 1 A_WeaponReady
	Loop

	Deselect:
		PUCH A 1 A_Lower
	Loop

	Select: 
		PUCH A 1 A_Raise
	loop

	Fire:
		PUCH A 1 A_Playsound ("FIST/SWING")
		PUCH BCD 1
		PUCH EF 1 A_Punch
		PUCH GHIJKLA 1
		PUCH A 1 A_ReFire  	
	Goto RealReady 
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto RealReady
   } 
}

//////////////////////////////
// CHAINSAW	
//////////////////////////////
ACTOR ChainsawNew : Weapon Replaces Chainsaw
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.Kickback 0
	Weapon.SelectionOrder 2200
	Weapon.UpSound "weapons/sawup"
	Weapon.ReadySound "weapons/sawidle"
	Inventory.PickupMessage "$GOTCHAINSAW"
	+WEAPON.MELEEWEAPON		
	+WEAPON.ALLOW_WITH_RESPAWN_INVUL
	States
	{
	Ready:
		SAWG CDEF 2 A_WeaponReady
	Loop
		
	Deselect:
		SAWG C 1 A_Lower
	Loop
		
	Select:
		SAWG C 1 A_Raise
	Loop
		
	Fire:
		SAWG AB 2 A_Saw
		SAWG B 0 A_ReFire
	Goto Ready
		
	Spawn:
		CSAW A -1
	Stop
	}
}

//////////////////////////////
// PISTOL (DOOMGUY)
//////////////////////////////
ACTOR Beretta : Weapon Replaces Pistol
{
	Weapon.Bobstyle Inverse
	Weapon.SelectionOrder 1900
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.AmmoUse 1
	Weapon.AmmoGive 20
	Weapon.AmmoType "Clip1"
	Damagetype "SmallBullets"
	+NOEXTREMEDEATH
	+WEAPON.WIMPY_WEAPON
	States
	{	
	Ready:
		COLT A 1 A_PlaySound ("RIFLPREP")
	Goto ReadyNow
		
	ReadyNow:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		COLT A 1 A_WeaponReady
	Loop
	
	Deselect:
		COLT A 1 A_Lower
	Loop
	
	Select:
		COLT A 1 A_Raise
	Loop
	
	Fire:
		COLT A 1
		COLT A 1 A_FirePistol
		COLT A 1 A_FireCustomMissile("PistolCaseSpawn",5,0,4,-3)
		COLT CDE 2
		COLT B 2 A_ReFire
	Goto ReadyNow
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto ReadyNow
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto ReadyNow
	
	Flash:
		COLF A 2 Bright A_Light1
	Goto LightDone
		COLF B 2 Bright A_Light1
	Goto LightDone
	
	Spawn:
		COLP A -1
	Stop
	}
}

//////////////////////////////
// DUAL PISTOL (KOSAK)
//////////////////////////////
ACTOR DualBeretta : Weapon Replaces Pistol
{
	Weapon.Bobstyle Inverse
	Weapon.SelectionOrder 1900
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.AmmoUse 1
	Weapon.AmmoGive 20
	Weapon.AmmoType "Clip1"
	Damagetype "SmallBullets"
	Obituary "%o was Killed by %k's dual berettas."
	+NOEXTREMEDEATH
	+WEAPON.WIMPY_WEAPON
	Inventory.Pickupmessage "Picked up dual berettas."
	States
	{	
	Ready:
		KPIS A 1 A_PlaySound ("RIFLPREP")
	Goto ReadyNow
		
	ReadyNow:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		KPIS A 1 A_WeaponReady
	Loop
	
	Deselect:
		KPIS A 1 A_Lower
	Loop
	
	Select:
		KPIS A 1 A_Raise
	Loop
	
	Fire:
		KPIS A 3
		KPIS B 3 A_FirePistol
		TNT1 A 0 A_FireCustomMissile("PistolCaseSpawn",5,0,4,-3)
		KPIS C 3 A_FirePistol
		KPIS D 3 A_FireCustomMissile("PistolCaseSpawn",5,0,4,-3)
		KPIS E 3 A_ReFire
		KPIS F 3
	Goto ReadyNow
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto Ready
	
	Flash:
		KPIS B 1 Bright A_Light1
	Goto LightDone
		KPIS C 1 Bright A_Light1
	Goto LightDone
	
	Spawn:
		COLP A -1
	Stop
	}
}

//////////////////////////////
// PISTOL (PHOBOS)			//
//////////////////////////////
ACTOR Colt : Weapon
{
	Weapon.Bobstyle Inverse
	Weapon.SelectionOrder 1900
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.AmmoUse 1
	Weapon.AmmoGive 20
	Weapon.AmmoType "Clip1"
	AttackSound "COLTFIRE"
	Damagetype "SmallBullets"
	+NOEXTREMEDEATH
	+WEAPON.WIMPY_WEAPON
	States
	{	
	Ready:
		CORT A 1 A_PlaySound ("RIFLPREP")
	Goto ReadyNow
		
	ReadyNow:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		CORT A 1 A_WeaponReady
	Loop
	
	Deselect:
		CORT A 1 A_Lower
	Loop
	
	Select:
		CORT A 1 A_Raise
	Loop
	
	Fire:
		CORT A 1
		CORT B 1 A_FireBullets (5.6, 0, 1, 5, "BulletPuff")
		COLT A 1 A_FireCustomMissile("PistolCaseSpawn",5,0,4,-3)
		CORT B 0 A_GunFlash
		CORT CDE 2
		CORT DC 2 A_ReFire
	Goto ReadyNow
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto ReadyNow
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto ReadyNow
	
	Flash:
		CORT A 2 Bright A_Light1
	Goto LightDone
		CORT B 2 Bright A_Light1
	Goto LightDone
	
	Spawn:
		COLP A -1
	Stop
	}
}

//////////////////////////////
// SHOTGUN					//
//////////////////////////////
ACTOR ShotgunNew : Weapon Replaces Shotgun
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.SelectionOrder 1300
	Weapon.AmmoUse 1
	Weapon.AmmoGive 8
	Weapon.AmmoType "Shell"
	Inventory.PickupMessage "$GOTSHOTGUN"
	States
	{
	Select:
		SHTZ AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEEEEFFFFFFFFFFFGGGGGGGGHHHHHHHHHIIIIIIIIJJJJJJJJJJKKKKKKKKKLLLLLLL 1 A_Raise 
	Goto Ready

	Ready:
		TNT1 A 0 A_Playsound ("SHOTPREP", 2, 128, FALSE)
	Goto RealReady

	RealReady:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		SHTZ A 1 A_WeaponReady
	Loop	

	Deselect:
		SHTZ LLKKJJIIHHGGFFDDCCBBAA 1  A_Lower
	Loop
		
	Fire:
		PKSG A 3
		PKSG A 3 A_FireShotgun
		PKSG BC 3
		TNT1 A 0 A_FireCustomMissile("ShotgunCaseSpawn",5,0,4,-3)
		PKSG DEFGHGFED 2
		PKSG CB 2
		PKSG A 2
		PKSG A 2 A_ReFire
	Goto RealReady
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto RealReady
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto RealReady
	
	Flash:
		SHTF A 2 Bright A_Light1
		SHTF B 2 Bright A_Light2
	Goto LightDone
		
	Spawn:
		SHOT A -1
	Stop
	}
}	

//////////////////////////////
// SUPER SHOTGUN			//
//////////////////////////////
ACTOR SSG : Weapon Replaces SuperShotgun
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	SpawnID 33
	Weapon.SelectionOrder 400
	Weapon.AmmoUse 2
	Weapon.AmmoGive 8
	Weapon.AmmoType "Shell"
	AttackSound "DSDSHTGN"
	States
	{
	Select:
		SH2Z ABCDEFGH 1 A_Raise 
	Goto Ready

	Ready:
		SHT2 A 0 A_Playsound ("SHOTPREP", 2, 128, FALSE)
	Goto RealReady

	RealReady:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		SHT2 A 1 A_WeaponReady
	Loop	

	Deselect:
		SH2Z HHHHHHHGGGGGGGFFFFFFEEEEEEEDDDDDDDCCCCCCBBBBBBAAAAAAA 1 A_Lower
	Loop
		
	Fire:
		SHT2 A 0 A_FireBullets (11.2, 7.1, 10, 18, "ShotgunTracer")
		SHT2 A 2 A_GunFlash
		SHT2 A 0 A_PlaySound ("weapons/sshotf", CHAN_BODY)
		PKS2 B 3 
		PKS2 C 3 A_CheckReload
		PKS2 DEFG 3
		PKS2 H 3
		PKS2 I 2
		PKS2 J 0 A_OpenShotgun2
		TNT1 A 0 A_FireCustomMissile("SuperShotgunCaseSpawn",5,0,4,-3)
		TNT1 A 0 A_FireCustomMissile("SuperShotgunCaseSpawn",5,0,4,-3)
		PKS2 K 3 A_LoadShotgun2
		PKS2 LMNOP 2
		PKS2 Q 2 A_CloseShotgun2
		PKS2 RS 2
		SHT2 A 10 A_ReFire
	Goto RealReady
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto RealReady
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto RealReady
	
		SHT2 B 7
		SHT2 A 3
	Goto Deselect
		
	Flash:
		SHT2 I 3 Bright A_Light1
		SHT2 J 2 Bright A_Light2
	Goto LightDone
		
	Spawn:
		SGN2 A -1
	Stop
	}
}

//////////////////////////////
// CHAINGUN					//
//////////////////////////////
ACTOR Minigun : Weapon Replaces Chaingun
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.SelectionOrder 700
	Weapon.AmmoUse 1
	Weapon.AmmoGive 20
	Weapon.AmmoType "Clip1"
	Inventory.PickupMessage "$GOTCHAINGUN"
	Tag "$TAG_CHAINGUN"
	AttackSound "MINIGUN"
	States
	{
	Select:
		CHGZ AAAAAAAAAAABBBBBBBBBBCCCCCCCCCCCDDDDDDDDDEEEEEEEEEEFFFFFFGGGGGGHHHHHHIIIIII 1 A_Raise 
	Goto Ready

	Ready:
		TNT1 A 0 A_Playsound ("RIFLPREP", 2, 128, FALSE)
	Goto RealReady

	RealReady:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		CHGG A 1 A_WeaponReady
	Loop	

	Deselect:
		CHGZ IIIIIIHHHHHHGGGGGGFFFFFFEEEEEEDDDDDDCCCCCCBBBBBBAAAAAA 1 A_Lower
	Loop
	
	Fire:	
		PKCG A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound ("MINIGUN")
		TNT1 A 0 A_FireCustomMissile("PistolCaseSpawn",5,0,4,-3)
		TNT1 A 0 A_FireCustomMissile("PistolCaseSpawn",5,0,4,-3)
		PKCG A 0 A_FireBullets(6, 1, 1, 8)
		PKCG BCD 1
		PKCG B 0 A_ReFire
	Goto RealReady
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto RealReady
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto RealReady
		
	Flash:
		TNT1 A 0
		TNT1 A 0 A_Jump(128, 4)
		PKCF A 1 Bright A_Light1
		PKCF B 1 Bright A_Light2
		TNT1 A 1 A_Light1
	Goto LightDone
		
		PKCF C 1 Bright A_Light1
		PKCF D 1 Bright A_Light2
		TNT1 A 1 A_Light1
	Goto LightDone
		
	Spawn:
		MGUN A -1
		Stop
	}
}

//////////////////////////////
// ROCKET LAUNCHER			//
//////////////////////////////
ACTOR RLauncher : Weapon
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoGive 2
	Weapon.AmmoType "RocketAmmo"
	+WEAPON.NOAUTOFIRE
	Inventory.PickupMessage "$GOTLAUNCHER"
	Tag "$TAG_ROCKETLAUNCHER"
	States
	{
	Select:
		MIGZ AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEFFFFFFFGGGGHHHH 1 A_Raise 
	Goto Ready

	Ready:
		TNT1 A 0 A_Playsound ("ROCKREAD", 2, 128, FALSE)
	Goto RealReady

	RealReady:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		MISG A 1 A_WeaponReady
	Loop	

	Deselect:
		MIGZ HHHHHHHGGGGGGGFFFFFFEEEEEEEDDDDDDDCCCCCCBBBBBBAAAAAAA 1 A_Lower
	Loop
		
	Fire:
		PKRL A 4 A_GunFlash
		PKRL B 2
		PKRL D 3 A_FireMissile
		PKRL C 3
		PKRL BE 2
		PKRL FG 2
		PKRL A 0 A_ReFire
	Goto RealReady
	
		GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto RealReady
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto RealReady
	
	Flash:
		PKRF A 2 Bright A_Light1
		PKRF B 2 Bright
		PKRF C 2 Bright A_Light2
		PKRF DE 3 Bright
	Goto LightDone
		
	Spawn:
		LAUN A -1
	Stop
	}
}

//////////////////////////////
// FIREBAT LAUNCHER			//
//////////////////////////////
Actor FirebatLauncher : Weapon
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 2
	Weapon.AmmoGive 8
	Weapon.AmmoType "RocketAmmo"
	+Weapon.NOAUTOFIRE
	+Weapon.NOAUTOAIM
	Inventory.PickupMessage "You got the Firebat Launcher! Time too set some fires!"
	States
	{
	Select:
		FRUP ABCDEFGHIJKLMN 1 A_Raise 
	Goto Ready

	Ready:
		FRBT A 0 A_Playsound ("FIREREAD", 2, 128, FALSE)
	Goto RealReady

	RealReady:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		FRBT A 1 A_WeaponReady
	Loop	

	Deselect:
		FRUP NNNNNNNMMMMMMMMLLLLLLLKKKKKKKJJJJJJIIIIIIIIHHHHHHHGGGGGGGFFFFFFEEEEEEDDDDDDDCCCCCCBBBBBBBBAAAAAAAA 1 A_Lower
	Loop

	Fire:
		FRBT CDE 2 Bright 
		FRBT F 2 Bright A_PlayWeaponSound("HSTMFIRE")
		FRBT F 0 Bright A_FireCustomMissile("HellStormBomb1", Random(-9, 9), 0, 0, 0, 0, Random(-2, 6))
		FRBT F 0 Bright A_FireCustomMissile("HellStormBomb1", Random(-9, 9), 0, 0, 0, 0, Random(-2, 6))
		FRBT F 0 Bright A_FireCustomMissile("HellStormBomb2", Random(-9, 9), 0, 0, 0, 0, Random(-2, 6))
		FRBT F 0 Bright A_FireCustomMissile("HellStormBomb2", Random(-9, 9), 0, 0, 0, 0, Random(-2, 6))
		FRBT F 0 Bright A_FireCustomMissile("HellStormBomb3", Random(-9, 9), 0, 0, 0, 0, Random(-2, 6))
		FRBT F 0 Bright A_FireCustomMissile("HellStormBomb3", Random(-9, 9), 0, 0, 0, 0, Random(-2, 6))
		FRBT F 0 Bright A_FireCustomMissile("HellStormBomb4", Random(-9, 9), 0, 0, 0, 0, Random(-2, 6))
		FRBT F 5 Bright A_FireCustomMissile("HellStormBomb4", Random(-9, 9), 1, 0, 0, 0, Random(-2, 6))
		FRBT GHIJ 2 Bright A_GunFlash
		FRBT EDCB 2
		FRBT A 25 A_PlaySoundEx("HSTMRELD", "SoundSlot6", 0)
	Goto RealReady
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto RealReady
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto RealReady

	Flash:
		TNT1 A 1
	Stop

	Spawn:
		FRPI A -1
	Stop
	}
}

//////////////////////////////
// PLASMA RIFLE				//
//////////////////////////////
ACTOR PlasmagunNew : Weapon
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.SelectionOrder 100
	Weapon.AmmoUse 1
	Weapon.AmmoGive 40
	Weapon.AmmoType "Cell1"
	Inventory.PickupMessage "$GOTPLASMA"
	Inventory.PickupSound "PICKGUN2"
	Tag "$TAG_PLASMARIFLE"
	States
	{
	Select:
		PLSZ ABCDEFGHIJ 1 A_Raise 
	Goto Ready

	Ready:
		PLSG A 0 A_Playsound ("PLASPREP", 2, 128, FALSE)
	Goto RealReady

	RealReady:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		PLSG A 1 A_WeaponReady
	Loop	

	Deselect:
		PLSZ JJJJJJJJIIIIIIIIHHHHHHHHGGGGGGGGFFFFFFFFEEEEEEEEDDDDDDDDCCCCCCCCBBBBBBBBAAAAAAAA 1 A_Lower
	Loop
		
	Fire:
		PKPL A 3 A_FirePlasma
		PKPK BC 5 A_ReFire
		PKPL B 2
		PKPL GFEDCBA 2
	Goto RealReady
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto RealReady
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto RealReady
		
	Flash:
		PKPK B 4 Bright A_Light1
	Goto LightDone
		
		PKPK C 4 Bright A_Light1
	Goto LightDone
	
	Spawn:
		PLAS A -1
	Stop
	}
}

///////////////////////////
// HELL SCEPTRE		     //
///////////////////////////
ACTOR HellSceptre : Weapon
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.SlotNumber 3
	Weapon.SelectionOrder 100
	Weapon.AmmoUse 1
	Weapon.AmmoGive 26
	Weapon.AmmoType "Cell1"
	Inventory.PickupMessage "You picked up the Hell Sceptre!"
	Inventory.PickupSound "PICKGUN2"
	States
	{
	Select:

		SCPT ABCD 2 A_Raise 
	Goto Ready
	
	Ready:
		SCPT A 2 A_PlaySound ("HELLREAD")
	Goto RealReady
	
	RealReady:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		SCPT ABCD 2 A_WeaponReady
	Loop
	
	Deselect:
		SCPT ABCD 1 A_Lower
	Loop
	
	Fire:
		SCPT E 2 A_PlayWeaponSound ("SCEPTRE")
		SCPT F 2 A_FireCustomMissile ("HellTracer", 0, 1, 0)
		SCPT G 2
		SCPT F 2
		SCPT H 2 A_ReFire 
	Goto RealReady
	
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto RealReady
	
	GrenadeToss:
		PKFR CBA 1
		TNT1 A 4
		HGRN ABC 1
		HGRN D 2
		HGRN EFG 1
		HGRN HI 2
		TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
		TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
		TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
		HGRN J 1
		HGRN KLM 2
		HGRN NO 1
		TNT1 A 6
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
		TNT1 A 0 A_TakeInventory("Hand Grenade",1)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0
	Goto RealReady
	
	Flash:
		SCPT E 2 Bright A_Light1
	Goto LightDone
		SCPT F 2 Bright A_Light1
	Goto LightDone
	
	Spawn:
		SCPI C -1 Bright
	Stop
	}
}

//////////////////////////////
// BFG9000					//
//////////////////////////////
ACTOR  BigFuckinGun : Weapon
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Height 20
	Weapon.SelectionOrder 2800
	Weapon.AmmoUse 40
	Weapon.AmmoGive 40
	Weapon.AmmoType "Cell1"
	+WEAPON.NOAUTOFIRE
	+WEAPON.NOLMS
	Inventory.PickupMessage "$GOTBFG9000"
	Inventory.PickupSound "PICKGUN2"
	Tag "$TAG_BFG9000"
	States
	{
	Ready:
		BFGG A 1 A_WeaponReady
	Loop
		
	Deselect:
		BFGG A 1 A_Lower
	Loop
		
	Select:
		BFGG A 0 A_Playsound ("BFGPREP")
		BFGG AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Raise
	Goto Ready
		
	Fire:
		BFGG A 20 A_BFGSound
		BFGG B 2 A_GunFlash
		BFGG CDEF 2 Bright
		BFGG F 0 A_FireBFG
		BFGG GHIHG 2
		BFGG A 12 A_ReFire
	Goto Ready
		
	Spawn:
		BFUG A -1
	Stop
		
	}
}

//////////////////////////////
// BFG10K					//
//////////////////////////////
Actor BFG10K : Weapon
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.Selectionorder 2800
	Weapon.AmmoUse 5
	Weapon.AmmoGive 40
	Weapon.AmmoType "Cell1"
	Weapon.Kickback 100
	Inventory.Pickupmessage "You got the BFG10000!  Fuck, yes!"
	Inventory.PickupSound "PICKGUN2"
	Obituary "%o was blasted by %k's BFG10K"
	+Weapon.NoAutoFire
	Decal BFGLightning
	States
{
	Spawn:
		BFG2 A -1
	Stop

	Ready:
		BG2G A 0 A_PlaySound ("BFG10KIdle")
		BG2G A 1 A_WeaponReady
		BG2G A 1 A_WeaponReady
		BG2G A 1 A_WeaponReady
		BG2G B 1 A_WeaponReady
		BG2G B 1 A_WeaponReady
		BG2G B 1 A_WeaponReady
		BG2G C 1 A_WeaponReady
		BG2G C 1 A_WeaponReady
		BG2G C 1 A_WeaponReady
		BG2G D 1 A_WeaponReady
		BG2G D 1 A_WeaponReady
		BG2G D 1 A_WeaponReady
	Loop

	Deselect:
		BG2G E 1 A_Lower
	Loop

	Select:
		BG2G A 1 A_Playsound ("BFGPREP")
		BG2G AABBCCDDAABBCCDDAABBCCDDAABBCCDDAABBC 1 A_Raise
	Goto Ready

	Hold:
		BG2G K 2 A_GunFlash
		BG2G L 2 A_FireBullets(0, 0, 1, 0, "STBFG10kShot")
		BG2G M 2
		BG2G N 0 A_ReFire
		BG2G O 35 A_PlaySound("BFG10KCool")
	Goto Ready

	Fire:
		BG2G E 20 A_PlaySound("BFG10KF")
		BG2G F 4
		BG2G G 1
		BG2G H 1
		BG2G I 1
		BG2G J 1
	Goto Hold
	
	Flash:
		TNT1 AAAA 1 A_Light2
		TNT1 A 0 A_Light0
	Goto LightDone
	}
}

//////////////////////////////
// BFG X			     	//
//////////////////////////////
ACTOR BFG_X : Weapon
{
	Weapon.Bobstyle Inverse
	Weapon.BobRangeX 0.2
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 2.7
	Weapon.SelectionOrder 10
	Weapon.AmmoUse 800
	Weapon.AmmoGive 120
	Weapon.AmmoType "Cell1"
	DamageType Desintegrate
	+WEAPON.NOAUTOAIM
	Inventory.PickupMessage "You have acquired The BFG X! USE AMMO WISELY SOLDIER!"
	Inventory.PickupSound "PICKGUN2"
	States
	{
	Spawn:
		ABPI C -1
	Stop
		
	Ready:
		ABSO A 4 A_WeaponReady
	Loop
	
	Deselect:
		ABSO A 1 A_Lower
	Loop
	
	Select:
		ABSO A 1 A_Playsound ("BFGPREP")
		ABSO A 1 A_Raise
	Wait

	Fire:
		ABSO A 1 A_BFGsound
		ABSO BCDEFGHIJK 2 Bright
		ABSO L 1 A_FireCustomMissile ("AbsoBall",-20, 80)
		ABSO L 1 A_FireCustomMissile ("AbsoBall",-10, 0)
		ABSO L 1 A_FireCustomMissile ("AbsoBall",-5, 0)
		ABSO L 1 A_FireCustomMissile ("AbsoBall",0, 0)
		ABSO L 1 A_FireCustomMissile ("AbsoBall",5, 0)
		ABSO L 1 A_FireCustomMissile ("AbsoBall",10, 0)
		ABSO L 1 A_FireCustomMissile ("AbsoBall",20, 0)
		ABSO MONP 2 Bright
	Goto Ready
	}
}

///////////////
// GRENADES
///////////////
ACTOR HandGrenadeAction : Inventory
{
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR "Hand Grenade" : Weapon
{
   Scale 0.3
   Weapon.SelectionOrder 8000
   Weapon.KickBack 100
   Inventory.PickupSound "GRNSPICK"
   Weapon.SlotNumber 8
   Weapon.AmmoGive 1
   Weapon.AmmoUse 1
   Weapon.AmmoType "HandGrenadeAmmo"
   Inventory.Pickupmessage "Hand Grenade"
   Obituary "%o was fragged by %k's hand grenade."
   AttackSound ""
   +WEAPON.NOALERT
   +WEAPON.NOAUTOAIM
   +WEAPON.NOAUTOFIRE
   +WEAPON.NO_AUTO_SWITCH
   +INVENTORY.UNDROPPABLE
   States 
   { 
   Spawn:
	  HGRN A -1
	  Stop
   Ready:
	  HGRN ABC 1
      Goto Ready2
   Ready2:
      HGRN D 1 A_WeaponReady 
	  Loop
   Deselect:
      HGRN D 1 A_Lower
      TNT1 A 0 A_Lower	  
      Goto Deselect+1	  
   Select:
	  TNT1 A 0 A_Raise
      Wait
   Fire: 
	  HGRN EFG 1
	  HGRN HI 2
	  TNT1 A 15 A_PlayWeaponSound("GRNSPIN")
	  TNT1 A 0 A_PlayWeaponSound("GRNSTHRW")
	  TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
	  HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	  HGRN J 1
	  HGRN KLM 2
	  HGRN NO 1
	  TNT1 A 6
	  TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
      TNT1 A 0 A_TakeInventory("Hand Grenade",1)
	  TNT1 A 0
	  TNT1 A 6
	  HGRN ABC 1
	  Goto Ready2
	  }
}

ACTOR ThrownGrenade
{  
	Radius 2
	Height 2
    Speed 30
	Damage 8
	Scale 0.4
	SeeSound "GRNSBNCE"
	+MTHRUSPECIES
	+MISSILE
	+DONTFALL
	+CANBOUNCEWATER
	+BOUNCEONCEILINGS
	+DOOMBOUNCE
	-NOTELEPORT
	WallBounceFactor 0.16
	BounceFactor 0.36
	Gravity 0.6
	Mass 400
	Decal "Scorch"
	DamageType "Explosion"
	Obituary "%o was fragged by %k's hand grenade."
	States
   {
   Spawn:
	  TNT1 A 0
      GRND A 3 A_StopSound
      GRND BCDEFGHABCDEFGHABCDEFGH 3
      Goto Death      
   Death: 
   	  TNT1 A 0
      TNT1 A 0 A_Explode  
	  TNT1 A 0 A_AlertMonsters
	  TNT1 A 0 A_PlaySound("GRNSEXPL")
	  TNT1 AAA 0 A_SpawnItemEx("BarrelExplosion",0,0,0,Random(4,-4),Random(4,-4),Random(4,8),0,128)
	  TNT1 AAAA 0 A_CustomMissile("FlyingMetal2", 20,  0, random(0, 500), 2, random(0, 190))
	  TNT1 AAAA 0 A_CustomMissile("FlyingMetal1", 20,  0, random(0, 500), 2, random(0, 190))
      Stop
   }
}