ACTOR ExplosiveBarrel1 Replaces ExplosiveBarrel
{
	Game Doom

	Damagefactor "Avoid", 0.0	Damagefactor "BHFTOnBarrel", 200.0	Damagefactor "Blood", 0.0
	Damagefactor "CancelTeleportFog", 0.0	Damagefactor "CauseWaterSplash", 0.0
	Damagefactor "FriendBullet", 0.0	Damagefactor "GibRemoving", 0.0	Damagefactor "Glass", 0.0
	Damagefactor "HangingHook", 0.0	Damagefactor "Head", 0.0	Damagefactor "HeadKick", 0.0
	Damagefactor "HelperMarineFatallity", 0.0	Damagefactor "KillMe", 0.0	Damagefactor "Leg", 0.0
	Damagefactor "MonsterKnocked", 0.0	Damagefactor "PussyGrab", 200.0	Damagefactor "Repair", 0.0
	Damagefactor "RevenantHitStomach", 0.0	Damagefactor "SpawnMarine", 0.0	Damagefactor "Stealth", 0.0
	DamageFactor "SSG", 5.0	DamageFactor "TankWeakSpot", 0.0	Damagefactor "ExtremePunches", 0.1
	Damagefactor "Taunt", 0.0	Damagefactor "TeleportRemover", 0.0	Damagefactor "Use", 0.0
	Damagefactor "Kick", 0.1	Damagefactor "Slide", 0.1	Damagefactor "Melee", 0.1

	Health 20
	Radius 10
	Height 42
    Mass 200
	+SOLID
	+SHOOTABLE
	+NOBLOOD
	+ACTIVATEMCROSS
	+DONTGIB
	+NOICEDEATH
	+OLDRADIUSDMG
	-COUNTKILL
	+FRIENDLY
    +PUSHABLE
	+SLIDESONWALLS
    +WINDTHRUST
	+MISSILEMORE
	+MISSILEEVENMORE
	Speed 0
	MaxTargetRange 256
	DeathSound "Explosion"
	Obituary "$OB_BARREL"
	Damagetype Explosive
	PainSound "weapons/barrelpain"
	Painchance 255
	States
	{

	Spawn:
		BARI A 0
		TNT1 A 0 A_GiveInventory("TargetIsANExplosiveBarrel", 1)
		MARN A 0 ACS_NamedExecuteAlways("BDCheckDecorations", 0, 0, 0, 0)//Check if advanced decorations are disabled.
		BARI A 2
		TNT1 A 0 A_RadiusGive("BarrelCounter",64,RGF_GIVESELF | RGF_OBJECTS | RGF_CUBE | RGF_NOSIGHT,1)
		BARI A 2
		TNT1 A 0 A_JumpIfInventory("BarrelCounter",9,"Vanilla")
		Goto Stay

	Vanilla:
		TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
		TNT1 A 2 A_ChangeFlag("NOINTERACTION", 1)
		TNT1 A 0 A_SpawnItem("VanillaExplosiveBarrel")
		TNT1 A 2 Thing_Remove(0)
		Stop

	Stay:
	    BARI ABCDCB 6 A_Look
		Loop

	See:
		BARI ABCDCB 6 A_Chase
		TNT1 A 0 A_ClearTarget
		Goto Stay

	Melee:
	Missile:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInTargetInventory("TargetIsABaronOfHell", 1, "TauntTHeBaron")
		BARI ABCDCB 6
		TNT1 A 0 A_ClearTarget
		Goto Stay

	TauntTheBaron:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInTargetInventory("ComingToGetTheBarrel", 1, "DoingNothing")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CallingTheBaronAFaggot", 32, 0, 0, 1)
		TNT1 A 0 A_GiveToTarget("ComingTOGetTheBarrel", 1)
	DoingNothing:
		BARI ABCDCB 6
		TNT1 A 0 A_ClearTarget
		Goto Stay

	Pain:
		BARI A 6 A_Pain
		Goto Stay

    Pain.Kick:
	Pain.Slide:
	Pain.Melee:
		TNT1 A 0
	    TNT1 A 0 A_Changeflag("FRIENDLY", 0)
	    BARI A 2 A_Pain
        BARI A 2 A_FaceTarget
		TNT1 A 0 HealThing(100)
		TNT1 A 0 ThrustThing(angle*256/360+128, 10, 0, 0)
		TNT1 A 0 ThrustThingZ(0,10,0,1)
		TNT1 A 0 A_Changeflag("FRIENDLY", 1)
		BARI A 2
        Goto Spawn

	Pain.ExtremePunches:
		TNT1 A 0
	    TNT1 A 0 A_Changeflag("FRIENDLY", 0)
	    BARI A 2 A_Pain
        BARI A 2 A_FaceTarget
		TNT1 A 0 HealThing(100)
		TNT1 A 0 ThrustThing(angle*256/360+128, 20, 0, 0)
		TNT1 A 0 ThrustThingZ(0,20,0,1)
		TNT1 A 0 A_Changeflag("FRIENDLY", 1)
		BARI A 2
        Goto Spawn

	Death:
        BEXP A 4 BRIGHT
		TNT1 A 0 A_JumpIfInventory("BarrelCounter",9,"VanillaDeath")//In the case that the check in the spawn state fails (online latency)
		BEXP B 4 BRIGHT A_Scream
		BEXP C 4 BRIGHT
		BEXP D 1 BRIGHT A_Explode(200,200)
		TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)//floor decal
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)//ceil decal
		TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)//lense flares
        TNT1 A 0 A_SpawnItem("WhiteShockwaveBig")//white ring effect
		TNT1 A 0 A_SpawnItemEx ("BarrelKaboom",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		BEXP D 1 BRIGHT Radius_Quake (2, 35, 0, 5, 0)
		TNT1 A 0 A_CustomMissile ("HighExplosiveFlames", random (10, 20), 0, random (0, 360), 2, random (10, 90))
		TNT1 A 0 A_CustomMissile ("BDExplosionparticles3", 64, 0, random (0, 360), 2, random (40, 90))
		TNT1 A 0 A_CustomMissile ("BDExplosionparticles4", 64, 0, random (0, 360), 2, random (40, 90))
		BEXP D 1 BRIGHT A_PlaySound("FAREXPL", 3)
		TNT1 A 0 A_CustomMissile ("BarrelShrapnel1", 20, 0, random (0, 360), 2, random (0, 160))
		TNT1 A 0 A_CustomMissile ("BarrelShrapnel2", 15, 0, random (0, 360), 2, random (0, 160))
		TNT1 A 0 A_CustomMissile ("BarrelShrapnel3", 10, 0, random (0, 360), 2, random (0, 160))
		TNT1 A 0 A_CustomMissile ("BarrelShrapnel4", 5, 0, random (0, 360), 2, random (0, 160))
		BEXP D 1 BRIGHT A_SpawnItemEx ("ExplosionSplashSpawner", 0, 0, 0)
		TNT1 A 0 A_SpawnItemEx("TinyBurningPiece", 0,0,5,random (-15, 15), random (-15, 15), random (-15, 15))
		TNT1 A 0 A_SpawnItemEx("TinyBurningPiece2", 0,0,10,random (-15, 15), random (-15, 15), random (-15, 15))
		TNT1 A 0 A_SpawnItemEx("TinyBurningPiece3", 0,0,15,random (-15, 15), random (-15, 15), random (-15, 15))
		BEXP E 4 BRIGHT
		TNT1 A 840 BRIGHT A_BarrelDestroy
		TNT1 A 4 A_Respawn
		Wait

	VanillaDeath:
		BEXP A 5 BRIGHT
		BEXP B 5 BRIGHT A_Scream
		BEXP C 5 BRIGHT
		BEXP D 5 BRIGHT A_Explode
		BEXP E 10 BRIGHT
		TNT1 A 1050 BRIGHT A_BarrelDestroy
		TNT1 A 5 A_Respawn
		Wait

	Death.Fatality:
	Death.PussyGrab:
		TNT1 A 0
		TNT1 A 0 A_GiveToTarget("GoSpecial", 1)
        TNT1 A 0 A_GiveToTarget("HasBarrel", 1)
        TNT1 A 0 A_NoBlocking
        Stop

	Death.BHFT:
	Death.BHFTOnBarrel:
		TNT1 A 0
		TNT1 A 0 A_GiveToTarget("HasExplosiveBarrel", 1)
		TNT1 A 0 A_NoBlocking
		Stop
	}
}

