// *** MODIFIED BY CHEBMASTER
// I mark most important places modified by me with //***Che -- unless I forget to.


ACTOR FlameTrails
{
	Game Doom
	Radius 1
	Height 1
	Speed 3
    PROJECTILE //***Che includes +NOBLOCKMAP
	-NOGRAVITY
	+FORCEXYBILLBOARD
    +CLIENTSIDEONLY
	+THRUACTORS
	+DOOMBOUNCE
	RenderStyle Add
    damagetype fire
    Scale 0.5
	Gravity 0
	States
	{
		Spawn:
			TNT1 A 1
			TNT1 A 1 A_JumpIf(waterlevel > 1, "Bubble")
			FRPR ABCDEFGH 3 BRIGHT
			Stop
		Bubble:
			TNT1 A 2 A_CustomMissile("BUBULZ",0,0, 0,CMF_AIMDIRECTION | CMF_ABSOLUTEPITCH, pitch)
			Stop

	}
}

ACTOR GreenFlameTrails: FlameTrails
{
	States
	{
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Bubble")
			FRPG CDEFGH 1 BRIGHT
			Stop
	}
}


ACTOR GreenFlameTrailsbIG: FlameTrails
{
Speed 2
	States
	{
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Bubble")
			FIR6 ABCDEFGHIJKLMNOPQRST 2 BRIGHT
			Stop
	}
}

ACTOR BlueFlameTrails: FlameTrails
{
	States
	{
		Spawn:
			TNT1 A 2
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Bubble")
			FRPB CDEFGH 1 BRIGHT
			Stop
	}
}

ACTOR SmallFlameTrails: FlameTrails
{

    Scale 0.3
	States
	{
		Spawn:
			TNT1 A 2
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Bubble")
			FRPR ABCDEFGH 3 BRIGHT
			Stop
	}
}

ACTOR SmallGreenFlameTrails: GreenFlameTrails // used by knights barons and dukes for attack charging sfx
{

    Scale 0.3
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_JumpIf(!CallAcs("FBD_RequestExpensiveSfx", 6), "Vanish")
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Bubble")
			FRPG CDEFGH 1 BRIGHT
			Stop
		Vanish:
			TNT1 A 1
			Stop
	}	
}

ACTOR SmallBlueFlameTrails: BlueFlameTrails
{

    Scale 0.3
}




ACTOR FireBallExplosion: FlameTrails
{
Scale 1.6
	States
	{
    Spawn:
        //FRFX KKKLLLMMMNNN 3 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
        //FRFX OOOPP 3 BRIGHT

        FX98 ABCDEFGHIJKL 1 BRIGHT A_SpawnItem("YellowFlare",0,0)
        FX98 MNOPQ 1
        Stop
	}
}

ACTOR ExplosionFlames: FlameTrails
{
Scale 2.2
Speed 2
+DOOMBOUNCE
	States
	{
    Spawn:
        EXPL AA 3 BRIGHT A_SpawnItem("RedFlare",0,0)
		EXPL AA 0 A_CustomMissile ("ExplosionSmokeHD", 0, 0, random (0, 360), 2, random (0, 360))
        EXPL BCDEFGH 3 BRIGHT
        Stop
	}
}


ACTOR TankExplosionFlames: FlameTrails
{
Scale 4.0
Speed 12
+DOOMBOUNCE
	States
	{
    Spawn:
        EXPL AAA 1 BRIGHT A_SpawnItem("RedFlare",0,0)
        EXPL BCDEFG 1 BRIGHT
		EXPL AA 0 A_CustomMissile ("BigNeoSmoke", 0, 0, random (0, 360), 2, random (0, 360))
		EXPL HHHHHHH 1 A_FadeOut(0.1)
        Stop
	}
}


ACTOR ExplosionFlamesBig2: ExplosionFlames
{
Scale 4.2
Speed 4
	States
	{
    Spawn:
        EXPL AA 6 BRIGHT A_SpawnItem("ExplosionFlareSpawner",0,0)
		EXPL AA 0 A_CustomMissile ("ExplosionSmokeHDLarge", 0, 0, random (0, 360), 2, random (0, 360))
        EXPL ABCDEFGHII 6 BRIGHT
		EXPL HHHHHHHHHHHHHHHHHHHHHHHHH 2 BRIGHT A_FadeOut(0.06)
        Stop
	}
}


ACTOR ExplosionFlamesBig: ExplosionFlames
{
Scale 6.2
Speed 4
	States
	{
    Spawn:
        EXPL AA 6 BRIGHT A_SpawnItem("ExplosionFlareSpawner",0,0)
		EXPL AA 0 A_CustomMissile ("ExplosionSmokeHDLarge", 0, 0, random (0, 360), 2, random (0, 360))
        EXPL BCDEFGGH 6 BRIGHT
		EXPL HHHHHHHHHHHHHHHHHHHHHHHHH 2 BRIGHT A_FadeOut(0.06)
        Stop
	}
}


ACTOR ExplosionFlamesGiant: ExplosionFlames
{
Scale 9.2
Speed 5
	States
	{
    Spawn:
        EXPL AAA 8 BRIGHT
        EXPL BCDEFGGGGH 10 BRIGHT
		EXPL HHHHHHHHHHHHHHHHHHHHHHHHH 2 BRIGHT A_FadeOut(0.06)
        Stop
	}
}

ACTOR SmallExplosionFlames: ExplosionFlames
{
Scale 0.9
Speed 3
	States
	{
    Spawn:
        EXPL AA 2 BRIGHT A_SpawnItem("RedFlare",0,0)
        EXPL BCDEF 1 BRIGHT
        EXPL GH 1 BRIGHT
        Stop
	}
}

ACTOR MediumExplosionFlames: ExplosionFlames
{
Scale 1.3
Speed 4
	States
	{
    Spawn:
        EXPL AA 2 BRIGHT A_SpawnItem("RedFlare",0,0)
		EXPL AA 0 A_CustomMissile ("ExplosionSmokeHD", 0, 0, random (0, 360), 2, random (0, 360))
        EXPL BCDEF 1 BRIGHT
        EXPL GHHH 1 BRIGHT
        Stop
	}
}


ACTOR NuclearFlames: ExplosionFlames
{
Scale 5.2
Speed 5
	States
	{
    Spawn:
        X003 ABCDEFGHIJKLMNOPQRSTUVWXYZ 4 BRIGHT
        Stop
	}
}



