//Punchin'

ACTOR PawnchPuff : PunchPuff
{ 
   SeeSound ""
   AttackSound ""
   ActiveSound ""
   DamageType CloseCombat
   Decal PunchStamp
   ProjectileKickback 250
   +NOEXTREMEDEATH
   //+BLOODLESSIMPACT //If I don't get that visual input that shit's being beaten hard, it's not funny.
   +PUFFGETSOWNER
   VSpeed 0
   States
   {
  Spawn:
    TNT1 A 0 NoDelay A_AlertMonsters(64)
    TNT1 A 0 A_Jump(128,"AltSound")
    TNT1 A 0 A_PlaySound("Punch/Hit",5,0.8)
    Goto YESH
  AltSound:
    TNT1 A 0 A_PlaySound("Punch/Hit",0,0.8)
  YESH:
	//TNT1 A 0 A_SpawnItemEx("PunchPuff_Shock",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    TNT1 A 15 A_Quake(1,8,0,164,"none")
    stop
  Crash:
    TNT1 A 0 A_AlertMonsters(64)
    TNT1 A 0 A_PlaySound("Punch/Hit",0,1.0)
    TNT1 A 15 A_Quake(1,6,0,164,"none")
    stop
  XDeath:
    TNT1 A 0 A_AlertMonsters(64)
    TNT1 A 0 A_PlaySound("Punch/Flesh",0,1.0)
    TNT1 A 15 A_Quake(1,6,0,164,"none")
    stop
   }
}

ACTOR PawnchPuff2 : PawnchPuff //Uppercut
{ 
   Decal PunchStamp2
}

ACTOR PawnchPuffLeft : PawnchPuff //Standard Punch
{ 
   Decal PunchStampLeft
}

ACTOR PawnchPuffLeft2 : PawnchPuff //Uppercut
{ 
   Decal PunchStampLeft2
}

ACTOR ScratchPuffLeft : PunchPuff
{ 
   SeeSound ""
   AttackSound ""
   ActiveSound ""
   +NOEXTREMEDEATH
   Decal ClawStampLeft
   VSpeed 0
   States
   {
  Spawn:
    TNT1 A 0 NoDelay A_AlertMonsters(64)
    TNT1 A 0 A_Jump(128,"AltSound")
    TNT1 A 0 A_PlaySound("Claw/Wall",5,0.6)
    Goto YESH
  AltSound:
    TNT1 A 0 A_PlaySound("Claw/Wall",0,0.6)
  YESH:
    TNT1 A 1
    stop

  Crash:
    TNT1 A 0 A_AlertMonsters(64)
    TNT1 A 0 A_Jump(128,"AltSound2")
    TNT1 A 0 A_PlaySound("Claw/Wall",5,0.6)
    Goto YESH2
  AltSound2:
    TNT1 A 0 A_PlaySound("Claw/Wall",0,0.6)
  YESH2:
    TNT1 A 1
    stop

  XDeath:
    TNT1 A 0 A_Jump(128,"AltSound3")
    TNT1 A 0 A_PlaySound("Claw/Hit",5,0.8)
    Goto YESH3
  AltSound3:
    TNT1 A 0 A_PlaySound("Claw/Hit",0,0.8)
  YESH3:
    TNT1 A 1
    stop
   }
}

ACTOR ScratchPuffRight : ScratchPuffLeft
{
   Decal ClawStampRight
} 

Actor PunchPuff_Shock
{
	+NoInteraction
	+ForceXYBillboard
	RenderStyle Add
	Scale 0.025
	States
	{
		Spawn:
			SHCK B 0 NoDelay A_SetScale(ScaleX + FRandom(0.025, 0.035))
			SHCK B 1 Bright A_FadeOut(0.15)
			Loop
	}
}

//Kickin'
ACTOR KickCheck : FastProjectile
{
	Radius 12
	Height 16
	Speed 170
	Projectile
    -BLOODLESSIMPACT
	+DONTREFLECT
	+DONTBLAST
	States
	{
	Spawn:
	TNT1 A 1 
	Stop
	Death:
	TNT1 A 0 A_JumpIfInTargetInventory("KickethFirstContact",1,2)
	TNT1 A 0 A_GiveToTarget("KickethFirstContact",1)
	TNT1 A 0
	Stop
	}
}

