Phil Swift's Platformer! #games

Instructions: Use the arrow keys or WSAD to move, jump, and ground pound through 30 epic levels! Collect the platypus plushies and fight an evil final boss...\n\nComment what your time and total deaths are! Let's see who goes the fastest!\n\n(If you're stuck on a level, press Z to skip it!)

@Stage\n\nwhen flag clicked\nswitch backdrop to (level1 v)\nforever\n    play sound [Slot House \(Jet Set Remix\) - Jet Set Radio Evolution v] until done\nend\n\nwhen flag clicked\nwait until <(level) = [30]>\nstop [other scripts in sprite v]\nstop all sounds\nforever\n    play sound [AIN'T NOTHIN' LIKE A FUNKY BEAT \(Beta Mix\) - Lethal League Blaze v] until done\nend\n\n@phil\n\nwhen flag clicked\nhide\nwait (0) seconds\nhide variable [deaths v]\nhide variable [time v]\nreset timer\nset size to (30) %\nset rotation style [left-right v]\nset [ghost v] effect to (0)\ngo to x: (-210) y: (-130)\nset [level v] to (backdrop [number v])\nset [deaths v] to [0]\nset [pound v] to [0]\nset [xv v] to [0]\nset [yv v] to [0]\nbroadcast (next v)\nshow\nforever\n    go to [front v] layer\n    change [yv v] by (-0.5)\n    if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n        change [xv v] by (0.6)\n        point in direction (90)\n        switch costume to (costume1 v)\n    end\n    if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n        change [xv v] by (-0.6)\n        point in direction (-90)\n        switch costume to (costume2 v)\n    end\n    set [xv v] to ((xv) * (0.9))\n    change x by (xv)\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 x by (1)\n                            change y by (-5)\n                            change x by (-1)\n                            if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n                                start sound [oop v]\n                                start sound (pick random (1) to (3))\n                                if <(xv) > [0]> then\n                                    set [xv v] to [-7]\n                                else\n                                    set [xv v] to [7]\n                                end\n                                set [yv v] to [8]\n                            else\n                                set [xv v] to [0]\n                            end\n                        end\n                    end\n                end\n            end\n        end\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        set [pound v] to [0]\n        if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n            start sound [oop v]\n            start sound (pick random (1) to (3))\n            set [yv v] to [8]\n        end\n    else\n        if <<<key (down arrow v) pressed?> or <key (s v) pressed?>> and <(pound) = [0]>> then\n            start sound [ground v]\n            set [yv v] to [-18]\n            set [pound v] to [1]\n        end\n    end\n    change y by (1)\n    if <<touching color (#238187)?> or <key (z v) pressed?>> then\n        wait until <not <key (z v) pressed?>>\n        start sound [ding v]\n        start sound (pick random (7) to (9))\n        set [yv v] to [0]\n        set [xv v] to [0]\n        go to x: (-210) y: (-130)\n        switch backdrop to (next backdrop v)\n        change [level v] by (1)\n        if <(level) = [33]> then\n            set [level v] to [1]\n            set [deaths v] to [0]\n            reset timer\n        end\n        broadcast (next v)\n    end\n    if <touching color (#006bff)?> then\n        start sound [Squish Pop v]\n        if <(pound) = [0]> then\n            set [yv v] to [12]\n        else\n            set [yv v] to [16]\n            set [pound v] to [0]\n        end\n    end\n    if <<touching color (#ff0000)?> or <(y position) < [-178]>> then\n        start sound (pick random (4) to (6))\n        repeat (10)\n            change [ghost v] effect by (10)\n            change size by (-3)\n        end\n        set [yv v] to [0]\n        set [xv v] to [0]\n        change [deaths v] by (1)\n        broadcast (next v)\n        go to x: (-210) y: (-130)\n        set size to (30) %\n        set [ghost v] effect to (0)\n    end\nend\n\n@spinner\n\nwhen I receive [next v]\ngo to x: (0) y: (0)\nclear graphic effects\nhide variable [deaths v]\nhide variable [time v]\nif <(level) = [23]> then\n    show\n    point in direction (90)\n    switch costume to (spin1 v)\n    forever\n        turn right (-3) degrees\n    end\nend\nif <(level) = [24]> then\n    show\n    point in direction (90)\n    switch costume to (spin1 v)\n    forever\n        turn right (-5) degrees\n    end\nend\nif <(level) = [25]> then\n    show\n    point in direction (90)\n    switch costume to (spin2 v)\n    forever\n        turn right (-3) degrees\n    end\nend\nif <(level) = [26]> then\n    show\n    point in direction (90)\n    switch costume to (spin2 v)\n    forever\n        go to x: (pick random (-2) to (2)) y: (pick random (16) to (18))\n        turn right (-5) degrees\n    end\nend\nif <(level) = [27]> then\n    show\n    point in direction (90)\n    switch costume to (spin3 v)\n    forever\n        go to x: (pick random (-5) to (5)) y: (pick random (-2) to (2))\n        turn right (-2) degrees\n    end\nend\nif <(level) = [28]> then\n    show\n    point in direction (90)\n    switch costume to (spin4 v)\n    forever\n        turn right (2) degrees\n    end\nend\nif <(level) = [30]> then\n    forever\n        if <<touching (phil v)?> and <(pound) = [1]>> then\n            start sound [no v]\n            stop [other scripts in sprite v]\n            glide (0.3) secs to x: (0) y: (65)\n            repeat (100)\n                turn right (30) degrees\n                change [ghost v] effect by (1)\n            end\n            change [level v] by (1)\n            next backdrop\n            set [time v] to (timer)\n            show variable [deaths v]\n            show variable [time v]\n            hide\n            stop [this script v]\n        end\n    end\nend\nif <(level) = [31]> then\n    set [time v] to (timer)\n    show variable [deaths v]\n    show variable [time v]\nend\nhide\n\nwhen flag clicked\nhide\n\nwhen I receive [next v]\nif <(level) = [30]> then\n    show\n    point in direction (90)\n    go to x: (0) y: (65)\n    switch costume to (big chungus v)\n    set [brightness v] effect to (5)\n    forever\n        repeat (10)\n            glide (pick random (1.0) to (1.5)) secs to x: (pick random (-190) to (190)) y: (65)\n            create clone of (_myself_ v)\n        end\n        wait (0.5) seconds\n        glide (1) secs to x: (x position) y: (-150)\n        glide (1.5) secs to x: (x position) y: (65)\n    end\nend\n\nwhen I start as a clone\nswitch costume to (big chungus2 v)\nset [ghost v] effect to (100)\ngo to [front v] layer\nstart sound [fire woosh v]\nrepeat (5)\n    change [ghost v] effect by (-20)\nend\nclear graphic effects\nglide (1) secs to x: (x position) y: (-170)\ndelete this clone\n\nwhen I receive [next v]\ndelete this clone\n\n@cover\n\nwhen flag clicked\nset [ghost v] effect to (100)\nswitch costume to (cover v)\ngo to x: (0) y: (0)\ngo to [front v] layer\nshow\n\n