Colorless - A Mobile Friendly Platformer

Instructions: DOUBLE CLICK THE GREEN FLAG\n~~~~~~~~~~~~INSTRUCTIONS~~~~~~~~~~~\nUse W,A,D keys or arrow keys or tap to move.\n'S' to skip a level.\nPlay in full screen for best experience.\nTurbowarp link-   https://turbowarp.org/512725950\nALL LEVELS *ARE* POSSIBLE

@Stage\n\nwhen flag clicked\nforever\n    if <not <(Level) = [9]>> then\n        switch backdrop to (clolurless v)\n    else\n        switch backdrop to (colourfull v)\n    end\nend\n\n@Blank\n\n@Player\n\nwhen I receive [game-play v]\nswitch costume to (colourless right v)\nshow\nforever\n    go to x: ([x position v] of [hitbox v]) y: (([y position v] of [hitbox v]) + (3))\nend\n\nwhen flag clicked\nhide\n\nwhen [timer v] > (0.1)\nhide\n\nwhen I receive [level skipped v]\ngo to x: (-196) y: (-90)\n\nwhen flag clicked\nforever\n    if <(Level) = [9]> then\n        broadcast (Last Level v)\n    end\nend\n\n@Spikes\n\nwhen I receive [game-play v]\ngo to [front v] layer\nshow\nforever\n    switch costume to (Level)\nend\n\nwhen flag clicked\nhide\n\nwhen [timer v] > (0.1)\nhide\n\n@Hitbox\n\ndefine platform physics (jump height) (gravity) (friction) (movement speed) (wall jump vm) (wall jump hm)\nchange y by (y vel)\nif <<touching (ground v)?> or <touching (other platforms v)?>> then\n    repeat ([abs v] of (y vel) )\n        if <<touching (ground v)?> or <touching (other platforms v)?>> then\n            change y by ((-1) * (([abs v] of (y vel) ) / (y vel)))\n        end\n    end\n    if <<<<key (up arrow v) pressed?> or <key (space v) pressed?>> or <key (w v) pressed?>> or <<mouse down?> and <<(mouse y) > (x position)> and <not <(y vel) > [0]>>>>> then\n        set [y vel v] to (jump height)\n    else\n        set [y vel v] to [0]\n    end\nelse\n    change [y vel v] by (gravity)\nend\nif <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(x position) < (mouse x)>>> then\n    change [x vel v] by (movement speed)\nend\nif <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(x position) > (mouse x)>>> then\n    change [x vel v] by ((-1) * (movement speed))\nend\nchange x by (X Vel)\nif <<touching (ground v)?> or <touching (other platforms v)?>> then\n    set [old y v] to (y position)\n    repeat (([abs v] of (X Vel) ) + (1))\n        if <<touching (ground v)?> or <touching (other platforms v)?>> then\n            change y by (1)\n        end\n    end\n    if <<touching (ground v)?> or <touching (other platforms v)?>> then\n        set y to (Old Y)\n        repeat ([ceiling v] of ([abs v] of (X Vel) ) )\n            if <<touching (ground v)?> or <touching (other platforms v)?>> then\n                change x by ((-1) * (([abs v] of (X Vel) ) / (X Vel)))\n            end\n        end\n        if <<<<key (up arrow v) pressed?> or <key (space v) pressed?>> or <key (w v) pressed?>> or <<mouse down?> and <(y position) < (mouse y)>>> then\n            if <(X Vel) < [0]> then\n                set [x vel v] to [0]\n                if <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(x position) > (mouse x)>>> then\n                    set [x vel v] to (wall jump hm)\n                    set [y vel v] to (wall jump vm)\n                end\n            else\n                set [x vel v] to [0]\n                if <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(x position) < (mouse x)>>> then\n                    set [x vel v] to ((-1) * (wall jump hm))\n                    set [y vel v] to (wall jump vm)\n                end\n            end\n        end\n    end\nend\nset [x vel v] to ((X Vel) * (friction))\n\nwhen I receive [game-play v]\ngo to [back v] layer\ngo to x: (-198) y: (-48)\nset [y vel v] to [0]\nset [x vel v] to [0]\nforever\n    platform physics (12.5) (-1) (0.9) (0.8) (9) (8)\nend\n\nwhen [s v] key pressed\nif <not <(Level) = [9]>> then\n    change [level v] by (1)\n    go to x: (-196) y: (-103)\nend\n\nwhen I receive [game-play v]\ngo to x: (-198) y: (-90)\n\nwhen I receive [game-play v]\nshow variable [level v]\nset [level v] to [1]\nforever\n    if <<(x position) = [238]> or <(x position) > [237]>> then\n        go to x: (-196) y: (-90)\n        change [level v] by (1)\n        broadcast (Next Level v)\n    end\nend\n\nwhen flag clicked\nset [level v] to [1]\nhide variable [level v]\nforever\n    if <touching (spikes v)?> then\n        go to x: (-196) y: (-48)\n    end\n    if <([costume # v] of [other platforms v]) = [9]> then\n        broadcast (Last Level v)\n        forever\n            wait (1) seconds\n        end\n    end\nend\n\nwhen flag clicked\nset [ghost v] effect to (100)\n\nwhen [s v] key pressed\nif <not <(Level) = [9]>> then\n    change [level v] by (1)\n    go to x: (-196) y: (-48)\n    change [level v] by (-1)\nend\n\nwhen I receive [level skipped v]\nchange [level v] by (1)\ngo to x: (-196) y: (-48)\n\nwhen I receive [last level v]\ngo to x: (-196) y: (-48)\n\n@Other Platforms\n\nwhen I receive [game-play v]\ngo to [back v] layer\nshow\nforever\n    switch costume to (Level)\nend\n\nwhen flag clicked\nhide\n\nwhen [timer v] > (0.1)\nhide\n\nwhen flag clicked\nforever\n    if <(costume [number v]) = [9]> then\n        broadcast (The End v)\n    end\nend\n\n@Ground\n\ndefine Render Ground with costume: (costume)\nswitch costume to (costume)\nrepeat (15)\n    create clone of (_myself_ v)\n    change x by (31)\nend\n\nwhen I receive [game-play v]\nshow\ngo to x: (-225) y: (-150)\nRender Ground with costume: [Colourless Grass]\n\nwhen I receive [game-play v]\nforever\n    if <(Level) = [9]> then\n        go to x: (-225) y: (-150)\n        show\n        Render Ground with costume: [Colourfull Grass]\n        \n    end\nend\n\nwhen flag clicked\nhide\n\nwhen [timer v] > (0.1)\nhide\ngo to x: (-225) y: (-140)\n\n@Story\n\nwhen flag clicked\nswitch costume to (1 v)\nshow\n\nwhen I receive [story-advance v]\nshow\nif <not <(costume [name v]) = [3]>> then\n    wait (1) seconds\n    next costume\nelse\n    wait (1.5) seconds\n    hide\n    wait (0.5) seconds\n    broadcast (Game-Play v)\nend\n\nwhen I receive [game-play v]\nhide\n\nwhen [timer v] > (0.1)\nhide\n\n@Fade\n\nwhen flag clicked\ngo to x: (0) y: (0)\nhide\n\nwhen I receive [story-advance v]\nshow\ngo to [front v] layer\nset [ghost v] effect to (100)\nrepeat (25)\n    change [ghost v] effect by (-4)\nend\nwait (0.8) seconds\nrepeat (25)\n    change [ghost v] effect by (4)\nend\nhide\n\nwhen [timer v] > (0.1)\nhide\n\n@Next Button\n\nwhen flag clicked\ngo to x: (188) y: (-131)\nshow\nswitch costume to (next button v)\n\nwhen this sprite clicked\nif <(costume [number v]) = [1]> then\n    broadcast (Story-Advance v)\nelse\n    if <(costume [number v]) = [2]> then\n        broadcast (Level Skipped v)\n    end\nend\n\nwhen [timer v] > (0.1)\nhide\n\nwhen I receive [game-play v]\ngo to x: (199) y: (-149)\nswitch costume to (skip button v)\n\nwhen flag clicked\ngo to [front v] layer\ngo [forward v] (1) layers\nshow\nforever\n    if <(Level) = [9]> then\n        hide variable [level v]\n        hide\n    end\nend\n\n@Clouds\n\nwhen I start as a clone\ngo to [back v] layer\nset [ghost v] effect to (pick random (0) to (17))\nshow\ngo to x: (293) y: (pick random (139) to (52))\nrepeat until <touching (detector v)?>\n    change x by (-1)\nend\nchange x by (-10)\ndelete this clone\n\nwhen flag clicked\nhide\n\nwhen I receive [game-play v]\nswitch costume to (costume4 v)\ngo to x: (293) y: (91)\nhide\nforever\n    go to [back v] layer\n    create clone of (_myself_ v)\n    wait (pick random (10) to (18)) seconds\nend\n\nwhen I receive [game-play v]\nif <(Level) = [9]> then\n    forever\n        hide\n    end\nend\n\nwhen [timer v] > (0.1)\nhide\n\n@Detector\n\n@The Thumbnail\n\nwhen flag clicked\nhide\nforever\n    reset timer\nend\n\nwhen [timer v] > (0.1)\nhide variable [level v]\nshow\n\n