Climber - The Platformer

Instructions: The third in the series is now out!\n\nSequel: https://scratch.mit.edu/projects/388934412.\n-----------------------------------------------------------------\nThis is very generic but it's my best platformer with graphics, so if you'd like to see my other stuff then click this link: @Whiteout12.\n-----------------------------------------------------------------\nThe controls are simple: arrow keys to move or tap on mobile to move. Avoid spikes. Beat the abominable snowman to win (Touch him to lower his health but beware the spikes that he shoots)!\n-----------------------------------------------------------------\nPlease place a love and/or favorite if you liked this. More levels coming soon!\n\nThere is NO reposition button, mohahahahahahahahha!\n\n@krishtheking123\n@-EmeraldWolf- loved and faved!\n@carot3 loved and faved!\n@eunice0913 loved and faved!\n@Lazy_otter2_0 loved!\n@kodiak77-77 loved!\n-----------------------------------------------------------------\nSong from @JS_Coder.\nPlatforming script from @Griffpatch.\nAll of the rest (including art) from me, @Whiteout12.\n-----------------------------------------------------------------\n#Games #All #Platformer 

@Stage\n\nwhen I receive [next level v]\nwait (0.1) seconds\nif <([costume name v] of [platform v]) > [6]> then\n    switch backdrop to (cave v)\nend\nif <([costume name v] of [platform v]) > [10]> then\n    switch backdrop to (sky v)\nend\n\nwhen flag clicked\nswitch backdrop to (start v)\n\nwhen I receive [start game v]\nswitch backdrop to (sky v)\n\n@Thumbnail\n\nwhen flag clicked\nset [ghost v] effect to (100)\ngo to x: (0) y: (0)\ngo to [front v] layer\nshow\n\n@Intro (OC)\n\nwhen flag clicked\nhide\nset size to (100) %\nset [ghost v] effect to (100)\nset [intro ability v] to [0]\nrepeat (2)\n    wait (0.2) seconds\n    create clone of (_myself_ v)\n    change [intro ability v] by (1)\nend\nshow\nrepeat (10)\n    change [ghost v] effect by (-10)\nend\nswitch costume to (oc still v)\ngo to x: (0) y: (0)\nwait (0.8) seconds\ngo to [front v] layer\nrepeat (6)\n    wait (0.2) seconds\n    switch costume to (oc wave 2 v)\n    wait (0.2) seconds\n    switch costume to (oc wave 1 v)\nend\nwait (0.2) seconds\nswitch costume to (oc still v)\nwait (0.4) seconds\nswitch costume to (oc draw clock 1 v)\nwait (0.3) seconds\nswitch costume to (oc draw clock 2 v)\ncreate clone of (_myself_ v)\nset [intro ability v] to [3]\nwait (2) seconds\nhide\n\nwhen I start as a clone\nif <(Intro Ability) = [1]> then\n    wait (0.5) seconds\n    set [ghost v] effect to (0)\n    go to [front v] layer\n    repeat (200)\n        show\n        switch costume to (logo v)\n        change [color v] effect by (5)\n        change y by (1)\n    end\n    hide\n    delete this clone\nend\nif <(Intro Ability) = [2]> then\n    set [ghost v] effect to (0)\n    go to [front v] layer\n    show\n    switch costume to (background v)\n    wait (7.5) seconds\n    hide\n    delete this clone\nend\nif <(Intro Ability) = [3]> then\n    set [ghost v] effect to (0)\n    wait (0.8) seconds\n    go to x: (-50) y: (0)\n    go to [front v] layer\n    show\n    set size to (10) %\n    switch costume to (clock 1 v)\n    repeat (50)\n        change x by (1)\n        change size by (10)\n    end\n    switch costume to (clock 1/2 v)\n    wait (0.01) seconds\n    switch costume to (clock 2 v)\n    wait (0.3) seconds\n    repeat (03)\n        change [ghost v] effect by (10)\n    end\n    broadcast (Start Game v)\n    hide\n    delete this clone\nend\n\nwhen flag clicked\nplay sound [Intro v] until done\n\n@Player\n\nwhen I receive [start game v]\nset size to (25) %\nset rotation style [left-right v]\ngo to x: (-187) y: (-58)\nshow\nset [speed y v] to [0]\nset [falling? v] to [10]\nforever\n    if <<(speed y) < [4]> or <<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > [0]>>>> then\n        change [speed y v] by (-1)\n    else\n        change [speed y v] by (-2)\n    end\n    change y by (speed y)\n    Touch Ground <(speed y) > [0]>\n    if <(wall jump) > [0]> then\n        change [wall jump v] by (-1)\n    else\n        set [speed x v] to ((speed x) * (0.7))\n        if <<key (left arrow v) pressed?> or <<mouse down?> and <(mouse x) < [0]>>> then\n            change [speed x v] by (-1.5)\n        end\n        if <<key (right arrow v) pressed?> or <<mouse down?> and <(mouse x) > [0]>>> then\n            change [speed x v] by (1.5)\n        end\n    end\n    if <(speed x) < [-0.5]> then\n        Walk (-90) (speed x)\n    else\n        if <(speed x) > [0.5]> then\n            Walk (90) (speed x)\n        else\n            set [frame v] to [0]\n        end\n    end\n    if <<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > [0]>>> then\n        if <<(jump key) = [0]> and <(falling?) < [3]>> then\n            set [speed y v] to [14]\n            set [falling? v] to [6]\n            set [jump key v] to [1]\n        end\n    else\n        set [jump key v] to [0]\n    end\n    if <(y position) < [-180]> then\n        go to x: (0) y: (100)\n        set [speed y v] to [0]\n    end\nend\n\ndefine Touch Ground <up?>\nchange [falling? v] by (1)\nrepeat until <not <touching (platform 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]\nend\n\ndefine Walk (direction) (speed)\npoint in direction (direction)\nchange x by (speed)\nset [slope v] to [0]\nrepeat until <<(slope) = [8]> or <not <touching (platform 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))\n    if <<<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > [0]>>> and <([abs v] of (speed) ) > [3]>> then\n        if <(wall jump) = [0]> then\n            set [speed x v] to ((-1.2) * (speed))\n            set [speed y v] to [11]\n            set [falling? v] to [6]\n            set [wall jump v] to [15]\n        end\n    else\n        set [speed x v] to [0]\n    end\nend\nif <(speed) < [0]> then\n    change [frame v] by ((speed) / (-8))\nelse\n    change [frame v] by ((speed) / (8))\nend\n\nwhen I receive [start game v]\nset [color v] effect to (0)\nforever\n    switch costume to (1 v)\n    wait (3) seconds\n    repeat (3)\n        next costume\n    end\n    wait (0.2) seconds\nend\n\nwhen I receive [start game v]\ngo to [front v] layer\ngo [backward v] (1) layers\nforever\n    if <not <([costume name v] of [platform v]) = [10]>> then\n        if <<touching (_edge_ v)?> and <(x position) > [180]>> then\n            if <not <([costume name v] of [platform v]) = [End]>> then\n                repeat (10)\n                    change [ghost v] effect by (10)\n                end\n                broadcast (Reposition v)\n                broadcast (Next Level v)\n                repeat (10)\n                    change [ghost v] effect by (-10)\n                end\n            end\n        end\n    end\n    if <touching (spikes v)?> then\n        repeat (10)\n            change [ghost v] effect by (10)\n        end\n        broadcast (Reposition v)\n        repeat (10)\n            change [ghost v] effect by (-10)\n        end\n    end\n    if <touching (abominable v)?> then\n        broadcast (Clear All Effects v)\n        go to x: (0) y: (-69)\n    end\n    if <touching (spike v)?> then\n        go to x: (-187) y: (-64)\n    end\nend\n\nwhen I receive [reposition v]\ngo to x: (-187) y: (-64)\n\nwhen [r v] key pressed\nbroadcast (Reposition v)\n\nwhen flag clicked\nhide\n\n@Platform\n\nwhen flag clicked\ngo to x: (0) y: (0)\nhide\nset volume to (50) %\n\nwhen I receive [start game v]\nshow\ngo to [front v] layer\nswitch costume to (1 v)\nforever\n    play sound [Vicetone - United We Dance v] until done\nend\n\nwhen I receive [next level v]\nnext costume\n\n@Cloud\n\nwhen flag clicked\nset [ghost v] effect to (50)\nhide\n\nwhen I receive [start game v]\nforever\n    if <<([costume # v] of [platform v]) < [7]> or <([costume # v] of [platform v]) > [10]>> then\n        wait (2) seconds\n        create clone of (_myself_ v)\n    else\n        hide\n        delete this clone\n    end\nend\n\nwhen I start as a clone\ngo to [back v] layer\ngo to x: (200) y: (pick random (0) to (180))\nshow\nrepeat until <(x position) < [-200]>\n    change x by (-3)\n    if <<([costume name v] of [platform v]) > [6]> and <([costume name v] of [platform v]) < [11]>> then\n        hide\n        delete this clone\n    end\nend\nrepeat (10)\n    hide\n    delete this clone\nend\n\n@Spikes\n\nwhen flag clicked\nhide\n\nwhen I receive [next level v]\nwait (0.2) seconds\nset rotation style [don't rotate v]\npoint in direction (90)\nif <([costume name v] of [platform v]) = [3]> then\n    go to x: (0) y: (0)\n    switch costume to (3 v)\n    show\nelse\n    if <([costume name v] of [platform v]) = [4]> then\n        go to x: (0) y: (0)\n        switch costume to (4 v)\n        show\n    else\n        if <([costume name v] of [platform v]) = [5]> then\n            go to x: (0) y: (0)\n            switch costume to (5 v)\n            show\n        else\n            if <([costume name v] of [platform v]) = [6]> then\n                go to x: (0) y: (0)\n                switch costume to (6 v)\n                show\n            else\n                if <([costume name v] of [platform v]) = [7]> then\n                    go to x: (0) y: (0)\n                    switch costume to (7 v)\n                    show\n                else\n                    if <([costume name v] of [platform v]) = [8]> then\n                        go to x: (0) y: (0)\n                        switch costume to (8 v)\n                        show\n                    else\n                        if <([costume name v] of [platform v]) = [9]> then\n                            go to x: (0) y: (0)\n                            switch costume to (9 v)\n                            show\n                        else\n                            if <([costume name v] of [platform v]) = [11]> then\n                                go to x: (0) y: (0)\n                                switch costume to (11 v)\n                                show\n                            else\n                                hide\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\n@Trees\n\nwhen flag clicked\ngo to x: (0) y: (0)\nhide\n\nwhen I receive [next level v]\nwait (0.1) seconds\nif <([costume name v] of [platform v]) = [5]> then\n    switch costume to (1 v)\n    go to [front v] layer\n    show\nelse\n    if <([costume name v] of [platform v]) = [6]> then\n        switch costume to (2 v)\n        go to [front v] layer\n        show\n    else\n        hide\n    end\nend\n\n@Health\n\nwhen flag clicked\nswitch costume to (full v)\ngo to x: (216) y: (63)\nset size to (100) %\nhide\n\nwhen I receive [yeti battle v]\nswitch costume to (full v)\nset size to (100) %\ngo to x: (216) y: (63)\nset size to (100) %\nshow\n\nwhen I receive [clear all effects v]\nwait (0.5) seconds\nif <not <(costume [name v]) = [Dead]>> then\n    next costume\nend\nif <(costume [name v]) = [Dead]> then\n    broadcast (Defeat v)\n    hide\n    broadcast (Reposition v)\n    broadcast (Next Level v)\nend\n\n@Abominable\n\nwhen flag clicked\nset rotation style [left-right v]\nset size to (25) %\nhide\n\nwhen I receive [next level v]\nwait (0.1) seconds\nif <([costume name v] of [platform v]) = [10]> then\n    go to x: (173) y: (-67)\n    point in direction (-90)\n    go to [front v] layer\n    show\n    broadcast (Yeti Battle v)\nend\n\nwhen I receive [yeti battle v]\nforever\n    switch costume to (1 v)\n    wait (1) seconds\n    repeat (3)\n        next costume\n    end\n    wait (1) seconds\nend\n\nwhen I receive [yeti battle v]\nforever\n    point in direction (-90)\n    wait (4) seconds\n    broadcast (Fire Spikes v)\nend\n\nwhen I receive [defeat v]\nhide\nstop [other scripts in sprite v]\nstop [this script v]\n\n@Spike\n\nwhen I start as a clone\nset size to (50) %\ngo to [front v] layer\nshow\ngo to (abominable v)\nmove (10) steps\nswitch costume to (costume1 v)\npoint towards (player v)\nrepeat until <touching (_edge_ v)?>\n    move (5) steps\n    if <<touching (player v)?> or <([costume name v] of [platform v]) = [11]>> then\n        hide\n        delete this clone\n    end\nend\nhide\ndelete this clone\n\nwhen I receive [fire spikes v]\nset rotation style [all around v]\nswitch costume to (ice spikes v)\nrepeat (4)\n    wait (0.9) seconds\n    create clone of (_myself_ v)\nend\n\nwhen I receive [clear all effects v]\nhide\ndelete this clone\n\nwhen flag clicked\nhide\n\nwhen I receive [defeat v]\nforever\n    hide\n    delete this clone\nend\n\n@Sheet\n\nwhen flag clicked\nswitch costume to (1 v)\nhide\n\nwhen I receive [start game v]\ngo to [back v] layer\nshow\nforever\n    go to [front v] layer\nend\n\nwhen I receive [next level v]\nwait (0.1) seconds\nif <([costume name v] of [platform v]) = [3]> then\n    switch costume to (2 v)\nend\nif <([costume name v] of [platform v]) = [4]> then\n    switch costume to (3 v)\nend\nif <([costume name v] of [platform v]) = [5]> then\n    switch costume to (4 v)\nend\nif <([costume name v] of [platform v]) = [6]> then\n    switch costume to (5 v)\nend\nif <([costume name v] of [platform v]) = [7]> then\n    switch costume to (6 v)\n    create clone of (_myself_ v)\nend\nif <([costume name v] of [platform v]) = [10]> then\n    hide\nend\n\nwhen I start as a clone\ngo to [back v] layer\nswitch costume to (light v)\nrepeat until <([costume name v] of [platform v]) = [11]>\n    go to [back v] layer\n    go to (player v)\nend\nhide\ndelete this clone\n\n@Skip\n\nwhen flag clicked\nset [ghost v] effect to (40)\ngo to x: (207) y: (-144)\nhide\n\nwhen I receive [start game v]\nshow\nforever\n    go to [front v] layer\n    if <touching (mouse-pointer v)?> then\n        switch costume to (2 v)\n    else\n        switch costume to (1 v)\n    end\n    if <<mouse down?> and <touching (mouse-pointer v)?>> then\n        if <not <<([costume name v] of [platform v]) = [10]> or <([costume name v] of [platform v]) = [End]>>> then\n            if <not <([costume name v] of [platform v]) = [End]>> then\n                wait (0.3) seconds\n                broadcast (Reposition v)\n                broadcast (Next Level v)\n            end\n        end\n    end\nend\n\n