ACTOR BarrelShrapnel1
{
    Radius 2
    Height 2
    Speed 20
	Mass 1
    +NOBLOCKMAP
	+MISSILE
    +NOTELEPORT
    +MOVEWITHSECTOR
    +CLIENTSIDEONLY
	+NONETID
	+THRUACTORS
	+FLOORCLIP
	+DOOMBOUNCE
	-NOGRAVITY
	BounceFactor 0.5
	Gravity 0.9
	Mass 1
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
        BRPT ABCDEFGH 1
		TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
        Goto Spawn2
	Spawn2:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
	    BRPT ABCDEFGH 2
		Loop

    Death:
        TNT1 A 0
		BRPT I 300
		BRPT IIIIIIIII 2 A_FadeOut(0.1)
        Stop
     Underwater:
	 Splash:
	    Goto Death
    }
}

ACTOR BarrelShrapnel2: BarrelShrapnel1
{
 Scale 1.7
}

ACTOR BarrelShrapnel3: BarrelShrapnel1
{
 Scale 1.4
}

ACTOR BarrelShrapnel4: BarrelShrapnel1
{
 Scale 1.2
}

actor GreatKaboom: DeadMarine
{
	Game Doom
	States
	{
	Spawn:
	TNT1 A 50
	TNT1 A 0 A_SpawnItemEx ("ExplosionSplashSpawner", 0, 0, 0)
	TNT1 AAAA 0 A_CustomMissile ("ExplosionSpawner", 20, 0, random (0, 360), 2, random (0, 180))
	TNT1 AAAAAA 0 A_CustomMissile ("ExplosionSpawner", 20, 0, random (0, 360), 2, random (0, 180))
	Stop
	}
}

