freeslot("sfx_charg1", "sfx_charg2")

addHook("ThinkFrame", do
	for player in players.iterate
	    if player.mo.spndshlevel == nil
			player.mo.spndshlevel = 0
		end
	end
end)

addHook("ThinkFrame", do
	for player in players.iterate
       if (player.cmd.buttons & BT_CUSTOM1)
	   and P_IsObjectOnGround(player.mo)
	   and player.mo.moonspndsh
	   if (player.mo.spndshlevel < 100)
			player.mo.spndshlevel = $1+1
			--print(player.mo.spndshlevel)
			elseif (player.mo.spndshlevel == 100)
			player.mo.spndshlevel = 100
			end
	   end
	end
end)

addHook("ThinkFrame", do
	for player in players.iterate
       if not (player.mo.moonspndsh)
	   player.mo.spndshlevel = 0
	   --print(player.mo.spndshlevel)
	   end
	end
end)

addHook("ThinkFrame", do
	for player in players.iterate
		if (player.mo.skin == "jbpedro")
		and not player.mo.moonspndsh
		and (player.cmd.buttons & BT_CUSTOM1)
		and P_IsObjectOnGround(player.mo) //If player is on ground
		S_StartSound(player.mo, sfx_spndsh)
		player.powers[pw_nocontrol] = 150000 //Player can't move when he charging
		player.mo.moonspndsh = true
		player.pflags = $ |PF_JUMPED
		player.mo.state = S_PLAY_ROLL
		end
	end
end)

addHook("ThinkFrame", do
	for player in players.iterate
		 if (player.cmd.buttons & BT_CUSTOM1)
		 and (player.mo.moonspndsh) //If sonic has spndsh moonjump
		 if (player.mo.spndshlevel == 0)
		 S_StartSound(player.mo, sfx_spndsh)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 5)
		 S_StartSound(player.mo, sfx_spndsh)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 10)
		 S_StartSound(player.mo, sfx_spndsh)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 15)
		 S_StartSound(player.mo, sfx_spndsh)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 20)
		 S_StartSound(player.mo, sfx_spndsh)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 25)
		 S_StartSound(player.mo, sfx_spndsh)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 30)
		 S_StartSound(player.mo, sfx_spndsh)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 35)
		 S_StartSound(player.mo, sfx_spndsh)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 40)
		 S_StartSound(player.mo, sfx_spndsh)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 45)
		 S_StartSound(player.mo, sfx_spndsh)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 50)
		 S_StartSound(player.mo, sfx_charg1)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 55)
		 S_StartSound(player.mo, sfx_charg1)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 60)
		 S_StartSound(player.mo, sfx_charg1)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 65)
		 S_StartSound(player.mo, sfx_charg1)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 70)
		 S_StartSound(player.mo, sfx_charg1)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 75)
		 S_StartSound(player.mo, sfx_charg1)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 80)
		 S_StartSound(player.mo, sfx_charg1)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 85)
		 S_StartSound(player.mo, sfx_charg1)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 90)
		 S_StartSound(player.mo, sfx_charg1)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 95)
		 S_StartSound(player.mo, sfx_charg1)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 elseif (player.mo.spndshlevel == 99)
		 S_StartSound(player.mo, sfx_charg2)
		 local thok = P_SpawnMobj(player.mo.x, player.mo.y, player.mo.z, MT_OLDTHOK)
		 thok.color = player.mo.color
		 end
		 end
	end
end)

addHook("ThinkFrame", do
	for player in players.iterate
		 if (player.mo.moonspndsh)
		 and not (player.cmd.buttons & BT_CUSTOM1) //If Pedro has spndsh moonjump
		 if (player.mo.spndshlevel <= 5)
		 and (player.mo.spndshlevel >= 0)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*2, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 10)
		 and (player.mo.spndshlevel >= 5)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*4, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 15)
		 and (player.mo.spndshlevel >= 10)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*6, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 20)
		 and (player.mo.spndshlevel >= 15)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*8, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 25)
		 and (player.mo.spndshlevel >= 20)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*10, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 30)
		 and (player.mo.spndshlevel >= 25)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*12, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 35)
		 and (player.mo.spndshlevel >= 30)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*14, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 40)
		 and (player.mo.spndshlevel >= 35)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*16, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 45)
		 and (player.mo.spndshlevel >= 40)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*18, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 50)
		 and (player.mo.spndshlevel >= 45)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*20, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 55)
		 and (player.mo.spndshlevel >= 50)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*22, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 60)
		 and (player.mo.spndshlevel >= 55)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*24, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 65)
		 and (player.mo.spndshlevel >= 60)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*26, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 70)
		 and (player.mo.spndshlevel >= 65)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*28, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 75)
		 and (player.mo.spndshlevel >= 70)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*30, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 80)
		 and (player.mo.spndshlevel >= 75)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*32, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 85)
		 and (player.mo.spndshlevel >= 80)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*34, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 90)
		 and (player.mo.spndshlevel >= 85)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*36, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 95)
		 and (player.mo.spndshlevel >= 90)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*38, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel <= 100)
		 and (player.mo.spndshlevel >= 95)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*40, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 elseif (player.mo.spndshlevel == 100)
		 S_StartSound(player.mo, sfx_zoom)
		 player.pflags = $ |PF_JUMPED
		 player.powers[pw_nocontrol] = 0 //Player can move again
		 P_SetObjectMomZ(player.mo, FRACUNIT*42, false) //Pedro will jump HIGH
		 P_SpawnGhostMobj(player.mo)
		 player.mo.moonspndsh = false
		 player.mo.state = S_PLAY_ROLL
		 end
		 end
	end
end)
