Actor DOOKNOOKM
{
 +NoBlockmap
 +NoGravity
 +NoInteraction
 +ForceRadiusDmg
 DamageType "TouhouNOOK"
   Obituary "%o was completely destroyed by a Touhou's rekt nuke!!!"
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_PlaySound("touhou/NOOK", 5, 1.0, 0, ATTN_NONE)
   TNT1 A 0 A_Quake(9, 210, 0, 1048576, "None")
   TNT1 AAAA 0 A_Explode(1000, 2048, 1)
   TNT1 A 0 A_SpawnItemEx("CFMegaNukeFlare", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
   TNT1 AAAAA 0 A_SpawnItemEx("CFMegaNukeSmokeFloor", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)
   TNT1 A 0 A_SpawnItemEx("CFMegaNukeFloor", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
   TNT1 A 0 A_SpawnItemEx("CFMegaNukeMushroom", 0, 0, 0, 0, 0, 10, 0, SXF_TRANSFERPOINTERS, 0)
   TNT1 A 0 A_SpawnItemEx("CFMegaNukeFlareMushroom", 0, 0, 0, 0, 0, 10, 0, SXF_CLIENTSIDE, 0)
   TNT1 AA 0 A_SpawnItemEx("CFMegaNukeSmokeMushroom", 0, 0, 0, 0, 0, 10, 0, SXF_CLIENTSIDE, 0)
   TNT1 A 0 A_SpawnItemEx("CFMegaNukePillar", 0, 0, 0, 0, 0, 0, 12, SXF_TRANSFERPOINTERS, 0)
   TNT1 AA 0 A_SpawnItemEx("CFMegaNukeSmokePillar", 0, 0, 0, 0, 0, 12, 0, SXF_CLIENTSIDE, 0)
   Stop
  Vanilla:
	TNT1 A 1
	Stop
 }
}

Actor CFMegaNukeFire : DOOKNOOKM
{
 RenderStyle Add
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AA 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4")
  Spawn1:
   FLA1 A 0 A_SetScale(ScaleX +0.002, ScaleY +0.002)
   FLA1 A 1 Bright A_FadeOut(0.005)
   Loop
  Spawn2:
   FLA2 A 0 A_SetScale(ScaleX +0.002, ScaleY +0.002)
   FLA2 A 1 Bright A_FadeOut(0.005)
   Loop
  Spawn3:
   FLA3 A 0 A_SetScale(ScaleX +0.002, ScaleY +0.002)
   FLA3 A 1 Bright A_FadeOut(0.005)
   Loop
  Spawn4:
   FLA4 A 0 A_SetScale(ScaleX +0.002, ScaleY +0.002)
   FLA4 A 1 Bright A_FadeOut(0.005)
   Loop
 }
}

Actor CFMegaNukeSmoke : DOOKNOOKM
{
 Scale 1.5
 Alpha 0.1
 var int user_choker;
 States
 {
  Spawn:
   TNT1 A 0 
   TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("GetCVar",51) == 1, "Vanilla")
   TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4", "Spawn5", "Spawn6")
  Spawn1:   
   TNT1 A 0 A_JumpIf(user_choker >= 40,"Spawn1X")	 
   SMKH A 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH A 2 A_FadeIn(0.01)
   TNT1 A 0 A_SetUserVar("user_choker",user_choker+1)
   Loop
  Spawn1X:
   SMKH A 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH A 2 A_FadeOut(0.002)
   Loop
  Spawn2:
   TNT1 A 0 A_JumpIf(user_choker >= 40,"Spawn2X")	 
   SMKH B 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH B 2 A_FadeIn(0.01)
   TNT1 A 0 A_SetUserVar("user_choker",user_choker+1)
   Loop
  Spawn2X:
   SMKH B 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH B 2 A_FadeOut(0.002)
   Loop
  Spawn3:
   TNT1 A 0 A_JumpIf(user_choker >= 40,"Spawn3X")	 
   SMKH C 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH C 2 A_FadeIn(0.01)
   TNT1 A 0 A_SetUserVar("user_choker",user_choker+1)
   Loop
  Spawn3X:
   SMKH C 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH C 2 A_FadeOut(0.002)
   Loop
  Spawn4:
   TNT1 A 0 A_JumpIf(user_choker >= 40,"Spawn4X")	 
   SMKH D 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH D 2 A_FadeIn(0.01)
   TNT1 A 0 A_SetUserVar("user_choker",user_choker+1)
   Loop
  Spawn4X:
   SMKH D 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH D 2 A_FadeOut(0.002)
   Loop
  Spawn5:
   TNT1 A 0 A_JumpIf(user_choker >= 40,"Spawn5X")	 
   SMKH E 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH E 2 A_FadeIn(0.01)
   TNT1 A 0 A_SetUserVar("user_choker",user_choker+1)
   Loop
  Spawn5X:
   SMKH E 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH E 2 A_FadeOut(0.002)
   Loop
  Spawn6:
   TNT1 A 0 A_JumpIf(user_choker >= 40,"Spawn6X")	 
   SMKH F 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH F 2 A_FadeIn(0.01)
   TNT1 A 0 A_SetUserVar("user_choker",user_choker+1)
   Loop
  Spawn6X:
   SMKH F 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   SMKH F 2 A_FadeOut(0.002)
   Loop
 }
}

