Actor NoBloodFX {
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 AAAA 1
		Stop
	}
}

Actor GrenadeSmoke
{
	renderstyle translucent
	scale 0.25
	alpha 0.15
	+clientsideonly
	+NOGRAVITY
	States
	{
		spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			SMOK ABCDEFGHIJKLNOPQ 1
		stop
	}
}

Actor DnD_RocketTrail {
	Renderstyle "Add"
	Alpha 0.8
	Radius 1
	Height 1
	Scale 0.666
	+NOBLOCKMAP
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			TWT1 ABCDEFG 2 A_FadeOut(0.075)
		Stop
	}
}

Actor DnD_PoisonFX {
	Renderstyle "Add"
	Alpha 0.9
	Scale 0.175
	+NOINTERACTION
	+CLIENTSIDEONLY
	const float v = 1.5;
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 0 A_ChangeVelocity(frandom(-v, v), frandom(-v, v), frandom(-v / 2, v / 2), CVF_REPLACE)
			DB58 ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_FadeOut(frandom(0.035, 0.075))
		Stop
	}
}

Actor NewGrenadeExplosion {
	Renderstyle Add
	Alpha 0.85
	+CLIENTSIDEONLY
	+NOGRAVITY
	Scale 1.15
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			GRXP DEFGHIJKLMN 2 Bright
			GRXP OPQRSTUV 1 Bright
		Stop
	}
}

Actor MeleeSmoke {
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
	+MISSILE
	+FORCEXYBILLBOARD
    +NOINTERACTION
	+NOGRAVITY
	+THRUACTORS
	+CLIENTSIDEONLY
	+DONTBLAST
	BounceType Doom
	BounceFactor 0.5
	BounceCount 10
	Damage 0
	Radius 2
	Height 2
	RenderStyle Translucent
	Speed 1
	Alpha 0.15
	Scale 0.2
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			SMK3 B 4
			SMK3 CDEFGHIJKLM 2
		Stop
	}
}

Actor IceSmoke : MeleeSmoke {
    RenderStyle Add
	Translation "0:255=%[0, 0, 0]:[0.3671875, 0.3671875, 2.0]"
	Scale 0.75
	Alpha 0.75
	Speed 6
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			SMOK ABCDEFGHIJKLNOPQ 2
		Stop
	}
}

Actor FireballSmoke : MeleeSmoke {
	Scale 0.35
}

Actor LostSoulSmoke : MeleeSmoke {
	Scale 0.8
}

Actor ExplosionSmoke : MeleeSmoke {
	Scale 1.1
    States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Fade")
			SMK3 BBB 2 A_FadeIn(0.1)
			SMK3 B 20
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Fade")
			SMK3 CDEFGHIJKLM 3
		Stop
		Fade:		
			TNT1 A 0
		Stop
    }
}

Actor ExplosionSmokeFast : ExplosionSmoke {
	Speed 2
	Scale 0.8
}