ACTOR NuclearFlamesImpact: ExplosionFlames
{
Scale 12.2
Speed 96
-CLIENTSIDEONLY
+FORCERADIUSDMG
Damagetype "Extreme"
	States
	{
    Spawn:
        EXPL ABCDFGH 2 BRIGHT A_Explode(64, 500)
		EXPL IIIIIIIIIIIIIIII 1 BRIGHT A_FAdeout(0.2)
        Stop
	}
}



ACTOR NuclearFlamesBig: ExplosionFlames
{
Scale 12.2
Speed 3
	States
	{
    Spawn:
        X003 ABCDEFGHIJKLMNOPQRSTUVWXYZ 4 BRIGHT
        Stop
	}
}


ACTOR GreenExplosionFlameTrail: ExplosionFlames
{
Scale 0.5
	States
	{
    Spawn:
	    TNT1 A 2
        EXPG CDEFG 1 BRIGHT
        Stop
	}
}




ACTOR ImBallGettingReady: FlameTrails
{
	+NOINTERACTION
	+NOCLIP
    Scale 0.5
	Speed 1
	States
	{
    Spawn:
        BLHD AB 1 BRIGHT
        Stop
	}
}


ACTOR BallGettingReadyGreen: ImBallGettingReady
{
Speed 0
-FORCEXYBILLBOARD
Alpha 1.0
Renderstyle Add
    Scale 1.6
	States
	{
    Spawn:
        FRPG JK 3 BRIGHT
        Stop
	}
}


ACTOR TorchBall: ImBallGettingReady
{
Speed 0
-FORCEXYBILLBOARD

Alpha 1.0
Renderstyle Add
    YScale 1.2
	XScale 1.6
	States
	{
    Spawn:
        FRFX ABABABAB 2 BRIGHT
        Stop
	}
}

ACTOR TorchBallBlue: ImBallGettingReady
{
Speed 0
-FORCEXYBILLBOARD
Alpha 1.0
Renderstyle Add
    YScale 1.2
	XScale 1.6
	States
	{
    Spawn:
		FRPB JKJKJKJKJK 2 BRIGHT
        Stop
	}
}

ACTOR TorchBallGreen: ImBallGettingReady
{
Speed 0
-FORCEXYBILLBOARD
Alpha 1.0
Renderstyle Add
    YScale 1.2
	XScale 1.6
	States
	{
    Spawn:
        FRPG JKJKJKJKJK 2 BRIGHT
        Stop
	}
}

ACTOR RealisticFireSparks1: ImBallGettingReady
{
Speed 0
-FORCEXYBILLBOARD
+NOINTERACTION
+NOCLIP
Alpha 1.0
Renderstyle Add
    YScale 1.0
	XScale -1.0
	States
	{
    Spawn:
        SPFN ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 BRIGHT
		SPFM ABCDEFG 1 BRIGHT
        Stop
	}
}


ACTOR RealisticFireSparksLoop: RealisticFireSparks1
{
	States
	{
    Spawn:
        SPFN ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 BRIGHT
		SPFM ABCDEFG 1 BRIGHT
        Loop
	}
}



ACTOR RealisticFireSparksLoopBig: RealisticFireSparksLoop
{
YScale 2.0
XScale -2.0
}

ACTOR RealisticFireSparks1Green: ImBallGettingReady
{
Speed 0
-FORCEXYBILLBOARD
Alpha 1.0
Renderstyle Add
    YScale 1.0
	XScale -1.0
	States
	{
    Spawn:
        SPGN ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 BRIGHT
		SPGM ABCDEFG 1 BRIGHT
        Stop
	}
}


ACTOR RealisticFireSparks1Blue: ImBallGettingReady
{
Speed 0
-FORCEXYBILLBOARD
Alpha 1.0
Renderstyle Add
Translation "112:127=[0,72,145]:[66,160,255]"
    YScale 1.0
	XScale -1.0
	States
	{
    Spawn:
        SPGN ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 BRIGHT
		SPGM ABCDEFG 1 BRIGHT
        Stop
	}
}

ACTOR RealFlameTrailsSmall
{
	Game Doom
	Radius 1
	Height 1
	Speed 4
	Damage 0 
	//***Che noclip + nointeraction are enough to exclude the actor from any and all collision checking, no further flags necessary
	// nointeraction also includes noblockmap
    //+NOBLOCKMAP
    //+NOTELEPORT
    //+DONTSPLASH
	+MISSILE
	+FORCEYBILLBOARD
    +CLIENTSIDEONLY
    //+NOINTERACTION
	+NOCLIP
	+NOINTERACTION
	RenderStyle Add
    damagetype fire
    Scale 0.8
	Alpha 1.0
	Gravity 0
	States
	{
    Spawn:
	    TNT1 A 0
        FIR1 AABBCCDEFGHII 1 BRIGHT
        Stop
	}
}



ACTOR RealFlameTrailsMedium: RealFlameTrailsSmall
{
    Scale 1.9
	Speed 2
	States
	{
    Spawn:
	    TNT1 A 0
        FIR1 AABBCCDEFGHII 2 BRIGHT
        Stop
	}
}



ACTOR CoolandNewFlameTrails: FlameTrails
{
    Scale 0.3
	Speed 1
	States
	{
    Spawn:
	    TNT1 A 2
        FIR3 MP 1 BRIGHT
        Stop
	}
}

ACTOR CoolandNewFlameTrailsLong: FlameTrails
{
    Scale 0.6
	Speed 1
	States
	{
    Spawn:
	    //TNT1 A 2
        FIR3 BCDEFGHIJKLMNOP 1 BRIGHT
        Stop
	}
}

ACTOR CoolandNewFlameTrailsLongAlpha: CoolandNewFlameTrailsLong
{
Alpha 0.5
}

ACTOR FireballExplosionFlames: FlameTrails
{
    Scale 0.8
	Speed 1
	States
	{
		Spawn:
			TNT1 A 0 
			FIR3 CDEFGHIJKLMNOP 1 BRIGHT A_JumpIf(waterlevel > 1, "Underwater")
			Stop
		Underwater:
			TNT1 AAAA 0 A_CustomMissile ("EXPLOSIONBUBULZ", 0, 0, random (0, 360), 2, random (180, 360))
			SMOK ABCDEFGHIJKLMNOPQR 1
			Stop
	}
}

ACTOR FireballExplosionFlamesSmall: FireballExplosionFlames
{
    Scale 0.8
	Speed 1
	States
	{
		Spawn:
			TNT1 A 2
			FIR3 NOP 1 BRIGHT A_JumpIf(waterlevel > 1, "Underwater")
			Stop
		Underwater:
			TNT1 AAA 0 A_CustomMissile ("EXPLOSIONBUBULZ", 0, 0, random (0, 360), 2, random (180, 360))
			Stop			
	}
}




