Actor HQShotSparks
{
	+NOINTERACTION
	-SPRITEFLIP
	+NOBLOCKMAP
	+NOCLIP
	+THRUACTORS
	+FORCEXYBILLBOARD
	RenderStyle Add
	Alpha 0.9
	Scale 0.9
	States
	{
		Spawn:
		    HQSP B 0 
			HQSP B 0 A_ChangeFlag("SPRITEFLIP", random(0,1))
			HQSP B 0 A_Jump(256, "Shot1","Shot2","Shot3")
		Shot1:
		    HQSP A 1 BRIGHT
			TNT1 A 0 A_SpawnItem("HQShotSparks2")
		    HQSP AAAAAAAAA 1 BRIGHT { A_FadeOut(0.1); A_SetScale(ScaleX - 0.1); }
			Stop
		Shot2:
		    HQSP B 1 BRIGHT
			TNT1 A 0 A_SpawnItem("HQShotSparks2")
		    HQSP BBBBBBBBB 1 BRIGHT { A_FadeOut(0.09); A_SetScale(ScaleX - 0.1); }
			Stop
		Shot3:
		    HQSP C 1 BRIGHT
			TNT1 A 0 A_SpawnItem("HQShotSparks2")
		    HQSP CCCCCCCCC 1 BRIGHT { A_FadeOut(0.09); A_SetScale(ScaleX - 0.1); }
			Stop
	}
}


Actor HQShotSparks2
{
	+NOINTERACTION
	-SPRITEFLIP
	+NOBLOCKMAP
	+NOCLIP
	+THRUACTORS
	+FORCEXYBILLBOARD
	RenderStyle Add
	Alpha 0.9
	Scale 0.9
	States
	{
		Spawn:
		    HQSP B 0 
			HQSP B 0 A_ChangeFlag("SPRITEFLIP", random(0,1))
	        FXHQ BCDEFGHIJKLM 1 BRIGHT
			Stop
	}
}

Actor HQTaserSparks
{
	+NOINTERACTION
	-SPRITEFLIP
	+NOBLOCKMAP
	+NOCLIP
	+THRUACTORS
	+FORCEXYBILLBOARD
	RenderStyle Add
	Alpha 0.9
	Scale 0.05
	States
	{
		Spawn:
		    TSRX A 0 
			TSRX A 0 A_ChangeFlag("SPRITEFLIP", random(0,1))
		    TSRX A 1 BRIGHT
			TNT1 A 0 A_SpawnItem("HQShotSparks2")
		    TSRX BCCDDEE 1 BRIGHT { A_FadeOut(0.05); A_SetScale(ScaleX + 0.1); }
			Stop
	}
}


ACTOR DisasterShotSmoke
{
	+NOGRAVITY
	+NOBLOCKMAP
	+DOOMBOUNCE
	+FLOORCLIP
	+FORCEXYBILLBOARD
	+CLIENTSIDEONLY
	+NOINTERACTION
	+DONTSPLASH
	+notimefreeze
	-SPRITEFLIP
	+ROLLSPRITE
	+INTERPOLATEANGLES
	+MISSILE
	RenderStyle Add
	Scale  0.300
	Alpha  0.400
	Radius 0
	Height 0
	Speed  1
	States
	{
    Spawn:
		NULL A 1 A_SetTranslucent(0.30)
        SMKN A 1 A_ChangeFlag("SPRITEFLIP", random(0,1))
		SMKN BCDEFGHIJKLMNOPQR 2 { A_FadeOut(0.05,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE); }
		TNT1 A 0
		Stop
    }
}

ACTOR ShotgunSmoke : DisasterShotSmoke
{
	Scale  0.500
	Alpha  0.500
	States
	{
    Spawn:
		NULL A 1 A_SetTranslucent(0.30)
        SMKN A 1 A_ChangeFlag("SPRITEFLIP", random(0,1))
		SMKN BCDEFGHIJKLMNOPQR 2 { A_FadeOut(0.05,1); A_SetScale(ScaleX+0.015,ScaleY+0.015); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE); }
		TNT1 A 0
		Stop
    }
}

