freeslot("sfx_poww","S_PLAY_PARRY1","S_PLAY_PARRY2","S_PLAY_PARRY3","SPR2_PAR1","SPR2_PAR2","SPR2_PAR3","S_PARRYEFFECT","SPR_PARY")
sfxinfo[sfx_poww].caption = "POWW!"

states[S_PLAY_PARRY1] = {
	sprite = SPR_PLAY,
	frame = SPR2_PAR1|FF_ANIMATE,
	tics = 28,
	var1 = 2,
	var2 = 2,
	nextstate = S_PLAY_STND
}

states[S_PLAY_PARRY2] = {
	sprite = SPR_PLAY,
	frame = SPR2_PAR2|FF_ANIMATE,
	tics = 28,
	var1 = 2,
	var2 = 2,
	nextstate = S_PLAY_STND
}

states[S_PLAY_PARRY3] = {
	sprite = SPR_PLAY,
	frame = SPR2_PAR3|FF_ANIMATE,
	tics = 28,
	var1 = 2,
	var2 = 2,
	nextstate = S_PLAY_STND
}

states[S_PARRYEFFECT] = {
	sprite = SPR_PARY,
	frame = FF_ANIMATE|FF_FULLBRIGHT|A,
	tics = 12,
	var1 = 5,
	var2 = 2,
	nextstate = S_DEATHSTATE
}

addHook("ShouldDamage", function(target, inflictor, source, damage, damagetype)
    if target.player and target.player.valid and target.skin == "prpeppino"
	and inflictor and inflictor.valid
    and target.player.taunting
    and (inflictor.flags & MF_ENEMY or inflictor.flags & MF_BOSS or inflictor.flags & MF_MISSILE or inflictor.flags & MF_PAIN or damagetype & DMG_SPIKE or damagetype & DMG_ELECTRIC)
		target.player.powers[pw_flashing] = 15
		P_DamageMobj(inflictor, target, target, DMG_WATER)
		target.player.taunting = false
		target.player.tauntingtimer = 0
		target.player.score = $+500
		S_StartSound(target, sfx_poww)
		P_InstaThrust(target, target.angle, -7*FRACUNIT)
		local parryeffect = P_SpawnMobj(target.x,target.y,target.z,MT_THOK)
		parryeffect.scale = target.scale-FRACUNIT/3
		parryeffect.state = S_PARRYEFFECT
		P_RemoveMobj(target.player.tauntbubble)
		target.player.tauntbubble = nil
		target.state = L_Choose(S_PLAY_PARRY1, S_PLAY_PARRY2, S_PLAY_PARRY3)
		return false
    end
end, MT_PLAYER)

addHook("PlayerThink", function(p)
	if (p.mo.state == S_PLAY_PARRY1 or p.mo.state == S_PLAY_PARRY2 or p.mo.state == S_PLAY_PARRY3)
		p.powers[pw_flashing] = 15
		p.powers[pw_nocontrol] = 1500000000000000000000
	elseif (p.mo.state ~= S_PLAY_PARRY1 or p.mo.state ~= S_PLAY_PARRY2 or p.mo.state ~= S_PLAY_PARRY3)
	and p.mo.state ~= S_PLAY_PP_SLIDE
	and not p.taunting
		p.powers[pw_nocontrol] = 0
	end
end)