Rotate || ☁️ multiplayer platformer AT NIGHT

Instructions:           ◆ Rotate ◆\n      ◆ 360° Multiplayer Platformer ◆\n\nPlease ❤ & ⭐! They hate being gray!\n\nGo to Server 2 If it gets full or high traffic: https://scratch.mit.edu/projects/411363368/\n\nRemove LAG:\n-restart your device\n-plug it into the charger\n-close other tabs\n\nThanks to @GonSanVi for the 360 engine!\n         ✦✦✦How to play✦✦✦\n➜ [WASD], arrows, or tap to move\n➜ [T] to chat, [#] to choose phrase\n➜ TAP on player to chat (mobile)\n➜ [N] to toggle names\n➜ Get to the end flag and tell us your time!\n         ✦✦✦News✦✦✦\n(7/13/20) Project shared!\n\nCredits:\n@GonSanVi for the 360 engine\n@TimMcCool for checkpoint flags and signs\n@StratfordJames for the multiplayer engine\n\n#games #art #pen #planet #rotate #multiplayer #trending #scrolling #platformer

@Stage\n\nwhen flag clicked\nhide variable [@player v]\nshow list [active check v]\nshow list [cloud list v]\nif <(username) = [stratfordjames]> then\n    forever\n        wait until <key (v v) pressed?>\n        show variable [@player v]\n        hide list [active check v]\n        hide list [cloud list v]\n        wait until <not <key (v v) pressed?>>\n        wait until <key (v v) pressed?>\n        hide variable [@player v]\n        show list [active check v]\n        show list [cloud list v]\n        wait until <not <key (v v) pressed?>>\n    end\nend\n\n@blank\n\n@thumbnail\n\nwhen flag clicked\nhide\n\nwhen I receive [online start v]\nforever\n    broadcast (online_tick v)\nend\n\nwhen [timer v] > (1)\nshow\ngo to x: (0) y: (0)\nset [ghost v] effect to (100)\nswitch costume to (costume1 v)\nset size to (130) %\nrepeat until <(size) < [100.2]>\n    go to [front v] layer\n    switch costume to (costume1 v)\n    change size by (((99) - (size)) / (5))\n    switch costume to (cover v)\n    change [ghost v] effect by (-10)\nend\nset size to (100) %\n\n@render\n\ndefine go to (x) (y)\ngo to x: (((y) * ((size) / (100))) * ([sin v] of ((x) - (rotation-x-scroll)) )) y: (((center-y-scroll) + (((110) - (size)) * (3))) + (((y) * ((size) / (100))) * ([cos v] of ((x) - (rotation-x-scroll)) )))\n\nwhen flag clicked\nhide\n\ndefine line (x1) (y1) (x2) (y2)\npen up\ngo to (x1) (y1)\npen down\ngo to (x2) (y2)\npen up\n\ndefine line (y1) degrees (x1) (x2) height (y2)\nset [counter v] to [0]\nrepeat (((x2) - (x1)) * ((y1) / (200)))\n    change [counter v] by ((1) / ((y1) / (200)))\n    line ((x1) + (counter)) (y1) ((x1) + (counter)) ((y1) - (y2))\nend\n\ndefine render\ndelete all of [ground v]\ndelete all of [lava v]\nset pen size to ((round (size)) / (20))\nLEVEL\nplanet\nset [timer v] to ((days since 2000) * (80000))\n\ndefine ground (altura_1) (grados_1) (altura_2) (grados_2) DIRT? (dirt)\nif <<<(((_y position) * ((size) / (100))) * ([sin v] of ((grados_2) - (rotation-x-scroll)) )) > [-280]> and <(((_y position) * ((size) / (100))) * ([sin v] of ((grados_2) - (rotation-x-scroll)) )) < [280]>> or <<(((_y position) * ((size) / (100))) * ([sin v] of ((grados_1) - (rotation-x-scroll)) )) > [-280]> and <(((_y position) * ((size) / (100))) * ([sin v] of ((grados_1) - (rotation-x-scroll)) )) < [280]>>> then\n    add (grados_1) to [ground v]\n    add (altura_1) to [ground v]\n    add (grados_2) to [ground v]\n    add (altura_2) to [ground v]\n    set pen color to (#8c8c8c)\n    line (altura_1) degrees (grados_1) (grados_2) height ((altura_1) - (altura_2))\n    if <(dirt) = [1]> then\nend\n\ndefine lava en (angulo_1) (altura_1) (angulo_2) (altura_2)\nif <<<(((_y position) * ((size) / (100))) * ([sin v] of ((angulo_1) - (rotation-x-scroll)) )) > [-300]> and <(((_y position) * ((size) / (100))) * ([sin v] of ((angulo_1) - (rotation-x-scroll)) )) < [300]>> or <<(((_y position) * ((size) / (100))) * ([sin v] of ((angulo_2) - (rotation-x-scroll)) )) > [-300]> and <(((_y position) * ((size) / (100))) * ([sin v] of ((angulo_2) - (rotation-x-scroll)) )) < [300]>>> then\n    add (angulo_1) to [lava v]\n    add (altura_1) to [lava v]\n    add (angulo_2) to [lava v]\n    add (altura_2) to [lava v]\n    set pen color to (#f93a3a)\n    line (altura_1) degrees (angulo_1) (angulo_2) height ((altura_1) - (altura_2))\nend\n\ndefine planet\nset pen color to (#4eea4a)\ngo to [0] [0]\nset pen size to ((size) * (10))\npen down\npen up\nset pen color to (#8c8c8c)\ngo to [0] [0]\nset pen size to ((size) * (9))\npen down\npen up\nset pen color to (#5d5d5d)\nset pen size to ((size) * (7))\npen down\npen up\n\ndefine LEVEL\nset [v1 v] to [1]\nif <<(((_degrees) mod (360)) + (360)) > [320]> and <(((_degrees) + (50)) mod (360)) < [125]>> then\n    moving lava 1 [15] [510] [48] [485] 2 [15] [515] [48] [485] vel. [125] + [45]\n    moving platform 1 [23] [708] [29] [678] 2 [41] [620] [47] [590] speed [50] + [90]\n    ground [755] [351] [490] [355] DIRT? []\n    ground [708] [19] [678] [23] DIRT? []\n    ground [630] [6] [600] [11] DIRT? []\n    ground [550] [15] [490] [20] DIRT? []\nelse\n    change [v1 v] by (1)\nend\nif <<(_degrees) > [19]> and <<(_y position) < [800]> and <(_degrees) < [100]>>> then\n    moving lava 1 [50] [512] [90] [490] 2 [50] [519] [90] [490] vel. [150] + [90]\n    ground [541] [54] [490] [64] DIRT? []\n    ground [620] [47] [490] [54] DIRT? []\n    ground [591] [71] [500] [76] DIRT? []\nend\nif <<<(_degrees) < [110]> and <(_degrees) > [40]>> and <(_y position) > [550]>> then\n    moving platform 1 [75] [767] [78] [745] 2 [78] [801] [81] [779] speed [100] + [45]\n    ground [844] [85] [820] [90] DIRT? []\n    ground [924] [79] [900] [82] DIRT? []\nelse\n    change [v1 v] by (1)\nend\nif <<<(_degrees) < [90]> and <(_degrees) > [40]>> and <(_y position) < [880]>> then\n    ground [720] [67] [696] [72] DIRT? []\n    ground [636] [79] [612] [83] DIRT? []\nend\nif <<(_degrees) < [95]> and <(_degrees) > [55]>> then\n    moving lava 1 [95] [973] [102] [920] 2 [95] [959] [102] [920] vel. [150] + [90]\n    ground [1000] [89] [800] [95] DIRT? []\n    ground [920] [89] [800] [103] DIRT? [1]\n    ground [1000] [102] [800] [105] DIRT? []\nend\nif <<<(_degrees) < [140]> and <(_degrees) > [94]>> and <(_y position) > [580]>> then\n    moving lava 1 [95] [973] [102] [920] 2 [95] [959] [102] [920] vel. [150] + [90]\n    moving platform 1 [75] [767] [78] [745] 2 [78] [801] [81] [779] speed [100] + [90]\n    moving lava 1 [104] [897] [114] [850] 2 [104] [883] [114] [850] vel. [150] + [0]\n    ground [1000] [89] [800] [95] DIRT? []\n    ground [920] [89] [800] [103] DIRT? [1]\n    ground [1000] [102] [800] [105] DIRT? []\n    ground [929] [113] [800] [120] DIRT? []\nelse\n    change [v1 v] by (1)\nend\nif <<(_degrees) < [150]> and <(_degrees) > [55]>> then\n    ground [850] [89] [500] [120] DIRT? [1]\nend\nif <<(_degrees) < [250]> and <(_degrees) > [30]>> then\n    moving lava 1 [170] [525] [220] [0495] 2 [170] [513] [220] [495] vel. [150] + [0]\n    moving lava 1 [130] [525] [170] [495] 2 [130] [513] [170] [495] vel. [150] + [0]\n    moving platform 1 [130] [570] [137] [542] 2 [160] [700] [167] [672] speed [36] + [90]\n    ground [570] [120] [500] [130] DIRT? []\n    ground [700] [167] [495] [179] DIRT? []\n    ground [770] [178] [745] [183] DIRT? []\n    ground [850] [163] [825] [175] DIRT? []\nelse\n    change [v1 v] by (1)\nend\nif <<(_degrees) < [220]> and <(_degrees) > [150]>> then\n    ground [930] [171] [905] [179] DIRT? []\n    moving platform 1 [179] [930] [182] [905] 2 [189] [960] [192] [935] speed [50] + [0]\n    ground [960] [192] [490] [195] DIRT? []\n    ground [860] [200] [490] [203] DIRT? []\nelse\n    change [v1 v] by (1)\nend\nif <<(_degrees) < [270]> and <(_degrees) > [185]>> then\n    moving lava 1 [220] [525] [240] [495] 2 [220] [513] [240] [495] vel. [150] + [95]\n    ground [930] [206] [490] [209] DIRT? []\n    ground [810] [214] [490] [217] DIRT? []\n    ground [850] [218] [490] [221] DIRT? []\n    ground [680] [223] [490] [227] DIRT? []\n    ground [580] [227] [490] [233] DIRT? []\nend\nif <<(((_degrees) + (-50)) mod (360)) > [150]> and <((_degrees) mod (-360)) < [20]>> then\n    moving lava 1 [240] [525] [285] [495] 2 [240] [513] [285] [495] vel. [150] + [40]\n    moving lava 1 [305] [520] [330] [500] 2 [305] [512] [330] [500] vel. [130] + [20]\n    ground [635] [240] [500] [244] DIRT? []\n    ground [600] [249] [500] [253] DIRT? []\n    moving platform 1 [256] [550] [262] [500] 2 [274] [550] [280] [500] speed [60] + [0]\n    ground [550] [280] [500] [291] DIRT? []\n    ground [620] [290] [500] [305] DIRT? []\n    ground [660] [313] [625] [325] DIRT? []\n    ground [530] [322] [500] [332] DIRT? []\n    ground [605] [330] [580] [335] DIRT? []\nend\n\ndefine moving platform 1 (º1) (h1) (º2) (h2) 2 (º3) (h3) (º4) (h4) speed (vel.) + (+)\nset [vel-sine v] to (([sin v] of (((timer) + (+)) * (vel.)) ) + (1))\nif <<((((((º4) - (º2)) / (2)) * (vel-sine)) + (º2)) mod (360)) > (((_degrees) + (-1)) mod (360))> and <(((_degrees) + (1)) mod (360)) > ((((((º3) - (º1)) / (2)) * (vel-sine)) + (º1)) mod (360))>> then\n    if <<(((((h3) - (h1)) / (2)) * (vel-sine)) + (h1)) > ((_y position) + (-40))> and <((_y position) + (-16)) > (((((h3) - (h1)) / (2)) * (vel-sine)) + (h1))>> then\n        change [_degrees v] by (((vel-sine) - (item (v1) of [vel sine v])) * ([abs v] of (((º3) - (º1)) / (2)) ))\n    end\nend\nground (((((h3) - (h1)) / (2)) * (vel-sine)) + (h1)) (((((º3) - (º1)) / (2)) * (vel-sine)) + (º1)) (((((h4) - (h2)) / (2)) * (vel-sine)) + (h2)) (((((º4) - (º2)) / (2)) * (vel-sine)) + (º2)) DIRT? []\nreplace item (v1) of [vel sine v] with (vel-sine)\nchange [v1 v] by (1)\n\ndefine moving lava 1 (º1) (h1) (º2) (h2) 2 (º3) (h3) (º4) (h4) vel. (vel.) + (+)\nset [vel-sine v] to (([sin v] of (((timer) * (vel.)) + (+)) ) + (1))\nlava en (((((º3) - (º1)) / (2)) * (vel-sine)) + (º1)) (((((h3) - (h1)) / (2)) * (vel-sine)) + (h1)) (((((º4) - (º2)) / (2)) * (vel-sine)) + (º2)) (((((h4) - (h2)) / (2)) * (vel-sine)) + (h2))\n\nwhen I receive [tick v]\nrepeat (1)\n    render\nend\n\ndefine setup mp\ndelete all of [vel sine v]\nrepeat (6)\n    add [] to [vel sine v]\nend\n\nwhen flag clicked\nsetup mp\n\nset pen color to (#da7f2a)\n\n@Multiplayer v1.3\n\nreplace item (1) of [cloud list v] with (item (1) of [pulse v])\n\nwhen flag clicked\nSETUP\nbroadcast (initialise cloud v)\nwait until <not <(item (10) of [active check v]) = [null]>>\nwait (0.8) seconds\nAssign Slot\nbroadcast (online start v)\n\ndefine Assign Slot\nset [c_4 v] to [1]\nrepeat (length of [active check v])\n    if <(item (c_4) of [active check v]) = [0]> then\n        set [@player v] to (c_4)\n        replace item ((@Player) * (6)) of [cloud list v] with (username_encoded)\n        stop [this script v]\n    else\n        change [c_4 v] by (1)\n    end\nend\nset [@player v] to [full]\n\nwhen [space v] key pressed\nif <(username) = [stratfordjames]> then\n    set [save v] to [0000000099991036565656565656565656565656565656565656565]\n    set [☁ c1 v] to (Save)\n    wait (0.1) seconds\n    set [☁ c2 v] to (Save)\n    wait (0.1) seconds\n    set [☁ c3 v] to (Save)\n    wait (0.1) seconds\n    set [☁ c4 v] to (Save)\n    wait (0.1) seconds\n    set [☁ c5 v] to (Save)\n    wait (0.1) seconds\n    set [☁ c6 v] to (Save)\n    wait (0.1) seconds\n    set [☁ c7 v] to (Save)\n    wait (0.1) seconds\n    set [☁ c8 v] to (Save)\n    wait (0.1) seconds\n    set [☁ c9 v] to (Save)\n    wait (0.1) seconds\n    set [☁ c10 v] to (Save)\nend\n\ndefine Encode (input) (length)\nset [c_1 v] to [1]\nset [output v] to []\nrepeat (length)\n    if <(letter (c_1) of (input)) = []> then\n        switch costume to ( v)\n    else\n        if < [1234567890] contains (letter (c_1) of (input))?> then\n            switch costume to (join (letter (c_1) of (input)) [s])\n        else\n            switch costume to (letter (c_1) of (input))\n        end\n    end\n    set [output v] to (join (output) ((costume [number v]) + (9)))\n    change [c_1 v] by (1)\nend\n\ndefine Decode (input)\nset [c_2 v] to [1]\nset [output v] to []\nrepeat ((length of (input)) / (2))\n    switch costume to ((join (letter (c_2) of (input)) (letter ((c_2) + (1)) of (input))) - (9))\n    set [output v] to (join (output) (letter (1) of (costume [name v])))\n    change [c_2 v] by (2)\nend\n\nwhen I receive [initialise cloud v]\nif <(IsAClone?) = [0]> then\n    forever\n        Import Pulse\n        wait (1.4) seconds\n        Kick AFK (join (join (join (join (join (join (join (join (join (☁ c1) (☁ c2)) (☁ c3)) (☁ c4)) (☁ c5)) (☁ c6)) (☁ c7)) (☁ c8)) (☁ c9)) (☁ c10))\n    end\nend\n\ndefine Postition @Player (@player) set to (value)\nif <(@player) = [1]> then\n    set [☁ c1 v] to (value)\nelse\n    if <(@player) = [2]> then\n        set [☁ c2 v] to (value)\n    else\n        if <(@player) = [3]> then\n            set [☁ c3 v] to (value)\n        else\n            if <(@player) = [4]> then\n                set [☁ c4 v] to (value)\n            else\n                if <(@player) = [5]> then\n                    set [☁ c5 v] to (value)\n                else\n                    if <(@player) = [6]> then\n                        set [☁ c6 v] to (value)\n                    else\n                        if <(@player) = [7]> then\n                            set [☁ c7 v] to (value)\n                        else\n                            if <(@player) = [8]> then\n                                set [☁ c8 v] to (value)\n                            else\n                                if <(@player) = [9]> then\n                                    set [☁ c9 v] to (value)\n                                else\n                                    if <(@player) = [10]> then\n                                        set [☁ c10 v] to (value)\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine Import Cloud_Data (input)\nset [c_5 v] to [1]\nset [c_6 v] to [1]\nrepeat ((length of (input)) / (55))\n    Import string to letter [4] of input from (input)\n    Import string to letter [4] of input from (input)\n    Import string to letter [4] of input from (input)\n    Import string to letter [2] of input from (input)\n    Import string to letter [1] of input from (input)\n    Import string to letter [40] of input from (input)\nend\nDecode\n\ndefine Import string to letter (val) of input from (cloud)\nreplace item (c_5) of [cloud list v] with []\nrepeat (val)\n    replace item (c_5) of [cloud list v] with (join (item (c_5) of [cloud list v]) (letter (c_6) of (cloud)))\n    change [c_6 v] by (1)\nend\nchange [c_5 v] by (1)\n\nwhen I start as a clone\nset [isaclone? v] to [1]\nswitch costume to (connecting v)\ngo to x: (0) y: (80)\nshow\nset [ghost v] effect to (100)\nwait (0.8) seconds\nrepeat until <(y position) < [1]>\n    change y by (((0) - (y position)) / (5))\n    change [ghost v] effect by (-10)\nend\n\nwhen I receive [online start v]\nif <(IsAClone?) = [1]> then\n    wait until <not <(@Player) = [null]>>\n    wait (1.2) seconds\n    if <not <(@Player) = [error]>> then\n        if <(@Player) = [full]> then\n            go to x: (0) y: (0)\n            show\n            repeat (10)\n                change [ghost v] effect by (10)\n            end\n            switch costume to (full v)\n            repeat (10)\n                change [ghost v] effect by (-10)\n            end\n            wait (1.3) seconds\n            repeat until <(y position) > [80]>\n                change y by (((y position) + (3)) / (5))\n                change [ghost v] effect by (10)\n            end\n        else\n            go to x: (0) y: (0)\n            show\n            repeat (10)\n                change [ghost v] effect by (10)\n            end\n            switch costume to (connected v)\n            repeat (10)\n                change [ghost v] effect by (-10)\n            end\n            wait (1.3) seconds\n            repeat until <(y position) > [80]>\n                change y by (((y position) + (3)) / (5))\n                change [ghost v] effect by (10)\n            end\n        end\n    end\nend\n\nwhen I receive [initialise cloud v]\nif <(IsAClone?) = [0]> then\n    forever\n        Import Cloud_Data (join (join (join (join (join (join (join (join (join (☁ c1) (☁ c2)) (☁ c3)) (☁ c4)) (☁ c5)) (☁ c6)) (☁ c7)) (☁ c8)) (☁ c9)) (☁ c10))\n    end\nend\n\nwhen I receive [online start v]\nif <(IsAClone?) = [0]> then\n    forever\n        Postition @Player (@Player) set to (join (join (join (join ((round (_degrees)) + (5000)) ((round (_y position)) + (5000))) (join (pick random (1111) to (9999)) ((chat-selection) + (10)))) (localcostume)) (username_encoded))\n    end\nend\n\nwhen I receive [online start v]\nif <(IsAClone?) = [0]> then\n    wait (0.2) seconds\n    forever\n        if <<not <(item ((@Player) * (6)) of [cloud list v]) = (username_encoded)>> and <<not <(@Player) = [afk]>> and <not <(@Player) = [full]>>>> then\n            set [@player v] to [error]\n            broadcast (Error v)\n            stop [this script v]\n        end\n    end\nend\n\nwhen I receive [error v]\nif <(IsAClone?) = [1]> then\n    go to x: (0) y: (0)\n    show\n    repeat (10)\n        change [ghost v] effect by (10)\n    end\n    switch costume to (error v)\n    repeat (10)\n        change [ghost v] effect by (-10)\n    end\n    wait (3) seconds\n    repeat until <(y position) > [80]>\n        change y by (((y position) + (3)) / (5))\n        change [ghost v] effect by (10)\n    end\n    set [@player v] to [full]\n    stop [this script v]\nend\n\nwhen I receive [tick v]\ngo to [front v] layer\nif <<key (any v) pressed?> or <mouse down?>> then\n    set [key-press v] to [0]\nend\n\ndefine SETUP\nset [active players v] to [0]\nset [active player_ui v] to [0]\nshow variable [active player_ui v]\nset [@player v] to [null]\nset [isaclone? v] to [0]\nhide\ncreate clone of (_myself_ v)\ndelete all of [pulse v]\ndelete all of [cloud list v]\ndelete all of [usernames v]\ndelete all of [active check v]\nrepeat (10)\n    add [] to [usernames v]\n    add [null] to [active check v]\n    add [1] to [pulse v]\n    repeat (6)\n        add [] to [cloud list v]\n    end\nend\nEncode (username) [20]\nset [username_encoded v] to (output)\n\ndefine Decode\nset [c_9 v] to [1]\nrepeat (length of [active check v])\n    Decode (item ((c_9) * (6)) of [cloud list v])\n    replace item (c_9) of [usernames v] with (output)\n    change [c_9 v] by (1)\nend\n\ndefine determine players\nset [active players v] to [0]\nset [c_c v] to [1]\nrepeat (length of [active check v])\n    if <(item (c_c) of [active check v]) = [1]> then\n        change [active players v] by (1)\n    end\n    change [c_c v] by (1)\nend\n\ndefine Import Pulse\nset [c_3 v] to [1]\nrepeat (length of [active check v])\n    set [var v] to [46]\n    replace item (c_3) of [pulse v] with []\n    repeat (4)\n        replace item (c_3) of [pulse v] with (join (item (c_3) of [pulse v]) (letter (((c_3) * (55)) - (var)) of (join (join (join (join (join (join (join (join (join (☁ c1) (☁ c2)) (☁ c3)) (☁ c4)) (☁ c5)) (☁ c6)) (☁ c7)) (☁ c8)) (☁ c9)) (☁ c10))))\n        change [var v] by (-1)\n    end\n    change [c_3 v] by (1)\nend\n\ndefine Kick AFK (input)\nset [c_3 v] to [1]\nrepeat (length of [active check v])\n    if <(item (c_3) of [pulse v]) = (join (join (letter (((c_3) * (55)) - (46)) of (input)) (letter (((c_3) * (55)) - (45)) of (input))) (join (letter (((c_3) * (55)) - (44)) of (input)) (letter (((c_3) * (55)) - (43)) of (input))))> then\n        replace item (c_3) of [active check v] with [0]\n    else\n        replace item (c_3) of [active check v] with [1]\n    end\n    change [c_3 v] by (1)\nend\ndetermine players\n\nwhen I receive [tick v]\nif <<(mouse x) < [-183]> and <(mouse y) > [150]>> then\n    set [active player_ui v] to (join (Active Players) [ online])\nelse\n    set [active player_ui v] to (Active Players)\nend\n\nwhen I receive [disconnect v]\nset [@player v] to [null]\nstop [other scripts in sprite v]\nforever\n    reset timer\nend\n\nwhen I receive [online start v]\nif <(IsAClone?) = [0]> then\n    wait (1) seconds\n    set [key-press v] to [0]\n    forever\n        wait (1) seconds\n        change [key-press v] by (1)\n        if <<(FPS) < [9]> and <(key-press) > [10]>> then\n            set [@player v] to [afk]\n            forever\n                reset timer\n            end\n        end\n    end\nend\n\nwhen flag clicked\nreset timer\nset [tick v] to [0]\nforever\n    change [tick v] by (1)\n    if <(timer) > [1]> then\n        set [fps v] to ((tick) / (timer))\n        reset timer\n        set [tick v] to [0]\n    end\nend\n\n@player_code\n\ndefine collision?\nset [collide? v] to [0]\nset [c1 v] to [0]\nif <((_y position) - (15)) < [498]> then\n    set [collide? v] to [1]\nend\nrepeat ((length of [ground v]) / (4))\n    change [c1 v] by (4)\n    if <<(item ((c1) - (2)) of [ground v]) > ((_y position) + (-18))> and <((_y position) + (16)) > (item (c1) of [ground v])>> then\n        if <<((item ((c1) - (1)) of [ground v]) mod (360)) > (((_degrees) + (-1.2)) mod (360))> and <(((_degrees) + (1.2)) mod (360)) > ((item ((c1) - (3)) of [ground v]) mod (360))>> then\n            set [collide? v] to [1]\n        end\n    end\nend\n\ndefine player\nchange [y_vel v] by (-0.8)\nchange [_y position v] by (round (y_vel))\ncollision?\nif <(collide?) = [1]> then\n    repeat until <(collide?) = [0]>\n        if <(y_vel) > [0]> then\n            change [_y position v] by (-1)\n        else\n            change [_y position v] by (1)\n        end\n        collision?\n    end\n    set [y_vel v] to [0]\n    change [_y position v] by (-3)\n    collision?\n    if <<<key (up arrow v) pressed?> or <<mouse down?> and <(mouse y) > (([y position v] of [player v]) + (20))>>> and <(collide?) = [1]>> then\n        if <(pause) = [0]> then\n            change [y_vel v] by (12.5)\n        end\n    end\n    change [_y position v] by (3)\nend\nif <<key (right arrow v) pressed?> or <<mouse down?> and <(mouse x) > [30]>>> then\n    if <(pause) = [0]> then\n        change [x_vel v] by (0.17)\n    end\nend\nif <<key (left arrow v) pressed?> or <<mouse down?> and <(mouse x) < [-30]>>> then\n    if <(pause) = [0]> then\n        change [x_vel v] by (-0.17)\n    end\nend\nchange x by (x_vel)\nchange [rotation-x-scroll v] by (((_degrees) - (rotation-x-scroll)) / (6))\nchange [center-y-scroll v] by (((((-50) - (_y position)) / ((100) / (size))) - ((center-y-scroll) / ((100) / (size)))) / (8))\nset [x_vel v] to ((x_vel) * (0.65))\nlava\n\nwhen flag clicked\nset [size v] to [25]\nset [center-y-scroll v] to [-480]\nset [rotation-x-scroll v] to [0]\nset [_y position v] to [530]\nset [_degrees v] to [0]\nset [size v] to [25]\nset [y_vel v] to [0]\nbroadcast (intro v)\n\nwhen I receive [intro v]\nif <(size) = [25]> then\n    repeat until <(size) > [35]>\n        change [size v] by (((size) - (13)) / (13))\n    end\n    repeat until <(size) > [67]>\n        change [size v] by (1.7)\n    end\n    repeat until <(size) > [99.8]>\n        change [size v] by (((105) - (size)) / (21.5))\n    end\n    set [size v] to [100]\nelse\n    repeat until <(size) > [64]>\n        change [size v] by (((size) - (30)) / (15))\n    end\n    repeat until <(size) > [76]>\n        change [size v] by (1.85)\n    end\n    repeat until <(size) > [99.8]>\n        change [size v] by (((102) - (size)) / (13.7))\n    end\n    set [size v] to [100]\nend\n\nwhen I receive [tick v]\nplayer\n\nwhen [c v] key pressed\nif <(username) = [stratfordjames]> then\n    set [y_vel v] to [10]\nend\n\ndefine change x by (i)\nchange [_degrees v] by (i)\ncollision?\nif <(collide?) = [1]> then\n    repeat until <(collide?) = [0]>\n        change [_degrees v] by ((0) - (x_vel))\n        collision?\n    end\n    set [x_vel v] to [0]\nend\n\ndefine lava\nset [c1 v] to [0]\nrepeat ((length of [lava v]) / (4))\n    change [c1 v] by (4)\n    if <<(item ((c1) - (2)) of [lava v]) > ((_y position) + (-5))> and <((_y position) + (16)) > (item (c1) of [lava v])>> then\n        if <<((item ((c1) - (1)) of [lava v]) mod (360)) > (((_degrees) + (-1)) mod (360))> and <(((_degrees) + (1)) mod (360)) > ((item ((c1) - (3)) of [lava v]) mod (360))>> then\n            set [size v] to [50]\n            broadcast (intro v)\n            repeat (2)\n                set [_degrees v] to (cx)\n                set [_y position v] to (cy)\n                set [rotation-x-scroll v] to (cx)\n                set [center-y-scroll v] to (cc)\n            end\n            set [y_vel v] to [0]\n        end\n    end\nend\n\nwhen [e v] key pressed\nif <(username) = [stratfordjames]> then\n    set [_degrees v] to [170]\n    set [_y position v] to [750]\n    set [rotation-x-scroll v] to [170]\nend\n\n@@Cloud_Players\n\nwhen I start as a clone\nshow\nsay []\nset rotation style [all around v]\nset [ghost v] effect to (100)\ngo to [front v] layer\n\nwhen flag clicked\nhide\nset [names v] to [0]\n\ndefine @Position XY (@player) (x) (y)\nif <(costume [name v]) = [arrow]> then\n    move ((0) - (d)) steps\nend\nchange x by (((x) - (x position)) / (2.5555555555))\nchange y by (((y) - (y position)) / (2.5555555555))\nset size to ((size) - (20)) %\nswitch costume to (join (item (((@player) * (6)) - (1)) of [cloud list v]) [a])\npoint in direction ((([atan v] of ((x position) / ((y position) - ((center-y-scroll) + (((110) - (size)) * (3))))) ) + (<not <((center-y-scroll) + (((110) - (size)) * (3))) > (y position)>> * (180))) + (-90))\nshow\nif <<<(x position) < [-250]> or <(x position) > [250]>> or <<(y position) < [-185]> or <(y position) > [185]>>> then\n    switch costume to (arrow v)\n    point in direction (([atan v] of ((x position) / (y position)) ) + (<not <[0] > (y position)>> * (180)))\n    set [d v] to ((32) + ((([abs v] of (x position) ) / (20)) + (([abs v] of (y position) ) / (25))))\n    move (d) steps\nelse\n    if <<<(x position) > [-250]> and <(x position) < [250]>> and <<(y position) < [185]> and <(y position) > [-185]>>> then\n        switch costume to (join (item (((@player) * (6)) - (1)) of [cloud list v]) [a])\n        point in direction ((([atan v] of ((x position) / ((y position) - ((center-y-scroll) + (((110) - (size)) * (3))))) ) + (<not <((center-y-scroll) + (((110) - (size)) * (3))) > (y position)>> * (180))) + (-90))\n    end\nend\nif <(item (@player) of [active check v]) = [1]> then\n    change [ghost v] effect by (-20)\n    if <(item (((@player) * (6)) - (2)) of [cloud list v]) = [10]> then\n        if <<(names) = [1]> or <touching (mouse-pointer v)?>> then\n            say (item (@player) of [usernames v])\n        else\n            if <<<([abs v] of (x position) ) < [240]> and <([abs v] of (y position) ) < [180]>> and <not <(costume [name v]) = [arrow]>>> then\n                say (item (@player) of [usernames v])\n            else\n                say []\n            end\n        end\n    else\n        say (item ((item (((@player) * (6)) - (2)) of [cloud list v]) - (10)) of [chat list v])\n    end\nelse\n    change [ghost v] effect by (20)\n    say []\nend\n\nwhen I receive [online_tick v]\n@Position XY (@ID) ((((item (((@ID) * (6)) - (4)) of [cloud list v]) - (5000)) * ((size) / (100))) * ([sin v] of (((item (((@ID) * (6)) - (5)) of [cloud list v]) - (5000)) - (rotation-x-scroll)) )) (((center-y-scroll) + (((110) - (size)) * (3))) + ((((item (((@ID) * (6)) - (4)) of [cloud list v]) - (5000)) * ((size) / (100))) * ([cos v] of (((item (((@ID) * (6)) - (5)) of [cloud list v]) - (5000)) - (rotation-x-scroll)) )))\n\nwhen I receive [online start v]\nset [@id v] to [1]\nrepeat (length of [active check v])\n    if <(@ID) = (@Player)> then\n    else\n        create clone of (_myself_ v)\n    end\n    change [@id v] by (1)\nend\n\n@player\n\ndefine position\ngo to x: (((_y position) * ((size) / (100))) * ([sin v] of ((_degrees) - (rotation-x-scroll)) )) y: (((center-y-scroll) + (((110) - (size)) * (3))) + (((_y position) * ((size) / (100))) * ([cos v] of ((_degrees) - (rotation-x-scroll)) )))\npoint in direction ((([sin v] of (x position) ) * (8)) + (90))\nset size to ((size) - (20)) %\nsay (item (chat-selection) of [chat list v])\nif <(pause) = [0]> then\n    if <<key (right arrow v) pressed?> or <<key (d v) pressed?> or <<mouse down?> and <(mouse x) > [30]>>>> then\n        switch costume to (2a v)\n        if <<<mouse down?> and <(mouse y) > ((y position) + (10))>> or <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n            switch costume to (4a v)\n        end\n    else\n        if <<key (left arrow v) pressed?> or <<key (a v) pressed?> or <<mouse down?> and <(mouse x) < [-30]>>>> then\n            switch costume to (1a v)\n            if <<<(mouse y) > ((y position) + (10))> and <mouse down?>> or <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n                switch costume to (5a v)\n            end\n        else\n            switch costume to (3a v)\n            if <<<(mouse y) > ((y position) + (10))> and <mouse down?>> or <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n                switch costume to (6a v)\n            end\n        end\n    end\nelse\n    switch costume to (3a v)\nend\nset [localcostume v] to (letter (1) of (costume [name v]))\n\nwhen flag clicked\ngo to [front v] layer\nshow\n\nwhen I receive [tick v]\nposition\n\nwhen this sprite clicked\nset [chat-open? v] to ((1) - (chat-open?))\nif <(chat-open?) = [1]> then\n    ask [Which item of chat?] and wait\n    set [chat-selection v] to (answer)\n    broadcast (mobile v)\nend\n\n@Flash\n\nwhen I receive [intro v]\nshow\nclear graphic effects\ngo to x: (0) y: (0)\nset [ghost v] effect to (0)\nwait (0.15) seconds\nrepeat (13)\n    change [ghost v] effect by (8)\nend\nhide\n\nwhen I receive [tick v]\ngo to [front v] layer\ngo to [front v] layer\n\nwhen flag clicked\nset [time-score v] to [0]\nwait until <<key (any v) pressed?> or <mouse down?>>\nforever\n    if <(cx) = [343]> then\n        stop [this script v]\n    end\n    change [time-score v] by (1)\n    wait (1) seconds\nend\n\nwhen [n v] key pressed\nset [names v] to ((1) - (names))\n\n@signs\n\nwhen flag clicked\nset [cx v] to [0]\nset [cc v] to [-480]\nset [cy v] to [515]\nclone @ [60] [565] [-10]\nclone @ [91] [1026] [-10]\nclone @ [121.4] [864] [80]\nclone @ [222.5] [790] [80]\nclone @ [-16.1] [488] [0]\nclone @ [-16] [488] [0]\nclone @ [301] [646] [-10]\nclone @ [167.1] [846] [0]\nclone @ [167] [843] [0]\nhide\nforever\n    erase all\n    Run\nend\n\ndefine Run\nsign @ [60] [565] direction [-10] clone? [0]\nsign @ [91] [1026] direction [-10] clone? [0]\nsign @ [121.4] [864] direction [80] clone? [0]\nsign @ [222.5] [790] direction [80] clone? [0]\nsign @ [301] [646] direction [-10] clone? [0]\nbroadcast (Tick v)\n\ndefine sign @ (x) (y) direction (d) clone? (c)\nif <(c) = [1]> then\n    positon (x) (y) (d)\n    if <<(join (@x) [A]) = [-16.1A]> or <(join (@x) [A]) = [167.1A]>> then\n        switch costume to (join [flag] (@flag))\n        go to [back v] layer\n    else\n        if <<(@x) = [-16]> or <(@x) = [167]>> then\n            switch costume to (cover v)\n            go to [back v] layer\n            go [forward v] (5) layers\n        else\n            switch costume to (sign v)\n            go to [back v] layer\n        end\n    end\nelse\n    if <<(((y) * ((size) / (100))) * ([sin v] of ((x) - (rotation-x-scroll)) )) > [-280]> and <(((y) * ((size) / (100))) * ([sin v] of ((x) - (rotation-x-scroll)) )) < [280]>> then\n        positon (x) (y) (d)\n        switch costume to (base v)\n        stamp\n    end\nend\n\ndefine clone @ (x) (y) (d)\nset [@x v] to (x)\nset [@y v] to (y)\nset [@deg v] to (d)\ncreate clone of (_myself_ v)\n\nwhen I start as a clone\ngo to [back v] layer\nshow\ngo [backward v] (999) layers\nset [@flag v] to [0]\nif <(join (@x) [A]) = [-16.1A]> then\n    switch costume to (flag0 v)\n    wait (3) seconds\n    forever\n        if <touching (player v)?> then\n            set [cc v] to [-480]\n            set [cx v] to [343]\n            set [cy v] to [515]\n            broadcast (win v)\n            repeat (5)\n                change [brightness v] effect by (20)\n                change [@deg v] by (((30) - (@deg)) / (1.5))\n            end\n            set [@flag v] to [1]\n            wait (0.04) seconds\n            repeat (10)\n                change [brightness v] effect by (-10)\n                change [@deg v] by (((0) - (@deg)) / (6))\n            end\n            repeat until <(@deg) < [0.3]>\n                change [@deg v] by (((0) - (@deg)) / (6))\n            end\n            set [@deg v] to [0]\n            stop [this script v]\n        end\n    end\nelse\n    if <(join (@x) [A]) = [167.1A]> then\n        switch costume to (flag0 v)\n        wait (3) seconds\n        forever\n            if <touching (player v)?> then\n                set [cc v] to [-250]\n                set [cx v] to [167]\n                set [cy v] to [868]\n                repeat (5)\n                    change [brightness v] effect by (20)\n                    change [@deg v] by (((30) - (@deg)) / (1.5))\n                end\n                set [@flag v] to [1]\n                wait (0.04) seconds\n                repeat (10)\n                    change [brightness v] effect by (-10)\n                    change [@deg v] by (((0) - (@deg)) / (6))\n                end\n                repeat until <(@deg) < [0.3]>\n                    change [@deg v] by (((0) - (@deg)) / (6))\n                end\n                set [@deg v] to [0]\n                stop [this script v]\n            end\n        end\n    end\nend\n\ndefine positon (x) (y) (d)\nset size to (size) %\nswitch costume to (costume1 v)\ngo to x: (((y) * ((size) / (100))) * ([sin v] of ((x) - (rotation-x-scroll)) )) y: (((center-y-scroll) + (((110) - (size)) * (3))) + (((y) * ((size) / (100))) * ([cos v] of ((x) - (rotation-x-scroll)) )))\npoint in direction ((d) + ((([atan v] of ((x position) / ((y position) - ((center-y-scroll) + (((110) - (size)) * (3))))) ) + (<not <((center-y-scroll) + (((110) - (size)) * (3))) > (y position)>> * (180))) + (-90)))\n\nwhen I receive [tick v]\nrepeat (1)\n    sign @ (@x) (@y) direction (@deg) clone? [1]\nend\n\n@particles\n\nwhen I receive [win v]\nif <(costume [name v]) = [blank]> then\n    set [color v] effect to (0)\n    repeat (pick random (9) to (12))\n        create clone of (_myself_ v)\n    end\nend\n\nwhen flag clicked\nswitch costume to (blank v)\nhide\n\ndefine move (x vel)\nset size to (50) %\nswitch costume to (particle v)\nclear graphic effects\nshow\nrepeat (20)\n    go to [back v] layer\n    change x by (x vel)\n    change y by (@YV)\n    change [@yv v] by (-1)\n    change size by (-1)\n    change [ghost v] effect by (1)\nend\nrepeat (7)\n    go to [back v] layer\n    change x by (x vel)\n    change y by (@YV)\n    change [@yv v] by (-1)\n    change [ghost v] effect by (11.5)\n    change size by (-1)\nend\ndelete this clone\n\nwhen I start as a clone\ngo to (player v)\nset [@yv v] to (pick random (11) to (14))\nmove (pick random (-4.5) to (4.5))\n\n@UI/alerts\n\nwhen flag clicked\nset [pause v] to [0]\nhide\ngo to x: (0) y: (0)\nswitch costume to (splash-screen v)\nset [@id v] to [ov]\ncreate clone of (_myself_ v)\nset [@id v] to [null]\n\nwhen I receive [win v]\nif <(@id) = [null]> then\n    switch costume to (splash-screen v)\n    hide\n    wait (1) seconds\n    set [pause v] to [1]\n    go to [front v] layer\n    wait (1.25) seconds\n    go to x: (0) y: (-200)\n    set [ghost v] effect to (100)\n    show\n    go to [front v] layer\n    wait (0.1) seconds\n    repeat until <(y position) > [-0.5]>\n        change [ghost v] effect by (-10)\n        change y by (((1) - (y position)) / (7))\n    end\n    wait (0.2) seconds\n    draw (TIME-SCORE)\n    wait (1.5) seconds\n    set [@id v] to [button]\n    create clone of (_myself_ v)\n    set [@id v] to [null]\nelse\n    if <(@id) = [ov]> then\n        hide\n        set [ghost v] effect to (100)\n        switch costume to (overlay v)\n        wait (2.5) seconds\n        show\n        repeat (10)\n            change [ghost v] effect by (-10)\n        end\n    end\nend\n\nwhen I receive [tick v]\nif <(@id) = [number]> then\n    go to [front v] layer\n    go to [front v] layer\nend\n\nwhen I start as a clone\nif <(@id) = [ov]> then\n    go to [front v] layer\n    hide\nelse\n    if <(@id) = [val]> then\n        set [@id v] to [number]\n        show\n        set [ghost v] effect to (100)\n        repeat (10)\n            change [ghost v] effect by (-10)\n        end\n    else\n        if <(@id) = [button]> then\n            go to [front v] layer\n            go to x: (0) y: (0)\n            switch costume to (button00 v)\n            set size to (130) %\n            show\n            set [ghost v] effect to (100)\n            repeat until <(size) < [100.3]>\n                change size by (((100) - (size)) / (5))\n                change [ghost v] effect by (-10)\n            end\n            set size to (100) %\n            forever\n                switch costume to (hitbox10 v)\n                if <touching (mouse-pointer v)?> then\n                    switch costume to (button10 v)\n                    if <mouse down?> then\n                        broadcast (continue v)\n                        stop [this script v]\n                    end\n                else\n                    switch costume to (hitbox01 v)\n                    if <touching (mouse-pointer v)?> then\n                        switch costume to (button01 v)\n                        if <mouse down?> then\n                            broadcast (disconnect v)\n                            repeat (10)\n                                change [ghost v] effect by (10)\n                            end\n                            stop [this script v]\n                        end\n                    else\n                        switch costume to (button00 v)\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine draw (time)\ngo to x: ((25) - (((length of (time)) + (5)) * (6.15))) y: (-60)\nset size to (80) %\nset [@id v] to [val]\nswitch costume to (time v)\ncreate clone of (_myself_ v)\nchange x by (30)\nchange y by (5)\nset size to (27) %\nset [c_! v] to [1]\nrepeat (length of (time))\n    switch costume to (join (letter (c_!) of (time)) [a])\n    set [@id v] to [val]\n    create clone of (_myself_ v)\n    change [c_! v] by (1)\n    if <(costume [name v]) = [1a]> then\n        change x by (9)\n    else\n        change x by (12)\n    end\nend\nset [@id v] to [null]\nset size to (100) %\nswitch costume to (splash-screen v)\ngo to x: (0) y: (0)\n\nwhen I receive [continue v]\nset [pause v] to [0]\nrepeat (10)\n    change [ghost v] effect by (10)\nend\ndelete this clone\n\n@Chat\n\nwhen flag clicked\nset [ghost v] effect to (100)\nset [chat-open? v] to [0]\ndelete all of [chat list v]\nadd [Hello!] to [chat list v]\nadd [This way!] to [chat list v]\nadd [Bye!] to [chat list v]\nadd [Watch out!] to [chat list v]\nadd [Lol] to [chat list v]\nadd [It's lagging :\(] to [chat list v]\nadd [Noooooo!] to [chat list v]\nadd [Okay!] to [chat list v]\nadd [Do you wan't to be friends?] to [chat list v]\nhide\nset [ghost v] to [100]\nset [chat-open? v] to [0]\ngo to [front v] layer\nforever\n    set [ghost v] effect to (ghost)\n    if <(chat-open?) = [1]> then\n        if <not <(ghost) = [0]>> then\n            change [ghost v] by (-20)\n        end\n    else\n        if <not <(ghost) = [100]>> then\n            change [ghost v] by (20)\n        end\n    end\n    go to x: (-150) y: (0)\n    go to [front v] layer\n    go [backward v] (10) layers\nend\n\nwhen flag clicked\nset [chat-selection v] to [0]\nforever\n    if <(chat-open?) = [1]> then\n        if <key (1 v) pressed?> then\n            reset\n            set [chat-selection v] to [1]\n            wait until <not <key (1 v) pressed?>>\n        end\n        if <key (2 v) pressed?> then\n            reset\n            set [chat-selection v] to [2]\n            wait until <not <key (2 v) pressed?>>\n        end\n        if <key (3 v) pressed?> then\n            reset\n            set [chat-selection v] to [3]\n            wait until <not <key (3 v) pressed?>>\n        end\n        if <key (4 v) pressed?> then\n            reset\n            set [chat-selection v] to [4]\n            wait until <not <key (4 v) pressed?>>\n        end\n        if <key (5 v) pressed?> then\n            reset\n            set [chat-selection v] to [5]\n            wait until <not <key (5 v) pressed?>>\n        end\n        if <key (6 v) pressed?> then\n            reset\n            set [chat-selection v] to [6]\n            wait until <not <key (6 v) pressed?>>\n        end\n        if <key (7 v) pressed?> then\n            reset\n            set [chat-selection v] to [7]\n            wait until <not <key (7 v) pressed?>>\n        end\n        if <key (8 v) pressed?> then\n            reset\n            set [chat-selection v] to [8]\n            wait until <not <key (8 v) pressed?>>\n        end\n        if <key (9 v) pressed?> then\n            reset\n            set [chat-selection v] to [9]\n            wait until <not <key (9 v) pressed?>>\n        end\n    end\nend\n\nwhen flag clicked\nset [chat reset v] to [6]\nforever\n    wait (1) seconds\n    change [chat reset v] by (1)\n    if <(chat reset) > [5]> then\n        set [chat-selection v] to [0]\n    end\nend\n\ndefine reset\nset [chat-open? v] to [0]\nset [chat reset v] to [0]\n\nwhen flag clicked\nswitch costume to (main v)\nshow\nwait (0.1) seconds\nforever\n    if <key (t v) pressed?> then\n        set [chat-open? v] to ((1) - (chat-open?))\n        wait until <not <key (t v) pressed?>>\n    end\nend\n\nwhen I receive [mobile v]\nreset\n\n