(UPDATED)WINTER-A Cloud Scrolling Platformer by zqwang31
@Stage\n\nwhen flag clicked\nswitch backdrop to (backdrop1 v)\n\n@Blank\n\n@Opponents\n\ndefine Decode chat (#)\nif <(#) = [0]> then\n\ndefine begin decode of (encoded)\nset [encoded v] to (encoded)\nset [letter # v] to [1]\n\ndefine value = read from encoded\nset [value v] to []\nforever\n    set [idx v] to (join (letter (letter #) of (encoded)) (letter ((letter #) + (1)) of (encoded)))\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\nhide\nclear graphic effects\nset [ghost v] effect to (50)\nset [offline v] to [100]\nset [player # v] to [1]\npoint in direction (90)\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        set [offline v] to [100]\n    else\n        tick\n    end\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                            else\n                                if <(player #) = [9]> then\n                                    set [value v] to (☁ P9)\n                                else\n                                    if <(player #) = [10]> then\n                                        set [value v] to (☁ P10)\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen I receive [decode chat v]\nDecode chat (value)\n\ndefine tick\nvalue = cloud # (player #)\nif <(join (value) [A]) = (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 (value) [A])\n    if <(offline) > [99]> then\n        show\n    end\n    set [offline v] to [0]\nend\nbegin decode of (value)\nvalue = read from encoded\nswitch costume to (value)\nvalue = read from encoded\nif <<<(y position) < [-160]> or <[160] < (y position)>> or <<(x position) < [-220]> or <[220] < (x position)>>> then\n    set rotation style [all around v]\n    go to [front v] layer\n    point towards (player v)\n    switch costume to (arrow v)\n    if on edge, bounce\n    think []\n    set [ghost v] effect to (0)\nelse\n    set rotation style [don't rotate v]\n    point in direction (90)\n    set [ghost v] effect to (10)\n    if <(names?) = [0]> then\n        think []\n    else\n        think (value)\n    end\nend\nvalue = read from encoded\nvalue = read from encoded\nset x to ((value) - (SCROLL X))\nvalue = read from encoded\nset y to ((value) - (SCROLL Y))\nvalue = read from encoded\nbroadcast (Decode chat v)\n\nwhen I receive [join game v]\nvalue = cloud # (player #)\nset [last value v] to (join (value) [A])\nwait (3) seconds\nvalue = cloud # (player #)\nif <(join (value) [A]) = (last value)> then\n    set [my player # v] to (player #)\nend\n\nwhen I receive [setup opponents v]\nsetup players\n\nwhen flag clicked\nset [names? v] to [1]\nforever\n    if <key (n v) pressed?> then\n        if <(names?) = [0]> then\n            set [names? v] to [1]\n        else\n            set [names? v] to [0]\n        end\n    end\nend\n\nwhen I receive [open shopping items v]\ngo [backward v] (1) layers\n\nwhen I receive [close shopping items v]\ngo [forward v] (1) layers\n\n@Cloud Connect\n\nwhen flag clicked\nclear graphic effects\nswitch costume to (connecting v)\ngo to x: (170) y: (130)\nforever\n    wait (1) seconds\n    if <(CONNECT) = [Connected]> then\n        switch costume to (connected v)\n        wait (2) seconds\n        repeat (20)\n            change [ghost v] effect by (5)\n        end\n        stop [this script v]\n    else\n        if <(CONNECT) = [Full]> then\n            switch costume to (full v)\n        else\n            switch costume to (connecting v)\n        end\n    end\nend\n\nwhen I receive [timeout v]\ngo to x: (0) y: (0)\nclear graphic effects\nswitch costume to (timeout v)\nshow\ngo to [front v] layer\nstop [all v]\n\n@Platforms\n\nwhen I receive [green flag v]\nhide\nset [x v] to [0]\nset [y v] to [0]\nswitch costume to (1 v)\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\n\nwhen I receive [tick v]\nposition ((x) - (SCROLL X)) ((y) - (SCROLL Y))\nset [ghost v] effect to (99)\n\ndefine position (x) (y)\ngo to x: (x) y: (y)\nif <<(x) = (x position)> and <(y) = (y position)>> then\n    show\nelse\n    hide\nend\n\ndefine Clone at (x) (y)\ncreate clone of (_myself_ v)\nchange [x v] by (x)\nchange [y v] by (y)\nnext costume\n\n@Art\n\nwhen I receive [green flag v]\nhide\nset [x v] to [0]\nset [y v] to [0]\nswitch costume to (1 v)\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\n\nwhen I receive [tick v]\nposition ((x) - (SCROLL X)) ((y) - (SCROLL Y))\n\ndefine position (x) (y)\ngo to x: (x) y: (y)\nif <<(x) = (x position)> and <(y) = (y position)>> then\n    show\nelse\n    hide\nend\n\ndefine Clone at (x) (y)\ncreate clone of (_myself_ v)\nchange [x v] by (x)\nchange [y v] by (y)\nnext costume\n\n@Checkpoint\n\nwhen [m v] key pressed\nset [mouse v] to (join ((mouse x) + (SCROLL X)) (join [,] (join [ ] ((mouse y) + (SCROLL Y)))))\nshow variable [mouse v]\n\nwhen I receive [green flag v]\nhide\n\nwhen I receive [tick v]\nposition ((x) - (SCROLL X)) ((y) - (SCROLL Y))\nif <(costume [number v]) = [1]> then\n    if <touching (player v)?> then\n        switch costume to (open v)\n        change [checkpoint v] by (1)\n    end\nend\ngo to [back v] layer\n\ndefine position (x) (y)\ngo to x: (x) y: (y)\nif <<(x) = (x position)> and <(y) = (y position)>> then\n    show\nelse\n    hide\nend\n\ndefine Clone at (x) (y)\nset [x v] to (x)\nset [y v] to (y)\ncreate clone of (_myself_ v)\n\nwhen flag clicked\nhide\nset [checkpoint v] to [0]\nset [x v] to [0]\nset [y v] to [0]\nswitch costume to (closed v)\nClone at [210] [30]\nClone at [726] [-95]\nClone at [1638] [90]\nClone at [2252] [-11]\nClone at [2678] [145]\nClone at [3136] [34]\nClone at [3588] [34]\nClone at [4149] [78]\nset [x v] to [-99999]\n\n@Bouncy\n\nwhen I receive [green flag v]\nhide\nset [x v] to [0]\nset [y v] to [0]\nswitch costume to (1 v)\nClone at [574] [-102]\nClone at [2825] [27]\nClone at [2879] [159]\nset [x v] to [-99999]\n\nwhen I receive [tick v]\nposition ((x) - (SCROLL X)) ((y) - (SCROLL Y))\nif <touching (player v)?> then\n\ndefine position (x) (y)\ngo to x: (x) y: (y)\nif <<(x) = (x position)> and <(y) = (y position)>> then\n    show\nelse\n    hide\nend\n\ndefine Clone at (x) (y)\nset [x v] to (x)\nset [y v] to (y)\ncreate clone of (_myself_ v)\n\nswitch costume to (bouncy2 v)\n\n@Saw\n\nwhen I receive [tick v]\nposition ((x) - (SCROLL X)) ((y) - (SCROLL Y))\nturn right (6) degrees\ngo to [back v] layer\n\ndefine position (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 [green flag v]\nhide\nset [x v] to [0]\nset [y v] to [0]\nswitch costume to (1 v)\nClone at [175] [-105]\nClone at [10] [-105]\nClone at [3245] [23]\nClone at [3354] [23]\nClone at [3457] [23]\nset [x v] to [-99999]\n\ndefine Clone at (x) (y)\nset [x v] to (x)\nset [y v] to (y)\ncreate clone of (_myself_ v)\n\n@Danger\n\nwhen I receive [green flag v]\nhide\nset [x v] to [0]\nset [y v] to [0]\nswitch costume to (1 v)\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\nClone at [480] [0]\n\nwhen I receive [tick v]\nposition ((x) - (SCROLL X)) ((y) - (SCROLL Y))\n\ndefine position (x) (y)\ngo to x: (x) y: (y)\nif <<(x) = (x position)> and <(y) = (y position)>> then\n    show\nelse\n    hide\nend\n\ndefine Clone at (x) (y)\ncreate clone of (_myself_ v)\nchange [x v] by (x)\nchange [y v] by (y)\nnext costume\n\n@Coins\n\nwhen I receive [tick v]\nposition ((x) - (SCROLL X)) ((y) - (SCROLL Y))\nif <touching (player v)?> then\n    change [coins v] by (1)\n    delete this clone\nend\nif <(tick) > [0]> then\n    next costume\n    set [tick v] to [0]\nelse\n    change [tick v] by (1)\nend\n\ndefine position (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 [green flag v]\nhide\npoint in direction (90)\nset [coins v] to [0]\nset [x v] to [0]\nset [tick v] to [0]\nset [y v] to [0]\nswitch costume to (1 v)\nClone at [90] [-90]\nClone at [320] [-90]\nClone at [940] [315]\nClone at [-152] [-90]\nClone at [200] [97]\nClone at [402] [-14]\nClone at [460] [74]\nClone at [515] [0]\nClone at [570] [-64]\nClone at [570] [-17]\nClone at [570] [37]\nClone at [1285] [95]\nClone at [1358] [95]\nClone at [1418] [214]\nClone at [1437] [260]\nClone at [1482] [297]\nClone at [1529] [260]\nClone at [1560] [214]\nClone at [818] [-50]\nClone at [967] [14]\nClone at [1116] [103]\nClone at [1819] [-10]\nClone at [1912] [-10]\nClone at [1998] [-10]\nClone at [2075] [-10]\nClone at [2408] [78]\nClone at [2540] [113]\nClone at [2674] [162]\nClone at [2959] [284]\nClone at [3169] [40]\nClone at [3297] [40]\nClone at [3403] [40]\nClone at [3659] [76]\nClone at [3767] [79]\nClone at [4002] [84]\nClone at [4128] [81]\nClone at [4134] [-107]\nClone at [4185] [-107]\nClone at [4264] [-60]\nClone at [4316] [-60]\nClone at [4369] [-60]\nClone at [4438] [5]\nClone at [4553] [69]\nClone at [4611] [69]\nClone at [4746] [149]\nClone at [4798] [149]\nClone at [4977] [65]\nClone at [4913] [65]\nClone at [5021] [-49]\nClone at [5114] [-49]\nset [x v] to [-99999]\n\ndefine Clone at (x) (y)\nset [x v] to (x)\nset [y v] to (y)\ncreate clone of (_myself_ v)\n\n@Coin_counter\n\nwhen flag clicked\nset size to (110) %\nset [clone# v] to [1]\nrepeat (30)\n    create clone of (_myself_ v)\n    change [clone# v] by (1)\nend\nhide\n\nwhen I start as a clone\nshow\nforever\n    go to x: (((clone#) * (15)) - (-55)) y: (155)\n    if <(length of (COINS)) < (clone#)> then\n        hide\n    else\n        show\n        switch costume to (letter (clone#) of (COINS))\n    end\nend\n\n@Love fave\n\nwhen flag clicked\nhide\nforever\n    wait (12) seconds\n    switch costume to (costume1 v)\n    go to x: (0) y: (50)\n    show\n    go to [front v] layer\n    start sound [Squish Pop v]\n    repeat (9)\n        change y by (-6)\n    end\n    repeat (5)\n        change y by (3)\n    end\n    repeat (5)\n        change y by (-1)\n    end\n    wait (0.4) seconds\n    repeat (15)\n        change y by (7)\n    end\n    hide\nend\n\n@Sprite 1\n\nwhen flag clicked\nhide\nforever\n    create clone of (_myself_ v)\n    wait (.005) seconds\nend\n\nwhen I start as a clone\ngo [backward v] (1) layers\nshow\nset size to (pick random (20) to (70)) %\nset [ghost v] effect to (pick random (70) to (90))\ngo to x: (250) y: (pick random (-200) to (200))\nglide (pick random (4) to (10)) secs to x: (-240) y: (y position)\ndelete this clone\n\n@Player\n\nwhen flag clicked\ndelete all of [chat v]\nadd [Hi!] to [chat v]\nadd [Come with me!] to [chat v]\nadd [Ok!] to [chat v]\nadd [Nice!] to [chat v]\nadd [Look at me!] to [chat v]\nadd [Hard!] to [chat v]\nadd [lol] to [chat v]\nadd [Bye!] to [chat v]\nadd [No thank you.] to [chat v]\n\nwhen flag clicked\nshow list [chat v]\nset [is the chat open v] to [0]\nforever\n    if <<key (t v) pressed?> or <<touching (mouse-pointer v)?> and <mouse down?>>> then\n        if <(is the chat open) = [1]> then\n            set [is the chat open v] to [0]\n        else\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\n    Chat\nend\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 [0]\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen flag clicked\nset [max players v] to [10]\nset [my player # v] to [0]\nset [connect v] to [Connecting]\nbroadcast (setup opponents v) and wait\nbroadcast (join game v) and wait\nif <(MY PLAYER #) > [0]> then\n    set [connect v] to [Connected]\nelse\n    set [connect v] to [Full]\nend\nbroadcast (begin v)\n\ndefine write (val) to encoded\nset [letter # v] to [1]\nrepeat (length of (val))\n    set [encoded v] to (join (encoded) (item # of (letter (letter #) of (val)) in [code v]))\n    change [letter # v] by (1)\nend\nset [encoded v] to (join (encoded) [00])\n\nwhen I receive [begin v]\nforever\n    if <(MY PLAYER #) > [0]> then\n        send cloud data\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                            else\n                                if <(player) = [9]> then\n                                    set [☁ p9 v] to (value)\n                                else\n                                    if <(player) = [10]> then\n                                        set [☁ p10 v] to (value)\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine send cloud data\nset [encoded v] to []\nwrite (costume [number v]) to encoded\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 (encoded)\n\nwhen flag clicked\nbroadcast (Green flag v) and wait\nbroadcast (Play Game v) and wait\n\nwhen I receive [green flag v]\nhide\ngo to [front v] layer\n\nwhen I receive [play game v]\nset [level v] to [1]\nforever\n    broadcast (Reset v) and wait\n    broadcast (Setup v) and wait\n    Reset\n    repeat until <(EXIT) > []>\n        Tick\n        broadcast (Tick v)\n    end\n    if <(EXIT) = [win]> then\n        Game - Win\n    else\n        set [exit v] to []\n    end\nend\n\ndefine Reset\nif <(CHECKPOINT) = [0]> then\n    set [x v] to [-100]\n    set [y v] to [-60]\n    set [scroll y v] to (y)\n    set [scroll x v] to (x)\nelse\n    if <(CHECKPOINT) = [1]> then\n        set [x v] to [210]\n        set [y v] to [60]\n        set [scroll y v] to (y)\n        set [scroll x v] to (x)\n    else\n        if <(CHECKPOINT) = [2]> then\n            set [x v] to [726]\n            set [y v] to [-95]\n            set [scroll y v] to (y)\n            set [scroll x v] to (x)\n        else\n            if <(CHECKPOINT) = [3]> then\n                set [x v] to [1635]\n                set [y v] to [91]\n                set [scroll y v] to (y)\n                set [scroll x v] to (x)\n            else\n                if <(CHECKPOINT) = [4]> then\n                    set [x v] to [2251]\n                    set [y v] to [-9]\n                    set [scroll y v] to (y)\n                    set [scroll x v] to (x)\n                else\n                    if <(CHECKPOINT) = [5]> then\n                        set [x v] to [2678]\n                        set [y v] to [145]\n                        set [scroll y v] to (y)\n                        set [scroll x v] to (x)\n                    else\n                        if <(CHECKPOINT) = [6]> then\n                            set [x v] to [3136]\n                            set [y v] to [34]\n                            set [scroll y v] to (y)\n                            set [scroll x v] to (x)\n                        else\n                            if <(CHECKPOINT) = [7]> then\n                                set [x v] to [3588]\n                                set [y v] to [34]\n                                set [scroll y v] to (y)\n                                set [scroll x v] to (x)\n                            else\n                                if <(CHECKPOINT) = [8]> then\n                                    set [x v] to [4149]\n                                    set [y v] to [78]\n                                    set [scroll y v] to (y)\n                                    set [scroll x v] to (x)\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\nset [sx v] to [0]\nset [sy v] to [0]\nset [in air v] to [5]\nset [timout v] to [0]\nset [exit v] to []\nset size to (100) %\nshow\nset rotation style [left-right v]\n\ndefine Tick\nif <touching (ladder v)?> then\n    change [sx v] by ((2) * (<<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<((mouse x) - (20)) > (x position)> and <mouse down?>>> - <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<((mouse x) + (20)) < (x position)> and <mouse down?>>>))\n    set [sx v] to ((sx) * (0.65))\nelse\n    change [sx v] by ((1.8) * (<<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<((mouse x) - (20)) > (x position)> and <mouse down?>>> - <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<((mouse x) + (20)) < (x position)> and <mouse down?>>>))\n    set [sx v] to ((sx) * (0.75))\nend\nif <([abs v] of (sx) ) > [0.9]> then\n    Change Player x by (round (sx))\nend\nif <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<((mouse y) - (20)) > (y position)> and <mouse down?>>> then\n    if <(in air) < [3]> then\n        if <(sy) > [-2]> then\n            set [sy v] to [12]\n        end\n    end\nend\nif <touching (bouncy v)?> then\n    set [sy v] to [20]\nend\nif <touching (ladder v)?> then\n    if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<((mouse y) - (20)) > (y position)> and <mouse down?>>> then\n        change [y v] by (6)\n    end\n    if <<<key (down arrow v) pressed?> or <key (s v) pressed?>> or <<((mouse y) + (20)) < (y position)> and <mouse down?>>> then\n        change [y v] by (-6)\n    end\n    set [sy v] to [0]\nelse\n    if <(sy) > [-20]> then\n        change [sy v] by (-1.3)\n    end\nend\nChange player y by (sy)\n Test - Die\nset [scroll x v] to (x)\nif <(SCROLL X) < [0]> then\n    set [scroll x v] to [0]\nend\nPosition\nchange [scroll y v] by (round (((y) - (SCROLL Y)) / (10)))\nif <(SCROLL Y) < [0]> then\n    set [scroll y v] to [0]\nend\nPosition\nif <(y) < [-180]> then\n    set [exit v] to [die]\nend\nif <<<<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<((mouse x) - (20)) > (x position)> and <mouse down?>>> or <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<((mouse x) + (20)) < (x position)> and <mouse down?>>>> or <<<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<((mouse y) - (20)) > (y position)> and <mouse down?>>> or <<<key (down arrow v) pressed?> or <key (s v) pressed?>> or <<((mouse y) + (20)) > (y position)> and <mouse down?>>>>> then\n    set [timout v] to [0]\nelse\n    change [timout v] by (1)\nend\nif <(timout) > [999]> then\n    broadcast (timeout v)\n    hide\nend\n\ndefine Change Player x by (sx)\nchange [x v] by (sx)\nPosition\nif <touching (platforms v)?> then\n    repeat (8)\n        change [y v] by (1)\n        Position\n        if <not <touching (platforms v)?>> then\n            stop [this script v]\n        end\n    end\n    change [y v] by (-8)\n    if <touching (platforms v)?> then\n        if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<((mouse y) - (5)) > (y position)> and <mouse down?>>> then\n            if <(sx) > [0]> then\n                set [sx v] to [-16]\n            else\n                set [sx v] to [16]\n            end\n            set [sy v] to [12]\n        end\n        Position\n    end\n    repeat until <not <touching (platforms v)?>>\n        change [x v] by ((([abs v] of (sx) ) / (sx)) * (-1))\n        Position\n    end\nend\n\ndefine Change player y by (sy)\nchange [y v] by (sy)\nchange [in air v] by (1)\nPosition\nrepeat until <not <touching (platforms v)?>>\n    change [y v] by ((([abs v] of (sy) ) / (sy)) * (-1))\n    if <(sy) < [0]> then\n        set [in air v] to [0]\n    end\n    Position\n    set [sy v] to [0]\nend\nif <touching (jump_through v)?> then\n    if <(sy) < [0]> then\n        change [y v] by ((sy) * (-1))\n        set [sy v] to [0]\n        set [in air v] to [0]\n        Position\n    end\nend\n\ndefine Position\ngo to x: ((x) - (SCROLL X)) y: ((y) - (SCROLL Y))\n\ndefine  Test - Die\nif <<touching (saw v)?> or <touching (danger v)?>> then\n    set [exit v] to [die]\n    Reset\nend\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\nset [ghost v] effect to (0)\n\nwhen I receive [timeout v]\nhide\n\nwhen I receive [buy costume 1 v]\nswitch costume to (costume1 v)\n\nwhen flag clicked\nswitch costume to (middle v)\n\nwhen I receive [buy middle2 v]\nswitch costume to (middle2 v)\n\nwhen I receive [close shopping items v]\ngo to [front v] layer\n\nwhen I receive [open shopping items v]\ngo to [back v] layer\n\nwhen I receive [buy crown v]\nswitch costume to (costume2 v)\n\n@Sprite2\n\nwhen this sprite clicked\nbroadcast (open shop v)\n\nwhen flag clicked\ngo to [front v] layer\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        change size by (((140) - (size)) / (4))\n    else\n        change size by (((100) - (size)) / (4))\n    end\nend\n\n@Sprite4\n\nwhen this sprite clicked\nif <[9] < (COINS)> then\n    change [coins v] by (-10)\n    broadcast (Buy costume 1 v)\nelse\n    say [You don't have enough money.] for (2) seconds\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [open shopping items v]\ngo to [front v] layer\nshow\n\nwhen I receive [close shopping items v]\nhide\n\n@Sprite5\n\nwhen this sprite clicked\nif <[19] < (COINS)> then\n    change [coins v] by (-20)\n    broadcast (Buy middle2 v)\nelse\n    say [You don't have enough money.] for (2) seconds\nend\n\nwhen I receive [open shopping items v]\nshow\n\nwhen flag clicked\nhide\n\nwhen I receive [open shopping items v]\ngo to [front v] layer\nshow\n\nwhen I receive [close shopping items v]\nhide\n\n@Sprite3\n\nwhen I receive [open shop v]\nshow\nbroadcast (open shopping items v)\n\nwhen flag clicked\nhide\n\nwhen I receive [close shopping items v]\nhide\n\n@Chat Button\n\nwhen I receive [tick v]\nif <touching (mouse-pointer v)?> then\n    repeat until <(size) > [119]>\n        change [size v] by (.9)\n        change size by (size)\n    end\n    if <mouse down?> then\n        broadcast (Chat Open v)\n        hide\n        wait until <not <mouse down?>>\n    end\nelse\n    repeat until <(size) < [101]>\n        set [size v] to [-.8]\n        change [size v] by (-.9)\n        change size by (size)\n    end\nend\n\nwhen I receive [chat open v]\nshow\n\nwhen I receive [begin v]\nset [size v] to [.8]\nshow\nrepeat (40)\n    change [ghost v] effect by (-3)\nend\n\nwhen flag clicked\nhide\ngo to x: (0) y: (0)\nforever\n    go to [front v] layer\n    go to [front v] layer\nend\n\nwhen flag clicked\nshow\ngo to x: (-193) y: (-156)\nset size to (100) %\n\nwhen I receive [win v]\nhide\n\nwhen I receive [chat close v]\nshow\n\nwhen flag clicked\nforever\n    reset timer\n    if <(timer) > [.00000000000001]> then\n        hide\n    end\nend\n\n@Chat X\n\nwhen flag clicked\ngo to [front v] layer\nhide\ngo to x: (-53) y: (125)\n\nwhen I receive [chat open v]\nshow\nforever\n    go to [front v] layer\n    go to [front v] layer\n    go to [front v] layer\n    go to [front v] layer\nend\n\nwhen I receive [chat close v]\nhide\n\nwhen I receive [chat open v]\nforever\n    if <<mouse down?> and <touching (mouse-pointer v)?>> then\n        wait until <not <mouse down?>>\n        broadcast (Chat Close v)\n    end\nend\n\nwhen I receive [chat close v]\nset [is the chat open v] to [0]\n\n@Shop X\n\nwhen flag clicked\nhide\n\nwhen I receive [shop open v]\nshow\nforever\n    go to [front v] layer\n    go to [front v] layer\n    go to [front v] layer\n    go to [front v] layer\nend\n\nwhen I receive [open shop v]\nshow\n\nwhen this sprite clicked\nbroadcast (close shopping items v)\nhide\n\nwhen flag clicked\ngo to [front v] layer\n\n@detector\n\nwhen flag clicked\nforever\n    go to [front v] layer\nend\n\nwhen I start as a clone\nif <(clone id) = [0]> then\n    go to x: (-15) y: (0)\n    set [loved__ v] to [0]\n    switch costume to (love v)\n    forever\n        set [love? v] to <touching (mouse-pointer v)?>\n        if <touching (mouse-pointer v)?> then\n            set [loved__ v] to [1]\n        end\n    end\nend\nif <(clone id) = [1]> then\n    go to x: (0) y: (0)\n    switch costume to (fave v)\n    set [faved___ v] to [0]\n    forever\n        set [fav v] to <touching (mouse-pointer v)?>\n        if <touching (mouse-pointer v)?> then\n            set [faved___ v] to [1]\n        end\n    end\nend\n\nwhen flag clicked\nset [ghost v] effect to (100)\nset [faved___ v] to [0]\nset [loved__ v] to [0]\nset [clone id v] to [0]\ncreate clone of (_myself_ v)\nwait (0.2) seconds\nset [clone id v] to [1]\ncreate clone of (_myself_ v)\nwait until <<(LOVED__) = [1]> and <(FAVED___) = [1]>>\nwait (1) seconds\nchange [coins v] by (10)\nswitch costume to (2 v)\nrepeat (4)\n    change [ghost v] effect by (-25)\n    wait (0.5) seconds\nend\ngo to x: (0) y: (50)\nwait (1) seconds\nrepeat (4)\n    change [ghost v] effect by (25)\n    wait (0.5) seconds\nend\n\n@Sprite6\n\nwhen this sprite clicked\nif <[49] < (COINS)> then\n    change [coins v] by (-50)\n    broadcast (buy crown v)\nelse\n    say [You don't have enough money.] for (2) seconds\nend\n\nwhen I receive [open shopping items v]\nshow\n\nwhen flag clicked\nhide\n\nwhen I receive [open shopping items v]\ngo to [front v] layer\nshow\n\nwhen I receive [close shopping items v]\nhide\n\n@thumbnail\n\nwhen flag clicked\nforever\n    go [forward v] (1000) layers\n    go to [front v] layer\n    set [ghost v] effect to (100)\n    show\n    go to x: (0) y: (0)\nend\n\ngo [forward v] (999999999999999999999999999999) layers\n\n@music\n\nwhen flag clicked\nplay sound [Starship v] until done\n\n@Chat\n\ndefine GO\ngo to [front v] layer\ngo to [front v] layer\n\nwhen flag clicked\nhide\nset [the shop is open v] to [0]\nhide\ngo to x: (0) y: (0)\nshow\nset [ghost v] effect to (100)\nforever\n    GO\nend\n\nwhen I receive [win v]\nhide\n\nwhen I receive [chat open v]\nset [the shop is open v] to [1]\nrepeat (10)\n    change [ghost v] effect by (-10)\n    set size to ((size) + (((100) - (size)) / (3))) %\nend\nwait until <(is the chat open) = [0]>\n\nrepeat (10)\n    set size to ((size) + (((0) - (size)) / (3))) %\n    change [ghost v] effect by (10)\nend\n\nwhen I receive [chat open v]\nif <touching (mouse-pointer v)?> then\n    repeat until <(size) > [119]>\n        change [size v] by (.9)\n        change size by (size)\n    end\n    if <mouse down?> then\n        broadcast (Chat Open v)\n        hide\n        wait until <not <mouse down?>>\n    end\nend\n\nwhen I receive [chat open v]\nshow\nset [the shop is open v] to [0]\n\nhide\n\nwhen I receive [chat open v]\nset [is the chat open v] to [1]\n\nshow\n\nwhen I receive [chat close v]\nhide\n\n
Latest Update: Love and Fav to get 10 free coins! Added shop and improved chat and platforms! new music too!\n-Welcome to WINTER, one of my most epic projects ever. Here, you can play with scratchers all over the world! You can also chat by pressing T. If there is no one playing, feel free to comment on my profile and I can join you =D (I can't if I'm at school or doing homework or revising or sleeping though)\n\n- Instructions: Navigate with arrow keys, wasd or you finger on mobile. Press the chat or shop button to chat or shop. You can shop for different costumes. Overall have fun! By the way, if you want 10 free coins, simply like and fav this project!=D\n\n-By the way,  This is the max platforms I could add as my computer limits it.(It has a strange lag if I continue adding cuz I'm using windows 7, very old computer) I will add more levels as soon as I receive a new computer =) (Should be very soon...)\n\n-Also, as new scratchers can't use cloud variables, they wouldn't be able to see other scratchers playing at the same time. You'll have to wait until you have the scratcher status. However, you can still play this as a normal platformer if you're a new scratcher.\n\n-Check this out too: https://scratch.mit.edu/projects/564945214