NinjaRun 3™ A Platformer

Instructions: This project will NOT be finished, this project was going to be a testament to what Scratch is capable of, and this project has gotten too big for me to finish.\nThis project was made over the course of two years.\n(More details lower down in the description...)\n\nInstructions:\n\nPress the green flag to go to the menu.\n\nArrow keys to move\nZ to Jump\nX to Attack\nC to Throw a shuriken\n -or-\nWASD to move\nL to Jump\nK to attack\nJ to Throw a shuriken\n\n--------------------------------Details--------------------------------\nI want to say that I am very proud of this project, it really is something phenomenal, it's just that it has one extremely huge oversight that led to this project being less of a labor of love, and more of a point of anxiety and stress. \n\nThat oversight is: Scope.\n\nScope is the concept of how big a project can be and how big it should be. In this case, I waaaay overshot on scope, because I am one person and I cannot make a game of the size I wanted this project to be. what you see before you is the work of two years (not years time, mind you, but probably about 100+ hours of work)\n\n-------------------What I wanted for this project---------------\n( how long something took to make is listed to the right of the idea.\nThere is an "X" next to all of the things that are unfinished, and thus, I did not list a time for how long it took. )\n\nI wanted a player character that can:\n         - Double Jump, move, wall jump. ( 1 hour )\n                - Animating the above ( 6 hours )\n         - Attack in all directions with a sword and shuriken ( 1 hour )\n                - Animating the above ( 6 hours )\n      X - Roll\n         - Sound effects for all of the above ( 1 hour )\n\nI wanted levels with--------------------------------\nX - A story\nX - Stealth level, parkour level, and a boss level\nX - I wanted levels that are extremely decorated, with six layers of parallax backgrounds. \n( 24 hours per level )\n   - Tutorial level ( 24 hours )\n X - Original Soundtrack for each level\n   \nI wanted enemies with-------------------\n  - Intelligent A.I. ( 2 hours )\n  - A Shriek phase ( 1 hour )\n  - A running phase ( 1 hour )\n  - An attack phase ( 1 hour )\n         - Animating all of the above ( 10 hours )\n      X - Sounds for all of the above\n\nX - Debugging all of the above ( + 9999999 hours )\n(Jk, but debugging still takes ages... -.- )\n\nAlso, the player alone has like, over 250 costumes, there has to be over 2000 block of code in this project, the player has like, 50 variables, and there are probably over 100 vector shapes in the menu backdrop and tutorial level, so...\n\n-------------------------------Aftermath-----------------------------\nAs you can see, what I have done already is already a lot of work; let alone making everything listed above.\nThat being said, though, what did come out of this project looks extremely professional, and I think I could have been great; I just think the time invested would not of been worth it.\n\n-----------------------------Final Thoughts------------------------\nDo I regret all of the time I put into this? No. This project was a fantastic learning experience, and a lesson in scope. I wanted to release this because I felt like It would be a crime not to.\n\nBut, the biggest reason I released this project is because I wasn't letting myself make any other project until I finished this one, it stressed me out, and I didn't want to make it anymore, it felt more like a job than an act of love and passion. I want to move on to other ideas, and make things out of love.\n\nSo here it is. Purple ninja. (at least, what I have of it.)\n\nThanks for reading, by the way, means a lot to me. ^ ^\n\nHave a penguino.\n( '>')\n\nReleased: July 22, 2020\nWhat the community is loving: July 23, 2020

