addHook("ThinkFrame", do for player in players.iterate if (player.mo.skin == "shadow" or player.mo.skin == "fsonic" or player.mo.skin == "sonic") and not player.powers[pw_super] and not player.mo.mooncharge and (player.cmd.buttons & BT_CUSTOM1) and P_IsObjectOnGround(player.mo) //If player is on ground and (player.speed == 0) //If player not move 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 P_SpawnGhostMobj(player.mo) end if not (player.cmd.buttons & BT_CUSTOM1) and not player.powers[pw_super] and player.mo.mooncharge //If sonic has charge moonjump 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) //sonic will jump HIGH P_SpawnGhostMobj(player.mo) player.mo.mooncharge = false end if (player.cmd.buttons & BT_CUSTOM1) and not player.powers[pw_super] and not P_IsObjectOnGround(player.mo) //If player is not on ground and player.pflags == PF_JUMPED P_SetObjectMomZ(player.mo, FRACUNIT*-30, false) //sonic will jump HIGH P_SpawnGhostMobj(player.mo) end end end)