☁ Multiplayer 3D Platformer | 100% Pen | #games [ENTRY]
@Stage\n\nwhen I receive [dead v]\nplay sound [bleh die3 v] until done\n\nwhen flag clicked\nforever\n    play sound [Minecraft - Piano 2 v] until done\nend\n\n@⛈ Game\n\ndefine Mobile\npen up\ngo to x: (180) y: (-125)\nset pen color to (#adadad)\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 (#adadad)\nset pen size to (80)\nset pen (transparency v) to (0)\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)\nset pen color to (#000000)\nPrint | Pos [145] [-135] Size [20] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [Jump]\ngo to x: (-180) y: (-125)\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 (#adadad)\nset pen size to (80)\nset pen (transparency v) to (0)\npen down\npen up\nif <<(1) = [1]> or <<<mouse down?> and <[40] > (distance to [mouse-pointer v])>> and <(2) = [0]>>> 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    if <[-125] > (y position)> then\n        set [backward v] to (round (([abs v] of ((y position) + (125)) ) / ((30) / (7))))\n    else\n        set [forward v] to (round (((y position) + (125)) / ((30) / (7))))\n    end\n    if <[-180] > (x position)> then\n        set [left v] to (round (([abs v] of ((x position) + (180)) ) / ((30) / (7))))\n    else\n        set [right v] to (round (((x position) + (180)) / ((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 (#000000)\nset pen size to (40)\nset pen (transparency v) to (0)\npen down\npen up\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\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 Game\nset [mx/my v] to (join (mouse x) (join [/] (mouse y)))\nif <(_activity#) = [2]> then\n    === Calculate Trig Values\n    Render\n    Controls\n    Physics\n    updatepos\n    Set Camera Pos to ((payerX) + ((cosX) * ((sinY) * (_zoom)))) ((camY) + ((((playerY) + ((_zoom) * (() - (sinX)))) - (camY)) / (5))) ((playerZ) + ((cosX) * ((cosY) * (() - (_zoom)))))\n    homebutton2\n    pen up\nend\nif <(_activity#) = [1]> then\n    loadingscreen\nend\nif <(_activity#) = [0]> then\n    set [playerz v] to [0]\n    set [payerx v] to [0]\n    menüplayer\n    menübuttons\n    set [level# v] to [0]\n    like+fave pls :3\nend\nif <(_activity#) = [3]> then\n    game full\nend\nif <(_activity#) = [5]> then\n    instructions\n    homebutton2\nend\nif <(_activity#) = [4]> then\n    level\n    homebutton2\n    broadcast (highscores v)\nend\nif <(_activity#) = [6]> then\n    done\nend\n\ndefine setup\ndelete all of [towerx v]\ndelete all of [towerxlenght v]\ndelete all of [towery v]\ndelete all of [towerylength v]\ndelete all of [towerz v]\ndelete all of [towerzlength v]\ndelete all of [towerid v]\n\ndefine updatepos\nreplace item (1) of [towerx v] with (payerX)\nreplace item (1) of [towery v] with (playerY)\nreplace item (1) of [towerz v] with (playerZ)\nif <(_activity#) = [2]> then\n    if <(moved?) = [1]> then\n        set [_timer v] to (timer)\n    else\n        set [_timer v] to [0]\n    end\n    Print | Pos [150] [150] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text (_timer)\nend\n\ndefine Tower to (x) (y) (z) xl (xl) yl (yl) zl (zl) | (id) |\nadd (x) to [towerx v]\nadd (y) to [towery v]\nadd (z) to [towerz v]\nadd (xl) to [towerxlenght v]\nadd (yl) to [towerylength v]\nadd (zl) to [towerzlength v]\nadd (id) to [towerid v]\n\ndefine Physics\nif <not <<(Backward) = [0]> and <<(Forward) = [0]> and <<(Jump) = [0]> and <<(Left) = [0]> and <(Right) = [0]>>>>>> then\n    if <(moved?) = [0]> then\n        set [moved? v] to [1]\n        reset timer\n    end\nend\nMove Player by (0) (-1) (0)\nif <(Jump) = [1]> then\n    Checkcollision [20]\n    if <(touchingplatform) = [1]> then\n        set [speedy v] to [8]\n    end\nend\nMove Player by (0) (1) (0)\nchange [speedy v] by (-0.5)\nrepeat ((2) * ([abs v] of (speedy) ))\n    if <not <(speedy) = [0]>> then\n        Move Player by (0) ((0.5) - ((1) * <[0] > (speedy)>)) (0)\n    end\n    Checkcollision [20]\n    if <(touchingplatform) = [1]> then\n        Move Player by [] (() - ((0.5) - ((1) * <[0] > (speedy)>))) []\n        set [speedy v] to [0]\n    end\nend\nif <not <(Left) = [0]>> then\n    Move Player by (() - (((Left) / (2)) * (cosY))) (0) (0)\n    Checkcollision [20]\n    if <(touchingplatform) = [1]> then\n        Move Player by (((Left) / (2)) * (cosY)) (0) (0)\n    end\n    Move Player by (0) (0) (() - (((Left) / (2)) * (sinY)))\n    Checkcollision [20]\n    if <(touchingplatform) = [1]> then\n        Move Player by (0) (0) (((Left) / (2)) * (sinY))\n    end\nend\nif <not <(Right) = [0]>> then\n    Move Player by (((Right) / (2)) * (cosY)) (0) (0)\n    Checkcollision [20]\n    if <(touchingplatform) = [1]> then\n        Move Player by (() - (((Right) / (2)) * (cosY))) (0) (0)\n    end\n    Move Player by (0) (0) (((Right) / (2)) * (sinY))\n    Checkcollision [20]\n    if <(touchingplatform) = [1]> then\n        Move Player by (0) (0) (() - (((Right) / (2)) * (sinY)))\n    end\nend\nif <not <(Forward) = [0]>> then\n    Move Player by (() - (((Forward) / (2)) * (sinY))) (0) (0)\n    Checkcollision [20]\n    if <(touchingplatform) = [1]> then\n        Move Player by (((Forward) / (2)) * (sinY)) (0) (0)\n    end\n    Move Player by (0) (0) (((Forward) / (2)) * (cosY))\n    Checkcollision [20]\n    if <(touchingplatform) = [1]> then\n        Move Player by (0) (0) (() - (((Forward) / (2)) * (cosY)))\n    end\nend\nif <not <(Backward) = [0]>> then\n    Move Player by (((Backward) / (2)) * (sinY)) (0) (0)\n    Checkcollision [20]\n    if <(touchingplatform) = [1]> then\n        Move Player by (() - (((Backward) / (2)) * (sinY))) (0) (0)\n    end\n    Move Player by (0) (0) (() - (((Backward) / (2)) * (cosY)))\n    Checkcollision [20]\n    if <(touchingplatform) = [1]> then\n        Move Player by (0) (0) (((Backward) / (2)) * (cosY))\n    end\nend\nMove Player by (0) (-1) (0)\nCheckcollision [20]\nif <(touchingbouncy) = [1]> then\n    set [speedy v] to [11]\nend\nif <(touchingflag) = [1]> then\n    broadcast (Flag v)\nend\nif <<[-40] > (speedy)> or <(touchinglava) = [1]>> then\n    broadcast (Dead v)\n    Initialize Camera\nend\nMove Player by [] [1] []\nif <key (q v) pressed?> then\n    change [camy v] by (3)\nend\nif <key (e v) pressed?> then\n    change [camy v] by (-3)\nend\n\ndefine Checkcollision (radius)\nset [touchingflag v] to [0]\nset [touchingbouncy v] to [0]\nset [touchinglava v] to [0]\nset [touchingplatform v] to [0]\nset [_# v] to [1]\nrepeat ((length of [towerx v]) - (1))\n    change [_# v] by (1)\n    if <<(((item (_#) of [towerxlenght v]) / (2)) + ((radius) / (2))) > ([abs v] of ((item (_#) of [towerx v]) - (payerX)) )> and <<(((item (_#) of [towerylength v]) / (2)) + ((radius) / (2))) > ([abs v] of ((item (_#) of [towery v]) - (playerY)) )> and <(((item (_#) of [towerzlength v]) / (2)) + ((radius) / (2))) > ([abs v] of ((item (_#) of [towerz v]) - (playerZ)) )>>> then\n        if <[1] = (item (_#) of [towerid v])> then\n            set [touchingplatform v] to [1]\n        end\n        if <[2] = (item (_#) of [towerid v])> then\n            set [touchinglava v] to [1]\n        end\n        if <[3] = (item (_#) of [towerid v])> then\n            set [touchingbouncy v] to [1]\n        end\n        if <[4] = (item (_#) of [towerid v])> then\n            set [touchingflag v] to [1]\n        end\n    end\nend\n\ndefine Set Camera Pos to (x) (y) (z)\nset [camx v] to (x)\nset [camy v] to (y)\nset [camz v] to (z)\n\ndefine Set Player Pos to (x) (y) (z)\nset [payerx v] to (x)\nset [playery v] to (y)\nset [playerz v] to (z)\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 Initialize Camera\nset [speedy v] to [0]\nSet Camera Pos to (50) (-20) (0)\nSet Camera Rot to (0) (0)\nSet Player Pos to [0] [20] [0]\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 Move Player by (dx) (dy) (dz)\nchange [payerx v] by (dx)\nchange [playery v] by (dy)\nchange [playerz v] by (dz)\n\ndefine Render\nset [_# v] to (length of [towerx v])\nrepeat ((length of [towerx v]) - (1))\n    Render tower (_#)\n    change [_# v] by (-1)\nend\nShadow\nRender tower [1]\nif <(_activity#) = [2]> then\n    ☁\nend\n\ndefine ☁\nset [_# v] to [0]\nrepeat (MAX PLAYERS)\n    change [_# v] by (1)\n    if <<(level#) = (item (_#) of [☁ level v])> and <<not <(_#) = (MY PLAYER #)>> and <not <(item (_#) of [☁ online? v]) > [100]>>>> then\n        Render Tower at (item (_#) of [☁ x v]) (item (_#) of [☁ y v]) (item (_#) of [☁ z v]) with [20] [20] [20]\n        set pen size to (1)\n        Draw Line (item (_#) of [☁ x v]) ((item (_#) of [☁ y v]) + (20)) (item (_#) of [☁ z v]) to (item (_#) of [☁ x v]) ((item (_#) of [☁ y v]) + (20)) (item (_#) of [☁ z v])\n        Distance = d (camX) (camY) (camZ) to (item (_#) of [☁ x v]) ((item (_#) of [☁ y v]) + (20)) (item (_#) of [☁ z v])\n        set pen color to (#040c04)\n        Print | Pos ((x position) - (((0.4) * ((1500) / (Distance))) * (length of (item (_#) of [☁ username v])))) (y position) Size ((2000) / (Distance)) [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text (item (_#) of [☁ username v])\n    end\nend\n\ndefine Render Tower at (x) (y) (z) with (xl) (yl) (zl)\nset pen color to (#807aad)\nset pen size to (1)\nset pen (transparency v) to (50)\nreplace item (1) of [endings v] with ((x) + ((xl) / (2)))\nreplace item (2) of [endings v] with ((y) + ((yl) / (2)))\nreplace item (3) of [endings v] with ((z) + ((zl) / (2)))\nreplace item (4) of [endings v] with ((x) - ((xl) / (2)))\nreplace item (5) of [endings v] with ((y) - ((yl) / (2)))\nreplace item (6) of [endings v] with ((z) - ((zl) / (2)))\nDraw Line (item (1) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v]) to (item (4) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v])\nDraw Line (item (1) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v]) to (item (4) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v])\nDraw Line (item (1) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v]) to (item (4) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v])\nDraw Line (item (1) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v]) to (item (4) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v])\nDraw Line (item (4) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v]) to (item (4) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v])\nDraw Line (item (4) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v]) to (item (4) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v])\nDraw Line (item (1) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v]) to (item (1) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v])\nDraw Line (item (1) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v]) to (item (1) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v])\nDraw Line (item (1) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v]) to (item (1) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v])\nDraw Line (item (1) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v]) to (item (1) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v])\nDraw Line (item (4) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v]) to (item (4) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v])\nDraw Line (item (4) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v]) to (item (4) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v])\nset pen (transparency v) to (0)\n\ndefine Render tower (#)\nset pen size to (1)\nif <(item (#) of [towerid v]) = [1]> then\n    set pen color to (#adadad)\nend\nif <(item (#) of [towerid v]) = [2]> then\n    set pen color to (#ad0000)\nend\nif <(item (#) of [towerid v]) = [3]> then\n    set pen color to (#b1ab00)\nend\nif <(item (#) of [towerid v]) = [4]> then\n    set pen color to (#00b10e)\nend\nif <[1] = (#)> then\n    set pen color to (#379bad)\n    set pen size to (2)\nend\nreplace item (1) of [endings v] with ((item (#) of [towerx v]) + ((item (#) of [towerxlenght v]) / (2)))\nreplace item (2) of [endings v] with ((item (#) of [towery v]) + ((item (#) of [towerylength v]) / (2)))\nreplace item (3) of [endings v] with ((item (#) of [towerz v]) + ((item (#) of [towerzlength v]) / (2)))\nreplace item (4) of [endings v] with ((item (#) of [towerx v]) - ((item (#) of [towerxlenght v]) / (2)))\nreplace item (5) of [endings v] with ((item (#) of [towery v]) - ((item (#) of [towerylength v]) / (2)))\nreplace item (6) of [endings v] with ((item (#) of [towerz v]) - ((item (#) of [towerzlength v]) / (2)))\nDraw Line (item (1) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v]) to (item (4) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v])\nDraw Line (item (1) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v]) to (item (4) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v])\nDraw Line (item (1) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v]) to (item (4) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v])\nDraw Line (item (1) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v]) to (item (4) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v])\nDraw Line (item (4) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v]) to (item (4) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v])\nDraw Line (item (4) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v]) to (item (4) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v])\nDraw Line (item (1) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v]) to (item (1) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v])\nDraw Line (item (1) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v]) to (item (1) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v])\nDraw Line (item (1) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v]) to (item (1) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v])\nDraw Line (item (1) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v]) to (item (1) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v])\nDraw Line (item (4) of [endings v]) (item (2) of [endings v]) (item (3) of [endings v]) to (item (4) of [endings v]) (item (5) of [endings v]) (item (3) of [endings v])\nDraw Line (item (4) of [endings v]) (item (2) of [endings v]) (item (6) of [endings v]) to (item (4) of [endings v]) (item (5) of [endings v]) (item (6) of [endings v])\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 Draw Line (x1) (y1) (z1) to (x2) (y2) (z2)\ngo to x: (50000000000000) y: (150)\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: (((70) * <(_activity#) = [00]>) + (item (1) of [temp points v])) y: (item (2) of [temp points v])\n    pen down\n    go to x: (((70) * <(_activity#) = [00]>) + (item (4) of [temp points v])) y: (item (5) of [temp points v])\n    pen up\nend\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 === 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 Controls\nRotate\nset [forward v] to [0]\nset [backward v] to [0]\nset [left v] to [0]\nset [right v] to [0]\nset [jump v] to [0]\nif <key (w v) pressed?> then\n    set [forward v] to [5]\nend\nif <key (s v) pressed?> then\n    set [backward v] to [5]\nend\nif <key (a v) pressed?> then\n    set [left v] to [5]\nend\nif <key (d v) pressed?> then\n    set [right v] to [5]\nend\nif <key (space v) pressed?> then\n    set [jump v] to [1]\nend\nif <(mobile?) = [1]> then\n    Mobile\nend\nwipe\n\ndefine Rotate\nif <key (down arrow v) pressed?> then\n    change [srotatex v] by (1)\nend\nif <key (up arrow v) pressed?> then\n    change [srotatex v] by (-1)\nend\nif <key (right arrow v) pressed?> then\n    change [srotatey v] by (-1)\nend\nif <key (left arrow v) pressed?> then\n    change [srotatey v] by (1)\nend\nrepeat (10)\n    Rotate Camera by ((srotatey) / (10)) ((srotatex) / (10))\n    if <[-89] > (rotX)> then\n        Rotate Camera by (0) (((srotatex) / (10)) * (-1))\n        set [srotatex v] to [0]\n    end\n    if <(rotX) > [89]> then\n        Rotate Camera by (0) (((srotatex) / (10)) * (-1))\n        set [srotatex v] to [0]\n    end\nend\nif <(3) = [0]> then\n    set [srotatex v] to ((srotatex) * (0.8))\n    set [srotatey v] to ((srotatey) * (0.8))\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]) > [500]> then\n    if <(item (4) of [temp points v]) > [500]> then\n        stop [this script v]\n    else\n        === Set Screen Point 1 (500) ((item (2) of [temp points v]) + (((500) - (item (1) of [temp points v])) * (slope)))\n    end\nend\nif <(item (2) of [temp points v]) > [500]> then\n    if <(item (5) of [temp points v]) > [500]> then\n        stop [this script v]\n    else\n        === Set Screen Point 1 ((item (1) of [temp points v]) + (((500) - (item (2) of [temp points v])) / (slope))) (500)\n    end\nend\nif <(item (1) of [temp points v]) < [-500]> then\n    if <(item (4) of [temp points v]) < [-500]> then\n        stop [this script v]\n    else\n        === Set Screen Point 1 (-500) ((item (2) of [temp points v]) + (((-500) - (item (1) of [temp points v])) * (slope)))\n    end\nend\nif <(item (2) of [temp points v]) < [-500]> then\n    if <(item (5) of [temp points v]) < [-500]> then\n        stop [this script v]\n    else\n        === Set Screen Point 1 ((item (1) of [temp points v]) + (((-500) - (item (2) of [temp points v])) / (slope))) (-500)\n    end\nend\nif <(item (4) of [temp points v]) > [500]> then\n    === Set Screen Point 2 (500) ((item (2) of [temp points v]) + (((500) - (item (1) of [temp points v])) * (slope)))\nend\nif <(item (5) of [temp points v]) > [500]> then\n    === Set Screen Point 2 ((item (1) of [temp points v]) + (((500) - (item (2) of [temp points v])) / (slope))) (500)\nend\nif <(item (4) of [temp points v]) < [-500]> then\n    === Set Screen Point 2 (-500) ((item (2) of [temp points v]) + (((-500) - (item (1) of [temp points v])) * (slope)))\nend\nif <(item (5) of [temp points v]) < [-500]> then\n    === Set Screen Point 2 ((item (1) of [temp points v]) + (((-500) - (item (2) of [temp points v])) / (slope))) (-500)\nend\n\ndefine _calcWW (text) (width) (firstwidth) (cspace) (spacewidth)\ndelete all of [_ww0 v]\ndelete all of [_ww1 v]\ndelete all of [_ww2 v]\nset [_i3 v] to [1]\nset [_i4 v] to [0]\nset [_i5 v] to [0]\nset [_i6 v] to [0]\nset [_i7 v] to (firstwidth)\nrepeat (length of (text))\n    if <(letter (_i3) of (text)) = [ ]> then\n        if <(_i4) = [0]> then\n            if <((_i7) + ((_i5) - (cspace))) > (width)> then\n                insert [1] at (1) of [_ww0 v] \n                add [0] to [_ww1 v]\n                add [0] to [_ww2 v]\n                set [_i6 v] to [1]\n            end\n            change [_i7 v] by ((_i5) - (cspace))\n        else\n            if <((_i7) + ((spacewidth) + (_i5))) > (width)> then\n                if <(_i4) > (_i6)> then\n                    add (_i7) to [_ww1 v]\n                    add (((_i4) - (_i6)) - (1)) to [_ww2 v]\n                end\n                set [_i6 v] to (_i4)\n                set [_i7 v] to ((_i5) - (cspace))\n            else\n                change [_i7 v] by ((spacewidth) + (_i5))\n            end\n        end\n        add [1] to [_ww0 v]\n        set [_i4 v] to (length of [_ww0 v])\n        set [_i5 v] to [0]\n    else\n        switch costume to (blank v)\n        switch costume to (join (letter (_i3) of (text)) [_])\n        set [_i9 v] to ((costume [number v]) - (1))\n        if <(_i9) > [0]> then\n            set [_i8 v] to (item (_i9) of [_chwidth v])\n            if <((_i5) + (_i8)) > (width)> then\n                if <(_i4) > (_i6)> then\n                    add (_i7) to [_ww1 v]\n                    add (((_i4) - (_i6)) - (1)) to [_ww2 v]\n                end\n                add ((_i5) - (cspace)) to [_ww1 v]\n                add ((length of [_ww0 v]) - (_i4)) to [_ww2 v]\n                add [1] to [_ww0 v]\n                set [_i4 v] to (length of [_ww0 v])\n                set [_i5 v] to ((_i8) + (cspace))\n                set [_i6 v] to (_i4)\n                set [_i7 v] to ((-1) * ((cspace) + (spacewidth)))\n            else\n                change [_i5 v] by ((_i8) + (cspace))\n            end\n            add (_i9) to [_ww0 v]\n        end\n    end\n    change [_i3 v] by (1)\nend\nif <(length of [_ww0 v]) > (_i6)> then\n    if <(_i4) = [0]> then\n        if <((_i7) + ((_i5) - (cspace))) > (width)> then\n            insert [1] at (1) of [_ww0 v] \n            add [0] to [_ww1 v]\n            add [0] to [_ww2 v]\n            set [_i6 v] to [1]\n        end\n        change [_i7 v] by ((_i5) - (cspace))\n    else\n        if <((_i7) + ((spacewidth) + (_i5))) > (width)> then\n            if <(_i4) > (_i6)> then\n                add (_i7) to [_ww1 v]\n                add (((_i4) - (_i6)) - (1)) to [_ww2 v]\n            end\n            set [_i6 v] to (_i4)\n            set [_i7 v] to ((_i5) - (cspace))\n        else\n            change [_i7 v] by ((spacewidth) + (_i5))\n        end\n    end\n    add (_i7) to [_ww1 v]\n    add ((length of [_ww0 v]) - (_i6)) to [_ww2 v]\nend\n\nwhen flag clicked\npen up\nhide\nswitch costume to (blank v)\nset size to (100000) %\nswitch costume to ( _ v)\ngo to x: (0) y: (0)\npoint in direction (90)\nset rotation style [don't rotate v]\n\ndefine Clear | Character Data\nswitch costume to (blank v)\nswitch costume to ((costume [number v]) - (1))\nif <((costume [number v]) - (1)) > (length of [_chindex v])> then\n    set [_i0 v] to ((costume [number v]) - (1))\nelse\n    set [_i0 v] to (length of [_chindex v])\nend\ndelete all of [_chindex v]\ndelete all of [_chwidth v]\ndelete all of [_chdata0 v]\ndelete all of [_chdata1 v]\ndelete all of [_chdata2 v]\ndelete all of [_chdata3 v]\nrepeat (_i0)\n    add [__] to [_chdata0 v]\n    add [none] to [_chdata1 v]\n    add [] to [_chdata2 v]\n    add [] to [_chdata3 v]\n    add ((length of [_chdata0 v]) + (1)) to [_chindex v]\n    add ((1) * (0)) to [_chwidth v]\n    repeat (25)\n        add [] to [_chdata0 v]\n        add [] to [_chdata1 v]\n        add [] to [_chdata2 v]\n        add [] to [_chdata3 v]\n    end\nend\nadd [__] to [_chdata0 v]\nadd [none] to [_chdata1 v]\nadd [] to [_chdata2 v]\nadd [] to [_chdata3 v]\n\ndefine Load | Font (fontname)\nset [_i0 v] to (item # of (fontname) in [_fontname v])\nif <(_i0) < [1]> then\n    stop [this script v]\nend\nset [_i0 v] to (item (_i0) of [_fontindex v])\nset [_i1 v] to (item (_i0) of [_fontdata v])\nchange [_i0 v] by (2)\nrepeat (item ((_i0) - (1)) of [_fontdata v])\n    set [_i2 v] to (item (_i0) of [_fontdata v])\n    replace item (_i2) of [_chwidth v] with (item ((_i0) + (1)) of [_fontdata v])\n    set [_i3 v] to (item (_i2) of [_chindex v])\n    if <not <(item ((_i3) - (1)) of [_chdata1 v]) = (_i1)>> then\n        replace item ((_i3) - (1)) of [_chdata1 v] with (_i1)\n        replace item ((_i3) - (1)) of [_chdata2 v] with []\n        replace item ((_i3) - (1)) of [_chdata3 v] with []\n        _unpackDef (_i2) (_i3) (item ((_i0) + (2)) of [_fontdata v])\n    end\n    change [_i0 v] by (3)\nend\n\ndefine Set Pen Color | RGBA (r) (g) (b) (a)\nset pen color to ((round (b)) + ((256) * ((round (g)) + ((256) * ((round (r)) + ((256) * (round (a))))))))\n\ndefine _unpackDef (id) (idx) (d)\nset [_i5 v] to (length of (d))\nset [_i6 v] to (idx)\nset [_i7 v] to [1]\nset [_i8 v] to [0]\nrepeat until <(_i7) > (_i5)>\n    if <(item (_i6) of [_chdata0 v]) = [__]> then\n        insert [] at (_i6) of [_chdata0 v] \n        insert [] at (_i6) of [_chdata1 v] \n        insert [] at (_i6) of [_chdata2 v] \n        insert [] at (_i6) of [_chdata3 v] \n        change [_i8 v] by (1)\n    end\n    set [_i9 v] to []\n    repeat until < [;] contains (letter (_i7) of (d))?>\n        set [_i9 v] to (join (_i9) (letter (_i7) of (d)))\n        change [_i7 v] by (1)\n    end\n    change [_i7 v] by (1)\n    if <(_i9) = ((1) * (_i9))> then\n        replace item (_i6) of [_chdata0 v] with ((1) * (_i9))\n    else\n        replace item (_i6) of [_chdata0 v] with (_i9)\n    end\n    set [_i9 v] to []\n    repeat until < [;] contains (letter (_i7) of (d))?>\n        set [_i9 v] to (join (_i9) (letter (_i7) of (d)))\n        change [_i7 v] by (1)\n    end\n    change [_i7 v] by (1)\n    if <(_i9) = ((1) * (_i9))> then\n        replace item (_i6) of [_chdata1 v] with ((1) * (_i9))\n    else\n        replace item (_i6) of [_chdata1 v] with (_i9)\n    end\n    set [_i9 v] to []\n    repeat until < [;] contains (letter (_i7) of (d))?>\n        set [_i9 v] to (join (_i9) (letter (_i7) of (d)))\n        change [_i7 v] by (1)\n    end\n    change [_i7 v] by (1)\n    if <(_i9) = ((1) * (_i9))> then\n        replace item (_i6) of [_chdata2 v] with ((1) * (_i9))\n    else\n        replace item (_i6) of [_chdata2 v] with (_i9)\n    end\n    set [_i9 v] to []\n    repeat until < [;] contains (letter (_i7) of (d))?>\n        set [_i9 v] to (join (_i9) (letter (_i7) of (d)))\n        change [_i7 v] by (1)\n    end\n    change [_i7 v] by (1)\n    if <(_i9) = ((1) * (_i9))> then\n        replace item (_i6) of [_chdata3 v] with ((1) * (_i9))\n    else\n        replace item (_i6) of [_chdata3 v] with (_i9)\n    end\n    change [_i6 v] by (1)\nend\nif <(_i8) > [0]> then\n    set [_i5 v] to (id)\n    repeat ((length of [_chindex v]) - (_i5))\n        change [_i5 v] by (1)\n        replace item (_i5) of [_chindex v] with ((item (_i5) of [_chindex v]) + (_i8))\n    end\nend\n\ndefine _getWidth (text) (size) (cspace)\nset [_width v] to [0]\nset [_i0 v] to [1]\nset [_i1 v] to [0]\nrepeat (length of (text))\n    switch costume to (blank v)\n    switch costume to (join (letter (_i0) of (text)) [_])\n    set [_i2 v] to ((costume [number v]) - (1))\n    if <(_i2) > [0]> then\n        change [_width v] by (((size) * (item (_i2) of [_chwidth v])) + (cspace))\n        change [_i1 v] by (1)\n    end\n    change [_i0 v] by (1)\nend\nif <(_i1) > [0]> then\n    change [_width v] by ((-1) * (cspace))\nend\n\ndefine New Lines | Number (lines) Size (size) Space (lspace)\nchange [_y v] by (((lines) + <(lines) = []>) * (((size) + ((12) * <(size) = []>)) * ((-1) - ((0.7) * ((lspace) + <(lspace) = []>)))))\n\ndefine Print | Pos (x) (y) Size (size) (width) Bounds (xmin) (xmax) Space (cspace) Style (weight) (slant) Underline (ul.height) (ul.weight) Align (al.x) (al.y) Text (text)\npen up\nset [_i8 v] to ((size) + ((12) * <(size) = []>))\nif <not <(_i8) > [0]>> then\n    set [_x v] to ((1) * (x))\n    set [_y v] to ((1) * (y))\n    switch costume to ( _ v)\n    stop [this script v]\nend\nset [_i7 v] to (((width) + <(width) = []>) * (_i8))\nset [_i9 v] to (([tan v] of (slant) ) * (_i8))\nset [_i2 v] to ((al.x) + (((0.5) * <(al.x) = [c]>) + <(al.x) = [r]>))\nset [_i3 v] to ((al.y) + (((0.5) * <(al.y) = [c]>) + <(al.y) = [t]>))\nset [_i4 v] to (((cspace) + <(cspace) = []>) * ((0.27) * (_i8)))\nset pen size to ((0.125) * (((weight) + <(weight) = []>) * (_i8)))\n_printText (text) ((1) * (x)) ((y) - ((_i3) * (_i8))) ((xmin) + (<(xmin) = []> * ((-1) / (0)))) ((xmax) + (<(xmax) = []> * ((1) / (0)))) (_i4) (ul.height) (((weight) + <(weight) = []>) * ((ul.weight) + <(ul.weight) = []>)) ((-1) * (_i2))\n\ndefine Get Width | Size (size) (width) Space (cspace) Text (text)\n_getWidth (text) (((size) + ((12) * <(size) = []>)) * ((width) + <(width) = []>)) (((cspace) + <(cspace) = []>) * ((0.27) * ((size) + ((12) * <(size) = []>))))\n\ndefine Print WW | Pos (x) (y) Size (size) (width) Bounds (xmin) (xmax) (ymax) (ymin) Space (cspace) (lspace) Style (weight) (slant) Underline (ul.height) (ul.weight) Align (al.x) (al.y) Text (text)\npen up\nset [_i0 v] to ((size) + ((12) * <(size) = []>))\nif <not <(_i0) > [0]>> then\n    set [_x v] to ((1) * (x))\n    set [_y v] to ((1) * (y))\n    switch costume to ( _ v)\n    stop [this script v]\nend\nset [_i0 v] to (((width) + <(width) = []>) * (_i0))\nset [_i1 v] to ((xmin) + ((-230) * <(xmin) = []>))\nset [_i2 v] to ((xmax) + ((230) * <(xmax) = []>))\nset [_i3 v] to (item (1) of [_chwidth v])\nset [_i4 v] to (((0.27) * ((cspace) + <(cspace) = []>)) / ((width) + <(width) = []>))\n_calcWW (text) (((_i2) - (_i1)) / (_i0)) (<not <(x) = []>> * (((x) - (_i1)) / (_i0))) (_i4) ((_i4) + (_i3))\nset [_i7 v] to (_i0)\nset [_i8 v] to ((size) + ((12) * <(size) = []>))\nset [_i3 v] to ((al.x) + (((0.5) * <(al.x) = [c]>) + <(al.x) = [r]>))\nset [_i0 v] to ((lspace) + <(lspace) = []>)\nif <(al.y) = []> then\n    set [_i4 v] to [1]\nelse\n    if <(al.y) = ((1) * (al.y))> then\n        set [_i4 v] to (al.y)\n    else\n        if <(al.y) = [b]> then\n            set [_i4 v] to ((length of [_ww1 v]) - <<(item (1) of [_ww2 v]) = [0]> and <(x) = []>>)\n        else\n            if <(al.y) = [c]> then\n                set [_i4 v] to ((0.5) * ((((0.7) * (_i0)) / (((0.7) * (_i0)) + (1))) + ((length of [_ww1 v]) - <<(item (1) of [_ww2 v]) = [0]> and <(x) = []>>)))\n            else\n                set [_i4 v] to (((0.7) * (_i0)) / (((0.7) * (_i0)) + (1)))\n            end\n        end\n    end\nend\nset [_i5 v] to ((0.1) * ((((ul.weight) + <(ul.weight) = []>) * ((weight) + <(weight) = []>)) * (_i8)))\nif <(ymax) = []> then\n    set [_i6 v] to ((1) / (0))\nelse\n    set [_i6 v] to ((ymax) - (_i0))\nend\nset [_i9 v] to (([tan v] of (slant) ) * (_i8))\n_printWW ((((1) - (_i3)) * (_i1)) + ((_i3) * (_i2))) (x) ((1) - <(x) = []>) ((1) * (y)) (_i6) ((ymin) + (<(ymin) = []> * ((-1) / (0)))) (((cspace) + <(cspace) = []>) * ((0.27) * (_i8))) ((_i8) * ((-1) - ((0.7) * (_i0)))) ((0.125) * (((weight) + <(weight) = []>) * (_i8))) ((ul.height) * (_i8)) (_i5) ((ul.height) * (_i9)) <not <(ul.height) = []>> ((-1) * ((_i3) * (_i7))) (_i4)\n\ndefine _printText (text) (x) (y) (xmin) (xmax) (cspace) (ul.height) (ul.weight) (al.x)\nset [_x v] to (x)\nset [_y v] to (y)\nif <not <(al.x) = [0]>> then\n    set [_width v] to [0]\n    _getWidth (text) (_i7) (cspace)\n    change [_x v] by ((al.x) * (_width))\nend\nset [_bq v] to ([ceiling v] of (((0.075) * ([sqrt v] of ((_i7) * (_i8)) )) + (0.5)) )\nset [_bq2 v] to ((4) * ((_bq) * (_bq)))\nset [_i0 v] to [1]\nif <<(xmin) = ((-1) / (0))> and <(xmax) = ((1) / (0))>> then\n    if <(_i9) = [0]> then\n        repeat (length of (text))\n            switch costume to (blank v)\n            switch costume to (join (letter (_i0) of (text)) [_])\n            if <(costume [number v]) > [1]> then\n                _printCh ((costume [number v]) - (1))\n                change [_x v] by (cspace)\n            end\n            change [_i0 v] by (1)\n        end\n    else\n        repeat (length of (text))\n            switch costume to (blank v)\n            switch costume to (join (letter (_i0) of (text)) [_])\n            if <(costume [number v]) > [1]> then\n                _printChSl ((costume [number v]) - (1))\n                change [_x v] by (cspace)\n            end\n            change [_i0 v] by (1)\n        end\n    end\nelse\n    repeat (length of (text))\n        switch costume to (blank v)\n        switch costume to (join (letter (_i0) of (text)) [_])\n        if <(costume [number v]) > [1]> then\n            if <not <<(_x) < (xmin)> or <((_x) + ((_i7) * (item ((costume [number v]) - (1)) of [_chwidth v]))) > (xmax)>>> then\n                _printChSl ((costume [number v]) - (1))\n            else\n                change [_x v] by ((_i7) * (item ((costume [number v]) - (1)) of [_chwidth v]))\n            end\n            change [_x v] by (cspace)\n        end\n        change [_i0 v] by (1)\n    end\nend\nswitch costume to ( _ v)\nif <not <(ul.height) = []>> then\n    set pen size to ((0.1) * (((ul.weight) + <(ul.weight) = []>) * (_i8)))\n    set [_i1 v] to ((x) + ((al.x) * (_width)))\n    if <(_i1) < (xmin)> then\n        set [_i1 v] to (xmin)\n    end\n    go to x: (((_i1) + ((_i9) * (ul.height))) - ((0.13) * (_i7))) y: ((y) + ((ul.height) * (_i8)))\n    pen down\n    set [_i2 v] to ((_x) - (cspace))\n    if <(_i2) > (xmax)> then\n        set [_i2 v] to (xmax)\n    end\n    set x to (((_i2) + ((_i9) * (ul.height))) + ((0.13) * (_i7)))\n    pen up\nend\n\ndefine _printWW (x) (firstx) (firstline) (y) (ymax) (ymin) (cspace) (lspace) (wt) (ul.height) (ul.weight) (ul.offset) <undl> (al.x) (al.y)\nswitch costume to ( _ v)\nset [_x v] to (x)\nset [_y v] to ((y) - (((al.y) - (1)) * (lspace)))\nset [_i0 v] to [1]\nset [_i1 v] to [1]\nif <(item (1) of [_ww2 v]) = [0]> then\n    change [_i0 v] by (1)\n    change [_i1 v] by (1)\n    if <(firstline) = [1]> then\n        change [_y v] by (lspace)\n    end\nend\nrepeat until <<not <(_y) > (ymax)>> or <(_i0) > (length of [_ww1 v])>>\n    change [_i1 v] by ((item (_i0) of [_ww2 v]) + (1))\n    change [_i0 v] by (1)\n    change [_y v] by (lspace)\nend\nset [_bq v] to ([ceiling v] of (((0.075) * ([sqrt v] of ((_i7) * (_i8)) )) + (0.5)) )\nset [_bq2 v] to ((4) * ((_bq) * (_bq)))\nrepeat until <<(_y) < (ymin)> or <(_i0) > (length of [_ww1 v])>>\n    if <(_i0) = (firstline)> then\n        set [_x v] to (firstx)\n    else\n        set [_x v] to ((x) + ((al.x) * (item (_i0) of [_ww1 v])))\n    end\n    set pen size to (wt)\n    if <(_i9) = [0]> then\n        repeat (item (_i0) of [_ww2 v])\n            _printCh (item (_i1) of [_ww0 v])\n            change [_x v] by (cspace)\n            change [_i1 v] by (1)\n        end\n    else\n        repeat (item (_i0) of [_ww2 v])\n            _printChSl (item (_i1) of [_ww0 v])\n            change [_x v] by (cspace)\n            change [_i1 v] by (1)\n        end\n    end\n    if <undl> then\n        set pen size to (ul.weight)\n        if <(_i0) = (firstline)> then\n            go to x: (((firstx) + (ul.offset)) - ((0.13) * (_i7))) y: ((_y) + (ul.height))\n        else\n            go to x: ((((x) + ((al.x) * (item (_i0) of [_ww1 v]))) + (ul.offset)) - ((0.13) * (_i7))) y: ((_y) + (ul.height))\n        end\n        pen down\n        set x to ((((_x) - (cspace)) + (ul.offset)) + ((0.13) * (_i7)))\n        pen up\n    end\n    change [_i0 v] by (1)\n    change [_i1 v] by (1)\n    change [_y v] by (lspace)\nend\nif <((length of [_ww1 v]) - <(item (1) of [_ww2 v]) = [0]>) > [0]> then\n    change [_y v] by ((-1) * (lspace))\nend\ndelete all of [_ww0 v]\ndelete all of [_ww1 v]\ndelete all of [_ww2 v]\n\ndefine _printCh (id)\nset [_i2 v] to (item (id) of [_chindex v])\nif <(item (_i2) of [_chdata1 v]) = [Q]> then\n    repeat (item (_i2) of [_chdata0 v])\n        change [_i2 v] by (1)\n        go to x: ((_x) + ((_i7) * (item (_i2) of [_chdata0 v]))) y: ((_y) + ((_i8) * (item (_i2) of [_chdata1 v])))\n        pen down\n        repeat (item (_i2) of [_chdata2 v])\n            change [_i2 v] by (1)\n            if <(item (_i2) of [_chdata0 v]) = [L]> then\n                go to x: ((x position) + ((_i7) * (item (_i2) of [_chdata1 v]))) y: ((y position) + ((_i8) * (item (_i2) of [_chdata2 v])))\n            else\n                set [_i3 v] to (((_i7) * (item (_i2) of [_chdata0 v])) / (_bq2))\n                set [_i4 v] to ((((_i7) * (item (_i2) of [_chdata1 v])) / (_bq)) + ((_i3) / (2)))\n                set [_i5 v] to (((_i8) * (item (_i2) of [_chdata2 v])) / (_bq2))\n                set [_i6 v] to ((((_i8) * (item (_i2) of [_chdata3 v])) / (_bq)) + ((_i5) / (2)))\n                repeat (_bq)\n                    go to x: ((x position) + (_i4)) y: ((y position) + (_i6))\n                    change [_i4 v] by (_i3)\n                    change [_i6 v] by (_i5)\n                    go to x: ((x position) + (_i4)) y: ((y position) + (_i6))\n                    change [_i4 v] by (_i3)\n                    change [_i6 v] by (_i5)\n                end\n            end\n        end\n        pen up\n    end\nelse\n    repeat (item (_i2) of [_chdata0 v])\n        change [_i2 v] by (1)\n        go to x: ((_x) + ((_i7) * (item (_i2) of [_chdata0 v]))) y: ((_y) + ((_i8) * (item (_i2) of [_chdata1 v])))\n        pen down\n        repeat (item (_i2) of [_chdata2 v])\n            change [_i2 v] by (1)\n            go to x: ((x position) + ((_i7) * (item (_i2) of [_chdata0 v]))) y: ((y position) + ((_i8) * (item (_i2) of [_chdata1 v])))\n        end\n        pen up\n    end\nend\nchange [_i2 v] by (1)\nchange pen size by (1)\nrepeat (item (_i2) of [_chdata0 v])\n    change [_i2 v] by (1)\n    go to x: ((_x) + ((_i7) * (item (_i2) of [_chdata0 v]))) y: ((_y) + ((_i8) * (item (_i2) of [_chdata1 v])))\n    pen down\n    pen up\nend\nchange pen size by (-1)\nchange [_x v] by ((_i7) * (item (id) of [_chwidth v]))\n\ndefine _printChSl (id)\nset [_i2 v] to (item (id) of [_chindex v])\nif <(item (_i2) of [_chdata1 v]) = [Q]> then\n    repeat (item (_i2) of [_chdata0 v])\n        change [_i2 v] by (1)\n        go to x: ((_x) + (((_i7) * (item (_i2) of [_chdata0 v])) + ((_i9) * (item (_i2) of [_chdata1 v])))) y: ((_y) + ((_i8) * (item (_i2) of [_chdata1 v])))\n        pen down\n        repeat (item (_i2) of [_chdata2 v])\n            change [_i2 v] by (1)\n            if <(item (_i2) of [_chdata0 v]) = [L]> then\n                go to x: ((x position) + (((_i7) * (item (_i2) of [_chdata1 v])) + ((_i9) * (item (_i2) of [_chdata2 v])))) y: ((y position) + ((_i8) * (item (_i2) of [_chdata2 v])))\n            else\n                set [_i3 v] to ((((_i7) * (item (_i2) of [_chdata0 v])) + ((_i9) * (item (_i2) of [_chdata2 v]))) / (_bq2))\n                set [_i4 v] to (((((_i7) * (item (_i2) of [_chdata1 v])) + ((_i9) * (item (_i2) of [_chdata3 v]))) / (_bq)) + ((_i3) / (2)))\n                set [_i5 v] to (((_i8) * (item (_i2) of [_chdata2 v])) / (_bq2))\n                set [_i6 v] to ((((_i8) * (item (_i2) of [_chdata3 v])) / (_bq)) + ((_i5) / (2)))\n                repeat (_bq)\n                    go to x: ((x position) + (_i4)) y: ((y position) + (_i6))\n                    change [_i4 v] by (_i3)\n                    change [_i6 v] by (_i5)\n                    go to x: ((x position) + (_i4)) y: ((y position) + (_i6))\n                    change [_i4 v] by (_i3)\n                    change [_i6 v] by (_i5)\n                end\n            end\n        end\n        pen up\n    end\nelse\n    repeat (item (_i2) of [_chdata0 v])\n        change [_i2 v] by (1)\n        go to x: ((_x) + (((_i7) * (item (_i2) of [_chdata0 v])) + ((_i9) * (item (_i2) of [_chdata1 v])))) y: ((_y) + ((_i8) * (item (_i2) of [_chdata1 v])))\n        pen down\n        repeat (item (_i2) of [_chdata2 v])\n            change [_i2 v] by (1)\n            go to x: ((x position) + (((_i7) * (item (_i2) of [_chdata0 v])) + ((_i9) * (item (_i2) of [_chdata1 v])))) y: ((y position) + ((_i8) * (item (_i2) of [_chdata1 v])))\n        end\n        pen up\n    end\nend\nchange [_i2 v] by (1)\nchange pen size by (1)\nrepeat (item (_i2) of [_chdata0 v])\n    change [_i2 v] by (1)\n    go to x: ((_x) + (((_i7) * (item (_i2) of [_chdata0 v])) + ((_i9) * (item (_i2) of [_chdata1 v])))) y: ((_y) + ((_i8) * (item (_i2) of [_chdata1 v])))\n    pen down\n    pen up\nend\nchange pen size by (-1)\nchange [_x v] by ((_i7) * (item (id) of [_chwidth v]))\n\nwhen I receive [begin v]\nset [_camspeed v] to [4]\nset [_viewfactor v] to [300]\nset [_nearplane v] to [0.1]\nset [_zoom v] to [100]\nInitialize Camera\nset pen size to (2)\n\nwhen flag clicked\nsetupbestscore\nset [mobile? v] to [0]\nLevel [0]\nInitialize Camera\nset [_activity# v] to [0]\n\ndefine loadingscreen\npen up\ngo to x: (0) y: (0)\nset pen color to (#d6d6d6)\nset pen size to (700)\npen down\npen up\nset pen color to (#000000)\nPrint | Pos [-90] [19] Size [30] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [Joining...]\nset pen color to (#ffffff)\nset pen size to (10)\ngo to x: (50) y: (-30)\npen down\ngo to x: (-100) y: (-30)\npen up\ngo to x: (50) y: (-40)\npen down\ngo to x: (-100) y: (-40)\npen up\ngo to x: (50) y: (-35)\npen down\ngo to x: (-100) y: (-35)\npen up\nset pen color to (#aaffba)\ngo to x: (-100) y: (-30)\npen down\nchange x by ((timer) * (45))\npen up\ngo to x: (-100) y: (-40)\npen down\nchange x by ((timer) * (45))\npen up\ngo to x: (-100) y: (-35)\npen down\nchange x by ((timer) * (45))\npen up\nset pen color to (#000000)\nPrint | Pos [60] [-40] Size [10] [] Bounds [] [] Space [1] Style [] [] Underline [] [] Align [] [] Text (join (round ((timer) * (31))) [%])\n\ndefine menüplayer\nset [backward v] to [0]\nset [forward v] to [0]\nset [jump v] to [1]\nset [left v] to [0]\nset [right v] to [0]\n=== Calculate Trig Values\nPhysics\nSet Camera Pos to ((payerX) + ((cosX) * ((sinY) * (_zoom)))) ((camY) + ((((playerY) + ((_zoom) * (() - (sinX)))) - (camY)) / (5))) ((playerZ) + ((cosX) * ((cosY) * (() - (_zoom)))))\nRender\nupdatepos\nchange [roty v] by (5)\nset [rotx v] to [-30]\n\ndefine Level (#)\nsetup\nset [level# v] to (#)\nif <(#) = [0]> then\n    Tower to [0] [0] [0] xl [20] yl [20] zl [20] | [1] |\n    Tower to [0] [-250] [0] xl [50] yl [400] zl [50] | [1] |\nend\nif <(#) = [1]> then\n    Tower to [0] [0] [0] xl [20] yl [20] zl [20] | [1] |\n    Tower to [0] [0] [0] xl [50] yl [20] zl [50] | [1] |\n    Tower to [0] [15] [35] xl [50] yl [50] zl [20] | [1] |\n    Tower to [0] [30] [70] xl [50] yl [20] zl [50] | [1] |\n    Tower to [50] [80] [140] xl [50] yl [20] zl [50] | [1] |\n    Tower to [-10] [100] [ 200] xl [50] yl [20] zl [50] | [1] |\n    Tower to [-45] [115] [200] xl [20] yl [50] zl [50] | [1] |\n    Tower to [-20] [115] [165] xl [70] yl [50] zl [20] | [1] |\n    Tower to [-140] [140] [180] xl [50] yl [20] zl [40] | [3] |\n    Tower to [-250] [140] [180] xl [20] yl [20] zl [40] | [3] |\n    Tower to [-300] [140] [180] xl [78] yl [20] zl [40] | [2] |\n    Tower to [-330] [140] [135] xl [50] yl [20] zl [40] | [1] |\n    Tower to [-370] [100] [110] xl [50] yl [40] zl [20] | [1] |\n    Tower to [-340] [60] [0] xl [50] yl [20] zl [50] | [1] |\n    Tower to [-340] [60] [-41] xl [50] yl [20] zl [30] | [2] |\n    Tower to [-340] [ -10] [-150] xl [50] yl [20] zl [100] | [1] |\n    Flag to [-340] [0] [-170]\nend\nif <(#) = [2]> then\n    Tower to [0] [0] [0] xl [20] yl [20] zl [20] | [1] |\n    Tower to [0] [0] [0] xl [25] yl [15] zl [25] | [1] |\n    Tower to [30] [0] [90] xl [25] yl [15] zl [25] | [1] |\n    Tower to [0] [0] [180] xl [25] yl [15] zl [25] | [3] |\n    Tower to [-30] [0] [90] xl [25] yl [15] zl [25] | [2] |\n    Tower to [0] [100] [205] xl [25] yl [15] zl [40] | [1] |\n    Tower to [0] [112.5] [237.5] xl [25] yl [40] zl [25] | [2] |\n    Tower to [0] [100] [270] xl [25] yl [15] zl [40] | [1] |\n    Tower to [0] [112.5] [302.5] xl [25] yl [40] zl [25] | [2] |\n    Tower to [0] [100] [335] xl [25] yl [15] zl [40] | [1] |\n    Tower to [0] [100] [380] xl [40] yl [30] zl [30] | [2] |\n    Tower to [0] [100] [410] xl [40] yl [30] zl [30] | [1] |\n    Tower to [-100] [100] [450] xl [30] yl [20] zl [30] | [1] |\n    Tower to [-200] [50] [450] xl [30] yl [30] zl [30] | [3] |\n    Tower to [-280] [150] [450] xl [70] yl [20] zl [30] | [1] |\n    Flag to [-300] [160] [450]\nend\nif <(#) = [3]> then\n    Tower to [0] [0] [0] xl [20] yl [20] zl [20] | [1] |\n    Tower to [0] [0] [0] xl [40] yl [20] zl [60] | [1] |\n    Tower to [0] [0] [60] xl [40] yl [20] zl [60] | [2] |\n    Tower to [0] [15] [100] xl [40] yl [50] zl [20] | [1] |\n    Tower to [0] [30] [130] xl [40] yl [20] zl [40] | [3] |\n    Tower to [-80] [60] [210] xl [40] yl [20] zl [40] | [1] |\n    Tower to [-150] [60] [210] xl [40] yl [20] zl [40] | [2] |\n    Tower to [-150] [70] [210] xl [10] yl [40] zl [10] | [1] |\n    Tower to [-150] [95] [210] xl [10] yl [10] zl [10] | [3] |\n    Tower to [-180] [200] [210] xl [30] yl [10] zl [30] | [1] |\n    Tower to [-210] [200] [210] xl [30] yl [10] zl [30] | [2] |\n    Tower to [-250] [200] [210] xl [50] yl [10] zl [30] | [1] |\n    Flag to [-260] [205] [210]\nend\nif <(#) = [4]> then\n    Tower to [0] [0] [0] xl [20] yl [20] zl [20] | [1] |\n    Tower to [0] [-10] [0] xl [5] yl [40] zl [5] | [1] |\n    Tower to [30] [-10] [50] xl [5] yl [40] zl [5] | [1] |\n    Tower to [-5] [-10] [100] xl [5] yl [40] zl [5] | [1] |\n    Tower to [0] [-10] [150] xl [5] yl [40] zl [5] | [1] |\n    Tower to [30] [-10] [200] xl [5] yl [40] zl [5] | [1] |\n    Tower to [10] [-10] [250] xl [5] yl [40] zl [5] | [1] |\n    Tower to [0] [-10] [300] xl [50] yl [20] zl [50] | [1] |\n    Tower to [0] [-15] [350] xl [50] yl [20] zl [50] | [2] |\n    Tower to [0] [-10] [400] xl [50] yl [20] zl [50] | [3] |\n    Tower to [-100] [45] [400] xl [50] yl [20] zl [50] | [3] |\n    Tower to [-200] [100] [400] xl [100] yl [20] zl [50] | [1] |\n    Flag to [-220] [110] [400]\nend\nif <(#) = [5]> then\n    Tower to [0] [0] [0] xl [20] yl [20] zl [20] | [1] |\n    Tower to [0] [-10] [0] xl [30] yl [20] zl [30] | [1] |\n    Tower to [0] [40] [50] xl [30] yl [20] zl [30] | [1] |\n    Tower to [0] [90] [100] xl [30] yl [20] zl [30] | [1] |\n    Tower to [0] [140] [150] xl [30] yl [20] zl [30] | [1] |\n    Tower to [0] [190] [200] xl [30] yl [20] zl [30] | [1] |\n    Tower to [0] [240] [250] xl [30] yl [20] zl [30] | [1] |\n    Tower to [0] [290] [300] xl [30] yl [20] zl [30] | [1] |\n    Tower to [0] [290] [330] xl [30] yl [20] zl [30] | [2] |\n    Tower to [0] [290] [360] xl [30] yl [20] zl [30] | [1] |\n    Tower to [0] [290] [420] xl [30] yl [20] zl [30] | [3] |\n    Tower to [-50] [390] [420] xl [30] yl [20] zl [30] | [3] |\n    Tower to [-50] [490] [470] xl [30] yl [20] zl [30] | [3] |\n    Tower to [-100] [550] [470] xl [30] yl [20] zl [30] | [1] |\n    Tower to [-135] [550] [470] xl [10] yl [20] zl [30] | [2] |\n    Tower to [-200] [550] [470] xl [100] yl [20] zl [30] | [1] |\n    Flag to [-220] [560] [470]\nend\n\ndefine menübuttons\nset pen color to (#adadad)\nCheck [-220] [55] [50] [20]\nif <(_check?) = [1]> then\n    replace item (1) of [buttons v] with ((item (1) of [buttons v]) + (((1) - (item (1) of [buttons v])) / (10)))\n    if <mouse down?> then\n        replace item (1) of [buttonspressed v] with [1]\n    else\n        if <(item (1) of [buttonspressed v]) = [1]> then\n            set [_activity# v] to [4]\n            replace item (1) of [buttonspressed v] with [0]\n            set [levelscroll v] to [0]\n        else\n            replace item (1) of [buttonspressed v] with [0]\n        end\n    end\nelse\n    replace item (1) of [buttons v] with ((item (1) of [buttons v]) + (((0) - (item (1) of [buttons v])) / (10)))\n    replace item (1) of [buttonspressed v] with [0]\nend\nif <(item (1) of [buttonspressed v]) = [1]> then\n    Print | Pos [-220] [50] Size [20] [] Bounds [] [] Space ((1) + ((item (1) of [buttons v]) * (0.5))) Style [1] [1] Underline [-0.1] [] Align [] [] Text [Play]\nelse\n    Print | Pos [-220] [50] Size [20] [] Bounds [] [] Space ((1) + ((item (1) of [buttons v]) * (0.5))) Style [1] [1] Underline [] [] Align [] [] Text [Play]\nend\nCheck [-220] [155] [0] [20]\nif <(_check?) = [1]> then\n    replace item (2) of [buttons v] with ((item (2) of [buttons v]) + (((1) - (item (2) of [buttons v])) / (10)))\n    if <mouse down?> then\n        replace item (2) of [buttonspressed v] with [1]\n    else\n        if <(item (2) of [buttonspressed v]) = [1]> then\n            set [_activity# v] to [5]\n            replace item (2) of [buttonspressed v] with [0]\n        else\n            replace item (2) of [buttonspressed v] with [0]\n        end\n    end\nelse\n    replace item (2) of [buttons v] with ((item (2) of [buttons v]) + (((0) - (item (2) of [buttons v])) / (10)))\n    replace item (2) of [buttonspressed v] with [0]\nend\nif <(item (2) of [buttonspressed v]) = [1]> then\n    Print | Pos [-220] [0] Size [20] [] Bounds [] [] Space ((1) + ((item (2) of [buttons v]) * (0.5))) Style [1] [1] Underline [-0.1] [] Align [] [] Text [Instructions]\nelse\n    Print | Pos [-220] [0] Size [20] [] Bounds [] [] Space ((1) + ((item (2) of [buttons v]) * (0.5))) Style [1] [1] Underline [] [] Align [] [] Text [Instructions]\nend\nPrint | Pos [-220] [-50] Size [20] [] Bounds [] [] Space [] Style [1] [1] Underline [] [] Align [] [] Text [Mobile]\nif <(mobile?) = [0]> then\n    set pen color to (#930000)\nelse\n    set pen color to (#429300)\nend\nset pen size to (25)\ngo to x: (-120) y: (-40)\npen down\ngo to x: (-100) y: (-40)\npen up\nset pen color to (#000000)\nset pen size to (20)\nif <(mobile?) = [0]> then\n    go to x: (-120) y: (-40)\n    pen down\n    pen up\nelse\n    go to x: (-100) y: (-40)\n    pen down\n    pen up\nend\nCheck [-135] [50] [-55] [30]\nif <(_check?) = [1]> then\n    if <mouse down?> then\n        replace item (5) of [buttonspressed v] with [1]\n    else\n        if <(item (5) of [buttonspressed v]) = [1]> then\n            set [mobile? v] to ((1) - (mobile?))\n            replace item (5) of [buttonspressed v] with [0]\n        else\n            replace item (5) of [buttonspressed v] with [0]\n        end\n    end\nelse\n    replace item (5) of [buttonspressed v] with [0]\nend\n\ndefine Check (x) (xl) (y) (yl)\nset [_check? v] to (<<<((y) + (yl)) > (mouse y)> and <(y) < (mouse y)>> and <<(mouse x) > (x)> and <(mouse x) < ((x) + (xl))>>> * (1))\n\ndefine game full\nset pen color to (#adadad)\nPrint | Pos [-100] [40] Size [30] [] Bounds [] [] Space [] Style [1] [5] Underline [] [] Align [] [] Text [Game Full :\(]\nPrint | Pos [-100] [0] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [Other players won`t see you]\nPrint | Pos [-40] [-20] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [You`ll see them]\nset pen color to (#adadad)\nset pen size to (40)\npen up\ngo to x: (20) y: (-90)\npen down\ngo to x: (80) y: (-90)\npen up\ngo to x: (20) y: (-100)\npen down\ngo to x: (80) y: (-100)\nCheck [0] [100] [-120] [50]\nif <(_check?) = [0]> then\n    set pen color to (#f5f5f5)\n    replace item (3) of [buttonspressed v] with [0]\nelse\n    set pen color to (#d6d6d6)\n    if <mouse down?> then\n        replace item (3) of [buttonspressed v] with [1]\n    else\n        if <(item (3) of [buttonspressed v]) = [1]> then\n            replace item (3) of [buttonspressed v] with [0]\n            set [_activity# v] to [2]\n        else\n            replace item (3) of [buttonspressed v] with [0]\n        end\n    end\nend\nset pen size to (33)\npen up\ngo to x: (20) y: (-90)\npen down\ngo to x: (80) y: (-90)\npen up\ngo to x: (20) y: (-100)\npen down\ngo to x: (80) y: (-100)\nset pen color to (#adadad)\nPrint | Pos [20] [-105] Size [20] [] Bounds [] [] Space [1.55] Style [] [] Underline [] [] Align [] [] Text [Play]\nhomebutton1\n\ndefine homebutton1\nset pen color to (#adadad)\nset pen size to (40)\npen up\ngo to x: (-30) y: (-90)\npen down\ngo to x: (-40) y: (-90)\npen up\ngo to x: (-30) y: (-100)\npen down\ngo to x: (-40) y: (-100)\nCheck [-60] [50] [-120] [50]\nif <(_check?) = [0]> then\n    set pen color to (#f5f5f5)\n    replace item (4) of [buttonspressed v] with [0]\nelse\n    set pen color to (#d6d6d6)\n    if <mouse down?> then\n        replace item (4) of [buttonspressed v] with [1]\n    else\n        if <(item (4) of [buttonspressed v]) = [1]> then\n            replace item (4) of [buttonspressed v] with [0]\n            set [_activity# v] to [0]\n            Level [0]\n            Initialize Camera\n        else\n            replace item (4) of [buttonspressed v] with [0]\n        end\n    end\nend\nset pen size to (33)\npen up\ngo to x: (-30) y: (-90)\npen down\ngo to x: (-40) y: (-90)\npen up\ngo to x: (-30) y: (-100)\npen down\ngo to x: (-40) y: (-100)\nset pen color to (#adadad)\nset pen size to (6)\npen up\ngo to x: (-45) y: (-95)\npen down\ngo to x: (-25) y: (-95)\ngo to x: (-25) y: (-108)\npen up\ngo to x: (-37) y: (-108)\npen down\ngo to x: (-45) y: (-108)\ngo to x: (-45) y: (-95)\ngo to x: (-37) y: (-108)\ngo to x: (-37) y: (-95)\npen up\ngo to x: (-47) y: (-87)\npen down\ngo to x: (-35) y: (-80)\ngo to x: (-23) y: (-87)\ngo to x: (-47) y: (-87)\ngo to x: (-35) y: (-85)\n\ndefine instructions\nPrint | Pos [-80] [120] Size [] [] Bounds [] [] Space [] Style [] [] Underline [-0.2] [] Align [] [] Text [Computer/Laptop]\nPrint | Pos [-230] [100] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text []\nPrint | Pos [-230] [60] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [\[WASD\] to move]\nPrint | Pos [-230] [40] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [\[arrow keys\] to look around]\nPrint | Pos [-230] [20] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [\[Space\] to jump]\nPrint | Pos [-230] [0] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [\[R\] to reset the level]\nPrint | Pos [-80] [-60] Size [] [] Bounds [] [] Space [] Style [] [] Underline [-0.2] [] Align [] [] Text [Mobile]\nPrint | Pos [-230] [-100] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [\[left joystick\] to move]\nPrint | Pos [-230] [-120] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [\[wipe\] to look around]\nPrint | Pos [-230] [-140] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [\[rigth button\] to jump]\n\ndefine level\nset [_# v] to [0]\nrepeat (5)\n    change [_# v] by (1)\n    set pen color to (#000000)\n    set pen (transparency v) to (100)\n    set pen size to (1)\n    point in direction (0)\n    repeat (10)\n        pen up\n        go to x: ((-170) + (direction)) y: (180)\n        pen down\n        go to x: ((-170) + (direction)) y: (-180)\n        change pen (transparency v) by (-0.5)\n        turn right (1) degrees\n    end\n    set pen (transparency v) to (95)\n    set pen size to (1)\n    point in direction (0)\n    repeat (10)\n        pen up\n        go to x: ((210) + (direction)) y: (180)\n        pen down\n        go to x: ((210) + (direction)) y: (-180)\n        change pen (transparency v) by (0.5)\n        turn right (1) degrees\n    end\n    go to x: (-70) y: (((90) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    set pen color to (#adadad)\n    set pen size to (80)\n    go to x: (110) y: (((90) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    go to x: (110) y: (((50) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    go to x: (-70) y: (((50) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    go to x: (-70) y: (((90) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    go to x: (-70) y: (((90) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    Check [-110] [260] (((10) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5))) [120]\n    if <(_check?) = [1]> then\n        if <mouse down?> then\n            replace item ((5) + (_#)) of [buttonspressed v] with [1]\n        else\n            if <(item ((5) + (_#)) of [buttonspressed v]) = [1]> then\n                replace item ((5) + (_#)) of [buttonspressed v] with [0]\n                Level (_#)\n                broadcast (join v)\n            else\n                replace item ((5) + (_#)) of [buttonspressed v] with [0]\n            end\n        end\n    else\n        replace item ((5) + (_#)) of [buttonspressed v] with [0]\n    end\n    set pen color to (#f5f5f5)\n    set pen (brightness v) to ((100) - ((_check?) * (10)))\n    set pen size to (70)\n    go to x: (110) y: (((90) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    go to x: (110) y: (((50) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    go to x: (-70) y: (((50) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    go to x: (-70) y: (((90) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    pen up\n    set pen color to (#adadad)\n    Print | Pos [-80] (((-3) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5))) Size [8] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text (join [Your best time:   ] (item (_#) of [bestscore v]))\n    set pen color to (#e8bf86)\n    go to x: (-70) y: (((-15) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    set pen size to (15)\n    pen down\n    pen up\n    set pen color to (#e6e886)\n    go to x: (-70) y: (((-15) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5)))\n    set pen size to (10)\n    pen down\n    pen up\n    set pen color to (#adadad)\n    Print | Pos [-60] (((-19) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5))) Size [8] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text (join [Highscore: ] (join (join (item (_#) of [☁ highscores v]) [ by: ]) (item (_#) of [☁ highscore by v])))\n    Print | Pos [-70] (((50) - ((leveldistance) * ((_#) - (1)))) - ((levelscroll) * (2.5))) Size [40] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text (join [Level ] (_#))\n    set pen color to (#d1d1d1)\n    pen up\n    set pen size to (40)\n    go to x: (-203) y: ((levelscroll) + (80))\n    pen down\n    change y by (-20)\n    pen up\n    Check [-240] [80] [-200] [400]\n    if <<mouse down?> and <(_check?) = [1]>> then\n        set [levelscroll v] to ((-80) + (mouse y))\n        if <(levelscroll) > [0]> then\n            set [levelscroll v] to [0]\n        end\n        if <(levelscroll) < [-215]> then\n            set [levelscroll v] to [-215]\n        end\n    end\nend\n\ndefine homebutton2\nset pen color to (#adadad)\nset pen size to (40)\npen up\ngo to x: (-200) y: (140)\npen down\ngo to x: (-210) y: (140)\npen up\ngo to x: (-200) y: (130)\npen down\ngo to x: (-210) y: (130)\nCheck [-230] [50] [110] [50]\nif <(_check?) = [0]> then\n    set pen color to (#f5f5f5)\n    replace item (4) of [buttonspressed v] with [0]\nelse\n    set pen color to (#d6d6d6)\n    if <mouse down?> then\n        replace item (4) of [buttonspressed v] with [1]\n    else\n        if <(item (4) of [buttonspressed v]) = [1]> then\n            replace item (4) of [buttonspressed v] with [0]\n            set [_activity# v] to [0]\n            Level [0]\n            Initialize Camera\n        else\n            replace item (4) of [buttonspressed v] with [0]\n        end\n    end\nend\nset pen size to (33)\npen up\ngo to x: (-200) y: (140)\npen down\ngo to x: (-210) y: (140)\npen up\ngo to x: (-200) y: (130)\npen down\ngo to x: (-210) y: (130)\nset pen color to (#adadad)\nset pen size to (6)\npen up\ngo to x: (-215) y: (135)\npen down\ngo to x: (-195) y: (135)\ngo to x: (-195) y: (122)\npen up\ngo to x: (-207) y: (122)\npen down\ngo to x: (-215) y: (122)\ngo to x: (-215) y: (135)\ngo to x: (-207) y: (122)\ngo to x: (-207) y: (135)\npen up\ngo to x: (-217) y: (143)\npen down\ngo to x: (-205) y: (150)\ngo to x: (-193) y: (143)\ngo to x: (-217) y: (143)\ngo to x: (-205) y: (150)\n\ndefine wipe\nif <<<(1) = [0]> and <(2) = [0]>> and <<<<not <key (up arrow v) pressed?>> and <not <key (left arrow v) pressed?>>> and <<not <key (right arrow v) pressed?>> and <not <key (down arrow v) pressed?>>>> and <<mouse down?> and <<(1) = [0]> and <<(2) = [0]> and <(item (4) of [buttonspressed v]) = [0]>>>>>> then\n    if <(3) = [0]> then\n        set [lastx v] to (mouse x)\n        set [lasty v] to (mouse y)\n    end\n    if <(3) = [1]> then\n        set [srotatex v] to ((() - ((lasty) - (mouse y))) / (4))\n        set [srotatey v] to (((lastx) - (mouse x)) / (4))\n        set [lastx v] to (mouse x)\n        set [lasty v] to (mouse y)\n    end\n    set [3 v] to [1]\nelse\n    set [3 v] to [0]\nend\n\ndefine setupbestscore\ndelete all of [bestscore v]\nrepeat (5)\n    add [-] to [bestscore v]\nend\n\nwhen [up arrow v] key pressed\nif <<not <(levelscroll) > [0]>> and <[4] = (_activity#)>> then\n    change [levelscroll v] by (20)\nend\n\nwhen [down arrow v] key pressed\nif <<(levelscroll) > [-215]> and <[4] = (_activity#)>> then\n    change [levelscroll v] by (-20)\nend\n\ndefine Flag to (x) (y) (z)\nTower to (x) ((y) + (15)) (z) xl [10] yl [30] zl [10] | [4] |\nTower to ((x) - (15)) ((y) + (22.5)) (z) xl [20] yl [15] zl [10] | [4] |\n\nwhen I receive [begin v]\nset [moved? v] to [0]\n\nwhen I receive [flag v]\nset [_activity# v] to [6]\n\nwhen I receive [flag v]\nreplace item (2) of [done v] with [0]\nif <<[-] = (item (level#) of [☁ highscores v])> or <(item (level#) of [☁ highscores v]) > (_timer)>> then\n    broadcast (set highscore v)\n    replace item (2) of [done v] with [1]\nend\n\nwhen [r v] key pressed\nInitialize Camera\nset [moved? v] to [0]\nset [_timer v] to [0]\n\ndefine Shadow\n\nwhen I receive [flag v]\nreplace item (1) of [done v] with [0]\nif <<(item (level#) of [bestscore v]) > (_timer)> or <(item (level#) of [bestscore v]) = [-]>> then\n    replace item (level#) of [bestscore v] with (_timer)\n    replace item (1) of [done v] with [1]\nend\n\ndefine done\nset pen color to (#adadad)\nPrint | Pos [-50] [40] Size [30] [] Bounds [] [] Space [] Style [1] [5] Underline [] [] Align [] [] Text [Done!]\nif <(item (1) of [done v]) = [1]> then\n    Print | Pos [-100] [0] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [Your best score until now :O]\nelse\n    Print | Pos [-150] [0] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [So close to your best score. Try again!]\nend\nif <(item (2) of [done v]) = [1]> then\n    Print | Pos [-70] [-20] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [You did the highscore!]\nelse\n    Print | Pos [-155] [-20] Size [] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [Maybe next time you`ll do the highscore!]\nend\nset pen color to (#adadad)\nset pen size to (40)\npen up\ngo to x: (20) y: (-90)\npen down\ngo to x: (80) y: (-90)\npen up\ngo to x: (20) y: (-100)\npen down\ngo to x: (80) y: (-100)\nCheck [0] [100] [-120] [50]\nif <[5] > (level#)> then\n    if <(_check?) = [0]> then\n        set pen color to (#f5f5f5)\n        replace item (3) of [buttonspressed v] with [0]\n    else\n        set pen color to (#d6d6d6)\n        if <mouse down?> then\n            replace item (3) of [buttonspressed v] with [1]\n        else\n            if <(item (3) of [buttonspressed v]) = [1]> then\n                replace item (3) of [buttonspressed v] with [0]\n                change [level# v] by (1)\n                broadcast (join v)\n            else\n                replace item (3) of [buttonspressed v] with [0]\n            end\n        end\n    end\nelse\n    set pen color to (#cccccc)\nend\nset pen size to (33)\npen up\ngo to x: (20) y: (-90)\npen down\ngo to x: (80) y: (-90)\npen up\ngo to x: (20) y: (-100)\npen down\ngo to x: (80) y: (-100)\nset pen color to (#adadad)\nPrint | Pos [20] [-105] Size [20] [] Bounds [] [] Space [1.55] Style [] [] Underline [] [] Align [] [] Text [Next]\nhomebutton1\n\nwhen I receive [join v]\nLevel (level#)\n\ndefine like+fave pls :3\nset pen color to (#599643)\nPrint | Pos [-235] [165] Size [10] [] Bounds [] [] Space [] Style [] [] Underline [] [] Align [] [] Text [Please like and/or fave :3 That would make me really, really happy :\)]\nPrint | Pos [-235] [150] Size [10] [] Bounds [] [] Space [0.8] Style [] [] Underline [] [] Align [] [] Text [And you could say that you made somebody really, really happy :D xD]\nset pen (transparency v) to (80)\nset pen size to (1)\ngo to x: (-240) y: (140)\nrepeat (20)\n    pen down\n    change x by (480)\n    pen up\n    change x by (-480)\n    change y by (-0.5)\n    change pen (transparency v) by (1)\nend\n\nwhen I receive [tick v]\nerase all\nGame\n\n@☁ Cloud 1\n\ndefine write (val) to encoded\nset [letter # v] to [1]\nrepeat (length of (val))\n    set [encoded v] to (join (encoded) (item # of (letter (letter #) of (val)) in [code v]))\n    change [letter # v] by (1)\nend\nset [encoded v] to (join (encoded) [00])\n\nwhen I receive [begin v]\nreset timer\nforever\n    send cloud data\n    if <not <(_activity#) = [2]>> then\n        set [my player # v] to [0]\n        stop [this script v]\n    end\nend\n\ndefine set cloud # (player) to (value)\nif <(player) = [1]> then\n    set [☁ player1 v] to (value)\nelse\n    if <(player) = [2]> then\n        set [☁ player2 v] to (value)\n    else\n        if <(player) = [3]> then\n            set [☁ player3 v] to (value)\n        else\n            if <(player) = [4]> then\n                set [☁ player4 v] to (value)\n            else\n                if <(player) = [5]> then\n                    set [☁ player5 v] to (value)\n                else\n                    if <(player) = [6]> then\n                        set [☁ player6 v] to (value)\n                    else\n                        if <(player) = [7]> then\n                            set [☁ player7 v] to (value)\n                        else\n                            if <(player) = [8]> then\n                                set [☁ player8 v] to (value)\n                            else\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine send cloud data\nif <(MY PLAYER #) < [1]> then\n    stop [this script v]\nend\nadd (payerX) to [buffer v]\nadd (playerY) to [buffer v]\nadd (playerZ) to [buffer v]\nchange [cloud timer v] by (1)\nif <(cloud timer) < [3]> then\n    stop [this script v]\nend\nset [cloud timer v] to [0]\nset [encoded v] to []\nwrite (username) to encoded\nwrite (round ((timer) * (10))) to encoded\nwrite (level#) to encoded\nrepeat (length of [buffer v])\n    write (item (1) of [buffer v]) to encoded\n    delete (1) of [buffer v]\nend\nset cloud # (MY PLAYER #) to (encoded)\n\ndefine setup code\nset [letter # v] to [0]\ndelete all of [code v]\nrepeat (length of [         abcdefghijklmnopqrstuvwxyz0123456789+-. _\[\]])\n    change [letter # v] by (1)\n    add (letter (letter #) of [         abcdefghijklmnopqrstuvwxyz0123456789+-. _\[\]]) to [code v]\nend\n\nwhen I receive [join v]\nset [_activity# v] to [1]\nset [max players v] to [8]\nset [my player # v] to [0]\ndelete all of [buffer v]\nreset timer\nbroadcast (setup - opponents v) and wait\nswitch backdrop to (joining v)\nhide\nbroadcast (join game v) and wait\nif <(MY PLAYER #) > [0]> then\n    set [_activity# v] to [2]\nelse\n    set [_activity# v] to [3]\nend\nbroadcast (begin v)\n\nwhen flag clicked\nsetup code\n\n@☁ Cloud 2\n\ndefine begin decode of (encoded)\nset [encoded v] to (encoded)\nset [letter # v] to [1]\n\ndefine value = read from encoded\nset [value v] to []\nforever\n    set [idx v] to (join (letter (letter #) of (encoded)) (letter ((letter #) + (1)) of (encoded)))\n    change [letter # v] by (2)\n    if <(idx) < [1]> then\n        stop [this script v]\n    end\n    set [value v] to (join (value) (item (idx) of [code v]))\nend\n\ndefine setup players\ndelete all of [buffer v]\nset [color v] effect to (90)\nhide\nset [offline v] to [100]\nset [player # v] to [1]\nrepeat ((MAX PLAYERS) - (1))\n    create clone of (_myself_ v)\n    change [player # v] by (1)\nend\n\nwhen I receive [begin v]\nforever\n    if <(MY PLAYER #) = (player #)> then\n        set [offline v] to [101]\n        replace item (player #) of [☁ online? v] with (offline)\n    else\n        tick\n    end\n    if <not <(_activity#) = [2]>> then\n        stop [this script v]\n    end\nend\n\ndefine value = cloud # (player)\nif <(player) = [1]> then\n    set [value v] to (☁ player1)\nelse\n    if <(player) = [2]> then\n        set [value v] to (☁ player2)\n    else\n        if <(player) = [3]> then\n            set [value v] to (☁ player3)\n        else\n            if <(player) = [4]> then\n                set [value v] to (☁ player4)\n            else\n                if <(player) = [5]> then\n                    set [value v] to (☁ player5)\n                else\n                    if <(player) = [6]> then\n                        set [value v] to (☁ player6)\n                    else\n                        if <(player) = [7]> then\n                            set [value v] to (☁ player7)\n                        else\n                            set [value v] to (☁ player8)\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen I receive [setup - opponents v]\nsetup players\n\ndefine tick\nvalue = cloud # (player #)\nif <(join [A] (value)) = (last value)> then\n    set [last value v] to (join [A] (value))\n    if <not <(offline) > [101]>> then\n        change [offline v] by (1)\n    end\n    replace item (player #) of [☁ online? v] with (offline)\nelse\n    set [last value v] to (join [A] (value))\n    replace item (player #) of [☁ online? v] with (offline)\n    set [offline v] to [0]\n    begin decode of (value)\n    value = read from encoded\n    replace item (player #) of [☁ username v] with (value)\n    value = read from encoded\n    value = read from encoded\n    replace item (player #) of [☁ level v] with (value)\n    value = read from encoded\n    repeat until <(value) = []>\n        add (value) to [buffer v]\n        value = read from encoded\n    end\nend\nif <(length of [buffer v]) > [0]> then\n    replace item (player #) of [☁ x v] with (item (1) of [buffer v])\n    delete (1) of [buffer v]\n    replace item (player #) of [☁ y v] with (item (1) of [buffer v])\n    delete (1) of [buffer v]\n    replace item (player #) of [☁ z v] with (item (1) of [buffer v])\n    delete (1) of [buffer v]\nend\n\nwhen I receive [join game v]\nvalue = cloud # (player #)\nset [last value v] to (join [A] (value))\nwait (3) seconds\nvalue = cloud # (player #)\nif <(join [A] (value)) = (last value)> then\n    set [my player # v] to (player #)\nend\n\ndefine delete\ndelete all of [☁ username v]\ndelete all of [☁ x v]\ndelete all of [☁ y v]\ndelete all of [☁ z v]\ndelete all of [☁ online? v]\ndelete all of [☁ level v]\nrepeat (8)\n    add [0] to [☁ level v]\n    add [0] to [☁ username v]\n    add [0] to [☁ x v]\n    add [0] to [☁ y v]\n    add [0] to [☁ z v]\n    add [0] to [☁ online? v]\nend\n\n@☁ Cloud 3\n\ndefine setcloud\nset [encoded v] to []\nwrite (item (1) of [☁ highscores v]) to encoded\nwrite (item (1) of [☁ highscore by v]) to encoded\nwrite (item (2) of [☁ highscores v]) to encoded\nwrite (item (2) of [☁ highscore by v]) to encoded\nwrite (item (3) of [☁ highscores v]) to encoded\nwrite (item (3) of [☁ highscore by v]) to encoded\nset [☁ highscore 1,2,3 . v] to (encoded)\nset [encoded v] to []\nwrite (item (4) of [☁ highscores v]) to encoded\nwrite (item (4) of [☁ highscore by v]) to encoded\nwrite (item (5) of [☁ highscores v]) to encoded\nwrite (item (5) of [☁ highscore by v]) to encoded\nwait (0.1) seconds\nset [☁ highscore 4,5 . v] to (encoded)\n\ndefine write (val) to encoded\nset [letter # v] to [1]\nrepeat (length of (val))\n    set [encoded v] to (join (encoded) (item # of (letter (letter #) of (val)) in [code v]))\n    change [letter # v] by (1)\nend\nset [encoded v] to (join (encoded) [00])\n\ndefine getcloud\ndelete all of [☁ highscores v]\ndelete all of [☁ highscore by v]\nset [letter # v] to [1]\nset [__# v] to [1]\nset [encoded v] to (☁ highscore 1,2,3 .)\nrepeat (3)\n    value = read from encoded\n    add (value) to [☁ highscores v]\n    value = read from encoded\n    add (value) to [☁ highscore by v]\nend\nset [letter # v] to [1]\nset [encoded v] to (☁ highscore 4,5 .)\nrepeat (2)\n    value = read from encoded\n    add (value) to [☁ highscores v]\n    value = read from encoded\n    add (value) to [☁ highscore by v]\nend\n\ndefine value = read from encoded\nset [value v] to []\nforever\n    set [idx v] to (join (letter (letter #) of (encoded)) (letter ((letter #) + (1)) of (encoded)))\n    change [letter # v] by (2)\n    if <(idx) < [1]> then\n        stop [this script v]\n    end\n    set [value v] to (join (value) (item (idx) of [code v]))\nend\n\ndefine set (#) to (time) (username)\ngetcloud\nreplace item (#) of [☁ highscores v] with (time)\nreplace item (#) of [☁ highscore by v] with (username)\nsetcloud\ngetcloud\n\nwhen I receive [highscores v]\ngetcloud\n\nwhen I receive [set highscore v]\ngetcloud\nset (level#) to (_timer) (username)\n\n@thumbnail\n\nwhen flag clicked\nset [ghost v] effect to (100)\ngo to [front v] layer\n\n@Sprite1\n\nwhen flag clicked\ndelete all of [fps v]\nrepeat (10)\n    add [0] to [fps v]\nend\nwait (0.1) seconds\nhide\nset [fps v] to [0]\nrepeat until <(fps) = [du]>\n    set [__timer v] to (timer)\n    broadcast (tick v) and wait\n    set [fps v] to ((1) / ((timer) - (__timer)))\n    delete (1) of [fps v]\n    add (fps) to [fps v]\n    check\nend\nset x to (0)\nshow\ngo to [front v] layer\nstop [all v]\n\ndefine check\nset [fps v] to [0]\nset x to (0)\nrepeat (10)\n    change x by (1)\n    if <(item (x position) of [fps v]) > [40]> then\n        change [fps v] by (1)\n    end\n    if <(item (x position) of [fps v]) = [infinity]> then\n        change [fps v] by (4)\n    end\nend\nif <(fps) = [10]> then\n    set [fps v] to [du]\nend\n\n
⭐ [☁ Multiplayer 3D Platformer | 100% pen] ⭐  \n\n★ Pls like, fave and follow, to reward my months of hard work :D (4270 blocks)\n\n★ If you like it, propose it here\nhttps://scratch.mit.edu/studios/28715018/comments/\n\n★ Instructions in the game :)\n\n★ You don’t need to but if you wanna play here: \nhttps://turbowarp.org/625696052\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nif you read this you`ve to follow me and subscribe to my yt: https://youtube.com/channel/UCBw3X7rEXQooCQkPFzQYAcQ