@Stage\n\nwhen flag clicked\nset [level v] to [1]\nforever\n    switch backdrop to (Level)\nend\n\n@Sprite5\n\n@Player\n\nwhen I receive [backstory v]\nif <(Colour Chosen) = [Light Red]> then\n    switch costume to (light red v)\nelse\n    if <(Colour Chosen) = [Red]> then\n        switch costume to (red v)\n    else\n        if <(Colour Chosen) = [Orange]> then\n            switch costume to (orange v)\n        else\n            if <(Colour Chosen) = [Dark Orange]> then\n                switch costume to (dark orange v)\n            else\n                if <(Colour Chosen) = [Pink]> then\n                    switch costume to (costume1 v)\n                else\n                    if <(Colour Chosen) = [costume2]> then\n                        switch costume to (bruh v)\n                    end\n                end\n            end\n        end\n    end\nend\n\n\n\nwhen I start as a clone\nswitch costume to (fantasia2 v)\nrepeat (10)\n    change [ghost v] effect by (10)\n    change size by (-3)\nend\ndelete this clone\n\ndefine Place Player: (x) (y) Set Size To: (size)\ngo to x: (x) y: (y)\nset size to (size) %\n\nwhen flag clicked\nhide\n\ndefine Gravity, Platform Detection, Physics....\nforever\n    change [y v] by (-1)\n    if <<<key (a v) pressed?> or <key (left arrow v) pressed?>> or <<mouse down?> and <(mouse x) < (x position)>>> then\n        change [x v] by (-1)\n        point in direction (-90)\n    end\n    if <<<key (d v) pressed?> or <key (right arrow v) pressed?>> or <<mouse down?> and <(mouse x) > (x position)>>> then\n        change [x v] by (1)\n        point in direction (90)\n    end\n    set [x v] to ((x) * (0.9))\n    change x by (x)\n    if <touching (level v)?> then\n        change y by (1)\n    end\n    if <touching (level v)?> then\n        change y by (1)\n    end\n    if <touching (level v)?> then\n        change y by (1)\n    end\n    if <touching (level v)?> then\n        change y by (1)\n    end\n    if <touching (level v)?> then\n        change y by (-4)\n        change x by ((x) * (-1))\n        if <<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <(mouse y) > [0]>>> then\n            set [y v] to [17]\n            if <(x) > [0]> then\n                set [x v] to [-10]\n            else\n                set [x v] to [10]\n            end\n        else\n            set [x v] to [0]\n        end\n    end\n    change y by (y)\n    if <touching (level v)?> then\n        change y by ((y) - ((y) * (2)))\n        set [y v] to [0]\n    end\n    change y by (-1)\n    if <<<<key (up arrow v) pressed?> or <key (w v) pressed?>> or <<mouse down?> and <((mouse y) - (y position)) > [50]>>> and <touching (level v)?>> then\n        set [y v] to [15]\n    end\n    change y by (1)\n    if <<<<touching (obstacles v)?> or <(y position) < [-175]>> or <<touching (lava v)?> or <touching (saw2 v)?>>> or <touching (saw1 v)?>> then\n        set [ghost v] effect to (0)\n        repeat (10)\n            change [ghost v] effect by (10)\n        end\n        Place Player: [-200] [0] Set Size To: [40]\n        set [x v] to [0]\n        set [y v] to [0]\n        set [ghost v] effect to (0)\n    end\n    if <(x position) > [230]> then\n        broadcast (@cheekyscuola's Transition v)\n        wait (0.5) seconds\n        change [level v] by (1)\n        set [y v] to [0]\n        set [x v] to [0]\n        Place Player: [-200] [0] Set Size To: [40]\n    end\n    if <touching (sprite1 v)?> then\n        set [y v] to [20]\n    end\nend\n\nwhen flag clicked\nswitch costume to (Colour Chosen)\nforever\n    create clone of (_myself_ v)\nend\n\nwhen I receive [restart v]\nPlace Player: [-200] [500] Set Size To: [40]\n\nbroadcast (@cheekyscuola's Transition v) and wait\n\nwhen I receive [backstory v]\nset [level v] to [1]\nshow\nPlace Player: [-200] [500] Set Size To: [40]\nhide variable [y v]\nhide variable [x v]\nset [y v] to [0]\nset [x v] to [0]\nforever\n    Gravity, Platform Detection, Physics....\nend\n\nwhen I receive [ez v]\n\n@Level\n\nwhen flag clicked\nhide\n\nwhen I receive [backstory v]\nshow\ngo to [front v] layer\nforever\n    switch costume to (Level)\nend\n\n@Obstacles\n\nwhen flag clicked\nforever\n    switch costume to (Level)\nend\n\n@Sprite4\n\nwhen flag clicked\nhide\n\nwhen I receive [start the game v]\nforever\n    go to [front v] layer\n    show\nend\n\nwhen this sprite clicked\nbroadcast (Restart v)\n\nwhen flag clicked\n\npoint in direction ((([sin v] of ((timer) * (300)) ) * (10)) + (90))\n\nwhen I receive [backstory v]\nshow\n\nwhen I receive [backstory v]\ngo to x: (191) y: (-160)\nwait (1) seconds\nshow\nwait (0.01) seconds\ngo to [front v] layer\nshow\nforever\nend\n\nwhen I receive [backstory v]\nforever\n    if <touching (mouse-pointer v)?> then\n        set size to (120) %\n        set [ghost v] effect to (30)\n    else\n        set size to (100) %\n        set [ghost v] effect to (0)\n    end\nend\n\n@Something\n\nwhen flag clicked\nshow\nforever\n    go to (mouse-pointer v)\n    Sense\nend\n\ndefine Sense\nswitch costume to (sense v)\nshow\nset [ghost v] effect to (20)\ngo [forward v] (9999999999999999999999999999999999999999999) layers\ngo to [front v] layer\nif <touching (title v)?> then\n    switch costume to (play game v)\nelse\n    if <touching (instructions v)?> then\n        switch costume to (revenge v)\n    else\n        if <touching (skip v)?> then\n            switch costume to (costume4 v)\n        else\n            if <touching (back v)?> then\n                switch costume to (costume1 v)\n            else\n                if <touching (instructions2 v)?> then\n                    switch costume to (costume2 v)\n                else\n                    if <touching (sprite4 v)?> then\n                        switch costume to (costume3 v)\n                    else\n                        if <touching (random v)?> then\n                            switch costume to (random v)\n                        else\n                            if <touching (back button v)?> then\n                                switch costume to (back v)\n                            else\n                                if <touching (marshmello - alone v)?> then\n                                    switch costume to (marshmello - alone v)\n                                else\n                                    if <touching (info v)?> then\n                                        switch costume to (back v)\n                                    else\n                                        if <<touching (?? v)?> or <touching (??? v)?>> then\n                                            switch costume to (??? v)\n                                        else\n                                            if <touching (sprite2 v)?> then\n                                                switch costume to (costume5 v)\n                                            else\n                                                if <touching (thefatrat - time lapse v)?> then\n                                                    switch costume to (thefatrat - time lapse v)\n                                                else\n                                                    if <touching (vexento - we are one v)?> then\n                                                        switch costume to (vexento - we are one v)\n                                                    else\n                                                        if <touching (revenge v)?> then\n                                                            switch costume to (revenge v)\n                                                        else\n                                                            if <touching (vexento - pegasus v)?> then\n                                                                switch costume to (vexento - pegasus v)\n                                                            else\n                                                                if <touching (never gonna give you up v)?> then\n                                                                    switch costume to (never gonna give you up v)\n                                                                else\n                                                                    if <touching (avicii - levels v)?> then\n                                                                        switch costume to (avicii - levels v)\n                                                                    else\n                                                                        if <<touching (cloud v)?> and <(Random variable1) = [0]>> then\n                                                                            switch costume to (highscore v)\n                                                                        else\n                                                                            if <<touching (instructions v)?> and <(Random variable2) = [0]>> then\n                                                                                switch costume to (instructions v)\n                                                                            else\n                                                                                if <touching (costume selection v)?> then\n                                                                                    switch costume to (costume selection v)\n                                                                                else\n                                                                                    if <(LOL variable) = [1]> then\n                                                                                        go to [front v] layer\n                                                                                        switch costume to (resume v)\n                                                                                    else\n                                                                                        if <<touching (pause/play button v)?> and <([costume # v] of [pause/play button v]) = [1]>> then\n                                                                                            switch costume to (pause v)\n                                                                                        else\n                                                                                            hide\n                                                                                        end\n                                                                                    end\n                                                                                end\n                                                                            end\n                                                                        end\n                                                                    end\n                                                                end\n                                                            end\n                                                        end\n                                                    end\n                                                end\n                                            end\n                                        end\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen flag clicked\nforever\n    go to [front v] layer\n    go [forward v] (99) layers\nend\n\nwhen I receive [instructions v]\nhide\n\nwhen I receive [back v]\nshow\n\n@info\n\nwhen I receive [backstory v]\ngo to x: (191) y: (-160)\nwait (1) seconds\nshow\nwait (0.01) seconds\ngo to [front v] layer\nshow\nforever\n\nwhen flag clicked\nshow\ngo [forward v] (500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) layers\n\nwhen this sprite clicked\nchange [level v] by (1)\n\nwhen I receive [outro v]\n\nwhen flag clicked\n\npoint in direction ((([sin v] of ((timer) * (300)) ) * (10)) + (90))\n\n\n\nwhen flag clicked\nhide\n\nwhen I receive [backstory v]\ngo to x: (124) y: (-162)\nforever\n    if <touching (mouse-pointer v)?> then\n        set size to (120) %\n        set [ghost v] effect to (30)\n    else\n        set size to (100) %\n        set [ghost v] effect to (0)\n    end\n    if <(Level) = [18]> then\n        hide\n        stop [other scripts in sprite v]\n    else\n        show\n    end\nend\n\nwhen I receive [@cheekyscuola's transition v]\n\n@Lava\n\nwhen I start as a clone\nshow\nforever\n    set [ghost v] effect to (050)\n    switch costume to (Level)\n    set y to ((([sin v] of (((timer) + (me)) * (300)) ) * (8)) - ((me) * (5)))\nend\n\nwhen flag clicked\ngo [forward v] (1) layers\nforever\n    switch costume to (Level)\nend\n\nwhen I receive [outro v]\nhide\n\nwhen flag clicked\nhide\nforever\n    go to x: (0) y: (0)\n    switch costume to (Level)\nend\n\nwhen flag clicked\nclear graphic effects\ngo to x: (0) y: (0)\nset [me v] to [1]\nrepeat (3)\n    create clone of (_myself_ v)\n    change y by (-0)\n    change [brightness v] effect by (-10)\n    change [me v] by (1)\nend\n\n@Sprite1\n\nwhen flag clicked\nshow\nforever\n    switch costume to (Level)\nend\n\n@Saw1\n\nwhen flag clicked\nforever\n    turn right (10) degrees\nend\n\nwhen flag clicked\nshow\nforever\n    switch costume to (Level)\nend\n\nwhen flag clicked\nforever\n    if <(Level) = [8]> then\n        go to x: (0) y: (-70)\n    end\n    if <(Level) = [9]> then\n        go to x: (-50) y: (-70)\n    end\n    if <(Level) = [17]> then\n        go to x: (-50) y: (-70)\n    end\nend\n\n@Saw2\n\nwhen flag clicked\nforever\n    turn left (15) degrees\nend\n\nwhen flag clicked\nshow\nforever\n    switch costume to (Level)\nend\n\nwhen flag clicked\nforever\n    if <(Level) = [9]> then\n        go to x: (125) y: (-70)\n    end\nend\n\n@Transition by @cheekyscuola (Backpack This)\n\nwhen flag clicked\nhide\n\nwhen I receive [@cheekyscuola's transition v]\ngo [forward v] (999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999) layers\nshow\nrepeat (20)\n    change y by (((0) - (y position)) / (4))\nend\nwait (0.2) seconds\nrepeat (20)\n    change y by (((345) - (y position)) / (4))\nend\nhide\n\nwhen flag clicked\n\nclear graphic effects\nset [color v] effect to (0)\nforever\n    change [color v] effect by (2)\nend\n\n@Awesome Particles\n\nwhen I start as a clone\nset [ghost v] effect to (65)\ngo to [back v] layer\nshow\nif <(size) > [99]> then\n    glide (6) secs to x: (x position) y: (200)\n    delete this clone\nend\nif <(size) > [80]> then\n    glide (5) secs to x: (x position) y: (200)\n    delete this clone\nend\nif <(size) > [65]> then\n    glide (4) secs to x: (x position) y: (200)\n    delete this clone\nend\nif <(size) > [50]> then\n    glide (3) secs to x: (x position) y: (200)\n    delete this clone\nend\nif <(size) > [40]> then\n    glide (2.5) secs to x: (x position) y: (200)\n    delete this clone\nend\n\nwhen flag clicked\nhide\n\nwhen I receive [stop all v]\nhide\nstop [other scripts in sprite v]\ndelete this clone\n\nwhen flag clicked\nforever\n    set [brightness v] effect to (pick random (-10) to (10))\n    set size to (pick random (41) to (90)) %\n    go to x: (pick random (-200) to (200)) y: (-180)\n    create clone of (_myself_ v)\n    wait (pick random (0.2) to (0.6)) seconds\nend\n\n@Sprite2\n\nwhen flag clicked\nhide\n\nwhen this sprite clicked\nnext costume\nforever\n    if <(costume [number v]) = [1]> then\n        play sound [Vexento - Pixel Party.mp3 v] until done\n    else\n        if <(costume [number v]) = [2]> then\n            stop all sounds\n        end\n    end\nend\n\nplay sound [TheFatRat - Time Lapse v] until done\n\nwhen flag clicked\n\nwhen flag clicked\nswitch costume to (costume1 v)\n\nwhen flag clicked\n\nwhen I receive [backstory v]\nshow\ngo [backward v] (5) layers\nwait (1) seconds\nrepeat until <(costume [number v]) = [2]>\n    play sound [Vexento - Pixel Party.mp3 v] until done\nend\n\nwhen I receive [backstory v]\nshow\ngo [backward v] (5) layers\nwait (1) seconds\n\nwhen I receive [backstory v]\ngo to [front v] layer\nswitch costume to (costume1 v)\ngo [backward v] (15) layers\nhide\nset [ghost v] effect to (0)\n\nwhen I receive [backstory v]\nshow\nforever\n    if <touching (mouse-pointer v)?> then\n        set size to (120) %\n        set [ghost v] effect to (30)\n    else\n        set size to (100) %\n        set [ghost v] effect to (0)\n    end\nend\n\n@Sprite3\n\n@Snow\n\nwhen flag clicked\ngo to [back v] layer\nshow\nclear graphic effects\nset size to (100) %\nforever\n    go to x: (pick random (240) to (-240)) y: (170)\n    wait (0.08) seconds\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nswitch costume to (costume3 v)\nshow\nset size to (pick random (125) to (300)) %\nset [ghost v] effect to (pick random (0) to (40))\nrepeat until <touching (level v)?>\n    change y by (-10)\nend\ndelete this clone\n\nforever\nend\n\n@Sprite6\n\n@TN3\n\nwhen flag clicked\nforever\n    go to [front v] layer\n    set [ghost v] effect to (100)\n    show\nend\n\nshow\ngo to [front v] layer\ngo to x: (0) y: (0)\n\n@Sprite7\n\n@Title Screen\n\nwhen flag clicked\nshow\ngo to [back v] layer\ngo [forward v] (1) layers\n\nwhen I receive [green flag v]\nhide\n\nwhen I receive [music on v]\n\nwhen I receive [music off v]\nforever\n    stop all sounds\nend\n\nwhen I receive [backstory v]\nhide\n\n@Play Button\n\nwhen I receive [backstory v]\nhide\nstop [other scripts in sprite v]\n\nwhen flag clicked\ngo to x: (0) y: (-100)\nset size to (100) %\nshow\nclear graphic effects\nforever\n    if <touching (mouse-pointer v)?> then\n        set size to (100) %\n    else\n        set size to (100) %\n    end\n    set y to ((([sin v] of ((timer) * (500)) ) * (5)) + (-38))\nend\n\nwhen flag clicked\nforever\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        start sound [Connect v]\n        broadcast (Backstory v)\n        wait until <not <mouse down?>>\n    end\n    if <touching (mouse-pointer v)?> then\n        switch costume to (costume2 v)\n    else\n        switch costume to (costume1 v)\n    end\nend\n\nbroadcast (Green Flag v)\n\nwhen I receive [green flag v]\nhide\n\nset y to (-115)\n\nwhen I receive [backstory v]\nhide\n\n@Sprite8\n\n@Sprite9\n\n@Player Options\n\nwhen flag clicked\nshow\nswitch costume to (light red v)\nset [colour chosen v] to [Light Red]\n\nwhen I receive [left v]\nswitch costume to ((costume [number v]) - (1))\nforever\n    set [colour chosen v] to (costume [name v])\n    switch costume to (Colour Chosen)\nend\n\nwhen I receive [left v]\n\nwhen I receive [right v]\n\nwhen I receive [right v]\nnext costume\nforever\n    set [colour chosen v] to (costume [name v])\n    switch costume to (Colour Chosen)\nend\n\nwhen I receive [green flag v]\nhide\n\nwhen I receive [backstory v]\nhide\n\n@Left Button\n\nwhen I receive [backstory v]\nhide\n\nwhen flag clicked\nshow\ngo to x: (-52) y: (-115)\nforever\n    if <touching (mouse-pointer v)?> then\n        switch costume to (selected v)\n    else\n        switch costume to (deselected v)\n    end\nend\n\nwhen flag clicked\nforever\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        start sound [Collect v]\n        broadcast (Left v)\n        wait until <not <mouse down?>>\n    end\nend\n\nset [colour chosen v] to (costume [number v])\n\nwhen I receive [green flag v]\nhide\n\n@Right Button\n\nwhen I receive [backstory v]\nhide\n\nwhen flag clicked\nforever\n    if <touching (mouse-pointer v)?> then\n        switch costume to (selected v)\n    else\n        switch costume to (deselected v)\n    end\nend\n\nwhen flag clicked\nshow\ngo to x: (52) y: (-115)\nforever\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        start sound [Collect v]\n        broadcast (Right v)\n        wait until <not <mouse down?>>\n    end\nend\n\nwhen I receive [green flag v]\nhide\n\n