/// Fun fact: This weapon originally had a bug in the Original Version where if the Flaks hit any wall and then kills the enemy, The kill will not count in Multiplayer Death or via War Trophies.

Actor GezzdtFlakcannon : UWeapon
{
	Weapon.SelectionOrder 900
	Weapon.Slotnumber 5
	Weapon.AmmoUse 1
	Weapon.AmmoGive 10
	Weapon.AmmoType "Flakammo"
	Weapon.AmmoUse2 1
	Weapon.AmmoGive2 0
	Weapon.AmmoType2 "Flakammo"
	Inventory.PickupMessage "You got the Flak Cannon"
	Obituary "%o was ripped to shreds by %k's Flak Cannon."
	Tag "Flak Cannon"
	Inventory.Icon "1001F0"
	scale 0.1
	States
	{
	Select:
		TNT1 A 0 A_PlaySound("flak/pdown",6)
		FLCE A 1 Offset(67, 100)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCE A 1 Offset(54, 81)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCE A 1 Offset(32, 69)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCE A 1 Offset(22, 58)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCE A 1 Offset(10, 47)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCE A 1 Offset(7, 39)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_PlaySound("flak/hydraul",6)
		FLCE A 2 Offset(2, 34)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCE A 2
		FLCR A 1
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCR ABCDEFGH 2
		TNT1 A 0 A_Raise
		Goto Ready
	Deselect:
		TNT1 A 0 a_playsound ("weapons/holster", 0)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCN A 1 Offset(2, 34)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCN A 1 Offset(7, 39)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCN A 1 Offset(10, 47)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCN A 1 Offset(22, 58)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCN A 1 Offset(32, 69)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCN A 1 Offset(54, 81)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		FLCN A 1 Offset(67, 100)
		TNT1 A 1 A_Lower
		Wait
	Ready:
		FLCN A 1 A_WeaponReady
		Loop
	Fire:
		TNT1 A 0 A_PlaySound("flak/fire",7)
		TNT1 A 0 A_Takeinventory("sparked",1,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_Takeinventory("flakammo",1,TIF_NOTAKEINFINITE)
		TNT1 AAAAAAAA 0 A_FireCustomMissile("FlakFragment",random(-8,8),0,10,5,0,random(-7,7))
		FLFL A 1
		FLCN CDEFGHIJKLMNOPQR 1
		TNT1 A 0 A_PlaySound("weapons/click",7)
		FLCN STUVWXYZ 1
		FLCZ Z 1
		FLCE A 8
		TNT1 A 0 A_PlaySound("flak/load",6)
		FLCR ABCDEFGH 1
		Goto Ready
	AltFire:
		TNT1 A 0 A_PlaySound("flak/altfire",7)
		TNT1 A 0 A_FireCustomMissile("Flakshell",1,1,10,0,0,7)
		FLAF ABCDE 1
		FLFL A 1
		FLAF FGHIJK 1
		FLCE A 12
		TNT1 A 0 A_PlaySound("flak/load",6)
		FLCR ABCDEFGH 1
		Goto Ready
	Spawn:
		FLPU P -1
		Stop
	}
}

ACTOR FlakFragment
{
	Radius 4
	Height 4
	Speed 40
	Damage (24)
	scale 0.3
	gravity 0.05
	Projectile
	BounceType "Doom"
	bouncesound "flak/frag"
	bouncefactor 0.4
	bouncecount 5
	Obituary "%o was ripped to shreds by %k's Flak Cannon."
	WallBounceFactor 0.45
	+BLOODSPLATTER
	+USEBOUNCESTATE
	+FORCEXYBILLBOARD
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_Jump(256,"Spawn1","Spawn2","Spawn3","Spawn4")
		loop
	Spawn1:
		CHNK A 1
		loop
	Spawn2:
		CHNK B 1
		loop
	Spawn3:
		CHNK C 1
		loop
	Spawn4:
		CHNK D 1
		loop
	Bounce:
		"####" "#" 1 A_Gravity
		"####" "#" 0 A_Jumpifinventory("sparked",1,"Bounceloop")
		"####" "#" 0 A_SpawnItemEx("chunkpuff")
		"####" "#" 0 A_Giveinventory("sparked",1)
	Bounceloop:
		"####" "#" 1
		loop
	Death:
		"####" "#" 70
		stop
	XDeath:
		"####" "#" 1 A_PlaySound("flak/chunkhit",6)
		stop
	}
}

ACTOR ShellFragment : FlakFragment
{
speed 30
health 5
}

ACTOR shellSmokeTrail : 8Brandomsmoketrail
{
		States
		{
		Spawn1:
			TNT1 A 1
			SMK1 ABCDEFGHIJ 3 Bright
			SMK1 J 2 Bright A_Fadeout(0.1)
			wait
		Spawn2:
			TNT1 A 1
			SMK2 ABCDEFG 3 Bright
			SMK2 G 2 Bright A_Fadeout(0.1)
			wait
		Spawn3:
			TNT1 A 1
			SMK3 ABCDEFGHIJK 3 Bright
			SMk3 K 2 Bright A_Fadeout(0.1)
			wait
  }
}

