Scratch Evolution || Platformer

Instructions: ★★ Scratch Evolution - 31 levels! ★★\n\n★ Controls ★\n[WASD] or [Arrow keys] to run and jump.\n[R] To restart a level.\n[S] To skip a level.\n\n★ Description ★\nI love making projects on scratch, such as making platformers on scratch, and making unique games on scratch. This time, I decided, why not make a review to 5 of the trends in Scratch's history? So after awhile, I finished this, hope you enjoy!\n\n★ Credits ★\nScratch cat sprite by @griffpatch\nGame by me\nMusic by freemusicarchive.org / FMA\nLogo text by cooltext.com\n\n★ Tags ★\n#tag #kraken #krakenmaster #fun #games #explore #all #everything #recent #trending #hopefully #this #works #cats #cat #scratch #random #tag #why #are #you #reading #this #game #gaming #scratchcat #griffpatch #evolution #era

@Stage\n\nwhen flag clicked\nswitch backdrop to (blue sky v)\nwait until <(Levelling) = [8]>\nswitch backdrop to (xy-grid-30px v)\nwait until <(Levelling) = [15]>\nswitch backdrop to (blue sky 2  v)\nwait until <(Levelling) = [20]>\nswitch backdrop to (blue sky 2 2 v)\nwait until <(Levelling) = [26]>\nswitch backdrop to (blue sky 2 3 v)\nwait until <(Levelling) = [32]>\nswitch backdrop to (backdrop1 v)\n\nwhen flag clicked\nset [intro? v] to [0]\nwait until <(Intro?) = [1]>\nforever\n    play sound [Scott_Holmes_-_04_-_Upbeat_Party v] until done\nend\n\n@Level\n\nwhen flag clicked\nset [levelling v] to [1]\nset [intro? v] to [0]\nwait until <(Intro?) = [1]>\nforever\n    switch costume to (Levelling)\nend\n\n@Level2\n\nwhen flag clicked\nset [levelling v] to [1]\nset [intro? v] to [0]\nwait until <(Intro?) = [1]>\nforever\n    switch costume to (Levelling)\nend\n\ngo to [front v] layer\n\n@KillSprite\n\nwhen flag clicked\nset [levelling v] to [1]\nset [intro? v] to [0]\nwait until <(Intro?) = [1]>\nforever\n    switch costume to (Levelling)\nend\n\ngo to [front v] layer\n\n@Hitbox\n\nwhen I receive [go v]\n\nif <([abs v] of (yv) ) > [8]> then\n    set [yv v] to (((yv) / ([abs v] of (yv) )) * (8))\nend\n\nchange x by ((-1) * (xv))\nset [xv v] to ((-1) * (xv))\n\nchange [x v] by ((-1) * (x position))\nset x to (0)\n\n\n\nset [yv v] to ((yv) * (0.7))\nbroadcast (levelup v) and wait\n\nset [xv v] to ((xv) * (0.7))\n\nif <([abs v] of (xv) ) > [8]> then\n\nset [startx v] to [-180]\nset [level v] to [1]\n\nwhen I receive [levelup v]\n\nwhen flag clicked\nerase all\npen up\nset [x v] to [0]\ngo to x: (-220) y: (150)\nset [xv v] to [0]\nset [yv v] to [0]\nset [intro? v] to [0]\nreset timer\nwait until <(Intro?) = [1]>\nforever\n    if <touching (end v)?> then\n    if <touching color (#99b3ff)?> then\n        if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n            change [xv v] by (-1)\n        end\n        if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n            change [xv v] by (1)\n        end\n        if <<key (down arrow v) pressed?> and <not <touching (level v)?>>> then\n            change [yv v] by (-1)\n        else\n            if <<key (down arrow v) pressed?> and <touching (level v)?>> then\n                change [yv v] by (1)\n            end\n        end\n        if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n            change [yv v] by (1)\n        end\n        set [xv v] to ((xv) * (0.8))\n        set [yv v] to ((yv) * (0.8))\n        change [yv v] by (((yv) / (15)) + (0.1))\n        if <touching (killsprite v)?> then\n            broadcast (dead v) and wait\n            set [x v] to [0]\n            go to x: (-220) y: (150)\n            set [xv v] to [0]\n            set [yv v] to [0]\n        end\n        change x by (xv)\n        change y by (yv)\n        if <not <touching color (#99b3ff)?>> then\n            change y by (-2)\n            if <touching color (#99b3ff)?> then\n                change y by (2)\n                change y by ((-1) * (yv))\n                if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n                    change y by (yv)\n                    set [yv v] to [9]\n                end\n            end\n        end\n        if <touching (level v)?> then\n            change y by (-2)\n            if <touching (level v)?> then\n                change x by ((-1) * (xv))\n                set [xv v] to ((-1) * (xv))\n            end\n            change y by (2)\n        end\n        if <touching (level v)?> then\n            change y by (-6)\n            if <not <touching (level v)?>> then\n                change y by ((-1) * (yv))\n                set [yv v] to ((-1) * (yv))\n            end\n            change y by (6)\n        end\n    else\n        if <<(y position) < [-170]> or <touching (killsprite v)?>> then\n            broadcast (dead v) and wait\n            set [x v] to [0]\n            go to x: (-220) y: (100)\n            set [xv v] to [0]\n            set [yv v] to [0]\n        end\n        if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n            change [xv v] by (-1)\n        end\n        if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n            change [xv v] by (1)\n        end\n        set [xv v] to ((xv) * (0.85))\n        change x by (xv)\n        if <touching (level v)?> then\n            change y by (-2)\n            if <touching (level v)?> then\n                change x by ((-1) * ((xv) + ((xv) / (([abs v] of (xv) ) + (0.0001)))))\n                if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> and <not <(xv) = [0]>>> then\n                    set [yv v] to [8]\n                    set [xv v] to (((xv) / ([abs v] of (xv) )) * (-10))\n                else\n                    set [xv v] to [0]\n                end\n            end\n            change y by (2)\n        end\n        change y by (-3)\n        if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> and <touching (level v)?>> then\n            set [yv v] to [9]\n        end\n        change y by (3)\n        if <(yv) > [-15]> then\n            change [yv v] by (-0.5)\n        end\n        if <(yv) < [3]> then\n            change y by (-2)\n            if <not <touching (level v)?>> then\n                change y by (-1)\n            end\n            change y by (2)\n        end\n        change y by (yv)\n        if <touching (level v)?> then\n            change y by (-2)\n            if <touching (level v)?> then\n                change y by ((-1) * (yv))\n                set [yv v] to [-3]\n            end\n            change y by (2)\n        end\n    end\nend\n\nif <touching color (#31ff57)?> then\n    set [yv v] to [20]\nend\n\n\n\ngo to [front v] layer\n\nchange [level v] by (1)\n\nwhen flag clicked\nset size to (30) %\nset [intro? v] to [0]\nwait until <(Intro?) = [1]>\nforever\n    set [ghost v] effect to (100)\n    if <(x position) > [230]> then\n        hide\n        go to x: (-220) y: (150)\n        set [xv v] to [0]\n        set [yv v] to [0]\n        change [levelling v] by (1)\n        show\n    end\nend\n\nwhen flag clicked\nset [intro? v] to [0]\nwait until <(Intro?) = [1]>\nforever\n    if <<key (s v) pressed?> and <not <(Levelling) = [32]>>> then\n        hide\n        go to x: (-240) y: (150)\n        set [xv v] to [0]\n        set [yv v] to [0]\n        change [levelling v] by (1)\n        show\n        wait until <not <key (s v) pressed?>>\n        wait (0.7) seconds\n    end\n    if <key (r v) pressed?> then\n        go to x: (-240) y: (150)\n        set [xv v] to [0]\n        set [yv v] to [0]\n    end\nend\n\nif <touching color (#ff0000)?> then\n    set [yv v] to [15]\nend\n\nhide\n\nset [ghost v] effect to (100)\n\n@Character\n\nwhen flag clicked\nset [intro? v] to [0]\nwait until <(Intro?) = [1]>\nforever\n    go to (hitbox v)\n    if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n        Picked up, Action!\n    end\n    if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n        Picked up, Action!\n    end\nend\n\ndefine Picked up, Action!\nif <not <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n    switch costume to (stand_1 v)\n    repeat until \n        next costume\n        wait (0.03) seconds\n    end\nelse\n    if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n        if <(yv) < [0]> then\n            switch costume to (fall_1 v)\n        else\n            switch costume to (jump_1 v)\n        end\n    end\nend\n\n\n\nwhen flag clicked\nset [intro? v] to [0]\nset rotation style [left-right v]\nwait until <(Intro?) = [1]>\nforever\n    go to (hitbox v)\nend\n\nwhen flag clicked\nset [intro? v] to [0]\nwait until <(Intro?) = [1]>\nforever\n    if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n        point in direction (90)\n    end\n    if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n        point in direction (-90)\n    end\nend\n\nwhen flag clicked\nset [intro? v] to [0]\nwait until <(Intro?) = [1]>\nforever\n    if <not <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<key (left arrow v) pressed?> or <key (a v) pressed?>>>>> then\n        switch costume to (stand_1 v)\n    end\n    if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n        if <(yv) < [0]> then\n            switch costume to (fall_1 v)\n        else\n            switch costume to (jump_1 v)\n        end\n    end\n    if <<(not touching) > [0]> and <(yv) < [-3]>> then\n        switch costume to (fall_1 v)\n    end\nend\n\nwhen flag clicked\nset [intro? v] to [0]\nwait until <(Intro?) = [1]>\npoint in direction (90)\nforever\n    if <touching (level v)?> then\n        set [not touching v] to [0]\n    else\n        change [not touching v] by (1)\n    end\nend\n\n@Sheet\n\nwhen flag clicked\nset [intro? v] to [0]\nshow\nwait until <(Intro?) = [1]>\nhide\n\ngo to [front v] layer\n\nwait until <(Intro?) = [1]>\n\n@Intro\n\nwhen flag clicked\nswitch costume to (costume3 v)\nshow\nset [ghost v] effect to (0)\ngo to [front v] layer\nset [intro? v] to [0]\nrepeat until <(costume [number v]) = [28]>\n    next costume\n    wait (0.01) seconds\nend\nwait (0.5) seconds\nrepeat until <(costume [number v]) = [36]>\n    next costume\nend\nwait (1) seconds\nrepeat until <(costume [number v]) = [46]>\n    next costume\nend\nset [intro? v] to [1]\nwait (0.3) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\nend\nhide\n\n@Thumbnail\n\nwhen flag clicked\nset [intro? v] to [0]\nset [ghost v] effect to (100)\nwait until <(Intro?) = [1]>\nwait (0.3) seconds\nset [ghost v] effect to (0)\nwait (1) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\nend\n\ngo to [front v] layer\n\n