2.5D Platformer Engine (Remixable!)

Instructions: WASD to move- R to restart a level- Spikes and Lava are bad- Progress to the right of the screen- Look for secrets that may or may not exist.

@Stage\n\n@ground\n\nwhen flag clicked\ngo to x: (0) y: (0)\nswitch costume to (costume1 v)\nforever\n    play sound [Vexento - Snowflakes v] until done\nend\n\nwhen I receive [level-up v]\nnext costume\n\nwhen flag clicked\nforever\n    switch backdrop to (costume [number v])\nend\n\nwhen backdrop switches to [lvl 7 v]\nbroadcast (what v)\n\n@Smiley\n\ndefine touch ground <>\nchange [falling v] by (1)\nrepeat until <not <touching (ground v)?>>\n    if <up?> then\n        change y by (-1)\n    else\n        change y by (1)\n        set [falling v] to [0]\n    end\n    set [speed y v] to [0]\nend\n\nwhen I receive [play v]\nshow\ngo to x: (-227) y: (170)\nset [speed y v] to [0]\nforever\n    change y by (speed y)\n    change [speed y v] by (-1)\n    touch ground <(speed y) > [0]>\n    set rotation style [left-right v]\n    if <key (right arrow v) pressed?> then\n        walk (90) (4)\n    end\n    if <key (left arrow v) pressed?> then\n        walk (-90) (-4)\n    end\n    if <key (up arrow v) pressed?> then\n        if <<(jump key) = [0]> and <(falling) < [3]>> then\n            set [speed y v] to [13]\n            set [falling v] to [6]\n            set [jump key v] to [1]\n        end\n    else\n        set [jump key v] to [0]\n    end\n    if <(x position) > [225]> then\n        broadcast (level-up v)\n        go to x: (-227) y: (170)\n    end\n    if <<<<(y position) < [-165]> or <touching color (#ff0000)?>> or <touching color (#cccc00)?>> or <touching (costume6 v)?>> then\n        go to x: (-227) y: (170)\n        change [deaths v] by (1)\n    end\n    if <touching (double2 v)?> then\n        change [deaths v] by (1)\n    end\nend\n\nwhen flag clicked\nswitch costume to (costume2 v)\nhide\nset size to (60) %\nset [deaths v] to [0]\nhide variable [deaths v]\n\ndefine None\npoint in direction (direction)\nchange x by (speed)\nset [slope v] to [0]\nrepeat until <<(slope) = [8]> or <not <touching (ground v)?>>>\n    change y by (1)\n    change [slope v] by (1)\nend\nif <(slope) = [8]> then\n    change x by ((0) - (speed))\n    change y by ((0) - (slope))\nend\n\nwhen I receive [end v]\nhide\n\nwhen flag clicked\nbroadcast (play v)\n\n@Sprite1\n\nwhen flag clicked\nhide\nforever\n    wait (pick random (1) to (3)) seconds\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nshow\ngo [backward v] (100000) layers\nswitch costume to (pick random (1) to (2))\ngo to x: (240) y: (pick random (-125) to (180))\nrepeat (192)\n    change x by (-2.5)\nend\ndelete this clone\n\n@Sprite2\n\nwhen flag clicked\ngo to x: (83) y: (-94)\nset size to (100) %\nhide\n\n@costume6\n\nwhen flag clicked\nhide\n\nwhen backdrop switches to [lvl 4 v]\nshow\nswitch costume to (lvl 4 v)\ngo to x: (0) y: (0)\n\nwhen backdrop switches to [lvl 6 v]\nswitch costume to (costume6 v)\nshow\ngo to x: (0) y: (1)\n\nwhen backdrop switches to [lvl 7 v]\nswitch costume to (costume14 v)\nshow\ngo to x: (0) y: (1)\n\nwhen backdrop switches to [lvl5 v]\nhide\n\nwhen backdrop switches to [lvl 8 v]\nhide\n\n@costume14\n\nwhen flag clicked\ngo to x: (0) y: (0)\ngo to [front v] layer\nhide\n\n