Stickman Platformer #games #all #platformers

Instructions: Play here for a better performance:\nhttps://turbowarp.org/686923395?hqpen&stuck&interpolate&fps=32\n\nThere are 20 levels. Can you complete them all? (the game is intended to be difficult, but 100% possible)\n\nMechanics (portals, bounce pads, saws etc.) are explained in the game.\n\nI worked hard polishing this game, so I would appreciate a love or favourite!

@Stage\n\nwhen flag clicked\nwait (0) seconds\nbroadcast (Green Flag v)\nwait (0.2) seconds\nforever\n    play sound [bensound-summer v] until done\nend\n\nwhen flag clicked\nforever\n    switch backdrop to (LEVEL)\nend\n\nwhen flag clicked\ncreate clone of (gems v)\n\n@Player\n\nwhen flag clicked\nforever\n    if <<key (up arrow v) pressed?> and <(PLAYER Y VEL) = [0]>> then\n        wait (0) seconds\n        if <(PLAYER Y VEL) = [0]> then\n            set [player y vel v] to [15.01]\n        end\n    end\nend\n\nwhen flag clicked\nforever\n    if <<<color (#000000) is touching (#ff0000)?> or <touching (saw v)?>> and <(RESET) = [0]>> then\n        broadcast (Reset v)\n        start sound [Fail v]\n        wait until <not <<color (#000000) is touching (#ff0000)?> or <touching (saw v)?>>>\n    end\n    if <touching color (#efba29)?> then\n        start sound [Drum Boing v]\n        if <key (up arrow v) pressed?> then\n            set [player y vel v] to [20]\n        else\n            set [player y vel v] to [15]\n        end\n        wait until <not <touching color (#efba29)?>>\n    else\n        if <touching color (#ffc62b)?> then\n            start sound [Drum Boing v]\n            if <key (up arrow v) pressed?> then\n                set [player y vel v] to [18]\n            else\n                set [player y vel v] to [13]\n            end\n            wait until <not <touching color (#ffc72b)?>>\n        end\n    end\nend\n\nwhen flag clicked\nforever\n    if <touching (water v)?> then\n        change [player y vel v] by (0.5)\n        if <key (down arrow v) pressed?> then\n            change [player y vel v] by (-0.7)\n        end\n    end\nend\n\nwhen flag clicked\nforever\n    if <touching (platforms v)?> then\n        change y by (1)\n        if <touching (platforms v)?> then\n            change y by (1)\n            if <touching (platforms v)?> then\n                change y by (1)\n                if <touching (platforms v)?> then\n                    change y by (1)\n                    if <touching (platforms v)?> then\n                        change y by (1)\n                        if <touching (platforms v)?> then\n                            change x by ((PLAYER X VEL) * (-1))\n                            change y by (-5)\n                            if <key (up arrow v) pressed?> then\n                                if <(PLAYER X VEL) < [0]> then\n                                    set [player x vel v] to [5]\n                                else\n                                    set [player x vel v] to [-5]\n                                end\n                                set [player y vel v] to [12]\n                            else\n                                set [player x vel v] to [0]\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen flag clicked\nset volume to (93) %\nbroadcast (Level Up v)\nset [reset v] to [0]\nforever\n    change [player y vel v] by (-1)\n    change y by (PLAYER Y VEL)\n    if <touching (platforms v)?> then\n        if <(PLAYER Y VEL) < [0]> then\n            change y by ((PLAYER Y VEL) * (-1))\n            set [player y vel v] to [0]\n        else\n            change y by ((PLAYER Y VEL) * (-1))\n            set [player y vel v] to [-1]\n        end\n    end\n    if <key (right arrow v) pressed?> then\n        change [player x vel v] by (0.85)\n    else\n        if <key (left arrow v) pressed?> then\n            change [player x vel v] by (-0.85)\n        end\n    end\n    change x by (PLAYER X VEL)\n    if <not <touching (platforms v)?>> then\n        set [player x vel v] to ((PLAYER X VEL) * (0.89))\n    else\n        if <(costume [number v]) = [1]> then\n            set [animate stickman? v] to [0]\n        end\n    end\nend\n\nwhen flag clicked\nset rotation style [left-right v]\nforever\n    if <key (left arrow v) pressed?> then\n        point in direction (-90)\n    end\n    if <key (right arrow v) pressed?> then\n        point in direction (90)\n    end\nend\n\nwhen flag clicked\nset [level v] to [1]\nset [level up v] to [0]\nforever\n    if <touching (flag v)?> then\n        if <<(LEVEL UP) = [0]> and <(RESET) = [0]>> then\n            broadcast (Level Up v)\n            change [level v] by (1)\n        end\n    end\nend\n\nwhen I receive [reset v]\nreset timer\nset [reset v] to [1]\nset [gems collected v] to [0]\nif <not <<(RESET) = [1]> or <(LEVEL UP) = [1]>>> then\n    start sound [Fail v]\nend\nif <<(LEVEL) < [19]> or <touching color (#ff0000)?>> then\n    repeat (4)\n        change [ghost v] effect by (25)\n        set [player x vel v] to ((PLAYER X VEL) * (0.5))\n        set [player y vel v] to ((PLAYER Y VEL) * (0.5))\n    end\nend\nset [ghost v] effect to (100)\nset size to (60) %\nposition at start\nwait (0) seconds\nrepeat (4)\n    change [ghost v] effect by (-25)\nend\n\nwhen flag clicked\nanimate stickman\n\nwhen flag clicked\nforever\n    wait until <<touching color (#00bdff)?> and <<(LEVEL) = [7]> or <<(LEVEL) = [10]> or <(LEVEL) = [12]>>>>\n    start sound [Wand v]\n    set [player x vel v] to [0]\n    set [player y vel v] to [0]\n    if <(LEVEL) = [7]> then\n        if <(y position) < [0]> then\n            point in direction (90)\n            go to x: (-165) y: (120)\n        else\n            point in direction (-90)\n            go to x: (165) y: (-50)\n        end\n    else\n        if <(LEVEL) = [10]> then\n            point in direction (90)\n            go to x: (-10) y: (200)\n        else\n            if <(LEVEL) = [12]> then\n                if <(y position) < [0]> then\n                    point in direction (90)\n                    go to x: (-183) y: (300)\n                else\n                    point in direction (-90)\n                    go to x: (123) y: (-80)\n                end\n            end\n        end\n    end\n    set [ghost v] effect to (100)\n    repeat (4)\n        change [ghost v] effect by (-25)\n    end\n    wait (1.4) seconds\nend\n\nwhen flag clicked\nforever\n    if <touching color (#da09e5)?> then\n        start sound [Low Whoosh v]\n        if <(PLAYER X VEL) < [0]> then\n            set [player x vel v] to [1]\n        end\n        change [player x vel v] by (11)\n        wait until <not <touching color (#da09e5)?>>\n    end\n    if <color (#000000) is touching (#b42afa)?> then\n        start sound [Low Whoosh v]\n        if <(PLAYER Y VEL) < [0]> then\n            set [player y vel v] to [1]\n        end\n        set [player y vel v] to [20]\n        wait until <not <touching color (#b42afa)?>>\n    end\nend\n\nwhen I receive [level up v]\nreset timer\nset [level up v] to [1]\nset [gems collected v] to [0]\nset [ghost v] effect to (100)\nset size to (60) %\nif <(LEVEL) = [1]> then\n    position at start\nelse\n    start sound [Connect v]\n    repeat (15)\n        position at start\n    end\nend\nwait (0) seconds\nset [level up v] to [0]\nrepeat (4)\n    change [ghost v] effect by (-25)\nend\nset [gems collected v] to [0]\n\ndefine position at start\npoint in direction (90)\ngo to x: (-180) y: (-40)\nswitch costume to (walk1 v)\nset [player y vel v] to [0]\nset [player x vel v] to [0]\nwait (0) seconds\nset [reset v] to [0]\n\nwhen flag clicked\nwait until <(LEVEL) > [16]>\nwait until <not <key (space v) pressed?>>\nforever\n    wait until <not <key (space v) pressed?>>\n    wait until <key (space v) pressed?>\n    set size to (44) %\n    wait until <not <key (space v) pressed?>>\n    wait until <<key (space v) pressed?> or <(size) = [60]>>\n    set size to (60) %\nend\n\nwhen flag clicked\nforever\n    wait until <(size) = [44]>\n    size down\n    wait until <(size) = [60]>\n    size up\nend\n\ndefine animate stickman\nforever\n    if <(ANIMATE STICKMAN?) = [1]> then\n        if <(costume [number v]) = [8]> then\n            switch costume to (walk1 v)\n        else\n            next costume\n        end\n    end\nend\n\ndefine size down\nchange y by (-7)\n\ndefine size up\nset size to (46) %\nchange y by (9)\nif <touching (platforms v)?> then\n    change x by ((7) * ((direction) / (-90)))\nend\nif <touching (platforms v)?> then\n    change x by ((7) * ((direction) / (90)))\nend\nset size to (60) %\n\nwhen flag clicked\nforever\n    if <<<(LEVEL) = [19]> and <<<<touching color (#65ff62)?> or <touching color (#42f83e)?>> and <(size) = [44]>> or <<<touching color (#f74141)?> or <touching color (#ff5b5b)?>> and <(size) = [60]>>>> and <(x position) > [-170]>> then\n        broadcast (Reset v)\n    end\nend\n\nwhen flag clicked\nforever\n    set [animate stickman? v] to [1]\n    if <not <<not <(costume [number v]) = [1]>> or <<<<key (right arrow v) pressed?> and <(PLAYER X VEL) > [0.1]>> or <(PLAYER X VEL) > [0.5]>> or <<<key (left arrow v) pressed?> and <(PLAYER X VEL) < [-0.1]>> or <(PLAYER X VEL) < [-0.5]>>>>> then\n        set [animate stickman? v] to [0]\n    end\nend\n\n@Platforms\n\nwhen flag clicked\nforever\n    switch costume to (LEVEL)\nend\n\n@Obstacles\n\nwhen flag clicked\nforever\n    switch costume to (LEVEL)\nend\n\n@Gems\n\nwhen flag clicked\nset [clone? v] to [0]\nforever\n    if <(LEVEL) = [4]> then\n        size: [85] x position: [-170] y position: [100]\n    end\n    if <(LEVEL) = [11]> then\n        size: [100] x position: [70] y position: [110]\n    end\n    if <(LEVEL) = [13]> then\n        size: [90] x position: [195] y position: [-80]\n    end\n    if <(LEVEL) = [16]> then\n        size: [85] x position: [-193] y position: [80]\n    end\n    if <(LEVEL) = [18]> then\n        size: [85] x position: [-155] y position: [130]\n    end\n    if <(LEVEL) = [19]> then\n        size: [90] x position: [185] y position: [-80]\n    end\nend\n\nwhen I start as a clone\nchange [clone? v] by (1)\nforever\n    if <(LEVEL) = [16]> then\n        show\n        size: [85] x position: [195] y position: [-93]\n    else\n        if <(LEVEL) = [18]> then\n            show\n            size: [85] x position: [5] y position: [-98]\n        else\n            hide\n        end\n    end\nend\n\nwhen I receive [green flag v]\nforever\n    wait until <<(LEVEL) = [16]> or <(LEVEL) = [18]>>\n    show\n    wait until <<touching (player v)?> and <<(LEVEL UP) = [0]> and <(RESET) = [0]>>>\n    change [gems collected v] by (1)\n    repeat until <<(LEVEL UP) = [1]> or <(RESET) = [1]>>\n        hide\n    end\nend\n\ndefine size: (size) x position: (x position) y position: (y position)\nset size to (size) %\ngo to x: (x position) y: ((y position) + (([sin v] of ((timer) * (175)) ) * (4)))\n\nwhen flag clicked\nforever\n    show\n    if <<(LEVEL UP) = [1]> or <(item (LEVEL) of [gems hide/show v]) = [0]>> then\n        hide\n    end\nend\n\nwhen I receive [green flag v]\nforever\n    point in direction ((([sin v] of ((timer) * (350)) ) * (5)) + (90))\nend\n\nwhen I receive [green flag v]\nforever\n    wait until <(RESET) = [1]>\n    set [ghost v] effect to (100)\n    repeat (4)\n        change [ghost v] effect by (-25)\n    end\n    wait until <not <(RESET) = [1]>>\nend\n\nwhen I receive [green flag v]\nforever\n    if <(item (LEVEL) of [gems hide/show v]) > [0]> then\n        show\n        wait until <<<(RESET) = [0]> and <(LEVEL UP) = [0]>> and <touching (player v)?>>\n        change [gems collected v] by (1)\n        repeat until <<(LEVEL UP) = [1]> or <(RESET) = [1]>>\n            hide\n        end\n        repeat until <<(LEVEL UP) = [0]> and <(RESET) = [0]>>\n            hide\n        end\n    end\nend\n\n@Flag\n\nwhen flag clicked\nforever\n    if <(LEVEL) = [1]> then\n        show\n        set size to (100) %\n        go to x: (200) y: ((-100) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [2]> then\n        show\n        go to x: (200) y: ((-100) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [3]> then\n        show\n        go to x: (200) y: ((136) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [4]> then\n        if <(GEMS COLLECTED) = [0]> then\n            hide\n        else\n            show\n            go to x: (200) y: ((-100) + (sin wave))\n            point in direction (90)\n        end\n    end\n    if <(LEVEL) = [5]> then\n        show\n        set size to (90) %\n        go to x: (205) y: ((94) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [6]> then\n        show\n        set size to (100) %\n        go to x: (200) y: ((-100) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [7]> then\n        show\n        go to x: (170) y: ((83) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [8]> then\n        show\n        go to x: (-5) y: ((-100) + (sin wave))\n        point in direction (-90)\n    end\n    if <(LEVEL) = [9]> then\n        show\n        go to x: (200) y: ((-100) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [10]> then\n        show\n        go to x: (0) y: ((109) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [11]> then\n        if <(GEMS COLLECTED) = [0]> then\n            hide\n        else\n            show\n            go to x: (200) y: ((-100) + (sin wave))\n            point in direction (90)\n        end\n    end\n    if <(LEVEL) = [12]> then\n        show\n        go to x: (200) y: ((98) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [13]> then\n        if <(GEMS COLLECTED) = [0]> then\n            hide\n        else\n            show\n            go to x: (-190) y: ((-100) + (sin wave))\n            point in direction (-90)\n        end\n    end\n    if <(LEVEL) = [14]> then\n        hide\n    end\n    if <(LEVEL) = [15]> then\n        go to x: (200) y: ((70) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [16]> then\n        if <(GEMS COLLECTED) < [2]> then\n            hide\n        else\n            show\n            go to x: (-190) y: ((-100) + (sin wave))\n            point in direction (-90)\n        end\n    end\n    if <(LEVEL) = [17]> then\n        show\n        set size to (88) %\n        go to x: (205) y: ((-103) + (sin wave))\n        point in direction (90)\n    end\n    if <(LEVEL) = [18]> then\n        if <(GEMS COLLECTED) < [2]> then\n            hide\n        else\n            set size to (100) %\n            show\n            go to x: (205) y: ((-100) + (sin wave))\n            point in direction (90)\n        end\n    end\n    if <(LEVEL) = [19]> then\n        if <<(GEMS COLLECTED) = [0]> or <(RESET) = [1]>> then\n            hide\n        else\n            show\n            go to x: (-190) y: ((-100) + (sin wave))\n            point in direction (-90)\n        end\n    end\n    if <(LEVEL) = [20]> then\n        show\n        go to x: (200) y: ((-100) + (sin wave))\n        point in direction (90)\n    end\nend\n\nwhen flag clicked\nforever\n    if <(LEVEL) = [15]> then\n        hide\n        wait until <([x position v] of [player v]) > [-5]>\n        show\n        wait until <<(RESET) = [1]> or <([x position v] of [player v]) < [-10]>>\n        if <(LEVEL) > [15]> then\n            stop [this script v]\n        end\n    end\nend\n\nwhen flag clicked\nforever\n    set [sin wave v] to (([sin v] of ((timer) * (400)) ) * (2))\n    if <(LEVEL UP) = [1]> then\n        hide\n    end\nend\n\n@Saw\n\nwhen flag clicked\nhide\nset [clone id v] to [0]\nrepeat (2)\n    change [clone id v] by (1)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nforever\n    if <<(LEVEL) = [6]> and <(clone id) = [1]>> then\n        show\n        set size to (70) %\n        go to x: ((([sin v] of ((timer) * (180)) ) * (75)) + (19)) y: (-132)\n        turn right (7) degrees\n    else\n        if <(LEVEL) = [13]> then\n            show\n            set size to (65) %\n            go to x: ((-155) + ((clone id) * (110))) y: ((([sin v] of (((timer) + ((clone id) / (2.8))) * (145)) ) * (108)) + (22))\n            turn right ((21) - ((clone id) * (14))) degrees\n        else\n            hide\n        end\n    end\nend\n\n@Moving Platform\n\n@Falling Spikes\n\nwhen flag clicked\nhide\nwait until <not <(LEVEL) = [14]>>\nwait until <(LEVEL) = [14]>\nset [falling spikes v] to [14]\nwait until <(LEVEL UP) = [0]>\nrepeat until <(FALLING SPIKES) = [0]>\n    create clone of (_myself_ v)\n    if <(FALLING SPIKES) > [0]> then\n        wait (0.5) seconds\n    end\nend\nbroadcast (Level Up v)\nchange [level v] by (1)\n\nwhen I start as a clone\nhide\ngo to x: ([x position v] of [player v]) y: (105)\nwait (0.5) seconds\nshow\nset [ghost v] effect to (0)\nrepeat until <touching (platforms v)?>\n    change y by (-20)\nend\nrepeat (3)\n    change [ghost v] effect by (25)\nend\nchange [falling spikes v] by (-1)\nif <(RESET) = [0]> then\n    start sound [Glass Breaking v]\nend\ndelete this clone\n\nwhen I receive [reset v]\nset [falling spikes v] to [14]\n\n@Sprite1\n\nwhen I receive [level up v]\nif <not <<(LEVEL) = [1]> or <(LEVEL) = [21]>>> then\n    switch costume to (costume1 v)\n    show\n    set x to (354)\n    repeat (4)\n        change x by ((354) / (-4))\n    end\n    wait (0.8) seconds\n    repeat (4)\n        change x by ((354) / (-4))\n    end\n    hide\nend\n\nwhen flag clicked\nwait until <(LEVEL) = [1]>\nwait until <(LEVEL) = [21]>\nswitch costume to (costume3 v)\nshow\nset x to (354)\nrepeat (4)\n    change x by ((354) / (-4))\nend\n\nwhen flag clicked\nhide\n\n@Pen Bar\n\nwhen flag clicked\nrepeat (2)\n    erase all\nend\nwait until <(LEVEL) = [14]>\nrepeat until <(LEVEL) = [15]>\n    erase all\n    set pen size to (49)\n    pen down\n    set pen color to (#000000)\n    go to x: (-190) y: (135)\n    go to x: (190) y: (135)\n    set pen size to (37)\n    set pen color to (#ffffff)\n    go to x: (-190) y: (135)\n    go to x: (190) y: (135)\n    pen up\n    go to x: (-190) y: (135)\n    pen down\n    set pen size to (38)\n    if <(FALLING SPIKES) > [9]> then\n        set pen color to (#ff4343)\n    else\n        if <(FALLING SPIKES) > [5]> then\n            set pen color to (#ffc445)\n        else\n            set pen color to (#38ff66)\n        end\n    end\n    if <(FALLING SPIKES) = [14]> then\n        go to x: (-190) y: (135)\n    else\n        change x by (((190) / (7)) * ((14) - (FALLING SPIKES)))\n    end\nend\nerase all\n\n@Invisible Obstacles\n\nwhen flag clicked\nforever\n    hide\n    wait until <(LEVEL) = [15]>\n    wait until <([x position v] of [player v]) > [-5]>\n    wait until <(LEVEL UP) = [0]>\n    show\n    go to [back v] layer\n    wait until <<(RESET) = [1]> or <([x position v] of [player v]) < [-5]>>\nend\n\n@Sprite2\n\nwhen flag clicked\nforever\n    if <(LEVEL) = [19]> then\n        show\n    else\n        hide\n    end\nend\n\n@Thumbnail\n\nwhen flag clicked\nforever\n    go to [front v] layer\n    set [ghost v] effect to (100)\nend\n\n