Kitchen 3 <a platformer> 

Instructions: WASD keys or arrow keys to move.\nFloor, kettles, and toaster are solid.\nAvoid forks, knifes, toast, steam and stove.\nOil are slippery.\nYou can stand on the handle of the knife.\nAll levels are possible.\n100 loves for part 4\nPart 1: https://scratch.mit.edu/projects/598686504/\nFollow me at my profile @Tao196\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nHI. If you see this, and you think the background is too boring, you can suggest me in the comments!

@Stage\n\n@player\n\nwhen flag clicked\nhide\n\nwhen flag clicked\nSetup\n\nwhen I receive [you lose v]\nstop [other scripts in sprite v]\nset [lose? v] to [1]\nrepeat (10)\n    change [ghost v] effect by (10)\nend\nhide\nset [x v] to [0]\nset [y v] to [0]\nif <(Level) = [10]> then\n    go to x: (-190) y: (140)\nelse\n    go to x: (-230) y: (-50)\nend\nshow\nbroadcast (Game Loop v)\nset [lose? v] to [0]\n\ndefine Check touching solid\nif <<<<touching (ground v)?> or <touching (handle v)?>> or <touching (handle2 v)?>> or <<touching (toaster1 v)?> or <<touching (toaster2 v)?> or <<touching (kettle v)?> or <touching (kettle2 v)?>>>>> then\n    set [touching v] to [1]\nelse\n    set [touching v] to [0]\nend\n\nwhen I receive [next level v]\nset [y v] to [0]\nset [x v] to [0]\nif <(Level) = [10]> then\n    go to x: (-190) y: (140)\nelse\n    go to x: (-190) y: (0)\nend\n\ndefine Left Right collision and wall jump\nchange y by (-1)\nCheck touching solid\nif <(touching) > [0]> then\n    change y by (1)\n    Check touching solid\n    if <(touching) > [0]> then\n        change y by (1)\n        Check touching solid\n        if <(touching) > [0]> then\n            change y by (1)\n            Check touching solid\n            if <(touching) > [0]> then\n                change y by (1)\n                Check touching solid\n                if <(touching) > [0]> then\n                    change y by (1)\n                    Check touching solid\n                    if <(touching) > [0]> then\n                        change x by ((X) * (-1))\n                        change y by (-5)\n                        if <<<mouse down?> and <(y position) < (mouse y)>> or <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n                            if <(X) > [0]> then\n                                set [x v] to [-7]\n                            else\n                                set [x v] to [7]\n                            end\n                            set [y v] to [14]\n                        else\n                            set [x v] to [0]\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine Left Right cotrols\nset [key x v] to (<<<mouse down?> and <(x position) < (mouse x)>> or <<key (right arrow v) pressed?> or <key (d v) pressed?>>> - <<<mouse down?> and <(x position) > (mouse x)>> or <<key (left arrow v) pressed?> or <key (a v) pressed?>>>)\nif <(Key X) < [0]> then\n    if <touching (oil v)?> then\n        change [x v] by (-2)\n    else\n        change [x v] by (-1)\n    end\nend\nif <(Key X) > [0]> then\n    if <touching (oil v)?> then\n        change [x v] by (2)\n    else\n        change [x v] by (1)\n    end\nend\nif <touching (oil v)?> then\n    set [x v] to ((X) * (0.95))\nelse\n    set [x v] to ((X) * (0.9))\nend\nchange x by (X)\n\ndefine Up controls and collisions\nchange y by (-1)\nCheck touching solid\nif <(touching) > [0]> then\n    if <<<mouse down?> and <(y position) < (mouse y)>> or <<key (up arrow v) pressed?> or <key (w v) pressed?>>> then\n        start sound [Jump v]\n        set [y v] to [15]\n    end\nend\nchange y by (1)\nchange [y v] by (-1)\nchange y by (Y)\nCheck touching solid\nif <(touching) > [0]> then\n    change y by ((Y) * (-1))\n    set [y v] to [0]\nend\n\ndefine Check - Death / Win\nif <(x position) > [230]> then\n    change [level v] by (1)\n    broadcast (next level v)\nend\nif <(y position) < [-170]> then\n    start sound [Oops v]\n    broadcast (You Lose v)\nend\n\ndefine Setup\nset [level v] to [1]\nshow\ngo to [front v] layer\nset size to (100) %\nclear graphic effects\nswitch costume to (egg-a v)\npoint in direction (90)\ngo to x: (-190) y: (50)\nset drag mode [not draggable v]\nset [lose? v] to [0]\nbroadcast (Game Loop v)\n\nwhen I receive [game loop v]\nclear graphic effects\nforever\n    Left Right cotrols\n    Left Right collision and wall jump\n    Up controls and collisions\n    Check - Death / Win\nend\n\ndefine Fix Collision in Direction (dir)\nset [temp v] to (direction)\nset [distance v] to [1]\npoint in direction (dir)\nrepeat (64)\n    Check touching solid\n    if <(touching) < [1]> then\n        point in direction (temp)\n        stop [this script v]\n    end\n    move (distance) steps\n    change [distance v] by (1)\n    turn left (180) degrees\nend\n\nwhen I receive [fix collision v]\nFix Collision in Direction [0]\n\nwhen I receive [you lose v]\nbroadcast (Fix collision v)\n\nwhen I receive [next level v]\nbroadcast (Fix collision v)\n\nwhen I receive [game loop v]\nforever\n    Check touching solid\n    if <(touching) > [0]> then\n        broadcast (Fix collision v)\n    end\nend\n\n@ground\n\nwhen flag clicked\ngo to [back v] layer\ngo to x: (0) y: (0)\nswitch costume to (level1 v)\n\nwhen I receive [next level v]\ngo to [back v] layer\nnext costume\n\n@Dnager\n\nwhen flag clicked\nshow\nswitch costume to (costume1 v)\nforever\n    go to [back v] layer\nend\n\nwhen I receive [next level v]\nif <(Level) = [2]> then\n    show\n    switch costume to (costume7 v)\nend\nif <(Level) = [3]> then\n    hide\nend\nif <(Level) = [4]> then\n    show\n    switch costume to (costume4 v)\nend\nif <(Level) = [5]> then\n    show\n    switch costume to (costume2 v)\nend\nif <(Level) = [6]> then\n    hide\nend\nif <(Level) = [7]> then\n    show\n    switch costume to (costume5 v)\nend\nif <(Level) = [8]> then\n    hide\nend\nif <(Level) = [9]> then\n    show\n    switch costume to (costume6 v)\nend\nif <(Level) = [10]> then\n    show\n    switch costume to (costume3 v)\nend\nif <(Level) = [11]> then\n    hide\nend\n\nwhen flag clicked\nforever\n    if <touching (player v)?> then\n        if <(Lose?) = [0]> then\n            broadcast (You Lose v)\n        end\n    end\nend\n\n@Knife1\n\nwhen I receive [next level v]\nset [speed y v] to [0]\nif <(Level) = [2]> then\n    switch costume to (costume2 v)\n    point in direction (90)\n    set size to (100) %\n    go to x: (-130) y: (73)\n    create clone of (_myself_ v)\n    stop [this script v]\nend\n\nwhen I start as a clone\nshow\nset [y v] to (y position)\nset [speed y v] to [-1]\nforever\n    Chomp\nend\n\nwhen flag clicked\nstop [other scripts in sprite v]\nhide\nstop [this script v]\n\ndefine Fix\nrepeat until <not <touching (ground v)?>>\n    change y by (1)\nend\n\nwhen I start as a clone\nforever\n    if <touching (player v)?> then\n        if <(Lose?) = [0]> then\n            broadcast (You Lose v)\n        end\n    end\nend\n\nwhen I start as a clone\nforever\n    if <(Level) = [3]> then\n        delete this clone\n    end\nend\n\nwhen I receive [next level v]\nset [speed y v] to [0]\nif <(Level) = [7]> then\n    switch costume to (costume2 v)\n    point in direction (90)\n    set size to (100) %\n    go to x: (-175) y: (73)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nforever\n    if <(Level) = [8]> then\n        delete this clone\n    end\nend\n\ndefine Chomp\nrepeat until <(Touching) > [0]>\n    change [speed y v] by (-3)\n    change y by (speed y)\n    if <touching (ground v)?> then\n        Fix\n        set [touching v] to [1]\n    end\nend\nset [touching v] to [0]\nstart sound [Crunch v]\nwait (1) seconds\nrepeat until <(y position) > (y)>\n    change y by (4)\nend\nwait (2) seconds\nset [speed y v] to [0]\n\nwhen I receive [next level v]\nset [speed y v] to [0]\nif <(Level) = [9]> then\n    switch costume to (costume2 v)\n    point in direction (90)\n    set size to (100) %\n    go to x: (-13) y: (23)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nforever\n    if <(Level) = [10]> then\n        delete this clone\n    end\nend\n\n@toaster1\n\nwhen flag clicked\nset [toaster # v] to []\nhide\n\nwhen I receive [next level v]\nif <(Level) = [2]> then\n    stop [other scripts in sprite v]\n    show\n    go to x: (70) y: (-70)\n    show\n    switch costume to (no v)\n    repeat until <(Level) = [3]>\n        set [toaster # v] to [1]\n        create clone of (toast v)\n        wait (2.5) seconds\n    end\nend\n\nwhen I receive [next level v]\nif <(Level) = [8]> then\n    stop [other scripts in sprite v]\n    go to x: (-99) y: (-68)\n    show\n    switch costume to (no v)\n    repeat until <(Level) = [9]>\n        set [toaster # v] to [1]\n        create clone of (toast v)\n        wait (2) seconds\n    end\nend\nhide\n\n@toaster2\n\nwhen flag clicked\nswitch costume to (no v)\nhide\n\nwhen I receive [next level v]\nif <(Level) = [9]> then\n    stop [other scripts in sprite v]\n    hide\n    stop [this script v]\nend\n\nwhen I receive [next level v]\nif <(Level) = [6]> then\n    hide\n    stop [other scripts in sprite v]\nend\n\nwhen I receive [next level v]\nif <(Level) = [8]> then\n    stop [other scripts in sprite v]\n    show\n    go to x: (180) y: (-67)\n    switch costume to (no v)\n    wait (2) seconds\n    repeat until <(Level) = [9]>\n        set [toaster # v] to [2]\n        create clone of (toast v)\n        wait (2) seconds\n    end\n    hide\n    stop [this script v]\nend\n\n@toast\n\nwhen flag clicked\nhide\n\nwhen I start as a clone\ngo to [back v] layer\nshow\nif <(toaster #) = [1]> then\n    go to (toaster1 v)\nelse\n    go to (toaster2 v)\nend\nset [toaster # v] to []\nchange y by (2)\nset [sy v] to [20]\nforever\n    turn right (15) degrees\nend\n\nwhen I start as a clone\nrepeat until <touching (ground v)?>\n    change [sy v] by (-1)\n    change y by (sy)\nend\ndelete this clone\n\nwhen I start as a clone\nforever\n    if <touching (player v)?> then\n        if <(Lose?) = [0]> then\n            broadcast (You Lose v)\n        end\n    end\nend\n\nwhen I receive [next level v]\nhide\ndelete this clone\n\n@Handle\n\nwhen I receive [next level v]\nset [speed y v] to [0]\nif <(Level) = [2]> then\n    switch costume to (costume2 v)\n    point in direction (90)\n    set size to (100) %\n    go to x: (-130) y: (73)\n    create clone of (_myself_ v)\n    stop [this script v]\nend\n\nwhen I start as a clone\nshow\nset [y v] to (y position)\nset [speed y v] to [-1]\nforever\n    Chomp\nend\n\nwhen flag clicked\nhide\n\ndefine Fix\nrepeat until <not <touching (ground v)?>>\n    change y by (1)\nend\n\nwhen I start as a clone\nforever\n    if <touching (player v)?> then\n        set [costume v] to (costume [number v])\n        switch costume to (costume2 v)\n        if <touching (player v)?> then\n            broadcast (Fix collision v)\n        end\n        switch costume to (costume)\n    end\nend\n\ndefine Move Vertical\nchange y by (speed y)\nswitch costume to (costume3 v)\nif <touching (ground v)?> then\n    Fix\n    set [touching v] to [1]\nend\nswitch costume to (costume2 v)\n\nwhen I start as a clone\nforever\n    if <(Level) = [3]> then\n        delete this clone\n    end\nend\n\nwhen I start as a clone\nforever\n    if <(Level) = [8]> then\n        delete this clone\n    end\nend\n\nwhen I receive [next level v]\nset [speed y v] to [0]\nif <(Level) = [7]> then\n    switch costume to (costume2 v)\n    point in direction (90)\n    set size to (100) %\n    go to x: (-175) y: (73)\n    create clone of (_myself_ v)\nend\n\ndefine Chomp\nrepeat until <(Touching) > [0]>\n    change [speed y v] by (-3)\n    Move Vertical\nend\nset [touching v] to [0]\nFix\nwait (1) seconds\nrepeat until <(y position) > (y)>\n    change y by (4)\nend\nwait (2) seconds\nset [speed y v] to [0]\n\nwhen I receive [next level v]\nset [speed y v] to [0]\nif <(Level) = [9]> then\n    switch costume to (costume2 v)\n    point in direction (90)\n    set size to (100) %\n    go to x: (-13) y: (23)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nforever\n    if <(Level) = [10]> then\n        delete this clone\n    end\nend\n\n@words\n\nwhen I receive [next level v]\nnext costume\n\nwhen flag clicked\nswitch costume to (costume1 v)\ngo to x: (0) y: (0)\nshow\ngo to [front v] layer\n\nwhen I receive [next level v]\ndelete this clone\n\n@Pic\n\nshow\ngo to x: (0) y: (0)\ngo to [front v] layer\n\nwhen flag clicked\nhide\n\n@Oil\n\nwhen I receive [next level v]\nif <(Level) = [3]> then\n    show\n    switch costume to (costume1 v)\nend\nif <(Level) = [4]> then\n    show\n    switch costume to (costume3 v)\nend\nif <(Level) = [5]> then\n    show\n    switch costume to (costume2 v)\nend\nif <(Level) = [6]> then\n    hide\nend\nif <(Level) = [9]> then\n    show\n    switch costume to (costume3 v)\nend\nif <(Level) = [10]> then\n    show\n    switch costume to (costume4 v)\nend\nif <(Level) = [11]> then\n    show\n    switch costume to (costume3 v)\nend\n\nwhen flag clicked\nhide\n\n@Kettle\n\nwhen I receive [next level v]\nif <(Level) = [6]> then\n    set size to (100) %\n    show\n    go to x: (-101) y: (-43)\n    stop [this script v]\nend\nif <(Level) = [8]> then\n    set size to (100) %\n    show\n    go to x: (25) y: (-43)\n    stop [this script v]\nend\nif <(Level) = [10]> then\n    show\n    go to x: (1) y: (30)\n    set size to (80) %\n    stop [this script v]\nend\nhide\n\nwhen flag clicked\nhide\n\n@smoke\n\nwhen I start as a clone\ngo to [back v] layer\npoint in direction (pick random (-10) to (10))\nswitch costume to (pick random (1) to (3))\nset [brightness v] effect to (pick random (0) to (20))\nshow\nrepeat (40)\n    go to x: (my x) y: (my y)\n    change [my x v] by ((pick random (-2) to (3)) - (([sin v] of (direction) ) * (7)))\n    change [my y v] by (([cos v] of (direction) ) * (5))\n    change [ghost v] effect by (pick random (0) to (5))\n    change [brightness v] effect by (pick random (1) to (3))\n    change size by (pick random (2) to (5))\n    if <[85] > (direction)> then\n        turn left ((pick random (-2) to (2)) - ((speed) / (7))) degrees\n    end\n    if <<touching (player v)?> and <(Lose?) = [0]>> then\n        broadcast (You Lose v)\n        set [lose? v] to [1]\n    end\n    if <<(y position) > [179]> or <(x position) < [-239]>> then\n        delete this clone\n    end\nend\ndelete this clone\n\nwhen flag clicked\nhide\nset [my x v] to [-320]\n\ndefine Produce steam\ngo to x: (([x position v] of [kettle v]) + (40)) y: (([y position v] of [kettle v]) + (35))\nset [my x v] to (x position)\nset [my y v] to (y position)\ncreate clone of (_myself_ v)\n\nwhen I receive [next level v]\nif <<(Level) = [6]> or <<(Level) = [8]> or <(Level) = [10]>>> then\n    forever\n        repeat (100)\n            Produce steam\n        end\n        wait (3) seconds\n    end\nend\n\n@Kettle2\n\nwhen flag clicked\nhide\n\nwhen I receive [next level v]\nif <(Level) = [6]> then\n    show\n    go to x: (120) y: (-48)\n    stop [this script v]\nend\nif <(Level) = [7]> then\n    show\n    go to x: (80) y: (-48)\n    stop [this script v]\nend\nif <(Level) = [11]> then\n    show\n    go to x: (143) y: (-39)\n    stop [this script v]\nend\nhide\n\n@smoke2\n\nwhen I start as a clone\ngo to [back v] layer\npoint in direction (pick random (-10) to (10))\nswitch costume to (pick random (1) to (3))\nset [brightness v] effect to (pick random (0) to (20))\nshow\nrepeat (40)\n    go to x: (my x) y: (my y)\n    change [my x v] by ((pick random (-2) to (3)) - (([sin v] of (direction) ) * (7)))\n    change [my y v] by (([cos v] of (direction) ) * (5))\n    change [ghost v] effect by (pick random (0) to (5))\n    change [brightness v] effect by (pick random (1) to (3))\n    change size by (pick random (2) to (5))\n    if <[85] > (direction)> then\n        turn left ((pick random (-2) to (2)) - ((speed) / (7))) degrees\n    end\n    if <<touching (player v)?> and <(Lose?) = [0]>> then\n        broadcast (You Lose v)\n        set [lose? v] to [1]\n    end\n    if <<(y position) > [179]> or <(x position) < [-239]>> then\n        delete this clone\n    end\nend\ndelete this clone\n\nwhen flag clicked\nhide\nset [my x v] to [-320]\n\ndefine Produce steam\ngo to x: (([x position v] of [kettle2 v]) + (40)) y: (([y position v] of [kettle2 v]) + (35))\nset [my x v] to (x position)\nset [my y v] to (y position)\ncreate clone of (_myself_ v)\n\nwhen I receive [next level v]\nif <<(Level) = [6]> or <(Level) = [7]>> then\n    forever\n        repeat (100)\n            Produce steam\n        end\n        wait (3) seconds\n    end\nend\nif <(Level) = [11]> then\n    forever\n        Produce steam\n    end\nend\n\nwhen I receive [next level v]\ndelete this clone\n\n