Code a 100% Pen Platformer
@Stage\n\nwhen flag clicked\nbroadcast (\[INTRO\] Stop intro v)\n\n@Blank \n\n@Pen Engine\n\ndefine Touching Right Boost\nset [touching right boost v] to [0]\nset [block check v] to [1]\nrepeat ((length of [right boost v]) / (4))\n    if < and <<<(Player Y) < (item ((Block Check) + (1)) of [right boost v])> and <(Player Y) > (item ((Block Check) + (3)) of [right boost v])>> or <<<((Player Y) - (25)) < (item ((Block Check) + (1)) of [right boost v])> and <((Player Y) + (-25)) > (item ((Block Check) + (3)) of [right boost v])>> or <<((Player Y) + (25)) > (item ((Block Check) + (3)) of [right boost v])> and <((Player Y) + (25)) < (item ((Block Check) + (1)) of [right boost v])>>>>> then\n        set [touching right boost v] to [1]\n    end\n    change [block check v] by (4)\nend\n\ndefine add slippery platform x1 y1 x2 y2 (x1) (y1) (x2) (y2)\nadd (x1) to [slippery platform v]\nadd (y1) to [slippery platform v]\nadd (x2) to [slippery platform v]\nadd (y2) to [slippery platform v]\npen up\ngo to x (x1) y (y1)\npen down\ngo to x (x2) y (y1)\ngo to x (x2) y (y2)\ngo to x (x1) y (y2)\ngo to x (x1) y (y1)\n\ndefine Touching Slippery Platform\nset [touching slippery platform v] to [0]\nset [block check v] to [1]\nrepeat ((length of [slippery platform v]) / (4))\n    if < and <<<(Player Y) < (item ((Block Check) + (1)) of [slippery platform v])> and <(Player Y) > (item ((Block Check) + (3)) of [slippery platform v])>> or <<<((Player Y) - (25)) < (item ((Block Check) + (1)) of [slippery platform v])> and <((Player Y) + (-25)) > (item ((Block Check) + (3)) of [slippery platform v])>> or <<((Player Y) + (25)) > (item ((Block Check) + (3)) of [slippery platform v])> and <((Player Y) + (25)) < (item ((Block Check) + (1)) of [slippery platform v])>>>>> then\n        set [touching slippery platform v] to [1]\n    end\n    change [block check v] by (4)\nend\n\nadd trampoline x1 y1 x2 y2 [300] [50] [350] [17]\n\ndefine add left boost x1 y1 x2 y2 (x1) (y1) (x2) (y2)\nadd (x1) to [left boost v]\nadd (y1) to [left boost v]\nadd (x2) to [left boost v]\nadd (y2) to [left boost v]\npen up\ngo to x (x1) y (y1)\npen down\ngo to x (x2) y (y1)\ngo to x (x2) y (y2)\ngo to x (x1) y (y2)\ngo to x (x1) y (y1)\n\ndefine add floating trampoline x1 y1 x2 y2 (x1) (y1) (x2) (y2)\nadd (x1) to [floating trampoline v]\nadd (y1) to [floating trampoline v]\nadd (x2) to [floating trampoline v]\nadd (y2) to [floating trampoline v]\npen up\ngo to x (x1) y (y1)\npen down\ngo to x (x2) y (y1)\ngo to x (x2) y (y2)\ngo to x (x1) y (y2)\ngo to x (x1) y (y1)\n\ndefine Touching Left Boost\nset [touching left boost v] to [0]\nset [block check v] to [1]\nrepeat ((length of [left boost v]) / (4))\n    if < and <<<(Player Y) < (item ((Block Check) + (1)) of [left boost v])> and <(Player Y) > (item ((Block Check) + (3)) of [left boost v])>> or <<<((Player Y) - (25)) < (item ((Block Check) + (1)) of [left boost v])> and <((Player Y) + (-25)) > (item ((Block Check) + (3)) of [left boost v])>> or <<((Player Y) + (25)) > (item ((Block Check) + (3)) of [left boost v])> and <((Player Y) + (25)) < (item ((Block Check) + (1)) of [left boost v])>>>>> then\n        set [touching left boost v] to [1]\n    end\n    change [block check v] by (4)\nend\n\ndefine Touching Floating Trampoline\nset [touching floating trampoline v] to [0]\nset [block check v] to [1]\nrepeat ((length of [floating trampoline v]) / (4))\n    if < and <<<(Player Y) < (item ((Block Check) + (1)) of [floating trampoline v])> and <(Player Y) > (item ((Block Check) + (3)) of [floating trampoline v])>> or <<<((Player Y) - (25)) < (item ((Block Check) + (1)) of [floating trampoline v])> and <((Player Y) + (-25)) > (item ((Block Check) + (3)) of [floating trampoline v])>> or <<((Player Y) + (25)) > (item ((Block Check) + (3)) of [floating trampoline v])> and <((Player Y) + (25)) < (item ((Block Check) + (1)) of [floating trampoline v])>>>>> then\n        set [touching floating trampoline v] to [1]\n    end\n    change [block check v] by (4)\nend\n\ndefine Pen Colours (#)\nset pen color to (#ff0000)\nset pen color to (#ff9400)\nset pen color to (#fff600)\nset pen color to (#1dff00)\nset pen color to (#47cc00)\nset pen color to (#00b6ff)\nset pen color to (#0021ff)\nset pen color to (#8500f3)\nset pen color to (#cc00bb)\nPen Colours [Danger]\nPen Colours [Slippery Platform]\nPen Colours [Trampoline]\nPen Colours [Platform]\nPen Colours [Gravity Changer]\nPen Colours [Right Boost]\nPen Colours [Left Boost]\nPen Colours [Portal]\nPen Colours [Floating Trampoline]\n\nset pen color to (#ff0000)\nset pen color to (#ff9400)\nset pen color to (#fff600)\nset pen color to (#1dff00)\nset pen color to (#47cc00)\nset pen color to (#00b6ff)\nset pen color to (#0021ff)\nset pen color to (#8500f3)\nset pen color to (#cc00bb)\nPen Colours [Danger]\nPen Colours [Slippery Platform]\nPen Colours [Trampoline]\nPen Colours [Platform]\nPen Colours [Gravity Changer]\nPen Colours [Right Boost]\nPen Colours [Left Boost]\nPen Colours [Portal]\nPen Colours [Floating Trampoline]\n\nset pen color to (#ff9400)\nadd slippery platform x1 y1 x2 y2 [700] [50] [750] [17]\n\nif <(Level) = [test]> then\n    set pen color to (#1dff00)\n    add platform x1 y1 x2 y2 [-50] [10] [850] [-180]\n    add platform x1 y1 x2 y2 [-50] [400] [900] [250]\n    add platform x1 y1 x2 y2 [1100] [10] [1200] [-180]\n    add platform x1 y1 x2 y2 [857] [-100] [1093] [-180]\n    add platform x1 y1 x2 y2 [1650] [10] [1800] [-180]\n    set pen color to (#fff600)\n    add trampoline x1 y1 x2 y2 [500] [50] [550] [17]\n    add trampoline x1 y1 x2 y2 [950] [50] [1000] [17]\n    add trampoline x1 y1 x2 y2 [950] [200] [1000] [150]\n    add trampoline x1 y1 x2 y2 [950] [350] [1000] [300]\n    set pen color to (#00cbff)\n    add right boost x1 y1 x2 y2 [300] [50] [350] [17]\n    set pen color to (#0021ff)\n    add left boost x1 y1 x2 y2 [100] [50] [150] [17]\n    set pen color to (#ff9400)\n    add slippery platform x1 y1 x2 y2 [700] [160] [750] [17]\n    set pen color to (#cc00bb)\n    add floating trampoline x1 y1 x2 y2 [1200] [80] [1250] [30]\n    add floating trampoline x1 y1 x2 y2 [1400] [80] [1450] [30]\n    add floating trampoline x1 y1 x2 y2 [1600] [80] [1650] [30]\nend\n\nStarting script [100] [Test]\n\ndefine draw square x (x) y (y) size (size)\npen up\ngo to x: ((x) - (size)) y: ((y) + (size))\npen down\ngo to x: ((x) + (size)) y: ((y) + (size))\ngo to x: ((x) + (size)) y: ((y) - (size))\ngo to x: ((x) - (size)) y: ((y) - (size))\ngo to x: ((x) - (size)) y: ((y) + (size))\npen up\ngo to x: (x) y: (y)\n\ndefine Move <left> <right> <up> Walk Speed (walk speed) Jump Height (jump height) Friction (friction) Maximum Fall Speed (maximum fall speed) Fall Acceleration (fall acceleration) Scrolling Smoothness (scrolling smoothness) Player X Minimum (player x minimum) Scroll X minimum (scroll x minimum) Scroll Y minimum (scroll y minimum) Boost (boost)\nif <(Level) < [8]> then\n    replace item (length of [times v]) of [times v] with (timer)\nend\nset pen color to (#9a9a9a)\nif <left> then\n    change [speed x v] by ((walk speed) * (-1))\nend\nif <right> then\n    change [speed x v] by (walk speed)\nend\nif <up> then\n    if <(In Air) < [4]> then\n        set [speed y v] to (jump height)\n    end\nend\nTouching Trampoline\nif <(Touching Trampoline) = [1]> then\n    set [speed y v] to ((jump height) * (1.5))\nend\nTouching Right Boost\nif <(Touching Right Boost) = [1]> then\n    set [speed x v] to (boost)\nend\nTouching Left Boost\nif <(Touching Left Boost) = [1]> then\n    set [speed x v] to ((boost) * (-1))\nend\nTouching Floating Trampoline\nif <<(Touching Floating Trampoline) = [1]> and <up>> then\n    set [speed y v] to ((jump height) * (1.5))\nend\nif <(Speed Y) > ((maximum fall speed) * (-1))> then\n    change [speed y v] by ((fall acceleration) * (-1))\nend\nChange Player Y by (Speed Y)\nset [speed x v] to ((Speed X) * (friction))\nChange Player X by (Speed X) <up> ((walk speed) * (8))\nchange [scroll x v] by (((Player X) - (Scroll X)) / (scrolling smoothness))\nchange [scroll y v] by (((Player Y) - (Scroll Y)) / (scrolling smoothness))\nif <(Player X) < (player x minimum)> then\n    set [player x v] to (player x minimum)\n    set [speed x v] to [0]\nend\nif <(Player Y) < [-180]> then\n    set [situation v] to [OOF]\nend\nTouching Danger\nif <(Touching Danger) = [1]> then\n    set [situation v] to [OOF]\nend\nTouching Portal\nif <(Touching Portal) = [1]> then\n    set [situation v] to [next]\nend\nif <(Scroll X) < (scroll x minimum)> then\n    set [scroll x v] to (scroll x minimum)\nend\nif <(Scroll Y) < (scroll y minimum)> then\n    set [scroll y v] to (scroll y minimum)\nend\nset [# v] to [0]\nrepeat (20)\n    change [# v] by (1)\n    draw square x ((Player X) - (Scroll X)) y ((Player Y) - (Scroll Y)) size (#)\nend\nset volume to (Volume) %\n\ndefine add platform x1 y1 x2 y2 (x1) (y1) (x2) (y2)\nadd (x1) to [platform v]\nadd (y1) to [platform v]\nadd (x2) to [platform v]\nadd (y2) to [platform v]\npen up\ngo to x (x1) y (y1)\npen down\ngo to x (x2) y (y1)\ngo to x (x2) y (y2)\ngo to x (x1) y (y2)\ngo to x (x1) y (y1)\n\ndefine go to x (x) y (y)\ngo to x: ((x) - (Scroll X)) y: ((y) - (Scroll Y))\n\ndefine Change Player Y by (y)\nchange [player y v] by (y)\nchange [in air v] by (1)\nTouching Platform\nif <(Touching Platform) = [1]> then\n    repeat until <(Touching Platform) = [0]>\n        if <(Speed Y) > [0]> then\n            change [player y v] by (-1)\n        else\n            if <(Speed Y) < [0]> then\n                change [player y v] by (1)\n                set [in air v] to [0]\n            else\n                if <(Speed Y) = [0]> then\n                    change [player y v] by (1)\n                end\n            end\n        end\n        Touching Platform\n    end\n    set [speed y v] to [0]\nend\nTouching Slippery Platform\nif <(Touching Slippery Platform) = [1]> then\n    repeat until <(Touching Slippery Platform) = [0]>\n        if <(Speed Y) > [0]> then\n            change [player y v] by (-1)\n        else\n            if <(Speed Y) < [0]> then\n                change [player y v] by (1)\n                set [in air v] to [0]\n            else\n                if <(Speed Y) = [0]> then\n                    change [player y v] by (1)\n                end\n            end\n        end\n        Touching Slippery Platform\n    end\n    set [speed y v] to [0]\nend\n\ndefine Touching Platform\nset [touching platform v] to [0]\nset [block check v] to [1]\nrepeat ((length of [platform v]) / (4))\n    if < and <<<(Player Y) < (item ((Block Check) + (1)) of [platform v])> and <(Player Y) > (item ((Block Check) + (3)) of [platform v])>> or <<<((Player Y) - (25)) < (item ((Block Check) + (1)) of [platform v])> and <((Player Y) + (-25)) > (item ((Block Check) + (3)) of [platform v])>> or <<((Player Y) + (25)) > (item ((Block Check) + (3)) of [platform v])> and <((Player Y) + (25)) < (item ((Block Check) + (1)) of [platform v])>>>>> then\n        set [touching platform v] to [1]\n    end\n    change [block check v] by (4)\nend\n\ndefine Change Player X by (x) <up> (push power)\nchange [player x v] by (x)\nTouching Platform\nif <(Touching Platform) = [1]> then\n    repeat until <(Touching Platform) = [0]>\n        if <(Speed X) > [0]> then\n            change [player x v] by (-1)\n        else\n            if <(Speed X) < [0]> then\n                change [player x v] by (1)\n            end\n        end\n        Touching Platform\n    end\n    if <up> then\n        if <(Speed X) > [0]> then\n            set [speed x v] to ((push power) * (-1))\n        else\n            if <(Speed X) < [0]> then\n                set [speed x v] to (push power)\n            end\n        end\n        set [in air v] to [0]\n    else\n        set [speed x v] to [0]\n    end\nend\nTouching Slippery Platform\nif <(Touching Slippery Platform) = [1]> then\n    repeat until <(Touching Slippery Platform) = [0]>\n        if <(Speed X) > [0]> then\n            change [player x v] by (-1)\n        else\n            if <(Speed X) < [0]> then\n                change [player x v] by (1)\n            end\n        end\n        Touching Slippery Platform\n    end\nend\n\ndefine Render + Move\ndelete all of [platform v]\ndelete all of [danger v]\ndelete all of [trampoline v]\ndelete all of [portal v]\ndelete all of [right boost v]\ndelete all of [left boost v]\ndelete all of [slippery platform v]\ndelete all of [floating trampoline v]\nswitch costume to (blank v)\nset size to (108000) %\nswitch costume to (dot v)\nhide\nerase all\npen up\ngo to x: (0) y: (0)\nset pen color to (#005b0b)\nset pen size to (7)\ngo to x: ((-215) - (((Scroll X) + ((timer) * (-50))) mod (50))) y: ((155) - (((Scroll Y) + ((timer) * (-50))) mod (-50)))\nrepeat (11)\n    set x to ((-215) - (((Scroll X) + ((timer) * (-50))) mod (50)))\n    repeat (11)\n        draw square x (x position) y (y position) size [25]\n        change x by (50)\n    end\n    change y by (-50)\nend\npen up\nDraw Level\nMove <<key (left arrow v) pressed?> or <<mouse down?> and <(mouse x) < ((Player X) - (Scroll X))>>> <<key (right arrow v) pressed?> or <<mouse down?> and <(mouse x) > ((Player X) - (Scroll X))>>> <<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > ((Player Y) - (Scroll Y))>>> Walk Speed [2] Jump Height [16] Friction [0.87] Maximum Fall Speed [14] Fall Acceleration [2] Scrolling Smoothness [10] Player X Minimum [-10] Scroll X minimum [200] Scroll Y minimum [0] Boost [35]\n\ndefine Touching Danger\nset [touching danger v] to [0]\nset [block check v] to [1]\nrepeat ((length of [danger v]) / (4))\n    if < and <<<(Player Y) < (item ((Block Check) + (1)) of [danger v])> and <(Player Y) > (item ((Block Check) + (3)) of [danger v])>> or <<<((Player Y) - (25)) < (item ((Block Check) + (1)) of [danger v])> and <((Player Y) + (-25)) > (item ((Block Check) + (3)) of [danger v])>> or <<((Player Y) + (25)) > (item ((Block Check) + (3)) of [danger v])> and <((Player Y) + (25)) < (item ((Block Check) + (1)) of [danger v])>>>>> then\n        set [touching danger v] to [1]\n    end\n    change [block check v] by (4)\nend\n\ndefine add danger x1 y1 x2 y2 (x1) (y1) (x2) (y2)\nadd (x1) to [danger v]\nadd (y1) to [danger v]\nadd (x2) to [danger v]\nadd (y2) to [danger v]\npen up\ngo to x (x1) y (y1)\npen down\ngo to x (x2) y (y1)\ngo to x (x2) y (y2)\ngo to x (x1) y (y2)\ngo to x (x1) y (y1)\n\ndefine add portal x1 y1 x2 y2 (x1) (y1) (x2) (y2)\nadd (x1) to [portal v]\nadd (y1) to [portal v]\nadd (x2) to [portal v]\nadd (y2) to [portal v]\npen up\ngo to x (x1) y (y1)\npen down\ngo to x (x2) y (y1)\ngo to x (x2) y (y2)\ngo to x (x1) y (y2)\ngo to x (x1) y (y1)\n\ndefine add trampoline x1 y1 x2 y2 (x1) (y1) (x2) (y2)\nadd (x1) to [trampoline v]\nadd (y1) to [trampoline v]\nadd (x2) to [trampoline v]\nadd (y2) to [trampoline v]\npen up\ngo to x (x1) y (y1)\npen down\ngo to x (x2) y (y1)\ngo to x (x2) y (y2)\ngo to x (x1) y (y2)\ngo to x (x1) y (y1)\n\ndefine Touching Portal\nset [touching portal v] to [0]\nset [block check v] to [1]\nrepeat ((length of [portal v]) / (4))\n    if < and <<<(Player Y) < (item ((Block Check) + (1)) of [portal v])> and <(Player Y) > (item ((Block Check) + (3)) of [portal v])>> or <<<((Player Y) - (25)) < (item ((Block Check) + (1)) of [portal v])> and <((Player Y) + (-25)) > (item ((Block Check) + (3)) of [portal v])>> or <<((Player Y) + (25)) > (item ((Block Check) + (3)) of [portal v])> and <((Player Y) + (25)) < (item ((Block Check) + (1)) of [portal v])>>>>> then\n        set [touching portal v] to [1]\n    end\n    change [block check v] by (4)\nend\n\ndefine Touching Trampoline\nset [touching trampoline v] to [0]\nset [block check v] to [1]\nrepeat ((length of [trampoline v]) / (4))\n    if < and <<<(Player Y) < (item ((Block Check) + (1)) of [trampoline v])> and <(Player Y) > (item ((Block Check) + (3)) of [trampoline v])>> or <<<((Player Y) - (25)) < (item ((Block Check) + (1)) of [trampoline v])> and <((Player Y) + (-25)) > (item ((Block Check) + (3)) of [trampoline v])>> or <<((Player Y) + (25)) > (item ((Block Check) + (3)) of [trampoline v])> and <((Player Y) + (25)) < (item ((Block Check) + (1)) of [trampoline v])>>>>> then\n        set [touching trampoline v] to [1]\n    end\n    change [block check v] by (4)\nend\n\ndefine Draw Level\ngo to [front v] layer\nif <(Level) = [1]> then\n    set pen color to (#ff0000)\n    add danger x1 y1 x2 y2 [58] ((-10) + (([sin v] of ((timer) * (300)) ) * (20))) [262] [-83]\n    add danger x1 y1 x2 y2 [1307] ((480) + (([sin v] of ((timer) * (300)) ) * (20))) [1493] [457]\n    add danger x1 y1 x2 y2 [1700] [200] [2200] [175]\n    add danger x1 y1 x2 y2 [2350] [50] [2400] [4]\n    add danger x1 y1 x2 y2 [2500] [50] [2550] [4]\n    set pen color to (#fff600)\n    add trampoline x1 y1 x2 y2 [750] [50] [800] [0]\n    add trampoline x1 y1 x2 y2 [950] [350] [1000] [300]\n    add trampoline x1 y1 x2 y2 [1700] [17] [1750] [4]\n    add trampoline x1 y1 x2 y2 [1875] [17] [1925] [4]\n    add trampoline x1 y1 x2 y2 [2050] [17] [2100] [4]\n    set pen color to (#1dff00)\n    add platform x1 y1 x2 y2 [-50] [10] [50] [-180]\n    add platform x1 y1 x2 y2 [50] [-90] [270] [-180]\n    add platform x1 y1 x2 y2 [270] [10] [600] [-180]\n    add platform x1 y1 x2 y2 [1150] [500] [1300] [450]\n    add platform x1 y1 x2 y2 [1150] [450] [1500] [450]\n    add platform x1 y1 x2 y2 [1500] [500] [1650] [450]\n    add platform x1 y1 x2 y2 [1607] [10] [2800] [-180]\n    set pen color to (#00b6ff)\n    add right boost x1 y1 x2 y2 [550] [50] [600] [17]\n    set pen color to (#0021ff)\n    add left boost x1 y1 x2 y2 [350] [50] [400] [17]\n    set pen color to (#8500f3)\n    add portal x1 y1 x2 y2 [2650] [100] [2700] [4]\n    set pen color to (#cc00bb)\n    add floating trampoline x1 y1 x2 y2 [850] [200] [900] [150]\n    add floating trampoline x1 y1 x2 y2 [1050] [500] [1100] [450]\nelse\n    if <(Level) = [2]> then\n        set pen color to (#ff0000)\n        add danger x1 y1 x2 y2 [150] [50] [175] [4]\n        add danger x1 y1 x2 y2 [450] [50] [475] [4]\n        add danger x1 y1 x2 y2 [300] [50] [327] [4]\n        add danger x1 y1 x2 y2 [400] [693] [450] [400]\n        add danger x1 y1 x2 y2 [250] [1000] [300] [757]\n        add danger x1 y1 x2 y2 [368] [850] [382] [825]\n        add danger x1 y1 x2 y2 [368] [950] [382] [925]\n        set pen color to (#fff600)\n        add trampoline x1 y1 x2 y2 [550] [150] [700] [100]\n        add trampoline x1 y1 x2 y2 [550] [250] [700] [200]\n        add trampoline x1 y1 x2 y2 [550] [450] [700] [400]\n        add trampoline x1 y1 x2 y2 [550] [550] [700] [500]\n        add trampoline x1 y1 x2 y2 [550] [750] [700] [700]\n        set pen color to (#1dff00)\n        add platform x1 y1 x2 y2 [-50] [10] [700] [-180]\n        add platform x1 y1 x2 y2 [-50] [750] [450] [700]\n        add platform x1 y1 x2 y2 [325] [1000] [375] [757]\n        set pen color to (#0021ff)\n        add left boost x1 y1 x2 y2 [550] [350] [625] [300]\n        set pen color to (#8500f3)\n        add portal x1 y1 x2 y2 [175] [853] [225] [757]\n    else\n        if <(Level) = [3]> then\n            set pen color to (#ff0000)\n            add danger x1 y1 x2 y2 [120] [57] [130] [43]\n            add danger x1 y1 x2 y2 [220] [107] [230] [93]\n            add danger x1 y1 x2 y2 [320] [157] [330] [143]\n            add danger x1 y1 x2 y2 [700] [600] [800] [207]\n            add danger x1 y1 x2 y2 [373] [360] [437] [325]\n            add danger x1 y1 x2 y2 [473] [310] [537] [275]\n            add danger x1 y1 x2 y2 [593] [585] [657] [550]\n            add danger x1 y1 x2 y2 [950] [420] [1200] [400]\n            add danger x1 y1 x2 y2 [993] [265] [1007] [200]\n            add danger x1 y1 x2 y2 [1180] [420] [1200] [257]\n            set pen color to (#ff9400)\n            add slippery platform x1 y1 x2 y2 [600] [250] [650] [207]\n            add slippery platform x1 y1 x2 y2 [480] [325] [530] [275]\n            add slippery platform x1 y1 x2 y2 [380] [375] [430] [325]\n            add slippery platform x1 y1 x2 y2 [480] [325] [530] [275]\n            add slippery platform x1 y1 x2 y2 [600] [600] [650] [550]\n            set pen color to (#fff600)\n            add trampoline x1 y1 x2 y2 [920] [170] [970] [107]\n            set pen color to (#1dff00)\n            add platform x1 y1 x2 y2 [-50] [10] [50] [-180]\n            add platform x1 y1 x2 y2 [80] [50] [130] [0]\n            add platform x1 y1 x2 y2 [180] [100] [230] [50]\n            add platform x1 y1 x2 y2 [280] [150] [330] [100]\n            add platform x1 y1 x2 y2 [380] [200] [800] [150]\n            add platform x1 y1 x2 y2 [480] [550] [530] [500]\n            add platform x1 y1 x2 y2 [800] [100] [1000] [50]\n            add platform x1 y1 x2 y2 [1000] [250] [1200] [200]\n            set pen color to (#8500f3)\n            add portal x1 y1 x2 y2 [950] [370] [1000] [280]\n        else\n            if <(Level) = [4]> then\n                set pen color to (#ff0000)\n                add danger x1 y1 x2 y2 [150] [20] [200] [3]\n                add danger x1 y1 x2 y2 [350] [20] [400] [3]\n                add danger x1 y1 x2 y2 [557] [-100] [800] [-130]\n                set pen color to (#ff9400)\n                add slippery platform x1 y1 x2 y2 [1250] [640] [1270] [620]\n                add slippery platform x1 y1 x2 y2 [1250] [720] [1270] [670]\n                add slippery platform x1 y1 x2 y2 [1250] [720] [1325] [700]\n                add slippery platform x1 y1 x2 y2 [1305] [795] [1325] [700]\n                add slippery platform x1 y1 x2 y2 [1250] [795] [1325] [775]\n                set pen color to (#fff600)\n                add trampoline x1 y1 x2 y2 [650] [20] [700] [3]\n                add trampoline x1 y1 x2 y2 [650] [167] [700] [150]\n                add trampoline x1 y1 x2 y2 [650] [317] [700] [300]\n                set pen color to (#1dff00)\n                add platform x1 y1 x2 y2 [-50] [10] [550] [-180]\n                add platform x1 y1 x2 y2 [410] [317] [600] [300]\n                add platform x1 y1 x2 y2 [410] [700] [460] [300]\n                add platform x1 y1 x2 y2 [520] [620] [570] [400]\n                add platform x1 y1 x2 y2 [520] [620] [750] [600]\n                add platform x1 y1 x2 y2 [880] [620] [950] [600]\n                add platform x1 y1 x2 y2 [1080] [620] [1150] [600]\n                add platform x1 y1 x2 y2 [950] [300] [1180] [250]\n                set pen color to (#8500f3)\n                add portal x1 y1 x2 y2 [1130] [397] [1180] [307]\n            else\n                if <(Level) = [5]> then\n                    set pen color to (#1dff00)\n                    add platform x1 y1 x2 y2 [-50] [10] [200] [-180]\n                    add platform x1 y1 x2 y2 ((400) + (([sin v] of ((timer) * (40)) ) * (150))) [30] ((470) + (([sin v] of ((timer) * (40)) ) * (150))) [-50]\n                    add platform x1 y1 x2 y2 [807] [10] [1000] [-180]\n                    add platform x1 y1 x2 y2 [1100] [8] [1150] [-180]\n                    add platform x1 y1 x2 y2 [1250] [8] [1300] [-180]\n                    add platform x1 y1 x2 y2 [1400] [8] [1450] [-180]\n                    add platform x1 y1 x2 y2 [1550] [10] [2000] [-180]\n                    set pen color to (#ff0000)\n                    add danger x1 y1 x2 y2 [207] ((-10) + (([sin v] of ((timer) * (300)) ) * (20))) [800] [-180]\n                    add danger x1 y1 x2 y2 [1007] ((-10) + (([sin v] of ((timer) * (300)) ) * (20))) [1543] [-180]\n                    add danger x1 y1 x2 y2 [1780] [130] [1830] [17]\n                    add danger x1 y1 x2 y2 [1780] [1000] [1830] [250]\n                    set pen color to (#fff600)\n                    add trampoline x1 y1 x2 y2 [1670] [50] [1720] [17]\n                    set pen color to (#8500f3)\n                    add portal x1 y1 x2 y2 [1950] [107] [2000] [17]\n                else\n                    if <(Level) = [6]> then\n                        set pen color to (#ff0000)\n                        add danger x1 y1 x2 y2 [157] [17] [250] [-90]\n                        add danger x1 y1 x2 y2 [83] [650] [93] [200]\n                        add danger x1 y1 x2 y2 [100] [193] [150] [183]\n                        add danger x1 y1 x2 y2 [240] [500] [250] [350]\n                        add danger x1 y1 x2 y2 [240] [500] [250] [350]\n                        add danger x1 y1 x2 y2 [240] [220] [250] [200]\n                        add danger x1 y1 x2 y2 [157] [650] [167] [590]\n                        add danger x1 y1 x2 y2 [314] [593] [325] [-180]\n                        add danger x1 y1 x2 y2 [657] [350] [680] [330]\n                        add danger x1 y1 x2 y2 [730] [650] [750] [490]\n                        add danger x1 y1 x2 y2 [900] [277] [950] [227]\n                        add danger x1 y1 x2 y2 [1050] [277] [1100] [227]\n                        set pen color to (#fff600)\n                        add trampoline x1 y1 x2 y2 [100] [50] [150] [17]\n                        set pen color to (#1dff00)\n                        add platform x1 y1 x2 y2 [-50] [10] [307] [-180]\n                        add platform x1 y1 x2 y2 [100] [650] [150] [200]\n                        add platform x1 y1 x2 y2 [257] [650] [307] [17]\n                        add platform x1 y1 x2 y2 [314] [650] [450] [600]\n                        add platform x1 y1 x2 y2 [457] [520] [550] [490]\n                        add platform x1 y1 x2 y2 [557] [420] [650] [390]\n                        add platform x1 y1 x2 y2 [657] [320] [750] [290]\n                        add platform x1 y1 x2 y2 [757] [220] [1200] [190]\n                        add platform x1 y1 x2 y2 [1750] [220] [2000] [190]\n                        set pen color to (#00b6ff)\n                        add right boost x1 y1 x2 y2 [527] [550] [550] [530]\n                        set pen color to (#0021ff)\n                        add left boost x1 y1 x2 y2 [557] [450] [580] [430]\n                        set pen color to (#8500f3)\n                        add portal x1 y1 x2 y2 [1950] [327] [2000] [227]\n                        set pen color to (#cc00bb)\n                        add floating trampoline x1 y1 x2 y2 [1250] [300] [1300] [250]\n                        add floating trampoline x1 y1 x2 y2 [1450] [300] [1500] [250]\n                        add floating trampoline x1 y1 x2 y2 [1650] [300] [1700] [250]\n                    else\n                        if <(Level) = [7]> then\n                            set pen color to (#ff0000)\n                            add danger x1 y1 x2 y2 [307] ((-10) + (([sin v] of ((timer) * (300)) ) * (20))) [700] [-180]\n                            add danger x1 y1 x2 y2 [1273] [600] [1293] [300]\n                            add danger x1 y1 x2 y2 [1707] [600] [1727] [300]\n                            set pen color to (#ff9400)\n                            add slippery platform x1 y1 x2 y2 [707] [600] [1000] [-180]\n                            set pen color to (#fff600)\n                            add trampoline x1 y1 x2 y2 [950] [650] [1000] [607]\n                            set pen color to (#1dff00)\n                            add platform x1 y1 x2 y2 [-50] [10] [300] [-180]\n                            add platform x1 y1 x2 y2 [1300] [600] [1500] [500]\n                            add platform x1 y1 x2 y2 [1600] [600] [1700] [500]\n                            add platform x1 y1 x2 y2 [1300] [350] [1700] [300]\n                            set pen color to (#00b6ff)\n                            add right boost x1 y1 x2 y2 [920] [650] [943] [607]\n                            add right boost x1 y1 x2 y2 [1450] [407] [1500] [357]\n                            set pen color to (#0021ff)\n                            add left boost x1 y1 x2 y2 [707] [635] [735] [607]\n                            add left boost x1 y1 x2 y2 [1600] [407] [1650] [357]\n                            set pen color to (#8500f3)\n                            add portal x1 y1 x2 y2 [1350] [457] [1400] [357]\n                            set pen color to (#cc00bb)\n                            add floating trampoline x1 y1 x2 y2 [350] [100] [400] [50]\n                            add floating trampoline x1 y1 x2 y2 [550] [200] [600] [150]\n                            add floating trampoline x1 y1 x2 y2 [350] [300] [400] [250]\n                            add floating trampoline x1 y1 x2 y2 [550] [400] [600] [350]\n                            add floating trampoline x1 y1 x2 y2 [350] [500] [400] [450]\n                            add floating trampoline x1 y1 x2 y2 [550] [600] [600] [550]\n                        else\n                            if <(Level) = [8]> then\n                                set pen color to (#1dff00)\n                                add platform x1 y1 x2 y2 [-50] [10] [550] [-180]\n                                set pen color to (#0077ff)\n                                add platform x1 y1 x2 y2 [60] [50] [100] [140]\n                                add platform x1 y1 x2 y2 [60] [160] [100] [200]\n                                set pen color to (#ff0000)\n                                add platform x1 y1 x2 y2 [180] [100] [280] [130]\n                                add platform x1 y1 x2 y2 [180] [130] [220] [160]\n                                add platform x1 y1 x2 y2 [240] [130] [280] [160]\n                                set pen color to (#fff600)\n                                add platform x1 y1 x2 y2 [340] [80] [360] [180]\n                                add platform x1 y1 x2 y2 [300] [120] [400] [140]\n                                set pen color to (#a500ff)\n                                add platform x1 y1 x2 y2 [450] [180] [550] [180]\n                                add platform x1 y1 x2 y2 [450] [80] [450] [180]\n                                add platform x1 y1 x2 y2 [450] [80] [550] [80]\n                                add platform x1 y1 x2 y2 [550] [80] [550] [150]\n                                add platform x1 y1 x2 y2 [480] [150] [550] [150]\n                                add platform x1 y1 x2 y2 [480] [110] [480] [150]\n                                add platform x1 y1 x2 y2 [480] [110] [520] [110]\n                                add platform x1 y1 x2 y2 [520] [110] [520] [120]\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen I receive [\[intro\] stop intro v]\nStarting script [100] [1]\n\nwhen I receive [\[intro\] stop intro v]\nforever\n    play sound [zlarke - Lighter v] until done\nend\n\nwhen I receive [\[intro\] stop intro v]\nwait until <(Level) = [8]>\nSum up time\nif <(Timer) < (☁ Highscore)> then\n    set [☁ highscore v] to (Timer)\nend\nshow variable [timer v]\nshow variable [☁ highscore v]\n\nwhen I receive [\[intro\] play intro v]\nerase all\n\ndefine Sum up time\nset [timer v] to [0]\nrepeat (length of [times v])\n    change [timer v] by (item (1) of [times v])\n    delete (1) of [times v]\nend\n\nwhen I receive [\[intro\] stop intro v]\nforever\n    if <key (r v) pressed?> then\n        set [situation v] to [OOF]\n        wait until <not <key (r v) pressed?>>\n    end\n    if <<key (s v) pressed?> and <(Level) < [8]>> then\n        set [situation v] to [next]\n        wait until <not <key (s v) pressed?>>\n    end\nend\n\nwhen I receive [\[intro\] play intro v]\nhide variable [level v]\nhide variable [timer v]\nhide variable [☁ highscore v]\n\ndefine Starting script (volume) (level)\ngo to x: (0) y: (0)\nset [volume v] to (volume)\nset [level v] to (level)\ndelete all of [times v]\nhide variable [timer v]\nhide variable [☁ highscore v]\nset [timer v] to [0]\nshow variable [level v]\nforever\n    add (timer) to [times v]\n    reset timer\n    set [player x v] to [0]\n    set [player y v] to [35]\n    set [scroll x v] to [200]\n    set [scroll y v] to [35]\n    set [in air v] to [0]\n    set [speed x v] to [0]\n    set [speed y v] to [0]\n    set [situation v] to [Alive]\n    set [touching danger v] to [0]\n    set [touching platform v] to [0]\n    set [touching portal v] to [0]\n    set [touching trampoline v] to [0]\n    set [touching right boost v] to [0]\n    set [touching left boost v] to [0]\n    set [touching slippery platform v] to [0]\n    repeat until <not <(Situation) = [Alive]>>\n        Render + Move\n    end\n    if <(Situation) = [next]> then\n        change [level v] by (1)\n    end\nend\n\ndefine add right boost x1 y1 x2 y2 (x1) (y1) (x2) (y2)\nadd (x1) to [right boost v]\nadd (y1) to [right boost v]\nadd (x2) to [right boost v]\nadd (y2) to [right boost v]\npen up\ngo to x (x1) y (y1)\npen down\ngo to x (x2) y (y1)\ngo to x (x2) y (y2)\ngo to x (x1) y (y2)\ngo to x (x1) y (y1)\n\n@Thumbnail\n\nwhen flag clicked\ngo to x: (0) y: (0)\nset [stop timer v] to [0]\nhide\nforever\n    go to [front v] layer\n    set [stop timer v] to ((timer) + (0.1))\nend\n\nwhen [timer v] > (Stop Timer)\nswitch costume to (blank v)\nset size to (500) %\nshow\nrepeat (50)\n    switch costume to (blank v)\n    change size by (((100) - (size)) / (5))\n    go to [front v] layer\n    switch costume to (thumbnail 2 v)\nend\n\nwhen [timer v] > (Stop Timer)\nhide variable [level v]\nset [brightness v] effect to (200)\nrepeat (20)\n    change [brightness v] effect by (-5)\nend\n\n
Yay 5th place :D\n\n------------ Code  a 100% Pen Platformer ---------------\n\nList of things that are not made out of pen:\n\n- Thumbnail\n- One tiny little cute adorable dot   ( I'm honest )\n\n\nTry to get to level 8 and win :D\n\nif you don't know what to do just jump down there may be a platform, or not.... well anyways have fun :)\n\n360° Platformer : https://scratch.mit.edu/projects/471986481/\n\nNormal Platformer : https://scratch.mit.edu/projects/462395033/\n\nCurrently 8 levels ( level 8 is a winning level )\n\nDec 27, 2020  Release date\nV 1.0\n\n- 3 levels\n- Thumbnail\n- Intro\n\nJanuary 1, 2021 First update \nV 1.1\n\n- Added 2 more levels\n\n\nJanuary 15, 2021  \n\nV 1.2\n\n- Added 2 new levels\n- Slippery Platform\n- Left Boost\n- Right Boost\n- Floating Trampoline\n\n\n\n