Cubo's Adventure! A 3D Platformer #Cubo #Cube

Instructions: Use Turbowarp please:\n\nhttps://turbowarp.org/781128412?stuck&hqpen&offscreen&size=640x360\n\nCONTROLS:\nWASD to move\nSPACE to jump\nARROW KEYS or Mouse to rotate the camera\nI/O or MOUSE SCROLL to zoom in/out\nR to reset to your last checkpoint\nE to toggle wireframe mode\n\nCUBO'S ADVENTURE!\n\nCubo has decided to take a hike to the tallest mountain near the sky islands he calls home! Navigate Cubo through the dangerous obstacles and reach the summit!\n\nCredits:\nPls ♥️ & ⭐,  that would mean A LOT to me!\n\nThis took a whole month to make. Probably the longest and hardest project of which I have ever shared. I hope you guys enjoy!\n\n@asdf1546\nMost of the code, including integration of scripts\n\n@TheGreenFlash\n3D projection engine\n\n@TheLogFather\nTriangle filler\n\nAnd you, for taking the time to view my game! I hope you enjoy this game!

@Stage\n\nwhen flag clicked\nset [cx v] to [0]\nset [cy v] to [200]\nset [cz v] to [0]\nset [godmode? v] to [0]\nset [level v] to [1]\n\nwhen I receive [reset v]\nbroadcast (Startup / clone v) and wait\nbroadcast (Begin v)\nshow variable [fps v]\nforever\n    if <key (e v) pressed?> then\n        set [x? v] to (((X?) + (1)) mod (2))\n        wait until <not <key (e v) pressed?>>\n    end\n    if <<key (g v) pressed?> and <(username) = [asdf1546]>> then\n        set [godmode? v] to (((GODMODE?) + (1)) mod (2))\n        wait until <not <key (g v) pressed?>>\n    end\nend\n\nwhen I receive [begin v]\nforever\n    if <[0] > (CAMDIR\(X\))> then\n        switch backdrop to (backdrop2 v)\n    else\n        switch backdrop to (backdrop1 v)\n    end\nend\n\nset [level v] to [5]\n\nwhen I receive [begin v]\n\nstop all sounds\n\nwhen I receive [game start v]\nbroadcast (RESET v)\nforever\n    if <(win) = [0]> then\n        play sound [Ahrix - Nova v] until done\n    end\nend\n\n@Object maker\n\nwhen I receive [frame v]\nROTATION MATRIX || x ((OBJX) - (CAMX)) z ((OBJZ) - (CAMZ)) || sin ((0) - (CYDS)) cos (CYDC)\nROTATION MATRIX || y ((OBJY) - (CAMY)) z (ROTZ) || sin ((0) - (CXDS)) cos (CXDC)\n3D || x (ROTX) y (ROTY) z (ROTZ)\nSORT || DISTANCE ((((OBJX) - (CAMX)) * ((OBJX) - (CAMX))) + ((((OBJY) - (CAMY)) * ((OBJY) - (CAMY))) + (((OBJZ) - (CAMZ)) * ((OBJZ) - (CAMZ)))))\n\nwhen flag clicked\nhide\n\nwhen I receive [startup / clone v]\ndelete all of [checkpoint hitboxes v]\ndelete all of [grass meshes v]\ndelete all of [lava hitbox v]\ndelete all of [trampoline hitbox v]\ndelete all of [winner mesh v]\ndelete all of [dirt meshes v]\nif <[1] = (level)> then\n    ADD GRASS || x: [-200] [200] y: [0] [25] z: [200] [-200]\n    ADD DIRT || x [-200] [200] y [0] [-1000] z [200] [-200]\n    ADD CHECKPOINT || x [-50] [50] y [25] [50] z [50] [-50]\n    ADD GRASS || x: [-100] [100] y: [25] [50] z: [500] [300]\n    ADD DIRT || x [-100] [100] y [25] [-1000] z [300] [500]\n    ADD GRASS || x: [-100] [100] y: [50] [75] z: [700] [900]\n    ADD DIRT || x [-100] [100] y [50] [-1000] z [700] [900]\n    ADD GRASS || x: [-100] [100] y: [75] [100] z: [1100] [1300]\n    ADD DIRT || x [-100] [100] y [75] [-1000] z [1100] [1300]\n    ADD GRASS || x: [-100] [100] y: [100] [125] z: [1500] [1700]\n    ADD DIRT || x [-100] [100] y [100] [-1000] z [1500] [1700]\n    ADD GRASS || x: [-100] [100] y: [125] [150] z: [1900] [2100]\n    ADD DIRT || x [-100] [100] y [125] [-1000] z [1900] [2100]\n    ADD GRASS || x: [-200] [200] y: [150] [175] z: [2200] [2600]\n    ADD DIRT || x [-200] [200] y [150] [-1000] z [2200] [2600]\n    ADD CHECKPOINT || x [-50] [50] y [175] [200] z [2350] [2450]\n    ADD DIRT || x [300] [1000] y [-1000] [200] z [2300] [2500]\n    ADD DIRT || x [1000] [1700] y [-1000] [200] z [2300] [2500]\n    ADD GRASS || x: [300] [500] y: [200] [225] z: [2300] [2500]\n    ADD LAVA || x [500] [600] y [200] [250] z [2300] [2500]\n    ADD GRASS || x: [600] [800] y: [200] [225] z: [2300] [2500]\n    ADD LAVA || x [800] [900] y [200] [250] z [2300] [2500]\n    ADD GRASS || x: [900] [1100] y: [200] [225] z: [2300] [2500]\n    ADD LAVA || x [1100] [1200] y [200] [250] z [2300] [2500]\n    ADD GRASS || x: [1200] [1400] y: [200] [225] z: [2300] [2500]\n    ADD LAVA || x [1400] [1500] y [200] [250] z [2300] [2500]\n    ADD GRASS || x: [1500] [1700] y: [200] [225] z: [2300] [2500]\n    ADD DIRT || x [1800] [2200] y [200] [-1000] z [2200] [2600]\n    ADD GRASS || x: [1800] [2200] y: [200] [225] z: [2200] [2600]\n    ADD CHECKPOINT || x [1950] [2050] y [225] [250] z [2350] [2450]\n    ADD DIRT || x [1900] [2100] y [200] [-1000] z [2100] [1900]\n    ADD GRASS || x: [1900] [2100] y: [200] [225] z: [2100] [1900]\n    ADD TRAMPOLINE || x: [1950] [2050] y: [225] [250] z: [1950] [2050]\n    ADD DIRT || x [1800] [2200] y [-1000] [800] z [1800] [1400]\n    ADD GRASS || x: [1800] [2200] y: [800] [825] z: [1800] [1400]\n    WIN ZONE || x [1900] [2100] y [825] [850] z [1700] [1500]\nelse\n    if <[2] = (level)> then\n        ADD GRASS || x: [-200] [200] y: [0] [25] z: [200] [-200]\n        ADD DIRT || x [-200] [200] y [0] [-1000] z [200] [-200]\n        ADD CHECKPOINT || x [-50] [50] y [25] [50] z [50] [-50]\n        ADD GRASS || x: [-100] [100] y: [0] [25] z: [200] [400]\n        ADD DIRT || x [-100] [100] y [0] [-1000] z [200] [600]\n        ADD TRAMPOLINE || x: [-100] [100] y: [0] [50] z: [400] [500]\n        ADD GRASS || x: [-100] [100] y: [0] [25] z: [700] [500]\n        ADD TRAMPOLINE || x: [-100] [100] y: [0] [50] z: [700] [800]\n        ADD GRASS || x: [-100] [100] y: [0] [25] z: [800] [1000]\n        ADD TRAMPOLINE || x: [-100] [100] y: [0] [50] z: [1000] [1100]\n        ADD DIRT || x [-100] [100] y [0] [-1000] z [1000] [600]\n        ADD DIRT || x [-100] [100] y [0] [-1000] z [1000] [1400]\n        ADD GRASS || x: [-100] [100] y: [0] [25] z: [1100] [1300]\n        ADD TRAMPOLINE || x: [-100] [100] y: [0] [50] z: [1300] [1400]\n        ADD DIRT || x [-100] [100] y [0] [-1000] z [1800] [1400]\n        ADD GRASS || x: [-100] [100] y: [0] [25] z: [1400] [1600]\n        ADD TRAMPOLINE || x: [-100] [100] y: [0] [50] z: [1600] [1700]\n        ADD GRASS || x: [-100] [100] y: [0] [25] z: [1700] [1800]\n        ADD LAVA || x [-100] [100] y [300] [350] z [200] [600]\n        ADD LAVA || x [-100] [100] y [300] [350] z [600] [1000]\n        ADD LAVA || x [-100] [100] y [300] [350] z [1400] [1000]\n        ADD LAVA || x [-100] [100] y [300] [350] z [1400] [1800]\n        ADD GRASS || x: [-200] [200] y: [0] [25] z: [1800] [2200]\n        ADD DIRT || x [-200] [200] y [0] [-1000] z [1800] [2200]\n        ADD CHECKPOINT || x [-50] [50] y [25] [50] z [1950] [2050]\n        ADD DIRT || x [-100] [100] y [100] [-1000] z [2300] [2500]\n        ADD GRASS || x: [-100] [100] y: [100] [125] z: [2300] [2500]\n        ADD DIRT || x [-200] [-400] y [150] [-1000] z [2300] [2500]\n        ADD GRASS || x: [-200] [-400] y: [150] [175] z: [2300] [2500]\n        ADD DIRT || x [-500] [-700] y [200] [-1000] z [2300] [2500]\n        ADD GRASS || x: [-500] [-700] y: [200] [225] z: [2300] [2500]\n        ADD DIRT || x [-800] [-1000] y [250] [-1000] z [2300] [2500]\n        ADD GRASS || x: [-800] [-1000] y: [250] [275] z: [2300] [2500]\n        ADD GRASS || x: [-700] [-1100] y: [300] [325] z: [1800] [2200]\n        ADD DIRT || x [-700] [-1100] y [300] [-1000] z [1800] [2200]\n        ADD DIRT || x [-875] [-925] y [300] [-1000] z [1800] [1200]\n        ADD LAVA || x [-875] [-925] y [350] [300] z [1550] [1600]\n        ADD GRASS || x: [-875] [-925] y: [300] [325] z: [1600] [1800]\n        ADD GRASS || x: [-875] [-925] y: [300] [325] z: [1550] [1250]\n        ADD LAVA || x [-875] [-925] y [350] [300] z [1250] [1200]\n        ADD DIRT || x [-1300] [-925] y [300] [-1000] z [1250] [1200]\n        ADD GRASS || x: [-925] [-1100] y: [300] [325] z: [1250] [1200]\n        ADD LAVA || x [-1100] [-1150] y [350] [300] z [1250] [1200]\n        ADD GRASS || x: [-1150] [-1300] y: [300] [325] z: [1250] [1200]\n        ADD DIRT || x [-1250] [-1300] y [475] [-1000] z [1200] [1000]\n        ADD GRASS || x: [-1250] [-1300] y: [500] [475] z: [1150] [1200]\n        ADD LAVA || x [-1250] [-1300] y [475] [525] z [1150] [1100]\n        ADD GRASS || x: [-1250] [-1300] y: [500] [475] z: [1100] [1000]\n        ADD DIRT || x [-800] [-1300] y [475] [-1000] z [1050] [1000]\n        ADD GRASS || x: [-800] [-1250] y: [475] [500] z: [1050] [1000]\n        ADD DIRT || x [-500] [-400] y [475] [-1000] z [1050] [1000]\n        ADD GRASS || x: [-500] [-400] y: [475] [500] z: [1050] [1000]\n        ADD DIRT || x [-200] [-400] y [475] [-1000] z [1125] [925]\n        ADD GRASS || x: [-200] [-400] y: [475] [500] z: [1125] [925]\n        WIN ZONE || x [-250] [-350] y [500] [525] z [1075] [975]\n    else\n        if <[3] = (level)> then\n            ADD GRASS || x: [-200] [200] y: [0] [25] z: [200] [-200]\n            ADD DIRT || x [-200] [200] y [0] [-1000] z [200] [-200]\n            ADD CHECKPOINT || x [-50] [50] y [25] [50] z [50] [-50]\n            ADD GRASS || x: [-150] [150] y: [75] [50] z: [400] [500]\n            ADD DIRT || x [-150] [150] y [50] [-1000] z [400] [500]\n            ADD GRASS || x: [-150] [150] y: [125] [100] z: [700] [800]\n            ADD DIRT || x [-150] [150] y [100] [-1000] z [700] [800]\n            ADD GRASS || x: [-150] [150] y: [175] [150] z: [1000] [1100]\n            ADD DIRT || x [-150] [150] y [150] [-1000] z [1000] [1100]\n            ADD GRASS || x: [-150] [150] y: [225] [200] z: [1300] [1400]\n            ADD DIRT || x [-150] [160] y [200] [-1000] z [1300] [1400]\n            ADD GRASS || x: [-150] [150] y: [275] [250] z: [1600] [1700]\n            ADD DIRT || x [-150] [150] y [250] [-1000] z [1600] [1700]\n            ADD GRASS || x: [-200] [200] y: [325] [300] z: [1900] [2300]\n            ADD DIRT || x [-200] [200] y [300] [-1000] z [1900] [2300]\n            ADD CHECKPOINT || x [-50] [50] y [325] [350] z [2050] [2150]\n            ADD GRASS || x: [600] [200] y: [325] [300] z: [1900] [2300]\n            ADD DIRT || x [600] [200] y [300] [-1000] z [1900] [2300]\n            ADD TRAMPOLINE || x: [450] [350] y: [325] [350] z: [2050] [2150]\n            ADD GRASS || x: [600] [1000] y: [1025] [1000] z: [1900] [2300]\n            ADD GRASS || x: [600] [1000] y: [1025] [1000] z: [2300] [2700]\n            ADD DIRT || x [-200] [600] y [1000] [-1000] z [2700] [2300]\n            ADD DIRT || x [-200] [600] y [2000] [1000] z [2700] [2300]\n            ADD GRASS || x: [1000] [1400] y: [2025] [2000] z: [2700] [1900]\n            ADD DIRT || x [600] [1400] y [1000] [-1000] z [2700] [1900]\n            ADD DIRT || x [1000] [1400] y [2000] [1000] z [2700] [1900]\n            ADD GRASS || x: [1400] [200] y: [2525] [2500] z: [2700] [3100]\n            ADD DIRT || x [1400] [200] y [1000] [-1000] z [2700] [3100]\n            ADD DIRT || x [1400] [200] y [2500] [1000] z [2700] [3100]\n            ADD GRASS || x: [600] [800] y: [1125] [1100] z: [2300] [2700]\n            ADD GRASS || x: [1000] [800] y: [1275] [1300] z: [2300] [2700]\n            ADD GRASS || x: [600] [800] y: [1475] [1450] z: [2300] [2700]\n            ADD GRASS || x: [1000] [800] y: [1675] [1650] z: [2300] [2700]\n            ADD GRASS || x: [600] [800] y: [1875] [1850] z: [2300] [2700]\n            ADD LAVA || x [500] [400] y [2000] [2050] z [2300] [2700]\n            ADD LAVA || x [200] [300] y [2000] [2050] z [2300] [2700]\n            ADD LAVA || x [100] [0] y [2000] [2050] z [2300] [2700]\n            ADD LAVA || x [-100] [-200] y [2000] [2050] z [2300] [2700]\n            ADD GRASS || x: [600] [500] y: [2000] [2025] z: [2300] [2700]\n            ADD GRASS || x: [400] [300] y: [2000] [2025] z: [2300] [2700]\n            ADD GRASS || x: [200] [100] y: [2000] [2025] z: [2300] [2700]\n            ADD GRASS || x: [-100] [0] y: [2000] [2025] z: [2300] [2700]\n            ADD DIRT || x [-200] [-600] y [-1000] [1000] z [2700] [1900]\n            ADD DIRT || x [-200] [-600] y [2000] [1000] z [2700] [1900]\n            ADD GRASS || x: [-200] [-600] y: [2000] [2025] z: [2700] [2300]\n            ADD GRASS || x: [-200] [-600] y: [2000] [2025] z: [2300] [1900]\n            WIN ZONE || x [-350] [-450] y [2025] [2050] z [2150] [2050]\n        else\n            if <[4] = (level)> then\n                ADD GRASS || x: [-200] [200] y: [0] [25] z: [200] [-200]\n                ADD DIRT || x [-200] [200] y [0] [-1000] z [200] [-200]\n                ADD CHECKPOINT || x [-50] [50] y [25] [50] z [50] [-50]\n                ADD GRASS || x: [0] [100] y: [-25] [0] z: [500] [600]\n                ADD DIRT || x [0] [100] y [-25] [-1000] z [500] [600]\n                ADD GRASS || x: [-200] [-300] y: [50] [25] z: [800] [900]\n                ADD DIRT || x [-200] [-300] y [25] [-1000] z [800] [900]\n                ADD GRASS || x: [-400] [-300] y: [100] [75] z: [1200] [1300]\n                ADD DIRT || x [-400] [-300] y [75] [-1000] z [1200] [1300]\n                ADD GRASS || x: [100] [0] y: [75] [50] z: [1500] [1400]\n                ADD DIRT || x [100] [0] y [50] [-1000] z [1500] [1400]\n                ADD GRASS || x: [50] [-50] y: [125] [100] z: [1800] [1900]\n                ADD DIRT || x [50] [-50] y [100] [-1000] z [1800] [1900]\n                ADD GRASS || x: [-200] [200] y: [100] [125] z: [2100] [2500]\n                ADD DIRT || x [-200] [200] y [100] [-1000] z [2100] [2500]\n                ADD CHECKPOINT || x [-50] [50] y [125] [150] z [2250] [2350]\n                ADD GRASS || x: [700] [500] y: [150] [175] z: [2200] [2400]\n                ADD DIRT || x [700] [500] y [150] [-1000] z [2200] [2400]\n                ADD GRASS || x: [700] [500] y: [250] [275] z: [1900] [1700]\n                ADD DIRT || x [700] [500] y [250] [-1000] z [1900] [1700]\n                ADD GRASS || x: [700] [500] y: [350] [375] z: [1400] [1200]\n                ADD DIRT || x [700] [500] y [350] [-1000] z [1400] [1200]\n                ADD GRASS || x: [700] [500] y: [450] [475] z: [900] [700]\n                ADD DIRT || x [700] [500] y [450] [-1000] z [900] [700]\n                ADD GRASS || x: [700] [500] y: [550] [575] z: [400] [200]\n                ADD DIRT || x [700] [500] y [550] [-1000] z [400] [200]\n                ADD GRASS || x: [800] [400] y: [550] [575] z: [200] [-200]\n                ADD DIRT || x [800] [400] y [550] [-1000] z [200] [-200]\n                ADD CHECKPOINT || x [550] [650] y [575] [600] z [50] [-50]\n                ADD GRASS || x: [300] [400] y: [550] [575] z: [100] [-100]\n                ADD DIRT || x [300] [400] y [550] [-1000] z [100] [-100]\n                ADD TRAMPOLINE || x: [300] [400] y: [575] [600] z: [100] [-100]\n                ADD GRASS || x: [-300] [-400] y: [550] [575] z: [100] [-100]\n                ADD DIRT || x [-300] [-400] y [550] [-1000] z [100] [-100]\n                ADD GRASS || x: [-800] [-400] y: [550] [575] z: [200] [-200]\n                ADD DIRT || x [-800] [-400] y [550] [-1000] z [200] [-200]\n                ADD GRASS || x: [-700] [-500] y: [550] [575] z: [200] [300]\n                ADD DIRT || x [-700] [-500] y [550] [-1000] z [200] [300]\n                ADD TRAMPOLINE || x: [-700] [-500] y: [600] [575] z: [200] [300]\n                ADD GRASS || x: [-700] [-500] y: [550] [575] z: [900] [1000]\n                ADD DIRT || x [-700] [-500] y [550] [-1000] z [900] [1000]\n                ADD GRASS || x: [-800] [-400] y: [550] [575] z: [1400] [1000]\n                ADD DIRT || x [-800] [-400] y [550] [-1000] z [1400] [1000]\n                ADD GRASS || x: [-700] [-500] y: [550] [575] z: [1400] [1500]\n                ADD DIRT || x [-700] [-500] y [550] [-1000] z [1400] [1500]\n                ADD TRAMPOLINE || x: [-700] [-500] y: [600] [575] z: [1400] [1500]\n                ADD GRASS || x: [-700] [-500] y: [550] [575] z: [2200] [2100]\n                ADD DIRT || x [-700] [-500] y [550] [-1000] z [2200] [2100]\n                ADD GRASS || x: [-800] [-400] y: [550] [575] z: [2200] [2600]\n                ADD DIRT || x [-800] [-400] y [550] [-1000] z [2200] [2600]\n                ADD GRASS || x: [-700] [-500] y: [550] [575] z: [2600] [2700]\n                ADD DIRT || x [-700] [-500] y [550] [-1000] z [2600] [2700]\n                ADD TRAMPOLINE || x: [-700] [-500] y: [600] [575] z: [2600] [2700]\n                ADD GRASS || x: [-700] [-500] y: [550] [575] z: [3400] [3300]\n                ADD DIRT || x [-700] [-500] y [550] [-1000] z [3400] [3300]\n                ADD GRASS || x: [-800] [-400] y: [550] [575] z: [3400] [3800]\n                ADD DIRT || x [-800] [-400] y [550] [-1000] z [3400] [3800]\n                ADD GRASS || x: [-400] [-300] y: [550] [575] z: [3500] [3700]\n                ADD DIRT || x [-400] [-300] y [550] [-1000] z [3500] [3700]\n                ADD TRAMPOLINE || x: [-400] [-300] y: [600] [575] z: [3500] [3700]\n                ADD GRASS || x: [800] [400] y: [550] [575] z: [3400] [3800]\n                ADD DIRT || x [800] [400] y [550] [-1000] z [3400] [3800]\n                ADD GRASS || x: [400] [300] y: [550] [575] z: [3500] [3700]\n                ADD DIRT || x [400] [300] y [550] [-1000] z [3500] [3700]\n                WIN ZONE || x [650] [550] y [575] [600] z [3550] [3650]\n            else\n                if <[5] = (level)> then\n                    ADD GRASS || x: [-200] [200] y: [0] [25] z: [200] [-200]\n                    ADD DIRT || x [-200] [200] y [0] [-1000] z [200] [-200]\n                    ADD CHECKPOINT || x [-50] [50] y [25] [50] z [50] [-50]\n                    ADD GRASS || x: [-100] [100] y: [0] [25] z: [500] [700]\n                    ADD DIRT || x [-100] [100] y [0] [-1000] z [500] [700]\n                    ADD GRASS || x: [0] [200] y: [0] [25] z: [1000] [1200]\n                    ADD DIRT || x [0] [200] y [0] [-1000] z [1000] [1200]\n                    ADD GRASS || x: [400] [200] y: [0] [25] z: [1500] [1700]\n                    ADD DIRT || x [400] [200] y [0] [-1000] z [1500] [1700]\n                    ADD GRASS || x: [500] [700] y: [0] [25] z: [2200] [2000]\n                    ADD DIRT || x [500] [700] y [0] [-1000] z [2200] [2000]\n                    ADD GRASS || x: [1000] [1200] y: [0] [25] z: [2200] [2400]\n                    ADD DIRT || x [1000] [1200] y [0] [-1000] z [2200] [2400]\n                    ADD GRASS || x: [1900] [1500] y: [0] [25] z: [2200] [2600]\n                    ADD DIRT || x [1900] [1500] y [0] [-1000] z [2200] [2600]\n                    ADD CHECKPOINT || x [1650] [1750] y [25] [50] z [2350] [2450]\n                    ADD GRASS || x: [1900] [1500] y: [100] [125] z: [3000] [2600]\n                    ADD DIRT || x [1900] [1500] y [100] [-1000] z [3000] [2600]\n                    ADD LAVA || x [1900] [1500] y [125] [150] z [2750] [2850]\n                    ADD GRASS || x: [1900] [1500] y: [200] [225] z: [3000] [3400]\n                    ADD DIRT || x [1900] [1500] y [200] [-1000] z [3000] [3400]\n                    ADD LAVA || x [1900] [1500] y [225] [250] z [3150] [3250]\n                    ADD GRASS || x: [1900] [1500] y: [300] [325] z: [3800] [3400]\n                    ADD DIRT || x [1900] [1500] y [300] [-1000] z [3800] [3400]\n                    ADD LAVA || x [1900] [1500] y [325] [350] z [3550] [3650]\n                    ADD GRASS || x: [1900] [1500] y: [400] [425] z: [3800] [4200]\n                    ADD DIRT || x [1900] [1500] y [400] [-1000] z [3800] [4200]\n                    ADD CHECKPOINT || x [1650] [1750] y [425] [450] z [3950] [4050]\n                    ADD DIRT || x [1900] [2700] y [500] [-1000] z [3800] [4200]\n                    ADD DIRT || x [3500] [2700] y [500] [-1000] z [3800] [4200]\n                    ADD GRASS || x: [1900] [2100] y: [500] [525] z: [3800] [4000]\n                    ADD LAVA || x [2100] [1900] y [550] [500] z [4200] [4000]\n                    ADD GRASS || x: [2100] [2300] y: [500] [525] z: [4200] [4000]\n                    ADD LAVA || x [2100] [2300] y [550] [500] z [3800] [4000]\n                    ADD GRASS || x: [2300] [2500] y: [500] [525] z: [3800] [4000]\n                    ADD LAVA || x [2300] [2500] y [550] [500] z [4200] [4000]\n                    ADD GRASS || x: [2500] [2700] y: [500] [525] z: [4200] [4000]\n                    ADD LAVA || x [2500] [2700] y [550] [500] z [3800] [4000]\n                    ADD GRASS || x: [2700] [2900] y: [500] [525] z: [3800] [4000]\n                    ADD LAVA || x [2700] [2900] y [550] [500] z [4200] [4000]\n                    ADD GRASS || x: [2900] [3100] y: [500] [525] z: [4200] [4000]\n                    ADD LAVA || x [2900] [3100] y [550] [500] z [3800] [4000]\n                    ADD GRASS || x: [3100] [3300] y: [500] [525] z: [3800] [4000]\n                    ADD LAVA || x [3100] [3300] y [550] [500] z [4200] [4000]\n                    ADD GRASS || x: [3300] [3500] y: [500] [525] z: [4200] [4000]\n                    ADD LAVA || x [3300] [3500] y [550] [500] z [3800] [4000]\n                    ADD GRASS || x: [3500] [3900] y: [600] [625] z: [4200] [3800]\n                    ADD DIRT || x [3500] [3900] y [600] [-1000] z [4200] [3800]\n                    ADD CHECKPOINT || x [3650] [3750] y [625] [650] z [3950] [4050]\n                    ADD GRASS || x: [3500] [3900] y: [700] [725] z: [3500] [3700]\n                    ADD DIRT || x [3500] [3900] y [700] [650] z [3500] [3700]\n                    ADD GRASS || x: [3500] [3900] y: [800] [825 ] z: [3100] [3300]\n                    ADD DIRT || x [3500] [3900] y [800] [750] z [3100] [3300]\n                    ADD GRASS || x: [3500] [3900] y: [900] [925 ] z: [2700] [2900]\n                    ADD DIRT || x [3500] [3900] y [900] [850] z [2700] [2900]\n                    ADD GRASS || x: [3500] [3900] y: [1000] [1025] z: [2300] [2500]\n                    ADD DIRT || x [3500] [3900] y [1000] [950] z [2300] [2500]\n                    ADD GRASS || x: [3500] [3900] y: [1100] [1125] z: [2300] [1900]\n                    ADD DIRT || x [3500] [3900] y [1100] [-1000] z [2300] [1900]\n                    ADD CHECKPOINT || x [3650] [3750] y [1125] [1150] z [2050] [2150]\n                    ADD DIRT || x [3500] [2700] y [1100] [-1000] z [2300] [1900]\n                    ADD DIRT || x [1900] [2700] y [1100] [-1000] z [2300] [1900]\n                    ADD LAVA || x [3500] [3100] y [1100] [1125] z [2300] [1900]\n                    ADD LAVA || x [3100] [2700] y [1100] [1125] z [2300] [1900]\n                    ADD LAVA || x [2300] [2700] y [1100] [1125] z [2300] [1900]\n                    ADD GRASS || x: [2300] [1900] y: [1650] [1675] z: [2300] [1900]\n                    ADD DIRT || x [2300] [1900] y [1650] [1100] z [2300] [1900]\n                    ADD CHECKPOINT || x [2050] [2150] y [1675] [1700] z [2050] [2150]\n                    ADD GRASS || x: [3250] [3350] y: [1150] [1125] z: [2050] [2150]\n                    ADD GRASS || x: [3050] [3150] y: [1250] [1275] z: [2050] [2150]\n                    ADD DIRT || x [3050] [3150] y [1250] [1100] z [2050] [2150]\n                    ADD GRASS || x: [2850] [2950] y: [1350] [1375] z: [2050] [2150]\n                    ADD DIRT || x [2850] [2950] y [1350] [1100] z [2050] [2150]\n                    ADD GRASS || x: [2650] [2750] y: [1450] [1475] z: [2050] [2150]\n                    ADD DIRT || x [2650] [2750] y [1450] [1100] z [2050] [2150]\n                    ADD GRASS || x: [2450] [2550] y: [1550] [1575] z: [2050] [2150]\n                    ADD DIRT || x [2450] [2550] y [1550] [1100] z [2050] [2150]\n                    ADD DIRT || x [2300] [1900] y [1650] [-1000] z [3100] [3700]\n                    ADD DIRT || x [2300] [1900] y [1650] [-1000] z [3100] [2300]\n                    ADD TRAMPOLINE || x: [2300] [1900] y: [1650] [1675] z: [2500] [2300]\n                    ADD LAVA || x [2300] [1900] y [1650] [2250] z [2500] [2700]\n                    ADD TRAMPOLINE || x: [2300] [1900] y: [1650] [1675] z: [2700] [2900]\n                    ADD LAVA || x [2300] [1900] y [1650] [2250] z [2900] [3100]\n                    ADD TRAMPOLINE || x: [2300] [1900] y: [1650] [1675] z: [3100] [3300]\n                    ADD LAVA || x [2300] [1900] y [1650] [2250] z [3300] [3500]\n                    ADD GRASS || x: [2300] [1900] y: [1650] [1675] z: [3500] [3700]\n                    ADD GRASS || x: [2300] [2700] y: [1650] [1675] z: [3300] [3700]\n                    ADD DIRT || x [2300] [2700] y [1650] [-1000] z [3300] [3700]\n                    ADD CHECKPOINT || x [2450] [2550] y [1700] [1675] z [3450] [3550]\n                    ADD GRASS || x: [3100] [2700] y: [1750] [1775] z: [3300] [3700]\n                    ADD DIRT || x [3100] [2700] y [1750] [-1000] z [3300] [3700]\n                    ADD GRASS || x: [3100] [3500] y: [1850] [1875] z: [3300] [3700]\n                    ADD DIRT || x [3100] [3500] y [1850] [-1000] z [3300] [3700]\n                    ADD GRASS || x: [3100] [3500] y: [1950] [1975] z: [3300] [2900]\n                    ADD DIRT || x [3100] [3500] y [1950] [-1000] z [3300] [2900]\n                    ADD GRASS || x: [3100] [3500] y: [2050] [2075] z: [2300] [2900]\n                    ADD DIRT || x [3100] [3500] y [2050] [-1000] z [2300] [2900]\n                    ADD GRASS || x: [3100] [2700] y: [2150] [2175] z: [2300] [2700]\n                    ADD DIRT || x [3100] [2700] y [2150] [-1000] z [2300] [2700]\n                    ADD GRASS || x: [3100] [2700] y: [2250] [2275] z: [3000] [2700]\n                    ADD DIRT || x [3100] [2700] y [2250] [-1000] z [3000] [2700]\n                    ADD GRASS || x: [3100] [2700] y: [2350] [2375] z: [3000] [3300]\n                    ADD DIRT || x [3100] [2700] y [2350] [-1000] z [3000] [3300]\n                    ADD GRASS || x: [2300] [2700] y: [2450] [2475] z: [3000] [3300]\n                    ADD DIRT || x [2300] [2700] y [2450] [-1000] z [3000] [3300]\n                    ADD GRASS || x: [2300] [2700] y: [2550] [2575] z: [3000] [2700]\n                    ADD DIRT || x [2300] [2700] y [2550] [-1000] z [3000] [2700]\n                    ADD GRASS || x: [2300] [2700] y: [2650] [2675] z: [2300] [2700]\n                    ADD DIRT || x [2300] [2700] y [2650] [-1000] z [2300] [2700]\n                    WIN ZONE || x [2450] [2550] y [2675] [2700] z [2450] [2550]\n                end\n            end\n        end\n    end\nend\n\nADD LAVA || x [-100] [0] y [25] [50] z [] []\nADD LAVA || x [-100] [0] y [25] [50] z [] []\n\nADD DIRT || x [100] [200] y [500] [-1000] z [200] [600]\nADD DIRT || x [100] [200] y [500] [-1000] z [600] [1000]\nADD DIRT || x [100] [200] y [500] [-1000] z [1400] [1000]\nADD DIRT || x [100] [200] y [500] [-1000] z [1400] [1800]\n\nADD GRASS || x: [-300] [-400] y: [550] [575] z: [100] [-100]\nADD DIRT || x [-300] [-400] y [550] [-1000] z [100] [-100]\n\nADD TRAMPOLINE || x: [400] [300] y: [600] [575] z: [3500] [3700]\nADD GRASS || x: [700] [500] y: [550] [575] z: [3400] [3300]\nADD DIRT || x [700] [500] y [550] [-1000] z [3400] [3300]\n\nrepeat (6)\n    delete (length of [checkpoint hitboxes v]) of [checkpoint hitboxes v]\nend\n\nbroadcast (RESET v)\n\nset [distanceoscreen v] to [300]\n\nWIN ZONE || x [-50] [50] y [25] [50] z [2350] [2450]\n\nset [distanceoscreen v] to [250]\n\ndelete all of [grass meshes v]\n\nset [level v] to [1]\n\nADD CHECKPOINT || x [-50] [50] y [25] [50] z [50] [-50]\n\nset [cz v] to [45]\n\nset [level v] to [4]\n\nADD DIRT || x [600] [1000] y [1000] [-1000] z [1900] [2300]\n\nADD GRASS || x: [1000] [800] y: [1675] [1650] z: [2300] [2700]\n\nADD GRASS || x: [-200] [200] y: [2000] [2025] z: [2300] [2700]\n\nADD GRASS || x: [1900] [2500] y: [500] [525] z: [3800] [4200]\n\n\n\ndefine ADD DIRT || x (x1) (x2) y (y1) (y2) z (z1) (z2)\nif <(x2) > (x1)> then\n    add (x1) to [dirt meshes v]\n    add (x2) to [dirt meshes v]\nelse\n    add (x2) to [dirt meshes v]\n    add (x1) to [dirt meshes v]\nend\nif <(y2) > (y1)> then\n    add (y1) to [dirt meshes v]\n    add (y2) to [dirt meshes v]\nelse\n    add (y2) to [dirt meshes v]\n    add (y1) to [dirt meshes v]\nend\nif <(z2) > (z1)> then\n    add (z1) to [dirt meshes v]\n    add (z2) to [dirt meshes v]\nelse\n    add (z2) to [dirt meshes v]\n    add (z1) to [dirt meshes v]\nend\n\ndefine ADD TRAMPOLINE || x: (x1) (x2) y: (y1) (y2) z: (z1) (z2)\nif <(x2) > (x1)> then\n    add (x1) to [trampoline hitbox v]\n    add (x2) to [trampoline hitbox v]\nelse\n    add (x2) to [trampoline hitbox v]\n    add (x1) to [trampoline hitbox v]\nend\nif <(y2) > (y1)> then\n    add (y1) to [trampoline hitbox v]\n    add (y2) to [trampoline hitbox v]\nelse\n    add (y2) to [trampoline hitbox v]\n    add (y1) to [trampoline hitbox v]\nend\nif <(z2) > (z1)> then\n    add (z1) to [trampoline hitbox v]\n    add (z2) to [trampoline hitbox v]\nelse\n    add (z2) to [trampoline hitbox v]\n    add (z1) to [trampoline hitbox v]\nend\n\ndefine 3D || x (x) y (y) z (z)\nif <(z) > [30]> then\n    set [scrx v] to ((x) * ((DISTANCEOSCREEN) / (z)))\n    set [scry v] to ((y) * ((DISTANCEOSCREEN) / (z)))\n    go to x: (SCRX) y: (SCRY)\n    point in direction ((90) + ([atan v] of (((0) - (SCRX)) / (((DISTANCEOSCREEN) / ([tan v] of (CAMDIR\(X\)) )) - (SCRY))) ))\n    if <<(x position) = (SCRX)> and <(y position) = (SCRY)>> then\n        set size to ((100) * ((DISTANCEOSCREEN) / (z))) %\n        show\n    else\n        hide\n    end\nelse\n    hide\nend\n\ndefine SORT || DISTANCE (dis)\nset [counter v] to [1]\nrepeat until <not <(dis) < (item (COUNTER) of [objdis v])>>\n    change [counter v] by (1)\nend\ninsert (dis) at (COUNTER) of [objdis v] \ngo [forward v] ((COUNTER) - (1)) layers\n\ndefine ADD GRASS || x: (x1) (x2) y: (y1) (y2) z: (z1) (z2)\nADD HITBOX || x: (x1) (x2) || y: (y1) (y2) || z: (z1) (z2)\n\ndefine ADD LAVA || x (x1) (x2) y (y1) (y2) z (z1) (z2)\nif <(x2) > (x1)> then\n    add (x1) to [lava hitbox v]\n    add (x2) to [lava hitbox v]\nelse\n    add (x2) to [lava hitbox v]\n    add (x1) to [lava hitbox v]\nend\nif <(y2) > (y1)> then\n    add (y1) to [lava hitbox v]\n    add (y2) to [lava hitbox v]\nelse\n    add (y2) to [lava hitbox v]\n    add (y1) to [lava hitbox v]\nend\nif <(z2) > (z1)> then\n    add (z1) to [lava hitbox v]\n    add (z2) to [lava hitbox v]\nelse\n    add (z2) to [lava hitbox v]\n    add (z1) to [lava hitbox v]\nend\nset [distanceoscreen v] to [300]\n\ndefine WIN ZONE || x (x1) (x2) y (y1) (y2) z (z1) (z2)\nif <(x2) > (x1)> then\n    add (x1) to [winner mesh v]\n    add (x2) to [winner mesh v]\nelse\n    add (x2) to [winner mesh v]\n    add (x1) to [winner mesh v]\nend\nif <(y1) > (y2)> then\n    add (y2) to [winner mesh v]\n    add (y1) to [winner mesh v]\nelse\n    add (y1) to [winner mesh v]\n    add (y2) to [winner mesh v]\nend\nif <(z2) > (z1)> then\n    add (z1) to [winner mesh v]\n    add (z2) to [winner mesh v]\nelse\n    add (z2) to [winner mesh v]\n    add (z1) to [winner mesh v]\nend\n\nwhen [f v] key pressed\n\ndelete all of [checkpoint hitboxes v]\ndelete all of [grass meshes v]\ndelete all of [lava hitbox v]\ndelete all of [trampoline hitbox v]\ndelete all of [winner mesh v]\ndelete all of [dirt meshes v]\nbroadcast (Startup / clone v)\n\nadd (x1) to [trampoline hitbox v]\nadd (x2) to [trampoline hitbox v]\nadd (y1) to [trampoline hitbox v]\nadd (y2) to [trampoline hitbox v]\nadd (z1) to [trampoline hitbox v]\nadd (z2) to [trampoline hitbox v]\n\ndefine ADD CHECKPOINT || x (x1) (x2) y (y1) (y2) z (z1) (z2)\nif <(x2) > (x1)> then\n    add (x1) to [checkpoint hitboxes v]\n    add (x2) to [checkpoint hitboxes v]\nelse\n    add (x2) to [checkpoint hitboxes v]\n    add (x1) to [checkpoint hitboxes v]\nend\nif <(y2) > (y1)> then\n    add (y1) to [checkpoint hitboxes v]\n    add (y2) to [checkpoint hitboxes v]\nelse\n    add (y2) to [checkpoint hitboxes v]\n    add (y1) to [checkpoint hitboxes v]\nend\nif <(z2) > (z1)> then\n    add (z1) to [checkpoint hitboxes v]\n    add (z2) to [checkpoint hitboxes v]\nelse\n    add (z2) to [checkpoint hitboxes v]\n    add (z1) to [checkpoint hitboxes v]\nend\nset [distanceoscreen v] to [300]\n\ndefine ROTATION MATRIX || y (y) z (z) || sin (sin) cos (cos)\nset [roty v] to (((z) * (sin)) + ((y) * (cos)))\nset [rotz v] to (((z) * (cos)) - ((y) * (sin)))\n\nADD LAVA || x [2300] [2700] y [1100] [1125] z [2300] [1900]\n\nADD GRASS || x: [2300] [1900] y: [1650] [1675] z: [3100] [2300]\n\nADD LAVA || x [2300] [1900] y [1650] [2300] z [2500] [2700]\n\nADD CHECKPOINT || x [2450] [2550] y [2675] [2700] z [2450] [2550]\n\nAdd OBJ || x (x1) y (y2) z (z1)\nAdd OBJ || x (x2) y (y2) z (z1)\nAdd OBJ || x (x1) y (y1) z (z1)\nAdd OBJ || x (x1) y (y2) z (z2)\nAdd OBJ || x (x2) y (y2) z (z2)\nAdd OBJ || x (x2) y (y1) z (z1)\nAdd OBJ || x (x2) y (y1) z (z2)\nAdd OBJ || x (x1) y (y1) z (z2)\n\ndefine Add OBJ || x (x) y (y) z (z)\nshow\nset [objx v] to (x)\nset [objy v] to (y)\nset [objz v] to (z)\ncreate clone of (_myself_ v)\nhide\n\ndefine ROTATION MATRIX || x (x) z (z) || sin (sin) cos (cos)\nset [rotx v] to (((z) * (sin)) + ((x) * (cos)))\nset [rotz v] to (((z) * (cos)) - ((x) * (sin)))\n\ndefine ADD HITBOX || x: (x1) (x2) || y: (y1) (y2) || z: (z1) (z2)\nif <(x2) > (x1)> then\n    add (x1) to [grass meshes v]\n    add (x2) to [grass meshes v]\nelse\n    add (x2) to [grass meshes v]\n    add (x1) to [grass meshes v]\nend\nif <(y2) > (y1)> then\n    add (y1) to [grass meshes v]\n    add (y2) to [grass meshes v]\nelse\n    add (y2) to [grass meshes v]\n    add (y1) to [grass meshes v]\nend\nif <(z2) > (z1)> then\n    add (z1) to [grass meshes v]\n    add (z2) to [grass meshes v]\nelse\n    add (z2) to [grass meshes v]\n    add (z1) to [grass meshes v]\nend\n\nAdd OBJ || x [50] y [50] z [50]\nAdd OBJ || x [-50] y [50] z [50]\nAdd OBJ || x [50] y [0] z [50]\nAdd OBJ || x [50] y [50] z [-50]\nAdd OBJ || x [-50] y [50] z [-50]\nAdd OBJ || x [-50] y [0] z [50]\nAdd OBJ || x [-50] y [0] z [-50]\nAdd OBJ || x [50] y [0] z [-50]\nADD HITBOX || x: [50] [-50] || y: [0] [50] || z: [50] [-50]\n\nrepeat (6)\n    delete (length of [grass meshes v]) of [grass meshes v]\nend\n\ndelete all of [trampoline hitbox v]\ndelete all of [dirt meshes v]\n\nADD CHECKPOINT || x [650] [550] y [575] [600] z [3550] [3650]\n\nset [level v] to [5]\n\nADD GRASS || x: [-100] [100] y: [0] [25] z: [900] [1100]\n\nADD LAVA || x [0] [100] y [25] [50] z [900] [1000]\n\nADD GRASS || x: [2000] [3000] y: [0] [50] z: [2000] [3000]\n\n@  Player\n\ndefine PHYSICS || ACEL (acel) FRICTION (friction) GRAVITY (gravity) JUMP POWER (jump power)\nif <key (w v) pressed?> then\n    change [xspd v] by ((acel) * (CYDS))\n    change [zspd v] by ((acel) * (CYDC))\nend\nif <key (s v) pressed?> then\n    change [xspd v] by ((() - (acel)) * (CYDS))\n    change [zspd v] by ((() - (acel)) * (CYDC))\nend\nif <key (d v) pressed?> then\n    change [xspd v] by ((acel) * (CYDC))\n    change [zspd v] by ((() - (acel)) * (CYDS))\nend\nif <key (a v) pressed?> then\n    change [xspd v] by ((() - (acel)) * (CYDC))\n    change [zspd v] by ((acel) * (CYDS))\nend\nchange [yspd v] by (gravity)\nset [xspd v] to ((XSPD) * (friction))\nset [zspd v] to ((ZSPD) * (friction))\nDETECTION || JUMP POWER (jump power)\n\nbroadcast (RESET v)\n\ndefine SOLID DETECTION || x (x) y (y) z (z) || PLAYER HEIGHT (height) WIDTH (x width) (z width)\nif <((y) - (height)) < [-500]> then\n    start sound [Crunch v]\n    broadcast (RESET v)\n    stop [this script v]\nend\nset [counter v] to [0]\nrepeat ((length of [grass meshes v]) / (6))\n    if <<((x) + ((x width) / (2))) > (item ((COUNTER) + (1)) of [grass meshes v])> and <((x) - ((x width) / (2))) < (item ((COUNTER) + (2)) of [grass meshes v])>> then\n        if <<(y) > (item ((COUNTER) + (3)) of [grass meshes v])> and <((y) - (height)) < (item ((COUNTER) + (4)) of [grass meshes v])>> then\n            if <<((z) + ((z width) / (2))) > (item ((COUNTER) + (5)) of [grass meshes v])> and <((z) - ((z width) / (2))) < (item ((COUNTER) + (6)) of [grass meshes v])>> then\n                change [hitboxdetected? v] by (1)\n                stop [this script v]\n            end\n        end\n    end\n    change [counter v] by (6)\nend\nset [counter v] to [0]\nrepeat ((length of [dirt meshes v]) / (6))\n    if <<((x) + ((x width) / (2))) > (item ((COUNTER) + (1)) of [dirt meshes v])> and <((x) - ((x width) / (2))) < (item ((COUNTER) + (2)) of [dirt meshes v])>> then\n        if <<(y) > (item ((COUNTER) + (3)) of [dirt meshes v])> and <((y) - (height)) < (item ((COUNTER) + (4)) of [dirt meshes v])>> then\n            if <<((z) + ((z width) / (2))) > (item ((COUNTER) + (5)) of [dirt meshes v])> and <((z) - ((z width) / (2))) < (item ((COUNTER) + (6)) of [dirt meshes v])>> then\n                change [hitboxdetected? v] by (1)\n                stop [this script v]\n            end\n        end\n    end\n    change [counter v] by (6)\nend\n\nset [hitboxdetected? v] to [1]\n\nset [hitboxdetected? v] to [0]\n\nchange [yspd v] by ((<key (z v) pressed?> - <key (x v) pressed?>) * (acel))\n\ndefine DETECTION || JUMP POWER (jump power)\nset [hitboxdetected? v] to [0]\nchange [player x v] by (XSPD)\nSOLID DETECTION || x (Player X) y (Player Y) z (Player Z) || PLAYER HEIGHT (Player Height) WIDTH (Player X Width) (Player Z Width)\nif <(HITBOXDETECTED?) > [0]> then\n    change [player x v] by (() - (XSPD))\n    set [xspd v] to ((XSPD) * (.3))\nend\nset [hitboxdetected? v] to [0]\nchange [player y v] by (YSPD)\nSOLID DETECTION || x (Player X) y (Player Y) z (Player Z) || PLAYER HEIGHT (Player Height) WIDTH (Player X Width) (Player Z Width)\nif <(HITBOXDETECTED?) > [0]> then\n    change [player y v] by (() - (YSPD))\n    set [yspd v] to ((YSPD) * (.3))\n    if <<key (space v) pressed?> and <(YSPD) < [0]>> then\n        start sound [Jump v]\n        set [yspd v] to (jump power)\n    end\nend\nset [hitboxdetected? v] to [0]\nchange [player z v] by (ZSPD)\nSOLID DETECTION || x (Player X) y (Player Y) z (Player Z) || PLAYER HEIGHT (Player Height) WIDTH (Player X Width) (Player Z Width)\nif <(HITBOXDETECTED?) > [0]> then\n    change [player z v] by (() - (ZSPD))\n    set [zspd v] to ((ZSPD) * (.3))\nend\nset [hitboxdetected? v] to [0]\nTRAMPOLINE DETECTION || x (Player X) y (Player Y) z (Player Z) HEIGHT (Player Height) (Player X Width) (Player Z Width)\nif <(HITBOXDETECTED?) = [1]> then\n    start sound [Drum Boing v]\n    set [yspd v] to [40]\nend\nset [hitboxdetected? v] to [0]\nLAVA DETECTION || x (Player X) y (Player Y) z (Player Z) HEIGHT (Player Height) WIDTH (Player X Width) (Player Z Width)\nif <(HITBOXDETECTED?) = [1]> then\n    start sound [Crunch v]\n    broadcast (RESET v)\nend\nset [hitboxdetected? v] to [0]\nCP DETECTION || x (Player X) y (Player Y) z (Player Z) HEIGHT (Player Height)\nif <(HITBOXDETECTED?) = [1]> then\n    set [cx v] to (Player X)\n    set [cy v] to ((Player Y) + (200))\n    set [cz v] to (Player Z)\nend\nset [hitboxdetected? v] to [0]\nWIN DETECT (Player X) (Player Y) (Player Z) (Player Height)\nif <(HITBOXDETECTED?) = [1]> then\n    broadcast (WIN v)\nend\n\ndefine TRAMPOLINE DETECTION || x (x) y (y) z (z) HEIGHT (height) (x width) (z width)\nset [counter v] to [0]\nrepeat ((length of [trampoline hitbox v]) / (6))\n    if <<((x) + ((x width) / (2))) > (item ((COUNTER) + (1)) of [trampoline hitbox v])> and <((x) - ((x width) / (2))) < (item ((COUNTER) + (2)) of [trampoline hitbox v])>> then\n        if <<(y) > (item ((COUNTER) + (3)) of [trampoline hitbox v])> and <((y) - (height)) < (item ((COUNTER) + (4)) of [trampoline hitbox v])>> then\n            if <<((z) + ((z width) / (2))) > (item ((COUNTER) + (5)) of [trampoline hitbox v])> and <((z) - ((z width) / (2))) < (item ((COUNTER) + (6)) of [trampoline hitbox v])>> then\n                set [hitboxdetected? v] to [1]\n                stop [this script v]\n            end\n        end\n    end\n    change [counter v] by (6)\nend\n\nwhen I receive [reset v]\nset [player x width v] to [50]\nset [player height v] to [50]\nset [player z width v] to [50]\nset [camx v] to (CX)\nset [camy v] to (CY)\nset [camz v] to (CZ)\nset [player x v] to (CX)\nset [player y v] to (CY)\nset [player z v] to (CZ)\nset [camdir\(y\) v] to [0]\nset [camdir\(x\) v] to [-45]\nset [win v] to [0]\ndelete all of [grass meshes v]\ndelete all of [lava hitbox v]\ndelete all of [trampoline hitbox v]\ndelete all of [checkpoint hitboxes v]\ndelete all of [winner mesh v]\n\nbroadcast (Startup / clone v) and wait\n\nwhen I receive [begin v]\nforever\n    if <(win) = [0]> then\n        if <(GODMODE?) = [1]> then\n            GODMODE || [20] [.7]\n        else\n            PHYSICS || ACEL [4] FRICTION [.7] GRAVITY [-1] JUMP POWER [21]\n        end\n        delete all of [objdis v]\n        GENERATE PLAYER MESH || XP (Player X) YP (Player Y) ZP (Player Z) || XW (Player X Width) YW (Player Height) ZW (Player Z Width)\n        POSITION CAMERA\n        SHADOW\n        set [cxdc v] to ([cos v] of (CAMDIR\(X\)) )\n        set [cxds v] to ([sin v] of (CAMDIR\(X\)) )\n        set [cydc v] to ([cos v] of (CAMDIR\(Y\)) )\n        set [cyds v] to ([sin v] of (CAMDIR\(Y\)) )\n        broadcast (PRE FRAME v)\n        broadcast (Frame v)\n    end\nend\n\ndefine LAVA DETECTION || x (x) y (y) z (z) HEIGHT (height) WIDTH (x width) (z width)\nset [counter v] to [0]\nrepeat ((length of [lava hitbox v]) / (6))\n    if <<((x) + ((x width) / (2))) > (item ((COUNTER) + (1)) of [lava hitbox v])> and <((x) - ((x width) / (2))) < (item ((COUNTER) + (2)) of [lava hitbox v])>> then\n        if <<(y) > (item ((COUNTER) + (3)) of [lava hitbox v])> and <((y) - (height)) < (item ((COUNTER) + (4)) of [lava hitbox v])>> then\n            if <<((z) + ((z width) / (2))) > (item ((COUNTER) + (5)) of [lava hitbox v])> and <((z) - ((z width) / (2))) < (item ((COUNTER) + (6)) of [lava hitbox v])>> then\n                set [hitboxdetected? v] to [1]\n                stop [this script v]\n            end\n        end\n    end\n    change [counter v] by (6)\nend\n\nset [hitboxdetected? v] to [0]\n\ndefine GODMODE || (acel) (friction)\nset [yspd v] to ((<key (z v) pressed?> - <key (x v) pressed?>) * (acel))\nif <key (w v) pressed?> then\n    change [xspd v] by ((acel) * (CYDS))\n    change [zspd v] by ((acel) * (CYDC))\nend\nif <key (s v) pressed?> then\n    change [xspd v] by ((() - (acel)) * (CYDS))\n    change [zspd v] by ((() - (acel)) * (CYDC))\nend\nif <key (d v) pressed?> then\n    change [xspd v] by ((acel) * (CYDC))\n    change [zspd v] by ((() - (acel)) * (CYDS))\nend\nif <key (a v) pressed?> then\n    change [xspd v] by ((() - (acel)) * (CYDC))\n    change [zspd v] by ((acel) * (CYDS))\nend\nset [xspd v] to ((XSPD) * (friction))\nset [zspd v] to ((ZSPD) * (friction))\nchange [player x v] by (XSPD)\nchange [player y v] by (YSPD)\nchange [player z v] by (ZSPD)\n\ndefine CP DETECTION || x (x) y (y) z (z) HEIGHT (height)\nset [counter v] to [0]\nrepeat ((length of [checkpoint hitboxes v]) / (6))\n    if <<(x) > (item ((COUNTER) + (1)) of [checkpoint hitboxes v])> and <(x) < (item ((COUNTER) + (2)) of [checkpoint hitboxes v])>> then\n        if <<(y) > (item ((COUNTER) + (3)) of [checkpoint hitboxes v])> and <((y) - (height)) < (item ((COUNTER) + (4)) of [checkpoint hitboxes v])>> then\n            if <<(z) > (item ((COUNTER) + (5)) of [checkpoint hitboxes v])> and <(z) < (item ((COUNTER) + (6)) of [checkpoint hitboxes v])>> then\n                set [hitboxdetected? v] to [1]\n                stop [this script v]\n            end\n        end\n    end\n    change [counter v] by (6)\nend\n\nset [hitboxdetected? v] to [0]\n\ndefine WIN DETECT (x) (y) (z) (height)\nset [counter v] to [0]\nrepeat ((length of [winner mesh v]) / (6))\n    if <<(x) > (item ((COUNTER) + (1)) of [winner mesh v])> and <(x) < (item ((COUNTER) + (2)) of [winner mesh v])>> then\n        if <<(y) > (item ((COUNTER) + (3)) of [winner mesh v])> and <((y) - (height)) < (item ((COUNTER) + (4)) of [winner mesh v])>> then\n            if <<(z) > (item ((COUNTER) + (5)) of [winner mesh v])> and <(z) < (item ((COUNTER) + (6)) of [winner mesh v])>> then\n                set [hitboxdetected? v] to [1]\n                stop [this script v]\n            end\n        end\n    end\n    change [counter v] by (6)\nend\n\nset [hitboxdetected? v] to [0]\n\nstop [other scripts in sprite v]\nstop [this script v]\n\nset [camx v] to [-1574]\nset [camy v] to [1279]\nset [camz v] to [-282]\nset [camdir\(x\) v] to [-33]\nset [camdir\(y\) v] to [48]\n\nset [camdir\(y\) v] to (() * (0.2))\n\nchange [hitboxdetected? v] by (1)\n\nCP DETECTION || x (Player X) y (Player Y) z (Player Z) HEIGHT (Player Height)\nTRAMPOLINE DETECTION || x (Player X) y (Player Y) z (Player Z) HEIGHT (Player Height) [] []\n\nCP DETECTION || x (Player X) y (Player Y) z (Player Z) HEIGHT (Player Height)\nTRAMPOLINE DETECTION || x (Player X) y (Player Y) z (Player Z) HEIGHT (Player Height) [] []\n\nset [cx v] to [0]\nset [cy v] to [200]\nset [cz v] to [0]\n\ndefine GENERATE PLAYER MESH || XP (xp) YP (yp) ZP (zp) || XW (xw) YW (yw) ZW (zw)\ndelete all of [player mesh v]\nif <((xp) + ((xw) / (2))) > ((xp) - ((xw) / (2)))> then\n    add ((xp) - ((xw) / (2))) to [player mesh v]\n    add ((xp) + ((xw) / (2))) to [player mesh v]\nelse\n    add ((xp) + ((xw) / (2))) to [player mesh v]\n    add ((xp) - ((xw) / (2))) to [player mesh v]\nend\nif <(yp) > ((yp) - (yw))> then\n    add ((yp) - (yw)) to [player mesh v]\n    add (yp) to [player mesh v]\nelse\n    add (yp) to [player mesh v]\n    add ((yp) - (yw)) to [player mesh v]\nend\nif <((zp) + ((zw) / (2))) > ((zp) - ((zw) / (2)))> then\n    add ((zp) - ((zw) / (2))) to [player mesh v]\n    add ((zp) + ((zw) / (2))) to [player mesh v]\nelse\n    add ((zp) + ((zw) / (2))) to [player mesh v]\n    add ((zp) - ((zw) / (2))) to [player mesh v]\nend\n\ndefine POSITION CAMERA\nif <key (o v) pressed?> then\n    change [camtoplayerdis v] by (-25)\nend\nif <key (i v) pressed?> then\n    change [camtoplayerdis v] by (25)\nend\nif <(CAMTOPLAYERDIS) > [0]> then\n    set [camtoplayerdis v] to [-1]\nend\nif <mouse down?> then\n    set [camxaxisangle v] to ((mouse y) * (.4))\n    change [camyaxisangle v] by ((mouse x) * (0.03))\nend\nchange [camyaxisangle v] by ((<key (right arrow v) pressed?> - <key (left arrow v) pressed?>) * (3))\nset [camyaxisangle v] to ((CAMYAXISANGLE) mod (360))\nchange [camxaxisangle v] by ((<key (up arrow v) pressed?> - <key (down arrow v) pressed?>) * (3))\nif <(CAMXAXISANGLE) > [-3]> then\n    set [camxaxisangle v] to [-3]\nend\nif <[-87] > (CAMXAXISANGLE)> then\n    set [camxaxisangle v] to [-87]\nend\nset [camx v] to ((Player X) + (([sin v] of (CAMYAXISANGLE) ) * ((CAMTOPLAYERDIS) * ([cos v] of (CAMXAXISANGLE) ))))\nset [camy v] to ((Player Y) + (([sin v] of (CAMXAXISANGLE) ) * (CAMTOPLAYERDIS)))\nset [camz v] to ((Player Z) + (([cos v] of (CAMYAXISANGLE) ) * ((CAMTOPLAYERDIS) * ([cos v] of (CAMXAXISANGLE) ))))\nset [camdir\(y\) v] to ((< ((Player X) - (CAMX)) contains [-]?> * (180)) + ((90) - ([atan v] of (((Player Z) - (CAMZ)) / ((Player X) - (CAMX))) )))\nset [camdir\(x\) v] to ([atan v] of (((CAMY) - (Player Y)) / ((CAMTOPLAYERDIS) * ([cos v] of (CAMXAXISANGLE) ))) )\n\nset [camyaxisangle v] to [0]\n\nCP DETECTION || x [] y [] z [] HEIGHT [100]\n\ndefine SHADOW\ndelete all of [shadow v]\nset [countery v] to ((Player Y) - (Player Height))\nif < (Player X Width) contains [-]?> then\n    set [x1 v] to ((Player X) + ((Player X Width) / (2)))\n    set [x2 v] to ((Player X) - ((Player X Width) / (2)))\nelse\n    set [x1 v] to ((Player X) - ((Player X Width) / (2)))\n    set [x2 v] to ((Player X) + ((Player X Width) / (2)))\nend\nif < (Player Z Width) contains [-]?> then\n    set [z1 v] to ((Player Z) + ((Player Z Width) / (2)))\n    set [z2 v] to ((Player Z) - ((Player Z Width) / (2)))\nelse\n    set [z1 v] to ((Player Z) - ((Player Z Width) / (2)))\n    set [z2 v] to ((Player Z) + ((Player Z Width) / (2)))\nend\nSOLID DETECTION || x (Player X) y (COUNTERY) z (Player Z) || PLAYER HEIGHT [0] WIDTH (Player X Width) (Player Z Width)\nLAVA DETECTION || x (Player X) y (COUNTERY) z (Player Z) HEIGHT [0] WIDTH (Player X Width) (Player Z Width)\nif <(HITBOXDETECTED?) = [1]> then\n\nset [z1 v] to ((Player Z) + ((Player Z Width) / (2)))\nset [z2 v] to ((Player Z) - ((Player Z Width) / (2)))\n\nCP DETECTION || x (Player X) y (COUNTERY) z (Player Z) HEIGHT [0]\nTRAMPOLINE DETECTION || x (Player X) y (COUNTERY) z (Player Z) HEIGHT [0] [] []\nCP DETECTION || x (Player X) y (COUNTERY) z (Player Z) HEIGHT [0]\nTRAMPOLINE DETECTION || x (Player X) y (COUNTERY) z (Player Z) HEIGHT [0] [] []\n\n\n\nset [camxaxisangle v] to [0]\nset [camyaxisangle v] to [-30]\n\nwhen [up arrow v] key pressed\nif <not <key (up arrow v) pressed?>> then\n    change [camtoplayerdis v] by (25)\nend\n\nwhen [down arrow v] key pressed\nif <not <key (down arrow v) pressed?>> then\n    change [camtoplayerdis v] by (-25)\nend\n\nwhen I receive [begin v]\nforever\n    if <key (r v) pressed?> then\n        start sound [Crunch v]\n        broadcast (RESET v)\n        wait until <not <key (r v) pressed?>>\n    end\nend\n\n@Horizon\n\nwhen flag clicked\nhide\ngo to [back v] layer\n\nwhen I receive [frame v]\n\nwhen I receive [pre frame v]\nerase all\nshow\ngo to x: (0) y: (([tan v] of ((0) - (CAMDIR\(X\))) ) * (DISTANCEOSCREEN))\nstamp\nhide\n\n@PEN\n\nwhen I receive [frame v]\nRENDER\n\ndefine ROTATION MATRIX || x (x) z (z) sin (sin) cos (cos)\nset [rotx v] to (((z) * (sin)) + ((x) * (cos)))\nset [rotz v] to (((z) * (cos)) - ((x) * (sin)))\n\ndefine ROTATION MATRIX || y (y) z (z) sin (sin) cos (cos)\nset [roty v] to (((z) * (sin)) + ((y) * (cos)))\nset [rotz v] to (((z) * (cos)) - ((y) * (sin)))\n\ndefine 3D || x (x) y (y) z (z) TYPE (type)\nif <(z) > [0]> then\n    set [scrx v] to ((x) * ((DISTANCEOSCREEN) / (z)))\n    set [scry v] to ((y) * ((DISTANCEOSCREEN) / (z)))\n    if <(type) = [3]> then\n        add (SCRX) to [triangle fill v]\n        add (SCRY) to [triangle fill v]\n    else\n        if <(type) = [2]> then\n            go to x: (SCRX) y: (SCRY)\n        else\n            GO TO (SCRX) (SCRY)\n        end\n    end\nend\nset [targetx v] to (SCRX)\nset [targety v] to (SCRY)\n\ndefine GET POS OF || x: (x) y: (y) z: (z) TYPE (type)\nROTATION MATRIX || x ((x) - (CAMX)) z ((z) - (CAMZ)) sin ((0) - (CYDS)) cos (CYDC)\nROTATION MATRIX || y ((y) - (CAMY)) z (ROTZ) sin ((0) - (CXDS)) cos (CXDC)\n3D || x (ROTX) y (ROTY) z (ROTZ) TYPE (type)\n\ndefine DRAW (type)\npen up\nset pen size to (3)\nset pen (transparency v) to (0)\nset pen (brightness v) to (100)\nif <(type) = [1]> then\n    set pen color to (#c38865)\nelse\n    if <(type) = [2]> then\n        set pen color to (#fff694)\n    else\n        if <(type) = [3]> then\n            set pen color to (#dc0000)\n        else\n            if <(type) = [4]> then\n                set pen color to (#00a9ff)\n            else\n                if <(type) = [5]> then\n                    set pen color to (#cc55ff)\n                else\n                    if <(type) = [6]> then\n                        set pen color to (#000000)\n                    else\n                        if <(type) = [7]> then\n                            set pen color to (#ff9400)\n                        else\n                            if <(type) = [8]> then\n                                set pen color to (#1cb919)\n                            else\n                                set pen (transparency v) to (100)\n                                set pen color to (#b0d8e9)\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\npen up\nif <(X?) = [1]> then\n    set pen (brightness v) to (60)\nelse\n    set pen (brightness v) to (95)\nend\nset pen size to (10)\nif <(type) = [6]> then\n    set pen (brightness v) to (0)\n    TOP FILL\nelse\n    pen up\n    DRAW SIDE\n    pen up\n    DRAW TOPS\n    pen up\n    set pen size to (3)\n    pen up\n    set pen (brightness v) to (95)\n    pen up\n    if <(X?) = [1]> then\n        TOP FILL\n        pen up\n        SIDE FILL\n        pen up\n    end\nend\n\ndefine DRAW SIDE\npen up\nGET POS OF || x: (x1) y: (y1) z: (z1) TYPE [2]\npen down\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE [1]\npen up\nGET POS OF || x: (x2) y: (y1) z: (z1) TYPE [2]\npen down\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE [1]\npen up\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [2]\npen down\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE [1]\npen up\nGET POS OF || x: (x1) y: (y1) z: (z2) TYPE [1]\npen down\nGET POS OF || x: (x1) y: (y2) z: (z2) TYPE [1]\npen up\n\nset [targetx v] to [99]\nset [targety v] to [1000]\n\npen up\n\ndefine DRAW TOPS\npen up\nGET POS OF || x: (x1) y: (y1) z: (z1) TYPE [1]\npen down\nGET POS OF || x: (x1) y: (y1) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [1]\nGET POS OF || x: (x1) y: (y1) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y1) z: (z1) TYPE [1]\nGET POS OF || x: (x1) y: (y1) z: (z1) TYPE [1]\npen up\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE [2]\npen down\nGET POS OF || x: (x1) y: (y2) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE [1]\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE [1]\npen up\nif <(X?) = [1]> then\nend\n\nTOP FILL\n\nDRAW []\n\nforever\n    pen down\n    go to (random position v)\nend\n\ndefine RENDER\nMESH RENDER\nshow\nswitch costume to (costume3 v)\nset pen (transparency v) to (100)\npen up\nset [i2 v] to [1]\nrepeat (length of [mesh data v])\n    set [i v] to [1]\n    READ VALUE (item (i2) of [mesh data v])\n    set [i3 v] to (value)\n    READ VALUE (item (i2) of [mesh data v])\n    set [x1 v] to (value)\n    READ VALUE (item (i2) of [mesh data v])\n    set [x2 v] to (value)\n    READ VALUE (item (i2) of [mesh data v])\n    set [y1 v] to (value)\n    READ VALUE (item (i2) of [mesh data v])\n    set [y2 v] to (value)\n    READ VALUE (item (i2) of [mesh data v])\n    set [z1 v] to (value)\n    READ VALUE (item (i2) of [mesh data v])\n    set [z2 v] to (value)\n    DRAW (i3)\n    change [i2 v] by (1)\nend\nSHADOW RENDER\nPLAYER RENDER\nswitch costume to (costume1 v)\nhide\n\nDIRT RENDER\nGRASS RENDER\nBOUNCE RENDER\nLAVA RENDER\nCP RENDER\nWIN RENDER\n\nSHADOW RENDER\nPLAYER RENDER\n\nerase all\n\nDRAW [1]\n\ndefine GO TO (x) (y)\nset [i v] to [1]\nrepeat (20)\n    go to x: ((TARGETX) + ((((SCRX) - (TARGETX)) / (20)) * (i))) y: ((TARGETY) + ((((SCRY) - (TARGETY)) / (20)) * (i)))\n    change [i v] by (1)\nend\n\nGET POS OF || x: (x1) y: [] z: [] TYPE []\nGET POS OF || x: (x2) y: [] z: (z2) TYPE []\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE []\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE []\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE []\nGET POS OF || x: (x1) y: (y2) z: (z2) TYPE []\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE []\npen up\n\nGO TO [] []\nGET POS OF || x: (x1) y: [] z: (z1) TYPE []\n\nif <not <(i) = [20]>> then\n    repeat until <(i) = [20]>\nend\n\n\n\nif <not <touching (border v)?>> then\n\nchange [i v] by (1)\n\nset [i v] to [0]\n\ngo to x: ((SCRX) - ()) y: ((SCRY) - ())\n\ndefine SIDE X\nGET POS OF || x: (x2) y: (y1) z: (z1) TYPE [2]\npen down\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE [1]\nGET POS OF || x: (x1) y: (y1) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y1) z: (z1) TYPE [1]\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE [1]\nGET POS OF || x: (x1) y: (y1) z: (z1) TYPE [1]\nGET POS OF || x: (x1) y: (y2) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE [1]\npen up\n\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [2]\nGET POS OF || x: (x1) y: [] z: (z1) TYPE []\n\ndefine TOP X\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [1]\npen down\nGET POS OF || x: (x2) y: (y1) z: (z1) TYPE [1]\nGET POS OF || x: (x1) y: (y1) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [1]\nGET POS OF || x: (x1) y: (y1) z: (z1) TYPE [1]\npen up\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE [1]\npen down\nGET POS OF || x: (x1) y: (y2) z: (z2) TYPE [1]\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE [1]\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE [1]\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE [1]\npen up\n\ndefine BOUNCE RENDER\nset [counter v] to [0]\nrepeat ((length of [trampoline hitbox v]) / (6))\n    set [x1 v] to (item ((Counter) + (1)) of [trampoline hitbox v])\n    set [x2 v] to (item ((Counter) + (2)) of [trampoline hitbox v])\n    set [y1 v] to (item ((Counter) + (3)) of [trampoline hitbox v])\n    set [y2 v] to (item ((Counter) + (4)) of [trampoline hitbox v])\n    set [z1 v] to (item ((Counter) + (5)) of [trampoline hitbox v])\n    set [z2 v] to (item ((Counter) + (6)) of [trampoline hitbox v])\n    DRAW [2]\n    change [counter v] by (6)\n    pen up\nend\n\ndefine LAVA RENDER\nset [counter v] to [0]\nrepeat ((length of [lava hitbox v]) / (6))\n    set [x1 v] to (item ((Counter) + (1)) of [lava hitbox v])\n    set [x2 v] to (item ((Counter) + (2)) of [lava hitbox v])\n    set [y1 v] to (item ((Counter) + (3)) of [lava hitbox v])\n    set [y2 v] to (item ((Counter) + (4)) of [lava hitbox v])\n    set [z1 v] to (item ((Counter) + (5)) of [lava hitbox v])\n    set [z2 v] to (item ((Counter) + (6)) of [lava hitbox v])\n    DRAW [3]\n    change [counter v] by (6)\n    pen up\nend\n\ndefine CP RENDER\nset [counter v] to [0]\nrepeat ((length of [checkpoint hitboxes v]) / (6))\n    set [x1 v] to (item ((Counter) + (1)) of [checkpoint hitboxes v])\n    set [x2 v] to (item ((Counter) + (2)) of [checkpoint hitboxes v])\n    set [y1 v] to (item ((Counter) + (3)) of [checkpoint hitboxes v])\n    set [y2 v] to (item ((Counter) + (4)) of [checkpoint hitboxes v])\n    set [z1 v] to (item ((Counter) + (5)) of [checkpoint hitboxes v])\n    set [z2 v] to (item ((Counter) + (6)) of [checkpoint hitboxes v])\n    DRAW [4]\n    change [counter v] by (6)\n    pen up\nend\n\ndefine WIN RENDER\nset [counter v] to [0]\nset [x1 v] to (item ((Counter) + (1)) of [winner mesh v])\nset [x2 v] to (item ((Counter) + (2)) of [winner mesh v])\nset [y1 v] to (item ((Counter) + (3)) of [winner mesh v])\nset [y2 v] to (item ((Counter) + (4)) of [winner mesh v])\nset [z1 v] to (item ((Counter) + (5)) of [winner mesh v])\nset [z2 v] to (item ((Counter) + (6)) of [winner mesh v])\nDRAW [5]\npen up\n\nhide\n\nclear graphic effects\n\nset pen color to (#07a6e9)\n\ndefine PLAYER RENDER\nset [counter v] to [0]\nset [x1 v] to (item ((Counter) + (1)) of [player mesh v])\nset [x2 v] to (item ((Counter) + (2)) of [player mesh v])\nset [y1 v] to (item ((Counter) + (3)) of [player mesh v])\nset [y2 v] to (item ((Counter) + (4)) of [player mesh v])\nset [z1 v] to (item ((Counter) + (5)) of [player mesh v])\nset [z2 v] to (item ((Counter) + (6)) of [player mesh v])\nDRAW [7]\npen up\n\ndefine SHADOW RENDER\nset [counter v] to [0]\nrepeat ((length of [shadow v]) / (6))\n    set [x1 v] to (item ((Counter) + (1)) of [shadow v])\n    set [x2 v] to (item ((Counter) + (2)) of [shadow v])\n    set [y1 v] to (item ((Counter) + (3)) of [shadow v])\n    set [y2 v] to (item ((Counter) + (4)) of [shadow v])\n    set [z1 v] to (item ((Counter) + (5)) of [shadow v])\n    set [z2 v] to (item ((Counter) + (6)) of [shadow v])\n    DRAW [6]\n    pen up\nend\n\nset pen (transparency v) to (100)\nset pen color to (#b0d8e9)\n\ndefine GRASS RENDER\nset [counter v] to [0]\nrepeat ((length of [grass meshes v]) / (6))\n    set [x1 v] to (item ((Counter) + (1)) of [grass meshes v])\n    set [x2 v] to (item ((Counter) + (2)) of [grass meshes v])\n    set [y1 v] to (item ((Counter) + (3)) of [grass meshes v])\n    set [y2 v] to (item ((Counter) + (4)) of [grass meshes v])\n    set [z1 v] to (item ((Counter) + (5)) of [grass meshes v])\n    set [z2 v] to (item ((Counter) + (6)) of [grass meshes v])\n    pen up\n    DRAW [8]\n    pen up\n    change [counter v] by (6)\nend\n\ndefine DIRT RENDER\nset [counter v] to [0]\nrepeat ((length of [dirt meshes v]) / (6))\n    set [x1 v] to (item ((Counter) + (1)) of [dirt meshes v])\n    set [x2 v] to (item ((Counter) + (2)) of [dirt meshes v])\n    set [y1 v] to (item ((Counter) + (3)) of [dirt meshes v])\n    set [y2 v] to (item ((Counter) + (4)) of [dirt meshes v])\n    set [z1 v] to (item ((Counter) + (5)) of [dirt meshes v])\n    set [z2 v] to (item ((Counter) + (6)) of [dirt meshes v])\n    pen up\n    DRAW [1]\n    pen up\n    change [counter v] by (6)\nend\n\ndefine TOP FILL\ndelete all of [triangle fill v]\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE [3]\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE [3]\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\ndelete all of [triangle fill v]\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE [3]\nGET POS OF || x: (x1) y: (y2) z: (z2) TYPE [3]\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\ndelete all of [triangle fill v]\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [3]\nGET POS OF || x: (x2) y: (y1) z: (z1) TYPE [3]\nGET POS OF || x: (x1) y: (y1) z: (z1) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\ndelete all of [triangle fill v]\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [3]\nGET POS OF || x: (x1) y: (y1) z: (z2) TYPE [3]\nGET POS OF || x: (x1) y: (y1) z: (z1) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\n\nTOP X\n\ndefine fill (ax) (ay) (bx) (by) (cx) (cy) resolution: (res)\nif <(length of [triangle fill v]) = [6]> then\n    set [lena v] to ([sqrt v] of ((((bx) - (cx)) * ((bx) - (cx))) + (((by) - (cy)) * ((by) - (cy)))) )\n    set [lenb v] to ([sqrt v] of ((((ax) - (cx)) * ((ax) - (cx))) + (((ay) - (cy)) * ((ay) - (cy)))) )\n    set [lenc v] to ([sqrt v] of ((((ax) - (bx)) * ((ax) - (bx))) + (((ay) - (by)) * ((ay) - (by)))) )\n    set [peri v] to ((1) / (((lena) + (lenb)) + (lenc)))\n    set [incx v] to (((((lena) * (ax)) + ((lenb) * (bx))) + ((lenc) * (cx))) * (peri))\n    set [incy v] to (((((lena) * (ay)) + ((lenb) * (by))) + ((lenc) * (cy))) * (peri))\n    set [ind v] to ([sqrt v] of ((((((lenb) + (lenc)) - (lena)) * (((lenc) + (lena)) - (lenb))) * (((lena) + (lenb)) - (lenc))) * (peri)) )\n    set [aox v] to ((incx) - (ax))\n    set [aoy v] to ((incy) - (ay))\n    set [box v] to ((incx) - (bx))\n    set [boy v] to ((incy) - (by))\n    set [cox v] to ((incx) - (cx))\n    set [coy v] to ((incy) - (cy))\n    if <<(lena) < (lenb)> and <(lena) < (lenc)>> then\n        set [td v] to ([sqrt v] of (((Aox) * (Aox)) + ((Aoy) * (Aoy))) )\n    else\n        if <<(lenb) > (lena)> or <(lenb) > (lenc)>> then\n            set [td v] to ([sqrt v] of (((Cox) * (Cox)) + ((Coy) * (Coy))) )\n        else\n            set [td v] to ([sqrt v] of (((Box) * (Box)) + ((Boy) * (Boy))) )\n        end\n    end\n    set [rate v] to ((((td) * (2)) - (ind)) / ((td) * (4)))\n    set [td v] to ((1) + (0))\n    go to x: (round (incx)) y: (round (incy))\n    if <[200] > (ind)> then\n        set pen size to (ind)\n    else\n        set pen size to (200)\n    end\n    pen down\n    repeat ([ceiling v] of (([log v] of ((res) / (ind)) ) / ([log v] of (rate) )) )\n        set [td v] to ((td) * (rate))\n        if <[150] > ((ind) * (td))> then\n            set pen size to ((ind) * (td))\n        else\n            set pen size to (150)\n        end\n        go to x: (((Aox) * (td)) + (ax)) y: (((Aoy) * (td)) + (ay))\n        go to x: (((Box) * (td)) + (bx)) y: (((Boy) * (td)) + (by))\n        go to x: (((Cox) * (td)) + (cx)) y: (((Coy) * (td)) + (cy))\n        go to x: (((Aox) * (td)) + (ax)) y: (((Aoy) * (td)) + (ay))\n    end\n    set pen size to (res)\n    go to x: (ax) y: (ay)\n    go to x: (bx) y: (by)\n    go to x: (cx) y: (cy)\n    go to x: (ax) y: (ay)\n    pen up\nend\n\nset pen size to (10)\n\ndefine SIDE FILL\ndelete all of [triangle fill v]\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE [3]\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE [3]\nGET POS OF || x: (x1) y: (y1) z: (z1) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\ndelete all of [triangle fill v]\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE [3]\nGET POS OF || x: (x2) y: (y1) z: (z1) TYPE [3]\nGET POS OF || x: (x1) y: (y1) z: (z1) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\ndelete all of [triangle fill v]\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE [3]\nGET POS OF || x: (x2) y: (y1) z: (z1) TYPE [3]\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\ndelete all of [triangle fill v]\nGET POS OF || x: (x2) y: (y2) z: (z1) TYPE [3]\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE [3]\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\ndelete all of [triangle fill v]\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE [3]\nGET POS OF || x: (x1) y: (y2) z: (z2) TYPE [3]\nGET POS OF || x: (x1) y: (y1) z: (z2) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\ndelete all of [triangle fill v]\nGET POS OF || x: (x2) y: (y2) z: (z2) TYPE [3]\nGET POS OF || x: (x2) y: (y1) z: (z2) TYPE [3]\nGET POS OF || x: (x1) y: (y1) z: (z2) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\ndelete all of [triangle fill v]\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE [3]\nGET POS OF || x: (x1) y: (y1) z: (z1) TYPE [3]\nGET POS OF || x: (x1) y: (y1) z: (z2) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\ndelete all of [triangle fill v]\nGET POS OF || x: (x1) y: (y2) z: (z1) TYPE [3]\nGET POS OF || x: (x1) y: (y2) z: (z2) TYPE [3]\nGET POS OF || x: (x1) y: (y1) z: (z2) TYPE [3]\nfill (item (1) of [triangle fill v]) (item (2) of [triangle fill v]) (item (3) of [triangle fill v]) (item (4) of [triangle fill v]) (item (5) of [triangle fill v]) (item (6) of [triangle fill v]) resolution: (1)\n\nSIDE FILL\n\nset pen (brightness v) to (100)\n\ndefine MESH RENDER\ndelete all of [hitdis v]\ndelete all of [mesh data v]\nset [lena v] to [0]\nrepeat (8)\n    change [lena v] by (1)\n    if <(lena) = [1]> then\n        set [lenb v] to (length of [dirt meshes v])\n    else\n        if <(lena) = [2]> then\n            set [lenb v] to (length of [trampoline hitbox v])\n        else\n            if <(lena) = [3]> then\n                set [lenb v] to (length of [lava hitbox v])\n            else\n                if <(lena) = [4]> then\n                    set [lenb v] to (length of [checkpoint hitboxes v])\n                else\n                    if <(lena) = [5]> then\n                        set [lenb v] to (length of [winner mesh v])\n                    else\n                        if <(lena) = [6]> then\n                            set [lenb v] to (length of [shadow v])\n                        else\n                            if <(lena) = [7]> then\n                                set [lenb v] to (length of [player mesh v])\n                            else\n                                set [lenb v] to (length of [grass meshes v])\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\n    set [i v] to [0]\n    repeat ((lenb) / (6))\n        if <(lena) = [1]> then\n            set [x1 v] to ((CAMX) - (((item ((i) + (1)) of [dirt meshes v]) + (item ((i) + (2)) of [dirt meshes v])) / (2)))\n            set [y1 v] to ((CAMY) - (((item ((i) + (3)) of [dirt meshes v]) + (item ((i) + (4)) of [dirt meshes v])) / (2)))\n            set [z1 v] to ((CAMZ) - (((item ((i) + (5)) of [dirt meshes v]) + (item ((i) + (6)) of [dirt meshes v])) / (2)))\n            set [lenc v] to ([sqrt v] of (((x1) * (x1)) + (((y1) * (y1)) + ((z1) * (z1)))) )\n        else\n            if <(lena) = [2]> then\n                set [x1 v] to ((CAMX) - (((item ((i) + (1)) of [trampoline hitbox v]) + (item ((i) + (2)) of [trampoline hitbox v])) / (2)))\n                set [y1 v] to ((CAMY) - (((item ((i) + (3)) of [trampoline hitbox v]) + (item ((i) + (4)) of [trampoline hitbox v])) / (2)))\n                set [z1 v] to ((CAMZ) - (((item ((i) + (5)) of [trampoline hitbox v]) + (item ((i) + (6)) of [trampoline hitbox v])) / (2)))\n                set [lenc v] to ([sqrt v] of (((x1) * (x1)) + (((y1) * (y1)) + ((z1) * (z1)))) )\n            else\n                if <(lena) = [3]> then\n                    set [x1 v] to ((CAMX) - (((item ((i) + (1)) of [lava hitbox v]) + (item ((i) + (2)) of [lava hitbox v])) / (2)))\n                    set [y1 v] to ((CAMY) - (((item ((i) + (3)) of [lava hitbox v]) + (item ((i) + (4)) of [lava hitbox v])) / (2)))\n                    set [z1 v] to ((CAMZ) - (((item ((i) + (5)) of [lava hitbox v]) + (item ((i) + (6)) of [lava hitbox v])) / (2)))\n                    set [lenc v] to ([sqrt v] of (((x1) * (x1)) + (((y1) * (y1)) + ((z1) * (z1)))) )\n                else\n                    if <(lena) = [4]> then\n                        set [x1 v] to ((CAMX) - (((item ((i) + (1)) of [checkpoint hitboxes v]) + (item ((i) + (2)) of [checkpoint hitboxes v])) / (2)))\n                        set [y1 v] to ((CAMY) - (((item ((i) + (3)) of [checkpoint hitboxes v]) + (item ((i) + (4)) of [checkpoint hitboxes v])) / (2)))\n                        set [z1 v] to ((CAMZ) - (((item ((i) + (5)) of [checkpoint hitboxes v]) + (item ((i) + (6)) of [checkpoint hitboxes v])) / (2)))\n                        set [lenc v] to ([sqrt v] of (((x1) * (x1)) + (((y1) * (y1)) + ((z1) * (z1)))) )\n                    else\n                        if <(lena) = [5]> then\n                            set [x1 v] to ((CAMX) - (((item ((i) + (1)) of [winner mesh v]) + (item ((i) + (2)) of [winner mesh v])) / (2)))\n                            set [y1 v] to ((CAMY) - (((item ((i) + (3)) of [winner mesh v]) + (item ((i) + (4)) of [winner mesh v])) / (2)))\n                            set [z1 v] to ((CAMZ) - (((item ((i) + (5)) of [winner mesh v]) + (item ((i) + (6)) of [winner mesh v])) / (2)))\n                            set [lenc v] to ([sqrt v] of (((x1) * (x1)) + (((y1) * (y1)) + ((z1) * (z1)))) )\n                        else\n                            if <(lena) = [6]> then\n                                set [x1 v] to ((CAMX) - (((item ((i) + (1)) of [shadow v]) + (item ((i) + (2)) of [shadow v])) / (2)))\n                                set [y1 v] to ((CAMY) - (((item ((i) + (3)) of [shadow v]) + (item ((i) + (4)) of [shadow v])) / (2)))\n                                set [z1 v] to ((CAMZ) - (((item ((i) + (5)) of [shadow v]) + (item ((i) + (6)) of [shadow v])) / (2)))\n                                set [lenc v] to ([sqrt v] of (((x1) * (x1)) + (((y1) * (y1)) + ((z1) * (z1)))) )\n                            else\n                                if <(lena) = [7]> then\n                                    set [x1 v] to ((CAMX) - (((item ((i) + (1)) of [player mesh v]) + (item ((i) + (2)) of [player mesh v])) / (2)))\n                                    set [y1 v] to ((CAMY) - (item ((i) + (4)) of [player mesh v]))\n                                    set [z1 v] to ((CAMZ) - (((item ((i) + (5)) of [player mesh v]) + (item ((i) + (6)) of [player mesh v])) / (2)))\n                                    set [lenc v] to ([sqrt v] of (((x1) * (x1)) + (((y1) * (y1)) + ((z1) * (z1)))) )\n                                else\n                                    set [x1 v] to ((CAMX) - (((item ((i) + (1)) of [grass meshes v]) + (item ((i) + (2)) of [grass meshes v])) / (2)))\n                                    set [y1 v] to ((CAMY) - (((item ((i) + (3)) of [grass meshes v]) + (item ((i) + (4)) of [grass meshes v])) / (2)))\n                                    set [z1 v] to ((CAMZ) - (((item ((i) + (5)) of [grass meshes v]) + (item ((i) + (6)) of [grass meshes v])) / (2)))\n                                    set [lenc v] to ([sqrt v] of (((x1) * (x1)) + (((y1) * (y1)) + ((z1) * (z1)))) )\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n        SORT (lenc) TYPE (lena)\n        change [i v] by (6)\n    end\nend\n\nchange [counter v] by (1)\n\ndefine SORT (dis) TYPE (type)\nset [counter v] to [1]\nrepeat until <not <(item (Counter) of [hitdis v]) > (dis)>>\n    change [counter v] by (1)\nend\ninsert (dis) at (Counter) of [hitdis v] \nset [value v] to []\nVALUE ADD (type) DELIMITER [/]\nset [td v] to [0]\nrepeat (6)\n    change [td v] by (1)\n    if <(type) = [1]> then\n        VALUE ADD (item ((i) + (td)) of [dirt meshes v]) DELIMITER [/]\n    else\n        if <(type) = [2]> then\n            VALUE ADD (item ((i) + (td)) of [trampoline hitbox v]) DELIMITER [/]\n        else\n            if <(type) = [3]> then\n                VALUE ADD (item ((i) + (td)) of [lava hitbox v]) DELIMITER [/]\n            else\n                if <(type) = [4]> then\n                    VALUE ADD (item ((i) + (td)) of [checkpoint hitboxes v]) DELIMITER [/]\n                else\n                    if <(type) = [5]> then\n                        VALUE ADD (item ((i) + (td)) of [winner mesh v]) DELIMITER [/]\n                    else\n                        if <(type) = [6]> then\n                            VALUE ADD (item ((i) + (td)) of [shadow v]) DELIMITER [/]\n                        else\n                            if <(type) = [7]> then\n                                VALUE ADD (item ((i) + (td)) of [player mesh v]) DELIMITER [/]\n                            else\n                                VALUE ADD (item ((i) + (td)) of [grass meshes v]) DELIMITER [/]\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\ninsert (value) at (Counter) of [mesh data v] \n\ndefine VALUE ADD (value) DELIMITER (d)\nset [value v] to (join (value) (join (value) (d)))\n\nif <(type) = [1]> then\n    set pen color to (#c38865)\nelse\n    if <(type) = [2]> then\n        set pen color to (#fff694)\n    else\n        if <(type) = [3]> then\n            set pen color to (#dc0000)\n        else\n            if <(type) = [4]> then\n                set pen color to (#00a9ff)\n            else\n                if <(type) = [5]> then\n                    set pen color to (#cc55ff)\n                else\n                    if <(type) = [6]> then\n                        set pen color to (#000000)\n                    else\n                        if <(type) = [7]> then\n                            set pen color to (#ff9400)\n                        else\n                            if <(type) = [8]> then\n                                set pen color to (#1cb919)\n                            else\n                                set pen (transparency v) to (100)\n                                set pen color to (#b0d8e9)\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\nDRAW TOPS\nDRAW SIDE\n\nSORT [] TYPE []\n\nforever\nend\n\ndefine READ VALUE (value)\nset [value v] to []\nREAD LETTER (value)\nrepeat until <<[] = (ltr)> or <(ltr) = [/]>>\n    set [value v] to (join (value) (ltr))\n    READ LETTER (value)\nend\n\ndefine READ LETTER (value)\nset [ltr v] to (letter (i) of (value))\nchange [i v] by (1)\n\nset [i v] to [1]\n\nTOP X\nSIDE X\n\nif <(type) = [7]> then\n    DRAW TOPS\n    DRAW SIDE\nend\n\nif  then\nend\n\nset pen size to (10)\nif <(type) = [6]> then\n    set pen (brightness v) to (0)\n    TOP FILL\nelse\n    pen up\n    DRAW SIDE\n    pen up\n    DRAW TOPS\n    pen up\n    set pen size to (3)\n    pen up\n    set pen (brightness v) to (95)\n    pen up\n    if <(X?) = [1]> then\n        TOP FILL\n        pen up\n        SIDE FILL\n        pen up\n    end\nend\n\n@BORDER\n\n@win manager and fps\n\nwhen flag clicked\nhide\nset [camxaxisangle v] to [-30]\nset [camyaxisangle v] to [0]\nset [camtoplayerdis v] to [-375]\nforever\n    last tick (t30)\nend\n\nwhen I receive [win v]\nchange [level v] by (1)\nif <(level) = [6]> then\n    stop all sounds\n    broadcast (CREDITS v)\nelse\n    start sound [Coin v]\n    set [cx v] to [0]\n    set [cy v] to [200]\n    set [cz v] to [0]\n    set [godmode? v] to [0]\n    set [camxaxisangle v] to [-30]\n    set [camyaxisangle v] to [0]\n    set [camtoplayerdis v] to [-375]\n    broadcast (RESET v)\nend\n\ndefine last tick (lasttick)\nset [t30 v] to ((30) * (timer))\nset [fps v] to (round ((30) / ((t30) - (lasttick))))\n\nwhen I start as a clone\nshow\nclear graphic effects\nswitch costume to (black v)\n\nstop [all v]\n\nplay sound [Tada v] until done\n\nwhen I receive [credits v]\nshow\ngo to [front v] layer\ncreate clone of (_myself_ v)\nset [win v] to [1]\ngo to [front v] layer\nswitch costume to (empty v)\nrepeat (6)\n    next costume\n    set [ghost v] effect to (100)\n    wait (1) seconds\n    repeat (100)\n        change [ghost v] effect by (-1)\n    end\n    wait (5) seconds\n    repeat (100)\n        change [ghost v] effect by (1)\n    end\nend\nnext costume\nset [ghost v] effect to (100)\nwait (1) seconds\nrepeat (100)\n    change [ghost v] effect by (-1)\nend\nwait (10) seconds\nrepeat (100)\n    change [ghost v] effect by (1)\nend\nnext costume\nset [ghost v] effect to (100)\nwait (1) seconds\nrepeat (100)\n    change [ghost v] effect by (-1)\nend\n\ndelete this clone\n\nset [ghost v] effect to (100)\nswitch costume to (txt v)\nwait (1) seconds\nrepeat (100)\n    change [ghost v] effect by (-1)\nend\nwait (10) seconds\n\ngo to [front v] layer\n\nrepeat (2)\n    next costume\n    set [ghost v] effect to (100)\n    wait (1) seconds\n    repeat (100)\n        change [ghost v] effect by (-1)\n    end\n    wait (5) seconds\n    repeat (100)\n        change [ghost v] effect by (1)\n    end\nend\n\nbroadcast (CREDITS v)\n\nwhen I receive [credits v]\nplay sound [Vexento - Affectus v] until done\nstop [all v]\n\nstart sound [Vexento - Affectus v]\n\n@Screenshot 2022-11-14 16\n\nwhen flag clicked\nhide\n\nshow\ngo to [front v] layer\nset [level v] to [5]\nset [camy v] to [1227]\nset [camx v] to [-1106]\nset [camz v] to [2529]\nset [camdir\(y\) v] to [120]\nset [camdir\(x\) v] to [-27]\n\n@Nova thing plus scratch confirmer\n\nwhen flag clicked\n\ndefine try\ndelete all of [checking list v]\nrepeat (200001)\n    add [] to [checking list v]\nend\nif <not <<not <[1] = <[50] = [50]>>> or <(length of [checking list v]) = [200001]>>> then\n    set [scratch? v] to [1]\nelse\n    set [scratch? v] to [0]\nend\n\nwhen I receive [game start v]\ndelete this clone\n\nwhen I start as a clone\nswitch costume to (costume1 v)\n\nwhen I receive [start v]\ntry\ngo to x: (0) y: (0)\nif <(Scratch?) = [1]> then\n    show\n    go to [front v] layer\n    create clone of (_myself_ v)\n    go to [front v] layer\n    switch costume to (nova v)\n    wait until <not <mouse down?>>\n    wait until <mouse down?>\nend\nbroadcast (GAME START v)\nhide\n\n@TRUE INTRO 3\n\nwhen flag clicked\nshow\ngo to [front v] layer\n\nwhen I receive [start v]\nhide\n\n@TRUE INTRO 1\n\nwhen flag clicked\ngo to [front v] layer\nhide\nwait (0.5) seconds\nshow\ngo to [front v] layer\ngo to x: (-500) y: (0)\nglide toward [0] [10]\nwait (0.5) seconds\nglide towards [80] [10]\nwait (0.5) seconds\nset [type v] to [1]\nbroadcast (a v)\n\nset [type v] to [0]\n\nswitch costume to (costume2 v)\ncreate clone of (_myself_ v)\n\ncreate clone of (_myself_ v)\nstop [other scripts in sprite v]\nstop [this script v]\n\ndefine glide toward (x) (speed)\nrepeat until <<(x position) = (x)> or <(x position) > (x)>>\n    change x by ([ceiling v] of (((x) - (x position)) / (speed)) )\nend\ngo to x: (x) y: (y position)\n\ndefine glide towards (y) (speed)\nrepeat until <<(y position) = (y)> or <(y position) > (y)>>\n    change y by ([ceiling v] of (((y) - (y position)) / (speed)) )\nend\ngo to x: (x position) y: (y)\n\nwhen I start as a clone\nif <(type) = [0]> then\n    switch costume to (costume3 v)\n    go to [front v] layer\n    go to x: (0) y: (0)\nelse\n    switch costume to (costume1 v)\n    go to x: (0) y: (80)\n    repeat until <<(y position) = [-50]> or <[-50] > (y position)>>\n        change y by ([floor v] of (((-50) - (y position)) / (10)) )\n    end\n    go to x: (x position) y: (-50)\n    wait (0.5) seconds\n    broadcast (shut v)\nend\n\nglide (1) secs to x: (0) y: (-50)\n\nglide towards [-50] [10]\n\nif <(type) = [1]> then\n\nthink [Hmm...] for (2) seconds\n\nwhen I receive [start v]\nhide\n\nwhen flag clicked\nplay sound [Introsong6 v] until done\n\nwhen flag clicked\nforever\n    go to [front v] layer\nend\n\n@TRUE INTRO 2\n\nwhen flag clicked\nhide\nclear graphic effects\n\nwhen I receive [shut v]\nwait (0.5) seconds\nshow\nclear graphic effects\ngo to x: (0) y: (500)\nrepeat until <<(y position) = [0]> or <[0] > (y position)>>\n    go to [front v] layer\n    change y by ([floor v] of (((0) - (y position)) / (10)) )\nend\ngo to x: (x position) y: (0)\nbroadcast (start v)\nrepeat (10)\n    change [ghost v] effect by (10)\nend\n\n@TRUE INTRO 4\n\nwhen I receive [a v]\nswitch costume to (costume1 v)\ngo to [front v] layer\ngo [backward v] (1) layers\nshow\ngo to x: (0) y: (80)\nrepeat until <<(y position) = [-50]> or <[-50] > (y position)>>\n    change y by ([floor v] of (((-50) - (y position)) / (10)) )\nend\ngo to x: (x position) y: (-50)\nwait (0.5) seconds\nbroadcast (shut v)\n\nwhen flag clicked\nhide\n\nwhen I receive [start v]\nhide\n\n@THUMBNAIL\n\nwhen flag clicked\nforever\n    go to [front v] layer\n    set [ghost v] effect to (100)\nend\n\nset [level v] to [5]\n\n