ACTOR CasingsSmoke : DisasterShotSmoke
{
	Scale 0.05
	Alpha	0.400
	Radius	0
	Height	0
	Speed	0
	+notimefreeze
}

ACTOR CigSmoke : DisasterShotSmoke
{
	Speed	5
	Scale 0.5
	States
	{
    Spawn:
	    NULL A 7
        SMKN A 1 A_ChangeFlag("SPRITEFLIP", random(0,1))
		SMKN BCDEFGHIJKLMNOPQR 2 { A_FadeOut(0.05,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE); }
		TNT1 A 0
		Stop
    }
}

ACTOR FGTrailSmoke : DisasterShotSmoke
{
	Speed	5
	Scale 0.5
    Alpha 0.95
	States
	{
    Spawn:
		NULL A 1 A_SetTranslucent(0.30)
        FGKN A 1 A_ChangeFlag("SPRITEFLIP", random(0,1))
		FGKN BCDEFGHIJKLMNOPQR 2 { A_FadeOut(0.05,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE); }
		TNT1 A 0
		Stop
    }
}

ACTOR FGImpactSmoke : DisasterShotSmoke
{
	Speed	5
	Scale 1.2
	States
	{
    Spawn:
		NULL A 1 A_SetTranslucent(0.30)
        FGKN A 1 A_ChangeFlag("SPRITEFLIP", random(0,1))
		FGKN BCDEFGHIJKLMNOPQR 2 { A_FadeOut(0.05,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE); }
		TNT1 A 0
		Stop
    }
}

ACTOR FGImpactSmoke2 : DisasterShotSmoke
{
	Speed	2
	Scale 1.2
	States
	{
    Spawn:
		NULL A 1 A_SetTranslucent(0.30)
        FGKN A 1 A_ChangeFlag("SPRITEFLIP", random(0,1))
		FGKN BCDEFGHIJKLMNOPQR 2 { A_FadeOut(0.03,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE); }
		TNT1 A 0
		Stop
    }
}

ACTOR FGTrailSmoke2 : DisasterShotSmoke
{
	Speed	5
	Scale 0.5
    Alpha 0.45
	States
	{
    Spawn:
		NULL A 1 A_SetTranslucent(0.30)
        FGKN A 1 A_ChangeFlag("SPRITEFLIP", random(0,1))
		FGKN BCDEFGHIJKLMNOPQR 2 { A_FadeOut(0.05,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE); }
		TNT1 A 0
		Stop
    }
}

ACTOR ArisakaSmoke : DisasterShotSmoke
{
	Scale 0.05
	Alpha	0.3
	Radius	0
	Height	0
	Speed	0
	+notimefreeze
	States
	{
    Spawn:
		NULL A 1 A_SetTranslucent(0.25)
        Stop
	}
}

ACTOR ShotSpawn
{
   Speed 20
   PROJECTILE
   +NOCLIP
   +dontsplash   
   +notimefreeze
   States
   {
   Spawn:
      TNT1 A 1
      TNT1 B 1 A_CustomMissile("DisasterShotSmoke",2,0,0,2,random(10,20))
      Stop
   }
}

