the one level platformer

Instructions: this project was inspired by the one level platformer and is absolutely brilliant: https://scratch.mit.edu/projects/559110699/\n\n-- controls --\nnormal mode:\narrow keys to move\nclick to toggle mouse trail on and off\n\nhard mode (press h to toggle; play the level first before trying this mode):\nhold space to stop your movement\nup to jump\n\nif you find yourself in a situation where you can't move, please press r to reset. clicking the flag also works.\n\n-- note --\n\nsequel to the one level platformer i shared on another account (now unshared):\nthe one level platformer: now with commentary\n\n-- why this was made --\n\nthe original one was made because i wanted to show that some seemingly-generic platformers are actually well coded inside, but they don't show that they are before you play a couple levels - it may be a bossfight, a cool mechanic, or something else.\n\nback in november, there was this generic platformer controversy that involved a hashtag that really hurt some people, and i wanted to help.\n\nso i made a project.\n\ni really had lots of fun with it, and after i finished it up, i shared it. immediately, there were some bugs. i tried fixing the bugs, but i accidentally broke the game, and didn't feel like redoing the game, so i unshared it.\n\na few weeks ago, i started playing one of the remixes that were still up, and realized that i could have done a lot more with this idea, and i could have improved on some parts of the level.\n\nso that is why i made this project.\n\n-- credits --\n\nmusic - soul and mind (from griffpatch's getting over it)\n\nplatformer script from a project that likely got it from another project that likely got it from another project that likely got it from another project - it's edited to do some fun things like detect player movement and change the level :P\n\ntrap adventure 2 and smm2 troll levels for inspiration\n\nmy technology teacher for letting me work on this in class - thank you :D\n\nthe original project I made sometime in november (scroll down for link)\n\n--\n\nso i've been trying to make games\nbut i can't draw\nso i made this instead\n\n--\n\nthis is a remake of a platformer i made last year on a previous account, @infiniteconfusion\nit was unshared because i broke it while trying to fix a glitch (oof)\nif you want to play that one (keep in mind it's broken, but the first few tricks aren't), here it is: https://turbowarp.org/442972424 - it's where the origin of the "oh cool the hole got bigger" troll if you were wondering - in the original, you had to "jump back". :P\n\n--\n\nin case you have any doubts about me being the one that made the original project, ask me and i'll try my best to prove it :)\n\n--\n\n#game

