Skylands || Multiplayer Scrolling Platformer #all #games
@Stage\n\nwhen I receive [create ground v]\nList Setup\n\nwhen I receive [connected v]\nforever\n    Property Setting\n    Property Getting\nend\n\ndefine Property Getting\nset [player v] to [0]\ndelete all of [me v]\nadd (item (Me) of [cannon states v]) to [me v]\nadd (item (Me) of [player parachutes v]) to [me v]\nadd (item (Me) of [player comments v]) to [me v]\nadd (item (Me) of [xp v]) to [me v]\nadd (item (Me) of [yp v]) to [me v]\nadd (item (Me) of [player names v]) to [me v]\ndelete all of [active players v]\ndelete all of [cannon states v]\ndelete all of [player parachutes v]\ndelete all of [player comments v]\ndelete all of [player names v]\ndelete all of [players v]\ndelete all of [xp v]\ndelete all of [yp v]\nadd (☁ Player 1) to [players v]\nadd (☁ Player 2) to [players v]\nadd (☁ Player 3) to [players v]\nadd (☁ Player 4) to [players v]\nadd (☁ Player 5) to [players v]\nrepeat (length of [players v])\n    change [player v] by (1)\n    if <not <(Player) = (Me)>> then\n        add (letter (1) of (item (Player) of [players v])) to [cannon states v]\n        add (letter (2) of (item (Player) of [players v])) to [player parachutes v]\n        add (join (letter (3) of (item (Player) of [players v])) (letter (4) of (item (Player) of [players v]))) to [player comments v]\n        add ((join (letter (5) of (item (Player) of [players v])) (join (join (letter (6) of (item (Player) of [players v])) (letter (7) of (item (Player) of [players v]))) (join (letter (8) of (item (Player) of [players v])) (letter (9) of (item (Player) of [players v]))))) - (50000)) to [xp v]\n        add ((join (letter (10) of (item (Player) of [players v])) (join (join (letter (11) of (item (Player) of [players v])) (letter (12) of (item (Player) of [players v]))) (join (letter (13) of (item (Player) of [players v])) (letter (14) of (item (Player) of [players v]))))) - (50000)) to [yp v]\n        set [letter # v] to [14]\n        set [string v] to []\n        repeat ((length of (item (Player) of [players v])) - (14))\n            change [letter # v] by (1)\n            set [string v] to (join (String) (letter (Letter #) of (item (Player) of [players v])))\n        end\n        Decode (String)\n        add (String) to [player names v]\n    else\n        add (item (1) of [me v]) to [cannon states v]\n        add (item (2) of [me v]) to [player parachutes v]\n        add (item (3) of [me v]) to [player comments v]\n        add (item (4) of [me v]) to [xp v]\n        add (item (5) of [me v]) to [yp v]\n        add (username) to [player names v]\n    end\n    if <not <(item (Player) of [players v]) = (available)>> then\n        add (item (Player) of [player names v]) to [active players v]\n    end\nend\n\ndefine Encode (text)\nset [string v] to []\nset [letter # v] to [0]\nrepeat (length of (text))\n    change [letter # v] by (1)\n    if <[decoder v] contains (letter (Letter #) of (text))?> then\n        set [string v] to (join (String) (item (item # of (letter (Letter #) of (text)) in [decoder v]) of [encoder v]))\n    else\n        set [string v] to (join (String) [37])\n    end\nend\n\ndefine Decode (values)\nset [string v] to []\nset [letter # v] to [0]\nrepeat ((length of (values)) / (2))\n    change [letter # v] by (2)\n    set [string v] to (join (String) (item (item # of (join (letter ((Letter #) - (1)) of (values)) (letter (Letter #) of (values))) in [encoder v]) of [decoder v]))\nend\n\ndefine Property Setting\nif <(username) = [Hacker-Cat2]> then\n    if <key (p v) pressed?> then\n        if <key (1 v) pressed?> then\n            set [☁ player 1 v] to [04230819]\n        end\n        if <key (2 v) pressed?> then\n            set [☁ player 2 v] to [04230819]\n        end\n        if <key (3 v) pressed?> then\n            set [☁ player 3 v] to [04230819]\n        end\n        if <key (4 v) pressed?> then\n            set [☁ player 4 v] to [04230819]\n        end\n        if <key (5 v) pressed?> then\n            set [☁ player 5 v] to [04230819]\n        end\n    end\nend\nEncode (username)\nset [string v] to (join (join (join (item (Me) of [cannon states v]) (item (Me) of [player parachutes v])) (join (item (Me) of [player comments v]) (item (Me) of [xp v]))) (join (item (Me) of [yp v]) (String)))\nif <(Me) = [1]> then\n    if <(☁ Player 1) = [04230819]> then\n        broadcast (Removed v) and wait\n        set [☁ player 1 v] to (available)\n        stop [all v]\n    end\n    set [☁ player 1 v] to (String)\nelse\n    if <(Me) = [2]> then\n        if <(☁ Player 2) = [04230819]> then\n            broadcast (Removed v) and wait\n            set [☁ player 2 v] to (available)\n            stop [all v]\n        end\n        set [☁ player 2 v] to (String)\n    else\n        if <(Me) = [3]> then\n            if <(☁ Player 3) = [04230819]> then\n                broadcast (Removed v) and wait\n                set [☁ player 3 v] to (available)\n                stop [all v]\n            end\n            set [☁ player 3 v] to (String)\n        else\n            if <(Me) = [4]> then\n                if <(☁ Player 4) = [04230819]> then\n                    broadcast (Removed v) and wait\n                    set [☁ player 4 v] to (available)\n                    stop [all v]\n                end\n                set [☁ player 4 v] to (String)\n            else\n                if <(Me) = [5]> then\n                    if <(☁ Player 5) = [04230819]> then\n                        broadcast (Removed v) and wait\n                        set [☁ player 5 v] to (available)\n                        stop [all v]\n                    end\n                    set [☁ player 5 v] to (String)\n                end\n            end\n        end\n    end\nend\n\ndefine List Setup\ndelete all of [comments v]\ndelete all of [decoder v]\ndelete all of [encoder v]\nadd [Hello!] to [comments v]\nadd [Be careful!] to [comments v]\nadd [Lol] to [comments v]\nadd [This way!] to [comments v]\nadd [Over here!] to [comments v]\nadd [Where do I go?] to [comments v]\nadd [Oops!] to [comments v]\nadd [Help!] to [comments v]\nadd [Aagghh!!!] to [comments v]\nadd [Bye!] to [comments v]\nset [letter # v] to [0]\nrepeat (length of [abcdefghijklmnopqrstuvwxyz1234567890`-=\[\]\;',./~!@#$%^&*\(\)_+{}|:"<>? ])\n    change [letter # v] by (1)\n    add (letter (Letter #) of [abcdefghijklmnopqrstuvwxyz1234567890`-=\[\]\;',./~!@#$%^&*\(\)_+{}|:"<>? ]) to [decoder v]\n    if <((Letter #) - (1)) < [10]> then\n        add (join [0] ((Letter #) - (1))) to [encoder v]\n    else\n        add ((Letter #) - (1)) to [encoder v]\n    end\nend\n\n@Player\n\nwhen flag clicked\nhide\n\ndefine Platforming\nif <(Movable?) = [1]> then\n    if <<([y position v] of [shop box v]) = [-282]> and <([size v] of [shop button main v]) = [50]>> then\n        if <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <((mouse x) - (50)) > (x position)>>> then\n            set [dir x v] to [1]\n        else\n            if <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <((mouse x) + (50)) < (x position)>>> then\n                set [dir x v] to [-1]\n            else\n                set [dir x v] to [0]\n            end\n        end\n        if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <((mouse y) - (50)) > (y position)>>> then\n            set [dir y v] to [1]\n        else\n            if <<<key (down arrow v) pressed?> or <key (s v) pressed?>> or <<mouse down?> and <((mouse y) + (50)) < (y position)>>> then\n                set [dir y v] to [-1]\n            else\n                set [dir y v] to [0]\n            end\n        end\n    else\n        set [dir x v] to [0]\n        set [dir y v] to [0]\n    end\n    if <<(Parachute) > [0]> and <(YV) < [-30]>> then\n        set [parachute v] to [2]\n        set [yv v] to [-10]\n        switch costume to (player parachute v)\n    end\n    if <(Dir X) = [1]> then\n        change [xv v] by (1.2)\n    end\n    if <(Dir X) = [-1]> then\n        change [xv v] by (-1.2)\n    end\n    set [xv v] to ((XV) * (0.85))\n    change x by (XV)\n    if <touching (ground v)?> then\n        change y by (10)\n        if <touching (ground v)?> then\n            change y by (-20)\n            if <touching (ground v)?> then\n                change y by (10)\n            else\n                change y by (9)\n                repeat until <not <touching (ground v)?>>\n                    change y by (-1)\n                end\n            end\n        else\n            change y by (-9)\n            repeat until <not <touching (ground v)?>>\n                change y by (1)\n            end\n        end\n    end\n    if <<touching (ground v)?> or <((X) - (x position)) > [70]>> then\n        change x by ((XV) * (-1))\n        set [xv v] to [0]\n        if <(X) > [70]> then\n            set [x v] to [70]\n        end\n        if <touching (ground v)?> then\n            change x by (10)\n            if <touching (ground v)?> then\n                change x by (-20)\n                if <not <touching (ground v)?>> then\n                    change x by (9)\n                    repeat until <not <touching (ground v)?>>\n                        change x by (-1)\n                    end\n                end\n            else\n                change x by (-9)\n                repeat until <not <touching (ground v)?>>\n                    change x by (1)\n                end\n            end\n        end\n    end\n    if <touching (ground v)?> then\n        change x by (10)\n        change y by (10)\n        if <touching (ground v)?> then\n            change x by (-20)\n            change y by (-20)\n            if <not <touching (ground v)?>> then\n                change x by (9)\n                change y by (9)\n                repeat until <not <touching (ground v)?>>\n                    change x by (-1)\n                    change y by (-1)\n                end\n            else\n                change x by (-10)\n                change y by (-10)\n                if <touching (ground v)?> then\n                    change x by (20)\n                    change y by (20)\n                    if <not <touching (ground v)?>> then\n                        change x by (-9)\n                        change y by (-9)\n                        repeat until <not <touching (ground v)?>>\n                            change x by (1)\n                            change y by (1)\n                        end\n                    else\n                        change x by (-10)\n                        change y by (10)\n                        if <touching (ground v)?> then\n                            change x by (20)\n                            change y by (-20)\n                            if <not <touching (ground v)?>> then\n                                change x by (-9)\n                                change y by (9)\n                                repeat until <not <touching (ground v)?>>\n                                    change x by (1)\n                                    change y by (-1)\n                                end\n                            else\n                                change x by (10)\n                                change y by (-10)\n                                if <touching (ground v)?> then\n                                    change x by (-20)\n                                    change y by (20)\n                                    if <not <touching (ground v)?>> then\n                                        change x by (9)\n                                        change y by (-9)\n                                        repeat until <not <touching (ground v)?>>\n                                            change x by (-1)\n                                            change y by (1)\n                                        end\n                                    end\n                                else\n                                    change x by (-9)\n                                    change y by (9)\n                                    repeat until <not <touching (ground v)?>>\n                                        change x by (1)\n                                        change y by (-1)\n                                    end\n                                end\n                            end\n                        else\n                            change x by (9)\n                            change y by (-9)\n                            repeat until <not <touching (ground v)?>>\n                                change x by (-1)\n                                change y by (1)\n                            end\n                        end\n                    end\n                else\n                    change x by (9)\n                    change y by (9)\n                    repeat until <not <touching (ground v)?>>\n                        change x by (-1)\n                        change y by (-1)\n                    end\n                end\n            end\n        else\n            change x by (-9)\n            change y by (-9)\n            repeat until <not <touching (ground v)?>>\n                change x by (1)\n                change y by (1)\n            end\n        end\n    end\n    if <<not <touching (clouds v)?>> or <(costume [number v]) = [2]>> then\n        if <not <(costume [number v]) = [2]>> then\n            change [yv v] by (-1.5)\n        end\n        change y by (YV)\n        if <<touching (ground v)?> or <<touching (bounce v)?> or <touching (clouds v)?>>> then\n            switch costume to (player v)\n        end\n        if <<(Parachute) = [2]> and <touching (bounce v)?>> then\n            set [parachute v] to [0]\n        end\n        if <touching (ground v)?> then\n            if <(YV) < [-35]> then\n                change [lives v] by (-1)\n                start sound [Drum Bass3 v]\n            end\n            change y by ((YV) * (-1))\n            set [yv v] to [0]\n        end\n        change y by (-30)\n        if <<touching (ground v)?> and <(Parachute) = [2]>> then\n            set [parachute v] to [0]\n        end\n        change y by (28)\n        if <<<<touching (ground v)?> or <touching (bounce v)?>> and <(Dir Y) = [1]>> and <not <(Parachute) = [2]>>> then\n            set [yv v] to [20]\n        end\n        change y by (1)\n        if <touching (ground v)?> then\n            change y by (1)\n            if <touching (ground v)?> then\n                change y by (1)\n                if <touching (ground v)?> then\n                    change y by (1)\n                    if <touching (ground v)?> then\n                        change y by (1)\n                        if <touching (ground v)?> then\n                            change y by (1)\n                        end\n                    end\n                end\n            end\n        end\n    else\n        if <(Dir Y) = [1]> then\n            change [yv v] by (1.2)\n        end\n        if <(Dir Y) = [-1]> then\n            change [yv v] by (-1.2)\n        end\n        set [yv v] to ((YV) * (0.85))\n        change y by (YV)\n    end\n    change [x v] by ((x position) / (-5))\n    change [y v] by ((y position) / (-5))\n    change x by ((x position) / (-5))\n    change y by ((y position) / (-5))\n    if <(Y) > [500]> then\n        set [lives v] to [0]\n    end\n    replace item (Me) of [player parachutes v] with ((costume [number v]) - (1))\n    replace item (Me) of [xp v] with ((round ((X) - (x position))) + (50000))\n    replace item (Me) of [yp v] with ((round ((Y) - (y position))) + (50000))\nend\n\nwhen I receive [start v]\nset [movable? v] to [1]\nset [available v] to [10004000040000020019]\nset [me v] to [0]\nset [online v] to [True]\nswitch costume to (player v)\ngo to [front v] layer\nshow\nsay [Connecting...]\nset [☁ player 1 v] to (available)\nset [☁ player 2 v] to (available)\nset [☁ player 3 v] to (available)\nset [☁ player 4 v] to (available)\nset [☁ player 5 v] to (available)\nwait (1) seconds\nreset timer\nif <(username) = []> then\n    set [online v] to [False]\n    say [Sorry, you aren't signed in, so you'll have to play in offline mode.] for (2) seconds\nelse\n    repeat until <<not <(Me) = [0]>> or <(Online) = [False]>>\n        if <(timer) < [1]> then\n            say [Connecting...]\n        else\n            if <(timer) < [6]> then\n                say [There may be too many people playing.]\n            else\n                ask [Do you want to play in offline mode instead? \(yes/no\)] and wait\n                if <(answer) = [yes]> then\n                    set [online v] to [False]\n                else\n                    stop [all v]\n                end\n            end\n        end\n        if <(☁ Player 1) = (available)> then\n            set [me v] to [1]\n        else\n            if <(☁ Player 2) = (available)> then\n                set [me v] to [2]\n            else\n                if <(☁ Player 3) = (available)> then\n                    set [me v] to [3]\n                else\n                    if <(☁ Player 4) = (available)> then\n                        set [me v] to [4]\n                    else\n                        if <(☁ Player 5) = (available)> then\n                            set [me v] to [5]\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\nif <(Online) = [True]> then\n    broadcast (Connected v)\n    say [Connected!] for (0.2) seconds\nelse\n    broadcast (Not Connected v)\n    say [Continuing in offline mode...] for (0.2) seconds\nend\nreset timer\nset [timer v] to [0]\nforever\n    Platforming\n    say (item (item (Me) of [player comments v]) of [comments v])\n    if <<touching (spike v)?> and <((timer) - (Timer)) > [3]>> then\n        if <(Stop Spike) = [0]> then\n            change [lives v] by (-1)\n            set [timer v] to (timer)\n            start sound [Drum Bass3 v]\n        else\n            set [stop spike v] to [2]\n        end\n    end\n    if <<(Stop Spike) = [2]> and <not <touching (spike v)?>>> then\n        set [stop spike v] to [0]\n    end\n    broadcast (Move v)\nend\n\nwhen I receive [reset v]\nswitch costume to (player v)\ngo to x: (0) y: (0)\n\n@Player 2\n\nwhen I receive [connected v]\nrepeat (length of [players v])\n    change [player # v] by (1)\n    if <not <(Player #) = (Me)>> then\n        create clone of (_myself_ v)\n    end\nend\n\nwhen flag clicked\nhide\nset [player # v] to [0]\n\nwhen I receive [move v]\nif <<(Player #) > [0]> and <(Player #) < [6]>> then\n    go to x: ((X) - (item (Player #) of [xp v])) y: ((Y) - (item (Player #) of [yp v]))\n    if <<<(x position) < [240]> and <(x position) > [-240]>> and <<(y position) < [180]> and <(y position) > [-180]>>> then\n        point in direction (90)\n        show\n        switch costume to ((item (Player #) of [player parachutes v]) + (1))\n    else\n        if <(item (Player #) of [xp v]) > [-5000]> then\n            show\n            switch costume to (arrow v)\n            if <(X) > (item (Player #) of [xp v])> then\n                point in direction ((90) - ([atan v] of (((item (Player #) of [yp v]) - (Y)) / ((item (Player #) of [xp v]) - (X))) ))\n            else\n                point in direction ((-90) - ([atan v] of (((item (Player #) of [yp v]) - (Y)) / ((item (Player #) of [xp v]) - (X))) ))\n            end\n            go to x: (0) y: (0)\n            move (160) steps\n            turn left (30) degrees\n        else\n            hide\n        end\n    end\n    if <(item (Player #) of [player comments v]) = [00]> then\n        say (item (Player #) of [player names v])\n    else\n        say (item (item (Player #) of [player comments v]) of [comments v])\n    end\nend\n\n@Ground\n\nwhen flag clicked\nhide\n\ndefine New Ground\ndelete all of [ground veiw limits v]\nset [gx v] to ((125) + (X))\nset [gy v] to ((-100) + (Y))\nadd [225] to [ground veiw limits v]\ncreate clone of (_myself_ v)\nnext costume\nchange [gx v] by (416)\nchange [gy v] by (5)\nadd [230] to [ground veiw limits v]\ncreate clone of (_myself_ v)\nnext costume\nchange [gx v] by (416)\nchange [gy v] by (150)\nadd [315] to [ground veiw limits v]\ncreate clone of (_myself_ v)\nnext costume\nchange [gx v] by (416)\nchange [gy v] by (70)\nadd [240] to [ground veiw limits v]\ncreate clone of (_myself_ v)\nnext costume\nchange [gx v] by (416)\nchange [gy v] by (150)\nadd [335] to [ground veiw limits v]\ncreate clone of (_myself_ v)\nnext costume\nchange [gx v] by (40)\nchange [gy v] by (310)\nadd [335] to [ground veiw limits v]\ncreate clone of (_myself_ v)\nnext costume\nchange [gx v] by (-500)\nchange [gy v] by (500)\nadd [250] to [ground veiw limits v]\ncreate clone of (_myself_ v)\nnext costume\nchange [gx v] by (350)\nchange [gy v] by (263)\nadd [345] to [ground veiw limits v]\ncreate clone of (_myself_ v)\nnext costume\nchange [gx v] by (416)\nchange [gy v] by (150)\nadd [235] to [ground veiw limits v]\ncreate clone of (_myself_ v)\nnext costume\nchange [gx v] by (376)\nchange [gy v] by (128)\nadd [405] to [ground veiw limits v]\ncreate clone of (_myself_ v)\nnext costume\nchange [gx v] by (-1500)\nchange [gy v] by (-1200)\nadd [285] to [ground veiw limits v]\n\nwhen I receive [move v]\ngo to x: ((X) + (GX)) y: ((Y) + (GY))\nif <<<(x position) < [430]> and <(x position) > [-430]>> and <<(y position) < (item (costume [number v]) of [ground veiw limits v])> and <(y position) > ((0) - (item (costume [number v]) of [ground veiw limits v]))>>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [create ground v]\nswitch costume to (ground 1 v)\nset size to (200) %\nNew Ground\n\nwhen I receive [reset v]\nset [x v] to [0]\nset [y v] to [0]\nset [xv v] to [0]\nset [yv v] to [0]\n\n@Bounce\n\nwhen I receive [move v]\ngo to x: ((X) + (BX)) y: ((Y) + (BY))\nif <<touching (player v)?> and <(YV) < [0]>> then\n    set [yv v] to ([abs v] of ((YV) * (2)) )\n    if <(YV) > [30]> then\n        set [yv v] to [30]\n    end\n    wait until <not <touching (player v)?>>\nend\nif <<<(x position) < [250]> and <(x position) > [-250]>> and <<(y position) < [180]> and <(y position) > [-180]>>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [create ground v]\nset [bx v] to ((800) + (X))\nset [by v] to ((20) + (Y))\ncreate clone of (_myself_ v)\nchange [bx v] by (120)\nchange [by v] by (650)\ncreate clone of (_myself_ v)\nchange [bx v] by (-150)\nchange [by v] by (250)\ncreate clone of (_myself_ v)\nchange [bx v] by (1646)\nchange [by v] by (523)\ncreate clone of (_myself_ v)\nchange [bx v] by (110)\nchange [by v] by (0)\n\nwhen flag clicked\nhide\n\n@Clouds\n\nwhen I receive [move v]\ngo to x: ((X) + (CLX)) y: ((Y) + (CLY))\nif <<<(x position) < (item (((2) * (costume [number v])) - (1)) of [cloud veiw limits v])> and <(x position) > ((0) - (item (((2) * (costume [number v])) - (1)) of [cloud veiw limits v]))>> and <<(y position) < (item ((2) * (costume [number v])) of [cloud veiw limits v])> and <(y position) > ((0) - (item ((2) * (costume [number v])) of [cloud veiw limits v]))>>> then\n    show\nelse\n    hide\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [create ground v]\nswitch costume to (cloud 2 v)\nset [ghost v] effect to (20)\ndelete all of [cloud veiw limits v]\nadd [275] to [cloud veiw limits v]\nadd [195] to [cloud veiw limits v]\nadd [285] to [cloud veiw limits v]\nadd [195] to [cloud veiw limits v]\nadd [357] to [cloud veiw limits v]\nadd [215] to [cloud veiw limits v]\nset [clx v] to ((1600) + (X))\nset [cly v] to ((800) + (Y))\ncreate clone of (_myself_ v)\nswitch costume to (rainbow v)\nchange [clx v] by (-240)\nchange [cly v] by (50)\ncreate clone of (_myself_ v)\nswitch costume to (cloud 1 v)\nchange [clx v] by (-220)\nchange [cly v] by (-60)\ncreate clone of (_myself_ v)\nswitch costume to (cloud 2 v)\nchange [clx v] by (-70)\nchange [cly v] by (-180)\ncreate clone of (_myself_ v)\nswitch costume to (cloud 1 v)\nchange [clx v] by (-150)\nchange [cly v] by (30)\ncreate clone of (_myself_ v)\nswitch costume to (cloud 2 v)\nchange [clx v] by (-150)\nchange [cly v] by (250)\ncreate clone of (_myself_ v)\nswitch costume to (rainbow v)\nchange [clx v] by (200)\nchange [cly v] by (250)\n\nwhen I receive [start v]\nwait (0.5) seconds\ngo to [front v] layer\n\n@Startup\n\nwhen flag clicked\nif <not <(username) = [Hacker-Cat2]>> then\n    erase all\n    go to x: (0) y: (0)\n    clear graphic effects\n    show\n    switch costume to (fade v)\n    set size to (100) %\n    stamp\n    switch costume to (error window v)\n    set size to (60) %\n    repeat (30)\n        set [color v] effect to (pick random (1) to (100))\n        set [brightness v] effect to (pick random (-20) to (20))\n        go to (random position v)\n        set [ghost v] effect to (90)\n        repeat (4)\n            change [ghost v] effect by (-10)\n        end\n        set [ghost v] effect to (0)\n        stamp\n    end\n    clear graphic effects\n    set size to (110) %\n    switch costume to (giant cat v)\n    go to x: (-310) y: (0)\n    repeat (21)\n        change x by (5)\n    end\n    stamp\n    wait (1) seconds\n    go to x: (0) y: (0)\n    set size to (0) %\n    switch costume to (name v)\n    set [ghost v] effect to (100)\n    set [brightness v] effect to (100)\n    repeat (10)\n        change [ghost v] effect by (-10)\n        change [brightness v] effect by (-10)\n        change size by (10)\n    end\n    wait (1) seconds\n    repeat (10)\n        change [ghost v] effect by (10)\n        change [brightness v] effect by (-10)\n        change [pixelate v] effect by (10)\n        change size by (6)\n    end\n    switch costume to (fade v)\n    clear graphic effects\n    set size to (100) %\n    set [ghost v] effect to (90)\n    repeat (50)\n        stamp\n    end\nend\nbroadcast (Reset v) and wait\nbroadcast (Create Ground v) and wait\nbroadcast (Start v)\nclear graphic effects\nhide\nerase all\n\n@Spike\n\nwhen flag clicked\nset size to (100) %\nhide\n\nwhen I receive [create ground v]\nset [spx v] to [323]\nset [spy v] to [-97]\nrepeat (5)\n    change [spx v] by (30)\n    create clone of (_myself_ v)\nend\nchange [spx v] by (1268)\nchange [spy v] by (395)\nrepeat (3)\n    change [spx v] by (30)\n    create clone of (_myself_ v)\nend\nchange [spx v] by (-680)\nchange [spy v] by (808)\nrepeat (3)\n    change [spx v] by (30)\n    create clone of (_myself_ v)\nend\nchange [spx v] by (210)\nchange [spy v] by (85)\nrepeat (5)\n    change [spx v] by (70)\n    change [spy v] by (60)\n    create clone of (_myself_ v)\nend\nchange [spx v] by (120)\nchange [spy v] by (60)\nrepeat (3)\n    change [spx v] by (30)\n    create clone of (_myself_ v)\nend\nchange [spx v] by (30)\n\nwhen I receive [move v]\ngo to [back v] layer\ngo to x: ((X) + (SPX)) y: ((Y) + (SPY))\nif <<<(x position) < [240]> and <(x position) > [-240]>> and <<(y position) < [180]> and <(y position) > [-180]>>> then\n    show\nelse\n    hide\nend\n\n@Star\n\nwhen I receive [move v]\nLives\n\ndefine Lives\nset pen color to (#38d2eb)\nset pen size to (200)\ngo to x: (-240) y: (180)\npen down\nchange x by (200)\npen up\ngo to x: (-215) y: (155)\nif <(Lives) = [0]> then\n    broadcast (Reset v) and wait\nend\nrepeat (Lives)\n    stamp\n    change x by (size)\nend\n\nwhen I receive [reset v]\nset size to (40) %\nset [lives v] to [3]\nhide\n\n@Coin\n\nwhen I receive [move v]\nMove\n\nwhen I receive [create coins v]\nset [value v] to [3]\nif <(Collectable) = [False]> then\n    set rotation style [don't rotate v]\n    set [collectable v] to [True]\n    set [collected v] to [False]\n    set [count v] to [0]\n    set [coins v] to [0]\n    set [cox v] to [860]\n    set [coy v] to [455]\n    create clone of (_myself_ v)\n    change [cox v] by (60)\n    change [coy v] by (0)\n    create clone of (_myself_ v)\n    change [cox v] by (-60)\n    change [coy v] by (-60)\n    create clone of (_myself_ v)\n    change [cox v] by (60)\n    change [coy v] by (0)\n    create clone of (_myself_ v)\n    set [cox v] to [2600]\n    set [coy v] to [1500]\n    set [value v] to [30]\n    set size to (100) %\n    create clone of (_myself_ v)\n    set size to (40) %\n    set [collectable v] to [False]\nend\nset [value v] to [1]\n\nwhen flag clicked\nset [max coins v] to [30]\nset [collectable v] to [False]\nhide\ndelete this clone\n\ndefine Move\nif <(Collected) = [False]> then\n    if <(Collectable) = [True]> then\n        if <<touching (player v)?> and <(Coins) < (Max Coins)>> then\n            start sound [Collect v]\n            set [collected v] to [True]\n            change [coins v] by (Value)\n            if <(size) = [100]> then\n                set [coins v] to (Max Coins)\n                set [parachute v] to [1]\n                set [stop spike v] to [1]\n                set [sheilds v] to [3]\n                set [lives v] to [5]\n                broadcast (Stop? v) and wait\n            end\n        else\n            go to x: ((X) + (COX)) y: ((Y) + (COY))\n            if <<<(x position) < [240]> and <(x position) > [-240]>> and <<(y position) < [180]> and <(y position) > [-180]>>> then\n                show\n            else\n                hide\n            end\n        end\n        if <(Coins) > (Max Coins)> then\n            set [coins v] to (Max Coins)\n        end\n    end\nelse\n    if <(Count) < [10]> then\n        point towards (coin count v)\n        if <(size) > [40]> then\n            change size by (-6)\n        end\n        move ((distance to [coin count v]) / (5)) steps\n    else\n        delete this clone\n    end\n    change [count v] by (1)\nend\n\nwhen I receive [cannon coin v]\nif <(Coins) < (Max Coins)> then\n    Cannon Coin (COX) (COY)\nend\n\ndefine Cannon Coin (cox) (coy)\nif <(Collectable) = [False]> then\n    set [cox v] to ((0) - (X))\n    set [coy v] to (([cay v] of [cannon ball v]) + (50))\n    set [collectable v] to [True]\n    create clone of (_myself_ v)\n    set [cox v] to (cox)\n    set [coy v] to (coy)\n    set [collectable v] to [False]\nend\n\nwhen I receive [reset v]\nset [coins v] to [0]\nif <(Collectable) = [False]> then\n    broadcast (Create Coins v) and wait\nelse\n    delete this clone\nend\n\n@Coin Count\n\nwhen flag clicked\nhide\n\nwhen I receive [move v]\nNumbers\n\ndefine Numbers\nset pen color to (#38d2eb)\nset pen size to (200)\npen down\npen up\ngo to x: (215) y: (155)\nset size to (40) %\nswitch costume to (coin v)\nstamp\nset size to (20) %\ngo to x: ((215) - ((((50) * ((size) / (100))) * ((length of (Coins)) - (1))) / (2))) y: (155)\nset [ncount v] to [0]\nrepeat (length of (Coins))\n    change [ncount v] by (1)\n    switch costume to (letter (NCount) of (Coins))\n    stamp\n    change x by ((50) * ((size) / (100)))\nend\n\n@Cannon Ball\n\nwhen flag clicked\nhide\n\nwhen I receive [create ground v]\nset [cax v] to [1400]\nset [cay v] to [135]\ngo to [back v] layer\n\nwhen I receive [start v]\nforever\n    Cannon\nend\n\nwhen I receive [not connected v]\ndelete all of [cannon states v]\nrepeat (5)\n    add [1] to [cannon states v]\nend\nforever\n    Cannon\nend\n\ndefine Cannon\nif <(CAX) > [1200]> then\n    if <(Online) = [True]> then\n        set [timer v] to (timer)\n        replace item (Me) of [cannon states v] with [0]\n        if <<(CAX) > [1250]> and <(CAX) < [1300]>> then\n            Player Checking\n        end\n    else\n        replace item (1) of [cannon states v] with [0]\n    end\n    change [cax v] by (-20)\n    if <<<(x position) < [240]> and <(x position) > [-240]>> and <<(y position) < [180]> and <(y position) > [-180]>>> then\n        if <(Hit) = [0]> then\n            show\n        end\n    else\n        hide\n    end\nelse\n    if <(Online) = [True]> then\n        replace item (Me) of [cannon states v] with [1]\n    else\n        replace item (1) of [cannon states v] with [1]\n    end\n    hide\n    if <((timer) - (Timer)) > [2]> then\n        set [☁ player 1 v] to (available)\n        set [☁ player 2 v] to (available)\n        set [☁ player 3 v] to (available)\n        set [☁ player 4 v] to (available)\n        set [☁ player 5 v] to (available)\n    end\n    if <<(item (1) of [cannon states v]) = [1]> and <<<(item (2) of [cannon states v]) = [1]> and <(item (3) of [cannon states v]) = [1]>> and <<(item (4) of [cannon states v]) = [1]> and <(item (5) of [cannon states v]) = [1]>>>> then\n        set [timer v] to (timer)\n        set [current player v] to [0]\n        set [cax v] to [1400]\n        set [point v] to [0]\n        set [hit v] to [0]\n        wait (1.5) seconds\n        start sound [Drum Bass2 v]\n    end\nend\ngo to x: ((X) + (CAX)) y: ((Y) + (CAY))\nif <<<(CAX) < [1350]> and <(CAX) > [1230]>> and <<<(x position) < ([x position v] of [player v])> and <((x position) + (21)) > ([x position v] of [player v])>> and <(Y) > [-350]>>> then\n    if <(Hit) = [0]> then\n        if <(Point) = [0]> then\n            broadcast (Cannon Coin v) and wait\n        end\n        set [point v] to [1]\n    end\nend\nif <<touching (player v)?> and <(Hit) = [0]>> then\n    start sound [Drum Bass3 v]\n    if <(Sheilds) > [0]> then\n        change [sheilds v] by (-1)\n        change [xv v] by (-7.5)\n    else\n        change [lives v] by (-1)\n        change [xv v] by (-15)\n    end\n    set [hit v] to [1]\n    hide\nend\nif <(CAX) = [1200]> then\n    set [cax v] to [1199]\n    if <(Hit) = [0]> then\n        start sound [Drum Bass3 v]\n    end\nend\nif <<<touching (player 2 v)?> and <not <(costume [number v]) = [3]>>> and <(Hit) = [0]>> then\n    start sound [Drum Bass3 v]\n    set [hit v] to [1]\n    hide\nend\n\nwhen I receive [start v]\nforever\n    set volume to ((100) - (([sqrt v] of ((((CAX) + (X)) * ((CAX) + (X))) + (((CAY) + (Y)) * ((CAY) + (Y)))) ) / (25))) %\n    set [pan left/right v] effect to (((CAX) + (X)) / (25))\nend\n\ndefine Player Checking\nset [current player v] to [0]\nrepeat (length of [players v])\n    change [current player v] by (1)\n    if <<(item (Current Player) of [cannon states v]) = [1]> and <not <(item (Current Player) of [players v]) = (available)>>> then\n        if <(Current Player) = [1]> then\n            set [☁ player 1 v] to (available)\n        else\n            if <(Current Player) = [2]> then\n                set [☁ player 2 v] to (available)\n            else\n                if <(Current Player) = [3]> then\n                    set [☁ player 3 v] to (available)\n                else\n                    if <(Current Player) = [4]> then\n                        set [☁ player 4 v] to (available)\n                    else\n                        if <(Current Player) = [5]> then\n                            set [☁ player 5 v] to (available)\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\n@Comment Box\n\nwhen flag clicked\nhide\n\nwhen I receive [connected v]\nhide\ngo to x: (-330) y: (0)\nset [open v] to [0]\nset [timer v] to [500]\nforever\n    if <key (c v) pressed?> then\n        set [open v] to (((-1) * (Open)) + (1))\n        if <(Open) = [1]> then\n            go to [front v] layer\n            set [ghost v] effect to (100)\n            show\n            repeat (10)\n                change x by (((-160) - (x position)) / (3))\n                change [ghost v] effect by (-8)\n            end\n            set x to (-160)\n        else\n            repeat (10)\n                change x by (((-330) - (x position)) / (3))\n                change [ghost v] effect by (8)\n            end\n            set x to (-330)\n            hide\n        end\n    end\n    if <(Open) = [1]> then\n        if <key (0 v) pressed?> then\n            replace item (Me) of [player comments v] with [01]\n            set [timer v] to [0]\n        end\n        if <key (1 v) pressed?> then\n            replace item (Me) of [player comments v] with [02]\n            set [timer v] to [0]\n        end\n        if <key (2 v) pressed?> then\n            replace item (Me) of [player comments v] with [03]\n            set [timer v] to [0]\n        end\n        if <key (3 v) pressed?> then\n            replace item (Me) of [player comments v] with [04]\n            set [timer v] to [0]\n        end\n        if <key (4 v) pressed?> then\n            replace item (Me) of [player comments v] with [05]\n            set [timer v] to [0]\n        end\n        if <key (5 v) pressed?> then\n            replace item (Me) of [player comments v] with [06]\n            set [timer v] to [0]\n        end\n        if <key (6 v) pressed?> then\n            replace item (Me) of [player comments v] with [07]\n            set [timer v] to [0]\n        end\n        if <key (7 v) pressed?> then\n            replace item (Me) of [player comments v] with [08]\n            set [timer v] to [0]\n        end\n        if <key (8 v) pressed?> then\n            replace item (Me) of [player comments v] with [09]\n            set [timer v] to [0]\n        end\n        if <key (9 v) pressed?> then\n            replace item (Me) of [player comments v] with [10]\n            set [timer v] to [0]\n        end\n    end\n    if <(Timer) > [200]> then\n        replace item (Me) of [player comments v] with [00]\n    end\n    change [timer v] by (1)\nend\n\n@Thumbnail\n\nwhen flag clicked\nswitch costume to (thumbnail v)\ngo to x: (0) y: (0)\nshow\nset [ghost v] effect to (100)\n\nwhen I receive [start v]\nswitch costume to (thumbnail v)\nforever\n    go to [front v] layer\n    set [ghost v] effect to (100)\n    if <((timer) - (Timer)) > [120]> then\n        switch costume to (timed out v)\n        stop [all v]\n    end\nend\n\nwhen I receive [start v]\nset volume to (40) %\nforever\n    play sound [Dance Energetic v] until done\nend\n\nwhen I receive [removed v]\nswitch costume to (removed v)\n\nwhen I receive [start v]\nforever\n    set [px v] to (X)\n    set [py v] to (Y)\n    wait until <not <<(PX) = (X)> or <(PY) = (Y)>>>\n    set [timer v] to (timer)\nend\n\n@Shop Box\n\nwhen flag clicked\ngo to x: (0) y: (-282)\nset [open v] to [0]\nhide\n\nwhen I receive [start v]\nforever\n    if <<key (space v) pressed?> or <<<mouse down?> and <not <touching (mouse-pointer v)?>>> and <(Open) = [1]>>> then\n        set [open v] to (((-1) * (Open)) + (1))\n        if <(Open) = [1]> then\n            broadcast (SBMO v) and wait\n            broadcast (Open Shop v) and wait\n        else\n            broadcast (BHide v) and wait\n            broadcast (Close Shop v) and wait\n            broadcast (SBMC v) and wait\n        end\n    end\nend\n\nwhen I receive [open shop v]\nset [open v] to [1]\ngo to [front v] layer\nset [ghost v] effect to (100)\nshow\nrepeat (10)\n    change [ghost v] effect by (-8)\n    change y by (((-80) - (y position)) / (3))\nend\nset y to (-80)\nbroadcast (BShow v) and wait\n\nwhen I receive [close shop v]\nrepeat (10)\n    change [ghost v] effect by (8)\n    change y by (((-282) - (y position)) / (3))\nend\nset y to (-282)\nhide\n\n@Shop Button Main\n\nwhen flag clicked\nhide\n\nwhen I receive [start v]\nforever\n    go to x: (-203) y: (-156)\n    if <([y position v] of [shop box v]) = [-282]> then\n        show\n        if <<touching (mouse-pointer v)?> and <not <mouse down?>>> then\n            set [brightness v] effect to (10)\n            set size to (55) %\n            wait until <<mouse down?> or <not <touching (mouse-pointer v)?>>>\n            if <<mouse down?> and <touching (mouse-pointer v)?>> then\n                repeat until <not <mouse down?>>\n                    if <touching (mouse-pointer v)?> then\n                        set [brightness v] effect to (25)\n                    else\n                        set [brightness v] effect to (10)\n                    end\n                end\n                if <touching (mouse-pointer v)?> then\n                    broadcast (SBMO v) and wait\n                    broadcast (Open Shop v) and wait\n                end\n            end\n        else\n            set [brightness v] effect to (0)\n            set size to (50) %\n        end\n    else\n        hide\n        clear graphic effects\n    end\nend\n\nwhen I receive [sbmo v]\nrepeat (10)\n    change [ghost v] effect by (10)\nend\n\nwhen I receive [sbmc v]\nclear graphic effects\nset [ghost v] effect to (100)\nshow\nrepeat (10)\n    change [ghost v] effect by (-10)\nend\nif <touching (mouse-pointer v)?> then\n    set [brightness v] effect to (10)\nend\n\n@Shop Buttons\n\nwhen I receive [start v]\nset [sheilds v] to [0]\nset [stop spike v] to [0]\nset [parachute v] to [0]\nswitch costume to (shop button 3 v)\ngo to x: (-65) y: (-50)\ncreate clone of (_myself_ v)\nswitch costume to (shop button 4 v)\nchange x by (130)\ncreate clone of (_myself_ v)\nswitch costume to (shop button 2 v)\nchange y by (-53)\ncreate clone of (_myself_ v)\nswitch costume to (shop button 1 v)\nchange x by (-130)\n\nwhen flag clicked\nset size to (50) %\nhide\n\nwhen I receive [bshow v]\ngo to [front v] layer\nset [ghost v] effect to (100)\nshow\nrepeat (10)\n    change [ghost v] effect by (-10)\nend\nbroadcast (Buttons v)\n\nwhen I receive [bhide v]\nrepeat (10)\n    change [ghost v] effect by (10)\nend\nhide\n\nwhen I receive [buttons v]\nrepeat until <([open v] of [shop box v]) = [0]>\n    if <<touching (mouse-pointer v)?> and <not <mouse down?>>> then\n        set [brightness v] effect to (10)\n        set size to (55) %\n        wait until <<mouse down?> or <not <touching (mouse-pointer v)?>>>\n        if <<mouse down?> and <touching (mouse-pointer v)?>> then\n            repeat until <not <mouse down?>>\n                if <touching (mouse-pointer v)?> then\n                    set [brightness v] effect to (25)\n                else\n                    set [brightness v] effect to (10)\n                end\n            end\n            if <touching (mouse-pointer v)?> then\n                if <(costume [number v]) = [1]> then\n                    if <<(Coins) > [15]> or <(Coins) = [15]>> then\n                        if <<(Lives) < [4]> or <(Lives) = [4]>> then\n                            change [coins v] by (-15)\n                            change [lives v] by (1)\n                        end\n                    end\n                else\n                    if <(costume [number v]) = [2]> then\n                        if <<(Coins) > [20]> or <(Coins) = [20]>> then\n                            if <(Sheilds) = [0]> then\n                                change [coins v] by (-20)\n                                set [sheilds v] to [3]\n                            end\n                        end\n                    else\n                        if <<(Coins) > [10]> or <(Coins) = [10]>> then\n                            if <(costume [number v]) = [3]> then\n                                if <(Stop Spike) = [0]> then\n                                    set [stop spike v] to [1]\n                                    change [coins v] by (-10)\n                                end\n                            else\n                                if <(Parachute) = [0]> then\n                                    set [parachute v] to [1]\n                                    change [coins v] by (-10)\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    else\n        set [brightness v] effect to (0)\n        set size to (50) %\n    end\nend\n\n@Icons\n\nwhen I receive [start v]\nswitch costume to (safe spike v)\nset [type v] to [1]\nrepeat (2)\n    create clone of (_myself_ v)\n    next costume\n    change [type v] by (1)\nend\nbroadcast (Icon Start v)\n\nwhen flag clicked\nhide\nset size to (50) %\n\nwhen I receive [icon start v]\ngo to [back v] layer\nforever\n    if <(Type) = [1]> then\n        go to x: (65) y: (155)\n        if <(Stop Spike) = [1]> then\n            show\n        else\n            hide\n        end\n    else\n        if <(Type) = [2]> then\n            go to x: (115) y: (155)\n            if <(Parachute) = [1]> then\n                show\n            else\n                hide\n            end\n        else\n            go to x: (165) y: (155)\n            switch costume to ((2) + (Sheilds))\n            if <(Sheilds) > [0]> then\n                show\n            else\n                hide\n            end\n        end\n    end\nend\n\nwhen I receive [reset v]\nset [parachute v] to [0]\nset [sheilds v] to [0]\nset [stop spike v] to [0]\n\n@End\n\nwhen flag clicked\nhide\ngo to x: (0) y: (50)\n\nwhen I receive [stop? v]\nshow\nset [movable? v] to [0]\nwait until <(Movable?) = [1]>\nhide\n\n@Button\n\nwhen flag clicked\nhide\nset size to (100) %\nclear graphic effects\ndelete this clone\n\nwhen I receive [stop? v]\ndelete this clone\n\nwhen I receive [stop? v]\nwait (0.2) seconds\nswitch costume to (yes v)\ngo to x: (-50) y: (-20)\ncreate clone of (_myself_ v)\nswitch costume to (no v)\ngo to x: (50) y: (-20)\ncreate clone of (_myself_ v)\n\nwhen I start as a clone\nshow\nrepeat until <(Movable?) = [1]>\n    if <touching (mouse-pointer v)?> then\n        set size to (110) %\n        set [color v] effect to (-10)\n        if <mouse down?> then\n            if <(costume [number v]) = [1]> then\n                set [movable? v] to [1]\n            else\n                stop [all v]\n            end\n        end\n    else\n        set size to (100) %\n        set [color v] effect to (0)\n    end\nend\ndelete this clone\n\n
Mobile friendly! (Mostly)\n\nInstructions list:\n  - Moving\n  - How to get coins\n  - How to use coins\n  - What the features do\n  - How to chat\n  - What not to do\n\nUse arrow keys, WASD, or tap around the player to move. You can bounce on the trampolines.\n\nCoins can be collected by jumping over the cannonball, or by finding them along the way.\n\nYou can use coins by opening the shop. You can open the shop by pressing SPACE, or pressing the shop button. You can then buy different things to help you on your way by clicking one of the buttons in the shop.\n\nWhat the features do:\n - The first button will allow you to go through spikes, only once.\n\n - The second button will give you a parachute if you fall too far. \n\n - The third button will give you one more life.\n\n- Finally, the fourth button will make it possible to deflect three cannon balls.\n\nTo chat, press "c" to open/close the menu. Then press the key next to the message you would like to send. For example, you would press the key "0" to send "Hello!". (Sorry, not mobile compatible)\n\nWhat not to do:\n - Don't land on spikes\n - Don't run into cannonballs\n - Avoid large drops