Actor WinterStormIku : GenericBoss
{
	Health 3500
	Speed 20
	+MissileMore
	+MissileEvenMore
	+NOICEDEATH
	+DONTHARMSPECIES
	DamageFactor "Fire", 0
	DamageFactor "Ice", 0
	DamageFactor "Thunder", 0
	DamageFactor "Lightning", 0
	DamageFactor "ShadowFire", 0
	DamageFactor "Legendary", 0.5
	DamageFactor "SuccubusThunder", 0
	DropItem "BossLifeEssence" 255 25
	DropItem "BossArmorBonusMax" 255 1
	DropItem "DustMana" 70 30
	DropItem "DustMana" 70 30
	DropItem "DemonicChalice" 128
	DropItem "SkullOfPower" 128
	DropItem "OccultSpellbook" 200
	Tag "WinterStorm Iku"
	Obituary "%o was unready to face the storms created by Iku."
	var int user_music;
	States
	{
	Spawn:
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("Disable2hu") == 1, "Remove")
	Idle:
	    IKUU AB 3 A_Look
		IKUU BC 3
		IKUU CD 3 A_Look
		IKUU DE 3
		IKUU EF 3 A_Look
		IKUU FG 3
		IKUU GH 3 A_Look
		IKUU HI 3
		IKUU IA 3 A_Look
		Loop
	Remove:
		TNT1 A 1
		TNT1 A 0 A_SpawnItemEx("SoulKeeper",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_ChangeFlag("COUNTKILL", FALSE)
		TNT1 A 0
		Stop
	See:
	    TNT1 A 0 A_SpawnItem("LRedeYSmokeSpawner",0,0,0,0)
	    TNT1 A 0 A_JumpIf(user_music == 1,3)
		TNT1 A 0 ACS_NamedExecuteAlways("StartMonsterMusic",0,118)
		TNT1 A 0 A_SetUserVar("user_music",1)
		IKUU ABC 3 A_Chase
		IKUU DEF 3 A_Chase
		IKUU GHI 3 A_Chase
		Loop
	Missile:
		TNT1 A 0 A_JumpIfCloser(325,"BackoffLightning")
		TNT1 A 0 A_Jump(100,"Frostyflame")
		TNT1 A 0 A_Jump(90,"SpreadZap","SeekZap")
		TNT1 A 0 A_Jump(75,"FrostySummon")
		TNT1 A 0 A_Jump(20,"RedeemerLightning")
    DefaultoZap:
	    TNT1 A 0 A_SpawnItem("LRedeYSmokeSpawner",0,0,0,0)	
		IKA1 AB 3 A_FaceTarget
		IKA1 CD 3 A_FaceTarget
		IKA1 D 3 A_CustomMissile("LegSuLight",32,0,0)
		TNT1 A 0 A_Jump(128,"DefaultoZap")
		IKA1 EFG 3
		Goto See
	BackoffLightning: 
		TNT1 A 0 A_SpawnItem("LRedeYSmokeSpawner",0,0,0,0)	
		IKA1 AB 3 Bright A_FaceTarget
		IKA1 C 3 Bright A_FaceTarget
		IKA1 D 3 Bright A_PlaySound ("MageLightningFire")
		IKA1 F 0 Bright A_CustomMissile ("RedLiteTop",0,0,15,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteBot",0,0,15,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteTop",0,0,30,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteBot",0,0,30,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteTop",0,0,0,2,45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteBot",0,0,0,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteTop",0,0,-15,2,45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteBot",0,0,-15,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteTop",0,0,-30,2,-45)
		IKA1 D 8 Bright A_CustomMissile ("RedLiteBot",0,0,-30,2,-45)
		IKA1 EFG 3
		IKA1 AB 3 Bright A_FaceTarget
		IKA1 C 3 Bright A_FaceTarget
		IKA1 D 3 Bright A_PlaySound ("MageLightningFire")
		IKA1 F 0 Bright A_CustomMissile ("RedLiteTop",0,0,15,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteBot",0,0,15,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteTop",0,0,30,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteBot",0,0,30,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteTop",0,0,0,2,45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteBot",0,0,0,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteTop",0,0,-15,2,45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteBot",0,0,-15,2,-45)
		IKA1 F 0 Bright A_CustomMissile ("RedLiteTop",0,0,-30,2,-45)
		IKA1 D 8 Bright A_CustomMissile ("RedLiteBot",0,0,-30,2,-45)
		IKA1 EFG 3
       Goto See
	SpreadZap:
	    TNT1 A 0 A_SpawnItem("LRedeYSmokeSpawner",0,0,0,0)	
		IKA1 AB 3 A_FaceTarget
		IKA1 CD 3 A_FaceTarget
		TNT1 A 0 A_CustomMissile("LegSuLight",32,0,-10)
		TNT1 A 0 A_CustomMissile("LegSuLight",32,0,-5)
		TNT1 A 0 A_CustomMissile("LegSuLight",32,0,0)
		TNT1 A 0 A_CustomMissile("LegSuLight",32,0,5)
		IKA1 D 3 A_CustomMissile("LegSuLight",32,0,10)
		Goto See
	SeekZap:
        TNT1 A 0 A_SpawnItem("LRedeYSmokeSpawner",0,0,0,0)		
		IKA1 AB 3 A_FaceTarget
		IKA1 CD 3 A_FaceTarget
		IKA1 D 3 A_CustomMissile("LegSuSeekLight",32,0,0)
		IKA1 EFG 3
		IKA1 AB 3 A_FaceTarget
		IKA1 CD 3 A_FaceTarget
		IKA1 D 3 A_CustomMissile("LegSuSeekLight",32,0,0)
		IKA1 EFG 3
		TNT1 A 0 A_Jump(68,"SeekZap")
		Goto See
    Frostyflame:
		TNT1 A 0 A_SpawnItem("FRZRAGFlameSpawner",0,0,0,0)
		IKA1 AB 3 
		IKA1 CD 3 A_FaceTarget
		IKA1 D 1 A_CustomMissile("CirnoFireBurst",32,-5,0)
		TNT1 A 0 A_Jump(128,"Frostyflame")
		IKA1 EFG 3
		Goto See
	FrostySummon:
	    TNT1 A 0 A_JumpifInventory("IkuToken", 6, "FrostyFlame")
		TNT1 A 0 A_SpawnItem("FRZRAGFlameSpawner",0,0,0,0)
		IKA2 HI 3
		IKA2 JK 3
		IKA2 LM 3
		IKA2 MNMNMN 3 A_FaceTarget
		TNT1 A 0 A_GiveInventory("IkuToken", 2)
		TNT1 A 0 A_SpawnItemEx("FrozenSoul",40,20,16,0,0,0,0,SXF_SETMASTER|32)
		TNT1 A 0 A_SpawnItemEx("FrozenSoul",40,-20,16,0,0,0,0,SXF_SETMASTER|32)
		IKA2 OPQ 4
		Goto See
	RedeemerLightning:
	    TNT1 A 0 A_SpawnItem("LRedeYSmokeSpawner",0,0,0,0)
        TNT1 A 0 A_UnSetShootable		
		IKA1 HIJKLMN 7 A_FaceTarget
		IKA1 PQR 3 A_FaceTarget
		TNT1 A 0 Radius_Quake(8,60,0,20,0)
		IKA1 STSTSTSTST 4 A_FaceTarget
		TNT1 A 0 A_GiveToTarget("IkuThunderStorm",1)
		IKA1 STSTSTSTST 4 A_FaceTarget
		TNT1 A 0 A_GiveToTarget("IkuThunderStorm",1)
		IKA1 STSTSTSTST 4 A_FaceTarget
		TNT1 A 0 A_GiveToTarget("IkuThunderStorm",1)
		IKA1 STSTSTSTST 4 A_FaceTarget
		TNT1 A 0 A_GiveToTarget("IkuThunderStorm",1)
		IKA1 STSTSTSTST 4 A_FaceTarget
		TNT1 A 0 A_GiveToTarget("IkuThunderStorm",1)
		IKA1 STSTSTSTST 4 A_FaceTarget
		TNT1 A 0 A_GiveToTarget("IkuThunderStorm",1)
		IKA1 RPOU 4
		Goto LightningPostSee
	LightningPostSee:	
	    TNT1 A 0 A_SpawnItem("LRedeYSmokeSpawner",0,0,0,0)
		IKUU ABC 3 A_Wander
		IKUU DEF 3 A_Wander
		IKUU GHI 3 A_Wander
		TNT1 A 0 A_SetShootable
		Goto See
	Pain:
		IKUU L 4 A_Pain
		Goto See
	Death:
	    TNT1 A 0 A_ChangeFlag("LOWGRAVITY",1)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY",0)
		TNT1 A 0 A_ChangeFlag("FLOAT",0)
		IKUU JKL 15
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 A_Scream
		TNT1 AA 0 A_SpawnItemEx("GibbedGenerator",Random(10,-10),Random(10,-10),Random(20,60),0,0,0,0,128,0)
		TNT1 AAA 0 A_CustomMissile("BigRedBloodCloud", random(10,80), 0, random(0,360), 2, random(0,360))
		TNT1 A 0 A_SpawnItemEx("RedBossDeathExplode",0,0,32)
		TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("Red2huBossDeathFlame",0,0,20,random(-3,3),random(-3,3),random(-3,3))
		TNT1 AAAAAAAAAAA 1 A_SpawnItemEx("Red2huBossDeathFlame3",0,0,random(5,55),random(-15,15),random(-15,15),random(-15,30))
		Stop
	}
}	

Actor IkuToken : Inventory 
{
	Inventory.MaxAmount 6
}

Actor FrozenSoul : TerrorSoul
{	
    Translation Ice
    +NOICEDEATH
	+DONTHARMSPECIES
	DamageFactor Ice, 0
	DamageFactor Thunder, 0
	DamageFactor Lightning, 0
	DamageFactor Touhou, 0
	DamageFactor SuccubusThunder, 0
	SPECIES "Touhou"
	Tag "WinterStorm Soul"
	Obituary "%o got caught by in the storm made by Iku."
	States
	{
	Spawn:
	    TNT1 A 0 A_FadeOut(0.99)
		TERR AAAAAAAAAA 1 A_FadeIn(0.1) 
	Idle:
	    TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_Look
		Loop
	See:
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_Chase
		Loop
	Missile:
	    TERR A 2 
		TNT1 A 0 A_Jump(192,"Charge")
	Projectile:
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget	
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)	
		TERR B 2 Bright A_CustomMissile("FrozenSoulLightning", 10, 0, 0, 1)
		TERR BBA 2 Bright A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		Goto See
	Charge:
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR A 2 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TERR B 2 Bright A_SkullAttack(15)
		TERR B 2 Bright A_SpawnItemEX("FrozenSoulFireSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)	
		Goto Charge+14
	Pain:
		TNT1 A 0 A_SpawnItem("FrozenSoulFireSpawner",0,0,0,0)
		TERR C 3 Bright A_Pain
		TERR C 3 Bright A_SpawnItem("FrozenSoulFireSpawner",0,0,0,0)
		Goto See
	Death:
		TNT1 A 0 A_TakeInventory("IkuToken",1,0,AAPTR_MASTER)
		TNT1 A 0 A_SetTranslucent(0.75,1)
		TERR F 4 Bright A_NoGravity
		TERR G 4 Bright A_Scream
		TNT1 AA 0 A_SpawnItemEx("SoulPart1",0,0,Random(10,20),Random(8,-8),Random(8,-8),Random(6,8))
		TNT1 A 0 A_SpawnItemEx("SoulPart2",0,0,Random(10,20),Random(8,-8),Random(8,-8),Random(6,8))
		TNT1 AA 0 A_SpawnItemEx("SoulPart3",0,0,Random(10,20),Random(8,-8),Random(8,-8),Random(6,8))	
		TERR H 4 Bright
		TERR I 4 Bright A_Fall
		TNT1 AA 0 A_SpawnItemEx("OrangeParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128) 
		TNT1 AAAA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))
		TERR JK 4
		Stop
	}
}
	
