
local function pznopov(v, player, cam)
//POV: you are pizzano
		local povmach4anim = ((leveltime/2) % 4) + 1
		local povmach4 = v.cachePatch( 'PNO_MACH4' .. povmach4anim )
		local playercolor = v.getColormap(player.skin, player.mo.color)
		if player.pizzanoreal
		and cam.chase == false
		and ((player.mo.state == S_PLAY_MACH4PZNO))
		or player.pizzanoreal
		and cam.chase == false
		and player.machxdtimerr >= 350
		and ((player.mo.state == S_PLAY_PZNOMACH3JUMPDIVE)
		or (player.mo.state == S_PLAY_PZNOMACH3JUMP))
		v.drawScaled(210*FRACUNIT, 270*FRACUNIT, 2*FRACUNIT-FRACUNIT/2 , povmach4, V_SNAPTOBOTTOM, playercolor)
	end
		local povmach3anim = ((leveltime/2) % 4) + 1
		local povmach3 = v.cachePatch( 'PNO_PD' .. povmach3anim )
		local playercolor = v.getColormap(player.skin, player.mo.color)
		if player.pizzanoreal
		and cam.chase == false
		and ((player.mo.state == S_PLAY_DASH)
		or (player.mo.state == S_PLAY_WALLCLIMBSPIN_CANCEL_FINISH)
		or (player.mo.state == S_PLAY_MACH3_PAD))
		or player.pizzanoreal
		and cam.chase == false
		and player.machxdtimerr <= 350
		and ((player.mo.state == S_PLAY_PZNOMACH3JUMPDIVE)
		or (player.mo.state == S_PLAY_PZNOMACH3JUMP))
		v.drawScaled(220*FRACUNIT, 270*FRACUNIT, 2*FRACUNIT-FRACUNIT/2 , povmach3, V_SNAPTOBOTTOM, playercolor)
	end
	    if player.pizzanoreal
		and cam.chase == false
		and (player.mo.state == S_PZNO_MACHHIT)
		v.drawScaled(220*FRACUNIT, 290*FRACUNIT-player.ticsformachhit*FRACUNIT , 2*FRACUNIT-FRACUNIT/2 , povmach3, V_SNAPTOBOTTOM, playercolor)
	end
	    if player.pizzanoreal
		and cam.chase == false
		and (player.mo.state == S_PLAY_WALLCLIMBSPIN_CANCEL)
		v.drawScaled(220*FRACUNIT, 370*FRACUNIT-player.ticsforpovanimations*FRACUNIT , 2*FRACUNIT-FRACUNIT/3 , povmach3, V_SNAPTOBOTTOM, playercolor)
	end
	    local povmach2anim = ((leveltime/2) % 5) + 1
		local povmach2 = v.cachePatch( 'PNO_PMACH2' .. povmach2anim )
		local playercolor = v.getColormap(player.skin, player.mo.color)
		if player.pizzanoreal
		and cam.chase == false
		and ((player.mo.state == S_PLAY_RUN)
		or (player.mo.state == S_PLAY_PZNOMACH2JUMPDIVE)
		or (player.mo.state == S_PLAY_PZNOMACH2JUMP)
		or (player.mo.state == S_PLAY_MACHC1))
		v.drawScaled(170*FRACUNIT, 200*FRACUNIT, 1*FRACUNIT, povmach2, V_SNAPTOBOTTOM, playercolor)
	end
	    local povflyanim = ((leveltime/2) % 3) + 1
		local povfly = v.cachePatch( 'PNO_PF' .. povflyanim )
		local playercolor = v.getColormap(player.skin, player.mo.color)
		if player.pizzanoreal
		and cam.chase == false
		and ((player.mo.state == S_PLAY_SUPERJUMP_SIDE)
		or (player.mo.state == S_PLAY_MACH5PZNO))
		v.drawScaled(220*FRACUNIT, 180*FRACUNIT, 2*FRACUNIT, povfly, V_SNAPTOBOTTOM|V_SNAPTORIGHT, playercolor)
	end
		local povkungfu1anim = ((leveltime/2) % 2) + 1
		local povkungfu1 = v.cachePatch( 'PNO_PKUNGFU_1' .. povkungfu1anim )
		local playercolor = v.getColormap(player.skin, player.mo.color)
		if player.pizzanoreal
		and cam.chase == false
		and ((player.mo.state == S_PLAY_AIRKUNGFU2_FINAL))
		v.drawScaled(170*FRACUNIT, 300*FRACUNIT, 1*FRACUNIT, povkungfu1, V_SNAPTOBOTTOM, playercolor)
	end
		local povkungfu2anim = ((leveltime/2) % 2) + 1
		local povkungfu2 = v.cachePatch( 'PNO_PKUNGFU_2' .. povkungfu2anim )
		local playercolor = v.getColormap(player.skin, player.mo.color)
		if player.pizzanoreal
		and cam.chase == false
		and ((player.mo.state == S_PLAY_AIRKUNGFU1_FINAL))
		v.drawScaled(200*FRACUNIT, 310*FRACUNIT, 1*FRACUNIT, povkungfu2, V_SNAPTOBOTTOM, playercolor)
	end
		local povkungfu3anim = ((leveltime/2) % 2) + 1
		local povkungfu3 = v.cachePatch( 'PNO_PKUNGFU_3' .. povkungfu3anim )
		local playercolor = v.getColormap(player.skin, player.mo.color)
		if player.pizzanoreal
		and cam.chase == false
		and ((player.mo.state == S_PLAY_AIRKUNGFU3_FINAL))
		v.drawScaled(170*FRACUNIT, 290*FRACUNIT, 1*FRACUNIT, povkungfu3, V_SNAPTOBOTTOM, playercolor)
	end
	    if player.pizzanoreal
		and cam.chase == false
		and (player.mo.state == S_PLAY_SUPERJUMP_PREPARESIDE)
		v.drawScaled(220*FRACUNIT, 450*FRACUNIT-player.ticsforpovfly*FRACUNIT , 2*FRACUNIT , povfly, V_SNAPTOBOTTOM|V_SNAPTORIGHT, playercolor)
	end
	local povpanicanim = ((leveltime/2) % 3) + 1
		local povpanic = v.cachePatch( 'PNO_PP' .. povpanicanim )
		local playercolor = v.getColormap(player.skin, player.mo.color)
		if player.pizzanoreal
		and cam.chase == false
		and ((player.mo.state == S_PLAY_PANIC)
		or ((PTSR and PTSR.pizzatime and not PTSR.timeover)
		or ((PTV3 and PTV3.pizzatime and player.ptv3 and not player.ptv3.extreme)
		and not (gametype == GT_PTV3DM)
		and not (PTV3.overtime)))
		and (player.mo.state == S_PLAY_WALK))
		v.drawScaled(220*FRACUNIT, 180*FRACUNIT, 1*FRACUNIT, povpanic, V_SNAPTOBOTTOM|V_SNAPTORIGHT, playercolor)
	end
