Class UFlakBox : Ammo { Default { Tag "Flak Shell Box"; Inventory.Icon "I_Flak"; Inventory.PickupMessage "You picked up 10 Flak Shells."; Inventory.Amount 10; Inventory.MaxAmount 50; Ammo.BackpackAmount 5; Ammo.BackpackMaxAmount 100; Ammo.DropAmount 5; } States { Spawn: FBOX A -1; Stop; } } Class UFlakAmmo : UFlakBox { Default { Tag "Flak Shell"; Inventory.Icon "I_Flak"; Inventory.PickupMessage "You picked up a Flak Shell."; Inventory.Amount 1; Ammo.DropAmount 1; } States { Spawn: FSHL B -1; Stop; } } Class UFlakCannon : UnrealWeapon { bool bLoaded; action void A_Loading( bool first = false ) { invoker.bLoaded = true; if ( first ) A_PlaySound("uflak/load",CHAN_WEAPON); else A_PlaySound("uflak/reload",CHAN_6); } Default { Tag "Flak Cannon"; Inventory.PickupMessage "You got the Flak Cannon."; Weapon.UpSound "uflak/select"; Weapon.SlotNumber 6; Weapon.SelectionOrder 4; Weapon.AmmoType "UFlakBox"; Weapon.AmmoUse 1; Weapon.AmmoType2 "UFlakBox"; Weapon.AmmoUse2 1; Weapon.AmmoGive 10; } 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_Loading(); FLKL BCEFGIJKMNO 1; Goto Idle; Idle: FLKI A 1 { A_CheckReload(); A_WeaponReady(); } Wait; Idle2: FLI2 A 1 { A_CheckReload(); A_WeaponReady(); } Wait; Fire: FLKI A 0 A_JumpIf(!invoker.bLoaded,"Loading"); FLKF ABCDEFGHIJ 1; FLKE ABCDEFGHIJKLMNS 1; FLKE S 0 A_JumpIfNoAmmo("Idle2"); Goto Loading; AltFire: FLKI A 0 A_JumpIf(!invoker.bLoaded,"Loading"); FLKA ABCDEFGHIJK 2; FLKA K 0 A_JumpIfNoAmmo("Idle2"); 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; } }