Black and White- a platformer

Instructions: My latest game is out!\nYou are trapped in a world of black and white. Find the color crystal to bring back color.

@Stage\n\n@Spikes\n\nwhen flag clicked\nhide\n\nwhen I start as a clone\ngo to [back v] layer\nset [distance v] to [0]\nset [ghost v] effect to (100)\nshow\nswitch costume to (projectile v)\ngo to (boss v)\nset x to (pick random (-225) to (225))\npoint towards (player v)\nrepeat (10)\n    change [ghost v] effect by (-10)\nend\nrepeat until <<<touching (level v)?> or <touching (player v)?>> or <(distance) > [100]>>\n    point towards (player v)\n    move (3) steps\n    change [distance v] by (1)\nend\nrepeat (10)\n    change [ghost v] effect by (10)\nend\ndelete this clone\n\nwhen I receive [menu v]\nshow\nclear graphic effects\nswitch costume to (1 v)\nset [level v] to [1]\ngo to x: (0) y: (0)\npoint in direction (90)\nforever\n    switch costume to (LEVEL)\n    go to [back v] layer\nend\n\nwhen flag clicked\ngo to [back v] layer\nforever\n    if <(LEVEL) = [20]> then\n        stop all sounds\n        play sound [Dance Celebrate v] until done\n    end\nend\n\nwhen I receive [menu v]\nforever\n    play sound [Piano music v] until done\nend\n\n@Bounce\n\nwhen flag clicked\nset [level v] to [1]\ngo to x: (0) y: (0)\nhide\nforever\n    wait until <(LEVEL) = [5]>\n    clone at x: [29] y: [-142]\n    wait until <(LEVEL) = [6]>\n    clone at x: [-40] y: [-145]\n    wait until <(LEVEL) = [8]>\n    clone at x: [0] y: [-144]\n    wait until <(LEVEL) = [9]>\n    clone at x: [64] y: [-137]\n    wait until <(LEVEL) = [12]>\n    clone at x: [-128] y: [-137]\n    clone at x: [-16] y: [-137]\n    clone at x: [98] y: [-137]\n    wait until <(LEVEL) = [13]>\n    clone at x: [-116] y: [-139]\n    wait until <(LEVEL) = [14]>\n    clone at x: [-123] y: [-139]\nend\n\ndefine clone at x: (x) y: (y)\ngo to x: (x) y: (y)\ncreate clone of (_myself_ v)\n\nwhen I start as a clone\nset size to (90) %\nswitch costume to (2 v)\nshow\nforever\n    if <touching (player v)?> then\n        repeat (8)\n            next costume\n        end\n    end\nend\n\nwhen I receive [refresh boucepads v]\ndelete this clone\n\nwhen flag clicked\nforever\n    set [mouse v] to (join (mouse x) (join [,] (mouse y)))\nend\n\nbroadcast (refresh boucepads v)\n\n@Level\n\nwhen flag clicked\nset [level v] to [1]\ngo to x: (0) y: (0)\nhide\n\nwhen I receive [menu v]\nshow\nforever\n    switch costume to (LEVEL)\nend\n\n@Player\n\nwhen flag clicked\ngo to x: (-200) y: (-100)\nset rotation style [left-right v]\npoint in direction (90)\nset [y vel. v] to [0]\nset [x vel. v] to [0]\nset [level v] to [1]\nset size to (150) %\nhide\n\ndefine Platform Physics jump height: (y) move speed: (speed) fricton: (friction)\nswitch costume to (hitbox v)\nif <<<key (right arrow v) pressed?> or <<mouse down?> and <(mouse x) > (x position)>>> or <key (d v) pressed?>> then\n    change [x vel. v] by (speed)\n    point in direction (90)\nend\nif <<<key (left arrow v) pressed?> or <<mouse down?> and <(x position) > (mouse x)>>> or <key (a v) pressed?>> then\n    change [x vel. v] by ((speed) * (-1))\n    point in direction (-90)\nend\nset [x vel. v] to ((x vel.) * (friction))\nchange x by (x vel.)\nif <touching (level v)?> then\n    set [slope v] to [0]\n    repeat until <<not <touching (level v)?>> or <(slope) = [8]>>\n        change [slope v] by (1)\n        change y by (1)\n    end\n    if <touching (level v)?> then\n        change y by ((slope) * (-1))\n        repeat ([ceiling v] of ([abs v] of (x vel.) ) )\n            if <touching (level v)?> then\n                change x by ((([abs v] of (x vel.) ) / (x vel.)) * (-1))\n            end\n        end\n        set [x vel. v] to [0]\n    end\nend\nif <touching (bounce v)?> then\n    broadcast (bounce v)\n    set [y vel. v] to ((y) * (1.5))\nend\nchange y by (y vel.)\nif <touching (level v)?> then\n    repeat ([ceiling v] of ([abs v] of (y vel.) ) )\n        if <touching (level v)?> then\n            change y by ((([abs v] of (y vel.) ) / (y vel.)) * (-1))\n        end\n    end\n    if <<(([abs v] of (y vel.) ) / (y vel.)) = [-1]> and <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > (y position)>>>> then\n        set [y vel. v] to (y)\n    else\n        set [y vel. v] to [0]\n    end\nelse\n    change [y vel. v] by (-1)\nend\nswitch costume to (idle v)\nif <<<<<key (left arrow v) pressed?> or <key (right arrow v) pressed?>> or <mouse down?>> or <key (a v) pressed?>> or <key (d v) pressed?>> then\n    switch costume to (walk)\nend\nif <(y vel.) > [0]> then\n    switch costume to (jump v)\nend\nif <[-1] > (y vel.)> then\n    switch costume to (fall v)\nend\n\nwhen flag clicked\nset [walk v] to [5]\nforever\n    change [walk v] by (1)\n    if <(walk) > [8]> then\n        set [walk v] to [5]\n    end\n    wait (0.06) seconds\nend\n\ndefine tick\nif <touching (edge v)?> then\n    broadcast (refresh boucepads v)\n    change [level v] by (1)\n    go to x: (-230) y: (-100)\nend\nif <<(y position) < [-170]> or <touching (spikes v)?>> then\n    create clone of (_myself_ v)\n    go to x: (-220) y: (-100)\n    reset timer\n    set [x vel. v] to [0]\n    set [y vel. v] to [0]\nend\n\nwhen I start as a clone\nset [ghost v] effect to (50)\nrepeat (10)\n    change [ghost v] effect by (5)\nend\ndelete this clone\n\nwhen I receive [menu v]\nshow\nforever\n    Platform Physics jump height: [11] move speed: [1.75] fricton: [0.75]\n    tick\nend\n\nwhen flag clicked\ngo to [back v] layer\nforever\n    if <[] > [230]> then\nend\n\nwhen I receive [menu v]\nforever\n    go to [back v] layer\nend\n\n@Intro\n\nwhen I receive [menu v]\nstop [other scripts in sprite v]\nhide\ndelete this clone\n\nwhen flag clicked\nset [sine v] to [0]\nhide\nbroadcast (intro v)\nforever\n    change [sine v] by (1)\nend\n\nwhen I receive [shrink v]\nif <(costume [number v]) = [1]> then\n    start sound [grow v]\nend\nrepeat until <(size vel) < [0]>\n    turn left ((size vel) * (0.3)) degrees\n    change size by (size vel)\nend\nset [sine v] to [0]\nset [swoosh? v] to [y]\nif <(costume [number v]) = [1]> then\n    start sound [swoosh v]\n    repeat until <(x position) > [0]>\n        set x to (([tan v] of ((sine) * (8)) ) * (-20))\n        turn right (([tan v] of ((sine) * (8)) ) * (20)) degrees\n    end\n    repeat until <(x position) < [0]>\n        set x to (([tan v] of ((sine) * (8)) ) * (-20))\n        turn right (((90) - (direction)) / (3)) degrees\n    end\nelse\n    repeat until <(x position) < [0]>\n        set x to (([tan v] of ((sine) * (8)) ) * (20))\n        turn right (([tan v] of ((sine) * (8)) ) * (20)) degrees\n    end\n    repeat until <(x position) > [0]>\n        set x to (([tan v] of ((sine) * (8)) ) * (20))\n        turn right (((90) - (direction)) / (3)) degrees\n    end\nend\nbroadcast (showtext v)\nwait (3) seconds\nstart sound [wop v]\nset [swoosh? v] to [n]\nrepeat until <(size) < [10]>\n    turn left ((size vel) * (0.3)) degrees\n    change size by (size vel)\nend\nhide\nbroadcast (menu v)\n\nwhen I receive [intro v]\nstart sound [dweep v]\nset size to (0) %\nswitch costume to (1 v)\ngo to x: (0) y: (0)\npoint in direction (90)\nshow\nset [id v] to [start]\ngo to [front v] layer\ncreate clone of (_myself_ v)\ngo to [front v] layer\nrepeat (30)\n    set [y bounce v] to (((y bounce) * (0.7)) + (((50) - (size)) / (3)))\n    change size by (y bounce)\nend\nset size to (50) %\nset [sine v] to [0]\nstart sound [swoosh v]\nrepeat until <(y position) < [0]>\n    set y to (([tan v] of ((sine) * (8)) ) * (20))\n    set size to ([abs v] of (((180) - ([abs v] of (y position) )) / (3.5)) ) %\nend\nrepeat until <(y position) > [0]>\n    set y to (([tan v] of ((sine) * (8)) ) * (20))\n    set size to ([abs v] of (((180) - ([abs v] of (y position) )) / (3.5)) ) %\nend\nset y to (0)\nset [size vel v] to [20]\nbroadcast (shrink v)\nrepeat until <(size vel) < [0]>\n    change [size vel v] by (-2)\nend\nset [swoosh? v] to [y]\nwait until <(swoosh?) = [n]>\nbroadcast (hide v)\nforever\n    change [size vel v] by (-2)\nend\n\nwhen I start as a clone\nshow\nset size to (0) %\nswitch costume to (2 v)\ngo to x: (0) y: (0)\npoint in direction (90)\nrepeat (30)\n    set [y bounce v] to (((y bounce) * (0.7)) + (((50) - (size)) / (3)))\n    change size by (y bounce)\nend\nrepeat until <(y position) > [0]>\n    set y to (([tan v] of ((sine) * (8)) ) * (-20))\n    set size to ([abs v] of (((180) - ([abs v] of (y position) )) / (3.5)) ) %\nend\nrepeat until <(y position) < [0]>\n    set y to (([tan v] of ((sine) * (8)) ) * (-20))\n    set size to ([abs v] of (((180) - ([abs v] of (y position) )) / (3.5)) ) %\nend\nset y to (0)\n\n@Text\n\nwhen flag clicked\ngo to [front v] layer\nshow\nset [ghost v] effect to (100)\n\nwhen I receive [showtext v]\nrepeat (10)\n    change [ghost v] effect by (-10)\nend\nshow\nwait (3) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\nend\nhide\n\n@Intro2\n\nwhen flag clicked\nshow\ngo to [back v] layer\ngo to x: (228) y: (-1)\nrepeat until <(Start game) = [1]>\n    change x by (-6)\nend\n\nwhen I receive [hide v]\nhide\n\n@Edge\n\nwhen flag clicked\nswitch costume to (1 v)\nhide\n\nwhen I receive [boss defeated!#!!!! v]\nwait (1) seconds\nstart sound [pop v]\nshow\n\nwhen I receive [boss v]\nhide\n\nwhen I receive [menu v]\nshow\nforever\n    go to [front v] layer\n    point in direction (90)\n    go to x: (200) y: (-131)\nend\n\nwhen flag clicked\nforever\n    if <(LEVEL) = [19]> then\n        switch costume to (2 v)\n    else\n        switch costume to (1 v)\n    end\n    if <(LEVEL) = [20]> then\n        hide\n    end\nend\n\n@Thumbnail\n\nwhen flag clicked\nforever\n    go to [front v] layer\n    set [ghost v] effect to (100)\n    show\nend\n\nwhen flag clicked\nforever\n    go to [front v] layer\nend\n\n