360 Platformer!

Instructions: W,A,S,D or arrow keys to move.

@Stage\n\n@land 360\n\ndefine Set hack size to (size)\nswitch costume to (size hack v)\nset size to (size) %\nswitch costume to (costume1 v)\n\nwhen I receive [lag free cam set v]\nset x to (cam x)\n\nwhen I receive [play v]\nforever\n    if <key (right arrow v) pressed?> then\n        if <[-25] > (cam x)> then\n            change [cam x v] by (((-25) - (cam x)) * (0.05))\n        else\n            change [cam x v] by (-1)\n        end\n    end\n    if <key (left arrow v) pressed?> then\n        if <(cam x) > [25]> then\n            change [cam x v] by (((25) - (cam x)) * (0.05))\n        else\n            change [cam x v] by (1)\n        end\n    end\n    if <not <<<key (right arrow v) pressed?> and <(r) = [0]>> or <<key (left arrow v) pressed?> and <(l) = [0]>>>> then\n        change [cam x v] by (((0) - (cam x)) * (0.05))\n    end\n    broadcast (lag free cam set v)\nend\n\nwhen I receive [play v]\npoint in direction (90)\ngo to x: (0) y: (-600)\nSet hack size to [500]\nset [d vel v] to [0]\nset [y vel v] to [0]\nforever\n    if <(m) = [t]> then\n        change [y vel v] by (1)\n        if <<<key (d v) pressed?> or <key (right arrow v) pressed?>> or <(r) = [1]>> then\n            change [d vel v] by (-0.2)\n        end\n        if <<<key (a v) pressed?> or <key (left arrow v) pressed?>> or <(l) = [1]>> then\n            change [d vel v] by (0.2)\n        end\n        set [d vel v] to ((d vel) * (0.8))\n        turn right (d vel) degrees\n        if <touching (player v)?> then\n            change y by (-1)\n            if <touching (player v)?> then\n                change y by (-1)\n                if <touching (player v)?> then\n                    change y by (-1)\n                    if <touching (player v)?> then\n                        change y by (-1)\n                        if <touching (player v)?> then\n                            change y by (4)\n                            if <color (#000000) is touching (#9966ff)?> then\n                                broadcast (win v) and wait\n                                stop [this script v]\n                            end\n                            turn right ((d vel) * (-1)) degrees\n                            set [d vel v] to [0]\n                        end\n                    end\n                end\n            end\n        end\n        change y by (y vel)\n        if <touching (player v)?> then\n            change y by ((y vel) * (-1))\n            set [y vel v] to [0]\n        end\n        change y by (1)\n        if <touching (player v)?> then\n            if <<<key (w v) pressed?> or <<key (space v) pressed?> or <key (up arrow v) pressed?>>> or <(u) = [1]>> then\n                start sound [Jump v]\n                set [y vel v] to [-14]\n            end\n        end\n        change y by (-1)\n    end\nend\n\nwhen I receive [respawn v]\npoint in direction (90)\ngo to x: (0) y: (-600)\nset [d vel v] to [0]\nset [y vel v] to [0]\n\n@back ground\n\nwhen I receive [play v]\npoint in direction (90)\nset size to (500) %\nforever\n    go to x: (([x position v] of [player v]) * (0.8)) y: (([y position v] of [land 360 v]) * (0.1))\nend\n\nwhen flag clicked\nforever\n    go to [back v] layer\nend\n\n@player\n\nwhen I receive [lag free cam set v]\nset x to (cam x)\n\nwhen I receive [play v]\nclear graphic effects\nforever\n    set x to (cam x)\n    if <touching (enemy v)?> then\n        set [m v] to [f]\n        create clone of (_myself_ v)\n        repeat (20)\n            change [brightness v] effect by (5)\n        end\n        broadcast (respawn v) and wait\n    end\nend\n\nwhen I receive [respawn v]\npoint in direction (90)\nrepeat (10)\n    change [brightness v] effect by (-5)\nend\nset [m v] to [t]\nclear graphic effects\n\nwhen I receive [play v]\nforever\n    if <not <key (any v) pressed?>> then\n        switch costume to (normal v)\n    end\n    if <[0] > (y vel)> then\n        switch costume to (up v)\n    end\n    if <<<key (d v) pressed?> or <key (right arrow v) pressed?>> or <(r) = [1]>> then\n        switch costume to (right v)\n    end\n    if <<<key (a v) pressed?> or <key (left arrow v) pressed?>> or <(l) = [1]>> then\n        switch costume to (left v)\n    end\n    if <<key (w v) pressed?> or <<key (up arrow v) pressed?> or <(u) = [1]>>> then\n        switch costume to (up v)\n    end\n    if <<<<key (w v) pressed?> and <key (d v) pressed?>> or <<key (up arrow v) pressed?> and <key (right arrow v) pressed?>>> or <<(u) = [1]> and <(r) = [1]>>> then\n        switch costume to (up and right v)\n    end\n    if <<<<key (w v) pressed?> and <key (a v) pressed?>> or <<key (up arrow v) pressed?> and <key (left arrow v) pressed?>>> or <<(l) = [1]> and <(u) = [1]>>> then\n        switch costume to (up and left v)\n    end\nend\n\nwhen flag clicked\nset [m v] to [f]\npoint in direction (90)\nbroadcast (respawn v)\n\nwhen I receive [play v]\nwait until <<([direction v] of [land 360 v]) < [155]> and <([direction v] of [land 360 v]) > [140]>>\nbroadcast (win v) and wait\nstop [other scripts in sprite v]\n\nwhen I start as a clone\nrepeat (10)\n    change y by (5)\n    turn left (1) degrees\n    change [ghost v] effect by (10)\n    set [brightness v] effect to (0)\nend\ndelete this clone\n\nwhen I receive [play v]\nforever\n    change y by (-2)\n    change y by (2)\nend\n\nwhen flag clicked\nif <(me?) = [0]> then\n    change [☁ views v] by (1)\n    set [me? v] to [1]\nend\n\n@Thumbnail\n\nwhen flag clicked\nforever\n    go to [front v] layer\n    go to x: (0) y: (0)\n    set [ghost v] effect to (100)\nend\n\nwhen I receive [play v]\nforever\n    change [time v] by (1)\n    wait (1) seconds\nend\n\nwhen I receive [win v]\nstop [other scripts in sprite v]\n\nwhen flag clicked\nhide variable [time v]\n\n@You won\n\nwhen I receive [win v]\nswitch costume to (costume1 v)\ncreate clone of (_myself_ v)\nswitch costume to (costume2 v)\ncreate clone of (_myself_ v)\n\nwhen I start as a clone\ngo to [front v] layer\nshow\nif <(costume [number v]) = [1]> then\n    go to x: (0) y: (100)\n    repeat (25)\n        change y by (((0) - (y position)) * (0.1))\n    end\nend\nif <(costume [number v]) = [2]> then\n    go to x: (0) y: (-200)\n    repeat (50)\n        change y by (((0) - (y position)) * (0.1))\n    end\n    show variable [time v]\n    set [time v] to (join (time) [ sec])\n    stop [this script v]\nend\n\nwhen I receive [play v]\nset [time v] to [0]\nhide variable [time v]\n\nwhen flag clicked\nset [time v] to [0]\n\n@Mobile freindly\n\nwhen I receive [play v]\ngo to x: (0) y: (0)\nswitch costume to (up v)\ncreate clone of (_myself_ v)\nrepeat (2)\n    next costume\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nshow\nset [ghost v] effect to (100)\nforever\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        if <(costume [number v]) = [1]> then\n            set [u v] to [1]\n        end\n        if <(costume [number v]) = [2]> then\n            set [l v] to [1]\n        end\n        if <(costume [number v]) = [3]> then\n            set [r v] to [1]\n        end\n    else\n        if <(costume [number v]) = [1]> then\n            set [u v] to [0]\n        end\n        if <(costume [number v]) = [2]> then\n            set [l v] to [0]\n        end\n        if <(costume [number v]) = [3]> then\n            set [r v] to [0]\n        end\n    end\nend\n\nwhen flag clicked\nhide\n\n@Intro\n\nwhen I start as a clone\ngo to [front v] layer\ngo to x: (0) y: (0)\nshow\nset [clonecostume v] to (costume [number v])\nset [size v] to [70]\nif <(costume [number v]) = [3]> then\n    repeat until <(size) > [1200]>\n        switch costume to (costume3 v)\n        change [size v] by (((1201) - (Size)) / (5))\n        set size to (Size) %\n        switch costume to (CloneCostume)\n    end\nelse\n    if <(costume [number v]) = [4]> then\n        go to [front v] layer\n        repeat until <(size) > [1050]>\n            switch costume to (costume3 v)\n            change [size v] by (((1051) - (Size)) / (5))\n            set size to (Size) %\n            switch costume to (CloneCostume)\n        end\n    else\n        if <(costume [number v]) = [5]> then\n            repeat until <(size) > [825]>\n                switch costume to (costume3 v)\n                change [size v] by (((826) - (Size)) / (5))\n                set size to (Size) %\n                switch costume to (CloneCostume)\n            end\n        else\n            if <(costume [number v]) = [6]> then\n                go to x: (0) y: (20)\n                start sound [Water Drop v]\n                go to [back v] layer\n                set [cloney v] to [8]\n                set size to (10) %\n                repeat (20)\n                    change size by ((CloneY) / (2.5))\n                    change y by (CloneY)\n                    change [cloney v] by (-0.7)\n                end\n                set [colorchange? v] to [1]\n                delete this clone\n            else\n                if <<(costume [number v]) = [8]> or <(costume [number v]) = [9]>> then\n                    hide\n                    set [s v] to (pick random (0.1) to (1))\n                    point in direction (pick random (0) to (360))\n                    go to (random position v)\n                    wait until <(timer) > [2]>\n                    go to [back v] layer\n                    show\n                    set size to (pick random (1) to (15)) %\n                    set [ghost v] effect to (pick random (20) to (50))\n                    repeat until <(timer) > [6.1 ]>\n                        go to [front v] layer\n                        turn right (0.25) degrees\n                        move ((s) / (3)) steps\n                    end\n                    delete this clone\n                end\n            end\n        end\n    end\nend\nrepeat until <(timer) > [5]>\n    switch costume to (costume3 v)\n    change [size v] by (0.2)\n    set size to (Size) %\n    switch costume to (CloneCostume)\nend\nset [cloney v] to [10]\nrepeat until <[200] > (size)>\n    switch costume to (costume3 v)\n    change [size v] by (CloneY)\n    set size to (Size) %\n    change [cloney v] by (-2)\n    switch costume to (CloneCostume)\nend\nswitch costume to (CloneCostume)\nrepeat until <[20] > (size)>\n    change [size v] by (CloneY)\n    set size to (Size) %\n    change [cloney v] by (-1)\nend\ndelete this clone\n\ndefine Clone\nrepeat (25)\n    switch costume to (pick random (8) to (9))\n    create clone of (_myself_ v)\nend\n\nwhen I receive [message1 v]\nrepeat (50)\n    change volume by (-2)\nend\nbroadcast (play v)\n\nwhen I receive [intro v]\nset [clonecostume v] to [0]\nerase all\nreset timer\nClone\ngo to [front v] layer\nset [colorchange? v] to [0]\nswitch costume to (red v)\nset size to (1) %\ngo to x: (0) y: (180)\npoint in direction (90)\nshow\nstart sound [High Whoosh v]\nrepeat until <[20] > (y position)>\n    change size by (((75) - (size)) / (5))\n    change y by (((19) - (y position)) / (5))\nend\ngo to x: (0) y: (20)\nswitch costume to (red4 v)\ncreate clone of (_myself_ v)\nswitch costume to (red v)\nwait until <(ColorChange?) = [1]>\nstart sound [Suction Cup v]\nswitch costume to (costume2 v)\nrepeat until <[1] > (y position)>\n    change y by (((0) - (y position)) / (5))\nend\nstamp\nhide\nswitch costume to (red v)\nrepeat (3)\n    wait (0.05) seconds\n    create clone of (_myself_ v)\n    next costume\nend\nswitch costume to (costume1 v)\ngo to x: (0) y: (0)\npoint in direction (0)\nset size to (1) %\nshow\nrepeat until <(size) > [199.9]>\n    change size by (((200) - (size)) / (5))\n    turn right (((85) - (direction)) / (7)) degrees\n    go to [front v] layer\nend\nerase all\nrepeat until <(timer) > [5]>\n    change size by (0.2)\n    turn right (0.2) degrees\nend\nset [spin v] to [10]\nrepeat until <[10] > (size)>\n    change size by (Spin)\n    change [spin v] by (-1)\nend\nswitch costume to (costume2 v)\nset size to (50) %\nwait until <(timer) > [6]>\nchange y by (-1)\nbroadcast (message1 v)\nrepeat until <[-179] > (y position)>\n    change y by ((y position) / (5))\n    change size by (-1)\nend\nhide\n\nwhen I receive [intro v]\nwait (1) seconds\nset volume to (1) %\nstart sound [Foxsky - Kirby Smash v]\nrepeat (100)\n    change volume by (10)\nend\n\nwhen flag clicked\nbroadcast (intro v)\n\n@Bg\n\nwhen flag clicked\nshow\ngo to x: (0) y: (0)\n\nwhen I receive [play v]\nhide\n\nwhen I receive [win v]\nshow\n\n@Enemy\n\ndefine Set hack size to (size)\nswitch costume to (size hack v)\nset size to (size) %\nswitch costume to (costume1 v)\n\nwhen I receive [play v]\nshow\ngo to [back v] layer\npoint in direction (90)\ngo to x: (-10) y: (-600)\nSet hack size to [500]\nforever\n    go to (land 360 v)\n    point in direction ([direction v] of [land 360 v])\nend\n\n