Actor CFMegaNukeSmoke2 : CFMegaNukeSmoke
{
 Scale 2.5
 Alpha 0.05
}

Actor CFMegaNukeSmoke3 : CFMegaNukeSmoke
{
 Alpha 0.05
}

Actor CFMegaNukeSmokeSpawner : CFMegaNukeSmoke
{
 +FORCERADIUSDMG
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("GetCVar",51) == 1, "Vanilla")
   TNT1 A 0 A_JumpIf(user_choker >= 20,"SpawnX")
   TNT1 A 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   TNT1 A 2
   TNT1 A 0 A_SetUserVar("user_choker",user_choker+1)
   Loop
  SpawnX:
   TNT1 A 0 A_JumpIf(user_choker >= 80,"Vanilla")
   SMKH A 0 A_SetScale(ScaleX +0.03, ScaleY +0.03)
   TNT1 A 2
   TNT1 A 0 A_SetUserVar("user_choker",user_choker+1)
   SMKH A 0 A_Jump(9,1)
   Loop
   SMKH A 0 A_SpawnItemEx("CFMegaNukeSmoke2",random(32,-32),random(32,-32),random(16,-16),frandom(0,3.0),0,0,random(0,359), SXF_CLIENTSIDE, 0)
   Loop
 }
}

Actor SmokeCount : Inventory { Inventory.MaxAmount 80 +IGNORESKILL }

Actor CFMegaNukeFlare : CFMegaNukeFire
{
 Scale 16
 +NoInteraction
 +CLIENTSIDEONLY
 States
 {
  Spawn:
   FLAR A 0 Bright A_SetScale(ScaleX -0.1, ScaleY -0.1)
   FLAR A 1 Bright A_FadeOut(0.01)
   Loop
 }
}

Actor CFMegaNukeFloor : DOOKNOOKM
{
+CLIENTSIDEONLY
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("CFMegaNukeFire", 0, 0, Random(64,256),frandom(28.5,30.0), 0, 0, Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("CFMegaNukeFire", 0, 0, Random(64,256),frandom(28.5,30.0), 0, 0, Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   TNT1 A 5
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", 0, 0, 0,frandom(0,4.0),frandom(0,4.0), 0.5, Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   Stop
 }
}

Actor CFMegaNukeSmokeFloor : DOOKNOOKM
{
+CLIENTSIDEONLY
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("CheckVanilla") == 1, "Vanilla")
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("CFMegaNukeSmokeSpawner", 0, 0, Random(64,256),frandom(30.4,32.0), 0, -0.4, Random(0, 359), SXF_CLIENTSIDE, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("CFMegaNukeSmokeSpawner", 0, 0, Random(64,256),frandom(28.5,30.0), 0, -0.4, Random(0, 359), SXF_CLIENTSIDE, 0)
   TNT1 A 5
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("CFMegaNukeSmoke3", Random(0,2048), 0, Random(64,192),frandom(0,-5.0), 0,frandom(0,-5.0), Random(0, 359), SXF_CLIENTSIDE, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeSmoke3", 0, 0, Random(64,192),frandom(0,5.0), 0, 0, Random(0, 359), SXF_CLIENTSIDE, 0)
   Stop
 }
}

Actor CFMegaNukePillar : DOOKNOOKM
{
+CLIENTSIDEONLY
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", 0, 0, 0,frandom(0,1.0), 0,frandom(0.1,10.0), Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   TNT1 AAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", 0, 0, 0,frandom(0,1.0), 0,frandom(0.1,10.0), Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", 0, 0, 0,frandom(0,1.0), 0,frandom(0.1,10.0), Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   TNT1 A 0 A_SpawnItem("CFMegaNukeSmokering", 0, 1600, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", 0, 0, 0,frandom(0,1.0), 0,frandom(0.1,10.0), Random(0, 359), SXF_TRANSFERPOINTERS, 64)
   Stop
 }
}

