Class UFlakBox : Ammo
{
	Default
	{
		Tag "$T_FLAKAMMO";
		Inventory.Icon "I_FlakAm";
		Inventory.PickupMessage "";
		Inventory.Amount 10;
		Inventory.MaxAmount 50;
		Ammo.BackpackAmount 5;
		Ammo.BackpackMaxAmount 100;
		Ammo.DropAmount 5;
	}
	override String PickupMessage()
	{
		return String.Format("%s%d%s",StringTable.Localize("$I_FLAKAMMOL"),Amount,StringTable.Localize("$I_FLAKAMMOR"));
	}
	States
	{
	Spawn:
		FBOX A -1;
		Stop;
	}
}

Class UFlakAmmo : UFlakBox
{
	Default
	{
		Tag "$T_FLAKAMMO2";
		Inventory.Icon "I_FlakAm";
		Inventory.PickupMessage "$I_FLAKAMMO2";
		Inventory.Amount 1;
		Ammo.DropAmount 1;
		+INVENTORY.IGNORESKILL;
	}
	States
	{
	Spawn:
		FSHL B -1;
		Stop;
	}
}

Class UFlakCannon : UTWeapon
{
	action void A_Loading( bool first = false )
	{
		if ( first ) A_PlaySound("flak/load",CHAN_WEAPON);
		else A_PlaySound("flak/reload",CHAN_6);
	}
	Default
	{
		Tag "$T_FLAKCANNON";
		Inventory.PickupMessage "$I_FLAKCANNON";
		Weapon.UpSound "flak/select";
		Weapon.SlotNumber 6;
		Weapon.SelectionOrder 4;
		Weapon.AmmoType "UFlakBox";
		Weapon.AmmoUse 1;
		Weapon.AmmoType2 "UFlakBox";
		Weapon.AmmoUse2 1;
		Weapon.AmmoGive 10;
		UTWeapon.DropAmmo 5;
	}
	States
	{
	Spawn:
		FLKP A -1;
		Stop;
		FLKP B -1;
		Stop;
	Select:
		FLKS A 1 A_Raise(int.max);
		Wait;
	Ready:
		FLKS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_WeaponReady(WRF_NOFIRE);
		FLS2 ABCD 1 A_WeaponReady(WRF_NOFIRE);
		FLKL A 1 A_Loading(true);
		FLKL BCEFGIJKMNO 1;
		Goto Idle;
	Loading:
		FLKL A 1
		{
			A_CheckReload();
			if ( invoker.Ammo1.Amount > 0 ) A_Loading();
		}
		FLKL BCEFGIJKMNO 1;
		Goto Idle;
	Idle:
		FLKI A 1 A_WeaponReady();
		Wait;
	Fire:
		FLKF A 1
		{
			A_Overlay(PSP_FLASH,"Flash");
			A_OverlayFlags(PSP_FLASH,PSPF_RenderStyle,true);
			A_OverlayRenderstyle(PSP_FLASH,STYLE_Add);
		}
		FLKF BCDEFGHIJ 1;
		FLKE ABCDEFGHIJKLMNS 1;
		Goto Loading;
	AltFire:
		FLKA A 2
		{
			A_Overlay(PSP_FLASH,"AltFlash");
			A_OverlayFlags(PSP_FLASH,PSPF_RenderStyle,true);
			A_OverlayRenderstyle(PSP_FLASH,STYLE_Add);
		}
		FLKA BCDEFGHIJK 2;
		Goto Loading;
	Deselect:
		FLKD A 0 A_JumpIfNoAmmo("Deselect2");
		FLKD ABCDEF 1;
		FLKD F 1 A_Lower(int.max);
		Wait;
	Deselect2:
		FLD2 ABCDEF 1;
		FLD2 F 1 A_Lower(int.max);
		Wait;
	Flash:
		FLFF ABCDEFGHIJ 1 Bright;
		Stop;
	AltFlash:
		FLFA ABCDEFGHIJK 2 Bright;
		Stop;
	}
}