ACTOR DisasterPuff: bulletpuff
{
    +NOBLOCKMAP
    +NOGRAVITY
    +ALLOWPARTICLES
    +RANDOMIZE
    +HITTRACER
    +FLOORCLIP
    +FORCEXYBILLBOARD
    +PUFFONACTORS
	renderstyle add
	Alpha 0.95
	VSpeed 0
	Mass 0
	Scale 0.55
	Decal "DisasterBulletChip"
	States
	{
	Spawn:
		TNT1 A 0
	Death:
	XDeath:
		TNT1 A 0 A_CheckFlag("NOBLOOD","ObjectTarget",AAPTR_TRACER)
		TNT1 A 0 A_Jump(256,"EnemyTarget")
		Goto EnemyTarget
	Crash:
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"ObjectTarget")
		Goto ObjectTarget
	EnemyTarget:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("DisasterShotSmoke")
		TNT1 A 0 A_CheckFlag("NOBLOOD","ObjectTarget",AAPTR_TRACER)
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET,AAPTR_TARGET,AAPTR_NULL)
		TNT1 A 0 A_ChangeFlag("THRUACTORS",false)
		TNT1 A 0 A_ChangeFlag("NOINTERACTION",false)
		TNT1 A 1 A_PlaySound("BLTFLESH",CHAN_BODY,0.75)
		Stop
	ObjectTarget:
		TNT1 A 0 A_SpawnItem("HQShotSparks")
		TNT1 A 0 A_RearrangePointers(AAPTR_TARGET,AAPTR_TARGET,AAPTR_NULL)
		TNT1 A 0 A_ChangeFlag("THRUACTORS",false)
		TNT1 A 0 A_ChangeFlag("NOINTERACTION",false)
		TNT1 A 0 A_PlaySound("Casing/Ricochet",CHAN_AUTO,0.75)
		Goto Puff
	Puff:
		PING A 0
		PING A 0 A_Jump(156,2)
		PING A 0 A_PlaySound("Casing/Ricochet",CHAN_BODY,0.5)
		PING A 0 A_Jump(92, "Altdeath","AltDeath2")
		PING A 1 bright A_Jump(128,"Puffmirrored")
		PING B 1 Bright
		PING C 2
		PING CDDD 1 A_Fadeout(0.05)
		stop
	PuffMirrored:
		PING E 1 bright 
		TNT1 A 0 A_SpawnItem("DisasterShotSmoke")
		PING F 1 Bright
		PING G 2
		PING GHHH 1 A_Fadeout(0.05)
		stop
	Altdeath:
		PING A 1 bright A_Jump(96, "puffmirrored2")
		TNT1 A 0 A_SpawnItem("DisasterShotSmoke")
		PIN1 BC 3 bright
		PIN1 D 3 bright
		Stop
	PuffMirrored2:
		PIN1 E 1 bright
		TNT1 A 0 A_SpawnItem("DisasterShotSmoke")
		PIN1 FG 3 bright
		PIN1 H 3 bright
		Stop
	Altdeath2:
		PIN2 A 1 bright A_SetScale(0.95)
		PIN2 BC 1 bright
		PIN2 DE 2 bright
		PIN2 FG 3
		PIN2 H 3
		Stop
	}
}

ACTOR DisasterGiblessPuff : DisasterPuff
{
    +NOEXTREMEDEATH
	DamageType "Bullet"
}

ACTOR DisasterShotgunPuff: DisasterGiblessPuff
{
ProjectileKickback 300
DamageType "Shotgun"
}

ACTOR DisasterKnockbackPuff : DisasterGiblessPuff
{
	ProjectileKickback 500
	DamageType "Bullet"
}

 ACTOR BatHit
{
  +NOEXTREMEDEATH
  +CLIENTSIDEONLY
  +PUFFGETSOWNER
  +HITTRACER
  +PUFFONACTORS
  +THRUACTORS
  +FORCEPAIN
  RenderStyle Add
  ProjectileKickback 400
  Alpha 1
  Radius 1
  Height 1
  Scale 0.55
  Mass 5
  DamageType "Bat"
  States
  {
  Spawn:
  XDeath:
  Melee:
    TNT1 A 0 A_CheckFlag("OLDRADIUSDMG","Crash",AAPTR_TRACER)
 	TNT1 A 0 A_CheckFlag("NOBLOOD","Crash",AAPTR_TRACER)
    TNT1 A 0 A_Playsound ("BATHIT",CHAN_AUTO,1.0)
 	TNT1 A 0 A_CheckFlag("NOTAUTOAIMED","StopDeath",AAPTR_TRACER)
	TNT1 A 0 A_GiveInventory ("KickThrust", 1, AAPTR_TRACER)
	Stop
	StopDeath:
	TNT1 A 0
	Stop
  Crash:
    TNT1 A 0 A_Playsound ("BATMIS",CHAN_AUTO,1.0)
    TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)	stop
	Stop
  }
}

