Platformer remix

Instructions: Use WASD or arrow keys to move.\nBeat all 30 levels of this simple platformer! The levels get harder!\n\n❤️ + ⭐ if you liked this game!\nFollow me for more games!\n\nCredits:\nI used a platformer engine\n\nMusic:\nGonna Fly Now - Rocky\nPump It Instrumental

@Stage\n\nwhen I receive [start game v]\nwait (0.1) seconds\nwait until <(level) > [25]>\nstop [other scripts in sprite v]\nforever\n    play sound [The Black Eyed Peas - Pump It \(Original Instrumental\) v] until done\nend\n\nwhen I receive [start game v]\nset volume to (30) %\nforever\n    play sound [Impossible quiz theme song \(Gonna fly now by Bill conti\) v] until done\nend\n\nwhen I receive [end v]\nstop [other scripts in sprite v]\nplay sound [Win v] until done\nforever\n    play sound [Dance Around v] until done\nend\n\n@Blank\n\nwhen I receive [hard reset v]\nset [personal record v] to [99999]\n\nbroadcast (Hard Reset v)\n\n@Player\n\nwhen flag clicked\nshow\n\nchange y by (100)\n\ndefine Controls\nif <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > ((y position) + (10))>>> then\n    change [jump v] by (1)\nelse\n    set [jump v] to [0]\nend\n\nwhen I receive [new level v]\ngo to x: (-240) y: (y position)\nchange [level v] by (1)\nset [gravity v] to [0]\nset [key? v] to [0]\nif <(level) = [30]> then\n    go to x: (-240) y: (-105)\nend\n\nwhen I receive [player death v]\ngo to x: (-200) y: (-104)\nstart sound [Crunch v]\nset [gravity v] to [0]\nset [x v] to [0]\nset [y v] to [0]\nset [key? v] to [0]\nbroadcast (Update Level v)\n\nwhen I receive [start game v]\nforever\n    if <(x position) > [239]> then\n        broadcast (New Level v)\n        broadcast (Update Level v)\n    end\n    if <(username) = [NormanTheGamer]> then\n        if <key (l v) pressed?> then\n            ask [Which Level?] and wait\n            if <(answer) = []> then\n                set [level v] to (level)\n            else\n                set [level v] to (answer)\n            end\n            broadcast (Update Level v)\n            wait until <not <key (l v) pressed?>>\n        end\n        if <key (2 v) pressed?> then\n            change [level v] by (1)\n            wait until <not <key (2 v) pressed?>>\n        end\n        if <key (1 v) pressed?> then\n            change [level v] by (-1)\n            wait until <not <key (1 v) pressed?>>\n        end\n    end\n    if <key (r v) pressed?> then\n        broadcast (Player Death v)\n        wait until <not <key (r v) pressed?>>\n    end\nend\n\nwhen I receive [start game v]\nshow\nswitch costume to (front v)\ngo to x: (-190) y: (-104)\nset [gravity v] to [0]\nset [jump v] to [0]\nset [x v] to [0]\nset [y v] to [0]\nset [level v] to [1]\nwait until <not <mouse down?>>\nforever\n    switch costume to (front v)\n    if <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > (x position)>>> then\n        change [x v] by (1)\n    end\n    if <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < (x position)>>> then\n        change [x v] by (-1)\n    end\n    set [x v] to ((x) * (.9))\n    change x by (x)\n    if <(gravity) = [0]> then\n        if <<touching (level v)?> or <<touching (moving platforms v)?> or <<touching (switch blocks v)?> or <touching (key door v)?>>>> then\n            if <touching color (#8c8c8c)?> then\n                change y by (1)\n                if <touching color (#8c8c8c)?> then\n                    change y by (1)\n                    if <touching color (#8c8c8c)?> then\n                        change y by (1)\n                        if <touching color (#8c8c8c)?> then\n                            change y by (1)\n                            if <touching color (#8c8c8c)?> then\n                                change y by (1)\n                                if <touching color (#8c8c8c)?> then\n                                    change y by (-5)\n                                    change x by ((x) * (-1))\n                                    set [x v] to [0]\n                                    if <touching (moving platforms v)?> then\n                                        change x by (x drag)\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    else\n        if <<touching (level v)?> or <<touching (moving platforms v)?> or <<touching (switch blocks v)?> or <touching (key door v)?>>>> then\n            if <touching color (#8c8c8c)?> then\n                change y by (-1)\n                if <touching color (#8c8c8c)?> then\n                    change y by (-1)\n                    if <touching color (#8c8c8c)?> then\n                        change y by (-1)\n                        if <touching color (#8c8c8c)?> then\n                            change y by (-1)\n                            if <touching color (#8c8c8c)?> then\n                                change y by (-1)\n                                if <touching color (#8c8c8c)?> then\n                                    change y by (5)\n                                    change x by ((x) * (-1))\n                                    set [x v] to [0]\n                                    if <touching (moving platforms v)?> then\n                                        change x by (x drag)\n                                        change y by (y drag)\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\n    change [y v] by (-1.5)\n    if <(gravity) = [0]> then\n        change y by (y)\n    else\n        change y by ((y) * (-1))\n    end\n    if <<touching color (#8c8c8c)?> and <<touching (level v)?> or <<touching (moving platforms v)?> or <<touching (switch blocks v)?> or <touching (key door v)?>>>>> then\n        if <(gravity) = [0]> then\n            change y by ((y) * (-1))\n            set [y v] to [0]\n        else\n            change y by (y)\n            set [y v] to [0]\n        end\n    end\n    if <(gravity) = [0]> then\n        change y by (-2)\n    else\n        change y by (2)\n    end\n    if <<<touching color (#8c8c8c)?> and <<touching (level v)?> or <<touching (moving platforms v)?> or <<touching (switch blocks v)?> or <touching (key door v)?>>>>> and <(y) = [0]>> then\n        if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > ((y position) + (10))>>> then\n            start sound [Jump v]\n            change [y v] by (18)\n        end\n        if <touching (moving platforms v)?> then\n            change x by (x drag)\n            change y by (y drag)\n        end\n    end\n    if <(gravity) = [0]> then\n        change y by (1)\n    else\n        change y by (-1)\n    end\n    if <<(x position) < [-240]> and <(level) = [1]>> then\n        set x to (-240)\n    end\n    if <<<<(y position) < [-178]> and <(gravity) = [0]>> or <<(y position) > [178]> and <(gravity) = [1]>>> or <<touching color (#ff0000)?> or <touching color (#830000)?>>> then\n        broadcast (Player Death v)\n    end\n    if <<touching color (#feff00)?> and <(jump) = [1]>> then\n        start sound [Jump v]\n        set [y v] to [18]\n    end\n    if <touching color (#ffef91)?> then\n        start sound [Jump v]\n        set [y v] to [25]\n    end\n    if <<touching color (#00caff)?> and <(jump) = [1]>> then\n        set [gravity v] to ((1) - (gravity))\n        start sound [Jump v]\n        set [y v] to [0]\n    end\n    Controls\nend\n\nwhen I receive [update level v]\nif <(level) = [31]> then\n    broadcast (End v)\nend\n\nwhen I receive [start game v]\nwait until <<(x) > [0]> or <(y) > [0]>>\nset [start timer v] to [1]\n\n@Level\n\nwhen flag clicked\ngo to x: (0) y: (0)\nswitch costume to (1 v)\n\nwhen I receive [start game v]\nforever\n    switch costume to (level)\nend\n\n@Moving Platforms\n\nwhen flag clicked\nhide\n\nwhen I receive [start game v]\nset [x drag v] to [0]\nforever\n    if <(level) = [14]> then\n        show\n        go to x: (([sin v] of ((timer) * (100)) ) * (80)) y: (-50)\n    else\n        if <(level) = [16]> then\n            show\n            go to x: ((([sin v] of ((timer) * (100)) ) * (80)) + (90)) y: (100)\n        else\n            if <(level) = [18]> then\n                show\n                go to x: (0) y: ((([sin v] of ((timer) * (100)) ) * (65)) + (0))\n            else\n                if <(level) = [19]> then\n                    show\n                    go to x: ((([sin v] of ((timer) * (150)) ) * (70)) + (60)) y: (-160)\n                else\n                    if <(level) = [26]> then\n                        show\n                        go to x: ((([sin v] of ((timer) * (100)) ) * (100)) + (-30)) y: (35)\n                    else\n                        hide\n                    end\n                end\n            end\n        end\n    end\n    set [x drag v] to ((x position) - (x2))\n    set [x2 v] to (x position)\n    set [y drag v] to ((y position) - (y2))\n    set [y2 v] to (y position)\nend\n\n@Key Door\n\nwhen flag clicked\nhide\n\nwhen I receive [update level v]\nclear graphic effects\nforever\n    if <(level) = [20]> then\n        switch costume to (key door v)\n        show\n        go to x: (118) y: (-55)\n    else\n        if <(level) = [21]> then\n            switch costume to (key door v)\n            show\n            go to x: (-32) y: (140)\n        else\n            if <(level) = [23]> then\n                switch costume to (key door2 v)\n                show\n                go to x: (0) y: (-100)\n            else\n                if <(level) = [26]> then\n                    switch costume to (key door v)\n                    show\n                    go to x: (244) y: (33)\n                else\n                    if <(level) = [27]> then\n                        switch costume to (key door v)\n                        show\n                        go to x: (240) y: (-64)\n                    else\n                        if <(level) = [28]> then\n                            switch costume to (key door v)\n                            show\n                            go to x: (246) y: (-64)\n                        else\n                            if <(level) = [30]> then\n                                switch costume to (key door v)\n                                show\n                                go to x: (260) y: (126)\n                            else\n                                hide\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen I receive [update level v]\nset [key? v] to [0]\nforever\n    if <(key?) = [1]> then\n        stop [other scripts in sprite v]\n        repeat (10)\n            change [ghost v] effect by (10)\n        end\n        hide\n    end\nend\n\n@Key\n\nwhen flag clicked\nset [key? v] to [0]\nhide\n\nwhen I receive [update level v]\nclear graphic effects\nforever\n    if <(level) = [20]> then\n        show\n        go to x: (192) y: ((([sin v] of ((timer) * (150)) ) * (7)) + (51))\n    else\n        if <(level) = [21]> then\n            show\n            go to x: (192) y: ((([sin v] of ((timer) * (150)) ) * (7)) + (-90))\n        else\n            if <(level) = [23]> then\n                show\n                go to x: (0) y: ((([sin v] of ((timer) * (150)) ) * (7)) + (-50))\n            else\n                if <(level) = [26]> then\n                    show\n                    go to x: (182) y: ((([sin v] of ((timer) * (150)) ) * (7)) + (128))\n                else\n                    if <(level) = [27]> then\n                        show\n                        go to x: (-168) y: ((([sin v] of ((timer) * (150)) ) * (7)) + (70))\n                    else\n                        if <(level) = [28]> then\n                            show\n                            go to x: (-113) y: ((([sin v] of ((timer) * (150)) ) * (7)) + (84))\n                        else\n                            if <(level) = [30]> then\n                                show\n                                go to x: (-209) y: ((([sin v] of ((timer) * (150)) ) * (7)) + (76))\n                            else\n                                hide\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen I receive [update level v]\nwait (1) seconds\nforever\n    if <touching (player v)?> then\n        stop [other scripts in sprite v]\n        start sound [Magic Spell v]\n        set [key? v] to [1]\n        repeat (10)\n            change [ghost v] effect by (10)\n        end\n        hide\n    end\nend\n\n@Switch Blocks\n\nwhen I receive [update level v]\nstop [other scripts in sprite v]\nset [switch v] to [0]\nif <<(level) = [24]> or <<(level) = [25]> or <<(level) = [27]> or <<(level) = [28]> or <(level) = [30]>>>>> then\n    show\n    broadcast (Switch v)\nelse\n    hide\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [switch v]\nforever\n    set [switch v] to ((1) - (switch))\n    if <(level) = [24]> then\n        switch costume to ((1) + (switch))\n    else\n        if <(level) = [25]> then\n            switch costume to ((3) + (switch))\n        else\n            if <(level) = [27]> then\n                switch costume to ((5) + (switch))\n            else\n                if <(level) = [28]> then\n                    switch costume to ((7) + (switch))\n                else\n                    if <(level) = [30]> then\n                        switch costume to ((9) + (switch))\n                    end\n                end\n            end\n        end\n    end\n    wait (1) seconds\n    start sound [Finger Snap v]\nend\n\n@Text\n\ndefine Write Text (text)\nset [i v] to [1]\nrepeat (length of (text))\n    switch costume to (letter (i) of (text))\n    change x by ((15) * ((size) / (100)))\n    create clone of (_myself_ v)\n    change [i v] by (1)\nend\n\nwhen I receive [delete text v]\ndelete this clone\n\nwhen I receive [start game v]\nbroadcast (Delete Text v)\nset [start timer v] to [0]\nwait until <(start timer) = [1]>\nreset timer\nforever\n    broadcast (Delete Text v)\n    go to x: ((-15) * ((length of (timer)) / (2))) y: (-157)\n    Write Text (timer)\nend\n\nwhen flag clicked\nhide\n\nwhen I start as a clone\nshow\n\nwhen I receive [end v]\nstop [other scripts in sprite v]\nif <(timer) < (Personal Record)> then\n    set [personal record v] to (timer)\nend\nif <(Personal Record) < (☁ World Record)> then\n    set [☁ world record v] to (Personal Record)\nend\nwait (0.2) seconds\nchange [☁ complete v] by (1)\n\n@Thumbnail\n\nwhen flag clicked\nset size to (100) %\nset [ghost v] effect to (100)\nforever\n    go to [front v] layer\nend\n\n@Text 2\n\nwhen I receive [start game v]\nset [brightness v] effect to (0)\nforever\n    broadcast (Delete Text 2 v)\n    go to x: (-300) y: (160)\n    Write Text (join (level) [/30])\nend\n\ndefine Write Text (text)\nset [i v] to [1]\nrepeat (length of (text))\n    switch costume to (letter (i) of (text))\n    change x by ((15) * ((size) / (100)))\n    create clone of (_myself_ v)\n    change [i v] by (1)\nend\n\nwhen I receive [delete text 2 v]\ndelete this clone\n\nwhen I receive [end v]\nstop [other scripts in sprite v]\nset [brightness v] effect to (50)\nbroadcast (Delete Text 2 v)\ngo to x: (-8) y: (49)\nWrite Text (Personal Record)\ngo to x: (-30) y: (24)\nWrite Text (☁ World Record)\n\nwhen flag clicked\nhide\n\nwhen I start as a clone\nshow\n\n@Title Screen\n\nwhen flag clicked\nbroadcast (Title Screen v)\n\nwhen I receive [title screen v]\nset size to (100) %\nset [mouse v] to [0]\nif  then\n    delete this clone\nend\nshow\nswitch costume to (1 v)\nwait (0.5) seconds\nswitch costume to (2 v)\ncreate clone of (_myself_ v)\nswitch costume to (1 v)\n\nwhen I start as a clone\nshow\ngo to [front v] layer\nif <(costume [number v]) = [2]> then\n    go to x: (0) y: (-120)\n    set size to (0) %\n    forever\n        change size by (((150) - (size)) / (5))\n        set [brightness v] effect to (<touching (mouse-pointer v)?> * (-10))\n        if <(mouse) = [1]> then\n            broadcast (Start Game v)\n        end\n    end\nend\nif <(costume [number v]) = [3]> then\n    forever\n        go to x: (175) y: (150)\n        set size to (100) %\n        set [brightness v] effect to (<touching (mouse-pointer v)?> * (-10))\n        if <(mouse) = [1]> then\n            broadcast (Start Game v)\n        end\n    end\nend\n\nwhen I receive [start game v]\nstart sound [click xdxdxdxd v]\nif  then\n    delete this clone\nend\nhide\n\nwhen I receive [end v]\nswitch costume to (3 v)\ncreate clone of (_myself_ v)\n\n@Mouse\n\nwhen flag clicked\nforever\n    if <mouse down?> then\n        change [mouse v] by (1)\n    else\n        set [mouse v] to [0]\n    end\nend\n\n