Vehicle Scripts

XML - Vehicle

This content can be found inside the vehicle definitions file in the SDK package: Scripts.pak\Scripts\Entities\Vehicles\def_vehicle.xml

General


  <AllowAlways>
    <Property name="id" type="string" optional="1"/>
  </AllowAlways>

  <Property name="name" type="string"/>
  <Property name="isOld" type="bool" optional="1"/>
  <Property name="show" type="bool" optional="1"/>
  <Property name="actionMap" type="string" optional="1"/>

Physics


  <Table name="Physics">
    <Property name="mass" type="float" min="0" max="100000" desc="mass in kg" optional="1"/>
    <Property name="damping" type="float" min="0" max="10" desc="physics damping" optional="1"/>
    <Property name="dampingFreefall" type="float" min="0" max="10" desc="physics damping for freefall" optional="1"/>
    <Property name="gravityFreefall" type="Vec3" desc="gravity used for freefall" optional="1"/>
    <Property name="pushable" type="bool" desc="Whether the vehicle is pushable by players" optional="1"/>
    <Property name="retainGravity" type="bool" optional="1" desc="If true, the gravity set at physicalization will be retained, overwriting e.g. gravity areas" />    
    <Table name="Buoyancy" optional="1">
      <Property name="waterDensity" type="float" optional="1" min="0" max="10000" desc="Specific water density"/>
      <Property name="waterResistance" type="float" optional="1" min="0" max="10000" desc="Precise water resistance"/>
      <Property name="waterDamping" type="float" optional="1" min="0" max="10000" desc="Simplified water damping"/>
    </Table>
    <Table name="Simulation" optional="1">
      <Property name="maxTimeStep" type="float" optional="1"/>
      <Property name="minEnergy" type="float" optional="1"/>
      <Property name="maxLoggedCollisions" type="int" optional="1"/>
    </Table>
  </Table>

Damage


  <Table name="Damages" optional="1">
    <Property name="submergedRatioMax" type="float" optional="1"/>
    <Property name="submergedDamageMult" type="float" optional="1"/>
    <Property name="collDamageThreshold" type="float" min="0" max="10000" desc="Is subtracted from collision damage before it is applied" optional="1"/>
    <Property name="groundCollisionMinMult" type="float" min="0" max="10" desc="Increases damage when falling onto ground. Use together with minSpeed and maxSpeed" optional="1"/>
    <Property name="groundCollisionMaxMult" type="float" min="0" max="10" optional="1"/>
    <Property name="groundCollisionMinSpeed" type="float" min="0" max="50" optional="1"/>
    <Property name="groundCollisionMaxSpeed" type="float" min="0" max="200" optional="1"/>
    <Property name="vehicleCollisionDestructionSpeed" type="float" optional="1" desc="If colliding with another vehicle with closing speed above this, self will be destroyed"/>
    <Property name="aiKillPlayerSpeed" type="float" optional="1" desc="AI driven vehicles kill players if colliding above this speed"/>
    <Property name="playerKillAISpeed" type="float" optional="1" desc="Player driven vehicles kill AI if colliding above this speed"/>
    <Property name="aiKillAISpeed" type="float" optional="1" desc="AI driven vehicles kill AI of other factions if colliding above this speed"/>

    <Array name="DamageMultipliers" elementName="DamageMultiplier" extendable="1" id="idDamageMultipliers" optional="1">
      <Property name="damageType" type="string"/>
      <Property name="multiplier" type="float"/>
      <Property name="splash" type="float" optional="1"/>
  </Array>

  <Array name="DamagesGroups" elementName="DamagesGroup" optional="1">
      <Property name="name" type="string" optional="0"/>
      <Property name="useTemplate" type="string" optional="1"/>

      <Array name="DamagesSubGroups" elementName="DamagesSubGroup" optional="1">
        <Property name="delay" type="float"/>
        <Property name="randomness" type="float"/>

        <Array name="DamageBehaviors" elementName="DamageBehavior" extendable="1" id="idDamageBehaviors">
          <Property name="class" type="string" optional="1">
            <Enum>
              <Value>AISignal</Value>
              <Value>Burn</Value>
              <Value>CameraShake</Value>
              <Value>Destroy</Value>
              <Value>Explosion</Value>
              <Value>Effect</Value>
              <Value>Group</Value>
              <Value>HitPassenger</Value>
              <Value>Impulse</Value>
              <Value>MovementNotification</Value>
              <Value>DetachPart</Value>
              <Value>Sink</Value>
              <Value>SpawnDebris</Value>
              <Value>BlowTire</Value>
              <Value>Indicator</Value>
              <Value>DisableSeatAction</Value>
            </Enum>
          </Property>

          <Property name="damageRatioMin" type="float" optional="1"/>
          <Property name="damageRatioMax" type="float" optional="1"/>
          <Property name="ignoreVehicleDestruction" type="bool" optional="1"/>

          <Table name="AISignal" id="idAISignal" optional="1">
            <Property name="signalId" type="int" optional="0"/>
            <Property name="signalText" type="string" optional="0"/>
          </Table>

          <Table name="Burn" id="idBurn" optional="1">
            <Property name="helper" type="string"/>
            <Property name="damage" type="float"/>
            <Property name="selfDamage" type="float"/>
            <Property name="radius" type="float"/>
            <Property name="interval" type="float"/>
          </Table>

          <Table name="CameraShake" id="idCameraShake" optional="1">
          </Table>

          <Table name="Destroy" id="idDestroy" optional="1">
            <Property name="placeholder" type="bool" optional="1"/>
          </Table>

          <Table name="Effect" id="idEffect" optional="1">
            <Property name="effect" type="string"/>
            <Property name="disableAfterExplosion" type="bool" optional="1"/>
          </Table>

          <Table name="Explosion" id="idExplosion" optional="1">
            <Property name="helper" type="string"/>
            <Property name="damage" type="float"/>
            <Property name="radius" type="float"/>
            <Property name="minRadius" type="float" optional="1"/>
            <Property name="minPhysRadius" type="float" optional="1"/>
            <Property name="physRadius" type="float" optional="1"/>
            <Property name="pressure" type="float"/>
            <Property name="soundRadius" type="float" optional="1"/>
          </Table>

          <Table name="Group" id="idGroup" optional="1">
            <Property name="name" type="string"/>
          </Table>

          <Table name="HitPassenger" id="idHitPassenger" optional="1">
            <Property name="damage" type="int"/>
            <Property name="isDamagePercent" type="bool"/>
          </Table>

          <Table name="Impulse" id="idImpulse" optional="1">
            <Property name="forceMin" type="float"/>
            <Property name="forceMax" type="float"/>
            <Property name="direction" type="Vec3"/>
            <Property name="momentum" type="Vec3" optional="1"/>
            <Property name="helper" type="string" optional="1"/>
            <Property name="worldSpace" type="bool" optional="1"/>
          </Table>

          <Table name="MovementNotification" id="idMovementNotification" optional="1">
            <Property name="isSteering" type="float" optional="1"/>
            <Property name="isFatal" type="bool" optional="1"/>
            <Property name="param" type="int" optional="1"/>
            <Property name="isDamageAlwaysFull" type="bool" optional="1"/>
          </Table>

          <Table name="DetachPart" id="idDetachPart" optional="1">
            <Property name="part" type="string"/>
            <Property name="baseForce" type="Vec3" optional="1"/>
            <Property name="effect" type="string" optional="1"/>
            <Property name="pickable" type="bool" optional="1" desc="If true, spawned debris will be pickable by the player"/>
          </Table>

          <Table name="BlowTire" id="idBlowTire" optional="1">
            <Property name="effect" type="string"/>
          </Table>

          <Table name="Indicator" id="idIndicator" optional="1">
            <Table name="Light">
              <Property name="material" type="string"/>
              <Property name="sound" type="string" optional="1"/>
              <Property name="soundRatioMin" type="float" optional="1"/>
              <Property name="helper" type="string" optional="1"/>
            </Table>
          </Table>

          <Table name="SpawnDebris" id="idSpawnDebris" optional="1">
            <Property name="pickable" type="bool" optional="1" desc="If true, spawned debris will be pickable by the player"/>
            <Property name="effect" type="string" optional="1" desc="Particle effect to play when debris is spawned"/>
          </Table>

          <Table name="DisableSeatAction" id="idDisableSeatAction" optional="1">
            <Table name="DisableSeatAction">
              <Property name="seat" type="string" optional="0" desc="The name of the seat holding the action to be disabled"/>
              <Property name="actionName" type="string" optional="0" desc="The name of the action to be disabled, or 'all'"/>
            </Table>
          </Table>
        </Array>
      </Array>
    </Array>
  </Table>

