//INHERITANCE

ACTOR ArcSmokeInheritance
{
+NOGRAVITY
+NOINTERACTION
+FORCERADIUSDMG
Renderstyle Add
States
	{
	Spawn:
		TNT1 A 0
		TNT1 AA 1 A_Jump(255,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5","Spawn6")
		Goto Spawn1
	Spawn1:
		TNT1 A 0 A_SetScale(ScaleX +0.003, ScaleY +0.003)
		TNT1 A 0 A_Explode(15,128)
		THD1 A 4 Bright A_FadeOut(0.009,1)
		Loop
	Spawn2:
		TNT1 A 0 A_SetScale(ScaleX +0.003, ScaleY +0.003)
		TNT1 A 0 A_Explode(15,128)
		THD2 A 4 Bright A_FadeOut(0.007,1)
		Loop
	Spawn3:
		TNT1 A 0 A_SetScale(ScaleX +0.003, ScaleY +0.003)
		TNT1 A 0 A_Explode(15,128)
		THD3 A 4 Bright A_FadeOut(0.006,1)
		Loop
	Spawn4:
		TNT1 A 0 A_SetScale(ScaleX -0.003, ScaleY -0.003)
		TNT1 A 0 A_Explode(15,128)
		THD1 A 4 Bright A_FadeOut(0.0075,1)
		Loop
	Spawn5:
		TNT1 A 0 A_SetScale(ScaleX -0.001, ScaleY -0.001)
		TNT1 A 0 A_Explode(15,128)
		THD2 A 4 Bright A_FadeOut(0.0065,1)
		Loop
	Spawn6:
		TNT1 A 0 A_SetScale(ScaleX -0.003, ScaleY -0.003)
		TNT1 A 0 A_Explode(15,128)
		THD3 A 4 Bright A_FadeOut(0.008,1)
		Loop
	}
}

ACTOR ArcBallLightningBolt1 : LCALightningBoltGreen { Scale 0.35 }
ACTOR ArcBallLightningBolt2 : LCALightningBolt { Scale 0.35 }
ACTOR ArcBallLightningBolt3 : LCALightningBoltPink { Scale 0.35 }
ACTOR ArcBallLightningBolt4 : LCALightningBoltGold { Scale 0.35 }
ACTOR ArcBallLightningBolt5 : LCALightningBoltRed { Scale 0.35 }

ACTOR ArcBFGLightningSpawner : LCABaseEffect
{
+NOGRAVITY
States
	{
	Spawn:
		TNT1 A 0
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_SpawnItemEx("ArcBallLightningBolt",Random(6,-6),Random(6,-6),Random(6,-6),0,0,0,0,128)
		Stop
	}
}

ACTOR ArcBallShockwave : LCAShockwave
{
States
	{
	Spawn:
		TNT1 A 0
		HBRG A 1 Bright A_FadeOut(0.04)
		HBRB B 1 Bright A_FadeOut(0.04)
		HBRP C 1 Bright A_FadeOut(0.04)
		HBRY D 1 Bright A_FadeOut(0.04)
		HBRR E 1 Bright A_FadeOut(0.04)
		HBRG F 1 Bright A_FadeOut(0.04)
		HBRB G 1 Bright A_FadeOut(0.04)
		HBRP H 1 Bright A_FadeOut(0.04)
		HBRY I 1 Bright A_FadeOut(0.04)
		HBRR J 1 Bright A_FadeOut(0.04)
		HBRG K 1 Bright A_FadeOut(0.04)
		HBRB L 1 Bright A_FadeOut(0.04)
		HBRP M 1 Bright A_FadeOut(0.04)
		HBRY N 1 Bright A_FadeOut(0.04)
		HBRR O 1 Bright A_FadeOut(0.04)
		HBRG P 1 Bright A_FadeOut(0.04)
		HBRB Q 1 Bright A_FadeOut(0.04)
		HBRP R 1 Bright A_FadeOut(0.04)
		Stop
	}
}

ACTOR ArcBallShockwaveLrg : ArcBallShockwave
{
Scale 2.5
Alpha 0.85
States
	{
	Spawn:
		TNT1 A 0
		HBRG A 2 Bright A_FadeOut(0.04)
		HBRB B 2 Bright A_FadeOut(0.04)
		HBRP C 2 Bright A_FadeOut(0.04)
		HBRY D 2 Bright A_FadeOut(0.04)
		HBRR E 2 Bright A_FadeOut(0.04)
		HBRG F 2 Bright A_FadeOut(0.04)
		HBRB G 2 Bright A_FadeOut(0.04)
		HBRP H 2 Bright A_FadeOut(0.04)
		HBRY I 2 Bright A_FadeOut(0.04)
		HBRR J 2 Bright A_FadeOut(0.04)
		HBRG K 2 Bright A_FadeOut(0.04)
		HBRB L 2 Bright A_FadeOut(0.04)
		HBRP M 2 Bright A_FadeOut(0.04)
		HBRY N 2 Bright A_FadeOut(0.04)
		HBRR O 2 Bright A_FadeOut(0.04)
		HBRG P 2 Bright A_FadeOut(0.04)
		HBRB Q 2 Bright A_FadeOut(0.04)
		HBRP R 2 Bright A_FadeOut(0.04)
		Stop
	}
}

ACTOR ArcBallFluxShockwave : ArcBallShockwave
{
Projectile
Scale 0.75
Alpha 1.0
}


////////
//FIRE//
////////


//PROJECTILE

ACTOR UltraBall
{
Projectile
Height 6
Radius 11
Speed 10 // 10
Scale 1.0
RenderStyle Add
Alpha 1.0
MissileType "ArcLesserProjectileTrail"
Damage 125
+RIPPER
+FOILINVUL
+FORCERADIUSDMG
+BLOODLESSIMPACT
//+DONTBLAST
-RANDOMIZE
DamageType "Legendary"
SeeSound "Ultra/BFGFire"
States
	{
	Spawn:
		TNT1 A 0
		// Green
		TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",5,1.0,True)
		TNT1 A 0 A_Explode(600,64,0,1)
		TNT1 A 0 A_SpawnItemEx("ArcTrail",5,0,0,0,0,0,0,0,0)
		TNT1 A 0 A_Jump(224, 2)
		TNT1 A 0 A_SpawnItemEx("ArcBallFluxShockwave",0,0,0,10,0,0,0,0,0)
		TNT1 A 0 A_Jump(32, 2)
		TNT1 A 0 A_SpawnItemEx("ArcBallLightningBolt1",Random(6,-6),Random(6,-6),Random(16,8),0,0,0,0,128)
		TNT1 A 0 A_SpawnItemEx("LCABFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL A 1 Bright
		TNT1 A 0 A_SpawnItemEx("LCABFGTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL A 1 Bright
		// Blue
		//TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",5,1.0,1)
		TNT1 A 0 A_Explode(600,64,0,1)
		TNT1 A 0 A_SpawnItemEx("ArcTrail",5,0,0,0,0,0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("ArcBallTrailParticleGreen",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		TNT1 A 0 A_Jump(224, 2)
		TNT1 A 0 A_SpawnItemEx("ArcBallFluxShockwave",0,0,0,10,0,0,0,0,0)
		TNT1 A 0 A_Jump(32, 2)
		TNT1 A 0 A_SpawnItemEx("ArcBallLightningBolt2",Random(6,-6),Random(6,-6),Random(16,8),0,0,0,0,128)
		TNT1 A 0 A_SpawnItemEx("LCABFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL B 1 Bright
		TNT1 A 0 A_SpawnItemEx("LCABFGTrailParticleBlue",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL B 1 Bright
		// Pink
		//TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",5,1.0,1)
		TNT1 A 0 A_Explode(600,64,0,1)
		TNT1 A 0 A_SpawnItemEx("ArcTrail",5,0,0,0,0,0,0,0,0)
		TNT1 A 0 A_Jump(224, 2)
		TNT1 A 0 A_SpawnItemEx("ArcBallFluxShockwave",0,0,0,10,0,0,0,0,0)
		TNT1 A 0 A_Jump(32, 2)
		TNT1 A 0 A_SpawnItemEx("ArcBallLightningBolt3",Random(6,-6),Random(6,-6),Random(16,8),0,0,0,0,128)
		TNT1 A 0 A_SpawnItemEx("LCABFGTrailParticlePink",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL C 1 Bright
		TNT1 A 0 A_SpawnItemEx("LCABFGTrailParticlePink",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL C 1 Bright
		// Gold
		//TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",5,1.0,1)
		TNT1 A 0 A_Explode(600,64,0,1)
		TNT1 A 0 A_SpawnItemEx("ArcTrail",5,0,0,0,0,0,0,0,0)
		TNT1 A 0 A_Jump(224, 2)
		TNT1 A 0 A_SpawnItemEx("ArcBallFluxShockwave",0,0,0,10,0,0,0,0,0)
		TNT1 A 0 A_Jump(32, 2)
		TNT1 A 0 A_SpawnItemEx("ArcBallLightningBolt4",Random(6,-6),Random(6,-6),Random(16,8),0,0,0,0,128)
		TNT1 A 0 A_SpawnItemEx("LCABFGTrailParticleGold",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL D 1 Bright
		TNT1 A 0 A_SpawnItemEx("LCABFGTrailParticleGold",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL D 1 Bright
		// Red
		//TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",5,1.0,1)
		TNT1 A 0 A_Explode(600,64,0,1)
		TNT1 A 0 A_SpawnItemEx("ArcTrail",5,0,0,0,0,0,0,0,0)
		TNT1 A 0 A_Jump(224, 2)
		TNT1 A 0 A_SpawnItemEx("ArcBallFluxShockwave",0,0,0,10,0,0,0,0,0)
		TNT1 A 0 A_Jump(32, 2)
		TNT1 A 0 A_SpawnItemEx("ArcBallLightningBolt5",Random(6,-6),Random(6,-6),Random(16,8),0,0,0,0,128)
		TNT1 A 0 A_SpawnItemEx("LCABFGTrailParticleRed",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL E 1 Bright
		TNT1 A 0 A_SpawnItemEx("LCABFGTrailParticleRed",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL E 1 Bright
		Loop
	Death:
		//COLLATERAL DAMAGE EFFECTS
		TNT1 A 0
		TNT1 A 0 A_StopSound(5)
		TNT1 A 0 A_SpawnItem("Darkdesnuke")
		TNT1 A 0 A_Explode(6000,486,0,1)
		TNT1 A 0 A_BFGSpray("ArcSpray",15,20)
		//IMPACT STUFF
		TNT1 A 0 A_SpawnItemEx("ArcStruckGlowX",0,0,10,0,0,0,0,128,0)
		TNT1 A 0 A_SpawnItemEx("ArcStruckGlowY",0,0,10,0,0,0,0,128,0)
		TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("ArcSphereSmoke",random(126,-126),random(126,-126),random(66,-66),0.00001*random(100000,-100000),0.00001*random(100000,-100000),0.00001*random(100000,-100000),random(0,359),0,0)
		TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("ArcChunkSpark",random(126,-126),random(126,-126),random(66,-66),0,0,0,0,0,0)
		TNT1 AAAAAAAAAAAAAAAAAAA 2 A_SpawnItemEx("ArcChunkSpark",random(126,-126),random(126,-126),random(66,-66),0,0,0,0,0,0)
		Stop
	}
}

ACTOR UltraBallCharging : UltraBall
{
Speed 0
-MISSILE
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
-SOLID
+NOCLIP
+THRUACTORS
+NOINTERACTION
+NONETID
States
	{
	Spawn:
		// Green
		TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",CHAN_BODY,1.0,False)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleGreen",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL A 1 Bright A_FadeOut(0.01)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleGreen",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL A 1 Bright
		// Blue
		//TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",5,1.0,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleBlue",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL B 1 Bright A_FadeOut(0.01)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleBlue",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL B 1 Bright
		// Pink
		//TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",5,1.0,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticlePink",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL C 1 Bright A_FadeOut(0.01)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticlePink",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL C 1 Bright
		// Gold
		//TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",5,1.0,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleGold",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL D 1 Bright A_FadeOut(0.01)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleGold",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL D 1 Bright
		// Red
		//TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",5,1.0,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleRed",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL E 1 Bright A_FadeOut(0.01)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleRed",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL E 1 Bright
		Loop
	Death:
		TNT1 A 1
		Stop
	}
}

ACTOR UltraBallCharging1 : UltraBallCharging { Scale 0.25 }
ACTOR UltraBallCharging2 : UltraBallCharging { Scale 0.35 }
ACTOR UltraBallCharging3 : UltraBallCharging { Scale 0.45 }
ACTOR UltraBallCharging4 : UltraBallCharging { Scale 0.55 }

ACTOR UltraBallCharging5 : UltraBallCharging
{
Scale 0.65
States
	{
	Spawn:
		// Green
		TNT1 A 0 A_PlaySound("Arcradimus/BFGBall",CHAN_BODY,1.0,False)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleGreen",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL A 1 Bright A_FadeOut(0.02,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleGreen",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL A 1 Bright
		// Blue
		//TNT1 A 0 A_PlaySound("Ultra/BFGBall",5,1.0,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleBlue",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL B 1 Bright A_FadeOut(0.01,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleBlue",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL B 1 Bright
		// Pink
		//TNT1 A 0 A_PlaySound("Ultra/BFGBall",5,1.0,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticlePink",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL C 1 Bright A_FadeOut(0.02,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticlePink",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL C 1 Bright
		// Gold
		//TNT1 A 0 A_PlaySound("Ultra/BFGBall",5,1.0,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleGold",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL D 1 Bright A_FadeOut(0.01,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleGold",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL D 1 Bright
		// Red
		//TNT1 A 0 A_PlaySound("Ultra/BFGBall",5,1.0,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleRed",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL E 1 Bright A_FadeOut(0.02,1)
		TNT1 A 0 A_SpawnItemEx("LCABFGChargeParticleRed",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		UBAL E 1 Bright
		Loop
	}
}

//TRAIL

ACTOR ArcTrail : LCABaseEffect
{
Scale 0.90
Renderstyle Add
Alpha 0.50
+CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetScale(ScaleX -0.01, ScaleY -0.01)
		UBAL ABCDE 1 Bright A_FadeOut(0.05,1)
		Loop
	}
}

//IMPACT

ACTOR ArcStruckGlowY : LCABaseEffect
{
Scale 0.2
Alpha 0.5
+CLIENTSIDEONLY
States
	{
	Spawn:
		CBUM A 0
		YBUM A 0 A_SetScale(ScaleX +0.025, ScaleY +0.1)
		YBUM A 1 Bright A_FadeOut(0.01,1)
		Loop
	}
}

ACTOR ArcStruckGlowX : LCABaseEffect
{
Scale 0.2
Alpha 0.5
+CLIENTSIDEONLY
States
	{
	Spawn:
		CBUM A 0
		YBUM A 0 A_SetScale(ScaleX +0.1, ScaleY +0.025)
		YBUM A 1 Bright A_FadeOut(0.01,1)
		Loop
	}
}

//SPRAY

ACTOR ArcSpray : LCABaseEffect
{
States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("ArcSprayGlowX",0,0,0,0,0,0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("ArcSprayGlowY",0,0,0,0,0,0,0,0,0)
		TNT1 AAAAAA 3 A_SpawnItemEx("ArcSpraySpark",random(24,-24),random(24,-24),random(24,-24),0,0,0,0,0,0)
		Stop
	}
}

ACTOR ArcSpraySpark : LCABaseEffect
{
Scale 0.25
+CLIENTSIDEONLY
States
	{
	Spawn:
		YELE ABCDEF 2 Bright A_FadeOut(0.1,1)
		Stop
	}
}

ACTOR ArcSprayGlowY : ArcStruckGlowX
{
Scale 0.025
Alpha 0.35
+CLIENTSIDEONLY
States
	{
	Spawn:
		CBUM A 0
		YBUM A 0 A_SetScale(ScaleX +0.05, ScaleY +0.01)
		YBUM A 1 Bright A_FadeOut(0.01,1)
		Loop
	}
}

ACTOR ArcSprayGlowX : ArcStruckGlowY
{
Scale 0.025
Alpha 0.35
+CLIENTSIDEONLY
States
	{
	Spawn:
		CBUM A 0
		YBUM A 0 A_SetScale(ScaleX +0.01, ScaleY +0.05)
		YBUM A 1 Bright A_FadeOut(0.01,1)
		Loop
	}
}