actor FlameShot {
	radius 13
	height 8
	speed 20
	damage (6)
	renderstyle Add
	alpha 0.66
	PROJECTILE
	-RANDOMIZE
	Scale 0.6
	DamageType "Fire"
	decal "FlameScorch"
	states	{
	Spawn:
		TNT1 A 3
		FLMX ABCDDEEFF 2 bright
		FLMX H 0 A_SpawnItemEx("FlameShotDebris", 0, 0, 0, 0, 0, 0, 0, 128, 0)
		FLMX H 0 A_Explode(4,128,0)
		FLMX GHIJKL 2 bright A_Explode(2,128,0)
		FLMX H 0 A_SpawnItemEx("FlameDecay", random(-16,16), random(-16,16), 4, 0, 0, 0, 0, 0, 240)
		FLMX MNO 2 bright A_Explode(2,128,0)
		stop
	Death:
		FLMX JKL 3 bright A_Explode(2,128,0)
		FLMX H 0 A_SpawnItemEx("FlameDecay", random(-16,16), random(-16,16), 4, 0, 0, 0, 0, 0, 240)
		FLMX MNO 3 bright A_Explode(2,128,0)
		stop
	}
}

actor FlameShotDebris {
	+CLIENTSIDEONLY
	speed 0
	damage 0
	DamageType "Fire"
	states {
	Spawn:
		TNT1 AAAAA 0 A_CustomMissile("FlameDebrisFX",0,0,random(-8,-6),2,random(-4,6))
		stop
	Death:
		FTHX ABCDEF 3 bright
		stop
	}
}

actor FlameDebrisFX {
	PROJECTILE
	-RANDOMIZE
	+CLIENTSIDEONLY
	-ACTIVATEPCROSS
	-ACTIVATEIMPACT
	radius 13
	height 8
	speed 20
	damage 0
	renderstyle Add
	alpha 0.5
	Scale 0.75
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_SpawnItemEx("FlameThrowerFireRemains", 0, 0, random(0,8), random(-1,1), random(-1,1), random(1,2), 0, 0, 0)
		FLMB A 1 bright
		FLMB A 1 bright ThrustThingZ(0,5,0,1)
		FLMB BCDEFGH 2 bright
		FLMB ABCDEFGH 2 bright A_FadeOut(0.06)
		stop
	Death:
		FLMB A 2 bright
		FLMB A 0 ThrustThingZ(0,5,0,1)
		FLMB BCDEFGH 2 bright
		FLMB ABCDEFGH 2 bright A_FadeOut(0.06)
		stop
	}
}

actor FlameDecay {
	+NOBLOCKMAP
	+NODAMAGETHRUST
	+NOEXPLODEFLOOR
	Gravity 0.5
	DamageType "Fire"
	obituary "%o was playing with %k's fire."
	reactiontime 11
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("FlameDecayFX")
		TNT1 A 0 A_PlaySoundEx("fire/fire","SoundSlot6",1)
	Idle:
		TNT1 A 15 BRIGHT A_Explode (4, 128)
		TNT1 A 0 A_CountDown
		loop
	Death:
		TNT1 A 0 A_PlaySoundEx("fire/firefade","SoundSlot6",0)
		stop
	}
}

actor FlameDecayFX {
	+NOBLOCKMAP +CLIENTSIDEONLY
	states {
	Spawn:
		TNT1 AAAAAAAAAAA 5 A_SpawnItemEx("BurnDeathShot", random(-16,16), random(-16,16), random(0,8), 0, 0, random(1,2), 0, 128, 0)
		TNT1 AAAAAAAAAAA 5 A_SpawnItemEx("BurnDeathShot", random(-16,16), random(-16,16), random(0,8), 0, 0, random(1,2), 0, 128, 0)
		TNT1 AAAAAAAAAAA 5 A_SpawnItemEx("BurnDeathShot", random(-16,16), random(-16,16), random(0,8), 0, 0, random(1,2), 0, 128, 0)
		stop
	}
}

actor FlameDecayStrong : FlameDecay {
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("FlameDecayFX")
		TNT1 A 0 A_PlaySoundEx("fire/fire","SoundSlot6",1)
	Idle:
		TNT1 A 15 BRIGHT A_Explode (16, 128)
		TNT1 A 0 A_CountDown
		loop
	}
}

actor FlameWallDecay : FlameDecay {
	obituary "%o ran into %k's firestorm."
	reactiontime 22
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("FlameWallDecayFX")
		TNT1 A 0 A_PlaySoundEx ("fire/fire", "SoundSlot6", 1)
		goto Idle
	Idle:
		TNT1 A 16 BRIGHT A_Explode (5, 128, 0)
		TNT1 A 0 A_CountDown
		loop
	}
}

actor FlameWallDecayFX {
	Gravity 0.5
	+NOBLOCKMAP +CLIENTSIDEONLY
	states {
	Spawn:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 4 A_SpawnItemEx("BurnDeathShot", random(-16,16)*2, random(-16,16)*2, random(0,8)*2, 0, 0, random(1,3))
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 4 A_SpawnItemEx("BurnDeathShot", random(-16,16)*2, random(-16,16)*2, random(0,8)*2, 0, 0, random(1,3))
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 4 A_SpawnItemEx("BurnDeathShot", random(-16,16)*2, random(-16,16)*2, random(0,8)*2, 0, 0, random(1,3))
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 4 A_SpawnItemEx("BurnDeathShot", random(-16,16)*2, random(-16,16)*2, random(0,8)*2, 0, 0, random(1,3))
		stop
	}
}

actor FastFlameShot : FlameShot {speed 30}