addHook("ThinkFrame", do
	for player in players.iterate
	    if player.mo.chargelevel == nil
			player.mo.chargelevel = 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.mooncharge
	   if (player.mo.chargelevel < 100)
			player.mo.chargelevel = $1+1
			--print(player.mo.chargelevel)
			elseif (player.mo.chargelevel == 100)
			player.mo.chargelevel = 100
			end
	   end
	end
end)

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

addHook("ThinkFrame", do
	for player in players.iterate
		if (player.mo.skin == "pedro")
		and not player.mo.mooncharge
		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.mooncharge = 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.mooncharge) //If sonic has charge moonjump
		 if (player.mo.chargelevel == 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.chargelevel == 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.chargelevel == 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.chargelevel == 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.chargelevel == 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.chargelevel == 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.chargelevel == 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.chargelevel == 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.chargelevel == 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.chargelevel == 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.chargelevel == 50)
		 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.chargelevel == 55)
		 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.chargelevel == 60)
		 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.chargelevel == 65)
		 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.chargelevel == 70)
		 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.chargelevel == 75)
		 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.chargelevel == 80)
		 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.chargelevel == 85)
		 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.chargelevel == 90)
		 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.chargelevel == 95)
		 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.chargelevel == 99)
		 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
		 end
		 end
	end
end)

addHook("ThinkFrame", do
	for player in players.iterate
		 if (player.mo.mooncharge)
		 and not (player.cmd.buttons & BT_CUSTOM1) //If Pedro has charge moonjump
		 if (player.mo.chargelevel <= 5)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 10)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 15)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 20)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 25)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 30)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 35)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 40)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 45)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 50)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 55)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 60)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 65)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 70)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 75)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 80)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 85)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 90)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 95)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel <= 100)
		 and (player.mo.chargelevel >= 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.mooncharge = false
		 elseif (player.mo.chargelevel == 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.mooncharge = false
		 player.mo.state = S_PLAY_ROLL
		 end
		 end
	end
end)
