Extreme platformer

Instructions: This game is meant to be DIFFICULT.\n ----Controls---\nUp arrow keys or key W :Jump\nArrow left,right or key A,D : Move\nS or key down arrow: Crouch ( only in certain levels )\nWall jump: go left ( or right ) and jump ( only when touching wall)\nThis is mobile friendly too:)\n-----------------------How to play---------------\nYou already know, just get throught obstacles to get through the level\nAlso, there is a boss fight that is almost 10 minutes long, so... good luck.\nAnd be careful with the way you go to the next level.\nYou can went straight to the dirt and stuck in it if not.\nWith ten levels, can you beat it?\n-------------------------------------------------------\nMusic: Apoplexy tanks\nBoss fight music: Bach- Toccata and Fugue in D Minor\n\n\nIf you have beaten the game and felt that it isn't very diffcult, play here: https://scratch.mit.edu/projects/690457743/\n(AD)\n\n\n\n\n\n\n\n\n\n\n\nTags ( must ignore ):\n#All #Platformer #Hard #Games #Trending\n#All #Platformer #Hard #Games #Trending\n#All #Platformer #Hard #Games #Trending\n#All #Platformer #Hard #Games #Trending\n#All #Platformer #Hard #Games #Trending\n#All #Platformer #Hard #Games #Trending\n#All #Platformer #Hard #Games #Trendingre