Components


  <Array name="Components" elementName="Component" optional="1">
    <Property name="name" type="string"/>
    <Property name="damageMax" type="float" min="0" max="10000"/>
    <Property name="major" type="bool" optional="1" desc="if not set, discounts components from some damage calculations/display"/>
    <Property name="minBound"  type="Vec3" optional="1" deprecated="1" desc="'minBound' and 'maxBound' have been replaced by 'position' and 'size'."/>
    <Property name="maxBound"  type="Vec3" optional="1" deprecated="1" desc="'minBound' and 'maxBound' have been replaced by 'position' and 'size'."/>    
    <Property name="position" type="Vec3" optional="1"/>
    <Property name="size" type="Vec3" optional="1"/>
    <Property name="useBoundsFromParts" type="bool" optional="1"/>
    <Property name="useDamageLevels" type="bool" optional="1" desc="If false, component will notify its DamageBehaviors independent of damage levels"/>
    <Property name="hullAffection" type="float" optional="1" desc="Amount of damage that affects the main hull when this component is hit"/>
    <Property name="isOnlyDamageableByPlayer" type="bool" optional="1"/>
    <Use id="idDamageMultipliers" optional="1"/>
    <Use id="idDamageBehaviors" optional="1"/>
  </Array>

Parts


  <Array name="Parts" elementName="Part" id="idParts">
    <Use id="idParts" optional="1"/>
    <Property name="name" type="string" optional="1" desc="Name of the part, must be unique"/>
    <Property name="class" type="string" optional="1" >
      <Enum>
        <Value>Base</Value>
        <Value>Static</Value>
        <Value>Animated</Value>
        <Value>AnimatedJoint</Value>
        <Value>EntityAttachment</Value>
        <Value>Light</Value>
        <Value>SubPart</Value>
        <Value>SubPartWheel</Value>
        <Value>Tread</Value>
        <Value>MassBox</Value>
        <Value>Entity</Value>
        <Value>ParticleEffect</Value>
      </Enum>
    </Property>

    <Property name="component" type="string" optional="1" list="Component" desc="Component this part belongs to"/>
    <Property name="helper" type="string" list="Helper" optional="1" desc="[opt] Helper where the part will be positioned" />       
    <Property name="mass" type="float" optional="1" min="0" max="100000" desc="Optional mass of this part. In most cases, only one part (hull, mass box) has mass assigned."/>
    <Property name="filename" type="string" optional="1"/>
    <Property name="position" type="Vec3" optional="1" desc="Optional position for this part in entity space"/>
    <Property name="disablePhysics" type="bool" optional="1" desc="Prevents the part from being physicalized as rigid."/>
    <Property name="disableCollision" type="bool" optional="1" desc="Disables all collision. Useful e.g. for mass blocks."/>
    <Property name="isHidden" type="bool" optional="1" desc="Hides the part from rendering"/>
    <Property name="useOption" type="int" optional="1" desc="index of optional part to be used, if available"/>

    <Array name="Components" elementName="Component" type="string" optional="1"/>

    <Table name="Animated" id="idAnimated" optional="1">
      <Property name="filename" type="string"/>
      <Property name="filenameDestroyed" type="string" optional="1"/>
      <Property name="destroyedSuffix" type="string" optional="1"/>
    </Table>

    <Table name="AnimatedJoint" id="idAnimatedJoint" optional="1">
      <Property name="detachBaseForce" type="Vec3" optional="1"/>
      <Property name="detachProbability" type="float" optional="1"/>
      <Table name="Dials" optional="1">
        <Property name="rotationMax" type="float" min="0" max="360" desc="max rotation for dial" optional="1"/>
        <Property name="ofs" type="float" min="-180" max="180" desc="initial offset for rotation" optional="1"/>
      </Table>
      <Property name="filename" type="string" optional="1" desc="filename for attaching external CGF to this joint"/>
      <Property name="filenameDestroyed" type="string" optional="1" desc="destroyed version for CGF specified in filename"/>
    </Table>

    <Table name="MassBox" id="idMassBox" optional="1">
      <Property name="size" type="Vec3" desc="Mass box dimensions"/>
      <Property name="drivingOffset" type="float" optional="1" min="-10" max="10" desc="z offset used when driving"/>
      <Property name="lumberjack" type="bool" optional="1"/>
    </Table>

    <Table name="Entity" id="idEntity" optional="1">
      <Property name="id" type="int" desc="Unique identifier" optional="1"/>
      <Property name="name" type="string" desc="Name of entity to spawn" optional="0"/>
      <Property name="archetype" type="string" desc="Archetype of entity to spawn" optional="0"/>
      <Property name="helper" type="string" desc="Name of helper that entity will be attached to" optional="1"/>
    </Table>

    <Table name="ParticleEffect" id="idParticleEffect" optional="1">
      <Property name="id" type="int" desc="Unique identifier" optional="1"/>
      <Property name="particleEffect" type="string" desc="Name of particle effect to spawn" optional="0"/>
      <Property name="helper" type="string" desc="Name of helper that particle effect will be attached to" optional="1"/>
    </Table>

    <Table name="Static" id="idStatic" optional="1">
      <Property name="filename" type="string"/>
      <Property name="filenameDestroyed" type="string" optional="1"/>
      <Property name="geometry" type="string" optional="1" desc="[opt] Subgeometry inside specified file"/>
    </Table>

    <Table name="SubPart" id="idSubPart" optional="1">
    </Table>

    <Table name="SubPartWheel" id="idSubPartWheel" optional="1">
      <Property name="axle" type="int" optional="1" min="0" max="20" desc="Number of the axle, counted from the vehicles front and starting with 0"/>
      <Property name="canBrake" type="bool" optional="1" desc="If true, this wheel is affected by the handbrake"/>
      <Property name="density" type="float" optional="1" desc="Wheels physical density"/>
      <Property name="damping" type="float" min="-1" max="10000" optional="1" desc="Damping of the suspension" />
      <Property name="driving" type="bool" optional="1" desc="If true, this wheel is powered"/>
      <Property name="lenInit" type="float" optional="1"/>
      <Property name="lenMax" type="float" optional="1" desc="Maximum (stretched) suspension length"/>
      <Property name="maxFriction" type="float" optional="1" desc="Max friction"/>
      <Property name="minFriction" type="float" optional="1" desc="Min friction"/>
      <Property name="slipFrictionMod" type="float" optional="1" min="0" max="5" desc="Friction modifier proportional with slip vel"/>
      <Property name="slipSlope" type="float" optional="1" min="0" max="5" desc="Coefficient for slip friction slope calculation"/>
      <Property name="stiffness" type="float" optional="1" desc="Suspension stiffness. If 0, it's calculated from suspension lengths."/>
      <Property name="surfaceId" type="int" optional="1" desc="If set, surface type of wheel material is overridden with this ID"/>
      <Property name="suspLength" type="float" optional="1" desc="Initial length of suspension (smaller than lenMax)"/>
      <Property name="rayCast" type="bool" optional="1" desc="Use raycasting for ground sampling (faster than geometry)"/>
      <Property name="rimRadius" type="float" optional="1" desc="Optional (faked) rim radius, used for bullet hits"/>
      <Property name="torqueScale" type="float" optional="1" min="0" max="10" desc="Optional torque scale (to configure distribution among wheels)"/>
    </Table>

    <Table name="Tread" id="idTread" optional="1">
      <Property name="filename" type="string" optional="1" desc="Tread asset file"/>
      <Property name="materialName" type="string" optional="1" desc="Material used for UV animation"/>
      <Property name="uvRateMax" type="float" optional="1" min="0" max="50" desc="Max speed of tread UV animation"/>
      <Property name="uvSliceCount" type="float" optional="1" min="0" max="20" desc="Max count of slices used for speed change"/>
    </Table>

    <Table name="Light" id="idLight" optional="1">
      <Property name="type" type="string" optional="1">
        <Enum restrictive="0">
          <Value>cone</Value>
          <Value>white</Value>
          <Value>red</Value>
        </Enum>
      </Property>
      <Property name="texture" type="string" optional="1"/>
      <Property name="material" type="string" optional="1"/>
      <Property name="radius" type="float" optional="1"/>
      <Property name="diffuse" type="Vec3" optional="1"/>
      <Property name="diffuseMult" type="float" optional="1"/>
      <Property name="specular" type="Vec3" optional="1"/>
      <Property name="specularMult" type="float" optional="1"/>
      <Property name="fakeLight" type="bool" optional="1"/>
      <Property name="coronaDistIntensity" type="float" optional="1"/>
      <Property name="coronaDistSize" type="float" optional="1"/>
      <Property name="coronaScale" type="float" optional="1"/>
      <Property name="style" type="int" optional="1"/>
      <Property name="directFactor" type="float" optional="1"/>
      <Property name="frustumAngle" type="float" optional="1"/>
      <Property name="frequency" type="float" optional="1"/>
      <Property name="duration" type="float" optional="1"/>
    </Table>
  </Array>

Helpers


  <Array name="Helpers" elementName="Helper" optional="1">
    <Property name="name" type="string" desc="Helper name (should be unique)"/>
    <Property name="position" type="Vec3" desc="Helper position relative to vehicle pivot" optional="1"/>
    <Property name="direction" type="Vec3" desc="Helper direction" optional="1"/>
    <Property name="part" type="string" list="Part" desc="Vehicle part to attach this helper to" optional="1"/>
  </Array>

