3D platformer                                                                            #Games
@Stage\n\n@Render Cause Why Not\n\ndefine Set Pen Color | RGB (r) (g) (b) (alpha)\nset pen color to ((round (b)) + ((256) * ((round (g)) + ((256) * ((round (r)) + ((256) * (alpha)))))))\n\ndefine Sort (value) into List\nset [sorted position v] to []\nif <[0] = (length of [sorted v])> then\n    set [sorted position v] to [1]\nelse\n    set [lower limit v] to [1]\n    set [upper limit v] to (length of [sorted v])\n    if <(value) < (item (Lower Limit) of [sorted v])> then\n        set [sorted position v] to (Lower Limit)\n    else\n        if <(value) > (item (Upper Limit) of [sorted v])> then\n            set [sorted position v] to ((1) + (Upper Limit))\n        else\n            repeat until <[1] = ((Upper Limit) - (Lower Limit))>\n                if <(value) > (item (round (((Upper Limit) + (Lower Limit)) / (2))) of [sorted v])> then\n                    set [lower limit v] to (round (((Upper Limit) + (Lower Limit)) / (2)))\n                else\n                    set [upper limit v] to (round (((Upper Limit) + (Lower Limit)) / (2)))\n                    if <(value) = (item (Upper Limit) of [sorted v])> then\n                        set [lower limit v] to ((-1) + (Upper Limit))\n                    end\n                end\n            end\n            set [sorted position v] to (Upper Limit)\n        end\n    end\nend\ninsert (value) at (Sorted Position) of [sorted v] \ninsert (item (Counter) of [which one v]) at (Sorted Position) of [sorted order v] \n\nwhen flag clicked\nhide\nset pen size to (5)\nset pen color to (#7192ff)\nset [view factor v] to [150]\nset [level v] to [1]\nDesign\nReset\nforever\n    erase all\n    Render\n    if <(Touching End?) = [yes]> then\n        change [level v] by (1)\n        Design\n        Reset\n    end\nend\n\ndefine Render\nDesign\nMove\nPhysics With Collisions [-1] [0.7] [5]\nset size to (100) %\nswitch costume to (sun v)\nGo To [0] [0] [0] With Translation At [10000000000] [20000000000] [10000000000]\nif <not <(Z) < [1]>> then\n    go to x: ((View Factor) * ((X) / (Z))) y: ((View Factor) * ((Y) / (Z)))\n    set [ghost v] effect to (70)\n    if <<[140] > (y position)> or <[-140] < (y position)>> then\n        stamp\n    end\nend\nswitch costume to (costume2 v)\nset size to (9999999999999999999999999999) %\nswitch costume to (costume1 v)\nCalculate Distance\nSort\nset [counter v] to (length of [platform x pos v])\nrepeat (length of [platform x pos v])\n    set [i v] to (item # of (Counter) in [sorted order v])\n    Draw Platform At (item (i) of [platform x pos v]) (item (i) of [platform y pos v]) (item (i) of [platform z pos v])\n    change [counter v] by (-1)\nend\n\ndefine Go To (x) (y) (z) With Translation At (x1) (y1) (z1)\nP (x) (y) (z)\nThis rotates Platform around cam Cube Pos (x1) (y1) (z1)\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 = Rotate (y) (z) Around +X Axis By (angle) degrees\nset [y v] to (((y) * ([cos v] of (angle) )) - ((z) * ([sin v] of (angle) )))\nset [z v] to (((y) * ([sin v] of (angle) )) + ((z) * ([cos v] of (angle) )))\n\ndefine P = Rotate (x) (z) Around +Y axis by (angle) Degrees\nset [x v] to (((z) * ([sin v] of (angle) )) + ((x) * ([cos v] of (angle) )))\nset [z v] to (((z) * ([cos v] of (angle) )) - ((x) * ([sin v] of (angle) )))\n\ndefine P = Perspective projection of (x) (y) (z) With FOV (fov)\nset [x v] to ((x) * ((fov) / (z)))\nset [y v] to ((y) * ((fov) / (z)))\n\ndefine Draw Platform At (x) (y) (z)\nif < (item (i) of [platform type v]) contains [Cube]?> then\n    if < (item (i) of [platform type v]) contains [Platform]?> then\n        Set Pen Color | RGB [0] [220] [255] [256]\n    else\n        if << (item (i) of [platform type v]) contains [Lava]?> or < (item (i) of [platform type v]) contains [Spike]?>> then\n            Set Pen Color | RGB [255] [100] [100] [256]\n        else\n            if < (item (i) of [platform type v]) contains [Ice]?> then\n                Set Pen Color | RGB [0] [255] [230] [100]\n            else\n                if < (item (i) of [platform type v]) contains [Slowness]?> then\n                    Set Pen Color | RGB [220] [130] [0] [256]\n                else\n                    if < (item (i) of [platform type v]) contains [Water]?> then\n                        Set Pen Color | RGB [0] [100] [255] [256]\n                    else\n                        if < (item (i) of [platform type v]) contains [Trampoline]?> then\n                            Set Pen Color | RGB [255] [255] [0] [256]\n                        else\n                            if < (item (i) of [platform type v]) contains [bounce]?> then\n                                Set Pen Color | RGB [255] [255] [0] [256]\n                            else\n                                if < (item (i) of [platform type v]) contains [End]?> then\n                                    Set Pen Color | RGB [0] [255] [0] [256]\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\n    Draw Line [-50] [50] [50] To [50] [50] [50] At (x) (y) (z)\n    Draw Line [-50] [50] [-50] To [50] [50] [-50] At (x) (y) (z)\n    Draw Line [50] [50] [50] To [50] [50] [-50] At (x) (y) (z)\n    Draw Line [-50] [50] [50] To [-50] [50] [-50] At (x) (y) (z)\n    Draw Line [-50] [-50] [50] To [50] [-50] [50] At (x) (y) (z)\n    Draw Line [-50] [-50] [-50] To [50] [-50] [-50] At (x) (y) (z)\n    Draw Line [50] [-50] [50] To [50] [-50] [-50] At (x) (y) (z)\n    Draw Line [-50] [-50] [50] To [-50] [-50] [-50] At (x) (y) (z)\n    Draw Line [-50] [-50] [50] To [-50] [50] [50] At (x) (y) (z)\n    Draw Line [-50] [-50] [-50] To [-50] [50] [-50] At (x) (y) (z)\n    Draw Line [50] [-50] [50] To [50] [50] [50] At (x) (y) (z)\n    Draw Line [50] [-50] [-50] To [50] [50] [-50] At (x) (y) (z)\nelse\n    if < (item (i) of [platform type v]) contains [Platform]?> then\n        Set Pen Color | RGB [0] [220] [255] [256]\n        Draw Line [-50] [50] [50] To [50] [50] [50] At (x) (y) (z)\n        Draw Line [-50] [50] [-50] To [50] [50] [-50] At (x) (y) (z)\n        Draw Line [50] [50] [50] To [50] [50] [-50] At (x) (y) (z)\n        Draw Line [-50] [50] [50] To [-50] [50] [-50] At (x) (y) (z)\n    else\n        if < (item (i) of [platform type v]) contains [Spike]?> then\n            Set Pen Color | RGB [255] [100] [100] [256]\n            Draw Line [-50] [-50] [50] To [50] [-50] [50] At (x) (y) (z)\n            Draw Line [-50] [-50] [-50] To [50] [-50] [-50] At (x) (y) (z)\n            Draw Line [50] [-50] [50] To [50] [-50] [-50] At (x) (y) (z)\n            Draw Line [-50] [-50] [50] To [-50] [-50] [-50] At (x) (y) (z)\n            Draw Line [-50] [-50] [-50] To [0] [50] [0] At (x) (y) (z)\n            Draw Line [50] [-50] [-50] To [0] [50] [0] At (x) (y) (z)\n            Draw Line [50] [-50] [50] To [0] [50] [0] At (x) (y) (z)\n            Draw Line [-50] [-50] [50] To [0] [50] [0] At (x) (y) (z)\n        else\n            if < (item (i) of [platform type v]) contains [Lava]?> then\n                Set Pen Color | RGB [255] [100] [100] [256]\n                Draw Line [-50] [50] [50] To [50] [50] [50] At (x) (y) (z)\n                Draw Line [-50] [50] [-50] To [50] [50] [-50] At (x) (y) (z)\n                Draw Line [50] [50] [50] To [50] [50] [-50] At (x) (y) (z)\n                Draw Line [-50] [50] [50] To [-50] [50] [-50] At (x) (y) (z)\n            else\n                if < (item (i) of [platform type v]) contains [Ice]?> then\n                    Set Pen Color | RGB [0] [255] [230] [100]\n                    Draw Line [-50] [50] [50] To [50] [50] [50] At (x) (y) (z)\n                    Draw Line [-50] [50] [-50] To [50] [50] [-50] At (x) (y) (z)\n                    Draw Line [50] [50] [50] To [50] [50] [-50] At (x) (y) (z)\n                    Draw Line [-50] [50] [50] To [-50] [50] [-50] At (x) (y) (z)\n                else\n                    if < (item (i) of [platform type v]) contains [Slowness]?> then\n                        Set Pen Color | RGB [220] [130] [0] [256]\n                        Draw Line [-50] [50] [50] To [50] [50] [50] At (x) (y) (z)\n                        Draw Line [-50] [50] [-50] To [50] [50] [-50] At (x) (y) (z)\n                        Draw Line [50] [50] [50] To [50] [50] [-50] At (x) (y) (z)\n                        Draw Line [-50] [50] [50] To [-50] [50] [-50] At (x) (y) (z)\n                    else\n                        if < (item (i) of [platform type v]) contains [Water]?> then\n                            Set Pen Color | RGB [0] [100] [255] [256]\n                            Draw Line [-50] [50] [50] To [50] [50] [50] At (x) (y) (z)\n                            Draw Line [-50] [50] [-50] To [50] [50] [-50] At (x) (y) (z)\n                            Draw Line [50] [50] [50] To [50] [50] [-50] At (x) (y) (z)\n                            Draw Line [-50] [50] [50] To [-50] [50] [-50] At (x) (y) (z)\n                        else\n                            if < (item (i) of [platform type v]) contains [Trampoline]?> then\n                                Set Pen Color | RGB [255] [255] [0] [256]\n                                Draw Line [-50] [0] [50] To [50] [0] [50] At (x) (y) (z)\n                                Draw Line [-50] [0] [-50] To [50] [0] [-50] At (x) (y) (z)\n                                Draw Line [50] [0] [50] To [50] [0] [-50] At (x) (y) (z)\n                                Draw Line [-50] [0] [50] To [-50] [0] [-50] At (x) (y) (z)\n                                Draw Line [-50] [0] [50] To [-50] [-50] [50] At (x) (y) (z)\n                                Draw Line [-50] [0] [-50] To [-50] [-50] [-50] At (x) (y) (z)\n                                Draw Line [50] [0] [50] To [50] [-50] [50] At (x) (y) (z)\n                                Draw Line [50] [0] [-50] To [50] [-50] [-50] At (x) (y) (z)\n                            else\n                                if < (item (i) of [platform type v]) contains [bounce]?> then\n                                    Set Pen Color | RGB [255] [255] [0] [256]\n                                    Draw Line [-50] [50] [50] To [50] [50] [50] At (x) (y) (z)\n                                    Draw Line [-50] [50] [-50] To [50] [50] [-50] At (x) (y) (z)\n                                    Draw Line [50] [50] [50] To [50] [50] [-50] At (x) (y) (z)\n                                    Draw Line [-50] [50] [50] To [-50] [50] [-50] At (x) (y) (z)\n                                else\n                                    if < (item (i) of [platform type v]) contains [End]?> then\n                                        Set Pen Color | RGB [0] [255] [0] [256]\n                                        Draw Line [-50] [50] [50] To [50] [50] [50] At (x) (y) (z)\n                                        Draw Line [-50] [50] [-50] To [50] [50] [-50] At (x) (y) (z)\n                                        Draw Line [50] [50] [50] To [50] [50] [-50] At (x) (y) (z)\n                                        Draw Line [-50] [50] [50] To [-50] [50] [-50] At (x) (y) (z)\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine Move\nchange [rot x v] by ((<key (up arrow v) pressed?> - <key (down arrow v) pressed?>) * (Rot Speed))\nif <[90] < (Rot X)> then\n    set [rot x v] to [90]\nend\nif <(Rot X) < [-90]> then\n    set [rot x v] to [-90]\nend\nchange [rot y v] by ((<key (left arrow v) pressed?> - <key (right arrow v) pressed?>) * (Rot Speed))\nchange [z vel v] by (((<key (w v) pressed?> - <key (s v) pressed?>) * ([cos v] of (Rot Y) )) * (Speed))\nchange [x vel v] by (((<key (s v) pressed?> - <key (w v) pressed?>) * ([sin v] of (Rot Y) )) * (Speed))\nchange [z vel v] by (((<key (d v) pressed?> - <key (a v) pressed?>) * ([sin v] of (Rot Y) )) * (Speed))\nchange [x vel v] by (((<key (d v) pressed?> - <key (a v) pressed?>) * ([cos v] of (Rot Y) )) * (Speed))\n\ndefine P (x) (y) (z)\nset [x v] to (x)\nset [y v] to (y)\nset [z v] to (z)\n\ndefine This rotates Platform around cam Cube Pos (x) (y) (z)\nP=Translate ((X) + (x)) ((Y) + (y)) ((Z) + (z)) By (Tx) (Ty) (Tz)\nP = Rotate (X) (Z) Around +Y axis by (Rot Y) Degrees\nP = Rotate (Y) (Z) Around +X Axis By (Rot X) degrees\nP = Rotate (X) (Y) Around +Z axis by (Rot Z) degrees\n\ndefine Draw Line (x) (y) (z) To (x1) (y1) (z1) At (x2) (y2) (z2)\nGo To (x) (y) (z) With Translation At (x2) (y2) (z2)\nset [x1 v] to (X)\nset [y1 v] to (Y)\nset [z1 v] to (Z)\nGo To (x1) (y1) (z1) With Translation At (x2) (y2) (z2)\nset [x2 v] to (X)\nset [y2 v] to (Y)\nset [z2 v] to (Z)\nif <not <<(Z1) < [1]> and <(Z2) < [1]>>> then\n    Z CLIP\n    set [z1 v] to ((View Factor) / (Z1))\n    set [z2 v] to ((View Factor) / (Z2))\n    go to x: ((X1) * (Z1)) y: ((Y1) * (Z1))\n    pen down\n    go to x: ((X2) * (Z2)) y: ((Y2) * (Z2))\n    pen up\nend\n\ndefine Z CLIP\nif <(Z1) < [1]> then\n    set [z1 v] to [1]\nend\nif <(Z2) < [1]> then\n    set [z2 v] to [1]\nend\n\ndefine P = Rotate (x) (y) Around +Z axis by (angle) degrees\nset [x v] to (((y) * ([sin v] of (angle) )) + ((x) * ([cos v] of (angle) )))\nset [y v] to (((y) * ([cos v] of (angle) )) - ((x) * ([sin v] of (angle) )))\n\ndefine Physics With Collisions (gravity) (friction) (max jump height)\nset [friction v] to (friction)\nchange [falling v] by (1)\nchange [y vel v] by (gravity)\nY Collisions (Y Vel)\nZ Collisions (Z Vel)\nX Collisions (X Vel)\nset [x vel v] to ((X Vel) * (Friction))\nset [z vel v] to ((Z Vel) * (Friction))\nif <<key (space v) pressed?> and <(Falling) < (max jump height)>> then\n    set [y vel v] to [14]\nend\nif <(Ty) < [-600]> then\n    Reset\nend\n\ndefine Y Collisions (y vel)\nchange [ty v] by (Y Vel)\nTest For Collisions [50] [90] [50]\nwhile <(Touching?) = [yes]>\n    if <(y vel) > [0]> then\n        change [ty v] by (-1)\n    else\n        change [ty v] by (1)\n        set [falling v] to [0]\n    end\n    set [y vel v] to [0]\n    Test For Collisions [50] [90] [50]\nend\n\ndefine Test For Collisions (x hitbox) (y hitbox) (z hitbox)\nset [touching? v] to [no]\nset [touching end? v] to [no]\nfor each [counter v] in (length of [platform x pos v])\n    if <<<not <(Tx) < ((item (Counter) of [platform x pos v]) - (x hitbox))>> and <not <(Tx) > ((item (Counter) of [platform x pos v]) + (x hitbox))>>> and <<<not <(Ty) < ((item (Counter) of [platform y pos v]) - (y hitbox))>> and <not <(Ty) > ((item (Counter) of [platform y pos v]) + (y hitbox))>>> and <<not <(Tz) < ((item (Counter) of [platform z pos v]) - (z hitbox))>> and <not <(Tz) > ((item (Counter) of [platform z pos v]) + (z hitbox))>>>>> then\n        if < (item (Counter) of [platform type v]) contains [Platform]?> then\n            set [touching? v] to [yes]\n        else\n            if < (item (Counter) of [platform type v]) contains [Lava]?> then\n                Reset\n            else\n                if < (item (Counter) of [platform type v]) contains [Spike]?> then\n                    if <not <(Ty) > ((item (Counter) of [platform y pos v]) + ((y hitbox) - (15)))>> then\n                        Reset\n                    end\n                else\n                    if << (item (Counter) of [platform type v]) contains [Bounce]?> or < (item (Counter) of [platform type v]) contains [Trampoline]?>> then\n                        set [y vel v] to [30]\n                    else\n                        if < (item (Counter) of [platform type v]) contains [Ice]?> then\n                            set [touching? v] to [yes]\n                            set [friction v] to [0.9]\n                        else\n                            if < (item (Counter) of [platform type v]) contains [Water]?> then\n                                change [y vel v] by (0.3)\n                                if <key (space v) pressed?> then\n                                    change [y vel v] by (0.25)\n                                end\n                            else\n                                if < (item (Counter) of [platform type v]) contains [Slowness]?> then\n                                    set [touching? v] to [yes]\n                                    set [friction v] to [0.2]\n                                else\n                                    if < (item (Counter) of [platform type v]) contains [End]?> then\n                                        set [touching end? v] to [yes]\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n        stop [this script v]\n    end\nend\n\ndefine X Collisions (x vel)\nchange [tx v] by (X Vel)\nTest For Collisions [50] [90] [50]\nwhile <(Touching?) = [yes]>\n    if <(x vel) > [0]> then\n        change [tx v] by (-1)\n    else\n        change [tx v] by (1)\n    end\n    set [x vel v] to [0]\n    Test For Collisions [50] [90] [50]\nend\n\ndefine Z Collisions (z vel)\nchange [tz v] by (Z Vel)\nTest For Collisions [50] [90] [50]\nwhile <(Touching?) = [yes]>\n    if <(z vel) > [0]> then\n        change [tz v] by (-1)\n    else\n        change [tz v] by (1)\n    end\n    set [z vel v] to [0]\n    Test For Collisions [50] [90] [50]\nend\n\ndefine Reset\nset [x vel v] to [0]\nset [y vel v] to [0]\nset [z vel v] to [0]\nset [rot x v] to [0]\nset [rot y v] to [0]\nset [rot z v] to [0]\nset [rot speed v] to [4]\nset [speed v] to [2]\nset [tx v] to [0]\nset [ty v] to [200]\nset [tz v] to [0]\n\ndefine Design\ndelete all of [platform x pos v]\ndelete all of [platform y pos v]\ndelete all of [platform z pos v]\ndelete all of [platform type v]\nif <(Level) = [1]> then\n    Add Platform At [0] [0] [0] [Platform]\n    Add Platform At [2] [0] [0] [Platform]\n    Add Platform At [3] [1] [0] [Platform Cube]\n    Add Platform At [3] [1] [2] [Platform]\n    Add Platform At [3] [1] [3] [Platform]\n    Add Platform At [3] [2] [3] [Trampoline]\n    Add Platform At [3] [1] [7] [Platform]\n    Add Platform At [1] [1] [9] [End]\nelse\n    if <(Level) = [2]> then\n        Add Platform At [0] [0] [0] [Slowness]\n        Add Platform At [0] [0] [2] [Slowness]\n        Add Platform At [0] [0] [4] [Ice]\n        Add Platform At [0] [0] [5] [Ice]\n        Add Platform At [0] [0] [6] [Ice]\n        Add Platform At [1] [0] [6] [Ice]\n        Add Platform At [2] [0] [6] [Ice]\n        Add Platform At [5] [0] [6] [Ice]\n        Add Platform At [6] [0] [6] [Ice]\n        Add Platform At [7] [0] [6] [Ice]\n        Add Platform At [8] [0] [6] [Ice]\n        Add Platform At [11] [0] [6] [Platform]\n        Add Platform At [11] [0] [4] [End]\n    else\n        if <(Level) = [3]> then\n            Add Platform At [0] [0] [0] [Platform]\n            Add Platform At [0] [1] [2] [Platform]\n            Add Platform At [-2] [2] [2] [Platform]\n            Add Platform At [-3] [2] [3] [Lava]\n            Add Platform At [-4] [2] [4] [Platform]\n            Add Moving Platform From [-4] [2] [5] To [-4] [6] [5] Type [Platform] Speed [30]\n            Add Platform At [-4] [6] [4] [Platform]\n            Add Platform At [-4] [7] [3] [Spike]\n            Add Platform At [-4] [6] [2] [Platform]\n            Add Platform At [-4] [6] [0] [End]\n        else\n            if <(Level) = [4]> then\n                Add Platform At [0] [0] [0] [Platform]\n                Add Platform At [0] [0] [1] [Water Cube]\n                Add Platform At [0] [0] [2] [Water Cube]\n                Add Platform At [0] [0] [3] [Water Cube]\n                Add Platform At [0] [0] [4] [Platform]\n                Add Platform At [0] [0] [5] [Platform]\n                Add Platform At [0] [1] [5] [Trampoline]\n                Add Moving Platform From [0] [4] [6] To [6] [4] [12] Type [Trampoline] Speed [12]\n                Add Moving Platform From [0] [3] [6] To [6] [3] [12] Type [Platform] Speed [12]\n                Add Platform At [7] [7] [13] [End]\n            else\n                if <(Level) = [5]> then\n                    Add Platform At [0] [0] [0] [Platform]\n                    Add Platform At [1] [0.1] [0] [Lava]\n                    Add Platform At [-1] [0.1] [0] [Lava]\n                    Add Platform At [0] [0.1] [1] [Lava]\n                    Add Platform At [1] [0] [1] [Platform]\n                    Add Platform At [-1] [0] [1] [Platform]\n                    Add Platform At [0] [0] [2] [Platform]\n                    Add Platform At [1] [0.1] [2] [Lava]\n                    Add Platform At [-1] [0.1] [2] [Lava]\n                    Add Platform At [0] [0.1] [3] [Lava]\n                    Add Platform At [-1] [0] [3] [Platform]\n                    Add Platform At [1] [0] [3] [Platform]\n                    Add Platform At [1] [1] [3] [Trampoline]\n                    Add Platform At [-1] [1] [3] [Trampoline]\n                    Add Platform At [0] [5] [3] [Platform]\n                    Add Moving Platform From [0] [5] [4] To [0] [5] [9] Type [Platform] Speed [15]\n                    Add Platform At [0] [5] [10] [End]\n                else\n                    if <(Level) = [6]> then\n                        Add Platform At [0] [0] [0] [Platform]\n                        Add Moving Platform From [0] [0] [1] To [0] [1] [1] Type [Lava Cube] Speed [30]\n                        Add Platform At [0] [0] [2] [Platform]\n                        Add Platform At [2] [0] [4] [Ice]\n                        Add Platform At [4] [0] [6] [Ice]\n                        Add Platform At [6] [0] [8] [Slowness]\n                        Add Moving Platform From [6] [0] [10] To [6] [5] [10] Type [Platform] Speed [30]\n                        Add Moving Platform From [5] [5] [5] To [5] [5] [10] Type [Platform] Speed [30]\n                        Add Platform At [5] [5] [4] [Platform]\n                        Add Platform At [5] [6] [3] [Spike]\n                        Add Platform At [5] [5] [2] [Platform]\n                        Add Platform At [5] [-1] [-2] [Platform]\n                        Add Platform At [5] [0] [-2] [Trampoline]\n                        Add Platform At [5] [-1] [-5] [End]\n                    else\n                        erase all\n                        broadcast (Fin. v)\n                        stop [other scripts in sprite v]\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine Add Platform At (x) (y) (z) (type)\nadd ((x) * (100)) to [platform x pos v]\nadd ((y) * (100)) to [platform y pos v]\nadd ((z) * (100)) to [platform z pos v]\nadd (type) to [platform type v]\n\ndefine Calculate Distance\ndelete all of [block distance v]\nfor each [counter v] in (length of [platform x pos v])\n    add (round ([sqrt v] of ((((Tx) - (item (Counter) of [platform x pos v])) * ((Tx) - (item (Counter) of [platform x pos v]))) + ((((Ty) - (item (Counter) of [platform y pos v])) * ((Ty) - (item (Counter) of [platform y pos v]))) + (((Tz) - (item (Counter) of [platform z pos v])) * ((Tz) - (item (Counter) of [platform z pos v]))))) )) to [block distance v]\nend\n\ndefine Sort\ndelete all of [sorted v]\ndelete all of [sorted order v]\ndelete all of [which one v]\nfor each [counter v] in (length of [block distance v])\n    add (Counter) to [which one v]\nend\nfor each [counter v] in (length of [block distance v])\n    Sort (item (Counter) of [block distance v]) into List\nend\n\ndefine Add Moving Platform From (x) (y) (z) To (x1) (y1) (z1) Type (type) Speed (speed)\nset [coefficient v] to ((([sin v] of ((timer) * (speed)) ) + (1)) / (2))\nAdd Platform At ((x) + ((Coefficient) * ((x1) - (x)))) ((y) + ((Coefficient) * ((y1) - (y)))) ((z) + ((Coefficient) * ((z1) - (z)))) (type)\n\n@Sprite1\n\nwhen flag clicked\ngo to x: (10) y: (0)\nhide\n\nwhen I receive [fin. v]\nshow\n\n@Tb\n\nwhen flag clicked\ngo to x: (20) y: (0)\nhide\n\n
               Make sure to read all instructions!                             \n:D                                                                                :D\n                                -Welcome-\n\nThis is a generic 3D Platformer with TONS of type of blocks, from platforms to Ice, to Moving Platforms! I have spent more than 8 hours on this! \n\n                                    Laggy?\nPlay on turbowarp! https://turbowarp.github.io/#414884001\n\n                                -Instructions-\nWASD To move\nArrow Keys to look around\nSpaceBar to jump\n                                    -Blocks-\n\nLight blue is a Platform which is safe\nYellow are trampolines which launch you up\nRed is Lava/Spikes which shall not be touched\nBlue is Water\nBrown is mud which gives slowness\nTurquoise is ice which is extremely slippery!\nGreen Is the end of level\n\n6 Levels of whole fun and new challenges!!! Trust me you'll love them!\n\nI spent more than 8 hours on this project which has 1111 blocks!!! A love and fave would be REALLY appreciated! Thanks!