ACTOR "Demented Flak Cannon" : Weapon 2052
{
	Game Doom
	Tag "Demented Flak Cannon"
    Radius 20
    Weapon.Kickback 50
	Weapon.SelectionOrder 400
	Weapon.AmmoGive 30
	Weapon.AmmoType "NewShell"
	Weapon.AmmoUse 1
	Weapon.KickBack 5
	+WEAPON.NOAUTOFIRE
	+FORCEXYBILLBOARD
	Inventory.PickupMessage "Demented Flak Cannon"
	Obituary "%k caught %o in a evil flak attack of famous Unreal Tornament"
    Inventory.PickupSound "Weapon/FLAKPKUP"
	DamageType SSG
	+WEAPON.NOAUTOAIM
	+INVENTORY.UNDROPPABLE
	States
	{
	Spawn:
		DFKG Z -1
		Loop
	Ready:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		DFKG A 1 A_WeaponReady
		Loop
	Deselect:
		TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
		DFKG A 1 A_Lower
		Goto Deselect+1
	Select:
		TNT1 AAAAAAAAAAAA 0 A_Raise
		DFKG LMN 2
        TNT1 A 0 A_PlaySound("Weapon/FLAKSLCT")
        DFKG A 8
		Goto Ready
    NoAmmo:
        DFKG A 4 A_PlaySound("Weapon/Empty", 2)
        Goto Ready+6
	Fire:
		TNT1 A 0 A_Recoil(5)
        DFKG B 1 BRIGHT A_playsound("Weapon/DFLAKFIRE", 5)
		DFKG B 1 BRIGHT A_FireCustomMissile("FlakShake", 0, 0, 0, 0)
		DFKG B 0 A_FireCustomMissile("DFlakShard",0+Random(-20,20),1,8,0)
		DFKG B 0 A_FireCustomMissile("DFlakShard",0+Random(-20,20),0,5,4)
		DFKG B 0 A_FireCustomMissile("DFlakShard",0+Random(-20,20),0,8,0)
		DFKG B 0 A_FireCustomMissile("DFlakShard",0+Random(-20,20),0,5,4)
		DFKG B 0 A_FireCustomMissile("DFlakShard",0+Random(-20,20),0,8,0)
		DFKG B 0 A_FireCustomMissile("DFlakShard",0+Random(-20,20),0,8,0)
		DFKG B 0 A_FireCustomMissile("DFlakShard",0+Random(-20,20),0,8,1)
		DFKG B 0 A_FireCustomMissile("DFlak",0+Random(-20,20),1,8,0)
		DFKG B 0 A_FireCustomMissile("DFlak",0+Random(-20,20),0,5,4)
		DFKG B 0 A_FireCustomMissile("DFlak",0+Random(-20,20),0,8,0)
		DFKG B 0 A_FireCustomMissile("DFlak",0+Random(-20,20),0,5,4)
		DFKG B 0 A_FireCustomMissile("DFlak",0+Random(-20,20),0,8,0)
		DFKG B 0 A_FireCustomMissile("DFlak",0+Random(-20,20),0,8,0)
		DFKG B 0 A_FireCustomMissile("DFlak",0+Random(-20,20),0,8,1)
		TNT1 A 0 A_FireBullets (24, 6, 6, 7, "BulletPuff")
		TNT1 A 0 A_SetPitch(-16.0 + pitch)
		TNT1 A 0 A_FireCustomMissile("FlakShake", 0, 0, 0, 0)
        DFKG B 1 BRIGHT A_SetPitch(+2.0 + pitch)
        DFKG C 1
	    TNT1 A 0 A_SetPitch(+2.0 + pitch)
        DFKG C 1
	    TNT1 A 0 A_SetPitch(+2.0 + pitch)
        DFKG C 1
	    TNT1 A 0 A_SetPitch(+2.0 + pitch)
        DFKG C 2
		TNT1 A 0 A_SetPitch(+2.0 + pitch)
        DFKG C 2
		TNT1 A 0 A_SetPitch(+2.0 + pitch)
        DFKG C 3 A_SetPitch(+2.0 + pitch)
		TNT1 A 0 A_SetPitch(+2.0 + pitch)
		DFKG C 2

		//Don't go through reload if we don't have any ammo!
		TNT1 A 0 A_CheckReload

		DFKG DDEEFF 2
		DFKG G 2 A_PlaySound("Weapon/FLAKSNAP")
		DFKG HHOOII 2
		DFKG I 4
		DFKG JK 2
        TNT1 A 0 A_playsound("Weapon/FLAKRELD")
		DFKG L 6
		DFKG MNAA 2
		TNT1 A 0 A_ReFire
		DFKG A 2
        Goto Ready+7

  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready
	
  GrenadeToss:
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	DFKG A 1 Offset(0,30)
	DFKG A 1 Offset(0,40)
	DFKG A 1 Offset(0,50)
	DFKG A 1 Offset(0,60)
	DFKG A 1 Offset(0,70)
	TNT1 A 4 Offset(0,10)
	HGRN ABC 1 
	HGRN D 2
	HGRN EFG 1
	HGRN HI 2
	TNT1 A 15 A_PlayWeaponSound("weapons/hgrenadepin")
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	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
	DFKG A 1 Offset(0,70)
	DFKG A 1 Offset(0,60)
	DFKG A 1 Offset(0,50)
	DFKG A 1 Offset(0,40)
	DFKG A 1 Offset(0,30)
	Goto Ready
	
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto Ready
	
  MineToss:
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	DFKG A 1 Offset(0,30)
	DFKG A 1 Offset(0,40)
	DFKG A 1 Offset(0,50)
	DFKG A 1 Offset(0,60)
	DFKG A 1 Offset(0,70)
	TNT1 A 8 Offset(0,10)
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	MINE ABCDEF 1		
	TNT1 A 0 A_TakeInventory("MineAmmo",1)	  
	MINE G 1 A_FireCustomMissile("ThrownMine",0,0,0,0)
	MINE HI 1
	MINE JK 2
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,2)
    TNT1 A 0 A_TakeInventory("Land Mine",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0
	TNT1 A 5
	DFKG A 1 Offset(0,70)
	DFKG A 1 Offset(0,60)
	DFKG A 1 Offset(0,50)
	DFKG A 1 Offset(0,40)
	DFKG A 1 Offset(0,30)
	Goto Ready
	}
}