@Stage\n\nwhen I receive [game start v]\n\nwhen I receive [game start v]\n\nwhen flag clicked\nset volume to (100) %\nforever\n    play sound [moosic v] until done\nend\n\nwhen I receive [win v]\nrepeat (100)\n    change volume by (-1)\n    wait (0.2) seconds\nend\nstop [other scripts in sprite v]\n\nwhen flag clicked\nforever\n    set [my variable v] to (timer)\n    repeat (5)\n        wait (0) seconds\n    end\n    set [turbo? v] to <((my variable) + (0.1)) > (timer)>\nend\n\nwhen flag clicked\nset [turbo? v] to [0]\nforever\n    if <(Turbo?) = [true]> then\n        broadcast (Turboo v)\n        stop [all v]\n    end\nend\n\n@introduction\n\nwhen flag clicked\nif <(username) = [-Heron-]> then\n    set [first time? v] to [1]\nend\n\nwhen [q v] key pressed\nif <(username) = [-Heron-]> then\n    show variable [player x that doesn't hurt my eyes v]\n    show variable [player y v]\n    show variable [☁ completions v]\n    show variable [☁ a v]\nend\n\nwhen [p v] key pressed\nif <(username) = [-Heron-]> then\n    hide variable [player y v]\n    hide variable [player x that doesn't hurt my eyes v]\n    hide variable [☁ completions v]\n    hide variable [☁ a v]\nend\n\nwhen [r v] key pressed\nbroadcast (reset v)\nwait until <not <key (r v) pressed?>>\nwait (0.1) seconds\n\nset [first time? v] to [1]\nset [hardmode v] to [0]\n\nwhen I receive [reset v]\nset [timer v] to [0]\nshow variable [timer v]\nforever\n    wait (0.1) seconds\n    change [timer v] by (0.1)\nend\n\nwhen flag clicked\nshow variable [☁ deaths v]\n\n@player\n\ndefine yay\nif <(y) < [0]> then\n    repeat until <not <touching color (#000000)?>>\n        change y by (1)\n    end\n    set [y v] to [0]\nelse\n    repeat until <not <touching color (#000000)?>>\n        change y by ((y) * (-1))\n    end\n    set [y v] to [0]\nend\n\nwhen I receive [reset v]\nif <(hardmode) = [0]> then\n    broadcast (startdetecting v)\n    show\n    switch costume to (1 v)\n    set [y v] to [0]\n    set [x v] to [0]\n    go to x: (-225) y: (-100)\n    forever\n        go to [front v] layer\n        set [player x v] to (x position)\n        set [player y v] to (y position)\n        change [y v] by (-1)\n        if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n            change [x v] by (-1.1)\n        end\n        if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n            change [x v] by (1.1)\n        end\n        set [x v] to ((x) * (0.85))\n        change x by (x)\n        if <touching color (#000000)?> then\n            change y by (1)\n            if <touching color (#000000)?> then\n                change y by (1)\n                if <touching color (#000000)?> then\n                    change y by (1)\n                    if <touching color (#000000)?> then\n                        change y by (1)\n                        if <touching color (#000000)?> then\n                            change y by (1)\n                            if <touching color (#000000)?> then\n                                change y by (1)\n                                if <touching color (#000000)?> then\n                                    if <touching color (#000000)?> then\n                                        change y by (1)\n                                        if <touching color (#000000)?> then\n                                            change y by (1)\n                                            if <touching color (#000000)?> then\n                                                change y by (-8)\n                                                change x by ((x) * (-1))\n                                                set [x v] to [0]\n                                            end\n                                        end\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n        change y by (y)\n        if <touching color (#000000)?> then\n            yay\n        end\n        change y by (-1)\n        if <<touching color (#000000)?> and <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n            set [y v] to [11]\n        end\n        change y by (1)\n        if <(y position) < [-178]> then\n            switch costume to (pick random (2) to (4))\n            wait (0.2) seconds\n            start sound [pop v]\n            change [☁ deaths v] by (1)\n            hide\n            wait (0.5) seconds\n            broadcast (reset v)\n        end\n        if <[227] < (x position)> then\n            broadcast (win v)\n            stop [this script v]\n        end\n    end\nend\n\nchange y by ((y) * (-1))\nset [y v] to [0]\n\nwhen flag clicked\nbroadcast (reset v)\n\nwhen I receive [reset v]\nset [hardmode_left? v] to [0]\nif <(hardmode) = [1]> then\n    broadcast (startdetecting v)\n    show\n    switch costume to (1 v)\n    set [y v] to [0]\n    set [x v] to [0]\n    go to x: (-225) y: (-100)\n    wait (0.05) seconds\n    forever\n        go to [front v] layer\n        set [player x v] to (x position)\n        set [player y v] to (y position)\n        change [y v] by (-1)\n        if <<(hardmode_left?) = [1]> or <<(hardmode_left?) = [0]> and <key (space v) pressed?>>> then\n            change [x v] by (-1)\n        end\n        if <<(hardmode_left?) = [0]> or <<(hardmode_left?) = [1]> and <key (space v) pressed?>>> then\n            change [x v] by (1)\n        end\n        set [x v] to ((x) * (0.85))\n        change x by (x)\n        if <touching color (#000000)?> then\n            change y by (1)\n            if <touching color (#000000)?> then\n                change y by (1)\n                if <touching color (#000000)?> then\n                    change y by (1)\n                    if <touching color (#000000)?> then\n                        change y by (1)\n                        if <touching color (#000000)?> then\n                            change y by (1)\n                            if <touching color (#000000)?> then\n                                change y by (1)\n                                if <touching color (#000000)?> then\n                                    if <touching color (#000000)?> then\n                                        change y by (1)\n                                        if <touching color (#000000)?> then\n                                            change y by (1)\n                                            if <touching color (#000000)?> then\n                                                change y by (-8)\n                                                change x by ((x) * (-1))\n                                                set [x v] to [0]\n                                            end\n                                        end\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n        change y by (y)\n        if <touching color (#000000)?> then\n            change y by ((y) * (-1))\n            set [y v] to [0]\n        end\n        change y by (-1)\n        if <<touching color (#000000)?> and <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n            set [y v] to [11]\n        end\n        change y by (1)\n        if <(y position) < [-178]> then\n            switch costume to (pick random (2) to (4))\n            wait (0.2) seconds\n            start sound [pop v]\n            change [☁ deaths v] by (1)\n            hide\n            wait (0.5) seconds\n            broadcast (reset v)\n        end\n        if <[227] < (x position)> then\n            broadcast (win v)\n            stop [this script v]\n        end\n    end\nend\n\nwhen flag clicked\nforever\n    if <touching color (#1a0000)?> then\n        wait (0.7) seconds\n        change [☁ deaths v] by (1)\n        broadcast (reset v)\n        wait (0.2) seconds\n    end\nend\n\nwhen I receive [reset v]\nrepeat (10)\n    set [hardmode_left? v] to [0]\nend\nwait (1) seconds\nwait until <[210] < (player x)>\nwait (1) seconds\nbroadcast (going left v)\nwait (0.5) seconds\nset [hardmode_left? v] to [1]\nwait until <<<(player x) < [52]> and <[-27] < (player x)>> and <[-60] < (player y)>>\nwait (1) seconds\nif <<<(player x) < [52]> and <[-27] < (player x)>> and <[-60] < (player y)>> then\n    broadcast (going right v)\n    wait (0.5) seconds\n    set [hardmode_left? v] to [0]\nend\nwait (0.2) seconds\nwait until <<[120] < (player x)> and <[-10] < (player y)>>\nbroadcast (going left v)\nwait (0.5) seconds\nset [hardmode_left? v] to [1]\nwait until <<(player x) < [-166]> and <[50] < (player y)>>\nbroadcast (going right v)\nwait (0.5) seconds\nset [hardmode_left? v] to [0]\n\nwhen [h v] key pressed\nif <(hardmode) = [0]> then\n    set [hardmode v] to [1]\n    broadcast (hardmode on v)\n    broadcast (reset v)\n    wait until <not <key (h v) pressed?>>\nelse\n    set [hardmode v] to [0]\n    broadcast (hardmode off v)\n    broadcast (reset v)\n    wait until <not <key (h v) pressed?>>\nend\n\nwait (1) seconds\n\nwait (1) seconds\n\n@platforms\n\nwhen I receive [startdetecting v]\nhide\ngo to x: (0) y: (0)\nswitch costume to (1 v)\nset [cloneid v] to [1]\ncreate clone of (_myself_ v)\nwait (0.1) seconds\nif <(first time?) = [1]> then\n    go to x: (1000) y: (0)\n    switch costume to (2 v)\n    set [cloneid v] to [2]\n    create clone of (_myself_ v)\n    set [first time? v] to [0]\nend\nwait until <[-26] < (player x)>\ngo to x: (0) y: (50)\nswitch costume to (3a v)\nset [cloneid v] to [3]\ncreate clone of (_myself_ v)\nwait until <<(player x) < [-26]> or <<[-145] < (player y)> and <[10] < (player x)>>>\nif <(player x) < [-26]> then\n    go to x: (20) y: (0)\n    switch costume to (4 v)\n    set [cloneid v] to [4]\n    create clone of (_myself_ v)\nelse\n    wait until <[160] < (player x)>\n    go to x: (1000) y: (0)\n    switch costume to (5 v)\n    set [cloneid v] to [5]\n    create clone of (_myself_ v)\n    wait (1) seconds\n    go to x: (0) y: (10000)\n    change [cloneid v] by (1)\n    repeat (2)\n        next costume\n        create clone of (_myself_ v)\n    end\n    go to x: (0) y: (10000)\n    switch costume to (7 v)\n    set [cloneid v] to [7]\n    create clone of (_myself_ v)\n    wait until <<(player x) < [61]> and <[-60] < (player y)>>\n    wait (2) seconds\n    wait until <<(player x) < [61]> and <[-60] < (player y)>>\n    go to x: (0) y: (10000)\n    set [cloneid v] to [8]\n    switch costume to (8 v)\n    create clone of (_myself_ v)\n    wait (0.3) seconds\n    go to x: (0) y: (10000)\n    set [cloneid v] to [9]\n    switch costume to (9a v)\n    create clone of (_myself_ v)\n    wait (0.3) seconds\n    wait until <<(player x) < [-79]> and <[50] < (player y)>>\n    wait (2) seconds\n    switch costume to (10 v)\n    go to x: (-403) y: (0)\n    set [cloneid v] to [10]\n    create clone of (_myself_ v)\n    wait until <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <(maze came down?) = [1]>>\n    if <(maze came down?) = [0]> then\n        wait (0.5) seconds\n        if <[-125] < (player x)> then\n            switch costume to (11 v)\n            go to x: (100) y: (0)\n            set [cloneid v] to [11]\n            create clone of (_myself_ v)\n        end\n    end\nend\n\nwhen I start as a clone\nshow\nif <(CloneID) = [1]> then\n    wait until <<<(player x) < [61]> and <[-40] < (player y)>> or <<[122] < (player x)> and <[0] < (player y)>>>\n    wait (0.7) seconds\n    repeat (3)\n        change y by (-3)\n    end\n    hide\nelse\n    if <(CloneID) = [2]> then\n        show\n        repeat (40)\n            change x by (((0) - (x position)) / (5))\n        end\n        wait until <not <<(round (player x)) = [-225]> and <(round (player y)) = [-153]>>>\n        go to x: (-0.5) y: (0)\n        repeat (17)\n            change x by (((0) - (x position)) / (-2))\n        end\n        hide\n    else\n        if <(CloneID) = [3]> then\n            show\n            repeat (7)\n                change y by (((0) - (y position)) / (8))\n            end\n            wait until <<[20] < (player x)> and <[-140] < (player y)>>\n            switch costume to (3b v)\n            repeat (20)\n                change x by (((85) - (x position)) / (5))\n            end\n            wait until <[160] < (player x)>\n            wait (0.5) seconds\n            wait until <<[122] < (player x)> and <[-5] < (player y)>>\n            wait (1) seconds\n            delete this clone\n        else\n            if <(CloneID) = [4]> then\n                show\n                repeat (30)\n                    change x by (((0) - (x position)) / (5))\n                end\n            else\n                if <(CloneID) = [5]> then\n                    repeat (30)\n                        change x by (((0) - (x position)) / (2))\n                    end\n                    wait until <<(player x) < [-79]> and <[50] < (player y)>>\n                    wait (3.7) seconds\n                    repeat (3)\n                        change x by (5)\n                    end\n                    delete this clone\n                else\n                    if <(CloneID) = [6]> then\n                        repeat (30)\n                            change y by (((0) - (y position)) / (6))\n                        end\n                        wait until <<(player x) < [61]> and <[-60] < (player y)>>\n                        wait (2) seconds\n                        wait until <<(player x) < [61]> and <[-60] < (player y)>>\n                        if <(costume [name v]) = [6a]> then\n                            repeat (30)\n                                change y by (((96) - (y position)) / (5))\n                            end\n                        end\n                        wait until <<[122] < (player x)> and <[-5] < (player y)>>\n                        if <(costume [name v]) = [6b]> then\n                            wait (1) seconds\n                            set y to (-0.5)\n                            repeat (12)\n                                change y by (((0) - (y position)) / (-2))\n                            end\n                            set y to (-321)\n                            repeat (30)\n                                change y by (((-374) - (y position)) / (2))\n                            end\n                        end\n                        wait until <<(player x) < [-79]> and <[50] < (player y)>>\n                        wait (4) seconds\n                        delete this clone\n                    else\n                        if <(CloneID) = [7]> then\n                            repeat (30)\n                                change y by (((0) - (y position)) / (6))\n                            end\n                            wait until <<<(player x) < [61]> and <[-40] < (player y)>> or <<[122] < (player x)> and <[-5] < (player y)>>>\n                            set x to (-0.5)\n                            repeat (30)\n                                change x by (((0) - (x position)) / (-5))\n                            end\n                            hide\n                        else\n                            if <(CloneID) = [8]> then\n                                repeat (30)\n                                    change y by (((0) - (y position)) / (6))\n                                end\n                                wait until <<(player x) < [-79]> and <[50] < (player y)>>\n                                wait (4) seconds\n                                delete this clone\n                            else\n                                if <(CloneID) = [9]> then\n                                    repeat (30)\n                                        change y by (((0) - (y position)) / (6))\n                                    end\n                                    wait until <<(player x) < [-79]> and <[50] < (player y)>>\n                                    wait (0.5) seconds\n                                    repeat (5)\n                                        next costume\n                                        go to [front v] layer\n                                        wait (0.05) seconds\n                                    end\n                                    wait (0.3) seconds\n                                    repeat (6)\n                                        next costume\n                                        go to [front v] layer\n                                        wait (0.05) seconds\n                                    end\n                                    wait (2) seconds\n                                    set [maze came down? v] to [1]\n                                    repeat (30)\n                                        change y by (((-172) - (y position)) / (6))\n                                    end\n                                else\n                                    if <(CloneID) = [10]> then\n                                        repeat (30)\n                                            change x by (((0) - (x position)) / (6))\n                                        end\n                                        wait (2) seconds\n                                        delete this clone\n                                    else\n                                        if <(CloneID) = [11]> then\n                                            repeat (25)\n                                                change x by (((0) - (x position)) / (2))\n                                            end\n                                            wait (0.8) seconds\n                                            set x to (1)\n                                            repeat (25)\n                                                change x by (((0) - (x position)) / (-2))\n                                            end\n                                            delete this clone\n                                        end\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nchange y by (10)\n\nwhen I receive [reset v]\ndelete this clone\n\nwhen flag clicked\nset [cloneid v] to [0]\nset [maze came down? v] to [0]\n\nwhen I start as a clone\n\nwhen flag clicked\nforever\n    set [player x that doesn't hurt my eyes v] to (round (player x))\nend\n\nwhen I receive [win v]\nstop [other scripts in sprite v]\n\nforever\n    change x by (((player x) - (x position)) / (5))\nend\n\n@marking\n\nwhen flag clicked\nset [ghost v] effect to (50)\nset size to (150) %\nforever\n    if <mouse down?> then\n        wait until <not <mouse down?>>\n        repeat until <mouse down?>\n            go to x: (mouse x) y: (mouse y)\n            create clone of (_myself_ v)\n        end\n        wait until <not <mouse down?>>\n    end\nend\n\nwhen I start as a clone\ngo to [back v] layer\nshow\nrepeat (100)\n    change [ghost v] effect by (0.5)\n    change [color v] effect by (0.1)\n    change size by (-1)\nend\ndelete this clone\n\n@le maze grande\n\nwhen flag clicked\nhide\n\nwhen I receive [reset v]\nhide\nset [maze came down? v] to [0]\nwait (1) seconds\nswitch costume to (blank v)\nset size to (100) %\nswitch costume to (10shiftup v)\nwait until <(maze came down?) = [1]>\ngo to x: (0) y: (100000000)\nwait (2) seconds\nshow\nrepeat (40)\n    change y by (((0) - (y position)) / (5))\nend\nwait until <[-145] < (player x)>\nwait (1) seconds\nrepeat (170)\n    change y by (-0.5)\n    wait (0.05) seconds\nend\nrepeat (400)\n    change y by (-1)\n    wait (0.05) seconds\nend\nrepeat until <(round (y position)) < [-510]>\n    change y by (-0.5)\nend\nrepeat until <(round (y position)) < [-630]>\n    change y by (-1)\nend\nrepeat until <(round (y position)) < [-640]>\n    change y by (((-641) - (y position)) / (5))\nend\n\nforever\n\nchange y by (((-641) - (y position)) / (5))\n\n@hard mode\n\nwhen I receive [hardmode on v]\nif <(hardmode) = [1]> then\n    set [ghost v] effect to (100)\n    hide\n    stop [other scripts in sprite v]\n    switch costume to (on v)\n    go to x: (0) y: (1000)\n    show\n    repeat (20)\n        change y by (((0) - (y position)) / (4))\n        change [ghost v] effect by (-10)\n    end\n    wait (0.5) seconds\n    repeat (10)\n        change y by (((0) - (y position)) / (-4))\n    end\n    repeat (10)\n        change y by (((0) - (y position)) / (-4))\n        change [ghost v] effect by (10)\n    end\n    hide\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [hardmode off v]\nset [ghost v] effect to (100)\nhide\nstop [other scripts in sprite v]\nswitch costume to (off v)\ngo to x: (0) y: (1000)\nshow\nrepeat (20)\n    change y by (((0) - (y position)) / (4))\n    change [ghost v] effect by (-10)\nend\nrepeat (10)\n    change y by (((0) - (y position)) / (-4))\nend\nrepeat (10)\n    change y by (((0) - (y position)) / (-4))\n    change [ghost v] effect by (10)\nend\nhide\n\nwhen I receive [going left v]\nif <(hardmode) = [1]> then\n    set [ghost v] effect to (100)\n    hide\n    stop [other scripts in sprite v]\n    switch costume to (left v)\n    go to x: (0) y: (1000)\n    show\n    repeat (20)\n        change y by (((0) - (y position)) / (4))\n        change [ghost v] effect by (-10)\n    end\n    repeat (10)\n        change y by (((0) - (y position)) / (-4))\n    end\n    repeat (10)\n        change y by (((0) - (y position)) / (-4))\n        change [ghost v] effect by (10)\n    end\n    hide\nend\n\nwhen I receive [going right v]\nif <(hardmode) = [1]> then\n    set [ghost v] effect to (100)\n    hide\n    stop [other scripts in sprite v]\n    switch costume to (right v)\n    go to x: (0) y: (1000)\n    show\n    repeat (20)\n        change y by (((0) - (y position)) / (4))\n        change [ghost v] effect by (-10)\n    end\n    repeat (10)\n        change y by (((0) - (y position)) / (-4))\n    end\n    repeat (10)\n        change y by (((0) - (y position)) / (-4))\n        change [ghost v] effect by (10)\n    end\n    hide\nend\n\nif <(hardmode) = [1]> then\n\n@yay win\n\nwhen I receive [win v]\nif <(timer) < (☁ high score)> then\n    set [☁ high score v] to (timer)\nend\nhide variable [timer v]\nhide variable [☁ deaths v]\n\nwhen flag clicked\ngo to x: (0) y: (0)\nhide\nswitch costume to (blank v)\nset size to (100) %\nset [ghost v] effect to (100)\n\nwhen I receive [win v]\nif <(hardmode) = [1]> then\n    switch costume to (v2 v)\n    go to [front v] layer\n    show\n    repeat (10)\n        change [ghost v] effect by (-10)\n    end\n    wait (2) seconds\n    repeat (710)\n        change y by (0.5)\n    end\n    wait (5) seconds\n    repeat (1540)\n        change y by (1)\n    end\n    repeat (30)\n        change y by (((1900) - (y position)) / (4))\n    end\n    if <not <(username) = [-heron-]>> then\n        change [☁ a v] by (1)\n    end\n    stop [all v]\nend\n\nwait (4) seconds\n\nset [☁ deaths v] to [0]\n\nset [☁ high score v] to [999999999999]\n\nwhen I receive [win v]\nchange [☁ completions v] by (1)\nif <(hardmode) = [0]> then\n    switch costume to (v1 v)\n    go to [front v] layer\n    show\n    repeat (10)\n        change [ghost v] effect by (-10)\n    end\n    wait (2) seconds\n    repeat (1590)\n        change y by (0.5)\n    end\n    repeat (30)\n        change y by (((800) - (y position)) / (4))\n    end\n    stop [all v]\nend\n\n@thumb.\n\nwhen flag clicked\nhide\n\n