// --------------------------------------------------------------------------
//
//	Flame Cannon
//
// --------------------------------------------------------------------------

ACTOR U_FlameCannon : BaseWeapon
{
	Weapon.AmmoUse 0
	Weapon.AmmoGive 50
	Weapon.AmmoType "Gasoline"
	Weapon.SelectionOrder 5550
	Obituary "%o was burned to ashes by %k's Flame Cannon."
	Inventory.PickupSound "CLIPINSS"
	Inventory.PickupMessage "You got the Mancubus Flame Cannon!"
	-WEAPON.CHEATNOTWEAPON
	tag "Flame Cannon"
	States
	{
    Spawn:
        MANA H -1
        Stop
		
	Select:
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "PuristGun")
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1010,7)==0, "PuristGun")
		TNT1 A 0 A_Giveinventory("FlameCannonSelected",1)
		TNT1 A 0 A_Giveinventory("GoSpecial",1)
		TNT1 A 0 A_Takeinventory("Unloading",1)
		TNT1 A 0 A_Takeinventory("Reloading",1)
		TNT1 A 0 A_TakeInventory("TossGrenade", 1)
		TNT1 A 0 A_Takeinventory("WeapSpecial",1)
		TNT1 A 0 A_Takeinventory("Taunting",1)
		TNT1 A 0 A_Takeinventory("IdleCounter",200)
		TNT1 A 4
		TNT1 A 0 A_Raise
		Wait
		
	Deselect:
		FLMS ABCDEF 1
		TNT1 A 0 A_TakeInventory("FlameCannonSelected", 1)
		TNT1 A 0 A_Lower
		Wait
		
	Ready:
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		TNT1 A 0 A_PlaySound("CLIPINSS")
	Ready1:
		FLMS FEDCBA 1
	Ready2:
        TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
        TNT1 A 0 A_JumpIfInventory("Taunting",1,"TauntR")
		TNT1 A 0 A_JumpIfInventory("Salute1",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("Salute2",1,"Salute")
		TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
		TNT1 A 0 A_JumpIfInventory("IdleCounter",200,"PlayerIsIdle")
		FLMG A 2 A_WeaponReady
		Goto Ready2		
		
	PuristGun:
		TNT1 A 0 A_TakeInventory("U_FlameCannon", 1)
		Goto Deselect
		
// --------------------------------------------------------------------------
//
//	Fire
//
// --------------------------------------------------------------------------
		
	Fire:
        TNT1 A 0 A_JumpIfInventory("Gasoline", 3, 2)
		TNT1 A 0 A_StopSound(CHAN_WEAPON)
		Goto DryFire
        TNT1 A 0 A_FireCustomMissile("U_FlamethrowerMissile", 0, 1, 0, 0)
		TNT1 A 0 A_PlaySound("FLAMER", CHAN_WEAPON, 1, 1)
		TNT1 A 0 A_TakeInventory("Gasoline", 1)
		FLMF F 1 BRIGHT A_SetAngle(frandom(1, -1) + angle)
		TNT1 A 0 A_TakeInventory("Gasoline", 2)
		FLMF G 1 BRIGHT A_SetPitch(frandom(1, -1) + pitch)
		TNT1 A 0 A_ReFire
		TNT1 A 0 A_PlaySound("FLAMSTOP", CHAN_WEAPON)
		Goto Ready2

	AltFire:
        TNT1 A 0 A_JumpIfInventory("Gasoline", 14, 2)
		TNT1 A 0 A_StopSound(CHAN_WEAPON)
		Goto DryFire
        FLMF A 1 BRIGHT A_FireCustomMissile("U_BigFireBall", 0, 1, 0, 0)
		TNT1 A 0 A_SetPitch(-4.0 + pitch)
		TNT1 A 0 A_TakeInventory("Gasoline", 12)
		TNT1 A 0 A_FireCustomMissile("ShakeYourAssDouble", 0, 0, 0, 0)
        FLMF BC 1 BRIGHT 
        FLMF CD 1 A_SetPitch(+2.0 + pitch)
		FLMG A 10
		TNT1 A 0 A_ReFire
		Goto Ready2
		
	DryFire:
	    FLMG A 10 A_PlaySound("weapons/empty")
		Goto Ready2
		
// --------------------------------------------------------------------------
//
//	End Stuff
//
// --------------------------------------------------------------------------
		
	KickFlash:
		FLMK ABCDE 1
		FLMK F 7
		FLMK EDCBA 1
		FLMG A 1
		Stop
		
	AirKickFlash:
		FLMK ABCDE 1
		FLMK F 9
		FLMK EDCBA 1
		FLMG A 1
		Stop
		
	TauntFlash:
		FLMK ABCDE 1
		FLMK F 33
		FLMK EDCBA 1
		FLMG A 1
		Stop

	GrenadeFlash:
		FLMS ABCDEF 1
		Stop
	}
}