Actor ExplosionFX1 {
	Renderstyle Add
	Alpha 0.75
	+FORCEXYBILLBOARD
	+CLIENTSIDEONLY
	+NOINTERACTION
	Scale 1.3
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FXPO ABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor ExplosionFX2 : ExplosionFX1 {
	Scale 0.45
}

Actor ExplosionFX3 : ExplosionFX1 {
	Scale 0.45
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FXPP ABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor ExplosionFX4 : ExplosionFX1 {
	Scale 0.45
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FXPG ABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor DesolatorExplosionFX : ExplosionFX4 {
	Scale 0.875
	-CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 1
			FXPG ABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor ExplosionFX5 : ExplosionFX1 {
	Scale 0.45
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FXPB ABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor ExplosionFX6 : ExplosionFX1 {
	Scale 0.8
}

Actor ExplosionFX7 : ExplosionFX4 {
	Scale 0.8
}

Actor ExplosionFX8 : ExplosionFX1 {
	Scale 0.45
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FXPR ABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor ExplosionFX9 : ExplosionFX1 {
	Scale 0.45
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FXPY ABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor ExplosionFX10 : ExplosionFX1 {
	Scale 0.5
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FXPW ABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor ExplosionParticleHeavy {
	speed 5
	radius 1
	height 1
	Gravity 0.5
	RenderStyle Add
	Scale 0.2
	+MISSILE
	+NOTELEPORT
	+NOBLOCKMAP
	+DONTBLAST
	+BLOODLESSIMPACT 
	+FORCEXYBILLBOARD
	+CLIENTSIDEONLY
	+DONTSPLASH
	+THRUACTORS
	+THRUGHOST
	+GHOST
	Damage 0
	BounceType Hexen
	BounceFactor 0.1
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			SPRK SSSSS 1 BRIGHT
			SPRK SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS 1 Bright A_FadeOut(0.025)
		stop
		Death:
			TNT1 A 1
		Stop
	}
}

Actor SmallRedParticle1 : ExplosionParticleHeavy {
	BounceFactor 0.5
	Gravity 0.4
	Scale 0.65
}

Actor SmallRedParticle2 : SmallRedParticle1 {
	Scale 0.55
}

Actor SmallRedParticle3 : SmallRedParticle1 {
	Scale 0.45
}

Actor SmallRedParticle4 : SmallRedParticle1 {
	Scale 0.35
}

Actor SmallRedParticle5 : SmallRedParticle1 {
	Scale 0.25
}

Actor SmallRedParticle6 : SmallRedParticle1 {
	Scale 0.15
}

Actor SmallRedMagicParticle1 : ExplosionParticleHeavy {
	Scale 0.09
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			OGLP CCCCC 1 BRIGHT
			OGLP CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 Bright A_FadeOut(0.025)
		stop
	}
}

Actor SmallRedMagicParticle2 : SmallRedMagicParticle1 {
	Scale 0.075
}

Actor SmallRedMagicParticle3 : SmallRedMagicParticle1 {
	Scale 0.06
}

Actor SmallRedMagicParticle4 : SmallRedMagicParticle1 {
	Scale 0.045
}

Actor SmallRedMagicParticle5 : SmallRedMagicParticle1 {
	Scale 0.03
}

Actor SmallRedMagicParticle6 : SmallRedMagicParticle1 {
	Scale 0.015
}

Actor GaussParticle : ExplosionParticleHeavy {
	+NOGRAVITY
	BounceFactor 0.05
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			SPRK TTTTT 1 BRIGHT
			SPRK TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT 1 Bright A_FadeOut(0.075)
		stop
		Death:
			TNT1 A 1
		Stop
	}
}

Actor ExplosionParticleVeryFast: ExplosionParticleHeavy {
	speed 18
	Gravity 0.9
}

Actor ParticleSpawner {
	+CLIENTSIDEONLY
	+NOGRAVITY
	+NOBLOCKMAP
	+NOTELEPORT
	+DONTSPLASH
	+DONTBLAST
}

Actor FireBallParticle {
	Height 0
	Radius 0
	Mass 0
	Damage 0
	+THRUACTORS
	+NOTELEPORT
	+DONTSPLASH
	+DOOMBOUNCE
	+CLIENTSIDEONLY
	+MISSILE
	+NOBLOCKMAP
	+DONTBLAST
	+FORCEXYBILLBOARD
	RENDERSTYLE ADD
	BounceFactor 0.5
	Gravity 0.4
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKR A 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor FireBallParticle1 : FireBallParticle {
	Scale 0.06
}

Actor FireBallParticle2 : FireBallParticle {
	Scale 0.05
}

Actor FireBallParticle3 : FireBallParticle {
	Scale 0.04
}

Actor FireBallParticle4 : FireBallParticle {
	Scale 0.03
}

Actor FireBallParticle5 : FireBallParticle {
	Scale 0.02
}

Actor FireBallParticle6 : FireBallParticle {
	Scale 0.01
}

Actor RedParticleSpawner : ParticleSpawner
{
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("FireBallParticle1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("FireBallParticle2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("FireBallParticle3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("FireBallParticle4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("FireBallParticle5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("FireBallParticle6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}

Actor RedParticleSpawner2 : ParticleSpawner {
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("SmallRedParticle1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("SmallRedParticle2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("SmallRedParticle3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("SmallRedParticle4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("SmallRedParticle5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("SmallRedParticle6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}

Actor RedParticleSpawner3 : ParticleSpawner {
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("SmallRedMagicParticle1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("SmallRedMagicParticle2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("SmallRedMagicParticle3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("SmallRedMagicParticle4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("SmallRedMagicParticle5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("SmallRedMagicParticle6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}

Actor YellowBallParticle : FireBallParticle {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKY A 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor YellowBallParticle1 : YellowBallParticle {
	Scale 0.06
}

Actor YellowBallParticle2 : YellowBallParticle {
	Scale 0.05
}

Actor YellowBallParticle3 : YellowBallParticle {
	Scale 0.04
}

Actor YellowBallParticle4 : YellowBallParticle {
	Scale 0.03
}

Actor YellowBallParticle5 : YellowBallParticle {
	Scale 0.02
}

Actor YellowBallParticle6 : YellowBallParticle {
	Scale 0.01
}

Actor YellowBallParticle_Shrinking : FireBallParticle {
	Scale 0.055
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKY A 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SetScale(scalex * 0.925)
		Loop
	}
}

Actor YellowParticleSpawner : ParticleSpawner
{
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("YellowBallParticle1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("YellowBallParticle2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("YellowBallParticle3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("YellowBallParticle4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("YellowBallParticle5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("YellowBallParticle6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}

Actor OrangeBallParticle : FireBallParticle {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKO A 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor OrangeBallParticle1 : OrangeBallParticle {
	Scale 0.06
}

Actor OrangeBallParticle2 : OrangeBallParticle {
	Scale 0.05
}

Actor OrangeBallParticle3 : OrangeBallParticle {
	Scale 0.04
}

Actor OrangeBallParticle4 : OrangeBallParticle {
	Scale 0.03
}

Actor OrangeBallParticle5 : OrangeBallParticle {
	Scale 0.02
}

Actor OrangeBallParticle6 : OrangeBallParticle {
	Scale 0.01
}

Actor OrangeParticleSpawner : ParticleSpawner
{
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("OrangeBallParticle1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("OrangeBallParticle2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("OrangeBallParticle3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("OrangeBallParticle4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("OrangeBallParticle5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("OrangeBallParticle6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}

Actor PurpleBallParticle : FireBallParticle {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKP A 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor PurpleParticleSlowVanish : FireBallParticle {
	+NOGRAVITY
	Scale 0.06
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKP A 2 Bright A_FadeOut(0.015)
		Loop
	}
}

Actor PurpleBallParticle1 : PurpleBallParticle {
	Scale 0.06
}

Actor PurpleBallParticle2 : PurpleBallParticle {
	Scale 0.05
}

Actor PurpleBallParticle3 : PurpleBallParticle {
	Scale 0.04
}

Actor PurpleBallParticle4 : PurpleBallParticle {
	Scale 0.03
}

Actor PurpleBallParticle5 : PurpleBallParticle {
	Scale 0.02
}

Actor PurpleBallParticle6 : PurpleBallParticle {
	Scale 0.01
}

Actor PurpleParticleSpawner : ParticleSpawner
{
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("PurpleBallParticle1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("PurpleBallParticle2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("PurpleBallParticle3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("PurpleBallParticle4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("PurpleBallParticle5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("PurpleBallParticle6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}

Actor WhiteMagicSpark : FireBallParticle {
	Scale 0.025
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			OGLP F 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor RedMagicSpark : WhiteMagicSpark {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			OGLP C 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor BlueMagicSpark : WhiteMagicSpark {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			OGLP D 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor OrangeMagicSpark : WhiteMagicSpark {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			OGLP O 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor OrangeMagicSparkFX : WhiteMagicSpark {
	+NOGRAVITY
    Scale 0.25
	Alpha 0.8
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			OGLP O 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor GreenParticle : FireBallParticle {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKG A 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor GreenParticleSlowVanish : FireBallParticle {
	+NOGRAVITY
	Scale 0.06
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKG A 2 Bright A_FadeOut(0.015)
		Loop
	}
}

Actor GreenParticle1 : GreenParticle {
	Scale 0.06
}

Actor GreenParticle2 : GreenParticle {
	Scale 0.05
}

Actor GreenParticle3 : GreenParticle {
	Scale 0.04
}

Actor GreenParticle4 : GreenParticle {
	Scale 0.03
}

Actor GreenParticle5 : GreenParticle {
	Scale 0.02
}

Actor GreenParticle6 : GreenParticle {
	Scale 0.01
}

Actor GreenParticleSpawner : ParticleSpawner
{
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("GreenParticle1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("GreenParticle2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("GreenParticle3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("GreenParticle4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("GreenParticle5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("GreenParticle6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}

Actor BlueParticle : FireBallParticle {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKB A 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor BlueParticleNoGravityFastVanish : FireBallParticle {
	+NOGRAVITY
	Scale 0.06
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKB A 2 Bright A_FadeOut(0.1)
		Loop
	}
}

Actor BlueParticle1 : BlueParticle {
	Scale 0.06
}

Actor BlueParticle2 : BlueParticle {
	Scale 0.05
}

Actor BlueParticle3 : BlueParticle {
	Scale 0.04
}

Actor BlueParticle4 : BlueParticle {
	Scale 0.03
}

Actor BlueParticle5 : BlueParticle {
	Scale 0.02
}

Actor BlueParticle6 : BlueParticle {
	Scale 0.01
}

Actor BlueParticleSpawner : ParticleSpawner
{
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("BlueParticle1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("BlueParticle2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("BlueParticle3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("BlueParticle4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("BlueParticle5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("BlueParticle6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}

Actor WhiteBallParticle : FireBallParticle {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
		SpawnLoop:
			SPKW A 2 Bright A_FadeOut(0.08)
		Loop
	}
}

Actor WhiteBallParticle1 : WhiteBallParticle {
	Scale 0.06
}

Actor WhiteBallParticle2 : WhiteBallParticle {
	Scale 0.05
}

Actor WhiteBallParticle3 : WhiteBallParticle {
	Scale 0.04
}

Actor WhiteBallParticle4 : WhiteBallParticle {
	Scale 0.03
}

Actor WhiteBallParticle5 : WhiteBallParticle {
	Scale 0.02
}

Actor WhiteBallParticle6 : WhiteBallParticle {
	Scale 0.01
}

Actor WhiteParticleSpawner : ParticleSpawner
{
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("WhiteBallParticle1",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("WhiteBallParticle2",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("WhiteBallParticle3",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("WhiteBallParticle4",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 0 A_SpawnItemEx("WhiteBallParticle5",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	TNT1 A 0 A_SpawnItemEx("WhiteBallParticle6",0,0,0,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
    TNT1 A 1
    Stop
  }
}

Actor ExplosionFlare {
	+NOINTERACTION
	+NOGRAVITY
	+CLIENTSIDEONLY
	renderstyle Add
	radius 1
	height 1
	XScale 0.8
	YScale 0.4
	Alpha 0.5
	states {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FLAR A 2 bright
			FLAR AAAAAAAAAAAAAAAA 1 BRIGHT A_FadeOut(0.11)
		stop
	}
}

Actor ExplosionFlareSmall : ExplosionFlare {
	Scale 0.125
}

Actor PlasmaFlare : ExplosionFlare {
	Scale 0.2
	states {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FLAR B 2 bright
			FLAR BBBBBBBBBBBBBBBB 1 BRIGHT A_FadeOut(0.11)
		stop
	}
}

Actor GaussFlare : PlasmaFlare {
	Scale 0.325
}

Actor GaussFlare2 : PlasmaFlare {
	Scale 0.450
}

Actor GaussFlare3 : PlasmaFlare {
	Scale 0.575
}

Actor BFGFlare : ExplosionFlare {
	states {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FLAR C 2 bright
			FLAR CCCCCCCCCCCCCCCCCCCCCCC 1 BRIGHT A_FadeOut(0.075)
		stop
	}
}

Actor GreenSmallFlash : BFGFlare {
	Scale 0.375
}

Actor GreenSmallFlash_Smaller : BFGFlare {
	Scale 0.2
}

Actor DeathStaffFlare : ExplosionFlare {
	states {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FLAR D 2 bright
			FLAR DDDDDDDDDDDDDDDDDDDDDDD 1 BRIGHT A_FadeOut(0.075)
		stop
	}
}

Actor SmallPurpleFlare : DeathStaffFlare {
	XScale 0.5
	YScale 0.275
}

Actor SunFlare : ExplosionFlare {
	Scale 0.2
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FLAR E 2 bright
			FLAR EEEEEEEEEEEEEEEEEEE 1 BRIGHT A_FadeOut(0.075)
		Stop
	}
}

Actor GrayFlare : ExplosionFlare {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FLAR F 2 bright
			FLAR FFFFFFFFFFFFFFFFFFFFFF 1 BRIGHT A_FadeOut(0.075)
		Stop
	}
}

Actor WallHitSpark {
	Height 1
	Radius 1
	Renderstyle Add
	Alpha 0.85
	+FORCEXYBILLBOARD
	+NOGRAVITY
	+NOINTERACTION
	+CLIENTSIDEONLY
	
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			TNT1 A 0 A_Jump(176, "Var1", "Var2", "Var3", "Var4")
			TNT1 A 1
		Stop
		Var1:
			TNT1 A 0 A_SetScale(frandom(0.65, 1.0), frandom(0.65, 1.0))
			RCH1 ABCD 2
		Stop
		Var2:
			TNT1 A 0 A_SetScale(frandom(0.65, 1.0), frandom(0.65, 1.0))
			RCH2 ABCD 2
		Stop
		Var3:
			TNT1 A 0 A_SetScale(frandom(0.65, 1.0), frandom(0.65, 1.0))
			RCH3 ABCD 2
		Stop
		Var4:
			TNT1 A 0 A_SetScale(frandom(0.65, 1.0), frandom(0.65, 1.0))
			RCH4 ABCD 2
		Stop
	}
}

Actor MagnumWallHitSpark : WallHitSpark {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			TNT1 A 0 A_Jump(176, "Var1", "Var2", "Var3", "Var4")
			TNT1 A 1
		Stop
		Var1:
			TNT1 A 0 A_SetScale(frandom(0.65, 1.0), frandom(0.65, 1.0))
			MPRK ABC 2
		Stop
		Var2:
			TNT1 A 0 A_SetScale(frandom(0.65, 1.0), frandom(0.65, 1.0))
			MPRK DEF 2
		Stop
		Var3:
			TNT1 A 0 A_SetScale(frandom(0.65, 1.0), frandom(0.65, 1.0))
			MPRK GHI 2
		Stop
		Var4:
			TNT1 A 0 A_SetScale(frandom(0.65, 1.0), frandom(0.65, 1.0))
			MPRK JKL 2
		Stop
	}
}

Actor SparkPuff : BulletPuff
{
	+DOOMBOUNCE
	+FLOORCLIP
	+DONTSPLASH
	+NOTELEPORT
	-NOGRAVITY
	-LOWGRAVITY
	-ALLOWPARTICLES
	+clientsideonly
	Health 4
	Radius 4
	Height 8
	Speed  1
	Mass   0
	Scale 0.125
	States
	{
	  Spawn:
	  Death:
		TNT1 A 0
		TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
		TNT1 A 1
		BPFF ABABAB 1 bright
		BPFF A 0 bright
		BPFF ABABABABAB 1 bright A_FadeOut(0.01)
		Stop
	}
}

// Taken from Zdoomwars
ACTOR ExplosionFX
{
   Radius 10
   Height 10
   Speed 5
   PROJECTILE
    +CLIENTSIDEONLY
   +NOCLIP
   States
   {
   Spawn:
		TNT1 A 0
		TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
		TNT1 A 1
        MISL B   2
        MISL B   2 BRIGHT A_PlaySound ("weapons/rocklx")
        MISL B   4 BRIGHT
        MISL C   6
        MISL D   4
   Stop
   }
}

Actor ExplosionFXSmall : ExplosionFX {
	Scale 0.6
}

Actor ExplosionFXGreen : ExplosionFX
{
   States
   {
   Spawn:
		TNT1 A 0
		TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
		TNT1 A 1
        CROC C   2
        CROC C   2 BRIGHT A_PlaySound ("weapons/rocklx")
        CROC D   4 BRIGHT
        CROC D   6
        CROC E   4
   Stop
   }
}

Actor ExplosionFXMagic : ExplosionFX {
   Alpha 0.85
   Renderstyle Add
   States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			TNT1 A 0 A_PlaySound("MagicExplosion")
			D2FX GHI 4
			D2FX JK 3
			D2FX L 2
		Stop
   }
}

Actor ExplosionFXMagicBlue : ExplosionFXMagic
{
   States
   {
   Spawn:
		TNT1 A 0
		TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
		TNT1 A 1
		TNT1 A 0 A_PlaySound("MagicExplosion")
	   D3FX GHI 4
	   D3FX JK 3
	   D3FX L 2
   Stop
   }
}

Actor ExplosionFXMagicYellow : ExplosionFXMagic
{
   States
   {
   Spawn:
		TNT1 A 0
		TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
		TNT1 A 1
		TNT1 A 0 A_PlaySound("MagicExplosion")
	   D4FX GHI 4
	   D4FX JK 3
	   D4FX L 2
   Stop
   }
}

Actor ExplosionFXMagicOrange : ExplosionFXMagic
{
	Translation "0:255=%[0.00,0.00,0.00]:[1.94,0.51,0.05]"
   States
   {
   Spawn:
		TNT1 A 0
		TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
		TNT1 A 1
		TNT1 A 0 A_PlaySound("MagicExplosion")
	   D5FX GHI 4
	   D5FX JK 3
	   D5FX L 2
   Stop
   }
}

Actor ExplosionFXMagicGreen : ExplosionFXMagic
{
   States
   {
   Spawn:
		TNT1 A 0
		TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
		TNT1 A 1
		TNT1 A 0 A_PlaySound("MagicExplosion")
	   D5FX GHI 4
	   D5FX JK 3
	   D5FX L 2
   Stop
   }
}

Actor SalvationGlow
{
 +NoGravity
 +NoBlockmap
 +NoInteraction
 -Solid
 Radius 0
 Height 0
 States
 {
	Spawn:
		TNT1 A 35
	Stop
 }
}

Actor BaseSparkle
{
 +Missile
 +NoGravity
 +NoBlockmap
 +NoInteraction
 -Solid
 Radius 0
 Height 0
 RenderStyle Add
 Alpha 1.0
 Scale 0.25
 States
 {
  Spawn:
	TNT1 A 0
	TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
	TNT1 A 1
   SKFX A 0 Bright
   SKFX A 1 Bright A_FadeOut(0.1)   
   SKFX A 1 Bright
   SKFX A 1 Bright A_FadeOut(0.1)   
   SKFX A 1 Bright 
   SKFX A 1 Bright A_FadeOut(0.1)   
   SKFX A 1 Bright 
   SKFX A 1 Bright A_FadeOut(0.1)   
   SKFX A 1 Bright  
   SKFX A 1 Bright A_FadeOut(0.1)   
   SKFX A 1 Bright 
   SKFX A 1 Bright A_FadeOut(0.1)   
   SKFX A 1 Bright  
   SKFX A 1 Bright A_FadeOut(0.1)   
   SKFX A 1 Bright 
   SKFX A 1 Bright A_FadeOut(0.1)   
   SKFX A 10 Bright 
   Stop
 }
}

Actor SalvationEffectGiver : CustomInventory
{
	inventory.maxamount 1
	+INVENTORY.ALWAYSPICKUP
	States
	{
		Pickup:
			TNT1 A 0 A_SpawnItem("SalvationEffectSpawner")
			TNT1 A 0 A_SpawnItem("SalvationGlow")
		Stop
	}
}

actor SalvationEffectSpawner
{
	translation "112:127=196:207"
	+NoBlockMap +NoGravity +NoSector +NoInteraction +NoClip -Solid +CLIENTSIDEONLY
        states
        {
        Spawn:
        	TNT1 A 0
        	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx ("BaseSparkle", random(-32,32), random(-32,32), random(0,32), 0, 0, 3, 0, 129) 
        	Stop
        }     
        
}

actor AccessoryEffectSpawner : SalvationEffectSpawner
{
	translation "120:127=160:167", "112:119=224:231"  
}

Actor WaterParticleX
{
  Height 0
  Radius 0
  Mass 0
  +Missile
  +NoBlockMap
  -NoGravity
  +DontSplash
  +DoomBounce
  +FORCEXYBILLBOARD
  +NOCLIP
  BounceFactor 0.1
  Gravity 0.8
  RenderStyle Add
  Scale 1.0
  //Speed 2
  Speed 4
  States
  {
  Spawn:
  SPKW B 1 Bright
  TNT1 A 0 A_ChangeFlag(DOOMBOUNCE, 0)
  Goto Stand
  Stand:
    SPKW B 2 Bright A_FadeOut(0.06)
    Loop
 Death:
 TNT1 A 1
 TNT1 A 0
 Stop
	
  }
}

// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

//********** Splashes **********

actor WaterSplashBase2
{
  Radius 1
  Height 1
  Mass 1
  alpha .6
  Scale 1.1
  +DONTSPLASH
  +NOGRAVITY
  +NOCLIP
  States
  {
  Spawn:
    SPSH E 6
	TNT1 FFF 0 A_CustomMissile ("WaterParticleX", 12, 0, random (0, 360), 2, random (70, 110))
    SPSH FGHIJKJKJK 6
    Stop
  }
}


actor WaterSplashBaseSmall
{
  Radius 1
  Height 1
  Mass 1
  alpha .6
  Scale 0.7
  +DONTSPLASH
  +NOGRAVITY
  +NOCLIP
  States
  {
  Spawn:
    SPSH E 6
    TNT1 FFF 0 A_CustomMissile ("WaterParticleX", 12, 0, random (0, 360), 2, random (70, 110))
    SPSH FGHIJKJK 6
    Stop
  }
}

ACTOR WaterSplashDrop
{
	renderstyle add
	Radius 1
    Height 1
	alpha .5
	Health 5
	Mass 400
	Gravity 1.0
	Scale	1.1
	projectile
	- nogravity
	+DONTSPLASH
	+CORPSE
	+EXPLODEONWATER
	States
	{
		SPSH A 6
		SPSH B 7
		SPSH C 7
		SPSH D 6
		SPSH A 7
		Stop
	}
}

actor BloodSplashBaseSmall
{
  Radius 1
  Height 1
  Mass 1
  alpha .6
  Scale 0.5
  +NOCLIP
  +DONTSPLASH
  +NOGRAVITY
  States
  {
  Spawn:
    BSPH E 3
    BSPH F 3 A_SpawnDebris("BloodSplashDrop")
    BSPH G 3
    BSPH H 3
    BSPH I 3
    BSPH J 3
    BSPH K 3
    Stop
  }
}

ACTOR BloodSplashDrop
{
	renderstyle add
	Radius 1
	Height 1
	alpha .5
	Health 5
	Mass 9
	Scale	.3
	projectile
	-nogravity
	+DONTSPLASH
	+CORPSE
	+EXPLODEONWATER
	States
	{
		BSPH A 7
		BSPH B 7
		BSPH C 7
		BSPH D 7
		BSPH A 7
		Stop
	}
}

ACTOR WanderingSpirit : KoraxSpirit
{
  Speed 8
  Projectile
  +NOCLIP
  -ACTIVATEPCROSS
  -ACTIVATEIMPACT
  RenderStyle Translucent
  Alpha 0.5
  States
  {
  Spawn:
    SPIR ABABABAB 5 A_KSpiritRoam
  Death:
    SPIR DEFGHI 5
    Stop
  }
}

actor SmoothFog : TeleportFog replaces TeleportFog
{
states
	{
	spawn:
	SFOG ABCDEFGHIJKLMNOPQRSTRQPO 2 bright
	stop
	}
}

ACTOR RedPuff
{   
   Radius 0
   Height 1
   Speed 0
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.85
   +CLIENTSIDEONLY
   States
   {
   Spawn:
      TNT1 A 3
      RPUF ABCDE 3 Bright
      Stop 
   }
}

ACTOR LevelUpEffectSpawner : DnD_Activator {
	States {
		Use:
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("LevelUpEffect", frandom(-48.0, 48.0), frandom(-48.0, 48.0), 0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(0.5, 7.5), 0, SXF_NOCHECKPOSITION | SXF_CLIENTSIDE)
		Stop
	}
}

Actor LevelUpEffect {
  RenderStyle "Add"
  +NOGRAVITY
  +CLIENTSIDEONLY
  Translation "112:119=224:231", "120:127=160:167"
  var int user_fadeout;
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SetScale(frandom(0.25, 0.75))
    TNT1 A 0 A_SetUserVar("user_fadeout", random(15, 35))
    SpawnLoop:
    FORJ A 1 Bright A_FadeOut(user_fadeout * 0.001)
    Loop
  }
}

ACTOR Tracer : FastProjectile {
	Radius 1
	Height 1
	Speed 150
	Scale 0.1
	RenderStyle Add
	Alpha 0.85
	PROJECTILE
	+FORCEXYBILLBOARD
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 0 A_ChangeVelocity(velx / 50.0, vely / 50.0, velz / 50.0, CVF_REPLACE)
			TNT1 A 1
			TNT1 A 0 A_ChangeVelocity(velx * 50.0, vely * 50.0, velz * 50.0, CVF_REPLACE)
			TRAC A -1 Bright
		Stop
		Death:
			TNT1 A 1 
		Stop
	}
}

Actor GreenTracer : Tracer { }

Actor SGTracer : Tracer {
	Speed 100
	Scale 0.075
}

Actor LeadSpitterTracer : Tracer { }

ACTOR GunSmoke {
	Radius 1
	Height 1
	RenderStyle ADD
	Alpha 1.0
	Scale 0.025
	+NOGRAVITY
	+NOBLOCKMAP
	+NOINTERACTION
	+FLOORCLIP
	+CLIENTSIDEONLY
	+RANDOMIZE
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			SMOK ABCDEFGHIJKLMNOPQ 1 A_SetScale((scalex + 0.025), (scaley + 0.025))
		Stop
	}
}

Actor GunSmokeSmaller : GunSmoke {
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			SMOK ABCDEFGHIJKLMNOPQ 1 A_SetScale((scalex + 0.01), (scaley + 0.01))
		Stop
	}
}

Actor RocketSmoke {
	+MISSILE
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	+NOBLOCKMAP
	Damage 0
	Radius 2 
	Height 2
	BounceCount 3
	Speed 4
	renderstyle translucent
	scale 0.8
	alpha 0.5
	+clientsideonly
	+NOGRAVITY
	
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			SMOK ABCDEFGHIJKLNOPQ 2 A_FadeOut(0.02)
		Stop
	}
}

Actor RocketSmoke_Small : RocketSmoke {
	Scale 0.25
}

Actor ThunderSmoke : RocketSmoke {
	Speed 2
	Scale 0.45
	Alpha 0.35
	-MISSILE
}

Actor RocketSmokeSmall : RocketSmoke {
	Scale 0.4
	Alpha 0.35
}

Actor DevastatorSmoke : RocketSmoke {
	Scale 0.15
	Alpha 0.25
	States {
		Spawn:
			SMOK ABCDEFGHIJKLNOPQ 1
		Stop
	}
}

Actor PlasmaSmoke : RocketSmoke {
	Alpha 0.75
	RenderStyle Add
	Scale 0.2
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			TNT1 A 0 A_SetScale(frandom(0.1, 0.2), frandom(0.1, 0.2))
			ISMK ABCDEFGHI 1 A_FadeIn(0.025)
			ISMK JKLMNOPQ 1 A_FadeOut(0.035)
		Stop
	}
}

Actor PlasmaSmoke2 : RocketSmoke {
	Alpha 0.75
	RenderStyle Add
	Scale 0.375
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			TNT1 A 0 A_SetScale(frandom(0.25, 0.375), frandom(0.25, 0.375))
			PLNS ABCDEFGHI 1 A_FadeIn(0.025)
			PLNS JKLMNOP 1 A_FadeOut(0.035)
		Stop
	}
}

// By Tormentor667
Actor SoulUseEffect
{
	+NoBlockmap
	+NoInteraction
	+CLIENTSIDEONLY
	Radius 1
	Height 1
	RenderStyle Add
	Alpha 0.01
	Scale 0.6
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
		TNT1 A 1
		SPFX AAAAA 1 Bright A_FadeIn(0.2)
		SPFX AAAAAAAAAAAAAAAA 1 Bright A_FadeOut(0.06)
		Stop
	}
}

Actor SoulSphereFX : SoulUseEffect {
	Translation "80:111=192:207"
	Scale 0.45
}

Actor MegaSphereFX : SoulSphereFX {
	Translation "80:111=128:143", "5:5=143:143"
}

Actor UberSphereFX : SoulSphereFX {
	Translation "80:111=32:47", "5:5=47:47"
}

Actor EvilSphereFX : SoulSphereFX {
	Translation "80:111=160:166", "5:5=167:167"
}

Actor InvulnerabilitySphereFX : SoulSphereFX {
	Translation "80:111=%[0.00,0.00,0.00]:[1.17,1.35,0.70]"
}

Actor AllMapFX : SoulSphereFX {
	Translation "0:255=%[0.00,0.00,0.00]:[0.72,1.82,1.76]"
}

Actor ResearchFX : SoulSphereFX {
	Translation "0:255=%[0.28,0.25,0.12]:[1.61,1.38,0.90]"
}

Actor TalentCapsuleFX : SoulUseEffect {
	Translation "0:255=%[0.00,0.00,0.00]:[0.02,1.68,1.72]"
	Scale 0.45
}

Actor SoulEffectSpawner
{
	+NoBlockMap 
	+NoGravity 
	+NoInteraction
	-Solid 
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		Stop
	}        
}

Actor RegenEffectSpawner : SoulEffectSpawner {
	Translation "80:111=112:127"
}

Actor CyberneticEffectSpawner : SoulEffectSpawner {
	Translation "0:255=%[0.00,0.00,0.00]:[0.72,1.22,1.76]"
}

Actor DarkHealEffectSpawner : SoulEffectSpawner {
	Translation "80:111=32:47", "5:5=47:47"
}

actor PurpleSparkSpawner : SoulEffectSpawner {
	translation "80:111=%[0.00,0.00,0.00]:[1.17,0.10,1.87]"
}

Actor SoulEffectSpawnerLarge : SoulEffectSpawner
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-64, 64), random(-64, 64), random(0, 16), 0, 0, random(2,8), 0, 129, 0)
		Stop
	}        
}

Actor DissipationEffect {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	States {
		Spawn:
			MNSX ABCDEFGH 4
			MNSX IJKLMNOPQ 3 A_FadeOut(0.075)
		Stop
	}
}

Actor DissipationEffect_Orange : DissipationEffect {
	States {
		Spawn:
			MNSM ABCDEFGH 4
			MNSM IJKLMNOPQ 3 A_FadeOut(0.075)
		Stop
	}
}

//AESTHETIC EFFECTS

ACTOR ScatterShotGlow
{
   +NOINTERACTION
   +THRUACTORS
   +CLIENTSIDEONLY
   RenderStyle Add
   Alpha 0.4
   Scale 0.25
   States
   {
   Spawn:
      TNT1 A 0
	  SPGL A 1 Bright
      Stop
   }
}

ACTOR ScatterShotGlowSmall : ScatterShotGlow
{
   Scale 0.1
}

ACTOR ScatterPShotTrail
{
    Radius 6
    Height 8
    Scale 0.06
    RenderStyle Add
    Alpha 0.4
	+NOINTERACTION
	+CLIENTSIDEONLY
	+THRUACTORS
    States
    {
    Spawn:
	NDTL A 1 A_FadeOut (0.1)
	Loop
    }
}

Actor ItemRespawnFX replaces ItemFog {
	+NOBLOCKMAP
	+NOGRAVITY
	+CLIENTSIDEONLY
	Renderstyle Add
	Alpha 0.25
	Scale 0.85
	States {
		Spawn:
			TNT1 A 0 NoDelay ThrustThingZ(0, 24, 0, 1)
			TNT1 A 1 A_Stop
			X013 ABCDEFGHIJ 1 Bright A_FadeIn(0.05)
			X013 KLMNO 1 Bright
			X013 PQRSTUVWXY 1 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor ElectDrSpark {
	Translation "0:255=%[0,0,0]:[0.75,0.75,2.0]"
	+NOINTERACTION
	Scale 0.08
	RenderStyle Add
	+FORCEXYBILLBOARD
	+CLIENTSIDEONLY
	Alpha 1.0
	States { 
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 0 A_Jump(256, "1", "2", "3", "4", "5", "6", "7", "8")
		1:
			x079 A 1 Bright A_SetScale(ScaleX+0.0025)
			TNT1 A 0 A_FadeOut(0.07)
		Loop
		2:
			x079 B 1 Bright A_SetScale(ScaleX+0.0025)
			TNT1 A 0 A_FadeOut(0.07)
		Loop
		3:
			x079 C 1 Bright A_SetScale(ScaleX+0.0025)
			TNT1 A 0 A_FadeOut(0.07)
		Loop
		4:
			x079 D 1 Bright A_SetScale(ScaleX+0.0025)
			TNT1 A 0 A_FadeOut(0.07)
		Loop
		5:
			x079 E 1 Bright A_SetScale(ScaleX+0.0025)
			TNT1 A 0 A_FadeOut(0.07)
		Loop
		6:
			x079 F 1 Bright A_SetScale(ScaleX+0.0025)
			TNT1 A 0 A_FadeOut(0.07)
		Loop
		7:
			x079 G 1 Bright A_SetScale(ScaleX+0.0025)
			TNT1 A 0 A_FadeOut(0.07)
		Loop
		8:
			x079 H 1 Bright A_SetScale(ScaleX+0.0025)
			TNT1 A 0 A_FadeOut(0.07)
		Loop
	}
}

Actor GolemSoul {
	Renderstyle Add
	Alpha 0.875
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			GFXX ABC 5
			GFXX D 9
			GFXX E 8
			GFXX F 7
			GFXX G 6
		Stop
	}
}

Actor GenericParticleFX {
	RenderStyle Add
	+CLIENTSIDEONLY
	+NOGRAVITY
}

Actor DesolatorHitFX {
	Gravity 0.675
	Alpha 1.0
	Scale 0.325
	Renderstyle Add
    health 5
    radius 1
    height 1
    Speed 18
    PROJECTILE
    +NOBLOCKMAP
    +DONTSPLASH
    +RANDOMIZE
    -NOGRAVITY
    -SOLID
    +CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
		1:
			DES5 I 0
		Goto FadeLoop
		2:
			DES5 J 0
		FadeLoop:
			"####" "#" 1 A_FadeOut(0.015)
		Loop
	}
}

Actor BigPuffFX_Shared {
	+NoInteraction
	+ForceXYBillboard
	+NotOnAutomap
	+CLIENTSIDEONLY
}

Actor BigPuffFX_Flash : BigPuffFX_Shared {
	RenderStyle Normal
	Alpha 0.3
	States {
		Spawn:
			TNT1 AA 0 A_SetScale(FRandom(0.075, 0.085))
			TNT1 A 0 A_Jump(255,"SpriteA","SpriteB","SpriteC","SpriteD")
			Goto Spawn
		SpriteA:
			2PUF A 0 A_Jump(255,"Idle")
			Loop
		SpriteB:
			2PUF B 0 A_Jump(255,"Idle")
			Loop
		SpriteC:
			2PUF C 0 A_Jump(255,"Idle")
			Loop
		SpriteD:
			2PUF D 0 A_Jump(255,"Idle")
			Loop
		Idle:
			"####" "#" 1 Bright
			"####" "#" 0 A_FadeOut(0.125)
			//"####" "#" 0 A_SetScale(ScaleX + FRandom(0.04, 0.065))
			"####" "#" 0 A_JumpIf(ScaleX <= 0.0, "NULL")
			Loop
	}
}

Actor BigPuffFX_Main : BigPuffFX_Shared
{
	RenderStyle Add
	Alpha 0.99
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(255,"SpriteA","SpriteB","SpriteC","SpriteD")
			Goto Spawn
		SpriteA:
			1PUF A 0 A_Jump(255,"FadeIn")
			Loop
		SpriteB:
			1PUF B 0 A_Jump(255,"FadeIn")
			Loop
		SpriteC:
			1PUF C 0 A_Jump(255,"FadeIn")
			Loop
		SpriteD:
			1PUF D 0 A_Jump(255,"FadeIn")
			Loop
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(0.05, 0.035))
			Goto Idle
		Idle:
			"####" "#" 1 Bright A_Jump(192,"FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_FadeOut(0.2)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.01, 0.005))
			Loop
	}
}

Actor BigPuffFX_Spark1 : BigPuffFX_Shared
{
	RenderStyle Add
	Alpha 0.99
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(255,"SpriteA","SpriteB","SpriteC","SpriteD")
			Goto Spawn
		SpriteA:
			1SPK A 0 A_Jump(255,"FadeIn")
			Loop
		SpriteB:
			1SPK B 0 A_Jump(255,"FadeIn")
			Loop
		SpriteC:
			1SPK C 0 A_Jump(255,"FadeIn")
			Loop
		SpriteD:
			1SPK D 0 A_Jump(255,"FadeIn")
			Loop
		SpriteE:
			1SPK E 0 A_Jump(255,"FadeIn")
			Loop
		SpriteF:
			1SPK F 0 A_Jump(255,"FadeIn")
			Loop
		SpriteG:
			1SPK G 0 A_Jump(255,"FadeIn")
			Loop
		SpriteH:
			1SPK H 0 A_Jump(255,"FadeIn")
			Loop
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(0.05, 0.045))
			Goto Idle
		Idle:
			"####" "#" 1 Bright A_Jump(192,"FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_FadeOut(0.2)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.0075, 0.005))
			Loop
	}
}

Actor BigPuffFX_Spark2 : BigPuffFX_Shared
{
	RenderStyle Add
	Alpha 0.99
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(255,"SpriteA","SpriteB","SpriteC","SpriteD")
			Goto Spawn
		SpriteA:
			2SPK A 0 A_Jump(255,"FadeIn")
			Loop
		SpriteB:
			2SPK B 0 A_Jump(255,"FadeIn")
			Loop
		SpriteC:
			2SPK C 0 A_Jump(255,"FadeIn")
			Loop
		SpriteD:
			2SPK D 0 A_Jump(255,"FadeIn")
			Loop
		SpriteE:
			2SPK E 0 A_Jump(255,"FadeIn")
			Loop
		SpriteF:
			2SPK F 0 A_Jump(255,"FadeIn")
			Loop
		SpriteG:
			2SPK G 0 A_Jump(255,"FadeIn")
			Loop
		SpriteH:
			2SPK H 0 A_Jump(255,"FadeIn")
			Loop
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(0.05, 0.045))
			Goto Idle
		Idle:
			"####" "#" 1 Bright A_Jump(192,"FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_FadeOut(0.2)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.0075, 0.005))
			Loop
	}
}

Actor BigPuffFX_Smoke : BigPuffFX_Shared
{
	Alpha 0.0
	RenderStyle Translucent
	States
	{
		Spawn:
		    TNT1 A 3
			TNT1 AA 0 A_Jump(255, "SpriteA", "SpriteB", "SpriteC", "SpriteD")
		SpriteA:
			DYMI A 0 A_Jump(255, "FadeIn")
			Goto SpriteA
		SpriteB:
			DYMI B 0 A_Jump(255, "FadeIn")
			Goto SpriteB
		SpriteC:
			DYMI C 0 A_Jump(255, "FadeIn")
			Goto SpriteC
		SpriteD:
			DYMI D 0 A_Jump(255, "FadeIn")
			Goto SpriteD
		FadeIn:
			"####" "#" 0 A_SetScale(FRandom(0.01, 0.015))
			Goto RealFadeIn
		RealFadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.06, 0.08))
			"####" "#" 0 A_JumpIf(Alpha >= 0.25, "Idle")
			Loop
		Idle:
			"####" "#" 5 A_Jump(200, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(FRandom(0.01,0.02))
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.015, 0.005))
			Loop
	}
}

ACTOR SmokeTrail {
	Radius 8
	Height 12
	Mass 1
	Scale 0.1
	RenderStyle "Add"
	Alpha 0.6
	Gravity 0.005
	+NOINTERACTION
	-BLOCKEDBYSOLIDACTORS
	-VISIBILITYPULSE
	-NOGRAVITY
	+CLIENTSIDEONLY
	+BRIGHT
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
		SpawnLoop:
			HLFC ABCB 1 A_FadeOut(0.075)
		Loop
		Crash:
		Stop
	}
}

ACTOR SmokeTrail2 {
	+NOBLOCKMAP
	-NOGRAVITY
	+SHADOW
	+NOTELEPORT
	+CANNOTPUSH
	+NODAMAGETHRUST
	+CLIENTSIDEONLY
	Mass 1
	Gravity 0.01
	RenderStyle "Add"
	Scale 0.05
	Alpha 0.9
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
		SpawnLoop:
			SMK2 ABCEFGHIJKLMNOPQR 2  Bright A_FadeOut(0.1) //0.03
		Loop
	}
}

ACTOR WussySmokeTrail : SmokeTrail {
	Scale 0.04
}

ACTOR SmokeTrail3 {
	+NOBLOCKMAP
	-NOGRAVITY
	+SHADOW
	+NOTELEPORT
	+CANNOTPUSH
	+NODAMAGETHRUST
	+RANDOMIZE
	+CLIENTSIDEONLY
	Mass 1
	Gravity 0.01
	RenderStyle "Add"
	Scale 0.3
	Alpha 0.1
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
		SpawnLoop:
			HFTR A 1 A_FadeOut(0.05)
			HFTR A 0 A_SetScale(0.35)
			HFTR A 1 A_FadeOut(0.05)
			HFTR A 0 A_SetScale(0.4)
			HFTR B 1 A_FadeOut(0.05)
			HFTR B 0 A_SetScale(0.45)
			HFTR B 1 A_FadeOut(0.05)
			HFTR B 0 A_SetScale(0.5)
			HFTR A 1 A_FadeOut(0.05)
			HFTR A 0 A_SetScale(0.55)
			HFTR A 1 A_FadeOut(0.05)
			HFTR A 0 A_SetScale(0.6)
			HFTR B 1 A_FadeOut(0.05)
			HFTR B 0 A_SetScale(0.65)
			HFTR B 1 A_FadeOut(0.05)
			HFTR B 0 A_SetScale(0.7)
		Goto Spawn2
		Spawn2:
			HFTR AB 2 A_FadeOut(0.05)
		Loop
	}
}

Actor IceChunkCS : IceChunk replaces IceChunk {
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay A_Jump(128, 1, 2, 3)
			ICEC A 1
			ICEC ABCD 10 A_IceSetTics
		Stop
	}
}

Actor ColdSmoke {
	Renderstyle Add
	Alpha 1.0
	+CLIENTSIDEONLY
	+NoInteraction
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 0 A_SetScale(frandom(0.5, 1.0), frandom(0.5, 1.0))
		SpawnLoop:
			CLSM ABCDEFGHIJKLMNOPQRSTUVWX 2 A_FadeOut(0.025)
		Stop
	}
}

Actor DnD_ChillWindSpawner : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_SpawnItemEx("ColdSmoke", frandom(-radius, radius) / 2, frandom(-radius, radius) / 2, frandom(24, height + 16) / 2, frandom(-1.25, 1.25), frandom(-1.25, 1.25), frandom(-0.75, 0.75))
		Stop
	}
}

Actor FreezeGlitter {
	Renderstyle Add
	Alpha 1.0
	+CLIENTSIDEONLY
	+NoInteraction
	Scale 1.25
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 0 A_Jump(128, "SpawnLoop")
			TNT1 A 0 A_PlaySound("FreezingEffect")
		SpawnLoop:
			GLIT ABCDE 2 Bright
		Stop
	}
}

Actor FrozenFX {
	Renderstyle Add
	Alpha 0.9
	+CLIENTSIDEONLY
	+NoInteraction
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
		SpawnLoop:
			FRZN A 6 Bright
		Stop
	}
}

Actor IgniteFX {
	RenderStyle Add
	Translation "160:160=231:231", "161:162=215:215", "163:163=217:217", "164:167=176:188"
	ALPHA 1.00
	+CLIENTSIDEONLY
	+NoInteraction
	Scale 0.5
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 0 A_Jump(256, "Anim1", "Anim2", "Anim3", "Anim4", "Anim5")
		Anim1:
			FIRE ABABABCDEFGH 2 Bright
		Stop
		Anim2:
			FIRE ABCDEFGH 2 Bright
		Stop
		Anim3:
			FIRE ABCDEDEFGH 2 Bright
		Stop
		Anim4:
			FIRE ABCDEDEFGHGHGH 2 Bright
		Stop
		Anim5:
			FIRE ABABCDEDEDEDFGH 2 Bright
		Stop
	}
}

Actor DnD_IgniteFXSpawner : DnD_Activator {
	States {
		Pickup:
			TNT1 AA 0 A_SpawnItemEx("IgniteFX", frandom(-radius, radius) / 2, frandom(-radius, radius) / 2, frandom(8, height + 8) / 2, frandom(-1.25, 1.25), frandom(-1.25, 1.25), frandom(0.5, 2.5))
		Stop
	}
}

Actor OverloadZap_Particles {
	RenderStyle Add
	Alpha 0.875
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			ZAP1 CDEF 3 Bright
		Stop
	}
}

Actor OverloadZap {
	Renderstyle Add
	Scale 0.04
	Alpha 0.01
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 1
			FLAR GG 1 Bright A_FadeIn(0.5)
			FLAR G 1 Bright
			FLAR GGG 1 Bright A_FadeOut(0.33)
		Stop
	}
}

Actor OverloadZap_Source : OverloadZap {
	Scale 0.375	
	States {
		Spawn:
			TNT1 A 1
			FLAR GGGG 1 Bright A_FadeIn(0.2)
			FLAR G 3 Bright
			FLAR GGGGGGGG 1 Bright A_FadeOut(0.1)
		Stop
	}
}

Actor Overload_SoundLooper : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_PlaySound("Overload/Loop", 5)
		Stop
	}
}

Actor Overload_SoundStopper : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_PlaySound("NullSound", 5)
		Stop
	}
}