ACTOR KickHit 
{
  +CLIENTSIDEONLY
  +PUFFGETSOWNER
  +HITTRACER
  +PUFFONACTORS
  +THRUACTORS
  +FORCEPAIN
  RenderStyle Add
  ProjectileKickback 400
  Alpha 1
  Radius 1
  Height 1
  Scale 0.55
  Mass 5
  DamageType "Kick"
  States
  {
  Spawn:
  XDeath:
  Melee:
    TNT1 A 0 A_CheckFlag("OLDRADIUSDMG","Crash",AAPTR_TRACER)
 	TNT1 A 0 A_CheckFlag("NOBLOOD","Crash",AAPTR_TRACER)
    TNT1 A 0 A_Playsound ("KickHitThing",CHAN_AUTO,1.0)
 	TNT1 A 0 A_CheckFlag("NOTAUTOAIMED","StopDeath",AAPTR_TRACER)
	TNT1 A 0 A_GiveInventory ("KickThrust", 1, AAPTR_TRACER)
	Stop
	StopDeath:
	TNT1 A 0
	Stop
  Crash:
    TNT1 A 0 A_Playsound ("KickHitWall",CHAN_AUTO,1.0)
    TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)	stop
	Stop
  }
}

ACTOR KickThrust : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Pickup:
    TNT1 A 0 A_CheckFlag("SPAWNCEILING","Failure")
    TNT1 A 0 ThrustThingZ (0, 20, 0, 0)
	TNT1 A 0 ThrustThing(angle*256/360+128, 5, 0, 0)
    Stop
	Failure:
	TNT1 A 0
	Fail
  }
}

ACTOR MalletThrust : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Pickup:
    TNT1 A 0 A_CheckFlag("SPAWNCEILING","Failure")
    TNT1 A 0 ThrustThingZ (0, 20, 0, 0)
	TNT1 A 0 ThrustThing(angle*256/360+128, 5, 0, 0)
    Stop
	Failure:
	TNT1 A 0
	Fail
  }
}

ACTOR FlyingKickHit 
{
  +CLIENTSIDEONLY
  +PUFFGETSOWNER
  +HITTRACER
  +PUFFONACTORS
  +THRUACTORS
  +FORCEPAIN
  RenderStyle Add
  ProjectileKickback 400
  Alpha 1
  Radius 1
  Height 1
  Scale 0.55
  Mass 5
  DamageType "Kick"
  States
  {
  Spawn:
  XDeath:
  Melee:
    TNT1 A 0 A_CheckFlag("OLDRADIUSDMG","Crash",AAPTR_TRACER)
 	TNT1 A 0 A_CheckFlag("NOBLOOD","Crash",AAPTR_TRACER)
    TNT1 A 0 A_Playsound ("KickHitThing",CHAN_AUTO,1.0)
 	TNT1 A 0 A_CheckFlag("NOTAUTOAIMED","StopDeath",AAPTR_TRACER)
	TNT1 A 0 A_GiveInventory ("FlyingKickThrust", 1, AAPTR_TRACER)
	Stop
	StopDeath:
	TNT1 A 0
	Stop
  Crash:
    TNT1 A 0 A_CheckFloor("CrashStop")
    TNT1 A 0 A_Playsound ("KickHitWall",CHAN_AUTO,1.0)
	TNT1 A 0 A_GiveInventory ("FlyingKickThrustPlayer", 1, AAPTR_TARGET)
    TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
	Stop
   CrashStop:
    TNT1 A 0 A_Playsound ("KickHitWall",CHAN_AUTO,1.0)
    TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
    Stop
  }
}

ACTOR FlyingKickThrust : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Pickup:
    TNT1 A 0 A_CheckFlag("SPAWNCEILING","Failure")
    TNT1 A 0 ThrustThingZ (0, 20, 0, 0)
	TNT1 A 0 ThrustThing(angle*256/360+128, 8, 0, 0)
    Stop
	Failure:
	TNT1 A 0
	Fail
  }
}

ACTOR FlyingKickThrustPlayer : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Pickup:
    TNT1 A 0 ThrustThingZ (0, 25, 0, 0)
	TNT1 A 0 ThrustThing(angle*256/360+128, 5, 0, 0)
    Stop
  }
}

