Fearful Heights (A Non-generic Platformer)

Instructions: VOICELINE AUDITIONS- https://scratch.mit.edu/projects/763630453/\n-So, yeah, there's a few secrets to get the good ending and some pretty unique features, and one level is anti-gravity. I would've added a lot more, but I wanted to get this out by Halloween, and I ran out of time.\n-HOLY WHAT 4TH ON GAMES TRENDING??? THANK YOU ALL SO MUCH!!!\n-No advertising. :)\n\n----CONTROLS----\n-a, d, or left, right\nup arrow key only works for some reason\nuse down key in anti gravity to control yourself.\n\nShould I do a continuation? I think it has potential although was slightly rushed.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n... looking for cheats?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nyou won't get any lol.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfine.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrickroll.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nok but seriously.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nyou need a hint?\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nThe most difficult coin to find is in the level with the 3 floating islands.

@Stage\n\nwhen flag clicked\nhide variable [☁ score v]\n\nwhen I receive [next v]\nchange [level v] by (1)\n\nwhen flag clicked\nset [level v] to [1]\n\nwhen I receive [start v]\nforever\n    switch backdrop to (level)\nend\n\n@Title\n\nwhen flag clicked\ngo to [front v] layer\nshow\nswitch costume to (pixil-gif-drawing \(11\) v)\nwait (.25) seconds\nrepeat (10)\n    go to [front v] layer\n    wait (.03) seconds\n    next costume\nend\nwait (1) seconds\nbroadcast (buttons v)\n\nwhen I receive [start v]\nhide\n\nwhen flag clicked\nshow\nset [pixelate v] effect to (500)\nrepeat (20)\n    change [pixelate v] effect by (-25)\nend\n\nwhen flag clicked\nwait (.4) seconds\nstart sound [Clang v]\nwait (.2) seconds\nstart sound [Clang2 v]\nwait (.1) seconds\n\n@pixil-gif-drawing (10)\n\nwhen flag clicked\nshow\nset [pixelate v] effect to (500)\nrepeat (20)\n    change [pixelate v] effect by (-25)\nend\n\nwhen flag clicked\nforever\n    wait (.1) seconds\n    next costume\nend\n\nwhen I receive [start v]\nhide\n\n@Sprite2\n\nwhen flag clicked\nset [brightness v] effect to (-20)\ngo to x: (0) y: (-141)\nhide\n\nwhen I receive [buttons v]\ngo to [front v] layer\nshow\nglide (.3) secs to x: (0) y: (-84)\nglide (.4) secs to x: (0) y: (-70)\nglide (.5) secs to x: (0) y: (-50)\n\nwhen this sprite clicked\nbroadcast (start v)\nhide\n\n@Player Sprite\n\nwhen flag clicked\ngo to [front v] layer\nset size to (110) %\nhide\n\nwhen I receive [start v]\ngo to [front v] layer\nset rotation style [left-right v]\nshow\nforever\n    go to (hitbox v)\nend\n\nwhen I receive [start v]\nforever\n    if <(falling?) = [Yes]> then\n        switch costume to (fall v)\n    end\n    if <<not <(STICK X) = [0]>> or <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<key (right arrow v) pressed?> or <key (d v) pressed?>>>> then\n        set [walk? v] to [Yes]\n        if <<(STICK X) > [.5]> or <<key (right arrow v) pressed?> or <key (d v) pressed?>>> then\n            point in direction (90)\n        end\n        if <<(STICK X) < [-.5]> or <<key (left arrow v) pressed?> or <key (a v) pressed?>>> then\n            point in direction (-90)\n        end\n    else\n        if <not <(falling?) = [Yes]>> then\n            set [walk? v] to [No]\n            switch costume to (idle v)\n        end\n    end\nend\n\nwhen I receive [start v]\nforever\n    if <<(walk?) = [Yes]> and <(falling?) = [No]>> then\n        if <(costume [number v]) = [6]> then\n            switch costume to (walk1 v)\n        else\n            next costume\n        end\n    end\nend\n\nwhen flag clicked\nforever\n    if <touching (land v)?> then\n        set [falling? v] to [No]\n    else\n        set [falling? v] to [Yes]\n    end\nend\n\n@Trampoline\n\nwhen I receive [start v]\nshow\n\nwhen flag clicked\nforever\n    switch costume to (level)\nend\n\nwhen flag clicked\nforever\n    wait until <touching (hitbox v)?>\n    play sound [Boing v] until done\nend\n\n@Sparkle\n\nwhen I receive [start v]\nforever\n    wait (pick random (0) to (.15)) seconds\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nshow\nset [ghost v] effect to (25)\ngo to (hitbox v)\nchange y by (pick random (-20) to (20))\nchange x by (pick random (-20) to (20))\nset size to (50) %\nrepeat (10)\n    change size by (-5)\n    change [ghost v] effect by (5)\nend\ndelete this clone\n\nwhen flag clicked\nhide\n\n@Land\n\nwhen I receive [start v]\nshow\n\nwhen flag clicked\nswitch costume to (costume1 v)\nhide\n\nwhen I receive [next v]\nnext costume\n\nwhen flag clicked\nforever\n    switch costume to (level)\n    set [ghost v] effect to (100)\nend\n\n@DecorFront\n\nwhen flag clicked\nhide\n\nwhen I receive [start v]\nshow\nforever\n    switch costume to (level)\n    go to [front v] layer\nend\n\nwhen flag clicked\nforever\n    if <<touching (player sprite v)?> and <<<(level) = [1]> or <(level) = [3]>> or <(level) = [7]>>> then\n        set [ghost v] effect to (50)\n    else\n        set [ghost v] effect to (0)\n    end\nend\n\n@Coin1\n\nwhen flag clicked\nforever\n    wait (.1) seconds\n    next costume\nend\n\nswitch costume to (pixil-gif-drawing \(9\)8 v)\n\nwhen flag clicked\nforever\n    if <(collect) = [0]> then\n        if <(level) = [3]> then\n            show\n        else\n            hide\n        end\n    else\n        hide\n    end\nend\n\nwhen flag clicked\ngo to x: (139) y: (-87)\nset [collect v] to [0]\nset [brightness v] effect to (0)\nset [coins v] to [0]\nset size to (30) %\nwait until <touching (player sprite v)?>\nstart sound [Collect v]\nrepeat (5)\n    change y by (2)\n    change size by (2)\n    change [brightness v] effect by (5)\nend\nrepeat (5)\n    change y by (-4)\n    change size by (-4)\n    change [brightness v] effect by (5)\nend\nrepeat (5)\n    change size by (-2)\nend\nhide\nchange [coins v] by (1)\nset [collect v] to [1]\n\n@Coin2\n\nwhen flag clicked\nforever\n    wait (.1) seconds\n    next costume\nend\n\nswitch costume to (pixil-gif-drawing \(9\)8 v)\n\nwhen flag clicked\nforever\n    if <(collect2) = [0]> then\n        if <(level) = [7]> then\n            show\n        else\n            hide\n        end\n    else\n        hide\n    end\nend\n\nwhen flag clicked\ngo to x: (-209) y: (-155)\nset [brightness v] effect to (0)\nset [collect2 v] to [0]\nset [coins v] to [0]\nset size to (30) %\nwait until <touching (player sprite v)?>\nstart sound [Collect v]\nrepeat (5)\n    change y by (2)\n    change size by (2)\n    change [brightness v] effect by (5)\nend\nrepeat (5)\n    change y by (-4)\n    change size by (-4)\n    change [brightness v] effect by (5)\nend\nrepeat (5)\n    change size by (-2)\nend\nhide\nchange [coins v] by (1)\nset [collect2 v] to [1]\n\n@LandFront\n\nwhen I receive [start v]\nshow\n\nwhen flag clicked\nswitch costume to (7 v)\nhide\n\nwhen I receive [next v]\nnext costume\n\nwhen flag clicked\nforever\n    switch costume to (level)\nend\n\n@Kill\n\nwhen flag clicked\nforever\n    switch costume to (level)\n    if <(level) = [8]> then\n        hide\n    else\n        show\n    end\nend\n\n@MusicPlayer\n\nwhen I receive [start v]\nstop [other scripts in sprite v]\nstop all sounds\nforever\n    play sound [Adv v] until done\n    play sound [Adv2 v] until done\nend\n\nwhen flag clicked\nforever\n    play sound [Title v] until done\nend\n\nwhen I receive [end v]\nset [pitch v] effect to (100)\n\n@Coin3\n\nwhen flag clicked\nforever\n    wait (.1) seconds\n    next costume\nend\n\nswitch costume to (pixil-gif-drawing \(9\)8 v)\n\nwhen flag clicked\nforever\n    if <(collect2) = [0]> then\n        if <(level) = [6]> then\n            show\n        else\n            hide\n        end\n    else\n        hide\n    end\nend\n\nwhen flag clicked\ngo to x: (3) y: (-150)\nset [brightness v] effect to (0)\nset [collect2 v] to [0]\nset [coins v] to [0]\nset size to (30) %\nwait until <touching (player sprite v)?>\nstart sound [Collect v]\nrepeat (5)\n    change y by (2)\n    change size by (2)\n    change [brightness v] effect by (5)\nend\nrepeat (5)\n    change y by (-4)\n    change size by (-4)\n    change [brightness v] effect by (5)\nend\nrepeat (5)\n    change size by (-2)\nend\nhide\nchange [coins v] by (1)\nset [collect2 v] to [1]\n\n@pixil-frame-0 (70)\n\nwhen flag clicked\nhide\nswitch costume to (1n v)\ngo to x: (0) y: (0)\n\nwhen I receive [next v]\nwait (1) seconds\nif <(level) = [8]> then\n    broadcast (bump v)\n    switch costume to (1n v)\n    show\n    if <(coins) = [3]> then\n        repeat (2)\n            wait (2) seconds\n            broadcast (bump v)\n            next costume\n        end\n        wait (2) seconds\n        broadcast (bump v)\n        switch costume to (4g v)\n        repeat (2)\n            wait (2) seconds\n            broadcast (bump v)\n            next costume\n        end\n        wait (2) seconds\n        broadcast (end v)\n    else\n        repeat (4)\n            wait (2) seconds\n            broadcast (bump v)\n            next costume\n        end\n    end\nend\n\nwhen I receive [bump v]\nset [pitch v] effect to (pick random (-10) to (10))\nstart sound [rawr v]\nrepeat (10)\n    change y by (2)\nend\nrepeat (2)\n    change y by (-8)\nend\nchange y by (-4)\n\n@End\n\nwhen I receive [end v]\nshow\nforever\n    go to [front v] layer\nend\n\nwhen I receive [end v]\nshow variable [☁ best time v]\nshow variable [☁ score v]\nset [☁ score v] to (timer)\nif <(☁ Score) < (☁ best time)> then\n    set [☁ best time v] to (☁ Score)\nend\nforever\n    wait (.5) seconds\n    next costume\nend\n\nwhen flag clicked\nhide\nreset timer\nhide variable [☁ best time v]\nhide variable [☁ score v]\n\n@Turbo Mode Detector\n\nwhen flag clicked\nhide\nset [turbo v] to [0]\nforever\n    change [turbo v] by (1)\nend\n\nwhen flag clicked\nforever\n    wait (.125) seconds\n    turbocheck\nend\n\ndefine turbocheck\nif <(turbo) > [100]> then\n    show\n    go to [front v] layer\n    stop [all v]\nelse\n    hide\nend\nset [turbo v] to [0]\n\n@Control Stick\n\nwhen flag clicked\nshow variable [mobile? v]\nset [myself v] to [Control Stick]\nset [max stick v] to [25]\ngo to x: (-186) y: (-127)\nswitch costume to (base v)\nset [ghost v] effect to (60)\nhide\n\nwhen I start as a clone\nswitch costume to (stick v)\ngo [forward v] (1) layers\nforever\n    go to [front v] layer\n    set [stick power v] to []\n    set [stick x v] to [0]\n    set [stick y v] to [0]\n    repeat until <mouse down?>\n        go to (myself)\n    end\n    if <(distance to [mouse-pointer v]) < ((size) * (.6))> then\n        StickFunction\n    else\n        wait until <not <mouse down?>>\n    end\nend\n\ndefine StickFunction\nrepeat until <not <mouse down?>>\n    go to (mouse-pointer v)\n    point towards (myself)\n    turn right (180) degrees\n    set [stick direction v] to (direction)\n    set [stick power v] to (distance to [(myself) v])\n    if <(STICK POWER) > (MAX STICK)> then\n        move ((MAX STICK) - (STICK POWER)) steps\n        set [stick power v] to (MAX STICK)\n    end\n    set [stick power v] to ((STICK POWER) / (MAX STICK))\n    set [stick x v] to ((STICK POWER) * ([sin v] of (STICK DIRECTION) ))\n    set [stick y v] to ((STICK POWER) * ([cos v] of (STICK DIRECTION) ))\nend\n\nwhen I receive [start v]\nif <(mobile?) = [1]> then\n    show\n    create clone of (_myself_ v)\nend\n\nwhen I receive [bump v]\nforever\n    go to [front v] layer\n    go [backward v] (2) layers\nend\n\nwhen flag clicked\n\nwhen I receive [intro v]\nhide variable [speedrunner? v]\nhide variable [mobile? v]\n\n@Hitbox\n\nwhen flag clicked\nhide\ngo to x: (-12) y: (-999)\n\nwhen flag clicked\nforever\n    if <(y position) > [-10]> then\n        if <(level) = [1]> then\n            broadcast (yo v)\n            stop [this script v]\n        end\n    end\nend\n\nwhen I receive [start v]\nhide variable [mobile? v]\nwait (.1) seconds\nset [ghost v] effect to (99)\nshow\ngo to x: (-222) y: (-80)\nset [xv v] to [0]\nset [yv v] to [0]\nforever\n    if <touching (trampoline v)?> then\n        set [mode v] to [jump]\n        set [yv v] to [13]\n    end\n    if <(level) = [6]> then\n        if <<(STICK Y) < [-.5]> or <<key (down arrow v) pressed?> or <key (s v) pressed?>>> then\n            change [yv v] by (-.25)\n        else\n            if <(yv) > [3]> then\n                change [yv v] by (.25)\n            else\n                change [yv v] by (.75)\n            end\n        end\n    end\n    if <<key (r v) pressed?> and <key (g v) pressed?>> then\n        wait until <not <<key (g v) pressed?> and <key (r v) pressed?>>>\n        go to x: (-231) y: (-135)\n        set [xv v] to [0]\n        set [yv v] to [0]\n        broadcast (Restart v)\n    end\n    if <key (r v) pressed?> then\n        if <not <key (g v) pressed?>> then\n            wait until <not <key (r v) pressed?>>\n            go to x: (-231) y: (-135)\n            set [xv v] to [0]\n            set [yv v] to [0]\n        end\n    end\n    go to [front v] layer\n    if <(back) = [1]> then\n        hide\n        stop [this script v]\n    end\n    if <(x position) > [235]> then\n        broadcast (Next v)\n        set x to (-222)\n        set [xv v] to [0]\n        set [yv v] to [0]\n    end\n    if <<(y position) < [-175]> or <touching (kill v)?>> then\n        start sound [Bonk v]\n        go to x: (-180) y: (-40)\n        set [xv v] to [0]\n        set [yv v] to [0]\n    end\n    if <<(STICK X) < [-.5]> or <<key (left arrow v) pressed?> or <key (a v) pressed?>>> then\n        point in direction (90)\n        change [xv v] by (-1)\n    end\n    if <<(STICK X) > [.5]> or <<key (right arrow v) pressed?> or <key (d v) pressed?>>> then\n        point in direction (-90)\n        change [xv v] by (1)\n    end\n    set [xv v] to ((xv) * (0.85))\n    change x by (xv)\n    if <touching (land v)?> then\n        change y by (-2)\n        if <touching (land v)?> then\n            change y by (1)\n            if <touching (land v)?> then\n                change y by (1)\n                if <touching (land v)?> then\n                    change y by (1)\n                    if <touching (land v)?> then\n                        change y by (1)\n                        if <touching (land v)?> then\n                            change y by (1)\n                            if <touching (land v)?> then\n                                change y by (-5)\n                                change x by ((-1) * (xv))\n                                if <<<(STICK Y) > [.5]> or <<key (up arrow v) pressed?> or <key (w v) pressed?>>> and <not <(xv) = [0]>>> then\n                                    set [mode v] to [walljump]\n                                    set [yv v] to [8]\n                                    set [xv v] to (((xv) / ([abs v] of (xv) )) * (-10))\n                                else\n                                    set [mode v] to [wallslide]\n                                    set [xv v] to [0]\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n        change y by (2)\n    end\n    change y by (-3)\n    if <touching (land v)?> then\n        if <(yv) = [-3]> then\n            if <<<(STICK X) > [.5]> or <(STICK X) < [-.5]>> or <<key (left arrow v) pressed?> or <key (right arrow v) pressed?>>> then\n                set [mode v] to [run]\n            else\n                if <([abs v] of (xv) ) > [.1]> then\n                    set [mode v] to [skid]\n                else\n                    set [mode v] to [stand]\n                end\n            end\n        end\n        if <<key (w v) pressed?> or <<key (up arrow v) pressed?> or <(STICK Y) > [.5]>>> then\n            set [mode v] to [jump]\n            set [yv v] to [9]\n        end\n    end\n    if <<<<(mode) = [jump]> or <(mode) = [walljump]>> and <(yv) < [0]>> or <<<(mode) = [run]> or <(mode) = [skid]>> and <(yv) < [-3]>>> then\n        set [mode v] to [fall]\n    end\n    change y by (3)\n    if <(yv) > [-15]> then\n        change [yv v] by (-0.5)\n    end\n    change y by (-2)\n    if <not <touching (land v)?>> then\n        change y by (-1)\n        if <not <touching (land v)?>> then\n            change y by (-1)\n            if <not <touching (land v)?>> then\n                change y by (-1)\n                if <not <touching (land v)?>> then\n                    change y by (-1)\n                    if <not <touching (land v)?>> then\n                        change y by (-1)\n                        if <not <touching (land v)?>> then\n                            change y by (5)\n                        end\n                    end\n                end\n            end\n        end\n    end\n    change y by (2)\n    change y by (yv)\n    if <touching (land v)?> then\n        change y by (-2)\n        if <touching (land v)?> then\n            change y by ((-1) * (yv))\n            set [yv v] to [-3]\n        end\n        change y by (2)\n    end\nend\n\nwhen I receive [player color v]\ngo to x: (-117) y: (-145)\npoint in direction (-90)\nshow\n\nwhen flag clicked\nshow variable [mobile? v]\nswitch costume to (normal v)\nset [back v] to [0]\n\nwhen I receive [start v]\nhide\n\n