ACTOR FireballExplosionFlamesBig: FireballExplosionFlames
{
    Scale 1.6
	Speed 2
	States
	{
		Spawn:
			FIR3 CDEFGHIJKLMNOP 2 BRIGHT A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_CustomMissile("ExplosionSmoke", 15, 0, random (0, 360), 2, random (50, 130))
			Stop
	}
}



ACTOR FireballExplosionFlamesMedium: FireballExplosionFlames
{
    Scale 1.1
	Speed 4
	States
	{
    Spawn:
        FIR3 ABCDEFGHIJKLMNOP 1 BRIGHT A_JumpIf(waterlevel > 1, "Underwater")
        Stop
	}
}


ACTOR FireAndSmokeMedium: FireballExplosionFlamesMedium
{
    Scale 0.8
	Speed 1
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrailDarker", 0, 0, random (0, 360), 2, random (-90, 90))
			FIR3 ABCDEFGHIJKLMNOP 1 BRIGHT A_JumpIf(waterlevel > 1, "Underwater")
			Stop
		Underwater:
			TNT1 AAA 0 A_CustomMissile ("EXPLOSIONBUBULZ", 0, 0, random (0, 360), 2, random (-90, 90))
			Stop			
	}
}





ACTOR 12SmallFireFocusSpawnerz: BarrelExplosionSmokeColumn
{
	States
	{
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Stap")

			TNT1 A 0 A_Jump(128, 4)
			TNT1 A 0 A_SpawnItemEx("ExplosionSimpleSmokeColumn",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("SmallFireFocus24",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			TNT1 AAAA 0
			Stop
	}
}

ACTOR 100SmallFireFocusSpawnerz: BarrelExplosionSmokeColumn
{
	States
	{
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Stap")
			TNT1 A 0 A_SpawnItemEx("ExplosionSimpleSmokeColumn",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("SmallFireFocus24",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			Stop
	}
}

ACTOR SmallFireFocus24: BarrelExplosionSmokeColumn
{
	Alpha 0.9
	RenderStyle Translucent
	Scale 0.6
	States
	{
		Spawn:
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Stap")
			FLME ABCDEFGHIJKLMNABCDEFGHIJKLMNABCDEFGHIJKLMNABCDEFGHIJKLMN 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 10)
			FLME ABCDEFGHIJKLMNABCDEFGHIJKLMNABCDEFGHIJKLMNABCDEFGHIJKLMN 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 10)
			FLME AB 1 BRIGHT A_SetScale(0.7, 0.7)
			FLME ABCDEFGHIJKLMN 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 10)
			FLME AB 1 BRIGHT A_SetScale(0.6, 0.6)
			FLME ABCDEFGHIJKLMN 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 10)
			FLME AB 1 BRIGHT A_SetScale(0.5, 0.35)
			FLME CD 1 BRIGHT A_SetScale(0.4, 0.2)
			FLME EF 1 BRIGHT A_SetScale(0.3, 0.1)
			Stop
    }
}
	
	
	
	
	
ACTOR FlyingBurningFuel
{
    Radius 8
    Height 8
    Speed 11
    XScale 1.4
	Yscale 0.9
	Mass 1
	Damage 3
    +NOBLOCKMAP
	+MISSILE
    +NOTELEPORT
    +MOVEWITHSECTOR
    +BLOODLESSIMPACT 
	-DONTSPLASH
	+THRUGHOST
	+NODAMAGETHRUST
	damagetype Fire
	Decal Decal
	Renderstyle Add
	Mass 1
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
        TNT1 A 2 A_CustomMissile ("FlameTrails", 0, 0, random (0, 360), 2, random (0, 180))
        Loop
    Death:
	TNT1 AAAAAA 0 A_CustomMissile ("FlameTrails", 0, 0, random (0, 360), 2, random (0, 180))
    
	TNT1 A 0 A_Playsound("props/redfire", 1)
  	
	TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
	NF3R ABCDFEGHIJKLMNOP 1 BRIGHT
	TNT1 A 0 A_Explode(16, 128, 0)
	
	TNT1 A 0 A_SpawnItemEx("ExplosionSimpleSmokeColumn",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
	NF3R ABCDFEGHIJKLMNOP 1 BRIGHT
	TNT1 A 0 A_Explode(16, 128, 0)
	
	TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
	NF3R ABCDFEGHIJKLMNOP 1 BRIGHT
	TNT1 A 0 A_Explode(16, 96, 0)
	
	TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
	NF3R ABCDFEGHIJKLMNOP 1 BRIGHT
	TNT1 A 0 A_Explode(16, 80, 0)
	
	TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
	NF3R ABCDFEGHIJKLMNOP 1 BRIGHT
	TNT1 A 0 A_Explode(16, 80, 0)
	
	TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
	NF3R ABCDFEGHIJKLMNOP 1 BRIGHT
	TNT1 A 0 A_Explode(16, 80, 0)
	
	TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
	NF3R ABCDFEGHIJKLMNOP 1 BRIGHT
	TNT1 A 0 A_Explode(16, 80, 0)
	
	TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
	NF3R ABCDFEGHIJKLMNOP 1 BRIGHT
	TNT1 A 0 A_Explode(16, 80, 0)
	TNT1 A 0 A_SetScale(1.4, 0.7)
	
	TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
	NF3R ABCDFEGHIJKLMNOP 1 BRIGHT
	TNT1 A 0 A_SetScale(1.2, 0.6)
	TNT1 A 0 A_Explode(8, 40, 0)
	NF3R ACEGIKMO 1 BRIGHT
	TNT1 A 0 A_SetScale(1.2, 0.5)
	NF3R ACEGIKMO 1 BRIGHT
	TNT1 A 0 A_SetScale(1.0, 0.4)
	NF3R ACEGIKMO 1 BRIGHT
	TNT1 A 0 A_SetScale(1.0, 0.3)
	NF3R ACEGIKMO 1 BRIGHT
	TNT1 A 0 A_SetScale(1.0, 0.2)
	Stop
     Underwater:
	 Splash:
	    TNT1 A 0
        Stop
    }
}