ACTOR SlidingKickHit 
{
  +CLIENTSIDEONLY
  +NOEXTREMEDEATH
  +PUFFGETSOWNER
  +HITTRACER
  +PUFFONACTORS
  +THRUACTORS
  +FORCEPAIN
  RenderStyle Add
  ProjectileKickback 400
  Alpha 1
  Radius 1
  Height 1
  Scale 0.55
  Mass 5
  DamageType "Slide"
  States
  {
  Spawn:
    TNT1 A 0
	Stop
  Death:
   XDeath:
    TNT1 A 0 A_CheckFlag("OLDRADIUSDMG","Crash",AAPTR_TRACER)
 	TNT1 A 0 A_CheckFlag("NOBLOOD","Crash",AAPTR_TRACER)
    TNT1 A 0 A_Playsound ("KickHitThing",CHAN_AUTO,1.0)
 	TNT1 A 0 A_CheckFlag("NOTAUTOAIMED","StopDeath",AAPTR_TRACER)
	TNT1 A 0 A_GiveInventory ("SlidingKickThrust", 1, AAPTR_TRACER)
	Stop
	StopDeath:
	TNT1 A 0
	Stop
  Crash:
	TNT1 A 1 A_CheckFloor("CrashStop")
    TNT1 A 0 A_Playsound ("KickHitWall",CHAN_AUTO,1.0)
	TNT1 A 0 A_GiveInventory("SlideStop", 1, AAPTR_TARGET)
    TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
	Stop
   CrashStop:
    TNT1 A 1
    Stop
  }
}

ACTOR SlidingKickThrust : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Pickup:
    TNT1 A 0 A_CheckFlag("SPAWNCEILING","Failure")
    TNT1 A 0 ThrustThingZ (0, 20, 0, 0)
	TNT1 A 0 ThrustThing(angle*256/360+128, -10, 0, 0)
    Stop
	Failure:
	TNT1 A 0
	Fail
  }
}

Actor TaserFX
{
	Height 1
	Radius 1
	RenderStyle Add
	+NOINTERACTION
	-TELESTOMP
	+NOTELEPORT
	+ClientSideOnly
	States
	{
		Spawn:
			TNT1 A 0 A_Jump(128, "Spawn2")
		SpawnNormal:
			TNT1 A 0 A_PlaySound("TeslFX", CHAN_BODY)
			TSFX AABBCCDDEEFF 1 Bright A_FadeOut(0.07)
		Loop
		Spawn2:
			TNT1 A 0 A_PlaySound("TeslFX", CHAN_BODY)
			TSFX GGHHIIJJKKLL 1 Bright A_FadeOut(0.07)
		Loop
	}
}

actor TaserDebris
{
  health 10
  Scale 0.35
  +NOINTERACTION
  +CLIENTSIDEONLY
  FloatSpeed 1
  Speed 2
  RENDERSTYLE Translucent
  alpha 0.75
  VSpeed 1
  states
  {
  Spawn:
  	ZAPR A 0 
	ZAPR A 0 A_Jump(128,"ZapB")
  Zap:
	ZAPR A 0 A_Jump(128,1,2,3,4,5,6)
    TSFX AABBCCCDDEEFFAAABBBCCCCDDDDEEEFFF 1 BRIGHT A_FadeOut(0.025)
    Loop
  ZapB:
	ZAPR A 0 A_Jump(128,1,2,3,4,5,6)
    TSFX GGGHHHIIIIJJJKKKKLLLGGHHIIIJJKKLL 1 BRIGHT A_FadeOut(0.025)
	Loop
  }
}

ACTOR TaserSpawn
{
   Speed 20
   PROJECTILE
   +NOCLIP
   +dontsplash   
  +NOTIMEFREEZE
   States
   {
   Spawn:
      TNT1 A 2
      TNT1 A 1 A_CustomMissile("TaserSmoke",2,0,0,2,random(10,20))
      Stop
   }
}

ACTOR TaserSmoke
{
  +NOBLOCKMAP
  +NOGRAVITY
  +ALLOWPARTICLES
  +RANDOMIZE
  +NOTIMEFREEZE
  RenderStyle Translucent
  Scale 0.5
  Alpha 8.5
  Mass 5
  States
  {
  Spawn:
	TNT1 AAAAA 0 A_SpawnItemEx("TaserFX",random(-15,15),random(-15,15),random(-15,15),random(-1,1),random(-3,3),random(0,1))
	ZAP7 AAAAA 0 A_SpawnItemEx("TaserDebris",random(-15,15),random(-15,15),random(-15,15),random(-1,1),random(-3,3),random(0,1))
    Stop
  }
}

