99% Pen Random Platformer 2.4

Instructions: Get to the right side of the screen to continue.\nPress the D key to get your level's data, and the L key to enter a code.\nThe forum for level codes is here: https://scratch.mit.edu/discuss/topic/344431/\nIf you press L, the game will ask you for the first part of the level code. When this happens, enter the first item in the Data list. Once you have done this, press the blue check  mark button. Wait for the game to draw the top of the level; after it has finished it will ask for the second part of the level's code. Now enter the second item in the Data list. This will re-draw the level you are currently on. To make a new level, or to enter someone else's code, enter the different code in the box when it asks for the code.

@Stage\n\nwhen flag clicked\nforever\n    play sound [1-10 Skyloft v] until done\nend\n\n@Level\n\ndefine draw bouncy stuff\npen down\nset pen color to (#b200ff)\nchange x by (30)\n\ndefine draw straight ground section\npen down\nset pen color to (#000000)\nchange x by (30)\n\ndefine draw wall\npen down\nset pen color to (#000000)\nchange y by (30)\n\ndefine draw straight lava section\npen down\nset pen color to (#ff0000)\nchange x by (30)\n\ndefine draw lava wall\npen down\nset pen color to (#ff0000)\nchange y by (30)\n\ndefine draw lava drop\npen down\nset pen color to (#ff0000)\nchange y by (-30)\n\ndefine draw drop\npen down\nset pen color to (#000000)\nchange y by (-30)\n\nwhen I receive [setup v]\ndelete all of [data v]\nshow list [data v]\nadd [] to [data v]\nadd [] to [data v]\npen down\nset pen size to (5)\nset [draw v] to ((30) * (pick random (-3) to (2)))\ngo to x: (-200) y: (Height)\nerase all\ndraw straight ground section\nrepeat until <(x position) = [190]>\n    set [draw v] to (letter (pick random (1) to (16)) of [0123456789$~%@#*])\n    replace item (1) of [data v] with (join (item (1) of [data v]) (draw))\n    if <(draw) = [*]> then\n        draw mud w/out floor underneath\n    end\n    if <(draw) = [@]> then\n        draw bouncy stuff\n    end\n    if <<(draw) = [1]> or <(draw) = [7]>> then\n        draw drop\n    end\n    if <(draw) = [2]> then\n        draw lava drop\n    end\n    if <<(draw) = [3]> and <not <(y position) = [150]>>> then\n        draw lava wall\n    end\n    if <<<(draw) = [4]> or <(draw) = [8]>> and <not <(y position) = [150]>>> then\n        draw wall\n    end\n    if <<(draw) = [5]> or <<(draw) = [9]> or <(draw) = [0]>>> then\n        draw straight ground section\n    end\n    if <(draw) = [6]> then\n        draw straight lava section\n    end\n    if <(draw) = [$]> then\n        draw horizontal gap\n    end\n    if <<(draw) = [~]> and <not <(y position) = [150]>>> then\n        draw up gap\n    end\n    if <(draw) = [%]> then\n        draw down gap\n    end\n    if <(draw) = [#]> then\n        draw mud w/floor underneath\n    end\nend\nset [portal y v] to (y position)\nif <(y position) > [-150]> then\n    pen up\n    go to x: (-200) y: (-180)\n    draw straight ground section\n    repeat until <(x position) = [190]>\n        set [draw v] to (letter (pick random (1) to (15)) of [0123456789$~@#*])\n        replace item (2) of [data v] with (join (item (2) of [data v]) (draw))\n        if <(draw) = [*]> then\n            draw mud w/out floor underneath\n        end\n        if <(draw) = [#]> then\n            draw mud w/floor underneath\n        end\n        if <(draw) = [@]> then\n            draw bouncy stuff\n        end\n        if <<(draw) = [1]> or <(draw) = [0]>> then\n            draw drop\n        end\n        if <(draw) = [2]> then\n            draw lava drop\n        end\n        if <<(draw) = [3]> and <not <(y position) = [150]>>> then\n            draw lava wall\n        end\n        if <<(draw) = [4]> and <not <(y position) = [150]>>> then\n            draw wall\n        end\n        if <<(draw) = [5]> or <<(draw) = [$]> or <(draw) = [~]>>> then\n            draw straight ground section\n        end\n        if <(draw) = [6]> then\n            draw straight lava section\n        end\n        if <(draw) = [7]> then\n            draw horizontal gap\n        end\n        if <<(draw) = [8]> and <not <(y position) = [150]>>> then\n            draw up gap\n        end\n        if <(draw) = [9]> then\n            draw down gap\n        end\n    end\n    set [portal y v] to (y position)\nend\n\nwhen flag clicked\nforever\n    broadcast (setup v) and wait\n    broadcast (start v)\n    wait until <([x position v] of [player v]) > [175]>\n    stop [other scripts in sprite v]\n    wait (0.1) seconds\nend\n\ndefine draw horizontal gap\npen up\nchange x by (30)\n\ndefine draw up gap\npen up\nchange y by (30)\n\ndefine draw down gap\npen up\nchange y by (-30)\n\nwhen [d v] key pressed\nhide list [data v]\nwait until <not <key (d v) pressed?>>\nwait until <key (d v) pressed?>\nwait until <not <key (d v) pressed?>>\nshow list [data v]\n\nwhen [l v] key pressed\nhide\nask [Enter first piece of level code:] and wait\nset [i v] to [0]\ndelete all of [data v]\nshow list [data v]\nadd [] to [data v]\nadd [] to [data v]\nset [draw v] to ((30) * (pick random (-3) to (2)))\ngo to x: (-200) y: (Height)\nerase all\ndraw straight ground section\nrepeat (length of (answer))\n    change [i v] by (1)\n    set [draw v] to (letter (i) of (answer))\n    replace item (1) of [data v] with (join (item (1) of [data v]) (draw))\n    if <(draw) = [*]> then\n        draw mud w/out floor underneath\n    end\n    if <(draw) = [#]> then\n        draw mud w/floor underneath\n    end\n    if <(draw) = [@]> then\n        draw bouncy stuff\n    end\n    if <<(draw) = [1]> or <(draw) = [7]>> then\n        draw drop\n    end\n    if <(draw) = [2]> then\n        draw lava drop\n    end\n    if <<(draw) = [3]> and <not <(y position) = [150]>>> then\n        draw lava wall\n    end\n    if <<<(draw) = [4]> or <(draw) = [8]>> and <not <(y position) = [150]>>> then\n        draw wall\n    end\n    if <<(draw) = [5]> or <<(draw) = [9]> or <(draw) = [0]>>> then\n        draw straight ground section\n    end\n    if <(draw) = [6]> then\n        draw straight lava section\n    end\n    if <(draw) = [$]> then\n        draw horizontal gap\n    end\n    if <<(draw) = [~]> and <not <(y position) = [150]>>> then\n        draw up gap\n    end\n    if <(draw) = [%]> then\n        draw down gap\n    end\nend\nset [i v] to [0]\nask [Enter second piece of level code:] and wait\npen up\ngo to x: (-200) y: (-180)\ndraw straight ground section\nrepeat (length of (answer))\n    change [i v] by (1)\n    set [draw v] to (letter (i) of (answer))\n    replace item (2) of [data v] with (join (item (2) of [data v]) (draw))\n    if <(draw) = [*]> then\n        draw mud w/out floor underneath\n    end\n    if <(draw) = [#]> then\n        draw mud w/floor underneath\n    end\n    if <(draw) = [@]> then\n        draw bouncy stuff\n    end\n    if <<(draw) = [1]> or <(draw) = [7]>> then\n        draw drop\n    end\n    if <(draw) = [2]> then\n        draw lava drop\n    end\n    if <<(draw) = [3]> and <not <(y position) = [150]>>> then\n        draw lava wall\n    end\n    if <<<(draw) = [4]> or <(draw) = [8]>> and <not <(y position) = [150]>>> then\n        draw wall\n    end\n    if <<(draw) = [5]> or <<(draw) = [9]> or <(draw) = [0]>>> then\n        draw straight ground section\n    end\n    if <(draw) = [6]> then\n        draw straight lava section\n    end\n    if <(draw) = [$]> then\n        draw horizontal gap\n    end\n    if <<(draw) = [~]> and <not <(y position) = [150]>>> then\n        draw up gap\n    end\n    if <(draw) = [%]> then\n        draw down gap\n    end\nend\nbroadcast (start v)\n\nask [Enter second piece of level code:] and wait\n\ndefine draw mud w/floor underneath\npen up\nchange y by (5)\npen down\nset pen color to (#bf6b00)\nchange x by (30)\npen up\nchange x by (-30)\nchange y by (-5)\npen down\nset pen color to (#000000)\nchange x by (30)\n\ndefine draw mud w/out floor underneath\npen down\nset pen color to (#bf6b00)\nchange x by (30)\n\n@Player\n\nwhen I receive [start v]\nset [walk frame v] to [0]\nset [yv v] to [0]\nset [xv v] to [0]\nset [weight v] to [1]\nset [jump speed v] to [11]\nset [speed v] to [0.85]\nset [touching portal? v] to [0]\nrepeat until <(x position) > [235]>\n    physics\n    if <<<(y position) < [-169]> and <not <touching color (#b200ff)?>>> or <touching color (#ff0000)?>> then\n        set x to (-185)\n        set y to ((30) + (Height))\n        broadcast (start v)\n    end\n    if <touching color (#b200ff)?> then\n        set [yv v] to [14]\n    end\n    if <touching color (#bf6b00)?> then\n        set [yv v] to ((Yv) / (2))\n        set [xv v] to ((Xv) / (2))\n    end\nend\n\ndefine physics\ngravity\nif <not <touching color (#bf6b00)?>> then\n    jump\nend\nwalk\n\ndefine gravity\nset size to (100) %\nswitch costume to (costume1 v)\nchange [yv v] by ((0) - (Weight))\nchange y by (Yv)\nset [reverse step v] to [0]\nif <touching color (#000000)?> then\n    if <(Yv) < [0]> then\n        set [reverse step v] to [1]\n    else\n        set [reverse step v] to [-1]\n    end\n    set [yv v] to [0]\n    repeat until <not <touching color (#000000)?>>\n        change y by (Reverse Step)\n    end\nend\nsmoothen stand\n\ndefine jump\nswitch costume to (costume1 v)\nset size to (100) %\nchange y by (-8)\nif <<touching color (#000000)?> and <key (up arrow v) pressed?>> then\n    set [yv v] to (Jump Speed)\nend\nchange y by (8)\n\ndefine walk\nset size to (100) %\nswitch costume to (costume1 v)\nset rotation style [left-right v]\nif <key (right arrow v) pressed?> then\n    change [xv v] by (Speed)\n    change [walk frame v] by (0.5)\n    point in direction (90)\nend\nif <key (left arrow v) pressed?> then\n    change [xv v] by ((0) - (Speed))\n    change [walk frame v] by (0.5)\n    point in direction (-90)\nend\nchange x by (Xv)\nchange y by (1)\nif <touching color (#000000)?> then\n    change x by ((0) - (Xv))\n    if <key (up arrow v) pressed?> then\n        change y by (-1)\n        if <touching color (#000000)?> then\n            set [xv v] to [0]\n        else\n            set [xv v] to ((direction) / (-9))\n            set [yv v] to (Jump Speed)\n        end\n    else\n        set [xv v] to [0]\n    end\nend\nset [xv v] to ((Xv) / (1.15))\n\ndefine smoothen stand\nchange y by (-1)\nif <touching color (#000000)?> then\n    set [yv v] to [0]\nend\nchange y by (1)\n\nwhen I receive [setup v]\nstop [other scripts in sprite v]\nset x to (-185)\nset y to ((30) + (Height))\n\nwhen [l v] key pressed\nstop [other scripts in sprite v]\nset x to (-185)\nset y to ((30) + (Height))\n\n