UpsideDown - Platformer

Instructions: right and left arrows to move right and left. down arrow to jump. you can't wall jump lol. don't touch red. reach the star things.  r to reset a level\n\ngotta promote something in case this blows up... uhh play dragon quest. in 11S the hero is bi (only s tho. in vanilla your only marriage option is g-ge- i cant even say it- gemma :sick: shes ok but i literally dont have any feelings towards her cuz she doesnt JOIN THE PARTY erik has better romantic chemistry with eleven)

@Stage\n\nwhen flag clicked\nforever\n    play sound [Tobu - Hope \[NCS Release\] v] until done\nend\n\n@Player\n\nwhen flag clicked\nshow variable [deaths v]\nshow variable [level v]\ngo to x: (-172) y: (30)\nset [x vel v] to [0]\nset [y vel v] to [0]\nforever\n    physics (-11) (0.8) (1) (1) (11) (8)\n    show\nend\n\nrepeat ([abs v] of (y vel) )\n    if <touching (terrain v)?> then\n        change y by (((y vel) / ([abs v] of (y vel) )) * (-1))\n    end\nend\nif <touching (terrain v)?> then\n    change y by (y vel)\nend\n\ndefine physics (jump height) (friction) (ceiling cling?) (slopes?) (wall jump horizontal power) (wall jump vertical power)\nchange y by (y vel)\nif <touching (terrain v)?> then\n    repeat ([abs v] of (y vel) )\n        if <touching (terrain v)?> then\n            change y by (((y vel) / ([abs v] of (y vel) )) * (-1))\n        end\n    end\n    if <touching (terrain v)?> then\n        change y by (y vel)\n    end\n    if <<<(y vel) < [0.01]> or <(ceiling cling?) = [1]>> and <key (down arrow v) pressed?>> then\n        set [y vel v] to (jump height)\n    else\n        set [y vel v] to [1]\n    end\nelse\n    change [y vel v] by (1)\nend\nif <key (right arrow v) pressed?> then\n    change [x vel v] by (1)\nend\nif <key (left arrow v) pressed?> then\n    change [x vel v] by (-1)\nend\nchange x by (x vel)\nif <touching (terrain v)?> then\n    if <(slopes?) = [1]> then\n        set [old_y v] to (y position)\n        repeat (([abs v] of (x vel) ) + (1))\n            if <touching (terrain v)?> then\n                change y by (-1)\n            end\n        end\n        if <touching (terrain v)?> then\n            set y to (old_y)\n            repeat ([ceiling v] of ([abs v] of (x vel) ) )\n                if <touching (terrain v)?> then\n                    change x by (((x vel) / ([abs v] of (x vel) )) * (-1))\n                end\n            end\n            if <touching (terrain v)?> then\n                change x by (([ceiling v] of ([abs v] of (x vel) ) ) * ((x vel) / ([abs v] of (x vel) )))\n            end\n            set [x vel v] to [0]\n        end\n    else\n        repeat ([ceiling v] of ([abs v] of (x vel) ) )\n            if <touching (terrain v)?> then\n                change x by (((x vel) / ([abs v] of (x vel) )) * (1))\n            end\n        end\n        if <touching (terrain v)?> then\n            change x by (([ceiling v] of ([abs v] of (x vel) ) ) * ((x vel) / ([abs v] of (x vel) )))\n        end\n        set [x vel v] to [0]\n    end\n    if <<key (up arrow v) pressed?> and <<not <(wall jump horizontal power) = [0]>> and <not <(wall jump vertical power) = [0]>>>> then\n        change y by (1)\n        if <touching (terrain v)?> then\n            change y by (-1)\n        else\n            change y by (-1)\n            change x by (1)\n            if <<touching (terrain v)?> and <key (right arrow v) pressed?>> then\n                set [x vel v] to (([abs v] of (wall jump horizontal power) ) * (-1))\n                set [y vel v] to (wall jump vertical power)\n            end\n            change x by (-2)\n            if <<touching (terrain v)?> and <key (left arrow v) pressed?>> then\n                set [x vel v] to ([abs v] of (wall jump horizontal power) )\n                set [y vel v] to (wall jump vertical power)\n            end\n            change x by (1)\n        end\n    end\nend\nset [x vel v] to ((x vel) * (friction))\n\nset [old_y v] to (y position)\nrepeat (([abs v] of (x vel) ) + (1))\n    if <touching (terrain v)?> then\n        change y by (1)\n    end\nend\nif <touching (terrain v)?> then\n    set y to (old_y)\n    repeat ([ceiling v] of ([abs v] of (x vel) ) )\n        if <touching (terrain v)?> then\n            change x by (((x vel) / ([abs v] of (x vel) )) * (-1))\n        end\n    end\n    if <touching (terrain v)?> then\n        change x by (([ceiling v] of ([abs v] of (x vel) ) ) * ((x vel) / ([abs v] of (x vel) )))\n    end\n    set [x vel v] to [0]\nend\n\nwhen flag clicked\nset [deaths v] to [0]\nforever\n    if <touching (lava v)?> then\n        go to x: (-172) y: (30)\n        change [deaths v] by (1)\n    end\nend\n\nwhen flag clicked\nforever\n    if <touching (checkpoint v)?> then\n        go to x: (-172) y: (30)\n        change [level v] by (1)\n        wait (1) seconds\n    end\nend\n\nwhen [r v] key pressed\ngo to x: (-172) y: (30)\n\n@Terrain\n\nwhen flag clicked\nset [level v] to [1]\nforever\n    go to x: (0) y: (0)\n    switch costume to (level)\nend\n\n@lava\n\nwhen flag clicked\nset [level v] to [1]\ngo to [front v] layer\nforever\n    go to x: (0) y: (0)\n    switch costume to (level)\nend\n\nwhen flag clicked\nclear graphic effects\nforever\n    repeat (50)\n        change [brightness v] effect by (-0.5)\n    end\n    repeat (50)\n        change [brightness v] effect by (0.5)\n    end\nend\n\n@checkpoint\n\nwhen flag clicked\nset [spin spon v] to [0]\ngo to x: (214) y: (88)\nset [brightness v] effect to (100)\nforever\n    turn right (spin spon) degrees\nend\n\nwhen flag clicked\nforever\n    if <key (right arrow v) pressed?> then\n        repeat until <<(spin spon) = [10]> or <not <key (right arrow v) pressed?>>>\n            change [spin spon v] by (0.5)\n            wait (0) seconds\n        end\n    else\n        if <key (left arrow v) pressed?> then\n            repeat until <<(spin spon) = [-10]> or <not <key (left arrow v) pressed?>>>\n                change [spin spon v] by (-0.5)\n                wait (0) seconds\n            end\n        else\n            if <not <<key (right arrow v) pressed?> or <key (left arrow v) pressed?>>> then\n                if <(spin spon) > [0]> then\n                    repeat until <(spin spon) = [0]>\n                        change [spin spon v] by (-0.5)\n                        wait (0) seconds\n                    end\n                else\n                    if <(spin spon) < [0]> then\n                        repeat until <(spin spon) = [0]>\n                            change [spin spon v] by (0.5)\n                            wait (0) seconds\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\n@thumbnail\n\nwhen flag clicked\ngo to x: (0) y: (0)\nclear graphic effects\nwait (1) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\nend\nforever\n    set [ghost v] effect to (100)\n    go to [front v] layer\nend\n\n@cool things\n\nwhen flag clicked\ngo to x: (-240) y: (28)\nforever\n    hide\n    go to [back v] layer\n    create clone of (_myself_ v)\n    wait (0.1) seconds\nend\n\nwhen I start as a clone\nset size to (pick random (50) to (400)) %\ngo to x: (-240) y: (pick random (-180) to (180))\nshow\ngo to [back v] layer\nset [ghost v] effect to (pick random (50) to (75))\nglide (pick random (0.5) to (10)) secs to x: (240) y: (pick random (-180) to (180))\ndelete this clone\n\n@Sprite1\n\nwhen flag clicked\ngo to x: (0) y: (0)\ngo to [back v] layer\n\n