// Stone bits SFX - by Blue Shadow (the spawning code is based on Nash's nashgore code)

ACTOR StoneBitsSpawner {
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay A_Jump(256, "Low1", "Low2", "Medium1", "Medium2", "High1", "High2")
		TNT1 A 0
		Low1:
			TNT1 A 0 A_SpawnItemEx("StoneBitsSmall", 0, 0, 8, random(-4, 4), random(-4, 4), random(2, 5), 0, SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
		Low2:
			TNT1 A 0 A_SpawnItemEx("StoneBitsSmall", 0, 0, 8, random(-4, 4), random(-4, 4), random(2, 5), 0, SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
		Goto Done
		Medium1:
			TNT1 A 0 A_SpawnItemEx("StoneBitsMedium", 0, 0, 8, random(-4, 4), random(-4, 4), random(2, 5), 0, SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
		Medium2:
			TNT1 A 0 A_SpawnItemEx("StoneBitsMedium", 0, 0, 8, random(-4, 4), random(-4, 4), random(2, 5), 0, SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
		Goto Done
		High1:
			TNT1 A 0 A_SpawnItemEx("StoneBitsLarge", 0, 0, 8, random(-4, 4), random(-4, 4), random(2, 5), 0, SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
		High2:
			TNT1 A 0 A_SpawnItemEx("StoneBitsLarge", 0, 0, 8, random(-4, 4), random(-4, 4), random(2, 5), 0, SXF_ABSOLUTEPOSITION | SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM)
		Done:
			TNT1 A 2 A_PlaySound("stoneimp/impact")
		Stop
	}
}

ACTOR StoneBitsSmall {
	Radius 2
	Height 2
	+NOTELEPORT
	+NOBLOCKMAP
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 AA 0 A_Jump(256, "SpawnA", "SpawnB")
		SpawnA:
			TNT1 A 0 A_Jump(256, 1, 2, 3, 4)
			STB1 AAAA 10 A_FadeOut(0.25)
		Stop
			STB1 BBBB 10 A_FadeOut(0.25)
		Stop
			STB1 CCCC 10 A_FadeOut(0.25)
		Stop
			STB1 DDDD 10 A_FadeOut(0.25)
		Stop
		SpawnB:
			TNT1 A 0 A_Jump(256, 1, 2)
			STB2 AAAA 10 A_FadeOut(0.25)
		Stop
			STB2 BBBB 10 A_FadeOut(0.25)
		Stop
	}
}

ACTOR StoneBitsMedium {
	Radius 2
	Height 2
	+NOTELEPORT
	+NOBLOCKMAP
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 AA 0 A_Jump(256, "SpawnA", "SpawnB", "SpawnC")
		SpawnA:
			TNT1 A 0 A_Jump(256, 1, 2, 3, 4)
			STB1 A 10
		Goto Fade
			STB1 B 10
		Goto Fade
			STB1 C 10
		Goto Fade
			STB1 D 10
		Goto Fade
		SpawnB:
			TNT1 A 0 A_Jump(256, 1, 2)
			STB2 A 10
		Goto Fade
			STB2 B 10
		Goto Fade
		SpawnC:
			TNT1 A 0 A_Jump(256, 1, 2, 3, 4)
			STB3 A 10
		Goto Fade
			STB3 B 10
		Goto Fade
			STB3 C 10
		Goto Fade
			STB3 D 10
		Goto Fade
		Fade:
			"####" "#" 10 A_FadeOut(0.25)
		Loop
	}
}

ACTOR StoneBitsLarge {
	Radius 2
	Height 2
	+NOTELEPORT
	+NOBLOCKMAP
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 AA 0 A_Jump(256, "SpawnB", "SpawnC", "SpawnD")
		SpawnB:
			TNT1 A 0 A_Jump(256, 1, 2)
			STB2 A 10
		Goto Fade
			STB2 B 10
		Goto Fade
		SpawnC:
			TNT1 A 0 A_Jump(256, 1, 2, 3, 4)
			STB3 A 10
		Goto Fade
			STB3 B 10
		Goto Fade
			STB3 C 10
		Goto Fade
			STB3 D 10
		Goto Fade
		SpawnD:
			TNT1 A 0 A_Jump(256, 1, 2, 3, 4)
			STB4 A 10
		Goto Fade
			STB4 B 10
		Goto Fade
			STB4 C 10
		Goto Fade
			STB4 D 10
		Goto Fade
		Fade:
			"####" "#" 10 A_FadeOut(0.25)
		Loop
	}
}

Actor EnemyResSoul {
	Renderstyle Translucent
	Alpha 0.875
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			SRV3 IHG 3
			SRV3 FED 2
			SRV3 CBA 1
		Stop
	}
}