ACTOR U_FlamethrowerMissile
{
	Radius 2
	Height 2
	Speed 24
	Damage 3
	+NOBLOCKMAP
	+NOTELEPORT
	+DONTSPLASH
	+MISSILE
	+FORCEXYBILLBOARD
	-RIPPER
	+NOBLOOD
	+NOBLOODDECALS
	+BLOODLESSIMPACT
	-BLOODSPLATTER
	RenderStyle Add
	DamageType Fire
	Scale 0.5
	Alpha 1.0
	Gravity 0
	States
	{
	Spawn:
	    TNT1 A 0
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
        FIR3 A 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(0, 10))
		FIR3 B 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(0, 15))
		FIR3 C 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(0, 20))
		TNT1 A 0 A_Explode(4, 70, 0)
		
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		FIR3 D 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(0, 25))
		FIR3 E 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(2, 30))
		FIR3 F 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(4, 45))
		TNT1 A 0 A_Explode(4, 85, 0)
		
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		FIR3 G 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(6, 50))
		FIR3 H 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(8, 55))
		FIR3 I 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(10, 60))
		TNT1 A 0 A_Explode(4, 100, 0)
		
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		TNT1 A 0 A_CustomMissile("FlamethrowerFireParticles", 6, 0, random(-30,30), 2, random(10, 20))
		FIR3 JKL 1 BRIGHT A_SpawnItem("RedFlare", 0, 0)
		TNT1 A 0 A_Explode(4, 115, 0)
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		TNT1 A 0 A_CustomMissile("FlamethrowerFireParticles", 6, 0, random(-30,30), 2, random(20, 30))
		FIR3 MNOP 1 BRIGHT A_SpawnItem("RedFlare", 0, 0)
		TNT1 A 0 A_Explode(4, 130, 0)
		TNT1 A 0 A_CustomMissile("FlamethrowerFireParticles", 6, 0, random(-30,30), 2, random(30, 40))
		Stop
	XDeath:
	Death:
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		TNT1 A 0 A_Explode(15, 130, 0)
		TNT1 AA 0 A_CustomMissile("FlamethrowerFireParticles", 6, 0, random(0, 360), 2, random(10, 90))
		TNT1 A 0 A_Jump(256,1,2,3)
		TNT1 A 0 A_SpawnItemEx("TinyBurningPiece3", random(-10, 10), random(-10, 10))
		Stop
		TNT1 A 0 A_SpawnItemEx("TinyBurningPiece2", random(-10, 10), random(-10, 10))
		Stop
		TNT1 A 0 A_SpawnItemEx("TinyBurningPiece", random(-10, 10), random(-10, 10))
		Stop
	Underwater:
		TNT1 AAAA 1 A_CustomMissile("BUBULZ", 0, 0, random(-60, 60), 2, random(-60, 60))
		Stop
	}
}

ACTOR U_FlamethrowerMissile2 : U_FlamethrowerMissile
{
	Scale 0.5
	Speed 3
	States
	{
	Spawn:
	    TNT1 A 0
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
        FIR3 A 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(0, 10))
		FIR3 C 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(0, 15))
		TNT1 A 0 A_Explode(3, 70, 0)
		
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		FIR3 E 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(0, 20))
		FIR3 G 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(2, 25))
		TNT1 A 0 A_Explode(3, 85, 0)
		
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		FIR3 I 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(4, 30))
		FIR3 K 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(6, 35))
		TNT1 A 0 A_Explode(3, 100, 0)
		
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		FIR3 M 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(8, 40))
		FIR3 O 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 0)
		TNT1 A 0 A_CustomMissile("U_SmallFireTrail", 6, 0, random(-20,20), 2, random(10, 45))
		TNT1 A 0 A_Explode(3, 115, 0)
		Stop
	XDeath:
	Death:
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		TNT1 A 0 A_Explode(5, 130, 0)
		Stop
	}
}
	