Actions


  <Array name="Actions" elementName="Action" optional="1">
    <Property name="class" type="string"/>

    <Array name="Activations" elementName="Activation" optional="1">
      <Property name="type" type="string" optional="0">
        <Enum>
          <Value>OnEntityCollision</Value>
          <Value>OnGroundCollision</Value>
          <Value>OnUsed</Value>
        </Enum>
      </Property>

      <Property name="param1" type="string" optional="1"/>
      <Property name="param2" type="string" optional="1"/>
      <Property name="distance" type="float" optional="1"/>
    </Array>

    <Table name="Enter" optional="1">
      <Array name="Seats" elementName="Seat" type="string" extendable="1"/>
    </Table>

    <Table name="Flip" optional="1">
    </Table>

    <Table name="AutomaticDoor" optional="1">
      <Property name="animation" type="string" optional="0"/>
      <Property name="timeMax" type="float" optional="0"/>
      <Property name="disabled" type="bool" optional="1"/>
    </Table>

    <Table name="LandingGears" optional="1">
      <Property name="landingDamages" type="float" optional="1"/>
      <Property name="altitudeToRetractGears" type="float" optional="1"/>
      <Property name="velocityMax" type="float" optional="1"/>
      <Property name="blockPartRotation" type="string" optional="1"/>
      <Property name="isOnlyAutoForPlayer" type="bool" optional="1"/>
    </Table>

    <Table name="EntityAttachment" optional="1">
      <Property name="class" type="string" optional="0"/>
      <Property name="helper" type="string" optional="1"/>
    </Table>
  </Array>

Special Locations


  <Array name="SpecialLocations" elementName="SpecialLocation" optional="1">
    <Property name="name" type="string"/>
    <Property name="part" type="string" optional="1"/>
    <Property name="helper" type="string"/>
    <Property name="message" type="string" optional="1"/>
  </Array>

Materials


  <Table name="Materials" optional="1">
    <Property name="default" type="string"/>
    <Property name="frozen" type="string" optional="1"/>
    <Property name="damaged" type="string" optional="1"/>
  </Table>

