// --------------------------------------------------------------------------
//
//	GrenadeLauncher
//
// --------------------------------------------------------------------------

ACTOR U_GrenadeLauncher : BaseWeapon
{
	Weapon.AmmoUse1 0
	Weapon.AmmoUse2 0
	Weapon.AmmoGive1 6
	Weapon.AmmoGive2 0
	Weapon.AmmoType1 "AmmoRocket"
	Weapon.AmmoType2 "GrenadeRounds"
	Weapon.SelectionOrder 6000
	-WEAPON.CHEATNOTWEAPON
	+WEAPON.EXPLOSIVE
    Inventory.PickupSound "ROCKPKUP"
	Inventory.PickupMessage "You got the Grenade Launcher!"
	Obituary "%o was exploded by %k's rocket."
	tag "Grenade Launcher"
	States
	{
	Spawn:
		GLAP A -1
		Stop

	Select:
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "PuristGun")
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1010,3)==0, "PuristGun")
		TNT1 A 0 A_Giveinventory("GrenadeLauncherSelected",1)
		TNT1 A 0 A_Giveinventory("GoSpecial",1)
		TNT1 A 0 A_Takeinventory("Unloading",1)
		TNT1 A 0 A_Takeinventory("Reloading",1)
		TNT1 A 0 A_TakeInventory("TossGrenade", 1)
		TNT1 A 0 A_Takeinventory("WeapSpecial",1)
		TNT1 A 0 A_Takeinventory("Taunting",1)
		TNT1 A 0 A_Takeinventory("IdleCounter",200)
		TNT1 A 4
		TNT1 A 0 A_Raise
		Wait

	Deselect:
		GLR2 Z 1
		GLR1 ZYX 1
		GLR2 W 1
		GLR1 W 1
		TNT1 A 0 A_TakeInventory("GrenadeLauncherSelected", 1)
		TNT1 A 0 A_Lower
		Wait
	
	Ready:
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		TNT1 A 0 A_PlaySound("RLANDRAW")
	Ready1:
		GLR1 W 1
		GLR2 W 1
		GLR1 XYZ 1
		GLR2 Z 1
	Ready2:
        TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
        TNT1 A 0 A_JumpIfInventory("Taunting",1,"TauntR")
		TNT1 A 0 A_JumpIfInventory("Salute1",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("Salute2",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
		TNT1 A 0 A_JumpIfInventory("IdleCounter",200,"PlayerIsIdle")
		GLAN A 1 A_WeaponReady
		Loop
		
	PuristGun:
		TNT1 A 0 A_TakeInventory("U_GrenadeLauncher", 1)
		Goto Deselect
		
// --------------------------------------------------------------------------
//
//	Fire
//
// --------------------------------------------------------------------------
		
	Fire:
        TNT1 A 0 A_JumpIfInventory("GrenadeRounds",1,1)
        Goto Reload
		TNT1 A 0 A_FireCustomMissile("RedFlareSpawn",-5,0,0,0)
		TNT1 AAAAA 0 A_FireCustomMissile("ShotgunParticles", random(-16,16), 0, -1, random(-9,9))
		TNT1 A 0 A_PlaySound("weapons/firegrenade")
		TNT1 A 0 A_FireCustomMissile("GrenadeMissileBreaksGlass", 0, 0, 0, 0)
		GLAF A 1 BRIGHT A_AlertMonsters
        GLAF B 1 A_SetPitch(-3.0 + pitch)
		TNT1 A 0 A_Takeinventory("GrenadeRounds",1)
		TNT1 A 0 A_FireCustomMissile("ShortGrenade", 0, 1, 0, 0)
		TNT1 A 0 A_SetPitch(-3.0 + pitch)
		GLAF CDEFG 1 A_SetPitch(1.0 + pitch)
		GLAN A 5 A_SetPitch(1.0 + pitch)
		Goto Reload
		
	AltFire:
        TNT1 A 0 A_JumpIfInventory("GrenadeRounds",1,1)
        Goto Reload
		TNT1 A 0 A_FireCustomMissile("RedFlareSpawn",-5,0,0,0)
		TNT1 AAAAA 0 A_FireCustomMissile("ShotgunParticles", random(-16,16), 0, -1, random(-9,9))
		TNT1 A 0 A_PlaySound("weapons/firegrenade")
		TNT1 A 0 A_FireCustomMissile("GrenadeMissileBreaksGlass", 0, 0, 0, 0)
		GLAF A 1 BRIGHT A_AlertMonsters
        GLAF B 1 A_SetPitch(-3.0 + pitch)
		TNT1 A 0 A_Takeinventory("GrenadeRounds",1)
		TNT1 A 0 A_FireCustomMissile("GrenadeMissile", 0, 1, 0, 0)
		TNT1 A 0 A_SetPitch(-3.0 + pitch)
		GLAF CDEFG 1 A_SetPitch(1.0 + pitch)
		GLAN A 5 A_SetPitch(1.0 + pitch)
		Goto Reload

// --------------------------------------------------------------------------
//
//	Reload
//
// --------------------------------------------------------------------------

	Reload:
        TNT1 A 0 A_JumpIfInventory("AmmoRocket",1,1)
        Goto Ready2
		GLR1 ABCDEF 1
		GLR2 F 1
		GLR1 GHIJKL 1
		TNT1 A 0 A_PlaySound("Weapons/GrenadeOpen")
		GLR1 M 1 A_FireCustomMissile("SmokeSpawner",0,0,0,5)
		GLR2 M 1 A_FireCustomMissile("SmokeSpawner",0,0,0,5)
		GLR1 N 1 A_FireCustomMissile("SmokeSpawner",0,0,0,5)
		GLR2 NNN 1 A_FireCustomMissile("SmokeSpawner",0,0,0,5)
		GLR1 OPQQRRSS 1
		TNT1 A 0 A_PlaySound("Weapons/GrenadeLoad")
		TNT1 A 0 A_Takeinventory("AmmoRocket",1)
		TNT1 A 0 A_Giveinventory("GrenadeRounds",1)
		GLR1 TUVW 1
		GLR2 W 1
		TNT1 A 0 A_PlaySound("Weapons/GrenadeClose")
		GLR1 X 1
		GLR1 YZ 1
		GLR2 Z 1
		TNT1 A 0 A_Refire
        Goto Ready2
		
// --------------------------------------------------------------------------
//
//	End Stuff
//
// --------------------------------------------------------------------------
		
	KickFlash:
		GLR1 ABCD 1
		GLR1 E 8
		GLR1 DCBA 1
		GLAN A 1
		Stop

	AirKickFlash:
		GLR1 ABCD 1
		GLR1 E 10
		GLR1 DCBA 1
		GLAN A 1
		Stop

	TauntFlash:
		GLR1 ABCD 1
		GLR1 E 35
		GLR1 DCBA 1
		GLAN A 1
		Stop

	GrenadeFlash:
		GLR2 Z 1
		GLR1 ZYX 1
		GLR2 W 1
		GLR1 W 1
		Stop
	}
}

ACTOR GrenadeRounds: Ammo
{
	+INVENTORY.IGNORESKILL
	Inventory.Amount 0
	Inventory.MaxAmount 1
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 1
   	Inventory.Icon "GLAPA0"
}