@Stage\n\nwhen flag clicked\nset volume to (50) %\nforever\n    play sound [Apoplexy tanks v] until done\nend\n\nwhen I receive [fight v]\nset [boss fight ended? v] to [0]\nstop [other scripts in sprite v]\nstop all sounds\nset volume to (70) %\nplay sound [Bach-Toccata and Fugue in D Minor v] until done\nbroadcast (boss defeated v)\n\n@Sprite2\n\n@Sprite1\n\nwhen flag clicked\ngo to [front v] layer\nshow\ngo to x: (-180) y: (-50)\nSet location\nset [level v] to [1]\nhide variable [☁ winners v]\nhide variable [deaths v]\nset [deaths v] to [0]\nset [cutscene v] to [0]\nset [boss fight ended? v] to [1]\nset [x v] to [0]\nset [y v] to [0]\npoint in direction (90)\nforever\n    if <not <(cutscene) = [1]>> then\n        set [xinput v] to (<<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > (x position)>>> - <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(x position) > (mouse x)>>>)\n        if <not <(xinput) = [0]>> then\n            point in direction ((xinput) * (90))\n        end\n        change [y v] by (-1)\n        change [x v] by (<<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > (x position)>>> - <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(x position) > (mouse x)>>>)\n        set [x v] to ((x) * (0.9))\n        change x by (x)\n        if <touching (level v)?> then\n            change y by (1)\n        end\n        if <touching (level v)?> then\n            change y by (1)\n        end\n        if <touching (level v)?> then\n            change y by (1)\n        end\n        if <touching (level v)?> then\n            change y by (1)\n        end\n        if <touching (level v)?> then\n            change y by (-4)\n            change x by ((x) * (-1))\n            if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > (y position)>>> then\n                start sound [eel v]\n                set [y v] to [12]\n                if <([abs v] of (x) ) = (x)> then\n                    set [x v] to [-5]\n                else\n                    set [x v] to [5]\n                end\n            else\n                set [x v] to [0]\n            end\n        end\n        change y by (y)\n        if <touching (level v)?> then\n            change y by ((0) - (y))\n            set [y v] to [0]\n        end\n        change y by (-1)\n        if <<<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > (y position)>>> and <touching (level v)?>> then\n            set [y v] to [15]\n            start sound [Jump v]\n        end\n        change y by (1)\n        if <(y position) > [180]> then\n            set [y v] to [0]\n        end\n        if <<<touching (dangerrrrr v)?> or <touching (spinnies v)?>> or <[-167] > (y position)>> then\n            start sound [die v]\n            go to x: (oldx) y: (oldy)\n            change [deaths v] by (1)\n        end\n        if <touching (lobster v)?> then\n            if <(boss fight ended?) = [0]> then\n                start sound [die v]\n                go to x: (oldx) y: (oldy)\n                broadcast (bruh v)\n                change [deaths v] by (1)\n            end\n        end\n        if <(boss fight ended?) = [1]> then\n            if <(x position) > [240]> then\n                set x to (-210)\n                Set location\n                broadcast (message1 v)\n                change [level v] by (1)\n                broadcast (loop v)\n            end\n        end\n    end\nend\n\ndefine Set location\nset [oldx v] to (x position)\nset [oldy v] to (y position)\n\nwhen I start as a clone\nrepeat (10)\n    change size by (-5)\n    change [ghost v] effect by (10)\nend\ndelete this clone\n\nwhen flag clicked\nforever\n    create clone of (_myself_ v)\nend\n\nwhen flag clicked\nset [level v] to [1]\nswitch costume to (normal v)\nforever\n    if <(Level) = [3]> then\n        broadcast (crouch loop v)\n    end\nend\n\nwhen I receive [crouch loop v]\nforever\n    if <not <<(Level) = [5]> or <(Level) = [9]>>> then\n        if <<<key (down arrow v) pressed?> or <key (s v) pressed?>> or <<mouse down?> and <(mouse y) < (y position)>>> then\n            switch costume to (crouch v)\n        else\n            switch costume to (normal v)\n        end\n    end\nend\n\nstamp\n\nerase all\n\nstamp\n\nwhen flag clicked\nforever\n    if <(Level) = [11]> then\n        go to x: (oldx) y: (oldy)\n        play sound [Cheer v] until done\n        show variable [☁ winners v]\n        show variable [deaths v]\n        change [☁ winners v] by (1)\n        stop [this script v]\n    end\nend\n\nwhen I receive [boss defeated v]\nset [cutscene v] to [1]\n\n@Level\n\nwhen flag clicked\nset [level v] to [1]\nforever\n    switch costume to (Level)\nend\n\n@dangerrrrr\n\nwhen flag clicked\nforever\n    switch costume to (Level)\nend\n\nturn right (1) degrees\n\n@spinnies\n\nwhen flag clicked\nhide\nset [level v] to [1]\nset size to (200) %\nbroadcast (loop v)\n\nwhen I start as a clone\nshow\nforever\n    turn right (-5) degrees\nend\n\ndefine Create spin at (x) y (y) at level (level)\n\nwhen I receive [loop v]\nif <(Level) = [2]> then\n    go to x: (120) y: (-30)\n    create clone of (_myself_ v)\n    stop [this script v]\nend\nif <(Level) = [5]> then\n    go to x: (0) y: (80)\n    create clone of (_myself_ v)\n    point in direction (-90)\n    go to x: (90) y: (80)\n    create clone of (_myself_ v)\nend\nif <(Level) = [7]> then\n    set size to (220) %\n    go to x: (0) y: (0)\n    create clone of (_myself_ v)\nend\n\nwhen I receive [message1 v]\ndelete this clone\n\n@sun\n\nwhen flag clicked\nforever\n    go to [back v] layer\n    set size to ((90) + (([sin v] of ((timer) * (260)) ) * (3))) %\nend\n\npoint in direction ((90) + (([sin v] of ((timer) * (260)) ) * (3)))\n\n@lobster\n\nwhen flag clicked\nset [cutscene v] to [0]\nhide\nforever\n    if <(Level) = [10]> then\n        broadcast (boss lobster v)\n        stop [this script v]\n    end\nend\n\nwhen I receive [boss lobster v]\nshow\ngo to x: (220) y: (-140)\nset [cutscene v] to [1]\ntalk [ah, you are finally here]\nwait (1) seconds\ntalk [i've been waiting for you for this moment]\nwait (1) seconds\ntalk [you thought that you gonna pass the level?]\nwait (1) seconds\ntalk [no no no]\nwait (1) seconds\ntalk [you have to defeat me first]\nwait (1) seconds\ntalk [it is not gonna be easy]\nwait (1) seconds\ntalk [muhahahahaha]\nset [cutscene v] to [0]\nbroadcast (fight v)\n\ndefine talk (string)\nset [char number v] to [1]\nset [text v] to []\nrepeat (length of (string))\n    set [text v] to (join (text) (letter (char number) of (string)))\n    say (text)\n    start sound [Clang v]\n    change [char number v] by (1)\nend\n\nwhen I receive [fight v]\nwait (0.1) seconds\nrepeat until <(boss fight ended?) = [1]>\n    wait (1) seconds\n    glide to (round ([x position v] of [sprite1 v])) (round ([y position v] of [sprite1 v]))\nend\n\ndefine glide to (x) (y)\nrepeat until <<(round (x position)) = (x)> and <(round (y position)) = (y)>>\n    change x by (((x) - (x position)) / (3))\n    change y by (((y) - (y position)) / (3))\nend\n\nwhen I receive [bruh v]\ngo to x: (220) y: (-140)\nbroadcast (fight v)\n\nwhen I receive [boss defeated v]\nstop [other scripts in sprite v]\ngo to x: (220) y: (-140)\ntalk [Great job]\nwait (1) seconds\ntalk [Seems that you have defeated me]\nwait (1) seconds\ntalk [you are actually very good]\nwait (1) seconds\ntalk [i didn't expect that]\nwait (1) seconds\ntalk [you are worthy to pass]\nwait (1) seconds\nhide\nset [boss fight ended? v] to [1]\nset [cutscene v] to [0]\n\n@Sprite3\n\nwhen flag clicked\nforever\n    set [ghost v] effect to (100)\n    go to [front v] layer\nend\n\n