actor UltraKaboom: DeadMarine
{
	Game Doom
	States
	{
	Spawn:
	TNT1 A 50
	TNT1 A 0 A_SpawnItemEx ("ExplosionSplashSpawner", 0, 0, 0)
	TNT1 AAAA 0 A_CustomMissile ("LongExplosionSpawner", 20, 0, random (0, 360), 2, random (0, 180))
	TNT1 AAAAAA 0 A_CustomMissile ("ExplosionSpawner", 20, 0, random (0, 360), 2, random (0, 180))
	Stop
	}
}

actor BarrelKaboom: DeadMarine
{
	Game Doom
	+CLIENTSIDEONLY
	+NONETID
	States
	{
	Spawn:
	TNT1 A 1
	TNT1 A 0 A_CustomMissile ("ExplosionSpawner", 10, 0, random (0, 360), 2, random (10, 90))
	Stop
	}
}

actor BigExplosion1112: DeadMarine
{
	Game Doom
	States
	{
	Spawn:
	TNT1 A 1
	EXPL A 0 Radius_Quake (4, 35, 0, 5, 0)
	TNT1 AAA 0 A_CustomMissile ("FireworkSFXType2", 64, 0, random (0, 360), 2, random (30, 60))
	TNT1 A 0 A_CustomMissile ("ExplosionSpawner", 10, 0, random (0, 360), 2, random (80, 90))
	TNT1 AAA 0 A_CustomMissile ("SmallExplosionSpawner", 10, 0, random (0, 360), 2, random (0, 40))
	TNT1 A 10
	TNT1 AAAA 0 A_CustomMissile ("FireworkSFXType2", 94, 0, random (0, 360), 2, random (30, 60))
	EXPL A 0 Radius_Quake (3, 35, 0, 10, 0)
	TNT1 A 0 A_CustomMissile ("ExplosionSpawner",10, 0, random (0, 360), 2, random (80, 90))
	TNT1 A 10
	TNT1 AAAAAAA 0 A_CustomMissile ("FireworkSFXType2", 128, 0, random (0, 360), 2, random (30, 60))
	EXPL A 0 Radius_Quake (2, 35, 0, 15, 0)
	TNT1 A 0 A_CustomMissile ("ExplosionSpawner", 10, 0, random (0, 360), 2, random (80, 90))
	TNT1 A 0 A_CustomMissile ("RidiculousExplosionSpawner", 10, 0, random (0, 360), 2, 90)
	TNT1 A 200
	Stop
	}
}