ACTOR FlamethrowerBurningStuff
{
    Radius 12
    Height 12
    Speed 5
	PROJECTILE
	+MISSILE
    +NOTELEPORT
    +BLOODLESSIMPACT 
	+THRUGHOST
	+NODAMAGETHRUST
	+NOGRAVITY
	+FLOAT
	+DONTFALL
	+FORCERADIUSDMG
	damagetype Flames //***Che to allow direct Fire damage headshots  im switching all AOE to Flames //Fire
	Renderstyle Add
	Gravity 0.2
	Mass 0
    States
    {
		Spawn:
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
/*		TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4", "live")
		Goto Spawn1
		
		Spawn1:
			TNT1 A 0 A_SetScale(0.9, 1.3)
			Goto Live
			
		Spawn2:
			TNT1 A 0 A_SetScale(-0.9, 0.8)
			Goto Live
			
		Spawn3:
			TNT1 A 0 A_SetScale(-1.1, 0.9)
			Goto Live
			
		Spawn4:
			TNT1 A 0 A_SetScale(1.2, 1.1)
			Goto Live	
*/			
		Live:
			tnt1 A 10
			Stop
		XDeath:
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		Death:
			TNT1 A 0 
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Playsound("props/redfire", 1)
			// This pseudorandom gives *the same* result for identical range at a given position *during a whole second*
			// So using different ranges that aren't divisible by each other is a must!
			// (the pseudorandom uses a simple modulo by range on a ~11-bit seed)			
			TNT1 A 0 A_SetScale((CallAcs("FBD_PseudoRandom", 0, 6) < 4 ? -1 : 1) * 0.1 * CallAcs("FBD_PseudoRandom", 8, 12), 0.1 * CallAcs("FBD_PseudoRandom", 7, 15))
			//TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64)
			
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64)
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64)
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64)
			
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64)
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64)
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64)
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64)
		
		TurnOff:
			NF4R QRSTUV 1 BRIGHT
			TNT1 A 0 A_checkFloor("Smoke")
			Stop
		Underwater:
		Splash:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SetDamageType("Slime") // inflict nukage type damage: the boiled player melts with a horrible scream
			TNT1 A 0 A_Explode(50, 120, 0)
			TNT1 A 1
			Stop
			
		Smoke:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx("ExplosionSimpleSmokeColumn",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			Stop
    }
}

ACTOR FlamethrowerBurningStuffNoSelfHarm: FlamethrowerBurningStuff
{
	States
	{
		XDeath:
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		Death:
			TNT1 A 0
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Playsound("props/redfire", 1)
			// This pseudorandom gives *the same* result for identical range at a given position *during a whole second*
			// So using different ranges that aren't divisible by each other is a must!
			// (the pseudorandom uses a simple modulo by range on a ~11-bit seed)			
			TNT1 A 0 A_SetScale((CallAcs("FBD_PseudoRandom", 0, 6) < 4 ? -1 : 1) * 0.1 * CallAcs("FBD_PseudoRandom", 8, 12), 0.1 * CallAcs("FBD_PseudoRandom", 7, 15))
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			
			TNT1 A 0 A_Jump(32, "TurnOff")
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)

			Goto TurnOff
	}
}

ACTOR ImmolantBurningStuff: FlamethrowerBurningStuffNoSelfHarm 
{
	damagetype Flames
}

ACTOR FlamethrowerBurningStuffShortLived: FlamethrowerBurningStuffNoSelfHarm // for the wall of flames boss attack
{
	States
	{
		XDeath:
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		Death:
			TNT1 A 0
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")

			//TNT1 A 0 A_Playsound("props/redfire", 1)
			
			TNT1 A 0 A_SetScale((CallAcs("FBD_PseudoRandom", 0, 6) < 4 ? -1 : 1) * 0.1 * CallAcs("FBD_PseudoRandom", 8, 12), 0.1 * CallAcs("FBD_PseudoRandom", 7, 15))
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			Goto TurnOff
		/*	
			TNT1 A 0 A_CustomMissile ("RealisticFireSparks1", 10, 0, random (0, 140), 2, random (0, 160))
			NF4R ABCDFEGHIJKLMNOP 1 BRIGHT
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 A 0 A_Explode(16, 64, 0)
			Goto TurnOff
		*/	
		TurnOff:
			NF4R QRSTUV 1 BRIGHT 
			// no smoke
			Stop			
	}

}



ACTOR FlyingLava: FlyingBurningFuel
{
    Renderstyle ADd
	Alpha 1.0
	Gravity 1.0
	Speed 9
	Scale 0.1
	Radius 14
	Height 14
	+NODAMAGETHRUST
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
        LAVA A 1
		LAVA A 1 A_SetScale(0.2, 0.2)
		LAVA A 1 A_SetScale(0.3, 0.3)
		LAVA A 1 A_SetScale(0.4, 0.4)
		LAVA A 1 A_SetScale(0.5, 0.5)
		LAVA A 1 A_SetScale(0.6, 0.6)
		LAVA A 1 A_SetScale(0.7, 0.7)
		LAVA A 1 A_SetScale(0.8, 0.8)
		LAVA A 1 A_SetScale(0.9, 0.9)
		LAVA A 1 A_SetScale(1.0, 1.0)
	Fly:	
		LAVA A 2
        Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_Explode(32, 120, 1, 120)
		EXPL AAAA 0 A_CustomMissile ("FireBallExplosionFlames", 1, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_SpawnItemEx("TinyBurningPiece3", random (-5, 5), random (-5, 5))
		Stop	
    }
}	

ACTOR FlyingLava2: FlyingLava
{
	Speed 10
	Scale 0.2
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
        LAVA B 1
		LAVA B 1 A_SetScale(0.3, 0.3)
		LAVA B 1 A_SetScale(0.4, 0.4)
		LAVA B 1 A_SetScale(0.5, 0.5)
		LAVA B 1 A_SetScale(0.6, 0.6)
		LAVA B 1 A_SetScale(0.7, 0.7)
		LAVA B 1 A_SetScale(0.8, 0.8)
		LAVA B 1 A_SetScale(0.9, 0.9)
		LAVA B 1 A_SetScale(1.0, 1.0)
		LAVA B 1 A_SetScale(1.1, 1.1)
		LAVA B 1 A_SetScale(1.2, 1.2)
	Fly:	
		LAVA A 2
        Loop
    }
}

ACTOR FlyingLava1b: FlyingLava
{
	Speed 12
	Scale -0.4
	Damage 10
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
        LAVA A 2
        Loop
    }
}

ACTOR FlyingLava2b: FlyingLava1b
{
	Speed 14
	Scale -0.6
	Damage 10
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
        LAVA B 2
        Loop
		
		
    }
}