end
hud.add(pznopov, "game")

//idk
//i use a timer bc yes
addHook("ThinkFrame", function()
     for player in players.iterate do
	 if player.pizzanoreal
	  and (player.mo.state == S_PLAY_WALLCLIMBSPIN_CANCEL)
	  player.ticsforpovanimations = $+17
	  else
	  player.ticsforpovanimations = 0
	  end
	  
      if player.pizzanoreal
	  and (player.mo.state == S_PZNO_MACHHIT)
	  player.ticsformachhit = $+1
	  else
	  player.ticsformachhit = 0
	  end
	  
	  if player.pizzanoreal
	  and player.mo.state == S_PLAY_SUPERJUMP_PREPARESIDE
	  player.ticsforpovfly= $+27
	  else
	  player.ticsforpovfly = 0
	  end
	 end
end)

//kungfu 1 (tongue)
local pizzano_animation_played = false
local frame_counter = 0
local max_frames = 15
local frame_delay = 2
local pizzano_skin_name = "pizzano"
local animation_frames = nil  -- Inicialmente vacío, lo llenaremos dentro del HUD

addHook("HUD", function(v, player, cam)
    if not animation_frames then  -- Si aún no se ha cargado, lo cargamos aquí
        animation_frames = {}
        for i = 1, max_frames do
            local patch = v.cachePatch("PNO_TONGE" .. i)
            if patch then
                animation_frames[i] = patch
            end
        end
    end

    local playercolor = v.getColormap(player.skin, player.mo.color)

    if player.mo and player.mo.valid and player.mo.skin == pizzano_skin_name then
        if player.mo.state == S_PLAY_KUNGFU4 and cam.chase == false then
            if not pizzano_animation_played then
                if frame_counter < max_frames * frame_delay then
                    local current_frame = (frame_counter / frame_delay) + 1
                    v.drawScaled(70 * FRACUNIT, 110 * FRACUNIT, FRACUNIT,
                        animation_frames[current_frame], V_SNAPTOBOTTOM)
                    frame_counter = frame_counter + 1
                else
                    pizzano_animation_played = true
                    frame_counter = 0
                end
            end
        else
            pizzano_animation_played = false
            frame_counter = 0
        end
    end
end)

