ACTOR Tormentor : Weapon 26202
{
	Tag "ATLS-1134 Tormentor"
	Inventory.PickupSound "misc/w_pkup"
	Weapon.UpSound "Weapons/TormentorUp"
	Inventory.PickupMessage "You got the ATLS-1134 Tormentor explosive magnum."
	Weapon.AmmoType1 "TormentorCylinder"
	Weapon.AmmoGive1 0
	Weapon.AmmoUse1 1
	Weapon.AmmoType2 "Tormentor_Magazine"
	Weapon.AmmoGive2 2
	Weapon.AmmoUse2 0
	weapon.bobstyle inversesmooth
   weapon.bobrangeX 0.4
   weapon.bobrangeY 0.6
   weapon.bobspeed 2.5
   Obituary "%o caught a .667 magnum shell to the face"
	+AMMO_OPTIONAL
	+NOAUTOFIRE
	+CHEATNOTWEAPON
	+NOAUTOAIM
	States
	{
	Spawn:
		HRNX A -1
		Stop
	Ready:
    	HRNG A 1 A_WeaponReady(WRF_ALLOWRELOAD)
    	Loop
	Select:
		TNT1 A 0 SetPlayerProperty(0,0,2)
		TNT1 A 0 A_SetCrosshair(4)
		HRNS EDCBA 1
    	Goto SelectLoop
	SelectLoop:
		HRNG A 1 A_Raise
		Loop
    Deselect:
		TNT1 A 0 SetPlayerProperty(0,1,2)
		TNT1 A 0 A_SetCrosshair(1)
		HRNS ABCDE 1
		Goto DeselectLoop
	DeselectLoop:
		TNT1 A 1 A_Lower
		Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("RevolverToken", 1, "Fire2")
	Fire1:
		HRNG A 0 A_JumpIfInventory("TormentorCylinder",1,1)
		Goto DryFire
		TNT1 A 0 A_AlertMonsters
		TNT1 AAAAA 0 A_FireCustomMissile("gausssmoke_spawner2",0,0,3,4,0)		
		TNT1 A 0 A_PlaySound("Weapons/TormentorFire",83,0.99,0,1)
		TNT1 A 0 A_PlaySound("Weapons/TormentorFireAdd",84,0.77,0,1)
		HRNF A 3 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_SpawnItem("Lightprojectile",0,0,0,0)
		TNT1 A 0 A_PlaySound("Weapons/TormentorCycle",85,0.99,0,1)
		TNT1 A 0 A_FireCustomMissile("P_Tormentor_Tracer", random(-0.99, 0.99), 1, 5, 7, 0,random(-0.99, 0.99))
		HRNF BC 1 BRIGHT A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_SetPitch(pitch - 1.5)
		TNT1 A 0 A_ZoomFactor(0.95)
		HRNF DEF 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_ZoomFactor(0.96)
		HRNF GHI 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_ZoomFactor(0.97)
		HRNF JKL 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_ZoomFactor(0.98)
		TNT1 A 0 A_ZoomFactor(0.99)
		TNT1 A 0 A_ZoomFactor(1.0)
		HRNG A 1 A_WeaponReady
		Goto Ready
	Fire2:
		HRNG A 0 A_JumpIfInventory("TormentorCylinder",1,1)
		Goto DryFire
		TNT1 A 0 A_AlertMonsters
		TNT1 AAAAA 0 A_FireCustomMissile("gausssmoke_spawner2",0,0,3,4,0)		
		TNT1 A 0 A_PlaySound("Weapons/TormentorFire",83,0.99,0,1)
		TNT1 A 0 A_PlaySound("Weapons/TormentorFireAdd",84,0.99,0,1)
		HRNF A 3 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_SpawnItem("Lightprojectile",0,0,0,0)
		TNT1 A 0 A_PlaySound("Weapons/TormentorCycle",85,0.99,0,1)
		TNT1 A 0 A_FireCustomMissile("TormentorBullet", random(-0.99, 0.99), 1, 5, 7, 0,random(-0.99, 0.99))
		HRNF BC 1 BRIGHT A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_SetPitch(pitch - 1.5)
		TNT1 A 0 A_ZoomFactor(0.95)
		HRNF DEF 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_ZoomFactor(0.96)
		HRNF GHI 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_ZoomFactor(0.97)
		HRNF JKL 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_ZoomFactor(0.98)
		TNT1 A 0 A_ZoomFactor(0.99)
		TNT1 A 0 A_ZoomFactor(1.0)
		HRNG A 10 A_WeaponReady (WRF_NoFire|WRF_NoSwitch)
		Goto Ready
	AltFire: //Does checks, if you have no dummy actors, select semi auto
		HRNG A 0 A_JumpIfInventory("TormentorCylinder",1,1)
		Goto DryFire
		HRNG A 0 A_JumpIfInventory("Tormentor_Magazine",1,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySoundEX("Weapons/FireSelector","Body",0,0)
		TNT1 A 0 A_JumpIfInventory("RevolverToken", 1, "AltFire2")
		TNT1 A 0 A_GiveInventory("Tormentor_Magazine", 1)
		TNT1 A 0 A_TakeInventory("TormentorCylinder", 6)
		TNT1 A 0 A_GiveInventory("RevolverToken", 1)
		TNT1 A 0 A_SetCrosshair(16)
		HRNG A 10 A_WeaponReady(WRF_NOFIRE)
		Goto ReloadBegin
	AltFire2: //Clears dummy actors, to use full auto
		HRNG A 0 A_JumpIfInventory("TormentorCylinder",1,1)
		Goto DryFire
		HRNG A 0 A_JumpIfInventory("Tormentor_Magazine",1,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySoundEX("Weapons/FireSelector","Body",0,0)
		TNT1 A 0 A_GiveInventory("Tormentor_Magazine", 1)
		TNT1 A 0 A_TakeInventory("TormentorCylinder", 6)
		TNT1 A 0 A_TakeInventory("RevolverToken", 1)
		TNT1 A 0 A_SetCrosshair(4)
		HRNG A 5 A_WeaponReady(WRF_NOFIRE)
		Goto ReloadBegin_X
	DryFire:
		TNT1 A 0 A_PlaySound("Weapons/TormentorEmpty",199,1.0,0,1)
		HRNF A 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNG B 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNG C 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNG A 5 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		Goto Ready
	Reload:
		TNT1 A 0 A_JumpIfInventory("RevolverToken", 1, "ReloadBegin_X")
	ReloadBegin:
		HRNG A 0 A_JumpIfInventory("TormentorCylinder",6,"Ready")
		HRNG A 0 A_JumpIfInventory("Tormentor_Magazine",1,1)
		Goto Dryfire
		HRNG A 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_PlaySound("Weapons/TormentorReloadSeq1",60,1.0,0,1)
		HRNR ABCDE 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR FGHIJ 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_PlaySound("Weapons/TormentorReloadSeq2",61,1.0,0,1)
		HRNR K 6 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR KLMNO 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR ONMLK 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR K 6 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR KLMNO 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR PQ 2 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR MMMMMM 0 A_FireCustomMissile("Tormentor_Casing_Spawner",0,0,1,2)
		HRNR QRSTUV 1  A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR V 6 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_PlaySound("Weapons/TormentorReloadSeq3",62,1.0,0,1)
		HRNR WXYZ 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		Goto ReloadWork
	ReloadBegin_X:
		HRNG A 0 A_JumpIfInventory("TormentorCylinder",6,"Ready")
		HRNG A 0 A_JumpIfInventory("Tormentor_Magazine",1,1)
		Goto Dryfire
		HRNG A 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_PlaySound("Weapons/TormentorReloadSeq1",60,1.0,0,1)
		HRNR ABCDE 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR FGHIJ 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_PlaySound("Weapons/TormentorReloadSeq2",61,1.0,0,1)
		HRNR K 6 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR KLMNO 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR ONMLK 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR K 6 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR KLMNO 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR PQ 2 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR MMMMMM 0 A_FireCustomMissile("Tormentor_Casing_Spawner_X",0,0,1,2)
		HRNR QRSTUV 1  A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNR V 6 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_PlaySound("Weapons/TormentorReloadSeq3",62,1.0,0,1)
		HRNR WXYZ 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		Goto ReloadWork
	ReloadWork:
		TNT1 A 0 A_TakeInventory("Tormentor_Magazine",1)
		TNT1 A 0 A_GiveInventory("TormentorCylinder",6)
		TNT1 A 0 A_JumpIfInventory("TormentorCylinder",6,"ReloadFinish")
		TNT1 A 0 A_JumpIfInventory("Tormentor_Magazine",1,"ReloadWork")
	ReloadFinish:
		HRNC ABC 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNC C 15 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		TNT1 A 0 A_PlaySound("Weapons/TormentorReloadSeq4",63,1.0,0,1)
		HRNC DEG 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNC IJ 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNC LMN 1 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		HRNG A 5 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		Goto Ready
	}
}

ACTOR RevolverToken : Inventory {Inventory.MaxAmount 1}

ACTOR TormentorCylinder : Ammo
{
	Inventory.MaxAmount 6
	+IGNORESKILL
}

actor Tormentor_Magazine : Ammo 27202 { //Tormentor .667 Magnum I'm so fucking original
  radius 16
  height 8
  scale 0.5
  inventory.pickupmessage "6 Round speed loader of .667 H3X ammo for the ATLS-1134 Tormentor"
  inventory.amount 1
  inventory.maxamount 6 //42 rounds total
  inventory.pickupsound "Weapons/TormentorCycle"
  ammo.backpackamount 2
  ammo.backpackmaxamount 12 // 78 rounds total
  states
  {
  Spawn:
    MAGN A -1
    stop
  }
}

ACTOR Tormentor_Casing_Spawner 
{
	Speed 8
	PROJECTILE
	+NOCLIP
	States
	{
	Spawn:
		TNT1 AA 1 A_CustomMissile("Tormentor_Casing",0,0,random(-50,-80),CMF_AIMDIRECTION,random(-15,15))
		Stop
	}
}


ACTOR Tormentor_Casing
{
   Radius 2
   Height 4
   Speed 8
   Scale 0.15
   BounceSound "Weapons/RifleCasing"
   PROJECTILE
   -NOGRAVITY
   +BOUNCEONACTORS
   +BOUNCEONCEILINGS
   +DONTSPLASH
   +CLIENTSIDEONLY
   Gravity 0.75
   BounceType Doom
   BounceCount 6
   BounceFactor 0.6
   DamageType Nope
   States
   {
   Spawn:
      TRBC A 0
      TRBC ABCDEF 1
      Goto Roflcopter
   Roflcopter:
      TRBC A 0 A_Jump(128,1,3,5,7)
      TRBC ABCDEF 1
      Loop
   Death:
      TRBC A 0 A_SpawnItemEx("Tormentor_Casing_Liedown")
      stop
   }
}

actor Tormentor_Casing_Liedown
{
	-NOGRAVITY
    Scale 0.18
	States
	{
	Spawn:
	  TNT1 A 0
	  TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3")
	  stop
	Spawn1:
	  TRBC A 1
	  Goto Ded
	Spawn2:
	  TRBC D 1
	  Goto Ded
	Spawn3:
	  TRBC C 1
	  Goto Ded
	Ded:
	  "####" "#" 210 A_CheckSight("Fadying")
	  Loop
	Fadying:
	  "####" "#" 1 A_FadeOut(0.1)
	  Wait
   }
}

ACTOR Tormentor_Casing_Spawner_X
{
	Speed 8
	PROJECTILE
	+NOCLIP
	States
	{
	Spawn:
		TNT1 AA 1 A_CustomMissile("Tormentor_Casing_X",0,0,random(-50,-80),CMF_AIMDIRECTION,random(-15,15))
		Stop
	}
}

ACTOR Tormentor_Casing_X
{
   Radius 2
   Height 4
   Speed 8
   Scale 0.15
   BounceSound "Weapons/RifleCasing"
   PROJECTILE
   -NOGRAVITY
   +BOUNCEONACTORS
   +BOUNCEONCEILINGS
   +DONTSPLASH
   +CLIENTSIDEONLY
   Gravity 0.75
   BounceType Doom
   BounceCount 6
   BounceFactor 0.6
   DamageType Nope
   States
   {
   Spawn:
      TRXC A 0
      TRXC ABCDEF 1
      Goto Roflcopter
   Roflcopter:
      TRXC A 0 A_Jump(128,1,3,5,7)
      TRXC ABCDEF 1
      Loop
   Death:
      TRXC A 0 A_SpawnItemEx("Tormentor_Casing_Liedown_X")
      stop
   }
}

actor Tormentor_Casing_Liedown_X
{
	-NOGRAVITY
    Scale 0.18
	States
	{
	Spawn:
	  TNT1 A 0
	  TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3")
	  stop
	Spawn1:
	  TRXC A 1
	  Goto Ded
	Spawn2:
	  TRXC D 1
	  Goto Ded
	Spawn3:
	  TRXC C 1
	  Goto Ded
	Ded:
	  "####" "#" 210 A_CheckSight("Fadying")
	  Loop
	Fadying:
	  "####" "#" 1 A_FadeOut(0.1)
	  Wait
   }
}

ACTOR TormentorBullet : FastProjectile
{
  Radius 10
  Height 14
  Speed 200
  Scale 0.45
  Damage (random(350,350))
  DamageType "Magnum"
  DamageType "SSG"
  Projectile
  +NoTimeFreeze
  Renderstyle Add
  Obituary "%o tried to catch %k's .667 H3X Slug with %p teeth. %g failed miserably."
  //MissileType "LoudmouthTrailer"
  MissileHeight 3
  
  States
  {
  Spawn:
      TNT1 AA 0 A_PlaySound("Weapons/TormentorFly",5,0.8,1)
      PUFF A 1
      loop
  Death:
  XDeath:
      TNT1 A 0 A_SpawnItemEx("tormentor_impactspawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      TNT1 A 0 A_PlaySound("Weapons/TormentorExplode",5,0.7)
      TNT1 A 1 A_PlaySound("Weapons/TormentorHit",4)
      Stop
   }
}

Actor KD_BaseParticle
{
	+NoInteraction
	+ForceXYBillboard
	+NOTIMEFREEZE
	RenderStyle Normal
	Alpha 0.99
	States
	{
		Spawn:				// Initialization goes here.
			TNT1 A 0
			Goto FadeIn
		FadeIn:				// Optional fading in.
			TNT1 A 0
			Goto Idle
		Idle:				// Fly around.
			TNT1 A 0
			Goto FadeOut
		FadeOut:			// Dissipate.
			TNT1 A 0
			Stop
	}
}

Actor KD_BaseParticleMultiple : KD_BaseParticle
{
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_Jump(256, "SpriteA", "SpriteB", "SpriteC", "SpriteD")
			Goto Spawn
		SpriteA:
			TNT1 A 0 A_Jump(256, "FadeIn")
		SpriteB:
			TNT1 A 0 A_Jump(256, "FadeIn")
		SpriteC:
			TNT1 A 0 A_Jump(256, "FadeIn")
		SpriteD:
			TNT1 A 0 A_Jump(256, "FadeIn")
		FadeIn:				// Optional fading in.
			TNT1 A 0
			Goto Idle
		Idle:				// Fly around.
			TNT1 A 0
			Goto FadeOut
		FadeOut:			// Dissipate.
			TNT1 A 0
			Stop
	}
}

Actor KD_BaseEmitter
{
	Var Int User_SpawnCount;
	+NOTIMEFREEZE
	+NoInteraction
	
	States
	{
		Spawn:				// Initialize particle counter.
			TNT1 AA 0 A_SetUserVar("User_SpawnCount", 10)
			Goto Emit
		Emit:				// Emit particles.
			TNT1 A 0 A_Jump(0xFF, "Count") // You MUST use A_Jump.
			Goto Count
		Count:				// Emit until SpawnCount <= 0.
			TNT1 A 0 A_SetUserVar("User_SpawnCount", User_SpawnCount - 1)
			TNT1 A 0 A_JumpIf(User_SpawnCount <= 0, "NULL")
			TNT1 A 0 A_Jump(0xFF, "Emit")
			Goto Emit
	}
}

Actor Tormentor_Cloud : KD_BaseParticleMultiple
{
	Alpha 0.65
	+NOTIMEFREEZE
	RenderStyle Add
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(256, "SpriteA", "SpriteB", "SpriteC", "SpriteD",
								 "SpriteE", "SpriteF", "SpriteG", "SpriteH")
		SpriteA:
			CLOD A 0 A_Jump(256, "FadeIn")
			Goto SpriteA
		SpriteB:
			CLOD B 0 A_Jump(256, "FadeIn")
			Goto SpriteB
		SpriteC:
			CLOD C 0 A_Jump(256, "FadeIn")
			Goto SpriteC
		SpriteD:
			CLOD D 0 A_Jump(256, "FadeIn")
			Goto SpriteD
		SpriteE:
			CLOD E 0 A_Jump(256, "FadeIn")
			Goto SpriteE
		SpriteF:
			CLOD F 0 A_Jump(256, "FadeIn")
			Goto SpriteF
		SpriteG:
			CLOD G 0 A_Jump(256, "FadeIn")
			Goto SpriteG
		SpriteH:
			CLOD H 0 A_Jump(256, "FadeIn")
			Goto SpriteH
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(1.0, 0.9))
			Goto Idle
		Idle:
			"####" "#" 2 Bright A_Jump(190, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_FadeOut(0.035)
			"####" "#" 0 A_ScaleVelocity(FRandom(1.01, 1.03))
			"####" "#" 0 A_SetScale(ScaleX - FRandom(0.01, 0.03))
			Loop
	}
}

Actor Tormentor_Smoke : KD_BaseParticleMultiple
{
	Alpha 0.0
	+NOTIMEFREEZE
	RenderStyle Translucent
	States
	{
		Spawn:
		    TNT1 A 3
			TNT1 AA 0 A_Jump(256, "SpriteA", "SpriteB", "SpriteC", "SpriteD")
		SpriteA:
			DYMI A 0 A_Jump(256, "FadeIn")
			Goto SpriteA
		SpriteB:
			DYMI B 0 A_Jump(256, "FadeIn")
			Goto SpriteB
		SpriteC:
			DYMI C 0 A_Jump(256, "FadeIn")
			Goto SpriteC
		SpriteD:
			DYMI D 0 A_Jump(256, "FadeIn")
			Goto SpriteD
		FadeIn:
			"####" "#" 0 A_SetScale(FRandom(0.3, 0.4))
			Goto RealFadeIn
		RealFadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.01, 0.03))
			"####" "#" 0 A_JumpIf(Alpha >= 0.35, "Idle")
			Loop
		Idle:
			"####" "#" 5 A_Jump(200, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(FRandom(0.01,0.015))
			"####" "#" 0 A_ScaleVelocity(0.96)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.015, 0.025))
			Loop
	}
}

