Maze The Platformer

Instructions: MAZE THE PLATFORMER\n___________________________________________\nWARNING: \nThis game is EXTREMELY HARD and it is basically rage fuel. So if you get very "passionate" about certain things I suggest you don't play it so you don't break your monitor/laptop.\n___________________________________________\nStory:\nYou are Bob. Your only purpose in life is to run through levels as fast as you can.\n___________________________________________\nInstructions:\nInstructions are inside the project :)\n___________________________________________\nCredits:\n@griffpatch for the shading and outline engine. It really helped the game feel more polished.\n\nI don't know who made the background but whoever did, thank you.\n\nScratch made most of the sound so thank you to them.\n\nThank you to @jlmonkeys for playtesting

@Stage\n\nwhen flag clicked\nset [color v] effect to (0)\n\nwhen I receive [world 2 v]\nset [color v] effect to (125)\n\nwhen I receive [world 3 v]\nset [color v] effect to (75)\n\n@TN\n\nwhen flag clicked\nhide\n\ngo to (random position v)\n\n@guy\n\nwhen flag clicked\nerase all\nset [world v] to [1]\nset [checkpoint v] to [1]\nset [level v] to [1]\ndie\nforever\n    Tick\nend\n\ndefine Tick\nif <not <touching (end v)?>> then\n    if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n        set [x speed v] to [4]\n        change x by (X speed)\n    end\n    if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n        set [x speed v] to [-4]\n        change x by (X speed)\n    end\n    change x by (X speed)\n    if <touching (platforms v)?> then\n        set [x speed v] to ((0) - (X speed))\n        repeat until <not <touching (platforms v)?>>\n            change x by (X speed)\n        end\n    end\n    if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n        change y by (-1)\n        if <touching (platforms v)?> then\n            repeat until <not <touching (platforms v)?>>\n                change y by (.1)\n            end\n            set [y speed v] to [15]\n        else\n            change y by (1)\n        end\n    end\n    change [y speed v] by (-1)\n    change y by (Y speed)\n    if <touching (platforms v)?> then\n        if <(Y speed) < [0]> then\n            set [y speed v] to [0]\n            repeat until <not <touching (platforms v)?>>\n                change y by (.1)\n            end\n        end\n        if <[0] < (Y speed)> then\n            set [y speed v] to [0]\n            repeat until <not <touching (platforms v)?>>\n                change y by (-0.1)\n            end\n        end\n    end\n    if <[0] < (X speed)> then\n        change [x speed v] by (-0.5)\n    end\n    if <(X speed) < [0]> then\n        change [x speed v] by (0.5)\n    end\n    if <[230] < (x position)> then\n        broadcast (next level v)\n        change [level v] by (1)\n        set x to (-230)\n        set y to (0)\n        collide\n    end\n    collide\nend\n\nwhen flag clicked\nforever\n    if <<touching (spikes v)?> or <touching (enemy v)?>> then\n        start sound [Crunch v]\n        die\n        set [level v] to (CHECKPOINT)\n        collide\n    end\n    wait until <<not <touching (spikes v)?>> and <not <touching (enemy v)?>>>\nend\n\ndefine die\nbroadcast (next level v)\ngo to x: (-191) y: (-50)\nset [y speed v] to [0]\nset [x speed v] to [0]\ncollide\n\nwhen flag clicked\nforever\n    if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n        start sound [pop v]\n    end\n    wait until <<not <key (up arrow v) pressed?>> and <not <key (w v) pressed?>>>\nend\n\nwhen flag clicked\nswitch costume to (costume1 v)\nforever\n    wait (pick random (8) to (10)) seconds\n    switch costume to (costume2 v)\n    wait (.2) seconds\n    switch costume to (costume3 v)\n    wait (.2) seconds\n    switch costume to (costume2 v)\n    wait (.2) seconds\n    switch costume to (costume1 v)\nend\n\nwhen flag clicked\nforever\n    if <<<<<key (left arrow v) pressed?> or <key (right arrow v) pressed?>> or <key (a v) pressed?>> or <key (d v) pressed?>> and <(TOUCH) = [1]>> then\n        play sound (pick random (3) to (5)) until done\n    end\nend\n\nwhen flag clicked\nwait (1) seconds\ngo to [front v] layer\nforever\n    if <touching (end v)?> then\n        repeat until <<(round (x position)) = ([x position v] of [end v])> and <(round (y position)) = ([y position v] of [end v])>>\n            change x by ((([x position v] of [end v]) - (x position)) / (9))\n            change y by ((([y position v] of [end v]) - (y position)) / (9))\n        end\n        if <(WORLD) = [1]> then\n            broadcast (world 2 v)\n            set [world v] to [2]\n            set [level v] to [1]\n            set [checkpoint v] to [1]\n            die\n        else\n            if <(WORLD) = [2]> then\n                broadcast (world 3 v)\n                set [world v] to [3]\n                set [level v] to [1]\n                set [checkpoint v] to [1]\n                die\n            end\n        end\n        wait until <not <touching (end v)?>>\n    end\nend\n\ndefine collide\nrepeat until <not <touching (platforms v)?>>\n    change y by (0.1)\nend\n\nwhen flag clicked\nforever\n    if <touching (bounce pad v)?> then\n        start sound [Boing v]\n        set [y speed v] to [20]\n    end\nend\n\n@Guy check\n\nwhen flag clicked\nset [ghost v] effect to (100)\nforever\n    go to x: ([x position v] of [guy v]) y: ([y position v] of [guy v])\n    if <touching (platforms v)?> then\n        set [touch v] to [1]\n    else\n        set [touch v] to [0]\n    end\nend\n\n@Instructions\n\nwhen flag clicked\nset [display v] to (join (join [Time:] [0 ]) (join (join [Level:] (LEVEL)) (join (join [ ] [World:]) (WORLD))))\nswitch costume to (costume1 v)\nrepeat until <<<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<key (left arrow v) pressed?> or <key (a v) pressed?>>> or <<key (right arrow v) pressed?> or <key (d v) pressed?>>>\n    go to x: (0) y: ((([sin v] of ((timer) * (300)) ) * (8)) + (100))\nend\nbroadcast (Timer start v)\nup\nwait until <(LEVEL) = [5]>\nswitch costume to (costume2 v)\ndown\nrepeat until <[100] < ([x position v] of [guy v])>\n    go to x: (0) y: ((([sin v] of ((timer) * (300)) ) * (8)) + (100))\nend\nup\nwait until <(LEVEL) = [19]>\nswitch costume to (costume3 v)\ndown\nrepeat until <[100] < ([x position v] of [guy v])>\n    go to x: (0) y: ((([sin v] of ((timer) * (300)) ) * (8)) + (100))\nend\nup\nwait until <(LEVEL) = [12]>\nswitch costume to (costume4 v)\ndown\nrepeat until <[100] < ([x position v] of [guy v])>\n    go to x: (0) y: ((([sin v] of ((timer) * (300)) ) * (8)) + (100))\nend\nup\nwait until <(LEVEL) = [1]>\nswitch costume to (costume5 v)\ndown\nrepeat until <[100] < ([x position v] of [guy v])>\n    go to x: (0) y: ((([sin v] of ((timer) * (300)) ) * (8)) + (100))\nend\nup\nwait until <(LEVEL) = [14]>\nswitch costume to (costume6 v)\ndown\n\n    go to x: (0) y: ((([sin v] of ((timer) * (300)) ) * (8)) + (100))\nend\n\ndefine up\nrepeat until <(round (y position)) = [250]>\n    change y by (((250) - (y position)) / (8))\nend\n\nwhen I receive [timer start v]\nreset timer\nrepeat until <<(WORLD) = [3]> and <(LEVEL) = [14]>>\n    set [display v] to (join (join (join [Time:] (timer)) [ ]) (join (join [Level:] (LEVEL)) (join (join [ ] [World:]) (WORLD))))\nend\nset [display v] to (join (join (join [Time:] (timer)) [ ]) (join (join [Level:] [14]) (join (join [ ] [World:]) (WORLD))))\nset [time v] to (timer)\nshow variable [☁ highscore v]\nif <(time) < (☁ Highscore)> then\n    set [☁ highscore v] to (time)\nend\n\ndefine down\nrepeat until <(round (y position)) = [100]>\n    change y by (((100) - (y position)) / (8))\nend\n\nwhen flag clicked\nhide variable [☁ highscore v]\n\n@End\n\nwhen flag clicked\ngo to x: (178) y: (-77)\nforever\n    if <(LEVEL) = [19]> then\n        show\n    else\n        hide\n    end\nend\n\n@platforms\n\ndefine Stamp shadow\nset [brightness v] effect to (-100)\nset [ghost v] effect to (90)\nchange y by (-20)\nstamp\nchange y by (20)\nclear graphic effects\n\ndefine stamp outline\nset rotation style [don't rotate v]\nrepeat (8)\n    set [brightness v] effect to (-100)\n    move (3) steps\n    stamp\n    move (-3) steps\n    turn right (45) degrees\nend\nclear graphic effects\n\nwhen flag clicked\nswitch costume to (join (WORLD) (join [ ] (LEVEL)))\nwait (0) seconds\nsetup\nforever\n    switch costume to (join (WORLD) (join [ ] (LEVEL)))\nend\n\nwhen I receive [next level v]\nwait (0) seconds\nsetup\n\ndefine setup\nstamp outline\nStamp shadow\n\n@Spikes\n\nwhen flag clicked\nswitch costume to (join (WORLD) (join [ ] (LEVEL)))\nwait (0) seconds\nstamp outline\nforever\n    switch costume to (join (WORLD) (join [ ] (LEVEL)))\nend\n\nwhen I receive [next level v]\nerase all\nwait (0) seconds\nstamp outline\n\ndefine stamp outline\nset rotation style [don't rotate v]\nrepeat (8)\n    set [brightness v] effect to (-100)\n    move (3) steps\n    stamp\n    move (-3) steps\n    turn right (45) degrees\nend\nclear graphic effects\n\n@checkpoint\n\nwhen I start as a clone\nif <(WORLD) = [1]> then\n    switch costume to (flag v)\nelse\n    if <(WORLD) = [2]> then\n        switch costume to (flag2 v)\n    else\n        switch costume to (flag3 v)\n    end\nend\nset size to (30) %\npoint in direction (pick random (-90) to (90))\nset [flag velocity v] to [20]\nrepeat until <(flag velocity) < [1]>\n    change [flag velocity v] by (-1)\n    move (flag velocity) steps\nend\nrepeat until <touching (_edge_ v)?>\n    change [flag velocity v] by (-1)\n    change y by (flag velocity)\nend\ndelete this clone\n\nwhen flag clicked\ngo to [back v] layer\nforever\n    switch costume to (join (WORLD) (join [ ] (LEVEL)))\nend\n\nwhen flag clicked\nforever\n    if <touching (guy v)?> then\n        clone\n        start sound [Flag v]\n    end\n    wait until <not <touching (guy v)?>>\nend\n\ndefine clone\nrepeat (10)\n    create clone of (_myself_ v)\nend\n\nwhen flag clicked\nforever\n    if <touching (guy v)?> then\n        set [checkpoint v] to (LEVEL)\n    end\n    wait until <not <touching (guy v)?>>\nend\n\n@bounce pad\n\nwhen flag clicked\nswitch costume to (1 1 v)\nshow\nforever\n    switch costume to (join (WORLD) (join [ ] (LEVEL)))\nend\n\nhide\n\nwait until <<(WORLD) = [2]> and <[11] < (LEVEL)>>\n\ndefine stamp outline\nset rotation style [don't rotate v]\nrepeat (8)\n    set [brightness v] effect to (-100)\n    move (3) steps\n    stamp\n    move (-3) steps\n    turn right (45) degrees\nend\nclear graphic effects\n\nwhen I receive [next level v]\nwait (0) seconds\nstamp outline\n\n@Enemy\n\nwhen flag clicked\nshow\nswitch costume to (1 1 v)\nforever\n    switch costume to (join (WORLD) (join [ ] (LEVEL)))\n    go to x: (([sin v] of ((timer) * (200)) ) * (50)) y: (0)\nend\n\n