//kungfu 3 (short kick)
local frame_counter5 = 0
local max_frames5 = 15
local frame_delay5 = 2
local animation_frames5 = nil  -- También lo inicializamos vacío

addHook("HUD", function(v, player, cam)
    if not animation_frames5 then  -- Cargamos los parches solo una vez
        animation_frames5 = {}
        for i = 1, max_frames5 do
            local patch5 = v.cachePatch("PNO_KICK_2" .. i)
            if patch5 then
                animation_frames5[i] = patch5
            end
        end
    end

    local playercolor = v.getColormap(player.skin, player.mo.color)

    if player.mo and player.mo.valid and player.mo.skin == pizzano_skin_name then
        if player.mo.state == S_PLAY_KUNGFU3 and cam.chase == false then
            if not pizzano_animation_played then
                if frame_counter5 < max_frames5 * frame_delay5 then
                    local current_frame5 = (frame_counter5 / frame_delay5) + 1
                    v.drawScaled(120 * FRACUNIT, 150 * FRACUNIT, FRACUNIT,
                        animation_frames5[current_frame5], V_SNAPTOBOTTOM | V_SNAPTORIGHT, playercolor)
                    frame_counter5 = frame_counter5 + 1
                else
                    pizzano_animation_played = true
                    frame_counter5 = 0
                end
            end
        else
            pizzano_animation_played = false
            frame_counter5 = 0
        end
    end
end)



//kungfu 2 (long kick)
local frame_counter4 = 0
local max_frames4 = 15
local frame_delay4 = 2
local animation_frames4 = nil

addHook("HUD", function(v, player, cam)
    if not animation_frames4 then
        animation_frames4 = {}
        for i = 1, max_frames4 do
            local patch4 = v.cachePatch("PNO_KICK" .. i)
            if patch4 then
                animation_frames4[i] = patch4
            end
        end
    end

    if player.mo and player.mo.valid and player.mo.skin == pizzano_skin_name then
        local playercolor = v.getColormap(player.skin, player.mo.color)
        if player.mo.state == S_PLAY_KUNGFU2 and cam.chase == false then
            if not pizzano_animation_played then
                if frame_counter4 < max_frames4 * frame_delay4 then
                    local current_frame4 = (frame_counter4 / frame_delay4) + 1
                    v.drawScaled(120 * FRACUNIT, 110 * FRACUNIT, FRACUNIT,
                        animation_frames4[current_frame4], V_SNAPTOBOTTOM | V_SNAPTORIGHT, playercolor)
                    frame_counter4 = frame_counter4 + 1
                else
                    pizzano_animation_played = true
                    frame_counter4 = 0
                end
            end
        else
            pizzano_animation_played = false
            frame_counter4 = 0
        end
    end
end)

//kungfu 3 (tongue part 2)
local frame_counter2 = 0
local max_frames2 = 10
local frame_delay2 = 2
local animation_frames2 = nil