Seats


  <Array name="Seats" elementName="Seat" id="idSeats">
    <Property name="name" type="string" desc="Seat name, can be chosen freely."/>
    <Property name="part" type="string" list="Part" optional="1" desc="Optional part this seat is attached to" /> 
    <Property name="enterHelper" type="string" list="Helper" optional="1" desc="Helper for entering position" /> 
    <Property name="exitHelper" type="string" list="Helper" optional="1" desc="Optional helper for seperate exit position" /> 
    <Property name="exitOffsetPlayer" type="Vec3" optional="1" desc="Optional offset for player exiting, added to regular exit pos"/>
    <Property name="movePassengerOnExit" type="bool" optional="1"/>
    <Property name="sitHelper" type="string" list="Helper" optional="1" desc="Sit position" />     
    <Property name="aiVisionHelper" type="string" list="Helper" optional="1" desc="Position where AI begin their vision raytracing" />  
    <Property name="useBoundsForEntering" type="bool" optional="1" desc=""/>
    <Property name="isDriver" type="bool" optional="1" desc="If true, this seat is the driver seat"/>
    <Property name="isPassengerShielded" type="bool" optional="1"/>
    <Property name="isPassengerHidden" type="bool" optional="1"/>
    <Property name="AimPart" type="string" list="Part" optional="1" desc="If set, the view follows this part." />
    <Property name="ragdollOnDeath" type="bool" optional="1"/>
    <Property name="isPassengerExposed" type="bool" optional="1" desc="If set, passenger is killed when vehicle flips over, or when vehicle is hit by rocket"/>
    <Property name="usesSeatForEntering" type="string" optional="1"/>
    <Property name="disableStopAllAnimationsOnEnter" type="bool" optional="1"/>
    <Property name="seatGroupIndex" type="int" optional="1"/>
    <Property name="agVehicleName" type="string" optional="1"/>
    <Property name="agSeatNumber" type="int" optional="1"/>
    <Property name="actionMap" type="string" optional="1"/>
    <Property name="remotelyUseActionsFromSeat" type="string" optional="1" desc="Allow the passenger to remotely use seat actions from another seat when no one uses that other seat."/>
    <Property name="explosionShakeMult" type="float" optional="1" min="0" desc="Multiplier for explosion camera shakes"/>
    <Property name="locked" type="string" optional="1" desc="Locks that Seat, will not be available in game">
      <Enum>
        <Value>Unlocked</Value>
        <Value>AI</Value>
        <Value>Players</Value>
        <Value>All</Value>
      </Enum>
    </Property>

    <Property name="updatePassengerTM" type="bool" optional="1" desc="Allow seat to update passenger's transform matrix."/>

    <Array name="aimPartHands" type="string" optional="1"/>

    <Array name="Views" elementName="View" extendable="1">
      <Property name="name" type="string" optional="1"/>

      <Property name="class" type="string">
        <Enum>
          <Value>SteerThirdPerson</Value>
          <Value>FirstPerson</Value>
          <Value>ThirdPerson</Value>
          <Value>ActionThirdPerson</Value>
        </Enum>
      </Property>

      <Property name="canRotate" type="bool" optional="1" desc="If true, the view can be rotated"/>
      <Property name="rotationBoundsActionMult" type="float" optional="1" desc="When this feature is used, actions are created using this multiplier when the view rotation is pushing its boundaries"/>
      <Property name="delayTimeMax" type="float" optional="1"/>
      <Property name="relaxTimeMax" type="float" optional="1"/>
      <Property name="rotationMin" type="Vec3" optional="1"/>
      <Property name="rotationMax" type="Vec3" optional="1"/>
      <Property name="rotationInit" type="Vec3" optional="1"/>
      <Property name="rotationVelMin" type="float" optional="1"/>
      <Property name="rotationVelMax" type="float" optional="1"/>
      <Property name="hidePlayer" type="bool" optional="1"/>
      <Property name="isAvailableRemotely" type="bool" optional="1"/>
      <Property name="isRelaxEnabled" type="bool" optional="1"/>
      <Property name="relaxTimeMax" type="float" optional="1"/>

      <Array name="HideParts" elementName="HidePart" type="string" extendable="1" optional="1"/>

      <Table name="SteerThirdPerson" optional="1">
        <Table name="Pos" optional="1">
          <Property name="aim" type="Vec3" desc="Camera aim position relative to the vehicle" optional="0"/>
          <Property name="offset" type="Vec3" desc="Camera position relative to the aim location" optional="0"/>
          <Property name="pivotOffset" type="float" desc="Offset the aim pivot point in the z direction by this amount" optional="1"/>
        </Table>
        <Table name="Rotation" optional="1">
          <Property name="canRotate" type="bool" optional="1" desc="If true, the view can be rotated" />
          <Property name="rotationMax" type="Vec3" desc="max rotation at zero speed" optional="1"/>
          <Property name="rotationMax2" type="Vec3" desc="max rotation at top speed" optional="1"/>
          <Property name="stickSensitivity" type="Vec3" desc="sensitivity at zero speed" optional="1"/>
          <Property name="stickSensitivity2" type="Vec3" desc="sensitivity at top speed" optional="1"/>
          <Property name="inheritElev" type="float" optional="1" desc="How much to inherit from the target's elevation angle (0 - 1)" />
        </Table>
        <Table name="Motion" optional="1">
          <Property name="returnSpeed" type="float" desc="angular spring back to default (at zero speed)" optional="1"/>
          <Property name="returnSpeed2" type="float" desc="angular spring back to default (at top speed)" optional="1"/>
          <Property name="angFollow" type="float" desc="use angular speed of veh" optional="1"/>
        </Table>
        <Table name="Backwards" optional="1">
          <Property name="clamp" type="bool" optional="1" desc="Clamp angular rotation (whilst going backwards)"/>
          <Property name="returnSpring" type="bool" optional="1" desc="Allow angular spring"/>
        </Table>
        <Table name="Radius" optional="1">
          <Property name="min" type="float" desc="min radius (as fraction of default)" optional="1"/>
          <Property name="max" type="float" desc="max radius (as fraction of default)" optional="1"/>
          <Property name="relaxRate" type="float" desc="relax rate back to default radius" optional="1"/>
          <Property name="dampRate" type="float" desc="damp changes in radius velocity changes" optional="1"/>
          <Property name="velInfluence" type="float" desc="how much veh velocity influences radius changes should be ~ 0.1 range (0-1)" optional="1"/>
        </Table>
      </Table>

      <Table name="FirstPerson" optional="1">
        <Property name="offset" type="Vec3" optional="1"/>
        <Property name="helper" type="string" list="Helper" optional="1" desc="Optional helper for camera position" />
        <Property name="hidePlayer" type="bool" optional="1" desc="Disable vehicle rendering of the player, always enabled when hideVehicle is enabled"/>
        <Property name="hideVehicle" type="bool" optional="1" desc="Disable vehicle rendering on the client"/>
        <Property name="relativeToHorizon" type="float" optional="1"/>
        <Property name="frameObject" type="string" optional="1"/>
      </Table>

      <Table name="ThirdPerson" optional="1">
        <Property name="distance" type="float" optional="1" min="0" max="100" desc="Camera distance from the vehicle" />
        <Property name="heightOffset" type="float" min="-10" max="50" optional="1" desc="Optional camera height offset" />
        <Property name="speed" type="float" optional="1" min="0" max="50" desc="(Linear) Speed for Thirdperson view" />
        <Property name="rotationSpeed" type="float" optional="1" min="0" max="50" desc="Speed for Thirdperson view rotation" />
        <Property name="pitchLowerLimit" type="float" optional="1" min="-90" max="90" desc="Minimum camera pitch"/>
        <Property name="pitchUpperLimit" type="float" optional="1" min="-90" max="90" desc="Maximum camera pitch"/>
      </Table>

      <Table name="ActionThirdPerson" optional="1">
        <Property name="heightOffset" type="float" min="-10" max="50" optional="1" desc="Optional camera height offset" />
        <Property name="cameraPosOffset" type="Vec3" optional="1"/>
        <Property name="cameraAimOffset" type="Vec3" optional="1"/>
        <Property name="lagSpeed" type="float" optional="1"/>
        <Property name="velocityMult" type="Vec3" optional="1"/>
        <Property name="heightAboveWater" type="float" optional="1" desc="fix a minimum height for the camera to be kept above the water level, a value of 0 disable this feature"/>
      </Table>
    </Array>

    <Array name="SeatActions" elementName="SeatAction" optional="1" extendable="1">
      <Property name="class" type="string">
        <Enum>
          <Value>Lights</Value>
          <Value>PassengerIK</Value>
          <Value>RotateTurret</Value>
          <Value>Sound</Value>
          <Value>SteeringWheel</Value>
          <Value>Weapons</Value>
          <Value>Animation</Value>
        </Enum>
      </Property>

      <Property name="name" type="string" optional="1" desc="The name of the action, only necessary for DisableSeatAction damage behavior"/>

      <Property name="isAvailableRemotely" type="bool" optional="1" desc="used to enable remote usability of the SeatAction"/>

      <Table name="Lights" id="idActionLights" optional="1">
        <Property name="activation" type="string" optional="1">
          <Enum>
            <Value>toggle</Value>
            <Value>brake</Value>
            <Value>reverse</Value>
          </Enum>
        </Property>
        <Property name="sound" type="int" optional="1"/>
        <Array name="LightParts" elementName="LightPart" type="string"/>
      </Table>

      <Table name="PassengerIK" id="idActionPassengerIK" optional="1">
        <Array name="Limbs" elementName="Limb" extendable="1">
          <Property name="limb" type="string"/>
          <Property name="helper" type="string" list="Helper"/>
        </Array>

        <Property name="waitShortlyBeforeStarting" type="float" optional="1"/>
      </Table>

      <Table name="RotateTurret" id="idActionRotateTurret" optional="1">
        <Table name="Pitch" optional="1">
          <Property name="part" type="string" desc="Vehicle part to rotate (pitch)"/>
          <Property name="speed" type="float" min="0" desc="Rotation speed" optional="1"/>
          <Property name="accel" type="float" desc="Rotation acceleration" optional="1"/>
          <Property name="worldSpace" type="bool" desc="Use world space rotations" optional="1"/>
          <Array name="Limits" type="float" elementName="Limit" desc="Min/Max limits for rotation" optional="1"/>
          <Table name="Sound" optional="1">
            <Property name="event" type="string" desc="sound event name"/>
            <Property name="eventDamage" type="string" desc="event name for damage sound" optional="1"/>
            <Property name="helper" type="string" desc="sound helper" optional="1"/>
            <Property name="param" type="string" desc="sound param name" optional="1"/>
          </Table>
        </Table>
        <Table name="Yaw" optional="1">
          <Property name="part" type="string" desc="Vehicle part to rotate (yaw)"/>
          <Property name="speed" type="float" min="0" desc="Rotation speed" optional="1"/>
          <Property name="accel" type="float" desc="Rotation acceleration" optional="1"/>
          <Property name="worldSpace" type="bool" desc="Use world space rotations" optional="1"/>
          <Array name="Limits" type="float" elementName="Limit" desc="Min/Max limits for rotation" optional="1"/>
          <Table name="Sound" optional="1">
            <Property name="event" type="string" desc="sound event name"/>
            <Property name="eventDamage" type="string" desc="event name for damage sound" optional="1"/>
            <Property name="helper" type="string" desc="sound helper" optional="1"/>
            <Property name="param" type="string" desc="sound param name" optional="1"/>
          </Table>
        </Table>
        <Table name="RotationTest" optional="1">
          <Property name="helper1" type="string"/>
          <Property name="helper2" type="string"/>
          <Property name="radius" type="float"/>
        </Table>
      </Table>

      <Table name="Sound" id="idActionSound" optional="1">
        <Property name="sound" type="string"/>
        <Property name="helper" type="string" list="Helper"/>
      </Table>

      <Table name="Animation" id="idActionAnimation" optional="1">
        <Property name="vehicleAnimation" type="string"/>
        <Property name="control" type="string" optional="1"/>
        <Property name="manualUpdate" type="bool"/>
        <Property name="speed" type="float" optional="1"/>
        <Property name="sound" type="string" optional="1"/>
        <Property name="stopSound" type="string" optional="1"/>
      </Table>

      <Table name="SteeringWheel" id="idActionSteeringWheel" optional="1">
        <Property name="vehicleAnimation" type="string" optional="1"/>

        <Table name="Car" id="idActionSteeringWheelCar" optional="1">
          <Property name="wheelRotationMax" type="float"/>
        </Table>
        <Table name="Actions" id="idActionSteeringWheelActions" optional="1">
          <Property name="anglesMax" type="Vec3"/>
          <Property name="steeringForce" type="float" optional="1"/>
          <Property name="steeringRelaxMult" type="float" optional="1"/>
        </Table>
      </Table>

      <Table name="Weapons" id="idActionWeapon" optional="1">
        <Property name="isSecondary" type="bool" optional="1"/>
        <Property name="disablesShootToCrosshair" type="bool" optional="1"/>
        <Property name="useWeaponDirection" type="bool" optional="1" />

        <Array name="Weapons" elementName="Weapon">
          <Property name="class" type="string">
            <Enum restrictive="0">
              <Value>TankCannon</Value>
              <Value>AsianCoaxialGun</Value>
              <Value>VehicleShiTenV2</Value>
            </Enum>
          </Property>
          <Array name="Helpers" type="string" elementName="Helper" list="Helper" extendable="1" desc="One or more firing positions"/>
          <Property name="part" type="string" list="Part" optional="1" desc="Part which this weapon is attached to" />
          <Property name="inheritVelocity" type="bool" optional="1" desc="If false, projectile won't inherit vehicle velocity"/>
          <Array name="Actions" elementName="Action" extendable="1" optional="1">
            <Property name="name" type="string"/>
            <Array name="Animations" elementName="Animation" extendable="1">
              <Property name="name" type="string"/>
            </Array>
          </Array>
        </Array>
      </Table>
    </Array>

    <Table name="Transitions" optional="1">
      <Array name="WaitFor" elementName="Seat" type="string" extendable="1" optional="1"/>
    </Table>

    <Table name="Animations" optional="1">
      <Property name="idle" type="string" optional="1"/>
      <Property name="death" type="string" optional="1"/>
      <Property name="enter" type="string" optional="1"/>
      <Property name="exit" type="string" optional="1"/>
    </Table>

    <Table name="Sounds" optional="1">
      <Property name="enter" type="string" optional="1"/>
      <Property name="exit" type="string" optional="1"/>
      <Property name="inout" type="float" optional="1" min="0" max="1" desc="in-out param for run sounds"/>
      <Property name="mood" type="float" optional="1" min="0" max="1" desc="soundmood param"/>
    </Table>
  </Array>

  <Array name="SeatGroups" elementName="SeatGroup" id="idSeatGroups" optional="1">
    <Property name="name" type="string"/>
    <Property name="keepEngineWarm" type="bool" optional="1"/>
    <Array name="Seats" elementName="Seat" type="string" extendable="1"/>
  </Array>

