addHook("JumpSpinSpecial", function(player)
	if player.mo and player.mo.skin == "sknux"
	and not (player.pflags & PF_THOKKED)
	and (player.mo.state == S_PLAY_JUMP or player.mo.state == S_PLAY_ROLL)
	and G_PlatformGametype()
		--P_FlashPal(player, PAL_WHITE, 10) --removed for avoiding flashing lights
		S_StartSound(player.mo, sfx_zoom)
		P_NukeEnemies(player.mo, player.mo, 1)
		player.mo.momz = -30*FRACUNIT
		player.mo.state = S_PLAY_ROLL
		player.pflags = $|PF_THOKKED
	end
end)



		addHook("PlayerThink", function(player)
		if not(player.mo.skin == "sknux") then return end 
		if player.cmd.buttons & BT_USE
		and (P_IsObjectOnGround(player.mo))
		and (player.pflags & PF_SPINNING)
		and (player.mo.state == S_PLAY_ROLL) 
		player.mo.state = S_PLAY_SPINDASH
		player.pflags = $|PF_STARTDASH
	end
end)




		addHook("PlayerThink", function(player)
		if not(player.mo.skin == "sknux") then return end 
		if (P_IsObjectOnGround(player.mo))
		and (player.mo.state == S_PLAY_SPINDASH) 
	P_InstaThrust(player.mo, player.mo.angle, 10)
	local trail = P_SpawnGhostMobj(player.mo)
		trail.color = SKINCOLOR_REDSUPER
		trail.state = S_THOK
P_Thrust(trail, player.mo.angle, 90*FRACUNIT)
	end
end)

		addHook("PlayerThink", function(player)
		if player.mo.skin == "sknux"
		and not (player.mo.state == S_PLAY_STND or player.mo.state == S_PLAY_WAIT)
		local ghost = P_SpawnGhostMobj(player.mo)
		ghost.color = SKINCOLOR_HYPERSUPER
        ghost.colorized = true
		ghost.fuse = 1
	end
end)


		addHook("PlayerThink", function(player)
		if player.mo.skin == "sknux"
        --player.mo.colorized = true
		A_BossScream(player.mo, 0, 	MT_BOXSPARKLE)
		 player.charflags = $1|SF_CANBUSTWALLS
	end
end)

addHook("ThinkFrame", do
    for player in players.iterate do
	 if player.mo and player.mo.skin == "sknux"
        if (player.mo.state == S_PLAY_WALK or player.mo.state == S_PLAY_RUN or player.mo.state == S_PLAY_SKID)
		and player.mo.momz > 0
		and not P_IsObjectOnGround(player.mo)
		and not player.powers[pw_carry]
			player.mo.state = S_PLAY_SPRING
		end
		if (player.mo.state == S_PLAY_WALK or player.mo.state == S_PLAY_RUN or player.mo.state == S_PLAY_SKID)
		and player.mo.momz < 1
		and not P_IsObjectOnGround(player.mo)
		and not player.powers[pw_carry]
			player.mo.state = S_PLAY_FALL
			end
        end
	end
end)


addHook("PlayerThink", function(player)
    if player.mo and player.mo.skin == "sknux"
        if not P_IsObjectOnGround(player.mo)
		and not (player.pflags & PF_JUMPED)
		and player.cmd.buttons & BT_USE
		and (player.mo.state == S_PLAY_SPRING or player.mo.state == S_PLAY_FALL or player.mo.state == S_PLAY_PAIN)
            player.pflags = $ | PF_JUMPED
			player.mo.state = S_PLAY_JUMP
			S_StartSound(player.mo, sfx_spin, player)
			P_SpawnThokMobj(player)
        end
    end
end)

addHook("PlayerThink", function(player)
    if player.mo and player.mo.skin == "sknux"
        if not P_IsObjectOnGround(player.mo)
		and not (player.pflags & PF_JUMPED)
		and player.cmd.buttons & BT_CUSTOM2
		and (player.mo.state == S_PLAY_RUN or player.mo.state == S_PLAY_WALK or player.mo.state == S_PLAY_STND or player.mo.state == S_PLAY_WAIT or player.mo.state == S_PLAY_JUMP)
		player.momz = 4*FRACUNIT
			player.mo.state = S_PLAY_MELEE
			S_StartSound(player.mo, sfx_thok, player)
			
        end
    end
end)

addHook("PlayerCanDamage",function(player, sourmo)
  if player.mo.skin == "sknux"
  and player.dashmode > 3*TICRATE
  and MF_ENEMY
   return true
   end
 end)

		addHook("PlayerThink", function(player)
		if player.mo.skin == "sknux"
		and player.dashmode > 3*TICRATE
		local ghost = P_SpawnGhostMobj(player.mo)
		ghost.color = SKINCOLOR_HYPERSUPER
        ghost.colorized = true
	end
end)

/*
addHook("PlayerThink", function(player)
	if player.mo.skin == "sknux"
	and (player.cmd.buttons & BT_CUSTOM3)
	if P_IsObjectOnGround(player.mo)
	player.mo.state = S_INVISIBLE
P_SpawnSkidDust(player, 20*FRACUNIT, sfx_lvfal1)
end
end
end)

addHook("PlayerThink", function(player)
	if player.mo.skin == "sknux"
	and not(player.cmd.buttons & BT_CUSTOM3)
	and (player.mo.state == S_INVISIBLE)
	player.mo.state = S_PLAY_SPRING
	player.mo.momz = 10*FRACUNIT
	P_SpawnMobj(player.mo.x - 25*FRACUNIT, player.mo.y, player.mo.z, MT_DUST) --west
	P_SpawnMobj(player.mo.x + 25*FRACUNIT, player.mo.y, player.mo.z, MT_DUST) --east
	P_SpawnMobj(player.mo.x, player.mo.y - 25*FRACUNIT, player.mo.z, MT_DUST) --south
	P_SpawnMobj(player.mo.x, player.mo.y + 25*FRACUNIT, player.mo.z, MT_DUST) --north
	P_SpawnMobj(player.mo.x - 20*FRACUNIT, player.mo.y - 20*FRACUNIT, player.mo.z, MT_DUST) --southwest
	P_SpawnMobj(player.mo.x + 20*FRACUNIT, player.mo.y - 20*FRACUNIT, player.mo.z, MT_DUST) --southeast
	P_SpawnMobj(player.mo.x - 20*FRACUNIT, player.mo.y + 20*FRACUNIT, player.mo.z, MT_DUST) --northwest
	P_SpawnMobj(player.mo.x + 20*FRACUNIT, player.mo.y + 20*FRACUNIT, player.mo.z, MT_DUST) --northeast
end
end)
*/


	 addHook("PlayerThink", function(player)
		if player.mo.skin == "sknux"
		and (player.mo.state == S_PLAY_FALL)
			player.pflags = ($|PF_JUMPED|PF_NOJUMPDAMAGE)
	end
end)