Actor Tormentor_Ember : KD_BaseParticleMultiple
{
	Alpha 0.99
	+NOTIMEFREEZE
	RenderStyle Add
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(256, "SpriteA", "SpriteB", "SpriteC", "SpriteD", "SpriteE", "SpriteF")
		SpriteA:
			EMBR A 0 A_Jump(256, "FadeIn")
			Goto SpriteA
		SpriteB:
			EMBR B 0 A_Jump(256, "FadeIn")
			Goto SpriteB
		SpriteC:
			EMBR C 0 A_Jump(256, "FadeIn")
			Goto SpriteC
		SpriteD:
			EMBR D 0 A_Jump(256, "FadeIn")
			Goto SpriteD
		SpriteE:
			EMBR E 0 A_Jump(256, "FadeIn")
			Goto SpriteE
		SpriteF:
			EMBR F 0 A_Jump(256, "FadeIn")
			Goto SpriteF
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(0.035, 0.055))
			Goto Idle
		Idle:
			"####" "#" 2 Bright A_Jump(200, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_Weave(FRandom(0.9, 1.0), FRandom(0.9, 1.0),
										FRandom(70, 90), FRandom(70, 90))
			"####" "#" 0 A_JumpIf(ScaleX <= 0.0, "NULL")
			"####" "#" 0 A_ChangeVelocity(VelX * FRandom(0.93, 0.99),
										  VelY * FRandom(0.93, 0.99),
										  VelZ - FRandom(0.1, 0.2),
										  CVF_REPLACE)
			"####" "#" 0 A_SetScale(ScaleX - FRandom(0.003, 0.0015))
			Loop
	}
}