Movement Params


  <Table name="MovementParams" optional="1">

    <Table name="StdWheeled" optional="1" id="idStdWheeled">
      <Property name="steerMax" type="float" desc="[deprecated]" optional="1"/>
      <Property name="vMaxSteerMax" type="float" desc="Speed where steering angle is reduced by full kvSteerMax"/>
      <Property name="steerSpeed" type="float" min="0" max="1000" desc="Turn speed for wheels at vMax"/>
      <Property name="steerSpeedMin" type="float" min="0" max="1000" desc="Initial turn speed for wheels"/>
      <Property name="steerSpeedScale" type="float" desc="[deprecated]"/>
      <Property name="steerSpeedScaleMin" type="float" desc="[deprecated]"/>
      <Property name="v0SteerMax" type="float" desc="Max steering angle for wheels"/>
      <Property name="kvSteerMax" type="float" desc="Steering angle gets reduced by this amount"/>
      <Property name="steerRelaxation" type="float" desc="Relaxation speed" min="0" max="1000"/>
      <Property name="pedalLimitMax" type="float" desc="Additional pedal limitation at maximum steer"/>
      <Property name="engineIgnitionTime" type="float" desc="" optional="1"/>
      <Property name="isBreakingOnIdle" type="bool" optional="1"/>
      <Property name="rpmInterpSpeed" type="float" optional="1" desc="speed for RPM interpolation"/>
      <Property name="rpmRelaxSpeed" type="float" optional="1" desc="speed for RPM relaxing to idle"/>
      <Property name="rpmGearShiftSpeed" type="float" optional="1" desc="speed for RPM relaxing during gearshifts"/>

      <Table name="Wheeled" optional="1" id="idWheeled">
        <Property name="axleFriction" type="int" min="0" max="10000" desc="Torque caused by internal friction in axle and gearbox, during driving"/>
        <Property name="axleFrictionMax" type="int" min="0" max="10000" desc="Torque caused by internal friction in axle and gearbox, during idle" optional="1"/>
        <Property name="brakeTorque" type="int" min="0" max="40000" desc="Torque used when pedal is applied in reverse direction"/>
        <Property name="brakeImpulse" type="float" min="0" max="10000" desc="Impulse applied when pedal is applied in reverse direction" optional="1"/>
        <Property name="clutchSpeed" type="float" min="0" max="10" desc="Speed for clutch releasing"/>
        <Property name="damping" type="float" min="0" max="0.5" desc="Overall damping in physics, 0 or very small usually"/>
        <Property name="engineIdleRPM" type="int" min="0" max="10000" desc="RPM when engine is idle"/>
        <Property name="engineMaxRPM" type="int" min="0" max="10000" desc="Maximum engine RPM"/>
        <Property name="engineMinRPM" type="int" min="0" max="10000" desc="Minimum engine RPM before engine stalls"/>
        <Property name="enginePower" type="int" min="0" max="10000" desc="Power in kW"/>
        <Property name="engineShiftDownRPM" type="int" min="0" max="10000" desc="Highest RPM where engine can shift down"/>
        <Property name="engineShiftUpRPM" type="int" min="0" max="10000" desc="Smallest RPM where engine can shift up"/>
        <Property name="engineStartRPM" type="int" min="0" max="10000" desc="RPM after engine started"/>
        <Property name="stabilizer" type="float" min="0" max="10" desc="Multiplier for suspension force when opposite susps have different lengths"/>
        <Property name="stabiMin" type="float" min="0" max="10" desc="Stabi at 0 speed" optional="1"/>
        <Property name="stabiMax" type="float" min="0" max="10" desc="Stabi at max speed" optional="1"/>
        <Property name="minBrakingFriction" type="float" min="0" max="10" desc="Minimum friction during handbrakes" optional="1"/>
        <Property name="maxBrakingFriction" type="float" min="0" max="10" desc="Maximum friction during handbrakes" optional="1"/>
        <Property name="maxSteer" type="float" min="0" max="1.57" desc="Maximum steering angle in radians"/>
        <Property name="maxSpeed" type="float" min="0" max="100" desc="Approximated maximum speed" optional="1"/>
        <Property name="maxTimeStep" type="float" min="0" max="0.1" desc="Max timestep that the entity is allowed to make"/>
        <Property name="minEnergy" type="float" min="0" max="10" desc="Minimum energy before the entity can be put asleep"/>
        <Property name="slipThreshold" type="float" min="0" max="1" desc="Ratio at which wheels are considered slipping"/>
        <Property name="suspDampingMin" type="float" min="-2" max="10000" desc="Suspension damping at zero speed" optional="1"/>
        <Property name="suspDampingMax" type="float" min="-2" max="10000" desc="Suspension damping at max speed" optional="1"/>
        <Property name="suspDampingMaxSpeed" type="float" min="0" max="150" desc="Max speed for susp damping increasing" optional="1"/>
        <Property name="gearDirSwitchRPM" type="int" min="0" max="10000" desc="Maximum wheel rpm at which gear direction can be changed"/>
        <Property name="dynFriction" type="float" min="0" max="10" desc="Multiplier for dynamic friction"/>
        <Property name="steerTrackNeutralTurn"  type="float" optional="1" min="0" max="1.57" desc="Neutral turn steering angle for tanks, should be same as maxSteer currently" />
        <Property name="pullTilt" type="float" optional="1" min="-90" max="90" desc="Angle that driving force is tilted downwards" />
        <Property name="latFriction" type="float" optional="1" min="0" max="5" desc="Lateral friction multiplier" />        
        <Property name="maxGear" type="int" optional="1" min="0" max="100" desc="Max forward gear to use" />        

        <Array name="gearRatios" type="float" extendable="1" elementName="gearRatio" min="-100" max="100" desc="Gear ratios. 1 backward, 2 neutral, 3 to n forward"/>
      </Table>

      <Table name="SoundParams" id="idSoundParams" optional="1">
        <Property name="eventGroup" type="string" optional="1" desc="Name of sound event group to use. Default is entity class name"/>
        <Property name="engineSoundPosition" type="string" list="Helper" desc="position used to emit the engine sound"/>
        <Property name="runSoundDelay" type="float" min="0" max="10" desc="Delay for start of run/ambient sound"/>
        <Property name="rpmPitchSpeed" type="float" min="0" max="5" desc="Speed for rpm interpolation, usually used with pedal" optional="1"/>
        <Property name="roadBumpMinSusp" type="float" min="0" max="100" desc="Threshold in suspension compression for bump sounds" optional="1"/>
        <Property name="roadBumpMinSpeed" type="float" min="0" max="100" desc="Vehicle min speed for bump sounds" optional="1"/>
        <Property name="roadBumpIntensity" type="float" min="0" max="10" desc="sound param" optional="1"/>
        <Property name="maxSlipSpeed" type="float" min="0" max="100" desc="max slip speed for slip sound" optional="1"/>
        <Property name="airbrake" type="float" min="0" max="10" desc="braking time threshold for airbrake sound" optional="1"/>
      </Table>

      <Table name="Animations" id="idMovementAnimations" optional="1">
        <Property name="engine" type="string"/>
      </Table>

      <Table name="Boost" id="idBoost" optional="1">
        <Property name="endurance" type="float" optional="1"/>
        <Property name="regeneration" type="float" optional="1"/>
        <Property name="strength" type="float" optional="1"/>
      </Table>

      <Table name="AirDamp" id="idAirDamp" optional="1">
        <Property name="dampAngle" type="Vec3" min="0" max="10" desc="Angle correction when in midair" optional="1"/>
        <Property name="dampAngVel" type="Vec3" min="0" max="10" desc="Angular velocity damping when in midair" optional="1"/>
      </Table>

      <Table name="Eject" id="idEject" optional="1">
        <Property name="maxTippingAngle" type="float" min="0" max="180" desc="Vehicle angle at which players are ejected (0 = don't eject)"/>
        <Property name="timer" type="float" min="0" desc="Time vehicle has to be at that angle before ejecting players"/>
      </Table>
    </Table>

    <Table name="ArcadeWheeled" optional="1" id="idArcadeWheeled">
      <Property name="steerSpeed" type="float" desc="Steer speed at vMaxSteerMax" optional="1"/>
      <Property name="steerSpeedMin" type="float" desc="Steer speed at v=0" optional="1"/>
      <Property name="steerSpeedScale" type="float" desc="Scale for sens at vMaxSteerMax" optional="1"/>
      <Property name="steerSpeedScaleMin" type="float" desc="Scale for sens at zero vel" optional="1"/>
      <Property name="kvSteerMax" type="float" desc="Reduces steer max at vMaxSteerMax" optional="1"/>
      <Property name="v0SteerMax" type="float" desc="Max steering angle in deg at v=0" optional="1"/>
      <Property name="steerRelaxation" type="float" desc="Relaxation speed to center in degrees" optional="1"/>
      <Property name="vMaxSteerMax" type="float" desc="Speed at which entire kvSteerMax is subtracted from v0SteerMax" optional="1"/>
      <Property name="pedalLimitMax" type="float" desc="At vMaxSteerMax pedal is clamped to 1-pedalLimitMax" optional="1"/>
      <Property name="rpmRelaxSpeed" type="float" desc="speed for RPM relaxing to idle"/>
      <Property name="rpmInterpSpeed" type="float" desc="speed for RPM interpolation"/>
      <Property name="rpmGearShiftSpeed" type="float" desc="speed for RPM relaxing during gearshifts"/>

      <Table name="Handling">
        <Table name="Power">
          <Property name="acceleration" type="float" desc="Acceleration"/>
          <Property name="decceleration" type="float" desc="Deceleration"/>
          <Property name="topSpeed" type="float" desc="Top speed"/>
          <Property name="reverseSpeed" type="float" desc="Reversing speed"/>
        </Table>

        <Table name="WheelSpin" optional="1" >
          <Property name="grip1" type="float" desc="grip fraction when at zero slip speed (set this to less than 1.0)" optional="1"/>
          <Property name="grip2" type="float" desc="grip fraction when at high slip speed (usally 1.0, you should have grip2 > grip1)" optional="1"/>
          <Property name="gripRecoverSpeed" type="float" desc="the exponential slip speed needed to go from grip1 to grip2" optional="1"/>
          <Property name="accelMultiplier1" type="float" desc="Acceleration multiplier at zero speed (make > 1.0 for wheel spin)" optional="1"/>
          <Property name="accelMultiplier2" type="float" desc="Acceleration multiplier at top speed (should make this is less than 1.0)" optional="1"/>
        </Table>

        <Table name="HandBrake">
          <Property name="decceleration" type="float" desc="Deceleration when hand brake is applied"/>
          <Property name="deccelerationPowerLock" type="float" desc=""/>
          <Property name="lockBack" type="bool" desc=""/>
          <Property name="lockFront" type="bool" desc=""/>
          <Property name="frontFrictionScale" type="float" desc=""/>
          <Property name="backFrictionScale" type="float" desc=""/>
          <Property name="angCorrectionScale" type="float" desc=""/>
          <Property name="latCorrectionScale" type="float" desc="" optional="1"/>
        </Table>
        <Table name="SpeedReduction">
          <Property name="reductionAmount" type="float" desc=""/>
          <Property name="reductionRate" type="float" desc=""/>
        </Table>
        <Table name="Friction">
          <Property name="back" type="float" desc=""/>
          <Property name="front" type="float" desc=""/>
          <Property name="offset" type="float" desc=""/>
        </Table>
        <Table name="Correction">
          <Property name="lateralSpring" type="float" desc=""/>
          <Property name="angSpring" type="float" desc=""/>
        </Table>
        <Table name="Compression">
          <Property name="frictionBoost" type="float" desc=""/>
          <Property name="frictionBoostHandBrake" type="float" desc=""/>
        </Table>
        <Table name="Steering" optional="1">
        </Table>
        <Table name="Inertia" optional="1">
          <Property name="radius" type="float" desc=""/>
        </Table>
        <Table name="PowerSlide" optional="1">
          <Property name="handBrakeDeadTime" type="float" desc=""/>
        </Table>
      </Table>

      <Table name="FakeGears" optional="1">
        <Property name="minChangeUpTime" type="float" min="0.3" max="100" desc="The min. time that must be spent in a gear before allowed to change up"/>
        <Property name="minChangeDownTime" type="float" min="0.3" max="100" desc="The min. time that must be spent in a gear before allowed to change down"/>
        <Array name="Ratios" type="float" extendable="1" elementName="Ratio" min="0.1" max="1" desc="Gear ratios, specified as a fraction of the top speed (No need to specify reverse and neutral)"/>
      </Table>

      <Table name="WheeledLegacy" optional="1" id="idWheeledLegacy">
        <Property name="damping" type="float" min="0" max="0.5" desc="Overall damping in physics, 0 or very small usually"/>
        <Property name="engineIdleRPM" type="int" min="0" max="10000" desc="RPM when engine is idle"/>
        <Property name="engineMaxRPM" type="int" min="0" max="10000" desc="Maximum engine RPM"/>
        <Property name="engineMinRPM" type="int" min="0" max="10000" desc="Minimum engine RPM before engine stalls"/>
        <Property name="stabilizer" type="float" min="0" max="10" desc="Multiplier for suspension force when opposite susps have different lengths"/>
        <Property name="stabiMin" type="float" min="0" max="10" desc="Stabi at 0 speed" optional="1"/>
        <Property name="stabiMax" type="float" min="0" max="10" desc="Stabi at max speed" optional="1"/>
        <Property name="maxTimeStep" type="float" min="0" max="0.1" desc="Max timestep that the entity is allowed to make"/>
        <Property name="minEnergy" type="float" min="0"  max="10" desc="Minimum energy before the entity can be put asleep"/>
        <Property name="suspDampingMin" type="float" min="-2" max="10000" desc="Suspension damping at zero speed" optional="1"/>
        <Property name="suspDampingMax" type="float" min="-2" max="10000" desc="Suspension damping at max speed" optional="1"/>
        <Property name="suspDampingMaxSpeed" type="float" min="0" max="150" desc="Max speed for susp damping increasing" optional="1"/>
      </Table>

      <Use id="idBoost" optional="1"/>
      <Use id="idAirDamp" optional="1"/>
      <Use id="idEject" optional="1"/>
      <Use id="idSoundParams" optional="1"/>
    </Table>

    <Table name="StdBoat" optional="1" id="idStdBoat">
      <Property name="velMax" type="float" min="0" max="100" desc="Maximum speed"/>
      <Property name="velMaxReverse" type="float" min="0"  max="100" desc="Maximum reverse speed" optional="1"/>
      <Property name="velLift" type="float" min="0" max="100" desc="Speed threshold for lifting" optional="1"/>
      <Property name="liftDensity" type="float" min="0" max="1000" desc="Water density for lifting" optional="1"/>
      <Property name="pedalLimitReverse" type="float" min="0" max="1" desc="Pedal limit for reverse driving" optional="1"/>
      <Property name="acceleration" type="float" min="0" max="50" desc="Acceleration"/>
      <Property name="accelerationVelMax" type="float" min="0" max="1" desc="Remaining fraction of accel at velMax"/>
      <Property name="accelerationMultiplier" type="float" min="0" max="10" desc="Multiplier for accelerating to opposite of current moving direction"/>
      <Property name="pushHelper" type="string" desc="Position where driving force is applied, should be approx. at screw position"/>
      <Property name="pushTilt" type="float" min="-90" max="90" desc="Optional force tilt angle (around x-axis)"/>
      <Property name="turnRateMax" type="float" min="0" max="50" desc="Max turning rate"/>
      <Property name="turnAccel" type="float" min="0" max="50" desc="Turning acceleration"/>
      <Property name="turnVelocityMult" type="float" min="0" max="10" desc="Velocity-dependent multiplier for turn momentum" optional="1"/>
      <Property name="turnAccelMultiplier" type="float" min="0" max="10" desc="Multiplier for turning to opposite of current turning direction"/>
      <Property name="turnDamping" type="float" min="0" max="50" desc="Damping for turn movement when no steering applied"/>
      <Property name="cornerForce" type="float" min="0" max="50" desc="Amount of steering force"/>
      <Property name="cornerHelper" type="string" desc="Position of steering force application"/>
      <Property name="cornerTilt" type="float" min="-90" max="90" desc="Optional tilt angle for steering force" optional="1"/>
      <Property name="waveIdleStrength" type="Vec3" desc="Multiplier for idle wave strength"/>
      <Property name="waveSpeedMult" type="float" desc="" optional ="1"/>
      <Property name="lateralDamping" type="float" desc="Amount of lateral damping to apply" optional ="1"/>
      <Property name="rollAccel" type="float" desc="" optional="1"/>
      <Property name="waveEffect" type="string" desc="Wave Effect when hitting the water surface" optional="1"/>
      <Use id="idSoundParams" optional="1"/>
      <Use id="idMovementAnimations" optional="1"/>
      <Use id="idBoost" optional="1"/>
      <Use id="idAirDamp" optional="1"/>
    </Table>

    <Table name="Hovercraft" optional="1" id="idHovercraft">
      <Property name="hoverHeight" type="float" min="0" max="10" desc="Desired hover height over ground"/>
      <Property name="hoverVariance" type="float" min="0" max="1" desc="Variance in hovering height (0: none, 1:full height)"/>
      <Property name="hoverFrequency" type="float" min="0" max="10" desc="Frequency for hover height changing"/>
      <Property name="numThrusters" type="int" min="1" max="9" desc="Number of thrusters: 1, 4, 5, 8 or 9"/>
      <Property name="thrusterBottomOffset" type="float" min="0" max="10" desc="Optional offset for thruster positions, starting from bottom edge of mass part"/>
      <Property name="thrusterMaxHeightCoeff" type="float" min="0" max="5" desc="Max height of thruster effect (multiplied by hoverHeight)"/>
      <Property name="stiffness" type="float" min="0" max="10" desc="Thruster stiffness"/>
      <Property name="damping" type="float" min="0" max="10" desc="Thruster damping"/>
      <Property name="dampingLimit" type="float" min="0" max="10" desc="Upper limit for damping coefficient"/>
      <Property name="thrusterTilt" type="float" min="-90" max="90" desc="Angle of thruster tilt towards ground. 0 means vertical."/>
      <Property name="velMax" type="float" min="0" max="100" desc="Maximum speed"/>
      <Property name="velMaxReverse" type="float" min="0" max="100" desc="Maximum reverse speed" optional="1"/>
      <Property name="acceleration" type="float" min="0" max="50" desc="Acceleration"/>
      <Property name="accelerationMultiplier" type="float" min="0" max="10" desc="Multiplier for accelerating to opposite of current moving direction"/>
      <Property name="pushOffset" type="Vec3" desc="Position where driving force is applied, should be approx. at propeller position"/>
      <Property name="pushTilt" type="float" min="-90" max="90" desc="Optional force tilt angle (around x-axis)"/>
      <Property name="linearDamping" type="float" min="0" max="50" desc="Damping for linear movement when no pedal applied"/>
      <Property name="turnRateMax" type="float" min="0" max="50" desc="Max turning rate"/>
      <Property name="turnRateReverse" type="float" min="0" max="50" desc="Max turning rate when driving reverse" optional="1"/>
      <Property name="turnAccel" type="float" min="0" max="50" desc="Turning acceleration"/>
      <Property name="turnAccelMultiplier" type="float" min="0" max="10" desc="Multiplier for turning to opposite of current turning direction"/>
      <Property name="turnDamping" type="float" min="0" max="50" desc="Damping for turn movement when no steering applied"/>
      <Property name="cornerForce" type="float" min="0" max="50" desc="Amount of steering force"/>
      <Property name="cornerOffset" type="Vec3" desc="Position of steering force application"/>
      <Property name="cornerTilt" type="float" min="-90" max="90" desc="Optional tilt angle for steering force"/>
      <Property name="sampleByHelpers" type="bool" desc="Use helpers for height sampling"/>
      <Property name="thrusterHeightAdaption" type="float" min="0" max="10" desc="Max adaptive height for thrusters, default 0 means off. Must be less than hoverHeight"/>
      <Property name="rayLength" type="float" min="0" max="20" desc="Ray length" optional="1"/>
      <Property name="thrusterUpdate" type="float" min="0" max="1" desc="Thruster update interval" optional="1"/>
      <Property name="bEngineAlwaysOn" type="bool" optional="1"/>
      <Array name="Thrusters" elementName="Thruster" optional="1" extendable="1">
        <Property name="helper" type="string"/>
        <Property name="hoverVariance" type="float" min="-1" max="1"/>
        <Property name="heightAdaption" type="float" min="-1" max="10"/>
        <Property name="hoverHeight" type="float" min="-1" max="10"/>
        <Property name="pushing" type="bool" optional="1"/>
        <Property name="cylinder" type="float" min="0" max="10" optional="1" desc="Cylinder radius"/>
      </Array>
      <Use id="idSoundParams" optional="1"/>
      <Use id="idMovementAnimations" optional="1"/>
      <Use id="idBoost" optional="1"/>
      <Use id="idAirDamp" optional="1"/>
    </Table>
    <Table name="Helicopter" id="idHelicopterMovementParams" optional="1">
      <Property name="engineWarmupDelay" type="float" desc="" optional="1"/>
      <Property name="engineIgnitionTime" type="float" desc="" optional="1"/>
      <Property name="enginePowerMax" type="float" min="0" max="100" desc="Arbitrary(?) scaling for the engine power"/>
      <Property name="rotationDamping" type="float" min="0" max="1000" desc="Angular damping - should be large to simulate the gyroscopic damping"/>
      <Property name="altitudeMax" type="float" min="-10000" max="10000" desc="Maximum height"/>
      <Property name="rotorDiskTiltScale" type="float" min="0" max="1" desc="How much the rotor disc tilts with control inputs"/>
      <Property name="pitchResponsiveness" type="float" min="0" max="1000" desc="Scaling to convert control input to pitch torque"/>
      <Property name="rollResponsiveness" type="float" min="0" max="1000" desc="Scaling to convert control input to roll torque"/>
      <Property name="yawResponsiveness" type="float" min="0" max="1000" desc="Scaling to convert control input to yaw torque"/>
      <Property name="maxYawRate" type="float" min="0" max="10" desc="Max yaw rate in radians/second (High level controller)"/>
      <Property name="maxFwdSpeed" type="float" min="0" max="100" desc="Max forward speed in m/s"/>
      <Property name="maxLeftSpeed" type="float" min="0" max="100" desc="Max sideways (strafe) speed in m/s"/>
      <Property name="maxSpeed" type="float" min="0" max="100" desc="Approximated maximum speed" optional="1"/>
      <Property name="maxUpSpeed" type="float" min="0" max="100" desc="Max ascent/descent rate"/>
      <Property name="basicSpeedFraction" type="float" min="0" max="1" desc="Multiplier for normal movement - sprinting is 1"/>
      <Property name="yawDecreaseWithSpeed" type="float" min="0" max="100" desc="Reduce the turning abililty as we get faster"/>
      <Property name="tiltPerVelDifference" type="float" min="0" max="10" desc="Require a tilt angle (radians) of this per m/s desired movement"/>
      <Property name="maxTiltAngle" type="float" min="0" max="1.57" desc="Maximum angle the high-level controller will try to tilt"/>
      <Property name="maxRollAngle" type="float" desc="Maximum roll angle possible for the player"/>
      <Property name="velDamping" type="float" desc="Damping value to damp the helicopter velocity"/>
      <Property name="extraRollForTurn" type="float" min="0" max="10" desc="Fraction of the turning used to generate roll"/>
      <Property name="rollForTurnForce" type="float" min="0" max="10" desc="force at which extraRollForTurn is applied"/>
      <Property name="yawPerRoll" type="float" min="0" max="10" desc="Fraction of the rolling to add to the yaw"/>
      <Property name="pitchActionPerTilt" type="float" min="0" max="100" desc="Control input per pitch change in radians"/>
      <Property name="pitchInputConst" type="float" min="-50" max="50" desc="Player Control input per yaw error"/>
      <Property name="powerInputConst" type="float" min="0" max="10" desc="Control input per altitude error"/>
      <Property name="powerInputDamping" type="float" min="-10" max="10" desc="Damping for altitude control"/>
      <Property name="relaxForce" type="float" desc="force which force back the roll into it's relax angle"/>
      <Property name="yawInputConst" type="float" min="-100" max="100" desc="Control input per yaw error"/>
      <Property name="yawInputDamping" type="float" min="-10" max="10" desc="Damping for yaw control"/>
      <Use id="idSoundParams" optional="1"/>
      <Use id="idMovementAnimations" optional="1"/>
      <Use id="idBoost" optional="1"/>
    </Table>

    <Table name="Tank" optional="1">
      <Property name="pedalSpeed" type="float" min="0" max="20" desc="Speed for pedal value increasing"/>
      <Property name="pedalThreshold" type="float" min="0" max="5" desc="Minimum pedal necessary before it is applied"/>
      <Property name="steerSpeed" type="float" min="0" max="20" desc="Speed for steering value increasing"/>
      <Property name="steerSpeedRelax" type="float" min="0" max="20" desc="Speed for steer relaxation" optional="1"/>
      <Property name="steerLimit" type="float" min="0" max="1" desc="Optional limit for steering" optional="1"/>
      <Property name="latFricMin" type="float" min="0" max="5" desc=""/>
      <Property name="latFricMinSteer" type="float" min="0" max="5" desc=""/>
      <Property name="latFricMax" type="float" min="0" max="5" desc=""/>
      <Property name="latSlipMin" type="float" min="0" max="20" desc=""/>
      <Property name="latSlipMax" type="float" min="0" max="20" desc=""/>
      <Property name="rpmInterpSpeed" type="float" optional="1" desc="speed for RPM interpolation"/>
      <Property name="rpmRelaxSpeed" type="float" optional="1" desc="speed for RPM relaxing to idle"/>
      <Property name="rpmGearShiftSpeed" type="float" optional="1" desc="speed for RPM relaxing during gearshifts"/>
      <Property name="steeringImpulseMin" type="float" optional="1" desc="steer helper impulse at 0 speed"/>
      <Property name="steeringImpulseMax" type="float" optional="1" desc="steer helper impulse at max speed"/>
      <Property name="steeringImpulseRelaxMin" type="float" optional="1" desc="steer damping impulse at 0 speed"/>
      <Property name="steeringImpulseRelaxMax" type="float" optional="1" desc="steer damping impulse at max speed"/>
      <Use id="idWheeled" optional="1"/>
      <Use id="idSoundParams" optional="1"/>
      <Use id="idMovementAnimations" optional="1"/>
      <Use id="idBoost" optional="1"/>
      <Use id="idAirDamp" optional="1"/>
    </Table>

    <Table name="Amphibious" optional="1">
      <Use id="idStdWheeled"/>
      <Use id="idStdBoat"/>
    </Table>

    <Table name="AmphibiousArcade" optional="1">
      <Use id="idArcadeWheeled"/>
      <Use id="idStdBoat"/>
    </Table>

    <Table name="Parachute" optional="1">
    </Table>
  </Table>

