addHook("PlayerThink", do
    for player in players.iterate
	    if (player.mo and player.mo.skin == "talez")
	    and (player.cmd.buttons & BT_SPIN)
		and not (player.powers[pw_carry])
		and (player.mo.state == S_PLAY_FLY_TIRED)
		   player.mo.state = S_PLAY_FALL
		   P_SetObjectMomZ(player.mo, 10*FRACUNIT)
		   S_StartSound(player.mo, sfx_zoom)
		end
	end
end)


addHook("PlayerThink", do
    for player in players.iterate
	    if (player.mo and player.mo.skin == "talez")
	    and (player.cmd.buttons & BT_CUSTOM2)
		and not (player.powers[pw_carry])
		and (player.mo.state == S_PLAY_STND or player.mo.state == S_PLAY_WAIT)
		and player.speed < 1*FRACUNIT and P_IsObjectOnGround(player.mo)
		   player.mo.state = S_PLAY_DEAD
		   player.mo.momz = 10*FRACUNIT
		   player.mo.momy = 0*FRACUNIT
		   player.mo.momx = 0*FRACUNIT
		   S_StartSound(player.mo, sfx_altdi1)
		end
	end
end)


addHook("PlayerThink", function(player)
	if player.mo.skin == "talez"
	    if not (player.mo.hyperform) then
	    player.mo.hyperform = 0
    end
	    if (player.mo.state == S_PLAY_JUMP)
		and (player.cmd.buttons & BT_CUSTOM3)
		and (player.powers[pw_super])
		and (player.rings == 100)
		and not (player.powers[pw_carry])
		and not (player.mo.state == S_PLAY_SUPER_TRANS1)
	    and not (player.mo.state == S_PLAY_SUPER_TRANS2)
	    and not (player.mo.state == S_PLAY_SUPER_TRANS3)
	    and not (player.mo.state == S_PLAY_SUPER_TRANS4)
	    and not (player.mo.state == S_PLAY_SUPER_TRANS5)
	    and not (player.mo.state == S_PLAY_SUPER_TRANS6)
		and player.mo.hyperform == 0
		   P_DoSuperTransformation(player, true)
	       player.mo.hyperform = 1
		 end
	 end
end)


addHook("PlayerThink", do
    for player in players.iterate
	    if (player.mo and player.mo.skin == "talez")
	    and (player.cmd.buttons & BT_CUSTOM3)
		and not (player.powers[pw_carry])
		and (player.mo.state == S_PLAY_JUMP)
		and (player.mo.hyperform == 1)
		   player.mo.state = S_PLAY_SUPER_TRANS1
		   S_StartSound(player.mo, sfx_zoom)
		   player.mo.hyperform = 0
		   player.normalspeed = skins["talez"].normalspeed
		   player.mindash = skins["talez"].mindash
		   player.maxdash = skins["talez"].maxdash
		end
	end
end)


addHook("PlayerThink", do
    for player in players.iterate
	    if (player.mo and player.mo.skin == "talez")
	    and (player.cmd.buttons & BT_CUSTOM3)
		and not (player.powers[pw_carry])
		and (player.mo.state == S_PLAY_JUMP)
		and (player.powers[pw_super])
		   player.mo.state = S_PLAY_SUPER_TRANS1
		   S_StartSound(player.mo, sfx_zoom)
		   player.powers[pw_super] = 0
		   P_RestoreMusic(player)
		   P_SpawnShieldOrb(player)
		   player.mo.color = player.skincolor
		end
	end
end)


addHook('ThinkFrame', do
    for player in players.iterate
        if player.mo and player.mo.valid
        and player.mo.skin == "fitalez"
           and (player.mo.hyperform == 1)
	        and player.powers[pw_super]
	        and not (player.pflags & PF_FINISHED)
             player.normalspeed = 60*FRACUNIT
             player.mindash = 60*FRACUNIT
             player.maxdash = 60*FRACUNIT
             player.mo.color = (SKINCOLOR_HYPER1 + abs(((player.powers[pw_super] >> 2) % 9) - 6))
			 player.pflags = $1|PF_INVIS
             local hypertrail = P_SpawnGhostMobj(player.mo)
			 hypertrail.color = player.mo.color
             hypertrail.fuse = 6
			 player.powers[pw_invulnerability] = TICRATE/8
     end 
end
end)


// Hyper colors. 


// Red Starts

freeslot("SKINCOLOR_HYPER1")
skincolors[SKINCOLOR_HYPER1] = {
	name = "Hyper 1",
	ramp = {0,0,0,0,0,0,0,0,209,209,210,210,32,32,33,33},
	invcolor = SKINCOLOR_ORANGE,
	invshade = 9,
	chatcolor = V_BLUEMAP,
	accessible = false
}

// Blue

freeslot("SKINCOLOR_HYPER2")
skincolors[SKINCOLOR_HYPER2] = {
	name = "Hyper 2",
	ramp = {0,0,0,0,0,0,0,0,129,129,130,130,131,131,132,132},
	invcolor = SKINCOLOR_ORANGE,
	invshade = 9,
	chatcolor = V_BLUEMAP,
	accessible = false
}

// Green

freeslot("SKINCOLOR_HYPER3")
skincolors[SKINCOLOR_HYPER3] = {
	name = "Hyper 3",
	ramp = {0,0,0,0,0,0,0,0,98,98,99,99,100,100,101,101},
	invcolor = SKINCOLOR_ORANGE,
	invshade = 9,
	chatcolor = V_BLUEMAP,
	accessible = false
}

// Yellow

freeslot("SKINCOLOR_HYPER4")
skincolors[SKINCOLOR_HYPER4] = {
	name = "Hyper 4",
	ramp = {0,0,0,0,0,0,0,0,82,82,83,83,72,72,74,74},
	invcolor = SKINCOLOR_ORANGE,
	invshade = 9,
	chatcolor = V_BLUEMAP,
	accessible = false
}

// White

freeslot("SKINCOLOR_HYPER5")
skincolors[SKINCOLOR_HYPER5] = {
	name = "Hyper 5",
	ramp = {0,0,0,0,0,0,0,0,1,1,2,2,3,3,4,4},
	invcolor = SKINCOLOR_ORANGE,
	invshade = 9,
	chatcolor = V_BLUEMAP,
	accessible = false
}

// Violet

freeslot("SKINCOLOR_HYPER6")
skincolors[SKINCOLOR_HYPER6] = {
	name = "Hyper 6",
	ramp = {0,0,0,0,0,0,0,0,160,160,161,161,162,162,163,163},
	invcolor = SKINCOLOR_ORANGE,
	invshade = 9,
	chatcolor = V_BLUEMAP,
	accessible = false
}

// Red ending

freeslot("SKINCOLOR_HYPER7")
skincolors[SKINCOLOR_HYPER7] = {
	name = "Hyper 7",
	ramp = {0,0,0,0,0,0,0,0,200,200,201,201,202,202,203,203},
	invcolor = SKINCOLOR_ORANGE,
	invshade = 9,
	chatcolor = V_BLUEMAP,
	accessible = false
}