ACTOR TaserPuff
{
    Radius 5
    Height 1
    Damagetype "Electro"
    Renderstyle Add
	Scale 0.40
    Damage 0
    Projectile
    Var Int User_TaserShock;
    +NOGRAVITY
    +DontSplash
    +ForceRadiusDmg
    +DontFall
    +FORCEPAIN
    +CAUSEPAIN
    +DONTTHRUST
    +PUFFONACTORS
    +HITTRACER
    +PUFFGETSOWNER
    +BLOODLESSIMPACT
    States
    {
    Spawn:
    TNT1 A 1
    Stop
        Death:
    	TNT1 A 0 A_CheckFlag("ISMONSTER","XDeath",AAPTR_TRACER)
	    Goto Crash
        XDeath:
        TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
    	TNT1 A 0 A_GiveInventory ("KickThrust", 1, AAPTR_TRACER)
        TNT1 A 0 A_playsound("SLDHIT",0)
    	TNT1 A 0 A_CheckFlag("ISMONSTER","XDeathLoop",AAPTR_TRACER)
	    Goto CrashStop
	    XDeathLoop:
	    TNT1 A 0 A_JumpIf((User_TaserShock == 100),"CrashStop")
        TNT1 A 1 		
		{ 
		A_warp(AAPTR_TRACER,0,0,32,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE);
		A_SpawnItemEx("TaserDebris",random(-15,15),random(-15,15),random(-15,15),random(-1,1),random(-3,3),random(0,1));
        A_SetUserVar("User_TaserShock",User_TaserShock+1);
		Return A_JumpIfHealthLower (1, "CrashStop", AAPTR_TRACER);
		}
    	TNT1 A 0 A_CheckFlag("ISMONSTER","XDeathLoop",AAPTR_TRACER)
	    Goto CrashStop
        Crash:
        TNT1 A 0 A_playsound("SLDMIS",0)
        TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
        TNT1 AAAAA 1 A_SpawnItemEx("TaserDebris",frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),random(-3,3),random(0,1))
        Stop
		CrashStop:
		TNT1 A 0
		Stop
}
}

ACTOR TaserPuff2
{
    Radius 5
    Height 1
    Damagetype "Electro"
    Renderstyle Add
	Scale 0.40
    Damage 0
    Projectile
    Var Int User_TaserShock;
    +NOGRAVITY
    +DontSplash
    +ForceRadiusDmg
    +DontFall
    +FORCEPAIN
    +CAUSEPAIN
    +DONTTHRUST
    +PUFFONACTORS
    +HITTRACER
    +PUFFGETSOWNER
    +BLOODLESSIMPACT
    States
    {
  Death:
	TNT1 A 0
	Stop
  Spawn:
    TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
  XDeath:
    TNT1 A 0 A_playsound("SLDHIT",0)
    TNT1 A 0 A_CheckFlag("ISMONSTER","XDeathLoop",AAPTR_TRACER)
	Goto CrashStop
	XDeathLoop:
	TNT1 A 0 A_JumpIf((User_TaserShock == 100),"CrashStop")
    TNT1 A 1 		
    { 
	A_warp(AAPTR_TRACER,0,0,32,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE);
	A_SpawnItemEx("TaserDebris",random(-15,15),random(-15,15),random(-15,15),random(-1,1),random(-3,3),random(0,1));
    A_SetUserVar("User_TaserShock",User_TaserShock+1);
	Return A_JumpIfHealthLower (1, "CrashStop", AAPTR_TRACER);
	}
    TNT1 A 0 A_CheckFlag("ISMONSTER","XDeathLoop",AAPTR_TRACER)
    Goto CrashStop
	CrashStop:
	TNT1 A 0
	Stop
}
}

