☁️ Forest - MMO platformer

Instructions:                       | ☁️ Forest - MMO platformer |\n__________________________________________\n                      ❤️ + ⭐ + follow + don't ad pls\n__________________________________________\nif there is a laggy or you are not a scratcher, play here\nhttps://turbowarp.org/647648455\n__________________________________________\n                                     | controls |\n\nmove with WASD or arrow keys\n\ndo not touch the thorns, stakes, axe, arrows and campfire, if you touch them the game starts again\n\nif you finish the game, you will be colourful\n__________________________________________

@Stage\n\nwhen flag clicked\nforever\n    set volume to (15) %\n    play sound [music1 v] until done\nend\n\n@ ☁️\n\ndefine (synchronize) length (length) set (set)\nset [synchronized v] to []\nset [cut off v] to []\nset [. v] to [0]\nset [not v] to [0]\nset [contain numbers? v] to [-1]\nrepeat (length of (length))\n    change [. v] by (1)\n    repeat (10)\n        change [contain numbers? v] by (1)\n        if <not < (contain numbers?) contains (letter (.) of (length))?>> then\n            change [not v] by (1)\n        end\n    end\n    if <(not) = [10]> then\n        set [synchronized v] to []\n        stop [this script v]\n    end\n    set [contain numbers? v] to [-1]\n    set [not v] to [0]\nend\nif <(length of (synchronize)) < (length)> then\n    set [gaps v] to []\n    repeat ((length) - (length of (synchronize)))\n        set [gaps v] to (join (set) (gaps))\n    end\n    set [synchronized v] to (join (synchronize) (gaps))\nelse\n    if <<(length of (synchronize)) = (length)> or <(length) = [0]>> then\n        set [synchronized v] to (synchronize)\n    else\n        if <(length of (synchronize)) > (length)> then\n            set [. v] to [0]\n            set [... v] to []\n            repeat (length)\n                change [. v] by (1)\n                set [... v] to (join (...) (letter (.) of (synchronize)))\n            end\n            set [synchronized v] to (...)\n            set [. v] to (length)\n            set [... v] to []\n            repeat ((length of (synchronize)) - (length))\n                change [. v] by (1)\n                set [... v] to (join (...) (letter (.) of (synchronize)))\n            end\n            set [cut off v] to (...)\n        end\n    end\nend\n\ndefine convert n: (numbers)\nset [.... v] to [0]\nset [number value v] to []\nrepeat (length of (numbers))\n    change [.... v] by (1)\n    switch costume to (letter (....) of (numbers))\n    if <(length of (costume [number v])) = [1]> then\n        set [number value v] to (join (number value) (join (costume [number v]) [00]))\n    else\n        if <(length of (costume [number v])) = [2]> then\n            set [number value v] to (join (number value) (join (costume [number v]) [0]))\n        else\n            if <(length of (costume [number v])) = [3]> then\n                set [number value v] to (join (number value) (costume [number v]))\n            end\n        end\n    end\nend\n\ndefine convert l: (letters)\ndelete all of [letters v]\nswitch costume to (q v)\nrepeat (123)\n    add (costume [name v]) to [letters v]\n    next costume\nend\nset [..... v] to [0]\nset [3 v] to []\nset [letter value v] to []\nrepeat ((length of (letters)) / (3))\n    repeat (3)\n        change [..... v] by (1)\n        if <not <(letter (.....) of (letters)) = [0]>> then\n            set [3 v] to (join (3) (letter (.....) of (letters)))\n        end\n    end\n    switch costume to (item (3) of [letters v])\n    set [letter value v] to (join (letter value) (costume [name v]))\n    set [3 v] to []\nend\n\nwhen flag clicked\nid\nbroadcast (cloud v)\nbroadcast (online v)\n\ndefine id\nset [online v] to [0]\nset [old cloud v] to (id)\nset [id v] to ((pick random (100) to (400)) * (10))\nrepeat (99999)\n    if <not <(cloud id) = (old cloud)>> then\n        if <(cloud id) = (id)> then\n            set [old cloud v] to (id)\n            set [id v] to ((pick random (100) to (400)) * (10))\n            id\n            stop [this script v]\n        end\n    end\nend\n\nwhen I receive [cloud v]\nforever\n    send cloud\n    if <(fg?) = [1]> then\n        if <(time) < (☁ best)> then\n            wait (0.1) seconds\n            set [☁ best v] to (time)\n        end\n    end\nend\n\nwhen I receive [online v]\nforever\n    if <not <[fast id v] contains (cloud id)?>> then\n        add (cloud name) to [fast name v]\n        add (cloud id) to [fast id v]\n    end\nend\n\nwhen flag clicked\nforever\n    wait (3) seconds\n    set [online v] to (length of [fast id v])\n    online\n    delete all of [fast name v]\n    delete all of [fast id v]\nend\n\ndefine online\nset [o v] to [0]\ndelete all of [online ids v]\ndelete all of [online name v]\nrepeat (length of [fast name v])\n    change [o v] by (1)\n    add (item (o) of [fast name v]) to [online name v]\n    add (item (o) of [fast id v]) to [online ids v]\nend\n\nwhen flag clicked\nforever\n    cloud translate\nend\n\ndefine separate (leave) (letter)\nset [.. v] to [0]\ndelete all of [departed v]\nset [leave v] to []\nrepeat (length of (leave))\n    change [.. v] by (1)\n    if <(letter (..) of (leave)) = (letter)> then\n        if <not <(leave) = []>> then\n            add (leave) to [departed v]\n            set [leave v] to []\n        end\n    else\n        set [leave v] to (join (leave) (letter (..) of (leave)))\n    end\nend\nif <not <(leave) = []>> then\n    add (leave) to [departed v]\n    set [leave v] to []\nend\n\ndefine cloud (add)\nset [cloud v] to (join (cloud) (join [|] (add)))\n\ndefine send cloud\nset [cloud v] to []\ncloud (id)\ncloud (username)\ncloud (sx)\ncloud (sy)\ncloud ([costume name v] of [me v])\ncloud ([direction v] of [me v])\ncloud (c)\ncloud (b)\ncloud (g)\ncloud (time)\nconvert n: (cloud)\nsend cloud (id) (number value)\n\ndefine cloud translate\nconvert l: (☁ cloud)\nseparate (letter value) [|]\nset [cloud id v] to (item (1) of [departed v])\nset [cloud name v] to (item (2) of [departed v])\nset [cloud x v] to (item (3) of [departed v])\nset [cloud y v] to (item (4) of [departed v])\nset [cloud costume v] to (item (5) of [departed v])\nset [cloud d v] to (item (6) of [departed v])\nset [cloud c v] to (item (7) of [departed v])\nset [cloud b v] to (item (8) of [departed v])\nset [cloud g v] to (item (9) of [departed v])\nset [cloud time v] to (item (10) of [departed v])\n\ndefine send cloud (id) (number value)\nset [☁ cloud v] to (number value)\n\n@me\n\ndefine platforms (jump hight) (gravity) (friction) (running speed)\nset rotation style [left-right v]\nswitch costume to (hitbox v)\nif <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <[0] < (mouse x)>>> then\n    change [xv v] by (running speed)\n    set [d v] to [90]\nend\nif <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <[0] > (mouse x)>>> then\n    change [xv v] by ((running speed) * (-1))\n    set [d v] to [-90]\nend\npoint in direction (d)\nset [xv v] to ((xv) * (friction))\nchange x by (xv)\nif <touching (map hitbox v)?> then\n    set [slope v] to [0]\n    repeat until <<(slope) = [8]> or <not <touching (map hitbox v)?>>>\n        change [slope v] by (1)\n        change y by (1)\n    end\n    if <touching (map hitbox v)?> then\n        change y by ((slope) * (-1))\n        repeat ([ceiling v] of ([abs v] of (xv) ) )\n            if <touching (map hitbox v)?> then\n                change x by ((([abs v] of (xv) ) / (xv)) * (-1))\n            end\n        end\n        set [xv v] to [0]\n    end\nend\nchange y by (yv)\nif <touching (map hitbox v)?> then\n    repeat ([ceiling v] of ([abs v] of (yv) ) )\n        if <touching (map hitbox v)?> then\n            change y by ((([abs v] of (yv) ) / (yv)) * (-1))\n        end\n    end\n    if <<(([abs v] of (yv) ) / (yv)) = [-1]> and <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <[0] < (mouse y)>>>> then\n        set [yv v] to (jump hight)\n    else\n        set [yv v] to [0]\n    end\nelse\n    change [yv v] by (-1)\nend\nswitch costume to (idle v)\nif <<<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <[0] > (mouse x)>>> or <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <[0] < (mouse x)>>>> then\n    switch costume to (join [Walk ] (walk))\nend\nif <(yv) > [3]> then\n    switch costume to (jump v)\nend\nif <(yv) < [-6]> then\n    switch costume to (fall v)\nend\nchange [sx v] by (round ((x position) * (-1)))\nchange [sy v] by (round ((y position) * (-1)))\ngo to x: (0) y: (0)\n\nwhen flag clicked\nset [hat v] to []\nreset x and y\nforever\n    switch costume to (hitbox v)\n    if <touching (killers v)?> then\n        kill effect\n        reset x and y\n    end\n    platforms [10] [-1] [0.7] [3]\nend\n\nwhen flag clicked\nforever\n    set [walk v] to [1]\n    repeat (3)\n        change [walk v] by (1)\n        wait (0.01) seconds\n    end\nend\n\ndefine reset x and y\nset [g v] to [0]\nset [xv v] to [0]\nset [yv v] to [0]\nset [sx v] to [0]\nset [sy v] to [0]\n\ndefine kill effect\nswitch costume to (fall v)\nset [g v] to [0]\nrepeat (20)\n    change [g v] by (5)\n    change [sy v] by (round ((1) * (-1)))\nend\n\nwhen flag clicked\nforever\n    set [ghost v] effect to (g)\n    set [color v] effect to (c)\nend\n\nwhen flag clicked\nset [fg? v] to [0]\nset [c v] to (pick random (1) to (200))\nforever\n    if <(fg?) = [1]> then\n        change [c v] by (1)\n        if <[199] < (c)> then\n            set [c v] to [1]\n        end\n    end\n    if <[-2650] > (sx)> then\n        set [fg? v] to [1]\n    end\nend\n\nwhen flag clicked\nset [time v] to [0]\nrepeat until <[-2650] > (sx)>\n    wait (0.1) seconds\n    change [time v] by (1)\nend\n\nwhen flag clicked\nif <(scratcher?) = [0]> then\n    if <(☁ best) = [0]> then\n        set [scratcher? v] to [s0]\n    else\n        set [scratcher? v] to [s1]\n    end\nend\n\nwhen flag clicked\nforever\n    play sound [running v] until done\nend\n\nwhen flag clicked\nforever\n    if <touching (map hitbox v)?> then\n        wait (0.1) seconds\n        if <not <touching (map hitbox v)?>> then\n            set volume to (50) %\n            wait (0.1) seconds\n            set volume to (0) %\n        end\n    else\n        if <not <touching (map hitbox v)?>> then\n            wait (0.1) seconds\n            if <touching (map hitbox v)?> then\n                set volume to (50) %\n                wait (0.1) seconds\n                set volume to (0) %\n            end\n        end\n    end\n    if <<<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <[0] > (mouse x)>>> or <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <[0] < (mouse x)>>>> then\n        if <touching (map hitbox v)?> then\n            set volume to (50) %\n        else\n            wait (0.1) seconds\n            set volume to (0) %\n        end\n    else\n        set volume to (0) %\n    end\nend\n\nwhen flag clicked\nforever\n    set [costume v] to (costume [name v])\nend\n\n@others\n\ndefine create twins (twin?)\nset [twin id v] to [99]\nrepeat (twin?)\n    change [twin id v] by (1)\n    if <<[online ids v] contains ((twin id) * (10))?> and <not <(id) = ((twin id) * (10))>>> then\n        repeat (online)\n            if <(cloud id) = ((twin id) * (10))> then\n                set [color v] effect to (cloud c)\n                set [brightness v] effect to (cloud b)\n                go to x: ((cloud x) - (sx)) y: ((cloud y) - (sy))\n                if <<((cloud x) - (sx)) = (x position)> and <((cloud y) - (sy)) = (y position)>> then\n                    if <(item ((twin id) + (-99)) of [twins v]) = [0]> then\n                        replace item ((twin id) + (-99)) of [twins v] with [1]\n                        create clone of (_myself_ v)\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen flag clicked\ntwl [300]\nforever\n    create twins [300]\nend\n\ndefine twin\nset rotation style [left-right v]\nif <<[online ids v] contains ((twin id) * (10))?> and <not <((twin id) * (10)) = (id)>>> then\n    if <(cloud id) = ((twin id) * (10))> then\n        set [twin x v] to (cloud x)\n        set [twin y v] to (cloud y)\n    end\n    go to x: ((sx) - (twin x)) y: ((sy) - (twin y))\n    if <<((sx) - (twin x)) = (x position)> and <((sy) - (twin y)) = (y position)>> then\n        show\n        if <(cloud id) = ((twin id) * (10))> then\n            point in direction (cloud d)\n            set [color v] effect to (cloud c)\n            set [brightness v] effect to (cloud b)\n            set [ghost v] effect to (cloud g)\n            switch costume to (cloud costume)\n            say (join (cloud name) (join [ | ] (cloud time)))\n        end\n    else\n        hide\n        replace item ((twin id) + (-99)) of [twins v] with [0]\n        delete this clone\n    end\nelse\n    hide\n    replace item ((twin id) + (-99)) of [twins v] with [0]\n    delete this clone\nend\n\ndefine twl (?)\ndelete all of [twins v]\nrepeat (?)\n    add [0] to [twins v]\nend\n\nwhen I start as a clone\nforever\n    twin\nend\n\nwhen [h v] key pressed\nif <(username) = [lotofgame]> then\n    set [fg? v] to [1]\nend\n\n@map\n\nwhen flag clicked\ncreate map\n\ndefine create map\nset [m. v] to [0]\nrepeat (length of [map x v])\n    change [m. v] by (1)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nforever\n    switch costume to (xy v)\n    go to x: ((sx) - (item (m.) of [map x v])) y: ((sy) - (item (m.) of [map y v]))\n    if <<((sx) - (item (m.) of [map x v])) = (x position)> and <((sy) - (item (m.) of [map y v])) = (y position)>> then\n        show\n    else\n        hide\n    end\n    switch costume to (join [m] (m.))\nend\n\nwhen I start as a clone\nforever\n    go to [front v] layer\nend\n\n@map hitbox\n\nwhen flag clicked\ncreate map\n\ndefine create map\nset [m. v] to [0]\nrepeat (length of [map x v])\n    change [m. v] by (1)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nforever\n    switch costume to (xy v)\n    go to x: ((sx) - (item (m.) of [map x v])) y: ((sy) - (item (m.) of [map y v]))\n    if <<((sx) - (item (m.) of [map x v])) = (x position)> and <((sy) - (item (m.) of [map y v])) = (y position)>> then\n        show\n    else\n        hide\n    end\n    switch costume to (join [m] (m.))\nend\n\nwhen I start as a clone\nset [ghost v] effect to (100)\n\n@backgraund\n\nwhen flag clicked\nforever\n    backgraund\nend\n\nif <<(([cos v] of ([abs v] of ((sx) - (0)) ) ) * (25)) = (x position)> and <((sy) - (50)) = (y position)>> then\n\nwhen flag clicked\nforever\n    go to [back v] layer\nend\n\ndefine backgraund\nset size to (100) %\nswitch costume to (xy v)\ngo to x: (([cos v] of ([abs v] of ((sx) - (0)) ) ) * (25)) y: ((sy) - (65))\nshow\nswitch costume to (backgarund v)\n\n@backobjects\n\nwhen I start as a clone\nforever\n    go to [back v] layer\n    go [forward v] (1) layers\nend\n\ndefine create map\nset [m. v] to [0]\nrepeat (length of [map x v])\n    change [m. v] by (1)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nforever\n    switch costume to (xy v)\n    go to x: ((sx) - (item (m.) of [map x v])) y: ((sy) - (item (m.) of [map y v]))\n    if <<((sx) - (item (m.) of [map x v])) = (x position)> and <((sy) - (item (m.) of [map y v])) = (y position)>> then\n        show\n    else\n        hide\n    end\n    switch costume to (join [m] (m.))\nend\n\nwhen flag clicked\ncreate map\n\n@killers\n\nwhen I start as a clone\nforever\n    go to [back v] layer\n    go [forward v] (1) layers\nend\n\ndefine create map\nset [m. v] to [0]\nrepeat (length of [map x v])\n    change [m. v] by (1)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nset [ghost v] effect to (100)\nforever\n    switch costume to (xy v)\n    go to x: ((sx) - (item (m.) of [map x v])) y: ((sy) - (item (m.) of [map y v]))\n    if <<((sx) - (item (m.) of [map x v])) = (x position)> and <((sy) - (item (m.) of [map y v])) = (y position)>> then\n        show\n    else\n        hide\n    end\n    switch costume to (join [m] (m.))\nend\n\nwhen flag clicked\ncreate map\n\nset [sx v] to [-2500]\n\n@cover\n\nwhen flag clicked\nforever\n    go to x: (0) y: (0)\n    hide\n    reset timer\nend\n\nwhen [timer v] > (0)\nforever\n    go to [front v] layer\n    show\nend\n\n@writer\n\ndefine write x: (x) y: (y) b: (b) w (wh) o: (o)\nset size to (b) %\nset y to (y)\nset [writer: . v] to [0]\nif <(o) = [o]> then\n    set x to (round ((((length of (wh)) * ((b) / (10))) / (2)) * (-1)))\nelse\n    set x to (x)\nend\nrepeat (length of (wh))\n    change [writer: . v] by (1)\n    switch costume to (letter (writer: .) of (wh))\n    create clone of (_myself_ v)\n    change x by (round ((b) / (10)))\nend\n\nwhen flag clicked\nrepeat until <not <(online) = [0]>>\n    write x: [-160] y: [156] b: [150] w [l] o: [n]\nend\nrepeat (200)\n    write x: [-160] y: [156] b: [150] w [l] o: [n]\nend\nstart sound [Connect v]\nforever\n    if <(scratcher?) = [s1]> then\n        write x: [-205] y: [156] b: [150] w (online) o: [n]\n    end\nend\n\nwhen I start as a clone\nshow\nwait (0.0001) seconds\ndelete this clone\n\nwhen I start as a clone\nforever\n    go to [front v] layer\nend\n\nwhen flag clicked\nforever\n    write x: [-60] y: [156] b: [150] w (time) o: [n]\n    if <(scratcher?) = [s1]> then\n        write x: [125] y: [156] b: [150] w (☁ best) o: [n]\n    end\n    if <(scratcher?) = [s0]> then\n        write x: [0] y: [-150] b: [150] w [n] o: [n]\n    end\nend\n\n