Actor CFMegaNukeSmokePillar : DOOKNOOKM
{
+CLIENTSIDEONLY
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeSmoke", 0, 0, 0,frandom(0,1.0), 0,frandom(-2.5,10.0), Random(0, 359), 128, 0)
   Stop
 }
}

Actor CFMegaNukeMushroom : DOOKNOOKM
{
+CLIENTSIDEONLY
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", Random(0, 128), 0, 0,frandom(0,0.25), 0,frandom(9.0, 11.0), Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", Random(0, 192), 0, 0,frandom(0,0.5), 0,frandom(9.1, 10.9), Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", Random(0, 256), 0, 0,frandom(0,0.75), 0,frandom(9.2, 10.8), Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", Random(0, 320), 0, 0,frandom(0,1.0), 0,frandom(9.3, 10.7), Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", Random(0, 384), 0, 0,frandom(0,2.0), 0,frandom(9.4, 10.6), Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeFire", Random(0, 448), 0, 0,frandom(0,3.5), 0,frandom(9.5, 10.5), Random(0, 359), SXF_TRANSFERPOINTERS, 0)
   Stop
 }
}

Actor CFMegaNukeSmokeMushroom : DOOKNOOKM
{
+CLIENTSIDEONLY
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("CheckVanilla") == 1, "Vanilla")
   TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeSmoke2", Random(0, 192), 0, 0,frandom(0,1.0), 0,frandom(10.0,11.0), Random(0, 359), SXF_CLIENTSIDE, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeSmoke2", Random(0, 240), 0, 0,frandom(0,1.5), 0,frandom(9.5,10.5), Random(0, 359), SXF_CLIENTSIDE, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeSmoke2", Random(0, 288), 0, 0,frandom(0,2.0), 0,frandom(9.0,10.0), Random(0, 359), SXF_CLIENTSIDE, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeSmoke2", Random(0, 336), 0, 0,frandom(0,2.5), 0,frandom(8.5,9.5), Random(0, 359), SXF_CLIENTSIDE, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeSmoke2", Random(0, 384), 0, 0,frandom(0,3.0), 0,frandom(8.0,9.0), Random(0, 359), SXF_CLIENTSIDE, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CFMegaNukeSmoke2", Random(0, 432), 0, 0,frandom(0,3.5), 0,frandom(7.5,8.5), Random(0, 359), SXF_CLIENTSIDE, 0)
   Stop
 }
}

Actor CFMegaNukeFlareMushroom : CFMegaNukeFlare
{
+CLIENTSIDEONLY
 Scale 10
 States
 {
  Spawn:
   FLAR A 0 Bright A_SetScale(ScaleX -0.02, ScaleY -0.02)
   FLAR A 1 Bright A_FadeOut(0.002)
   Loop
 }
}

Actor CFMegaNukeSmokering : DOOKNOOKM
{
 States
 {
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("CheckVanilla") == 1, "Vanilla")
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("CFMegaNukeSmoke2", Random(256, 512), 0, 0,frandom(7.5,8.5), 0,frandom(1.75,2.25), Random(0, 179)*2, 128, 0)
   TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("CFMegaNukeSmoke2", Random(256, 512), 0, 0,frandom(7.5,8.5), 0,frandom(1.75,2.25), Random(0, 179)*2, 128, 128)
   Stop
 }
}