Particles


  <Table name="Particles" optional="1">
    <Property name="mfxRow" optional="1" type="string" desc="The rowname to use for environment layer effects in MaterialEffects.xml"/>
    <Table name="Exhaust" optional="1">
      <Array name="Helpers" elementName="Helper" list="Helper" type="string" desc="1 or more helpers where exhaust is spawned" extendable="1"/>
      <Property name="insideWater" type="bool" desc="If true, exhaust is spawned when helper position is inside water"/>
      <Property name="outsideWater" type="bool" desc="If true, exhaust is spawned when helper position is outside water"/>
      <Table name="EngineStart">
        <Property name="effect" type="string" desc="Name of particle effect (e.g. vehicle_fx.exhaust.smoke_start)"/>
      </Table>
      <Table name="EngineStop">
        <Property name="effect" type="string" desc="Name of particle effect (e.g. vehicle_fx.exhaust.smoke_stop)"/>
      </Table>
      <Table name="EngineRunning">
        <Property name="effect" type="string" desc="Name of particle effect (e.g. vehicle_fx.exhaust.smoke_running)"/>
        <Property name="boostEffect" type="string" desc="Additional effect for boost mode"/>
        <Property name="baseSizeScale" type="float" optional="1" min="0" max="5" desc="Base scale applied to the effect"/>

        <Property name="minSpeed" type="float" optional="1" min="0" max="100" desc="Minimum vehicle speed necessary for exhaust spawn"/>
        <Property name="minSpeedSizeScale" type="float" optional="1" min="0" max="5" desc="Size scale multiplier at minimum speed"/>
        <Property name="minSpeedCountScale" type="float" optional="1" min="0" max="5" desc="Count scale multiplier at minimum speed"/>
        <Property name="minSpeedSpeedScale" type="float" optional="1" min="0" max="5" desc="Emitter speed scale multiplier at minimum speed"/>

        <Property name="maxSpeed" type="float" optional="1" min="0" max="100" desc="Maximum vehicle speed allowed for exhaust spawn"/>
        <Property name="maxSpeedSizeScale" type="float" optional="1" min="0" max="5" desc="Size scale multiplier at max speed"/>
        <Property name="maxSpeedCountScale" type="float" optional="1" min="0" max="5" desc="Count scale multiplier at max speed"/>
        <Property name="maxSpeedSpeedScale" type="float" optional="1" min="0" max="5" desc="Emitter speed scale multiplier at max speed"/>

        <Property name="minPower" type="float" optional="1" min="0" max="1" desc="Min power (ie. pedal/load) necessary for spawn"/>
        <Property name="minPowerSizeScale" type="float" optional="1" min="0" max="5" desc="Size scale multiplier at min power"/>
        <Property name="minPowerCountScale" type="float" optional="1" min="0" max="5" desc="Count scale multiplier at min power"/>
        <Property name="minPowerSpeedScale" type="float" optional="1" min="0" max="5" desc="Emitter speed scale multiplier at min power"/>

        <Property name="maxPower" type="float" optional="1" min="0" max="1" desc="Max power (ie. load/pedal) allowed for spawn"/>
        <Property name="maxPowerSizeScale" type="float" optional="1" min="0" max="5" desc="Size scale multiplier at max power"/>
        <Property name="maxPowerCountScale" type="float" optional="1" min="0" max="5" desc="Count scale multiplier at min power"/>
        <Property name="maxPowerSpeedScale" type="float" optional="1" min="0" max="5" desc="Emitter speed scale multiplier at max power"/>

        <Property name="disableWithNegativePower" type="bool" optional="1" desc="Since the power params are applied on an absolute power value, this option can be used to turn off the exhaust when used with negative power value"/>
      </Table>
    </Table>

    <Array name="DamageEffects" elementName="DamageEffect" extendable="1" optional="1">
      <Property name="name" type="string"/>
      <Property name="helper" type="string" list="Helper"/>
      <Property name="effect" type="string"/>
      <Property name="scaleMax" type="float" optional="1"/>
      <Property name="gravityDirection" type="Vec3" optional="1"/>
      <Property name="pulsePeriod" type="float" optional="1"/>
    </Array>

    <Array name="EnvironmentLayers" elementName="EnvironmentLayer" optional="1" extendable="1">
      <Property name="name" type="string" optional="1" desc="Optional layer name">
        <Enum restrictive="0">
          <Value>slip</Value>
          <Value>spray</Value>
          <Value>rims</Value>
        </Enum>
      </Property>
      <Property name="active" type="bool" optional="1" desc="Initial active state" />
      <Property type="float" name="minSpeed" min="0" max="100" desc="Minimum driving speed" />      
      <Property type="float" name="minSpeedSizeScale" min="0" max="5" desc="Size scale at min speed" />
      <Property type="float" name="minSpeedCountScale" min="0" max="5" desc="Count scale at min speed" />
      <Property type="float" name="minSpeedSpeedScale" min="0" max="5" optional="1" desc="Emitter speed scale at min speed" />
      <Property type="float" name="maxSpeed" min="0" max="100" desc="Speed at which particle scale reaches maxSpeed scale parameters" />
      <Property type="float" name="maxSpeedSizeScale" min="0" max="5" desc="Size scale at max speed" />
      <Property type="float" name="maxSpeedCountScale" min="0" max="5" desc="Count scale at max speed" />
      <Property type="float" name="maxSpeedSpeedScale" min="0" max="5" optional="1" desc="Emitter speed scale at max speed" />
      <Property type="float" name="minPowerSizeScale"  min="0" max="5" optional="1" desc="Size scale multiplier at min power"/>
      <Property type="float" name="minPowerCountScale" min="0" max="5" optional="1" desc="Count scale multiplier at min power"/>
      <Property type="float" name="minPowerSpeedScale" min="0" max="5" optional="1" desc="Emitter speed scale multiplier at min power"/>
      <Property type="float" name="maxPowerSizeScale"  min="0" max="5" optional="1" desc="Size scale multiplier at max power"/> 
      <Property type="float" name="maxPowerCountScale" min="0" max="5" optional="1" desc="Count scale multiplier at max power"/>
      <Property type="float" name="maxPowerSpeedScale" min="0" max="5" optional="1" desc="Emitter speed scale multiplier at max power"/>

      <Table name="Alignment">
        <Property type="float" name="alignGroundHeight" optional="1" min="0" max="100" desc="If this is greater 0, the effect will align to the terrain (and water) and spawn up to the specified height" />
        <Property type="float" name="maxHeightSizeScale" min="0" max="5"/>
        <Property type="float" name="maxHeightCountScale" min="0" max="5"/>
        <Property type="bool" name="alignToWater" desc="If true, effect will always be spawned at water level"/>
      </Table>

      <Array name="Emitters" elementName="Helper" list="Helper" type="string" extendable="1" desc="Each helper specifies one emitter position. Note that WheelGroups overwrite this, and ground-aligned effect always use entity center."/>

      <Table name="Splashes" optional="1">
        <Property type="string" name="effect" desc="Effect for boat water splashes"/>
      </Table>

      <Table name="Wheels" optional="1">
        <Property name="all" type="bool" optional="1" desc="Generate groups for all wheels"/>
        <Property name="allActive" type="bool" optional="1" desc="Initial active state for all WheelGroups"/>
        <Array name="WheelGroups" elementName="WheelGroup" optional="1" extendable="1" desc="A group can contain 1 or more wheel indices. Each group receives 1 emitter.">
          <Array name="Wheels" elementName="Wheel" type="int" extendable="1"/>
        </Array>
      </Table>
    </Array>
  </Table>