ACTOR FlyingLava1c: FlyingLava1b
{
	Speed 8
	Scale 0.3
	+THRUACTORS
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
        LAVA C 2
        Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_Explode(4, 32, 1)
		EXPL AA 0 A_CustomMissile ("FireBallExplosionFlames", 1, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_SpawnItemEx("TinyBurningPiece3", random (-5, 5), random (-5, 5))
		Stop	
    }
}

ACTOR FlyingLava2c: FlyingLava1c
{
	Speed 8
	Scale 0.3
	+THRUACTORS
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
        LAVA B 2
        Loop	
    }
}


ACTOR FlyingLava1d: FlyingLava1c
{
	Speed 8
	Scale 0.3
	Damagetype "Fire"
	-THRUACTORS
	Damage 2
    States
    {
    Spawn:
	    LAVA A 1
		Goto Death
    }
}

	

Actor FlyingBurningFuel2: FlyingBurningFuel
{
speed 8
}

Actor FlyingBurningFuel3: FlyingBurningFuel
{
speed 15
}





ACTOR FlamethrowerFireParticles
{
	Game Doom
	Radius 1
	Height 1
	Speed 2
	Damage 0 
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
	+MISSILE
    +CLIENTSIDEONLY
    +NOINTERACTION
	+NOCLIP
	+FORCEXYBILLBOARD
	damagetype fire
	Renderstyle Add
    Scale 2.0
	Alpha 1.0
	Gravity 0
	States
	{
    Spawn:
	    TNT1 A 0
        FIR3 ABCD 1 BRIGHT// A_SpawnItem("RedFlare", 0, 10)
		TNT1 A 0 A_CustomMissile ("BigBlackSmoke", 40, 0, random (0, 360), 2, random (40, 160))
		FIR3 EFGHIJKLMNOP 1 BRIGHT// A_SpawnItem("RedFlare", 0, 10)
	    Stop
	}
}






ACTOR FlamethrowerFireTrail
{
	Game Doom
	Radius 1
	Height 1
	Speed 2
	Damage 0 
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
	+MISSILE
    +NOCLIP
	+FORCEXYBILLBOARD
	+FORCERADIUSDMG
	damagetype Flames //***Che to allow direct Fire damage headshots  im switching all AOE to Flames //fire
	Renderstyle Add
    Scale 1.0
	Alpha 1.0
	Gravity 0
	States
	{
    Spawn:
	    TNT1 A 0
		TNT1 A 0 A_CustomMissile ("FireBallExplosionFlames", 1, 0, random (0, 360), 2, random (0, 360))
        FIR3 ABCDEFGHIJKLMNOP 1 BRIGHT
	    Stop
	}
}



