Desert ~ a mobile scrolling platformer

Instructions: >>> check out my other projects too! <<<\nCurated! Tysm @tornadoyay1!\n\nAs usual, love, fave and follow if you enjoyed! ʕ •ᴥ•ʔ\n\nInstructions:\n-Arrow keys, WASD or mobile controls to move\n-Watch out for cacti\n-Yellow bounce pads are bouncy\n-Get to the portal to end the level\n-Sometimes there will be mirages, but they disappear in the night\n\nCHALLENGE: try and complete the game before the sun sets! :P\n\n<<< CREDITS >>>\nThanks to:\n@griffpatch for a platformer script which i adapted to make a scrolling platformer\n@corpcooga for the clouds\nVexento and Amadeus for the music\nMe @portishead7 for everything else\n\nAll levels are 100% possible on both computer and mobile as tested by me\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTags:\n#games #games #games\n#scrolling #platformer #mobile #desert #cactus #portishead7 #games #games #games #all\n#scrolling #platformer #mobile #desert #cactus #portishead7 #games #games #games #all\n#scrolling #platformer #mobile #desert #cactus #portishead7 #games #games #games #all\n#scrolling #platformer #mobile #desert #cactus #portishead7 #games #games #games #all\n#scrolling #platformer #mobile #desert #cactus #portishead7 #games #games #games #all\n#scrolling #platformer #mobile \n\n\n\n\n\n\n\n\n\n\n\nʕ •ᴥ•ʔ