ACTOR KickProjectile : FastProjectile
{
	Radius 12
	Height 16
	Speed 170
	Projectile
	ProjectileKickback 1000
	Damage (10*random(1,3))
	DamageType Shoelaces
	Decal BootStamp
    -BLOODLESSIMPACT
	+DONTREFLECT
	+DONTBLAST
	States
	{
	Spawn:
	TNT1 A 1 
	Stop
	Death:
	//TNT1 A 0 A_SpawnItemEx("Kick_Shock",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 A 0 //A_Quake(2,8,0,192,"none")
	TNT1 A 0 A_GiveToTarget("KickethThyHappend",1)
    TNT1 A 0 A_AlertMonsters(128)
	TNT1 A 0 A_Explode((40*random(1,3)),96,0)
	TNT1 A 15 A_PlaySound("Kick/Hit")
	Stop
	}
}

ACTOR KickProjectileLeft : FastProjectile
{
	Radius 12
	Height 16
	Speed 170
	Projectile
	ProjectileKickback 2000 //By the logic of Chuck Norris movies - Roundhouse sends people OFF THE HOOK.
	Damage (10*random(1,3))
	DamageType Shoelaces
	Decal LeftBootStamp
	+DONTREFLECT
	+DONTBLAST
	States
	{
	Spawn:
	TNT1 A 1 
	Stop
	Death:
    TNT1 A 0 A_AlertMonsters(128)
	//TNT1 A 0 A_SpawnItemEx("Kick_Shock",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 A 0 A_Explode((50*random(1,3)),128,0)
	TNT1 A 0 //A_Quake(2,8,0,192,"none")
	TNT1 A 15 A_PlaySound("Kick/Hit")
	Stop
	}
}

ACTOR KickProjectileRight : KickProjectileLeft
{
	Decal RightBootStamp
}

Actor Kick_Shock
{
	+NoInteraction
	+ForceXYBillboard
	RenderStyle Add
	Scale 0.05
	Alpha 0.6
	States
	{
		Spawn:
			SHCK B 0 NoDelay A_SetScale(ScaleX + FRandom(0.025, 0.035))
			SHCK B 1 Bright A_FadeOut(0.1)
			Loop
	}
}

Actor MidasKick_Shock
{
	+NoInteraction
	+ForceXYBillboard
	RenderStyle Add
	Scale 0.05
	Alpha 0.6
	States
	{
		Spawn:
			SHCK C 0 NoDelay A_SetScale(ScaleX + FRandom(0.025, 0.035))
			SHCK C 1 Bright A_FadeOut(0.1)
			Loop
	}
}

//Melee - Berserk edition

ACTOR SuperPawnchPuff : PawnchPuff
{ 
   DamageType SuperCloseCombat
   Decal SuperPunchStamp
   -NOEXTREMEDEATH
   +PUFFONACTORS
   +FORCERADIUSDMG
   +FOILINVUL
   States
   {
  Spawn:
    TNT1 A 0 NoDelay A_AlertMonsters(256)
    TNT1 A 0 A_Jump(128,"AltSound")
    TNT1 A 0 A_PlaySound("SuperPunch/Hit",5,0.8)
    Goto YESH
  AltSound:
    TNT1 A 0 A_PlaySound("SuperPunch/Hit",0,0.8)
  YESH:
	TNT1 A 0 A_SpawnItemEx("SuperPunchPuff_Shock",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("SuperPunchPuff_Impact",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("SuperPunchPuff_Wave",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    TNT1 A 0 A_Explode(20,48,0)
	TNT1 A 15 A_Quake(3,10,0,384,"none")
    stop
  Crash:
    TNT1 A 0
	Goto Spawn
  XDeath:
    TNT1 A 0
	Goto Spawn
   }
}

ACTOR SuperPawnchPuff2 : SuperPawnchPuff //Uppercut
{ 
   Decal SuperPunchStamp2
}

ACTOR SuperPawnchPuffLeft : SuperPawnchPuff //Standard punch
{ 
   Decal SuperPunchStampLeft
}

ACTOR SuperPawnchPuffLeft2 : SuperPawnchPuff //Uppercut
{ 
   Decal SuperPunchStampLeft2
}

Actor SuperPunchPuff_Shock
{
	+NoInteraction
	+ForceXYBillboard
	RenderStyle Add
	Scale 0.015
	States
	{
		Spawn:
			SHCK D 0
			SHCK D 0 A_SetScale(ScaleX + FRandom(0.01, 0.02))
			SHCK D 1 Bright A_FadeOut(0.1)
			Loop
	}
}

Actor SuperPunchPuff_Impact : SuperPunchPuff_Shock
{
	Scale 0.025
	States
	{
		Spawn:
			BLST C 0 NoDelay A_Jump(128,"AltSprite")
			Goto Looplet
		AltSprite:
			BLST D 0
		Looplet:
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.01, 0.015))
			"####" "#" 1 Bright A_FadeOut(0.125)
			Loop
	}
}

Actor SuperPunchPuff_Wave : SuperPunchPuff_Shock
{
	Scale 0.05
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_Jump(256,"SpriteA","SpriteB","SpriteC","SpriteD")
		SpriteA:
			BRWV A 0
			Goto Looplet
		SpriteB:
			BRWV B 0
			Goto Looplet
		SpriteC:
			BRWV C 0
			Goto Looplet
		SpriteD:
			BRWV D 0
			Goto Looplet
		Looplet:
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.01, 0.015))
			"####" "#" 1 Bright A_FadeOut(0.1)
			Loop
		}
}

