generic: a platformer

Instructions: awd or arrow keys to move\nspikes are bad\norange is bouncy\n\nall levels are possible\nplease like and favorite\nhave fun!

@Stage\n\nwhen I receive [start v]\nforever\n    play sound [music 1 v] until done\nend\n\n@player\n\ndefine Walk (direction) (speed)\npoint in direction (direction)\nchange x by (speed)\nset [slope v] to [0]\nrepeat until <<(slope) = [8]> or <not <<touching (moving cloud 1 v)?> or <<touching (obstacles v)?> or <<touching (moving cloud 2 v)?> or <<touching (moving cloud 2 v)?> or <touching (mini-game clouds 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 [next level v]\nset size to (60) %\npoint in direction (90)\ngo to x: (-180) y: (0)\nshow\nset [speed y v] to [0]\nset [falling? v] to [10]\n\nwhen I receive [reset level v]\nset size to (60) %\npoint in direction (90)\ngo to x: (-180) y: (0)\nshow\nset [speed y v] to [0]\nset [falling? v] to [10]\n\nwhen flag clicked\nhide\n\ndefine touch ground <up?>\nchange [falling? v] by (1)\nrepeat until <not <<touching (moving cloud 1 v)?> or <<touching (obstacles v)?> or <<touching (moving cloud 2 v)?> or <<touching (moving cloud 2 v)?> or <touching (mini-game clouds 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\nif <touching (bouncy things v)?> then\n    set [speed y v] to [17]\nend\nif <touching (clouds v)?> then\n    set [speed y v] to [-.5]\nend\n\nwhen flag clicked\nforever\n    if <(paused?) = [False]> then\n        change [score v] by (1)\n        wait (1) seconds\n    end\nend\n\nwhen I receive [start v]\nset size to (60) %\ngo to x: (-180) y: (0)\ngo to [front v] layer\nshow\nset [level v] to [0]\nset [speed y v] to [0]\nset [score v] to [0]\nset [falling? v] to [10]\nforever\n    if <(paused?) = [False]> then\n        change y by (speed y)\n        touch ground <(speed y) > [0]>\n        if <(y position) < [-175]> then\n            broadcast (reset level v)\n        end\n        if <(x position) > [221]> then\n            broadcast (next level v)\n        end\n        if <<key (a v) pressed?> or <key (left arrow v) pressed?>> then\n            Walk (-90) (-5)\n        end\n        if <<key (d v) pressed?> or <key (right arrow v) pressed?>> then\n            Walk (90) (5)\n        end\n        if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n            if <<(jump key) = [0]> and <(falling?) < [3]>> then\n                set [speed y v] to [16]\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 <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <(speed y) < [4]>> then\n            change [speed y v] by (-1)\n        else\n            change [speed y v] by (-2)\n        end\n        if <touching (bouncy things v)?> then\n            change [speed y v] by (8)\n        end\n        if <<touching (moving spike 1 v)?> or <touching (spikes v)?>> then\n            start sound [Rip v]\n            repeat (10)\n                change size by (-5)\n            end\n            broadcast (reset level v)\n            change [score v] by (5)\n        end\n    end\nend\n\n@obstacles\n\nwhen I receive [next level v]\nnext costume\nif <(costume [name v]) = [level 1]> then\n    set [level v] to [1]\nend\n\nwhen flag clicked\nhide\n\nbroadcast (next level v)\n\nhide\n\nwhen I receive [start v]\ngo to x: (36) y: (-6)\nshow\nswitch costume to (level 1 v)\ngo to [front v] layer\n\n@bouncy things\n\nwhen flag clicked\ngo to x: (36) y: (28)\nshow\nswitch costume to (level 1 v)\n\nwhen I receive [next level v]\ngo to [back v] layer\ngo to x: (36) y: (28)\nnext costume\nset [level v] to (costume [number v])\n\nhide\n\n@restart\n\nwhen flag clicked\nhide\n\nwhen I receive [start v]\nshow\nforever\n    go to [front v] layer\n    go to x: (-140) y: (-173)\n    set size to (85) %\n    if <touching (mouse-pointer v)?> then\n        if <mouse down?> then\n            broadcast (reset level v)\n        end\n    end\nend\n\n@pause\n\nwhen flag clicked\nhide\n\nwhen flag clicked\nset [paused? v] to [False]\n\nwhen I receive [pause v]\nswitch costume to (paused v)\nset [paused? v] to [True]\n\nwhen I receive [unpause v]\nswitch costume to (unpaused v)\nset [paused? v] to [False]\n\nwhen I receive [start v]\nshow\nswitch costume to (unpaused v)\nforever\n    go to [front v] layer\n    go to x: (-85) y: (-173)\n    if <touching (mouse-pointer v)?> then\n        if <mouse down?> then\n            if <(costume [name v]) = [paused]> then\n                broadcast (unpause v)\n                wait (.5) seconds\n            else\n                if <(costume [name v]) = [unpaused]> then\n                    broadcast (pause v)\n                    wait (.5) seconds\n                end\n            end\n        end\n    end\nend\n\n@spikes\n\nwhen I receive [next level v]\ngo to x: (36) y: (28)\nnext costume\n\nwhen flag clicked\ngo to x: (36) y: (28)\nshow\nswitch costume to (level 1 v)\n\nbroadcast (next level v)\n\nhide\n\n@please like\n\nwhen I receive [next level v]\nnext costume\n\nwhen flag clicked\ngo to x: (36) y: (-6)\nshow\nswitch costume to (level 1 v)\n\nbroadcast (next level v)\n\n@moving cloud 1\n\nwhen flag clicked\nforever\n    hide\n    go to x: (-30) y: (-100)\n    repeat until <not <(level) = [27]>>\n        switch costume to (level 24 v)\n        show\n        change x by (-2)\n        if <(x position) < [-279]> then\n            go to x: (500) y: (-100)\n        end\n    end\nend\n\nshow\n\n@moving cloud 2\n\nwhen flag clicked\ngo to x: (370) y: (0)\nforever\n    hide\n    repeat until <not <(level) = [27]>>\n        switch costume to (level 24 v)\n        show\n        change x by (-2)\n        if <(x position) < [-300]> then\n            go to x: (500) y: (0)\n        end\n    end\nend\n\n@moving spike 1\n\nwhen flag clicked\ngo to [back v] layer\nset [up? v] to [False]\nset x to (36)\nforever\n    hide\n    repeat until <not <(level) = [22]>>\n        switch costume to (level 19.25 v)\n        show\n        if <(up?) = [True]> then\n            change y by (3)\n        else\n            change y by (-3)\n        end\n        if <(y position) > [100]> then\n            set [up? v] to [False]\n        else\n            if <(y position) < [-65]> then\n                set [up? v] to [True]\n            end\n        end\n    end\nend\n\n@mini-game clouds\n\nwhen flag clicked\nhide\nforever\n    if <(level) = [28]> then\n        create clone of (_myself_ v)\n        wait (pick random (3) to (4.01)) seconds\n    end\nend\n\nbroadcast (next level v)\n\nwhen I start as a clone\nshow\nswitch costume to (pick random (1) to (3))\nset size to (70) %\ngo to x: (500) y: (pick random (-150) to (150))\nrepeat until <<(level) = [29]> or <(x position) = [-270]>>\n    change x by (-2)\nend\ndelete this clone\n\n@Sprite1\n\nwhen flag clicked\nset size to (100) %\nshow\ngo to x: (150) y: (28)\nstart sound [Normal 2 v]\nglide (2) secs to x: (36) y: (28)\nwait (.5) seconds\nrepeat (30)\n    turn right (12) degrees\n    change size by ((-5) / (3))\nend\nwait (4) seconds\nhide\n\n@Sprite2\n\nwhen flag clicked\nset size to (100) %\nshow\ngo to x: (-120) y: (28)\nglide (2) secs to x: (36) y: (28)\nwait (.5) seconds\nrepeat (30)\n    turn right (12) degrees\n    change size by ((-5) / (3))\nend\nbroadcast (thing v)\nwait (4) seconds\nhide\nbroadcast (start v)\n\n@Sprite3\n\nwhen I receive [thing v]\nshow\nrepeat until <(size) < [100]>\n    change size by (-20)\nend\nbroadcast (other thing v)\n\nwhen flag clicked\nset size to (300) %\ngo to x: (36) y: (28)\nhide\n\nwhen I receive [start v]\nhide\n\n@Sprite4\n\nwhen flag clicked\nset [ghost v] effect to (100)\ngo to x: (36) y: (28)\nhide\n\nwhen I receive [other thing v]\nshow\nrepeat (10)\n    wait (.2) seconds\n    change [ghost v] effect by (-10)\nend\n\nwhen I receive [start v]\nhide\n\n