The Snowman - A Platformer

Instructions: The hacked version is out! https://scratch.mit.edu/projects/685703506\nPart 2 is out! https://scratch.mit.edu/projects/683568554\n\nPlease do not say “THIS IS TOO EASY, PLEASE MAKE IT HARDER” or anything similar. I tried to make the game at a normal level of difficulty and possible without dying.\nYou also can’t call it generic or copying. However, this was inspired by other platformers.\n\nMy entry for @-CodingAnimations-‘s 3K contest!\nI worked really hard on it so I would really like a lot of views on this! (Yes, 200!)\n3K views, yes!\nTYSM FOR 4K+ VIEWS!\nCurated by @Funky-Pineapple on April 18 and 19 2022!\n\nArrow keys or mobile to move.\nAvoid spikes and water.\nTrampolines make you bounce high.\nWhen you touch the flag you beat a level.\n19 levels in total. (Not including the end one)\n\nIf you want it to be harder you can remix and make your own levels, but I will not make it harder.\nI will delete comments that are spam/advertising/hate on this project (or they will be reported)\n\n#snowman #platformer #platformers #game #games #music #all #entry #contest #pandan_the_coder #3k #3kcontest #3kcontestentry #snow #winter

@Stage\n\nwhen flag clicked\nforever\n    play sound [TheFatRat - Unity v] until done\nend\n\n@Snow\n\nwhen flag clicked\nhide\nforever\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nshow\nset y to (180)\nset x to (pick random (-240) to (236))\nset [acceleration v] to (pick random (-1.0) to (-10.0))\nrepeat until <<touching (ground v)?> or <(y position) = [-180]>>\n    change y by (Acceleration)\nend\ndelete this clone\n\nwhen I receive [next level v]\nset x to (pick random (-240) to (236))\n\n@Snowman\n\nwhen flag clicked\nset rotation style [left-right v]\npoint in direction (90)\ngo to x: (-185) y: (-77)\nswitch costume to (costume1 v)\nswitch backdrop to (backdrop1 v)\nset size to (100) %\nclear graphic effects\nset [vx v] to [0]\nset [vy v] to [0]\nshow\nforever\n    horizontal movement\n    wall jump\n    vertical movement\n    check collisions\nend\n\ndefine horizontal movement\nset [vx v] to ((Vx) * (.8))\nchange x by (Vx)\nif <<<mouse down?> and <(mouse x) > (x position)>> or <key (right arrow v) pressed?>> then\n    point in direction (90)\n    change [vx v] by (2)\nend\nif <<<mouse down?> and <(x position) > (mouse x)>> or <key (left arrow v) pressed?>> then\n    point in direction (-90)\n    change [vx v] by (-2)\nend\n\ndefine vertical movement\nchange [vy v] by (-1)\nchange y by (Vy)\nif <touching (ground v)?> then\n    change y by ((0) - (Vy))\n    set [vy v] to [0]\nend\nchange y by (-1)\nif <<<key (up arrow v) pressed?> or <<(mouse y) > (y position)> and <mouse down?>>> and <touching (ground v)?>> then\n    set [vy v] to [12]\nend\nchange y by (1)\n\ndefine check collisions\nif <touching (flag v)?> then\n    broadcast (next level v)\n    go to x: (-185) y: (-74)\n    point in direction (90)\nend\nif <touching (spikes v)?> then\n    go to x: (-185) y: (-74)\n    point in direction (90)\nend\nif <touching (trampoline v)?> then\n    set [vy v] to [18]\nend\nif <(y position) < [-200]> then\n    go to x: (-185) y: (-74)\n    point in direction (90)\nend\nif <touching (water v)?> then\n    go to x: (-185) y: (-74)\n    point in direction (90)\nend\n\ndefine wall jump\nif <touching (ground v)?> then\n    change y by (1)\n    if <touching (ground v)?> then\n        change y by (1)\n        if <touching (ground v)?> then\n            change y by (1)\n            if <touching (ground v)?> then\n                change y by (1)\n                if <touching (ground v)?> then\n                    change y by (1)\n                    if <touching (ground v)?> then\n                        change y by (1)\n                        if <touching (ground v)?> then\n                            change y by (1)\n                            if <touching (ground v)?> then\n                                change y by (1)\n                                if <touching (ground v)?> then\n                                    change y by (1)\n                                    if <touching (ground v)?> then\n                                        change y by (1)\n                                        if <touching (ground v)?> then\n                                            change x by ((0) - (Vx))\n                                            change y by (-10)\n                                            if <<<mouse down?> and <(mouse y) > (y position)>> or <key (up arrow v) pressed?>> then\n                                                if <(Vx) > [0]> then\n                                                    set [vx v] to [-7]\n                                                else\n                                                    set [vx v] to [7]\n                                                end\n                                                set [vy v] to [14]\n                                            else\n                                                set [vx v] to [0]\n                                            end\n                                        end\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\n@Ground\n\nwhen flag clicked\nswitch costume to (costume1 v)\n\nwhen I receive [next level v]\nnext costume\nbroadcast (flag  v)\nbroadcast (spike levels v)\nbroadcast (trampoline levels v)\nbroadcast (water levels v)\n\n@Flag\n\nwhen flag clicked\nshow\ngo to x: (199) y: (-78)\n\nwhen I receive [flag  v]\nif <([costume # v] of [ground v]) = [5]> then\n    go to x: (191) y: (100)\nend\nif <([costume # v] of [ground v]) = [6]> then\n    go to x: (199) y: (-78)\nend\nif <([costume # v] of [ground v]) = [8]> then\n    go to x: (183) y: (132)\nend\nif <([costume # v] of [ground v]) = [9]> then\n    go to x: (199) y: (-78)\nend\nif <([costume # v] of [ground v]) = [13]> then\n    go to x: (189) y: (74)\nend\nif <([costume # v] of [ground v]) = [14]> then\n    go to x: (199) y: (-78)\nend\nif <([costume # v] of [ground v]) = [15]> then\n    go to x: (175) y: (116)\nend\nif <([costume # v] of [ground v]) = [16]> then\n    go to x: (199) y: (-78)\nend\nif <([costume # v] of [ground v]) = [18]> then\n    go to x: (201) y: (77)\nend\nif <([costume # v] of [ground v]) = [19]> then\n    go to x: (204) y: (129)\nend\n\n@Spikes\n\nwhen flag clicked\nhide\npoint in direction (90)\n\nwhen I receive [spike levels v]\nif <([costume # v] of [ground v]) = [3]> then\n    show\n    go to x: (-30) y: (-80)\nend\nif <([costume # v] of [ground v]) = [4]> then\n    show\n    go to x: (-84) y: (-78)\n    create clone of (_myself_ v)\n    move (150) steps\nend\nif <([costume # v] of [ground v]) = [5]> then\n    hide\nend\nif <([costume # v] of [ground v]) = [6]> then\n    show\n    point in direction (-90)\n    go to x: (-90) y: (86)\n    create clone of (_myself_ v)\n    change x by (100)\n    create clone of (_myself_ v)\n    change x by (100)\nend\nif <([costume # v] of [ground v]) = [7]> then\n    hide\nend\nif <([costume # v] of [ground v]) = [11]> then\n    show\n    point in direction (90)\n    go to x: (-80) y: (-78)\n    create clone of (_myself_ v)\n    change x by (150)\nend\nif <([costume # v] of [ground v]) = [12]> then\n    show\n    point in direction (90)\n    go to x: (-80) y: (-78)\n    create clone of (_myself_ v)\n    change x by (150)\n    create clone of (_myself_ v)\n    point in direction (-90)\n    go to x: (-10) y: (78)\nend\nif <([costume # v] of [ground v]) = [13]> then\n    show\n    point in direction (90)\n    go to x: (-36) y: (-76)\n    create clone of (_myself_ v)\n    point in direction (-90)\n    go to x: (-38) y: (90)\nend\nif <([costume # v] of [ground v]) = [14]> then\n    hide\nend\nif <([costume # v] of [ground v]) = [16]> then\n    show\n    point in direction (0)\n    go to x: (-81) y: (-72)\n    create clone of (_myself_ v)\n    point in direction (180)\n    go to x: (140) y: (-70)\nend\nif <([costume # v] of [ground v]) = [17]> then\n    show\n    point in direction (0)\n    go to x: (-81) y: (-72)\n    create clone of (_myself_ v)\n    point in direction (180)\n    go to x: (140) y: (-70)\n    create clone of (_myself_ v)\n    point in direction (90)\n    go to x: (32) y: (-9)\nend\nif <([costume # v] of [ground v]) = [18]> then\n    hide\nend\n\nwhen I start as a clone\nif <([costume # v] of [ground v]) = [4]> then\n    wait until <not <([costume # v] of [ground v]) = [4]>>\n    delete this clone\nend\nif <([costume # v] of [ground v]) = [6]> then\n    wait until <not <([costume # v] of [ground v]) = [6]>>\n    delete this clone\nend\nif <([costume # v] of [ground v]) = [11]> then\n    wait until <not <([costume # v] of [ground v]) = [11]>>\n    delete this clone\nend\nif <([costume # v] of [ground v]) = [12]> then\n    wait until <not <([costume # v] of [ground v]) = [12]>>\n    delete this clone\nend\nif <([costume # v] of [ground v]) = [13]> then\n    wait until <not <([costume # v] of [ground v]) = [13]>>\n    delete this clone\nend\nif <([costume # v] of [ground v]) = [16]> then\n    wait until <not <([costume # v] of [ground v]) = [16]>>\n    delete this clone\nend\nif <([costume # v] of [ground v]) = [17]> then\n    wait until <not <([costume # v] of [ground v]) = [17]>>\n    delete this clone\nend\n\n@Trampoline\n\nwhen flag clicked\nhide\n\nwhen I receive [trampoline levels v]\nif <([costume # v] of [ground v]) = [5]> then\n    show\n    go to x: (-81) y: (-94)\nend\nif <([costume # v] of [ground v]) = [6]> then\n    show\n    go to x: (-81) y: (-94)\n    create clone of (_myself_ v)\n    move (200) steps\nend\nif <([costume # v] of [ground v]) = [7]> then\n    hide\nend\nif <([costume # v] of [ground v]) = [10]> then\n    show\n    go to x: (-119) y: (-92)\nend\nif <([costume # v] of [ground v]) = [11]> then\n    hide\nend\n\nwhen I start as a clone\nif <([costume # v] of [ground v]) = [6]> then\n    wait until <not <([costume # v] of [ground v]) = [6]>>\n    delete this clone\nend\n\n@Text\n\nwhen flag clicked\nforever\n    switch costume to ([costume # v] of [ground v])\nend\n\n@Water\n\nwhen flag clicked\nhide\n\nwhen I receive [water levels v]\nif <([costume # v] of [ground v]) = [9]> then\n    show\n    switch costume to (costume1 v)\n    go to x: (-20) y: (-154)\nend\nif <([costume # v] of [ground v]) = [10]> then\n    show\n    switch costume to (costume2 v)\n    go to x: (28) y: (-150)\nend\nif <([costume # v] of [ground v]) = [11]> then\n    hide\nend\nif <([costume # v] of [ground v]) = [18]> then\n    show\n    switch costume to (costume3 v)\n    go to x: (41) y: (-161)\nend\nif <([costume # v] of [ground v]) = [19]> then\n    hide\nend\n\n@Thumbnail\n\nwhen flag clicked\nset [ghost v] effect to (100)\nforever\n    set [stop detector v] to ((timer) + (0.1))\nend\n\nwhen [timer v] > (stop detector)\ngo to [front v] layer\nrepeat (100)\n    change [ghost v] effect by (-1)\nend\n\n