Animations


  <Array name="Animations" elementName="Animation" optional="1">
    <Property name="name" type="string"/>
    <Property name="part" type="string"/>

    <Array name="States" elementName="State" optional="0" extendable="1">
      <Property name="name" type="string"/>
      <Property name="animation" type="string"/>
      <Property name="sound" type="string" optional="1"/>
      <Property name="soundHelper" type="string" optional="1"/>
      <Property name="isLooped" type="bool"/>
      <Property name="isLoopedEx" type="bool" optional="1"/>
      <Property name="speedDefault" type="float"/>
      <Property name="speedMin" type="float" optional="1" />
      <Property name="speedMax" type="float" optional="1" />


      <Array name="Materials" elementName="Material" optional="1" extendable="1">
        <Property name="name" type="string"/>
        <Property name="setting" type="string"/>
        <Property name="invertValue" type="bool"/>
      </Array>
    </Array>
  </Array>

Inventory


  <Table name="Inventory" optional="1">
    <Array name="AmmoTypes" elementName="Ammo">
      <Property name="type" type="string"/>
      <Property name="capacity" type="int"/>
    </Array>
  </Table>

Paints


  <Array name="Paints" elementName="Paint" optional="1">
    <Property name="name" type="string"/>
    <Property name="material" type="string" desc="Material to apply to the vehicle"/>
    <Property name="materialDestroyed" type="string" optional="1" desc="Material to use for the destroyed vehicle" />
  </Array>

