The Official Longest Platformer

Instructions: Welcome to the Official Longest Platformer on scratch! \nPlay as an unnamed character as he tries to save his true love from the evil circle who trapped her on top of a tall tower. Will you will be able to rescue her, or will you give up?\nFeaturing;\n125 Challenging Levels, plus 15 multiplayer levels\nIncludes remastered levels from IN 60\nA new and easy-to-use level editor\nA simplistic, but unique art style\nComic like narrative\nand more!

@Stage\n\nwhen backdrop switches to [options v]\nrepeat until <not <(backdrop [name v]) = [options]>>\n    show variable [volume v]\n    set volume to (volume) %\nend\nif <not <(backdrop [name v]) = [options]>> then\n    hide variable [volume v]\nend\n\nwhen flag clicked\nhide variable [volume v]\nwait (6) seconds\nset [volume v] to [80]\nset volume to (volume) %\nhide variable [volume v]\nforever\n    play sound [2014 v] until done\n    play sound [WHAT DID YOU SAY v] until done\n    play sound [Let Go v] until done\nend\n\n@Player\n\nwhen flag clicked\ngo to x: (-232) y: (-178)\nhide\n\nwhen backdrop switches to [world stage  v]\ngo to x: (-225) y: (-127)\n\nwhen backdrop switches to [world 1 v]\ngo to x: (-225) y: (-127)\n\nwhen backdrop switches to [world 2 v]\ngo to x: (-225) y: (-127)\n\nwhen backdrop switches to [world 3 v]\ngo to x: (-225) y: (-127)\n\nwhen I receive [message1 v]\nset size to (100) %\ngo to x: (-225) y: (-127)\ngo to [front v] layer\nshow\nset [x motion v] to [0]\nset [y motion v] to [0]\nforever\n    if <key (right arrow v) pressed?> then\n        change [x motion v] by (1)\n    end\n    if <key (left arrow v) pressed?> then\n        change [x motion v] by (-1)\n    end\n    set [x motion v] to ((0.9) * (x motion))\n    change x by (x motion)\n    if <<touching color (#00ff55)?> or <touching color (#7f7f7f)?>> then\n        change y by (5)\n        if <<touching color (#00ff55)?> or <touching color (#7f7f7f)?>> then\n            change y by (-5)\n            change x by ((0) - (x motion))\n            set [x motion v] to [0]\n        end\n    end\n    change [y motion v] by (-1)\n    change y by (y motion)\n    if <<touching color (#00ff55)?> or <touching color (#7f7f7f)?>> then\n        change y by ((0) - (y motion))\n        set [y motion v] to [0]\n        if <key (up arrow v) pressed?> then\n            set [y motion v] to [12]\n        end\n    end\n    if <touching color (#003fff)?> then\n        broadcast (switch level v)\n        go to x: (-225) y: (-127)\n    end\n    if <touching color (#ff0000)?> then\n        broadcast (message1 v)\n    end\n    if <key (r v) pressed?> then\n        broadcast (message1 v)\n    end\n    if <touching color (#ff9400)?> then\n        set size to (60) %\n    end\n    if <touching color (#7f00ff)?> then\n        set size to (100) %\n    end\nend\n\nwhen backdrop switches to [world 4 v]\ngo to x: (-225) y: (-127)\n\nwhen backdrop switches to [world 5 v]\ngo to x: (-225) y: (-127)\n\nwhen backdrop switches to [ending v]\ngo to x: (-225) y: (-127)\nhide\n\n@button\n\nwhen backdrop switches to [menu v]\ngo to x: (0) y: (0)\nshow\nset size to (100) %\nforever\n    repeat (12)\n        change size by (0.5)\n        wait (0.01) seconds\n    end\n    repeat (12)\n        change size by (-0.5)\n        wait (0.01) seconds\n    end\nend\n\nwhen backdrop switches to [options v]\nhide\n\nwhen flag clicked\nswitch backdrop to (intro v)\nhide\n\nwhen backdrop switches to [level editor v]\nhide\n\nwhen this sprite clicked\nif <touching color (#cc7700)?> then\n    switch backdrop to (story backdrop v)\n    hide\nend\n\nwhen backdrop switches to [multiplayer mode v]\nhide\n\n@options\n\nwhen flag clicked\nswitch costume to (costume3 v)\nhide\n\nwhen backdrop switches to [story backdrop v]\nswitch costume to (costume3 v)\nhide\n\nwhen backdrop switches to [level editor v]\nswitch costume to (costume3 v)\nhide\n\nwhen backdrop switches to [multiplayer mode v]\nswitch costume to (costume3 v)\nhide\n\nwhen flag clicked\nswitch costume to (costume3 v)\nwait until <(backdrop [name v]) = [menu]>\nswitch costume to (costume1 v)\ngo to x: (196) y: (-138)\nshow\nforever\n    switch costume to (costume1 v)\n    if <touching (mouse-pointer v)?> then\n        switch costume to (costume2 v)\n    end\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        switch backdrop to (options v)\n        wait until <not <mouse down?>>\n        repeat until <<touching (mouse-pointer v)?> and <mouse down?>>\n            switch costume to (costume1 v)\n            if <touching (mouse-pointer v)?> then\n                switch costume to (costume2 v)\n            end\n        end\n        switch backdrop to (menu v)\n        wait until <not <mouse down?>>\n    end\nend\n\n@Story\n\nwhen backdrop switches to [story backdrop v]\nset [ghost v] effect to (100)\nswitch costume to (costume2 v)\nset size to (200) %\nswitch costume to (costume1 v)\ngo to x: (229) y: (-227)\nrepeat (10)\n    change [ghost v] effect by (-10)\n    wait (0.1) seconds\nend\nwait (2) seconds\nglide (1) secs to x: (-239) y: (-227)\nwait (2) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\n    wait (0.01) seconds\nend\ngo to x: (260) y: (100)\nrepeat (10)\n    change [ghost v] effect by (-10)\n    wait (0.01) seconds\nend\nwait (2) seconds\nglide (1) secs to x: (-231) y: (100)\nwait (2) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\n    wait (0.01) seconds\nend\ngo to x: (0) y: (0)\nset size to (100) %\nrepeat (10)\n    change [ghost v] effect by (-10)\n    wait (0.01) seconds\nend\nwait (2) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\n    wait (0.01) seconds\nend\nset [ghost v] effect to (0)\nhide\nswitch backdrop to (world stage  v)\nbroadcast (message1 v)\nshow\ngo to x: (47) y: (-131)\nswitch costume to (costume3 v)\nwait (5) seconds\nhide\nswitch backdrop to (world 1 v)\nstop [this script v]\n\nwhen flag clicked\nset [ghost v] effect to (100)\nset size to (100) %\ngo to x: (0) y: (0)\nshow\n\nwhen I receive [enter world 2 v]\nshow\nswitch backdrop to (world stage  v)\ngo to x: (47) y: (-131)\nwait (1) seconds\nglide (1) secs to x: (78) y: (-107)\nwait (3) seconds\nhide\nswitch backdrop to (world 2 v)\n\nwhen I receive [enter world 3 v]\nshow\nswitch backdrop to (world stage  v)\ngo to x: (78) y: (-107)\nwait (1) seconds\nglide (1) secs to x: (140) y: (-22)\nwait (3) seconds\nhide\nswitch backdrop to (world 3 v)\n\nwhen I receive [enter world 4 v]\nshow\nswitch backdrop to (world stage  v)\ngo to x: (140) y: (-22)\nwait (1) seconds\nglide (1) secs to x: (71) y: (50)\nwait (3) seconds\nhide\nswitch backdrop to (world 4 v)\n\nwhen I receive [enter world 5 v]\nshow\nswitch backdrop to (world stage  v)\ngo to x: (71) y: (50)\nwait (1) seconds\nglide (1) secs to x: (146) y: (101)\nwait (3) seconds\nhide\nswitch backdrop to (world 5 v)\n\nwhen I receive [ending v]\nswitch costume to (costume2 v)\nset size to (200) %\nswitch costume to (costume4 v)\nshow\nswitch backdrop to (ending v)\ngo to x: (229) y: (-227)\nrepeat (10)\n    change [ghost v] effect by (-10)\n    wait (0.1) seconds\nend\nwait (2) seconds\nglide (1) secs to x: (-239) y: (-227)\nwait (2) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\n    wait (0.01) seconds\nend\ngo to x: (260) y: (100)\nrepeat (10)\n    change [ghost v] effect by (-10)\n    wait (0.01) seconds\nend\nwait (2) seconds\nglide (1) secs to x: (-231) y: (100)\nwait (2) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\n    wait (0.01) seconds\nend\ngo to x: (0) y: (0)\nset size to (100) %\nrepeat (10)\n    change [ghost v] effect by (-10)\n    wait (0.01) seconds\nend\nwait (2) seconds\nrepeat (10)\n    change [ghost v] effect by (10)\n    wait (0.01) seconds\nend\nset [ghost v] effect to (0)\nhide\nswitch backdrop to (menu v)\n\n@world 1\n\nwhen flag clicked\nswitch costume to (level  v)\nhide\n\nwhen backdrop switches to [world 1 v]\ngo to x: (0) y: (0)\nswitch costume to (level 1 v)\nshow\n\nwhen I receive [switch level v]\nif <(costume [number v]) = [26]> then\n    broadcast (enter world 2 v)\n    hide\n    switch costume to (level  v)\n    hide\n    wait (0.5) seconds\n    stop [this script v]\nelse\n    next costume\nend\n\nwhen backdrop switches to [world stage  v]\nswitch costume to (level  v)\n\n@backup\n\nhide\n\n@world 2\n\nwhen flag clicked\nswitch costume to (level  v)\nhide\n\nwhen I receive [switch level v]\nif <(costume [number v]) = [26]> then\n    broadcast (enter world 3 v)\n    hide\n    switch costume to (level  v)\n    hide\n    wait (0.5) seconds\n    stop [this script v]\nelse\n    next costume\nend\n\nwhen backdrop switches to [world 2 v]\ngo to x: (0) y: (0)\nswitch costume to (level 1 v)\nshow\n\nwhen backdrop switches to [world stage  v]\nswitch costume to (level  v)\n\n@world 3\n\nwhen flag clicked\nswitch costume to (level  v)\nhide\n\nwhen I receive [switch level v]\nif <(costume [number v]) = [26]> then\n    broadcast (enter world 4 v)\n    hide\n    switch costume to (level  v)\n    stop [this script v]\nelse\n    next costume\nend\n\nwhen backdrop switches to [world 3 v]\ngo to x: (0) y: (0)\nswitch costume to (level 1 v)\nshow\n\nwhen backdrop switches to [world stage  v]\nswitch costume to (level  v)\n\n@world 4\n\nwhen backdrop switches to [world stage  v]\nswitch costume to (level  v)\n\nwhen I receive [switch level v]\nif <(costume [number v]) = [26]> then\n    broadcast (enter world 5 v)\n    hide\n    switch costume to (level  v)\n    stop [this script v]\nelse\n    next costume\nend\n\nwhen backdrop switches to [world 4 v]\ngo to x: (0) y: (0)\nswitch costume to (level 1 v)\nshow\n\nwhen flag clicked\nswitch costume to (level  v)\nhide\n\n@world 5\n\nwhen I receive [switch level v]\nif <(costume [number v]) = [26]> then\n    broadcast (ending v)\n    hide\n    switch costume to (level  v)\n    stop [this script v]\nelse\n    next costume\nend\n\nwhen flag clicked\nswitch costume to (level  v)\nhide\n\nwhen backdrop switches to [world stage  v]\nswitch costume to (level  v)\n\nwhen backdrop switches to [world 5 v]\ngo to x: (0) y: (0)\nswitch costume to (level 1 v)\nshow\n\n@tutorial\n\nwhen flag clicked\nswitch costume to (costume7 v)\nhide\n\nwhen backdrop switches to [world 1 v]\nshow\nswitch costume to (costume1 v)\ngo to x: (3) y: (-2)\ngo to [front v] layer\nshow\n\nwhen this sprite clicked\nnext costume\nwait (0.5) seconds\n\n@intro\n\nwhen flag clicked\nshow\nswitch costume to (costume1 v)\ngo to x: (0) y: (0)\nwait (2.5) seconds\nhide\nswitch costume to (costume2 v)\ngo to x: (-378) y: (-7)\nshow\nglide (0.5) secs to x: (10) y: (-7)\nwait (1) seconds\nswitch costume to (costume3 v)\nwait (1.5) seconds\nglide (0.5) secs to x: (-2) y: (-302)\nswitch backdrop to (menu v)\nhide\n\n@level editor buttons\n\nwhen flag clicked\nhide\n\nwhen backdrop switches to [options v]\nhide\n\nwhen backdrop switches to [story backdrop v]\nhide\n\nwhen backdrop switches to [menu v]\ngo to x: (-167) y: (-171)\nswitch costume to (costume1 v)\nshow\nforever\n    if <<(backdrop [name v]) = [menu]> and <<touching (mouse-pointer v)?> and <mouse down?>>> then\n        switch backdrop to (level editor v)\n        go to x: (-217) y: (142)\n        switch costume to (costume2 v)\n        forever\n            if <<(backdrop [name v]) = [level editor]> and <<touching (mouse-pointer v)?> and <mouse down?>>> then\n                switch backdrop to (menu v)\n                go to x: (-167) y: (-171)\n                switch costume to (costume1 v)\n            end\n        end\n    end\nend\n\nwhen backdrop switches to [multiplayer mode v]\nhide\n\n@pen\n\nwhen flag clicked\nerase all\nhide\n\nwhen backdrop switches to [options v]\nhide\nerase all\n\nwhen backdrop switches to [level editor v]\nset pen color to (#7f7f7f)\nset pen size to (10)\npen up\nshow\ngo to x: (-164) y: (150)\nswitch costume to (costume1 v)\nforever\n    if <not <(backdrop [name v]) = [level editor]>> then\n        hide\n        erase all\n        repeat until <(backdrop [name v]) = [level editor]>\n            pen up\n        end\n    end\n    if <<(backdrop [name v]) = [level editor]> and <<touching (mouse-pointer v)?> and <mouse down?>>> then\n        pen up\n        switch costume to (costume2 v)\n        wait (0.5) seconds\n        broadcast (draw v)\n    end\n    if <key (space v) pressed?> then\n        repeat until <<(backdrop [name v]) = [level editor]> and <<touching (mouse-pointer v)?> and <mouse down?>>>\n            pen up\n            go to x: (-164) y: (150)\n            switch costume to (costume1 v)\n        end\n    end\nend\n\nwhen I receive [draw v]\nrepeat until <<not <(backdrop [name v]) = [level editor]>> or <key (space v) pressed?>>\n    go to (mouse-pointer v)\n    if <mouse down?> then\n        pen down\n    end\n    if <not <mouse down?>> then\n        pen up\n    end\n    if <key (1 v) pressed?> then\n        set pen color to (#7f7f7f)\n    end\n    if <key (2 v) pressed?> then\n        set pen color to (#ff0000)\n    end\n    if <key (3 v) pressed?> then\n        set pen color to (#ff9400)\n    end\n    if <key (4 v) pressed?> then\n        set pen color to (#7f00ff)\n    end\nend\n\nwhen backdrop switches to [menu v]\nhide\nerase all\n\nwhen backdrop switches to [multiplayer mode v]\nhide\nerase all\n\n@level editor player\n\nwhen flag clicked\ngo to x: (-232) y: (-178)\nhide\n\nwhen backdrop switches to [level editor v]\nswitch costume to (costume1 v)\nset size to (100) %\ngo to x: (-225) y: (-127)\ngo to [front v] layer\nshow\nset [x motion v] to [0]\nset [y motion v] to [0]\nforever\n    if <key (right arrow v) pressed?> then\n        change [x motion v] by (1)\n    end\n    if <key (left arrow v) pressed?> then\n        change [x motion v] by (-1)\n    end\n    set [x motion v] to ((0.9) * (x motion))\n    change x by (x motion)\n    if <touching color (#7f7f7f)?> then\n        change y by (5)\n        if <touching color (#7f7f7f)?> then\n            change y by (-5)\n            change x by ((0) - (x motion))\n            set [x motion v] to [0]\n        end\n    end\n    change [y motion v] by (-1)\n    change y by (y motion)\n    if <touching color (#7f7f7f)?> then\n        change y by ((0) - (y motion))\n        set [y motion v] to [0]\n        if <key (up arrow v) pressed?> then\n            set [y motion v] to [12]\n        end\n    end\n    if <touching color (#ff0000)?> then\n        go to x: (-225) y: (-127)\n        set size to (100) %\n    end\n    if <touching color (#ff9400)?> then\n        set size to (60) %\n    end\n    if <touching color (#7f00ff)?> then\n        set size to (100) %\n    end\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        go to x: (-225) y: (-127)\n        set size to (100) %\n    end\nend\n\nwhen backdrop switches to [menu v]\nswitch costume to (costume2 v)\nhide\ngo to x: (-232) y: (-178)\nset [x motion v] to [0]\nset [y motion v] to [0]\n\n@multiplayer buttons reset\n\nwhen flag clicked\nhide\n\nwhen backdrop switches to [story backdrop v]\nhide\n\nwhen backdrop switches to [options v]\nhide\n\nwhen backdrop switches to [level editor v]\nhide\n\nwhen backdrop switches to [multiplayer mode v]\ngo to x: (-160) y: (142)\nswitch costume to (costume2 v)\ngo to [front v] layer\nshow\nforever\n    if <<(backdrop [name v]) = [multiplayer mode]> and <<touching (mouse-pointer v)?> and <mouse down?>>> then\n        broadcast (respawn multiplayer v)\n        wait (1) seconds\n    end\nend\n\nwhen backdrop switches to [menu v]\nhide\n\n@multiplayer player 1\n\nwhen flag clicked\ngo to x: (-232) y: (-178)\nhide\n\nwhen backdrop switches to [multiplayer mode v]\nswitch costume to (costume1 v)\nset size to (100) %\ngo to x: (-225) y: (-127)\ngo to [front v] layer\nshow\nset [x motion v] to [0]\nset [y motion v] to [0]\nforever\n    if <key (right arrow v) pressed?> then\n        change [x motion v] by (1)\n    end\n    if <key (left arrow v) pressed?> then\n        change [x motion v] by (-1)\n    end\n    set [x motion v] to ((0.9) * (x motion))\n    change x by (x motion)\n    if <touching color (#7f7f7f)?> then\n        change y by (5)\n        if <touching color (#7f7f7f)?> then\n            change y by (-5)\n            change x by ((0) - (x motion))\n            set [x motion v] to [0]\n        end\n    end\n    change [y motion v] by (-1)\n    change y by (y motion)\n    if <touching color (#7f7f7f)?> then\n        change y by ((0) - (y motion))\n        set [y motion v] to [0]\n        if <key (up arrow v) pressed?> then\n            set [y motion v] to [12]\n        end\n    end\n    if <touching color (#ff0000)?> then\n        broadcast (respawn multiplayer v)\n    end\n    if <touching color (#ff9400)?> then\n        set size to (60) %\n    end\n    if <touching color (#7f00ff)?> then\n        set size to (100) %\n    end\n    if <touching color (#003fff)?> then\n        broadcast (respawn multiplayer v)\n        broadcast (switch lvl multiplayer v)\n    end\nend\n\nwhen backdrop switches to [menu v]\nswitch costume to (costume2 v)\nhide\ngo to x: (-232) y: (-178)\nset [x motion v] to [0]\nset [y motion v] to [0]\n\nwhen I receive [respawn multiplayer v]\ngo to x: (-225) y: (-127)\nset size to (100) %\n\n@multiplayer player 2\n\nwhen flag clicked\ngo to x: (-232) y: (-178)\nhide\n\nwhen backdrop switches to [multiplayer mode v]\nswitch costume to (costume1 v)\nset size to (100) %\ngo to x: (-225) y: (-152)\ngo to [front v] layer\nshow\nset [x motion v] to [0]\nset [y motion v] to [0]\nforever\n    if <key (d v) pressed?> then\n        change [x motion v] by (1)\n    end\n    if <key (a v) pressed?> then\n        change [x motion v] by (-1)\n    end\n    set [x motion v] to ((0.9) * (x motion))\n    change x by (x motion)\n    if <touching color (#7f7f7f)?> then\n        change y by (5)\n        if <touching color (#7f7f7f)?> then\n            change y by (-5)\n            change x by ((0) - (x motion))\n            set [x motion v] to [0]\n        end\n    end\n    change [y motion v] by (-1)\n    change y by (y motion)\n    if <touching color (#7f7f7f)?> then\n        change y by ((0) - (y motion))\n        set [y motion v] to [0]\n        if <key (w v) pressed?> then\n            set [y motion v] to [12]\n        end\n    end\n    if <touching color (#ff0000)?> then\n        broadcast (respawn multiplayer v)\n    end\n    if <touching color (#ff9400)?> then\n        set size to (60) %\n    end\n    if <touching color (#7f00ff)?> then\n        set size to (100) %\n    end\n    if <touching color (#003fff)?> then\n        broadcast (respawn multiplayer v)\n        broadcast (switch lvl multiplayer v)\n    end\nend\n\nwhen backdrop switches to [menu v]\nswitch costume to (costume2 v)\nhide\ngo to x: (-232) y: (-178)\nset [x motion v] to [0]\nset [y motion v] to [0]\n\nwhen I receive [respawn multiplayer v]\ngo to x: (-225) y: (-152)\nset size to (100) %\n\n@Multiplayer world\n\nwhen flag clicked\nhide\n\nwhen backdrop switches to [multiplayer mode v]\ngo to x: (0) y: (0)\nswitch costume to (level 1 v)\nshow\n\nwhen backdrop switches to [menu v]\nswitch costume to (level  v)\nhide\n\nwhen I receive [switch lvl multiplayer v]\nif  then\nelse\n    next costume\n    broadcast (respawn multiplayer v)\nend\n\n@multiplayer buttons2\n\nwhen flag clicked\nhide\n\nwhen backdrop switches to [story backdrop v]\nhide\n\nwhen backdrop switches to [menu v]\ngo to x: (-167) y: (-132)\nswitch costume to (costume1 v)\nshow\nforever\n    if <<(backdrop [name v]) = [menu]> and <<touching (mouse-pointer v)?> and <mouse down?>>> then\n        switch backdrop to (multiplayer mode v)\n        go to x: (-217) y: (142)\n        switch costume to (costume2 v)\n        go to [front v] layer\n        forever\n            if <<(backdrop [name v]) = [multiplayer mode]> and <<touching (mouse-pointer v)?> and <mouse down?>>> then\n                switch backdrop to (menu v)\n                go to x: (-167) y: (-132)\n                switch costume to (costume1 v)\n                wait (1) seconds\n            end\n        end\n    end\nend\n\nwhen backdrop switches to [options v]\nhide\n\nwhen backdrop switches to [level editor v]\nhide\n\n@tutorial multiplayer\n\nwhen flag clicked\nswitch costume to (costume9 v)\nhide\n\nwhen backdrop switches to [multiplayer mode v]\nshow\nswitch costume to (costume1 v)\ngo to x: (3) y: (-2)\ngo to [front v] layer\n\nwhen this sprite clicked\nnext costume\nwait (0.5) seconds\n\nwhen backdrop switches to [menu v]\nhide\n\nwhen backdrop switches to [level editor v]\nhide\n\nwhen backdrop switches to [story backdrop v]\nhide\n\nwhen backdrop switches to [options v]\nhide\n\n