Creepy || ☁️Multiplayer Platformer #games #all

Instructions: This has been stolen so many times by people lol\n             ⦿Creepy⦿\n⦿A mobile friendly multiplayer scrolling platformer⦿\n\nCan we get this on trending\n\nThis is my best game so far so I hope you like it\nIf this is full try this https://scratch.mit.edu/projects/432065112/\n                                  ⦿Controls⦿ \nArrow keys,W,A,S,D, or mobile controls to move \nT to see chat menu then use 1-9 number keys to chat\nsorry no chat for mobile\n\n                                ⦿Backstory⦿\nYou were reading a book about a legend about a  mystical cave,according to the book when in the cave the only way out is to find the magical crystal,with the crystal you can teleport in and out of the cave,\none day you go out for a walk when suddenly you feel\nan earthquake and the ground opens up,you fall into a deep pit,then you realise you are in the magical cave in the book, you have to find the crystal to get out\nGOOD LUCK!!!                         ~KFC_remixes\n\nPropose to be featured here https://scratch.mit.edu/studios/4228481/comments/\n\nI put a lot of effort into this so a ❤️  and ⭐ would be appreciated

@Stage\n\nwhen flag clicked\nforever\n    set [brightness v] effect to (-10)\n    switch backdrop to (backdrop1 v)\nend\n\nset [brightness v] effect to (-10)\n\n@lag reducer1\n\n@lag reducer2\n\n@player\n\ndefine Chat\nif <(is the chat open) = [1]> then\n    if <key (1 v) pressed?> then\n        set [chat v] to [1]\n        say (item (Chat) of [chat v])\n        wait (2) seconds\n        say []\n        set [chat v] to [0]\n    else\n        if <key (2 v) pressed?> then\n            set [chat v] to [2]\n            say (item (Chat) of [chat v])\n            wait (2) seconds\n            say []\n            set [chat v] to [0]\n        else\n            if <key (3 v) pressed?> then\n                set [chat v] to [3]\n                say (item (Chat) of [chat v])\n                wait (2) seconds\n                say []\n                set [chat v] to [0]\n            else\n                if <key (4 v) pressed?> then\n                    set [chat v] to [4]\n                    say (item (Chat) of [chat v])\n                    wait (2) seconds\n                    say []\n                    set [chat v] to [0]\n                else\n                    if <key (5 v) pressed?> then\n                        set [chat v] to [5]\n                        say (item (Chat) of [chat v])\n                        wait (2) seconds\n                        say []\n                        set [chat v] to [0]\n                    else\n                        if <key (6 v) pressed?> then\n                            set [chat v] to [6]\n                            say (item (Chat) of [chat v])\n                            wait (2) seconds\n                            say []\n                            set [chat v] to [0]\n                        else\n                            if <key (7 v) pressed?> then\n                                set [chat v] to [7]\n                                say (item (Chat) of [chat v])\n                                wait (2) seconds\n                                say []\n                                set [chat v] to [0]\n                            else\n                                if <key (8 v) pressed?> then\n                                    set [chat v] to [8]\n                                    say (item (Chat) of [chat v])\n                                    wait (2) seconds\n                                    say []\n                                    set [chat v] to [0]\n                                else\n                                    if <key (9 v) pressed?> then\n                                        set [chat v] to [9]\n                                        say (item (Chat) of [chat v])\n                                        wait (2) seconds\n                                        say []\n                                        set [chat v] to [0]\n                                    else\n                                        set [chat v] to [10]\n                                        if <key (0 v) pressed?> then\n                                            say (item (Chat) of [chat v])\n                                            wait (2) seconds\n                                            say []\n                                            set [chat v] to [0]\n                                        end\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\n\n\ndefine Position\ngo to x: ((x) - (SCROLL X)) y: ((y) - (SCROLL Y))\n\nwhen flag clicked\nset [level v] to [1]\nset [scroll y v] to [0]\nset [x v] to [0]\nset [y v] to [0]\nset [scroll x v] to [0]\nshow list [chat v]\nbroadcast (GREEN FLAG v) and wait\nbroadcast (PLAY GAME v) and wait\n\ndefine CHANGE PLAYER Y BY (sy)\nchange [y v] by (sy)\nchange [inair v] by (1)\nPosition\nrepeat until <not <touching (platform v)?>>\n    if <(sy) > [0]> then\n        change [y v] by (-1)\n    else\n        change [y v] by (1)\n        set [inair v] to [0]\n    end\n    Position\n    set [sy v] to [0]\nend\n\ndefine GAME ON\nset [x v] to [0]\nset [y v] to [0]\nset [sy v] to [0]\nset [sx v] to [0]\nset [scroll x v] to [0]\nset [scroll y v] to [0]\nset [inair v] to [0]\nset [exit v] to []\nset size to (100) %\nset [ghost v] effect to (0)\nshow\n\nwhen I receive [green flag v]\nhide\ngo to [front v] layer\n\ndefine Game-Win\nrepeat (50)\n    point towards (exit v)\n    turn right (65) degrees\n    move ((distance to [exit v]) / (2)) steps\n    change size by (-1)\n    change [ghost v] effect by (2)\nend\nhide\nchange [level v] by (1)\nwait (1) seconds\n\ndefine TICK\nif <<<(mouse x) < (x position)> and <mouse down?>> or <<key (left arrow v) pressed?> or <key (a v) pressed?>>> then\n    change [sx v] by (-2)\n    switch costume to (costume3 v)\nend\nif <<<(x position) < (mouse x)> and <mouse down?>> or <<key (right arrow v) pressed?> or <key (d v) pressed?>>> then\n    switch costume to (costume2 v)\n    change [sx v] by (2)\nend\nset [sx v] to ((SX) * (0.8))\nif <[0.9] < ([abs v] of (SX) )> then\n    CHANGE PLAYER X By (round (SX))\nend\nif <<<(y position) < (mouse y)> and <mouse down?>> or <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n    switch costume to (costume4 v)\n    if <(inair) < [4]> then\n        set [sy v] to [16]\n    end\nend\nif <(sy) > [-20]> then\n    change [sy v] by (-2)\nend\nCHANGE PLAYER Y BY (sy)\nTEST-DIE\nchange [scroll x v] by (round (((x) - (SCROLL X)) / (8)))\nif <(SCROLL X) < [0]> then\n    set [scroll x v] to [0]\nend\nif <[2649] < (SCROLL X)> then\n    set [scroll x v] to [2649]\nend\nchange [scroll y v] by (round (((y) - (SCROLL Y)) / (8)))\nif <(SCROLL Y) < [0]> then\n    set [scroll y v] to [0]\nend\nPosition\nif <(y) < [-175]> then\n    set [exit v] to [die]\nend\n\nwhen I receive [begin v]\nset [is the chat open v] to [0]\nshow list [chat v]\nforever\n    Chat\n    if <<key (t v) pressed?> or <<touching (mouse-pointer v)?> and <mouse down?>>> then\n        if <(is the chat open) = [1]> then\n            show list [chat v]\n            set [is the chat open v] to [0]\n            broadcast (close chat v)\n        else\n            broadcast (open chat v)\n            set [is the chat open v] to [1]\n        end\n        wait until <<not <<touching (mouse-pointer v)?> and <mouse down?>>> and <not <key (t v) pressed?>>>\n    end\nend\n\ndefine GAME - DIE\nset [exit v] to []\nhide\n\ndefine TEST-DIE\nif <touching (dangers  v)?> then\n    set [exit v] to [die]\nend\n\ndefine CHANGE PLAYER X By (sx)\nchange [x v] by (sx)\nPosition\nif <touching (platform v)?> then\n    repeat (18)\n        change [y v] by (1)\n        Position\n        if <not <touching (platform v)?>> then\n            stop [this script v]\n        end\n    end\n    change [y v] by (-18)\n    if <<<(y position) < (mouse y)> and <mouse down?>> or <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n        if <(sx) > [0]> then\n            set [sx v] to [-16]\n        else\n            set [sx v] to [16]\n        end\n        set [inair v] to [0]\n    else\n        set [sx v] to [0]\n    end\n    repeat until <not <touching (platform v)?>>\n        if <(sx) > [0]> then\n            change [x v] by (-1)\n        else\n            change [x v] by (1)\n        end\n        Position\n    end\nend\n\nwhen flag clicked\nset [max players v] to [8]\nset [my player # v] to [0]\nbroadcast (setups v) and wait\nbroadcast (joining v)\nbroadcast (join game v) and wait\nif <(My Player #) > [0]> then\n    start sound [Connect v]\n    broadcast (joined v)\nelse\n    start sound [Disconnect v]\n    broadcast (full v)\nend\nbroadcast (begin v)\n\ndefine write (val) to encoded\nset [letter # v] to [1]\nrepeat (length of (val))\n    set [encodied v] to (join (encodied) (item # of (letter (letter #) of (val)) in [code v]))\n    change [letter # v] by (1)\nend\nset [encodied v] to (join (encodied) [00])\n\nwhen I receive [begin v]\nset [level v] to [1]\nforever\n    broadcast (reset v) and wait\n    broadcast (SETUP v) and wait\n    GAME ON\n    repeat until <(EXIT) > []>\n        TICK\n        broadcast (tick v)\n        if <(My Player #) > [0]> then\n            send cloud data\n        end\n    end\n    if <(EXIT) = [win]> then\n        Game-Win\n    else\n        GAME - DIE\n    end\nend\n\ndefine set cloud # (player) to (value)\nif <(player) = [1]> then\n    set [☁ p1 v] to (value)\nelse\n    if <(player) = [2]> then\n        set [☁ p2 v] to (value)\n    else\n        if <(player) = [3]> then\n            set [☁ p3 v] to (value)\n        else\n            if <(player) = [4]> then\n                set [☁ p4 v] to (value)\n            else\n                if <(player) = [5]> then\n                    set [☁ p5 v] to (value)\n                else\n                    if <(player) = [6]> then\n                        set [☁ p6 v] to (value)\n                    else\n                        if <(player) = [7]> then\n                            set [☁ p7 v] to (value)\n                        else\n                            if <(player) = [8]> then\n                                set [☁ p8 v] to (value)\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine send cloud data\nset [encodied v] to []\nwrite (username) to encoded\nwrite (round ((timer) * (10))) to encoded\nwrite (x) to encoded\nwrite (y) to encoded\nwrite (Chat) to encoded\nset cloud # (My Player #) to (encodied)\n\nwhen I receive [begin v]\nwait (5) seconds\nswitch backdrop to (blank v)\n\nadd [HI] to [chat v]\n\nadd [This is how you do it] to [chat v]\n\nhide\n\nwhen I receive [begin v]\nforever\n    \n        set [level v] to [2]\n    end\nend\n\nwhen I receive [begin v]\nshow\n\nwhen I receive [stop v]\nhide\n\nwhen [timer v] > (0.3)\nif <not <([exit v] of [alertsui v]) = [null]>> then\n    hide\nend\n\nrepeat (10)\n    go to [front v] layer\n    change [ghost v] effect by (-10)\nend\n\nwhen flag clicked\nforever\n    if <<(SCROLL X) > [2648]> and <(x position) > [124]>> then\n        set [level v] to [2]\n        broadcast (WIN!! v)\n    end\nend\n\nbroadcast (SETUP v)\n\n@opponents\n\ndefine Decode chat (chat)\nif <(chat) = [0]> then\n\ndefine begin decode of (encode)\nset [encodied v] to (encode)\nset [letter # v] to [1]\n\ndefine value=read from encode\nset [value v] to []\nforever\n    set [idx v] to (join (letter (letter #) of (encodied)) (letter ((letter #) + (1)) of (encodied)))\n    change [letter # v] by (2)\n    if <(idx) < [1]> then\n        stop [this script v]\n    end\n    set [value v] to (join (value) (item (idx) of [code v]))\nend\n\ndefine setup players\nset [color v] effect to (90)\nset [offline v] to [100]\nhide\nset [player # v] to [1]\nrepeat ((MAX PLAYERS) - (1))\n    create clone of (_myself_ v)\n    change [player # v] by (1)\nend\n\nwhen I receive [begin v]\nforever\n    if <(My Player #) = (player #)> then\n        hide\n        set [offline v] to [100]\n    else\n        tick\n    end\n    go to [back v] layer\nend\n\ndefine value=Cloud # (player)\nif <(player) = [1]> then\n    set [value v] to (☁ P1)\nelse\n    if <(player) = [2]> then\n        set [value v] to (☁ P2)\n    else\n        if <(player) = [3]> then\n            set [value v] to (☁ P3)\n        else\n            if <(player) = [4]> then\n                set [value v] to (☁ P4)\n            else\n                if <(player) = [5]> then\n                    set [value v] to (☁ P5)\n                else\n                    if <(player) = [6]> then\n                        set [value v] to (☁ P6)\n                    else\n                        if <(player) = [7]> then\n                            set [value v] to (☁ P7)\n                        else\n                            if <(player) = [8]> then\n                                set [value v] to (☁ P8)\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen I receive [setups v]\nsetup players\n\ndefine tick\nvalue=Cloud # (player #)\nif <(join [A] (value)) = (last value)> then\n    change [offline v] by (1)\n    if <(offline) = [100]> then\n        hide\n    end\nelse\n    set [last value v] to (join [A] (value))\n    if <(offline) > [99]> then\n        show\n    end\n    set [offline v] to [0]\nend\nbegin decode of (value)\nvalue=read from encode\nif <(names) = [1]> then\n    say (join (player #) (join [:] (value)))\nelse\n    say []\nend\nvalue=read from encode\nvalue=read from encode\nset x to ((value) - (SCROLL X))\nvalue=read from encode\nset y to ((value) - (SCROLL Y))\nvalue=read from encode\nbroadcast (Decode chat v)\n\nwhen I receive [join game v]\nvalue=Cloud # (player #)\nset [last value v] to (join [A] (value))\nwait (3) seconds\nvalue=Cloud # (player #)\nif <(join [A] (value)) = (last value)> then\n    set [my player # v] to (player #)\nend\n\nwhen I receive [decode chat v]\nDecode chat (value)\n\nDecode chat (value)\n\nwhen I receive [begin v]\nset [names v] to [1]\nforever\n    if <key (n v) pressed?> then\n        if <(names) = [1]> then\n            wait until <not <key (n v) pressed?>>\n            set [names v] to [0]\n        else\n            wait until <not <key (n v) pressed?>>\n            set [names v] to [1]\n        end\n    end\nend\n\n@PLATFORM\n\nwhen I receive [green flag v]\nhide\n\nwhen I receive [tick v]\nPOSTION ((x) - (SCROLL X)) ((y) - (SCROLL Y))\n\nwhen I receive [setup v]\nset [level v] to [1]\nhide\nset [x v] to [0]\nset [y v] to [0]\nif <(LEVEL) = [1]> then\n    switch costume to (level 1 1 v)\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\nelse\n    if <(LEVEL) = [2]> then\n        switch costume to (level 2 1 v)\n        CLONE AT X [0] Y [0]\n        CLONE AT X [0] Y [320]\n    else\n        if <(LEVEL) = [2]> then\n            switch costume to (level 3 1 v)\n        end\n    end\nend\n\ndefine POSTION (x) (y)\ngo to x: (x) y: (y)\nif <<(x) = (x position)> and <(y) = (y position)>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [reset v]\ndelete this clone\n\ndefine CLONE AT X (x) Y (y)\ncreate clone of (_myself_ v)\nchange [x v] by (x)\nchange [y v] by (y)\nnext costume\n\nset [level v] to [2]\n\nbroadcast (the end v)\n\n@DANGERs \n\nwhen I receive [green flag v]\nhide\n\nwhen I receive [tick v]\ngo to [back v] layer\nPOSTION ((x) - (SCROLL X)) ((y) - (SCROLL Y))\n\nwhen I receive [setup v]\nhide\nset [x v] to [0]\nset [y v] to [0]\nif <(LEVEL) = [1]> then\n    switch costume to (level 1 1 v)\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [0]\n    CLONE AT X [360] Y [-10]\n    CLONE AT X [360] Y [0]\nelse\n    if <(LEVEL) = [2]> then\n        hide\n        stop [all v]\n    else\n        if <(LEVEL) = [3]> then\n            switch costume to (level 3 1 v)\n        end\n    end\nend\n\ndefine POSTION (x) (y)\ngo to x: (x) y: (y)\nif <<(x) = (x position)> and <(y) = (y position)>> then\n    show\nelse\n    hide\nend\n\nwhen I receive [reset v]\ndelete this clone\n\ndefine CLONE AT X (x) Y (y)\ncreate clone of (_myself_ v)\nchange [x v] by (x)\nchange [y v] by (y)\nnext costume\n\nwhen I start as a clone\npoint in direction (90)\nif <(costume [number v]) = [4]> then\n    forever\n        show\n        go to [front v] layer\n        turn right (2) degrees\n    end\nelse\n    forever\n        show\n        go to [front v] layer\n        point in direction (90)\n        if <(LEVEL) = [2]> then\n            delete this clone\n        end\n    end\nend\n\nswitch costume to (level 2 1 v)\nCLONE AT X [0] Y [360]\nCLONE AT X [400] Y [360]\n\nwhen I receive [begin v]\nforever\n    if <(LEVEL) = [2]> then\n        broadcast (the end v)\n        hide\n        stop [all v]\n    end\nend\n\nwhen flag clicked\nforever\n    go to [front v] layer\nend\n\n@Thumbnail\n\nwhen flag clicked\ngo to x: (0) y: (0)\nhide\n\nshow\n\n@Sprite1\n\nwhen flag clicked\nhide\n\nwhen I receive [begin v]\nwait (3) seconds\nhide\n\nwhen I receive [joining v]\nswitch costume to (connecting2 v)\nshow\n\nwhen I receive [joined v]\nswitch costume to (connected v)\nshow\n\nwhen I receive [full v]\nstop [other scripts in sprite v]\nswitch costume to (full v)\nshow\n\nwhen flag clicked\ngo to [front v] layer\n\nwhen I receive [stop v]\nhide\n\n@Sprite3\n\nwhen flag clicked\ngo to [front v] layer\nhide\nset [ghost v] effect to (20)\nforever\n    go to [front v] layer\nend\n\nwhen I receive [open chat v]\nshow\n\nwhen I receive [close chat v]\nhide\n\n@Sprite5\n\nwhen flag clicked\nshow\nset [ghost v] effect to (100)\n\nwhen [timer v] > (0.3)\nif <not <([exit v] of [alertsui v]) = [null]>> then\n    if <(SCROLL X) = [2649]> then\n        switch costume to (costume2 v)\n        set [ghost v] effect to (0)\n        show\n        go to [front v] layer\n        repeat (10)\n            go to [front v] layer\n            change [ghost v] effect by (-10)\n        end\n    else\n        switch costume to (costume1 v)\n        set [ghost v] effect to (100)\n        show\n        go to [front v] layer\n        repeat (10)\n            go to [front v] layer\n            change [ghost v] effect by (-10)\n        end\n    end\nend\n\n\n\nwhen flag clicked\ngo to [front v] layer\nhide\nforever\n    reset timer\nend\n\n@Sprite6\n\nwhen flag clicked\nshow\nset [ghost v] effect to (100)\n\nwhen flag clicked\ngo to [front v] layer\nhide\nforever\n    reset timer\nend\n\nwhen flag clicked\nshow\nset [ghost v] effect to (100)\n\n@Sprite2\n\nwhen I receive [joining v]\n\nshow\nforever\n    turn right (6) degrees\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\n\nwait (1.3) seconds\nrepeat (4)\n    change [ghost v] effect by (25)\nend\ndelete this clone\n\nwhen I receive [begin v]\nhide\n\nwhen [space v] key pressed\nask [How many?] and wait\nchange [blocks v] by (answer)\n\n@Loading\n\nwhen flag clicked\ngo [forward v] (213) layers\nset size to (100) %\nhide\npoint in direction (90)\nclear graphic effects\ngo to x: (0) y: (-80)\n\nwhen I receive [joining v]\nrepeat (11)\n    create clone of (_myself_ v)\n    turn right (40) degrees\nend\n\nwhen I receive [joined v]\nrepeat (10)\n    change [ghost v] effect by (10)\nend\ndelete this clone\n\nwhen I start as a clone\nshow\nset [ghost v] effect to (100)\nforever\n    go to [front v] layer\n    repeat (20)\n        turn right (7.5) degrees\n        change [ghost v] effect by (-6)\n        change size by (1)\n    end\n    repeat (20)\n        turn right (7.5) degrees\n        change [ghost v] effect by (6)\n        change size by (-1)\n    end\nend\n\nwhen I receive [stop v]\nstop [all v]\n\n@Sprite7\n\nwhen flag clicked\nhide\ngo to x: (-30) y: (-20)\ncreate clone of (_myself_ v)\nchange x by (300)\nforever\n    create clone of (_myself_ v)\n    wait (1) seconds\nend\n\nwhen I start as a clone\n\nshow\nrepeat until <touching (_edge_ v)?>\n    change x by (-5)\nend\nrepeat (500)\n    change x by (-5)\nend\ndelete this clone\n\nwait (2) seconds\n\n@Sprite8\n\nwhen flag clicked\nshow\nset [ghost v] effect to (0)\nhide\n\nwhen I receive [win!! v]\nshow\n\n@notif\n\nwhen flag clicked\ngo to x: (0) y: (50)\nhide\nwait (pick random (8) to (15)) seconds\nshow\nrepeat until <(y position) < [6]>\n    change y by (((5) - (y position)) / (6))\nend\nwait (3.5) seconds\nrepeat until <(y position) > [49.5]>\n    change y by (((y position) + (5)) / (5))\nend\nhide\nforever\n    wait (pick random (14) to (26)) seconds\n    show\n    repeat until <(y position) < [6]>\n        change y by (((5) - (y position)) / (6))\n    end\n    wait (3.5) seconds\n    repeat until <(y position) > [49.5]>\n        change y by (((y position) + (5)) / (5))\n    end\n    hide\nend\n\nwhen I receive [alert v]\nstop [other scripts in sprite v]\nrepeat (5)\n    change [ghost v] effect by (20)\nend\nhide\n\nwhen I receive [tick v]\ngo to [front v] layer\n\n@Sprite9\n\n