addHook("HUD", function(v, player, cam)
    if not animation_frames2 then
        animation_frames2 = {}
        for i = 1, max_frames2 do
            local patch2 = v.cachePatch("PNO_TONGUE" .. i)
            if patch2 then
                animation_frames2[i] = patch2
            end
        end
    end

    if player.mo and player.mo.valid and player.mo.skin == pizzano_skin_name then
        if player.mo.state == S_PLAY_KUNGFU1 and cam.chase == false then
            if not pizzano_animation_played then
                if frame_counter2 < max_frames2 * frame_delay2 then
                    local current_frame2 = (frame_counter2 / frame_delay2) + 1
                    v.drawScaled(110 * FRACUNIT, 110 * FRACUNIT, FRACUNIT,
                        animation_frames2[current_frame2], V_SNAPTOBOTTOM)
                    frame_counter2 = frame_counter2 + 1
                else
                    pizzano_animation_played = true
                    frame_counter2 = 0
                end
            end
        else
            pizzano_animation_played = false
            frame_counter2 = 0
        end
    end
end)

//kungfu 6 (shoulder)
local frame_counter1 = 0
local max_frames1 = 10
local frame_delay1 = 3
local animation_frames1 = nil

addHook("HUD", function(v, player, cam)
    if not animation_frames1 then
        animation_frames1 = {}
        for i = 1, max_frames1 do
            local patch1 = v.cachePatch("PNO_SHOULDER" .. i)
            if patch1 then
                animation_frames1[i] = patch1
            end
        end
    end

    if player.mo and player.mo.valid and player.mo.skin == pizzano_skin_name then
        local playercolor = v.getColormap(player.skin, player.mo.color)
        if player.mo.state == S_PLAY_KUNGFU6 and cam.chase == false then
            if not pizzano_animation_played then
                if frame_counter1 < max_frames1 * frame_delay1 then
                    local current_frame1 = (frame_counter1 / frame_delay1) + 1
                    v.drawScaled(210 * FRACUNIT, 265 * FRACUNIT, 2 * FRACUNIT - FRACUNIT / 2,
                        animation_frames1[current_frame1], V_SNAPTOBOTTOM, playercolor)
                    frame_counter1 = frame_counter1 + 1
                else
                    pizzano_animation_played = true
                    frame_counter1 = 0
                end
            end
        else
            pizzano_animation_played = false
            frame_counter1 = 0
        end
    end
end)

//not a kungfu(chainsaw)
local frame_counter3 = 0 
local max_frames3 = 10
local frame_delay3 = 2
local animation_frames3 = nil

addHook("HUD", function(v, player, cam)
    if not animation_frames3 then
        animation_frames3 = {}
        for i = 1, max_frames3 do
            local patch3 = v.cachePatch("PNO_CHAINSAW" .. i)
            if patch3 then
                animation_frames3[i] = patch1
            end
        end
    end
    if player.mo and player.mo.valid and player.mo.skin == pizzano_skin_name then
    local playercolor = v.getColormap(player.skin, player.mo.color)
        if ((player.mo.state == S_PLAY_CHAINSAW)) 
		and cam.chase == false then
		if not pizzano_animation_played then
                if frame_counter3 < max_frames3 * frame_delay3 then
					local current_frame3 = (frame_counter3 / frame_delay3) + 1
                   v.drawScaled(100*FRACUNIT, 170*FRACUNIT, FRACUNIT,
                        animation_frames3[current_frame3] ,V_SNAPTOBOTTOM|V_SNAPTORIGHT , playercolor)

                    frame_counter3 = frame_counter3 + 1
                else
                    pizzano_animation_played = true
                    frame_counter3 = 0
                end
            end
        else
           pizzano_animation_played = false
            frame_counter3 = 0
        end
    end
end)


//
//AIR KUNGFU START
//

//airkungfu 1
local pizzano_animation_played = false 
local frame_counterofairekungfu = 0 
local max_framesofairekungfu = 10
local frame_delayofairekungfu = 2
local pizzano_skin_name = "pizzano" 
local animation_framesofairekungfu = nil
addHook("HUD", function(v, player, cam)
    if not animation_framesofairekungfu then
        animation_framesofairekungfu = {}
        for i = 1, max_framesofairekungfu do
            local airkungfu = v.cachePatch("PNO_PKUNGFUSTART_2" .. i)
            if airkungfu then
                animation_framesofairekungfu[i] = airkungfu
            end
        end
    end
    if player.mo and player.mo.valid and player.mo.skin == pizzano_skin_name then
    local playercolor = v.getColormap(player.skin, player.mo.color)
        if ((player.mo.state == S_PLAY_AIRKUNGFU1)) 
		and cam.chase == false then
		if not pizzano_animation_played then
                if frame_counterofairekungfu < max_framesofairekungfu * frame_delayofairekungfu then
					local current_frameofairekungfu = (frame_counterofairekungfu / frame_delayofairekungfu) + 1
                   v.drawScaled(200*FRACUNIT, 310*FRACUNIT, FRACUNIT,
                        animation_framesofairekungfu[current_frameofairekungfu] ,V_SNAPTOBOTTOM , playercolor)

                    frame_counterofairekungfu = frame_counterofairekungfu + 1
                else
                    pizzano_animation_played = true
                    frame_counterofairekungfu = 0
                end
            end
        else
           pizzano_animation_played = false
            frame_counterofairekungfu = 0
        end
    end
end)