ACTOR TormentorImpact
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTIMEFREEZE
	States
	{
	Spawn:
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Tormentor_Cloud", FRandom(-15, 15),
									FRandom(-15, 15), FRandom(-15, 15),
									FRandom(-2.0, -2.0), FRandom(-2.0, 2.0),
									FRandom(-2.0, 2.0), 0, SXF_CLIENTSIDE, 10)
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("Tormentor_Smoke", FRandom(-15, 15),
									FRandom(-15, 15), FRandom(-15, 15),
									FRandom(1.5, -2.5), FRandom(-1.0, 1.0),
									FRandom(-1.0, 1.0), 0, SXF_CLIENTSIDE, 10)
			TNT1 AAAAAAAAA 0 A_SpawnItemEx("Tormentor_Ember", FRandom(-10, 10),
									FRandom(-10, 10), FRandom(-10, 10),
									FRandom(-2.0, -8.0), FRandom(-6.0, 6.0),
									FRandom(1.0, 5.0), 0, SXF_CLIENTSIDE, 10)
	TNT1 A 0 A_SpawnItemEx("TormentorImpact1",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	TNT1 A 11
	Stop
	}
}

ACTOR TormentorImpact1
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTIMEFREEZE
	Renderstyle Add
	Alpha 1
	Scale 0.35
	States
	{
	Spawn:
	BPRH ABCDEFGHIJ 1 Bright A_FadeOut(0.05)
	Stop
	}
}