actor ShockGiber : CustomInventory
{
  states
  {
  Pickup:
    TNT1 A 0 A_JumpIfInventory("ShockGiber",1,"FailPickup")
    TNT1 A 0 A_SpawnItemEX("TaserPuff2",0,0,0,0,0,0,0,SXF_SETTRACER|SXF_TRANSFERPOINTERS)
    stop
  FailPickup:
    TNT1 A 0
	fail
  }
}

ACTOR SledgeHammerPuff
{
    Radius 5
    Height 1
    Damagetype "Kick"
    Renderstyle Add
	Scale 0.40
    Damage 0
    Projectile
    +NOGRAVITY
    +DontSplash
    +ForceRadiusDmg
    +DontFall
    +FORCEPAIN
    +CAUSEPAIN
    +DONTTHRUST
    +PUFFONACTORS
    +HITTRACER
    +PUFFGETSOWNER
    +BLOODLESSIMPACT
    States
    {
    Spawn:
    TNT1 A 1
    Stop
        Death:
        XDeath:
        TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
    	TNT1 A 0 A_GiveInventory ("KickThrust", 1, AAPTR_TRACER)
        TNT1 A 0 A_playsound("SLEHIT",0)
        Stop
        Crash:
        TNT1 A 0 A_playsound("SLEMIS",0)
        TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
        Stop
}
}

ACTOR MalletPuff
{
    Radius 5
    Height 1
    Damagetype "ExtremePunches"
    Renderstyle Add
	Scale 0.40
    Damage 0
    Projectile
    +NOGRAVITY
    +DontSplash
    +ForceRadiusDmg
    +DontFall
    +FORCEPAIN
    +CAUSEPAIN
    +DONTTHRUST
    +PUFFONACTORS
	+PIERCEARMOR
	+FORCERADIUSDMG
    +HITTRACER
    +PUFFGETSOWNER
    +BLOODLESSIMPACT
	+EXTREMEDEATH
    States
    {
    Spawn:
    TNT1 A 1
    Stop
        Death:
        Crash:
		TNT1 A 1
		TNT1 A 0 A_JumpIfInventory("FuckYouLeatherMan",1,"TapOut",AAPTR_TARGET)
        TNT1 A 0 A_playsound("MALTMIS",0)
        TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
        Stop
        XDeath:
    	TNT1 A 0 A_GiveInventory ("MalletThrust", 1, AAPTR_TRACER)
	    TNT1 A 1 A_Explode(10,30,0)
		TNT1 A 0 A_JumpIfInventory("FuckYouLeatherMan",1,"TapOut",AAPTR_TARGET)
	    TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
        TNT1 A 0 A_playsound("MALTHIT",0)
	    TNT1 A 0 A_GiveInventory ("FuckYouLeatherMan", 1, AAPTR_TARGET)
        Stop
		TapOut:
		TNT1 A 0
		Stop
}
}

ACTOR MalletPuff2 : MalletPuff
{
    States
    {
    Spawn:
    TNT1 A 1
    Stop
        Death:
        Crash:
        TNT1 A 0 A_playsound("MALTMIS",0)
		TNT1 A 1
        TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
        Stop
        XDeath:
    	TNT1 A 0 A_GiveInventory ("MalletThrust", 1, AAPTR_TRACER)
	    TNT1 A 1 A_Explode(20,50,0)
		TNT1 AAAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
        TNT1 A 0 A_playsound("MALTHIT",0)
        Stop
}
}

ACTOR MalletPuff3 : MalletPuff
{
    States
    {
    Spawn:
    TNT1 A 1
    Stop
        Death:
        Crash:
		TNT1 A 1
        Stop
        XDeath:
        TNT1 A 0
    	TNT1 A 0 A_GiveInventory ("MalletThrust", 1, AAPTR_TRACER)
	    TNT1 A 1 A_Explode(20,50,0)
		TNT1 A 0 A_JumpIfInventory("FuckYouLeatherMan",1,"TapOut",AAPTR_TARGET)
		TNT1 AAAA 0 A_SpawnItemEx("DisasterShotSmoke",0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-0.5,0.5),0,160)
        TNT1 A 0 A_playsound("MALTHIT",0)
		TNT1 A 0 A_GiveInventory ("FuckYouLeatherMan", 1, AAPTR_TARGET)
        Stop
}
}