Platformer

Instructions: The SAME OLD thing...\nBTW You need to be an expert to complete the last level.

@Stage\n\n@Cube\n\ndefine platform (moving speed) (gravity) (friction) (jump height) (hm) (vm)\nchange y by (Y Velocity)\nif <touching color (#000000)?> then\n    repeat ([abs v] of (Y Velocity) )\n        if <touching color (#000000)?> then\n            change y by ((([abs v] of (Y Velocity) ) / (Y Velocity)) * (-1))\n        end\n    end\n    if <<<key (w v) pressed?> or <key (up arrow v) pressed?>> and <not <(Y Velocity) > [0]>>> then\n        set [y velocity v] to ((jump height) * (1.19))\n        start sound [Jump v]\n    else\n        set [y velocity v] to [0]\n    end\nelse\n    change [y velocity v] by (gravity)\nend\nif <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n    change [x velocity v] by (moving speed)\nend\nif <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n    change [x velocity v] by ((moving speed) * (-1))\nend\nchange x by (X Velocity)\nif <touching color (#000000)?> then\n    set [slope v] to (y position)\n    repeat (([abs v] of (X Velocity) ) + (1))\n        if <touching color (#000000)?> then\n            change y by (1)\n        end\n    end\n    if <touching color (#000000)?> then\n        set y to (Slope)\n        repeat ([ceiling v] of ([abs v] of (X Velocity) ) )\n            if <touching color (#000000)?> then\n                change x by ((-1) * (([abs v] of (X Velocity) ) / (X Velocity)))\n            end\n        end\n    end\n    if <<key (w v) pressed?> or <key (up arrow v) pressed?>> then\n        if <(X Velocity) < [0]> then\n            set [x velocity v] to [0]\n            if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n                set [x velocity v] to (hm)\n                set [y velocity v] to (vm)\n            end\n        else\n            set [x velocity v] to [0]\n            if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n                set [x velocity v] to ((-1) * (hm))\n                set [y velocity v] to (vm)\n            end\n        end\n    end\nend\nset [x velocity v] to ((X Velocity) * (friction))\n\nwhen flag clicked\ngo to x: (-210) y: (0)\ninit\nset [ghost v] effect to (100)\nrepeat (10)\n    change [ghost v] effect by (-10)\nend\nshow\nforever\n    platform [1] [-1] [0.9] [12] [8] [8]\n    if <touching color (#ff0000)?> then\n        go to x: (-210) y: (0)\n        set [x velocity v] to [0]\n        set [y velocity v] to [0]\n    end\n    if <touching color (#ff24a2)?> then\n        set [y velocity v] to [16]\n    end\n    if <<(x position) > [238]> and <touching (_edge_ v)?>> then\n        change [level v] by (1)\n        broadcast (nExT v)\n        set x to (-222)\n    end\n    if <<(y position) < [-173]> and <touching (_edge_ v)?>> then\n        go to x: (-210) y: (-90)\n    end\nend\n\ndefine init\nset [x velocity v] to [0]\nset [y velocity v] to [0]\nset [slope v] to [0]\n\nwhen flag clicked\nforever\n    play sound [Monody v] until done\nend\n\n@Sprite1\n\nwhen flag clicked\nswitch costume to (costume1 v)\nshow\ngo to x: (0) y: (0)\n\nwhen I receive [next v]\nnext costume\n\n@Sprite2\n\nwhen flag clicked\nhide\n\ngo to x: (0) y: (0)\n\nshow\n\n