ACTOR BurningGroundLowDamage
{
	Game Doom
	Radius 1
	Height 1
	Speed 2
	Damage 0 
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
    +CLIENTSIDEONLY
    +NOINTERACTION
	+NOCLIP
	+FORCEXYBILLBOARD
	-NOGRAVITY
	RenderStyle Translucent
    DamageType Fire
    Scale 1.0
	Alpha 1.0
	Gravity 0.3
	States
	{
    Spawn:
	    TNT1 A 0 A_CustomMissile ("MediumBlackSmoke", 40, 0, random (0, 360), 2, random (60, 130))
		TNT1 AAAAAA 4 A_CustomMissile ("SmallFireTrail", 2, 0, random (0, 360), 2, random (0, 90))
		TNT1 A 0 A_Explode(3, 90)
		TNT1 A 0 A_GiveInventory("Timer555", 1)
		TNT1 A 0 A_JumpIfInventory("Timer555", 9, "Death")
		Loop
	Death:
	TNT1 A 0 A_CustomMissile ("MediumBlackSmoke", 40, 0, random (0, 360), 2, random (60, 130))
	TNT1 AAA 6 A_CustomMissile ("SmallFireTrail", 2, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_Explode(10, 90)
	TNT1 A 0 A_CustomMissile ("MediumBlackSmoke", 40, 0, random (0, 360), 2, random (60, 130))
	TNT1 AAA 8 A_CustomMissile ("SmallFireTrail", 2, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_Explode(5, 90)
	TNT1 BBBBBBBBB 16 A_CustomMissile ("MediumBlackSmoke", 20, 0, random (0, 360), 2, random (60, 130))
	Stop
	}
}



ACTOR SmallFireTrail: FlameTrails
{
Scale 0.7
Speed 2
Alpha 0.7
Radius 1
Height 1
Renderstyle Add
	States
	{
    Spawn:
        //FRFX KKKLLLMMMNNN 3 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
        //FRFX OOOPP 3 BRIGHT
		TNT1 A 5
        TNT1 A 0 A_SpawnItem("RedFlare")
        //FX98 ABCDEFGHIJKL 2 BRIGHT A_SpawnItem("RedFlareSmall",0,0)
        //FX98 MNOPQ 2 BRIGHT A_SpawnItem("RedFlareSmall",0,0)
        FIR3 CDEFGHIJKLMNOP 2 BRIGHT
		Stop
	}
}

ACTOR SmallFireTrail324:SmallFireTrail
{
Speed 3
Alpha 0.9
	States
	{
    Spawn:
        FIR3 CDEFGHIJKLMNOP 1 BRIGHT A_SpawnItem("RedFlareSmall")
		Stop
	}
}




ACTOR FlamethrowerMissile
{
	Game Doom
	Radius 8
	Height 8
	Speed 35
	Damage (random (12, 12)) 
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
	+MISSILE
	+FORCEXYBILLBOARD
	+NOBLOOD
	+NOBLOODDECALS
	+BLOODLESSIMPACT
	-BLOODSPLATTER
	+NODAMAGETHRUST
	-NOGRAVITY
	+BOUNCEONWALLS
	+BOUNCEONFLOORS
	+BOUNCEONCEILINGS
	//+THRUACTORS
	RenderStyle Add
    DamageType Flames //***Che to allow direct Fire damage headshots  im switching all AOE to Flames //Fire
	Decal "FlamethrowerScorch"
    Scale 0.3
	Alpha 1.0
	Gravity 1.0
	BounceCount 2
	WallBounceFactor 0.25
	States
	{
    Spawn:
	    TNT1 A 1
		TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
		FIR3 AB 1 BRIGHT A_SpawnItem ("SmallFlameTrails")
		TNT1 A 0 A_Explode(32, 32, 0, 0, 1)
		TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
		FIR3 AB 1 BRIGHT A_SpawnItem ("SmallFlameTrails")
		TNT1 A 0 A_Explode(32, 64, 0, 0, 1)
		TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
		TNT1 A 0 A_CustomMissile ("BigBlackSmoke", 0, 0, random (0, 360), 2, random (40, 160))
        FIR3 BCD 2 BRIGHT A_CustomMissile ("FlamethrowerFireTrail", 1, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_Explode(42, 128, 1, 0, 1)
		TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
		TNT1 A 0 A_CustomMissile ("BigBlackSmoke", 0, 0, random (0, 360), 2, random (40, 160))
        FIR3 EFG 2 BRIGHT A_CustomMissile ("FlamethrowerFireParticles", 1, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_Explode(48, 196, 1, 0, 1)
		TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
		EXPL A 0 A_CustomMissile ("FlamethrowerFireParticles", 6, 0, random (0, 360), 2, random (10, 90))
		FIR3 GGG 2 BRIGHT A_CustomMissile ("FlamethrowerFireParticles", 1, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_Explode(48, 196, 1, 0, 1)
		TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
		EXPL A 0 A_CustomMissile ("FlamethrowerFireParticles", 6, 0, random (0, 360), 2, random (10, 90))
		FIR3 GGGGG 2 BRIGHT A_CustomMissile ("FlamethrowerFireParticles", 1, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_Explode(48, 196, 1, 0, 1)
		TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
		EXPL A 0 A_CustomMissile ("FlamethrowerFireParticles", 6, 0, random (0, 360), 2, random (10, 90))
		Stop
	Death:
	TNT1 A 0
	TNT1 A 0 A_ChangeFlag("FORCERADIUSDMG", 1)
	TNT1 A 0 A_Explode(32, 128, 1, 0, 1)
	TNT1 A 0 A_CustomMissile("FlamethrowerBurningStuff", random (-32, 0), random (-32, 32), random (-32, 32), 2, random (-32, 32))
	EXPL A 0 A_CustomMissile ("FlamethrowerFireParticles", 6, 0, random (0, 360), 2, random (10, 90))
	Stop
	}
}


ACTOR FlamethrowerMissileNoLight: FlamethrowerMissile
{
	-BOUNCEONWALLS
	-BOUNCEONFLOORS
	-BOUNCEONCEILINGS
	Speed 35
	Decal "None"
		States
			{
				Death:
				TNT1 A 0
				TNT1 A 0 A_ChangeFlag("FORCERADIUSDMG", 1)
				TNT1 A 0 A_Explode(32, 128, 1, 0, 1)
				//TNT1 A 0 A_CustomMissile("FlamethrowerBurningStuff", random (-32, 0), random (-32, 32), random (-32, 32), 2, random (-32, 32))
				EXPL A 0 A_CustomMissile ("FlamethrowerFireParticles", 6, 0, random (0, 360), 2, random (10, 90))
				Stop
	}
}


ACTOR FlamethrowerMissileProper: FlamethrowerMissile
{
	-BOUNCEONWALLS
	-BOUNCEONFLOORS
	-BOUNCEONCEILINGS
	Speed 40
}


Actor FlamethrowerMissile2: FlamethrowerMissile
{
+RIPPER
+THRUACTORS
}

Actor FlamethrowerMissile3: FlamethrowerMissile
{
+RIPPER
+THRUACTORS
Decal "BigScorch"
}



ACTOR FlamethrowerMissileFatso: FlamethrowerMissile
{
	-DOOMBOUNCE
	Radius 42
	Damage (random(1, 1))
	+THRUACTORS // temporary, initial
	States
	{
		Spawn:
			TNT1 A 1
			TNT1 A 1 A_ChangeFlag("THRUACTORS", 0) //***Che otherwise, ridiculously low damage when firing point-blank. I suspect spawning failures
			FIR3 A 1 BRIGHT A_SetScale(0.6, 0.6)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 40, 0)
			FIR3 A 1 BRIGHT //A_Explode(3, 40, 0)
			FIR3 B 1 BRIGHT A_SetScale(0.7, 0.7)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 40, 0)
			FIR3 C 1 BRIGHT A_SetScale(0.8, 0.8)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 50, 0)
			FIR3 D 1 BRIGHT A_SetScale(0.9, 0.9)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 50, 0)
			FIR3 E 1 BRIGHT A_SetScale(1.0, 1.0)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 60, 0)
			FIR3 F 1 BRIGHT A_SetScale(1.1, 1.1)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 60, 0)
			FIR3 G 1 BRIGHT A_SetScale(1.2, 1.2)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 70, 0)
			FIR3 H 1 BRIGHT A_SetScale(1.3, 1.3)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 70, 0)
			FIR3 I 1 BRIGHT A_SetScale(1.4, 1.4)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 70, 0)
			FIR3 J 1 BRIGHT A_SetScale(1.6, 1.6)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 80, 0)
			FIR3 K 1 BRIGHT A_SetScale(1.8, 1.8)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 80, 0)
			FIR3 L 1 BRIGHT A_SetScale(2.0, 2.0)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 80, 0)
			TNT1 A 0 A_ChangeFlag("DOOMBOUNCE", 1)
			TNT1 A 0 A_CustomMissile ("BigBlackSmoke", 0, 0, random (0, 360), 2, random (40, 160))
			TNT1 A 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (-30, 30), 2, random (40, 160))
			FIR3 M 1 BRIGHT A_SetScale(2.3, 2.3)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 80, 0)
			FIR3 N 1 BRIGHT A_SetScale(2.6, 2.6)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 100, 0)
			FIR3 O 1 BRIGHT A_SetScale(2.9, 2.9)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 100, 0)
			FIR3 P 1 BRIGHT A_SetScale(3.5, 3.5)
			TNT1 A 0 A_JumpIf(waterlevel > 0, "Death")
			TNT1 A 0 //A_Explode(3, 100, 0)
			TNT1 A 0 A_CustomMissile ("BigBlackSmoke", 0, 0, random (0, 360), 2, random (40, 160))

			//EXPL A 0 A_CustomMissile ("FlamethrowerFireParticles", 6, 0, random (0, 360), 2, random (10, 90))
			Stop
		Death:
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("FORCERADIUSDMG", 1)
			TNT1 A 0 A_Explode(3, 100, 0) //***Che do *NOT harm the shooter -- otherwise they interrupt their own attack with pain!
			TNT1 A 0 A_SpawnItemEx("TinyBurningPiece2", random (-25, 25), random (-15, 15))
			TNT1 A 0 A_SpawnItemEx("TinyBurningPiece", random (-15, 15), random (-15, 15))
			EXPL AA 0 A_CustomMissile ("FlamethrowerFireParticles", 6, 0, random (0, 360), 2, random (10, 90))
			Stop
	}
}



