Grassworld // A 100% Pen Platformer //                       #games #all

Instructions: · @StratfordJames's 8,000 Follower PEN Contest Entry\nPlease play until the end!!! :)\nGo here for no lag: https://turbowarp.org/#419373222\nHOW TO PLAY:\nArrow keys or mobile to move\nAvoid spikes and lava\nTrampolines (yellow things) make you jump high\nJump orbs (pulsing yellow balls) make you double-jump if you jump on them\nEnemies will kill you if you touch them, unless you stomp on them\nYou can swim in water\nHold up/down arrow to go up/down the grey platforms\n

@Stage\n\n@blank\n\n@Pen\n\ndefine Spikes (x) (y) (height) (halfwidth) Pont: (dir)\ninsert [2] at (1) of [platform type v] \ninsert [] at (1) of [x or y v] \ninsert [] at (1) of [mv speed v] \nif <(dir) = [up]> then\n    insert ((x) - (halfwidth)) at (1) of [platform x v] \n    insert (y) at (1) of [platform y v] \n    insert (height) at (1) of [platform width v] \n    insert ((halfwidth) * (2)) at (1) of [platform length v] \n    if <<([abs v] of ((x) - (_cam x)) ) < [300]> and <([abs v] of ((y) - (_cam y)) ) < [300]>> then\n        Draw line ((x) - (_cam x)) ((y) - (_cam y)) (((x) + (halfwidth)) - (_cam x)) ((((y) - (height)) - (_cam y)) - (-1)) [10] Color [0] [0] [50] [] [1]\n        Draw line (((x) - (_cam x)) - (1)) ((y) - (_cam y)) (((x) - (halfwidth)) - (_cam x)) ((((y) - (height)) - (_cam y)) - (-1)) [11] Color [] [0] [70] [] [1]\n        Draw line (((x) + (halfwidth)) - (_cam x)) (((y) - (height)) - (_cam y)) ((x) - (_cam x)) (((y) - (height)) - (_cam y)) [10] Color [] [] [50] [] [1]\n        Draw line (((x) - (halfwidth)) - (_cam x)) (((y) - (height)) - (_cam y)) (((x) - (_cam x)) - (1)) (((y) - (height)) - (_cam y)) [10] Color [] [] [70] [] [1]\n        Draw line ((x) - (_cam x)) ((y) - (_cam y)) ((x) - (_cam x)) (((y) - (height)) - (_cam y)) [8] Color [] [] [70] [] [1]\n    end\nelse\n    if <(dir) = [down]> then\n        insert ((x) - (halfwidth)) at (1) of [platform x v] \n        insert ((y) + (height)) at (1) of [platform y v] \n        insert (height) at (1) of [platform width v] \n        insert ((halfwidth) * (2)) at (1) of [platform length v] \n        if <<([abs v] of ((x) - (_cam x)) ) < [300]> and <([abs v] of ((y) - (_cam y)) ) < [300]>> then\n            Draw line ((x) - (_cam x)) ((y) - (_cam y)) (((x) + (halfwidth)) - (_cam x)) ((((y) + (height)) - (_cam y)) - (1)) [10] Color [] [] [50] [] [1]\n            Draw line (((x) - (_cam x)) - (1)) ((y) - (_cam y)) (((x) - (halfwidth)) - (_cam x)) ((((y) + (height)) - (_cam y)) - (1)) [11] Color [] [] [70] [] [1]\n            Draw line (((x) + (halfwidth)) - (_cam x)) (((y) + (height)) - (_cam y)) ((x) - (_cam x)) (((y) + (height)) - (_cam y)) [10] Color [] [] [50] [] [1]\n            Draw line ((x) - (_cam x)) (((y) + (height)) - (_cam y)) ((x) - (_cam x)) ((y) - (_cam y)) [8] Color [] [] [70] [] [1]\n            Draw line (((x) - (halfwidth)) - (_cam x)) (((y) + (height)) - (_cam y)) (((x) - (_cam x)) - (1)) (((y) + (height)) - (_cam y)) [10] Color [] [] [70] [] [1]\n        end\n    else\n        if <(dir) = [left]> then\n            insert (x) at (1) of [platform x v] \n            insert ((y) + (halfwidth)) at (1) of [platform y v] \n            insert ((halfwidth) * (2)) at (1) of [platform width v] \n            insert (height) at (1) of [platform length v] \n            if <<([abs v] of ((x) - (_cam x)) ) < [300]> and <([abs v] of ((y) - (_cam y)) ) < [300]>> then\n                Draw line ((x) - (_cam x)) ((y) - (_cam y)) (((x) + (height)) - (_cam x)) ((((y) + (halfwidth)) - (_cam y)) - (1)) [10] Color [] [] [50] [] [1]\n                Draw line (((x) - (_cam x)) - (1)) ((y) - (_cam y)) (((x) + (height)) - (_cam x)) ((((y) - (halfwidth)) - (_cam y)) - (1)) [11] Color [] [] [70] [] [1]\n                Draw line (((x) + (height)) - (_cam x)) ((((y) + (halfwidth)) - (_cam y)) - (1)) (((x) + (height)) - (_cam x)) ((y) - (_cam y)) [10] Color [] [] [50] [] [1]\n                Draw line (((x) + (height)) - (_cam x)) (((y) - (halfwidth)) - (_cam y)) (((x) + (height)) - (_cam x)) ((y) - (_cam y)) [10] Color [] [] [70] [] [1]\n                Draw line ((x) - (_cam x)) ((y) - (_cam y)) (((x) + (height)) - (_cam x)) ((y) - (_cam y)) [10] Color [] [] [70] [] [1]\n            end\n        else\n            if <(dir) = [right]> then\n                insert ((x) - (height)) at (1) of [platform x v] \n                insert ((y) + (halfwidth)) at (1) of [platform y v] \n                insert ((halfwidth) * (2)) at (1) of [platform width v] \n                insert (height) at (1) of [platform length v] \n                if <<([abs v] of ((x) - (_cam x)) ) < [300]> and <([abs v] of ((y) - (_cam y)) ) < [300]>> then\n                    Draw line ((x) - (_cam x)) ((y) - (_cam y)) (((x) - (height)) - (_cam x)) ((((y) + (halfwidth)) - (_cam y)) - (1)) [10] Color [] [] [50] [] [1]\n                    Draw line ((x) - (_cam x)) ((y) - (_cam y)) ((((x) - (height)) - (-1)) - (_cam x)) ((((y) - (halfwidth)) - (_cam y)) - (1)) [11] Color [] [] [70] [] [1]\n                    Draw line (((x) - (height)) - (_cam x)) ((((y) + (halfwidth)) - (_cam y)) - (1)) (((x) - (height)) - (_cam x)) ((y) - (_cam y)) [10] Color [] [] [50] [] [1]\n                    Draw line (((x) - (height)) - (_cam x)) (((y) - (halfwidth)) - (_cam y)) (((x) - (height)) - (_cam x)) ((y) - (_cam y)) [10] Color [] [] [70] [] [1]\n                    Draw line ((x) - (_cam x)) ((y) - (_cam y)) (((x) - (height)) - (_cam x)) ((y) - (_cam y)) [10] Color [] [] [70] [] [1]\n                end\n            end\n        end\n    end\nend\n\ndefine Render Ellipse (centerx) (centery) (length) (width)\nset [x.offset v] to [0]\nrepeat ((length) * (2))\n    Draw line (((centerx) - ((length) / (2))) + (x.offset)) ((centery) + ([sqrt v] of ([abs v] of ((((width) / (2)) * ((width) / (2))) * ((1) - ((((x.offset) - ((length) / (2))) * ((x.offset) - ((length) / (2)))) / (((length) / (2)) * ((length) / (2)))))) ) )) (((centerx) - ((length) / (2))) + (x.offset)) ((centery) - ([sqrt v] of ([abs v] of ((((width) / (2)) * ((width) / (2))) * ((1) - ((((x.offset) - ((length) / (2))) * ((x.offset) - ((length) / (2)))) / (((length) / (2)) * ((length) / (2)))))) ) )) [1] Color [] [] [] [] []\n    change [x.offset v] by (0.5)\nend\n\ndefine draw rect (x) (y) (length) (width) (pen size) Color (color) (sat) (brit) (trans) (color needed?)\nset [i v] to [0]\nset pen size to (pen size)\nif <(color needed?) = [1]> then\n    set pen (color v) to (color)\n    set pen (saturation v) to (sat)\n    set pen (brightness v) to (brit)\n    set pen (transparency v) to (trans)\nend\nif <(width) > (length)> then\n    repeat ([ceiling v] of ((length) / (3)) )\n        pen up\n        go to x: ((x) + (i)) y: (y)\n        pen down\n        go to x: ((x) + (i)) y: ((y) - (width))\n        change [i v] by (3)\n    end\nelse\n    repeat ([ceiling v] of ((width) / (3)) )\n        pen up\n        go to x: (x) y: ((y) - (i))\n        pen down\n        go to x: ((x) + (length)) y: ((y) - (i))\n        change [i v] by (3)\n    end\nend\npen up\ngo to x: (x) y: (y)\npen down\ngo to x: ((x) + (length)) y: (y)\ngo to x: ((x) + (length)) y: ((y) - (width))\ngo to x: (x) y: ((y) - (width))\ngo to x: (x) y: (y)\npen up\n\ndefine Draw line (x) (y) (x2) (y2) (size) Color (col) (sat) (brit) (trans) (color needed?)\nset pen size to (size)\nif <(color needed?) = [1]> then\n    set pen (color v) to (col)\n    set pen (saturation v) to (sat)\n    set pen (brightness v) to (brit)\n    set pen (transparency v) to (trans)\nend\npen up\ngo to x: (x) y: (y)\npen down\ngo to x: (x2) y: (y2)\npen up\n\nwhen flag clicked\nset [timer v] to [0]\nset [checkpoint v] to [1]\nPlayer_Reset\nforever\n    erase all\n    change [timer v] by (timer)\n    Render\n    if <(EXIT) = []> then\n        Physics <<key (left arrow v) pressed?> or <<mouse down?> and <(mouse x) < (((_player.x) - (_cam x)) - (20))>>> <<key (right arrow v) pressed?> or <<mouse down?> and <(mouse x) > (((_player.x) - (_cam x)) + (20))>>> <<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > (((_player.y) - (_player.y)) + (20))>>> <<key (down arrow v) pressed?> or <<mouse down?> and <(mouse y) < (((_player.y) - (_player.y)) + (-20))>>>\n    else\n        if <(EXIT) = [die]> then\n            Player_Reset\n        else\n            broadcast (win v)\n            stop [this script v]\n        end\n    end\n    Draw Player ((_player.x) - (_cam x)) ((_player.y) - (_cam y))\n    set [fps v] to ((1) / (timer))\n    reset timer\nend\n\ndefine Render\nReset\nScroll\nDraw checkpoints\nDraw end [8627] [176]\nLava\nWater\nSpikes\nTramps\nBridges\nJump Orbs\nGrass\nPlatforms\nEnemies\nTrail\nParticles\n\ndefine Draw Player Body (x) (y) (size)\ndraw rect ((x) - ((size) / (2))) ((y) + ((size) / (2))) (size) (size) ([ceiling v] of ((size) * (0.5)) ) Color [] [] [] [] []\n\ndefine Draw Player (x) (y)\nset pen color to (#677980)\nDraw Player Leg Left (x) (y) (player_frame) <(p_dir) = [90]>\nDraw Player Leg Right (x) (y) (player_frame) <(p_dir) = [90]>\nDraw Player Arm Right (x) (y) (player_frame) <(p_dir) = [90]>\nset pen color to (#a6c6ce)\nDraw Player Body (x) (y) [26]\nset pen color to (#c1eaf3)\nDraw Player Body (x) (y) [20]\nset pen color to (#4c4c4c)\nif <(p_dir) = [90]> then\n    Render Ellipse ((x) - (5)) ((y) + (3)) [7] (blink)\n    Render Ellipse ((x) - (-7)) ((y) + (3)) [7] (blink)\nelse\n    Render Ellipse ((x) - (-5)) ((y) + (3)) [7] (blink)\n    Render Ellipse ((x) - (7)) ((y) + (3)) [7] (blink)\nend\nset pen color to (#677980)\nDraw Player Arm Left (x) (y) (player_frame) <(p_dir) = [90]>\n\ndefine Draw Player Arm Left (x) (y) (frame) <dir>\nif <dir> then\n    set [dir check v] to [1]\nelse\n    set [dir check v] to [-1]\nend\nset pen size to (8)\npen up\nif <(move_type) = [jump]> then\n    point in direction ((-60) * (dir check))\nelse\n    if <(move_type) = [fall]> then\n        point in direction ((-140) * (dir check))\n    else\n        point in direction ((((-30) * (dir check)) * ([sin v] of ((frame) * (3)) )) - (-180))\n    end\nend\ngo to x: ((x) - ((12) * (dir check))) y: ((y) - (6))\npen down\nmove (15) steps\npen up\n\ndefine Draw Player Arm Right (x) (y) (frame) <dir>\nif <dir> then\n    set [dir check v] to [1]\nelse\n    set [dir check v] to [-1]\nend\nset pen size to (8)\npen up\nif <(move_type) = [jump]> then\n    point in direction ((60) * (dir check))\nelse\n    if <(move_type) = [fall]> then\n        point in direction ((140) * (dir check))\n    else\n        point in direction ((((30) * (dir check)) * ([sin v] of ((frame) * (3)) )) - (-180))\n    end\nend\ngo to x: ((x) - ((-15) * (dir check))) y: ((y) - (7))\npen down\nmove (15) steps\npen up\n\ndefine Draw Player Leg Right (x) (y) (frame) <dir>\nif <dir> then\n    set [dir check v] to [1]\nelse\n    set [dir check v] to [-1]\nend\npen up\nset pen size to (8)\npen up\nif <(move_type) = [jump]> then\n    point in direction ((170) * (dir check))\nelse\n    if <(move_type) = [fall]> then\n        point in direction ((150) * (dir check))\n    else\n        point in direction ((((-30) * (dir check)) * ([sin v] of ((frame) * (3)) )) - (-180))\n    end\nend\ngo to x: ((x) - ((-7) * (dir check))) y: ((y) - (14))\npen down\nmove (18) steps\npen up\n\ndefine Draw Player Leg Left (x) (y) (frame) <dir>\nif <dir> then\n    set [dir check v] to [1]\nelse\n    set [dir check v] to [-1]\nend\nset pen size to (8)\npen up\nif <(move_type) = [jump]> then\n    point in direction ((-170) * (dir check))\nelse\n    if <(move_type) = [fall]> then\n        point in direction ((-150) * (dir check))\n    else\n        point in direction ((((30) * (dir check)) * ([sin v] of ((frame) * (3)) )) - (-180))\n    end\nend\ngo to x: ((x) - ((7) * (dir check))) y: ((y) - (14))\npen down\nmove (18) steps\npen up\n\nwhen I receive [blink v]\nset [blink v] to [8]\nrepeat (9)\n    change [blink v] by (-1)\nend\nrepeat (9)\n    change [blink v] by (1)\nend\nset [blink v] to [8]\n\nwhen flag clicked\nforever\n    if <(pick random (1) to (120)) < [2]> then\n        if <(blink) = [8]> then\n            broadcast (blink v)\n        end\n    end\nend\n\ndefine set player costume\nif <<<[collision v] contains [1]?> or <[collision v] contains [4]?>> or <<[collision v] contains [5]?> and <<(p_sy) < [0]> and <([abs v] of (player_frame) ) > [0]>>>> then\n    set [move_type v] to [stand/run]\nelse\n    if <(p_sy) > [0]> then\n        set [move_type v] to [jump]\n    else\n        change [_player.y v] by (-5)\n        test collide [14]\n        if <not <[collision v] contains [1]?>> then\n            set [move_type v] to [fall]\n        end\n        change [_player.y v] by (5)\n    end\nend\n\ndefine Physics <left> <right> <up> <down>\nchange [_player.y v] by (-1)\ntest collide [14]\nif <not <(in air) > [3]>> then\n    if <(item (mvpos) of [x or y v]) = [x]> then\n        if <(p_sy) = [0]> then\n            change [_player.x v] by (item (mvpos) of [mv speed v])\n        end\n    else\n        change [_player.y v] by (item (mvpos) of [mv speed v])\n    end\nend\nchange [_player.y v] by (1)\ntest collide [18]\nif  then\n    start sound [tramp eff v]\n    if <not <[collision v] contains [5]?>> then\n        repeat (8)\n            replace item (tramp pos) of [tramp extend v] with ((item (tramp pos) of [tramp extend v]) + (3))\n        end\n        if <[collision v] contains [3]?> then\n            set [p_sy v] to [30]\n        else\n            set [p_sy v] to [-30]\n        end\n    end\nelse\n    set [ii v] to [0]\n    repeat (length of [tramp extend v])\n        change [ii v] by (1)\n        if <(item (ii) of [tramp extend v]) > [0]> then\n            replace item (ii) of [tramp extend v] with ((item (ii) of [tramp extend v]) + (-3))\n        end\n    end\nend\ntest collide [18]\nif <[collision v] contains [5]?> then\n    if <(pick random (1) to (60)) = [1]> then\n        start sound [watr v]\n    end\n    set [in water v] to [1]\n    if <not <<up> or <down>>> then\n        set [p_sy v] to [-1]\n    end\nelse\n    set [in water v] to [0]\n    if <(p_sy) > [-24]> then\n        change [p_sy v] by (-2)\n    end\nend\nMove y (p_sy)\nchange [_player.y v] by (-1)\ntest collide [14]\nif <up> then\n    if <[collision v] contains [5]?> then\n        set [p_sy v] to [7]\n    else\n        if <<[collision v] contains [1]?> or <[collision v] contains [4]?>> then\n            set [p_sy v] to [22]\n        end\n    end\nend\nif <down> then\n    if <[collision v] contains [5]?> then\n        set [p_sy v] to [-7]\n    end\nend\nif <<<<((game_frame) mod (3)) = [0]> and <<<[collision v] contains [1]?> or <[collision v] contains [4]?>> and <not <[collision v] contains [5]?>>>> and <([abs v] of (p_sx) ) > [2]>> or > then\n    if <<<((game_frame) mod (3)) = [0]> and <<<[collision v] contains [1]?> or <[collision v] contains [4]?>> and <not <[collision v] contains [5]?>>>> and <([abs v] of (p_sx) ) > [2]>> then\n        add (_player.x) to [trail x v]\n        add (_player.y) to [trail y v]\n        add [30] to [trail size v]\n    end\n    if <<up> and <<<[collision v] contains [1]?> or <[collision v] contains [4]?>> and <not <[collision v] contains [5]?>>>> then\n        set [iii v] to [0]\n        repeat (8)\n            change [iii v] by (45)\n            add ((_player.x) + ((8) * ([cos v] of (iii) ))) to [trail x v]\n            add ((_player.y) - ((8) * ([sin v] of (iii) ))) to [trail y v]\n            add [20] to [trail size v]\n        end\n    end\nend\nset player costume\nchange [_player.y v] by (1)\nif <(_player.y) < [-180]> then\n    start sound [bleh die3 v]\n    set [exit v] to [die]\nend\ntest collide [18]\nif <[collision v] contains [69]?> then\n    start sound [\yeeee ween v]\n    set [exit v] to [win]\nend\nif <[collision v] contains [6]?> then\n    if <up> then\n        start sound [orb v]\n        set [p_sy v] to [22]\n    end\nend\nif <[collision v] contains [2]?> then\n    start sound [bleh die3 v]\n    set [exit v] to [die]\nend\nif <right> then\n    set [p_dir v] to [90]\n    change [p_sx v] by (2)\nend\nif <left> then\n    set [p_dir v] to [-90]\n    change [p_sx v] by (-2)\nend\nset [p_sx v] to ((p_sx) * (0.8))\nif <not <<left> or <right>>> then\n    set [player_frame v] to [0]\nend\nif <([abs v] of (p_sx) ) > [0.5]> then\n    Move x (p_sx)\nend\n\ndefine Move x (sx)\nchange [_player.x v] by (sx)\ntest collide [14]\nif <[collision v] contains [1]?> then\n    repeat (12)\n        change [_player.y v] by (1)\n        if <not <[collision v] contains [1]?>> then\n            stop [this script v]\n        end\n    end\n    change [_player.y v] by (-12)\n    repeat until <not <[collision v] contains [1]?>>\n        test collide [14]\n        if <(sx) > [0]> then\n            change [_player.x v] by (-0.2)\n            if <(item (mvpos) of [x or y v]) = []> then\n                set [p_sx v] to [0]\n            end\n        else\n            change [_player.x v] by (0.2)\n            if <(item (mvpos) of [x or y v]) = []> then\n                set [p_sx v] to [0]\n            end\n        end\n    end\nend\nif <([abs v] of (p_sx) ) > [0]> then\n    change [player_frame v] by (sx)\nend\n\ndefine Make Platform (x) (y) (length) (width) (pensize) Mv (x or y) (mv dist) (mv speed) top (no top?)\nset [platform x v] to ((x) + (<(x or y) = [x]> * ((mv dist) * ([sin v] of ((timer) * (mv speed)) ))))\nset [platform y v] to ((y) + (<(x or y) = [y]> * ((mv dist) * ([sin v] of ((timer) * (mv speed)) ))))\ninsert [1] at (1) of [platform type v] \ninsert (platform x) at (1) of [platform x v] \ninsert (platform y) at (1) of [platform y v] \ninsert (length) at (1) of [platform length v] \ninsert (width) at (1) of [platform width v] \ninsert (x or y) at (1) of [x or y v] \nif <(x or y) > []> then\n    if <(x or y) = [x]> then\n        insert ((platform x) - ((x) + ((mv dist) * ([sin v] of (((timer) - ((1) / (fps))) * (mv speed)) )))) at (1) of [mv speed v] \n    else\n        insert ((platform y) - ((y) + ((mv dist) * ([sin v] of (((timer) - ((1) / (fps))) * (mv speed)) )))) at (1) of [mv speed v] \n    end\nelse\n    insert [] at (1) of [mv speed v] \nend\nif <<([abs v] of ((platform x) - (_cam x)) ) < ((length) + (300))> and <([abs v] of ((platform y) - (_cam y)) ) < ((300) + (width))>> then\n    draw rect ((platform x) - (_cam x)) ((platform y) - (_cam y)) (length) (width) (pensize) Color [8] [80] [40] [] [1]\n    if <(no top?) = []> then\n        Draw line ((platform x) - (_cam x)) (((platform y) - (_cam y)) - (4)) (((platform x) - (_cam x)) + (length)) (((platform y) - (_cam y)) - (4)) [10] Color [25] [87] [71] [] [1]\n        Draw line ((platform x) - (_cam x)) ((platform y) - (_cam y)) (((platform x) - (_cam x)) + (length)) ((platform y) - (_cam y)) [12] Color [25] [88] [90] [] [1]\n    end\nend\n\ndefine test collide (x hitbox)\nset [col-i v] to [0]\ndelete all of [collision v]\nrepeat (length of [platform type v])\n    change [col-i v] by (1)\n    if <<(_player.x) > ((item (col-i) of [platform x v]) + (() - (x hitbox)))> and <<(_player.y) > (((item (col-i) of [platform y v]) - (item (col-i) of [platform width v])) - (20))> and <<(_player.x) < (((item (col-i) of [platform x v]) + (item (col-i) of [platform length v])) + (x hitbox))> and <(_player.y) < ((item (col-i) of [platform y v]) + (40))>>>> then\n        add (item (col-i) of [platform type v]) to [collision v]\n        set [mvpos v] to (col-i)\n        if <[collision v] contains [6]?> then\n            if <not <[orb pos v] contains ((item (col-i) of [platform x v]) + (10))?>> then\n                add ((item (col-i) of [platform x v]) + (10)) to [orb pos v]\n                add ((item (col-i) of [platform y v]) + (-10)) to [orb pos v]\n            end\n        end\n    end\nend\nset [col-i v] to [0]\nrepeat (length of [tramp x v])\n    change [col-i v] by (1)\n    if <<(_player.x) > ((item (col-i) of [tramp x v]) + (() - ((x hitbox) + (10))))> and <<(_player.y) > (((item (col-i) of [tramp y v]) - (50)) - (20))> and <<(_player.x) < (((item (col-i) of [tramp x v]) + (40)) + ((x hitbox) + (10)))> and <(_player.y) < ((item (col-i) of [tramp y v]) + (35))>>>> then\n        add (item (col-i) of [tramp type v]) to [collision v]\n        set [tramp pos v] to (col-i)\n        stop [this script v]\n    end\nend\n\ndefine Move y (sy)\nchange [_player.y v] by (sy)\nchange [in air v] by (1)\ntest collide [14]\nrepeat until <not <<[collision v] contains [1]?> or <<[collision v] contains [4]?> and <not <<<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > (((_player.y) - (_player.y)) + (20))>>> or <<key (down arrow v) pressed?> or <<mouse down?> and <(mouse y) < (((_player.y) - (_player.y)) + (-20))>>>>>>>>\n    test collide [14]\n    if <<[collision v] contains [1]?> or <<[collision v] contains [4]?> and <not <<<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > (((_player.y) - (_player.y)) + (20))>>> or <<key (down arrow v) pressed?> or <<mouse down?> and <(mouse y) < (((_player.y) - (_player.y)) + (-20))>>>>>>> then\n        if <(sy) > [0]> then\n            if <[collision v] contains [1]?> then\n                change [_player.y v] by (-1)\n            else\n                change [_player.y v] by (-0.2)\n            end\n        else\n            change [_player.y v] by (1)\n            set [in air v] to [0]\n        end\n        set [p_sy v] to [0]\n    end\nend\n\ndefine Reset\ndelete all of [platform length v]\ndelete all of [platform type v]\ndelete all of [mv speed v]\ndelete all of [platform width v]\ndelete all of [platform x v]\ndelete all of [platform y v]\ndelete all of [x or y v]\ndelete all of [tramp x v]\ndelete all of [tramp y v]\ndelete all of [tramp type v]\ndelete all of [orb pos v]\ndelete all of [checkpoint x v]\ndelete all of [checkpoint y v]\n\ndefine Make Tramp (x) (y)\ninsert (x) at (1) of [tramp x v] \ninsert ((y) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) at (1) of [tramp y v] \ninsert [3] at (1) of [tramp type v] \nif <(length of [tramp extend v]) < ((tv) + (1))> then\n    insert [0] at (1) of [tramp extend v] \nend\nif <<((x) - (_cam x)) < [350]> and <((y) - (_cam y)) < [350]>> then\n    Draw line ((x) - (_cam x)) ((((y) - (20)) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) - (_cam y)) (((x) - (_cam x)) + (40)) ((((y) - (35)) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) - (_cam y)) [6] Color [0] [0] [70] [50] [1]\n    pen down\n    go to x: ((x) - (_cam x)) y: ((((y) - (50)) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) - (_cam y))\n    pen up\n    go to x: (((x) - (_cam x)) + (40)) y: ((((y) - (20)) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) - (_cam y))\n    pen down\n    go to x: ((x) - (_cam x)) y: ((((y) - (35)) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) - (_cam y))\n    go to x: (((x) - (_cam x)) + (40)) y: ((((y) - (50)) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) - (_cam y))\n    pen up\n    set pen color to (#fbf3b6)\n    Draw line ((x) - (_cam x)) ((((y) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) + (-10)) - (_cam y)) (((x) - (_cam x)) + (40)) ((((y) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) + (-10)) - (_cam y)) [20] Color [] [] [] [] []\n    set pen color to (#fff06c)\n    Draw line ((x) - (_cam x)) ((((y) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) + (-11.5)) - (_cam y)) (((x) - (_cam x)) + (40)) ((((y) - (item ((length of [tramp extend v]) - (tv)) of [tramp extend v])) + (-11.5)) - (_cam y)) [20] Color [] [] [] [] []\nend\nchange [tv v] by (1)\n\ndefine Platforms\nMake Platform [-240] [-100] [200] [80] [3] Mv [] [] [] top []\nMake Platform [0] [120] [150] [40] [3] Mv [] [] [] top []\nMake Platform [220] [0] [100] [40] [4] Mv [y] [100] [100] top []\nMake Platform [350] [-100] [150] [80] [3] Mv [] [] [] top []\nMake Platform [500] [-160] [300] [20] [3] Mv [] [] [] top [1]\nMake Platform [800] [-100] [150] [80] [3] Mv [] [] [] top []\nMake Platform [1050] [0] [150] [40] [3] Mv [] [] [] top []\nMake Platform [880] [80] [80] [30] [3] Mv [] [] [] top []\nMake Platform [800] [200] [80] [30] [3] Mv [] [] [] top []\nMake Platform [1080] [200] [250] [30] [3] Mv [] [] [] top []\nMake Platform [1280] [170] [50] [270] [3] Mv [] [] [] top [1]\nMake Platform [1730] [200] [100] [300] [3] Mv [] [] [] top []\nMake Platform [1330] [-40] [400] [60] [3] Mv [] [] [] top []\nMake Platform [1500] [200] [100] [120] [3] Mv [] [] [] top []\nMake Platform [2000] [300] [80] [290] [3] Mv [] [] [] top []\nMake Platform [1830] [-60] [350] [40] [3] Mv [] [] [] top []\nMake Platform [2300] [150] [250] [50] [3] Mv [] [] [] top []\nMake Platform [2800] [180] [470] [50] [3] Mv [] [] [] top []\nMake Platform [2800] [450] [470] [50] [3] Mv [] [] [] top []\nMake Platform [3300] [100] [100] [30] [4] Mv [y] [200] [50] top []\nMake Platform [3550] [-50] [100] [130] [3] Mv [] [] [] top []\nMake Platform [4000] [-50] [100] [130] [3] Mv [] [] [] top []\nMake Platform [3650] [-160] [350] [20] [3] Mv [] [] [] top []\nMake Platform [3775] [100] [100] [155] [3] Mv [] [] [] top []\nMake Platform [4220] [0] [250] [50] [3] Mv [] [] [] top []\nMake Platform [4590] [40] [250] [50] [3] Mv [] [] [] top []\nMake Platform [5100] [60] [200] [50] [3] Mv [] [] [] top []\nMake Platform [5400] [250] [200] [50] [3] Mv [] [] [] top []\nMake Platform [5800] [300] [100] [30] [4] Mv [x] [180] [70] top []\nMake Platform [6250] [400] [100] [30] [4] Mv [x] [-180] [70] top []\nMake Platform [6800] [350] [50] [150] [3] Mv [] [] [] top []\nMake Platform [6850] [250] [300] [50] [3] Mv [] [] [] top [1]\nMake Platform [7100] [350] [50] [150] [3] Mv [] [] [] top []\nMake Platform [7334] [425] [70] [50] [3] Mv [] [] [] top []\nMake Platform [7220] [530] [30] [40] [3] Mv [] [] [] top []\nMake Platform [7170] [720] [70] [50] [3] Mv [] [] [] top []\nMake Platform [7200] [340] [50] [20] [3] Mv [] [] [] top []\nMake Platform [7440] [720] [300] [50] [3] Mv [] [] [] top []\nMake Platform [7800] [400] [100] [40] [4] Mv [y] [300] [50] top []\nMake Platform [7950] [100] [200] [50] [3] Mv [] [] [] top []\nMake Platform [8200] [300] [80] [40] [3] Mv [] [] [] top []\nMake Platform [8480] [300] [150] [40] [3] Mv [] [] [] top []\nMake Platform [8400] [50] [370] [60] [3] Mv [] [] [] top []\n\ndefine Spikes\nSpikes [80] [160] [40] [10] Pont: [up]\nSpikes [1184] [40] [35] [8] Pont: [up]\nSpikes [1520] [240] [40] [8] Pont: [up]\nSpikes [1371] [15] [40] [8] Pont: [right]\nSpikes [1365] [45] [35] [7] Pont: [right]\nSpikes [1512] [45] [35] [7] Pont: [down]\nSpikes [1540] [50] [30] [6] Pont: [down]\nSpikes [1567] [40] [40] [8] Pont: [down]\nSpikes [1590] [60] [20] [4] Pont: [down]\nSpikes [1693] [60] [35] [7] Pont: [left]\nSpikes [1691] [85] [37] [6] Pont: [left]\nSpikes [1698] [110] [30] [6] Pont: [left]\nSpikes [1688] [135] [40] [8] Pont: [left]\nSpikes [1620] [170] [20] [4] Pont: [right]\nSpikes [1850] [235] [40] [8] Pont: [up]\nSpikes [1877] [230] [35] [7] Pont: [up]\nSpikes [1980] [145] [35] [7] Pont: [up]\nSpikes [1955] [148] [38] [8] Pont: [up]\nSpikes [1847] [70] [40] [10] Pont: [up]\nSpikes [1873] [55] [20] [5] Pont: [up]\nSpikes [1985] [70] [40] [10] Pont: [up]\nSpikes [2383] [196] [40] [10] Pont: [up]\nSpikes [2410] [187] [30] [7] Pont: [up]\nSpikes [2490] [196] [40] [10] Pont: [up]\nSpikes [2817] [359] [40] [10] Pont: [down]\nSpikes [2850] [364] [35] [10] Pont: [down]\nSpikes [2883] [359] [40] [10] Pont: [down]\nSpikes [2916] [359] [40] [10] Pont: [down]\nSpikes [2949] [364] [35] [10] Pont: [down]\nSpikes [2982] [359] [40] [10] Pont: [down]\nSpikes [3015] [359] [40] [10] Pont: [down]\nSpikes [3048] [359] [40] [10] Pont: [down]\nSpikes [3081] [359] [40] [10] Pont: [down]\nSpikes [3114] [364] [35] [10] Pont: [down]\nSpikes [3147] [359] [40] [10] Pont: [down]\nSpikes [3180] [359] [40] [10] Pont: [down]\nSpikes [3213] [364] [35] [10] Pont: [down]\nSpikes [3246] [359] [40] [10] Pont: [down]\nSpikes [3789] [-93] [40] [10] Pont: [down]\nSpikes [3870] [-120] [40] [10] Pont: [up]\nSpikes [3895] [-125] [35] [8] Pont: [up]\nSpikes [5514] [291] [35] [8] Pont: [up]\nSpikes [7387] [470] [40] [10] Pont: [up]\nSpikes [8000] [140] [35] [8] Pont: [up]\nSpikes [8030] [145] [40] [10] Pont: [up]\n\ndefine Player_Reset\ndelete all of [trail x v]\ndelete all of [trail y v]\ndelete all of [trail size v]\ndelete all of [tramp extend v]\ndelete all of [enemy frame v]\ndelete all of [enemy dead v]\ndelete all of [particle x v]\ndelete all of [particle y v]\ndelete all of [particle trans v]\ndelete all of [particle dir v]\ndelete all of [particle type v]\ndelete all of [grass x v]\ndelete all of [grass y v]\ndelete all of [grass magnitude v]\ndelete all of [grass type v]\ndelete all of [grass dir v]\ndelete all of [grass sway v]\ndelete all of [enemy x v]\ndelete all of [enemy y v]\ndelete all of [enemy_mv v]\nset size to (10000) %\nhide\nAdd Grass Stuff\nset [_player.x v] to [0]\nset [_player.y v] to [0]\nDraw checkpoints\nset [_player.x v] to (item (checkpoint) of [checkpoint x v])\nset [_player.y v] to (item (checkpoint) of [checkpoint y v])\nset [player_frame v] to [0]\nset [exit v] to []\n\ndefine Tramps\nset [tv v] to [0]\nMake Tramp [-85] [-45]\nMake Tramp [2130] [-5]\nMake Tramp [2870] [235]\nMake Tramp [3020] [235]\nMake Tramp [3170] [235]\nMake Tramp [5255] [115]\nMake Tramp [8100] [155]\n\ndefine Draw Bridge (x) (y) (length)\ninsert [4] at (1) of [platform type v] \ninsert (x) at (1) of [platform x v] \ninsert (y) at (1) of [platform y v] \ninsert (length) at (1) of [platform length v] \ninsert [18] at (1) of [platform width v] \ninsert [] at (1) of [x or y v] \ninsert [] at (1) of [mv speed v] \nif <<([abs v] of ((x) - (_cam x)) ) < ((length) + (300))> and <([abs v] of ((y) - (_cam y)) ) < [300]>> then\n    draw rect ((x) - (_cam x)) (((y) + (3)) - (_cam y)) (length) [9] [3] Color [0] [0] [70] [] [1]\n    draw rect ((x) - (_cam x)) (((y) - (9)) - (_cam y)) (length) [9] [3] Color [0] [0] [40] [] [1]\nend\n\ndefine Make lava (x) (y) (length) (width)\ninsert [2] at (1) of [platform type v] \ninsert (x) at (1) of [platform x v] \ninsert (y) at (1) of [platform y v] \ninsert (length) at (1) of [platform length v] \ninsert (width) at (1) of [platform width v] \ninsert [] at (1) of [x or y v] \ninsert [] at (1) of [mv speed v] \nif <<([abs v] of ((x) - (_cam x)) ) < ((length) + (300))> and <([abs v] of ((y) - (_cam y)) ) < ((width) + (300))>> then\n    set [lavaloops v] to [0]\n    repeat ([ceiling v] of ((length) / (3)) )\n        Draw line (((x) + (lavaloops)) - (_cam x)) (((y) + ((4) * ([cos v] of ((3) * ((lavaloops) + ((timer) * (100)))) ))) - (_cam y)) (((x) + (lavaloops)) - (_cam x)) (((y) - (width)) - (_cam y)) [3] Color [0] [90] [100] [] [1]\n        change [lavaloops v] by (3)\n    end\nend\n\ndefine Make Water (x) (y) (length) (width)\ninsert [5] at (1) of [platform type v] \ninsert (x) at (1) of [platform x v] \ninsert (y) at (1) of [platform y v] \ninsert (length) at (1) of [platform length v] \ninsert (width) at (1) of [platform width v] \ninsert [] at (1) of [x or y v] \ninsert [] at (1) of [mv speed v] \nif <<([abs v] of ((x) - (_cam x)) ) < ((length) + (300))> and <([abs v] of ((y) - (_cam y)) ) < ((width) + (300))>> then\n    set [lavaloops v] to [0]\n    repeat ([ceiling v] of ((length) / (3)) )\n        Draw line (((x) + (lavaloops)) - (_cam x)) (((y) + ((4) * ([cos v] of ((3) * ((lavaloops) + ((timer) * (100)))) ))) - (_cam y)) (((x) + (lavaloops)) - (_cam x)) (((y) - (width)) - (_cam y)) [3] Color [54] [60] [95] [] [1]\n        change [lavaloops v] by (3)\n    end\nend\n\ndefine Draw Jump Orb (x) (y)\ninsert [6] at (1) of [platform type v] \ninsert (x) at (1) of [platform x v] \ninsert (y) at (1) of [platform y v] \ninsert [20] at (1) of [platform length v] \ninsert [20] at (1) of [platform width v] \ninsert [] at (1) of [x or y v] \ninsert [] at (1) of [mv speed v] \nif <<([abs v] of ((x) - (_cam x)) ) < [300]> and <([abs v] of ((y) - (_cam y)) ) < [300]>> then\n    pen up\n    set pen color to (#f5e000)\n    set pen size to (5)\n    test collide [18]\n    if <<<[collision v] contains [6]?> and <<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > (((_player.y) - (_player.y)) + (20))>>>> and <<(item (1) of [orb pos v]) = ((x) + (10))> and <(item (2) of [orb pos v]) = ((y) - (10))>>> then\n        set pen color to (#fff385)\n        Draw Outlined Circle ((18) + ([sin v] of ((timer) * (150)) )) (item (1) of [orb pos v]) (item (2) of [orb pos v])\n    else\n        set pen color to (#f5e000)\n        Draw Outlined Circle ((15) + ([sin v] of ((timer) * (150)) )) (((x) + (10)) - (_cam x)) (((y) - (10)) - (_cam y))\n    end\n    pen up\n    go to x: (((x) + (10)) - (_cam x)) y: (((y) - (10)) - (_cam y))\n    set pen size to (20)\n    if <<<[collision v] contains [6]?> and <<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > (((_player.y) - (_player.y)) + (20))>>>> and <<(item (1) of [orb pos v]) = ((x) + (10))> and <(item (2) of [orb pos v]) = ((y) - (10))>>> then\n        set pen color to (#fff7b0)\n    else\n        set pen color to (#ffeb10)\n    end\n    repeat (15)\n        pen down\n        change pen (saturation v) by (-2.5)\n        change pen size by (-1)\n    end\nend\n\ndefine Draw Outlined Circle (rad) (x) (y)\npen up\nset [deg v] to [0]\nrepeat (91)\n    change [deg v] by (4)\n    go to x: ((x) + ((rad) * ([sin v] of (deg) ))) y: ((y) + ((rad) * ([cos v] of (deg) )))\n    pen down\nend\npen up\n\ndefine Jump Orbs\nDraw Jump Orb [650] []\nDraw Jump Orb [2663] [216]\nDraw Jump Orb [4960] [120]\nDraw Jump Orb [6600] [500]\nDraw Jump Orb [6970] [460]\nDraw Jump Orb [7330] [620]\n\ndefine Make Enemy at (x) (y) Mv: (dist) (speed)\nchange [ev v] by (1)\nif <(length of [enemy frame v]) < (ev)> then\n    add [0] to [enemy frame v]\n    add [0] to [enemy dead v]\n    add [0] to [enemy_mv v]\n    add (x) to [enemy x v]\n    add (y) to [enemy y v]\nend\nif <(item (ev) of [enemy dead v]) = [0]> then\n    set [enemy x v] to ((x) + ((dist) * ([sin v] of ((timer) * (speed)) )))\n    set [e_mv_speed v] to ((enemy x) - ((x) + ((dist) * ([sin v] of (((timer) - ((1) / (fps))) * (speed)) ))))\n    insert [7] at (1) of [platform type v] \n    insert ((enemy x) - (19.5)) at (1) of [platform x v] \n    insert ((y) - (-19.5)) at (1) of [platform y v] \n    insert [39] at (1) of [platform length v] \n    insert [51.5] at (1) of [platform width v] \n    insert [] at (1) of [x or y v] \n    insert [] at (1) of [mv speed v] \n    replace item (ev) of [enemy frame v] with ((item (ev) of [enemy frame v]) + (3))\n    replace item (ev) of [enemy_mv v] with (e_mv_speed)\n    replace item (ev) of [enemy x v] with (enemy x)\n    replace item (ev) of [enemy y v] with (y)\n    if <<((enemy x) - (_cam x)) < [300]> and <((y) - (_cam y)) < [300]>> then\n        Draw Enemy ((enemy x) - (_cam x)) ((y) - (_cam y)) (item (ev) of [enemy frame v])\n        test collide [18]\n        if <[collision v] contains [7]?> then\n            if <<(_player.y) > (y)> and <(p_sy) < [-1]>> then\n                start sound [checkpn v]\n                set [p_sy v] to [22]\n                replace item (ev) of [enemy dead v] with [1]\n                repeat (5)\n                    add [0] to [particle trans v]\n                    add (enemy x) to [particle x v]\n                    add (y) to [particle y v]\n                    add (pick random (-180) to (180)) to [particle dir v]\n                    add [1] to [particle type v]\n                end\n            else\n                if <not <(EXIT) = [die]>> then\n                    start sound [bleh die3 v]\n                    set [exit v] to [die]\n                end\n            end\n        end\n    end\nend\n\ndefine Draw Enemy (x) (y) (frame)\nchange [move_type v] by (join [stand/run] [])\nset pen color to (#807667)\nDraw Player Leg Left (x) (y) (frame) <(e_mv_speed) > [0]>\nDraw Player Leg Right (x) (y) (frame) <(e_mv_speed) > [0]>\nDraw Player Arm Right (x) (y) (frame) <(e_mv_speed) > [0]>\nset pen color to (#cebfa6)\nDraw Player Body (x) (y) [26]\nset pen color to (#f3e0c1)\nDraw Player Body (x) (y) [20]\nset pen color to (#4c3a1b)\nif <(e_mv_speed) > [0]> then\n    Render Ellipse ((x) - (5)) ((y) + (3)) [7] [8]\n    Render Ellipse ((x) - (-7)) ((y) + (3)) [7] [8]\nelse\n    Render Ellipse ((x) - (-5)) ((y) + (3)) [7] [8]\n    Render Ellipse ((x) - (7)) ((y) + (3)) [7] [8]\nend\nset pen color to (#807667)\nDraw Player Arm Left (x) (y) (frame) <(e_mv_speed) > [0]>\n\ndefine Enemies\nset [ev v] to [0]\nMake Enemy at [1205] [240] Mv: [125] [70]\nMake Enemy at [4345] [40] Mv: [120] [90]\nMake Enemy at [4715] [80] Mv: [120] [90]\nMake Enemy at [7590] [760] Mv: [120] [60]\n\ndefine Bridges\nDraw Bridge [880] [190] [200]\nDraw Bridge [1830] [190] [170]\nDraw Bridge [1830] [110] [170]\nDraw Bridge [1830] [30] [170]\nDraw Bridge [7240] [710] [200]\nDraw Bridge [8280] [290] [200]\n\ndefine Lava\nMake lava [500] [-100] [300] [60]\nMake lava [6850] [350] [250] [100]\n\ndefine Water\nMake Water [1330] [200] [400] [240]\nMake Water [3650] [-50] [350] [110]\n\ndefine Draw Right Triangle (x) (y) (length) (width) (res) (dir)\nset pen size to (res)\nset [size-i v] to [0]\nset [m v] to ((width) / (length))\nrepeat (length)\n    pen up\n    go to x: ((x) + (size-i)) y: (((y) + ((width) * (dir))) - (((size-i) * (m)) * (dir)))\n    pen down\n    go to x: ((x) + (size-i)) y: (y)\n    pen up\n    change [size-i v] by (1)\nend\n\ndefine Scroll\nchange [_cam x v] by (round (((_player.x) - (_cam x)) / (10)))\nif <(_cam x) < [0]> then\n    set [_cam x v] to [0]\nend\nif <(_cam x) > [8530]> then\n    set [_cam x v] to [8530]\nend\nif <(_player.x) < [-230]> then\n    set [_player.x v] to [-230]\n    set [p_sx v] to [0]\n    set [player_frame v] to [0]\nend\nchange [_cam y v] by (round (((_player.y) - (_cam y)) / (10)))\nif <(_cam y) < [0]> then\n    set [_cam y v] to [0]\nend\n\ndefine Trail\npen up\nset [trail-i v] to [0]\nrepeat (length of [trail size v])\n    change [trail-i v] by (1)\n    pen up\n    set pen size to (item (trail-i) of [trail size v])\n    set pen (color v) to (50)\n    set pen (saturation v) to (50)\n    set pen (brightness v) to (60)\n    set pen (transparency v) to (80)\n    go to x: ((item (trail-i) of [trail x v]) - (_cam x)) y: (((item (trail-i) of [trail y v]) - (_cam y)) - (20))\n    pen down\n    pen up\n    replace item (trail-i) of [trail size v] with ((item (trail-i) of [trail size v]) - (2))\n    if <(item (trail-i) of [trail size v]) < [2]> then\n        delete (trail-i) of [trail x v]\n        delete (trail-i) of [trail y v]\n        delete (trail-i) of [trail size v]\n    end\nend\n\ndefine Particles\nset [trail-i v] to [0]\nrepeat (length of [particle x v])\n    pen up\n    change [trail-i v] by (1)\n    replace item (trail-i) of [particle trans v] with ((item (trail-i) of [particle trans v]) + (5))\n    replace item (trail-i) of [particle x v] with ((item (trail-i) of [particle x v]) + (([cos v] of (item (trail-i) of [particle dir v]) ) * (5)))\n    replace item (trail-i) of [particle y v] with ((item (trail-i) of [particle y v]) + (([sin v] of (item (trail-i) of [particle dir v]) ) * (5)))\n    if <(item (trail-i) of [particle type v]) = [1]> then\n        set pen (color v) to (10)\n        set pen (saturation v) to (20)\n        set pen (brightness v) to (95)\n    else\n        set pen color to (#c0e9f2)\n    end\n    set pen (transparency v) to (item (trail-i) of [particle trans v])\n    set pen size to (15)\n    go to x: ((item (trail-i) of [particle x v]) - (_cam x)) y: ((item (trail-i) of [particle y v]) - (_cam y))\n    pen down\n    pen up\n    if <(length of [particle x v]) > [5]> then\n        delete (1) of [particle x v]\n        delete (1) of [particle y v]\n        delete (1) of [particle dir v]\n        delete (1) of [particle trans v]\n        delete (1) of [particle type v]\n    end\nend\n\nwhen flag clicked\nset [game_frame v] to [0]\nset [flag_shift_y v] to [0]\nforever\n    change [game_frame v] by (1)\nend\n\ndefine Draw checkpoint (x) (y) (number)\nadd (x) to [checkpoint x v]\nadd (y) to [checkpoint y v]\nif <<([abs v] of ((x) - (_cam x)) ) < [300]> and <([abs v] of ((y) - (_cam y)) ) < [350]>> then\n    if <(checkpoint) > ((number) - (1))> then\n        set pen color to (#32bae8)\n        Draw Right Triangle (((x) + (5)) - (_cam x)) (((y) - (20)) - (_cam y)) [40] [20] [1] [-1]\n        set pen color to (#88cfe8)\n        Draw Right Triangle (((x) + (5)) - (_cam x)) (((y) - (20)) - (_cam y)) [40] [20] [1] [1]\n        Draw line (((x) - (3)) - (_cam x)) ((y) - (_cam y)) (((x) - (3)) - (_cam x)) (((y) - (100)) - (_cam y)) [12] Color [0] [0] [70] [] [1]\n        Draw line ((x) - (_cam x)) ((y) - (_cam y)) ((x) - (_cam x)) (((y) - (100)) - (_cam y)) [12] Color [0] [0] [80] [] [1]\n    else\n        set pen color to (#dcdcdc)\n        Draw Right Triangle (((x) + (5)) - (_cam x)) (((y) - (20)) - (_cam y)) [40] [20] [1] [-1]\n        set pen color to (#ececec)\n        Draw Right Triangle (((x) + (5)) - (_cam x)) (((y) - (20)) - (_cam y)) [40] [20] [1] [1]\n        Draw line (((x) - (3)) - (_cam x)) ((y) - (_cam y)) (((x) - (3)) - (_cam x)) (((y) - (100)) - (_cam y)) [12] Color [0] [0] [70] [] [1]\n        Draw line ((x) - (_cam x)) ((y) - (_cam y)) ((x) - (_cam x)) (((y) - (100)) - (_cam y)) [12] Color [0] [0] [80] [] [1]\n        if <<(_player.x) > ((x) - (18))> and <<(_player.y) > (((y) - (100)) - (20))> and <<(_player.x) < (((x) + (40)) + (18))> and <(_player.y) < ((y) - (-40))>>>> then\n            start sound [checkpn v]\n            change [checkpoint v] by (1)\n        end\n    end\nend\n\ndefine Draw checkpoints\nDraw checkpoint [-200] [5] [1]\nDraw checkpoint [1807] [305] [2]\nDraw checkpoint [4045] [55] [3]\nDraw checkpoint [7197] [825] [4]\n\ndefine Add Grass (x) (y) (type)\ninsert (type) at (1) of [grass type v] \ninsert (x) at (1) of [grass x v] \ninsert (y) at (1) of [grass y v] \ninsert [0] at (1) of [grass dir v] \ninsert [0] at (1) of [grass magnitude v] \ninsert [0] at (1) of [grass sway v] \n\ndefine Grass\nset [grass-i v] to [0]\nrepeat (length of [grass x v])\n    change [grass-i v] by (1)\n    pen up\n    if <<([abs v] of ((item (grass-i) of [grass x v]) - (_cam x)) ) < [260]> and <([abs v] of ((item (grass-i) of [grass y v]) - (_cam y)) ) < [260]>> then\n        if <(item (grass-i) of [grass type v]) = [1]> then\n            set pen size to (9)\n            set pen color to (#6cc316)\n            go to x: ((item (grass-i) of [grass x v]) - (_cam x)) y: ((item (grass-i) of [grass y v]) - (_cam y))\n            pen down\n            go to x: (((item (grass-i) of [grass x v]) + ((20) * ([sin v] of (item (grass-i) of [grass dir v]) ))) - (_cam x)) y: (((item (grass-i) of [grass y v]) + ((20) * ([cos v] of (item (grass-i) of [grass dir v]) ))) - (_cam y))\n            pen up\n        else\n            if <(item (grass-i) of [grass type v]) = [2]> then\n                set pen size to (10)\n                set pen color to (#6cc316)\n                go to x: ((item (grass-i) of [grass x v]) - (_cam x)) y: ((item (grass-i) of [grass y v]) - (_cam y))\n                pen down\n                go to x: (((item (grass-i) of [grass x v]) + ((15) * ([sin v] of (item (grass-i) of [grass dir v]) ))) - (_cam x)) y: (((item (grass-i) of [grass y v]) + ((15) * ([cos v] of (item (grass-i) of [grass dir v]) ))) - (_cam y))\n                pen up\n            else\n                set pen size to (6)\n                set pen color to (#6cc316)\n                go to x: ((item (grass-i) of [grass x v]) - (_cam x)) y: ((item (grass-i) of [grass y v]) - (_cam y))\n                pen down\n                go to x: (((item (grass-i) of [grass x v]) + ((30) * ([sin v] of (item (grass-i) of [grass dir v]) ))) - (_cam x)) y: (((item (grass-i) of [grass y v]) + ((30) * ([cos v] of (item (grass-i) of [grass dir v]) ))) - (_cam y))\n                pen up\n                set pen color to (#e69305)\n                set pen size to (20)\n                pen down\n                pen up\n                set pen color to (#ffd9b7)\n                set pen size to (15)\n                pen down\n                pen up\n            end\n        end\n    end\n    replace item (grass-i) of [grass dir v] with (() - (([sin v] of (item (grass-i) of [grass sway v]) ) * (item (grass-i) of [grass magnitude v])))\n    if <((((_player.x) - (item (grass-i) of [grass x v])) * ((_player.x) - (item (grass-i) of [grass x v]))) + (((_player.y) - (item (grass-i) of [grass y v])) * ((_player.y) - (item (grass-i) of [grass y v])))) < [1700]> then\n        replace item (grass-i) of [grass magnitude v] with ((p_sx) * (10))\n        replace item (grass-i) of [grass sway v] with [0]\n    end\n    set [iiii v] to [0]\n    repeat (length of [enemy frame v])\n        change [iiii v] by (1)\n        if <((((item (iiii) of [enemy x v]) - (item (grass-i) of [grass x v])) * ((item (iiii) of [enemy x v]) - (item (grass-i) of [grass x v]))) + (((item (iiii) of [enemy y v]) - (item (grass-i) of [grass y v])) * ((item (iiii) of [enemy y v]) - (item (grass-i) of [grass y v])))) < [1700]> then\n            replace item (grass-i) of [grass magnitude v] with ((item (iiii) of [enemy_mv v]) * (10))\n            replace item (grass-i) of [grass sway v] with [0]\n        end\n    end\n    replace item (grass-i) of [grass sway v] with ((item (grass-i) of [grass sway v]) - (8))\n    replace item (grass-i) of [grass magnitude v] with ((item (grass-i) of [grass magnitude v]) * (0.9))\nend\n\ndefine Add Grass Stuff\nAdd Grass [-230] [-100] [1]\nAdd Grass [-210] [-100] [2]\nAdd Grass [-180] [-100] [3]\nAdd Grass [-160] [-100] [2]\nAdd Grass [-140] [-100] [1]\nAdd Grass [-120] [-100] [3]\nAdd Grass [14] [125] [3]\nAdd Grass [30] [125] [2]\nAdd Grass [50] [125] [2]\nAdd Grass [110] [125] [1]\nAdd Grass [130] [125] [3]\nAdd Grass [365] [-96] [3]\nAdd Grass [385] [-96] [2]\nAdd Grass [405] [-96] [1]\nAdd Grass [425] [-96] [2]\nAdd Grass [445] [-96] [3]\nAdd Grass [465] [-96] [1]\nAdd Grass [485] [-96] [2]\nAdd Grass [810] [-95] [1]\nAdd Grass [830] [-95] [3]\nAdd Grass [850] [-95] [1]\nAdd Grass [870] [-95] [2]\nAdd Grass [890] [-95] [3]\nAdd Grass [910] [-95] [2]\nAdd Grass [930] [-95] [1]\nAdd Grass [1060] [5] [2]\nAdd Grass [1080] [5] [1]\nAdd Grass [1100] [5] [3]\nAdd Grass [1120] [5] [2]\nAdd Grass [1140] [5] [3]\nAdd Grass [1160] [5] [1]\nAdd Grass [885] [85] [1]\nAdd Grass [905] [85] [3]\nAdd Grass [925] [85] [2]\nAdd Grass [945] [85] [3]\nAdd Grass [810] [205] [1]\nAdd Grass [830] [205] [2]\nAdd Grass [850] [205] [1]\nAdd Grass [870] [205] [3]\nAdd Grass [1085] [205] [1]\nAdd Grass [1105] [205] [2]\nAdd Grass [1125] [205] [3]\nAdd Grass [1145] [205] [2]\nAdd Grass [1145] [205] [1]\nAdd Grass [1165] [205] [3]\nAdd Grass [1185] [205] [2]\nAdd Grass [1205] [205] [1]\nAdd Grass [1225] [205] [3]\nAdd Grass [1245] [205] [2]\nAdd Grass [1265] [205] [3]\nAdd Grass [1285] [205] [1]\nAdd Grass [1305] [205] [2]\nAdd Grass [1545] [205] [2]\nAdd Grass [1565] [205] [1]\nAdd Grass [1585] [205] [3]\nAdd Grass [1750] [205] [2]\nAdd Grass [1770] [205] [1]\nAdd Grass [2000] [300] [3]\nAdd Grass [2020] [300] [2]\nAdd Grass [2040] [300] [1]\nAdd Grass [2060] [300] [3]\nset [ii v] to [0]\nrepeat (13)\n    Add Grass ((1850) + (ii)) [-55] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\nAdd Grass [3560] [-45] [1]\nAdd Grass [3580] [-45] [2]\nAdd Grass [3600] [-45] [3]\nAdd Grass [3620] [-45] [2]\nAdd Grass [3640] [-45] [1]\nAdd Grass [3780] [105] [2]\nAdd Grass [3800] [105] [1]\nAdd Grass [3820] [105] [2]\nAdd Grass [3840] [105] [3]\nAdd Grass [3860] [105] [1]\nAdd Grass [4010] [-45] [2]\nAdd Grass [4025] [-45] [1]\nAdd Grass [4070] [-45] [3]\nAdd Grass [4090] [-45] [1]\nset [ii v] to [0]\nrepeat (12)\n    Add Grass ((4230) + (ii)) [0] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\nset [ii v] to [0]\nrepeat (13)\n    Add Grass ((4590) + (ii)) [40] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\nset [ii v] to [0]\nrepeat (7)\n    Add Grass ((5100) + (ii)) [55] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\nset [ii v] to [0]\nrepeat (5)\n    Add Grass ((5405) + (ii)) [250] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\nset [ii v] to [0]\nrepeat (3)\n    Add Grass ((5538) + (ii)) [250] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\nAdd Grass [6821] [355] [2]\nAdd Grass [7107] [355] [1]\nAdd Grass [7127] [355] [3]\nAdd Grass [7205] [345] [3]\nAdd Grass [7225] [345] [2]\nAdd Grass [7245] [345] [1]\nAdd Grass [7335] [430] [2]\nAdd Grass [7355] [430] [1]\nset [ii v] to [0]\nrepeat (15)\n    Add Grass ((7445) + (ii)) [725] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\nset [ii v] to [0]\nrepeat (4)\n    Add Grass ((8205) + (ii)) [305] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\nset [ii v] to [0]\nrepeat (7)\n    Add Grass ((8490) + (ii)) [305] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\nset [ii v] to [0]\nrepeat (10)\n    Add Grass ((8405) + (ii)) [55] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\nset [ii v] to [0]\nrepeat (6)\n    Add Grass ((8660) + (ii)) [55] (((ii) mod (3)) + (1))\n    change [ii v] by (20)\nend\n\ndefine Draw end (x) (y)\ninsert [69] at (1) of [platform type v] \ninsert (x) at (1) of [platform x v] \ninsert (y) at (1) of [platform y v] \ninsert [40] at (1) of [platform length v] \ninsert [120] at (1) of [platform width v] \ninsert [] at (1) of [x or y v] \ninsert [] at (1) of [mv speed v] \nif <<([abs v] of ((x) - (_cam x)) ) < [300]> and <([abs v] of ((y) - (_cam y)) ) < [400]>> then\n    set pen color to (#e84949)\n    Draw Right Triangle (((x) + (5)) - (_cam x)) ((((y) - (20)) - (_cam y)) - (flag_shift_y)) [40] [20] [1] [-1]\n    set pen color to (#e88888)\n    Draw Right Triangle (((x) + (5)) - (_cam x)) ((((y) - (20)) - (_cam y)) - (flag_shift_y)) [40] [20] [1] [1]\n    Draw line (((x) - (3)) - (_cam x)) ((y) - (_cam y)) (((x) - (3)) - (_cam x)) (((y) - (120)) - (_cam y)) [12] Color [0] [0] [70] [] [1]\n    Draw line ((x) - (_cam x)) ((y) - (_cam y)) ((x) - (_cam x)) (((y) - (120)) - (_cam y)) [12] Color [0] [0] [80] [] [1]\nend\n\nwhen I receive [win v]\nEnd Particles\nrepeat (4)\n    erase all\n    Render\n    change [_player.x v] by (50)\n    Draw Player ((_player.x) - (_cam x)) ((_player.y) - (_cam y))\n    set [fps v] to ((1) / (timer))\n    reset timer\nend\nbroadcast (flag v)\n\nwhen I receive [flag v]\nrepeat until <(flag_shift_y) > [90]>\n    erase all\n    Render\n    change [flag_shift_y v] by (([cos v] of (flag_shift_y) ) * ((flag_shift_y) + (1)))\n    Draw Player ((_player.x) - (_cam x)) ((_player.y) - (_cam y))\n    set [fps v] to ((1) / (timer))\n    reset timer\nend\nrepeat (20)\n    change [line trans v] by (-5)\nend\n\nwhen flag clicked\nset [line trans v] to [100]\nforever\n    Draw dot (size) [0] [700] [0] [0] [100] (line trans)\nend\n\ndefine Draw dot (x) (y) (size) (col) (sat) (brit) (trans)\npen up\nset pen (color v) to (col)\nset pen (saturation v) to (sat)\nset pen (brightness v) to (brit)\nset pen (transparency v) to (trans)\nset pen size to (size)\ngo to x: (x) y: (y)\npen down\npen up\n\ndefine End Particles\nrepeat (15)\n    add [0] to [particle trans v]\n    add (_player.x) to [particle x v]\n    add (_player.y) to [particle y v]\n    add [2] to [particle type v]\n    add (pick random (-180) to (180)) to [particle dir v]\nend\n\nwhen flag clicked\nforever\n    play sound [Plugged \(post mastering\) v] until done\n    wait (1) seconds\nend\n\n@Thumbnail\n\nwhen flag clicked\nforever\n    if <not <(username) = [haxroyale_l12]>> then\n        show\n        go to x: (0) y: (0)\n        set [ghost v] effect to (100)\n    end\nend\n\n