3D Platformer ✦ デモ版 v1.51
@Stage\n\nwhen flag clicked\nforever\n    if <(@LEVEL.id) = [2]> then\n        switch backdrop to (2 v)\n    else\n        switch backdrop to (1 v)\n    end\nend\n\nwhen flag clicked\nforever\n    set volume to (25) %\n    if <(pick random (1) to (2)) = [1]> then\n        play sound [Floating v] until done\n        play sound [Elektronomia_JJD_Free_NCS_Release_ v] until done\n    else\n        play sound [Elektronomia_JJD_Free_NCS_Release_ v] until done\n        play sound [Floating v] until done\n    end\nend\n\nwhen flag clicked\nforever\n    change [tick v] by (1)\nend\n\nwhen flag clicked\nset [temporary-platform-x-rot v] to [0]\nforever\n    wait (1.5) seconds\n    repeat (20)\n        change [temporary-platform-x-rot v] by (0.05)\n    end\n    wait (0.5) seconds\n    repeat (20)\n        change [temporary-platform-x-rot v] by (-0.05)\n    end\n    wait (1.5) seconds\nend\n\nwhen flag clicked\nset [@fps v] to [31]\nforever\n    set [_tick v] to (tick)\n    wait (1) seconds\n    set [@fps v] to ((tick) - (_tick))\nend\n\n@b l a n k\n\n@3D Platformer Engine by @TimMcCool\n\ndefine Joystick\ngo to x: (((item (1) of [screen size v]) * (-1)) + (50)) y: (-130)\nset rotation style [all around v]\npoint in direction (90)\nclear graphic effects\nswitch costume to (jump v)\nset size to (24) %\nset [ghost v] effect to (40)\nif <(joystick active?) = [0]> then\n    if <<mouse down?> and <touching (mouse-pointer v)?>> then\n        set [joystick active? v] to [1]\n        set [joystick jump impulse v] to [1]\n    end\nend\nstamp\ngo to x: (((item (1) of [screen size v]) * (1)) + (-50)) y: (-130)\nswitch costume to (joystick v)\nstamp\nset [ghost v] effect to (5)\nif <(joystick active?) = [0]> then\n    if <<mouse down?> and <touching (mouse-pointer v)?>> then\n        set [joystick active? v] to [1]\n        set [joystick jump impulse v] to [0]\n    end\nend\nif <(joystick active?) = [1]> then\n    if <mouse down?> then\n        if <(joystick jump impulse) = [1]> then\n            go to x: (((item (1) of [screen size v]) * (-1)) + (50)) y: (-130)\n        end\n        set rotation style [all around v]\n        point towards (mouse-pointer v)\n        set [joystick dir v] to (round (direction))\n        if <(distance to [mouse-pointer v]) > [20]> then\n            move (20) steps\n        else\n            move (distance to [mouse-pointer v]) steps\n        end\n        set size to (12) %\n        stamp\n    else\n        set [joystick active? v] to [0]\n        set [joystick jump impulse v] to [0]\n    end\nelse\n    set rotation style [all around v]\n    point towards (mouse-pointer v)\n    set size to (12) %\n    stamp\nend\npoint in direction (90)\nclear graphic effects\nhide\nswitch costume to (costume2 v)\nset size to (1e10) %\nswitch costume to (costume1 v)\n\ndefine Fill Tri (x0) (y0) (x1) (y1) (x2) (y2) (outline)\nset [_tri2 v] to ([sqrt v] of ((((x1) - (x2)) * ((x1) - (x2))) + (((y1) - (y2)) * ((y1) - (y2)))) )\nset [_tri3 v] to ([sqrt v] of ((((x0) - (x2)) * ((x0) - (x2))) + (((y0) - (y2)) * ((y0) - (y2)))) )\nset [_tri4 v] to ([sqrt v] of ((((x0) - (x1)) * ((x0) - (x1))) + (((y0) - (y1)) * ((y0) - (y1)))) )\nset [_tri1 v] to (((_tri2) + ((_tri3) + (_tri4))) / (2))\nset [_tri0 v] to ((2) * ([sqrt v] of ((((_tri1) - (_tri2)) * (((_tri1) - (_tri3)) * ((_tri1) - (_tri4)))) / (_tri1)) ))\nchange [_tri1 v] by (_tri1)\ngo to x: (((((_tri2) * (x0)) + ((_tri3) * (x1))) + ((_tri4) * (x2))) / (_tri1)) y: (((((_tri2) * (y0)) + ((_tri3) * (y1))) + ((_tri4) * (y2))) / (_tri1))\nset pen size to (_tri0)\npen down\nif <(_tri0) > [0]> then\n    if <<(_tri3) < (_tri2)> or <(_tri4) < (_tri2)>> then\n        if <<(_tri2) < (_tri3)> or <(_tri4) < (_tri3)>> then\n            set [_tri1 v] to ((x position) - (x2))\n            set [_tri2 v] to ((y position) - (y2))\n        else\n            set [_tri1 v] to ((x position) - (x1))\n            set [_tri2 v] to ((y position) - (y1))\n        end\n    else\n        set [_tri1 v] to ((x position) - (x0))\n        set [_tri2 v] to ((y position) - (y0))\n    end\n    set [_tri1 v] to (([sqrt v] of (((_tri1) * (_tri1)) + ((_tri2) * (_tri2))) ) / ((_tri0) / (2)))\n    set [_tri8 v] to (((_tri1) * (outline)) / ((_tri1) - (1)))\n    set [_tri1 v] to ((0.5) - ((0.5) / (_tri1)))\n    set [_tri2 v] to (((x position) - (x0)) / (_tri0))\n    set [_tri3 v] to (((y position) - (y0)) / (_tri0))\n    set [_tri4 v] to (((x position) - (x1)) / (_tri0))\n    set [_tri5 v] to (((y position) - (y1)) / (_tri0))\n    set [_tri6 v] to (((x position) - (x2)) / (_tri0))\n    set [_tri7 v] to (((y position) - (y2)) / (_tri0))\n    repeat until <(_tri0) < (_tri8)>\n        set [_tri0 v] to ((_tri1) * (_tri0))\n        set pen size to ((_tri0) + (.5))\n        go to x: ((x0) + ((_tri0) * (_tri2))) y: ((y0) + ((_tri0) * (_tri3)))\n        go to x: ((x1) + ((_tri0) * (_tri4))) y: ((y1) + ((_tri0) * (_tri5)))\n        go to x: ((x2) + ((_tri0) * (_tri6))) y: ((y2) + ((_tri0) * (_tri7)))\n        go to x: ((x0) + ((_tri0) * (_tri2))) y: ((y0) + ((_tri0) * (_tri3)))\n        change pen (brightness v) by (2)\n    end\nend\nset pen size to (outline)\ngo to x: (x0) y: (y0)\ngo to x: (x1) y: (y1)\ngo to x: (x2) y: (y2)\ngo to x: (x0) y: (y0)\npen up\n\ndefine Render Objects\nset [i v] to [0]\nrepeat (length of [objectx1 v])\n    change [i v] by (1)\n    set [ax v] to [0]\n    set [ay v] to [0]\n    set [az v] to [0]\n    set pen color to (item (i) of [color v])\n    change pen (brightness v) by (((item (i) of [__object_distance v]) * (-0.05)) + (20))\n    set [_color v] to (item (i) of [color v])\n    set [_brightness v] to (((item (i) of [__object_distance v]) * (-0.05)) + (20))\n    set [ax rotation v] to [0]\n    set [az rotation v] to [0]\n    set [ay rotation v] to [0]\n    if <(item (i) of [object type v]) = [shadow]> then\n        (3D) Go to (item (i) of [objectx1 v]) ((item (i) of [objecty1 v]) + ()) (item (i) of [objectz1 v]) render [0] perspective_proj [1] rotation_mode [1] object_mode [] sort []\n        go to x: (x) y: (y)\n        set pen color to (#000000)\n        set pen (transparency v) to ((50) + (((player y) - (item (i) of [objecty1 v])) / (3)))\n        set pen size to ((25) + (((player y) - (item (i) of [objecty1 v])) / (4)))\n        pen down\n        pen up\n    else\n        if <(item (i) of [object type v]) = [coin]> then\n            delete all of [platform:corners v]\n            set pen size to (2.5)\n            if <(item (i) of [objectz2 v]) = [collected]> then\n                (3D) Go to (item (i) of [objectx1 v]) ((item (i) of [objecty1 v]) + (((____coin_removed_size) - (100)) / (2.5))) (item (i) of [objectz1 v]) render [0] perspective_proj [1] rotation_mode [1] object_mode [] sort []\n            else\n                (3D) Go to (item (i) of [objectx1 v]) ((item (i) of [objecty1 v]) + ()) (item (i) of [objectz1 v]) render [0] perspective_proj [1] rotation_mode [1] object_mode [] sort []\n            end\n            add (x) to [platform:corners v]\n            add (y) to [platform:corners v]\n            if <not <[platform:corners v] contains [!]?>> then\n                clear graphic effects\n                go to x: (x) y: (y)\n                switch costume to (join [coin] (______coin_frame))\n                if <(item (i) of [objectz2 v]) = [collected]> then\n                    set size to (((86) - (((item (i) of [__object_distance v]) - (320)) * (0.15))) * ((____coin_removed_size) / (100))) %\n                    set [ghost v] effect to ((____coin_removed_size) - (100))\n                else\n                    set size to ((86) - (((item (i) of [__object_distance v]) - (320)) * (0.15))) %\n                end\n                change [brightness v] effect by (((_brightness) * (4.5)) - (10))\n                stamp\n                switch costume to (costume2 v)\n                set size to (1e10) %\n                switch costume to (costume1 v)\n            end\n        else\n            if <(item (i) of [object_hitbox_reference v]) = []> then\n                delete all of [platform:corners v]\n                set pen size to (2.5)\n                (3D) Go to (item (i) of [objectx1 v]) (item (i) of [objecty1 v]) (item (i) of [objectz1 v]) render [0] perspective_proj [] rotation_mode [1] object_mode [] sort []\n                add (x) to [platform:corners v]\n                add (y) to [platform:corners v]\n                (3D) Go to (item (i) of [objectx2 v]) (item (i) of [objecty2 v]) (item (i) of [objectz2 v]) render [0] perspective_proj [] rotation_mode [1] object_mode [] sort []\n                add (x) to [platform:corners v]\n                add (y) to [platform:corners v]\n                (3D) Go to (item (i) of [objectx3 v]) (item (i) of [objecty3 v]) (item (i) of [objectz3 v]) render [0] perspective_proj [] rotation_mode [1] object_mode [] sort []\n                add (x) to [platform:corners v]\n                add (y) to [platform:corners v]\n                if <not <[platform:corners v] contains [!]?>> then\n                    Fill Tri (item (1) of [platform:corners v]) (item (2) of [platform:corners v]) (item (3) of [platform:corners v]) (item (4) of [platform:corners v]) (item (5) of [platform:corners v]) (item (6) of [platform:corners v]) (@render quality)\n                end\n            else\n                if <(item (i) of [object_hitbox_reference v]) = [line]> then\n                    set pen color to (item (i) of [color v])\n                    set pen size to (item (i) of [objectz3 v])\n                    change pen size by (((item (i) of [__object_distance v]) - (320)) * (-0.01))\n                    (3D) Go to (item (i) of [objectx1 v]) (item (i) of [objecty1 v]) (item (i) of [objectz1 v]) render [1] perspective_proj [1] rotation_mode [1] object_mode [] sort []\n                    (3D) Go to (item (i) of [objectx2 v]) (item (i) of [objecty2 v]) (item (i) of [objectz2 v]) render [1] perspective_proj [1] rotation_mode [1] object_mode [] sort []\n                    pen up\n                else\n                    set [u v] to (i)\n                    set [i v] to (item (u) of [object_hitbox_reference v])\n                    set [ax rotation v] to (item (i) of [hitbox_x_rotation v])\n                    set [az rotation v] to (item (i) of [hitbox_z_rotation v])\n                    set [ay rotation v] to (item (i) of [hitbox_y_rotation v])\n                    delete all of [platform:corners v]\n                    (3D) Go to ((item (i) of [hitboxx v]) + (item (i) of [hitboxxl v])) (item (i) of [hitboxy v]) (item (i) of [hitboxz v]) render [0] perspective_proj [] rotation_mode [1] object_mode [] sort []\n                    add (x) to [platform:corners v]\n                    add (y) to [platform:corners v]\n                    (3D) Go to ((item (i) of [hitboxx v]) + (item (i) of [hitboxxl v])) (item (i) of [hitboxy v]) ((item (i) of [hitboxz v]) + (item (i) of [hitboxzl v])) render [0] perspective_proj [] rotation_mode [1] object_mode [] sort []\n                    add (x) to [platform:corners v]\n                    add (y) to [platform:corners v]\n                    (3D) Go to (item (i) of [hitboxx v]) (item (i) of [hitboxy v]) ((item (i) of [hitboxz v]) + (item (i) of [hitboxzl v])) render [0] perspective_proj [] rotation_mode [1] object_mode [] sort []\n                    add (x) to [platform:corners v]\n                    add (y) to [platform:corners v]\n                    (3D) Go to (item (i) of [hitboxx v]) (item (i) of [hitboxy v]) (item (i) of [hitboxz v]) render [0] perspective_proj [] rotation_mode [1] object_mode [] sort []\n                    add (x) to [platform:corners v]\n                    add (y) to [platform:corners v]\n                    if <not <[platform:corners v] contains [!]?>> then\n                        if <<(item (u) of [object type v]) = [hitboxIndependentTexture]> or < (((item (i) of [hitboxz v]) + (item (i) of [hitboxx v])) / (100)) contains [.]?>> then\n                            Fill Tri (item (1) of [platform:corners v]) (item (2) of [platform:corners v]) (item (5) of [platform:corners v]) (item (6) of [platform:corners v]) (item (7) of [platform:corners v]) (item (8) of [platform:corners v]) (@render quality)\n                            set pen color to (_color)\n                            change pen (brightness v) by (_brightness)\n                            Fill Tri (item (1) of [platform:corners v]) (item (2) of [platform:corners v]) (item (3) of [platform:corners v]) (item (4) of [platform:corners v]) (item (5) of [platform:corners v]) (item (6) of [platform:corners v]) (@render quality)\n                        else\n                            Fill Tri (item (1) of [platform:corners v]) (item (2) of [platform:corners v]) (item (3) of [platform:corners v]) (item (4) of [platform:corners v]) (item (7) of [platform:corners v]) (item (8) of [platform:corners v]) (@render quality)\n                            set pen color to (_color)\n                            change pen (brightness v) by (_brightness)\n                            Fill Tri (item (3) of [platform:corners v]) (item (4) of [platform:corners v]) (item (5) of [platform:corners v]) (item (6) of [platform:corners v]) (item (7) of [platform:corners v]) (item (8) of [platform:corners v]) (@render quality)\n                        end\n                    end\n                    set [i v] to (u)\n                end\n            end\n        end\n    end\nend\n\ndefine (3D) Go to (x) (y) (z) render (render) perspective_proj (perspective_proj) rotation_mode (rotation_mode) object_mode (object_mode) sort (sort)\nP = (x) (y) (z)\nif <(object_mode) = [1]> then\n    P = Rotate (x) (y) (z) angle (aX rotation) axis [x]\n    P = Rotate (x) (y) (z) angle (aZ rotation) axis [z]\n    P = Rotate (x) (y) (z) angle (aY rotation) axis [y]\nelse\n    if <(rotation_mode) = [1]> then\n        if <not <<(aX rotation) = []> and <<(aY rotation) = []> and <(aZ rotation) = []>>>> then\n            P = Translate (x) (y) (z) by ((item (i) of [hitboxx v]) * (-1)) ((item (i) of [hitboxy v]) * (-1)) ((item (i) of [hitboxz v]) * (-1))\n            P = Rotate (x) (y) (z) angle (aY rotation) axis [y]\n            P = Rotate (x) (y) (z) angle (aX rotation) axis [x]\n            P = Rotate (x) (y) (z) angle (aZ rotation) axis [z]\n            P = Translate (x) (y) (z) by ((item (i) of [hitboxx v]) * (1)) ((item (i) of [hitboxy v]) * (1)) ((item (i) of [hitboxz v]) * (1))\n        end\n    end\n    if <not <(perspective_proj) = [0]>> then\n        P = Translate (x) (y) (z) by (aX) (aY) (aZ)\n    end\n    if <(sort) = [1]> then\n    P = Translate (x) (y) (z) by ((scroll x) * (-1)) ((scroll y) * (-1)) ((scroll z) * (-1))\n    P = Rotate (x) (y) (z) angle (y_angle) axis [y]\n    P = Rotate (x) (y) (z) angle (x_angle) axis [x]\n    if <(perspective_proj) = [0]> then\n    if <not <(perspective_proj) = [0]>> then\n        P = Translate (x) (y) (z) by [] [] [-200]\n        P = Perspective Protection of (x) (y) (z) with focal length (zoom)\n    end\n    if <(render) = [1]> then\n        if <(z) = [!]> then\n            pen up\n        else\n            go to x: (x) y: (y)\n            pen down\n        end\n    end\n    if <(z) = [!]> then\n        set [y v] to [!]\n    end\nend\n\ndefine P = Rotate (x) (y) (z) angle (angle) axis (axis)\nif <(axis) = [x]> then\n    set [x v] to (x)\n    set [y v] to (((y) * ([cos v] of (angle) )) - ((z) * ([sin v] of (angle) )))\n    set [z v] to (((y) * ([sin v] of (angle) )) + ((z) * ([cos v] of (angle) )))\nend\nif <(axis) = [y]> then\n    set [x v] to (((z) * ([sin v] of (angle) )) + ((x) * ([cos v] of (angle) )))\n    set [y v] to (y)\n    set [z v] to (((z) * ([cos v] of (angle) )) - ((x) * ([sin v] of (angle) )))\nend\nif <(axis) = [z]> then\n    set [x v] to (((x) * ([cos v] of (angle) )) - ((y) * ([sin v] of (angle) )))\n    set [y v] to (((x) * ([sin v] of (angle) )) + ((y) * ([cos v] of (angle) )))\n    set [z v] to (z)\nend\n\ndefine P = Scale (x) (y) (z) by (sx) (sy) (sz)\nset [x v] to ((x) * (sx))\nset [y v] to ((y) * (sy))\nset [z v] to ((z) * (sz))\n\ndefine P = Translate (x) (y) (z) by (tx) (ty) (tz)\nset [x v] to ((x) + (tx))\nset [y v] to ((y) + (ty))\nset [z v] to ((z) + (tz))\n\ndefine P = Perspective Protection of (x) (y) (z) with focal length (focal length)\nif <((focal length) / (z)) > [0]> then\n    set [x v] to ((x) * ((focal length) / (z)))\n    set [y v] to ((y) * ((focal length) / (z)))\n    set [z v] to [0]\nelse\n    set [z v] to [!]\nend\n\ndefine P = (x) (y) (z)\nset [x v] to (x)\nset [y v] to (y)\nset [z v] to (z)\n\ndefine Init\nset [joystick active? v] to [0]\nset [joystick jump impulse v] to [0]\nset [@coins v] to [0]\nset [@level.id v] to [0]\nset [______coin_frame v] to [0]\ndelete all of [@collected_coins v]\nset [playersize x v] to [8]\nset [playersize y v] to [8]\nset [playersize z v] to [8]\nset [@killed v] to [0]\nset [@paused v] to [1]\nset [scroll x v] to [0]\nset [______won? v] to [0]\nset [@pause_rendering v] to [0]\nset [scroll y v] to [0]\nset [scroll z v] to [0]\nset [zoom v] to [410]\nRespawn\nset [@device v] to [2]\nset [@mobile controls enabled v] to [0]\n\ndefine Add objects\nif <(@LEVEL.id) = [1]> then\n    Add Platform [-1] [0] [0] xrot [0] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [] segments [2] [3] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [-1] [0] [3] xrot [-27] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [6] segments [2] [2] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [-1] [1] [5] xrot [0] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [] segments [2] [1] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add coin [-25] [-10] [105]\n    Add coin [-25] [10] [150]\n    Add coin [-25] [30] [195]\n    Add Spike at [-0.6] [1] [8] xrot [] yrot [] zrot [] size [14] offset [] [] []\n    Add Spike at [0.6] [1] [9.5] xrot [] yrot [] zrot [] size [14] offset [] [] []\n    Add Spike at [-0.6] [1] [11] xrot [] yrot [] zrot [] size [14] offset [] [] []\n    Add coin [5] [25] [390]\n    Add coin [-55] [25] [465]\n    Add coin [5] [25] [540]\n    Add Platform [-1] [1] [7] xrot [0] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [] segments [2] [3] special-color [#86d189] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [-1] [1] [10] xrot [0] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [-10] segments [2] [3] special-color [#86d189] impulse (xyz) [sw] [] [] moving-platform? []\n    Add Platform [-1] [1] [12.4] xrot [-32] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [5] segments [2] [1.7] special-color [#a39b7e] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [-1] [2] [14] xrot [] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [] segments [3] [2] special-color [#8a836a] impulse (xyz) [] [] [] moving-platform? []\n    Add fence [-65] [75] [770] segments [5] direction [x]\n    Add coin [-55] [90] [725]\n    Add coin [-5] [90] [725]\n    Add coin [45] [90] [725]\n    Add Platform [2] [2] [14] xrot [] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [] segments [2] [2] special-color [#8a836a] impulse (xyz) [] [] [] moving-platform? []\n    Add Spike at [2.5] [2] [14.5] xrot [] yrot [] zrot [] size [13] offset [] [] []\n    Add end flag at [150] [75] [725]\nend\nif <(@LEVEL.id) = [2]> then\n    Add Platform [-1] [-1] [0.5] xrot [-35] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [] segments [2] [2] special-color [#877b67] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform ((-1.5) + (([sin v] of ((tick) * (3)) ) * (1))) [0] ((4) + (([sin v] of ((tick) * (3)) ) * (-1.35))) xrot [0] zrot [0] yrot [0] ground [1] y_offset [10] add_x_len [] add_z_len [] segments [1] [1] special-color [#A1937C] impulse (xyz) ((([sin v] of (((tick) - (-15)) * (3)) ) * (1)) - (([sin v] of (((tick) - (15)) * (3)) ) * (1))) [] ((([sin v] of (((tick) - (-15)) * (3)) ) * (-1.35)) - (([sin v] of (((tick) - (15)) * (3)) ) * (-1.35))) moving-platform? [1]\n    Add Platform [0] [0] [8] xrot [0] zrot [0] yrot [0] ground [1] y_offset [10] add_x_len [] add_z_len [] segments [1] [1] special-color [#A1937C] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [-2.5] [0] [7] xrot [0] zrot [0] yrot [0] ground [1] y_offset [10] add_x_len [] add_z_len [] segments [2] [2] special-color [#877b67] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [-2.5] [0] [9] xrot [0] zrot [0] yrot [0] ground [] y_offset [10] add_x_len [] add_z_len [] segments [2] [1] special-color [#876e67] impulse (xyz) [] [] [] moving-platform? []\n    Add Spike at [-2.25] [0] [9.5] xrot [] yrot [] zrot [] size [9] offset [] [12.5] []\n    Add Spike at [-1.75] [0] [9.5] xrot [] yrot [] zrot [] size [9] offset [] [12.5] []\n    Add Spike at [-1.25] [0] [9.5] xrot [] yrot [] zrot [] size [9] offset [] [12.5] []\n    Add Spike at [-0.75] [0] [9.5] xrot [] yrot [] zrot [] size [9] offset [] [12.5] []\n    Add Platform [-2.5] [0] [10] xrot [26.5] zrot [0] yrot [0] ground [] y_offset [10] add_x_len [] add_z_len [5] segments [2] [2] special-color [#876e67] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [-2.5] [-1] [12] xrot [] zrot [0] yrot [0] ground [1] y_offset [10] add_x_len [] add_z_len [] segments [2] [2] special-color [#A1937C] impulse (xyz) [] [] [] moving-platform? []\n    Add cactus [-70] [-60] [640]\n    Add line from [-100] [-75] [725] to [-100] [-25] [875] size [6] color [#6b6b6b] y-sorting-offset [-500]\n    Add Platform [-2] ((-0.6) + (([sin v] of ((tick) * (2.5)) ) * (0.5))) ((16.5) + (([sin v] of ((tick) * (2.5)) ) * (1.5))) xrot [-16] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [] segments [] [] special-color [#adadad] impulse (xyz) [] ((([sin v] of (((tick) - (-15)) * (2.5)) ) * (0.5)) - (([sin v] of (((tick) - (15)) * (2.5)) ) * (0.5))) ((([sin v] of (((tick) - (-15)) * (2.5)) ) * (1.5)) - (([sin v] of (((tick) - (15)) * (2.5)) ) * (1.5))) moving-platform? [1]\n    Add Platform [-2] [0] [19] xrot [] zrot [0] yrot [0] ground [] y_offset [10] add_x_len [] add_z_len [] segments [1] [3] special-color [#A1937C] impulse (xyz) [] [] [] moving-platform? []\n    Add cactus [-85] [-15] [1000]\n    Add coin [-125] [10] [345]\n    Add coin [-125] [10] [395]\n    Add coin [-125] [-45] [650]\n    Add coin [-125] [-45] [600]\n    Add coin [-71] [10] [634]\n    Add coin [-85] [50] [1000]\n    Add Spring at [-100] [-20] [1050] x_rot [0]\n    Add Platform [-2] [2] [22] xrot [-30] zrot [] yrot [] ground [] y_offset [] add_x_len [] add_z_len [7] segments [1] [1] special-color [#b5ab8b] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [-2] [2] [23] xrot [] zrot [] yrot [] ground [] y_offset [29] add_x_len [] add_z_len [] segments [1] [1] special-color [#a39b7e] impulse (xyz) [] [] [] moving-platform? []\n    Add end flag at [-100] [105] [1150]\nend\nif <(@LEVEL.id) = [3]> then\n    Add Platform [-1] [0] [0] xrot [0] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [] segments [2] [2] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [-0.5] [0] [2] xrot ((-10) + ((90) * (temporary-platform-x-rot))) zrot [] yrot [] ground [] y_offset [] add_x_len [] add_z_len [1] segments [1] [2] special-color [#D2BB75] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [-0.5] [0] [4] xrot [0] zrot [0] yrot [0] ground [] y_offset [17] add_x_len [] add_z_len [] segments [1] [1] special-color [#D2BB75] impulse (xyz) [] [0] [0] moving-platform? []\n    Add Platform [-1] [0] [5] xrot [0] zrot [0] yrot [0] ground [1] y_offset [17] add_x_len [0] add_z_len [0] segments [3] [2] special-color [] impulse (xyz) [] [0] [0] moving-platform? []\n    Add Platform [2] [0] [5] xrot [0] zrot [90] yrot [0] ground [] y_offset [17] add_x_len [-17] add_z_len [] segments [1] [2] special-color [#4d483f] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [2] [1] [5] xrot [0] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [] segments [4] [2] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [7] [1] [5] xrot [0] zrot [0] yrot [0] ground [1] y_offset [] add_x_len [] add_z_len [] segments [2] [2] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [8] [0] [7] xrot [0] zrot [-30] yrot [0] ground [] y_offset [50] add_x_len [] add_z_len [] segments [1] [4] special-color [#a39b7e] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [7] ((1) + ((0.5) * (temporary-platform-x-rot))) [7] xrot [] zrot [] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [] segments [1] [3] special-color [#b5ab8b] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [6] [1] [10] xrot [0] zrot [0] yrot [0] ground [1] y_offset [] add_x_len [] add_z_len [] segments [2] [2] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [6] [1] ((13.5) + (([sin v] of ((tick) * (3.9)) ) * (1))) xrot [0] zrot [0] yrot [0] ground [0] y_offset [] add_x_len [] add_z_len [] segments [1] [1] special-color [#adadad] impulse (xyz) [] [] (([sin v] of (((tick) - (-15)) * (3.9)) ) - ([sin v] of (((tick) - (15)) * (3.9)) )) moving-platform? [1]\n    Add line from [300] [25] [610] to [300] [25] [740] size [6] color [#6b6b6b] y-sorting-offset [-200]\n    Add Platform [6] [1] [16] xrot [0] zrot [0] yrot [0] ground [1] y_offset [] add_x_len [] add_z_len [] segments [3] [3] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [6.5] [1] [19] xrot [-33] zrot [] yrot [0] ground [0] y_offset [] add_x_len [] add_z_len [-5.1] segments [1] [2] special-color [#D2BB75] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [6] [2] [20.5] xrot [] zrot [] yrot [0] ground [1] y_offset [] add_x_len [] add_z_len [] segments [2] [2] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [5] [2] [21] xrot [] zrot [-39] yrot [0] ground [0] y_offset [40] add_x_len [13] add_z_len [] segments [1] [1] special-color [#D2BB75] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [4] [2] [21] xrot [] zrot [] yrot [0] ground [0] y_offset [40] add_x_len [] add_z_len [] segments [1] [1] special-color [#D2BB75] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [3.25] [2.5] [21] xrot [] zrot [-39] yrot [0] ground [0] y_offset [45] add_x_len [-2] add_z_len [] segments [1] [1] special-color [#D2BB75] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [2] [3] [21] xrot [] zrot [0] yrot [0] ground [0] y_offset [20] add_x_len [11.9] add_z_len [] segments [1] [1] special-color [#D2BB75] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [0.3] [3] [21] xrot [] zrot [0] yrot [0] ground [] y_offset [20] add_x_len [-8] add_z_len [] segments [2] [3] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [1] [5] [26] xrot [-30] zrot [0] yrot [0] ground [] y_offset [] add_x_len [] add_z_len [7] segments [1] [1] special-color [#b5ab8b] impulse (xyz) [] [] [] moving-platform? []\n    Add Platform [1] [5] [27] xrot [0] zrot [0] yrot [0] ground [] y_offset [29] add_x_len [] add_z_len [] segments [1] [1] special-color [#a39b7e] impulse (xyz) [] [] [] moving-platform? []\n    Add end flag at [50] [250] [1350]\n    Add Spike at ((1.5) + (([sin v] of ((tick) * (10)) ) * (0.5))) [3] [21] xrot [] yrot [] zrot [] size [12] offset [-15] [20] [15]\n    Add Spike at ((1.5) + (([cos v] of ((tick) * (10)) ) * (0.5))) [3] [22] xrot [] yrot [] zrot [] size [12] offset [-15] [20] [25]\n    Add Spike at ((1.5) + (([sin v] of ((tick) * (10)) ) * (0.5))) [3] [23] xrot [] yrot [] zrot [] size [12] offset [-15] [20] [35]\n    Add Platform [1.15] [3] [24] xrot [-5] zrot [] yrot [0] ground [] y_offset [20] add_x_len [-8] add_z_len [] segments [1] [1] special-color [] impulse (xyz) [] [] [] moving-platform? []\n    Add coin [-50] [10] [275]\n    Add coin [-10] [10] [300]\n    Add coin [30] [10] [275]\n    Add coin [-10] [10] [250]\n    Add coin [300] [75] [675]\n    Add coin [400] [40] [300]\n    Add coin [400] [40] [250]\n    Add coin [350] [40] [300]\n    Add coin [350] [40] [250]\n    Add coin [350] [92] [1050]\n    Add Spike at [6.5] [1] [17.5] xrot [] yrot [] zrot [] size ((9) + (([cos v] of ((tick) * (10)) ) * (4))) offset [] [] []\n    Add Spike at [7.5] [1] [17.5] xrot [] yrot [] zrot [] size ((9) + (([sin v] of ((tick) * (10)) ) * (4))) offset [] [] []\n    Add Spike at [8.5] [1] [17.5] xrot [] yrot [] zrot [] size ((9) + (([cos v] of ((tick) * (10)) ) * (4))) offset [] [] []\n    Add coin [350] [110] [450]\n    Add coin [350] [110] [400]\n    Add coin [350] [110] [350]\n    \n    Add Spring at [55] [150] [1200] x_rot []\nend\n\ndefine Reset\ndelete all of [hitboxx v]\ndelete all of [hitboxxl v]\ndelete all of [hitboxy v]\ndelete all of [hitboxz v]\ndelete all of [hitbox_type v]\ndelete all of [hitbox_x_rotation v]\ndelete all of [hitbox_z_rotation v]\ndelete all of [hitboxyl v]\ndelete all of [hitbox_y_rotation v]\ndelete all of [hitboxzl v]\ndelete all of [__object_distance v]\ndelete all of [objectx1 v]\ndelete all of [objectx2 v]\ndelete all of [objectx3 v]\ndelete all of [objecty1 v]\ndelete all of [objecty2 v]\ndelete all of [objecty3 v]\ndelete all of [objectz1 v]\ndelete all of [__object.box_distance v]\ndelete all of [objectz2 v]\ndelete all of [object type v]\ndelete all of [object_hitbox_reference v]\ndelete all of [objectz3 v]\ndelete all of [color v]\ndelete all of [hitboximpulsex v]\ndelete all of [hitboximpulsey v]\ndelete all of [hitboximpulsez v]\nif <(player y) < [-200]> then\n    Respawn\n    set [@paused v] to [1]\n    broadcast (@dead v)\nend\nset [impulse x v] to [0]\nset [impulse y v] to [0]\nset [impulse z v] to [0]\n\ndefine (+) Add hitbox (x) (y) (z) type (type) x rotation (xrot) z rotation (zrot) y rotation (yrot) color (color) l (xl) (yl) (zl) with_graphical_element? (wge) always_background? (always_background?) impulses (xyz) (impulse-x) (impulse-y) (impulse-z) IndependentTexture (independenttexture)\nadd (x) to [hitboxx v]\nadd (xl) to [hitboxxl v]\nadd (y) to [hitboxy v]\nadd (yl) to [hitboxyl v]\nadd (type) to [hitbox_type v]\nadd (z) to [hitboxz v]\nadd (zl) to [hitboxzl v]\nadd (xrot) to [hitbox_x_rotation v]\nadd (yrot) to [hitbox_y_rotation v]\nadd (zrot) to [hitbox_z_rotation v]\nadd ((impulse-x) + ((zrot) / (-70))) to [hitboximpulsex v]\nadd (impulse-y) to [hitboximpulsey v]\nadd ((impulse-z) + ((xrot) / (70))) to [hitboximpulsez v]\nif <(wge) = [1]> then\n    (+) get insert pos coordinates (x) (y) (z) only_use_box_coordinates? [0] hitbox? [1] always-background? (always_background?)\n    insert (box_distance) at (i) of [__object.box_distance v] \n    insert (distance) at (i) of [__object_distance v] \n    insert [] at (i) of [objectx1 v] \n    insert [] at (i) of [objectx2 v] \n    insert [] at (i) of [objectx3 v] \n    insert [] at (i) of [objecty1 v] \n    insert [] at (i) of [objecty2 v] \n    insert [] at (i) of [objecty3 v] \n    insert [] at (i) of [objectz1 v] \n    insert [] at (i) of [objectz2 v] \n    insert [] at (i) of [objectz3 v] \n    insert (length of [hitbox_type v]) at (i) of [object_hitbox_reference v] \n    insert (color) at (i) of [color v] \n    if <(independenttexture) = [1]> then\n        insert (join [hitbox] [IndependentTexture]) at (i) of [object type v] \n    else\n        insert (join [hitbox] []) at (i) of [object type v] \n    end\nend\n\ndefine Physics\nif <(@paused) = [0]> then\n    change [player y direction v] by (((player y direction) - (_player y direction)) / (-4))\n    change [sy v] by (-0.5)\n    if <<key (space v) pressed?> or <(joystick jump impulse) = [1]>> then\n        change [player y v] by (-3)\n        (m) collision - shadow? []\n        change [player y v] by (3)\n        if <[h_collision v] contains [ground1]?> then\n            set [sy v] to [7.5]\n            start sound [High Whoosh v]\n        end\n    end\n    if <[h_collision v] contains [spring]?> then\n        set [sy v] to [10.5]\n        change [player y v] by (10)\n        (m) collision - shadow? []\n        change [player y v] by (-10)\n        if <not <[h_collision v] contains [spike]?>> then\n            start sound [smw_spring_jump @ToadfanSchool v]\n        end\n        broadcast (@jump v)\n    end\n    change [player y v] by (sy)\n    (m) y (sy)\n    if <[h_collision v] contains [coin]?> then\n        set [____coin_removed v] to (join ((item (item # of [coin] in [h_collision v]) of [hitboxx v]) + (10)) (join (join [,] ((item (item # of [coin] in [h_collision v]) of [hitboxy v]) + (10))) (join [,] ((item (item # of [coin] in [h_collision v]) of [hitboxz v]) + (10)))))\n        add (____coin_removed) to [@collected_coins v]\n        start sound [coin v]\n        broadcast (@coin v)\n    end\n    if <[h_collision v] contains [endflag]?> then\n        broadcast (@win v)\n    end\n    set [sx v] to ((sx) * (0.4))\n    set [sz v] to ((sz) * (0.4))\n    change [sx v] by (impulse x)\n    change [sz v] by (impulse z)\n    if <(joystick active?) = [1]> then\n        change [y_angle v] by ((joystick dir) * (-1))\n        change [y_angle v] by (-90)\n    end\n    if <([abs v] of (sx) ) < [6]> then\n        if <(joystick active?) = [1]> then\n            change [sz v] by (([sin v] of (y_angle) ) * (-2.4))\n            change [sx v] by (([cos v] of (y_angle) ) * (-2.4))\n        end\n        if <key (a v) pressed?> then\n            set [_player y direction v] to ((y_angle) * (-1))\n            change [sz v] by (([sin v] of (y_angle) ) * (-2.4))\n            change [sx v] by (([cos v] of (y_angle) ) * (-2.4))\n            change [y_angle v] by (1)\n        end\n        if <key (d v) pressed?> then\n            set [_player y direction v] to ((y_angle) * (1))\n            change [sz v] by (([sin v] of (y_angle) ) * (2.4))\n            change [sx v] by (([cos v] of (y_angle) ) * (2.4))\n            change [y_angle v] by (-1)\n        end\n    end\n    if <([abs v] of (sz) ) < [6]> then\n        if <key (w v) pressed?> then\n            set [_player y direction v] to ((y_angle) * (-1))\n            change [sz v] by (([cos v] of ((y_angle) * (-1)) ) * (2.4))\n            change [sx v] by (([sin v] of ((y_angle) * (-1)) ) * (2.4))\n        end\n        if <key (s v) pressed?> then\n            set [_player y direction v] to ((y_angle) * (-1))\n            change [sz v] by (([cos v] of ((y_angle) * (-1)) ) * (-2.4))\n            change [sx v] by (([sin v] of ((y_angle) * (-1)) ) * (-2.4))\n        end\n    end\n    if <(joystick active?) = [1]> then\n        change [y_angle v] by (joystick dir)\n        change [y_angle v] by (90)\n    end\n    change player x / z\nend\nCamera (x_angle)\n\ndefine (m) collision - shadow? (shadow?)\ndelete all of [h_shadow_collision_y v]\nset [player x direction v] to [0]\nset [player z direction v] to [0]\ndelete all of [h_collision v]\nset [u v] to [0]\nrepeat (length of [hitboxx v])\n    change [u v] by (1)\n    add [0] to [h_collision v]\n    add [0] to [h_shadow_collision_y v]\n    (m) collosion of element id (u) shadow? (shadow?)\nend\n\ndefine (m) collosion of element id (element) shadow? (shadow?)\nset [o v] to (element)\nset [_platform x v] to (item (o) of [hitboxx v])\nset [_platform xlen v] to (item (o) of [hitboxxl v])\nset [_platform y v] to (item (o) of [hitboxy v])\nset [_platform ylen v] to (item (o) of [hitboxyl v])\nset [_platform z v] to (item (o) of [hitboxz v])\nset [_platform zlen v] to (item (o) of [hitboxzl v])\nset [_player x v] to (player x)\nset [_player y v] to (player y)\nset [_player z v] to (player z)\nif <<(item (o) of [hitbox_x_rotation v]) = []> and <<(item (o) of [hitbox_z_rotation v]) = []> and <(item (o) of [hitbox_y_rotation v]) = []>>> then\nif <(shadow?) = [1]> then\n    replace item (length of [h_collision v]) of [h_shadow_collision_y v] with (_player y)\nend\nif <<((_player x) + ((playerSize x) / (1.2))) > (_platform x)> and <((_platform x) + (_platform xlen)) > ((_player x) - ((playerSize x) / (1.2)))>> then\n    if <<(shadow?) = [1]> or <<((_player y) + ((playerSize y) / (1.2))) > (_platform y)> and <((_platform y) + (_platform ylen)) > ((_player y) - ((playerSize y) / (1.2)))>>> then\n        if <<((_player z) + ((playerSize z) / (1.2))) > (_platform z)> and <((_platform z) + (_platform zlen)) > ((_player z) - ((playerSize z) / (1.2)))>> then\n            replace item (length of [h_collision v]) of [h_collision v] with (item (o) of [hitbox_type v])\n            if <not <<([abs v] of (item (o) of [hitbox_x_rotation v]) ) = [90]> or <([abs v] of (item (o) of [hitbox_z_rotation v]) ) = [90]>>> then\n                set [player x direction v] to (item (o) of [hitbox_x_rotation v])\n                set [player z direction v] to (item (o) of [hitbox_z_rotation v])\n            end\n            if <not <(shadow?) = [1]>> then\n                set [impulse x v] to (item (o) of [hitboximpulsex v])\n                set [impulse y v] to (item (o) of [hitboximpulsey v])\n                set [impulse z v] to (item (o) of [hitboximpulsez v])\n            end\n        end\n    end\nend\n\ndefine (m) x (sx) accuracy (acc)\n(m) collision - shadow? []\nif <[h_collision v] contains [ground1]?> then\n    repeat (10)\n        change [player y v] by (0.5)\n        (m) collision - shadow? []\n        if <not <[h_collision v] contains [ground1]?>> then\n            stop [this script v]\n        end\n    end\n    change [player y v] by (-5)\n    repeat until <not <[h_collision v] contains [ground1]?>>\n        if <(sx) < [0]> then\n            change [player x v] by (acc)\n        else\n            change [player x v] by ((acc) * (-1))\n        end\n        (m) collision - shadow? []\n        set [sx v] to [0]\n    end\nend\n\ndefine (m) y (sy)\n(m) collision - shadow? []\nrepeat until <not <[h_collision v] contains [ground1]?>>\n    if <(sy) < [0]> then\n        change [player y v] by (0.5)\n    else\n        change [player y v] by (-0.5)\n    end\n    (m) collision - shadow? []\n    set [sy v] to [0]\nend\n\ndefine (m) z (sz) accuracy (acc)\n(m) collision - shadow? []\nif <[h_collision v] contains [ground1]?> then\n    repeat (10)\n        change [player y v] by (0.5)\n        (m) collision - shadow? []\n        if <not <[h_collision v] contains [ground1]?>> then\n            stop [this script v]\n        end\n    end\n    change [player y v] by (-5)\n    repeat until <not <[h_collision v] contains [ground1]?>>\n        if <(sz) < [0]> then\n            change [player z v] by (acc)\n        else\n            change [player z v] by ((acc) * (-1))\n        end\n        (m) collision - shadow? []\n        set [sz v] to [0]\n    end\nend\n\nset pen size to (5)\nset pen color to (#ffffff)\nset pen (transparency v) to (50)\ngo to x: (0) y: (0)\npen down\ngo to x: (0) y: (-8)\npen up\ngo to x: (0) y: (0)\npen down\ngo to x: (0) y: (8)\npen up\ngo to x: (0) y: (0)\npen down\ngo to x: (-8) y: (0)\npen up\ngo to x: (0) y: (0)\npen down\ngo to x: (8) y: (0)\npen up\n\ndefine change player x / z\nchange [player x v] by (sx)\nset [player x v] to ((round ((player x) * (10))) / (10))\n(m) x (sx) accuracy [0.5]\nchange [player z v] by (sz)\nset [player z v] to ((round ((player z) * (10))) / (10))\n(m) z (sz) accuracy [0.5]\n\ndefine Add Platform (x) (y) (z) xrot (xrot) zrot (zrot) yrot (yrot) ground (ground) y_offset (y_offset) add_x_len (add_x_len) add_z_len (add_z_len) segments (x-segments) (z-segments) special-color (special-color) impulse (xyz) (impulse-x) (impulse-y) (impulse-z) moving-platform? (moving-platform?)\nset [_____x v] to (((x) * (50)) - (25))\nset [_____y v] to ((((y) * (50)) - (25)) + (y_offset))\nset [_____z v] to (((z) * (50)) - (25))\nset [_always-background? v] to (<not <<(yrot) = []> or <(yrot) = [0]>>> * (1))\nif <(x-segments) = []> then\n    set [_platform xlen v] to [1]\nelse\n    set [_platform xlen v] to (x-segments)\nend\nif <(z-segments) = []> then\n    set [_platform zlen v] to [1]\nelse\n    set [_platform zlen v] to (z-segments)\nend\nif <<([abs v] of ((_____x) - (player x)) ) < (@render distance)> and <<([abs v] of ((_____y) - (player y)) ) < (@render distance)> and <([abs v] of ((_____z) - (player z)) ) < (@render distance)>>> then\n    delete all of [_box v]\n    set [i v] to [0]\n    repeat (_platform xlen)\n        change [i v] by (1)\n        set [i2 v] to [0]\n        repeat (_platform zlen)\n            change [i2 v] by (1)\n            add ((x) + ((i) - (1))) to [_box v]\n            add ((y) - (1)) to [_box v]\n            add ((z) + ((i2) - (1))) to [_box v]\n        end\n    end\n    add (x) to [_box v]\n    add ((y) - (1)) to [_box v]\n    add (z) to [_box v]\n    if <<(ground) = [1]> and <not <(@device) = [1]>>> then\n        if <(special-color) = []> then\n            (+) Add hitbox (_____x) (_____y) (_____z) type [ground1] x rotation (xrot) z rotation (zrot) y rotation (yrot) color [#7ac298] l (((50) + (add_x_len)) * (_platform xlen)) [0] (((50) + (add_z_len)) * (_platform zlen)) with_graphical_element? [1] always_background? (_always-background?) impulses (xyz) (impulse-x) (impulse-y) (impulse-z) IndependentTexture (moving-platform?)\n        else\n            (+) Add hitbox (_____x) (_____y) (_____z) type [ground1] x rotation (xrot) z rotation (zrot) y rotation (yrot) color (special-color) l (((50) + (add_x_len)) * (_platform xlen)) [0] (((50) + (add_z_len)) * (_platform zlen)) with_graphical_element? [1] always_background? (_always-background?) impulses (xyz) (impulse-x) (impulse-y) (impulse-z) IndependentTexture (moving-platform?)\n        end\n        (+) Add graphical object x ((_____x) + ((0) * (_platform xlen))) ((_____x) + (((50) * (_platform xlen)) / (2))) ((_____x) + ((50) * (_platform xlen))) y (_____y) ((_____y) - ((30) * (_platform xlen))) (_____y) z ((_____z) + (((50) * (_platform zlen)) / (1))) ((_____z) + (((50) * (_platform zlen)) / (2))) ((_____z) + (((50) * (_platform zlen)) / (1))) color [#696255] fix_insert_position [] fix_xyz_refs [] [] [] fix_box_xyz (_____x) ((_____y) - (350)) (_____z)\n        (+) Add graphical object x ((_____x) + (() * (_platform xlen))) ((_____x) + (((50) * (_platform xlen)) / (2))) ((_____x) + ((0) * (_platform xlen))) y (_____y) ((_____y) - ((30) * (_platform xlen))) (_____y) z (_____z) ((_____z) + (((50) * (_platform zlen)) / (2))) ((_____z) + (((50) * (_platform zlen)) / (1))) color [#4d483f] fix_insert_position [] fix_xyz_refs [] [] [] fix_box_xyz (_____x) ((_____y) - (350)) (_____z)\n        (+) Add graphical object x ((_____x) + ((50) * (_platform xlen))) ((_____x) + (((50) * (_platform xlen)) / (2))) ((_____x) + ((50) * (_platform xlen))) y (_____y) ((_____y) - ((30) * (_platform xlen))) (_____y) z ((_____z) + (((50) * (_platform zlen)) / (1))) ((_____z) + (((50) * (_platform zlen)) / (2))) ((_____z) + (((0) * (_platform zlen)) / (1))) color [#575248] fix_insert_position [] fix_xyz_refs [] [] [] fix_box_xyz (_____x) ((_____y) - (350)) (_____z)\n        (+) Add graphical object x ((_____x) + ((50) * (_platform xlen))) ((_____x) + ((((50) * (_platform xlen)) + ()) / (2))) ((_____x) + ((00) * (_platform xlen))) y (_____y) ((_____y) - ((30) * (_platform xlen))) (_____y) z (_____z) ((_____z) + (((50) * (_platform zlen)) / (2))) (_____z) color [#696255] fix_insert_position [] fix_xyz_refs [] [] [] fix_box_xyz (_____x) ((_____y) - (350)) (_____z)\n    else\n        if <(special-color) = []> then\n            (+) Add hitbox (_____x) (_____y) (_____z) type [ground1] x rotation (xrot) z rotation (zrot) y rotation (yrot) color [#7ac298] l (((50) + (add_x_len)) * (_platform xlen)) [0] (((50) + (add_z_len)) * (_platform zlen)) with_graphical_element? [1] always_background? (_always-background?) impulses (xyz) (impulse-x) (impulse-y) (impulse-z) IndependentTexture (moving-platform?)\n        else\n            (+) Add hitbox (_____x) (_____y) (_____z) type [ground1] x rotation (xrot) z rotation (zrot) y rotation (yrot) color (special-color) l (((50) + (add_x_len)) * (_platform xlen)) [0] (((50) + (add_z_len)) * (_platform zlen)) with_graphical_element? [1] always_background? (_always-background?) impulses (xyz) (impulse-x) (impulse-y) (impulse-z) IndependentTexture (moving-platform?)\n        end\n    end\nend\nset [ay rotation v] to [0]\n\ndefine Add player object\nchange [player y v] by (-3)\n(m) collision - shadow? []\nif <[h_collision v] contains [spike]?> then\n    if <(@paused) = [0]> then\n        set [@paused v] to [1]\n        start sound [Crunch v]\n        broadcast (@killed v)\n    end\nend\nchange [player y v] by (3)\nchange [_player x direction v] by (((_player x direction) - (player x direction)) / (-5))\nchange [_player z direction v] by (((_player z direction) - (player z direction)) / (-5))\nset [ax rotation v] to (_player x direction)\nset [az rotation v] to (_player z direction)\nset [ay rotation v] to []\n(+) Add cube object (player x) ((player y) + ((playerSize y) * (-1))) (player z) lengths (playerSize x) (playerSize y) (playerSize z) colors [#2679ff] [#2679ff] [#458cff] [#458cff] [#6ea6ff] []\nAdd Player shadow\n(m) collision - shadow? [0]\n\ndefine (+) Add graphical object x (x1) (x2) (x3) y (y1) (y2) (y3) z (z1) (z2) (z3) color (color) fix_insert_position (fip) fix_xyz_refs (xref) (yref) (zref) fix_box_xyz (box-x) (box-y) (box-z)\nif <(fip) = []> then\n    if <(box-x) = []> then\n        set [__x v] to (((x1) + ((x2) + (x3))) / (3))\n        set [__y v] to (((y1) + ((y2) + (y3))) / (3))\n        set [__z v] to (((z1) + ((z2) + (z3))) / (3))\n        (+) get box (__x) (__y) (__z)\n        if <(xref) = []> then\n            (+) get insert pos coordinates (__x) (__y) (__z) only_use_box_coordinates? [] hitbox? [] always-background? []\n        else\n            (+) get insert pos coordinates (xref) (yref) (zref) only_use_box_coordinates? [] hitbox? [] always-background? []\n        end\n    else\n        (+) get box (box-x) (box-y) (box-z)\n        if <(xref) = []> then\n            set [__x v] to (((x1) + ((x2) + (x3))) / (3))\n            set [__y v] to (((y1) + ((y2) + (y3))) / (3))\n            set [__z v] to (((z1) + ((z2) + (z3))) / (3))\n            (+) get insert pos coordinates (__x) (__y) (__z) only_use_box_coordinates? [] hitbox? [] always-background? []\n        else\n            (+) get insert pos coordinates (xref) (yref) (zref) only_use_box_coordinates? [] hitbox? [] always-background? []\n        end\n    end\nelse\n    set [i v] to (fip)\nend\ninsert (distance) at (i) of [__object_distance v] \ninsert (box_distance) at (i) of [__object.box_distance v] \ninsert (x1) at (i) of [objectx1 v] \ninsert (x2) at (i) of [objectx2 v] \ninsert (x3) at (i) of [objectx3 v] \ninsert (y1) at (i) of [objecty1 v] \ninsert (y2) at (i) of [objecty2 v] \ninsert (y3) at (i) of [objecty3 v] \ninsert (z1) at (i) of [objectz1 v] \ninsert (z2) at (i) of [objectz2 v] \ninsert (z3) at (i) of [objectz3 v] \ninsert [] at (i) of [object_hitbox_reference v] \ninsert (color) at (i) of [color v] \ninsert [tri] at (i) of [object type v] \n\ndefine (+) Add cube object (middle-x) (middle-y) (middle-z) lengths (xlen) (ylen) (zlen) colors (color1) (color2) (color3) (color4) (color5) (color6)\ndelete all of [platform:corners v]\n(3D) Go to ((xlen) * (1)) ((ylen) * (2)) ((zlen) * (1)) render [0] perspective_proj [0] rotation_mode [0] object_mode [1] sort [1]\nadd (x) to [platform:corners v]\nadd (y) to [platform:corners v]\nadd (z) to [platform:corners v]\n(3D) Go to ((xlen) * (1)) ((ylen) * (2)) ((zlen) * (-1)) render [0] perspective_proj [0] rotation_mode [0] object_mode [1] sort [1]\nadd (x) to [platform:corners v]\nadd (y) to [platform:corners v]\nadd (z) to [platform:corners v]\n(3D) Go to ((xlen) * (1)) ((ylen) * ()) ((zlen) * (1)) render [0] perspective_proj [0] rotation_mode [0] object_mode [1] sort [1]\nadd (x) to [platform:corners v]\nadd (y) to [platform:corners v]\nadd (z) to [platform:corners v]\n(3D) Go to ((xlen) * (1)) ((ylen) * ()) ((zlen) * (-1)) render [0] perspective_proj [0] rotation_mode [0] object_mode [1] sort [1]\nadd (x) to [platform:corners v]\nadd (y) to [platform:corners v]\nadd (z) to [platform:corners v]\n(3D) Go to ((xlen) * (-1)) ((ylen) * (2)) ((zlen) * (1)) render [0] perspective_proj [0] rotation_mode [0] object_mode [1] sort [1]\nadd (x) to [platform:corners v]\nadd (y) to [platform:corners v]\nadd (z) to [platform:corners v]\n(3D) Go to ((xlen) * (-1)) ((ylen) * (2)) ((zlen) * (-1)) render [0] perspective_proj [0] rotation_mode [0] object_mode [1] sort [1]\nadd (x) to [platform:corners v]\nadd (y) to [platform:corners v]\nadd (z) to [platform:corners v]\n(3D) Go to ((xlen) * (-1)) ((ylen) * ()) ((zlen) * (1)) render [0] perspective_proj [0] rotation_mode [1] object_mode [1] sort [1]\nadd (x) to [platform:corners v]\nadd (y) to [platform:corners v]\nadd (z) to [platform:corners v]\n(3D) Go to ((xlen) * (-1)) ((ylen) * ()) ((zlen) * (-1)) render [0] perspective_proj [0] rotation_mode [1] object_mode [1] sort [1]\nadd (x) to [platform:corners v]\nadd (y) to [platform:corners v]\nadd (z) to [platform:corners v]\ndelete all of [cube:sides v]\n(3D) Go to [] [] (zlen) render [0] perspective_proj [0] rotation_mode [1] object_mode [1] sort [1]\nadd (x) to [cube:sides v]\nadd (y) to [cube:sides v]\nadd (z) to [cube:sides v]\n(3D) Go to [] [] ((zlen) * (-1)) render [0] perspective_proj [0] rotation_mode [1] object_mode [1] sort [1]\nadd (x) to [cube:sides v]\nadd (y) to [cube:sides v]\nadd (z) to [cube:sides v]\n(3D) Go to (xlen) [] [] render [0] perspective_proj [0] rotation_mode [1] object_mode [1] sort [1]\nadd (x) to [cube:sides v]\nadd (y) to [cube:sides v]\nadd (z) to [cube:sides v]\n(3D) Go to ((xlen) * (-1)) [] [] render [0] perspective_proj [0] rotation_mode [1] object_mode [1] sort [1]\nadd (x) to [cube:sides v]\nadd (y) to [cube:sides v]\nadd (z) to [cube:sides v]\n(3D) Go to [] ((ylen) * (1)) [] render [0] perspective_proj [0] rotation_mode [1] object_mode [1] sort [1]\nadd (x) to [cube:sides v]\nadd (y) to [cube:sides v]\nadd (z) to [cube:sides v]\nset [_orient1 v] to [8]\nset [_orient2 v] to [6]\nset [_orient3 v] to [2]\n(+) Add graphical object x ((middle-x) + (item (((_orient1) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient2) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient3) * (3)) + (-2)) of [platform:corners v])) y ((middle-y) + (item (((_orient1) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient2) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient3) * (3)) + (-1)) of [platform:corners v])) z ((middle-z) + (item (((_orient1) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient2) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient3) * (3)) + ()) of [platform:corners v])) color (color1) fix_insert_position [] fix_xyz_refs ((middle-x) + (item (((2) * (3)) + (-2)) of [cube:sides v])) ((middle-y) + (item (((2) * (3)) + (-1)) of [cube:sides v])) ((middle-z) + (item (((2) * (3)) + ()) of [cube:sides v])) fix_box_xyz (player x) (player y) (player z)\nset [_orient1 v] to [8]\nset [_orient2 v] to [4]\nset [_orient3 v] to [2]\n(+) Add graphical object x ((middle-x) + (item (((_orient1) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient2) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient3) * (3)) + (-2)) of [platform:corners v])) y ((middle-y) + (item (((_orient1) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient2) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient3) * (3)) + (-1)) of [platform:corners v])) z ((middle-z) + (item (((_orient1) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient2) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient3) * (3)) + ()) of [platform:corners v])) color (color1) fix_insert_position (i) fix_xyz_refs [] [] [] fix_box_xyz [] [] []\nset [_orient1 v] to [5]\nset [_orient2 v] to [1]\nset [_orient3 v] to [3]\n(+) Add graphical object x ((middle-x) + (item (((_orient1) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient2) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient3) * (3)) + (-2)) of [platform:corners v])) y ((middle-y) + (item (((_orient1) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient2) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient3) * (3)) + (-1)) of [platform:corners v])) z ((middle-z) + (item (((_orient1) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient2) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient3) * (3)) + ()) of [platform:corners v])) color (color2) fix_insert_position [] fix_xyz_refs ((middle-x) + (item (((1) * (3)) + (-2)) of [cube:sides v])) ((middle-y) + (item (((1) * (3)) + (-1)) of [cube:sides v])) ((middle-z) + (item (((1) * (3)) + ()) of [cube:sides v])) fix_box_xyz (player x) (player y) (player z)\nset [_orient1 v] to [5]\nset [_orient2 v] to [7]\nset [_orient3 v] to [3]\n(+) Add graphical object x ((middle-x) + (item (((_orient1) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient2) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient3) * (3)) + (-2)) of [platform:corners v])) y ((middle-y) + (item (((_orient1) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient2) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient3) * (3)) + (-1)) of [platform:corners v])) z ((middle-z) + (item (((_orient1) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient2) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient3) * (3)) + ()) of [platform:corners v])) color (color2) fix_insert_position (i) fix_xyz_refs [] [] [] fix_box_xyz (player x) (player y) (player z)\nset [_orient1 v] to [1]\nset [_orient2 v] to [2]\nset [_orient3 v] to [4]\n(+) Add graphical object x ((middle-x) + (item (((_orient1) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient2) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient3) * (3)) + (-2)) of [platform:corners v])) y ((middle-y) + (item (((_orient1) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient2) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient3) * (3)) + (-1)) of [platform:corners v])) z ((middle-z) + (item (((_orient1) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient2) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient3) * (3)) + ()) of [platform:corners v])) color (color3) fix_insert_position [] fix_xyz_refs ((middle-x) + (item (((3) * (3)) + (-2)) of [cube:sides v])) ((middle-y) + (item (((3) * (3)) + (-1)) of [cube:sides v])) ((middle-z) + (item (((3) * (3)) + ()) of [cube:sides v])) fix_box_xyz (player x) (player y) (player z)\nset [_orient1 v] to [4]\nset [_orient2 v] to [3]\nset [_orient3 v] to [1]\n(+) Add graphical object x ((middle-x) + (item (((_orient1) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient2) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient3) * (3)) + (-2)) of [platform:corners v])) y ((middle-y) + (item (((_orient1) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient2) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient3) * (3)) + (-1)) of [platform:corners v])) z ((middle-z) + (item (((_orient1) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient2) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient3) * (3)) + ()) of [platform:corners v])) color (color3) fix_insert_position (i) fix_xyz_refs [] [] [] fix_box_xyz (player x) (player y) (player z)\nset [_orient1 v] to [6]\nset [_orient2 v] to [8]\nset [_orient3 v] to [7]\n(+) Add graphical object x ((middle-x) + (item (((_orient1) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient2) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient3) * (3)) + (-2)) of [platform:corners v])) y ((middle-y) + (item (((_orient1) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient2) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient3) * (3)) + (-1)) of [platform:corners v])) z ((middle-z) + (item (((_orient1) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient2) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient3) * (3)) + ()) of [platform:corners v])) color (color4) fix_insert_position [] fix_xyz_refs ((middle-x) + (item (((4) * (3)) + (-2)) of [cube:sides v])) ((middle-y) + (item (((4) * (3)) + (-1)) of [cube:sides v])) ((middle-z) + (item (((4) * (3)) + ()) of [cube:sides v])) fix_box_xyz (player x) (player y) (player z)\nset [_orient1 v] to [6]\nset [_orient2 v] to [5]\nset [_orient3 v] to [7]\n(+) Add graphical object x ((middle-x) + (item (((_orient1) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient2) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient3) * (3)) + (-2)) of [platform:corners v])) y ((middle-y) + (item (((_orient1) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient2) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient3) * (3)) + (-1)) of [platform:corners v])) z ((middle-z) + (item (((_orient1) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient2) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient3) * (3)) + ()) of [platform:corners v])) color (color4) fix_insert_position (i) fix_xyz_refs [] [] [] fix_box_xyz (player x) (player y) (player z)\nset [_orient1 v] to [6]\nset [_orient2 v] to [5]\nset [_orient3 v] to [1]\n(+) Add graphical object x ((middle-x) + (item (((_orient1) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient2) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient3) * (3)) + (-2)) of [platform:corners v])) y ((middle-y) + (item (((_orient1) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient2) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient3) * (3)) + (-1)) of [platform:corners v])) z ((middle-z) + (item (((_orient1) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient2) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient3) * (3)) + ()) of [platform:corners v])) color (color5) fix_insert_position [] fix_xyz_refs ((middle-x) + (item (((5) * (3)) + (-2)) of [cube:sides v])) ((middle-y) + (item (((5) * (3)) + (-1)) of [cube:sides v])) ((middle-z) + (item (((5) * (3)) + ()) of [cube:sides v])) fix_box_xyz (player x) (player y) (player z)\nset [_orient1 v] to [6]\nset [_orient2 v] to [2]\nset [_orient3 v] to [1]\n(+) Add graphical object x ((middle-x) + (item (((_orient1) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient2) * (3)) + (-2)) of [platform:corners v])) ((middle-x) + (item (((_orient3) * (3)) + (-2)) of [platform:corners v])) y ((middle-y) + (item (((_orient1) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient2) * (3)) + (-1)) of [platform:corners v])) ((middle-y) + (item (((_orient3) * (3)) + (-1)) of [platform:corners v])) z ((middle-z) + (item (((_orient1) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient2) * (3)) + ()) of [platform:corners v])) ((middle-z) + (item (((_orient3) * (3)) + ()) of [platform:corners v])) color (color5) fix_insert_position (i) fix_xyz_refs [] [] [] fix_box_xyz (player x) (player y) (player z)\n\ndefine Add Spike at (x-block) (y-block) (z-block) xrot (xrot) yrot (yrot) zrot (zrot) size (size) offset (xoff) (yoff) (zoff)\nset [_x v] to ((((x-block) * (50)) - (25)) + (xoff))\nset [_y v] to ((((y-block) * (50)) - (25)) + (yoff))\nset [_z v] to ((((z-block) * (50)) - (25)) + (zoff))\nif <<([abs v] of ((_x) - (player x)) ) < (@render distance)> and <<([abs v] of ((_y) - (player y)) ) < (@render distance)> and <([abs v] of ((_z) - (player z)) ) < (@render distance)>>> then\n    set [ax rotation v] to (xrot)\n    set [ay rotation v] to (yrot)\n    set [az rotation v] to (zrot)\n    (+) Add hitbox ((_x) - ((size) * (0.5))) ((_y) + ((size) * (2))) ((_z) - ((size) * (0.5))) type [spike] x rotation (xrot) z rotation (zrot) y rotation (yrot) color [#ffd1d1] l ((size) * (1)) ((size) * (1)) ((size) * (1)) with_graphical_element? [] always_background? [] impulses (xyz) [] [] [] IndependentTexture []\n    (+) Add hitbox ((_x) - ((size) * (1))) (_y) ((_z) - ((size) * (1))) type [spike] x rotation (xrot) z rotation (zrot) y rotation (yrot) color [#ffd1d1] l ((size) * (2)) ((size) * (2)) ((size) * (2)) with_graphical_element? [] always_background? [] impulses (xyz) [] [] [] IndependentTexture []\n    (+) add body form corners [1] (size) [0] ((size) * (-1)) [2] (size) [0] (size) [3] [0] ((size) * (3.2)) [0] [color] [#f25a5a] [mid] (_x) (_y) (_z) [use mid x as ref] []\n    (+) add body form corners [1] ((size) * (-1)) [0] ((size) * (-1)) [2] (size) [0] ((size) * (-1)) [3] [0] ((size) * (3.2)) [0] [color] [#ff7878] [mid] (_x) (_y) (_z) [use mid x as ref] []\n    (+) add body form corners [1] ((size) * (-1)) [0] ((size) * (-1)) [2] ((size) * (-1)) [0] (size) [3] [0] ((size) * (3.2)) [0] [color] [#f25a5a] [mid] (_x) (_y) (_z) [use mid x as ref] []\n    (+) add body form corners [1] ((size) * (-1)) [0] (size) [2] (size) [0] (size) [3] [0] ((size) * (3.2)) [0] [color] [#ff7878] [mid] (_x) (_y) (_z) [use mid x as ref] []\nend\n\ndefine Respawn\nreset timer\nset [sy v] to [0]\nset [sx v] to [0]\nset [_flag:y v] to [0]\nset [sz v] to [0]\nset [player z direction v] to [0]\nset [player y direction v] to [0]\nset [_player y direction v] to [0]\nset [scroll player y v] to [0]\nset [player x v] to [-25]\nset [player y v] to [20]\nset [player z v] to [25]\nset [y_angle v] to [0]\nset [x_angle v] to [-35]\nif <is compiled?> then\n    if <(@device) = [1]> then\n        set [@mobile controls enabled v] to [1]\n    end\n    set [@device v] to [3]\nend\nif <(@device) = [3]> then\n    set [@render quality v] to [2]\n    set [@render distance v] to [440]\nelse\n    set [@render distance v] to [280]\n    if <(@device) = [2]> then\n        set [@render quality v] to [2]\n    else\n        set [@render quality v] to [3]\n        set [@mobile controls enabled v] to [1]\n    end\nend\n\nwhen I receive [@killed v]\nrepeat (2)\n    wait (0.1) seconds\n    set [@killed v] to [1]\n    wait (0.1) seconds\n    set [@killed v] to [0]\nend\nRespawn\nbroadcast (@dead v)\n\ndefine (+) get insert pos coordinates (x) (y) (z) only_use_box_coordinates? (only_use_box_coordinates?) hitbox? (hitbox) always-background? (always-background?)\nset [i v] to [1]\nset [o v] to [0]\nif <(hitbox) = [1]> then\n    set [box_distance v] to [0]\nelse\n    set [box_distance v] to [1e1000]\nend\nrepeat ((length of [_box v]) / (3))\n    Get 3D distance from (((item ((o) + (1)) of [_box v]) * (50)) - (50)) (((item ((o) + (2)) of [_box v]) * (50)) - (50)) (((item ((o) + (3)) of [_box v]) * (50)) - (50)) to (scroll x) (scroll y) (scroll z)\n    if <(hitbox) = [1]> then\n        if <(box_distance) < (round (_distance))> then\n            set [box_distance v] to (round (_distance))\n        end\n    else\n        if <(round (_distance)) < (box_distance)> then\n            set [box_distance v] to (round (_distance))\n        end\n    end\n    change [o v] by (3)\nend\nrepeat until <<(item (i) of [__object.box_distance v]) < (box_distance)> or <(box_distance) = (item (i) of [__object.box_distance v])>>\n    change [i v] by (1)\nend\nGet 3D distance from (x) (y) (z) to (scroll x) (scroll y) (scroll z)\nset [distance v] to (round (_distance))\nif <not <(only_use_box_coordinates?) = [1]>> then\n    repeat until <<(item (i) of [__object_distance v]) < (distance)> or <not <(box_distance) = (item (i) of [__object.box_distance v])>>>\n        change [i v] by (1)\n    end\nend\nif <(always-background?) = [1]> then\n    set [i v] to [1]\nend\n\ndefine (+) add body form corners [1] (x1) (y1) (z1) [2] (x2) (y2) (z2) [3] (x3) (y3) (z3) [color] (color) [mid] (mid-x) (mid-y) (mid-z) [use mid x as ref] (\[use mid x as ref\])\nif <<(aX rotation) = []> and <<(aY rotation) = []> and <(aZ rotation) = []>>> then\n    if <(\[use mid x as ref\]) = [1]> then\n        (+) Add graphical object x ((mid-x) + (x1)) ((mid-x) + (x2)) ((mid-x) + (x3)) y ((mid-y) + (y1)) ((mid-y) + (y2)) ((mid-y) + (y3)) z ((mid-z) + (z1)) ((mid-z) + (z2)) ((mid-z) + (z3)) color (color) fix_insert_position [] fix_xyz_refs (mid-x) (mid-y) (mid-z) fix_box_xyz (mid-x) (mid-y) (mid-z)\n    else\n        (+) Add graphical object x ((mid-x) + (x1)) ((mid-x) + (x2)) ((mid-x) + (x3)) y ((mid-y) + (y1)) ((mid-y) + (y2)) ((mid-y) + (y3)) z ((mid-z) + (z1)) ((mid-z) + (z2)) ((mid-z) + (z3)) color (color) fix_insert_position [] fix_xyz_refs [] [] [] fix_box_xyz [] [] []\n    end\nelse\n    delete all of [object:corners v]\n    (3D) Go to (x1) (y1) (z1) render [0] perspective_proj [] rotation_mode [] object_mode [1] sort []\n    add (x) to [object:corners v]\n    add (y) to [object:corners v]\n    add (z) to [object:corners v]\n    (3D) Go to (x2) (y2) (z2) render [0] perspective_proj [] rotation_mode [] object_mode [1] sort []\n    add (x) to [object:corners v]\n    add (y) to [object:corners v]\n    add (z) to [object:corners v]\n    (3D) Go to (x3) (y3) (z3) render [0] perspective_proj [] rotation_mode [] object_mode [1] sort []\n    add (x) to [object:corners v]\n    add (y) to [object:corners v]\n    add (z) to [object:corners v]\n    (+) Add graphical object x ((mid-x) + (item (1) of [object:corners v])) ((mid-x) + (item (4) of [object:corners v])) ((mid-x) + (item (7) of [object:corners v])) y ((mid-y) + (item (2) of [object:corners v])) ((mid-y) + (item (5) of [object:corners v])) ((mid-y) + (item (8) of [hitbox_y_rotation v])) z ((mid-z) + (item (3) of [object:corners v])) ((mid-z) + (item (6) of [object:corners v])) ((mid-z) + (item (9) of [object:corners v])) color (color) fix_insert_position [] fix_xyz_refs [] [] [] fix_box_xyz [] [] []\nend\n\ndefine Rotate Map\nif <key (left arrow v) pressed?> then\n    change [y_angle v] by (5)\nend\nif <key (right arrow v) pressed?> then\n    change [y_angle v] by (-5)\nend\nif <key (down arrow v) pressed?> then\n    change [x_angle v] by (-5)\nend\nif <key (up arrow v) pressed?> then\n    change [x_angle v] by (5)\nend\nif <[-15] < (x_angle)> then\n    set [x_angle v] to [-15]\nend\nif <(x_angle) < [-90]> then\n    set [x_angle v] to [-90]\nend\n\nP = Translate [] [] [] by [0] [0] [180]\nP = Perspective Protection of (x) (y) (z) with focal length (zoom)\n\nif <(perspective_proj) = [0]> then\n\ndefine Camera (x rot)\nset [_camera:x sin v] to ([sin v] of (x rot) )\nset [_camera:y sin v] to ([sin v] of (y_angle) )\nset [_camera:x cos v] to ([cos v] of (x rot) )\nset [_camera:y cos v] to ([cos v] of (y_angle) )\nset [scroll x v] to ((player x) + (((_camera:y sin) * (_camera:x cos)) * (zoom)))\nset [scroll z v] to ((player z) - (((_camera:y cos) * (_camera:x cos)) * (zoom)))\nchange [scroll player y v] by (((scroll player y) - ((player y) + (15))) / (-4))\nset [scroll y v] to ((scroll player y) - ((_camera:x sin) * (zoom)))\n\ndefine Get 3D distance from (x1) (y1) (z1) to (x2) (y2) (z2)\n(3D) Go to (x1) (y1) (z1) render [0] perspective_proj [0] rotation_mode [0] object_mode [0] sort [0]\nset [x1 v] to (x)\nset [y1 v] to (y)\nset [z1 v] to ((z) + ())\n(3D) Go to (x2) (y2) (z2) render [0] perspective_proj [0] rotation_mode [0] object_mode [0] sort [0]\nif < (join (x1) (join (x) (join (y1) (join (y) (join (z1) (z)))))) contains [!]?> then\n    set [_distance v] to [100000000000000000000000000000000000000000000000000000]\nelse\n    set [_distance v] to ([sqrt v] of ((((x1) - (x)) * ((x1) - (x))) + ((((y1) - (y)) * ((y1) - (y))) + ((((z1) + (-75)) - (z)) * (((z1) + (-)) - (z))))) )\nend\n\nwait until <<<([abs v] of ((player x) - (scroll x)) ) < [50]> and <([abs v] of ((player y) - (scroll y)) ) < [50]>> and <([abs v] of ((player z) - (scroll z)) ) < [50]>>\n\nwhen I receive [@dead v]\nset [@paused v] to [0]\n\nwhen I receive [tick 2 v]\nRender Objects\nRotate Map\nif <(@mobile controls enabled) = [1]> then\n    Joystick\nend\nPhysics\n\ndefine (+) get box (x) (y) (z)\ndelete all of [_box v]\nadd (round (((x) + ()) / (50))) to [_box v]\nadd (round (((y) + ()) / (50))) to [_box v]\nadd (round (((z) + ()) / (50))) to [_box v]\nset [___x v] to (round (((x) + (-10)) / (50)))\nset [___y v] to (round (((y) + ()) / (50)))\nset [___z v] to (round (((z) + (-10)) / (50)))\nif <not <<(item (1) of [_box v]) = (___x)> and <(item (3) of [_box v]) = (___z)>>> then\n    add (___x) to [_box v]\n    add (___y) to [_box v]\n    add (___z) to [_box v]\nend\n\ndefine Add line from (x1) (y1) (z1) to (x2) (y2) (z2) size (size) color (color) y-sorting-offset (y-sorting-offset)\nif <<([abs v] of ((x1) - (player x)) ) < (@render distance)> and <<([abs v] of ((y1) - (player y)) ) < (@render distance)> and <([abs v] of ((z1) - (player z)) ) < (@render distance)>>> then\n    (+) get box (x1) ((y1) + (y-sorting-offset)) (z1)\n    (+) get insert pos coordinates (((x1) + (x2)) / (2)) (((y1) + (y2)) / (2)) (((z1) + (z2)) / (2)) only_use_box_coordinates? [0] hitbox? [1] always-background? []\n    insert (box_distance) at (i) of [__object.box_distance v] \n    insert (distance) at (i) of [__object_distance v] \n    insert (x1) at (i) of [objectx1 v] \n    insert (x2) at (i) of [objectx2 v] \n    insert [] at (i) of [objectx3 v] \n    insert (y1) at (i) of [objecty1 v] \n    insert (y2) at (i) of [objecty2 v] \n    insert [] at (i) of [objecty3 v] \n    insert (z1) at (i) of [objectz1 v] \n    insert (z2) at (i) of [objectz2 v] \n    insert (size) at (i) of [objectz3 v] \n    insert (join [line] []) at (i) of [object_hitbox_reference v] \n    insert (color) at (i) of [color v] \n    insert (join [line] []) at (i) of [object type v] \nend\n\ndefine Add fence (x) (y) (z) segments (segments) direction (direction)\nif <<([abs v] of ((x) - (player x)) ) < (@render distance)> and <<([abs v] of ((y) - (player y)) ) < (@render distance)> and <([abs v] of ((z) - (player z)) ) < (@render distance)>>> then\n    if <(direction) = [x]> then\n        set [i2 v] to [0]\n        (+) Add hitbox ((x) - (15)) (y) ((z) - (5)) type [ground1] x rotation [0] z rotation [0] y rotation [0] color [] l (((segments) * (25)) + (20)) [35] [10] with_graphical_element? [0] always_background? [] impulses (xyz) [] [] [] IndependentTexture []\n        repeat (segments)\n            Add line from ((x) + ((i2) * (25))) ((y) + (2)) (z) to ((x) + ((i2) * (25))) ((y) + (30)) (z) size [7.5] color [#575248] y-sorting-offset []\n            Add line from ((x) + ((((i2) + ()) * (25)) + (-7))) ((y) + (32)) (z) to ((x) + ((((i2) + (1)) * (25)) + (7))) ((y) + (32)) (z) size [13] color [#615b50] y-sorting-offset []\n            \n            if <((i2) mod (2)) = [1]> then\n                Add line from ((x) + ((i2) * (25))) ((y) + (2)) (z) to ((x) + ((((i2) + (1)) * (25)) + ())) ((y) + (30)) (z) size [6] color [#575248] y-sorting-offset []\n            else\n                Add line from ((x) + ((i2) * (25))) ((y) + (30)) (z) to ((x) + ((((i2) + (1)) * (25)) + ())) ((y) + (2)) (z) size [6] color [#575248] y-sorting-offset []\n            end\n            change [i2 v] by (1)\n        end\n        Add line from ((x) + ((i2) * (25))) ((y) + (2)) (z) to ((x) + ((i2) * (25))) ((y) + (30)) (z) size [7.5] color [#575248] y-sorting-offset []\n    else\n        set [i2 v] to [0]\n        (+) Add hitbox ((x) - (10)) (y) ((z) - (15)) type [ground1] x rotation [0] z rotation [0] y rotation [0] color [] l [10] [35] (((segments) * (25)) + (20)) with_graphical_element? [0] always_background? [] impulses (xyz) [] [] [] IndependentTexture []\n        repeat (segments)\n            Add line from (x) ((y) + (2)) ((z) + ((i2) * (25))) to (x) ((y) + (30)) ((z) + ((i2) * (25))) size [7.5] color [#575248] y-sorting-offset []\n            Add line from (x) ((y) + (32)) ((z) + ((((i2) + ()) * (25)) + (-7))) to (x) ((y) + (32)) ((z) + ((((i2) + (1)) * (25)) + (7))) size [13] color [#615b50] y-sorting-offset []\n            \n            if <((i2) mod (2)) = [1]> then\n                Add line from (x) ((y) + (2)) ((z) + ((i2) * (25))) to (x) ((y) + (30)) ((z) + ((((i2) + (1)) * (25)) + ())) size [6] color [#575248] y-sorting-offset []\n            else\n                Add line from (x) ((y) + (30)) ((z) + ((i2) * (25))) to (x) ((y) + (2)) ((z) + ((((i2) + (1)) * (25)) + ())) size [6] color [#575248] y-sorting-offset []\n            end\n            change [i2 v] by (1)\n        end\n        Add line from (x) ((y) + (2)) ((z) + ((i2) * (25))) to (x) ((y) + (30)) ((z) + ((i2) * (25))) size [7.5] color [#575248] y-sorting-offset []\n    end\nend\n\ndefine Add end flag at (x) (y) (z)\nif <<([abs v] of ((x) - (player x)) ) < (@render distance)> and <<([abs v] of ((y) - (player y)) ) < (@render distance)> and <([abs v] of ((z) - (player z)) ) < (@render distance)>>> then\n    set [ax rotation v] to [0]\n    set [ay rotation v] to [0]\n    set [az rotation v] to [0]\n    (+) add body form corners [1] [-2] [-17] [0] [2] [-25] [] [0] [3] [-2] [] [0] [color] [#d17171] [mid] (x) ((y) + ((60) + (_flag:y))) (z) [use mid x as ref] []\n    (+) add body form corners [1] [-2] [-17] [0] [2] [-25] [-17] [0] [3] [-25] [] [0] [color] [#d17171] [mid] (x) ((y) + ((60) + (_flag:y))) (z) [use mid x as ref] []\n    Add line from (x) (y) (z) to (x) ((y) + (60)) (z) size [9] color [#4f2a2a] y-sorting-offset []\n    if <(______won?) = [0]> then\n        (+) Add hitbox ((x) - (10)) (y) ((z) - (10)) type [endflag] x rotation [] z rotation [] y rotation [] color [] l [20] [100] [20] with_graphical_element? [] always_background? [] impulses (xyz) [] [] [] IndependentTexture []\n    end\nend\n\nwhen I receive [@win v]\nset [_flag:y v] to [0]\nset [@paused v] to [1]\nrepeat (10)\n    change [_flag:y v] by (((_flag:y) - (-40)) / (-4))\nend\nbroadcast (popup0 v)\nset [@pause_rendering v] to [1]\nset [@paused v] to [0]\n\nwhen I receive [@levelup v]\nbroadcast (trans1 v) and wait\nwait (0.5) seconds\nchange [@level.id v] by (1)\nReset\nRespawn\nset [scroll x v] to [0]\nset [scroll player y v] to [0]\nset [______won? v] to [0]\nset [scroll z v] to [0]\nbroadcast (trans2 v)\nset [@paused v] to [0]\n\ndefine Add Spring at (x) (y) (z) x_rot (x_rot)\nif <<([abs v] of ((x) - (player x)) ) < (@render distance)> and <<([abs v] of ((y) - (player y)) ) < (@render distance)> and <([abs v] of ((z) - (player z)) ) < (@render distance)>>> then\n    set [ax rotation v] to [0]\n    set [ay rotation v] to (x_rot)\n    set [az rotation v] to [0]\n    Add line from ((x) + (-8)) ((y) + ()) ((z) + ()) to ((x) + (8)) ((y) + ((_spring_down) * (5))) ((z) + ()) size [5] color [#3d3720] y-sorting-offset []\n    Add line from ((x) + (8)) ((y) + ()) ((z) + ()) to ((x) + (-8)) ((y) + ((_spring_down) * (5))) ((z) + ()) size [5] color [#3d3720] y-sorting-offset []\n    Add line from ((x) + (-8)) ((y) + ((_spring_down) * (5))) ((z) + ()) to ((x) + (8)) ((y) + ((_spring_down) * (10))) ((z) + ()) size [5] color [#3d3720] y-sorting-offset []\n    Add line from ((x) + (8)) ((y) + ((_spring_down) * (5))) ((z) + ()) to ((x) + (-8)) ((y) + ((_spring_down) * (10))) ((z) + ()) size [5] color [#3d3720] y-sorting-offset []\n    Add line from ((x) + (-8)) ((y) + ((_spring_down) * (10))) ((z) + ()) to ((x) + (8)) ((y) + ((_spring_down) * (15))) ((z) + ()) size [5] color [#3d3720] y-sorting-offset []\n    Add line from ((x) + (8)) ((y) + ((_spring_down) * (10))) ((z) + ()) to ((x) + (-8)) ((y) + ((_spring_down) * (15))) ((z) + ()) size [5] color [#3d3720] y-sorting-offset []\n    (+) add body form corners [1] [-11] [] [11] [2] [-11] [] [-11] [3] [11] [] [11] [color] [#d4bd6a] [mid] (x) ((y) + ((_spring_down) * (19))) (z) [use mid x as ref] []\n    (+) add body form corners [1] [11] [] [11] [2] [-11] [] [-11] [3] [11] [] [-11] [color] [#d4bd6a] [mid] (x) ((y) + ((_spring_down) * (19))) (z) [use mid x as ref] []\n    (+) Add hitbox ((x) - (10)) (y) ((z) - (10)) type [spring] x rotation [] z rotation [] y rotation [] color [] l [20] [20] [20] with_graphical_element? [] always_background? [] impulses (xyz) [] [] [] IndependentTexture []\nend\n\ndefine Add coin (x) (y) (z)\nif <<([abs v] of ((x) - (player x)) ) < (@render distance)> and <<([abs v] of ((y) - (player y)) ) < (@render distance)> and <([abs v] of ((z) - (player z)) ) < (@render distance)>>> then\n    if <<(____coin_removed) = (join (x) (join (join [,] (y)) (join [,] (z))))> or <not <[@collected_coins v] contains (join (x) (join (join [,] (y)) (join [,] (z))))?>>> then\n        set [ax rotation v] to [0]\n        set [ay rotation v] to [0]\n        set [az rotation v] to [0]\n        (+) get box (x) (y) (z)\n        (+) get insert pos coordinates (x) (y) (z) only_use_box_coordinates? [0] hitbox? [0] always-background? [0]\n        insert (box_distance) at (i) of [__object.box_distance v] \n        insert (distance) at (i) of [__object_distance v] \n        insert (x) at (i) of [objectx1 v] \n        insert [] at (i) of [objectx2 v] \n        insert [] at (i) of [objectx3 v] \n        insert (y) at (i) of [objecty1 v] \n        insert [] at (i) of [objecty2 v] \n        insert [] at (i) of [objecty3 v] \n        insert (z) at (i) of [objectz1 v] \n        insert [] at (i) of [objectz3 v] \n        insert (join [coin] []) at (i) of [object_hitbox_reference v] \n        insert [] at (i) of [color v] \n        insert (join [coin] []) at (i) of [object type v] \n        if <[@collected_coins v] contains (join (x) (join (join [,] (y)) (join [,] (z))))?> then\n            insert [collected] at (i) of [objectz2 v] \n        else\n            (+) Add hitbox ((x) - (10)) ((y) - (10)) ((z) - (10)) type [coin] x rotation [] z rotation [] y rotation [] color [] l [20] [40] [20] with_graphical_element? [0] always_background? [] impulses (xyz) [] [] [] IndependentTexture []\n            insert [] at (i) of [objectz2 v] \n        end\n    end\nend\n\nwhen flag clicked\nforever\n    set [______coin_frame v] to [1]\n    repeat (5)\n        wait (0.1) seconds\n        change [______coin_frame v] by (1)\n    end\n    repeat (5)\n        wait (0.1) seconds\n        change [______coin_frame v] by (-1)\n    end\nend\n\nwhen I receive [@coin v]\nset [____coin_removed_size v] to [100]\nrepeat (10)\n    change [____coin_removed_size v] by (10)\nend\nset [____coin_removed v] to [0]\n\ndefine Add checkpoint flag (x) (y) (z)\nif <<([abs v] of ((x) - (player x)) ) < (@render distance)> and <<([abs v] of ((y) - (player y)) ) < (@render distance)> and <([abs v] of ((z) - (player z)) ) < (@render distance)>>> then\n    set [ax rotation v] to [0]\n    set [ay rotation v] to [0]\n    set [az rotation v] to [0]\n    (+) add body form corners [1] [-2] [-17] [0] [2] [-25] [] [0] [3] [-2] [] [0] [color] [#717fd1] [mid] (x) ((y) + ((60) + (_flag:y))) (z) [use mid x as ref] []\n    (+) add body form corners [1] [-2] [-17] [0] [2] [-25] [-17] [0] [3] [-25] [] [0] [color] [#717fd1] [mid] (x) ((y) + ((60) + (_flag:y))) (z) [use mid x as ref] []\n    Add line from (x) (y) (z) to (x) ((y) + (60)) (z) size [9] color [#4f2a2a] y-sorting-offset []\n    if <(______won?) = [0]> then\n        (+) Add hitbox ((x) - (10)) (y) ((z) - (10)) type [checkpoint] x rotation [] z rotation [] y rotation [] color [] l [20] [100] [20] with_graphical_element? [] always_background? [] impulses (xyz) [] [] [] IndependentTexture []\n    end\nend\n\nwhen flag clicked\nbroadcast (trans2 v)\nInit\nbroadcast (@welcome-popup v)\nforever\n    if <(@pause_rendering) = [0]> then\n        erase all\n        Reset\n        Add objects\n        if <(@killed) = [0]> then\n            if <not <(@LEVEL.id) = [0]>> then\n                Add player object\n            end\n        end\n        broadcast (tick v)\n        broadcast (tick 2 v)\n    end\nend\n\ndefine Add Player shadow\n(m) collision - shadow? [1]\nset [shadow possible v] to []\nset [shadow possible distance max v] to [1e10]\nrepeat until <not <[h_collision v] contains [ground1]?>>\n    set [i2 v] to (item # of [ground1] in [h_collision v])\n    if <[0] < (item (i2) of [h_shadow_collision_y v])> then\n        if <(item (i2) of [h_shadow_collision_y v]) < (shadow possible distance max)> then\n            set [shadow possible v] to (i2)\n            set [shadow possible distance max v] to (item (i2) of [h_shadow_collision_y v])\n        end\n    end\n    if <((item (i2) of [hitbox_x_rotation v]) + ((item (i2) of [hitbox_y_rotation v]) + (item (i2) of [hitbox_z_rotation v]))) = [0]> then\n    replace item (i2) of [h_collision v] with [handled]\nend\nif <not <(shadow possible) = []>> then\n    set [ax rotation v] to []\n    set [ay rotation v] to []\n    set [az rotation v] to []\n    change [shadow possible distance max v] by (-10)\n    (+) get box (player x) (((player y) - (shadow possible distance max)) + (-20)) (player z)\n    (+) get insert pos coordinates (player x) (((player y) - (shadow possible distance max)) + (-20)) (player z) only_use_box_coordinates? [0] hitbox? [0] always-background? []\n    insert (box_distance) at (i) of [__object.box_distance v] \n    insert (distance) at (i) of [__object_distance v] \n    insert (player x) at (i) of [objectx1 v] \n    insert [] at (i) of [objectx2 v] \n    insert [] at (i) of [objectx3 v] \n    insert ((player y) - (shadow possible distance max)) at (i) of [objecty1 v] \n    insert [] at (i) of [objecty2 v] \n    insert [] at (i) of [objecty3 v] \n    insert (player z) at (i) of [objectz1 v] \n    insert [] at (i) of [objectz2 v] \n    insert [] at (i) of [objectz3 v] \n    insert (join [shadow] []) at (i) of [object_hitbox_reference v] \n    insert (color) at (i) of [color v] \n    insert (join [shadow] []) at (i) of [object type v] \nend\n\ndefine Add cactus (x) (y) (z)\nAdd line from (x) (y) (z) to (x) ((y) + (30)) (z) size [13] color [#3e613d] y-sorting-offset []\nAdd line from ((x) + (7)) ((y) + (20)) (z) to ((x) + ()) ((y) + (20)) (z) size [9] color [#497348] y-sorting-offset []\nAdd line from ((x) + (7)) ((y) + (20)) (z) to ((x) + (7)) ((y) + (33)) (z) size [9] color [#497348] y-sorting-offset []\nAdd line from ((x) + (-7)) ((y) + (23)) (z) to ((x) + ()) ((y) + (23)) (z) size [9] color [#497348] y-sorting-offset []\nAdd line from ((x) + (-7)) ((y) + (23)) (z) to ((x) + (-7)) ((y) + (37)) (z) size [9] color [#497348] y-sorting-offset []\nAdd line from ((x) + ()) ((y) + (17)) (z) to ((x) + ()) ((y) + (17)) ((z) + (-6)) size [9] color [#497348] y-sorting-offset []\nAdd line from ((x) + ()) ((y) + (17)) ((z) + (-6)) to (x) ((y) + (30)) ((z) + (-6)) size [9] color [#497348] y-sorting-offset []\n(+) Add hitbox ((x) + (-7)) (y) ((z) + (-6)) type [ground1] x rotation [] z rotation [] y rotation [] color [] l [14] [37] [12] with_graphical_element? [] always_background? [] impulses (xyz) [] [] [] IndependentTexture []\n\n@Background\n\nwhen I receive [tick v]\nif <(@LEVEL.id) = [2]> then\n    switch costume to (join [2-] (((i) + (1)) mod (4)))\nelse\n    switch costume to (1 v)\nend\nset size to (100) %\nshow\ngo to [back v] layer\nclear graphic effects\ngo to x: ((((scroll x) + ()) + ((i) * (-1155))) / (-5)) y: ((([tan v] of (() - (x_angle)) ) * (zoom)) + ((-200) - (scroll y)))\nstamp\nhide\n\ndefine clone\nset [i v] to [-1]\nrepeat (3)\n    create clone of (_myself_ v)\n    change [i v] by (2)\nend\n\nwhen flag clicked\nhide\n\nwhen I start as a clone\nhide\n\nwhen flag clicked\nset size to (100) %\nclone\n\n@//📊 Scratch Analytics by @TimMcCool2\n\ndefine Send Data (payload)\nset [☁ to_host v] to (payload)\n\ndefine Encode (input)\nset [//output v] to []\nset [i v] to [0]\nrepeat (length of (input))\n    change [i v] by (1)\n    switch costume to (join [=] (letter (i) of (input)))\n    set [//output v] to (join (//output) (costume [number v]))\nend\n\nwhen I receive [close v]\nEncode (join (username) (join [,] (join (current [hour v]) (join [,] (item (@device) of [//devices v])))))\nSend Data (//output)\n\n@Thumbnail\n\nwhen flag clicked\nhide\nforever\n    reset timer\n    set [ghost v] effect to (100)\nend\n\nchange [ghost v] effect by (-10)\n\nwhen [timer v] > (0)\nwait (0.15) seconds\nshow\nswitch costume to (thumbnail2 v)\nset size to (200) %\nif <is compiled?> then\n    switch costume to (thumbnail-turbowarp v)\nend\nset [ghost v] effect to (100)\nrepeat (100)\n    switch costume to (thumbnail2 v)\n    go to [front v] layer\n    go [backward v] (1) layers\n    change size by (((size) - (100)) / (-3))\n    change [ghost v] effect by (-10)\n    change size by (((size) - (100)) / (-8))\n    if <is compiled?> then\n        switch costume to (thumbnail-turbowarp v)\n    end\nend\n\n@Bouncing icon\n\nwhen flag clicked\nhide\n\nwhen [timer v] > (0)\nwait (0.15) seconds\nshow\nset size to (100) %\nset [ghost v] effect to (100)\ngo to x: (203) y: (-144)\nchange y by (-100)\nforever\n    go to [front v] layer\n    change [ghost v] effect by (-10)\n    set [bounce_3_vel v] to (((bounce_3_vel) * (0.6)) + (((y position) - (-144)) * (-0.2)))\n    change y by (bounce_3_vel)\nend\n\nwhen [timer v] > (0)\nforever\n    wait until <touching (mouse-pointer v)?>\n    repeat (10)\n        change [brightness v] effect by (5)\n    end\n    wait until <not <touching (mouse-pointer v)?>>\n    repeat (10)\n        change [brightness v] effect by (-5)\n    end\n    clear graphic effects\nend\n\nwhen [timer v] > (0)\nforever\n    repeat until <touching (mouse-pointer v)?>\n        change size by (((size) - (100)) / (-4))\n    end\n    wait until <not <touching (mouse-pointer v)?>>\n    start sound [Boing v]\n    set size to (100) %\n    set [__stop_effect_size_vel v] to [20]\n    repeat (17)\n        change [__stop_effect_size_vel v] by (-2.5)\n        change size by (__stop_effect_size_vel)\n    end\nend\n\n@Overlay\n\nwhen flag clicked\nhide\nforever\n    go to [front v] layer\nend\n\nwhen I receive [trans2 v]\nshow\nclear graphic effects\nrepeat (10)\n    change [ghost v] effect by (10)\nend\nhide\n\nwhen I receive [trans1 v]\nshow\nset [ghost v] effect to (100)\nrepeat (10)\n    change [ghost v] effect by (-10)\nend\n\n@FPS Counter\n\nwhen flag clicked\nhide\nset size to (50) %\nset [i v] to [0]\nrepeat (10)\n    change [i v] by (1)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nset [brightness v] effect to (-100)\nswitch costume to (letter (i) of (@FPS))\nforever\n    set [ghost v] effect to (40)\n    show\n    set size to (38) %\n    set y to (158)\n    set x to ((((1) * (item (1) of [screen size v])) + (-50)) + (((i) - ()) * (15)))\n    wait until <not <(costume [name v]) = (letter (i) of (@FPS))>>\n    repeat (5)\n        change [ghost v] effect by (12)\n        change y by (-1)\n    end\n    switch costume to (letter (i) of (@FPS))\n    set y to (168)\n    set x to ((((1) * (item (1) of [screen size v])) + (-50)) + (((i) - ()) * (15)))\n    repeat (5)\n        change [ghost v] effect by (-12)\n        change y by (((y position) - (158)) / (-2))\n    end\n    set x to ((((1) * (item (1) of [screen size v])) + (-50)) + (((i) - ()) * (15)))\nend\n\nwhen flag clicked\nforever\n    set [@coins v] to (length of [@collected_coins v])\nend\n\n@Coins Counter\n\nwhen flag clicked\nhide\nset size to (50) %\nset [i v] to [0]\nrepeat (10)\n    change [i v] by (1)\n    create clone of (_myself_ v)\nend\n\nwhen I start as a clone\nset [brightness v] effect to (-100)\nswitch costume to (letter (i) of (@Coins))\nforever\n    set [ghost v] effect to (40)\n    show\n    set size to (50) %\n    set y to (155)\n    set x to ((((-1) * (item (1) of [screen size v])) + (40)) + (((i) - ()) * (20)))\n    wait until <not <(costume [name v]) = (letter (i) of (@Coins))>>\n    repeat (5)\n        change [ghost v] effect by (12)\n        change y by (-1)\n    end\n    switch costume to (letter (i) of (@Coins))\n    set y to (160)\n    set x to ((((-1) * (item (1) of [screen size v])) + (40)) + (((i) - ()) * (20)))\n    repeat (5)\n        change [ghost v] effect by (-12)\n        change y by (((y position) - (155)) / (-2))\n    end\n    set x to ((((-1) * (item (1) of [screen size v])) + (40)) + (((i) - ()) * (20)))\nend\n\nwhen flag clicked\nforever\n    set [@coins v] to (length of [@collected_coins v])\nend\n\n@Counter Bg\n\nwhen flag clicked\ncreate clone of (_myself_ v)\nforever\n    show\n    go to x: ((item (1) of [screen size v]) * (-1)) y: (180)\n    go to [back v] layer\n    if <(@LEVEL.id) = [2]> then\n        switch costume to (coins2 v)\n    else\n        switch costume to (coins1 v)\n    end\nend\n\nwhen I start as a clone\nforever\n    show\n    go to x: ((item (1) of [screen size v]) * (1)) y: (180)\n    go to [back v] layer\n    if <(@LEVEL.id) = [2]> then\n        switch costume to (fps2 v)\n    else\n        switch costume to (fps1 v)\n    end\nend\n\nwhen [timer v] > (0)\nhide\n\n@Screen Meizurizer\n\nwhen flag clicked\nswitch costume to (costume2 v)\ngo to x: (1e100) y: (1e100)\ndelete all of [screen size v]\nadd (x position) to [screen size v]\nadd (y position) to [screen size v]\n\n@NextLevel Button\n\nwhen flag clicked\nhide\nset x to (0)\ngo to x: (0) y: (200)\nforever\n    show\n    if <<([open v] of [level complete popup v]) = [0]> and <<(______won?) = [1]> and <<(@LEVEL.id) < [3]> and <(@passed) = [1]>>>> then\n        change y by (((y position) - (140)) / (-3.5))\n        if <touching (mouse-pointer v)?> then\n            set [ghost v] effect to (35)\n            if <mouse down?> then\n                set [ghost v] effect to (70)\n                wait until <not <mouse down?>>\n                set [@pause_rendering v] to [0]\n                set [@paused v] to [1]\n                broadcast (@levelup v)\n                repeat (10)\n                    change [ghost v] effect by (10)\n                end\n                set y to (200)\n                wait (3) seconds\n            end\n        else\n            change [ghost v] effect by (-10)\n        end\n    else\n        set [ghost v] effect to (90)\n        change y by (((y position) - (200)) / (-3.5))\n    end\nend\n\n@Level Complete Popup\n\nset [@paused v] to [1]\nset [@pause_rendering v] to [0]\nbroadcast (@respawn v)\n\ndefine sb\nset [vel2 v] to (((vel2) * (0.65)) + ((((100) + ()) - (size)) * (0.15)))\nchange size by (vel2)\nchange y by ((y position) / (-3))\n\nwhen I receive [popup0 v]\ndelete all of [h_collision v]\nif <(open) = [0]> then\n    broadcast (@confetti v)\n    go to x: (0) y: (0)\n    stop [other scripts in sprite v]\n    set [@pause_rendering v] to [1]\n    set [open v] to [1]\n    start sound [unlock v]\n    if <(@LEVEL.id) = [3]> then\n        set [clone-id v] to [demo-end]\n        create clone of (_myself_ v)\n        set [clone-id v] to [close2]\n        create clone of (_myself_ v)\n        set [clone-id v] to [bg]\n        create clone of (_myself_ v)\n    else\n        set [clone-id v] to [win]\n        create clone of (_myself_ v)\n        set [clone-id v] to [close]\n        create clone of (_myself_ v)\n        set [clone-id v] to [continue]\n        create clone of (_myself_ v)\n        set [clone-id v] to [bg]\n        create clone of (_myself_ v)\n    end\nend\n\nwhen I receive [close0 v]\nrepeat (10)\n    change size by (((size) - (70)) / (-4.5))\n    change [ghost v] effect by (15)\nend\nhide\ndelete this clone\n\ndefine effect 1\nshow\nif <(clone-id) = [bg]> then\n\nwhen I start as a clone\nforever\n    if <<(clone-id) = [close]> or <(clone-id) = [close2]>> then\n        if <(open) = [1]> then\n            change [ghost v] effect by (-10)\n            if <touching (mouse-pointer v)?> then\n                set [ghost v] effect to (50)\n                if <mouse down?> then\n                    set [ghost v] effect to (40)\n                    wait until <not <mouse down?>>\n                    set [@passed v] to [1]\n                    set [______won? v] to [1]\n                    set [@pause_rendering v] to [0]\n                    broadcast (close0 v)\n                    stop [this script v]\n                end\n            end\n        end\n    else\n        if <(clone-id) = [bg]> then\n            if <(open) = [1]> then\n                go to [back v] layer\n                go [forward v] (2) layers\n                set size to (100) %\n            end\n        else\n            if <(clone-id) = [continue]> then\n                if <(open) = [1]> then\n                    go to [front v] layer\n                    change [ghost v] effect by (-10)\n                    if <touching (mouse-pointer v)?> then\n                        set [ghost v] effect to (50)\n                        if <mouse down?> then\n                            set [ghost v] effect to (40)\n                            wait until <not <mouse down?>>\n                            set [@passed v] to [0]\n                            set [______won? v] to [1]\n                            set [@paused v] to [1]\n                            set [@pause_rendering v] to [0]\n                            broadcast (@levelup v)\n                            broadcast (close0 v)\n                            stop [this script v]\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\nwhen flag clicked\nset [open v] to [0]\n\nwhen flag clicked\nhide\n\nwhen [timer v] > (0)\nhide\n\nwhen I receive [close0 v]\nset [open v] to [0]\nwait (0.1) seconds\nset [@paused v] to [0]\n\nwhen I start as a clone\nswitch costume to (clone-id)\n\nwhen I start as a clone\nif <(clone-id) = [bg]> then\n    if <(open) = [1]> then\n        set [ghost v] effect to (100)\n        repeat (10)\n            change [ghost v] effect by (-4)\n        end\n    end\nend\n\nwhen I start as a clone\neffect 1\n\n@Welcome Popup\n\nwhen I start as a clone\nforever\n    \n        hide\n        stop [other scripts in sprite v]\n    end\nend\n\nwhen I receive [close v]\nwait (0.1) seconds\n\ndefine sb\nset [vel2 v] to (((vel2) * (0.65)) + ((((100) + ()) - (size)) * (0.15)))\nchange size by (vel2)\nchange y by ((y position) / (-3))\n\nwhen I receive [@welcome-popup v]\nif <(open) = [0]> then\n    go to x: (0) y: (0)\n    stop [other scripts in sprite v]\n    set [open v] to [1]\n    if <is compiled?> then\n        set [clone-id v] to [welcome-turbowarp]\n        create clone of (_myself_ v)\n        set [clone-id v] to [okay]\n        create clone of (_myself_ v)\n        set [clone-id v] to [bg]\n        create clone of (_myself_ v)\n        set [clone-id v] to [device1]\n        create clone of (_myself_ v)\n        set [clone-id v] to [device2]\n        create clone of (_myself_ v)\n        set [clone-id v] to [device3]\n        create clone of (_myself_ v)\n    else\n        set [clone-id v] to [welcome-scratch]\n        create clone of (_myself_ v)\n        set [clone-id v] to [okay]\n        create clone of (_myself_ v)\n        set [clone-id v] to [bg]\n        create clone of (_myself_ v)\n        set [clone-id v] to [device1]\n        create clone of (_myself_ v)\n        set [clone-id v] to [device2]\n        create clone of (_myself_ v)\n        set [clone-id v] to [device3]\n        create clone of (_myself_ v)\n    end\nend\n\nwhen I receive [close v]\nrepeat (10)\n    change size by (((size) - (70)) / (-4.5))\n    change [ghost v] effect by (15)\nend\nhide\ndelete this clone\n\ndefine effect 1\nshow\nif <(clone-id) = [bg]> then\n\nwhen I start as a clone\nforever\n    if < (clone-id) contains [device]?> then\n        if <(letter (7) of (clone-id)) = (@device)> then\n            clear graphic effects\n            set [brightness v] effect to (-10)\n        else\n            clear graphic effects\n            set [ghost v] effect to (80)\n            if <touching (mouse-pointer v)?> then\n                set [ghost v] effect to (40)\n                if <mouse down?> then\n                    set [ghost v] effect to (0)\n                    set [@device v] to (letter (7) of (clone-id))\n                end\n            end\n        end\n    else\n        if <<(clone-id) = [okay]> or <(clone-id) = [start-game]>> then\n            if <(open) = [1]> then\n                change [ghost v] effect by (-10)\n                if <touching (mouse-pointer v)?> then\n                    set [ghost v] effect to (50)\n                    if <mouse down?> then\n                        set [ghost v] effect to (40)\n                        wait until <not <mouse down?>>\n                        broadcast (close v)\n                        broadcast (@levelup v)\n                        stop [this script v]\n                    end\n                end\n            end\n        else\n            if <(clone-id) = [bg]> then\n                if <(open) = [1]> then\n                    go to [back v] layer\n                    go [forward v] (5) layers\n                    set size to (100) %\n                end\n            end\n        end\n    end\nend\n\nwhen flag clicked\nset [open v] to [0]\n\nwhen flag clicked\nshow\nset [ghost v] effect to (100)\nset [open v] to [0]\nswitch costume to (pick random (1) to (1))\nnext costume\nrepeat until <(costume [number v]) = [1]>\n    wait (0.1) seconds\n    next costume\nend\nhide\n\nwhen [timer v] > (0)\nhide\n\nwhen I receive [close v]\nset [open v] to [0]\n\nwhen I start as a clone\nswitch costume to (clone-id)\n\nwhen I start as a clone\nif <(clone-id) = [bg]> then\n    if <(open) = [1]> then\n        set [ghost v] effect to (100)\n        repeat (10)\n            change [ghost v] effect by (-4)\n        end\n    end\nend\n\nwhen I start as a clone\neffect 1\n\n@Particle Effect\n\nwhen I start as a clone\nset [y v] to [30]\nshow\neff (pick random (-10) to (10))\n\ndefine eff (x)\nset [color v] effect to (pick random (0) to (200))\nset [ghost v] effect to (0)\nset [brightness v] effect to (pick random (-50) to (50))\nforever\n    go to [front v] layer\n    change x by (x)\n    change y by (y)\n    change [y v] by (-2)\n    if <(y position) < [-170]> then\n        delete this clone\n    end\nend\n\nwhen I receive [@confetti v]\ngo to x: (pick random (200) to (-200)) y: (-180)\nrepeat (10)\n    create clone of (_myself_ v)\nend\n\n
3Dプラットフォーマー - デモ版\n➨ ラグが無いためや16:9の解像度のために、ターボワープでこのゲームをプレイしてください!\nリンク: https://turbowarp.org/596571109?hqpen&size=640x360\n\n➨ コントロール\n[WASD] 移動\n[スペース] ジャンプ\n[矢印キー] 画面の回転\n画面上の[タップ]でモバイルコントロールを表示