3D platformer  

Instructions: 3D platformer\n- Over 3 months of work\n- 50 hours+\n\ngreen: nomal platform\nyellow: jump pad\nred: lava\n\nDo you like it? Then suggest the game here: https://scratch.mit.edu/studios/28715018/comments/  

@Stage\n\nwhen I receive [uwu v]\nforever\n    play sound [bensound-memories v] until done\nend\n\n@Game\n\ndefine Move Camera by (dx) (dy) (dz)\nchange [playerx v] by (dx)\nchange [playery v] by (dy)\nchange [playerz v] by (dz)\n\ndefine Set Camera Pos to (x) (y) (z)\nset [playerx v] to (x)\nset [playery v] to (y)\nset [playerz v] to (z)\n\ndefine Set Camera Rot to (y) (x)\nset [roty v] to (y)\nset [rotx v] to (x)\n\ndefine Rotate Camera by (dy) (dx)\nchange [roty v] by (dy)\nchange [rotx v] by (dx)\n\ndefine Physics\nJoin\nRotate\nUpdate rounded var\nset [test v] to (playerY)\nMove Camera by (0) (-1) (0)\nif <(Jump) = [1]> then\n    Checkcollison\n    if <(touchingplatform) = [1]> then\n        set [speedy v] to [11]\n    end\nend\nMove Camera by (0) (1) (0)\nchange [speedy v] by (-0.5)\nrepeat ((2) * ([abs v] of (speedy) ))\n    if <not <(speedy) = [0]>> then\n        Move Camera by (0) ((0.5) - ((1) * <[0] > (speedy)>)) (0)\n    end\n    Checkcollison\n    if <(touchingplatform) = [1]> then\n        set [playery v] to (roundy)\n        set [speedy v] to [0]\n    end\nend\nif <not <(Left) = [0]>> then\n    Move Camera by (() - (((Left) / (2)) * (cosY))) (0) (() - (((Left) / (2)) * (sinY)))\n    Checkcollison\n    if <(touchingplatform) = [1]> then\n        Move Camera by (((Left) / (2)) * (cosY)) (0) (((Left) / (2)) * (sinY))\n    end\nend\nif <not <(Right) = [0]>> then\n    Move Camera by (((Right) / (2)) * (cosY)) (0) (((Right) / (2)) * (sinY))\n    Checkcollison\n    if <(touchingplatform) = [1]> then\n        Move Camera by (() - (((Right) / (2)) * (cosY))) (0) (() - (((Right) / (2)) * (sinY)))\n    end\nend\nif <not <(Forward) = [0]>> then\n    Move Camera by (() - (((Forward) / (2)) * (sinY))) (0) (((Forward) / (2)) * (cosY))\n    Checkcollison\n    if <(touchingplatform) = [1]> then\n        Move Camera by (((Forward) / (2)) * (sinY)) (0) (() - (((Forward) / (2)) * (cosY)))\n    end\nend\nif <not <(Backward) = [0]>> then\n    Move Camera by (((Backward) / (2)) * (sinY)) (0) (() - (((Backward) / (2)) * (cosY)))\n    Checkcollison\n    if <(touchingplatform) = [1]> then\n        Move Camera by (() - (((Backward) / (2)) * (sinY))) (0) (((Backward) / (2)) * (cosY))\n    end\nend\nMove Camera by (0) (-1) (0)\nCheckcollison\nif <(touchingbouncy) = [1]> then\n    set [speedy v] to [15]\nend\nif <<[-40] > (speedy)> or <(touchinglava) = [1]>> then\n    Initialize Camera\nend\nMove Camera by (0) (1) (0)\nUpdate rounded var\nif <<(roundx) = (flagx)> and <<(roundy) = (flagy)> and <(roundz) = (flagz)>>> then\n    Initialize Camera\n    change [level# v] by (1)\n    if <(level#) = [7]> then\n        set [level# v] to [end]\n        broadcast (New Level v)\n    else\n        broadcast (New Level v)\n    end\nend\n\ndefine Initialize Camera\nset [speedy v] to [0]\nSet Camera Pos to (0) (0) (0)\nSet Camera Rot to (-90) (-30)\nset [srotatex v] to [0]\nset [srotatey v] to [0]\n\nwhen flag clicked\nset [enable c v] to [0]\n\ndefine Rotate\nset [camx v] to (playerX)\nset [camy v] to (playerY)\nset [camz v] to (playerZ)\nif <[-15] > (speedy)> then\n    change [rotx v] by (((89) - (rotX)) / (15))\nelse\n    if <key (up arrow v) pressed?> then\n        change [srotatex v] by (1)\n    end\n    if <key (down arrow v) pressed?> then\n        change [srotatex v] by (-1)\n    end\n    if <key (right arrow v) pressed?> then\n        change [srotatey v] by (-1)\n    end\n    if <key (left arrow v) pressed?> then\n        change [srotatey v] by (1)\n    end\n    Rotate Camera by (srotatey) (srotatex)\n    if <[-89] > (rotX)> then\n        Rotate Camera by (0) ((srotatex) * (-1))\n        set [srotatex v] to [0]\n    end\n    if <(rotX) > [89]> then\n        Rotate Camera by (0) ((srotatex) * (-1))\n        set [srotatex v] to [0]\n    end\n    set [srotatex v] to ((srotatex) * (0.8))\n    set [srotatey v] to ((srotatey) * (0.8))\nend\n\ndefine Update rounded var\nset [roundx v] to ((round ((playerX) / (40))) * (40))\nset [roundy v] to ((round ((playerY) / (40))) * (40))\nset [roundz v] to ((round ((playerZ) / (40))) * (40))\n\ndefine Join\ndelete all of [joined v]\nset [_# v] to [0]\nrepeat (length of [cubex v])\n    change [_# v] by (1)\n    add (join (item (_#) of [cubex v]) (join [/] (join (item (_#) of [cubey v]) (join [/] (item (_#) of [cubez v]))))) to [joined v]\nend\ndelete all of [joined2 v]\nset [_# v] to [0]\nrepeat (length of [lavax v])\n    change [_# v] by (1)\n    add (join (item (_#) of [lavax v]) (join [/] (join (item (_#) of [lavay v]) (join [/] (item (_#) of [lavaz v]))))) to [joined2 v]\nend\ndelete all of [joined3 v]\nset [_# v] to [0]\nrepeat (length of [bouncyx v])\n    change [_# v] by (1)\n    add (join (item (_#) of [bouncyx v]) (join [/] (join (item (_#) of [bouncyy v]) (join [/] (item (_#) of [bouncyz v]))))) to [joined3 v]\nend\n\ndefine Checkcollison\nset [touchingplatform v] to [0]\nset [touchinglava v] to [0]\nset [touchingbouncy v] to [0]\nUpdate rounded var\nif <(roundy) > (playerY)> then\n    if <<[joined v] contains (join (join (roundx) (join [/] (roundy))) (join [/] (roundz)))?> or <[joined v] contains (join (join (roundx) (join [/] ((roundy) - (40)))) (join [/] (roundz)))?>> then\n        set [touchingplatform v] to [1]\n    end\nelse\n    if <(playerY) > (roundy)> then\n        if <<[joined v] contains (join (join (roundx) (join [/] (roundy))) (join [/] (roundz)))?> or <[joined v] contains (join (join (roundx) (join [/] ((roundy) - (-40)))) (join [/] (roundz)))?>> then\n            set [touchingplatform v] to [1]\n        end\n    else\n        if <[joined v] contains (join (join (roundx) (join [/] (roundy))) (join [/] (roundz)))?> then\n            set [touchingplatform v] to [1]\n        end\n    end\nend\nif <(roundy) > (playerY)> then\n    if <<[joined2 v] contains (join (join (roundx) (join [/] (roundy))) (join [/] (roundz)))?> or <[joined2 v] contains (join (join (roundx) (join [/] ((roundy) - (40)))) (join [/] (roundz)))?>> then\n        set [touchinglava v] to [1]\n    end\nelse\n    if <(playerY) > (roundy)> then\n        if <<[joined2 v] contains (join (join (roundx) (join [/] (roundy))) (join [/] (roundz)))?> or <[joined2 v] contains (join (join (roundx) (join [/] ((roundy) - (-40)))) (join [/] (roundz)))?>> then\n            set [touchinglava v] to [1]\n        end\n    else\n        if <[joined2 v] contains (join (join (roundx) (join [/] (roundy))) (join [/] (roundz)))?> then\n            set [touchinglava v] to [1]\n        end\n    end\nend\nif <(roundy) > (playerY)> then\n    if <<[joined3 v] contains (join (join (roundx) (join [/] (roundy))) (join [/] (roundz)))?> or <[joined3 v] contains (join (join (roundx) (join [/] ((roundy) - (40)))) (join [/] (roundz)))?>> then\n        set [touchingbouncy v] to [1]\n    end\nelse\n    if <(playerY) > (roundy)> then\n        if <<[joined3 v] contains (join (join (roundx) (join [/] (roundy))) (join [/] (roundz)))?> or <[joined3 v] contains (join (join (roundx) (join [/] ((roundy) - (-40)))) (join [/] (roundz)))?>> then\n            set [touchingbouncy v] to [1]\n        end\n    else\n        if <[joined3 v] contains (join (join (roundx) (join [/] (roundy))) (join [/] (roundz)))?> then\n            set [touchingbouncy v] to [1]\n        end\n    end\nend\n\nwhen I receive [tick v]\ngame\n\ndefine game\nSet\nPhysics\nCheck\n\ndefine Distance = d (x1) (y1) (z1) to (x2) (y2) (z2)\nset [distance v] to ([sqrt v] of ((((x1) - (x2)) * ((x1) - (x2))) + ((((y1) - (y2)) * ((y1) - (y2))) + (((z1) - (z2)) * ((z1) - (z2))))) )\n\nwhen I receive [start v]\nbroadcast (Update v)\nset [_nearplane v] to [0.1]\nset [speedy v] to [0]\nInitialize Camera\nrepeat until <not <(___ID) = [play]>>\n    broadcast (tick v)\nend\n\ndefine Check\nset [move? v] to [0]\nif <not <<(startcamx) = (playerX)> and <<(startcamy) = (playerY)> and <(startcamz) = (playerZ)>>>> then\n    set [move? v] to [1]\nend\n\ndefine Set\nset [startcamz v] to (playerZ)\nset [startcamy v] to (playerY)\nset [startcamx v] to (playerX)\n\n@Map\n\ndefine Cube to (x) (y) (z)\nadd ((x) * (40)) to [cubex v]\nadd ((y) * (40)) to [cubey v]\nadd ((z) * (40)) to [cubez v]\n\ndefine setup\nDelete Map\nLevel (level#)\n\ndefine Lava to (x) (y) (z)\nadd ((x) * (40)) to [lavax v]\nadd ((y) * (40)) to [lavay v]\nadd ((z) * (40)) to [lavaz v]\n\ndefine Delete Map\ndelete all of [cubex v]\ndelete all of [cubey v]\ndelete all of [cubez v]\ndelete all of [lavax v]\ndelete all of [lavaz v]\ndelete all of [lavay v]\ndelete all of [bouncyx v]\ndelete all of [bouncyy v]\ndelete all of [bouncyz v]\n\ndefine Bouncy to (x) (y) (z)\nadd ((x) * (40)) to [bouncyx v]\nadd ((y) * (40)) to [bouncyy v]\nadd ((z) * (40)) to [bouncyz v]\n\ndefine Flag to (x) (y) (z) (s)\nset [flagx v] to ((x) * (40))\nset [flagy v] to ((y) * (40))\nset [flagz v] to ((z) * (40))\nset [flags v] to (s)\n\ndefine Level (#)\nif <(level#) = [0]> then\n    Cube to [0] [-1] [0]\n    Cube to [1] [-1] [0]\n    Cube to [1] [0] [1]\n    Cube to [1] [0] [-1]\n    Flag to [1] [0] [0] [2]\nend\nif <(level#) = [1]> then\n    Lava to [-1] [-1] [-1]\n    Lava to [0] [-1] [-1]\n    Lava to [-1] [-1] [1]\n    Lava to [0] [-1] [1]\n    Lava to [-1] [-1] []\n    Cube to [0] [-1] [0]\n    Cube to [1] [-1] [0]\n    Cube to [1] [0] [0]\n    Lava to [2] [-1] [0]\n    Cube to [3] [-1] [0]\n    Cube to [3] [-1] [1]\n    Cube to [3] [-1] [2]\n    Cube to [3] [0] [1]\n    Bouncy to [4] [-1] [2]\n    Cube to [7] [6] [2]\n    Cube to [7] [7] [1]\n    Cube to [7] [8] [1]\n    Cube to [7] [8] [0]\n    Lava to [7] [8] [-1]\n    Cube to [7] [8] [-2]\n    Cube to [6] [5] [2]\n    Cube to [5] [4] [2]\n    Flag to [7] [9] [-2] [4]\nend\nif <(level#) = [2]> then\n    Bouncy to [0] [-5] [0]\n    Cube to [4] [-1] [0]\n    Cube to [5] [0] [0]\n    Cube to [6] [0] [0]\n    Lava to [5] [0] [-1]\n    Lava to [5] [0] [1]\n    Lava to [6] [0] [1]\n    Lava to [6] [0] [-1]\n    Lava to [7] [0] [1]\n    Lava to [7] [0] [-1]\n    Lava to [7] [0] [0]\n    Cube to [9] [0] [0]\n    Cube to [10] [1] [-1]\n    Cube to [11] [0] [-3]\n    Lava to [10] [0] [-3]\n    Bouncy to [11] [1] [-3]\n    Bouncy to [11] [5] [-4]\n    Cube to [11] [7] [-5]\n    Flag to [11] [8] [-5] [4]\nend\nif <(level#) = [3]> then\n    Cube to [0] [-1] [0]\n    Cube to [1] [-2] [0]\n    Cube to [2] [-3] [0]\n    Lava to [3] [-3] [0]\n    Cube to [4] [-4] [0]\n    Bouncy to [4] [-4] [-1]\n    Cube to [7] [1] [-1]\n    Cube to [8] [1] [-1]\n    Cube to [9] [1] [0]\n    Lava to [10] [1] [0]\n    Cube to [11] [1] [0]\n    Flag to [11] [2] [0] [1]\nend\nif <(level#) = [4]> then\n    Cube to [0] [-1] [0]\n    Cube to [1] [0] [0]\n    Cube to [2] [1] [0]\n    Lava to [3] [1] [0]\n    Cube to [4] [2] [0]\n    Bouncy to [5] [2] [0]\n    Cube to [7] [6] [0]\n    Cube to [9] [6] [-1]\n    Cube to [11] [6] [1]\n    Cube to [12] [6] [1]\n    Flag to [12] [7] [1] [1]\nend\nif <(level#) = [5]> then\n    Cube to [0] [-1] [0]\n    Cube to [3] [-2] [1]\n    Cube to [4] [-2] [2]\n    Lava to [4] [-2] [1]\n    Lava to [3] [-2] [2]\n    Bouncy to [5] [-3] [1]\n    Bouncy to [5] [-3] [2]\n    Cube to [6] [1] [2]\n    Cube to [6] [1] [1]\n    Cube to [7] [1] [2]\n    Cube to [8] [2] [0]\n    Cube to [9] [4] [0]\n    Cube to [9] [3] [0]\n    Cube to [9] [2] [0]\n    Lava to [10] [2] [0]\n    Bouncy to [11] [2] [0]\n    Cube to [14] [3] [0]\n    Cube to [14] [3] [-1]\n    Cube to [15] [3] [-1]\n    Cube to [15] [3] [0]\n    Cube to [15] [3] [-2]\n    Cube to [15] [4] [-2]\n    Cube to [15] [4] [0]\n    Cube to [15] [5] [0]\n    Cube to [15] [5] [-2]\n    Cube to [15] [5] [-1]\n    Cube to [16] [3] [-1]\n    Cube to [16] [3] [-2]\n    Cube to [16] [3] [0]\n    Cube to [16] [4] [0]\n    Cube to [16] [4] [-2]\n    Cube to [16] [5] [-2]\n    Cube to [16] [5] [0]\n    Cube to [16] [5] [-1]\n    Cube to [17] [4] [-1]\n    Flag to [16] [4] [-1] [1]\nend\nif <(level#) = [6]> then\n    Cube to [0] [-1] [0]\n    Cube to [1] [0] [0]\n    Cube to [2] [1] [0]\n    Lava to [3] [1] [0]\n    Lava to [4] [1] [0]\n    Bouncy to [5] [1] [0]\n    Bouncy to [10] [1] [0]\n    Cube to [15] [1] [0]\n    Cube to [15] [1] [-1]\n    Cube to [15] [1] [-4]\n    Flag to [15] [2] [-4] [3]\nend\nif <(level#) = [7]> then\n    Flag to [-15] [2] [-4] [3]\nend\n\nwhen I receive [new level v]\nsetup\n\nwhen I receive [play v]\nset [___id v] to [play]\nset [level# v] to [1]\nDelete Map\nsetup\nbroadcast (Update v)\nbroadcast (Start v)\n\nwhen I receive [menu v]\nset [level# v] to [0]\nsetup\nbroadcast (Update v)\n\n@Controls\n\nwhen flag clicked\nhide\ngo to x: (0) y: (0)\n\nwhen I receive [controls  v]\nif <(___ID) = [play]> then\n    Keyboard\n    if <(mobile?) = [1]> then\n        Mobile\n    end\nend\n\ndefine Keyboard\nswitch costume to (big v)\nif <key (space v) pressed?> then\n    set [jump v] to [1]\nelse\n    set [jump v] to [0]\nend\nif <key (a v) pressed?> then\n    set [left v] to [7]\nelse\n    set [left v] to [0]\nend\nif <key (d v) pressed?> then\n    set [right v] to [7]\nelse\n    set [right v] to [0]\nend\nif <key (w v) pressed?> then\n    set [forward v] to [7]\nelse\n    set [forward v] to [0]\nend\nif <key (s v) pressed?> then\n    set [backward v] to [7]\nelse\n    set [backward v] to [0]\nend\n\ndefine Mobile\npen up\ngo to x: (0) y: (-95)\nset pen color to (#000000)\nset pen size to (90)\nset pen (transparency v) to (98)\npen down\npen up\nrepeat (10)\n    change pen size by (-1)\n    pen down\n    pen up\nend\nset pen color to (#73b9c6)\nset pen size to (80)\nset pen (transparency v) to (50)\npen down\npen up\nif <<mouse down?> and <[40] > (distance to [mouse-pointer v])>> then\n    if <<(1) = [0]> and <(3) = [0]>> then\n        set [2 v] to [1]\n        set [jump v] to [1]\n    end\nelse\n    set [2 v] to [0]\nend\npoint in direction (90)\nswitch costume to (costume2 v)\nstamp\ngo to x: (165) y: (-95)\nset pen color to (#000000)\nset pen size to (90)\nset pen (transparency v) to (98)\npen down\npen up\nrepeat (10)\n    change pen size by (-1)\n    pen down\n    pen up\nend\nset pen color to (#73b9c6)\nset pen size to (80)\nset pen (transparency v) to (50)\npen down\npen up\nif <<<<mouse down?> and <[40] > (distance to [mouse-pointer v])>> and <(1) = [0]>> or <(3) = [1]>> then\n    set [3 v] to [1]\n    point towards (mouse-pointer v)\n    move ((distance to [mouse-pointer v]) - (((distance to [mouse-pointer v]) - (30)) * <(distance to [mouse-pointer v]) > [30]>)) steps\n    if <[-115] > (x position)> then\n        set [backward v] to (round (([abs v] of ((y position) + (115)) ) / ((30) / (7))))\n    else\n        set [forward v] to (round (((y position) + (115)) / ((30) / (7))))\n    end\n    if <[175] > (x position)> then\n        set [left v] to (round (([abs v] of ((x position) + (-175)) ) / ((30) / (7))))\n    else\n        set [right v] to (round (((x position) + (-175)) / ((30) / (7))))\n    end\nend\nset pen color to (#000000)\nset pen size to (50)\nset pen (transparency v) to (98)\nrepeat (10)\n    change pen size by (-1)\n    pen down\n    pen up\nend\nset pen color to (#73b9c6)\nset pen size to (40)\nset pen (transparency v) to (0)\npen down\npen up\nswitch costume to (big v)\ngo to x: (-165) y: (-95)\nset pen color to (#000000)\nset pen size to (90)\nset pen (transparency v) to (98)\npen down\npen up\nrepeat (10)\n    change pen size by (-1)\n    pen down\n    pen up\nend\nset pen color to (#73b9c6)\nset pen size to (80)\nset pen (transparency v) to (50)\npen down\npen up\nif <<<<mouse down?> and <[40] > (distance to [mouse-pointer v])>> and <(3) = [0]>> or <(1) = [1]>> then\n    set [1 v] to [1]\n    point towards (mouse-pointer v)\n    move ((distance to [mouse-pointer v]) - (((distance to [mouse-pointer v]) - (30)) * <(distance to [mouse-pointer v]) > [30]>)) steps\n    set [srotatey v] to (() - (((x position) + (175)) / ((30) / (4))))\n    set [srotatex v] to (((y position) + (95)) / ((30) / (4)))\nend\nset pen color to (#000000)\nset pen size to (50)\nset pen (transparency v) to (98)\nrepeat (10)\n    change pen size by (-1)\n    pen down\n    pen up\nend\nset pen color to (#73b9c6)\nset pen size to (40)\nset pen (transparency v) to (0)\npen down\npen up\nswitch costume to (big v)\nif <not <mouse down?>> then\n    set [1 v] to [0]\n    set [2 v] to [0]\n    set [3 v] to [0]\nend\n\n@Filled\n\nwhen I receive [update v]\nUpdate\n\ndefine Update\nAdd\nDistances\nOrder\n\ndefine Distance = d (x1) (y1) (z1) to (x2) (y2) (z2)\nset [distance v] to ([sqrt v] of ((((x1) - (x2)) * ((x1) - (x2))) + ((((y1) - (y2)) * ((y1) - (y2))) + (((z1) - (z2)) * ((z1) - (z2))))) )\n\ndefine Add\ndelete all of [e v]\ndelete all of [x v]\ndelete all of [y v]\ndelete all of [z v]\ndelete all of [s v]\nset [tick v] to [0]\nrepeat (length of [cubex v])\n    change [tick v] by (1)\n    repeat (6)\n        add [1] to [e v]\n    end\n    add [6] to [s v]\n    add ((item (tick) of [cubex v]) + (20)) to [x v]\n    add (item (tick) of [cubey v]) to [y v]\n    add (item (tick) of [cubez v]) to [z v]\n    add [5] to [s v]\n    add ((item (tick) of [cubex v]) + (-20)) to [x v]\n    add (item (tick) of [cubey v]) to [y v]\n    add (item (tick) of [cubez v]) to [z v]\n    add [4] to [s v]\n    add (item (tick) of [cubex v]) to [x v]\n    add ((item (tick) of [cubey v]) + (-20)) to [y v]\n    add (item (tick) of [cubez v]) to [z v]\n    add [3] to [s v]\n    add (item (tick) of [cubex v]) to [x v]\n    add ((item (tick) of [cubey v]) + (20)) to [y v]\n    add (item (tick) of [cubez v]) to [z v]\n    add [2] to [s v]\n    add (item (tick) of [cubex v]) to [x v]\n    add (item (tick) of [cubey v]) to [y v]\n    add ((item (tick) of [cubez v]) + (-20)) to [z v]\n    add [1] to [s v]\n    add (item (tick) of [cubex v]) to [x v]\n    add (item (tick) of [cubey v]) to [y v]\n    add ((item (tick) of [cubez v]) + (20)) to [z v]\nend\nset [tick v] to [0]\nrepeat (length of [bouncyx v])\n    change [tick v] by (1)\n    repeat (6)\n        add [2] to [e v]\n    end\n    add [6] to [s v]\n    add ((item (tick) of [bouncyx v]) + (20)) to [x v]\n    add (item (tick) of [bouncyy v]) to [y v]\n    add (item (tick) of [bouncyz v]) to [z v]\n    add [5] to [s v]\n    add ((item (tick) of [bouncyx v]) + (-20)) to [x v]\n    add (item (tick) of [bouncyy v]) to [y v]\n    add (item (tick) of [bouncyz v]) to [z v]\n    add [4] to [s v]\n    add (item (tick) of [bouncyx v]) to [x v]\n    add ((item (tick) of [bouncyy v]) + (-20)) to [y v]\n    add (item (tick) of [bouncyz v]) to [z v]\n    add [3] to [s v]\n    add (item (tick) of [bouncyx v]) to [x v]\n    add ((item (tick) of [bouncyy v]) + (20)) to [y v]\n    add (item (tick) of [bouncyz v]) to [z v]\n    add [2] to [s v]\n    add (item (tick) of [bouncyx v]) to [x v]\n    add (item (tick) of [bouncyy v]) to [y v]\n    add ((item (tick) of [bouncyz v]) + (-20)) to [z v]\n    add [1] to [s v]\n    add (item (tick) of [bouncyx v]) to [x v]\n    add (item (tick) of [bouncyy v]) to [y v]\n    add ((item (tick) of [bouncyz v]) + (20)) to [z v]\nend\nset [tick v] to [0]\nrepeat (length of [lavax v])\n    change [tick v] by (1)\n    repeat (6)\n        add [3] to [e v]\n    end\n    add [6] to [s v]\n    add ((item (tick) of [lavax v]) + (20)) to [x v]\n    add (item (tick) of [lavay v]) to [y v]\n    add (item (tick) of [lavaz v]) to [z v]\n    add [5] to [s v]\n    add ((item (tick) of [lavax v]) + (-20)) to [x v]\n    add (item (tick) of [lavay v]) to [y v]\n    add (item (tick) of [lavaz v]) to [z v]\n    add [4] to [s v]\n    add (item (tick) of [lavax v]) to [x v]\n    add ((item (tick) of [lavay v]) + (-20)) to [y v]\n    add (item (tick) of [lavaz v]) to [z v]\n    add [3] to [s v]\n    add (item (tick) of [lavax v]) to [x v]\n    add ((item (tick) of [lavay v]) + (20)) to [y v]\n    add (item (tick) of [lavaz v]) to [z v]\n    add [2] to [s v]\n    add (item (tick) of [lavax v]) to [x v]\n    add (item (tick) of [lavay v]) to [y v]\n    add ((item (tick) of [lavaz v]) + (-20)) to [z v]\n    add [1] to [s v]\n    add (item (tick) of [lavax v]) to [x v]\n    add (item (tick) of [lavay v]) to [y v]\n    add ((item (tick) of [lavaz v]) + (20)) to [z v]\nend\nadd ((flags) * (11)) to [s v]\nadd (flagx) to [x v]\nadd (flagy) to [y v]\nadd (flagz) to [z v]\nadd [f] to [e v]\n\ndefine Distances\ndelete all of [distances v]\nset [tick v] to [0]\nrepeat (length of [sortx v])\n    change [tick v] by (1)\n    Distance = d (camX) (camY) (camZ) to (item (tick) of [x v]) (item (tick) of [y v]) (item (tick) of [z v])\n    add (Distance) to [distances v]\nend\n\ndefine Order\ndelete all of [ordered v]\ndelete all of [ordereddistances v]\nadd (item (1) of [distances v]) to [ordereddistances v]\ninsert [1] at (1) of [ordered v] \nset [tick v] to [2]\nrepeat ((length of [distances v]) - (1))\n    if <(item (tick) of [distances v]) > (item (1) of [ordereddistances v])> then\n        insert (item (tick) of [distances v]) at (1) of [ordereddistances v] \n        insert (tick) at (1) of [ordered v] \n    else\n        set [__# v] to [1]\n        repeat (length of [ordereddistances v])\n            if <(item (__#) of [ordereddistances v]) > (item (tick) of [distances v])> then\n                change [__# v] by (1)\n            end\n        end\n        insert (item (tick) of [distances v]) at (__#) of [ordereddistances v] \n        insert (tick) at (__#) of [ordered v] \n    end\n    change [tick v] by (1)\nend\n\ndefine Sort\nset [tick v] to [1]\nrepeat ((length of [x v]) / (2))\n    Distance = d (camX) (camY) (camZ) to (item (tick) of [x v]) (item (tick) of [y v]) (item (tick) of [z v])\n    set [distance2 v] to (Distance)\n    change [tick v] by (1)\n    Distance = d (camX) (camY) (camZ) to (item (tick) of [x v]) (item (tick) of [y v]) (item (tick) of [z v])\n    if <(Distance) > (distance2)> then\n        add (item ((tick) - (1)) of [x v]) to [sortx v]\n        add (item ((tick) - (1)) of [y v]) to [sorty v]\n        add (item ((tick) - (1)) of [z v]) to [sortz v]\n        add (item ((tick) - (1)) of [s v]) to [sorts v]\n        add (item ((tick) - (1)) of [e v]) to [sorte v]\n    else\n        add (item (tick) of [x v]) to [sortx v]\n        add (item (tick) of [y v]) to [sorty v]\n        add (item (tick) of [z v]) to [sortz v]\n        add (item (tick) of [s v]) to [sorts v]\n        add (item (tick) of [e v]) to [sorte v]\n    end\n    change [tick v] by (1)\nend\n\n@Draw\n\ndefine Render Cubes\nchange [playery v] by (20)\nset [_# v] to [1]\nrepeat (length of [ordereddistances v])\n    Render Side (item (item (_#) of [ordered v]) of [x v]) (item (item (_#) of [ordered v]) of [y v]) (item (item (_#) of [ordered v]) of [z v]) side (item (item (_#) of [ordered v]) of [s v]) (item (item (_#) of [ordered v]) of [e v]) (Detail)\n    change [_# v] by (1)\nend\nchange [playery v] by (-20)\n\ndefine Render Side (x) (y) (z) side (s) (e) (r)\nif <(e) = [1]> then\n    set pen color to (#73b168)\nend\nif <(e) = [2]> then\n    set pen color to (#fff600)\nend\nif <(e) = [3]> then\n    set pen color to (#ad5a5a)\nend\nset [renderx v] to (x)\nset [rendery v] to (y)\nset [renderz v] to (z)\nDistance = d (camX) (camY) (camZ) to (x) (y) (z)\nset [r v] to (((200) / (r)) - ((Distance) / (100)))\nset [pen v] to (((57600) / (Distance)) / (r))\nset [radius v] to ((20) - (((Detail) - (0.5)) * (1)))\nset pen (brightness v) to (100)\nif <(e) = [f]> then\n    set [s# v] to (s)\n    Flag\nend\nif <<(s) = [2]> or <(s) = [1]>> then\n    change pen (brightness v) by (-15)\n    Distance = d (camX) (camY) (camZ) to (x) (y) (z)\n    set pen size to (pen)\n    set [filledx v] to (() - (radius))\n    set [filledy v] to [0]\n    set [filledz v] to [0]\n    repeat (r)\n        Draw Renderline from (filledx) (radius) (() - ((<(s) = [1]> * (1)) + (<(s) = [2]> * (-1)))) to (filledx) (() - (radius)) (() - ((<(s) = [1]> * (1)) + (<(s) = [2]> * (-1))))\n        change [filledx v] by (((radius) * (2)) / (r))\n    end\n    Distance = d (camX) (camY) (camZ) to (x) (y) (z)\n    set pen size to ((400) / (Distance))\n    set pen (brightness v) to (70)\n    Draw Renderline from [-19] [19] [0] to [19] [19] [0]\n    Draw Renderline from [19] [19] [0] to [19] [-19] [0]\n    Draw Renderline from [19] [-19] [0] to [-19] [-19] [0]\n    Draw Renderline from [-19] [19] [0] to [-19] [-19] [0]\n    set pen size to ((700) / (Distance))\n    Draw Renderline from [-18] [-18] [0] to [18] [18] [0]\n    Draw Renderline from [-18] [18] [0] to [18] [-18] [0]\n    set pen size to ((250) / (Distance))\n    set pen (brightness v) to (60)\n    Draw Renderline from [-20] [20] [0] to [20] [20] [0]\n    Draw Renderline from [20] [20] [0] to [20] [-20] [0]\n    Draw Renderline from [20] [-20] [0] to [-20] [-20] [0]\n    Draw Renderline from [-20] [20] [0] to [-20] [-20] [0]\n    Draw Renderline from [-20] [-20] [0] to [20] [20] [0]\n    Draw Renderline from [-20] [20] [0] to [20] [-20] [0]\nend\nif <<(s) = [3]> or <(s) = [4]>> then\n    change pen (brightness v) by (-20)\n    Distance = d (camX) (camY) (camZ) to (x) (y) (z)\n    set pen size to (pen)\n    set [filledx v] to (() - (radius))\n    set [filledy v] to [0]\n    set [filledz v] to [0]\n    repeat (r)\n        Draw Renderline from (filledx) (() - ((<(s) = [3]> * (1)) + (<(s) = [4]> * (-1)))) (radius) to (filledx) (() - ((<(s) = [3]> * (1)) + (<(s) = [4]> * (-1)))) (() - (radius))\n        change [filledx v] by (((radius) * (2)) / (r))\n    end\n    Distance = d (camX) (camY) (camZ) to (x) (y) (z)\n    set pen size to ((400) / (Distance))\n    set pen (brightness v) to (70)\n    Draw Renderline from [-19] [0] [19] to [19] [0] [19]\n    Draw Renderline from [19] [0] [19] to [19] [0] [-19]\n    Draw Renderline from [19] [0] [-19] to [-19] [0] [-19]\n    Draw Renderline from [-19] [0] [-19] to [-19] [0] [19]\n    set pen size to ((700) / (Distance))\n    Draw Renderline from [-18] [0] [18] to [18] [0] [-18]\n    Draw Renderline from [-18] [0] [-18] to [18] [0] [18]\n    set pen size to ((250) / (Distance))\n    set pen (brightness v) to (60)\n    Draw Renderline from [-20] [0] [20] to [20] [0] [20]\n    Draw Renderline from [20] [0] [20] to [20] [0] [-20]\n    Draw Renderline from [20] [0] [-20] to [-20] [0] [-20]\n    Draw Renderline from [-20] [0] [-20] to [-20] [0] [20]\n    Draw Renderline from [-20] [0] [20] to [20] [0] [-20]\n    Draw Renderline from [-20] [0] [-20] to [20] [0] [20]\nend\nif <<(s) = [5]> or <(s) = [6]>> then\n    change pen (brightness v) by (-10)\n    Distance = d (camX) (camY) (camZ) to (x) (y) (z)\n    set pen size to (pen)\n    set [filledx v] to [0]\n    set [filledy v] to (() - (radius))\n    set [filledz v] to [0]\n    repeat (r)\n        Draw Renderline from (() - ((<(s) = [6]> * (1)) + (<(s) = [5]> * (-1)))) (filledy) (radius) to (() - ((<(s) = [6]> * (1)) + (<(s) = [5]> * (-1)))) (filledy) (() - (radius))\n        change [filledy v] by (((radius) * (2)) / (r))\n    end\n    Distance = d (camX) (camY) (camZ) to (x) (y) (z)\n    set pen (brightness v) to (70)\n    set pen size to ((400) / (Distance))\n    Draw Renderline from [0] [-19] [19] to [0] [19] [19]\n    Draw Renderline from [0] [19] [19] to [0] [19] [-19]\n    Draw Renderline from [0] [19] [-19] to [0] [-19] [-19]\n    Draw Renderline from [0] [-19] [-19] to [0] [-19] [19]\n    set pen size to ((700) / (Distance))\n    Draw Renderline from [0] [-18] [-18] to [0] [18] [18]\n    Draw Renderline from [0] [-18] [18] to [0] [18] [-18]\n    set pen size to ((250) / (Distance))\n    set pen (brightness v) to (60)\n    Draw Renderline from [0] [-20] [20] to [0] [20] [20]\n    Draw Renderline from [0] [20] [20] to [0] [20] [-20]\n    Draw Renderline from [0] [20] [-20] to [0] [-20] [-20]\n    Draw Renderline from [0] [-20] [-20] to [0] [-20] [20]\n    Draw Renderline from [0] [-20] [-20] to [0] [20] [20]\n    Draw Renderline from [0] [-20] [20] to [0] [20] [-20]\nend\n\ndefine Draw Line (x1) (y1) (z1) to (x2) (y2) (z2)\npen up\n=== Set Point 1 ((x1) - (camX)) ((y1) - (camY)) ((z1) - (camZ))\n=== Set Point 2 ((x2) - (camX)) ((y2) - (camY)) ((z2) - (camZ))\n=== Set Point 1 (((item (3) of [temp points v]) * (sinY)) + ((item (1) of [temp points v]) * (cosY))) (item (2) of [temp points v]) (((item (3) of [temp points v]) * (cosY)) - ((item (1) of [temp points v]) * (sinY)))\n=== Set Point 2 (((item (6) of [temp points v]) * (sinY)) + ((item (4) of [temp points v]) * (cosY))) (item (5) of [temp points v]) (((item (6) of [temp points v]) * (cosY)) - ((item (4) of [temp points v]) * (sinY)))\n=== Set Point 1 (item (1) of [temp points v]) (((item (2) of [temp points v]) * (cosX)) - ((item (3) of [temp points v]) * (sinX))) (((item (2) of [temp points v]) * (sinX)) + ((item (3) of [temp points v]) * (cosX)))\n=== Set Point 2 (item (4) of [temp points v]) (((item (5) of [temp points v]) * (cosX)) - ((item (6) of [temp points v]) * (sinX))) (((item (5) of [temp points v]) * (sinX)) + ((item (6) of [temp points v]) * (cosX)))\nif <not <<(item (3) of [temp points v]) < (_nearPlane)> and <(item (6) of [temp points v]) < (_nearPlane)>>> then\n    === Z Clipping\n    === Set Screen Point 1 ((_viewFactor) * ((item (1) of [temp points v]) / (item (3) of [temp points v]))) ((_viewFactor) * ((item (2) of [temp points v]) / (item (3) of [temp points v])))\n    === Set Screen Point 2 ((_viewFactor) * ((item (4) of [temp points v]) / (item (6) of [temp points v]))) ((_viewFactor) * ((item (5) of [temp points v]) / (item (6) of [temp points v])))\n    === XY Clipping\n    go to x: (item (1) of [temp points v]) y: (item (2) of [temp points v])\n    pen down\n    go to x: (item (4) of [temp points v]) y: (item (5) of [temp points v])\n    pen up\nend\n\ndefine === Z Clipping\nset [% v] to (((_nearPlane) - (item (3) of [temp points v])) / ((item (6) of [temp points v]) - (item (3) of [temp points v])))\nif <(item (3) of [temp points v]) < (_nearPlane)> then\n    === Set Point 1 ((item (1) of [temp points v]) + (((item (4) of [temp points v]) - (item (1) of [temp points v])) * (%))) ((item (2) of [temp points v]) + (((item (5) of [temp points v]) - (item (2) of [temp points v])) * (%))) (_nearPlane)\nelse\n    if <(item (6) of [temp points v]) < (_nearPlane)> then\n        === Set Point 2 ((item (1) of [temp points v]) + (((item (4) of [temp points v]) - (item (1) of [temp points v])) * (%))) ((item (2) of [temp points v]) + (((item (5) of [temp points v]) - (item (2) of [temp points v])) * (%))) (_nearPlane)\n    end\nend\n\ndefine === XY Clipping\nset [slope v] to (((item (5) of [temp points v]) - (item (2) of [temp points v])) / ((item (4) of [temp points v]) - (item (1) of [temp points v])))\nif <(item (1) of [temp points v]) > [240]> then\n    if <(item (4) of [temp points v]) > [240]> then\n        stop [this script v]\n    else\n        === Set Screen Point 1 (240) ((item (2) of [temp points v]) + (((240) - (item (1) of [temp points v])) * (slope)))\n    end\nend\nif <(item (2) of [temp points v]) > [180]> then\n    if <(item (5) of [temp points v]) > [180]> then\n        stop [this script v]\n    else\n        === Set Screen Point 1 ((item (1) of [temp points v]) + (((180) - (item (2) of [temp points v])) / (slope))) (180)\n    end\nend\nif <(item (1) of [temp points v]) < [-240]> then\n    if <(item (4) of [temp points v]) < [-240]> then\n        stop [this script v]\n    else\n        === Set Screen Point 1 (-240) ((item (2) of [temp points v]) + (((-240) - (item (1) of [temp points v])) * (slope)))\n    end\nend\nif <(item (2) of [temp points v]) < [-180]> then\n    if <(item (5) of [temp points v]) < [-180]> then\n        stop [this script v]\n    else\n        === Set Screen Point 1 ((item (1) of [temp points v]) + (((-180) - (item (2) of [temp points v])) / (slope))) (-180)\n    end\nend\nif <(item (4) of [temp points v]) > [240]> then\n    === Set Screen Point 2 (240) ((item (2) of [temp points v]) + (((240) - (item (1) of [temp points v])) * (slope)))\nend\nif <(item (5) of [temp points v]) > [180]> then\n    === Set Screen Point 2 ((item (1) of [temp points v]) + (((180) - (item (2) of [temp points v])) / (slope))) (180)\nend\nif <(item (4) of [temp points v]) < [-240]> then\n    === Set Screen Point 2 (-240) ((item (2) of [temp points v]) + (((-240) - (item (1) of [temp points v])) * (slope)))\nend\nif <(item (5) of [temp points v]) < [-180]> then\n    === Set Screen Point 2 ((item (1) of [temp points v]) + (((-180) - (item (2) of [temp points v])) / (slope))) (-180)\nend\n\ndefine === Set Point 1 (x) (y) (z)\n=== Set Screen Point 1 (x) (y)\nreplace item (3) of [temp points v] with (z)\n\ndefine === Set Point 2 (x) (y) (z)\n=== Set Screen Point 2 (x) (y)\nreplace item (6) of [temp points v] with (z)\n\ndefine === Set Screen Point 1 (x) (y)\nreplace item (1) of [temp points v] with (x)\nreplace item (2) of [temp points v] with (y)\n\ndefine === Set Screen Point 2 (x) (y)\nreplace item (4) of [temp points v] with (x)\nreplace item (5) of [temp points v] with (y)\n\ndefine Distance = d (x1) (y1) (z1) to (x2) (y2) (z2)\nset [distance v] to ([sqrt v] of ((((x1) - (x2)) * ((x1) - (x2))) + ((((y1) - (y2)) * ((y1) - (y2))) + (((z1) - (z2)) * ((z1) - (z2))))) )\n\ndefine Draw Renderline from (x) (y) (z) to (x2) (y2) (z2)\nDraw Line ((renderx) + (x)) ((rendery) + (y)) ((renderz) + (z)) to ((renderx) + (x2)) ((rendery) + (y2)) ((renderz) + (z2))\n\nwhen flag clicked\nset [detail v] to [5]\n\ndefine MenuCam\nset [playerx v] to [0]\nset [playery v] to [0]\nset [playerz v] to [0]\nset [camx v] to [0]\nset [camy v] to [0]\nset [camz v] to [0]\nset [roty v] to ((() - ((mouse x) / (8))) - (90))\nset [rotx v] to (((mouse y) / (8)) - (30))\n=== Calculate Trig Values\n\ndefine === Calculate Trig Values\nset [cosx v] to ([cos v] of (rotX) )\nset [sinx v] to ([sin v] of (rotX) )\nset [cosy v] to ([cos v] of (rotY) )\nset [siny v] to ([sin v] of (rotY) )\n\ndefine Transaprenz\ngo to x: (0) y: (0)\nset pen size to (1000)\nset pen color to (#8c8c8c)\nset pen (transparency v) to (50)\npen up\npen down\nset pen (transparency v) to (0)\n\nwhen I receive [menu v]\n\ndefine Flag\nif <(s#) = [11]> then\n    set [flagx2 v] to [0]\n    set [flagz2 v] to [15]\nend\nif <(s#) = [22]> then\n    set [flagx2 v] to [0]\n    set [flagz2 v] to [-15]\nend\nif <(s#) = [33]> then\n    set [flagx2 v] to [15]\n    set [flagz2 v] to [0]\nend\nif <(s#) = [44]> then\n    set [flagx2 v] to [-15]\n    set [flagz2 v] to [0]\nend\nDistance = d (camX) (camY) (camZ) to (renderx) ((rendery) + (17)) (renderz)\nset [d2 v] to (Distance)\nDistance = d (camX) (camY) (camZ) to ((renderx) + (flagx2)) ((rendery) + (17)) ((renderz) + (flagz2))\nif <(d2) > (Distance)> then\n    set pen size to ((700) / (d2))\n    set pen (brightness v) to (50)\n    set pen color to (#904500)\n    Draw Renderline from [0] [-20] [0] to [0] [20] [0]\n    set pen color to (#418018)\n    Draw Renderline from [0] [20] [0] to (flagx2) [20] (flagz2)\n    Draw Renderline from [0] [17] [0] to (flagx2) [17] (flagz2)\n    Draw Renderline from [0] [14] [0] to (flagx2) [14] (flagz2)\n    Draw Renderline from [0] [15.5] [0] to (flagx2) [15.5] (flagz2)\n    Draw Renderline from [0] [18.5] [0] to (flagx2) [18.5] (flagz2)\n    Draw Renderline from [0] [12.5] [0] to (flagx2) [12.5] (flagz2)\nelse\n    set pen size to ((600) / (d2))\n    set pen (brightness v) to (50)\n    set pen color to (#418018)\n    Draw Renderline from [0] [20] [0] to (flagx2) [20] (flagz2)\n    Draw Renderline from [0] [17] [0] to (flagx2) [17] (flagz2)\n    Draw Renderline from [0] [14] [0] to (flagx2) [14] (flagz2)\n    Draw Renderline from [0] [15.5] [0] to (flagx2) [15.5] (flagz2)\n    Draw Renderline from [0] [18.5] [0] to (flagx2) [18.5] (flagz2)\n    Draw Renderline from [0] [12.5] [0] to (flagx2) [12.5] (flagz2)\n    set pen color to (#904500)\n    Draw Renderline from [0] [-20] [0] to [0] [20] [0]\nend\n\nwhen I receive [uwu v]\nforever\n    if <(___ID) = [menu]> then\n        set [timer v] to (timer)\n        erase all\n        MenuCam\n        === Calculate Trig Values\n        Render Cubes\n        Detail\n        broadcast (Update v) and wait\n        set [fps v] to (round ((1) / ((timer) - (timer))))\n    end\nend\n\ndefine Detail\nset [detail v] to [5]\n\nif <(fps) > [25]> then\n    if <not <(Detail) = [1]>> then\n        change [detail v] by (-1)\n    end\nend\nif <[10] > (fps)> then\n    if <not <(Detail) = [11]>> then\n        change [detail v] by (1)\n    end\nend\n\nwhen I receive [uwu v]\nforever\n    if <(___ID) = [play]> then\n        erase all\n        set [timer v] to (timer)\n        broadcast (Controls  v)\n        === Calculate Trig Values\n        Render Cubes\n        broadcast (Update v) and wait\n        set [fps v] to (round ((1) / ((timer) - (timer))))\n    end\nend\n\n@Menu\n\nwhen I receive [menu v]\nset [clone_id v] to [1]\ncreate clone of (_myself_ v)\nset [clone_id v] to [2]\ncreate clone of (_myself_ v)\nset [clone_id v] to [3]\ncreate clone of (_myself_ v)\n\nwhen I start as a clone\nswitch costume to (((Clone_ID) + (1)) + ((3) * (language)))\nset size to (50) %\ngo to x: (-200) y: ((50) - (((Clone_ID) - (1)) * (50)))\nshow\nforever\n    Clone (Clone_ID)\nend\n\ndefine Clone (#)\nif <touching (mouse-pointer v)?> then\n    change x by (((-190) - (x position)) / (5))\n    if <mouse down?> then\n        wait until <not <mouse down?>>\n        if <touching (mouse-pointer v)?> then\n            if <[1] = (#)> then\n                broadcast (Play v)\n            end\n            if <[2] = (#)> then\n                broadcast (credits/help v)\n                set [___id v] to [credits]\n            end\n            if <[3] = (#)> then\n                broadcast (credits/help v)\n                set [___id v] to [help]\n            end\n        end\n    end\nelse\n    change x by (((-200) - (x position)) / (5))\nend\n\nwhen I receive [play v]\ndelete this clone\n\nwhen I receive [uwu v]\nset [___id v] to [menu]\nbroadcast (menu v)\n\nwhen I receive [credits/help v]\ndelete this clone\n\n@Shadow\n\nwhen I start as a clone\ngo to [front v] layer\nswitch costume to (slider v)\nforever\n    set y to (164)\n    if <(___ID) = [play]> then\n        show\n    else\n        hide\n    end\nend\n\nwhen I receive [uwu v]\ncreate clone of (_myself_ v)\nswitch costume to (blank v)\nset size to (100) %\nswitch costume to (big v)\nforever\n    if <(___ID) = [play]> then\n        show\n    else\n        hide\n    end\nend\n\nwhen I start as a clone\nforever\n    if <(___ID) = [play]> then\n        set detail\n        if <<<<(mouse x) < [30]> and <(mouse x) > [-110]>> and <[10] > ([abs v] of ((mouse y) - (y position)) )>> and <mouse down?>> then\n            repeat until <not <mouse down?>>\n                set x to (mouse x)\n                if <(x position) > [30]> then\n                    set x to (30)\n                end\n                if <[-110] > (x position)> then\n                    set x to (-110)\n                end\n                set detail\n            end\n        end\n    end\nend\n\nwhen I start as a clone\nforever\n    set x to (-40)\n    wait until <(___ID) = [play]>\n    set x to (-40)\n    wait until <not <(___ID) = [play]>>\nend\n\ndefine set detail\nset [detail v] to ((11.5) - ((round (((x position) + (110)) / (14))) + (1)))\n\nwhen flag clicked\nhide\n\n@FPS\n\nwhen flag clicked\ncreate clone of (_myself_ v)\nforever\n    go to x: (150) y: (167)\n    set size to (65) %\n    if <(length of (fps)) = [1]> then\n        switch costume to (0 v)\n    else\n        switch costume to (letter (1) of ((round ((fps) / (2))) * (2)))\n    end\n    if <(___ID) = [play]> then\n        show\n    else\n        hide\n    end\nend\n\nwhen I start as a clone\nforever\n    go to x: (170) y: (167)\n    set size to (65) %\n    if <(length of (fps)) = [1]> then\n        switch costume to (letter (1) of ((round ((fps) / (2))) * (2)))\n    else\n        switch costume to (letter (2) of ((round ((fps) / (2))) * (2)))\n    end\n    if <(___ID) = [play]> then\n        show\n    else\n        hide\n    end\nend\n\n@is compiled?\n\nwhen flag clicked\nhide\ngo to [front v] layer\ngo [forward v] (1000000) layers\ndelete all of [_______________________________________________________ v]\nshow list [_______________________________________________________ v]\nif <not <is compiled?>> then\n    add [Copy this link and open it in a new tab!] to [_______________________________________________________ v]\n    add [Kopiere diesen Link und öffne ihn in einem neuen Tab!] to [_______________________________________________________ v]\n    add [https://turbowarp.org/588365279/fullscreen] to [_______________________________________________________ v]\n    hide list [_______________________________________________________ v]\n    show\n    stop [all v]\nelse\n    broadcast (Language v)\nend\n\n@Messages\n\nwhen flag clicked\nhide\n\nwhen I receive [language v]\nset [___id v] to [language]\nshow\ngo to x: (0) y: (0)\nset size to (5) %\nset [lol v] to [12]\nrepeat (10)\n    change size by (lol)\n    change [lol v] by (-1.3)\nend\nrepeat (10)\n    change size by (lol)\n    set [lol v] to ((0.8) * (lol))\nend\n\nwhen flag clicked\nerase all\nset [________1 v] to [0]\nset [__________2 v] to [0]\nforever\n    hide\n    if <(___ID) = [language]> then\n        check\n        erase all\n        show\n    end\n    if <(___ID) = [mobile]> then\n        check2\n        erase all\n        show\n    end\nend\n\ndefine check\nset [_____touching v] to [1]\nswitch costume to (check1 v)\nif <touching (mouse-pointer v)?> then\n    set [_____touching v] to [2]\n    if <mouse down?> then\n        set [________1 v] to [1]\n    end\n    if <not <mouse down?>> then\n        if <(________1) = [1]> then\n            set [language v] to [0]\n            broadcast (Mobile? v)\n        end\n        set [________1 v] to [0]\n    end\nend\nif <not <(_____touching) = [2]>> then\n    set [________1 v] to [0]\nend\nswitch costume to (check2 v)\nif <touching (mouse-pointer v)?> then\n    set [_____touching v] to [3]\n    if <mouse down?> then\n        set [__________2 v] to [1]\n    end\n    if <not <mouse down?>> then\n        if <(__________2) = [1]> then\n            set [language v] to [1]\n            broadcast (Mobile? v)\n        end\n        set [__________2 v] to [0]\n    end\nend\nif <not <(_____touching) = [3]>> then\n    set [__________2 v] to [0]\nend\nif <(_____touching) = [1]> then\n    switch costume to (touching nothing v)\nend\nif <(_____touching) = [2]> then\n    switch costume to (touching english v)\nend\nif <(_____touching) = [3]> then\n    switch costume to (touching deutsch v)\nend\n\nwhen I receive [mobile? v]\nset [___id v] to [mobile]\nshow\ngo to x: (0) y: (0)\nset size to (5) %\nset [lol v] to [12]\nrepeat (10)\n    change size by (lol)\n    change [lol v] by (-1.3)\nend\nrepeat (10)\n    change size by (lol)\n    set [lol v] to ((0.8) * (lol))\nend\n\ndefine check2\nset [_____touching v] to [1]\nswitch costume to (mobile v)\nif <touching (mouse-pointer v)?> then\n    set [_____touching v] to [2]\n    if <mouse down?> then\n        set [________1 v] to [1]\n    end\n    if <not <mouse down?>> then\n        if <(________1) = [1]> then\n            set [mobile? v] to [1]\n            broadcast (UwU v)\n        end\n        set [________1 v] to [0]\n    end\nend\nif <not <(_____touching) = [2]>> then\n    set [________1 v] to [0]\nend\nswitch costume to (pc/laptop v)\nif <touching (mouse-pointer v)?> then\n    set [_____touching v] to [3]\n    if <mouse down?> then\n        set [__________2 v] to [1]\n    end\n    if <not <mouse down?>> then\n        if <(__________2) = [1]> then\n            set [mobile? v] to [0]\n            broadcast (UwU v)\n        end\n        set [__________2 v] to [0]\n    end\nend\nif <not <(_____touching) = [3]>> then\n    set [__________2 v] to [0]\nend\nif <(_____touching) = [1]> then\n    switch costume to ((6) + (language))\nend\nif <(_____touching) = [2]> then\n    switch costume to ((8) + (language))\nend\nif <(_____touching) = [3]> then\n    switch costume to ((10) + (language))\nend\n\n@credits/help\n\nwhen flag clicked\nset size to (100) %\nhide\nswitch costume to (credits v)\ncreate clone of (_myself_ v)\nswitch costume to (help v)\ncreate clone of (_myself_ v)\nswitch costume to (help/credits/play v)\ncreate clone of (_myself_ v)\n\nwhen I start as a clone\nset [_____________________id v] to (costume [number v])\ngo to x: (0) y: (0)\nforever\n    if <(_____________________id) = [5]> then\n        go to x: (175) y: ((150) - ((20) * <[play] = (___ID)>))\n        set size to (50) %\n        switch costume to (help/credits/play v)\n        switch costume to ((costume [number v]) + (language))\n    else\n        switch costume to (((language) * (2)) + (_____________________id))\n    end\n    if < (costume [name v]) contains (___ID)?> then\n        show\n        if < [creditshelp] contains (___ID)?> then\n            erase all\n        end\n    else\n        hide\n    end\nend\n\nwhen I start as a clone\nforever\n    go to [front v] layer\n    if <(_____________________id) = [5]> then\n        go [forward v] (1000000000000000000000000000000000000000000000000000000000000000000000000) layers\n        if < (costume [name v]) contains (___ID)?> then\n            set [brightness v] effect to (0)\n            if <touching (mouse-pointer v)?> then\n                set [brightness v] effect to (-10)\n                if <mouse down?> then\n                    wait until <not <mouse down?>>\n                    if <touching (mouse-pointer v)?> then\n                        broadcast (menu v)\n                        set [___id v] to [menu]\n                    end\n                end\n            end\n        end\n    end\nend\n\n@Figur1\n\nwhen I receive [new level v]\nrepeat (10)\n    change [ghost v] effect by (-5)\nend\nif <(costume [number v]) = [7]> then\nelse\n    wait (1) seconds\n    repeat (20)\n        change [ghost v] effect by (2.5)\n    end\nend\n\nwhen I receive [play v]\nset [ghost v] effect to (50)\nswitch costume to (level#)\nwait (1) seconds\nrepeat (20)\n    change [ghost v] effect by (2.5)\nend\n\nwhen I receive [uwu v]\nshow\nset [ghost v] effect to (100)\nforever\n    if <not <[play] = (___ID)>> then\n        set [ghost v] effect to (100)\n    end\n    switch costume to (level#)\nend\n\nwhen flag clicked\nhide\n\n@Figur2\n\nwhen flag clicked\ngo to [front v] layer\nset [ghost v] effect to (100)\n\n