ACTOR FrozenSoulFire : SoulFire
{
	Translation Ice
}

ACTOR FrozenSoulFireSpawner : RedParticleSpawner
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 AA 0 A_SpawnItemEx("FrozenSoulFire",3,random(-2,2),random(14,18),1,0,random(1,2),random(90,120),128,0)
    TNT1 A 1
    Stop
    }
}	

Actor FrozenSoulLightning : SuccubusLigProjectile
{
	Scale 0.5
}

Actor IkuThunderStorm : LegRedStormBoltAttack
{
	States
	{
	Pickup:
		NULL A 1 
		NULL AA 1 A_SpawnItemEx("IkuThunderStormSpawner",Random(300,-300),Random(300,-300),0,0,0,0,SXF_NOCHECKPOSITION,64)
		Stop	
	}
}

Actor IkuThunderStormSpawner : LegRedStormBoltSpawner
{
	Species "Touhou"
	+DONTHARMSPECIES
	+NOTIMEFREEZE
	DamageType "Legendary"
	-NOGRAVITY
	+NOBLOCKMAP
	+ALWAYSPUFF
	+PUFFONACTORS
	+PUFFGETSOWNER
	+BLOODLESSIMPACT
	+FLOORHUGGER
	Obituary "%o was crushed by a divine dragon"
	Tag "WinterStorm Iku"
	VSpeed 0
	States
	{
	Spawn:
		TNT1 A 0 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 Light("IkuWarningLight")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IkuZapPuffLarge",random(-64,64),random(-64,64),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 0 A_Explode(120+(Random(20,100)),128,XF_NOTMISSILE,False,False,"BulletPuff","Legendary")
		TNT1 A 0 A_SpawnItemEx("IkuThunderEffect",0,0,0,0,0,0,0,0,0)
		Stop
	}
}