//***Che
ACTOR RandomTinyBurningPiece { // spawner
	+CLIENTSIDEONLY
	+NOINTERACTION
	States
	{
		Spawn:
			TNT1 A 1
			TNT1 A 1 A_Jump(256, "Spawn1", "Spawn2", "Spawn3")
			TNT1 A 30
			Stop
		Spawn1:
			TNT1 A 30 A_SpawnItemEx("TinyBurningPiece",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Spawn2:
			TNT1 A 30 A_SpawnItemEx("TinyBurningPiece2",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Spawn3:
			TNT1 A 30 A_SpawnItemEx("TinyBurningPiece3",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
	}
}


ACTOR TinyBurningPiece: BarrelExplosionSmokeColumn
{
	//***Che
	//Damagetype "Fire"
    //-CLIENTSIDEONLY
	+CLIENTSIDEONLY
	
	+BRIGHT
	Alpha 0.9
	RenderStyle Add
	Scale 1.1
	States
	{
		Spawn:
			TNT1 A 0 NODELAY A_JumpIf(waterlevel > 1, "Stap")
			CFCF ABCD 1 A_CheckFloor("Land")
			Loop
		Land:
			TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckIfOverLiquid")
			CFCF ABCD 1
			
			//***Che: adding liquid steam effects
			
			TNT1 A 0 A_JumpIfInventory("IsOverWater", 1, "Hiss")
			TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "Hiss")
			TNT1 A 0 A_JumpIfInventory("IsOverNukage", 1, "HissGreen")
			TNT1 A 0 A_JumpIfInventory("IsOverBlood", 1, "HissBlood")
		Live:	
			CFCF EFG 1 BRIGHT// A_SpawnItem("RedFlareSmall", 0, 5)
			CFCF H 1
			CFCF IJK 1 BRIGHT// A_SpawnItem("RedFlareSmall", 0, 5)
			CFCF L 1
			TNT1 A 0 A_Jump(24, "StopBurning")
			CFCF ABCD 1
			Loop
		
		StopBurning:
			CFCF NOP 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 5)
			Stop
		Hiss:
			TNT1 A 0 A_PlaySound("burn", CHAN_AUTO, 1, 0)
			TNT1 AAAA 7 A_CustomMissile ("SmallSmoke", 8, 0, random (0, 360), 2, random (70, 110))
			Stop
		HissGreen:
			TNT1 A 0 A_PlaySound("burn", CHAN_AUTO, 1, 0)
			FIR6 ABCDEFGHIJKLMNOPQRST 1
			Stop
		HissBlood:
			TNT1 A 0
			TNT1 A 0 A_PlaySound("burn", CHAN_AUTO, 1, 0)
			TNT1 AAAA 7 A_CustomMissile ("OldschoolRocketSmokeTrailDarker", 8, 0, random (160, 210), 2, random (10, 90))
			Stop
    }
}


ACTOR TinyBurningPiece2: TinyBurningPiece
{
	Scale 0.7
	+CLIENTSIDEONLY
	States
	{
		Spawn:
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Stap")
			CFCF ABCDEFGHIJKL 1 BRIGHT
			TNT1 A 0 A_Jump(24, "StopBurning")
			Loop
		
		StopBurning:
			CFCF NOP 1 BRIGHT A_SpawnItem("RedFlareSmall", 0, 5)
			Stop
    }
}

ACTOR TinyBurningPiece3: TinyBurningPiece2
{
	Scale 0.5
	+CLIENTSIDEONLY
}



ACTOR TinyBurningPieceInfinite: BarrelExplosionSmokeColumn
{
Damagetype "Burn"
    -CLIENTSIDEONLY
	+NODAMAGETHRUST
	Alpha 0.9
	RenderStyle Add
	Scale 1.1
	States
	{
		Spawn:
			TNT1 A 0 A_Explode(4, 60)
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Bubble")
			CFCF ABCDEFGHIJKLABCDEFGHIJKLABCDEFGHIJKLABCDEFGHIJKL 1 BRIGHT 
			Loop
		Bubble:
			TNT1 AAAAAAA 0 A_CustomMissile ("BUBULZ", 10, 0, random (0, 360), 2, random (70,90))
			TNT1 A 48
			Goto Spawn
    }
}







ACTOR PentagramSpawner
{
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
	+FORCEXYBILLBOARD
    +CLIENTSIDEONLY
    +NOCLIP
	-NOGRAVITY
	RenderStyle Add
    XScale 0.25
	YScale 0.025
	Alpha 1
	Gravity 1
	Radius 1
	Height 1
	States
	{
    Spawn:
        TNT1 A 1
		TNT1 AAAAA 2 A_SpawnItem("BurningPentagram")
		TNT1 A 20
		TNT1 A 1 A_SpawnItem("PentagramOff")
		TNT1 A 1
        Stop
	}
}



ACTOR BurningPentagram: PentagramSpawner
{
    Alpha 0
	States
	{
    Spawn:
        TNT1 A 0
		PNTG AAAAAAAAAAAAAAAAAAAAAAA 1 A_FadeIn(0.02)
		PNTG AAAAAAAAAAAAAAAAAAAAAAA 1 A_FadeOut(0.02)
        Stop
	}
}


ACTOR PentagramOff: PentagramSpawner
{
    Renderstyle Normal
	States
	{
    Spawn:
        PNTG B 300
		PNTG BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 1 A_FadeOut(0.02)
        Stop
	}
}


ACTOR RailgunFlameTrails : FlameTrails
{
    Scale 0.4
	Alpha 0.99
	States
	{
    Spawn:
        FIR3 ABCDEFGHIJKLMNOP 1 BRIGHT
        Stop
	}
}

ACTOR RailgunFlameTrailsBlue : FlameTrails
{
    Scale 0.4
	Alpha 0.99
	States
	{
    Spawn:
        FIR5 ABCDEFGHIJKLMNOP 1 BRIGHT
        Stop
	}
}


ACTOR HighExplosiveFlames: FlameTrails
{
    Scale 2.4
	Speed 4
	Alpha 1.0
	States
	{
    Spawn:
		tnt1 A 0
		TNT1 A 2
        X003 AABBCDEFGHIJKLMNOP 1 BRIGHT
		TNT1 AA 0 A_CustomMissile ("ExplosionSmokeHDLarge", 0, 0, random (0, 360), 2, random (0, 360))
		X003 QRSTUVWXYZ 1 BRIGHT
        Stop
	}
}




ACTOR HighExplosiveFlames2: FlameTrails
{
    Scale 2.4
	Speed 4
	Alpha 1.0
	States
	{
    Spawn:
		tnt1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("FAREXPL")
        X003 AABBCDEFGHIJKLMNOPQRSTUVWX 1 BRIGHT
		EXPL A 0 A_CustomMissile ("BigBlackSmokeLarger", 0, 0, random (0, 360), 2, random (20, 90))
		X003 YZ 1 BRIGHT
        Stop
	}
}





ACTOR HighExplosiveFlamesSmall: FlameTrails
{
    Scale 1.0
	Speed 1
	Alpha 1.0
	States
	{
    Spawn:
		tnt1 A 0
        X003 AABBCDEFGHIJKLMNOPQRSTUVWX 1 BRIGHT
		X003 YZ 1 BRIGHT
        Stop
	}
}




ACTOR HighExplosiveFlamesBig: HighExplosiveFlamesSmall
{
    Scale 3.0
	Speed 3
	Alpha 1.0
	States
	{
    Spawn:
		tnt1 A 0
        X003 AABBCDEFGHIJKLMNOPQRSTUVWX 2 BRIGHT
		EXPL A 0 A_CustomMissile ("BigBlackSmokeLarger", 0, 0, random (0, 360), 2, random (20, 90))
		X003 YZ 2 BRIGHT
        Stop
	}
}




ACTOR HighExplosiveFlamesHuge: HighExplosiveFlamesSmall
{
    Scale 5.0
	Speed 4
	Alpha 1.0
	States
	{
    Spawn:
		tnt1 A 0
        X003 AABBCDEFGHIJKLMNOPQRSTUVWX 2 BRIGHT
		EXPL A 0 A_CustomMissile ("BigBlackSmokeLarger", 0, 0, random (0, 360), 2, random (20, 90))
		X003 YZ 1 BRIGHT
        Stop
	}
}


ACTOR BackblastFlames1: FlameTrails
{
    Scale 0.6
	Speed 20
	Alpha 1.0
	-DOOMBOUNCE
	-BOUNCEONWALLS
	States
	{
    Spawn:
		tnt1 A 0
		TNT1 A 3
        EXPL ABCDEFGHI 1 BRIGHT
        Stop
	}
}


ACTOR BackblastFlames2: BackblastFlames1
{
    Scale 0.7
	Speed 25
}


ACTOR BackblastFlames3: BackblastFlames1
{
    Scale 0.8
	Speed 30
}




ACTOR BackblastFlames4: BackblastFlames1
{
    Scale 0.9
	Speed 35
}








ACTOR HugeBackblastFlames1
{
    Scale 1.0
	Speed 10
	Alpha 1.0
	+MISSILE
	PROJECTILE //***Che includes +NOBLOCKMAP
	Radius 24
	Height 42
	Renderstyle Add
	+THRUACTORS
	+CLIENTSIDEONLY
	+DOOMBOUNCE
	States
	{
    Spawn:
		tnt1 A 0
		TNT1 A 4
        X003 AAABBBCCCDEFGHIJKLMNOP 1 BRIGHT
		EXPL A 0 A_CustomMissile ("BigBlackSmokeLarger", random (0, 10), 0, random (0, 360), 2, random (20, 90))
        X003 QRSTUVWXYZ 1 BRIGHT
		Stop
	}
}


ACTOR HugeBackblastFlames2: HugeBackblastFlames1
{
    Scale 1.5
	Speed 15
}


ACTOR HugeBackblastFlames3: HugeBackblastFlames1
{
    Scale 2.0
	Speed 20
}




ACTOR HugeBackblastFlames4: HugeBackblastFlames1
{
    Scale 2.5
	Speed 25
}





ACTOR HDFlamesGFX1
{
	+CLIENTSIDEONLY
	+THRUACTORS
	+NOCLIP
	+NOGRAVITY
	+NOINTERACTION
	Renderstyle Add
	Alpha 1.0
	Scale 2.0
	States
	{
	Spawn:
	NF4R ABCDEFGHIJKLMNOPQ 1 BRIGHT
	Loop
    }
}


ACTOR HDFlamesGFX1Slim: HDFlamesGFX1
{
	XScale 1.2
	YScale 3.0
}


ACTOR HDFlamesGFX1Big: HDFlamesGFX1
{
	XScale 3.0
	YScale 3.0
}


//***Che for various beings of magma and fire

Actor FieryBlood: FBD_Blood
{
	Decal None
	States
	{
		Spawn:
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
			TNT1 AAAA 0 A_CustomMissile ("LavaMistSmall", 0, 0, random (0, 360), 2, random (0, 90))
			Stop
		Underwater:	
			TNT1 AAAA 0 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 90))
			Stop
	
	}
}

