Big lag for seemingly no reason

i looked at the project again, i don't think you should be using turbo mode for it. the times that turbo mode scripts run at is in bursts, not at all consistent. mixing it with wait blocks to control sprite speed just causes all sorts of problems where even if the framerate is the same movement could speed up or slow down rapidly because of tiny inconsistencies.

for example, just having one enemy on screen for me halves the script speed compared to just the player since two things moving around is twice the amount. since the wait blocks are inconsistent and the code isn't designed for changing script speeds in other ways, everything slows down.

if you want to use turbo mode, you need to handle variable script speeds. note that this includes removing any wait blocks that need to be precise or fast (any wait block under 0.2 seconds is probably too short).

it would be much easier to just not use turbo mode (and still remove the wait blocks!), then fix anything that puts the fps below 60.

OTHER ISSUES RELATED TO LAG:

a lot of these sprites are only slightly adjusted copies of eachother (same code, including same strewn about blocks), it's very difficult to manage. a lot of these sprites should be merged together and just use multiple costumes and some variables to manage the slightly different behavior. any other identical code should go into blocks.

i see a lot of LAUNCH blocks around the project that are completely unneccecary because there's no waits or loops inside them. launches are quite slow (and iirc they're especially slow if you put the ring directly in it, i think they recreate the ring every time in that case)

i have no idea what the "timer" custom block is but it's another very short wait so i don't think it should be used.