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 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 {
	Speed 3
	Damage 0
	Renderstyle Add
	Alpha 0.75
	PROJECTILE
	+NOBLOCKMAP
	+NOTELEPORT
	+DONTSPLASH
	+NOGRAVITY
	+MISSILE
	+FORCEXYBILLBOARD
	+CLIENTSIDEONLY
	+NOINTERACTION
	+NOCLIP
	+DONTBLAST
	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 {
	Speed 1
	Scale 0.45
}

Actor ExplosionFX3 : ExplosionFX1 {
	Speed 1
	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 {
	Speed 1
	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 ExplosionFX5 : ExplosionFX1 {
	Speed 1
	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 {
	Speed 1
	Scale 0.8
}

Actor ExplosionFX7 : ExplosionFX4 {
	Scale 0.8
}

Actor ExplosionFX8 : ExplosionFX1 {
	Speed 1
	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 {
	Speed 1
	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 {
	Speed 1
	Scale 0.45
	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 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 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
			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
	   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
	   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
	   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
	   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 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
	}
}

// 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=112:127", "5:5=127:127"
}

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 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 EliteSpecialFX {
	Height 1
	Radius 1
	Translation "112:127=%[0.00,0.00,0.00]:[1.79,1.88,0.02]"
	Scale 0.3
	Renderstyle Add
	Alpha 0.66
	Vspeed 2
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
			TNT1 A 2
		SpawnLoop:
			SKFX A 1 Bright A_FadeOut(0.033)
		Loop
	}
}

Actor EliteFXSpawner : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_SpawnItemEx("EliteSpecialFX", frandom(-radius, radius), frandom(-radius ,radius), frandom(0, height / 2), 0, 0, random(2, 4), 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
		Stop
	}
}

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
	}
}