// --------------------------------------------------------------------------
//
// Flamethrower
//
// --------------------------------------------------------------------------
ACTOR StrifeMode : Inventory { Inventory.MaxAmount 1 }
ACTOR Flamer : LowWeapon replaces PlasmaRifle
{
	+DONTSPLASH
	+WEAPON.AMMO_OPTIONAL
	Weapon.SlotNumber 6
	Weapon.AmmoType1 "FLTreload"
	Weapon.AmmoUse1 1
	Weapon.AmmoGive1 0
	Weapon.AmmoType2 "Fuel"
	Weapon.AmmoUse2 0
	Weapon.AmmoGive2 50
	weapon.Kickback 20
	Weapon.UpSound "weapons/upwp2"
	Inventory.PickupMessage "Flamethrower"
	Tag "Flamethrower"
	Scale 0.6
	States
	{
	Ready:
		FLTG A 0 A_PlaySound("weapons/firid", 7, 1, 1)
		FLTG A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		TNT1 A 0 A_JumpifInventory("IsKicking",1,"Kick")
		TNT1 A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		Loop
	Deselect:
		TNT1 A 0 A_StopSound (7)
		TNT1 A 0 A_PlaySound("weapons/swap",6)
		FLTG A 1 Offset (8, 0) A_Lower
		TNT1 A 0 A_Lower
		FLTG A 1 Offset (16, 0) A_Lower
		TNT1 A 0 A_Lower
		FLTG A 1 Offset (24, 0) A_Lower
		TNT1 A 0 A_Lower
		FLTG A 1 Offset (32, 0) A_Lower
		TNT1 A 0 A_Lower
		FLTG A 1 Offset (40, 0) A_Lower
		TNT1 A 0 A_Lower
		FLTG A 1 Offset (48, 0) A_Lower
		TNT1 A 0 A_Lower
		FLTG A 1 Offset (56, 0) A_Lower
		TNT1 A 0 A_Lower
		FLTG A 1 Offset (64, 0) A_Lower
		TNT1 A 1 A_Lower
		Wait
	Select:
		FLTG A 1 Offset (64, 0) A_Raise
		TNT1 A 0 A_Raise
		FLTG A 1 Offset (56, 0) A_Raise
		TNT1 A 0 A_Raise
		FLTG A 1 Offset (48, 0) A_Raise
		TNT1 A 0 A_Raise
		FLTG A 1 Offset (40, 0) A_Raise
		TNT1 A 0 A_Raise
		FLTG A 1 Offset (32, 0) A_Raise
		TNT1 A 0 A_Raise
		FLTG A 1 Offset (24, 0) A_Raise
		TNT1 A 0 A_Raise
		FLTG A 1 Offset (16, 0) A_Raise
		TNT1 A 0 A_Raise
		FLTG A 1 Offset (8, 0) A_Raise
		TNT1 A 0 A_Raise
		Wait
	Fire:
		TNT1 A 0 A_JumpIfInventory("StrifeMode",1,"StrifeFlame")
		FLTG A 0 A_JumpIfNoAmmo("Dryfire")
		TNT1 A 0 A_PlaySound("weapons/flfirest", CHAN_WEAPON, 1)
		FLTG A 1 Offset(0,34) A_GunFlash
		FLTG A 1 Offset(0,38) A_AlertMonsters
		FLTG A 1 Offset(0,43)
		FLTG A 0 A_FireCustomMissile("Charizard",0,1,0,-5,0)
		FLTF AB 1 BRIGHT 
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		TNT1 A 0 Radius_Quake (2, 1, 0, 1, 0)
		FLTG A 0 A_SetPitch(pitch -0.2)
		TNT1 A 0 A_ReFire
		FLTG A 0 A_StopSoundEx("SoundSlot5")
		FLTG A 1 Offset(0,41) A_PlayWeaponSound("weapons/flfireen")
		FLTG A 1 Offset(0,37)
		FLTG A 1 Offset(0,33)
		Goto Ready
	Hold:
		TNT1 A 0 A_JumpIfInventory("StrifeMode",1,"StrifeFlame")
		TNT1 A 0 A_JumpIfNoAmmo("Dryfire")
		TNT1 A 0 A_PlaySoundEX("weapons/flburn", "SoundSlot5", 1)
		FLTF A 1 BRIGHT Offset(-3,44) A_FireCustomMissile("Charizard",0,1,0,-5,0)
		FLTF B 1 BRIGHT Offset(4,46) A_FireCustomMissile("Charizard",0,1,0,-5,0)
		FLTF A 1 BRIGHT Offset(1,45) A_FireCustomMissile("Charizard",0,1,0,-5,0)
		FLTF B 1 BRIGHT Offset(-2,43) A_FireCustomMissile("Charizard",0,1,0,-5,0)
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		TNT1 A 0 Radius_Quake (2, 1, 0, 1, 0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_SetPitch(pitch -0.2)
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_ReFire
		TNT1 A 0 A_StopSoundEx("SoundSlot5")
		FLTG A 1 Offset(0,41) A_PlaySound("weapons/flfireen", CHAN_WEAPON, 1)
		FLTG A 1 Offset(0,37)
		FLTG A 1 Offset(0,33)
		Goto Ready
	StrifeFlame:
		FLTG A 0 A_JumpIfNoAmmo("Dryfire")
		FLTG A 0 A_PlaySound("weapons/flburn", 1, 1, 1)
		FLTF AB 1 BRIGHT 
		TNT1 A 0 A_FireCustomMissile("StrifeFlames")
		TNT1 A 0 A_TakeInventory("FLTreload",3)
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		TNT1 A 0 Radius_Quake (2, 1, 0, 1, 0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_SetPitch(pitch -0.1)
		TNT1 A 0 A_GunFlash
		FLTG A 1 A_ReFire
		TNT1 A 0 A_StopSound (1)
		FLTG A 1 A_PlaySound("weapons/flfireen",6)
		Goto Ready
	AltFire:
		TNT1 A 0 A_JumpIfInventory("StrifeMode",1,"Trade")
		FLTG CCCDDDEEEFF 1
		FLTR ABCDEF 2
		FLTR G 2 A_PlaySound("weapons/valve")
		TNT1 A 0 A_GiveInventory("StrifeMode")
		FLTR H 2 A_Print("Strife Mode", 6)
		FLTR EEDDCCBBAA 1
		FLTG FFEEDDCC 1
		Goto Ready
	Trade:
		FLTG CCCDDDEEEFF 1
		FLTR ABCDEH 2
		FLTR G 2 A_PlaySound("weapons/valve")
		TNT1 A 0 A_TakeInventory("StrifeMode")
		FLTR F 2 A_Print("Normal Mode", 6)
		FLTR EEDDCCBBAA 1
		FLTG FFEEDDCC 1
		Goto Ready
	Flash:
		TNT1 A 1 Bright A_Light1
		TNT1 A 1 Bright A_Light2
		Goto LightDone
	Dryfire:
		FLTG A 0 A_StopSound (1)
		FLTG A 0 A_StopSound (7)
		FLTG A 0 A_StopSoundEx("SoundSlot5")
		FLTG B 3 A_PlaySound("weapons/flfireen", CHAN_WEAPON, 1)
		FLTG A 10
	Reload:
		FLTG A 0 A_StopSound(7)
		FLTG A 0 A_JumpIfInventory("FLTreload", 200, 2)
		FLTG A 0 A_JumpIfInventory("Fuel", 1, "ReloadWork")
		FLTG A 1
		Goto Ready
	ReloadWork:
		FLTG A 0 A_StopSound (1)
		FLTG A 1 Offset(-1,33) 
		FLTG A 1 Offset(-1,34)
		FLTG A 1 Offset(-1,35)
		FLTG A 1 Offset(-1,36)
		FLTG A 1 Offset(-1,37)
		FLTG A 1 Offset(-2,38)
		FLTG A 1 Offset(-2,39)
		FLTG A 1 Offset(-2,40)
		FLTG A 1 Offset(-2,41)
		FLTG A 1 Offset(-2,42)
		FLTG A 1 Offset(-3,43)
		FLTG A 1 Offset(-3,44)
		FLTG A 1 Offset(-3,45)
		FLTG A 1 Offset(-3,46)
		FLTG A 1 Offset(-3,47)
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		FLTG CDE 3
		FLTR ABCDEF 2
		FLTR G 2 A_PlaySound("weapons/valve")
		FLTR HEEFF 2
		FLTR G 2 A_PlaySound("weapons/valve")
		FLTR HEEFF 2
		FLTR G 2 A_PlaySound("weapons/valve")
		FLTR H 2
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
	ReloadLoop:
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		TNT1 A 0 A_TakeInventory("Fuel", 1)
		TNT1 A 0 A_GiveInventory("FLTreload", 1)
		TNT1 A 0 A_JumpIfInventory("FLTreload", 200, "ReloadFinish")
		TNT1 A 0 A_JumpIfInventory("Fuel", 1, "ReloadLoop")
		Goto ReloadFinish
	ReloadFinish:
		FLTR EDCBA 2
		FLTG EDCA 2
		FLTG A 1 Offset(-4,49)
		FLTG A 1 Offset(-3,50)
		FLTG A 1 Offset(-2,52)
		FLTG A 1 Offset(-1,54)
		FLTG A 32
		FLTG A 1 A_PlaySound("weapons/fuel")
		FLTG A 32
		FLTG CDE 2
		FLTR ABCDEHHHG 2
		FLTR F 2 A_PlaySound("weapons/valve")
		FLTR EEHHG 2
		FLTR F 2 A_PlaySound("weapons/valve")
		FLTR EEHHG 2
		FLTR F 2 A_PlaySound("weapons/valve")
		FLTR EDCBA 2
		FLTG EDC 2
		FLTG A 1 Offset(-1,52)
		FLTG A 1 Offset(-1,50)
		FLTG A 1 Offset(-2,48)
		FLTG A 1 Offset(-2,46)
		FLTG A 1 Offset(-3,44)
		FLTG A 1 Offset(-3,42)
		FLTG A 1 Offset(-4,40)
		FLTG A 1 Offset(-3,38)
		FLTG A 1 Offset(-2,36)
		FLTG A 1 Offset(-1,34)
		FLTG A 1 Offset(0,32) A_PlaySound("weapons/flfireen", CHAN_WEAPON, 1)
		Goto Ready
	Spawn:
		FLTP A -1
		Stop
//  Kick Actions
	Kick:
		TNT1 A 0 A_JumpIf (momZ > 0, "AirKick")
		TNT1 A 0 A_JumpIf (momZ < 0, "AirKick")
		TNT1 A 0 A_JumpIfInventory("SuperBlow",1,"BerserkKick")
		KKJR A 1 Offset(0,32)
		KKJR BCDE 1
		KKJR FG 1 A_Recoil(-1)
		KKJR H 2 A_CustomPunch (5,0,0,"FightPuff3") 
		KKJR IHGFEDC 1 
		KKJR BA 1 A_Recoil(+1)
		Goto Ready
	AirKick:
		TNT1 A 0 A_JumpIfInventory("SuperBlow",1,"AirBerserkKick")
		FISG B 1
		FISG B 1 Offset(0,36)
		TNT1 A 0 Offset(-1,32)
		KI3K ABCDE 1
		KI3K F 3 A_CustomPunch (9,0,0,"FightPuff3") 
		KI3K GHIJK 2 
		Goto Ready
	BerserkKick:
		KKJR A 1 Offset(0,32)
		KKJR BCDE 1
		KKJR FG 1 A_Recoil(-1)
		KKJR H 2 A_CustomPunch (9,0,0,"FightPuff3") 
		KKJR IHGFEDC 1 
		KKJR BA 1 A_Recoil(+1)
		Goto Ready
	AirBerserkKick:
		FISG B 1
		FISG B 1 Offset(0,36)
		TNT1 A 0 Offset(-1,32)
		KI3K ABCDE 1 A_Recoil(-2)
		KI3K F 3 A_CustomPunch (12,0,0,"FightPuff3") 
		KI3K GHIJK 2 
		Goto Ready
// TNT Actions
	TNT:
		TNT1 A 0 A_JumpIfInventory("TNTammo",1,1)
		Goto NoTNT
		TNT1 A 0 A_JumpIf(waterlevel>2,"YouCannot")
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 Offset(-20,32)
		TAND ABC 2
		TAND D 2 A_PlaySound ("weapons/tnttr")
		TNT1 A 0 A_FireCustomMissile("STNT",0,0,0,0)
		TNT1 A 0 A_TakeInventory("TNTammo",1)
		TAND EDCBA 2
		TNT1 A 0 A_JumpIfInventory("TNTammo",0,"NoTNT")
		FLTG A 1 Offset(67, 100)
		FLTG A 1 Offset(54, 81)
		FLTG A 1 Offset(32, 69)
		FLTG A 1 Offset(22, 58)
		FLTG A 1 Offset(10, 47)
		FLTG A 1 Offset(7, 39)
		FLTG A 1 Offset(2, 34)
		Goto Ready
	YouCannot:
		TNT1 A 0 A_Print("You Are Underwater!",8)
		Goto Ready
	NoTNT:
		TNT1 A 0 A_Print("No dynamites left.")
		Goto Ready
	}
}


ACTOR FLTreload : Ammo
{
	Inventory.MaxAmount 200
	+IGNORESKILL
}

//===========================================================//
//															 //
// Flame Spray Taken Directly from Strife with single Edits  //
//					( Marked with *)						 //
//===========================================================//

ACTOR Charizard
{
	Speed 35 //*
	Height 11
	Radius 8
	Mass 10
	Damage 3 //*
	DamageType Fire
	ReactionTime 3 //*
	Projectile
	-NOGRAVITY //*
	+STRIFEDAMAGE
	+FIREDAMAGE
	+NOBLOOD //*
	+BLOODLESSIMPACT //*
	Gravity 0.2
	MaxStepHeight 4
	RenderStyle Add
	Alpha .9
	SeeSound ""
	Decal "Revenantscorch"
	Obituary "$OB_MPFLAMETHROWER"
	States
	{
	Spawn:
		TNT1 A 0 A_SetScale(0.65)
		FRBL AB 2 BRIGHT A_Countdown
		FRBL CD 2 BRIGHT 
		Loop
	Death:
		FRBL EFGHIJ 1 BRIGHT
		FRBL KLMNOP 2 BRIGHT
		Stop
	}
}

//===========================================================//
//															 //
// Strife Styled Flames Taken Directly from Strife.			 //
//															 //
//===========================================================//

ACTOR StrifeFlames
{
	Speed 25
	Height 11
	Radius 8
	Mass 10
	Damage 1
	DamageType Fire
	ReactionTime 20
	Projectile
	-NOGRAVITY
	+STRIFEDAMAGE
	+BRIGHT
	MaxStepHeight 4
	RenderStyle Add
	Alpha 1.5
	SeeSound "weapons/flamethrower"
	Obituary "$OB_MPFLAMETHROWER"
	States
	{
	Spawn:
		TNT1 A 0 A_SetScale(0.3)
		FRBL ABCD 2 A_Countdown
		Loop
	Death:
		TNT1 A 0 A_SetScale(0.3)
		FRBL DEFGHI 2 BRIGHT A_SpawnItem("MolotovFire")
		Stop
	}
}

// Molotov Cocktail fire -----------------------------------------

ACTOR MolotovFire
{
	DamageType Fire
	Damage 1
	Reactiontime 80
	+STRIFEDAMAGE
	+NOBLOCKMAP
	+FLOORCLIP
	+NOTELEPORT
	+NODAMAGETHRUST
	+DONTSPLASH
	Decal Scorch
	RenderStyle Add
	Alpha 1.5
	States
	{
	Spawn:
		FWAL C 0 BRIGHT A_PlaySound("weapons/molfl", 7)
		TNT1 A 0 bright A_SpawnItemEx("GunSmokeSpawner",0,0,0,0,0,1,0,128)
		FWAL A 2 BRIGHT A_Explode (22, 35)
		FWAL B 2 BRIGHT A_Countdown
		TNT1 A 0 bright A_SpawnItemEx("GunSmokeSpawner",0,0,0,0,0,1,0,128)
		FWAL C 2 BRIGHT A_Explode (22, 35)
		FWAL D 2 BRIGHT A_Countdown
		TNT1 A 0 bright A_SpawnItemEx("GunSmokeSpawner",0,0,0,0,0,1,0,128)
		FWAL E 2 BRIGHT A_Explode (22, 35)
		FWAL F 2 BRIGHT A_Countdown
		TNT1 A 0 bright A_SpawnItemEx("GunSmokeSpawner",0,0,0,0,0,1,0,128)
		FWAL G 2 BRIGHT A_Explode (22, 35)
		FWAL H 2 BRIGHT A_Countdown
		FWAL H 0 BRIGHT A_PlaySound("weapons/molfl", 7)
		TNT1 A 0 bright A_SpawnItemEx("GunSmokeSpawner",0,0,0,0,0,1,0,128)
		FWAL I 2 BRIGHT A_Explode (22, 35)
		FWAL J 2 BRIGHT A_Countdown
		TNT1 A 0 bright A_SpawnItemEx("GunSmokeSpawner",0,0,0,0,0,1,0,128)
		FWAL K 2 BRIGHT A_Explode (22, 35)
		FWAL L 2 BRIGHT A_Countdown
		TNT1 A 0 bright A_SpawnItemEx("GunSmokeSpawner",0,0,0,0,0,1,0,128)
		FWAL M 2 BRIGHT A_Explode (22, 35)
		FWAL N 2 BRIGHT A_Countdown
		Goto Death
	Death:
		FWAL A 0 A_StopSound(7)
		FWAL ABCDEFG 2 Bright A_FadeOut
		TNT1 A 0 bright A_SpawnItemEx("GunSmokeSpawner",0,0,0,0,0,1,0,128)
		ASHD ABCDEF 1
		Stop
	}
}