actor KaboomWithSound: DeadMarine
{
	Game Doom
	States
	{
	Spawn:
	TNT1 A 1
	TNT1 AA 0 A_CustomMissile ("ExplosionSpawner", 20, 0, random (0, 360), 2, random (0, 180))
	TNT1 AA 0 A_CustomMissile ("ExplosionSpawner", 20, 0, random (0, 360), 2, random (0, 180))
	TNT1 A 0 A_PlaySound("FAREXPL", 3)
	TNT1 A 0 A_PlaySound("Explosion", 1)
	TNT1 A 300
	Stop
	}
}

Actor ExplosionSpawner
{
+MISSILE
+FORCEXYBILLBOARD
+CLIENTSIDEONLY
+NONETID
damage 0
radius 6
height 6
speed 40
renderstyle ADD
alpha 0.9
scale .01
BounceFactor 0.5
Decal "FireworxScorch"
states
	{
	Spawn:
		TNT1 A 2 A_SpawnItem("SpawnedExplosion")
		EXPL A 0 A_CustomMissile ("BigBlackSmokeLarger", 0, 0, random (0, 360), 2, random (20, 90))
		TNT1 A 2 A_SpawnItem("SpawnedExplosion")
		EXPL A 0 A_CustomMissile ("BigBlackSmokeLarger", 0, 0, random (0, 360), 2, random (20, 90))
		Stop
	Death:
		MISG A 1
		TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 10
		Stop
	XDeath:
		MISG A 1
		TNT1 A 10
		Stop
	}
}

Actor SmallExplosionSpawner: ExplosionSpawner
{
Speed 30
states
	{
	Spawn:
		TNT1 AAA 2 A_SpawnItem("SpawnedExplosionSmall")
		Stop
	}
}

Actor LongExplosionSpawner: ExplosionSpawner
{
speed 66
renderstyle ADD
alpha 0.9
scale .15
Decal "BigScorch"
states
	{
	Spawn:
		TNT1 AAAAAA 2 A_SpawnItem("SpawnedExplosionLarge")
		Stop
	}
}

Actor hUGEExplosionSpawner: ExplosionSpawner
{
speed 100
renderstyle ADD
alpha 0.9
scale .15
Decal "BigScorch"
states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_SpawnItem("HighExplosiveFlamesBig")
		TNT1 A 0 A_Stop
		Stop
	}
}

Actor hUGEExplosionSpawner2: hUGEExplosionSpawner
{
speed 80
states
	{
	Spawn:
		TNT1 A 0
		TNT1 AAAAA 3 A_SpawnItem("HighExplosiveFlamesBig")
		TNT1 A 0 A_SpawnItem("HighExplosiveFlamesHuge")
		TNT1 A 0 A_Stop
		Stop
	}
}

Actor RidiculousExplosionSpawner: ExplosionSpawner
{
speed 20
renderstyle ADD
alpha 0.9
scale .15
Decal "BigScorch"
+SKYEXPLODE
-DOOMBOUNCE
+NOGRAVITY
states
	{
	Spawn:
	Goto Death

	Death:
		TNT1 AAAA 2 A_SpawnItem("HighExplosiveFlamesBig")
		EXPL A 0 A_CustomMissile ("RidiculousNeoSmoke", 0, 0, random (0, 360), 2, random (0, 180))
		TNT1 AA 2 A_SpawnItem("HighExplosiveFlamesHuge")
		TNT1 A 0 A_SpawnItem("ExplosionFlareSpawner")
		Stop
	}
}