ACTOR IkuThunderEffect
{
    translation "80:111=192:207"
    +NoBlockMap +NoGravity +NoInteraction +NoClip -Solid +CLIENTSIDEONLY
	DamageType "Legendary"
	Species "Touhou"
    Renderstyle Add
    Height 1
    Radius 1
    Alpha 0.2
    Scale 4.0
    states
    {
    Spawn:
        TNT1 A 0 
        TNT1 A 0 A_PlaySoundEx("thunder/hit", "Voice", 0, 2)                
        TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Thunder_Spark", 0, 0, 0, random(1,10), 0, random(1,10), random(0,359), 129)
        THND AAAA 1 Bright A_FadeIn(0.2)
        THND AAAAAAAAAA 1 Bright A_FadeOut(0.1)
        TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1  Bright A_SpawnItemEx("Thunder_Smoke", 0, 0, 0, random(0,3), 0, random(2,3), random(0,359), 128)
        Stop
    }
}

ACTOR IkuZapPuffLarge
{
  Radius 2
  Height 2
  Scale 0.72
  Renderstyle Add
  Species "Touhou"
  DamageType "Legendary"
  +NOINTERACTION
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    TNT1 A 1
    ZAP1 C 0 A_Jump(255, "Puff1", "Puff2", "Puff3", "Puff4")
  Puff1:
    ZAP1 C 2 A_FadeOut(0.1)
    Loop
  Puff2:
    ZAP1 D 2 A_FadeOut(0.1)
    Loop
  Puff3:
    ZAP1 E 2 A_FadeOut(0.1)
    Loop
  Puff4:
    ZAP1 F 2 A_FadeOut(0.1)
    Loop
  }
}	