//Everything that can explode and hurt people goes here.


ACTOR Rocket2
{
	Radius 4
	Height 2
	Projectile
	Speed 80
    Damage (random (600, 600))
	DamageType Explosive
    MeleeDamage 0
	Scale 0.5
    Decal "Scorch"
	Projectile
	+MISSILE
    -NOGRAVITY
    +EXTREMEDEATH
    +BLOODSPLATTER 
	+THRUSPECIES
	+MTHRUSPECIES
	+GHOST
	+THRUGHOST
	Gravity 0.2
	SeeSound "weapons/RLL"
	Obituary "$OB_MPROCKET"
	Species "Marines"
	States
	{
	Spawn:
	
		MISL A 0
		TNT1 A 0 A_PlaySound("DSRLAUN")
		MISL A 1 Bright A_CustomMissile ("RocketSmokeTrail1", 2, 0, random (160, 210), 2, random (-30, 30))
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast3", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames1", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames3", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames4", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		
		MISL AAA 1 Bright A_CustomMissile ("RocketSmokeTrail1", 2, 0, random (160, 210), 2, random (-30, 30))
	Live:
	    MISL A 1 Bright 
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Death")
		TNT1 A 0 A_CustomMissile ("RocketSmokeTrail2", 2, 0, random (160, 210), 2, random (-30, 30))
		Loop
	
	Death:
		TNT1 A 0
        EXPL A 0 Radius_Quake (4, 8, 0, 50, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 0 A_CustomMissile("ExplosionSplashSpawner")
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 AAAAAA 0 A_CustomMissile ("BDExplosionparticles", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAA 0 A_CustomMissile ("BDExplosionparticles2", 0, 0, random (0, 360), 2, random (0, 90))
		TNT1 AAAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		
		TNT1 A 0 A_SpawnItemEx ("RocketExplosion",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItemEx ("RocketShrapnel",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION,0)
		
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_PlaySound("Explode1", 1)
		//TNT1 A 0 A_PlaySound("Explode2", 2)
		TNT1 A 0 A_SpawnItem("ExplosionSmoke")
		TNT1 A 3 A_PlaySound("DistExp", 3)
		TNT1 A 0 A_CustomMissile ("ExplosionSmoke", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_SpawnItem("ExplosionSmoke")
		TNT1 A 60
		Stop
	}
}

Actor M72Rocket: Rocket2
{
Damage (random (600, 600))
}


Actor BazookaRocket: Rocket2
{
Damage (random (900, 900))
States
	{
	Death:
		TNT1 A 0
        EXPL A 0 Radius_Quake (8, 16, 0, 50, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 0 A_CustomMissile("ExplosionSplashSpawner")
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 AAAAAA 0 A_CustomMissile ("BDExplosionparticles", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAA 0 A_CustomMissile ("BDExplosionparticles2", 0, 0, random (0, 360), 2, random (0, 90))
		TNT1 AAAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAA 0 A_CustomMissile ("ExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		
		TNT1 AA 0 A_SpawnItemEx ("RocketExplosion",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 AA 0 A_SpawnItemEx ("RocketShrapnel",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION,0)
		
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_PlaySound("Explode1", 1)
		TNT1 A 0 A_PlaySound("Explode2", 2)
		EXPL AAAAAAAAAAAA 0 A_CustomMissile ("BDExplosionparticles4", 1, 0, random (0, 360), 2, random (10, 90))
	EXPL AAAAAAAAAAAAAA 0 A_CustomMissile ("BDExplosionparticlesFast", 1, 0, random (0, 360), 2, random (10, 90))
		TNT1 A 0 A_SpawnItem("ExplosionSmoke")
		TNT1 A 3 A_PlaySound("DistExp", 3)
		TNT1 A 0 A_CustomMissile ("ExplosionSmoke", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_CustomMissile ("BigBlackSmoke", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_SpawnItem("ExplosionSmoke")
		TNT1 A 60
		Stop
	}
}

Actor NapalmMarker: FastProjectile
{
Damage 0
Speed 999
+NOGRAVITY
Radius 2
Height 2
+NODECAL
+DONTFALL
+THRUGHOST
+GHOST
States
 {
	Spawn:
	TNT1 A 1
	Loop

	Death:
	TNT1 A 0
	TNT1 A 0 ACS_NamedExecuteAlways("NapalmCheckCeiling", 0, 0, 0, 0)
	TNT1 A 2
	TNT1 A 0 A_JumpIfInventory("PositiveMark", 1, "Strike")
	TNT1 A 1
	TNT1 A 0 A_GiveToTarget("FailedMark", 1)
	BINF ABABAB 4 BRIGHT
	Stop

    Strike:
	TNT1 A 0
	TNT1 A 0 ACS_NamedExecuteAlways("NapalmFighterAnimate")
	TNT1 A 0 A_PrintBold("NAPALM STRIKE INCOMMING!!!", 6)
	TNT1 A 0 A_GiveToTarget("FireMission", 1)
	BINF CBCBCBCBCBCBCBCBCBCBCBCB 10 BRIGHT
	TNT1 A 0 A_PlaySOund("NAPAL1", 1)
	BINF CBCBCBCBCBCBC 10 BRIGHT
	TNT1 A 0 A_PlaySOund("Explode1", 2)
	TNT1 A 0 Radius_Quake(5, 5, 2, 999, 0)
	TNT1 A 0 A_spawnItemEx("SpawnedNapalmExplosion", 0, 0, 0)
	TNT1 A 0 A_spawnItemEx("SpawnedNapalmExplosion", 450, 0)
	TNT1 A 0 A_spawnItemEx("SpawnedNapalmExplosion", -450, 0)
	TNT1 A 0 A_spawnItemEx("SpawnedNapalmExplosion", 0, 450)
	TNT1 A 0 A_spawnItemEx("SpawnedNapalmExplosion", -450, 450)
	TNT1 A 0 A_spawnItemEx("SpawnedNapalmExplosion", 450, -450)
	TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_TakeFromTarget("NapalmStrikes", 1)
	TNT1 A 0 A_TakeFromTarget("FireMission", 1)
	TNT1 A 10
	TNT1 A 0 A_PlaySOund("Explode1", 2)
	TNT1 A 10
	TNT1 A 0 A_PlaySOund("Explode2", 3)
	TNT1 A 10
	TNT1 A 0 A_PlaySOund("DistExp", 4)
	TNT1 A 50
	Stop
	}
}





Actor SpawnedNapalmExplosion
{
+NOCLIP
+FORCERADIUSDMG
Radius 32
Height 128
Damagetype "Fire"
States
	{
	 Spawn:
		TNT1 AA 0 A_CustomMissile ("HighExplosiveFlamesHuge", 0, 0, random (0, 360), 2, random (20, 50))
		TNT1 AAAAAAAAAA 0 A_CustomMissile ("NapalmExplosionParticles", 200, 0, random (0, 360), 2, random (40, 80))
		TNT1 AAAAAAAAAA 0 A_CustomMissile ("NapalmExplosionParticles", 100, 0, random (0, 360), 2, random (40, 80))
		EXPL A 0 Radius_Quake (9, 200, 0, 64, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 0 A_CustomMissile ("NapalmStrikeSmoke", 0, 0, random (0, 360), 2, random (80, 90))
		TNT1 A 0 A_Explode(900, 400, 1, 1, 400)
		TNT1 A 0 A_SpawnItem("TreeFire")
		TNT1 A 0 A_CustomMissile ("NapalmTrails", 20, 0, random (0, 360), 2, random (80, 90))
		TNT1 AAAA 50 A_CustomMissile ("BigBlackSmokeLarger", 0, 0, random (0, 360), 2, random (20, 90))
		Stop
	}
}	


ACTOR SpawnedExplosion
{
	+THRUACTORS
	States
	{
	Spawn:
        EXPL A 0 Radius_Quake (3, 8, 0, 15, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 0 A_CustomMissile("ExplosionSplashSpawner")
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 AAAAAA 0 A_CustomMissile ("BDExplosionparticles", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAA 0 A_CustomMissile ("BDExplosionparticles2", 0, 0, random (0, 360), 2, random (0, 90))
		TNT1 AAAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		
		TNT1 A 0 A_SpawnItemEx ("RocketExplosion",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION,0)
		
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_PlaySound("Explode1", 1)
		TNT1 A 0 A_PlaySound("DistExp", 3)
		TNT1 A 0 A_SpawnItem("ExplosionSmoke")
		TNT1 A 0 A_CustomMissile ("ExplosionSmoke", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 15 A_SpawnItem("ExplosionSmoke")
		Stop
	}
}



Actor ArtilleryMarker: NapalmMarker
{
States
 {
	Spawn:
	TNT1 A 1
	Loop

	Death:
	TNT1 A 0
	TNT1 A 0 ACS_NamedExecuteAlways("NapalmCheckCeiling", 0, 0, 0, 0)
	TNT1 A 2
	TNT1 A 0 A_JumpIfInventory("PositiveMark", 1, "Strike")
	TNT1 A 1
	TNT1 A 0 A_GiveToTarget("FailedMark", 1)
	BINF ABABAB 4 BRIGHT
	Stop

    Strike:
	TNT1 A 0
	TNT1 A 0 A_PrintBold("ARTILLERY STRIKE INCOMMING!!!", 6)
	TNT1 A 0 A_GiveToTarget("FireMission", 1)
	BINF DBDBDBDBDBDBDB 10 BRIGHT
	TNT1 AAAAAAAAA 30 A_spawnItemEx("FallingArtillery", random (-500, 500), random (-500, 500), 1000)

	TNT1 A 0 A_TakeFromTarget("ArtilleryStrikes", 1)
	TNT1 A 0 A_TakeFromTarget("FireMission", 1)
	Stop
	}
}



ACTOR FallingArtillery
{
	Renderstyle Add
	+MISSILE
	+THRUACTORS
	+NOBLOCKMAP
	+NOCLIP
	+FORCERADIUSDMG
	Radius 32
	Height 64
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("ArtilFall", 5)
		TNT1 A 50
		STRK ABCDEFGHIJ 1
		TNT1 A 0 A_SpawnItemEx ("ArtilleryExplosionDamage",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItemEx ("ArtilleryShrapnel",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItem("ArtilleryExplosionSFX")
		Stop
	}
}


ACTOR ArtilleryExplosionSFX
{
	Renderstyle Add
	+MISSILE
	+THRUACTORS
	+NOBLOCKMAP
	+NOCLIP
	+FORCERADIUSDMG
	Radius 32
	Height 64
	States
	{
	Spawn:
        EXPL A 0 Radius_Quake (4, 60, 0, 999, 0)//(intensity, duration, damrad, tremrad, tid)
		EXPL AAAAAA 0 A_CustomMissile ("BDExplosionparticlesFast", 184, 0, random (0, 360), 2, random (40, 90))
		EXPL AAAA 0 A_CustomMissile ("BDExplosionparticlesFast", 228, 0, random (0, 360), 2, random (40, 90))
        TNT1 AAAAAAAAAAAAA 0 A_CustomMissile ("ArtilleryExplosionFlames", 0, 0, random (0, 360), 2, random (10, 15))
		TNT1 A 0
		EXPL AAAA 0 A_CustomMissile ("MudDustaRTILLERY", 128, 0, random (0, 360), 2, random (50, 60))
		EXPL A 0 A_CustomMissile ("BrownCloudArtillery", 96, 0, random (0, 360), 2, 90)
		EXPL A 0 A_CustomMissile ("BrownCloudArtillery", 2, 0, random (0, 360), 2, 90)
		EXPL A 0 A_CustomMissile ("ArtilleryDirtLaunched", 2, 0, random (0, 360), 60, 90)
		TNT1 A 0 A_PlaySound("Explode1", 1)
		TNT1 A 0 A_PlaySound("DistExp", 3)
		Death:
		EXPL A 0 Radius_Quake (8, 60, 0, 64, 0)//(intensity, duration, damrad, tremrad, tid)
		EXP1 AABBCCDDEEFFGGHHIIJJKKLLMMNN 1 BRIGHT A_SetScale(scalex+0.15, scaley+0.20)
		TNT1 A 35
		Stop
	}
}


actor ArtilleryExplosionDamage
{
+MISSILE
+FORCERADIUSDMG
Radius 2
Height 2
Damagetype ExplosiveImpact
Obituary "%o was exploded by %k rocket."
States    {
    Spawn:
	Goto Death
	Death:
	TNT1 A 0
	TNT1 A 0 A_Explode(4000,200, 1, 1, 200)
        Stop}}

actor ArtilleryShrapnel: ArtilleryExplosionDamage
{
Damagetype Shrapnel
States    {
    Spawn:
	Goto Death
	Death:
	TNT1 A 0
	TNT1 A 0 A_Explode(300,600)
    Stop}}




Actor EnemyRocket: Rocket2
{
	Speed 30
	damage (random(200,200))
	Species none
	+THRUGHOST
	+GHOST
	+NOGRAVITY
}

Actor EnemyRocketFast: EnemyRocket
{
Speed 120
Radius 64
Height 64
}

Actor RocketBackblast: FastProjectile
{
	speed 80
	damage (random(12,12))
	Decal "Scorch"
	Radius 22
	Height 12
	Alpha 0.9
	Scale 1.0
	Renderstyle ADd
	+RIPPER
	+GHOST
	+THRUGHOST
	DamageType Shotgun
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 2
			//TNT1 A 0 A_CustomMissile("ExplosionSmokeHD", 2, 0, random(0, 360), 2, random(0, 90))
			EXPL GHI 1 //A_CustomMissile ("BackblastFlames", 0, 0, random (0, 360), 2, random (0, 360))
			Stop
			
		Death:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("CheckRocketBackblast")
			TNT1 A 3
			TNT1 A 0 A_Explode(4, 1, 0)
			TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_CustomMissile("ExplosionSmokeHD", 2, 0, random(0, 360), 2, random(0, 90))
			Stop
		Disappear:
			TNT1 A 0
			Stop
	}
}


Actor RocketBackblast2: RocketBackblast
{
	Decal "None"
	Radius 4
	Height 4
	DamageType "Shotgun"
	States
	{
		Spawn:
			TNT1 A 0
			
			TNT1 A 2
			TNT1 A 0 A_CustomMissile("ExplosionSmokeHD", 2, 0, random(0, 360), 2, random(0, 90))
			TNT1 GHI 1 //A_CustomMissile ("BackblastFlames", 0, 0, random (0, 360), 2, random (0, 360))
			Stop
			
		Death:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("CheckRocketBackblast")
			TNT1 A 3
			TNT1 A 0 A_Explode(22, 2)
			TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_CustomMissile("ExplosionSmokeHD", 2, 0, random(0, 360), 2, random(0, 90))
			Stop
	}
}

Actor RocketBackblast3: RocketBackblast2
{
	Radius 32
	Height 12
	Damagetype "Shotgun"
	States
	{
		
		Death:
			TNT1 A 3
			TNT1 A 0 A_Explode(32, 64, 0, 0, 64)
			TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			//TNT1 A 0 A_CustomMissile("ExplosionSmokeHD", 2, 0, random(0, 360), 2, random(0, 90))
			Stop
	}
}


Actor RocketBackblastRealism: RocketBackblast
{
	damage (random(60,60))
	damagetype ExplosiveImpact
	States
	{
		
		Death:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("CheckRocketBackblast")
			TNT1 A 3
			TNT1 A 0 A_Explode(128, 32)
			TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_CustomMissile("ExplosionSmokeHD", 2, 0, random(0, 360), 2, random(0, 90))
			Stop
	}
}




Actor HugeRocketBackblast: RocketBackblast
{
speed 80
damage (random(120,120))
Decal "BigScorch"
DamageType Fire
States
{
	Spawn:
		TNT1 A 0
		TNT1 A 2
		Stop
		
Death:
	TNT1 A 0
	TNT1 A 0 ACS_NamedExecuteAlways("CheckRocketBackblast")
    TNT1 A 3
	TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_Explode(300, 200, 0, 1, 1)
	Stop
}
}



actor RocketExplosion
{
+MISSILE
Radius 2
Height 2
Damagetype ExplosiveImpact
Obituary "%o was exploded by %k rocket."
States    {
    Spawn:
	Goto Death
	Death:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("WhiteShockwave")
	TNT1 A 3
	TNT1 A 0 A_Explode(200,92, 1, 1, 92)
        Stop}}

actor RocketShrapnel: RocketExplosion
{
Damagetype Shrapnel
States    {
    Spawn:
	Goto Death
	Death:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("WhiteShockwave")
	TNT1 A 3
	TNT1 A 0 A_Explode(64,256)
    Stop}}
		
actor LiquidExplosionEffectSpawner
{
+NOBLOCKMAP
+MISSILE
Radius 2
Height 2
Damagetype CauseWaterSplash
States    {
    Spawn:
	TNT1 A 1
	TNT1 A 0 A_Explode(3,9)
        Stop}}
		
actor BarrelExplosion: RocketExplosion
{
+FORCERADIUSDMG
States    {
    Spawn:
	Goto Death
	Death:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("WhiteShockwaveBig")
	TNT1 A 3
TNT1 A 0 A_Explode(160,200)
        Stop}}
		
		
		
actor TankMissileExplosion: RocketExplosion
{
+FORCERADIUSDMG
States    {
    Spawn:
	Goto Death
	Death:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("WhiteShockwaveBig")
	TNT1 A 3
TNT1 A 0 A_Explode(200,300)
        Stop}}		
		
	
actor BarrelExplosionAnnouncer: RocketExplosion
{
+FORCEPAIN
Damagetype BarrelExploded
+DONTSPLASH
States    {
    Spawn:
	Goto Death
	Death:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("WhiteShockwaveBig")
	TNT1 A 3
TNT1 A 0 A_Explode(3,220)
        Stop}}		
		
actor GrenadeExplosion: RocketExplosion
{
+FORCERADIUSDMG
States    {
    Spawn:
	TNT1 A 0
	TNT1 A 1
TNT1 A 0 A_Explode(128,64, 1, 1, 64)
TNT1 A 0 A_SpawnItem("WhiteShockwaveBig")
        Stop}}


actor GrenadeShrapnel: RocketExplosion
{
Damagetype Shrapnel
States    {
    Spawn:
	TNT1 A 0
	TNT1 A 1
TNT1 A 0 A_Explode(64,300, 1, 1, 128)
TNT1 A 0 A_SpawnItem("WhiteShockwaveBig")
        Stop}}	
		
		
		
actor BFGSprayExplosion: RocketExplosion
{
+FORCERADIUSDMG
DamageType "Desintegrate"
States    {
    Spawn:
	TNT1 A 0
	TNT1 A 1
TNT1 A 0 A_Explode(40,1)
        Stop}}	

ACTOR CyberRocket: Rocket2
{
	Speed 30
}

ACTOR GrenadeMissile
{
	Radius 4
	Height 4
	Speed 50
	Damage (random(60, 60))
    +MISSILE
    +BLOODSPLATTER
    Gravity 0.7
    +GHOST
	+THRUGHOST
	+SKYEXPLODE
	+BOUNCEONFLOORS
	+BOUNCEONWALLS
	+BOUNCEONCEILINGS
	+EXPLODEONWATER
	+THRUSPECIES
	Species "Marines"
	DamageType Kick
    BounceFactor 0.5
	WallBounceFactor 0.35
	SeeSound "Weapons/GrenadeBounce"
	DeathSound "none"
	Decal "Scorch"
	Obituary "$OB_MPROCKET"
	Damagetype "ExplosiveIMpact"
	Scale 0.5
	States
	{
	Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 6, "Explode")
		TNT1 A 0 A_CheckFloor("Death")
		GBPJ AAABBBCCCDDD 1 A_CustomMissile ("RocketSmokeTrail52", 2, 0, random (70, 110), 2, random (0, 360))
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 6, "Explode")
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		GBPJ EEEFFFGGGHHH 1 A_CustomMissile ("RocketSmokeTrail52", 2, 0, random (70, 110), 2, random (0, 360))
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 6, "Explode")
		
		Loop
	
	SpawnUnderwater:
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		GBPJ ABCD 3
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 6, "Explode")
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		GBPJ EFGH 3	
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 6, "Explode")
	    Goto Spawn
	
	Death:
	    TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 6, "Explode")
		GBPJ AAAA 3 A_CustomMissile ("RocketSmokeTrail52", 2, 0, random (70, 110), 2, random (0, 360))
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		Loop
		
	XDeath:
	TNT1 A 0 A_Recoil(1)
	TNT1 A 0 A_SetAngle(random (90,-90) + angle)
	GBPJ C 1 ThrustThingZ(0,20,0,1)
	Goto Spawn
	
	Explode:
	Death.Slime:
	Death.Fire:
	Death.Bullet:
	Death.Shotgun:
	Death.SSG:
	Death.Cutless:
	Death.Shrapnel:
	    TNT1 A 0
		TNT1 A 0 A_CustomBulletAttack(90, 30, 30, 5, "GrenadePuff", 600, CBAF_AIMFACING)
		TNT1 A 0 A_SetANgle(angle-180)
		TNT1 A 0 A_CustomBulletAttack(90, 30, 30, 5, "GrenadePuff", 600, CBAF_AIMFACING)
		TNT1 A 0 A_Explode(200, 80)
		TNT1 A 1 A_SpawnItemEx ("Footstep91",0,0, 40,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 1
		TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
        EXPL A 0 Radius_Quake (3, 8, 0, 30, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 0 A_SpawnItemEx ("ExplosionSplashSpawner", 0, 0, -20)
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)

        TNT1 AAAAAAAAAA 0 A_CustomMissile ("BDExplosionparticlesBig", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAA 0 A_CustomMissile ("BDExplosionparticles2", 0, 0, random (0, 360), 2, random (0, 90))
		TNT1 AAAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		
		TNT1 AA 0
		TNT1 A 0 A_PlaySound("Explode1", 1)
		TNT1 A 0
		//TNT1 AAAAAAAAAAAAA 3 A_CustomMissile ("HeavyExplosionSmoke", 2, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 30
		Stop	
	}
}



ACTOR ShortGrenade: GrenadeMissile
{
-BOUNCEONFLOORS
-BOUNCEONWALLS
-BOUNCEONCEILINGS
+SLIDESONWALLS
-THRUSPECIES
Damage (random(150, 150))
SeeSound "None"
Damagetype ExplosiveImpact
Gravity 0.6
Decal "none"
	States
	{
	Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		GBPJ AAAAAAAAABBBBBBBCCCCCDDDDDEEEEEFFFFFGGGGGHHHHH 1
		Loop
	
	SpawnUnderwater:
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		GBPJ ABCD 3
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 1, "Explode")
		TNT1 A 0 A_GiveInventory("STGrenadeTimer", 1)
		GBPJ EFGH 3	
		TNT1 A 0 A_JumpIfInventory("STGrenadeTimer", 1, "Explode")
	    Goto Spawn
	
	Death:
	XDeath:
	TNT1 A 1
	Goto Explode
	}
}



ACTOR GrenadeMissileBreaksGlass: ShortGrenade
{
    -BLOODSPLATTER
	Damagetype "Normal"
	+NOPAIN
	Decal "None"
	Damage (random (1,2))
	States
	{
	Spawn:
	    TNT1 A 1
		TNT1 A -1
		Stop
	
	Death:
	XDeath:
	Melee:
	    TNT1 A 0
		Stop
		
	}
}




ACTOR BouncingGrenade: GrenadeMissile
{
    +BOUNCEONFLOORS
	+BOUNCEONWALLS
	+BOUNCEONCEILINGS
	+EXPLODEONWATER
    BounceFactor 0.5
	Damage (random (50, 50))
	SeeSound "Weapons/GrenadeBounce"
}

ACTOR CyberDemonGrenade: BouncingGrenade
{
	Speed 28
	Damage 30
	DamageType Explosive
    BounceFactor 0.9
	States
	{
	Death:
		EXPL A 1 A_Explode(200,200)
        EXPL A 0 Radius_Quake (2, 8, 0, 15, 0)
        TNT1 A 0 //A_AlertMonsters
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItemEx ("RocketExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 AAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
        TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
        TNT1 AAAAAAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
        TNT1 A 1
		TNT1 A 0 A_PlaySound("FAREXPL", 3)
		TNT1 AAAAAAAAAAAAA 3 A_CustomMissile ("HeavyExplosionSmoke", 2, 0, random (0, 360), 2, random (0, 360))
		Stop
	}
}



Actor DragonBreath
{
	Projectile
	+RANDOMIZE
+FORCEXYBILLBOARD
-BLOODSPLATTER 
+BLOODLESSIMPACT
	+GHOST
	+THRUGHOST
damage 0
radius 1
height 1
speed 40
renderstyle ADD
alpha 0.9
scale .15
    DamageType Flames
	SeeSound "fatso/attack"
    Decal "BigScorch"
states
	{
	Spawn:
		TNT1 AAAAA 2 A_SpawnItem("SpawnedFlamers")
		Stop
Death:
    Stop
XDeath:
TNT1 A 0
Stop
	}
}

ACTOR MarinesRocket: Rocket2
{
	DamageType FriendBullet
}


















ACTOR CyberBalls: Rocket2
{
	Radius 10
	Height 8
	Projectile
	Speed 20
    Damage (random (250, 250))
	DamageType Extreme
    Gravity 0.00
    Decal "Scorch"
	Renderstyle Add
    -NOGRAVITY
	+EXTREMEDEATH
	+THRUGHOST
	-THRUSPECIES
	Species "None"
	Scale 1.7
    SeeSound "DSCANFIR"
    //SeeSound "RLANSHOT"
	DeathSound "Explosion"
	Obituary "%o was exploded to pieces by a Cyberdemon."
	States
	{
	Spawn:
	    TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor", 0, 0, 0, 0)//Check Effects
		
	Spawn1:	
		TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
	    WYVB A 1 Bright A_SpawnItem("RedFlareSmall22",0,0) 
		TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random (160, 210), 2, random (-30, 30))
		TNT1 A 0 A_JumpIfInventory("lowgraphicsmode", 1, "SpawnCheap")
		Loop
		
	SpawnCheap:
	    TNT1 A 0
	    WYVB A 1 Bright A_SpawnItem("RedFlareSmall22",0,0) 
		Loop	
	
	
	SpawnUnderwater:
	    WYVB A 1 Bright A_SpawnItem("YellowFlareSmall",0,0) 
        TNT1 A 0 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
		Goto Spawn1
	}
}

Actor FastCyberballs: Cyberballs
{
Speed 60
Damage 30
}

ACTOR CyberballTrail
{
    Radius 0
    Height 0
	Alpha 1.0
	RenderStyle Add
	Scale 0.9
	Speed 2
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
	+MISSILE
	+FORCEXYBILLBOARD
    +CLIENTSIDEONLY
	Damage 0
    +NOINTERACTION
    States
    {
    Spawn:
	    TNT1 A 2
        WYVB CDE 1

Stop
    }
}







ACTOR MarineGrenade
{
	Radius 4
	Height 4
	Speed 20
	Damage 20
    +MISSILE
    +BLOODSPLATTER
	+EXTREMEDEATH
	+BOUNCEONFLOORS
	+BOUNCEONWALLS
	+BOUNCEONCEILINGS
	+GHOST
	+THRUGHOST
	BounceFactor 0.5
	Damagetype "FriendBullet"
    Gravity 1.0
	Scale 0.2
    Decal "Scorch"
    SeeSound "none"
	DeathSound "Explosion"
	Obituary "$OB_MPROCKET"
	+EXTREMEDEATH
	States
	{
	Spawn:
		TNT1 A 0
		BLUD C 0 ThrustThingZ (0,50,1,0)
	Live:
		GRND ABCDEFGH 2
		Loop
		
		
		Death:
        EXPL A 0 Radius_Quake (2, 8, 0, 15, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 0 A_SpawnItemEx ("ExplosionSplashSpawner", 0, 0, -20)
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItemEx ("BarrelKaboom",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 AAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
        TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
        TNT1 AAAAAAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
        TNT1 A 0 A_Explode(200, 300)
		TNT1 A 1
		TNT1 A 0 A_PlaySound("FAREXPL", 3)
		TNT1 AAAAAAAAAAAAA 3 A_CustomMissile ("HeavyExplosionSmoke", 2, 0, random (0, 360), 2, random (0, 360))
		Stop
	}
}



ACTOR ZombiemanGrenade: MarineGrenade
{
	Damagetype "ExplosiveImpact"
	Speed 10
	Damage 0
	-EXTREMEDEATH
	+GHOST
	+THRUGHOST
	BounceFactor 0.7
	States
	{
	Spawn:
		TNT1 A 0
		BLUD C 0 ThrustThingZ (0,50,1,0)
	Live:
		GRND ABCDEFGH 2
		Loop
		
		
		Death:
        EXPL A 0 Radius_Quake (2, 8, 0, 15, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 0 A_SpawnItemEx ("ExplosionSplashSpawner", 0, 0, -20)
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItemEx ("BarrelKaboom",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 AAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
        TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
        TNT1 AAAAAAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
        EXPL AAAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_Explode(20, 200, 0)
		TNT1 A 0 A_Explode(20, 70, 1)
		TNT1 A 1
		TNT1 A 0 A_PlaySound("FAREXPL", 3)
		TNT1 AAAAAAAAAAAAA 3 A_CustomMissile ("HeavyExplosionSmoke", 2, 0, random (0, 360), 2, random (0, 360))
		Stop
	}
}



ACTOR NuclearRocket: Rocket2
{
+FORCERADIUSDMG
-NOGRAVITY
+SKYEXPLODE
-DONTHURTSPECIES
+DOHARMSPECIES
+NODAMAGETHRUST
Gravity 0.6
Damage (random (20000, 20000))
Speed 100
Scale 1.0
Damagetype "Fire"
Species "None"
	States
	{
	Spawn:
	
		TNT1 A 0
		TNT1 A 0 A_PlaySound("DSRLAUN")
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast", 0, 0, 180, 2, 0+pitch)
	Live:
	    MISL A 1 Bright A_SpawnItem ("FireballExplosionFlamesSmall")
		TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		TNT1 A 0 A_SpawnItem("RocketFlare",-20,0)
		TNT1 A 0 A_CustomMissile ("ExplosionSmoke", 2, 0, random (160, 210), 2, random (-30, 30))
		TNT1 A 0 A_SpawnItem("PlasmaSmoke")
		Loop
	
	SpawnUnderwater:
	    TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		TNT1 A 0 A_SpawnItem("RocketFlare",-20,0)
	    TNT1 A 0 A_CustomMissile ("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
	    Goto Live
	
	Death:
        TNT1 A 0
		TNT1 A 0 A_Explode(90, 1500, 1, 1, 1400)
		TNT1 A 1
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("NuclearFlamesImpact", 5, 0, random (0, 360), 2, random (0, 10))
		TNT1 A 0 A_CustomMissile ("SpawnedExplosionNuke2", 30, 0, random (0, 360), 2, random(80, 90))
		//TNT1 AAA 0 A_CustomMissile ("lONGExplosionSpawner", 30, 0, random (0, 360), 2, 90)
		TNT1 AAA 0  A_SpawnItemEx("SpawnedExplosionNuke", random (-400, 400), random (-400, 400), random (0, 100))
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0  A_SpawnItemEx("SpawnedExplosionNuke", random (-600, 600), random (-600, 600), random (0, 50))
		EXPL A 0 Radius_Quake (9, 200, 0, 300, 0)
		TNT1 AAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("NukeFlare", random (-800, 800), random (-800, 800), random (0, 100))
		TNT1 AAAA 2 A_SpawnItemEx("NukeFlare", random (-800, 800), random (-800, 800), random (0, 100))
		TNT1 A 0 A_Explode(100, 5000, 1, 1, 4000)
		TNT1 A 0 A_PlaySound("NUKEEXP", 1)
		TNT1 A 0 A_Explode(4000,800, 1, 1, 1)
		TNT1 A 4 A_SpawnItemEx("NukeFlare", 0, 0, 300)
		TNT1 A 4 A_SpawnItemEx("NukeFlare", 0, 0, 450)
		TNT1 A 4 A_SpawnItemEx("NukeFlare", 0, 0, 600)
		TNT1 A 4 A_SpawnItemEx("NukeFlare", 0, 0, 750)
		TNT1 A 4 A_SpawnItemEx("NukeFlare", 0, 0, 900)
		TNT1 A 4 A_SpawnItemEx("NukeFlare", 0, 0, 1100)
		TNT1 A 4 A_SpawnItemEx("NukeFlare", 0, 0, 1200)
		TNT1 A 4 A_SpawnItemEx("NukeFlare", 0, 0, 1300)
		TNT1 A 4 A_SpawnItemEx("NukeFlare", 0, 0, 1400)
		TNT1 A 4 A_SpawnItemEx("NukeFlare", 0, 0, 1500)
		TNT1 AAAAA 4 A_SpawnItemEx("NukeFlare", 0, 0, 1600)
		EXPL A 0 Radius_Quake (6, 200, 0, 300, 0)
		TNT1 A 60
		TNT1 AAAAAAAAAAAAA 0  A_CustomMissile ("NukeSmoke", random (50, 1200), 0, random (0, 360), 2, random(80, 90))
		TNT1 AAA 0  A_CustomMissile ("NukeSmokeBig", 1400, 0, random (0, 360), 2, random(80, 90))
		TNT1 A 1000
		sTOP	
	}
}




ACTOR TankShell
{
	Radius 6
	Height 6
	Speed 150
	Damage (random (1500, 1500))
	Projectile
	+RANDOMIZE
	+DEHEXPLOSION
	+MISSILE
	-NOGRAVITY
	+GHOST
	+THRUGHOST
	+RIPPER
	damagetype "TankShell"
	Gravity 0.2
	SeeSound "weapons/rocklf"
	DeathSound "weapons/rocklx"
	Obituary "$OB_MPROCKET"
	Decal "BigScorch"
	Damagetype "ExplosiveImpact"
	Renderstyle Add
    Scale 1.0
	States
	{
	Spawn:
		TRAC A 1 Bright
		Loop
	Death:
		MISL B 0 Bright A_Explode
		TNT1 A 0 A_SpawnItem("TankShotExplosionImpact")
	Goto ExplosionEffect
	
	ExplosionEffect:
		TNT1 A 0 A_PlaySound("Explosion", 1)
		TNT1 A 0 A_SpawnItemEx ("ExplosionSplashSpawner", 0, 0, -20)
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		
		TNT1 AAAAAAAAAA 0 A_CustomMissile ("BDExplosionparticlesBig", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAAA 0 A_CustomMissile ("TankExplosionFlames", 0, 0, random (0, 360), 2, random (0, 90))
		TNT1 AA 0 A_CustomMissile ("TankExplosionFlames", 0, 0, random (0, 360), 2, random (0, 90))
		TNT1 AAA 0 A_CustomMissile ("BDExplosionparticles2", 0, 0, random (0, 360), 2, random (40, 90))
        TNT1 AAA 0 A_CustomMissile ("BDExplosionparticles3", 0, 0, random (0, 360), 2, random (40, 90))
		TNT1 AAA 0 A_CustomMissile ("BDExplosionparticles4", 0, 0, random (0, 360), 2, random (40, 90))

	EXPL AAAAAAAAAAAAAA 0 A_CustomMissile ("BDExplosionparticlesFast", 32, 0, random (0, 360), 2, random (40, 90))
		TNT1 AAA 0 A_CustomMissile ("BigBlackSmoke", 0, 0, random (0, 360), 2, random (40, 90))
		//EXPL AAAAA 0 A_CustomMissile ("ExplosionSmoke22", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 6
		TNT1 A 0 A_PlaySound("FAREXPL", 1)
		TNT1 A 12
		Stop
	}
}


Actor TankShellWeak: BazookaRocket
{
Damage (random (1000, 1000))
Scale 0.6
Renderstyle Add
Gravity 0.1
States
	{
	Spawn:
		TRAC A 1 Bright
		Loop
	}
}



ACTOR RecoilessRifleEffects
{
	Radius 4
	Height 2
	Projectile
	Speed 40
	Projectile
	+MISSILE
	SeeSound "weapons/RLL"
	Obituary "$OB_MPROCKET"
	Species "Marines"
	States
	{
	Spawn:
	
		MISL A 0
		TNT1 A 0 A_PlaySound("DSRLAUN")
		TNT1 A 1 Bright A_CustomMissile ("RocketSmokeTrail1", 2, 0, random (160, 210), 2, random (-30, 30))
		TNT1 AAAAAAA 0 Bright A_CustomMissile ("BDExplosionparticles4", 2, 0, random (160, 210), 2, random (-30, 30))
		TNT1 AAAAAAA 0 Bright A_CustomMissile ("BDExplosionparticlesFast", 2, 0, random (160, 210), 2, random (-30, 30))
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast3", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames1", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames3", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames4", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 1 Bright A_CustomMissile ("RocketSmokeTrail1", 2, 0, random (160, 210), 2, random (-30, 30))
	Stop
}}

Actor TankShellSuper: TankShell
{
Speed 220
Damage (random (3000, 3000))
	States
		{
	Death:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("TankShotExplosionImpact")
		TNT1 A 0 A_PlaySound("Explosion", 1)
		TNT1 A 0 A_SpawnItemEx ("ExplosionSplashSpawner", 0, 0, -20)
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItemEx ("ArtilleryExplosionDamage",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItemEx ("ArtilleryShrapnel",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItem("ArtilleryExplosionSFX")
		TNT1 A 6
		TNT1 A 1 A_PlaySound("FAREXPL", 4)
		TNT1 A 3 A_PlaySound("FAREXPL", 5)
		TNT1 A 3 A_PlaySound("FAREXPL", 6)
		TNT1 A 12
		Stop
}}

Actor EnemYTankShell: TankShell
{
Speed 80
Damage (random (300, 300))
+NOGRAVITY
+THRUSPECIES
Species "EnemyTank"
Scale 0.5
States
	{
	Death:
	MISL B 0 Bright A_Explode(40, 200)
	Goto ExplosionEffect
}}

Actor FriendTankShell: EnemYTankShell
{
Species "Marines"
}

Actor EnemyTankShell2: EnemYTankShell
{
Damage (random (800, 800))
}


ACTOR TankShotExplosionImpact
{
	damagetype "ExplosiveImpact"
	+MISSILE
	+NOCLIP
	States
	{
	Spawn:
		TNT1 A 1
		TNT1 A 0 A_Explode(300, 500)
		Stop
	}
}








actor SpawnOtherGUnner
{
+MISSILE
Radius 2
Height 2
+FORCERADIUSDMG
+FORCEPAIN
Damagetype SpawnGunner
Obituary "%o was exploded by %k rocket."
States    {
    Spawn:
	Goto Death
	Death:
	TNT1 A 0
	TNT1 A 0 A_Explode(15,128)
        Stop}}
		



ACTOR IncendiaryRocket: Rocket2
{
	Speed 80
    Damage (random (200, 200))
	DamageType Flames
	Species "Marines"
	Gravity 0.6
	+NODAMAGETHRUST
	States
	{
	
	Death:
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_CustomMissile ("WIllyPeteParticle", 0, 0, 0, 2, random (40, 80))
		TNT1 A 0 A_CustomMissile ("WIllyPeteParticle", 0, 0, 45, 2, random (40, 80))
		TNT1 A 0 A_CustomMissile ("WIllyPeteParticle", 0, 0, 90, 2, random (40, 80))
		TNT1 A 0 A_CustomMissile ("WIllyPeteParticle", 0, 0, 135, 2, random (40, 80))
		TNT1 A 0 A_CustomMissile ("WIllyPeteParticle", 0, 0, 180, 2, random (40, 80))
		TNT1 A 0 A_CustomMissile ("WIllyPeteParticle", 0, 0, 225, 2, random (40, 80))
		TNT1 A 0 A_CustomMissile ("WIllyPeteParticle", 0, 0, 270, 2, random (40, 80))
		TNT1 A 0 A_CustomMissile ("WIllyPeteParticle", 0, 0, 315, 2, random (40, 80))
		TNT1 AAA 0 A_CustomMissile ("FlamethrowerFireParticles", 0, 0, random (0, 360), 2, random (30, 80))
		TNT1 A 0 A_PlaySound("Explode3", 1)
		TNT1 A 0 A_EXplode(200, 128)
		TNT1 AAA 0 A_CustomMissile("FlamethrowerBurningStuff", random (-32, 0), random (-32, 32), random (-32, 32), 2, random (-32, 32))
		TNT1 AA 0 A_CustomMissile ("IncendiaryRocketSmokeExps", 0, 0, random (0, 360), 2, random (30, 80))
		TNT1 AAAA 0 A_CustomMissile ("IncendiaryRocketSmoke2", 0, 0, random (0, 360), 2, random (10, 90))
		TNT1 A 4
		TNT1 A 3 A_CustomMissile ("IncendiaryRocketSmoke", 0, 0, random (0, 360), 2, random (10, 90))
		Stop
	}
}


Actor WillyPeteParticle
{
  Height 1
  Radius 1
  Mass 0
  +Missile
  +DontSplash
  +FORCEXYBILLBOARD
   +GHOST
  -NOGRAVITY
  +THRUGHOST
  +NOTELEPORT
  +DOOMBOUNCE
  +THRUACTORS
  +NODAMAGETHRUST
  +USEBOUNCESTATE
  RenderStyle Add
  Scale 0.8
  Speed 16
  Gravity 0.7
  Damagetype "Flames"
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
	SPKS J 2 BRIGHT
	TNT1 A 0 A_ChangeFlag("DOOMBOUNCE", 0)
	SPKS J 3 BRIGHT
	SPKS OOOOOOOOOOOOOOOOOOOOOOOOOO 1 BRIGHT A_CustomMissile ("WillyPeteParticleSmoke8", 0, 0, 0, 2, 90)
	Fly:
	SPKS O 1
    Loop
 Bounce.Ceiling:
	TNT1 A 0
	TNT1 A 0 A_Recoil(-40)
	Goto Spawn
 Death:
	TNT1 A 0
	TNT1 A 0 A_CustomMissile("FlamethrowerBurningStuff", random (-32, 0), random (-32, 32), random (-32, 32), 2, random (-32, 32))
	TNT1 A 0 A_CustomMissile ("RocketSmokeTrail1", 2, 0, random (160, 210), 2, random (70, 90))
	TNT1 A 0 A_Explode(256, 192)
	Stop
  }
}



Actor WillyPeteParticleSmoke
{
  Height 1
  Radius 1
  Mass 0
  +Missile
  +DontSplash
  +CLIENTSIDEONLY
  +THRUACTORS
  +NOGRAVITY
  +FORCEXYBILLBOARD
  RenderStyle Translucent
  Scale 0.1
  Alpha 0.5
  Speed 0
  States
  {
  Spawn:
    SMWP A 1
	TNT1 A 0 ThrustThingZ(0, 1, 0, 1)
	SMWP A 5
	SMWP AAAAAAAAA 5 BRIGHT A_FadeOut(0.1)
    Stop
  }
}




Actor WillyPeteParticleSmoke2: WillyPeteParticleSmoke {  Scale 0.2}
Actor WillyPeteParticleSmoke3: WillyPeteParticleSmoke {  Scale 0.3}
Actor WillyPeteParticleSmoke4: WillyPeteParticleSmoke {  Scale 0.4}
Actor WillyPeteParticleSmoke5: WillyPeteParticleSmoke {  Scale 0.5}
Actor WillyPeteParticleSmoke6: WillyPeteParticleSmoke {  Scale 0.6}
Actor WillyPeteParticleSmoke7: WillyPeteParticleSmoke {  Scale 0.7}
Actor WillyPeteParticleSmoke8: WillyPeteParticleSmoke {  Scale 0.8}






Actor IncendiaryRocketSmoke
{
  Height 1
  Radius 1
  Mass 0
  +Missile
  +DontSplash
  +CLIENTSIDEONLY
  +THRUACTORS
  +NOGRAVITY
  +FORCEXYBILLBOARD
  +DOOMBOUNCE
  Scale 4.0
  Speed 1
  Renderstyle Normal
  Alpha 1.0
  States
  {
  Spawn:
    SM1K A 1
	TNT1 A 0 ThrustThingZ(0, 1, 0, 1)
	SM1K AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ 3 A_SetScale(scalex+0.01, scaley+0.01)
    Stop
  }
}


Actor IncendiaryRocketSmoke2: IncendiaryRocketSmoke
{
  Scale 2.0
  States
  {
  Spawn:
    SM1K A 1
	TNT1 A 0 ThrustThingZ(0, 1, 0, 1)
	SM1K AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ 3 A_SetScale(scalex+0.01, scaley+0.01)
    Stop
  }
}




Actor IncendiaryRocketSmokeExps: IncendiaryRocketSmoke
{
  Height 1
  Radius 1
  Mass 0
  +Missile
  +DontSplash
  +CLIENTSIDEONLY
  +THRUACTORS
  -NOGRAVITY
  +FORCEXYBILLBOARD
  Scale 1.0
  Alpha 0.92
  Speed 1
  Gravity 0.2
  +DOOMBOUNCE
  States
  {
  Spawn:
    M202 W 1
	TNT1 A 0 ThrustThingZ(0, 15, 0, 1)
	Goto Fly
	Fly:	
	M202 W 1 A_SetScale(scalex+0.05, scaley+0.05)
	M202 W 0 A_FadeOut(0.02)
	Loop
  }
}


Actor ArtilleryDirtLaunched: IncendiaryRocketSmokeExps
{
  Speed 3

  Alpha 1.0
  Scale 3.0
  Renderstyle Translucent
  States
  {
  Spawn:
    SMKE A 1
	TNT1 A 0 ThrustThingZ(0, 15, 0, 1)
	SMKE AAAAAAAAAA 1 A_SetScale(scalex+0.2, scaley+0.2)
	Goto Fly
	Fly:	
	SMKE A 1 A_SetScale(scalex+0.2, scaley+0.2)
	SMKE A 0 A_FadeOut(0.04)
	Loop
  }
}



Actor NapalmTrails: IncendiaryRocketSmokeExps
{
  Scale 0.1
  Renderstyle Translucent
  +NOGRAVITY
  Speed 0
  Alpha 0.5
  States
  {
  Spawn:
    SMKE B 1
	SMKE BBBBBBBBBB 1 A_SetScale(scalex+0.4, scaley+0.4)
	SMKE BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 2 A_SetScale(scalex+0.1, scaley+0.05)
	SMKE BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 2 A_SetScale(scalex+0.1, scaley+0.05)
	Goto Fly
	Fly:	
	SMKE B 2 A_SetScale(scalex+0.05, scaley+0.02)
	SMKE A 0 A_FadeOut(0.005)
	Loop
  }
}




Actor NapalmStrikeSmoke: IncendiaryRocketSmokeExps
{
  Scale 2.0
  Speed 0
  +NOGRAVITY
  States
  {
  Spawn:
    M202 W 1
	TNT1 A 0 ThrustThingZ(0, 1, 0, 1)
	Goto Fly
	Fly:	
	M202 W 1 A_SetScale(scalex+0.06, scaley+0.06)
	M202 W 0 A_FadeOut(0.01)
	Loop
  }
}