Class GHAGWeaponPickup : Inventory
{
	Default
	{
		+Bright;
		+FloatBob;
		+DontGib;
		+Inventory.AlwaysPickup;
		Inventory.MaxAmount 4;
	}
	
	override bool TryPickup(in out Actor toucher)
	{
		bool result = Super.tryPickup(toucher);
		if (result)
		{
			A_StartSound("misc/w_pkup", CHAN_AUTO);
			GHAGGardevoir(toucher).updateWeapons = true;
		}
		return result;
	}
	
	bool touched;
}

Class GHAGPistolPickup : GHAGWeaponPickup
{
	Default
	{
		Inventory.PickupMessage "Seized a Pistol!";
		Inventory.pickupsound "misc/w_pkup";
	}

	override bool TryPickup(in out Actor toucher)
	{
		bool result = super.TryPickup(toucher);
		if (result)
		{
			if (toucher.countInv("GHAGPistol") == 0)
			{
				toucher.giveInventory("GHAGPistol", 1);
				toucher.A_SelectWeapon("GHAGPistol");
			}
			toucher.giveInventory("GHAGPistolOverlay", 1);
			toucher.giveInventory("Clip", 40);
		}
		touched = result;
		return result;
	}
	
	override void Tick()
	{
		super.Tick();
		
		if (players[consoleplayer].mo.countInv("GHAGPistol") > 0 && !touched)
		{
			self.spawn("ClipBox", self.pos);
			self.destroy();
		}
	}
	
	States
	{
		Spawn :
			PIST C 1;
			Loop;
	}
}

Class GHAGShotgunPickup : GHAGWeaponPickup
{
	Default
	{
		Inventory.PickupMessage "Seized a Shotgun!";
		Inventory.pickupsound "misc/w_pkup";
	}

	override bool TryPickup(in out Actor toucher)
	{
		bool result = super.TryPickup(toucher);
	
		if (result)
		{
			if (toucher.countInv("GHAGShotgun") == 0)
			{
				toucher.giveInventory("GHAGShotgun", 1);
				toucher.A_SelectWeapon("GHAGShotgun");
			}
			toucher.giveInventory("GHAGShotgunOverlay", 1);
			toucher.giveInventory("Shell", 8);
		}
		touched = result;
		return false;
	}
	
	override void Tick()
	{
		super.Tick();
		
		if (players[consoleplayer].mo.countInv("GHAGShotgun") > 0 && !touched)
		{
			self.spawn("ShellBox", self.pos);
			self.destroy();
		}
	}

	States
	{
		Spawn :
			SHOT A 1;
			Loop;
	}
}

Class GHAGNailgunPickup : GHAGWeaponPickup
{
	Default
	{
		Inventory.PickupMessage "Seized a nailgun!";
		Inventory.pickupsound "misc/w_pkup";
	}

	override bool TryPickup(in out Actor toucher)
	{
		bool result = super.TryPickup(toucher);
	
		if (result)
		{
			if (toucher.countInv("GHAGNailgun") == 0)
			{
				toucher.giveInventory("GHAGNailgun", 1);
				toucher.A_SelectWeapon("GHAGNailgun");
			}
			toucher.giveInventory("GHAGNailgunOverlay", 1);
			toucher.giveInventory("Clip", 20);
		}
		touched = result;
		return false;
	}
	
	override void Tick()
	{
		super.Tick();
		
		if (players[consoleplayer].mo.countInv("GHAGNailgun") > 0 && !touched)
		{
			self.spawn("ClipBox", self.pos);
			self.destroy();
		}
	}

	States
	{
		Spawn :
			MGUN A 1;
			Loop;
	}
}

Class GHAGPlasmaPickup : GHAGWeaponPickup
{
	Default
	{
		Inventory.PickupMessage "Seized a Plasma Rifle!";
		Inventory.pickupsound "misc/w_pkup";
	}

	override bool TryPickup(in out Actor toucher)
	{
		bool result = super.TryPickup(toucher);
	
		if (result)
		{
			if (toucher.countInv("GHAGPlasmaRifle") == 0)
			{
				toucher.giveInventory("GHAGPlasmaRifle", 1);
				toucher.A_SelectWeapon("GHAGPlasmaRifle");
			}
			toucher.giveInventory("GHAGPlasmaOverlay", 1);
			toucher.giveInventory("Cell", 40);
		}
		touched = result;
		return false;
	}
	
	override void Tick()
	{
		super.Tick();
		
		if (players[consoleplayer].mo.countInv("GHAGPlasmaRifle") > 0 && !touched)
		{
			self.spawn("CellPack", self.pos);
			self.destroy();
		}
	}

	States
	{
		Spawn :
			PLAS A 1;
			Loop;
	}
}

Class GHAGSuperRailgunPickup : GHAGWeaponPickup
{
	Default
	{
		Inventory.PickupMessage "Seized a PSY-BP12!";
		Inventory.pickupsound "misc/w_pkup";
	}

	override bool TryPickup(in out Actor toucher)
	{
		bool result = super.TryPickup(toucher);
	
		if (result)
		{
			if (toucher.countInv("GHAGSuperRailgun") == 0)
			{
				toucher.giveInventory("GHAGSuperRailgun", 1);
				toucher.A_SelectWeapon("GHAGSuperRailgun");
			}
			toucher.giveInventory("GHAGSuperRailgunOverlay", 1);
			toucher.giveInventory("Shell", 16);
		}
		touched = result;
		return false;
	}
	
	override void Tick()
	{
		super.Tick();
		
		if (players[consoleplayer].mo.countInv("GHAGSuperRailgun") > 0 && !touched)
		{
			self.spawn("ShellBox", self.pos);
			self.destroy();
		}
	}

	States
	{
		Spawn :
			SGN2 A 1;
			Loop;
	}
}