Files
watrbx-game-engine/RobloxTest/PhysicsTestsLong/character_ball_collision_suite.rbxl_
2025-09-18 17:55:52 -04:00

2623 lines
42 KiB
Plaintext

<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.watrbx.wtf/roblox.xsd" version="4">
<External>null</External>
<External>nil</External>
<Item class="Workspace" referent="RBX0">
<Properties>
<Ref name="CurrentCamera">RBX1</Ref>
<double name="DistributedGameTime">0</double>
<CoordinateFrame name="ModelInPrimary">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
<R00>1</R00>
<R01>0</R01>
<R02>0</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>0</R20>
<R21>0</R21>
<R22>1</R22>
</CoordinateFrame>
<string name="Name">Workspace</string>
<Ref name="PrimaryPart">null</Ref>
</Properties>
<Item class="Part" referent="RBX2">
<Properties>
<bool name="Anchored">true</bool>
<float name="BackParamA">-0.5</float>
<float name="BackParamB">0.5</float>
<token name="BackSurface">0</token>
<token name="BackSurfaceInput">0</token>
<float name="BottomParamA">-0.5</float>
<float name="BottomParamB">0.5</float>
<token name="BottomSurface">0</token>
<token name="BottomSurfaceInput">0</token>
<int name="BrickColor">37</int>
<CoordinateFrame name="CFrame">
<X>5</X>
<Y>0.200000003</Y>
<Z>-2</Z>
<R00>1</R00>
<R01>0</R01>
<R02>0</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>0</R20>
<R21>0</R21>
<R22>1</R22>
</CoordinateFrame>
<bool name="CanCollide">true</bool>
<float name="Elasticity">0.5</float>
<float name="Friction">0.300000012</float>
<float name="FrontParamA">-0.5</float>
<float name="FrontParamB">0.5</float>
<token name="FrontSurface">0</token>
<token name="FrontSurfaceInput">0</token>
<float name="LeftParamA">-0.5</float>
<float name="LeftParamB">0.5</float>
<token name="LeftSurface">0</token>
<token name="LeftSurfaceInput">0</token>
<bool name="Locked">true</bool>
<token name="Material">256</token>
<string name="Name">Base</string>
<float name="Reflectance">0</float>
<float name="RightParamA">-0.5</float>
<float name="RightParamB">0.5</float>
<token name="RightSurface">0</token>
<token name="RightSurfaceInput">0</token>
<Vector3 name="RotVelocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<float name="TopParamA">-0.5</float>
<float name="TopParamB">0.5</float>
<token name="TopSurface">3</token>
<token name="TopSurfaceInput">0</token>
<float name="Transparency">0</float>
<Vector3 name="Velocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<token name="formFactorRaw">2</token>
<token name="shape">1</token>
<Vector3 name="size">
<X>508</X>
<Y>0.400000006</Y>
<Z>512</Z>
</Vector3>
</Properties>
</Item>
<Item class="Camera" referent="RBX1">
<Properties>
<Ref name="CameraSubject">null</Ref>
<token name="CameraType">0</token>
<CoordinateFrame name="CoordinateFrame">
<X>85.4188309</X>
<Y>20.0802441</Y>
<Z>92.8921356</Z>
<R00>0.221595421</R00>
<R01>-0.387207836</R01>
<R02>0.894966781</R02>
<R10>-0</R10>
<R11>0.917784214</R11>
<R12>0.397079736</R12>
<R20>-0.975138783</R20>
<R21>-0.0879910514</R21>
<R22>0.20337674</R22>
</CoordinateFrame>
<float name="FieldOfView">70</float>
<CoordinateFrame name="Focus">
<X>67.5194931</X>
<Y>12.138648</Y>
<Z>88.8246002</Z>
<R00>1</R00>
<R01>0</R01>
<R02>0</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>0</R20>
<R21>0</R21>
<R22>1</R22>
</CoordinateFrame>
<string name="Name">Instance</string>
</Properties>
</Item>
<Item class="Terrain" referent="RBX3">
<Properties>
<bool name="Anchored">true</bool>
<bool name="Archivable">true</bool>
<float name="BackParamA">-0.5</float>
<float name="BackParamB">0.5</float>
<token name="BackSurface">0</token>
<token name="BackSurfaceInput">0</token>
<float name="BottomParamA">-0.5</float>
<float name="BottomParamB">0.5</float>
<token name="BottomSurface">4</token>
<token name="BottomSurfaceInput">0</token>
<int name="BrickColor">194</int>
<CoordinateFrame name="CFrame">
<X>-2</X>
<Y>126</Y>
<Z>-2</Z>
<R00>1</R00>
<R01>0</R01>
<R02>0</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>0</R20>
<R21>0</R21>
<R22>1</R22>
</CoordinateFrame>
<bool name="CanCollide">true</bool>
<string name="ClusterGridV2"></string>
<float name="Elasticity">0.5</float>
<float name="Friction">0.300000012</float>
<float name="FrontParamA">-0.5</float>
<float name="FrontParamB">0.5</float>
<token name="FrontSurface">0</token>
<token name="FrontSurfaceInput">0</token>
<float name="LeftParamA">-0.5</float>
<float name="LeftParamB">0.5</float>
<token name="LeftSurface">0</token>
<token name="LeftSurfaceInput">0</token>
<bool name="Locked">true</bool>
<token name="Material">256</token>
<string name="Name">Terrain</string>
<float name="Reflectance">0</float>
<float name="RightParamA">-0.5</float>
<float name="RightParamB">0.5</float>
<token name="RightSurface">0</token>
<token name="RightSurfaceInput">0</token>
<Vector3 name="RotVelocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<float name="TopParamA">-0.5</float>
<float name="TopParamB">0.5</float>
<token name="TopSurface">3</token>
<token name="TopSurfaceInput">0</token>
<float name="Transparency">0</float>
<Vector3 name="Velocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<Vector3 name="size">
<X>2044</X>
<Y>252</Y>
<Z>2044</Z>
</Vector3>
</Properties>
</Item>
watrbx.wtf
<Item class="Model" referent="RBX4">
<Properties>
<CoordinateFrame name="ModelInPrimary">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
<R00>1</R00>
<R01>0</R01>
<R02>0</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>0</R20>
<R21>0</R21>
<R22>1</R22>
</CoordinateFrame>
<string name="Name">BuilderMan</string>
<Ref name="PrimaryPart">null</Ref>
</Properties>
<Item class="Part" referent="RBX5">
<Properties>
<bool name="Anchored">false</bool>
<float name="BackParamA">-0.5</float>
<float name="BackParamB">0.5</float>
<token name="BackSurface">0</token>
<token name="BackSurfaceInput">0</token>
<float name="BottomParamA">-0.5</float>
<float name="BottomParamB">0.5</float>
<token name="BottomSurface">4</token>
<token name="BottomSurfaceInput">0</token>
<int name="BrickColor">226</int>
<CoordinateFrame name="CFrame">
<X>59.4832916</X>
<Y>4.8153162</Y>
<Z>90.9891281</Z>
<R00>0.0853810087</R00>
<R01>0</R01>
<R02>0.996348381</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>-0.996348381</R20>
<R21>0</R21>
<R22>0.0853810087</R22>
</CoordinateFrame>
<bool name="CanCollide">false</bool>
<float name="Elasticity">0.5</float>
<float name="Friction">0.300000012</float>
<float name="FrontParamA">-0.5</float>
<float name="FrontParamB">0.5</float>
<token name="FrontSurface">0</token>
<token name="FrontSurfaceInput">0</token>
<float name="LeftParamA">-0.5</float>
<float name="LeftParamB">0.5</float>
<token name="LeftSurface">0</token>
<token name="LeftSurfaceInput">0</token>
<bool name="Locked">true</bool>
<token name="Material">256</token>
<string name="Name">Head</string>
<float name="Reflectance">0</float>
<float name="RightParamA">-0.5</float>
<float name="RightParamB">0.5</float>
<token name="RightSurface">0</token>
<token name="RightSurfaceInput">0</token>
<Vector3 name="RotVelocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<float name="TopParamA">-0.5</float>
<float name="TopParamB">0.5</float>
<token name="TopSurface">0</token>
<token name="TopSurfaceInput">0</token>
<float name="Transparency">0</float>
<Vector3 name="Velocity">
<X>-11.3137083</X>
<Y>0</Y>
<Z>11.3137093</Z>
</Vector3>
<token name="formFactorRaw">0</token>
<token name="shape">1</token>
<Vector3 name="size">
<X>2</X>
<Y>1</Y>
<Z>1</Z>
</Vector3>
</Properties>
<Item class="SpecialMesh" referent="RBX6">
<Properties>
<token name="LODX">2</token>
<token name="LODY">2</token>
<Content name="MeshId"><null></null></Content>
<token name="MeshType">0</token>
<string name="Name">Mesh</string>
<Vector3 name="Offset">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<Vector3 name="Scale">
<X>1.25</X>
<Y>1.25</Y>
<Z>1.25</Z>
</Vector3>
<Content name="TextureId"><null></null></Content>
<Vector3 name="VertexColor">
<X>1</X>
<Y>1</Y>
<Z>1</Z>
</Vector3>
</Properties>
</Item>
<Item class="Decal" referent="RBX7">
<Properties>
<token name="Face">5</token>
<string name="Name">face</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>rbxasset://textures/face.png</url></Content>
<float name="Transparency">0</float>
</Properties>
</Item>
</Item>
<Item class="Part" referent="RBX8">
<Properties>
<bool name="Anchored">false</bool>
<float name="BackParamA">-0.5</float>
<float name="BackParamB">0.5</float>
<token name="BackSurface">0</token>
<token name="BackSurfaceInput">0</token>
<float name="BottomParamA">-0.5</float>
<float name="BottomParamB">0.5</float>
<token name="BottomSurface">4</token>
<token name="BottomSurfaceInput">0</token>
<int name="BrickColor">24</int>
<CoordinateFrame name="CFrame">
<X>59.4832916</X>
<Y>3.31531644</Y>
<Z>90.9891281</Z>
<R00>0.0853810087</R00>
<R01>0</R01>
<R02>0.996348381</R02>
<R10>-0</R10>
<R11>1</R11>
<R12>-0</R12>
<R20>-0.996348381</R20>
<R21>0</R21>
<R22>0.0853810087</R22>
</CoordinateFrame>
<bool name="CanCollide">false</bool>
<float name="Elasticity">0.5</float>
<float name="Friction">0.300000012</float>
<float name="FrontParamA">-0.5</float>
<float name="FrontParamB">0.5</float>
<token name="FrontSurface">0</token>
<token name="FrontSurfaceInput">0</token>
<float name="LeftParamA">0</float>
<float name="LeftParamB">0</float>
<token name="LeftSurface">2</token>
<token name="LeftSurfaceInput">0</token>
<bool name="Locked">true</bool>
<token name="Material">256</token>
<string name="Name">Torso</string>
<float name="Reflectance">0</float>
<float name="RightParamA">0</float>
<float name="RightParamB">0</float>
<token name="RightSurface">2</token>
<token name="RightSurfaceInput">0</token>
<Vector3 name="RotVelocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<float name="TopParamA">-0.5</float>
<float name="TopParamB">0.5</float>
<token name="TopSurface">3</token>
<token name="TopSurfaceInput">0</token>
<float name="Transparency">0</float>
<Vector3 name="Velocity">
<X>-11.3137083</X>
<Y>0</Y>
<Z>11.3137093</Z>
</Vector3>
<token name="formFactorRaw">0</token>
<token name="shape">1</token>
<Vector3 name="size">
<X>2</X>
<Y>2</Y>
<Z>1</Z>
</Vector3>
</Properties>
<Item class="Decal" referent="RBX9">
<Properties>
<token name="Face">5</token>
<string name="Name">roblox</string>
<float name="Shiny">20</float>
<float name="Specular">0</float>
<Content name="Texture"><url>http://www.roblox.com/asset/?version=1&amp;id=1000024</url></Content>
<float name="Transparency">0</float>
</Properties>
</Item>
<Item class="Motor" referent="RBX10">
<Properties>
<CoordinateFrame name="C0">
<X>1</X>
<Y>0.5</Y>
<Z>0</Z>
<R00>0</R00>
<R01>0</R01>
<R02>1</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>-1</R20>
<R21>-0</R21>
<R22>-0</R22>
</CoordinateFrame>
<CoordinateFrame name="C1">
<X>-0.5</X>
<Y>0.5</Y>
<Z>0</Z>
<R00>0</R00>
<R01>0</R01>
<R02>1</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>-1</R20>
<R21>-0</R21>
<R22>-0</R22>
</CoordinateFrame>
<float name="DesiredAngle">-0.0427663997</float>
<float name="MaxVelocity">0.150000006</float>
<string name="Name">Right Shoulder</string>
<Ref name="Part0">null</Ref>
<Ref name="Part1">null</Ref>
</Properties>
</Item>watrbx.wtf
<Item class="Motor" referent="RBX11">
<Properties>
<CoordinateFrame name="C0">
<X>-1</X>
<Y>0.5</Y>
<Z>0</Z>
<R00>-0</R00>
<R01>-0</R01>
<R02>-1</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>1</R20>
<R21>0</R21>
<R22>0</R22>
</CoordinateFrame>
<CoordinateFrame name="C1">
<X>0.5</X>
<Y>0.5</Y>
<Z>0</Z>
<R00>-0</R00>
<R01>-0</R01>
<R02>-1</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>1</R20>
<R21>0</R21>
<R22>0</R22>
</CoordinateFrame>
<float name="DesiredAngle">-0.0427663997</float>
<float name="MaxVelocity">0.150000006</float>
<string name="Name">Left Shoulder</string>
<Ref name="Part0">null</Ref>
<Ref name="Part1">null</Ref>
</Properties>
</Item>
<Item class="Motor" referent="RBX12">
<Properties>
<CoordinateFrame name="C0">
<X>1</X>
<Y>-1</Y>
<Z>0</Z>
<R00>0</R00>
<R01>0</R01>
<R02>1</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>-1</R20>
<R21>-0</R21>
<R22>-0</R22>
</CoordinateFrame>
<CoordinateFrame name="C1">
<X>0.5</X>
<Y>1</Y>
<Z>0</Z>
<R00>0</R00>
<R01>0</R01>
<R02>1</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>-1</R20>
<R21>-0</R21>
<R22>-0</R22>
</CoordinateFrame>
<float name="DesiredAngle">0.0427663997</float>
<float name="MaxVelocity">0.100000001</float>
<string name="Name">Right Hip</string>
<Ref name="Part0">null</Ref>
<Ref name="Part1">null</Ref>
</Properties>
</Item>
<Item class="Motor" referent="RBX13">
<Properties>
<CoordinateFrame name="C0">
<X>-1</X>
<Y>-1</Y>
<Z>0</Z>
<R00>-0</R00>
<R01>-0</R01>
<R02>-1</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>1</R20>
<R21>0</R21>
<R22>0</R22>
</CoordinateFrame>
<CoordinateFrame name="C1">
<X>-0.5</X>
<Y>1</Y>
<Z>0</Z>
<R00>-0</R00>
<R01>-0</R01>
<R02>-1</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>1</R20>
<R21>0</R21>
<R22>0</R22>
</CoordinateFrame>
<float name="DesiredAngle">0.0427663997</float>
<float name="MaxVelocity">0.100000001</float>
<string name="Name">Left Hip</string>
<Ref name="Part0">null</Ref>
<Ref name="Part1">null</Ref>
</Properties>
</Item>
<Item class="Snap" referent="RBX14">
<Properties>
<CoordinateFrame name="C0">
<X>0</X>
<Y>1</Y>
<Z>0</Z>
<R00>-1</R00>
<R01>-0</R01>
<R02>-0</R02>
<R10>0</R10>
<R11>0</R11>
<R12>1</R12>
<R20>0</R20>
<R21>1</R21>
<R22>0</R22>
</CoordinateFrame>
<CoordinateFrame name="C1">
<X>0</X>
<Y>-0.5</Y>
<Z>0</Z>
<R00>-1</R00>
<R01>-0</R01>
<R02>-0</R02>
<R10>0</R10>
<R11>0</R11>
<R12>1</R12>
<R20>0</R20>
<R21>1</R21>
<R22>0</R22>
</CoordinateFrame>
<string name="Name">Neck</string>
<Ref name="Part0">null</Ref>
<Ref name="Part1">null</Ref>
</Properties>
</Item>
</Item>
<Item class="Part" referent="RBX15">
<Properties>
<bool name="Anchored">false</bool>
<float name="BackParamA">-0.5</float>
<float name="BackParamB">0.5</float>
<token name="BackSurface">0</token>
<token name="BackSurfaceInput">0</token>
<float name="BottomParamA">-0.5</float>
<float name="BottomParamB">0.5</float>
<token name="BottomSurface">4</token>
<token name="BottomSurfaceInput">0</token>
<int name="BrickColor">24</int>
<CoordinateFrame name="CFrame">
<X>59.3552208</X>
<Y>3.31531644</Y>
<Z>92.4836502</Z>
<R00>0.0853810087</R00>
<R01>0</R01>
<R02>0.996348381</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>-0.996348381</R20>
<R21>0</R21>
<R22>0.0853810087</R22>
</CoordinateFrame>
<bool name="CanCollide">false</bool>
<float name="Elasticity">0.5</float>
<float name="Friction">0.300000012</float>
<float name="FrontParamA">-0.5</float>
<float name="FrontParamB">0.5</float>
<token name="FrontSurface">0</token>
<token name="FrontSurfaceInput">0</token>
<float name="LeftParamA">-0.5</float>
<float name="LeftParamB">0.5</float>
<token name="LeftSurface">0</token>
<token name="LeftSurfaceInput">0</token>
<bool name="Locked">true</bool>
<token name="Material">256</token>
<string name="Name">Left Arm</string>
<float name="Reflectance">0</float>
<float name="RightParamA">-0.5</float>
<float name="RightParamB">0.5</float>
<token name="RightSurface">0</token>
<token name="RightSurfaceInput">0</token>
<Vector3 name="RotVelocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<float name="TopParamA">-0.5</float>
<float name="TopParamB">0.5</float>
<token name="TopSurface">3</token>
<token name="TopSurfaceInput">0</token>
<float name="Transparency">0</float>
<Vector3 name="Velocity">
<X>-11.3137083</X>
<Y>0</Y>
<Z>11.3137093</Z>
</Vector3>
<token name="formFactorRaw">0</token>
<token name="shape">1</token>
<Vector3 name="size">
<X>1</X>
<Y>2</Y>
<Z>1</Z>
</Vector3>
</Properties>
</Item>
<Item class="Part" referent="RBX16">
<Properties>
<bool name="Anchored">false</bool>
<float name="BackParamA">-0.5</float>
<float name="BackParamB">0.5</float>
<token name="BackSurface">0</token>
<token name="BackSurfaceInput">0</token>
<float name="BottomParamA">-0.5</float>
<float name="BottomParamB">0.5</float>
<token name="BottomSurface">4</token>
<token name="BottomSurfaceInput">0</token>
<int name="BrickColor">24</int>
<CoordinateFrame name="CFrame">
<X>59.6113625</X>
<Y>3.31531644</Y>
<Z>89.494606</Z>
<R00>0.0853810087</R00>
<R01>0</R01>
<R02>0.996348381</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>-0.996348381</R20>
<R21>0</R21>
<R22>0.0853810087</R22>
</CoordinateFrame>
<bool name="CanCollide">false</bool>
<float name="Elasticity">0.5</float>
<float name="Friction">0.300000012</float>
<float name="FrontParamA">-0.5</float>
<float name="FrontParamB">0.5</float>
<token name="FrontSurface">0</token>
<token name="FrontSurfaceInput">0</token>
<float name="LeftParamA">-0.5</float>
<float name="LeftParamB">0.5</float>
<token name="LeftSurface">0</token>
<token name="LeftSurfaceInput">0</token>
<bool name="Locked">true</bool>
<token name="Material">256</token>
<string name="Name">Right Arm</string>
<float name="Reflectance">0</float>
<float name="RightParamA">-0.5</float>
<float name="RightParamB">0.5</float>
<token name="RightSurface">0</token>
<token name="RightSurfaceInput">0</token>
<Vector3 name="RotVelocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<float name="TopParamA">-0.5</float>
<float name="TopParamB">0.5</float>
<token name="TopSurface">3</token>
<token name="TopSurfaceInput">0</token>
<float name="Transparency">0</float>
<Vector3 name="Velocity">
<X>-11.3137083</X>
<Y>0</Y>
<Z>11.3137093</Z>
</Vector3>
<token name="formFactorRaw">0</token>
<token name="shape">1</token>
<Vector3 name="size">
<X>1</X>
<Y>2</Y>
<Z>1</Z>
</Vector3>
</Properties>
</Item>
<Item class="Part" referent="RBX17">
<Properties>
<bool name="Anchored">false</bool>
<float name="BackParamA">-0.5</float>
<float name="BackParamB">0.5</float>
<token name="BackSurface">0</token>
<token name="BackSurfaceInput">0</token>
<float name="BottomParamA">-0.5</float>
<float name="BottomParamB">0.5</float>
<token name="BottomSurface">0</token>
<token name="BottomSurfaceInput">0</token>
<int name="BrickColor">24</int>
<CoordinateFrame name="CFrame">
<X>59.4406013</X>
<Y>1.31531644</Y>
<Z>91.4873047</Z>
<R00>0.0853810087</R00>
<R01>0</R01>
<R02>0.996348381</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>-0.996348381</R20>
<R21>0</R21>
<R22>0.0853810087</R22>
</CoordinateFrame>
<bool name="CanCollide">false</bool>
<float name="Elasticity">0.5</float>
<float name="Friction">0.300000012</float>
<float name="FrontParamA">-0.5</float>
<float name="FrontParamB">0.5</float>
<token name="FrontSurface">0</token>
<token name="FrontSurfaceInput">0</token>
<float name="LeftParamA">-0.5</float>
<float name="LeftParamB">0.5</float>
<token name="LeftSurface">0</token>
<token name="LeftSurfaceInput">0</token>
<bool name="Locked">true</bool>
<token name="Material">256</token>
<string name="Name">Left Leg</string>
<float name="Reflectance">0</float>
<float name="RightParamA">-0.5</float>
<float name="RightParamB">0.5</float>
<token name="RightSurface">0</token>
<token name="RightSurfaceInput">0</token>
<Vector3 name="RotVelocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<float name="TopParamA">-0.5</float>
<float name="TopParamB">0.5</float>
<token name="TopSurface">3</token>
<token name="TopSurfaceInput">0</token>
<float name="Transparency">0</float>
<Vector3 name="Velocity">
<X>-11.3137083</X>
<Y>0</Y>
<Z>11.3137093</Z>
</Vector3>
<token name="formFactorRaw">0</token>
<token name="shape">1</token>
<Vector3 name="size">
<X>1</X>
<Y>2</Y>
<Z>1</Z>
</Vector3>
</Properties>
</Item>
<Item class="Part" referent="RBX18">
<Properties>
<bool name="Anchored">false</bool>
<float name="BackParamA">-0.5</float>
<float name="BackParamB">0.5</float>
<token name="BackSurface">0</token>
<token name="BackSurfaceInput">0</token>
<float name="BottomParamA">-0.5</float>
<float name="BottomParamB">0.5</float>
<token name="BottomSurface">0</token>
<token name="BottomSurfaceInput">0</token>
<int name="BrickColor">24</int>
<CoordinateFrame name="CFrame">
<X>59.5259819</X>
<Y>1.31531644</Y>
<Z>90.4909515</Z>
<R00>0.0853810087</R00>
<R01>0</R01>
<R02>0.996348381</R02>
<R10>0</R10>
<R11>1</R11>
<R12>0</R12>
<R20>-0.996348381</R20>
<R21>0</R21>
<R22>0.0853810087</R22>
</CoordinateFrame>
<bool name="CanCollide">false</bool>
<float name="Elasticity">0.5</float>
<float name="Friction">0.300000012</float>
<float name="FrontParamA">-0.5</float>
<float name="FrontParamB">0.5</float>
<token name="FrontSurface">0</token>
<token name="FrontSurfaceInput">0</token>
<float name="LeftParamA">-0.5</float>
<float name="LeftParamB">0.5</float>
<token name="LeftSurface">0</token>
<token name="LeftSurfaceInput">0</token>
<bool name="Locked">true</bool>
<token name="Material">256</token>
<string name="Name">Right Leg</string>
<float name="Reflectance">0</float>
<float name="RightParamA">-0.5</float>
<float name="RightParamB">0.5</float>
<token name="RightSurface">0</token>
<token name="RightSurfaceInput">0</token>
<Vector3 name="RotVelocity">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</Vector3>
<float name="TopParamA">-0.5</float>
<float name="TopParamB">0.5</float>
<token name="TopSurface">3</token>
<token name="TopSurfaceInput">0</token>
<float name="Transparency">0</float>
<Vector3 name="Velocity">
<X>-11.3137083</X>
<Y>0</Y>
<Z>11.3137093</Z>
</Vector3>
<token name="formFactorRaw">0</token>
<token name="shape">1</token>
<Vector3 name="size">
<X>1</X>
<Y>2</Y>
<Z>1</Z>
</Vector3>
</Properties>
</Item>
<Item class="Humanoid" referent="RBX19">
<Properties>
<float name="Health">100</float>
<float name="MaxHealth">100</float>
<string name="Name">Humanoid</string>
<token name="NameOcclusion">0</token>
<float name="WalkSpeed">16</float>
</Properties>
</Item>
<Item class="ShirtGraphic" referent="RBX20">
<Properties>
<Content name="Graphic"><url>http://www.roblox.com/asset/?version=1&amp;id=1000024</url></Content>
<string name="Name">Shirt Graphic</string>
</Properties>
</Item>
<Item class="BodyColors" referent="RBX21">
<Properties>
<int name="HeadColor">226</int>
<int name="LeftArmColor">24</int>
<int name="LeftLegColor">24</int>
<string name="Name">Body Colors</string>
<int name="RightArmColor">24</int>
<int name="RightLegColor">24</int>
<int name="TorsoColor">24</int>
</Properties>
</Item>
<Item class="Script" referent="RBX22">
<Properties>
<bool name="Disabled">true</bool>
<Content name="LinkedSource"><null></null></Content>
<string name="Name">Zombie</string>
<ProtectedString name="Source">function waitForChild(parent, childName)
&#9;while true do
&#9;&#9;local child = parent:findFirstChild(childName)
&#9;&#9;if child then
&#9;&#9;&#9;return child
&#9;&#9;end
&#9;&#9;parent.ChildAdded:wait()
&#9;end
end
function visit(item, f)
&#9;for _, v in ipairs(item:GetChildren())
&#9;&#9;do f(v) visit(v, f)
&#9;end
end &#9;
-- declarations
local Figure = script.Parent
local Torso = waitForChild(Figure, &quot;Torso&quot;)
local RightShoulder = waitForChild(Torso, &quot;Right Shoulder&quot;)
local LeftShoulder = waitForChild(Torso, &quot;Left Shoulder&quot;)
local RightHip = waitForChild(Torso, &quot;Right Hip&quot;)
local LeftHip = waitForChild(Torso, &quot;Left Hip&quot;)
local Neck = waitForChild(Torso, &quot;Neck&quot;)
local Humanoid = waitForChild(Figure, &quot;Humanoid&quot;)
local pose = &quot;Standing&quot;
-- findBase
local base
visit(game,
&#9;function (i)
&#9;&#9;if i.Name == &quot;Base&quot; then&#9;
&#9;&#9;&#9;base = i
&#9;&#9;end
&#9;end
)
function move(time)
&#9;intTime = math.floor(time)
&#9;cycle = intTime % 4
&#9;dx = 2 * math.floor(cycle/2) - 1
&#9;dz = 2 * math.floor(cycle % 2) - 1
&#9;delta = Vector3.new(dx*100, 0, dz*100)
&#9;point = Torso.Position + delta
&#9;Humanoid:MoveTo(point, base)
end
-- main program
local nextTime = 0
local runService = game:service(&quot;RunService&quot;);
while Figure.Parent~=nil do
&#9;time = runService.Stepped:wait()
&#9;if time &gt; nextTime then
&#9;&#9;move(time)
&#9;&#9;nextTime = time + 0.5
&#9;end
end</ProtectedString>
</Properties>
</Item>
</Item>
<Item class="Script" referent="RBX23">
<Properties>
<bool name="Disabled">true</bool>
<Content name="LinkedSource"><null></null></Content>
<string name="Name">Script</string>
<ProtectedString name="Source">local char = game.Workspace.BuilderMan
local charStart = char.Torso.CFrame
local testService = game:GetService(&quot;TestService&quot;)
local charMovementThreshold = 3 -- more than 3 studs means char was knocked down
local sizes = {Small = Vector3.new(1, 1, 1), Medium = Vector3.new(3, 3, 3), Large = Vector3.new(8, 8, 8)}
local speeds = {Slow = 20, Medium = 35, Fast = 60}
local directions = {Front = Vector3.new(0, 0, -1), Back = Vector3.new(0, 0, 1), Above = Vector3.new(0, 1, 0), Side = Vector3.new(1, 0, 0)}
local shapes = {Ball = &quot;Ball&quot;}
local targets = {Centered = char.Torso.CFrame, Glancing = char[&quot;Right Arm&quot;].CFrame}
local expectedTestResults = {}
expectedTestResults[&quot;Fast&quot;] = {Small = false, Medium = true, Large = true}
expectedTestResults[&quot;Slow&quot;] = {Small = false, Medium = false, Large = true}
expectedTestResults[&quot;Medium&quot;] = {Small = false, Medium = false, Large = true}
local boulder = Instance.new(&quot;Part&quot;)
boulder.formFactor = &quot;Custom&quot;
boulder.CanCollide = true
boulder.Anchored = false
function charHasMoved(char, armStart, torsoStart)
&#9;return ((char.Torso.CFrame.p - torsoStart).magnitude &gt; charMovementThreshold) or ((char[&quot;Right Arm&quot;].CFrame.p - armStart).magnitude &gt; charMovementThreshold)
end
function testBoulder(rock, char)
&#9;char.Torso.CFrame = charStart
&#9;
&#9;local charArmStart = char[&quot;Right Arm&quot;].CFrame.p
&#9;local charTorsoStart = char.Torso.CFrame.p
&#9;wait(2)
&#9;rock.Parent = game.Workspace
&#9;--wait(5) -- should be more than enough for each test to complete
&#9;local wasRagdoll = false
&#9;local armMovementTotal = 0
&#9;local torsoMovementTotal = 0
&#9;for i = 0, 5, .5 do
&#9;&#9;--wasRagdoll = wasRagdoll or char.Humanoid.Ragdoll
&#9;&#9;--wasRagdoll = wasRagdoll or charHasMoved(char, charArmStart, charTorsoStart)
&#9;&#9;armMovementTotal = armMovementTotal + (char[&quot;Right Arm&quot;].CFrame.p - charArmStart).magnitude
&#9;&#9;charArmStart = char[&quot;Right Arm&quot;].CFrame.p
&#9;&#9;torsoMovementTotal = torsoMovementTotal + (char.Torso.CFrame.p - charTorsoStart).magnitude
&#9;&#9;charTorsoStart = char.Torso.CFrame.p
&#9;&#9;wait(.5)
&#9;end
&#9;
&#9;rock.Parent = nil
--&#9;return ((char.Torso.CFrame.p - charStart.p).magnitude &gt; charTorsoMovementThreshold)
&#9;--return wasRagdoll
&#9;return (torsoMovementTotal &gt; charMovementThreshold) or (armMovementTotal &gt; charMovementThreshold)
end
-- test EVERYTHING
for targetName, target in pairs(targets) do
&#9;for shapeName, shape in pairs(shapes) do
&#9;&#9;for sizeName, size in pairs(sizes) do
&#9;&#9;&#9;for speedName, speed in pairs(speeds) do
&#9;&#9;&#9;&#9;for directionName, direction in pairs(directions) do
&#9;&#9;&#9;&#9;&#9;local relativeDirection = charStart:vectorToWorldSpace(direction)
&#9;&#9;&#9;&#9;&#9;boulder.Shape = shape
&#9;&#9;&#9;&#9;&#9;boulder.Size = size
&#9;&#9;&#9;&#9;&#9;boulder.CFrame = CFrame.new(target.p + relativeDirection * boulder.Size.magnitude * 2 + Vector3.new(0, boulder.Size.Y/2, 0))
&#9;&#9;&#9;&#9;&#9;boulder.Velocity = -relativeDirection * speed
&#9;&#9;&#9;&#9;&#9;boulder.RotVelocity = Vector3.new(0, 0, 0)
&#9;
&#9;&#9;&#9;&#9;&#9;local testName = speedName .. &quot; &quot; .. sizeName .. &quot; &quot; .. shapeName .. &quot; &quot; .. targetName .. &quot; &quot; .. directionName .. &quot; ragdoll test&quot;
&#9;
&#9;&#9;&#9;&#9;&#9;local expectedResultsForSpeed = expectedTestResults[speedName]
&#9;&#9;&#9;&#9;&#9;local expectedResult = expectedResultsForSpeed[sizeName]
&#9;&#9;&#9;&#9;&#9;if directionName == &quot;Above&quot; and sizeName ~= &quot;Large&quot; then expectedResult = false end
&#9;
&#9;&#9;&#9;&#9;&#9;local actualResult = testBoulder(boulder, char)
&#9;&#9;&#9;&#9;&#9;print(testName .. &quot;: &quot;, actualResult, &quot; expected &quot;, expectedResult)
&#9;&#9;&#9;&#9;&#9;--testService:Check(actualResult == expectedResult, testName)
&#9;&#9;&#9;&#9;end
&#9;&#9;&#9;end
&#9;&#9;end
&#9;end
end
</ProtectedString>
</Properties>
</Item>
</Item>
<Item class="StarterPack" referent="RBX24">
<Properties>
<string name="Name">StarterPack</string>
</Properties>
<Item class="HopperBin" referent="RBX25">
<Properties>
<bool name="Active">false</bool>
<token name="BinType">2</token>
<string name="Name">HopperBin</string>
<Content name="TextureId"><url>rbxasset://Textures/Grab.png</url></Content>
</Properties>
</Item>
<Item class="HopperBin" referent="RBX26">
<Properties>
<bool name="Active">false</bool>
<token name="BinType">4</token>
<string name="Name">HopperBin</string>
<Content name="TextureId"><url>rbxasset://Textures/Hammer.png</url></Content>
</Properties>
</Item>
<Item class="HopperBin" referent="RBX27">
<Properties>
<bool name="Active">false</bool>
<token name="BinType">3</token>
<string name="Name">HopperBin</string>
<Content name="TextureId"><url>rbxasset://Textures/Clone.png</url></Content>
</Properties>
</Item>
</Item>
<Item class="StarterGui" referent="RBX28">
<Properties>
<string name="Name">StarterGui</string>
<bool name="ShowDevelopmentGui">true</bool>
</Properties>
</Item>
<Item class="SoundService" referent="RBX29">
<Properties>
<token name="AmbientReverb">0</token>
<float name="DistanceFactor">10</float>
<float name="DopplerScale">1</float>
<string name="Name">SoundService</string>
<float name="RolloffScale">1</float>
</Properties>
</Item>
<Item class="CollectionService" referent="RBX30">
<Properties>
<string name="Name">CollectionService</string>
</Properties>
</Item>
<Item class="PhysicsService" referent="RBX31">
<Properties>
<string name="Name">PhysicsService</string>
</Properties>
</Item>
<Item class="BadgeService" referent="RBX32">
<Properties>
<string name="Name">BadgeService</string>
</Properties>
</Item>
<Item class="Geometry" referent="RBX33">
<Properties>
<string name="Name">Geometry</string>
</Properties>
</Item>
<Item class="RenderHooksService" referent="RBX34">
<Properties>
<string name="Name">RenderHooksService</string>
</Properties>
</Item>
<Item class="SocialService" referent="RBX35">
<Properties>
<string name="Name">SocialService</string>
</Properties>
</Item>
<Item class="Debris" referent="RBX36">
<Properties>
<int name="MaxItems">1000</int>
<string name="Name">Debris</string>
</Properties>
</Item>
<Item class="TimerService" referent="RBX37">
<Properties>
<string name="Name">Instance</string>
</Properties>
</Item>
<Item class="ScriptInformationProvider" referent="RBX38">
<Properties>
<string name="Name">Instance</string>
</Properties>
</Item>
<Item class="CookiesService" referent="RBX39">
<Properties>
<string name="Name">CookiesService</string>
</Properties>
</Item>
<Item class="TeleportService" referent="RBX40">
<Properties>
<string name="Name">Teleport Service</string>
</Properties>
</Item>
<Item class="Players" referent="RBX41">
<Properties>
<bool name="CharacterAutoLoads">true</bool>
<string name="Name">Players</string>
</Properties>
</Item>
<Item class="Selection" referent="RBX42">
<Properties>
<string name="Name">Selection</string>
</Properties>
</Item>
<Item class="Lighting" referent="RBX43">
<Properties>
<Color3 name="Ambient">4286874756</Color3>
<float name="Brightness">1</float>
<Color3 name="ColorShift_Bottom">4278190080</Color3>
<Color3 name="ColorShift_Top">4278190080</Color3>
<Color3 name="FogColor">4290822336</Color3>
<float name="FogEnd">100000</float>
<float name="FogStart">0</float>
<float name="GeographicLatitude">41.7332993</float>
<string name="Name">Lighting</string>
<Color3 name="ShadowColor">4290230204</Color3>
<string name="TimeOfDay">14:00:00</string>
</Properties>
</Item>
<Item class="ChangeHistoryService" referent="RBX44">
<Properties>
<string name="Name">ChangeHistoryService</string>
</Properties>
</Item>
<Item class="TestService" referent="RBX45">
<Properties>
<bool name="AutoRuns">true</bool>
<string name="Description"></string>
<bool name="Is30FpsThrottleEnabled">true</bool>
<bool name="IsPhysicsEnvironmentalThrottled">true</bool>
<bool name="IsSleepAllowed">true</bool>
<string name="Name">TestService</string>
<double name="Timeout">800</double>
</Properties>
<Item class="Script" referent="RBX46">
<Properties>
<bool name="Disabled">false</bool>
<Content name="LinkedSource"><null></null></Content>
<string name="Name">Script</string>
<ProtectedString name="Source">local char = game.Workspace.BuilderMan
local charStart = char.Torso.CFrame
local testService = game:GetService(&quot;TestService&quot;)
--local charMovementThreshold = 3 -- more than 3 studs means char was knocked down
local charMovementThreshold = 1
local sizes = {Small = Vector3.new(1, 1, 1), Medium = Vector3.new(3, 3, 3), Large = Vector3.new(8, 8, 8)}
local speeds = {Slow = 20, Fast = 80}
--local directions = {Front = Vector3.new(0, 0, -1), Back = Vector3.new(0, 0, 1), Above = Vector3.new(0, 1, 0), Side = Vector3.new(1, 0, 0)}
local directions = {Front = Vector3.new(0, 0, -1), Back = Vector3.new(0, 0, 1), Side = Vector3.new(1, 0, 0)}
local shapes = {Ball = &quot;Ball&quot;}
local targets = {Centered = char.Torso.CFrame, Glancing = char[&quot;Right Arm&quot;].CFrame}
local expectedTestResults = {}
expectedTestResults[&quot;Fast&quot;] = {Small = false, Medium = true, Large = true}
expectedTestResults[&quot;Slow&quot;] = {Small = false, Medium = false, Large = false}
--expectedTestResults[&quot;Medium&quot;] = {Small = false, Medium = false, Large = true}
local boulder = Instance.new(&quot;Part&quot;)
boulder.formFactor = &quot;Custom&quot;
boulder.CanCollide = true
boulder.Anchored = false
function charHasMoved(char, armStart, torsoStart)
&#9;return ((char.Torso.CFrame.p - torsoStart).magnitude &gt; charMovementThreshold) or ((char[&quot;Right Arm&quot;].CFrame.p - armStart).magnitude &gt; charMovementThreshold)
end
function testBoulder(rock, char)
&#9;char.Torso.CFrame = charStart
&#9;
&#9;--local charArmStart = char[&quot;Right Arm&quot;].CFrame.p
&#9;--local charTorsoStart = char.Torso.CFrame.p
&#9;local charArmStart = char[&quot;Right Arm&quot;].CFrame:vectorToWorldSpace(Vector3.new(1, 1, 1))
&#9;local charTorsoStart = char.Torso.CFrame:vectorToWorldSpace(Vector3.new(1, 1, 1))
&#9;char.Humanoid.Jump = true
&#9;wait(2)
&#9;rock.Parent = game.Workspace
&#9;--wait(5) -- should be more than enough for each test to complete
&#9;local wasRagdoll = false
&#9;local armMovementTotal = 0
&#9;local torsoMovementTotal = 0
&#9;for i = 0, 5, .2 do
&#9;&#9;--wasRagdoll = wasRagdoll or char.Humanoid.Ragdoll
&#9;&#9;--wasRagdoll = wasRagdoll or charHasMoved(char, charArmStart, charTorsoStart)
&#9;&#9;--armMovementTotal = armMovementTotal + (char[&quot;Right Arm&quot;].CFrame.p - charArmStart).magnitude
&#9;&#9;--charArmStart = char[&quot;Right Arm&quot;].CFrame.p
&#9;&#9;armMovementTotal = armMovementTotal + (char[&quot;Right Arm&quot;].CFrame:vectorToWorldSpace(Vector3.new(1, 1, 1)) - charArmStart).magnitude
&#9;&#9;charArmStart = char[&quot;Right Arm&quot;].CFrame:vectorToWorldSpace(Vector3.new(1, 1, 1))
&#9;&#9;--torsoMovementTotal = torsoMovementTotal + (char.Torso.CFrame.p - charTorsoStart).magnitude
&#9;&#9;--charTorsoStart = char.Torso.CFrame.p
&#9;&#9;torsoMovementTotal = torsoMovementTotal + (char.Torso.CFrame:vectorToWorldSpace(Vector3.new(1, 1, 1)) - charTorsoStart).magnitude
&#9;&#9;charTorsoStart = char.Torso.CFrame:vectorToWorldSpace(Vector3.new(1, 1, 1))
&#9;&#9;--wasRagdoll = wasRagdoll or char.Humanoid:IsRagdoll()
&#9;&#9;wait(.2)
&#9;end
&#9;
&#9;rock.Parent = nil
--&#9;return ((char.Torso.CFrame.p - charStart.p).magnitude &gt; charTorsoMovementThreshold)
&#9;--return wasRagdoll
&#9;return (torsoMovementTotal &gt; charMovementThreshold) or (armMovementTotal &gt; charMovementThreshold)
end
-- test EVERYTHING
for targetName, target in pairs(targets) do
&#9;for shapeName, shape in pairs(shapes) do
&#9;&#9;for sizeName, size in pairs(sizes) do
&#9;&#9;&#9;for speedName, speed in pairs(speeds) do
&#9;&#9;&#9;&#9;for directionName, direction in pairs(directions) do
&#9;&#9;&#9;&#9;&#9;local relativeDirection = charStart:vectorToWorldSpace(direction)
&#9;&#9;&#9;&#9;&#9;boulder.Shape = shape
&#9;&#9;&#9;&#9;&#9;boulder.Size = size
&#9;&#9;&#9;&#9;&#9;boulder.CFrame = CFrame.new(target.p + relativeDirection * (boulder.Size.X + 1) + Vector3.new(0, boulder.Size.Y/2, 0))
&#9;&#9;&#9;&#9;&#9;boulder.Velocity = -relativeDirection * speed
&#9;&#9;&#9;&#9;&#9;boulder.RotVelocity = Vector3.new(0, 0, 0)
&#9;
&#9;&#9;&#9;&#9;&#9;local testName = speedName .. &quot; &quot; .. sizeName .. &quot; &quot; .. shapeName .. &quot; &quot; .. targetName .. &quot; &quot; .. directionName .. &quot; ragdoll test&quot;
&#9;
&#9;&#9;&#9;&#9;&#9;local expectedResultsForSpeed = expectedTestResults[speedName]
&#9;&#9;&#9;&#9;&#9;local expectedResult = expectedResultsForSpeed[sizeName]
&#9;&#9;&#9;&#9;&#9;if directionName == &quot;Above&quot; then expectedResult = false end
&#9;
&#9;&#9;&#9;&#9;&#9;local actualResult = testBoulder(boulder, char)
&#9;&#9;&#9;&#9;&#9;print(testName .. &quot;: &quot;, actualResult, &quot; expected &quot;, expectedResult)
&#9;&#9;&#9;&#9;&#9;testService:Check(actualResult == expectedResult, testName)
&#9;&#9;&#9;&#9;end
&#9;&#9;&#9;end
&#9;&#9;end
&#9;end
end
</ProtectedString>
</Properties>
</Item>
</Item>
</roblox>