Actor FieryBloodSaw: FieryBlood
{
	States
	{
		TNT1 A 0 A_RadiusGive("ChainsawHitRed", 200, RGF_PLAYERS, 1)
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		TNT1 AAAA 0 A_CustomMissile ("LavaMistSmall", 0, 0, random (0, 360), 2, random (0, 90))		
	}
}

Actor LavaMistSmall: TinyBurningPiece
{
	var int user_sx;
	var int user_sy;
	var int user_mul;
	+BRIGHT
	+MISSILE
	Speed 3
	States
	{
		Spawn:
			TNT1 A 0 NODELAY A_JumpIf(waterlevel > 1, "Stap")
			TNT1 A 0 A_SetUserVar("user_sx", Random(0, 50))
			TNT1 A 0 A_SetUserVar("user_sx", user_sx > 25 ? user_sx : user_sx - 50)
			TNT1 A 0 A_SetUserVar("user_sy", Random(0, 50))
			TNT1 A 0 A_SetUserVar("user_sy", user_sy > 25 ? user_sy : user_sy - 50)
			TNT1 A 0 A_SetUserVar("user_mul", 3)
			TNT1 A 0 A_Jump(128, "FlyB")
		FlyA:
			TNT1 A 0 A_CheckFloor("Land")
			TNT1 A 0 A_SetScale(0.001 * user_sx * user_mul, 0.001 * user_sy * user_mul)
			TNT1 A 0 A_SetUserVar("user_mul", user_mul + 1)
			LAVA A 1 A_FadeOut(0.1)
			Loop
		FlyB:
			TNT1 A 0 A_CheckFloor("Land")
			TNT1 A 0 A_SetScale(0.001 * user_sx * user_mul, 0.001 * user_sy * user_mul)
			TNT1 A 0 A_SetUserVar("user_mul", user_mul + 1)
			LAVA B 1 A_FadeOut(0.1)
			Loop
		Death: 	
			TNT1 A 0
			Goto Land
	}
}






