NoMotion - A Platformer

Instructions: My entry for the non-motion challenge. Please take into account that games with moving parts are harder to make without motion blocks than ones where everything stays still.\n\nBelieve it or not, there are none of the blue motion blocks in this game. See Inside if you don't believe me. (There is also no pen).\n\nCoding and art 100% by me\n\nSorry! I'm not able to respond to all comments! ) :

@Stage\n\ndefine Update\ndelete all of [collisions v]\nset [i v] to [0]\nrepeat (length of [ground xs v])\n    change [i v] by (1)\n    if <<<((x) + (25)) > (item (i) of [ground xs v])> and <(item (i) of [ground x2s v]) > (x)>> and <<((y) + (25)) > (item (i) of [ground ys v])> and <(item (i) of [ground y2s v]) > (y)>>> then\n        add (item (i) of [ground types v]) to [collisions v]\n    end\nend\n\nwhen flag clicked\nset [xv v] to [0]\nset [yv v] to [0]\nset [x v] to [-150]\nset [y v] to [0]\nset [level v] to [1]\nforever\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 v] by (Xv)\n    Update\n    if <[collisions v] contains [1]?> then\n        change [y v] by (1)\n        Update\n        if <[collisions v] contains [1]?> then\n            change [y v] by (1)\n            Update\n            if <[collisions v] contains [1]?> then\n                change [y v] by (1)\n                Update\n                if <[collisions v] contains [1]?> then\n                    change [y v] by (1)\n                    Update\n                    if <[collisions v] contains [1]?> then\n                        change [y v] by (1)\n                        Update\n                        if <[collisions v] contains [1]?> then\n                            change [x v] by ((Xv) * (-1))\n                            change [y v] by (-5)\n                            if <<key (up arrow v) pressed?> or <key (w 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    Update\n    if <[collisions v] contains [2]?> then\n        set [yv v] to [20]\n    end\n    change [yv v] by (-1)\n    change [y v] by (Yv)\n    Update\n    if <[collisions v] contains [1]?> then\n        change [y v] by ((Yv) * (-1))\n        set [yv v] to [0]\n    end\n    change [y v] by (-1)\n    Update\n    if <[collisions v] contains [1]?> then\n        if <<key (up arrow v) pressed?> or <key (w v) pressed?>> then\n            set [yv v] to [15]\n        end\n    end\n    change [y v] by (1)\n    if <[collisions v] contains [3]?> then\n        broadcast (Die v)\n    end\n    if <[collisions v] contains [4]?> then\n        broadcast (Next Level v)\n    end\n    set [mouse v] to (join (mouse x) (join [, ] (mouse y)))\nend\n\nwhen flag clicked\nGenerate\n\ndefine Generate\ndelete all of [ground types v]\ndelete all of [ground xs v]\ndelete all of [ground ys v]\ndelete all of [ground x2s v]\ndelete all of [ground y2s v]\nAdd Ground at [195] [-180] to [240] [180] type: [1]\nAdd Ground at [-240] [-180] to [-210] [180] type: [1]\nAdd Ground at [-240] [170] to [240] [180] type: [1]\nif <(Level) = [1]> then\n    Add Ground at [-240] [-180] to [240] [-125] type: [1]\n    Add Ground at [-15] [-125] to [240] [-65] type: [1]\n    Add Ground at [-133] [31] to [-75] [85] type: [4]\nend\nif <(Level) = [2]> then\n    Add Ground at [-240] [-180] to [-32] [-125] type: [1]\n    Add Ground at [-32] [-240] to [48] [-145] type: [3]\n    Add Ground at [48] [-180] to [240] [-125] type: [1]\n    Add Ground at [116] [-77] to [143] [-50] type: [4]\nend\nif <(Level) = [3]> then\n    Add Ground at [-240] [-180] to [240] [-125] type: [1]\n    Add Ground at [-40] [-180] to [19] [50] type: [1]\n    Add Ground at [88] [-74] to [132] [-29] type: [4]\nend\nif <(Level) = [4]> then\n    Add Ground at [-240] [-180] to [240] [-125] type: [1]\n    Add Ground at [-33] [8] to [10] [50] type: [4]\nend\nif <(Level) = [5]> then\n    Add Ground at [-240] [-180] to [240] [-136] type: [3]\n    Add Ground at [-148] [-180] to [-120] [-36] type: [1]\n    Add Ground at [-26] [-180] to [2] [-50] type: [1]\n    Add Ground at [98] [-180] to [124] [19] type: [1]\n    Add Ground at [124] [114] to [167] [157] type: [4]\nend\nif <(Level) = [6]> then\n    Add Ground at [-240] [-180] to [-32] [-125] type: [1]\n    Add Ground at [-32] [-240] to [48] [-145] type: [3]\n    Add Ground at [48] [-180] to [240] [-125] type: [1]\n    Add Ground at [116] [-77] to [143] [-50] type: [4]\nend\n\ndefine Add Ground at (x) (y) to (x2) (y2) type: (type)\nadd (x) to [ground xs v]\nadd (y) to [ground ys v]\nadd (x2) to [ground x2s v]\nadd (y2) to [ground y2s v]\nadd (type) to [ground types v]\n\nwhen I receive [next level v]\nchange [level v] by (1)\nif <(Level) > [6]> then\n    set [level v] to [1]\nend\nGenerate\nset [x v] to [-150]\nset [y v] to [0]\nset [xv v] to [0]\nset [yv v] to [0]\n\nwhen I receive [die v]\nset [x v] to [-150]\nset [y v] to [0]\nset [xv v] to [0]\nset [yv v] to [0]\n\n@Top\n\nwhen flag clicked\nswitch costume to (costume1 v)\nforever\n    Set Size ((913) + (((y) + (25)) * (-5.09)))\nend\n\ndefine Set Size (size)\nset [# v] to (costume [number v])\nswitch costume to (0 v)\nset size to (size) %\nswitch costume to (#)\n\n@Bottom\n\nwhen flag clicked\nswitch costume to (costume1 v)\nforever\n    Set Size ((2570) + ((y) * (5.09)))\nend\n\ndefine Set Size (size)\nset [# v] to (costume [number v])\nswitch costume to (0 v)\nset size to (size) %\nswitch costume to (#)\n\n@RIght\n\nwhen flag clicked\nswitch costume to (costume1 v)\nforever\n    Set Size ((1198) + (((x) + (25)) * (-4.98)))\nend\n\ndefine Set Size (size)\nset [# v] to (costume [number v])\nswitch costume to (0 v)\nset size to (size) %\nswitch costume to (#)\n\n@Left\n\nwhen flag clicked\nswitch costume to (costume1 v)\nforever\n    Set Size ((1200) + ((x) * (4.98)))\nend\n\ndefine Set Size (size)\nset [# v] to (costume [number v])\nswitch costume to (0 v)\nset size to (size) %\nswitch costume to (#)\n\n@BG\n\nwhen flag clicked\nforever\n    switch costume to (Level)\nend\n\n@Sprite1\n\nwhen flag clicked\nhide\n\n