ACTOR SuperScratchPuffLeft : ScratchPuffLeft
{ 
   DamageType SuperCloseCombat
   Decal SuperClawStampLeft
   +PUFFONACTORS
   +FOILINVUL
   States
   {
  Spawn:
    TNT1 A 0 NoDelay A_AlertMonsters(256)
    TNT1 A 0 A_Jump(128,"AltSound")
    TNT1 A 0 A_PlaySound("Claw/Wall",5,0.6)
    Goto YESH
  AltSound:
    TNT1 A 0 A_PlaySound("Claw/Wall",0,0.6)
  YESH:
    TNT1 A 15
    stop
  Crash:
    TNT1 A 0 A_AlertMonsters(256)
    TNT1 A 0 A_Jump(128,"AltSound2")
    TNT1 A 0 A_PlaySound("Claw/Wall",5,0.6)
    Goto YESH2
  AltSound2:
    TNT1 A 0 A_PlaySound("Claw/Wall",0,0.6)
  YESH2:
    TNT1 A 15
    stop
  XDeath:
    TNT1 A 0 A_Jump(128,"AltSound3")
    TNT1 A 0 A_PlaySound("Claw/Hit",5,0.8)
    Goto YESH3
  AltSound3:
    TNT1 A 0 A_PlaySound("Claw/Hit",0,0.8)
  YESH3:
    TNT1 A 15
    stop
   }
}

ACTOR SuperScratchPuffRight : SuperScratchPuffLeft
{ 
   Decal SuperClawStampRight
}

//Berserk Kickin'

ACTOR SuperKickProjectile : KickProjectile
{
	Damage (10*random(1,3))
	DamageType SuperShoelaces
	Decal SuperBootStamp
    +FORCERADIUSDMG
	+FOILINVUL
	States
	{
	Spawn:
	TNT1 A 1 
	Stop
	Death:
	TNT1 A 0 A_GiveToTarget("KickethThyHappend",1)
    TNT1 A 0 A_AlertMonsters(768)
	TNT1 A 0 A_PlaySound("SuperKick/Hit",0.9)
	TNT1 A 0 A_Explode((40*random(1,3)),128,0)
	TNT1 A 0 A_SpawnItemEx("SuperKick_Shock",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("SuperKick_Impact",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("SuperKick_Wave",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 A 0 A_SpawnItemEx("SuperKick_Gldef",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
    TNT1 A 25 A_Quake(4,25,0,512,"none")
	Stop
	}
}

ACTOR SuperKickProjectileLeft : SuperKickProjectile
{
	Decal SuperLeftBootStamp
}

ACTOR SuperKickProjectileRight : SuperKickProjectileLeft
{
	Decal SuperRightBootStamp
}

Actor SuperKick_Shock :  SuperPunchPuff_Shock
{
	Scale 0.05
	States
	{
		Spawn:
			SHCK D 0 NoDelay A_SetScale(ScaleX + FRandom(0.025, 0.035))
			SHCK D 1 Bright A_FadeOut(0.05)
			Loop
	}
}

Actor SuperKick_Impact : SuperPunchPuff_Shock
{
	Scale 0.05
	States
	{
		Spawn:
			BLST C 0 NoDelay A_Jump(128,"AltSprite")
			Goto Looplet
		AltSprite:
			BLST D 0
		Looplet:
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.03, 0.04))
			"####" "#" 1 Bright A_FadeOut(0.075)
			Loop
	}
}

Actor SuperKick_Wave : SuperPunchPuff_Shock
{
	Scale 0.2
	States
	{
		Spawn:
			TNT1 A 0 NoDelay A_Jump(256,"SpriteA","SpriteB","SpriteC","SpriteD")
		SpriteA:
			BRWV A 0
			Goto Looplet
		SpriteB:
			BRWV B 0
			Goto Looplet
		SpriteC:
			BRWV C 0
			Goto Looplet
		SpriteD:
			BRWV D 0
			Goto Looplet
		Looplet:
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.015, 0.025))
			"####" "#" 1 Bright A_FadeOut(0.05)
			Loop
	}
}

ACTOR SuperKick_Gldef
{
	+NOINTERACTION
	States
	{
	Spawn:
	TNT1 A 35
	Stop
	}
}