ACTOR DFlakShard
  {
  Projectile
  +RANDOMIZE
  +FORCEXYBILLBOARD
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +NOGRAVITY
  +NOBLOCKMAP
  +RIPPER
  +DROPOFF
  +MISSILE 
  +ACTIVATEIMPACT 
  +DOOMBOUNCE
  +DONTSPLASH
  +THRUSPECIES
  +EXTREMEDEATH
  BounceType Grenade
  bouncefactor 1
  BounceSound "ricochet/hit"
  wallbouncefactor 1
  damage (15+5*random(0, 2))
  radius 2
  height 2
  damage 10
  speed 45
  alpha 0.9
  scale 0.4
  Decal "BulletChip"
  DamageType SSG
  states
	{
	Spawn:
		DFKS ABCDABCD 1 BRIGHT Light("DFLAK1")
		DFKS EFGHEFGHEFGH 1 BRIGHT Light("DFLAK2")
		TNT1 A 1 A_CustomMissile("FlakResidue",-5,0,0,CMF_AIMDIRECTION)
	Death:
		FKSD IJKIJKIJK 1
		FKSD KKKK 1 A_FadeOut(0.50)
		Stop
	XDeath:
	TNT1 A 0
	Stop
	}
}

actor DFlak
{
+ThruSpecies
Species "Player"
Decal BulletChip
Radius 8
Height 8
Damage 10
Scale 0.5
Speed 35
BounceSound "ricochet/hit"
+RANDOMIZE
+FORCEXYBILLBOARD
+NOBLOCKMAP
+RIPPER
+DROPOFF 
+MISSILE 
+ACTIVATEIMPACT 
+DOOMBOUNCE
+BOUNCEONFLOORS
+BOUNCEONCEILINGS
+DONTSPLASH
+THRUSPECIES
+EXTREMEDEATH
States
{
Spawn:
DFKS ABCDABCD 1 BRIGHT Light("DFLAK1")
DFKS EFGHEFGHEFGH 1 BRIGHT Light("DFLAK2")
TNT1 A 1 A_CustomMissile("FlakResidue",-5,0,0,CMF_AIMDIRECTION)
DFKS FGH 4 A_SpawnItem("ShrapnelSmoke",0)
Loop
Death:
FKSD IJKIJKIJK 1
FKSD KKKK 1 A_FadeOut(0.50)
Stop
}
}