Actor NuclearExplosionFX {
	Renderstyle Add
	Alpha 0.0
	Scale 0.95
	var int user_fadetime;
	var int user_a;
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("user_a", 0)
			TNT1 A 0 A_SetUserVar("user_fadetime", 20)
			TNT1 A 0 A_PlaySound("NuclearCountdown")
		FadeLoop:
			TNT1 A 0 A_JumpIf(user_a == user_fadetime, "FadeFinish")
			BIGB A 1 Bright A_SetTranslucent(0.35 + 0.65 * sin(user_a * 90 / user_fadetime), 1)
			TNT1 A 0 A_SetUserVar("user_a", user_a + 1)
		Loop
		FadeFinish:
			TNT1 A 0 A_JumpIf(user_a == 0, "FadeRestart")
			BIGB B 1 Bright A_SetTranslucent(0.35 + 0.65 * sin(user_a * 90 / user_fadetime), 1)
			TNT1 A 0 A_SetUserVar("user_a", user_a - 1)
		Loop
		FadeRestart:
			BIGB B 3 Bright A_SetUserVar("user_fadetime", user_fadetime - 2)
			TNT1 A 0 A_JumpIf(user_fadetime <= 0, "Finish")
		Goto FadeLoop
		Finish:
			TNT1 A 0 A_SetTranslucent(0.875, 1)
			BIGB BBBCCCDDDEEEFFFGGGHHHIIIJJJKKLLMMNNOOPPQQRRSSTTUU 1 Bright A_SetScale(scalex * 1.0175, scaley * 1.0175)
		Stop
	}
}