ACTOR Tormentor_Trail
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTIMEFREEZE
	+FORCERADIUSDMG
	Renderstyle Add
	Alpha 0.99
	Scale 0.05
	DamageType "IncreasedRange" //So people won't obliterate themselves while using it.
	//I can't figure for life how the pointers are set up (if they are at all)
	//in this thing. And it works like a good DM nerf, anyway.
	States
	{
	Spawn:
		TNT1 A 1
	Looplet:
		TNT1 A 0 A_SpawnItemEx("Tormentor_Fire",random(5,-5),random(5,-5),random(5,-5),frandom(0.3,0.2),frandom(0.3,0.2),frandom(0.3,0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("Tormentor_Smoke2",random(5,-5),random(5,-5),random(5,-5),frandom(0.1,0.2),frandom(0.1,0.2),frandom(0.1,0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
	Looplo:
		"####" "#" 0 A_SetScale(ScaleX+0.01,ScaleX)
		"####" "#" 1 Bright A_FadeOut(0.075)
		Loop
	}
}

Actor Tormentor_Fire
{
	+NoInteraction
	+ForceXYBillboard
	+NOTIMEFREEZE
	Alpha 0.65
	RenderStyle Add
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(255, "SpriteA", "SpriteB", "SpriteC", "SpriteD",
								 "SpriteE", "SpriteF", "SpriteG", "SpriteH")
		SpriteA:
			SNCF A 0 A_Jump(255, "FadeIn")
			Goto SpriteA
		SpriteB:
			SNCF B 0 A_Jump(255, "FadeIn")
			Goto SpriteB
		SpriteC:
			SNCF C 0 A_Jump(255, "FadeIn")
			Goto SpriteC
		SpriteD:
			SNCF D 0 A_Jump(255, "FadeIn")
			Goto SpriteD
		SpriteE:
			SNCF E 0 A_Jump(255, "FadeIn")
			Goto SpriteE
		SpriteF:
			SNCF F 0 A_Jump(255, "FadeIn")
			Goto SpriteF
		SpriteG:
			SNCF G 0 A_Jump(255, "FadeIn")
			Goto SpriteG
		SpriteH:
			SNCF H 0 A_Jump(255, "FadeIn")
			Goto SpriteH
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(0.25, 0.2))
			Goto Idle
		Idle:
			"####" "#" 2 Bright A_Jump(190, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_FadeOut(0.035)
			"####" "#" 0 A_ScaleVelocity(FRandom(1.01, 1.03))
			"####" "#" 0 A_SetScale(ScaleX - FRandom(0.001, 0.003))
			"####" "#" 0 A_JumpIf(ScaleX <= 0.0,"NULL")
			Loop

	}
}

Actor Tormentor_Smoke2
{
	+NoInteraction
	+ForceXYBillboard
	+NOTIMEFREEZE
	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.045, 0.055))
			Goto RealFadeIn
		RealFadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.01, 0.03))
			"####" "#" 0 A_JumpIf(Alpha >= 0.35, "Idle")
			Loop
		Idle:
			"####" "#" 5 A_Jump(200, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(FRandom(0.01,0.02))
			"####" "#" 0 A_ScaleVelocity(0.96)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.005, 0.002))
			Loop
	}
}