Actor Shellpuff
{	
	+NOBLOCKMAP
	+NOGRAVITY
	+LOWGRAVITY
	
	states
	{
		Spawn:
			TNT1 AAAAAAAAAAAA 8 A_SpawnItemEX("shellSmokeTrail",-1,0,0,frandom(0.1,0.3),frandom(0.1,0.3),frandom(0.5,1.5))
			stop
	}
}

ACTOR FlakShell
{
	Radius 8
	Height 8
	Speed 25
	vspeed 1
	Projectile
	scale 0.3
	gravity 0.3
	-NOGRAVITY
	+FORCEXYBILLBOARD
	Obituary "%o was ripped to shreds by %k's Flak Cannon."
	decal scorch
	States
	{
	Spawn:
		TNT1 A 1
	Spawnloop:
		FLSH A 2 A_SpawnItemEX("8BRandomSmokeTrail",-10)
		Loop
	Death:
		TNT1 A 0 A_Explode(104,64)
		TNT1 AAAAAAAAAA 0 A_CustomMissile("AltFlakChunk",0,0,random(-10,10),6,random(2,12))
		TNT1 A 0 A_SpawnItemEX("FlakExplosion")
		TNT1 A 0 A_SpawnItemEX("shellpuff",0,0,1)
		stop
	XDeath:
		TNT1 A 0 A_Explode(104,64)
		TNT1 AAAAAAAAAA 0 A_CustomMissile("AltFlakChunk",0,0,random(-10,10),6,random(2,12))
		TNT1 A 0 A_SpawnItemEX("FlakExplosion")
		stop
	}
}

actor AltFlakChunk
{
  radius 8
  height 8
  speed 40
  damage (24)
  deathsound "flak/frag"
  PROJECTILE
  scale 0.3
  Reactiontime 8
  Obituary "%o was ripped to shreds by %k's Flak Cannon."
  //+HEXENBOUNCE
  //bouncefactor 0.9
  //bouncecount 500
  Gravity 0.6
  +BLOODSPLATTER
  +FORCEXYBILLBOARD
  states
  {
  Spawn:
    CHNK A 0
    CHNK A 0 
    CHNK A 0 A_Jump(128,"Spawn2")
    CHNK A 5 BRIGHT
    CHNK B 3 A_Gravity
    CHNK CD 3 A_Recoil(0.5)
    CHNK D 10 A_Countdown
    goto Spawn+6
  Spawn2:
    FLK3 A 5 BRIGHT
    FLK3 B 3 A_Gravity
    FLK3 CD 3 A_Recoil(0.5)
    FLK3 D 10 A_Countdown
    goto Spawn2+3
  Death:
    TNT1 A 10 A_SpawnItemEx("UFlakDud",0,0,0,random(-20,20),random(-20,20),random(-5,5),0,128,32)
    stop
  XDeath:  
    TNT1 A 0
    TNT1 A 5 A_PlaySound("flak/frag")
    stop
  }
}

actor UFlakDud
{
  radius 8
  height 8
  speed 20
  damage (0)
  seesound "flak/frag"
  PROJECTILE
  scale 0.3
  Reactiontime 8
  +HEXENBOUNCE
  +FORCEXYBILLBOARD
  Obituary "%o was ripped to shreds by %k's Flak Cannon."
  bouncefactor 0.9
  bouncecount 500
  Gravity 0.6
  states
  {
  Spawn:
    CHNK A 0
    CHNK A 0 
    CHNK A 0 A_Jump(128,"Spawn2")
    CHNK B 5 BRIGHT
    CHNK C 3 A_Gravity
    CHNK DD 3 A_Recoil(0.5)
    CHNK D 10 A_Countdown
    goto Spawn+6
  Spawn2:
    FLK3 B 5 BRIGHT
    FLK3 C 3 A_Gravity
    FLK3 DD 3 A_Recoil(0.5)
    FLK3 D 10 A_Countdown
    goto Spawn2+3
  Death:
    TNT1 A 10
    stop
  }
}

Actor FlakExplosion
{
	+NOGRAVITY
	+LOWGRAVITY
	+NOINTERACTION
	+FLOORCLIP
	+FORCEXYBILLBOARD
	scale 1.5
	states
		{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_Playsound("flak/explosion",7)
		FEXP ABCDEFGHIJ 2 Bright
		FEXP J 1 Bright A_Fadeout(0.2)
		wait
		}
}

Actor chunkpuff : Bulletpuff
{	
	+LOWGRAVITY
	+FORCEXYBILLBOARD
	VSpeed 0
	scale 0.6
	states
	{
		Spawn:
			SPRK DEF 2 bright
			SPRK F 1 bright A_Fadeout(0.1)
			wait
		Melee:
			TNT1 A 0
			stop
	}
}

Actor Sparked : Inventory
{Inventory.MaxAmount 1}