//Skypunch
ACTOR SkypunchLauncher
{
  Radius 1
  Height 1
  Projectile
  +NOINTERACTION
  States
  {
  Spawn:
	//TNT1 AA 0 A_SpawnItemEx("SkypunchSpanner",0,85,0,60,20,0,0,SXF_TRANSFERPOINTERS)
	//TNT1 A 0 A_SpawnItemEx("SkypunchSpanner",0,-85,0,60,-20,0,0,SXF_TRANSFERPOINTERS)
  	TNT1 AA 0 A_SpawnItemEx("SkypunchSpannerForward",0,0,0,60,0,0,0,SXF_TRANSFERPOINTERS)
	Stop
  }
}

ACTOR SkypunchSpanner
{
  Damage 0
  Speed 20
  +MISSILE
  +STEPMISSILE
  +DROPOFF
  +NOEXPLODEFLOOR
  +RIPPER
  +DONTREFLECT
  MaxStepHeight 32
  ReactionTime 3
  States
  {
  Spawn:
	TNT1 AA 0 A_SpawnItemEx("SkypunchWave",0,0,0,60,0,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 7 A_Countdown
	Loop
  Death:  
	stop
  }
}

ACTOR SkypunchSpannerForward : SkypunchSpanner
{
  ReactionTime 1
  States
  {
  Spawn:
	TNT1 AA 0 A_SpawnItemEx("SkypunchWave",0,0,0,60,0,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 7
	stop
  }
}

Actor SkypunchWave
{
  Speed 60
  Radius 11
  Height 8
  Damage 0
  Obituary "%o was launched skyward and died at the hands of %k's magical wave."
  +DONTBLAST
  +RIPPER
  +MISSILE
  +STEPMISSILE
  +DROPOFF
  +NOEXPLODEFLOOR
  +THRUACTORS
  +FORCERADIUSDMG
  +BLOODLESSIMPACT
  -THRUGHOST
  +EXPLODEONWATER
  -NOGRAVITY
  +BLOODLESSIMPACT
  +DONTREFLECT
  MaxStepHeight 36
  Gravity 1.0
  states
  {
  Spawn:
    TNT1 AA 0 A_PlaySound("Skypunch/Loop",5,0.6,1)
    TNT1 A 0 A_RadiusGive("SkypunchItem",96,RGF_MONSTERS,1)
    TNT1 A 0 A_Quake(6,1,0,256,"none")
    TNT1 A 0 A_SpawnItemEx("SkypunchGLDEF") 
    TNT1 A 0 A_SpawnItemEx("SkypunchRingSpawner",random(10,-10),random(10,-10),random(0,15),frandom(0.1,0.15),frandom(0.1,0.15),frandom(0.1,0.25),random(0,359),SXF_CLIENTSIDE,0)
    TNT1 A 1 A_Explode(5,128,0,0)
    Loop
  Crash:
  Death:
    TNT1 A 1 A_StopSound(5)
    stop
  }
}

ACTOR SkypunchRing
{
  +NOINTERACTION
  +NOGRAVITY
  +NOTONAUTOMAP
  Renderstyle Add
  Scale 2
  States
  {
  Spawn:
    SKYR AA 0 A_SetScale(ScaleX-random(0.5,0.25), ScaleY)
  Looplet:
    SKYR A 0 A_JumpIf(ScaleX<=0.0,"NULL")
    SKYR A 0 A_FadeOut(0.05)
    SKYR A 1 A_SetScale(ScaleX-0.1, ScaleY-0.1)
    Loop
  }
}

ACTOR SkypunchRingSpawner
{
  +NOINTERACTION
  +NOGRAVITY
  +NOTONAUTOMAP
  ReactionTime 5
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_Countdown
    TNT1 A 3 A_SpawnItemEx("SkypunchRing",random(15,-15),random(15,-15),random(1,15),frandom(0.5,-0.5),frandom(0.5,-0.5),random(1,10),random(0,359),128,0)
    Loop
  Death:
    TNT1 A 1
    Stop
  }
}

ACTOR SkypunchGLDEF
{
  +NOINTERACTION
  +NOGRAVITY
  +NOTONAUTOMAP
  States
  {
  Spawn:
    TNT1 A 30
    Stop
  }
}

ACTOR SkypunchItem : CustomInventory
{
   Inventory.Amount 0
   +INVENTORY.ALWAYSPICKUP
   +INVENTORY.AUTOACTIVATE
   States
   {
   Spawn:
	TNT1 A -1
	Stop
   Use:
	TNT1 A 0 ACS_NamedExecuteAlways("KD Amazing Levitation")
	TNT1 A 1 A_ChangeVelocity (0, 0, 20.0, CVF_REPLACE)
	Stop
   }
}

ACTOR SkypunchTrigger : Inventory { Inventory.MaxAmount 1 }

ACTOR SkypunchLauncher2
{
  Radius 1
  Height 1
  Projectile
  +NOINTERACTION
  States
  {
  Spawn:
	TNT1 AA 0 A_SpawnItemEx("SkypunchSpanner",0,85,0,60,20,0,0,SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("SkypunchSpanner",0,-85,0,60,-20,0,0,SXF_TRANSFERPOINTERS)
  	TNT1 AA 0 A_SpawnItemEx("SkypunchSpannerForward",0,0,0,60,0,0,0,SXF_TRANSFERPOINTERS)
	Stop
  }
}