Wheelmaster


  <Table name="WheelMaster" optional="1">
    <Use id="idSubPartWheel"/>
  </Table>

Modifications


  <Array name="Modifications" elementName="Modification" optional="1">
    <Property name="name" type="string"/>
    <Property name="parent" type="string" optional="1"/>
    <Array name="Elems" elementName="Elem">
      <Property name="idRef" type="string"/>
      <Property name="name" type="string"/>
      <Property name="value" type="string"/>
    </Array>
  </Array>

  <!-- this element contains references to properties that are needed by veed_defaults.xml in that place
  Todo: maybe find a better solution -->
  <Table name="VeedDefaults" optional="1">
    <!-- Parts -->
    <Use id="idAnimated" optional="1"/>
    <Use id="idSubPart" optional="1"/>
    <Use id="idSubPartWheel" optional="1"/>
    <Use id="idTread" optional="1"/>
    <Use id="idMassBox" optional="1"/>
    <Use id="idEntity" optional="1"/>
    <Use id="idParticleEffect" optional="1"/>
    <Use id="idLight" optional="1"/>
    <!-- DamageBehaviors -->
    <Use id="idEffect" optional="1"/>
    <Use id="idImpulse" optional="1"/>
    <Use id="idMovementNotification" optional="1"/>
    <Use id="idDetachPart" optional="1"/>
    <Use id="idGroup" optional="1"/>
    <Use id="idDestroy" optional="1"/>
    <Use id="idBlowTire" optional="1"/>
    <Use id="idIndicator" optional="1"/>
    <!-- SeatActions -->
    <Use id="idActionSound" optional="1"/>
    <Use id="idActionRotateTurret" optional="1"/>
    <Use id="idActionSteeringWheel" optional="1"/>
    <Use id="idActionWeapon" optional="1"/>
    <Use id="idActionLights" optional="1"/>
    <Use id="idActionPassengerIK" optional="1"/>
  </Table>