Bad Jokes, a Platformer-  School Edition!
@Stage\n\nwhen flag clicked\nbroadcast (message1 v)\nforever\n    play sound [Alkali - Lively v] until done\nend\n\nwhen flag clicked\nwait until <(Level) = [2]>\nbroadcast (message2 v)\n\n@Ball\n\nwhen flag clicked\nshow\nset [level v] to [1]\ngo to x: (-210) y: (-150)\nforever\n    go to [front v] layer\n    if <<key (right arrow v) pressed?> or <key (d v) pressed?>> then\n        change [xv v] by (1)\n    end\n    if <<key (left arrow v) pressed?> or <key (a v) pressed?>> then\n        change [xv v] by (-1)\n    end\n    set [xv v] to ((Xv) * (0.9))\n    change x by (Xv)\n    if <touching color (#000000)?> then\n        change y by (1)\n        if <touching color (#000000)?> then\n            change y by (1)\n            if <touching color (#000000)?> then\n                change y by (1)\n                if <touching color (#000000)?> then\n                    change y by (1)\n                    if <touching color (#000000)?> then\n                        change y by (1)\n                        if <touching color (#000000)?> then\n                            change x by ((Xv) * (-1))\n                            change y by (-5)\n                            if <key (up arrow v) pressed?> then\n                                if <(Xv) > [0]> then\n                                    set [xv v] to [-5]\n                                else\n                                    set [xv v] to [5]\n                                end\n                                set [yv v] to [10]\n                            else\n                                set [xv v] to [0]\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\n    change [yv v] by (-1)\n    change y by (Yv)\n    if <touching color (#000000)?> then\n        change y by ((Yv) * (-1))\n        set [yv v] to [0]\n    end\n    change y by (-1)\n    if <touching color (#000000)?> then\n        if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n            set [yv v] to [14]\n        end\n    end\n    change y by (1)\n    if <touching color (#ff0000)?> then\n        Go to level (x, y)\n    end\n    if <touching (goal v)?> then\n        change [level v] by (1)\n        broadcast (Next Level v)\n        wait (0.1) seconds\n        Go to level (x, y)\n    end\n    if <touching color (#59ffb6)?> then\n        set [yv v] to [22.5]\n    end\nend\n\ndefine None\nif <([costume # v] of [level v]) = (level)> then\n    go to x: (x) y: (y)\nend\nset [xv v] to [0]\nset [yv v] to [0]\n\ndefine Go to level (x, y)\nIf level (1) go to x: (-210) y: (-150)\nIf level (2) go to x: (220) y: (105)\nIf level (3) go to x: (-210) y: (-150)\nIf level (4) go to x: (-215) y: (80)\nIf level (5) go to x: (225) y: (150)\nIf level (5) go to x: (225) y: (150)\nIf level (6) go to x: (225) y: (80)\nIf level (7) go to x: (-210) y: (-150)\nIf level (8) go to x: (220) y: (150)\nIf level (9) go to x: (-210) y: (-150)\n\n@Goal\n\ndefine None\nif <([costume # v] of [level v]) = (level)> then\n    go to x: (x) y: (y)\nend\n\nwhen flag clicked\nshow\nforever\n    point in direction ((([sin v] of ((timer) * (810)) ) * (10)) + (90))\n    change size by ((((([sin v] of ((timer) * (810)) ) * (5)) + (100)) - (size)) * (0.1))\nend\n\nwhen flag clicked\nforever\n    If level (1) then go to x: (215) y: (-145)\n    If level (2) then go to x: (-215) y: (-145)\n    If level (3) then go to x: (210) y: (155)\n    If level (4) then go to x: (-215) y: (-145)\n    If level (5) then go to x: (215) y: (95)\n    If level (6) then go to x: (215) y: (-145)\n    If level (7) then go to x: (175) y: (-145)\n    If level (8) then go to x: (215) y: (-145)\n    if <([costume # v] of [level v]) = [9]> then\n        hide\n        set y to (500)\n        set x to (500)\n    end\nend\n\nwhen I receive [next level v]\nIf level (1) then go to x: (215) y: (-145)\nIf level (2) then go to x: (-215) y: (-145)\nIf level (3) then go to x: (210) y: (155)\nIf level (4) then go to x: (-215) y: (-145)\nIf level (5) then go to x: (215) y: (95)\nIf level (6) then go to x: (215) y: (-145)\nIf level (7) then go to x: (175) y: (-145)\nIf level (8) then go to x: (215) y: (-145)\n\n@Level\n\nwhen flag clicked\ngo to x: (0) y: (0)\nset [level v] to [1]\nset [level v] to [1]\nswitch costume to (costume1 v)\nforever\n    switch costume to (Level)\nend\n\nwhen I receive [message3 v]\nswitch costume to (1 v)\n\nwhen I receive [message1 v]\nswitch costume to (1 v)\n\n@Bad Jokes\n\nwhen flag clicked\nshow\ngo to x: (0) y: (0)\nswitch costume to (costume1 v)\nwait 'till costume = (1) Then set costume to (1)\nbroadcast (message3 v)\nwait 'till costume = (2) Then set costume to (3)\nwait 'till costume = (3) Then set costume to (5)\nwait 'till costume = (4) Then set costume to (7)\nwait 'till costume = (5) Then set costume to (9)\nwait 'till costume = (6) Then set costume to (11)\nwait 'till costume = (7) Then set costume to (13)\nwait 'till costume = (8) Then set costume to (15)\nwait 'till costume = (9) Then set costume to (17)\n\ndefine None\nwait until <(Level) = (costume)>\nswitch costume to (other costume)\nrepeat until <(Level) = ((costume) + (1))>\n    if <key (space v) pressed?> then\n        wait until <<not <key (space v) pressed?>> or <(Level) = ((costume) + (1))>>\n        switch costume to ((other costume) + (1))\n    end\nend\n\n@Obstacle1\n\nwhen flag clicked\nforever\n    if <(Level) = [2]> then\n        go to [front v] layer\n        show\n        go to x: (([sin v] of ((timer) * (100)) ) * (130)) y: (0)\n    end\n    if <not <(Level) = [2]>> then\n        hide\n    end\nend\n\n@Obstacle2\n\nwhen flag clicked\nhide\nset [clone # v] to [0]\nrepeat (3)\n    change [clone # v] by (1)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nforever\n    if <(Level) = [3]> then\n        show\n    else\n        hide\n    end\n    if <(Clone #) = [1]> then\n        go to x: (([sin v] of (((timer) + (2)) * (75)) ) * (80)) y: (130)\n    else\n        if <(Clone #) = [2]> then\n            go to x: (([sin v] of (((timer) + (1)) * (75)) ) * (80)) y: (50)\n        else\n            if <(Clone #) = [3]> then\n                go to x: (([sin v] of ((timer) * (75)) ) * (80)) y: (-30)\n            end\n        end\n    end\nend\n\n@Spinning Square of Death (Obstacle3)\n\nwhen flag clicked\nforever\n    go to x: (-20) y: (-86)\n    turn right (-2) degrees\n    if <(Level) = [4]> then\n        show\n    end\n    if <not <(Level) = [4]>> then\n        hide\n    end\nend\n\n@Sprite1\n\nwhen flag clicked\nforever\n    show\n    set [ghost v] effect to (100)\n    go to x: (0) y: (0)\nend\n\n@Easter egg\n\nwhen flag clicked\nrepeat until <<touching (ball v)?> and <([costume name v] of [level v]) = [9]>>\n    show\n    set [ghost v] effect to (100)\nend\nbroadcast (Easter Egg v)\n\n@Sprite2\n\nwhen flag clicked\nhide\n\nwhen I receive [easter egg v]\nshow\nchange [☁ easter eggs found v] by (1)\n\n
Instructions:\n\n-Arrow or WAD keys to move\n-Dodge red\n-Get to the square\n-Press space to see the answer to these super-cringy jokes!\n-Touch the green to bounce\n\nGood luck and have fun!