Actor SpawnedExplosion
{
+NOCLIP
+NOGRAVITY
+CLIENTSIDEONLY
+NONETID
states
	{
	Spawn:
 TNT1 A 0
 TNT1 A 2 A_PlaySound("FAREXPL")
TNT1 A 0 A_CustomMissile ("HighExplosiveFlamesSmall", 0, 0, random (0, 360), 2, random (0, 90))
		Stop
	}
}

Actor SpawnedExplosionRepeat
{
+NOCLIP
+NOGRAVITY
states
	{
	Spawn:
 TNT1 A 2
 TNT1 A 2 A_PlaySound("FAREXPL")
 TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
TNT1 AAAA 0 A_CustomMissile ("ExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
TNT1 A 3
TNT1 AAAA 0 A_CustomMissile ("ExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
TNT1 A 3
TNT1 AAAA 0 A_CustomMissile ("ExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		Stop
	}
}

Actor SpawnedExplosionBig
{
+NOCLIP
+NOGRAVITY
states
	{
	Spawn:
 TNT1 A 2
 TNT1 A 2 A_PlaySound("FAREXPL")
 EXPL A 0 A_CustomMissile ("HugeNeoSmoke", 0, 0, random (0, 360), 2, random (0, 360))
 EXPL A 0 A_CustomMissile ("BigNeoSmoke", 0, 0, random (0, 360), 2, random (0, 360))
 TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
TNT1 AAAA 0 A_CustomMissile ("ExplosionFlamesBig", 0, 0, random (0, 360), 2, random (0, 180))
TNT1 A 3
TNT1 AAAA 0 A_CustomMissile ("ExplosionFlamesBig", 0, 0, random (0, 360), 2, random (0, 180))
		Stop
	}
}

Actor SpawnedExplosionLarge
{
+NOCLIP
+NOGRAVITY
states
	{
	Spawn:
 TNT1 A 2
 TNT1 A 2 A_PlaySound("FAREXPL")
TNT1 AA 0 A_CustomMissile ("ExplosionFlamesBig2", 0, 0, random (0, 360), 2, random (0, 180))
tnt1 a 0 a_eXPLODE(200, 400)
		Stop
	}
}

Actor SpawnedExplosionLarge2
{
+NOCLIP
+NOGRAVITY
states
	{
	Spawn:
 TNT1 A 2
 TNT1 A 2
TNT1 AA 0 A_CustomMissile ("ExplosionFlamesBig2", 0, 0, random (0, 360), 2, random (0, 180))
tnt1 a 0 a_eXPLODE(200, 400)
		Stop
	}
}

Actor SpawnedExplosionGiant
{
+NOCLIP
+NOGRAVITY
states
	{
	Spawn:
 TNT1 A 2
 TNT1 A 2 A_PlaySound("FAREXPL")
 EXPL A 0 A_CustomMissile ("RidiculousNeoSmoke", 0, 0, random (0, 360), 2, random (0, 180))
 TNT1 AA 0 A_CustomMissile ("ExplosionFlamesGiant", 0, 0, random (0, 360), 2, random (0, 180))
		Stop
	}
}

Actor SpawnedFlamers
{
+NOCLIP
+NOGRAVITY
    DamageType Flames
states
	{
	Spawn:
 TNT1 A 2
TNT1 A 0 A_Explode(100,40)
TNT1 AAAA 0 A_CustomMissile ("ExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		Stop
	}
}

Actor SpawnedExplosionSmall
{
+NOCLIP
+NOGRAVITY
states
	{
	Spawn:
 TNT1 A 2
 TNT1 A 2
 EXPL A 0 A_CustomMissile ("BigNeoSmoke", 0, 0, random (0, 360), 2, random (0, 360))
 EXPL A 0 A_CustomMissile ("ExplosionSmoke", 0, 0, random (0, 360), 2, random (0, 360))
 TNT1 AAAA 0 A_CustomMissile ("SmallExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		Stop
	}
}

Actor SpawnedExplosionNuke//ground explosions
{
	+NOCLIP
	+NOGRAVITY
	+MISSILE
	+FORCERADIUSDMG
	+NODAMAGETHRUST
	Speed 30
	Damagetype "Fire"
	states
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("FAREXPL")
	TNT1 A 14 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmokeBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_Explode
	TNT1 A 14 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmokeBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_Explode
	TNT1 A 14 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmokeBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_Explode
	TNT1 A 14 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmokeBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_Explode
	TNT1 A 14 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmokeBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_Explode
	Stop
	}
}

Actor SpawnedExplosionNuke2//Rising explosion
{
	+NOCLIP
	+NOGRAVITY
	+MISSILE
	Speed 30
	Damagetype "Fire"
	states
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("FAREXPL")
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmoke", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 4 A_CustomMissile ("NuclearFlames", 0, 0, random (0, 360), 2, random (0, 90))
	//Mushroom-top
	TNT1 A 0 A_CustomMissile ("NukeSmokeBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 14 A_CustomMissile ("NuclearFlamesBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmokeBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 14 A_CustomMissile ("NuclearFlamesBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmokeBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 14 A_CustomMissile ("NuclearFlamesBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmokeBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 14 A_CustomMissile ("NuclearFlamesBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 0 A_CustomMissile ("NukeSmokeBig", 0, 0, random (0, 360), 2, random (0, 90))
	TNT1 A 14 A_CustomMissile ("NuclearFlamesBig", 0, 0, random (0, 360), 2, random (0, 90))
	Stop
	}
}

Actor RocketPenetrationExplosion
{
+NOCLIP
+NOGRAVITY
DamageType "ExplosiveImpact"
states
	{
	Spawn:
 TNT1 A 2
 TNT1 A 2
 TNT1 A 0 A_Explode(20, 80)
 EXPL A 0 A_CustomMissile ("BigNeoSmoke", 0, 0, random (0, 360), 2, random (0, 360))
 EXPL A 0 A_CustomMissile ("ExplosionSmoke", 0, 0, random (0, 360), 2, random (0, 360))
 TNT1 AA 0 A_CustomMissile ("SmallExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		Stop
	}
}

ACTOR VanillaExplosiveBarrel: ExplosiveBarrel1
{
	-FRIENDLY
    -PUSHABLE
	-SLIDESONWALLS
    -WINDTHRUST
	-MISSILEMORE
	-MISSILEEVENMORE
	States
	{
	Spawn:
		BARI ABCDCB 6
		Loop

	Death:
		BEXP A 4 BRIGHT
		BEXP B 4 BRIGHT A_Scream
		BEXP C 4 BRIGHT
		BEXP D 4 BRIGHT A_Explode
		BEXP E 4 BRIGHT
		TNT1 A 840 BRIGHT A_BarrelDestroy
		TNT1 A 4 A_Respawn
		Wait
	}
}

ACTOR FireworkSFXType1
{
	Radius 4
	Height 4
	Speed 18
	PROJECTILE
    +THRUGHOST
	RenderStyle Add
	+MISSILE
	-NOGRAVITY
	Gravity 1
	Alpha 1.0
	States
	{
	Spawn:
		//TNT1 A 0 A_CustomMissile ("SmallFlameTrails", 2, 0, random (170, 200), 2, random (-20, 20))
		TNT1 A 1 A_SpawnItem ("SmallFlameTrails")
		TNT1 A 1 A_SpawnItem("RedFlareSmall")
		TNT1 A 1 A_SpawnItem("RedFlareSmall")
		Loop

	Death:
		TNT1 A 0 A_SpawnItemEx("TinyBurningPiece", random (-15, 15), random (-15, 15))
		Stop
	}
}

ACTOR FireworkSFXType2: FireworkSFXType1
{
	Radius 2
	Height 2
	+DOOMBOUNCE
	WallBounceFactor 0.5
	BounceFactor 0.2
	States
	{
	Death:
		TNT1 A 0
		Stop
	}
}