100% Pen Platformer
@Stage\n\n@Pen\n\ndefine Render (length) (height) (color#) (x) (y) (roundness) Id (id#) (block)\nset pen size to (roundness)\ngo to x: (x) y: (y)\nchange x by ((((length) / (2)) - ((roundness) / (2))) * (-1))\nchange y by ((((height) / (2)) - ((roundness) / (2))) * (-1))\nif <(length) > (height)> then\n    repeat ((height) - ((roundness) - (1)))\n        pen down\n        change x by ((length) - (roundness))\n        change x by (((length) - (roundness)) * (-1))\n        pen up\n        change y by (1)\n    end\nelse\n    repeat ((length) - ((roundness) - (1)))\n        pen down\n        change y by ((height) - (roundness))\n        change y by (((height) - (roundness)) * (-1))\n        pen up\n        change x by (1)\n    end\nend\nset [death v] to [0]\nif <(block) = [0]> then\n    if <<((Y) - ((Character Size) / (2))) < ((y) + ((height) / (2)))> and <((Y) + ((Character Size) / (2))) > ((y) - ((height) / (2)))>> then\n        if <<((X) + ((Character Size) / (2))) > ((x) - ((length) / (2)))> and <((X) - ((Character Size) / (2))) < ((x) + ((length) / (2)))>> then\n            if <(color#) = [purple]> then\n                if <(Y Speed) < [1]> then\n                    set [ground v] to [0]\n                    set [y speed v] to [23]\n                    start sound [Spring-Boing v]\n                end\n            end\n            if <(color#) = [red]> then\n                start sound [Oof v]\n                set [ground v] to [0]\n                set [death v] to [1]\n                set [wall v] to [0]\n                set [x speed v] to [0]\n                set [y speed v] to [0]\n                set [x v] to (item (Level) of [level reset x v])\n                set [y v] to (item (Level) of [level reset y v])\n            end\n        end\n    end\nend\nif <<(block) = [1]> and <(death) = [0]>> then\n    if <(Ground) = [0]> then\n        replace item (id#) of [ground v] with [0]\n    end\n    if <(Wall) = [0]> then\n        replace item (id#) of [wall v] with [0]\n    end\n    if <(item (id#) of [ground v]) = [1]> then\n        set [y speed v] to [0]\n        if <not <<((X) + ((Character Size) / (2))) > ((x) - ((length) / (2)))> and <((X) - ((Character Size) / (2))) < ((x) + ((length) / (2)))>>> then\n            replace item (id#) of [ground v] with [0]\n            set [ground v] to [0]\n        end\n    end\n    if <<not <(item (id#) of [wall v]) = [0]>> and <<(Wall) = [1]> or <(Wall) = [2]>>> then\n        set [x speed v] to [0]\n        if <not <<((Y) - ((Character Size) / (2))) < ((y) + ((height) / (2)))> and <((Y) + ((Character Size) / (2))) > ((y) - ((height) / (2)))>>> then\n            replace item (id#) of [wall v] with [0]\n            if <not <[wall v] contains [1]?>> then\n                set [wall v] to [0]\n            end\n        end\n        if <(item (id#) of [wall v]) = [1]> then\n            set [x v] to (((x) - ((length) / (2))) - ((Character Size) / (2)))\n        else\n            if <(item (id#) of [wall v]) = [2]> then\n                set [x v] to (((x) + ((length) / (2))) + ((Character Size) / (2)))\n            end\n        end\n    else\n        if <<((X) + ((Character Size) / (2))) > ((x) - ((length) / (2)))> and <((X) - ((Character Size) / (2))) < ((x) + ((length) / (2)))>> then\n            if <<((Y) - ((Character Size) / (2))) < ((y) + ((height) / (2)))> and <((Y) + ((Character Size) / (2))) > ((y) - ((height) / (2)))>> then\n                set [hit v] to (item (1) of [hit v])\n                if <<not <([abs v] of (X) ) > [229]>> and <not <<((Hit) + ((Character Size) / (2))) > ((x) - ((length) / (2)))> and <((Hit) - ((Character Size) / (2))) < ((x) + ((length) / (2)))>>>> then\n                    if <(X Speed) > [0]> then\n                        set [wall v] to [1]\n                        set [x speed v] to [0]\n                        set [x v] to (((x) - ((length) / (2))) - ((Character Size) / (2)))\n                        replace item (id#) of [wall v] with [1]\n                    else\n                        set [wall v] to [2]\n                        set [x speed v] to [0]\n                        set [x v] to (((x) + ((length) / (2))) + ((Character Size) / (2)))\n                        replace item (id#) of [wall v] with [2]\n                    end\n                else\n                    if <<(Y) < (y)> and <(Y Speed) > [0]>> then\n                        set [y v] to (((y) - ((height) / (2))) - ((Character Size) / (2)))\n                        set [y speed v] to [0]\n                    else\n                        set [ground v] to [1]\n                        set [y v] to (((y) + ((height) / (2))) + ((Character Size) / (2)))\n                        set [y speed v] to [0]\n                        replace item (id#) of [ground v] with [1]\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen flag clicked\ndelete all of [ground v]\ndelete all of [wall v]\nset [id# v] to [0]\nwait (3) seconds\ncreate [64] clones\nwait until <(Level) = [15]>\nstart sound [Ta-da v]\nhide variable [level v]\nrepeat (3)\n    hide variable [timer v]\n    wait (0.3) seconds\n    show variable [timer v]\n    wait (0.3) seconds\nend\nstop [this script v]\n\nwhen I start as a clone\nif <(ID#) = [1]> then\n    Draw Block  Length [500] Height [40] Color [7000] Go to x [0] Go to y [-160] Edge Roundness [10] Id# (ID#) Block [1] Which Level? [all] movex [0] movey [0]\nend\nif <(ID#) = [2]> then\n    Draw Block  Length [500] Height [2] Color [brown] Go to x [0] Go to y [-140] Edge Roundness [1] Id# (ID#) Block [1] Which Level? [all] movex [0] movey [0]\nend\nif <(ID#) = [3]> then\n    Draw Block  Length [175] Height [30] Color [red] Go to x [0] Go to y [-153.5] Edge Roundness [20] Id# (ID#) Block [0] Which Level? [2] movex [0] movey [0]\nend\nif <(ID#) = [4]> then\n    Draw Block  Length [40] Height [240] Color [4000] Go to x [0] Go to y [0] Edge Roundness [20] Id# (ID#) Block [1] Which Level? [3] movex [0] movey [0]\nend\nif <(ID#) = [5]> then\n    Draw Block  Length [40] Height [215] Color [4000] Go to x [-150] Go to y [15] Edge Roundness [20] Id# (ID#) Block [1] Which Level? [3] movex [0] movey [0]\nend\nif <(ID#) = [6]> then\n    Draw Block  Length [100] Height [25] Color [red] Go to x [130] Go to y [-126] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [3] movex [0] movey [0]\nend\nif <(ID#) = [7]> then\n    Draw Block  Length [50] Height [25] Color [purple] Go to x [-90] Go to y [-126] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [4] movex [0] movey [0]\nend\nif <(ID#) = [8]> then\n    Draw Block  Length [300] Height [28] Color [green] Go to x [85] Go to y [73] Edge Roundness [18] Id# (ID#) Block [1] Which Level? [4] movex [0] movey [0]\nend\nif <(ID#) = [9]> then\n    Draw Block  Length [28] Height [223] Color [green] Go to x [220] Go to y [-25] Edge Roundness [18] Id# (ID#) Block [1] Which Level? [4] movex [0] movey [0]\nend\nif <(ID#) = [10]> then\n    Draw Block  Length [300] Height [30] Color [14050] Go to x [60] Go to y [-120] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [5] movex [0] movey [0]\nend\nif <(ID#) = [11]> then\n    Draw Block  Length [300] Height [30] Color [14050] Go to x [65] Go to y [-70] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [5] movex [0] movey [0]\nend\nif <(ID#) = [12]> then\n    Draw Block  Length [300] Height [30] Color [14050] Go to x [70] Go to y [-20] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [5] movex [0] movey [0]\nend\nif <(ID#) = [13]> then\n    Draw Block  Length [300] Height [30] Color [14050] Go to x [75] Go to y [30] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [5] movex [0] movey [0]\nend\nif <(ID#) = [14]> then\n    Draw Block  Length [300] Height [30] Color [14050] Go to x [80] Go to y [80] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [5] movex [0] movey [0]\nend\nif <(ID#) = [15]> then\n    Draw Block  Length [300] Height [30] Color [14050] Go to x [85] Go to y [130] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [5] movex [0] movey [0]\nend\nif <(ID#) = [16]> then\n    Draw Block  Length [350] Height [30] Color [red] Go to x [65] Go to y [80] Edge Roundness [30] Id# (ID#) Block [0] Which Level? [6] movex [0] movey [0]\nend\nif <(ID#) = [17]> then\n    Draw Block  Length [50] Height [25] Color [purple] Go to x [-150] Go to y [-126] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [6] movex [0] movey [0]\nend\nif <(ID#) = [18]> then\n    Draw Block  Length [50] Height [25] Color [purple] Go to x [-50] Go to y [-126] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [6] movex [0] movey [0]\nend\nif <(ID#) = [19]> then\n    Draw Block  Length [50] Height [25] Color [purple] Go to x [50] Go to y [-126] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [6] movex [0] movey [0]\nend\nif <(ID#) = [20]> then\n    Draw Block  Length [50] Height [25] Color [purple] Go to x [150] Go to y [-126] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [6] movex [0] movey [0]\nend\nif <(ID#) = [21]> then\n    Draw Block  Length [30] Height [81] Color [brown] Go to x [240] Go to y [-101] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [6] movex [0] movey [0]\nend\nif <(ID#) = [22]> then\n    Draw Block  Length [25] Height [83] Color [1450] Go to x [240] Go to y [-104] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [6] movex [0] movey [0]\nend\nif <(ID#) = [23]> then\n    Draw Block  Length [500] Height [100] Color [red] Go to x [0] Go to y [-150] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [7] movex [0] movey [0]\nend\nif <(ID#) = [24]> then\n    Draw Block  Length [35] Height [10] Color [3250] Go to x [-220] Go to y [-80] Edge Roundness [1] Id# (ID#) Block [1] Which Level? [7] movex [0] movey [0]\nend\nif <(ID#) = [25]> then\n    Draw Block  Length [10] Height [10] Color [3250] Go to x [-95] Go to y [-15] Edge Roundness [1] Id# (ID#) Block [1] Which Level? [7] movex [0] movey [0]\nend\nif <(ID#) = [26]> then\n    Draw Block  Length [10] Height [10] Color [3250] Go to x [100] Go to y [-50] Edge Roundness [1] Id# (ID#) Block [1] Which Level? [7] movex [0] movey [0]\nend\nif <(ID#) = [27]> then\n    Draw Block  Length [40] Height [240] Color [-20] Go to x [0] Go to y [0] Edge Roundness [20] Id# (ID#) Block [1] Which Level? [8] movex [0] movey [0]\nend\nif <(ID#) = [28]> then\n    Draw Block  Length [40] Height [215] Color [-20] Go to x [-150] Go to y [15] Edge Roundness [20] Id# (ID#) Block [1] Which Level? [8] movex [0] movey [0]\nend\nif <(ID#) = [29]> then\n    Draw Block  Length [450] Height [10] Color [-20] Go to x [0] Go to y [170] Edge Roundness [10] Id# (ID#) Block [1] Which Level? [8] movex [0] movey [0]\nend\nif <(ID#) = [30]> then\n    Draw Block  Length [50] Height [270] Color [red] Go to x [120] Go to y [25] Edge Roundness [20] Id# (ID#) Block [0] Which Level? [8] movex [1] movey [0]\nend\nif <(ID#) = [31]> then\n    Draw Block  Length [50] Height [25] Color [purple] Go to x [220] Go to y [-126] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [8] movex [0] movey [0]\nend\nif <(ID#) = [32]> then\n    Draw Block  Length [50] Height [10] Color [4000] Go to x [-200] Go to y [-87] Edge Roundness [10] Id# (ID#) Block [1] Which Level? [9] movex [0] movey [0]\nend\nif <(ID#) = [33]> then\n    Draw Block  Length [50] Height [10] Color [green] Go to x [0] Go to y [-87] Edge Roundness [10] Id# (ID#) Block [1] Which Level? [9] movex [2] movey [0]\nend\nif <(ID#) = [34]> then\n    Draw Block  Length [500] Height [100] Color [red] Go to x [0] Go to y [-150] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [9] movex [0] movey [0]\nend\nif <(ID#) = [35]> then\n    Draw Block  Length [50] Height [25] Color [purple] Go to x [-205] Go to y [-126] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [10] movex [0] movey [0]\nend\nif <(ID#) = [36]> then\n    Draw Block  Length [60] Height [150] Color [green] Go to x [-150] Go to y [-63] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [10] movex [0] movey [0]\nend\nif <(ID#) = [37]> then\n    Draw Block  Length [50] Height [225] Color [red] Go to x [70] Go to y [-21] Edge Roundness [20] Id# (ID#) Block [0] Which Level? [10] movex [3] movey [0]\nend\nif <(ID#) = [38]> then\n    Draw Block  Length [50] Height [25] Color [purple] Go to x [-95] Go to y [-126] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [10] movex [0] movey [0]\nend\nif <(ID#) = [39]> then\n    Draw Block  Length [375] Height [30] Color [14050] Go to x [-50] Go to y [-65] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [11] movex [0] movey [0]\nend\nif <(ID#) = [40]> then\n    Draw Block  Length [375] Height [30] Color [14050] Go to x [50] Go to y [25] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [11] movex [0] movey [0]\nend\nif <(ID#) = [41]> then\n    Draw Block  Length [375] Height [30] Color [14050] Go to x [-50] Go to y [115] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [11] movex [0] movey [0]\nend\nif <(ID#) = [42]> then\n    Draw Block  Length [28] Height [223] Color [14050] Go to x [225] Go to y [-25] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [11] movex [0] movey [0]\nend\nif <(ID#) = [43]> then\n    Draw Block  Length [55] Height [25] Color [red] Go to x [175] Go to y [30] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [11] movex [0] movey [1]\nend\nif <(ID#) = [44]> then\n    Draw Block  Length [50] Height [25] Color [red] Go to x [-170] Go to y [30] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [11] movex [0] movey [1]\nend\nif <(ID#) = [45]> then\n    Draw Block  Length [40] Height [215] Color [3250] Go to x [-150] Go to y [15] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [12] movex [0] movey [0]\nend\nif <(ID#) = [46]> then\n    Draw Block  Length [40] Height [240] Color [3250] Go to x [0] Go to y [0] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [12] movex [0] movey [0]\nend\nif <(ID#) = [47]> then\n    Draw Block  Length [41] Height [40] Color [red] Go to x [0] Go to y [0] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [12] movex [0] movey [2]\nend\nif <(ID#) = [48]> then\n    Draw Block  Length [41] Height [40] Color [red] Go to x [-150] Go to y [15] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [12] movex [0] movey [3]\nend\nif <(ID#) = [49]> then\n    Draw Block  Length [200] Height [25] Color [red] Go to x [125] Go to y [-126] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [12] movex [0] movey [0]\nend\nif <(ID#) = [50]> then\n    Draw Block  Length [300] Height [25] Color [red] Go to x [0] Go to y [-75] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [13] movex [0] movey [4]\nend\nif <(ID#) = [51]> then\n    Draw Block  Length [25] Height [25] Color [red] Go to x [-135] Go to y [-75] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [13] movex [0] movey [5]\nend\nif <(ID#) = [52]> then\n    Draw Block  Length [95] Height [25] Color [sky] Go to x [200] Go to y [-97] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [14] movex [0] movey [0]\nend\nif <(ID#) = [53]> then\n    Draw Block  Length [500] Height [100] Color [red] Go to x [0] Go to y [-150] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [14] movex [0] movey [0]\nend\nif <(ID#) = [54]> then\n    Draw Block  Length [50] Height [25] Color [purple] Go to x [-45] Go to y [-75] Edge Roundness [15] Id# (ID#) Block [0] Which Level? [14] movex [4] movey [0]\nend\nif <(ID#) = [55]> then\n    Draw Block  Length [25] Height [50] Color [green] Go to x [-225] Go to y [-50] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [14] movex [0] movey [0]\nend\nif <(ID#) = [56]> then\n    Draw Block  Length [28] Height [175] Color [green] Go to x [150] Go to y [35] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [14] movex [0] movey [0]\nend\nif <(ID#) = [57]> then\n    Draw Block  Length [28] Height [223] Color [green] Go to x [225] Go to y [55] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [14] movex [0] movey [0]\nend\nif <(ID#) = [58]> then\n    Draw Block  Length [150] Height [150] Color [3250] Go to x [0] Go to y [0] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [15] movex [0] movey [0]\nend\nif <(ID#) = [59]> then\n    Draw Block  Length [50] Height [15] Color [4000] Go to x [0] Go to y [-50] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [15] movex [0] movey [0]\nend\nif <(ID#) = [60]> then\n    Draw Block  Length [20] Height [15] Color [4000] Go to x [20] Go to y [-45] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [15] movex [0] movey [0]\nend\nif <(ID#) = [61]> then\n    Draw Block  Length [20] Height [15] Color [4000] Go to x [-20] Go to y [-45] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [15] movex [0] movey [0]\nend\nif <(ID#) = [62]> then\n    Draw Block  Length [15] Height [15] Color [4000] Go to x [-35] Go to y [45] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [15] movex [0] movey [0]\nend\nif <(ID#) = [63]> then\n    Draw Block  Length [15] Height [15] Color [4000] Go to x [35] Go to y [45] Edge Roundness [15] Id# (ID#) Block [1] Which Level? [15] movex [0] movey [0]\nend\nif <(ID#) = [64]> then\n    Draw Block  Length [1] Height [320] Color [sky] Go to x [230] Go to y [22] Edge Roundness [1] Id# (ID#) Block [1] Which Level? [15] movex [0] movey [0]\nend\n\ndefine Draw Block  Length (length) Height (hght) Color (color#) Go to x (x) Go to y (y) Edge Roundness (roundness) Id# (id#) Block (decoration) Which Level? (level) movex (movex) movey (movey)\nif <<<(color#) = [sky]> or <(color#) = [green]>> or <<<(color#) = [brown]> or <(color#) = [purple]>> or <<(color#) = [red]> or <(color#) = [yellow]>>>> then\n    if <(color#) = [brown]> then\n        set pen color to (#b35400)\n    end\n    if <(color#) = [purple]> then\n        set pen color to (#d300cb)\n    end\n    if <(color#) = [yellow]> then\n        set pen color to (#ffcb00)\n    end\n    if <(color#) = [red]> then\n        set pen color to (#ff0000)\n    end\n    if <(color#) = [green]> then\n        set pen color to (#0dca36)\n    end\n    if <(color#) = [sky]> then\n        set pen color to (#00f7f7)\n    end\nelse\n    set pen (color v) to (color#)\nend\nwait until <<(level) = [end]> or <<(level) = (Level)> or <(level) = [all]>>>\nif <(level) = [all]> then\n    forever\n        Render (length) (hght) (color#) (x) (y) (roundness) Id (id#) (decoration)\n    end\nelse\n    repeat until <not <(level) = (Level)>>\n        if <<(movex) > [0]> or <(movey) > [0]>> then\n            if <<(movex) > [0]> and <(movey) > [0]>> then\n                Render (length) (hght) (color#) ((x) + (item (movex) of [movex v])) ((y) + (item (movey) of [movey v])) (roundness) Id (id#) (decoration)\n            else\n                if <(movex) > [0]> then\n                    Render (length) (hght) (color#) ((x) + (item (movex) of [movex v])) (y) (roundness) Id (id#) (decoration)\n                else\n                    Render (length) (hght) (color#) (x) ((y) + (item (movey) of [movey v])) (roundness) Id (id#) (decoration)\n                end\n            end\n        else\n            Render (length) (hght) (color#) (x) (y) (roundness) Id (id#) (decoration)\n        end\n    end\n    if <not <<(movex) > [0]> or <(movey) > [0]>>> then\n        delete this clone\n    end\nend\n\nwhen flag clicked\nforever\n    reset timer\nend\n\nwhen flag clicked\nhide variable [level v]\nhide variable [timer v]\nwait (3) seconds\nshow variable [level v]\nshow variable [timer v]\n\ndefine create (#) clones\nrepeat (#)\n    change [id# v] by (1)\n    add [0] to [ground v]\n    add [0] to [wall v]\n    create clone of (_myself_ v)\nend\n\ndefine add a movex variant range (range) acceleration (acceleration) (id#) Pause (pause)\nadd ((((range) / (2)) * (acceleration)) / (2)) to [movex v]\nforever\n    repeat (round ((range) / (2)))\n        replace item ((id#) + (1)) of [movex v] with ((item ((id#) + (1)) of [movex v]) - (acceleration))\n    end\n    wait (pause) seconds\n    repeat (round ((range) / (2)))\n        replace item ((id#) + (1)) of [movex v] with ((item ((id#) + (1)) of [movex v]) + (acceleration))\n    end\n    wait (pause) seconds\nend\n\ndefine add a movey variant range (range) acceleration (acceleration) (id#) Pause (pause) start (start)\nadd ((((range) / (2)) * (acceleration)) / (2)) to [movey v]\nwait (start) seconds\nforever\n    repeat ((range) / (2))\n        replace item ((id#) + (1)) of [movey v] with ((item ((id#) + (1)) of [movey v]) - (acceleration))\n    end\n    wait (pause) seconds\n    repeat ((range) / (2))\n        replace item ((id#) + (1)) of [movey v] with ((item ((id#) + (1)) of [movey v]) + (acceleration))\n    end\n    wait (pause) seconds\nend\n\nwhen flag clicked\nset [move v] to [0]\ndelete all of [movey v]\ndelete all of [movex v]\nstop [this script v]\n\nwhen I start as a clone\nif <(ID#) = [30]> then\n    add a movex variant range [48] acceleration [5] (length of [movex v]) Pause [0]\nend\nif <(ID#) = [33]> then\n    add a movex variant range [130] acceleration [4] (length of [movex v]) Pause [1]\nend\nif <(ID#) = [38]> then\n    add a movex variant range [60] acceleration [10] (length of [movex v]) Pause [0]\nend\nif <(ID#) = [43]> then\n    add a movey variant range [40] acceleration [15] (length of [movey v]) Pause [0] start [0]\nend\nif <(ID#) = [47]> then\n    add a movey variant range [140] acceleration [3] (length of [movey v]) Pause [0] start [0]\nend\nif <(ID#) = [48]> then\n    add a movey variant range [120] acceleration [3] (length of [movey v]) Pause [0] start [0]\nend\nif <(ID#) = [50]> then\n    add a movey variant range [50] acceleration [3] (length of [movey v]) Pause [1] start [0]\nend\nif <(ID#) = [51]> then\n    add a movey variant range [50] acceleration [3] (length of [movey v]) Pause [1] start [2]\nend\nif <(ID#) = [52]> then\n    add a movex variant range [80] acceleration [7] (length of [movex v]) Pause [0]\nend\n\n@Pen Physics\n\nwhen flag clicked\nset [x v] to [0]\nset [wall v] to [0]\nwait (3) seconds\nforever\n    if <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > [0]>>> then\n        set [wall v] to [0]\n        repeat until <<(X Speed) = [10]> or <not <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > [0]>>>>>\n            change [x speed v] by (1)\n        end\n        if <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > [0]>>> then\n            repeat until <not <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > [0]>>>>\n                set [x speed v] to [10]\n            end\n        end\n        repeat until <<(X Speed) = [0]> or <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > [0]>>>>\n            change [x speed v] by (-1)\n        end\n    end\n    if <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < [0]>>> then\n        set [wall v] to [0]\n        repeat until <<(X Speed) = [-10]> or <not <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < [0]>>>>>\n            change [x speed v] by (-1)\n        end\n        if <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < [0]>>> then\n            repeat until <not <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < [0]>>>>\n                set [x speed v] to [-10]\n            end\n        end\n        repeat until <<(X Speed) = [0]> or <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < [0]>>>>\n            change [x speed v] by (1)\n        end\n    end\nend\n\nwhen flag clicked\nset [y speed v] to [0]\nset [y v] to [0]\nset [ground v] to [0]\nwait (3) seconds\nforever\n    if <(Ground) = [0]> then\n        if <not <(Wall Jump) = [0]>> then\n            set [y speed v] to [-3]\n        else\n            change [y speed v] by (-1)\n        end\n        change [y v] by (Y Speed)\n    end\n    if <(Wall) = [0]> then\n        change [x v] by (X Speed)\n    end\nend\n\nwhen flag clicked\nwait (3) seconds\nforever\n    set [wall jump v] to [0]\n    if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> and <(Ground) = [1]>> then\n        set [wall jump v] to [0]\n        set [y speed v] to [15]\n        set [ground v] to [0]\n        wait until <<<not <(Wall) = [0]>> and <(Y Speed) < [10]>> or <(Ground) = [1]>>\n    end\n    if <not <(Wall) = [0]>> then\n        set [wall jump v] to (Wall)\n        wait until <<(Wall) = [0]> or <(Ground) = [1]>>\n        if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <(Y Speed) > [0]>> then\n            if <<<(Wall Jump) = [1]> and <(X Speed) < [0]>> or <<(Wall Jump) = [2]> and <(X Speed) > [0]>>> then\n                set [y speed v] to [13]\n                set [wall v] to [0]\n                set [wall jump v] to [0]\n            end\n        end\n    end\nend\n\nwhen flag clicked\nwait (3) seconds\ndelete all of [hit v]\nset [hit v] to [0]\nforever\n    add (X) to [hit v]\n    if <(length of [hit v]) > [2]> then\n        delete (1) of [hit v]\n    end\nend\n\nwhen flag clicked\nwait (3) seconds\nforever\n    if <(X) > [235]> then\n        change [level v] by (1)\n        set [x v] to [-229]\n        set [death v] to [0]\n        if <<(Ground) = [1]> and <(Y) > [-224]>> then\n            set [ground v] to [0]\n        end\n    end\nend\n\nwhen flag clicked\nwait (3) seconds\nforever\n    if <(X) < [-229]> then\n        set [x speed v] to [0]\n        set [x v] to [-230]\n    end\nend\n\ndefine Set a level reset  x (x) y (y) (times) times\nrepeat (times)\n    add (x) to [level reset x v]\n    add (y) to [level reset y v]\nend\n\nwhen flag clicked\nset [level v] to [1]\nset [death v] to [0]\ndelete all of [level reset x v]\ndelete all of [level reset y v]\nSet a level reset  x [-220] y [20] [10] times\nSet a level reset  x [0] y [-100] [1] times\nSet a level reset  x [-220] y [20] [3] times\n\nwhen flag clicked\ndelete all of [lowest times v]\nshow list [lowest times v]\nwait (3) seconds\nset [timer v] to [0]\nset [low time v] to [0]\nrepeat until <(Level) = [15]>\n    wait (0.04) seconds\n    change [timer v] by (0.1)\nend\nif <(timer) < (☁ score1)> then\n    set [☁ score3 v] to (☁ score2)\n    set [☁ score2 v] to (☁ score1)\n    set [☁ score1 v] to (timer)\n    set [low time v] to [1]\nelse\n    if <(timer) < (☁ score2)> then\n        set [☁ score3 v] to (☁ score2)\n        set [☁ score2 v] to (timer)\n        set [low time v] to [2]\n    else\n        if <(timer) < (☁ score3)> then\n            set [☁ score3 v] to (timer)\n            set [low time v] to [3]\n        end\n    end\nend\nadd (☁ score1) to [lowest times v]\nadd (☁ score2) to [lowest times v]\nadd (☁ score3) to [lowest times v]\nif <(low time) > [0]> then\n    replace item (low time) of [lowest times v] with (join (item (low time) of [lowest times v]) (join [   ] [<<<YOUR TIME]))\nend\nwait (3) seconds\nhide list [lowest times v]\n\n@Pen Player\n\nwhen flag clicked\ndraw logo background\ndraw logo [1]\nwait (0.5) seconds\ndraw logo [2]\nwait (0.5) seconds\ndraw logo [3]\nwait (2) seconds\nset [character size v] to [23]\nforever\n    erase all\n    set pen size to (1000)\n    set pen color to (#00f7f7)\n    go to x: (0) y: (0)\n    pen down\n    pen up\n    go to x: (X) y: (Y)\n    set pen color to (#ffcb00)\n    set pen size to (23)\n    pen down\nend\n\nwhen flag clicked\nset volume to (40) %\nrepeat until <(Level) = [15]>\n    play sound [JJD  AudioBlade - Stellar \[Ninety9Lives Release\] v] until done\n    play sound [LFZ - Palmtrees and Coconuts v] until done\n    play sound [Purple Planet Music - Energy - Work It \(1_56\) 100bpm v] until done\n    play sound [Purple Planet Music - Energy - Mass Mania \(2_19\) 120bpm2 v] until done\nend\nstop [this script v]\n\ndefine draw logo (color)\npen up\ngo to x: (-159) y: (-149)\npen down\nif <(color) = [1]> then\n    set pen color to (#ffffff)\nelse\n    if <(color) = [2]> then\n        set pen color to (#ffd416)\n    else\n        set pen color to (#37b55a)\n    end\nend\nset pen size to (10)\nrepeat (100)\n    change y by (2)\n    change x by (0.675)\nend\nrepeat (12)\n    change y by (2)\n    change x by (1)\nend\nrepeat (12)\n    change y by (2)\n    change x by (1.5)\nend\nrepeat (12)\n    change y by (2)\n    change x by (2)\nend\nrepeat (12)\n    change y by (1.5)\n    change x by (2.5)\nend\nrepeat (12)\n    change y by (1)\n    change x by (3)\nend\nrepeat (3)\n    change y by (0.5)\n    change x by (4)\nend\nrepeat (12)\n    change x by (3)\nend\nrepeat (3)\n    change y by (-0.5)\n    change x by (4)\nend\nrepeat (12)\n    change y by (-1)\n    change x by (2.5)\nend\nrepeat (12)\n    change y by (-0.8)\n    change x by (1)\nend\nrepeat (12)\n    change y by (-1.3)\n    change x by (0.7)\nend\nrepeat (5)\n    change y by (-1.3)\n    change x by (0.7)\nend\nrepeat (5)\n    change y by (-2)\n    change x by (0.5)\nend\nrepeat (5)\n    change y by (-1.5)\n    change x by (0.1)\nend\nrepeat (12)\n    change y by (-1.5)\n    change x by (-0.27)\nend\nrepeat (113)\n    change y by (-2)\n    change x by (-0.675)\nend\nrepeat (45)\n    change x by (-2)\nend\nrepeat (95)\n    change y by (2)\n    change x by (0.675)\nend\nrepeat (23)\n    change y by (1)\n    change x by (-0.1)\nend\nrepeat (15)\n    change x by (-2)\nend\nrepeat (23)\n    change y by (-1)\n    change x by (-0.7)\nend\nrepeat (21)\n    change y by (-2)\n    change x by (-0.675)\nend\nrepeat (11)\n    change x by (2)\nend\nrepeat (43)\n    change y by (-2)\n    change x by (-0.675)\nend\nrepeat (11)\n    change x by (-2)\nend\nrepeat (30)\n    change y by (-2)\n    change x by (-0.675)\nend\nrepeat (42)\n    change x by (-2)\nend\n\ndefine draw logo background\nset pen size to (1000)\nset pen color to (#00005f)\ngo to x: (0) y: (0)\npen down\npen up\n\n@Thumbnail\n\nwhen flag clicked\nset [ghost v] effect to (100)\n\nwhen [timer v] > (0)\nhide variable [timer v]\nhide variable [level v]\nshow list [lowest times v]\n\n
100% pen.  See inside if you don't believe me.\n\nMy idea when making this was to model it after a roblox obby.  I hope you like it. :D\n\n**Instructions**\n-Make your way through all 14 levels to the end with \n the fastest time you can\n-Post your time in the comments if you want\n-To wall jump, hold the up arrow key and move towards a wall until you hit it\n-Don't go up a wall to fast or try to latch on a wall \n without fully hitting it; you'll fall off.  Then, jump from \n one wall to the next\n-Have fun!\n\n