Ocean - Scrolling Platformer

Instructions: ₪Oceɑn₪\nMove - [←↑→]\nGoɑl: get to the end\nKindɑ short\n₪Updɑtes₪\n10/28: Initiɑl Releɑse\n10/30: you die when you fall into the void!\n11/3: you can zoom in and out!

@Stage\n\n@Player\n\ndefine move player\nchange x by (speed x)\nchange y by (speed y)\nset [speed x v] to ((speed x) * (0.9))\nif <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n    change [speed x v] by (1)\nend\nif <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n    change [speed x v] by (-1)\nend\nif <(falling) < [3]> then\n    if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n        if <not <touching (tiles v)?>> then\n            set [speed y v] to [10]\n            change y by (speed y)\n        end\n    end\nend\nxcollide\nif <touching (tiles v)?> then\n    if <touching (tiles v)?> then\n        change y by ((0) - (speed y))\n        set [speed y v] to [0]\n        change y by (1)\n        if <touching (tiles v)?> then\n            change y by (1)\n            if <touching (tiles v)?> then\n                change y by (1)\n                if <touching (tiles v)?> then\n                    if <touching (tiles v)?> then\n                        change x by ((0) - (speed x))\n                        set [speed x v] to ((0) - (speed x))\n                    end\n                end\n            end\n        end\n    end\n    set [falling v] to [0]\nelse\n    change [falling v] by (1)\nend\nchange [speed y v] by (-0.9)\ngo to x: ((x position) * (0.9)) y: ((y position) * (0.9))\nchange [camera x v] by ((x position) / (8))\nchange [camera y v] by ((y position) / (8))\nif <(camera y) < [-1000]> then\n    set [camera x v] to [-1400]\n    set [camera y v] to [-1]\nend\n\nchange y by (1)\nif <touching (tiles v)?> then\nend\n\nwhen flag clicked\nset size to (200) %\nbroadcast (Game: start! v)\nforever\n    broadcast (game loop v)\n    set [player x v] to (x position)\n    set [player y v] to (y position)\n    set size to ((100) + (ZOOM)) %\n    if <[0] < (mouse y)> then\n        show variable [zoom v]\n    else\n        hide variable [zoom v]\n    end\nend\n\nwhen I receive [game: start! v]\nset [zoom v] to [0]\nset [speed x v] to [0]\nset [speed y v] to [0]\ngo to x: (0) y: (0)\npoint in direction (90)\nmove player\n\nwhen I receive [game loop v]\nmove player\n\ndefine collision\nrepeat until <not <touching (tiles v)?>>\n    change y by (1)\nend\n\ndefine xcollide\nchange y by (-1)\nif <touching color (#ff0000)?> then\n    broadcast (end v)\n    stop [all v]\nend\nchange y by (1)\n\nwhen [up arrow v] key pressed\nchange [zoom v] by (1)\n\nwhen [down arrow v] key pressed\nchange [zoom v] by (-1)\n\n@Tiles\n\nwhen I receive [game: start! v]\nswitch costume to (small v)\nset size to (900) %\nswitch costume to (costume1 v)\nset [camera x v] to [-1675]\nset [camera y v] to [-140]\n\nwhen I receive [game loop v]\ngo to x: ((() - (camera x)) - (500)) y: (() - (camera y))\nswitch costume to (small v)\nset size to ((500) + (ZOOM)) %\nswitch costume to (costume1 v)\n\n@viewport\n\nwhen I receive [end v]\nnext costume\n\nwhen flag clicked\ngo to x: (0) y: (0)\nswitch costume to (costume1 v)\n\n@Tiles2\n\nwhen I receive [game: start! v]\nswitch costume to (small v)\nset size to (900) %\nswitch costume to (costume1 v)\nset [camera x v] to [-1675]\nset [camera y v] to [-140]\n\nwhen I receive [game loop v]\nset [ghost v] effect to (40)\ngo to x: ((() - (camera x)) / (3)) y: ((() - (camera y)) / (3))\n\n@CID\n\nwhen flag clicked\nhide\nforever\n    create clone of (_myself_ v)\n    wait (0.3) seconds\nend\n\nwhen I start as a clone\ngo to x: (pick random (-240) to (240)) y: (-285)\nshow\ngo to [back v] layer\nset [ghost v] effect to (50)\nset size to (pick random (30) to (100)) %\nrepeat (90)\n    change y by (6)\nend\ndelete this clone\n\ndefine pos (number or text) (number or text)\ngo to x: ((camera x) + (number or text)) y: ((camera y) + (number or text))\n\npos (x position) (y position)\n\n