ACTOR U_BigFireBall : BigFireBall
{
	Damage 14
	Gravity 0.1
	-NOGRAVITY
	Speed 35
	States
	{
	Spawn:
	    TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(798, 0, 0, 0, 0)//Check Effects
		TNT1 A 0 A_JumpIfInventory("lowgraphicsmode", 1, "SpawnCheap")

	Spawn1:
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		TNT1 A 0 A_CustomMissile("FireballExplosionFlamesSmall", 0, 0, random(0, 360), 2, random(00, 360))
		BLHD C 1 BRIGHT A_SpawnItem("RedFlare22")
		TNT1 A 0 A_CustomMissile("FireballExplosionFlamesSmall", 0, 0, random(0, 360), 2, random(00, 360))
		BLHD D 1 BRIGHT A_SpawnItem("RedFlare22")
		TNT1 A 0 A_CustomMissile("RocketSmokeTrail52", 2, 0, random(70, 110), 2, random(0, 360))
		Loop
		
	SpawnCheap:
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		TNT1 A 0 A_SpawnItem("FireballExplosionFlamesSmall")
		MANF AB 1 BRIGHT A_SpawnItem("RedFlare22")
		Loop
		
	Underwater:
		TNT1 A 0 A_CustomMissile("WaterParticleXTinySpawner", 0, 0, random(0, 360), 2, random(60, 130))
		TNT1 AAAAAAAAAAAAAAA 0 A_CustomMissile("BUBULZ", 0, 0, random(-60, 60), 2, random(-60, 60))
		Stop
		
	XDeath:
	Death:
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		TNT1 A 0 A_Explode(100, 130)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		TNT1 A 0 A_JumpIfInventory("lowgraphicsmode", 1, "DeathCheap")
		TNT1 A 0 A_SpawnItem("ExplosionParticleSpawner")
		TNT1 AAAAAAA 0 A_CustomMissile("FireballExplosionFlamesBig", 6, 0, random(0, 360), 2, random(0, 360))
		TNT1 AAA 0 A_CustomMissile("BigNeoSmoke", 2, 0, random(0, 360), 2, random(0, 360))
		TNT1 A 0 A_CustomMissile("FlyingBurningFuelSmall", 12, 0, random(0, 360), 2, random(75, 90))
		TNT1 AAAA 0 A_CustomMissile("TNT1 A 0 A_ReFire", 12, 0, random(0, 360), 2, random(-45, 45))
		TNT1 AA 0 A_SpawnItemEx("TinyBurningPiece", random(-40, 40), random(-40, 40))
		TNT1 AA 0 A_SpawnItemEx("TinyBurningPiece2", random(-40, 40), random(-40, 40))
		TNT1 AA 0 A_SpawnItemEx("TinyBurningPiece3", random(-40, 40), random(-40, 40))
		TNT1 AAAAAA 20 A_CustomMissile("BigBlackSmoke", 0, 0, random(0, 360), 2, random(40, 160))
		Stop
		
	DeathCheap:
		TNT1 AAAA 0 A_CustomMissile("FireballExplosionFlamesBig", 6, 0, random(0, 360), 2, random(0, 360))
		TNT1 AA 0 A_CustomMissile("BigNeoSmoke", 2, 0, random(0, 360), 2, random(0, 360))
		TNT1 A 0 A_CustomMissile("FlyingBurningFuelSmall", 12, 0, random(0, 360), 2, random(75, 90))
		TNT1 AAAA 0 A_CustomMissile("U_FlamethrowerMissile2", 12, 0, random(0, 360), 2, random(-45, 45))
		TNT1 AA 0 A_SpawnItemEx("TinyBurningPiece", random(-40, 40), random(-40, 40))
		TNT1 AA 0 A_SpawnItemEx("TinyBurningPiece2", random(-40, 40), random(-40, 40))
		TNT1 AA 0 A_SpawnItemEx("TinyBurningPiece3", random(-40, 40), random(-40, 40))
		TNT1 AAA 40 A_CustomMissile("BigBlackSmoke", 0, 0, random(0, 360), 2, random(40, 160))
		Stop
	}
}

ACTOR U_SmallFireTrail: FlameTrails
{
	Scale 0.7
	Speed 3
	Alpha 0.7
	Radius 1
	Height 1
	Renderstyle Add
	States
	{
    Spawn:
        FIR3 ABCDEFGHIJKLMNOP 2 BRIGHT A_JumpIf(waterlevel > 1, "Underwater")
		Stop
	Underwater:
		TNT1 AA 1 A_CustomMissile("BUBULZ", 0, 0, random(-80, 80), 2, random(-45, 45))
		Stop
	}
}

ACTOR FlameCannonDummy
{
    Radius 0
    Height 0
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
	+CLIENTSIDEONLY
    States
    {
    Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(798, 0, 0, 0, 0)//Check Effects
		Goto Rest
	Rest:
		MANA H 1000
		TNT1 A 0 A_JumpIfInventory("lowgraphicsmode", 1, "Vanish")
        MANA H 20000
	Vanish:
		MANA H 1 A_FadeOut(0.1)
		Wait
    }
}