Achiever The Platformer (600+ Special)
@Stage\n\nwhen flag clicked\nforever\n    FPS (frames per second)\nend\n\ndefine FPS (frames per second)\nset [fps v] to (round ((1) / (((((days since 2000) - (FPS Last Value)) * (24)) * (60)) * (60))))\nset [fps last value v] to (days since 2000)\nmove (10) steps\n\nwhen flag clicked\nforever\n    if <(level) = [1]> then\n        switch costume to (bronze back v)\n    else\n        if <(level) = [6]> then\n            switch costume to (silver back v)\n        else\n            if <(level) = [11]> then\n                switch costume to (gold back v)\n            else\n                if <(level) = [15]> then\n                    switch costume to (mix v)\n                end\n            end\n        end\n    end\nend\n\nhide variable [fps v]\n\n@TB\n\nwhen flag clicked\nforever\n    show\n    go to [front v] layer\n    set [ghost v] effect to (100)\n    go to x: (0) y: (0)\nend\n\ngo to [front v] layer\nhide\nset size to (100) %\n\nwhen flag clicked\n\nshow\n\n@Player\n\nwhen flag clicked\nforever\n    if <<(x position) > [235]> and <not <(level) = [15]>>> then\n        change [level v] by (1)\n        if <(level) = [14]> then\n            go to x: (-200) y: (130)\n        else\n            go to x: (-200) y: (-60)\n        end\n    end\nend\n\ndefine Platform Gravity: (gravity) Jump Height: (jump height) Side Movement Speed (side movement) Friction (friction) Slope: (slope)\nset rotation style [left-right v]\nchange [y velocity v] by (gravity)\nchange y by (Y Velocity)\nif <touching (ground v)?> then\n    repeat until <not <touching (ground v)?>>\n        change y by ((([abs v] of (Y Velocity) ) / (Y Velocity)) * (-1))\n    end\n    set [y velocity v] to (<<<<key (up arrow v) pressed?> or <<key (space v) pressed?> or <key (w v) pressed?>>> or <<mouse down?> and <(mouse y) > (y position)>>> and <(([abs v] of (Y Velocity) ) / (Y Velocity)) = [-1]>> * (jump height))\nend\nset [x velocity v] to (((X Velocity) + ((<<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < (x position)>>> * ((side movement) * (-1))) + (<<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > (x position)>>> * (side movement)))) * (friction))\nchange x by (X Velocity)\nset [slope v] to [0]\nrepeat until <<(Slope) = ((slope) * (-1))> or <not <touching (ground v)?>>>\n    change y by (1)\n    change [slope v] by (-1)\nend\nif <touching (ground v)?> then\n    change y by (Slope)\n    repeat until <not <touching (ground v)?>>\n        change x by ((([abs v] of (X Velocity) ) / (X Velocity)) * (-1))\n    end\nend\nif <<<key (right arrow v) pressed?> or <key (d v) pressed?>> or <<mouse down?> and <(mouse x) > (x position)>>> then\n    point in direction (90)\nend\nif <<<key (left arrow v) pressed?> or <key (a v) pressed?>> or <<mouse down?> and <(mouse x) < (x position)>>> then\n    point in direction (-90)\nend\n\nwhen flag clicked\nforever\n\nwhen flag clicked\ngo to x: (-200) y: (-80)\nset size to (50) %\ngo to [front v] layer\nset [level v] to [1]\nset [x velocity v] to [0]\nset [y velocity v] to [0]\nforever\n    clear graphic effects\n    Platform Gravity: [-1] Jump Height: [13.5] Side Movement Speed [2.7] Friction [.7] Slope: [8]\nend\n\nwhen I start as a clone\nset [ghost v] effect to (50)\nrepeat (10)\n    change [ghost v] effect by (5)\nend\ndelete this clone\n\nwhen flag clicked\nforever\n    play sound [ v] until done\nend\n\nwhen flag clicked\nforever\n    if <<(y position) < [-180]> or <touching (death v)?>> then\n        create clone of (_myself_ v)\n        set [x velocity v] to [0]\n        set [y velocity v] to [0]\n        go to x: (-200) y: (-80)\n    end\nend\n\nwhen flag clicked\nforever\n\nwhen I receive [restart v]\ngo to x: (-200) y: (-60)\n\nwhen I receive [jump v]\ngo to x: (-200) y: (-60)\n\nwhen flag clicked\nforever\n    if <(level) = [15]> then\n        change [level v] by (0)\n    end\n    if <<(level) = [15]> and <(x position) < [-83]>> then\n        switch costume to (3 v)\n    else\n        if <<(level) = [15]> and <<(x position) < [79]> and <(x position) > [-83]>>> then\n            switch costume to (2 v)\n        else\n            if <<(level) = [15]> and <(x position) > [79]>> then\n                switch costume to (1 v)\n            end\n        end\n    end\nend\n\nwhen flag clicked\nforever\n    if <(level) = [1]> then\n        switch costume to (3 v)\n    else\n        if <(level) = [6]> then\n            switch costume to (2 v)\n        else\n            if <(level) = [11]> then\n                switch costume to (1 v)\n            end\n        end\n    end\nend\n\nwhen flag clicked\nforever\n\n\n\nchange [level v] by (1)\n\n@Ground\n\nwhen flag clicked\nswitch costume to (bronze floor 1 1 v)\ngo to x: (0) y: (0)\nforever\n    switch costume to (level)\nend\n\n@shadow\n\nwhen flag clicked\ngo to [back v] layer\nswitch costume to (bronze shadow 1 1 v)\ngo to x: (0) y: (0)\nforever\n    switch costume to (level)\nend\n\nwhen flag clicked\n\nwhen [m v] key pressed\nset x to (0)\nset y to (0)\nshow variable [mouse v]\nset [mouse v] to (join ((mouse x) + (x position)) (join [, ] ((mouse y) + (y position))))\n\n
Check out my most popular game right now!\nhttps://scratch.mit.edu/projects/434329350/