@Stage\n\nwhen I receive [fade to night v]\nrepeat (500)\n    change [brightness v] effect by (-0.2)\nend\n\nwhen I receive [fade to day v]\nrepeat (500)\n    change [brightness v] effect by (0.2)\nend\n\nwhen I receive [intro end v]\nforever\n    play sound [Vexento - Spark v] until done\nend\n\n@player\n\ndefine blink\nset [blinking? v] to [1]\nif <(costume [number v]) = [1]> then\n    switch costume to (costume3 v)\n    repeat (4)\n        next costume\n    end\n    repeat (4)\n        switch costume to ((costume [number v]) - (1))\n    end\n    switch costume to (costume1 v)\nelse\n    switch costume to (costume9 v)\n    repeat (4)\n        next costume\n    end\n    repeat (4)\n        switch costume to ((costume [number v]) - (1))\n    end\n    switch costume to (costume2 v)\nend\nset [blinking? v] to [0]\n\ndefine ground <up?>\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]\n    point in direction (90)\nend\n\ndefine walk (costume) (speed)\nif <(blinking?) = [0]> then\n    switch costume to (costume)\nend\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 start as a clone\nrepeat (10)\n    change [ghost v] effect by (10)\n    change size by (-3)\nend\ndelete this clone\n\ndefine scroll text (\[text\])\nset [scroll txt output v] to []\nset [letter count scroll txt v] to [1]\nrepeat (length of (\[text\]))\n    set [scroll txt output v] to (join (scroll txt output) (letter (letter count scroll txt) of (\[text\])))\n    change [letter count scroll txt v] by (1)\n    say (scroll txt output) for (0.05) seconds\nend\nsay (scroll txt output) for (0.95) seconds\n\nwhen I receive [intro end v]\npoint in direction (90)\nclear graphic effects\nset size to (100) %\nforever\n    if <<<touching (dangerous stuff v)?> or <key (r v) pressed?>> or <(y position) < [-180]>> then\n        go to x: (0) y: (180)\n        broadcast (level_reset v)\n    end\n    if <touching (bouce pads v)?> then\n        set [speed y v] to [18]\n    end\n    if <<touching (level end v)?> and <not <(level) = [7]>>> then\n        glide (0.5) secs to (level end v)\n        repeat (20)\n            go to (level end v)\n            turn right (15) degrees\n            change [ghost v] effect by (5)\n            change size by (-5)\n        end\n        set [speed y v] to [0]\n        go to x: (0) y: (180)\n        clear graphic effects\n        point in direction (90)\n        set size to (100) %\n        broadcast (levelup v)\n        broadcast (level_reset v)\n    end\nend\n\nwhen I receive [intro end v]\ngo to x: (0) y: (180)\nset rotation style [all around v]\nset [ground move x v] to [0]\nforever\n    if <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > (x position)>>> then\n        set [ground move x v] to [-8]\n        walk [1] [8]\n    end\n    if <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < (x position)>>> then\n        set [ground move x v] to [8]\n        walk [2] [-8]\n    end\nend\n\nwhen I receive [intro end v]\ngo to [front v] layer\nwait (1) seconds\nscroll text (join (join [Hi ] (username)) [!])\nscroll text [Today we are exploring the desert]\n\nwhen I receive [intro end v]\nforever\n    if <not <<<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < (x position)>>> or <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > (x position)>>>>> then\n        set [ground move x v] to [0]\n    end\nend\n\nwhen I receive [intro end v]\nforever\n    if <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > (x position)>>> then\n        walk [1] [-8]\n    end\n    if <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < (x position)>>> then\n        walk [2] [8]\n    end\nend\n\nwhen I receive [intro end v]\nset [speed y v] to [0]\nforever\n    change [speed y v] by (-1)\n    change y by (speed y)\n    if <(costume [number v]) = [1]> then\n        turn right (15) degrees\n    else\n        turn left (15) degrees\n    end\n    ground <(speed y) > [0]>\nend\n\nwhen I receive [intro end v]\nshow\nforever\n    if <<<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > (y position)>>> and <(falling?) < [3]>> then\n        set [speed y v] to [12]\n    end\nend\n\nwhen flag clicked\nhide\nforever\n    set [player dir v] to (direction)\nend\n\nwhen I receive [intro end v]\nset [blinking? v] to [0]\nforever\n    wait (pick random (1) to (6)) seconds\n    blink\nend\n\n@ground\n\nwhen I receive [level_reset v]\ngo to x: (0) y: (0)\n\nwhen I receive [levelup v]\nnext costume\n\nwhen I receive [intro end v]\nswitch costume to (costume1 v)\ngo to x: (0) y: (0)\nset rotation style [left-right v]\nforever\n    change x by (ground move x)\nend\n\nwhen I receive [intro end v]\nforever\n    set [ground x v] to (x position)\n    set [level v] to (costume [number v])\nend\n\n@dangerous stuff\n\nwhen I receive [level_reset v]\ngo to x: (0) y: (0)\n\nwhen I receive [levelup v]\nnext costume\n\nwhen I receive [intro end v]\nswitch costume to (costume1 v)\ngo to x: (0) y: (0)\nset rotation style [left-right v]\nforever\n    change x by (ground move x)\nend\n\n@bouce pads\n\nwhen I receive [level_reset v]\ngo to x: (0) y: (0)\n\nwhen I receive [levelup v]\nnext costume\n\nwhen I receive [intro end v]\nswitch costume to (costume1 v)\ngo to x: (0) y: (0)\nset rotation style [left-right v]\nforever\n    change x by (ground move x)\nend\n\n@level end\n\nwhen flag clicked\nforever\n    if <(level) = [1]> then\n        set [lvl end postition x v] to [570]\n        set [lvl end y v] to [-90]\n    end\n    if <(level) = [2]> then\n        set [lvl end postition x v] to [888]\n        set [lvl end y v] to [-56]\n    end\n    if <(level) = [3]> then\n        set [lvl end postition x v] to [472]\n        set [lvl end y v] to [33]\n    end\n    if <(level) = [4]> then\n        set [lvl end postition x v] to [480]\n        set [lvl end y v] to [25]\n    end\n    if <(level) = [5]> then\n        set [lvl end postition x v] to [480]\n        set [lvl end y v] to [25]\n    end\n    if <(level) = [6]> then\n        set [lvl end postition x v] to [916]\n        set [lvl end y v] to [-33]\n    end\n    change [color v] effect by (1)\nend\n\nwhen flag clicked\nset [level v] to [1]\n\nwhen I receive [intro end v]\nforever\n    go to x: ((ground x) + (lvl end postition x)) y: (lvl end y)\nend\n\n@clouds\n\nwhen I start as a clone\nset size to (pick random (50) to (80)) %\nshow\ngo to [back v] layer\nset [ghost v] effect to (10)\nswitch costume to (pick random (1) to (4))\nif <(side) = [1]> then\n    go to x: (300) y: (pick random (0) to (180))\n    repeat until <(x position) < [-250]>\n        change x by (-2)\n    end\n    delete this clone\nend\nif <(side) = [2]> then\n    go to x: (-300) y: (pick random (0) to (180))\n    repeat until <(x position) > [250]>\n        change x by (2)\n    end\n    delete this clone\nend\n\nwhen I receive [intro end v]\nhide\nforever\n    set [side v] to (pick random (1) to (2))\n    create clone of (_myself_ v)\n    wait (pick random (2) to (7)) seconds\nend\n\n@mirages\n\nwhen I receive [level_reset v]\ngo to x: (0) y: (0)\n\nwhen I receive [levelup v]\nnext costume\n\nwhen flag clicked\nset [ghost v] effect to (90)\n\nwhen I start as a clone\nif <(pick random (1) to (2)) = [2]> then\n    repeat (10)\n        move (1) steps\n    end\n    repeat (10)\n        move (-1) steps\n    end\n    delete this clone\nelse\n    repeat (10)\n        move (-1) steps\n    end\n    repeat (10)\n        move (1) steps\n    end\n    delete this clone\nend\n\nwhen I start as a clone\nset rotation style [don't rotate v]\nturn left (pick random (0) to (360)) degrees\nforever\n    change x by (ground move x)\nend\n\nwhen I receive [fade to night v]\nrepeat (500)\n    change [ghost v] effect by (0.02)\nend\nset [ghost v] effect to (100)\n\nwhen I receive [fade to day v]\nrepeat (500)\n    change [ghost v] effect by (-0.02)\nend\nset [ghost v] effect to (90)\n\nwhen I receive [intro end v]\nforever\n    change x by (ground move x)\n    create clone of (_myself_ v)\nend\n\nwhen flag clicked\nswitch costume to (costume1 v)\ngo to x: (0) y: (0)\nset rotation style [left-right v]\n\n@text\n\nwhen I receive [level_reset v]\ngo to x: (0) y: (0)\n\nwhen I receive [levelup v]\nnext costume\n\nwhen I receive [intro end v]\nswitch costume to (costume1 v)\ngo to x: (0) y: (0)\nset rotation style [left-right v]\nforever\n    change x by (ground move x)\nend\n\n@sun\n\nwhen flag clicked\nforever\n    change x by ((ground move x) / (10))\nend\n\nwhen I receive [levelup v]\nset x to (0)\n\nwhen I receive [level_reset v]\nset x to (0)\n\nwhen flag clicked\ngo to x: (0) y: (250)\nforever\n    repeat until <(y position) < [-70]>\n        go to [back v] layer\n        change y by (-0.3)\n    end\n    broadcast (fade to night v)\n    repeat (500)\n        go to [back v] layer\n        change y by (-0.3)\n        change [color v] effect by (-0.1)\n    end\n    broadcast (fade to day v)\n    repeat (500)\n        go to [back v] layer\n        change y by (0.3)\n        change [color v] effect by (0.1)\n    end\n    repeat until <(y position) > [200]>\n        go to [back v] layer\n        change y by (0.3)\n    end\nend\n\n@thumbnail\n\nwhen flag clicked\nforever\n    go to x: (0) y: (0)\n    set [ghost v] effect to (100)\n    go to [front v] layer\nend\n\n@Sprite1\n\nwhen flag clicked\nset size to (100) %\nswitch costume to (costume14 v)\npoint in direction (90)\ngo to x: (0) y: (0)\nwait (1) seconds\ngo to [front v] layer\nrepeat (13)\n    switch costume to ((costume [number v]) - (1))\n    wait (0.03) seconds\nend\nrepeat (13)\n    next costume\n    create clone of (_myself_ v)\n    wait (0.03) seconds\nend\nrepeat (13)\n    switch costume to ((costume [number v]) - (1))\n    wait (0.01) seconds\nend\nrepeat (20)\n    create clone of (_myself_ v)\n    change [ghost v] effect by (5)\n    change size by (-4)\n    change x by (-3)\n    change y by (-3)\n    wait (0.02) seconds\nend\nwait (1) seconds\nset size to (100) %\nclear graphic effects\nswitch costume to (costume14 v)\ngo to x: (0) y: (0)\nrepeat (13)\n    switch costume to ((costume [number v]) - (1))\n    wait (0.01) seconds\nend\nrepeat (5)\n    change size by (10)\nend\nrepeat (10)\n    change size by (-5)\nend\nswitch costume to (costume15 v)\nrepeat until <(costume [number v]) = [20]>\n    next costume\nend\nrepeat until <(costume [number v]) = [30]>\n    next costume\n    wait (0.02) seconds\nend\nwait (0.5) seconds\nbroadcast (intro end v)\nrepeat (50)\n    change [ghost v] effect by (5)\n    change volume by (-2)\nend\nstop all sounds\n\nwhen I start as a clone\nrepeat (20)\n    change [ghost v] effect by (5)\nend\ndelete this clone\n\nwhen I receive [intro end v]\nrepeat (20)\n    change [ghost v] effect by (5)\nend\ndelete this clone\n\nwhen flag clicked\nset volume to (0) %\nstart sound [Amadeus - Legendary2 v]\nrepeat (10)\n    change volume by (10)\n    wait (0.05) seconds\nend\nset volume to (100) %\n\npoint in direction (90)\nrepeat (80)\n    point in direction ((([tan v] of ((timer) * (100)) ) * (8)) + (90))\nend\npoint in direction (90)\n\n@Sprite2\n\nwhen flag clicked\nhide\nswitch costume to (costume9 v)\ncreate clone of (_myself_ v)\nnext costume\nrepeat (8)\n    create clone of (_myself_ v)\n    next costume\n    wait (0.06) seconds\nend\n\nwhen I start as a clone\nshow\ngo to [front v] layer\nif <not <(costume [number v]) = [1]>> then\n    repeat (2)\n        set size to (0) %\n        repeat (10)\n            change size by (10)\n        end\n        set size to (100) %\n        wait (4) seconds\n        repeat (10)\n            change size by (-10)\n        end\n    end\n    delete this clone\nend\nset size to (100) %\n\nwhen I receive [intro end v]\nrepeat (50)\n    change [ghost v] effect by (2)\nend\ndelete this clone\n\n