freeslot("S_PLAY_PUNCH")

states[S_PLAY_PUNCH] = {
	sprite = SPR_PLAY,
	frame = SPR2_WALK|C,
	tics = -1,
	nextstate = S_NULL
}

//states[S_PLAY_PUNCH] = {SPR_PLAY, SPR2_WALK|B, -1, nil, 0, 0, S_NULL}

local function KUNK(p)
if p.mo.skin == "knuckles" and p.playerstate == PST_LIVE then


if (p.mo.state == S_PLAY_MELEE_FINISH or p.mo.state == S_PLAY_MELEE) then
p.mo.state = S_PLAY_PUNCH
end

if (p.mo.state == S_PLAY_SWIM) then
P_SpawnThokMobj(p)
p.powers[pw_strong] = STR_ANIM|STR_BUST
end

if (p.mo.state == S_PLAY_FALL) then
P_SpawnThokMobj(p)
p.powers[pw_strong] = STR_ANIM|STR_FLOOR|STR_BOUNCE|STR_SPRING
end

if (p.mo.state == S_PLAY_SPRING) then
P_SpawnThokMobj(p)
p.powers[pw_strong] = STR_ANIM|STR_CEILING|STR_UPPER
end

if (p.mo.state == S_PLAY_GLIDE) then
P_SpawnThokMobj(p)
p.pflags = $|PF_GLIDING
if not (p.powers[pw_strong] & STR_WALL) then
p.powers[pw_strong] = $|STR_ANIM|STR_WALL
end

end

if p.mo.state == S_PLAY_PUNCH then
P_SpawnThokMobj(p)
p.powers[pw_strong] = STR_ANIM|STR_SPIKE|STR_PUNCH|STR_WALL
p.speed = 0
end



end
end
addHook("PlayerThink", KUNK)

addHook("PlayerHeight", function(player)
if player.mo.skin == "knuckles" and player.actionstate then
	
	if player.actionstate == state_digging or player.actionstate == state_burrowed then
		return FRACUNIT
	elseif player.mo.height < 5*FRACUNIT
		return skins[plyer.mo.skin].height
	end
	
end
end)