Scratch Day Platformer

Instructions: Instructions in the game, but I will tell you here anyway.\n- Arrow keys to move\n- Up key to jump\n- Red is bad.\nI read all your comments, but I don't have time to answer everyone. Sorry for that. :P

@Stage\n\nwhen flag clicked\nswitch backdrop to (1 v)\n\n@Ninja\n\nwhen I receive [green flag clicked v]\nset size to (25) %\nset rotation style [left-right v]\nshow\nset [speed y v] to [0]\nset [falling? v] to [10]\nforever\n    switch costume to (hitbox v)\n    if <<(speed y) < [4]> or <<key (w v) pressed?> or <key (up arrow v) pressed?>>> then\n        change [speed y v] by (-1)\n    else\n        change [speed y v] by (-2)\n    end\n    change y by (speed y)\n    Touch Ground <(speed y) > [0]>\n    if <(wall jump) > [0]> then\n        change [wall jump v] by (-1)\n    else\n        set [speed x v] to ((speed x) * (0.7))\n        if <<key (a v) pressed?> or <key (left arrow v) pressed?>> then\n            change [speed x v] by (-1.5)\n            set [direction v] to [l]\n        end\n        if <<key (d v) pressed?> or <key (right arrow v) pressed?>> then\n            change [speed x v] by (1.5)\n            set [direction v] to [r]\n        end\n    end\n    if <(speed x) < [-0.5]> then\n        Walk (-90) (speed x)\n    else\n        if <(speed x) > [0.5]> then\n            Walk (90) (speed x)\n        else\n            set [frame v] to [0]\n        end\n    end\n    if <<key (w v) pressed?> or <key (up arrow v) pressed?>> then\n        if <<(jump key) = [0]> and <(falling?) < [3]>> then\n            set [speed y v] to [14]\n            set [falling? v] to [6]\n            set [jump key v] to [1]\n        end\n    else\n        set [jump key v] to [0]\n    end\n    Set Costume\nend\n\ndefine None\npoint in direction (direction)\nchange x by (speed)\nset [slope v] to [0]\nrepeat until <<(slope) = [8]> or <not <touching color (#666666)?>>>\n    change y by (1)\n    change [slope v] by (1)\nend\nif <(slope) = [8]> then\n    change x by ((0) - (speed))\n    change y by ((0) - (slope))\nend\nif <(speed) < [0]> then\n    change [frame v] by ((speed) / (-8))\nelse\n    change [frame v] by ((speed) / (8))\nend\n\ndefine Set Costume\nif <(falling?) < [6]> then\n    if <(frame) = [0]> then\n        switch costume to (stand_1 v)\n    else\n        switch costume to ([floor v] of ((4) + ((frame) mod (8))) )\n    end\nelse\n    if <(speed y) > [0]> then\n        switch costume to (jump_1 v)\n    else\n        switch costume to (fall_1 v)\n    end\nend\n\nwhen I receive [next_level v]\ngo to x: (-240) y: (-120)\nset [ghost v] effect to (0)\n\nwhen I receive [restart v]\ngo to x: (-240) y: (-120)\n\ndefine Touch Ground <>\nchange [falling? v] by (1)\nrepeat until <not <touching color (#666666)?>>\n    if <up?> then\n        change y by (-1)\n    else\n        change y by (1)\n        set [falling? v] to [0]\n    end\n    set [speed y v] to [0]\nend\n\nswitch backdrop to (next backdrop v)\n\nwhen I receive [ghost v]\nwait (0.5) seconds\nset [ghost v] effect to (50)\nwait (0.5) seconds\nset [ghost v] effect to (75)\n\nwhen I receive [green flag clicked v]\nforever\n    if <<<touching color (#ff0000)?> or <touching (restart v)?>> or <key (r v) pressed?>> then\n        broadcast (Restart v) and wait\n    end\nend\n\n@Ground\n\nwhen flag clicked\nswitch costume to (1 v)\n\nwhen I receive [next_level v]\nnext costume\nif <([costume name v] of [ground v]) = [GHOST]> then\n    broadcast (ghost v)\nend\n\ngo to x: (0) y: (0)\n\n@Next_level\n\nwhen flag clicked\ngo to x: (0) y: (0)\nforever\n    wait until <touching (ninja v)?>\n    broadcast (Next_level v)\nend\n\n@Restart\n\nwhen flag clicked\ngo to x: (0) y: (0)\nforever\n    wait until <touching (ninja v)?>\n    broadcast (Restart v)\nend\n\n@Sprite1\n\nwhen [s v] key pressed\nbroadcast (Green Flag clicked v)\nswitch costume to (empty v)\n\nwhen flag clicked\nif <<(current [month v]) = [5]> and <(current [date v]) = [12]>> then\n    set [scratch day? v] to [True]\nelse\n    set [scratch day? v] to [False]\nend\n\nwhen flag clicked\ngo to x: (0) y: (0)\nif <(Scratch Day?) = [True]> then\n    switch costume to (costume1 v)\nelse\n    switch costume to (not scratch day yet! v)\nend\ngo to [front v] layer\n\nwhen [space v] key pressed\nwait (0.8) seconds\nif <(costume [number v]) = [11]> then\n    next costume\n    broadcast (Green Flag clicked v)\nelse\n    next costume\nend\nif <(costume [number v]) = [9]> then\n    broadcast (The cat has to fall! v)\nend\n\n@Falling\n\nwhen flag clicked\nhide\nset size to (100) %\ngo to x: (0) y: (0)\n\nwhen I receive [the cat has to fall! v]\nshow\ngo to [front v] layer\nrepeat (100)\n    change size by (-1)\nend\nhide\nset size to (100) %\n\n@Sprite2\n\nwhen flag clicked\nset [ghost v] effect to (100)\ngo to x: (0) y: (0)\nrepeat until <([costume name v] of [sprite1 v]) = [EMPTY]>\n    wait until <key (space v) pressed?>\n    go to [front v] layer\n    repeat (10)\n        change [ghost v] effect by (-10)\n        wait (0.05) seconds\n    end\n    wait (0.1) seconds\n    repeat (10)\n        change [ghost v] effect by (10)\n        wait (0.05) seconds\n    end\nend\n\n@catnew\n\nwhen flag clicked\nset [ghost v] effect to (100)\nforever\n    go to [front v] layer\nend\n\n