Obby - A Platformer remix

Instructions: Hey!\nWelcome to Obby - A platformer\nThe original project is made by @erencemaltay\nI just remixed it and fixed some bugs from the original.\n\nHope you like it!

@Stage\n\nwhen flag clicked\nswitch backdrop to (real backround v)\nforever\n    play sound [AMONG US Theme Song \(Moondai EDM Remix\) v] until done\nend\n\nwhen I receive [change backround v]\nswitch backdrop to (in cave v)\n\n@Player\n\nwhen flag clicked\nshow\nreset  X [-200] Y [0]\nset [ok v] to [0]\nset [level v] to [1]\nforever\n    if <(ok) = [0]> then\n        Speed [1] Friction [0.88] Gravity [-1] Jump height [13]\n        if <touching (spikes v)?> then\n            set [ok v] to [1]\n            set rotation style [all around v]\n            set [y v] to [10]\n            start sound [Crunch v]\n            repeat (20)\n                change [y v] by (-1)\n                change [ghost v] effect by (5)\n                turn right (8) degrees\n                change y by (Y)\n            end\n            set [ok v] to [0]\n            reset  X [-200] Y [0]\n        end\n    end\n    if <[240] < (x position)> then\n        change [level v] by (1)\n        reset  X [-200] Y [0]\n    end\nend\n\ndefine reset  X (x) Y (y)\ngo to x: (x) y: (y)\nset [y v] to [0]\nset [x v] to [0]\nset rotation style [left-right v]\npoint in direction (90)\nclear graphic effects\n\ndefine Speed (speed) Friction (friction) Gravity (gravity) Jump height (jump height)\nchange [y v] by (gravity)\nif <<key (right arrow v) pressed?> or <<key (d v) pressed?> or <<mouse down?> and <(x position) < (mouse x)>>>> then\n    change [x v] by (speed)\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    change [x v] by ((speed) * (-1))\n    point in direction (-90)\nend\nset [x v] to ((X) * (friction))\nchange x by (X)\nrepeat (8)\n    change y by <touching (platform v)?>\nend\nif <touching (platform v)?> then\n    change x by (() - (X))\n    change y by (-8)\n    if <<key (up arrow v) pressed?> or <<key (w v) pressed?> or <<mouse down?> and <(y position) < (mouse y)>>>> then\n        set [y v] to ((jump height) - (3))\n        set [x v] to ((5) - ((14) * <[0] < (X)>))\n    end\nend\nchange y by (Y)\nif <touching (platform v)?> then\n    change y by ((Y) * (-1))\n    set [y v] to [0]\nend\nchange y by (-1)\nif <<key (up arrow v) pressed?> or <<key (w v) pressed?> or <<mouse down?> and <(y position) < (mouse y)>>>> then\n    if <touching (platform v)?> then\n        set [y v] to (jump height)\n    end\nend\nchange y by (1)\nif <<key (down arrow v) pressed?> or <<key (s v) pressed?> or <<mouse down?> and <(mouse y) < (y position)>>>> then\n    switch costume to (player2 v)\nelse\n    switch costume to (player v)\nend\n\n@Platform\n\nwhen flag clicked\nshow\ngo to [back v] layer\nforever\n    switch costume to (level)\nend\n\nwhen flag clicked\nforever\n    if <(costume [number v]) = [5]> then\n        broadcast (Change backround v)\n    end\nend\n\nhide\n\n@spikes\n\nwhen flag clicked\nshow\nforever\n    switch costume to (level)\nend\n\nset size to (100) %\n\nwhen flag clicked\nwait (0.2) seconds\ngo to [back v] layer\n\nhide\n\n@sun\n\nwhen flag clicked\nshow\ngo to x: (-230) y: (160)\ngo to [back v] layer\nforever\n    set size to ((100) + (([cos v] of ((timer) * (200)) ) * (10))) %\nend\n\nwhen flag clicked\nwait (0.3) seconds\ngo to [back v] layer\n\nwhen I receive [change backround v]\nhide\n\n@background\n\nwhen flag clicked\nshow\ngo to [front v] layer\nforever\n    switch costume to (level)\nend\n\nhide\n\n