Unconfided (a scrolling platformer)

Instructions: Im kind of tired of the negative comments im getting. I know this project is slow and hard. This was my first scrolling platformer with this physics pattern. \nArrow Keys\n"R" to respawn\nI am soooo happy that the physics are perfect now!\nPlease if you want to, tell your friends and show the community a good game!\nI hope to make a sequel!\ni know its hard. i beat it many times though.\nI now have much more efficient methods of scrolling. I was pretty new to scrolling when i made this

@Stage\n\nwhen flag clicked\nset volume to (75) %\nwait (0.5) seconds\nforever\n    play sound [Burned v] until done\nend\n\n@Player's square\n\nwhen flag clicked\nhide\nswitch costume to (costume3 v)\nset size to (75) %\nset [yv v] to [0]\nset [xv v] to [0]\nforever\n    change y by (-0.5)\n    if <touching color (#6c4c8c)?> then\n        broadcast (Done v)\n        broadcast (Done v) and wait\n        stop [all v]\n    end\nend\n\nwhen flag clicked\nshow\nforever\n    go to [front v] layer\n    if <(waiting) = [0]> then\n        if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n            change [xv v] by (1)\n        end\n        if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n            change [xv v] by (-1)\n        end\n    end\n    change y by (1.5)\n    set [xv v] to ((Xv) * (0.9))\n    if <(waiting) = [0]> then\n        change x by (Xv)\n    end\n    if <touching color (#000000)?> then\n        change y by (1)\n        if <touching color (#000000)?> then\n            change y by (1)\n            if <touching color (#000000)?> then\n                change y by (1)\n                if <touching color (#000000)?> then\n                    change y by (1)\n                    if <touching color (#000000)?> then\n                        change y by (1)\n                        if <touching color (#000000)?> then\n                            change x by ((Xv) * (-1))\n                            change y by (-5)\n                            if <(waiting) = [0]> then\n                                if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n                                    if <(Xv) > [0]> then\n                                        set [xv v] to [-10]\n                                    else\n                                        set [xv v] to [10]\n                                    end\n                                    set [yv v] to [15]\n                                else\n                                    set [xv v] to [0]\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\n    if <(waiting) = [0]> then\n        change [yv v] by (-1)\n    end\n    change y by (Yv)\n    if <touching color (#000000)?> then\n        change y by ((Yv) * (-1))\n        set [yv v] to [0]\n    end\n    change y by (-1)\n    if <touching color (#000000)?> then\n        if <(waiting) = [0]> then\n            if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n                set [yv v] to [15]\n            end\n        end\n    end\n    if <touching color (#ff0000)?> then\n        Respawn\n    end\n    change y by (1)\n    change y by (-1)\n    change [scrolly v] by ((-1) * (y position))\n    change [scrollx v] by ((-1) * (x position))\n    go to x: (0) y: (0)\nend\n\ndefine Respawn\nset [waiting v] to [1]\nset [yv v] to [0]\nset [xv v] to [0]\nstart sound [GameOver v]\nif <(Checkpoint) = [0]> then\n    set [scrolly v] to [0]\n    set [scrollx v] to [0]\nelse\n    if <(Checkpoint) = [1]> then\n        set [scrollx v] to [-1564]\n        set [scrolly v] to [600]\n    else\n        if <(Checkpoint) = [2]> then\n            set [scrollx v] to [-770]\n            set [scrolly v] to [363]\n        else\n            if <(Checkpoint) = [3]> then\n                set [scrollx v] to [-603]\n                set [scrolly v] to [239]\n            else\n                if <(Checkpoint) = [4]> then\n                    set [scrollx v] to [-620]\n                    set [scrolly v] to [845]\n                else\n                    if <(Checkpoint) = [5]> then\n                    else\n                    end\n                end\n            end\n        end\n    end\nend\nwait (1) seconds\nset [waiting v] to [0]\n\nwhen flag clicked\nset [waiting v] to [0]\nset [checkpoint v] to [0]\nwait (1) seconds\nforever\n    if <touching color (#ffff00)?> then\n        if <touching (terrain 3, -1 v)?> then\n            if <(Checkpoint) = [0]> then\n                start sound [Upgrade v]\n            end\n            set [checkpoint v] to [1]\n            wait until <not <touching color (#ffff00)?>>\n        end\n        if <touching (terrain 2, -2 v)?> then\n            if <(Checkpoint) = [1]> then\n                start sound [Upgrade v]\n            end\n            set [checkpoint v] to [2]\n            wait until <not <touching color (#ffff00)?>>\n        end\n        if <touching (terrain 1, -1 v)?> then\n            if <(Checkpoint) = [2]> then\n                start sound [Upgrade v]\n            end\n            set [checkpoint v] to [3]\n            wait until <not <touching color (#ffff00)?>>\n        end\n        if <touching (terrain 1, -2 v)?> then\n            if <(Checkpoint) = [3]> then\n                start sound [Upgrade v]\n            end\n            set [checkpoint v] to [4]\n            wait until <not <touching color (#ffff00)?>>\n        end\n    end\nend\n\nwhen flag clicked\nforever\n    if <(waiting) = [1]> then\n        repeat until <not <(waiting) = [1]>>\n            turn right (45) degrees\n        end\n    else\n        point in direction (90)\n    end\n    if <touching color (#00ff55)?> then\n        repeat until <not <touching color (#00ff55)?>>\n            set [yv v] to [5]\n        end\n    end\nend\n\nwhen flag clicked\nrepeat until <not <<(username) = [if_then_statement]> or <(username) = [skitzoid]>>>\n    if <key (1 v) pressed?> then\n        set [checkpoint v] to [1]\n    end\n    if <key (2 v) pressed?> then\n        set [checkpoint v] to [2]\n    end\n    if <key (3 v) pressed?> then\n        set [checkpoint v] to [3]\n    end\n    if <key (4 v) pressed?> then\n        set [checkpoint v] to [4]\n    end\n    if <key (5 v) pressed?> then\n        set [checkpoint v] to [5]\n    end\n    if <key (6 v) pressed?> then\n        set [checkpoint v] to [6]\n    end\n    if <key (7 v) pressed?> then\n        set [checkpoint v] to [7]\n    end\n    if <key (8 v) pressed?> then\n        set [checkpoint v] to [8]\n    end\n    if <key (9 v) pressed?> then\n        set [checkpoint v] to [9]\n    end\nend\n\nwhen [r v] key pressed\nRespawn\nwait until <not <key (r v) pressed?>>\n\nwhen I receive [done v]\nhide\nstop [other scripts in sprite v]\n\nwhen flag clicked\nset [direction v] to [90]\nforever\n    if <(costume [number v]) = [2]> then\n        if <key (any v) pressed?> then\n            if <key (right arrow v) pressed?> then\n                change [direction v] by (20)\n            else\n                if <key (left arrow v) pressed?> then\n                    change [direction v] by (-20)\n                end\n            end\n        else\n            set [direction v] to [90]\n        end\n        point in direction (Direction)\n    else\n        point in direction (90)\n    end\nend\n\n@Terrain 0, 0\n\nwhen I start as a clone\nshow\nswitch costume to (costume2 v)\nforever\n    set x to ((ScrollX) + (696))\n    set y to ((ScrollY) - ((360) * (1)))\nend\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\nwhen flag clicked\nswitch costume to (costume1 v)\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    set x to (ScrollX)\n    set y to (ScrollY)\n    if <<([abs v] of (x position) ) > [463]> or <([abs v] of (y position) ) > [223]>> then\n        hide\n    else\n        show\n    end\nend\n\n@Terrain 1, 0\n\nwhen flag clicked\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    set x to ((ScrollX) + ((460) * (1)))\n    set y to ((ScrollY) + ((360) * (0)))\n    if <<([abs v] of (x position) ) > [463]> or <([abs v] of (y position) ) > [344]>> then\n        hide\n    else\n        show\n    end\nend\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\n@Terrain 3, 0\n\nwhen flag clicked\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    set x to ((ScrollX) + ((460) * (3)))\n    set y to ((ScrollY) + ((360) * (0)))\n    if <<([abs v] of (x position) ) > [463]> or <([abs v] of (y position) ) > [344]>> then\n        hide\n    else\n        show\n    end\nend\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\n@Terrain 2, -2\n\nwhen flag clicked\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    set x to ((ScrollX) + ((460) * (2)))\n    set y to ((ScrollY) + ((360) * (-2)))\n    if <<([abs v] of (x position) ) > [463]> or <([abs v] of (y position) ) > [344]>> then\n        hide\n    else\n        show\n    end\nend\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\n@Terrain 3, -2\n\nwhen flag clicked\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    set x to ((ScrollX) + ((460) * (3)))\n    set y to ((ScrollY) + ((360) * (-2)))\n    if <<([abs v] of (x position) ) > [463]> or <([abs v] of (y position) ) > [344]>> then\n        hide\n    else\n        show\n    end\nend\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\n@Terrain 3, -1\n\nwhen flag clicked\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    set x to ((ScrollX) + ((460) * (3)))\n    set y to ((ScrollY) + ((360) * (-1)))\n    if <<([abs v] of (x position) ) > [463]> or <([abs v] of (y position) ) > [344]>> then\n        hide\n    else\n        show\n    end\nend\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\n@Terrain 2, -1\n\nwhen flag clicked\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    set x to ((ScrollX) + ((460) * (2)))\n    set y to ((ScrollY) + ((360) * (-1)))\n    if <<([abs v] of (x position) ) > [463]> or <([abs v] of (y position) ) > [344]>> then\n        hide\n    else\n        show\n    end\nend\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\n@Sprite1\n\nwhen flag clicked\ngo to [front v] layer\nswitch costume to (costume1 v)\nclear graphic effects\ngo to x: (0) y: (0)\nshow\nwait (0.5) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\n    change x by ((-0.1) * (300))\nend\nhide\n\nwhen I receive [done v]\ngo to x: (0) y: (0)\nset [ghost v] effect to (100)\nshow\nswitch costume to (costume2 v)\nrepeat (10)\n    change [ghost v] effect by (-10)\nend\nwait (5) seconds\nnext costume\nwait (5) seconds\nnext costume\nwait (5) seconds\nnext costume\n\n@Terrain 2, 0\n\nwhen flag clicked\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    set x to ((ScrollX) + ((460) * (2)))\n    set y to ((ScrollY) + ((360) * (0)))\n    if <<([abs v] of (x position) ) > [463]> or <([abs v] of (y position) ) > [344]>> then\n        hide\n    else\n        show\n    end\nend\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\n@Terrain 1, -1\n\nwhen flag clicked\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    erase all\n    set x to ((ScrollX) + ((460) * (1)))\n    set y to ((ScrollY) + ((360) * (-1)))\n    if <<([abs v] of (x position) ) > [460]> or <([abs v] of (y position) ) > [344]>> then\n        hide\n    else\n        show\n    end\nend\n\nstamp\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\n@Terrain 1, -2\n\nwhen flag clicked\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    erase all\n    set x to ((ScrollX) + ((460) * (1)))\n    set y to ((ScrollY) + ((360) * (-2)))\n    if <<([abs v] of (x position) ) > [463]> or <([abs v] of (y position) ) > [344]>> then\n        hide\n    else\n        show\n    end\nend\n\nstamp\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\n@Terrain 1, -3\n\nwhen flag clicked\nset [scrolly v] to [0]\nset [scrollx v] to [0]\ngo to x: (0) y: (0)\nforever\n    erase all\n    set x to ((ScrollX) + ((460) * (1)))\n    set y to ((ScrollY) + ((360) * (-3)))\n    if <<([abs v] of (x position) ) > [700]> or <([abs v] of (y position) ) > [344]>> then\n        hide\n    else\n        show\n    end\nend\n\nwhen I receive [done v]\nstop [other scripts in sprite v]\n\n