//airkungfu 2
local pizzano_animation_played = false 
local frame_counterofairekungfu2 = 0 
local max_framesofairekungfu2 = 10
local frame_delayofairekungfu2 = 2
local pizzano_skin_name = "pizzano" 
local animation_framesofairekungfu2 = nil
addHook("HUD", function(v, player, cam)
    if not animation_framesofairekungfu2 then
        animation_framesofairekungfu2 = {}
        for i = 1, max_framesofairekungfu2 do
            local airkungfu2 = v.cachePatch("PNO_PKUNGFUSTART_1" .. i)
            if airkungfu2 then
                animation_framesofairekungfu2[i] = airkungfu2
            end
        end
    end
    if player.mo and player.mo.valid and player.mo.skin == pizzano_skin_name then
    local playercolor = v.getColormap(player.skin, player.mo.color)
        if ((player.mo.state == S_PLAY_AIRKUNGFU2)) 
		and cam.chase == false then
		if not pizzano_animation_played then
                if frame_counterofairekungfu2 < max_framesofairekungfu2 * frame_delayofairekungfu2 then
					local current_frameofairekungfu2 = (frame_counterofairekungfu2 / frame_delayofairekungfu2) + 1
                   v.drawScaled(170*FRACUNIT, 300*FRACUNIT, FRACUNIT,
                        animation_framesofairekungfu2[current_frameofairekungfu2] ,V_SNAPTOBOTTOM , playercolor)

                    frame_counterofairekungfu2 = frame_counterofairekungfu2 + 1
                else
                    pizzano_animation_played = true
                    frame_counterofairekungfu2 = 0
                end
            end
        else
           pizzano_animation_played = false
            frame_counterofairekungfu2 = 0
        end
    end
end)

//airkungfu 3
local pizzano_animation_played = false 
local frame_counterofairekungfu3 = 0 
local max_framesofairekungfu3 = 10
local frame_delayofairekungfu3 = 2
local pizzano_skin_name = "pizzano" 
local animation_framesofairekungfu3 = nil
addHook("HUD", function(v, player, cam)
    if not animation_framesofairekungfu3 then
        animation_framesofairekungfu3 = {}
        for i = 1, max_framesofairekungfu3 do
            local airkungfu3 = v.cachePatch("PNO_PKUNGFUSTART_3" .. i)
            if airkungfu3 then
                animation_framesofairekungfu3[i] = airkungfu3
            end
        end
    end
    if player.mo and player.mo.valid and player.mo.skin == pizzano_skin_name then
    local playercolor = v.getColormap(player.skin, player.mo.color)
        if ((player.mo.state == S_PLAY_AIRKUNGFU3)) 
		and cam.chase == false then
		if not pizzano_animation_played then
                if frame_counterofairekungfu3 < max_framesofairekungfu3 * frame_delayofairekungfu3 then
					local current_frameofairekungfu3 = (frame_counterofairekungfu3 / frame_delayofairekungfu3) + 1
                   v.drawScaled(170*FRACUNIT, 290*FRACUNIT, FRACUNIT,
                        animation_framesofairekungfu3[current_frameofairekungfu3] ,V_SNAPTOBOTTOM , playercolor)

                    frame_counterofairekungfu3 = frame_counterofairekungfu3 + 1
                else
                    pizzano_animation_played = true
                    frame_counterofairekungfu3 = 0
                end
            end
        else
           pizzano_animation_played = false
            frame_counterofairekungfu3 = 0
        end
    end
end)