//KA-BOOOOOOOM! (Shockwave)

ACTOR KaBoom
{
	Scale 4
	Renderstyle Add
	DamageType "Superweapon"
	PROJECTILE
	+NOINTERACTION
	+NOGRAVITY
	States
	{   
	Spawn:
	BIGB ABCDEFGHIJ 2 Bright
	BIGB KLMNOP 2 Bright A_Explode(7500,768,0)
	BIGB QRSTU 2 Bright
	Stop
	}
}

ACTOR KaBoomer
{
    +NOGRAVITY
    +NOINTERACTION
    States
	{
	Spawn:
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("KaBoom",random(-100,100),random(-100,100),random(-100,100),random(-4,4),random(-4,4),random(-2,6),random(0,359),SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION,40)
	Stop
	}
}

//NUKE

Actor Nuke
{
 +NoBlockmap
 +NoGravity
 +NoInteraction
 Radius 0
 Height 0
 States
 {
  Spawn:
   TNT1 A 0 NoDelay A_PlaySound("Weapons/StalinowiczBoom",0)
   TNT1 A 0 A_Quake(7, 100, 0, 9096, "none")
   TNT1 A 0 A_SpawnItemEx("NukeBoom",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
   TNT1 A 0 A_SpawnItemEx("NukeBoomLethal",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
   TNT1 A 0 A_SpawnItemEx("NukeFlare", 0, 0, 0, 0, 0, 0, 0)
   TNT1 A 25 A_SpawnItemEx("NukeFloor", 0, 0, 0, 0, 0, 0, 0)
   TNT1 AA 0 A_SpawnItemEx("NukeSmokeFloor", 0, 0, 0, 0, 0, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukePillar", 0, 0, 0, 0, 0, 10, 0)
   TNT1 A 105 A_SpawnItemEx("NukeSmokePillar", 0, 0, 0, 0, 0, 10, 0)
   TNT1 A 0 A_SpawnItemEx("NukeMushroom", 0, 0, 800, 0, 0, 0, 0)
   TNT1 AA 0 A_SpawnItemEx("NukeSmokeMushroom", 0, 0, 800, 0, 0, 0, 0)
   Stop
 }
}

Actor NukeBoom
{
 +NoBlockmap
 +NoGravity
 +ForceRadiusDmg
 DamageType "Superweapon"
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAA 2 A_Explode(75000, 1536, 0, 1)
   Stop
 }
}

Actor NukeBoomLethal
{
 +NoBlockmap
 +NoGravity
 +ForceRadiusDmg
 DamageType "Superweapon"
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAA 2 A_Explode(75000, 768, 1)
   Stop
 }
}

Actor NukeFire : Nuke
{
 RenderStyle Add
 +NoInteraction
 +DONTSPLASH
 +EXPLODEONWATER
 Scale 0.75
 States
 {
  Spawn:
   TNT1 AA 0 A_Jump(196, "Spawn2", "Spawn3", "Spawn4")
   FLA1 A 1 Bright A_FadeOut(0.01)
   Wait
  Spawn2:
   FLA2 A 1 Bright A_FadeOut(0.01)
   Wait
  Spawn3:
   FLA3 A 1 Bright A_FadeOut(0.01)
   Wait
  Spawn4:
   FLA4 A 1 Bright A_FadeOut(0.01)
   Wait
 }
}

Actor NukeSmoke : Nuke
{
 Scale 3.5
 +NoInteraction
 +DONTSPLASH
 +EXPLODEONWATER
 Alpha 0.5
 States
 {
  Spawn:
   TNT1 A 0 NoDelay A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4")
  Spawn1:
   NSMK A 0
   Goto Main
  Spawn2:
   NSMK B 0
   Goto Main
  Spawn3:
   NSMK C 0
   Goto Main
  Spawn4:
   NSMK D 0
   Goto Main
  Main:
   "####" "#" 5 A_FadeOut(0.007)
   Loop
  FASTAH:
   "####" "#" 2 A_FadeOut(0.007)
   Loop
 }
}

Actor NukeFlare : NukeFire
{
 Scale 8
 +NoInteraction
 States
 {
  Spawn:
   FLAR A 1 Bright A_FadeOut(0.005)
   Wait
 }
}

Actor NukeFloor : Nuke
{
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("NukeFire", 0, 0, 0, 0.00001 * Random(0, 300000), 0.00001 * Random(0, 300000), 0, Random(0, 359), 128, 0)
   Stop
 }
}

Actor NukeSmokeFloor : Nuke
{
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 0.00001 * Random(0, 300000), 0.00001 * Random(0, 300000), 0, Random(0, 359), 128, 0)
   Stop
 }
}

Actor NukePillar : Nuke
{
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("NukeFire", 0, 0, 0, 0.00001 * Random(0, 100000), 0.00001 * Random(0, 100000), Random(0, -3), Random(0, 359), 128, 0)
   TNT1 A 0 A_SpawnItem("NukeSmokering", 0, 0, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("NukeFire", 0, 0, 0, 0.00001 * Random(0, 100000), 0.00001 * Random(0, 100000), Random(0, -3), Random(0, 359), 128, 0)
   Stop
 }
}

Actor NukeSmokePillar : Nuke
{
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 0.00001 * Random(0, 100000), 0.00001 * Random(0, 100000), 0.00001 * Random(0, -400000), Random(0, 359), 128, 0)
   Stop
 }
}

Actor NukeMushroom : Nuke
{
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("NukeFire", 0, 0, 0, 0.00001 * Random(0, 250000), 0.00001 * Random(0, 250000), 0.00001 * Random(-100000, 100000), Random(0, 359), 128, 0)
   Stop
 }
}

Actor NukeSmokeMushroom : Nuke
{
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 0.00001 * Random(0, 250000), 0.00001 * Random(0, 250000), 0.00001 * Random(-100000, 100000), Random(0, 359), 128, 0)
   Stop
 }
}

Actor NukeSmokering : Nuke
{
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 0, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 20, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 40, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 60, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 80, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 100, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 120, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 140, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 160, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 180, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 200, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 220, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 240, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 260, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 280, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 300, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 320, 0, 0)
   TNT1 A 0 A_SpawnItemEx("NukeSmoke", 0, 0, 0, 4, 0, 0, 340, 0, 0)
   Stop
 }
}
