Difference between revisions of "Module"

From Kerbal Space Program Wiki
Jump to: navigation, search
(ModuleDeployableSolarPanel)
(ModuleScienceExperiment)
 
(117 intermediate revisions by 19 users not shown)
Line 1: Line 1:
Modules define what specific parts can do.  They are generally calls to C-coded or hard-coded functions that define what functionality these parts have in-game.  If you are a new part designer, modder, engineer, or someone else who makes parts, please check the STOCK modules list '''before''' designing a new module.  Each additional module increases the CPU workload and reduces FPS and Physics.
+
{{TOC|align=right}}
 +
 
 +
== STOCK MODULES ==
 +
Modules define what specific parts can do.  They are generally calls to C-coded or hard-coded functions that define what functionality these parts have in-game.  If you are a new part designer, modder, engineer, or someone else who makes parts, please check the STOCK modules list '''before''' designing a new module.  Each additional module increases the CPU workload and reduces FPS and Physics.  All 0.90 stock modules are now included.
  
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
| name ||names define the module in use and are a general indication of what the module subtype does.  Specific variables are associated with each [module].[name].  For example, the Clamp-O-Tron Docking Port Sr. has the MODULE.name ModuleDockingNode and its' associates variables are [referenceAttachNode] and [nodeType].  Some [MODULE]s share variables with other modules, which can make deciphering their purpose difficult.
+
| name
 +
| names define the module in use and are a general indication of what the module subtype does.  Specific variables are associated with each [module].[name].  For example, the Clamp-O-Tron Docking Port Sr. has the MODULE.name ModuleDockingNode and its' associates variables are [referenceAttachNode] and [nodeType].  Some [MODULE]s share variables with other modules, which can make deciphering their purpose difficult.
 
|}
 
|}
  
== STOCK MODULES ==
+
{|
 +
! explanation
 +
! code examples
 +
|-
 +
|
  
{|
+
=== CModuleFuelLine ===
! explanation !! code examples
+
No known arguments or variables at this time.  This module is used by fuelLine, presumably to specify that it is fuel Transfer enabled.  More research is clearly called for.  This module is new in 0.90.
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = CModuleFuelLine
 +
}
 +
</pre>
 
|-
 
|-
 
|
 
|
=== FlagDecal ===
+
 
 +
=== CModuleLinkedMesh ===
 +
This module is new in 0.90 and is used by fuelLine and strutConnector, presumably to created the variable length connectors between two parts (and add end caps on both sides). 
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| textureQuadName
+
| lineObjName
 
||  
 
||  
* flagTransform  
+
* obj_line
 +
* obj_strut  
 
|| specifies whether there is a flag displayed on the exterior surface of the object.
 
|| specifies whether there is a flag displayed on the exterior surface of the object.
 +
|-
 +
| targetAnchorName
 +
||
 +
* obj_targetAnchor
 +
|| Unknown
 +
|-
 +
| anchorCapName
 +
||
 +
* obj_AnchorCap
 +
|| name of the part on the source part that this part attaches from
 +
|-
 +
| targetCapName
 +
||
 +
* obj_targetCap
 +
|| name of the part on the target part to which this mesh attaches
 +
|-
 
|}
 
|}
 
||
 
||
Line 25: Line 59:
 
MODULE
 
MODULE
 
{
 
{
      name = FlagDecal
+
name = CModuleLinkedMesh
      textureQuadName = flagTransform
+
 +
lineObjName = obj_line
 +
    targetAnchorName = obj_targetAnchor
 +
    anchorCapName = obj_anchorCap
 +
    targetCapName = obj_targetCap
 
}
 
}
 
</pre>
 
</pre>
 
 
|-
 
|-
 +
|
  
|
+
=== CModuleStrut ===
=== FXModuleAnimateThrottle ===
+
This module is new in 0.90 and is used by strutConnector, presumably to indicate that it is a structural support part.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
 +
| linearStrength
 +
||
 +
* 100
 +
* 150
 +
|| the push/pull strength of the strut
 
|-
 
|-
| animationName ||
+
| angularStrength
colorAnimation
+
||
|| specifies the animation to be used
+
* 100
 +
* 150
 +
|| the sheering strength of the strut
 
|-
 
|-
| depondOnEngineState ||
 
* True
 
* False
 
|| specifies whether the animation is dependent on the throttle
 
|-
 
| responseSpeed || 
 
* 0.5
 
|| specifies the rate at which the animation reacts to the change in engine state
 
 
|}
 
|}
 
 
||
 
||
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
      name = FXModuleAnimateThrottle
+
name = CModuleStrut
      animationName = colorAnimation
+
      dependOnEngineState = True
+
linearStrength = 150
      responseSpeed = 0.5
+
angularStrength = 150
 
}
 
}
 +
 
</pre>
 
</pre>
 
|-
 
|-
 
|
 
|
=== FXModuleConstrainPosition ===
+
 
 +
=== FlagDecal ===
 +
Parts with this module have a place for a flag on their sides.  You don't have to turn it on, but this is how it gets there.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
|-
+
| textureQuadName
| matchRotation ||
+
||  
* true
+
* flagTransform  
* false
+
|| specifies whether there is a flag displayed on the exterior surface of the object.
|| unknown  
 
|-
 
| matchPosition ||
 
* true
 
* false
 
|| unknown
 
|-
 
| CONSTRAINFX ||  || unknown
 
|-
 
| targetName ||
 
* Steering
 
* steering
 
|| unknown
 
|-
 
| moversName ||
 
* wheelCollider
 
* steering
 
|| unknown
 
 
|}
 
|}
 
+
||
||  
 
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 +
{
 +
      name = FlagDecal
 +
      textureQuadName = flagTransform
 +
}
 +
</pre>
  
{
+
|-
name = FXModuleConstrainPosition
 
matchRotation = true
 
matchPosition = false
 
CONSTRAINFX
 
{
 
targetName = steering
 
moversName = lateral
 
}
 
  
}
 
</pre>
 
 
|-
 
 
|
 
|
 
+
=== FXModuleAnimateThrottle ===
 
+
Animation for engines and engine bells showing them as they fire up and operate, based on the amount of throttle applied.  See ion Engines for a good example.
=== FXModuleLookAtConstraint ===
 
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
 
|-
 
|-
| CONSTRAINLOOKFX ||   ||  
+
| animationName ||
 +
* colorAnimation
 +
|| specifies the animation to be used
 
|-
 
|-
| targetName || * susp2-1 || No idea
+
| depondOnEngineState ||  
 +
* True
 +
* False
 +
|| specifies whether the animation is dependent on the throttle
 
|-
 
|-
| rotatorsName || * susp2-2 || No idea
+
| responseSpeed ||  
 +
* 0.5
 +
|| specifies the rate at which the animation reacts to the change in engine state
 
|}
 
|}
  
Line 129: Line 148:
 
MODULE
 
MODULE
 
{
 
{
name = FXModuleLookAtConstraint
+
      name = FXModuleAnimateThrottle
CONSTRAINLOOKFX
+
      animationName = colorAnimation
{
+
      dependOnEngineState = True
  targetName = susp2-1
+
      responseSpeed = 0.5
  rotatorsName = susp2-2
 
}
 
CONSTRAINLOOKFX
 
{
 
  targetName = susp2-2
 
  rotatorsName = susp2-1
 
}
 
CONSTRAINLOOKFX
 
{
 
  targetName = susp1-2
 
  rotatorsName = susp1-1
 
}
 
CONSTRAINLOOKFX
 
{
 
  targetName = susp1-1
 
  rotatorsName = susp1-2
 
}
 
 
}
 
}
 
</pre>
 
</pre>
Line 155: Line 157:
 
|
 
|
  
=== KerbalSeat ===
+
=== FXModuleConstrainPosition ===
 +
Copies the rotation and/or position (matchRotation/matchPosition) from targetName to moversName. Used by for example wheels to copy the rotation of the steering part to the wheel collider.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| seatPivotName || seatPivot  ||  Unknown
 
 
|-
 
|-
| ejectDirection || 0,1,0.2 || specifies the direction from which your Kerbal will exit the vehicle. Try to line up with a hatch!
+
| matchRotation ||
|}
+
* true
 
+
* false
||
+
|| Should targetNames rotation be applied to moversName?
<pre>
+
|-
 +
| matchPosition ||
 +
* true
 +
* false
 +
|| Should targetName's position be applied to moversName?
 +
|-
 +
| CONSTRAINFX || {} || unknown
 +
|-
 +
| targetName ||
 +
* Steering
 +
* steering
 +
|| gameObject to copy targetName's world position/rotation of.
 +
|-
 +
| moversName ||
 +
* wheelCollider
 +
* steering
 +
|| gameObject to apply targetName's world position/rotation to.
 +
|}
 +
 
 +
||  
 +
<pre>
 
MODULE
 
MODULE
 
{
 
{
name = KerbalSeat
+
name = FXModuleConstrainPosition
seatPivotName = seatPivot 
+
matchRotation = true
ejectDirection = 0, 1, 0.2
+
matchPosition = false
 +
CONSTRAINFX
 +
{
 +
targetName = steering
 +
moversName = lateral
 +
}
 
}
 
}
 
</pre>
 
</pre>
Line 176: Line 203:
 
|
 
|
  
=== LaunchClamp ===
+
=== FXModuleLookAtConstraint ===
 +
Makes two gameObject "look" at each other, for example in suspensions where the piston must "look" at the cylinder. The gameObjects must be aligned so it rotates around it's local X axis and looks down it's local Z axis.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| trf_towerPivot_name || obj_girdercap  || specifies the model used for the pivot point
 
 
|-
 
|-
| trf_towerStretch_name || obj_girder || specifies the model for the ground to pivot girder 
+
| CONSTRAINLOOKFX || {} ||  
 
|-
 
|-
| trf_anchor_name || obj_ground  || specifies the model for the ground mount point 
+
| targetName ||  
 +
* susp2-1
 +
|| gameObject to target rotatorsName at.
 
|-
 
|-
| trf_animationRoot_name || launchclamp  || specifies the base animation
+
| rotatorsName ||  
|-
+
* susp2-2
| anim_decouple_name || launchclamp  || specifies the animation for the release of the clamp
+
|| gameObject to rotate so that it looks at targetName
 
|}
 
|}
  
Line 195: Line 224:
 
MODULE
 
MODULE
 
{
 
{
    name = LaunchClamp
+
name = FXModuleLookAtConstraint
   
+
  CONSTRAINLOOKFX
  trf_towerPivot_name = obj_girdercap
+
  {
  trf_towerStretch_name = obj_girder
+
  targetName = susp2-1
  trf_anchor_name = obj_ground
+
  rotatorsName = susp2-2
   
+
}
  trf_animationRoot_name = launchclamp
+
CONSTRAINLOOKFX
  anim_decouple_name = launchclamp
+
  {
 +
  targetName = susp2-2
 +
  rotatorsName = susp2-1
 +
}
 +
CONSTRAINLOOKFX
 +
  {
 +
  targetName = susp1-2
 +
  rotatorsName = susp1-1
 +
}
 +
  CONSTRAINLOOKFX
 +
  {
 +
  targetName = susp1-1
 +
  rotatorsName = susp1-2
 +
  }
 
}
 
}
 
</pre>
 
</pre>
Line 208: Line 250:
 
|
 
|
  
=== ModuleAlternator ===
+
=== KerbalSeat ===
Specifies that this part produced a resource, based on the percentage of thrust produced by the engine.
+
This module makes the part have an EXTERIOR seat.
 
 
 
{|class="wikitable"
 
{|class="wikitable"
 +
! variable !! example !! definition
 
|-
 
|-
! variable !! example
+
| seatPivotName
 +
||
 +
* seatPivot 
 +
||  Unknown
 
|-
 
|-
| RESOURCE ||
+
| ejectDirection
{|class="wikitable"
+
||  
|-
+
* 0, 1, 0.2 
! variable !! example !! definition
+
|| specifies the direction from which your Kerbal will exit the vehicle.  Try to line up with a hatch!
|- 
 
| name || ElectricCharge || name of the resource produced
 
|-
 
| rate || 1.0 || rate at which the resource is produced at 100% thrust, expressed in units/second
 
|}
 
 
|}
 
|}
  
Line 230: Line 270:
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleAlternator
+
  name = KerbalSeat
  RESOURCE
+
  seatPivotName = seatPivot 
  {
+
  ejectDirection = 0, 1, 0.2
  name = ElectricCharge
 
  rate = 5.0
 
}
 
 
}
 
}
 
</pre>
 
</pre>
Line 241: Line 278:
 
|
 
|
  
=== ModuleAnchoredDecoupler ===
+
=== LaunchClamp ===
 +
This module enables the part to hold a vessel in suspension on the launch pad. 
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| anchorName || anchor || specifies the name of the anchored part
+
| trf_towerPivot_name ||  
 +
* obj_girdercap  
 +
|| specifies the model used for the pivot point
 
|-
 
|-
| ejectionForce || 450 || dV applied to part upon separation
+
| trf_towerStretch_name ||  
 +
* obj_girder 
 +
|| specifies the model for the ground to pivot girder 
 
|-
 
|-
| explosiveNodeID ||  
+
| trf_anchor_name ||  
* srf
+
* obj_ground 
* top
+
|| specifies the model for the ground mount point 
||   specifies the location of the explosion.
+
|-
 +
| trf_animationRoot_name ||
 +
* launchclamp 
 +
|| specifies the base animation
 +
|-
 +
| anim_decouple_name ||
 +
* launchclamp 
 +
|| specifies the animation for the release of the clamp
 
|}
 
|}
  
Line 259: Line 308:
 
MODULE
 
MODULE
 
{
 
{
     name = ModuleAnchoredDecoupler
+
     name = LaunchClamp
    anchorName = anchor
+
    ejectionForce = 450
+
trf_towerPivot_name = obj_girdercap
  explosiveNodeID = srf
+
trf_towerStretch_name = obj_girder
 +
trf_anchor_name = obj_ground
 +
 +
trf_animationRoot_name = launchclamp
 +
  anim_decouple_name = launchclamp
 
}
 
}
 
</pre>
 
</pre>
Line 268: Line 321:
 
|
 
|
  
=== ModuleAnimateGeneric ===
+
=== ModuleAlternator ===
 +
Specifies that this part produced a resource, based on the percentage of thrust produced by the engine.
 +
{|class="wikitable"
 +
|-
 +
! variable !! example
 +
|-
 +
| RESOURCE ||
 
{|class="wikitable"
 
{|class="wikitable"
 +
|-
 
! variable !! example !! definition
 
! variable !! example !! definition
 +
|- 
 +
| name || ElectricCharge || name of the resource produced
 
|-
 
|-
| animationName ||  
+
| rate || 1.0 || rate at which the resource is produced at 100% thrust, expressed in units/second
* Deploy
+
|}
* CrewCabinLight
 
* dish
 
* dockingring
 
* dockingporthull
 
|| specifies the name of the animation to be used
 
|-
 
| isOneShot || 
 
* false
 
|| specifies whether the animation can occur only once
 
|-
 
| startEventGUIName || Flavor text  || 
 
to describe turning the animation to its 'On' State
 
|-
 
| endEventGUIName || Flavor text  |
 
to describe turning the animation to its 'Off' State
 
|-
 
| actionGUIName || Flavor text  || 
 
to describe switching the animation between it's 'on' and 'off' states
 
|-
 
| allowManualControl ||
 
* '''true'''
 
* false
 
|| specifies whether the part can be manually animated
 
 
|}
 
|}
 
+
||
||  
 
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleAnimateGeneric
+
name = ModuleAlternator
  animationName = dish
+
RESOURCE
  isOneShot = false
+
{
 
+
  name = ElectricCharge
startEventGUIName = Extend
+
  rate = 5.0
endEventGUIName = Retract
+
  }
  actionGUIName = Toggle Antenna
 
 
}
 
}
 
</pre>
 
</pre>
Line 315: Line 352:
 
|
 
|
  
=== ModuleAnimateHeat ===
+
=== ModuleAnchoredDecoupler ===
 +
This module specifies that the part is attached (anchored) to another part, and will decouple from yet a third part, forcing the third part away from it.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
 +
| anchorName ||
 +
* anchor 
 +
|| specifies the name of the anchored part
 
|-
 
|-
| ThermalAnim ||  
+
| ejectionForce ||  
* HeatAnimationEmissiveLiquidEngine3
+
* 450
* HeatAnimationEmissiveTurbofan
+
|| dV applied to part upon separation
* HeatAnimationEmissiveJet
+
|-
* overheat
+
| explosiveNodeID ||
|| animation for applying heat to an object
+
* srf
 +
* top
 +
||   specifies the location of the explosion.
 
|}
 
|}
  
Line 332: Line 375:
 
MODULE
 
MODULE
 
{
 
{
      name = ModuleAnimateHeat
+
    name = ModuleAnchoredDecoupler
      ThermalAnim = HeatAnimatioEmissiveLiquidEngine3
+
    anchorName = anchor
 +
    ejectionForce = 450
 +
explosiveNodeID = srf
 
}
 
}
 
</pre>
 
</pre>
Line 339: Line 384:
 
|
 
|
  
=== ModuleAsteroid ===
+
=== ModuleAnimateGeneric ===
no procedures or calls
+
Generic Animations will be applied to parts with this module. This module is slowly replacing other animation modules as progression is made towards the release version of KSP.
 
 
||
 
<pre>
 
MODULE
 
{
 
  name = ModuleAsteroid
 
}
 
</pre>
 
|-
 
|
 
 
 
=== ModuleCommand ===
 
Applies Command to vessels
 
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| minimumCrew ||  
+
| animationName ||  
* 0
+
* Deploy
* 1
+
* CrewCabinLight
* 2
+
* dish
|| Specifies the minimum number of crew needed to operate this module. 
+
* dockingring
 +
* dockingporthull
 +
|| specifies the name of the animation to be used
 
|-
 
|-
| RESOURCE ||
+
| isOneShot ||  
{|class="wikitable"
+
* false
 +
|| specifies whether the animation can occur only once
 
|-
 
|-
| name || ElectricCharge || This is the name of that resource
+
| startEventGUIName || Flavor text ||  
 +
to describe turning the animation to its 'On' State
 
|-
 
|-
| rate || 15.0 || and the rate in units/second of resource consumed
+
| endEventGUIName || Flavor text  ||  
|}
+
to describe turning the animation to its 'Off' State
|| If this Module requires a resource
 
|}
 
 
 
||
 
<pre>
 
MODULE
 
{
 
name = ModuleCommand
 
minimumCrew = 1
 
}
 
</pre>
 
 
|-
 
|-
|
+
| actionGUIName || Flavor text  ||  
 
+
to describe switching the animation between it's 'on' and 'off' states
=== ModuleControlSurface ===
 
{|class="wikitable"
 
! variable !! example !! definition
 
 
|-
 
|-
 +
| allowManualControl ||
 +
* '''true'''
 +
* false
 +
|| specifies whether the part can be manually animated
 
|-
 
|-
| dragCoeff || * 0.5 ||  
+
| actionAvailable ||  
this value overrides the maximum_drag value
+
* '''true'''
 +
* false
 +
|| ???
 +
|-
 +
| eventAvailableEditor ||
 +
* '''true'''
 +
* false
 +
|| specifies whether the animation can be toggled in the VAB/SPH scene
 +
|-
 +
| eventAvailableFlight ||  
 +
* '''true'''
 +
* false
 +
|| specifies whether the animation can be toggled in the flight scene
 
|-
 
|-
| deflectionLiftCoeff || * 0.7  || specifies the Coefficient of lift for the part
+
| eventAvailableEVA ||  
 +
* '''true'''
 +
* false
 +
|| specifies whether the animation can be toggled by a Kerbal on EVA near the vessel or part containing the animation
 
|-
 
|-
| ctrlSurfaceRange || * 20 || specifies the degrees of operation for the part
+
| evaDistance ||  
 +
* 5
 +
* 10
 +
|| specifies the maximum distance (in meters) from which a Kerbal on EVA can toggle an animation on the part
 
|-
 
|-
| ctrlSurfaceArea || * 0.95 || specifies how much of the part affects lift
 
 
|}
 
|}
  
||
+
||  
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
name = ModuleControlSurface
+
  name = ModuleAnimateGeneric
dragCoeff = 0.5
+
  animationName = dish
  deflectionLiftCoeff = 0.7
+
  isOneShot = false
  ctrlSurfaceRange = 20
+
 
  ctrlSurfaceArea = 0.95
+
  startEventGUIName = Extend
 +
  endEventGUIName = Retract
 +
  actionGUIName = Toggle Antenna
 
}
 
}
 
</pre>
 
</pre>
Line 413: Line 458:
 
|
 
|
  
=== ModuleDataTransmitter ===
+
=== ModuleAnimateHeat ===
 +
This module specifies that heating animation will be applied to this part.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| packetInterval ||
 
* 0.18
 
* 0.4
 
* 0.3 
 
||  Mits per second
 
 
|-
 
|-
| packetSize ||  
+
| ThermalAnim ||  
* 2
+
* HeatAnimationEmissiveLiquidEngine3
||   Mits per packet
+
* HeatAnimationEmissiveTurbofan
 +
* HeatAnimationEmissiveJet
 +
* overheat
 +
|| animation for applying heat to an object
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
      name = ModuleAnimateHeat
 +
      ThermalAnim = HeatAnimatioEmissiveLiquidEngine3
 +
}
 +
</pre>
 
|-
 
|-
| packetResourceCost ||  
+
|
* 20
+
 
* 10
+
=== ModuleAsteroid ===
* 12.5  || Resource per packet
+
Because it has no procedures or calls, is new in [0.90] and only appears on a part that you must hack to have available, it is impossible to say for certain what this module does, but it has something to do with being an asteroid.
|-
+
no procedures or calls
| requiredResource ||
 
* ElectricCharge 
 
|| Required resource (usually ElectricCharge)
 
|-
 
| DeployFxModules ||
 
* 0 
 
|| Deployment
 
|-
 
| ProgressFxModules ||
 
* 1 
 
|| Animations that play while transmitting
 
|}
 
 
 
 
||
 
||
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleDataTransmitter
+
  name = ModuleAsteroid
 
packetInterval = 0.18
 
packetSize = 2
 
 
packetResourceCost = 20.0
 
requiredResource = ElectricCharge
 
 
 
DeployFxModules = 0
 
 
}
 
}
 
</pre>
 
</pre>
Line 463: Line 496:
 
|
 
|
  
=== ModuleDecouple ===
+
=== ModuleCargoBay ===
 +
Allows a [[cargo bay]] to shield its contents from airflow and heat.
 
{|class="wikitable"
 
{|class="wikitable"
! variable !! sample !! definition
+
! variable !! example !! definition
 +
|-
 +
| DeployModuleIndex ||
 +
* 0
 +
* 1
 +
* 2
 +
||  Specifies the index (starting with zero) of the MODULE which controls whether the bay is open or closed.  Said MODULE must implement IScalarModule (e.g. ModuleAnimateGeneric and its descendents, or ModuleAnimatedDecoupler from [https://github.com/Starwaster/AnimatedDecouplers AnimatedDecouplers]).
 +
|-
 +
| closedPosition ||
 +
* 0
 +
* 1
 +
||  Specifies whether the cargo bay is closed by default (0) or open by default (1).
 
|-
 
|-
| isOmniDecoupler ||  
+
| lookupRadius ||  
* true
+
* 1.25
* '''false''' 
+
||  Radius within which the part should search for parts to be shielded.
|| Specifies whether this decoupler separates on both ends or not. Defaults to false.
 
 
|-
 
|-
| ejectionForce || 100 || specifies the DeltaV with which the part separates
+
| lookupCenter ||  
 +
* 0,0.5,0
 +
* 1,0,0
 +
|| Optional (default is 0,0,0).  Specifies the point from which the search is centered.  Rays are cast from here; any parts that are struck are shielded, while the rays stop when the part's own colliders are hit.
 
|-
 
|-
| explosiveNodeID ||  
+
|
 +
* nodeOuterForeID
 +
* nodeOuterAftID
 +
* nodeInnerForeID
 +
* nodeInnerAftID
 +
||  
 
* top
 
* top
* srf 
+
* bottom
|| for non-OmniDecouplers, specifics the Node of separation
+
* top2
 +
* bottom2
 +
|| Optional.  For hollow cargo bay parts without end walls (e.g. [[Mk2 Cargo Bay CRG-04]]), node IDs are given to determine where the cargo bay ends.
 
|}
 
|}
  
Line 484: Line 538:
 
MODULE
 
MODULE
 
{
 
{
name = ModuleDecouple
+
    name = ModuleCargoBay
ejectionForce = 250
+
    DeployModuleIndex = 1
explosiveNodeID = srf
+
    closedPosition = 1
 +
    lookupRadius = 1
 +
 
 +
    nodeOuterForeID = top
 +
    nodeOuterAftID = bottom
 +
    nodeInnerForeID = top2
 +
    nodeInnerAftID = bottom2
 
}
 
}
 
</pre>
 
</pre>
Line 492: Line 552:
 
|
 
|
  
=== ModuleDeployableSolarPanel ===
+
=== ModuleCommand ===
 +
Applies Command to vessels
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| animationName ||  
+
| minimumCrew ||  
* solarpanels
+
* 0
* solarpanels2
+
* 1
* solarpanels4
+
* 2
* altsolarpanelbase
+
||  Specifies the minimum number of crew needed to operate this module.   
* bigsolarpanel
 
||  
 
unknown for sure. Assumed to refer to an animation describing part transformation from its closed state to its open stateknown parameters are:
 
 
|-
 
|-
| sunTracking ||  
+
| RESOURCE ||
* true
+
{|class="wikitable"
* false
 
|| Assumed to indicate whether the animation will turn the panel towards the sun.
 
 
|-
 
|-
| raycastTransformName ||
+
| name || ElectricCharge  || This is the name of that resource
* suncatcher
 
|| optional.  unknown.
 
 
|-
 
|-
| pivotName ||
+
| rate || 15.0 || and the rate in units/second of resource consumed
* suncatcher
+
|}
|| optional. unknown.
+
|| If this Module requires a resource
|-
+
|}
| isBreakable ||
+
 
* true
+
||
* false
+
<pre>
|| Indicates whether the part will break on high-dynamic stress.
+
MODULE
 +
{
 +
name = ModuleCommand
 +
  minimumCrew = 1
 +
}
 +
</pre>
 +
|-
 +
|
 +
 
 +
=== ModuleControlSurface ===
 +
This module gives the part the ability to respond to inputs, generally used for aerodynamic parts to expose more or less effective surface to lift and braking forces in atmospheres.
 +
{|class="wikitable"
 +
! variable !! example !! definition
 +
|-
 +
|-
 +
| dragCoeff || * 0.5 ||  
 +
this value overrides the maximum_drag value
 
|-
 
|-
| resourceName ||
+
| deflectionLiftCoeff || * 0.7  || specifies the Coefficient of lift for the part
* ElectricCharge
 
|| The resource provided by this module.  Any resource may be used, including resources not defined.
 
 
|-
 
|-
| chargeRate ||  
+
| ctrlSurfaceRange || * 20 || specifies the degrees of operation for the part
* 10
 
|| Amount of resource provided per second at 100% output.  Positive values only, please.
 
 
|-
 
|-
| powerCurve ||   ||  
+
| ctrlSurfaceArea || * 0.95 || specifies how much of the part affects lift
powerCurve is a special call consisting of subtypes called [key].  Each [key] uses four numbers to define what it will do at a specific distance from a source.  In the case of solar panels, where powerCurve is typically used, there are typically 4 [key]s.  [powerCurve] defines the rate at which resources are provided relative to the [chargeRate] and distance from the specified source (ie. Kerbol)
 
* 206000000000 0.00 0 0
 
* 013599840256 1.00 0 0
 
* 068773560320 0.50 0 0
 
* 000000000000 10.0 0 0
 
 
|}
 
|}
||  
+
 
<pre>MODULE
+
||
 +
<pre>
 +
MODULE
 
{
 
{
  name = ModuleDeployableSolarPanel
+
  name = ModuleControlSurface
   
+
  dragCoeff = 0.5
animationName = solarpanels2
+
  deflectionLiftCoeff = 0.7
  resourceName = ElectricCharge
+
  ctrlSurfaceRange = 20
  chargeRate = 2
+
  ctrlSurfaceArea = 0.95
  powerCurve
 
  {
 
  key = 206000000000 0 0 0
 
  key = 13599840256 1 0 0
 
  key = 68773560320 0.5 0 0
 
  key = 0 10 0 0
 
  }
 
 
}
 
}
 
</pre>
 
</pre>
Line 558: Line 614:
 
|
 
|
  
=== ModuleDockingNode ===
+
=== ModuleDataTransmitter ===
A module for docking ports
+
This module specifies that the part acts as a transmitter of data, typically an antenna of some sort, for broadcasting science data back to the KSC.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| referenceAttachNode ||  
+
| antennaType ||  
* top
+
* DIRECT
* bottom 
+
* RELAY
||  
+
|| whether the antenna is capable of acting as a relay
Specifies the node on the part that is used for the docking port, generally top or bottom
 
 
|-
 
|-
| deployAnimationController ||
+
| packetInterval ||  
* 1
+
* 0.18
* 0
+
* 0.4
|| Boolean
+
* 0.3 
 +
||  Mits per second
 +
|-
 +
| packetSize ||
 +
* 2
 +
||   Mits per packet
 
|-
 
|-
| nodeType ||  
+
| packetResourceCost ||  
* size1
+
* 20
* size2
+
* 10
* size0
+
* 12.5 
|| Specifies the type of node for attachment.  When perform docking operations, nodes must have the same value for nodeType in order to dock with one another.
+
|| Resource per packet
 
|-
 
|-
| controlTransformName ||  
+
| requiredResource ||  
* controlNode
+
* ElectricCharge 
|| apparently only used for docking nodes that have related animations, see dockingPortInline
+
|| Required resource (usually ElectricCharge)
|}
+
|-
 
+
| DeployFxModules ||
||
+
* 0 
 +
|| Deployment
 +
|-
 +
| ProgressFxModules ||
 +
* 1 
 +
|| Animations that play while transmitting
 +
|}
 +
 
 +
||
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleDockingNode
+
  name = ModuleDataTransmitter
  referenceAttachNode = top
+
 
  nodeType = size2
+
antennaType = DIRECT
 +
packetInterval = 0.18
 +
packetSize = 2
 +
 +
packetResourceCost = 20.0
 +
  requiredResource = ElectricCharge
 +
 
 +
  DeployFxModules = 0
 
}
 
}
 
</pre>
 
</pre>
Line 597: Line 672:
 
|
 
|
  
=== ModuleEngines ===
+
=== ModuleDecouple ===
 +
ModuleDecouple is a slightly upgraded version of ModuleAnchoredDecoupler, and may replace it in the future.  Allows for decouplers that separate from both parts to which it is attached.
 
{|class="wikitable"
 
{|class="wikitable"
! variable !! example !! definition
+
! variable !! sample !! definition
 
|-
 
|-
| thrustVectorTransformName ||  
+
| isOmniDecoupler ||  
* thrustTransform  
+
* true
|| unknown purposeKnown arguments:
+
* '''false'''  
 +
|| Specifies whether this decoupler separates on both ends or notDefaults to false.
 
|-
 
|-
| throttleLocked ||  
+
| ejectionForce
* True
+
||  
* '''False''' 
+
* 100
|| Used to create engines without controllable thrust.
+
|| specifies the DeltaV with which the part separates
 
|-
 
|-
| exhaustDamage ||  
+
| explosiveNodeID ||  
* True
+
* top
* False  
+
* srf  
|| assumed to indicate whether the exhaust from this engine will damage other parts.
+
|| for non-OmniDecouplers, specifics the Node of separation
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = ModuleDecouple
 +
ejectionForce = 250
 +
explosiveNodeID = srf
 +
}
 +
</pre>
 
|-
 
|-
| ignitionThreshold ||  
+
|
* 0.1 
+
 
|| appears to not be usedSuggests a minimum thrust output value, below which the engine will no longer operate.
+
=== ModuleDeployableSolarPanel ===
 +
Solar panels cannot deploy without this module.  May be possible to use for other modules which unfold.  Optionally specifies whether the part will automatically turn to face the sun.  This is one place where you can say how a part breaks.
 +
{|class="wikitable"
 +
! variable !! example !! definition
 +
|-
 +
| animationName |
 +
* solarpanels
 +
* solarpanels2
 +
* solarpanels4
 +
* altsolarpanelbase
 +
* bigsolarpanel
 +
||  
 +
unknown for sure.  Assumed to refer to an animation describing part transformation from its closed state to its open stateknown parameters are:
 
|-
 
|-
| minThrust ||  
+
| sunTracking ||  
* 0
+
* true
* 10
+
* false
* 100
+
|| Indicates whether the animation will turn the panel towards the sun.
|| Minimum thrust value.  Engines will be considered 'off' at or below this value.
 
 
|-
 
|-
| maxThrust ||  
+
| raycastTransformName ||
* 200
+
* suncatcher
* 215
+
|| Specifies the GameObject in Unity with Z+ forward facing the sun that will act as the solar panel.
* 80
 
|| Just like the name implies, this is the maximum thrust a single unit of this module can produce.  In order to create a more powerful engine, set this value higher.
 
 
|-
 
|-
| heatProduction ||  
+
| pivotName ||
*400
+
* suncatcher
*900
+
|| Specifies the object in Unity which will act as the rotation point for the solar panel sun tracking function.
|| a measure of the amount of heat energy produced per second. measured in degrees Kerbius (degrees Celsius)
 
 
|-
 
|-
| fxOffset ||  
+
| isBreakable ||
* 0,0,0
+
* true
* 0,0,1
+
* false
|| 3-dimensional vector coordinates specifying the location of thrust effects
+
|| Indicates whether the part will break on high-dynamic stress.
 
|-
 
|-
| useEngineResponseTime ||  
+
| resourceName ||
* True
+
* ElectricCharge
* False 
+
|| The resource provided by this module.  Any resource may be used, including resources not defined.
||  
 
 
|-
 
|-
| engineAccelerationSpeed ||  
+
| chargeRate ||  
* 0.2
+
* 10
* 0.12
+
|| Amount of resource provided per second at 100% output.  Positive values only, please.
||
 
 
|-
 
|-
| engineDecelerationSpeed ||  
+
| powerCurve ||   || 
* 0.35
+
powerCurve is a special call consisting of subtypes called [key].  Each [key] uses four numbers to define what it will do at a specific distance from a source.  In the case of solar panels, where powerCurve is typically used, there are typically 4 [key]s.  [powerCurve] defines the rate at which resources are provided relative to the [chargeRate] and distance from the specified source (ie. Kerbol)
* 0.21
+
* 206000000000 0.00 0 0
||   
+
* 013599840256 1.00 0 0
 +
* 068773560320 0.50 0 0
 +
* 000000000000 10.0 0 0
 +
|}
 +
||  
 +
<pre>MODULE
 +
{
 +
name = ModuleDeployableSolarPanel
 +
 +
animationName = solarpanels2
 +
resourceName = ElectricCharge
 +
chargeRate = 2
 +
powerCurve
 +
  {
 +
   key = 206000000000 0 0 0
 +
  key = 13599840256 1 0 0
 +
  key = 68773560320 0.5 0 0
 +
  key = 0 10 0 0
 +
  }
 +
}
 +
</pre>
 
|-
 
|-
| allowShutdown ||
+
|
* '''True'''
+
 
* False 
+
=== ModuleDockingNode ===
|| Specifies engines that cannot be turned off, regardless of whether their thrust can be controlled.
+
A module for docking ports
 +
{|class="wikitable"
 +
! variable !! example !! definition
 
|-
 
|-
| useVelocityCurve ||  
+
| referenceAttachNode ||  
* True
+
* top
* False 
+
* bottom
 +
* dockingNode
 
||   
 
||   
 +
Specifies the node on the part that is used for the docking port, generally top or bottom. dockingNode is the name of the GameObject transform in Unity with Z+ forward.
 
|-
 
|-
| PROPELLANT || {}
+
| deployAnimationController ||
|| resource utilized in the operation of this part, generally a fuel or other propellant.  Engines may use multiple propellant types.
+
* 1
 +
* 0
 +
|| Boolean
 
|-
 
|-
| name ||
+
| nodeType ||  
* LiquidFuel
+
* size1
* Oxidizer
+
* size2
|| name of the resource consumed while this part is in operation
+
* size0
 +
|| Specifies the type of node for attachment.  When perform docking operations, nodes must have the same value for nodeType in order to dock with one another.
 
|-
 
|-
| ratio ||  
+
| nodeTransformName ||  
* 0.9
+
* dockingNode
* 1.1
+
* DOCKING
|| rate at which this resource is consumed, per second.  Not to be confused with ratio relative to other propellants.
+
|| unknown
 
|-
 
|-
| DrawGauge ||  
+
| controlTransformName ||  
* true
+
* controlNode
* '''false'''
+
|| apparently only used for docking nodes that have related animations, see dockingPortInline
|| Boolean value that indicates whether or not the 'fuel remaining' indicator in the staging selection is displayed or not.
+
|-
 +
| undockEjectionForce ||
 +
* 0.25
 +
|| Force in d/v applied on undock
 +
|-
 +
| minDistanceToReEngage ||
 +
* 3.5
 +
|| Docking Nodes must separate by this many meters before being able to reengage
 +
|-
 +
| acquireForce ||
 +
* 3.5
 +
|| magnetic grip, in d/v
 +
|-
 +
| acquireTorque ||
 +
* 3.5
 +
|| rotational magnetic grip, in d/v
 +
|-
 +
| acquireRange ||
 +
* 3
 +
|| maximum distance to begin applying magnetic grip
 +
|-
 +
| captureRange ||  
 +
* 1.5
 +
|| maximum range to begin docking
 +
|-
 +
| snapRotation ||
 +
* True
 +
* False
 +
|| specifies whether to enforce docking at multiple rotational offsets rather than a single allowable angle
 +
|-
 +
| snapOffset ||
 +
* 45
 +
* 90
 +
* 120
 +
|| specifies what rotational offsets (in degrees) docking is allowed
 +
|-
 +
| acquireMinRollDot ||
 +
* 0.95
 +
* 0.99999
 +
|| specifies the minimum angular accuracy between docking ports for applying magnetic grip; higher values imply better accuracy
 +
|-
 +
| captureMinRollDot ||
 +
* 0.95
 +
* 0.99999
 +
|| specifies the minimum angular accuracy between docking ports to begin docking; higher values imply better accuracy
 
|-
 
|-
| atmosphereCurve || {}  || specifies variances in operational efficiency
+
| gendered ||  
 +
* True
 +
* False
 +
|| specifies whether to enforce gendered docking; defaults to false (androgynous)
 
|-
 
|-
| key || ||  
+
| genderFemale ||  
uses two values to specify engine efficiency relative to the depth of the atmosphere (based on Kerbin sea-level!)  First number indicates the relative pressure (0 = vacuum, 1 Kerbin sea-level), second numer indicates ISP value).
+
* True
Translates directly to ISP.  In order to make a more efficient engine, set the second number of this array higher. 
+
* False
 +
|| if gendered (see above) is true, this specifies whether the docking port can only docking with another port of the same type but different gender; defaults to true, which means it can only dock with another port with genderFemale=false
 
|-
 
|-
| velocityCurve ||  || 
 
uncertain as to how exactly this works, but appears to control the degree of acceleration at particular velocities.  uses a 4 part key, the first part of the key is definitely specific accelerations, the second part is percentage of velocities.
 
<nowiki>
 
{
 
  key = 0 0.5 0 0
 
  key = 1000 1 0 0
 
  key = 2000 0.5 0 0
 
  key = 2400 0 0 0
 
}
 
</nowiki>
 
<nowiki>
 
{
 
  key = 1000 0 0 0
 
  key = 850 0.2 0 0
 
  key = 0 1 0 0
 
}
 
</nowiki>
 
 
|}
 
|}
  
||  
+
||
 
<pre>
 
<pre>
 
MODULE
 
MODULE
{
+
{
name = ModuleEngines
+
name = ModuleDockingNode
thrustVectorTransform
+
referenceAttachNode = top
Name = thrustTransform
+
nodeType = size2
throttleLocked = True
+
undockEjectionForce = 0.25
exhaustDamage = True
+
minDistanceToReEngage = 3.5
allowShutdown = False
+
acquireForce = 3.5
ignitionThreshold = 0.1
+
acquireTorque = 3.5
minThrust = 0
+
acquireRange = 3.0
maxThrust = 18
+
captureRange = 1.5
heatProduction = 550
+
snapRotation = false
fxOffset = 0, 0, 0.02
 
PROPELLANT
 
{
 
name = SolidFuel       
 
ratio = 1.0
 
DrawGauge = True
 
}
 
atmosphereCurve
 
 
key = 0 100 
 
key = 1 100
 
}
 
 
}
 
}
 
</pre>
 
</pre>
 
|-
 
|-
 
|
 
|
=== ModuleEnginesFX ===
+
 
 +
=== ModuleEngines ===
 +
Everything about your engine, all in one module!
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
 +
| thrustVectorTransformName ||
 +
* thrustTransform 
 +
|| specifies gameObject to be used as point of applied thrust, force is applied in local +Z. standard name is thrustTransform, but it can be anything as long as gameObject in the MU matches thrustVectorTransformName value in module config
 
|-
 
|-
| engineID ||   ||  
+
| throttleLocked ||  
<nowiki>LES, KS25</nowiki>
+
* True
 +
* '''False''' 
 +
|| Used to create engines without controllable thrust.
 
|-
 
|-
| runningEffectName ||   ||  
+
| exhaustDamage ||  
<nowiki> running_closed </nowiki>
+
* True
 +
* False 
 +
|| assumed to indicate whether the exhaust from this engine will damage other parts.
 
|-
 
|-
| thrustVectorTransformName ||   || 
+
| ignitionThreshold ||  
unknown purposeKnown arguments:
+
* 0.1  
* thrustTransform
+
||minimum required resource(s) for engine to start. If engine has less than specified value in resource(s), it will not start. Think of it as if your car needs at least half full tank to start.
* obj_gimbal
 
 
|-
 
|-
| exhaustDamage ||   ||  
+
| minThrust ||  
True or Falseassumed to indicate whether the exhaust from this engine will damage other parts.
+
* 0
 +
* 10
 +
* 100
 +
|| Minimum thrust valueEngines will be considered 'off' at or below this value.
 
|-
 
|-
| throttleLocked ||   ||  
+
| maxThrust ||  
uncertain.  Boolean values of True or FalseAssumed to specify that solid Rocket Boosters cannot have their throttle adjusted while in flight.
+
* 200
 +
* 215
 +
* 80
 +
|| Just like the name implies, this is the maximum thrust a single unit of this module can produceIn order to create a more powerful engine, set this value higher.
 
|-
 
|-
| ignitionThreshold ||   ||  
+
| heatProduction ||  
appears to not be used.  Suggests a minimum thrust output value, below which the engine will no longer operateTypical values are 0.1 (10%)
+
*400
 +
*900
 +
|| a measure of the amount of heat energy produced per secondmeasured in degrees Kerbius (degrees Celsius)
 
|-
 
|-
| minThrust ||   ||  
+
| fxOffset ||  
Minimum thrust value.  Engines will be considered 'off' at or below this value.
+
* 0,0,0
 +
* 0,0,1
 +
|| 3-dimensional vector coordinates specifying the location of thrust effects
 
|-
 
|-
| maxThrust ||   ||  
+
| useEngineResponseTime ||  
Just like the name implies, this is the maximum thrust a single unit of this module can produce.
+
* True
 +
* False 
 +
||  
 
|-
 
|-
| heatProduction ||   ||  
+
| engineAccelerationSpeed ||  
a measure of the amount of heat energy produced per second.  measured in degrees Kerbius (degrees Celsius)
+
* 0.2
 +
* 0.12
 +
||
 
|-
 
|-
| fxOffset ||   ||   
+
| engineDecelerationSpeed ||  
3-dimensional vector coordinates specifying the location of thrust effects
+
* 0.35
 +
* 0.21
 +
||   
 
|-
 
|-
| PROPELLANT ||   ||  
+
| allowShutdown ||  
resource utilized in the operation of this part, generally a fuel or other propellant.
+
* '''True'''
 +
* False 
 +
|| Specifies engines that cannot be turned off, regardless of whether their thrust can be controlled.
 
|-
 
|-
| name || ||  
+
| useVelocityCurve ||  
name of the resource consumed while this part is in operation
+
* True
 +
* False 
 +
||  
 
|-
 
|-
| ratio || ||  
+
| PROPELLANT || {}
rate at which this resource is consumed, per secondNot to be confused with ratio relative to other propellants.
+
|| resource utilized in the operation of this part, generally a fuel or other propellantEngines may use multiple propellant types.
 
|-
 
|-
| DrawGauge || ||  
+
| name ||
Boolean value that indicates whether or not the 'fuel remaining' indicator in the staging selection is displayed or not.
+
* LiquidFuel
 +
* Oxidizer
 +
|| name of the resource consumed while this part is in operation
 +
|-
 +
| ratio ||
 +
* 0.9
 +
* 1.1
 +
|| rate at which this resource is consumed, per second.  Not to be confused with ratio relative to other propellants.
 +
|-
 +
| DrawGauge ||  
 +
* true
 +
* '''false'''
 +
|| Boolean value that indicates whether or not the 'fuel remaining' indicator in the staging selection is displayed or not.
 
|-
 
|-
| atmosphereCurve ||   ||  
+
| atmosphereCurve || {}  || specifies variances in operational efficiency
specifies variances in operational efficiency
 
 
|-
 
|-
 
| key || ||  
 
| key || ||  
 
uses two values to specify engine efficiency relative to the depth of the atmosphere (based on Kerbin sea-level!)  First number indicates the relative pressure (0 = vacuum, 1 Kerbin sea-level), second numer indicates ISP value).
 
uses two values to specify engine efficiency relative to the depth of the atmosphere (based on Kerbin sea-level!)  First number indicates the relative pressure (0 = vacuum, 1 Kerbin sea-level), second numer indicates ISP value).
 +
Translates directly to ISP.  In order to make a more efficient engine, set the second number of this array higher. 
 +
|-
 +
| velocityCurve || {} || 
 +
Control the degree of acceleration of an engine at specified speeds. It uses keys to generate a curve of the amount of thrust generated by the engine according to the speed of the craft. First part of the key is speed in m/s and then comes the thrust multiplier ( the effective thrust will be : maxThrust * multiplier). Used stock by jet engines.
 
|}
 
|}
||
+
 
 +
||  
 
<pre>
 
<pre>
 
MODULE
 
MODULE
{
+
{
name = ModuleEnginesFX
+
name = ModuleEngines
thrustVectorTransformName = thrustTransform
+
thrustVectorTransform
exhaustDamage = True
+
Name = thrustTransform
ignitionThreshold = 0.1
+
throttleLocked = True
minThrust = 0
+
exhaustDamage = True
maxThrust = 30
+
allowShutdown = False
heatProduction = 150
+
ignitionThreshold = 0.1
fxOffset = 0, 0, 0.125
+
minThrust = 0
PROPELLANT
+
maxThrust = 18
{
+
heatProduction = 550
  name = LiquidFuel
+
fxOffset = 0, 0, 0.02
  ratio = 0.9
+
PROPELLANT
  DrawGauge = True
+
{
}
+
name = SolidFuel       
PROPELLANT
+
ratio = 1.0
{
+
DrawGauge = True
  name = Oxidizer
+
}
  ratio = 1.1
+
atmosphereCurve
}
+
{  
atmosphereCurve
+
key = 0 100 
  {
+
key = 1 100
  key = 0 350
+
}
  key = 1 300
 
  }
 
 
}
 
}
 
</pre>
 
</pre>
 
|-
 
|-
 
|
 
|
=== ModuleEnviroSensor ===
+
=== ModuleEnginesFX ===
 +
An updated and more customizable version of ModuleEngines.  Required for and allows implementation of multi-modal engines and engines with custom exhaust FX.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
 
|-
 
|-
| sensorType ||  ||  
+
| engineID
* ACC
+
||  
* PRES
+
* LES
* GRAV
+
* KS25
* TEMP
+
|| Hidden name of the engine
|}
 
||
 
<pre>
 
MODULE
 
{
 
name = ModuleEnviroSensor
 
sensorType = ACC
 
}
 
</pre>
 
 
|-
 
|-
|
+
| runningEffectName
=== ModuleGenerator ===
+
||
{|class="wikitable"
+
* running_closed
! variable !! example !! definition
+
|| effect used for when the engine is running
 
|-
 
|-
 +
| thrustVectorTransformName
 +
||
 +
* thrustTransform
 +
* obj_gimbal
 +
|| 
 +
specifies gameObject to be used as point of applied thrust, force is applied in local +Z. standard name is thrustTransform, but it can be anything as long as gameObject in the MU matches thrustVectorTransformName value in module config
 +
|-
 +
| exhaustDamage ||
 +
* True
 +
* False 
 +
|| 
 +
Indicates whether the exhaust from this engine will damage other parts.
 
|-
 
|-
| isAlwaysActive ||  ||  
+
| throttleLocked ||
specifies whether this module is always active or not. true/false
+
* True
 +
* False
 +
||   
 +
Assumed to specify that solid Rocket Boosters cannot have their throttle adjusted while in flight.
 +
|-
 +
| ignitionThreshold
 +
||
 +
* 0.1
 +
* 0.05 
 +
|| minimum required resource(s) for engine to start. If engine has less than specified value in resource(s), it will not start. Think of it as if your car needs at least half full tank to start.
 
|-
 
|-
| OUTPUT_RESOURCE ||   ||   
+
| minThrust
 +
||  
 +
* 0
 +
* 10 
 +
||   
 +
Minimum thrust value.  Engines will be considered 'off' at or below this value.
 
|-
 
|-
| name || ||  
+
| maxThrust
specifies the name of the produced resource.
+
||  
 +
* 200
 +
* 215 
 +
||  
 +
Just like the name implies, this is the maximum thrust a single unit of this module can produce.
 
|-
 
|-
| rate || ||  
+
| heatProduction
specifies the rate of resource produced, expressed in units per second.
+
||  
|}
+
* 400 
 
+
* 600
||
+
|| a measure of the amount of heat energy produced per second. measured in degrees Kerbius (degrees Celsius)
<pre>
+
|-
MODULE
+
| fxOffset
{
+
||  
name = ModuleGenerator
+
* 0,0,-1
isAlwaysActive = true
+
* 0,0,-0.5
OUTPUT_RESOURCE
+
||
{
+
3-dimensional vector coordinates specifying the location of thrust effects
    name = ElectricCharge
 
    rate = 0.75
 
}
 
}
 
</pre>
 
 
|-
 
|-
|
+
| PROPELLANT
 
+
|| {}
=== ModuleGimbal ===
+
|| resource utilized in the operation of this part, generally a fuel or other propellant.
{|class="wikitable"
 
! variable !! example !! definition
 
 
|-
 
|-
| gimbalTransformName ||   ||  
+
| name
thrustTransform
+
||  
 +
* LiquidFuel
 +
* Oxidizer
 +
* XenonGas
 +
||  
 +
name of the resource consumed while this part is in operation
 
|-
 
|-
| gimbalRange ||   ||  
+
| ratio
represents the maximum angle, in degrees, that gimballing is supportedRecommend keeping this number relatively low (under 20 for sure), as setting the number too high can have catastrophic effects on ship design.
+
||  
|}
+
* 0.9
 
+
* 1.1
||
+
||  
<pre>
+
rate at which this resource is consumed, per secondNot to be confused with ratio relative to other propellants.
MODULE
+
|-
{
+
| DrawGauge
name = ModuleGimbal
+
||  
gimbalTransformName = thrustTransform
+
* True
gimbalRange = 0.5
+
* False
}
+
||
</pre>
+
Boolean value that indicates whether or not the 'fuel remaining' indicator in the staging selection is displayed or not.
 
|-
 
|-
|
+
| atmosphereCurve || {} || specifies variances in operational efficiency
 
 
=== ModuleGrappleNode ===
 
{|class="wikitable"
 
! variable !! sample !! definition
 
 
|-
 
|-
| nodeTransformName ||  
+
| key ||  
* ArticulatedCap
+
* 0 360
 +
* 0.5 320
 +
* 1 260
 +
||
 +
uses two values to specify engine efficiency relative to the depth of the atmosphere (based on Kerbin sea-level!)  First number indicates the relative pressure (0 = vacuum, 1 Kerbin sea-level), second numer indicates ISP value).
 +
|}
 
||
 
||
|-
+
<pre>
| deployAnimationController ||
+
MODULE
*1
 
|| 
 
|-
 
| nodeType ||
 
*size1
 
|| 
 
|-
 
| captureRange ||
 
* 0.05
 
|| 
 
|-
 
| captureMinFwdDot ||
 
* 0.866
 
|| 
 
|-
 
| captureMaxRvel ||
 
* 1
 
|| 
 
|-
 
|}
 
||
 
<pre>
 
MODULE
 
 
{
 
{
  name = ModuleGrappleNode
+
  name = ModuleEnginesFX
   
+
  thrustVectorTransformName = thrustTransform
  nodeTransformName = ArticulatedCap
+
  exhaustDamage = True
  deployAnimationController = 1  
+
  ignitionThreshold = 0.1
  nodeType = size1
+
  minThrust = 0
   
+
maxThrust = 30
  captureRange = 0.05
+
  heatProduction = 150
  captureMinFwdDot = 0.866
+
  fxOffset = 0, 0, 0.125
  captureMaxRvel = 1
+
  PROPELLANT
 +
{
 +
  name = LiquidFuel
 +
  ratio = 0.9
 +
  DrawGauge = True
 +
}
 +
PROPELLANT
 +
{
 +
  name = Oxidizer
 +
  ratio = 1.1
 +
  }
 +
atmosphereCurve
 +
  {
 +
  key = 0 350
 +
  key = 1 300
 +
  }
 
}
 
}
 
</pre>
 
</pre>
 
 
|-
 
|-
 
|
 
|
=== ModuleJettison ===
+
 
 +
=== ModuleEnviroSensor ===
 +
Environmental sensor definitions.  Specifies that this part is one of these types of sensors.
 
{|class="wikitable"
 
{|class="wikitable"
|-
 
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
|specifies that pieces of this craft are able to be jettisoned, what they are and how to jettison them
 
 
|-
 
|-
| jettisonName ||   || 
+
| sensorType ||
node_fairing_collider
+
* ACC
fairingL
+
* PRES
fairingR
+
* GRAV
fairing
+
* TEMP
|-
+
|| Type of experiment / sensorNot sure of the utility of this definition, could be used in Science modules to determine what type of experiment was conductedCould be used in contracts for determining contract requirements.
| bottomNodeName ||  || 
 
bottom
 
|-
 
| isFairing ||  || 
 
BooleanTrue or False
 
|-
 
| jettisonedObjectMass ||  || 
 
0.1, specifies the mass of the jettisoned object.  It is uncertain, yet, if this mass is removed from the total mass of the vehicle.  It is also uncertain if, when a fairing is added in vehicle assembly, this mass is added to the parent object.
 
|-
 
| jettisonForce ||  || 
 
DeltaV with which the object is jettisoned from its parent objectTypically very low values, such as 1, 2 or 5
 
|-
 
| jettisonDirection ||  || 
 
Three-dimensional array which specifies the direction of the jettisonForce relative to the original part, laterally is 0 0 1 and 0 0 -1, for example.
 
 
|}
 
|}
 
||
 
||
Line 982: Line 1,162:
 
MODULE
 
MODULE
 
{
 
{
      name = ModuleJettison
+
name = ModuleEnviroSensor
      jettisonName = fairing
+
sensorType = ACC
      bottomNodeName = bottom
 
      isFairing = True
 
      jettisonedObjectMass = 0.1
 
      jettisonForce = 5
 
      jettisonDirection = 0 0 1
 
 
 
}
 
}
 
</pre>
 
</pre>
 
|-
 
|-
 
|
 
|
=== ModuleLandingGear ===
+
 
 +
=== ModuleGenerator ===
 +
Generators and Alternators serve must the same purpose, but generators are not linked to the percentage of thrust output of an engine, they simply produce.  Some cannot be shut off.  A generator may produce any available resource.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
 
|-
 
|-
| BrakeTorque || 12 || Amount of torque applied during breaking
+
| isAlwaysActive ||
 +
* true
 +
* false
 +
|| 
 +
specifies whether this module is always active or not. true/false
 +
|-
 +
| OUTPUT_RESOURCE || {} ||  
 
|-
 
|-
| BrakeSpeed || 3 || Reduction in speed over time, expressed in m/s
+
| name
|}
+
||  
||
+
* ElectricCharge
<pre>
+
* LiquidFuel
 +
* XenonGas
 +
||  
 +
specifies the name of the produced resource. 
 +
|-
 +
| rate
 +
||
 +
* 1
 +
* 5
 +
||
 +
specifies the rate of resource produced, expressed in units per second.
 +
|}
 +
 
 +
||
 +
<pre>
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleLandingGear
+
  name = ModuleGenerator
   
+
  isAlwaysActive = true
  BrakeTorque = 12
+
OUTPUT_RESOURCE
  BrakeSpeed = 3
+
  {
 +
    name = ElectricCharge
 +
    rate = 0.75
 +
  }
 
}
 
}
 
</pre>
 
</pre>
Line 1,016: Line 1,215:
 
|
 
|
  
=== ModuleLandingLeg ===
+
=== ModuleGimbal ===
 +
Gimballing represents an engine-bells ability to move around in relation to the engine body, provided a degree of ability to steer the vessel.  Higher numbers indicate a higher range, but don't set it too high.  Strange things will happen.  Recommend limiting range to .90 at the absolute maximum.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
 +
| gimbalTransformName
 +
|| 
 +
* thrustTransform
 +
|| 
 +
Uncertain.
 
|-
 
|-
| animationName ||  
+
| gimbalRange
* Deploy
+
||
* newlandingleg
+
* .20
* probeleg
+
* .15
|| specifies the animation to use
+
* .10
 +
* .5
 +
|| represents the maximum angle, in degrees, that gimballing is supported.  Recommend keeping this number relatively low (under 20 for sure), as setting the number too high can have catastrophic effects on ship design.
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = ModuleGimbal
 +
gimbalTransformName = thrustTransform
 +
gimbalRange = 0.5
 +
}
 +
</pre>
 
|-
 
|-
| wheelColliderName || wheelCollider |
+
|
 +
 
 +
=== ModuleGrappleNode ===
 +
Added in [0.90], specifically for the KASA asteroid capture missions, this part functions much like a dockingNode, however, it does not require a matching docking node on the capture-side. Grapplers can attach to anything (as far as we know).
 +
{|class="wikitable"
 +
! variable !! sample !! definition
 
|-
 
|-
| suspensionTransformName ||
+
| nodeTransformName ||  
* Piston
+
* ArticulatedCap
* piston
+
|| Uncertain.  Assumed to relate to animations used.
* leg
 
||
 
 
|-
 
|-
| orientFootToGround ||  
+
| deployAnimationController ||
* true
+
* 1
* false
+
|| Uncertain. 
||  
 
 
|-
 
|-
| landingFootName ||  
+
| nodeType ||  
* foot
+
* size1
||  
+
|| Size of the connection.  Relates to Docking port sizes. 
 
|-
 
|-
| alignFootUp ||  
+
| captureRange ||
* true
+
* 0.05
* false
+
|| Maximum distance between grappler and target at which grappling can occur
|| Aligns to up Axis instead of forward axis if true
 
 
|-
 
|-
| suspensionUpperLimit ||  
+
| captureMinFwdDot ||
* 0.60
+
* 0.866
* 0.47
+
|| Unknown
* 0.65
 
|| unknown 
 
 
|-
 
|-
| impactTolerance ||  
+
| captureMaxRvel ||
* 300
+
* 1
* 450
+
|| Maximum speed, relative to target, at which target can be grappled
* 150 
 
|| specifies the dV in m/s before the part breaks 
 
 
|-
 
|-
| suspensionSpring ||
+
|}
* 1.25
+
||
* 5
 
* 1 
 
|| specifies the maximum degree of compression in the part
 
|-
 
| suspensionDamper ||
 
* 1
 
* 2 
 
|| Uncertain
 
|-
 
| suspensionOffset ||
 
* 0
 
* 0.02 
 
|| Uncertain
 
|}
 
||
 
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
 +
name = ModuleGrappleNode
 +
 +
nodeTransformName = ArticulatedCap
 +
deployAnimationController = 1
 +
nodeType = size1
 
   
 
   
  name = ModuleLandingLeg
+
  captureRange = 0.05
animationName = Deploy
+
  captureMinFwdDot = 0.866
wheelColliderName = wheelCollider
+
  captureMaxRvel = 1
suspensionTransformName = Piston
 
orientFootToGround = true
 
landingFootName = foot
 
// Foot is aligned to up Axis instead of forward
 
alignFootUp = true
 
suspensionUpperLimit = 0.60
 
  impactTolerance = 300
 
suspensionSpring = 1.25
 
  suspensionDamper = 1
 
suspensionOffset = 0, 0.02,0
 
 
}
 
}
 
</pre>
 
</pre>
 +
 
|-
 
|-
 
|
 
|
  
=== ModuleLight ===
+
=== ModuleJettison ===
 +
specifies that pieces of this craft are able to be jettisoned, what they are and how to jettison them
 
{|class="wikitable"
 
{|class="wikitable"
 +
|-
 
! variable !! example !! definition
 
! variable !! example !! definition
 +
 
|-
 
|-
| lightName ||  ||   
+
| jettisonName ||   
spotlight
+
* node_fairing_collider
landinglight
+
* fairingL
 +
* fairingR
 +
* fairing
 +
||   
 +
Name of the part to be jettisoned
 
|-
 
|-
| useAnimationDim ||  ||  
+
| bottomNodeName
true or false
+
||   
 +
* bottom
 +
||
 +
Name of the node from which the part will be jettisoned
 
|-
 
|-
| lightBrightenSpeed ||  ||   
+
| isFairing ||   
2.5
+
* True
 +
* False
 +
||   
 +
Specifies whether the ejected part is a fairing.  Uncertain as to why this important.  May have to do with debris tracking.
 
|-
 
|-
| lightDimSpeed ||  ||  
+
| jettisonedObjectMass
2.5
+
||   
 +
* 0.1
 +
||  
 +
Specifies the mass of the jettisoned object.  It is uncertain, yet, if this mass is removed from the total mass of the vehicle.  It is also uncertain if, when a fairing is added in vehicle assembly, this mass is added to the parent object.
 
|-
 
|-
| resourceAmount ||   ||   
+
| jettisonForce
0.4
+
||  
 +
* 1
 +
* 2
 +
* 5 
 +
||   
 +
DeltaV with which the object is jettisoned from its parent object. Typically very low values, such as 1, 2 or 5
 
|-
 
|-
| animationName ||  ||  
+
| jettisonDirection
LightAnimation
+
||
|-
+
* 0 0 1
| useResources ||  ||   
+
* 0 1 0
true or false
+
||   
|-
+
Three-dimensional array which specifies the direction of the jettisonForce relative to the original part, laterally is 0 0 1 and 0 0 -1, for example.
| useAutoDim ||  || 
 
true or false
 
 
|}
 
|}
 
||
 
||
Line 1,133: Line 1,348:
 
MODULE
 
MODULE
 
{
 
{
name = ModuleLight
+
      name = ModuleJettison
        lightName = spotlight
+
      jettisonName = fairing
useAnimationDim = true
+
      bottomNodeName = bottom
lightBrightenSpeed = 2.5
+
      isFairing = True
lightDimSpeed = 2.5
+
      jettisonedObjectMass = 0.1
animationName = LightAnimation
+
      jettisonForce = 5
resourceAmount = 0.02
+
      jettisonDirection = 0 0 1
  useResources = true
+
   
 
}
 
}
 
</pre>
 
</pre>
Line 1,146: Line 1,361:
 
|
 
|
  
=== ModuleParachute ===
+
=== ModuleLandingGear ===
 +
Specifies that the part is a landing gear, implying a wheel, and the traits of that wheel.  Hopefully being deprecated in favor of [[Module#ModuleWheel|moduleWheel]] below.
 
{|class="wikitable"
 
{|class="wikitable"
 +
! variable !! example !! definition
 
|-
 
|-
! variable !! example !! definition
 
 
|-
 
|-
| semiDeployedAnimation ||  
+
| BrakeTorque ||  
* semiDeploySmall  
+
* 12  
|| specifies the animation to use in the semi-deployed state
+
|| Amount of torque applied during breaking
 
|-
 
|-
| fullyDeployedAnimation ||  
+
| BrakeSpeed ||
* fullyDeploySmall 
+
* 3
|| specifies the animation to use in the fully deployed state
+
|| Reduction in speed over time, expressed in m/s
|-
+
|}
| invertCanopy ||   
+
||
* '''true'''
+
<pre>
* false
+
MODULE
|| unknown purpose.
+
{
 +
name = ModuleLandingGear
 +
 +
BrakeTorque = 12
 +
  BrakeSpeed = 3
 +
}
 +
</pre>
 +
|-
 +
|
 +
 
 +
=== ModuleLandingLeg ===
 +
Specifies that this part is a landing leg and describes compression and resistance factors for the part.
 +
{|class="wikitable"
 +
! variable !! example !! definition
 
|-
 
|-
| autoCutSpeed || 0.5  || specifies the speed at which the parachute will be automatically cut, rendering it ineffective.
 
 
|-
 
|-
| capName ||  
+
| animationName ||  
* cap 
+
* Deploy
||  
+
* newlandingleg
 +
* probeleg
 +
|| specifies the animation to use
 
|-
 
|-
| canopyName ||  
+
| wheelColliderName
* canopy 
+
||  
 +
* wheelCollider
 
||   
 
||   
 
|-
 
|-
| stowedDrag || 0.22 || specifies the drag effect while the parachute is still stowed
+
| suspensionTransformName ||
|-
+
* Piston
| semiDeployedDrag || 1  || specifies the drag effect while the parachute is in its semi-deployed state
+
* piston
 +
* leg
 +
||
 
|-
 
|-
| fullyDeployedDrag || 500  || specifies the drag effect while the parachute is in its fully deployed state
+
| orientFootToGround ||  
 +
* true
 +
* false
 +
||  
 
|-
 
|-
| minAirPressureToOpen || 0.01  || specifies the minimum Air pressure (or atmosphere) required for the parachute to enter its semi-deployed state
+
| landingFootName ||  
 +
* foot
 +
||  
 
|-
 
|-
| deployAltitude || 500  || configurable, sets the altitude above the planetary collision mesh at which the parachute will enter its fully deployed state
+
| alignFootUp ||  
 +
* true
 +
* false
 +
|| Aligns to up Axis instead of forward axis if true
 
|-
 
|-
| deploymentSpeed || 1 || specifies the speed at which the parachute will enter its fully deployed state
+
| suspensionUpperLimit ||  
 +
* 0.60
 +
* 0.47
 +
* 0.65
 +
|| unknown 
 
|-
 
|-
| semiDeploymentSpeed || 1 || specifies the speed at which the parachute will enter its semi-deployed state
+
| impactTolerance ||  
 +
* 300
 +
* 450
 +
* 150  
 +
|| specifies the dV in m/s before the part breaks 
 
|-
 
|-
|}
+
| suspensionSpring ||
||
+
* 1.25
 +
* 5
 +
* 1 
 +
|| specifies the maximum degree of compression in the part
 +
|-
 +
| suspensionDamper ||
 +
* 1
 +
* 2 
 +
|| Uncertain
 +
|-
 +
| suspensionOffset ||
 +
* 0
 +
* 0.02 
 +
|| Uncertain
 +
|}
 +
||
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleParachute
+
  semiDeployedAnimation = semiDeploySmall
+
  name = ModuleLandingLeg
  fullyDeployedAnimation = fullyDeploySmall
+
animationName = Deploy
  invertCanopy = true
+
  wheelColliderName = wheelCollider
  autoCutSpeed = 0.5
+
  suspensionTransformName = Piston
  capName = cap
+
  orientFootToGround = true
  canopyName = canopy
+
  landingFootName = foot
  stowedDrag = 0.22
+
  // Foot is aligned to up Axis instead of forward
  semiDeployedDrag = 1
+
  alignFootUp = true
  fullyDeployedDrag = 500
+
  suspensionUpperLimit = 0.60
minAirPressureToOpen = 0.01
+
  impactTolerance = 300
  deployAltitude = 500
+
  suspensionSpring = 1.25
deploymentSpeed = 1
+
  suspensionDamper = 1
  semiDeploymentSpeed = 1
+
  suspensionOffset = 0, 0.02,0
 
}
 
}
 
</pre>
 
</pre>
Line 1,212: Line 1,476:
 
|
 
|
  
=== ModuleRCS ===
+
=== ModuleLight ===
Note:  ModuleRCS can use either a single resource, or a series of PROPELLANT calls.
+
Specifies that this part is a light source, and how that light is produced and directed.
 
{|class="wikitable"
 
{|class="wikitable"
|-
 
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| thrusterTransformName ||   ||  
+
| lightName
RCSthruster
+
||  
 +
* spotlight
 +
* landinglight
 +
||
 +
Name of the light source
 
|-
 
|-
| thrusterPower ||  ||  
+
| useAnimationDim ||   
This is the power that the RCS thrusters provideTo make stronger RCS, use a higher numer
+
* true
 +
* false
 +
|| UncertainAssumed to specify an animation to dim the light
 
|-
 
|-
| resourceName -------- interchangeable with PROPELLANT calls ||  ||  
+
| lightBrightenSpeed ||   
The name of the resource used by the RCS thruster, typically MonoPropellant
+
* 2.5
 +
|| When you turn it off, how long it takes to turn off
 
|-
 
|-
| resourceFlowMode -- for resourceName only --||  ||  
+
| lightDimSpeed ||   
Specifies the manner in which the resource is requested from the vessel
+
* 2.5
* STAGE_PRIORITY_FLOW
+
|| Speed at which the light dims
* STACK_PRIORITY_FLOW
 
* ALL_VESSEL
 
* NONE
 
 
|-
 
|-
| PROPELLANT ||  ||  
+
| resourceAmount ||   
Introduced with the inclusion of the Vernor RCS, it is recommended to use PROPELLANT calls only when using multiple resources.  It is expected that older RCS will be updated to the new convention prior to final release.
+
* 0.4
 +
|| rate of consumption (in units/second) of the needed resource
 
|-
 
|-
| name || ||  
+
| animationName ||  
name of the resource consumed
+
* LightAnimation
 +
||  
 
|-
 
|-
| ratio || ||  
+
| useResources ||  
ratio of the resource consumed
+
* true
 +
* false
 +
||  
 +
specifies whether this light source requires resources
 
|-
 
|-
| resourceFlowMode || ||  
+
| useAutoDim ||  
using the same pull method as a single resource, specifies how to pull the resource from the rest of the vessel
+
* true
|-
+
* false
| atmosphereCurve ||  ||  
+
||  
Specifies the efficiency of the RCS thruster using 2-part keys
+
Sets the autodim
0 specifies the ISP in atmosphere
 
1 specifies the ISP at Kerbin Sea Level
 
entries in between specify the ISP at specific percentages of Kerbin Sea Level (e.g:  0.5 = 1/2 Kerbin Atmosphere)
 
 
|}
 
|}
 
||
 
||
Line 1,256: Line 1,525:
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleRCS
+
  name = ModuleLight
thrusterTransformName = RCSthruster
+
        lightName = spotlight
  thrusterPower = 12
+
  useAnimationDim = true
  resourceName = LiquidFuel
+
  lightBrightenSpeed = 2.5
  resourceFlowMode = STAGE_PRIORITY_FLOW
+
  lightDimSpeed = 2.5
  PROPELLANT
+
  animationName = LightAnimation
  {
+
  resourceAmount = 0.02
  name = LiquidFuel
+
  useResources = true
        ratio = 0.9
 
  DrawGauge = True
 
  resourceFlowMode = STAGE_PRIORITY_FLOW
 
}
 
PROPELLANT
 
{
 
  name = Oxidizer
 
  ratio = 1.1
 
  resourceFlowMode = STAGE_PRIORITY_FLOW
 
  }
 
atmosphereCurve
 
  {
 
    key = 0 260
 
    key = 1 140
 
  }
 
 
}
 
}
 
 
</pre>
 
</pre>
 
|-
 
|-
 
|
 
|
  
=== ModuleReactionWheel ===
+
=== ModuleParachute ===
 +
specifies that this part is a parachute and describes the operational parameters for parachute operations.  Includes default settings for opening height and deployment atmospheric conditions.
 
{|class="wikitable"
 
{|class="wikitable"
! variable !! example !! definition
 
 
|-
 
|-
| PitchTorque ||  || 
+
! variable !! example !! definition
numerical value, denotes amount of change can be applied to pitch using reaction wheel power
 
 
|-
 
|-
| YawTorque ||   ||  
+
| semiDeployedAnimation ||  
numerical value, denotes amount of change can be applied to yaw using reaction wheel power
+
* semiDeploySmall 
 +
|| specifies the animation to use in the semi-deployed state
 
|-
 
|-
| RollTorque ||   ||  
+
| fullyDeployedAnimation ||  
numerical value, denotes amount of change can be applied to roll using reaction wheel power
+
* fullyDeploySmall 
 +
|| specifies the animation to use in the fully deployed state
 
|-
 
|-
| RESOURCE ||  ||   
+
| invertCanopy || 
The resource used by reaction wheels in order to affect the changes they can produce
+
* '''true'''
 +
* false
 +
|| unknown purpose.
 +
|-
 +
| autoCutSpeed ||
 +
* 0.5 
 +
|| specifies the speed at which the parachute will be automatically cut, rendering it ineffective.
 +
|-
 +
| capName ||
 +
* cap 
 +
||   
 +
|-
 +
| canopyName ||
 +
* canopy 
 +
||   
 +
|-
 +
| stowedDrag ||
 +
* 0.22
 +
|| specifies the drag effect while the parachute is still stowed
 +
|-
 +
| semiDeployedDrag ||
 +
* 1 
 +
|| specifies the drag effect while the parachute is in its semi-deployed state
 +
|-
 +
| fullyDeployedDrag ||
 +
* 500 
 +
|| specifies the drag effect while the parachute is in its fully deployed state
 +
|-
 +
| minAirPressureToOpen ||
 +
* 0.01 
 +
|| specifies the minimum Air pressure (or atmosphere) required for the parachute to enter its semi-deployed state
 +
|-
 +
| deployAltitude ||
 +
* 500 
 +
|| configurable, sets the altitude above the planetary collision mesh at which the parachute will enter its fully deployed state
 +
|-
 +
| deploymentSpeed || 
 +
* 1
 +
|| specifies the speed at which the parachute will enter its fully deployed state
 
|-
 
|-
| name || ||  
+
| semiDeploymentSpeed ||
name of the relevant resource, typically ElectricCharge
+
*  1 
 +
|| specifies the speed at which the parachute will enter its semi-deployed state
 
|-
 
|-
| rate || ||
 
Rate of consumption, expressed in units/second at full usage.
 
 
|}
 
|}
|
+
||
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleReactionWheel
+
  name = ModuleParachute
   
+
  semiDeployedAnimation = semiDeploySmall
  PitchTorque = 30
+
  fullyDeployedAnimation = fullyDeploySmall
  YawTorque = 30
+
  invertCanopy = true
  RollTorque = 30
+
autoCutSpeed = 0.5
   
+
  capName = cap
  RESOURCE
+
  canopyName = canopy
  {
+
  stowedDrag = 0.22
  name = ElectricCharge
+
  semiDeployedDrag = 1
  rate = 0.6
+
fullyDeployedDrag = 500
  }
+
minAirPressureToOpen = 0.01
 +
deployAltitude = 500
 +
  deploymentSpeed = 1
 +
semiDeploymentSpeed = 1
 
}
 
}
 
</pre>
 
</pre>
Line 1,327: Line 1,621:
 
|
 
|
  
=== ModuleResourceIntake ===
+
=== ModuleRCS ===
Used to create a part that produces a resource.
+
Specifies that this is a Reaction Control System part.  Uses variable resources to control directionality of the spacecraft.  Unlike engines, RCS parts are generally oriented perpendicular to all directions of a spacecraft in order to provide steering, rather than thrust.  Typically, monopropellant is decompressively expelled from an RCS port to push the spacecraft in one direction. 
 +
Note:  ModuleRCS can use either a single resource, or a series of PROPELLANT calls.
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| resourceName ||  ||   
+
| thrusterTransformName ||   
defines the type of resource produced by this module.  Any resource may be used for this purpose, including those not defined at all
+
* RCSthruster
 +
||   
 
|-
 
|-
| checkForOxygen ||  ||   
+
| thrusterPower ||   
An optional method that specifies this module must check to see if oxygen/atmosphere is present whenever attempting to generate the requested resourcetrue/false
+
* 10
 +
* 5
 +
* 20
 +
||   
 +
This is the power that the RCS thrusters provideTo make stronger RCS, use a higher numer
 
|-
 
|-
| area ||  ||   
+
| resourceName -------- interchangeable with PROPELLANT calls ||  ||   
area is the amount of space used for determining how much resource to produce.  The larger the number, the more of the resource is produced per second.
+
The name of the resource used by the RCS thruster, typically MonoPropellant
 
|-
 
|-
| intakeSpeed ||  ||   
+
| resourceFlowMode -- for resourceName only --||   
unknown.  Assumed to be a minimum m/s measure to determine if this module operates or not.
+
* STAGE_PRIORITY_FLOW
 +
* STACK_PRIORITY_FLOW
 +
* ALL_VESSEL
 +
* NONE
 +
||   
 +
Specifies the manner in which the resource is requested from the vessel
 
|-
 
|-
| intakeTransformName ||  ||   
+
| PROPELLANT ||  ||   
unknownknown arguments are:
+
Introduced with the inclusion of the Vernor RCS, it is recommended to use PROPELLANT calls only when using multiple resourcesIt is expected that older RCS will be updated to the new convention prior to final release.
* Intake
 
|}
 
|
 
<pre>
 
MODULE
 
{
 
  name = ModuleResourceIntake
 
  resourceName = IntakeAir
 
  checkForOxygen = true
 
  area = 0.006
 
  intakeSpeed = 10
 
  intakeTransformName = Intake 
 
}
 
</pre>
 
|
 
 
|-
 
|-
|
+
| name ||  
 
+
* MonoPropellant
=== ModuleSAS ===
+
* LiquidFuel
no known parameters.  Possibly used a reference to determine whether this part is activated by the SAS function of the interface.  ie. when you turn on SAS, turn on this part.  NOTE:  [0.90] added SASServiceLevel (0-3)
+
* Oxidizer
 
||  
 
||  
 +
name of the resource consumed
 +
|-
 +
| ratio ||
 +
* 1
 +
* 1.1
 +
* 0.9
 +
||
 +
ratio of the resource consumed
 +
|-
 +
| resourceFlowMode
 +
||
 +
* STAGE_PRIORITY_FLOW
 +
* STACK_PRIORITY_FLOW
 +
* ALL_VESSEL
 +
* NONE
 +
|| using the same pull method as a single resource, specifies how to pull the resource from the rest of the vessel
 +
|-
 +
| atmosphereCurve ||
 +
* 0 350
 +
* 1 250
 +
|| 
 +
Specifies the efficiency of the RCS thruster using 2-part keys
 +
0 specifies the ISP in atmosphere
 +
1 specifies the ISP at Kerbin Sea Level
 +
entries in between specify the ISP at specific percentages of Kerbin Sea Level (e.g:  0.5 = 1/2 Kerbin Atmosphere)
 +
|}
 +
||
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleSAS
+
  name = ModuleRCS
  SASServiceLevel = 1
+
  thrusterTransformName = RCSthruster
}
+
thrusterPower = 12
</pre>
+
resourceName = LiquidFuel
|-
+
resourceFlowMode = STAGE_PRIORITY_FLOW
|
+
PROPELLANT
 
+
{
=== ModuleScienceContainer ===
+
  name = LiquidFuel
 +
        ratio = 0.9
 +
  DrawGauge = True
 +
  resourceFlowMode = STAGE_PRIORITY_FLOW
 +
}
 +
PROPELLANT
 +
{
 +
  name = Oxidizer
 +
  ratio = 1.1
 +
  resourceFlowMode = STAGE_PRIORITY_FLOW
 +
}
 +
atmosphereCurve
 +
  {
 +
    key = 0 260
 +
    key = 1 140
 +
  }
 +
}
 +
 
 +
</pre>
 +
|-
 +
|
 +
 
 +
=== ModuleReactionWheel ===
 +
Specifies that this part contains reaction wheels, used to stabilize the directionality of a spacecraft.  Typically used for stability, rather than producing change, both are possible.  If you're thinking that this does the same thing as RCS, you wouldn't be far off.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
 +
| PitchTorque ||
 +
* 20 
 +
|| 
 +
numerical value, denotes amount of change can be applied to pitch using reaction wheel power
 
|-
 
|-
| reviewActionName ||   ||   
+
| YawTorque ||
Flavor text for reviewing the data contained in a science container.
+
* 20
 +
||   
 +
numerical value, denotes amount of change can be applied to yaw using reaction wheel power
 
|-
 
|-
| storeActionName ||   ||   
+
| RollTorque ||  
Flavor text for placing data into a science container.
+
* 20 
 +
||   
 +
numerical value, denotes amount of change can be applied to roll using reaction wheel power
 
|-
 
|-
| collectActionName ||   ||   
+
| RESOURCE || {}  ||   
Flavor text for removing data from a science container.
+
The resource used by reaction wheels in order to affect the changes they can produce
 
 
 
|-
 
|-
| evaOnlyStorage ||   ||  
+
| name ||  
Boolean, True or False
+
* ElectricCharge
Specifies whether or not data storage is restricted to EVA activities.
+
||  
 +
name of the relevant resource, typically ElectricCharge
 
|-
 
|-
| storageRange ||   ||  
+
| rate ||  
Distance, expressed in meters, a Kerbal must be within in order to interact with data and this container.
+
*0.45
|-
+
||  
| allowRepeatedSubjects ||  || 
+
Rate of consumption, expressed in units/second at full usage.
Boolean, True or False
 
 
|}
 
|}
||
+
|
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleScienceContainer
+
  name = ModuleReactionWheel
 +
 +
PitchTorque = 30
 +
YawTorque = 30
 +
RollTorque = 30
 
   
 
   
  reviewActionName = Review Stored Data
+
  RESOURCE
  storeActionName = Store Experiments
+
  {
evaOnlyStorage = True
+
  name = ElectricCharge
  storageRange = 4.0
+
  rate = 0.6
}
+
  }
 +
}
 
</pre>
 
</pre>
 
|-
 
|-
 
|
 
|
=== ModuleScienceExperiment ===
+
 
 +
=== ModuleResourceConverter ===
 +
Used to create a part that convertes resources.
 
{|class="wikitable"
 
{|class="wikitable"
 +
|-
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| experimentID ||   ||   
+
| ConverterName ||
* atmosphereAnalysis
+
* Lf+Ox
* mysteryGoo
+
||   
* crewReport
+
Name displayed when right-clicking the part.
* seismicScan
 
* barometerScan
 
 
|-
 
|-
| experimentActionName ||   ||   
+
| StartActionName ||
Flavor text for contextual menu to describe to the player what the part does when collecting data
+
* Start ISRU [Lf+Ox]
 +
||   
 +
Text displayed for the start action.
 
|-
 
|-
| resetActionName ||   ||   
+
| StopActionName ||
Flavor text for contextual menu to describe to the player what the part does when collecting data
+
* Stop ISRU [Lf+Ox]
 +
||   
 +
Text displayed for the stop action.
 
|-
 
|-
| reviewActionName ||   ||   
+
| AutoShutdown ||  
Flavor text for contextual menu to describe to the player what the part does when collecting data
+
* true
 +
* false
 +
||   
 +
Automatically shut the converter down if part is overheating?
 
|-
 
|-
| useStaging ||   ||   
+
| TemperatureModifier ||  
Boolean True/False - speficies whether this module can be activated through the normal staging system
+
* Temperature modifier defintion
 +
||   
 +
Unknown. Floatpoint curve.
 
|-
 
|-
| useActionGroups ||   ||   
+
| GeneratesHeat ||  
Boolean True/False - specifies whether this module can be activated by an Action Group
+
* true
 +
* false
 +
||   
 +
If set to true the converter operation will generate heat.
 
|-
 
|-
| hideUIwhenUnavailable ||   ||   
+
| DefaultShutoffTemp ||  
Boolean True/False - specifies whether this module will show its activation buttons through the contextual menu, even if it is not available
+
* .8
 +
||   
 +
Unknown. Related to AutoShutdown. Assumed to be unrelated to Core Temp.
 
|-
 
|-
| rerunnable ||   ||  
+
| ThermalEfficiency ||
Boolean True/False. Defaults to false.
+
* Thermal efficiency definition
 +
||
 +
Efficiency related to part temperature. Floatpoint curve.
 
|-
 
|-
| xmitDataScalar ||   ||   
+
| UseSpecialistBonus ||  
0.35
+
* true
 +
* false
 +
||   
 +
If set to true the converter will use specialist bonus. Efficiency = EB * [SBB + (SEF * EE)]. EE = 0-6
 
|-
 
|-
| FxModules ||   ||   
+
| SpecialistEfficiencyFactor ||  
0 (gooExperiment)
+
* 0.2
 +
||   
 +
SEF. Sets the amount each specialist-level adds to the efficiency.
 
|-
 
|-
| dataIsCollectable ||   ||   
+
| SpecialistBonusBase ||  
Boolean True/False
+
* 0.05
 +
||   
 +
SBB. Base efficiency a converter can reach without any specialist if EB = 1.
 
|-
 
|-
| collectActionName ||   ||   
+
| ExperienceEffect ||  
Flavor text
+
* ConverterSkill
 +
||   
 +
EE. NoSpecialist=0; ZeroStarSpecialist=1; OneStarSpecialist=2; FiveStarSpecialist=6
 
|-
 
|-
| interactionRange ||  ||   
+
| EfficiencyBonus ||
The range, expressed in meters, from which a Kerbal on EVA can interact with this module (for example to reset the experiment)
+
* 1
|}
+
||   
 
+
EB. Final multiplier for efficiency. Tipp: start with EB = 1 and adjust if required.
||
+
|-
 +
| INPUT_RESOURCE ||
 +
* Resource defintion
 +
||   
 +
Defines the resource consumed when the converter is active. Can have multiple INPUT_RESOURCE definitions.
 +
|-
 +
| OUTPUT_RESOURCE ||
 +
* Resource defintion
 +
|
 +
Defines the resource produced when the converter is active. Can have multiple OUTPUT_RESOURCE definitions.
 +
|}
 +
|
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
  name = ModuleScienceExperiment
+
  name = ModuleResourceConverter
   
+
  ConverterName = Lf+Ox
  experimentID = atmosphereAnalysis
+
StartActionName = Start ISRU [Lf+Ox]
   
+
StopActionName = Stop ISRU [Lf+Ox]
  experimentActionName = Run Atmosphere Analysis
+
AutoShutdown = true
  resetActionName = Discard Data
+
  TemperatureModifier
  reviewActionName = Review Data
+
{
   
+
key = 0 100000
  useStaging = False
+
key = 750 50000
  useActionGroups = True
+
key = 1000 10000
  hideUIwhenUnavailable = True
+
key = 1250 500
  rerunnable = True
+
key = 2000 50
 
+
key = 4000 0
  xmitDataScalar = 0.35
+
  }
 
+
  GeneratesHeat = true
  dataIsCollectable = True
+
  DefaultShutoffTemp = .8
  collectActionName = Download Data
+
  ThermalEfficiency
  interactionRange = 1.2
+
{
 +
key = 0 0 0 0
 +
key = 500 0.1 0 0
 +
key = 1000 1.0 0 0
 +
key = 1250 0.1 0 0
 +
key = 3000 0 0 0
 +
}
 +
  UseSpecialistBonus = true
 +
  SpecialistEfficiencyFactor = 0.2
 +
  SpecialistBonusBase = 0.05
 +
  ExperienceEffect = ConverterSkill
 +
  EfficiencyBonus = 1
 +
INPUT_RESOURCE
 +
  {
 +
ResourceName = Ore
 +
Ratio = 0.5
 +
FlowMode = STAGE_PRIORITY_FLOW
 +
}
 +
INPUT_RESOURCE
 +
  {
 +
ResourceName = ElectricCharge
 +
Ratio = 30
 +
  }
 +
OUTPUT_RESOURCE
 +
{
 +
ResourceName = LiquidFuel
 +
Ratio = 0.45
 +
DumpExcess = false
 +
FlowMode = STAGE_PRIORITY_FLOW
 +
  }
 +
OUTPUT_RESOURCE
 +
{
 +
ResourceName = Oxidizer
 +
Ratio = 0.55
 +
DumpExcess = false
 +
FlowMode = STAGE_PRIORITY_FLOW
 +
}
 
}
 
}
 
</pre>
 
</pre>
 +
|
 
|-
 
|-
 
|
 
|
  
=== ModuleScienceLab ===
+
=== ModuleResourceHarvester ===
 +
Used to create a part that harvestes resources from the environment.
 
{|class="wikitable"
 
{|class="wikitable"
 +
|-
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
 +
| HarvesterType || 
 +
* 0
 +
* 1
 +
* 2
 +
* 3
 +
|| 
 +
Defines the type of harvester. 
 +
* 0 = Planetary use
 +
* 1 = Oceanic use
 +
* 2 = Atmospheric use
 +
* 3 = Vacuum use?
 +
Harvester types other then 0 require use of a deploy animation before they can be activated (tested with KSP version 1.1.3).
 
|-
 
|-
| containerModuleIndex ||   ||   
+
| Efficiency ||
numerical, 0
+
* 1
 +
||   
 +
Harvester efficiency. Seems to work differently depending on harvester type.
 
|-
 
|-
| dataTransmissionBoost ||   ||   
+
| ResourceName ||
numerical, 1.5
+
* Ore
 +
||   
 +
Resource to harvest.
 
|-
 
|-
| crewsRequired ||   ||   
+
| ConverterName ||  
numerical, 2
+
* Surface Harvester
 +
||   
 +
Name displayed when right-clicking the part.
 
|-
 
|-
| canResetConnectedModules ||   ||   
+
| StartActionName ||  
Boolean, True or False
+
* Start Surface Harvester
 +
||   
 +
Text displayed for the start action.
 
|-
 
|-
| canResetNearbyModules ||   ||   
+
| StopActionName ||  
Boolean, True or False
+
* Stop Surface Harvester
 +
||   
 +
Text displayed for the stop action.
 
|-
 
|-
| interactRange ||   ||   
+
| ToggleActionName ||  
numerical, possible integers only, 5
+
* Toggle Surface Harvester
 +
||   
 +
Text displayed for the toggle action.
 
|-
 
|-
| REOURCE_PROCESS ||   ||   
+
| ImpactTransform ||  
 +
* ImpactTransform
 +
||   
 +
Seems to be only relevant for surface harvesters. Resource is only harvested when in contact to the ground. Further details of this parameter are unknown.
 
|-
 
|-
| name || ||  
+
| ImpactRange ||  
names the resource required, e.g.: ElectricCharge
+
* 5
 +
||  
 +
Seems to be only relevant for surface harvesters. May be the distance between where the drillhead is when it is deployed and where the actual part is. Further details of this parameter are unknown.
 
|-
 
|-
| amount || ||  
+
| AutoShutdown ||
specified, numerical, the number of units of the specified resource expended
+
* true
 +
* false
 +
|| 
 +
If set to true the harvester will automatically shut off if it overheats.
 +
|-
 +
| GeneratesHeat ||
 +
* true
 +
* false
 +
|| 
 +
If set to true the harvester operation will generate heat.
 +
|-
 +
| UseSpecialistBonus ||
 +
* true
 +
* false
 +
|| 
 +
If set to true crew members can give a bonus to harvester efficiency.
 +
|-
 +
| SpecialistEfficiencyFactor ||  
 +
* 0.2
 +
|| 
 +
Efficieny bonus multiplier based on the number of specialists and their skill.
 +
|-
 +
| SpecialistBonusBase ||
 +
* 0.05
 +
|| 
 +
Efficieny bonus base amount for each specialist of the given type.
 +
|-
 +
| Specialty ||
 +
* Engineer
 +
|| 
 +
Type of specialist required to get the efficiency bonus.
 +
|-
 +
| EfficiencyBonus ||
 +
* 1
 +
|| 
 +
Added efficiency for having a specialist.
 +
|-
 +
| INPUT_RESOURCE ||
 +
* Resource defintion
 +
|| 
 +
Defines the resource consumed when the harvester is active. Can have multiple INPUT_RESOURCE definitions.
 +
|-
 +
| TemperatureModifier ||
 +
* Temperature modifier defintion
 +
|| 
 +
Unknown.
 +
|-
 +
| ThermalEfficiency ||
 +
* Thermal efficiency definition
 +
||
 +
Efficiency related to part temperature.
 
|}
 
|}
||
+
|
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
name = ModuleScienceLab
+
  name = ModuleResourceHarvester
+
  HarvesterType = 0
containerModuleIndex = 0  
+
  Efficiency = 1.5
dataTransmissionBoost = 1.15
+
  ResourceName = Ore
crewsRequired = 2
+
  ConverterName = Surface Harvester
+
  StartActionName = Start Surface Harvester
canResetConnectedModules = True
+
  StopActionName = Stop Surface Harvester
canResetNearbyModules = True
+
  ToggleActionName = Toggle Surface Harvester
interactionRange = 5
+
  ImpactTransform = ImpactTransform
+
  ImpactRange = 5
RESOURCE_PROCESS
+
  AutoShutdown = true
{
+
  GeneratesHeat = true
   name = ElectricCharge
+
  UseSpecialistBonus = true
   amount = 10
+
  SpecialistEfficiencyFactor = 0.2
}
+
  SpecialistBonusBase = 0.05
 +
  Specialty = Engineer
 +
  EfficiencyBonus = 1
 +
  INPUT_RESOURCE
 +
  {
 +
    ResourceName = ElectricCharge
 +
    Ratio = 15
 +
  }
 +
  TemperatureModifier
 +
   {
 +
    key = 0 10000
 +
    key = 250 7500
 +
    key = 500 5000
 +
    key = 750 500
 +
    key = 1000 0
 +
  }
 +
  ThermalEfficiency
 +
   {
 +
    key = 0 0.1
 +
    key = 250 .1
 +
    key = 500 1
 +
    key = 750 .1
 +
    key = 1000 0
 +
  }
 
}
 
}
 
</pre>
 
</pre>
 +
|
 
|-
 
|-
 
|
 
|
  
=== ModuleSteering ===
+
=== ModuleResourceIntake ===
 +
Used to create a part that produces a resource based on interaction with the environment.
 
{|class="wikitable"
 
{|class="wikitable"
 +
|-
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| controlAxisType || Forward || UnsureMay have something to do with directional control
+
| resourceName ||   
 +
*IntakeAir
 +
||  
 +
defines the type of resource produced by this moduleAny resource may be used for this purpose, including those not defined at all
 
|-
 
|-
| steeringAxis ||
+
| checkForOxygen ||
* 0, 0, 1 
 
|| specifies the 3-dimensional axis of steering control. 
 
|-
 
| steeringTransformName || Steering  ||  unknown
 
|-
 
| steeringLocked ||  
 
 
* true
 
* true
 
* false
 
* false
|| specifies whether the part's steering starts locked
+
||  
 +
An optional method that specifies this module must check to see if oxygen/atmosphere is present whenever attempting to generate the requested resource.
 
|-
 
|-
| steeringCurve ||  
+
| area ||
{|
+
* 0.004
|
+
|
 +
area is the amount of space used for determining how much resource to produce.  The larger the number, the more of the resource is produced per second.
 
|-
 
|-
| 0 || 16
+
| intakeSpeed ||  
 +
* 10
 +
|| 
 +
unknown.  Assumed to be a minimum m/s measure to determine if this module operates or not.
 
|-
 
|-
| 10 || 9
+
| intakeTransformName ||
|-
+
* Intake
| 30 || 2
+
||
|-
+
unknown.
| 100 || 1
 
 
|}
 
|}
|| multi-array of keys,
+
|
|}
 
 
 
||
 
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
name = ModuleSteering
+
  name = ModuleResourceIntake
controlAxisType = Forward
+
  resourceName = IntakeAir
steeringAxis = 0, 0, 1
+
  checkForOxygen = true
steeringTransformName = Steering
+
   area = 0.006
steeringLocked = true
+
   intakeSpeed = 10
steeringCurve
+
   intakeTransformName = Intake 
   {
 
    key = 0 16
 
   key = 10 9
 
    key = 30 2
 
   key = 100 1
 
  }
 
 
}
 
}
 
</pre>
 
</pre>
 +
|
 
|-
 
|-
 
|
 
|
  
=== ModuleTestSubject ===
+
=== ModuleSAS ===
Used for the contract system, determines atmospheric conditions under which this part may be considered for testingAlso specifies whether the part is able to be tested using the Staging process or must be manually selected and "Perform Test" used to satisfy contract requirements.
+
Used as a reference to determine whether this part is activated by the SAS function of the interface.  ie. when you turn on SAS, turn on this part.  NOTE:  [0.90] added SASServiceLevel (0-3)
 
{|class="wikitable"
 
{|class="wikitable"
|-
 
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| environments ||  
+
| SASServiceLevel ||
* 15
+
* 0
 
* 1
 
* 1
|| 
+
* 2
A single numerical value, between 0 (nowhere) and 15 (anywhere), that specifies the atmospheric conditions the part may be tested under.  Add numbers together to specify multiple environments
+
* 3
* 0 = nowhere
+
|| defines the required level of building development for each different SAS capabilities (markers on the nav ball)
* 1 = the surface of; srf
+
|-
* 2 = the ocean of; ocean
+
|}
* 3 = the surface or ocean of; srf, ocean
+
||
* 4 = the atmosphere of; atmo
+
<pre>
* 5 = the surface or atmosphere of; srf, atmo
+
MODULE
* 6 = the ocean or atmosphere of; ocean, atmo
+
{
* 7 = the surface, ocean or atmosphere of; srf, ocean, atmo
+
name = ModuleSAS
* 8 = the space above; space
+
SASServiceLevel = 1
* 9 = the surface or space above; srf, space
 
* 10 = the ocean or space of; srf, ocean, space
 
* 11 = the surface, ocean or space of; srf, ocean, space
 
* 12 = the space or atmosphere of; atmo, space
 
* 13 = the surface, space or atmosphere of; srf, atmo, space
 
* 14 = the ocean, space, or atmosphere of; ocean, atmo, space
 
* 15 = anywhere; srf, ocean, atmo, space
 
|-
 
| useStaging ||
 
* True
 
* False
 
|| specifies whether the part can be tested using the Staging Process
 
|-
 
| useEvent ||
 
* True
 
* False
 
|| specifies whether the part can be tested using the "Perform Test" action.
 
|}
 
 
 
||  
 
<pre>
 
MODULE
 
{
 
name = ModuleTestSubject
 
// nowhere: 0, srf: 1, ocean: 2, atmo: 4, space: 8
 
environments = 15
 
useStaging = False
 
useEvent = True
 
 
}
 
}
 
</pre>
 
</pre>
Line 1,653: Line 2,150:
 
|
 
|
  
=== ModuleWheel ===
+
=== ModuleScienceContainer ===
 +
A place to store the results of a science experiment.
 
{|class="wikitable"
 
{|class="wikitable"
 
! variable !! example !! definition
 
! variable !! example !! definition
 
|-
 
|-
| hasMotor ||
 
* true
 
* false
 
|| specifies whether the wheel has a powered propulsion system 
 
 
|-
 
|-
| resourceName ||
+
| reviewActionName || Flavor Text || for reviewing the data contained in a science container.
* ElectricCharge
 
|| specifies the resource(s) used by powered propulsion system
 
 
|-
 
|-
| resourceConsumptionRate ||  
+
| storeActionName || Flavor text || for placing data into a science container.
* 1.0
 
|| specifies the rate of consumption of resources for the powered propulsion system in units/second
 
 
|-
 
|-
| canSteer ||  
+
| collectActionName || Flavor text || for removing data from a science container.
* true
+
 
* false
 
|| specifies whether this wheel is steerable
 
 
|-
 
|-
| controlAxisType ||  
+
| evaOnlyStorage ||  
* Forward
+
* True
|| If steerable, specifies the axis type
+
* False
 +
||  
 +
Specifies whether or not data storage is restricted to EVA activities.
 
|-
 
|-
| steeringModeType ||  
+
| storageRange ||  
* AutomaticSteer
+
* 0.5
* TankSteer
+
||  
|| uncertain: may refer to rack-and-pinion versus Track-type steering
+
Distance, expressed in meters, a Kerbal must be within in order to interact with data and this container.
 
|-
 
|-
| brakeTorque || 300 || the dV (in m/s) of torque applied when using the breaks 
+
| allowRepeatedSubjects ||  
 +
* True
 +
* False
 +
|| Uncertain
 +
|}
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = ModuleScienceContainer
 +
 +
reviewActionName = Review Stored Data
 +
storeActionName = Store Experiments
 +
evaOnlyStorage = True
 +
storageRange = 4.0
 +
}
 +
</pre>
 
|-
 
|-
| brakeSpeed || 1.2 || the dV (in m/s) that braking will slow the vehicle under optimum conditions
+
|
 +
 
 +
=== ModuleScienceExperiment ===
 +
A place to conduct a science experiment.
 +
{|class="wikitable"
 +
! variable !! example !! definition
 
|-
 
|-
| impactTolerance || 2000  || dV that this part can withstand before breaking 
+
| experimentID ||
 +
*evaReport
 +
*mysteryGoo
 +
*surfaceSample
 +
*mobileMaterialsLab
 +
*temperatureScan
 +
*barometerScan
 +
*seismicScan
 +
*gravityScan
 +
*atmosphereAnalysis
 +
*asteroidSample
 +
|| This refers to the Experiment IDs listed in ScienceDefs.cfg under each EXPERIMENT_DEFINITION{}
 
|-
 
|-
| overSpeedDamage || 60 || uncertain.  possibly reserved for future use, possible that this is the amount of dV of damage applied to this part whenever it exceeds it's rated speed
+
| experimentActionName || Flavor text  ||  
 +
for contextual menu to describe to the player what the part does when collecting data
 
|-
 
|-
| WHEEL ||  ||   
+
| resetActionName || Flavor text   ||   
 +
for contextual menu to describe to the player what the part does when collecting data
 
|-
 
|-
| wheelName || ||  
+
| reviewActionName || Flavor text  ||  
wheel
+
for contextual menu to describe to the player what the part does when collecting data
 
|-
 
|-
| wheelColliderName || ||  
+
| useStaging ||
wheelCollider
+
* True
 +
* False
 +
|| specifies whether this module can be activated through the normal staging system
 
|-
 
|-
| suspensionTransformName || ||  
+
| useActionGroups ||  
suspensionTraverse
+
* True
 +
* False
 +
|| specifies whether this module can be activated by an Action Group
 
|-
 
|-
| suspensionNeutralPointName || ||  
+
| hideUIwhenUnavailable ||  
suspensionNeutralPoint
+
* True
 +
* False
 +
|| specifies whether this module will show its activation buttons through the contextual menu, even if it is not available
 
|-
 
|-
| damagedObjectName || ||  
+
| rerunnable ||  
bustedwheel
+
* True
 +
* '''False'''
 +
|| specifies whether this experiment can be rerun.
 
|-
 
|-
| rotateX || ||  
+
| xmitDataScalar ||  
0
+
* 0.35
 +
|| Specifies the share of science data that can be recovered via the antenna. In this example 35% can be recovered.
 
|-
 
|-
| rotateY || ||  
+
| FxModules ||
1
+
* 0
 +
|| The index of the module, starting from 0, playing the animation, if any, for this science instrument. The module must implement IScalarModule so must be ModuleAnimateGeneric or a descendant.
 
|-
 
|-
| rotateZ || ||  
+
| dataIsCollectable ||  
0
+
* True
 +
* False
 +
|| Uncertain.  Presumed to indicate whether a Kerbal on EVA can retrieve data from this experiment
 
|-
 
|-
| steeringCurve ||   ||  
+
| collectActionName || Flavor text || If data is collectible, this is the flavor text for collecting that data
keys, 0 16
 
10 9
 
30 2
 
 
|-
 
|-
| torqueCurve ||   ||  
+
| interactionRange ||  
keys
+
* 0.5
0 250 0 0
+
|| The range, expressed in meters, from which a Kerbal on EVA can interact with this module (for example to reset the experiment)
20 100 0 0
+
|-
30 14 0 0
+
| usageReqMaskInternal || (ExperimentUsageReqs) || How the experiment can be triggered by the parent Vessel.
34 0 0 0
+
|-
 +
| usageReqMaskExternal || (ExperimentUsageReqs) || How the experiment can be triggered by EVA Kerbals.
 +
|}
  
 +
ExperimentUsageReqs
 +
{|class="wikitable"
 +
|-
 +
! Name !! Value !! Notes
 +
|-
 +
| Never || -1 || Experiment can't be used at all
 +
|-
 +
| Always || 0 || Experiment can always be used
 +
|-
 +
| VesselControl || 1 || Experiment can be used if vessel is  (see ExperimentUsageReqs)under control (probe or crew)
 +
|-
 +
| CrewInVessel || 2 || Experiment can only be used if vessel is crewed.
 +
|-
 +
| CrewInPart || 4 || Experiment can only be used if part contains crew.
 +
|-
 +
| ScientistCrew || 8 || Experiment can only be used if crew is scientist.
 
|}
 
|}
  
||  
+
||
 
<pre>
 
<pre>
 
MODULE
 
MODULE
 
{
 
{
name = ModuleWheel
+
name = ModuleScienceExperiment
hasMotor = true
+
resourceName = ElectricCharge
+
experimentID = atmosphereAnalysis
        resourceConsumptionRate = 0.5
+
canSteer = true
+
experimentActionName = Run Atmosphere Analysis
controlAxisType = Forward
+
resetActionName = Discard Data
steeringModeType = AutomaticSteer
+
reviewActionName = Review Data
brakeTorque = 180
+
brakeSpeed = 1.0
+
useStaging = False
impactTolerance = 65
+
useActionGroups = True
overSpeedDamage = 20
+
hideUIwhenUnavailable = True
 +
rerunnable = True
 +
 
 +
xmitDataScalar = 0.35
 +
 
 +
dataIsCollectable = True
 +
collectActionName = Download Data
 +
interactionRange = 1.2
 +
}
 +
</pre>
 +
|-
 +
|
  
WHEEL
+
=== ModuleScienceLab ===
{
+
A place to modify a science experiment prior to transmission in order to gain more research points from it.
    wheelName = wheel
+
{|class="wikitable"
    wheelColliderName = wheelCollider
+
! variable !! example !! definition
    suspensionTransformName = suspensionTraverse
+
|-
    suspensionNeutralPointName = suspensionNeutralPoint
+
|-
    damagedObjectName = bustedwheel
+
| containerModuleIndex || 
    rotateX = 0
+
* 0
    rotateY = 1
+
|| Specifies ModuleScienceContainer location in order in cfg file. 0 is first module listing, 1 is two and so on.
    rotateZ = 0
+
|-
}
+
| dataTransmissionBoost || 
 +
* 1.5
 +
|| Unknown
 +
|-
 +
| crewsRequired || 
 +
* 2
 +
|| Minimum number of Kerbals in the part needed to operate this module
 +
|-
 +
| canResetConnectedModules ||
 +
* True
 +
* False
 +
|| Unknown.  Presumed to indicate whether modules attached to this part can be reset from this module
 +
|-
 +
| canResetNearbyModules || 
 +
* True
 +
* False
 +
||  Presumed to indicate whether modules attached to this vessel can be reset from this module
 +
|-
 +
| interactRange || 
 +
* 1.2
 +
|| Limit of range (in meters) that modules attached to this vessel can be reset.  Uncertain.
 +
|-
 +
| REOURCE_PROCESS || {} || 
 +
|-
 +
| name ||
 +
* ElectricCharge
 +
|| names the resource required, e.g.: ElectricCharge
 +
|-
 +
| amount ||
 +
* 10
 +
||
 +
specified, numerical, the number of units of the specified resource expended
 +
|}
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = ModuleScienceLab
 +
 +
containerModuleIndex = 0
 +
dataTransmissionBoost = 1.15
 +
crewsRequired = 2
 +
 +
canResetConnectedModules = True
 +
canResetNearbyModules = True
 +
interactionRange = 5
 +
 +
RESOURCE_PROCESS
 +
{
 +
  name = ElectricCharge
 +
  amount = 10
 +
}
 +
}
 +
</pre>
 +
|-
 +
|
  
steeringCurve
+
=== ModuleSteering ===
  {
+
Specifies that this part is steerable and provides the axis and animation information for steering the part.
   key = 0 18
+
{|class="wikitable"
key = 15 6
+
! variable !! example !! definition
 +
|-
 +
| controlAxisType ||
 +
* Forward 
 +
||  Unsure.  May have something to do with directional control
 +
|-
 +
| steeringAxis ||
 +
* 0, 0, 1 
 +
|| specifies the 3-dimensional axis of steering control. 
 +
|-
 +
| steeringTransformName ||
 +
* Steering 
 +
||  unknown
 +
|-
 +
| steeringLocked ||
 +
* true
 +
* false
 +
|| specifies whether the part's steering starts locked
 +
|-
 +
| steeringCurve ||
 +
{|
 +
|
 +
|-
 +
| 0 || 16
 +
|-
 +
| 10 || 9
 +
|-
 +
| 30 || 2
 +
|-
 +
| 100 || 1
 +
|}
 +
|| multi-array of keys,
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = ModuleSteering
 +
controlAxisType = Forward
 +
steeringAxis = 0, 0, 1
 +
steeringTransformName = Steering
 +
steeringLocked = true
 +
steeringCurve
 +
  {
 +
    key = 0 16
 +
  key = 10 9
 +
    key = 30 2
 +
  key = 100 1
 +
  }
 +
}
 +
</pre>
 +
|-
 +
|
 +
 
 +
=== ModuleTestSubject ===
 +
Used for the contract system, determines atmospheric conditions under which this part may be considered for testing.  Also specifies whether the part is able to be tested using the Staging process or must be manually selected and "Perform Test" used to satisfy contract requirements.
 +
{|class="wikitable"
 +
|-
 +
! variable !! example !! definition
 +
|-
 +
| environments (Deprecated. Use situationMask instead) ||
 +
* 15
 +
* 1
 +
|| 
 +
A single numerical value, between 0 (nowhere) and 15 (anywhere), that specifies the atmospheric conditions the part may be tested under.  Add numbers together to specify multiple environments
 +
* 0 = nowhere
 +
* 1 = the surface of; srf
 +
* 2 = the ocean of; ocean
 +
* 3 = the surface or ocean of; srf, ocean
 +
* 4 = the atmosphere of; atmo
 +
* 5 = the surface or atmosphere of; srf, atmo
 +
* 6 = the ocean or atmosphere of; ocean, atmo
 +
* 7 = the surface, ocean or atmosphere of; srf, ocean, atmo
 +
* 8 = the space above; space
 +
* 9 = the surface or space above; srf, space
 +
* 10 = the ocean or space of; srf, ocean, space
 +
* 11 = the surface, ocean or space of; srf, ocean, space
 +
* 12 = the space or atmosphere of; atmo, space
 +
* 13 = the surface, space or atmosphere of; srf, atmo, space
 +
* 14 = the ocean, space, or atmosphere of; ocean, atmo, space
 +
* 15 = anywhere; srf, ocean, atmo, space
 +
|-
 +
| useStaging ||
 +
* True
 +
* False
 +
|| specifies whether the part can be tested using the Staging Process
 +
|-
 +
| useEvent ||
 +
* True
 +
* False
 +
|| specifies whether the part can be tested using the "Perform Test" action.
 +
|-
 +
| situationMask ||
 +
* 16
 +
* 63
 +
|| 
 +
A binary mask for defining the situation.
 +
* SrfLanded = 1,
 +
* SrfSplashed = 2,
 +
* FlyingLow = 4,
 +
* FlyingHigh = 8,
 +
* InSpaceLow = 16,
 +
* InSpaceHigh = 32
 +
* Hidden Flag (not sure what this does, but several engine cfgs have a 7th flag tripped, value equaling 127) = 64
 +
|-
 +
| CONSTRAINT ||
 +
{<br />
 +
type = REPEATABILITY<br />
 +
 
 +
value = ALWAYS<br />
 +
 
 +
prestige = Trivial<br />
 +
}<br />
 +
<br />
 +
<br />
 +
{<br />
 +
 
 +
type = ALTITUDEENV<br />
 +
 
 +
test = LT<br />
 +
 
 +
value = 1000<br />
 +
 
 +
situationMask = 8<br />
 +
 
 +
prestige = Trivial<br />
 +
 
 +
}<br />
 +
 
 +
 
 +
|| 
 +
Constraints define different attributes of a test.
 +
<br /><br />
 +
 
 +
type - The type of constraint. Can have values such as :<br />
 +
* SPEED
 +
* SPEEDENV
 +
* ALTITUDE
 +
* ALTITUDEENV
 +
* DENSITY
 +
* DYNAMICPRESSURE
 +
* OXYGEN
 +
* ATMOSPHERE
 +
* SITUATION
 +
* REPEATABILITY
 +
<br />
 +
test -  An optional parameter. Relevant when type ''isn't'' set to 'REPEATABILITY'. Can have values such as:<br />
 +
* GT
 +
* LT
 +
* EQ
 +
* NEQ
 +
<br />
 +
value -  Defines whether or not this test can be repeated. Can have values such as:<br />
 +
* ALWAYS
 +
* BODYANDSITUATION
 +
* ONCEPERPART
 +
<br />
 +
prestige -  Defines the prestige level for the test. Can have values such as:<br />
 +
* Trivial
 +
* Significant
 +
* Exceptional
 +
<br />
 +
body -  Defines what celestial body can be used for the test . Can have values such as:<br />
 +
* _NotHome (disables every flag but Kerbin)
 +
* _NotSun (unclear what this does, but might disable every celestial body but Kerbol?)
 +
<br />
 +
situationMask -  Overrides the situationMask value for this constraint only:<br />
 +
* SrfLanded = 1,
 +
* SrfSplashed = 2,
 +
* FlyingLow = 4,
 +
* FlyingHigh = 8,
 +
* InSpaceLow = 16,
 +
* InSpaceHigh = 32
 +
|}
 +
||<pre>
 +
      MODULE
 +
{
 +
name = ModuleTestSubject
 +
useStaging = True
 +
useEvent = True
 +
situationMask = 60
 +
CONSTRAINT
 +
{
 +
// disable all but home
 +
type = SITUATION
 +
value = 0
 +
body = _NotHome
 +
prestige = Trivial
 +
}
 +
CONSTRAINT
 +
{
 +
// disable all but home
 +
type = SITUATION
 +
value = 0
 +
body = _NotHome
 +
prestige = Significant
 +
}
 +
CONSTRAINT
 +
{
 +
type = REPEATABILITY
 +
value = ALWAYS
 +
prestige = Trivial
 +
}
 +
CONSTRAINT
 +
{
 +
type = REPEATABILITY
 +
value = BODYANDSITUATION
 +
prestige = Significant
 +
}
 +
CONSTRAINT
 +
{
 +
type = REPEATABILITY
 +
value = ONCEPERPART
 +
prestige = Exceptional
 +
}
 +
CONSTRAINT
 +
{
 +
type = ALTITUDEENV
 +
test = GT
 +
value = 4000
 +
prestige = Trivial
 +
}
 +
CONSTRAINT
 +
{
 +
type = ALTITUDEENV
 +
test = LT
 +
value = 8000
 +
prestige = Trivial
 +
}
 +
CONSTRAINT
 +
{
 +
type = ALTITUDEENV
 +
test = GT
 +
value = 2000
 +
prestige = Significant
 +
}
 +
CONSTRAINT
 +
{
 +
type = ALTITUDEENV
 +
test = LT
 +
value = 4000
 +
prestige = Significant
 +
}
 +
CONSTRAINT
 +
{
 +
type = ALTITUDEENV
 +
test = GT
 +
value = 1000
 +
prestige = Exceptional
 +
}
 +
CONSTRAINT
 +
{
 +
type = ALTITUDEENV
 +
test = LT
 +
value = 2000
 +
prestige = Exceptional
 +
}
 +
CONSTRAINT
 +
{
 +
type = ALTITUDE
 +
test = GT
 +
value = 0 // this just registers altitude as something to care about
 +
situationMask = 8
 +
}
 +
CONSTRAINT
 +
{
 +
type = ALTITUDE
 +
test = LT
 +
value = 300000
 +
situationMask = 16
 +
body = _NotSun
 +
}
 +
CONSTRAINT
 +
{
 +
type = ALTITUDE
 +
test = LT
 +
value = 600000
 +
situationMask = 32
 +
body = _NotSun
 +
}
 +
CONSTRAINT
 +
{
 +
type = SPEED
 +
test = GT
 +
value = 0
 +
situationMask = 8
 +
prestige = Trivial
 +
}
 +
CONSTRAINT
 +
{
 +
type = SPEED
 +
test = LT
 +
value = 600
 +
situationMask = 8
 +
prestige = Trivial
 +
}
 +
CONSTRAINT
 +
{
 +
type = SPEED
 +
test = GT
 +
value = 0
 +
situationMask = 8
 +
prestige = Significant
 +
}
 +
CONSTRAINT
 +
{
 +
type = SPEED
 +
test = LT
 +
value = 900
 +
situationMask = 8
 +
prestige = Significant
 +
}
 +
CONSTRAINT
 +
{
 +
type = SPEED
 +
test = GT
 +
value = 300
 +
situationMask = 8
 +
prestige = Exceptional
 +
}
 +
CONSTRAINT
 +
{
 +
type = SPEED
 +
test = LT
 +
value = 1200
 +
situationMask = 8
 +
prestige = Exceptional
 +
}
 +
CONSTRAINT
 +
{
 +
type = SPEEDENV
 +
test = LT
 +
value = 200
 +
prestige = Trivial
 +
}
 +
}</pre>
 +
|-
 +
|
 +
 
 +
=== ModuleWheel ===
 +
The better version of landingGear, with lots more options for the operation of wheels, including adding power, steering, and damage information.
 +
{|class="wikitable"
 +
! variable !! example !! definition
 +
|-
 +
| hasMotor ||
 +
* true
 +
* false
 +
|| specifies whether the wheel has a powered propulsion system 
 +
|-
 +
| resourceName ||
 +
* ElectricCharge
 +
|| specifies the resource(s) used by powered propulsion system
 +
|-
 +
| resourceConsumptionRate ||
 +
* 1.0
 +
|| specifies the rate of consumption of resources for the powered propulsion system in units/second
 +
|-
 +
| canSteer ||
 +
* true
 +
* false
 +
|| specifies whether this wheel is steerable
 +
|-
 +
| controlAxisType ||
 +
* Forward
 +
|| If steerable, specifies the axis type
 +
|-
 +
| steeringModeType || 
 +
* AutomaticSteer
 +
* TankSteer
 +
|| uncertain: may refer to rack-and-pinion versus Track-type steering
 +
|-
 +
| brakeTorque ||
 +
* 300
 +
|| the dV (in m/s) of torque applied when using the breaks 
 +
|-
 +
| brakeSpeed ||
 +
* 1.2
 +
|| the dV (in m/s) that braking will slow the vehicle under optimum conditions
 +
|-
 +
| impactTolerance ||
 +
* 2000 
 +
|| dV that this part can withstand before breaking 
 +
|-
 +
| overSpeedDamage ||
 +
* 60
 +
|| uncertain.  possibly reserved for future use, possible that this is the amount of dV of damage applied to this part whenever it exceeds it's rated speed
 +
|-
 +
| WHEEL || {}  || 
 +
|-
 +
| wheelName ||
 +
* wheel
 +
|| Internal name of the wheel
 +
|-
 +
| wheelColliderName ||
 +
* wheelCollider
 +
|| Internal name of the collider mesh for the wheel
 +
|-
 +
| suspensionTransformName ||
 +
* suspensionTraverse
 +
|| Animation for suspension usage
 +
|-
 +
| suspensionNeutralPointName ||
 +
* suspensionNeutralPoint
 +
|| Animation for the neutral point of the suspension
 +
|-
 +
| damagedObjectName ||
 +
* bustedwheel
 +
|| If you break it, you bought, and this is what you'll call it
 +
|-
 +
| rotateX ||
 +
* 0
 +
||
 +
|-
 +
| rotateY ||
 +
* 1
 +
||
 +
|-
 +
| rotateZ ||
 +
* 0
 +
||
 +
|-
 +
| steeringCurve || {}  || 
 +
keys, 0 16
 +
10 9
 +
30 2
 +
|-
 +
| torqueCurve || {} || 
 +
keys
 +
0 250 0 0
 +
20 100 0 0
 +
30 14 0 0
 +
34 0 0 0
 +
 
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = ModuleWheel
 +
hasMotor = true
 +
resourceName = ElectricCharge
 +
        resourceConsumptionRate = 0.5
 +
canSteer = true
 +
controlAxisType = Forward
 +
steeringModeType = AutomaticSteer
 +
brakeTorque = 180
 +
brakeSpeed = 1.0
 +
impactTolerance = 65
 +
overSpeedDamage = 20
 +
 
 +
WHEEL
 +
{
 +
    wheelName = wheel
 +
    wheelColliderName = wheelCollider
 +
    suspensionTransformName = suspensionTraverse
 +
    suspensionNeutralPointName = suspensionNeutralPoint
 +
    damagedObjectName = bustedwheel
 +
    rotateX = 0
 +
    rotateY = 1
 +
    rotateZ = 0
 +
}
 +
 
 +
steeringCurve
 +
  {
 +
   key = 0 18
 +
key = 15 6
 
  }
 
  }
 
+
 
torqueCurve
+
torqueCurve
{
+
{
  key = 0 170 0 0  
+
  key = 0 170 0 0  
  key = 2.5 100 0 0
+
  key = 2.5 100 0 0
  key = 12 0 0 0
+
  key = 12 0 0 0
}
+
}
 
+
 
 
+
 
}</pre>
+
}</pre>
|-
+
|-
|
+
|
 
+
 
=== RetractableLadder ===
+
=== MultiModeEngine ===
 +
Specifies that this part is an engine with multiple modes.  Added in [0.90], it allows for engines that use different types of resources and provides different flight characteristics depending on which mode it is operating in.  This module defines the different modes and passes them to moduleEnginesFX.
 +
{|class="wikitable"
 +
! variable !! example !! definition
 +
|-
 +
| primaryEngineID ||   
 +
* AirBreathing
 +
* ClosedCycle
 +
|| this is passed to ModuleEnginesFX to determine the properties for this mode
 +
|-
 +
| secondaryEngineID ||   
 +
* AirBreathing
 +
* ClosedCycle
 +
|| this is passed to ModuleEnginesFX to determine the properties for this mode
 +
|-
 +
|}
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = MultiModeEngine
 +
primaryEngineID = AirBreathing
 +
secondaryEngineID = ClosedCycle
 +
}
 +
 
 +
</pre>
 +
 
 +
 
 +
|-
 +
|
 +
 
 +
=== RetractableLadder ===
 +
Just like the name implies, this module is attached to parts that are or contain a retractable or collapsible ladder.
 +
{|class="wikitable"
 +
! variable !! example !! definition
 +
|-
 +
| ladderAnimationRootName ||   
 +
* TelusBay
 +
* Telescopic ladder
 +
|| name of the beginning animation for this module
 +
|-
 +
| ladderColliderName ||
 +
* ladderCollider
 +
|| name of the collider mesh for this module
 +
|-
 +
| ladderRetractAnimationName ||
 +
* Retract
 +
|| name of the retraction animation for this module
 +
|}
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = RetractableLadder
 +
 +
ladderAnimationRootName = TelusBay
 +
ladderColliderName = ladderCollider
 +
ladderRetractAnimationName = Retract
 +
}
 +
</pre>
 +
|-
 +
|
 +
|}
 +
 
 +
== MODULES FROM MODS ==
 +
Defining a module is a task in and of itself and one that I'm sure has already been covered in other places.  Many modules defined by mods are duplicating effects that could be created with stock modules, but for one reason or another, the mod owner has decided to create their own modules (possibly for degree of control, possibly because the stock module didn't quite do everything they needed).  In any event, I've looked at some of the Mod modules, and detailed them below.  By mod, they are:
 +
 
 +
=== Kerbal Assembly System ===
 +
Kerbal Assembly System is most noted for adding the option to grab and move parts using Kerbals.  It also allows for storage of certain parts in containers.
 +
 
 +
MODULE:NEEDS[KAS]
 +
for the module
 +
 
 +
{|
 +
! !!
 +
|-
 +
|
 +
{|class="wikitable"
 +
==== KASModuleContainer ====
 +
Specifies that this part can serve as a container for other parts, and how much storage space the part has.  Also included is an interaction distance.  Kerbals must be this close or closer to open the container.  Lots of sounds.
 +
! variable !! example !! definition
 +
|-
 +
| maxSize || 
 +
* 5
 +
* 20
 +
* 80
 +
|| specifies the size of the container relative to Kerbal Attachment System parts.
 +
|-
 +
| maxOpenDistance ||
 +
* 1
 +
* 5
 +
|| Kerbals must be at least this close (in meters) in order to open the container
 +
|-
 +
| sndStorePath || 
 +
* KAS/Sounds/hookBayStore
 +
|| sound stuff
 +
|-
 +
| sndOpenPath || 
 +
* KAS/Sounds/containerOpen
 +
|| sound stuff for opening the container 
 +
|-
 +
| sndClosePath ||
 +
* KAS/Sounds/containerClose
 +
|| sound stuff for closing the container
 +
|-
 +
| bipWrongSndPath || 
 +
* KAS/Sounds/bipwrong
 +
|| sound stuff
 +
|-
 +
|}
 +
||
 +
<pre>MODULE
 +
{
 +
name = KASModuleContainer
 +
maxSize = 80
 +
}
 +
</pre>
 +
|-
 +
 
 +
|
 +
{|class="wikitable"
 +
==== ModuleConnectedLivingSpace ====
 +
! variable !! example !! definition
 +
|-
 +
| passable ||
 +
* true
 +
* false
 +
|| specifies whether Kerbals can commute to parts connected to this part
 +
|-
 +
| passableWhenSurfaceAttached ||
 +
* true
 +
* false
 +
|| can be passed through even when connected to the ground?
 +
|-
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = ModuleConnectedLivingSpace
 +
passable = true
 +
passableWhenSurfaceAttached = true
 +
}
 +
</pre>
 +
|-
 +
|
 +
 
 +
{|class="wikitable"
 +
 
 +
==== KASModulePartBay ====
 +
! variable !! example !! definition
 +
|-
 +
| BAY || {} ||
 +
{|class="wikitable"
 +
|-
 +
| attachNode ||
 +
* top
 +
* bottom
 +
|| attachment placement
 +
|-
 +
| type ||
 +
* containerA
 +
* container
 +
* hookBay
 +
||
 +
|-
 +
|}
 +
|-
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = KASModulePartBay
 +
BAY
 +
{
 +
  attachNode = top
 +
  type = containerA
 +
  type = containerB
 +
}
 +
}
 +
</pre>
 +
|-
 +
|
 +
{|class="wikitable"
 +
 
 +
==== KASModulePort ====
 +
! variable !! example !! definition
 +
|-
 +
| attachNode ||
 +
* top
 +
|| unsure
 +
|-
 +
| nodeType ||
 +
* kasplug
 +
|| unknown
 +
|-
 +
| breakForce ||
 +
* 30
 +
|| unknown
 +
|-
 +
| nodeTransformName ||
 +
* plugNode
 +
|| unknown
 +
|-
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = KASModulePort
 +
attachNode = top
 +
nodeType = kasplug
 +
breakForce = 30
 +
nodeTransformName = plugNode
 +
}
 +
 
 +
</pre>
 +
|-
 +
|
 +
{|class="wikitable"
 +
 
 +
==== KASModuleAnchor ====
 +
! variable !! example !! definition
 +
This module will set a custom drag value when the part touch the ground.
 +
|-
 +
| groundDrag ||
 +
* 500
 +
|| Drag value of the anchor when it touch the ground
 +
|-
 +
| bounciness ||
 +
* 0
 +
|| Bounciness of the anchor
 +
|-
 +
| dynamicFriction ||
 +
* 0.8
 +
|| Dynamic friction of the anchor when it touch the ground
 +
|-
 +
| staticFriction ||
 +
* 0.8
 +
|| Static friction of the anchor when it touch the ground
 +
|-
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = KASModuleAnchor
 +
groundDrag = 500
 +
bounciness = 0
 +
dynamicFriction = 0.8
 +
staticFriction = 0.8
 +
}
 +
 
 +
</pre>
 +
|-
 +
|
 +
{|class="wikitable"
 +
 
 +
==== KASModuleMagnet ====
 +
This module will make the part acting like a magnet, collided part will be automatically attached. Only work when attached on a winch.
 +
! variable !! example !! definition
 +
|-
 +
| breakForce ||
 +
* 10
 +
|| The force that needs to be applied on the magnet joint to break.
 +
|-
 +
| attachToEva ||
 +
* true
 +
* false
 +
|| Disable/enable attraction of eva
 +
|-
 +
| minFwdDot ||
 +
* 0.998
 +
|| Minimum magnet alignement needed to attach (1 is perfectly aligned)
 +
|-
 +
| powerDrain ||
 +
* 4
 +
|| Power consumption when the magnet is used
 +
|-
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = KASModuleMagnet
 +
breakForce = 10
 +
attachToEva = False
 +
minFwdDot = 0.998
 +
powerDrain = 4
 +
}
 +
 
 +
</pre>
 +
|-
 +
|
 +
{|class="wikitable"
 +
 
 +
==== KASModuleStrut ====
 +
! variable !! example !! definition
 +
|-
 +
| nodeTransform ||
 +
* pipeNode
 +
* strutNode
 +
|| unknown
 +
|-
 +
| type ||
 +
* PipeSize1
 +
* StrutSize1
 +
|| Unkown
 +
|-
 +
| maxLength ||
 +
* 20
 +
* 8
 +
|| unknown
 +
|-
 +
| maxAngle ||
 +
* 100
 +
|| unknown
 +
|-
 +
| breakForce ||
 +
* 10
 +
|| unknown
 +
|-
 +
| allowDock ||
 +
* true
 +
* false
 +
|| unknown
 +
|-
 +
| allowPumpFuel ||
 +
* true
 +
* false
 +
|| unknown
 +
|-
 +
| hasCollider ||
 +
* true
 +
* false
 +
|| unknown
 +
|-
 +
| tubeScale ||
 +
* 0.15
 +
|| unknown
 +
|-
 +
| jointScale ||
 +
* 0.15
 +
|| unknown
 +
|-
 +
| textureTiling ||
 +
* 1
 +
* 4
 +
|| unknown
 +
|-
 +
| tubeSrcType ||
 +
* Joined
 +
* Rounded
 +
|| Unknown
 +
|-
 +
| tubeTgtType ||
 +
* Joined
 +
* Rounded
 +
|| unknown
 +
|-
 +
| evaStrutPos ||
 +
* (0.05, 0.059, -0.21)
 +
|| unknown
 +
|-
 +
| evaStrutRot ||
 +
* (190.0, 0.0, 0.0)
 +
|| unknown
 +
|-
 +
| tubeTexPath ||
 +
* KAS/Textures/pipe
 +
|| unknown
 +
|-
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = KASModuleStrut
 +
nodeTransform = pipeNode
 +
type = PipeSize1
 +
maxLenght = 20
 +
maxAngle = 100
 +
breakForce = 10
 +
allowDock = true
 +
allowPumpFuel = true
 +
hasCollider = false
 +
tubeScale = 0.15
 +
jointScale = 0.15
 +
textureTiling = 1
 +
tubeSrcType = Joined
 +
tubeTgtType = Joined
 +
evaStrutPos = (0.05, 0.059, -0.21)
 +
evaStrutRot = (190.0, 0.0, 0.0)
 +
        tubeTexPath = KAS/Textures/pipe
 +
}
 +
 
 +
</pre>
 +
|-
 +
|
 +
{|class="wikitable"
 +
 
 +
==== KASModuleGrapplingHook ====
 +
This module will make the part acting like a grappling-hook, any collided part in front of the grapple will be automatically attached if the inpact is strong enough. Only work when attached on a winch.
 +
! variable !! example !! definition
 +
|-
 +
| partBreakForce ||
 +
* 6
 +
|| The force that needs to be applied on the grapple/part joint to break.
 +
|-
 +
| staticBreakForce ||
 +
* 15
 +
|| The force that needs to be applied on the grapple/static joint to break.
 +
|-
 +
| aboveDist ||
 +
* 0.05
 +
|| Distance from the attach point to the center of the part
 +
|-
 +
| forceNeeded ||
 +
* 4
 +
|| Collision force needed to attach the grapple.
 +
|-
 +
| attachToPart ||
 +
* true
 +
* false
 +
|| Disable/enable attachment on parts.
 +
|-
 +
| rayDir  ||
 +
* (0,-1,0)
 +
|| Direction of the attach raycast. Attachment will be done only with objects in that direction.
 +
|-
 +
| rayLenght ||
 +
* 0.8
 +
|| Attach ray lenght.
 +
|-
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = KASModuleGrapplingHook
 +
partBreakForce = 6
 +
staticBreakForce = 15
 +
aboveDist = 0.05
 +
forceNeeded = 4
 +
attachToPart = true
 +
rayDir = (0,-1,0)
 +
rayLenght = 0.8
 +
}
 +
 
 +
</pre>
 +
|-
 +
|
 +
{|class="wikitable"
 +
 
 +
==== KASModuleWinch ====
 +
! variable !! example !! definition
 +
|-
 +
| maxLenght ||
 +
* 50
 +
* 80
 +
|| unknown
 +
|-
 +
| cableSpring ||
 +
* 1000
 +
||
 +
|-
 +
| cableDamper ||
 +
* 0.1
 +
||
 +
|-
 +
| cableWidth ||
 +
* 0.04
 +
||
 +
|-
 +
| motorMaxSpeed ||
 +
* 2
 +
||
 +
|-
 +
| motorAcceleration ||
 +
* 0.05
 +
||
 +
|-
 +
| powerDrain ||
 +
* 0.5
 +
* 0.3
 +
||
 +
|-
 +
| headTransformName ||
 +
* head
 +
||
 +
|-
 +
| headPortNodeName ||
 +
* portNode
 +
||
 +
|-
 +
| connectedPortNodeName ||
 +
* bottom
 +
* front
 +
||
 +
|-
 +
| anchorNodeName ||
 +
* anchorNode
 +
||
 +
|-
 +
| evaGrabHeadPos ||
 +
* (0.05, 0.01, -0.11)
 +
||
 +
|-
 +
| evaGrabHeadDir ||
 +
* (0,0,1)
 +
||
 +
|-
 +
| evaDropHeadPos ||
 +
* (0.05, 0.01, -0.16)
 +
||
 +
|-
 +
| evaDropHeadRot ||
 +
* (180.0, 0.0, 0.0)
 +
||
 +
|-
 +
| ejectEnabled ||
 +
* true
 +
* false
 +
||
 +
|-
 +
| ejectForce ||
 +
* 20
 +
||
 +
|-
 +
| lockMinDist ||
 +
* 0.12
 +
||
 +
|-
 +
| lockMinFwdDot ||
 +
* 0.90
 +
||
 +
|-
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
name = KASModuleWinch
 +
maxLenght = 50
 +
cableSpring = 1000
 +
cableDamper = 0.1
 +
cableWidth = 0.04
 +
motorMaxSpeed = 2
 +
motorAcceleration = 0.05
 +
powerDrain = 0.5
 +
headTransformName = head
 +
headPortNodeName = portNode
 +
connectedPortNodeName = bottom
 +
anchorNodeName = anchorNode
 +
evaGrabHeadPos = (0.05, 0.01, -0.11)
 +
evaGrabHeadDir = (0,0,1)
 +
evaDropHeadPos = (0.05, 0.01, -0.16)
 +
evaDropHeadRot = (180.0, 0.0, 0.0)
 +
ejectEnabled = true
 +
ejectForce = 20
 +
lockMinDist = 0.12
 +
lockMinFwdDot = 0.90
 +
}
 +
 
 +
</pre>
 +
|-
 +
|}
 +
 
 +
 
 +
 
 +
=== Universal Storage ===
 +
Universal Storage.  By the by:  Excellently documented!
 +
 
 +
{|
 +
! !!
 +
|-
 +
|
 +
{|class="wikitable"
 +
==== ModuleAnimator ====
 +
Animation module.
 +
! variable !! example !! definition
 +
|-
 +
| animationName || 
 +
* Take 001
 +
|| Name of the animation from the model.
 +
|-
 +
| guiEnableName ||
 +
* Wedge Locks Off
 +
|| Part tooltip name to display for deployment
 +
|-
 +
| guiDisableName || 
 +
* Wedge Locks Off
 +
|| Part tooltip name to display for retraction
 +
|-
 +
| actionEnableName || 
 +
* Wedge Locks Off
 +
|| Action group name for deployment 
 +
|-
 +
| actionDisableName ||
 +
* Wedge Locks On
 +
|| Action group name for retraction
 +
|-
 +
| animationSpeed || 
 +
* 100000
 +
|| Speed of the animation
 +
|-
 +
| oneShot || 
 +
* true
 +
* false
 +
|| If the animation can only be played once
 +
|-
 +
| activeEditor || 
 +
* true
 +
* false
 +
|| If the part toolitp is visible in the editor
 +
|-
 +
| activeFlight || 
 +
* true
 +
* false
 +
|| If the part tooltip is visible in flight
 +
|-
 +
| activeUnfocused || 
 +
* true
 +
* false
 +
|| If the part tooltip is visible from EVA
 +
|-
 +
| unfocusedRange || 
 +
* 5
 +
|| EVA visible range
 +
|-
 +
|}
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
  name = ModuleAnimator
 +
  animationName = Take 001
 +
  guiEnableName = Wedge Locks Off
 +
  guiDisableName = Wedge Locks On
 +
  actionEnableName = Wedge Locks Off
 +
  actionDisableName = Wedge Locks On
 +
 
 +
  animationSpeed = 100000
 +
  oneShot = false
 +
  activeEditor = true
 +
  activeFlight = false
 +
  activeUnfocused = false
 +
  unfocusedRange = 5
 +
}
 +
</pre>
 +
|-
 +
 
 +
|
 +
{|class="wikitable"
 +
=== Umbra Space Industries:Regolith ===
 +
Note: DEPRECATED (use stock resource converter's)
 +
==== REGO_ModuleResourceConverter ====
 +
! variable !! example !! definition
 +
|-
 +
| ConverterName ||
 +
* Water Electrolizer
 +
|| Flavor Text
 +
|-
 +
| StartActioName ||
 +
* Start Water Electrolizer
 +
|| Flavor Text
 +
|-
 +
| StopActioName ||
 +
* Stop Water Electrolizer
 +
|| Flavor Text
 +
|-
 +
| RecipeInputs ||
 +
* ElectricCharge, 14, Water, 0.0000176697
 +
||
 +
|-
 +
| RecipeOutputs ||
 +
* Hydrogen, 0.0219907427, True, Oxygen, 0.0109953713, False
 +
||
 +
|-
 +
|}
 +
 
 +
||
 +
<pre>
 +
MODULE
 +
{
 +
  name = REGO_ModuleResourceConverter
 +
  ConverterName = Water Electrolizer
 +
  StartActionName = Start Water Electrolizer
 +
  StopActionName = Stop Water Electrolizer
 +
  RecipeInputs = ElectricCharge, 14, Water, 0.0000176697
 +
  RecipeOutputs = Hydrogen, 0.0219907427, True, Oxygen, 0.0109953713, False
 +
}
 +
</pre>
 +
|-
 +
|}
 +
 
 +
=== Umbra Space Industries: ExpPack ===
 +
USI is widely known for building an entire add-on family of interconnected and cross-supported parts and extensions.  Here we detail mods added by the ExpPack.
 +
 
 +
{|
 +
! !!
 +
|-
 +
|
 
{|class="wikitable"
 
{|class="wikitable"
! variable !! example !! definition
+
==== USI_ClearIVA ====
|-
+
No calls.
|-
 
| ladderAnimationRootName ||   
 
* TelusBay
 
* Telescopic ladder
 
|| name of the beginning animation for this module
 
|-
 
| ladderColliderName ||
 
* ladderCollider
 
|| name of the collider mesh for this module
 
|-
 
| ladderRetractAnimationName ||
 
* Retract
 
|| name of the retraction animation for this module
 
 
|}
 
|}
 
||
 
||
Line 1,800: Line 3,582:
 
MODULE
 
MODULE
 
{
 
{
  name = RetractableLadder
+
  name = USI_ClearIVA
 
ladderAnimationRootName = TelusBay
 
ladderColliderName = ladderCollider
 
ladderRetractAnimationName = Retract
 
 
}
 
}
 
</pre>
 
</pre>
 
|-
 
|-
|
 
 
== MODULES POSSIBLY FROM MODS ==
 
defining a module has it's own problems, of course, and I'm no expert, but I did find this along the way:
 
 
=== ModuleLiftingSurface ===
 
{|class="wikitable"
 
! variable !! example !! definition
 
|-
 
| deflectionLiftCoeff ||  || 
 
0.3 (BSLmk2ScienceFuselage)
 
|-
 
| dragAtMaxAoA ||  || 
 
0.15 (BSLmk2ScienceFuselage)
 
|-
 
| dragAtMinAoA ||  || 
 
0.1 (BSLmk2ScienceFuselage)
 
 
|}
 
|}
  
||
+
[[Category:Documentation]][[Category:Modding]]
<pre>
 
</pre>
 
|-
 
|
 
 
 
MODULE:NEEDS[KAS]
 
for the module
 
=== KASModuleContainer ===
 
{|class="wikitable"
 
! variable !! example !! definition
 
|-
 
|-
 
| maxSize ||  || 
 
specifies the size of the container relative to Kerbal Attachment System parts.
 
|-
 
| maxOpenDistance ||  || 
 
|-
 
| sndStorePath ||  || 
 
KAS/Sounds/hookBayStore
 
|-
 
| sndOpenPath ||  || 
 
KAS/Sounds/containerOpen
 
|-
 
| sndClosePath ||  || 
 
KAS/Sounds/containerClose
 
|-
 
| bipWrongSndPath ||  || 
 
KAS/Sounds/bipwrong
 
|}
 

Latest revision as of 05:48, 5 July 2021

STOCK MODULES

Modules define what specific parts can do. They are generally calls to C-coded or hard-coded functions that define what functionality these parts have in-game. If you are a new part designer, modder, engineer, or someone else who makes parts, please check the STOCK modules list before designing a new module. Each additional module increases the CPU workload and reduces FPS and Physics. All 0.90 stock modules are now included.

name names define the module in use and are a general indication of what the module subtype does. Specific variables are associated with each [module].[name]. For example, the Clamp-O-Tron Docking Port Sr. has the MODULE.name ModuleDockingNode and its' associates variables are [referenceAttachNode] and [nodeType]. Some [MODULE]s share variables with other modules, which can make deciphering their purpose difficult.
explanation code examples

CModuleFuelLine

No known arguments or variables at this time. This module is used by fuelLine, presumably to specify that it is fuel Transfer enabled. More research is clearly called for. This module is new in 0.90.

MODULE
{
 name = CModuleFuelLine
}

CModuleLinkedMesh

This module is new in 0.90 and is used by fuelLine and strutConnector, presumably to created the variable length connectors between two parts (and add end caps on both sides).

variable example definition
lineObjName
  • obj_line
  • obj_strut
specifies whether there is a flag displayed on the exterior surface of the object.
targetAnchorName
  • obj_targetAnchor
Unknown
anchorCapName
  • obj_AnchorCap
name of the part on the source part that this part attaches from
targetCapName
  • obj_targetCap
name of the part on the target part to which this mesh attaches
MODULE
{
 name = CModuleLinkedMesh
 
 lineObjName = obj_line
    targetAnchorName = obj_targetAnchor
    anchorCapName = obj_anchorCap
    targetCapName = obj_targetCap 
}

CModuleStrut

This module is new in 0.90 and is used by strutConnector, presumably to indicate that it is a structural support part.

variable example definition
linearStrength
  • 100
  • 150
the push/pull strength of the strut
angularStrength
  • 100
  • 150
the sheering strength of the strut
MODULE
{
 name = CModuleStrut
 
 linearStrength = 150
 angularStrength = 150
}

FlagDecal

Parts with this module have a place for a flag on their sides. You don't have to turn it on, but this is how it gets there.

variable example definition
textureQuadName
  • flagTransform
specifies whether there is a flag displayed on the exterior surface of the object.
MODULE
{
      name = FlagDecal
      textureQuadName = flagTransform
}

FXModuleAnimateThrottle

Animation for engines and engine bells showing them as they fire up and operate, based on the amount of throttle applied. See ion Engines for a good example.

variable example definition
animationName
  • colorAnimation
specifies the animation to be used
depondOnEngineState
  • True
  • False
specifies whether the animation is dependent on the throttle
responseSpeed
  • 0.5
specifies the rate at which the animation reacts to the change in engine state
MODULE
{
      name = FXModuleAnimateThrottle
      animationName = colorAnimation
      dependOnEngineState = True
      responseSpeed = 0.5
}

FXModuleConstrainPosition

Copies the rotation and/or position (matchRotation/matchPosition) from targetName to moversName. Used by for example wheels to copy the rotation of the steering part to the wheel collider.

variable example definition
matchRotation
  • true
  • false
Should targetNames rotation be applied to moversName?
matchPosition
  • true
  • false
Should targetName's position be applied to moversName?
CONSTRAINFX {} unknown
targetName
  • Steering
  • steering
gameObject to copy targetName's world position/rotation of.
moversName
  • wheelCollider
  • steering
gameObject to apply targetName's world position/rotation to.
MODULE
{
	name = FXModuleConstrainPosition
	matchRotation = true
	matchPosition = false
	CONSTRAINFX
	{
		targetName = steering
		moversName = lateral
	}
}

FXModuleLookAtConstraint

Makes two gameObject "look" at each other, for example in suspensions where the piston must "look" at the cylinder. The gameObjects must be aligned so it rotates around it's local X axis and looks down it's local Z axis.

variable example definition
CONSTRAINLOOKFX {}
targetName
  • susp2-1
gameObject to target rotatorsName at.
rotatorsName
  • susp2-2
gameObject to rotate so that it looks at targetName
MODULE
{
 name = FXModuleLookAtConstraint
 CONSTRAINLOOKFX
 {
  targetName = susp2-1
  rotatorsName = susp2-2
 }
 CONSTRAINLOOKFX
 {
  targetName = susp2-2
  rotatorsName = susp2-1
 }
 CONSTRAINLOOKFX
 {
  targetName = susp1-2
  rotatorsName = susp1-1
 }
 CONSTRAINLOOKFX
 {
  targetName = susp1-1
  rotatorsName = susp1-2
 }
}

KerbalSeat

This module makes the part have an EXTERIOR seat.

variable example definition
seatPivotName
  • seatPivot
Unknown
ejectDirection
  • 0, 1, 0.2
specifies the direction from which your Kerbal will exit the vehicle. Try to line up with a hatch!
MODULE
{
 name = KerbalSeat
 seatPivotName = seatPivot  
 ejectDirection = 0, 1, 0.2
}

LaunchClamp

This module enables the part to hold a vessel in suspension on the launch pad.

variable example definition
trf_towerPivot_name
  • obj_girdercap
specifies the model used for the pivot point
trf_towerStretch_name
  • obj_girder
specifies the model for the ground to pivot girder
trf_anchor_name
  • obj_ground
specifies the model for the ground mount point
trf_animationRoot_name
  • launchclamp
specifies the base animation
anim_decouple_name
  • launchclamp
specifies the animation for the release of the clamp
MODULE
{
    name = LaunchClamp
 
 trf_towerPivot_name = obj_girdercap
 trf_towerStretch_name = obj_girder
 trf_anchor_name = obj_ground
 
 trf_animationRoot_name = launchclamp
 anim_decouple_name = launchclamp
}

ModuleAlternator

Specifies that this part produced a resource, based on the percentage of thrust produced by the engine.

variable example
RESOURCE
variable example definition
name ElectricCharge name of the resource produced
rate 1.0 rate at which the resource is produced at 100% thrust, expressed in units/second
MODULE
{
 name = ModuleAlternator 
 RESOURCE
 {
  name = ElectricCharge
  rate = 5.0
 }
}

ModuleAnchoredDecoupler

This module specifies that the part is attached (anchored) to another part, and will decouple from yet a third part, forcing the third part away from it.

variable example definition
anchorName
  • anchor
specifies the name of the anchored part
ejectionForce
  • 450
dV applied to part upon separation
explosiveNodeID
  • srf
  • top
specifies the location of the explosion.
MODULE
{
    name = ModuleAnchoredDecoupler
    anchorName = anchor
    ejectionForce = 450
 explosiveNodeID = srf
}

ModuleAnimateGeneric

Generic Animations will be applied to parts with this module. This module is slowly replacing other animation modules as progression is made towards the release version of KSP.

variable example definition
animationName
  • Deploy
  • CrewCabinLight
  • dish
  • dockingring
  • dockingporthull
specifies the name of the animation to be used
isOneShot
  • false
specifies whether the animation can occur only once
startEventGUIName Flavor text

to describe turning the animation to its 'On' State

endEventGUIName Flavor text

to describe turning the animation to its 'Off' State

actionGUIName Flavor text

to describe switching the animation between it's 'on' and 'off' states

allowManualControl
  • true
  • false
specifies whether the part can be manually animated
actionAvailable
  • true
  • false
 ???
eventAvailableEditor
  • true
  • false
specifies whether the animation can be toggled in the VAB/SPH scene
eventAvailableFlight
  • true
  • false
specifies whether the animation can be toggled in the flight scene
eventAvailableEVA
  • true
  • false
specifies whether the animation can be toggled by a Kerbal on EVA near the vessel or part containing the animation
evaDistance
  • 5
  • 10
specifies the maximum distance (in meters) from which a Kerbal on EVA can toggle an animation on the part
MODULE
{
   name = ModuleAnimateGeneric
   animationName = dish
   isOneShot = false
   
 startEventGUIName = Extend
 endEventGUIName = Retract
 actionGUIName = Toggle Antenna
}

ModuleAnimateHeat

This module specifies that heating animation will be applied to this part.

variable example definition
ThermalAnim
  • HeatAnimationEmissiveLiquidEngine3
  • HeatAnimationEmissiveTurbofan
  • HeatAnimationEmissiveJet
  • overheat
animation for applying heat to an object
MODULE
{
      name = ModuleAnimateHeat
      ThermalAnim = HeatAnimatioEmissiveLiquidEngine3
}

ModuleAsteroid

Because it has no procedures or calls, is new in [0.90] and only appears on a part that you must hack to have available, it is impossible to say for certain what this module does, but it has something to do with being an asteroid. no procedures or calls

MODULE
{
 name = ModuleAsteroid 
}

ModuleCargoBay

Allows a cargo bay to shield its contents from airflow and heat.

variable example definition
DeployModuleIndex
  • 0
  • 1
  • 2
Specifies the index (starting with zero) of the MODULE which controls whether the bay is open or closed. Said MODULE must implement IScalarModule (e.g. ModuleAnimateGeneric and its descendents, or ModuleAnimatedDecoupler from AnimatedDecouplers).
closedPosition
  • 0
  • 1
Specifies whether the cargo bay is closed by default (0) or open by default (1).
lookupRadius
  • 1.25
Radius within which the part should search for parts to be shielded.
lookupCenter
  • 0,0.5,0
  • 1,0,0
Optional (default is 0,0,0). Specifies the point from which the search is centered. Rays are cast from here; any parts that are struck are shielded, while the rays stop when the part's own colliders are hit.
  • nodeOuterForeID
  • nodeOuterAftID
  • nodeInnerForeID
  • nodeInnerAftID
  • top
  • bottom
  • top2
  • bottom2
Optional. For hollow cargo bay parts without end walls (e.g. Mk2 Cargo Bay CRG-04), node IDs are given to determine where the cargo bay ends.
MODULE
{
    name = ModuleCargoBay
    DeployModuleIndex = 1
    closedPosition = 1
    lookupRadius = 1

    nodeOuterForeID = top
    nodeOuterAftID = bottom
    nodeInnerForeID = top2
    nodeInnerAftID = bottom2
}

ModuleCommand

Applies Command to vessels

variable example definition
minimumCrew
  • 0
  • 1
  • 2
Specifies the minimum number of crew needed to operate this module.
RESOURCE
name ElectricCharge This is the name of that resource
rate 15.0 and the rate in units/second of resource consumed
If this Module requires a resource
MODULE
{
 name = ModuleCommand
 minimumCrew = 1
}

ModuleControlSurface

This module gives the part the ability to respond to inputs, generally used for aerodynamic parts to expose more or less effective surface to lift and braking forces in atmospheres.

variable example definition
dragCoeff * 0.5

this value overrides the maximum_drag value

deflectionLiftCoeff * 0.7 specifies the Coefficient of lift for the part
ctrlSurfaceRange * 20 specifies the degrees of operation for the part
ctrlSurfaceArea * 0.95 specifies how much of the part affects lift
MODULE
{
 name = ModuleControlSurface
 dragCoeff = 0.5
 deflectionLiftCoeff = 0.7
 ctrlSurfaceRange = 20
 ctrlSurfaceArea = 0.95
}

ModuleDataTransmitter

This module specifies that the part acts as a transmitter of data, typically an antenna of some sort, for broadcasting science data back to the KSC.

variable example definition
antennaType
  • DIRECT
  • RELAY
whether the antenna is capable of acting as a relay
packetInterval
  • 0.18
  • 0.4
  • 0.3
Mits per second
packetSize
  • 2
Mits per packet
packetResourceCost
  • 20
  • 10
  • 12.5
Resource per packet
requiredResource
  • ElectricCharge
Required resource (usually ElectricCharge)
DeployFxModules
  • 0
Deployment
ProgressFxModules
  • 1
Animations that play while transmitting
MODULE
{
 name = ModuleDataTransmitter

 antennaType = DIRECT
 packetInterval = 0.18
 packetSize = 2
 
 packetResourceCost = 20.0
 requiredResource = ElectricCharge
  
 DeployFxModules = 0
}

ModuleDecouple

ModuleDecouple is a slightly upgraded version of ModuleAnchoredDecoupler, and may replace it in the future. Allows for decouplers that separate from both parts to which it is attached.

variable sample definition
isOmniDecoupler
  • true
  • false
Specifies whether this decoupler separates on both ends or not. Defaults to false.
ejectionForce
  • 100
specifies the DeltaV with which the part separates
explosiveNodeID
  • top
  • srf
for non-OmniDecouplers, specifics the Node of separation
MODULE
{
 name = ModuleDecouple
 ejectionForce = 250
 explosiveNodeID = srf
}

ModuleDeployableSolarPanel

Solar panels cannot deploy without this module. May be possible to use for other modules which unfold. Optionally specifies whether the part will automatically turn to face the sun. This is one place where you can say how a part breaks.

variable example definition
animationName
  • solarpanels
  • solarpanels2
  • solarpanels4
  • altsolarpanelbase
  • bigsolarpanel

unknown for sure. Assumed to refer to an animation describing part transformation from its closed state to its open state. known parameters are:

sunTracking
  • true
  • false
Indicates whether the animation will turn the panel towards the sun.
raycastTransformName
  • suncatcher
Specifies the GameObject in Unity with Z+ forward facing the sun that will act as the solar panel.
pivotName
  • suncatcher
Specifies the object in Unity which will act as the rotation point for the solar panel sun tracking function.
isBreakable
  • true
  • false
Indicates whether the part will break on high-dynamic stress.
resourceName
  • ElectricCharge
The resource provided by this module. Any resource may be used, including resources not defined.
chargeRate
  • 10
Amount of resource provided per second at 100% output. Positive values only, please.
powerCurve

powerCurve is a special call consisting of subtypes called [key]. Each [key] uses four numbers to define what it will do at a specific distance from a source. In the case of solar panels, where powerCurve is typically used, there are typically 4 [key]s. [powerCurve] defines the rate at which resources are provided relative to the [chargeRate] and distance from the specified source (ie. Kerbol)

  • 206000000000 0.00 0 0
  • 013599840256 1.00 0 0
  • 068773560320 0.50 0 0
  • 000000000000 10.0 0 0
MODULE
{
 name = ModuleDeployableSolarPanel
 
 animationName = solarpanels2
 resourceName = ElectricCharge
 chargeRate = 2
 powerCurve
  {
  key = 206000000000 0 0 0
  key = 13599840256 1 0 0
  key = 68773560320 0.5 0 0
  key = 0 10 0 0
  }
}

ModuleDockingNode

A module for docking ports

variable example definition
referenceAttachNode
  • top
  • bottom
  • dockingNode

Specifies the node on the part that is used for the docking port, generally top or bottom. dockingNode is the name of the GameObject transform in Unity with Z+ forward.

deployAnimationController
  • 1
  • 0
Boolean
nodeType
  • size1
  • size2
  • size0
Specifies the type of node for attachment. When perform docking operations, nodes must have the same value for nodeType in order to dock with one another.
nodeTransformName
  • dockingNode
  • DOCKING
unknown
controlTransformName
  • controlNode
apparently only used for docking nodes that have related animations, see dockingPortInline
undockEjectionForce
  • 0.25
Force in d/v applied on undock
minDistanceToReEngage
  • 3.5
Docking Nodes must separate by this many meters before being able to reengage
acquireForce
  • 3.5
magnetic grip, in d/v
acquireTorque
  • 3.5
rotational magnetic grip, in d/v
acquireRange
  • 3
maximum distance to begin applying magnetic grip
captureRange
  • 1.5
maximum range to begin docking
snapRotation
  • True
  • False
specifies whether to enforce docking at multiple rotational offsets rather than a single allowable angle
snapOffset
  • 45
  • 90
  • 120
specifies what rotational offsets (in degrees) docking is allowed
acquireMinRollDot
  • 0.95
  • 0.99999
specifies the minimum angular accuracy between docking ports for applying magnetic grip; higher values imply better accuracy
captureMinRollDot
  • 0.95
  • 0.99999
specifies the minimum angular accuracy between docking ports to begin docking; higher values imply better accuracy
gendered
  • True
  • False
specifies whether to enforce gendered docking; defaults to false (androgynous)
genderFemale
  • True
  • False
if gendered (see above) is true, this specifies whether the docking port can only docking with another port of the same type but different gender; defaults to true, which means it can only dock with another port with genderFemale=false
MODULE
{
 name = ModuleDockingNode
 referenceAttachNode = top
 nodeType = size2
 undockEjectionForce = 0.25
 minDistanceToReEngage = 3.5
 acquireForce = 3.5
 acquireTorque = 3.5
 acquireRange = 3.0
 captureRange = 1.5
 snapRotation = false
}

ModuleEngines

Everything about your engine, all in one module!

variable example definition
thrustVectorTransformName
  • thrustTransform
specifies gameObject to be used as point of applied thrust, force is applied in local +Z. standard name is thrustTransform, but it can be anything as long as gameObject in the MU matches thrustVectorTransformName value in module config
throttleLocked
  • True
  • False
Used to create engines without controllable thrust.
exhaustDamage
  • True
  • False
assumed to indicate whether the exhaust from this engine will damage other parts.
ignitionThreshold
  • 0.1
minimum required resource(s) for engine to start. If engine has less than specified value in resource(s), it will not start. Think of it as if your car needs at least half full tank to start.
minThrust
  • 0
  • 10
  • 100
Minimum thrust value. Engines will be considered 'off' at or below this value.
maxThrust
  • 200
  • 215
  • 80
Just like the name implies, this is the maximum thrust a single unit of this module can produce. In order to create a more powerful engine, set this value higher.
heatProduction
  • 400
  • 900
a measure of the amount of heat energy produced per second. measured in degrees Kerbius (degrees Celsius)
fxOffset
  • 0,0,0
  • 0,0,1
3-dimensional vector coordinates specifying the location of thrust effects
useEngineResponseTime
  • True
  • False
engineAccelerationSpeed
  • 0.2
  • 0.12
engineDecelerationSpeed
  • 0.35
  • 0.21
allowShutdown
  • True
  • False
Specifies engines that cannot be turned off, regardless of whether their thrust can be controlled.
useVelocityCurve
  • True
  • False
PROPELLANT {} resource utilized in the operation of this part, generally a fuel or other propellant. Engines may use multiple propellant types.
name
  • LiquidFuel
  • Oxidizer
name of the resource consumed while this part is in operation
ratio
  • 0.9
  • 1.1
rate at which this resource is consumed, per second. Not to be confused with ratio relative to other propellants.
DrawGauge
  • true
  • false
Boolean value that indicates whether or not the 'fuel remaining' indicator in the staging selection is displayed or not.
atmosphereCurve {} specifies variances in operational efficiency
key

uses two values to specify engine efficiency relative to the depth of the atmosphere (based on Kerbin sea-level!) First number indicates the relative pressure (0 = vacuum, 1 Kerbin sea-level), second numer indicates ISP value). Translates directly to ISP. In order to make a more efficient engine, set the second number of this array higher.

velocityCurve {}

Control the degree of acceleration of an engine at specified speeds. It uses keys to generate a curve of the amount of thrust generated by the engine according to the speed of the craft. First part of the key is speed in m/s and then comes the thrust multiplier ( the effective thrust will be : maxThrust * multiplier). Used stock by jet engines.

MODULE
{	
name = ModuleEngines	
thrustVectorTransform
Name = thrustTransform	
throttleLocked = True	
exhaustDamage = True	
allowShutdown = False	
ignitionThreshold = 0.1	
minThrust = 0	
maxThrust = 18	
heatProduction = 550	
fxOffset = 0, 0, 0.02	
PROPELLANT	
{		
name = SolidFuel        
ratio = 1.0		
DrawGauge = True	
}	
atmosphereCurve 	
{   	 
key = 0 100  	 
key = 1 100 	
}	
}

ModuleEnginesFX

An updated and more customizable version of ModuleEngines. Required for and allows implementation of multi-modal engines and engines with custom exhaust FX.

variable example definition
engineID
  • LES
  • KS25
Hidden name of the engine
runningEffectName
  • running_closed
effect used for when the engine is running
thrustVectorTransformName
  • thrustTransform
  • obj_gimbal

specifies gameObject to be used as point of applied thrust, force is applied in local +Z. standard name is thrustTransform, but it can be anything as long as gameObject in the MU matches thrustVectorTransformName value in module config

exhaustDamage
  • True
  • False

Indicates whether the exhaust from this engine will damage other parts.

throttleLocked
  • True
  • False

Assumed to specify that solid Rocket Boosters cannot have their throttle adjusted while in flight.

ignitionThreshold
  • 0.1
  • 0.05
minimum required resource(s) for engine to start. If engine has less than specified value in resource(s), it will not start. Think of it as if your car needs at least half full tank to start.
minThrust
  • 0
  • 10

Minimum thrust value. Engines will be considered 'off' at or below this value.

maxThrust
  • 200
  • 215

Just like the name implies, this is the maximum thrust a single unit of this module can produce.

heatProduction
  • 400
  • 600
a measure of the amount of heat energy produced per second. measured in degrees Kerbius (degrees Celsius)
fxOffset
  • 0,0,-1
  • 0,0,-0.5

3-dimensional vector coordinates specifying the location of thrust effects

PROPELLANT {} resource utilized in the operation of this part, generally a fuel or other propellant.
name
  • LiquidFuel
  • Oxidizer
  • XenonGas

name of the resource consumed while this part is in operation

ratio
  • 0.9
  • 1.1

rate at which this resource is consumed, per second. Not to be confused with ratio relative to other propellants.

DrawGauge
  • True
  • False

Boolean value that indicates whether or not the 'fuel remaining' indicator in the staging selection is displayed or not.

atmosphereCurve {} specifies variances in operational efficiency
key
  • 0 360
  • 0.5 320
  • 1 260

uses two values to specify engine efficiency relative to the depth of the atmosphere (based on Kerbin sea-level!) First number indicates the relative pressure (0 = vacuum, 1 Kerbin sea-level), second numer indicates ISP value).

MODULE
{
 name = ModuleEnginesFX
 thrustVectorTransformName = thrustTransform
 exhaustDamage = True
 ignitionThreshold = 0.1
 minThrust = 0
 maxThrust = 30
 heatProduction = 150
 fxOffset = 0, 0, 0.125
 PROPELLANT
 {
   name = LiquidFuel
  ratio = 0.9
  DrawGauge = True
 }
 PROPELLANT
 {
  name = Oxidizer
  ratio = 1.1
 }
 atmosphereCurve
  {
  key = 0 350
  key = 1 300
  }
}

ModuleEnviroSensor

Environmental sensor definitions. Specifies that this part is one of these types of sensors.

variable example definition
sensorType
  • ACC
  • PRES
  • GRAV
  • TEMP
Type of experiment / sensor. Not sure of the utility of this definition, could be used in Science modules to determine what type of experiment was conducted. Could be used in contracts for determining contract requirements.
MODULE
{
 name = ModuleEnviroSensor
 sensorType = ACC
}

ModuleGenerator

Generators and Alternators serve must the same purpose, but generators are not linked to the percentage of thrust output of an engine, they simply produce. Some cannot be shut off. A generator may produce any available resource.

variable example definition
isAlwaysActive
  • true
  • false

specifies whether this module is always active or not. true/false

OUTPUT_RESOURCE {}
name
  • ElectricCharge
  • LiquidFuel
  • XenonGas

specifies the name of the produced resource.

rate
  • 1
  • 5

specifies the rate of resource produced, expressed in units per second.

MODULE
{
 name = ModuleGenerator
 isAlwaysActive = true
 OUTPUT_RESOURCE
 {
    name = ElectricCharge
    rate = 0.75
 } 
}

ModuleGimbal

Gimballing represents an engine-bells ability to move around in relation to the engine body, provided a degree of ability to steer the vessel. Higher numbers indicate a higher range, but don't set it too high. Strange things will happen. Recommend limiting range to .90 at the absolute maximum.

variable example definition
gimbalTransformName
  • thrustTransform

Uncertain.

gimbalRange
  • .20
  • .15
  • .10
  • .5
represents the maximum angle, in degrees, that gimballing is supported. Recommend keeping this number relatively low (under 20 for sure), as setting the number too high can have catastrophic effects on ship design.
MODULE
{
 name = ModuleGimbal
 gimbalTransformName = thrustTransform
 gimbalRange = 0.5
}

ModuleGrappleNode

Added in [0.90], specifically for the KASA asteroid capture missions, this part functions much like a dockingNode, however, it does not require a matching docking node on the capture-side. Grapplers can attach to anything (as far as we know).

variable sample definition
nodeTransformName
  • ArticulatedCap
Uncertain. Assumed to relate to animations used.
deployAnimationController
  • 1
Uncertain.
nodeType
  • size1
Size of the connection. Relates to Docking port sizes.
captureRange
  • 0.05
Maximum distance between grappler and target at which grappling can occur
captureMinFwdDot
  • 0.866
Unknown
captureMaxRvel
  • 1
Maximum speed, relative to target, at which target can be grappled
MODULE
{
 name = ModuleGrappleNode
 
 nodeTransformName = ArticulatedCap
 deployAnimationController = 1 
 nodeType = size1
 
 captureRange = 0.05 
 captureMinFwdDot = 0.866
 captureMaxRvel = 1
}

ModuleJettison

specifies that pieces of this craft are able to be jettisoned, what they are and how to jettison them

variable example definition
jettisonName
  • node_fairing_collider
  • fairingL
  • fairingR
  • fairing

Name of the part to be jettisoned

bottomNodeName
  • bottom

Name of the node from which the part will be jettisoned

isFairing
  • True
  • False

Specifies whether the ejected part is a fairing. Uncertain as to why this important. May have to do with debris tracking.

jettisonedObjectMass
  • 0.1

Specifies the mass of the jettisoned object. It is uncertain, yet, if this mass is removed from the total mass of the vehicle. It is also uncertain if, when a fairing is added in vehicle assembly, this mass is added to the parent object.

jettisonForce
  • 1
  • 2
  • 5

DeltaV with which the object is jettisoned from its parent object. Typically very low values, such as 1, 2 or 5

jettisonDirection
  • 0 0 1
  • 0 1 0

Three-dimensional array which specifies the direction of the jettisonForce relative to the original part, laterally is 0 0 1 and 0 0 -1, for example.

MODULE
{
       name = ModuleJettison
       jettisonName = fairing
       bottomNodeName = bottom
       isFairing = True
       jettisonedObjectMass = 0.1
       jettisonForce = 5
       jettisonDirection = 0 0 1
 
}

ModuleLandingGear

Specifies that the part is a landing gear, implying a wheel, and the traits of that wheel. Hopefully being deprecated in favor of moduleWheel below.

variable example definition
BrakeTorque
  • 12
Amount of torque applied during breaking
BrakeSpeed
  • 3
Reduction in speed over time, expressed in m/s
MODULE
{
 name = ModuleLandingGear
 
 BrakeTorque = 12
 BrakeSpeed = 3
}

ModuleLandingLeg

Specifies that this part is a landing leg and describes compression and resistance factors for the part.

variable example definition
animationName
  • Deploy
  • newlandingleg
  • probeleg
specifies the animation to use
wheelColliderName
  • wheelCollider
suspensionTransformName
  • Piston
  • piston
  • leg
orientFootToGround
  • true
  • false
landingFootName
  • foot
alignFootUp
  • true
  • false
Aligns to up Axis instead of forward axis if true
suspensionUpperLimit
  • 0.60
  • 0.47
  • 0.65
unknown
impactTolerance
  • 300
  • 450
  • 150
specifies the dV in m/s before the part breaks
suspensionSpring
  • 1.25
  • 5
  • 1
specifies the maximum degree of compression in the part
suspensionDamper
  • 1
  • 2
Uncertain
suspensionOffset
  • 0
  • 0.02
Uncertain
MODULE
{
 
 name = ModuleLandingLeg
 animationName = Deploy
 wheelColliderName = wheelCollider
 suspensionTransformName = Piston
 orientFootToGround = true
 landingFootName = foot
 // Foot is aligned to up Axis instead of forward
 alignFootUp = true
 suspensionUpperLimit = 0.60
 impactTolerance = 300
 suspensionSpring = 1.25
 suspensionDamper = 1
 suspensionOffset = 0, 0.02,0
}

ModuleLight

Specifies that this part is a light source, and how that light is produced and directed.

variable example definition
lightName
  • spotlight
  • landinglight

Name of the light source

useAnimationDim
  • true
  • false
Uncertain. Assumed to specify an animation to dim the light
lightBrightenSpeed
  • 2.5
When you turn it off, how long it takes to turn off
lightDimSpeed
  • 2.5
Speed at which the light dims
resourceAmount
  • 0.4
rate of consumption (in units/second) of the needed resource
animationName
  • LightAnimation
useResources
  • true
  • false

specifies whether this light source requires resources

useAutoDim
  • true
  • false

Sets the autodim

MODULE
{
 name = ModuleLight
        lightName = spotlight
 useAnimationDim = true
 lightBrightenSpeed = 2.5
 lightDimSpeed = 2.5
 animationName = LightAnimation
 resourceAmount = 0.02
 useResources = true
}

ModuleParachute

specifies that this part is a parachute and describes the operational parameters for parachute operations. Includes default settings for opening height and deployment atmospheric conditions.

variable example definition
semiDeployedAnimation
  • semiDeploySmall
specifies the animation to use in the semi-deployed state
fullyDeployedAnimation
  • fullyDeploySmall
specifies the animation to use in the fully deployed state
invertCanopy
  • true
  • false
unknown purpose.
autoCutSpeed
  • 0.5
specifies the speed at which the parachute will be automatically cut, rendering it ineffective.
capName
  • cap
canopyName
  • canopy
stowedDrag
  • 0.22
specifies the drag effect while the parachute is still stowed
semiDeployedDrag
  • 1
specifies the drag effect while the parachute is in its semi-deployed state
fullyDeployedDrag
  • 500
specifies the drag effect while the parachute is in its fully deployed state
minAirPressureToOpen
  • 0.01
specifies the minimum Air pressure (or atmosphere) required for the parachute to enter its semi-deployed state
deployAltitude
  • 500
configurable, sets the altitude above the planetary collision mesh at which the parachute will enter its fully deployed state
deploymentSpeed
  • 1
specifies the speed at which the parachute will enter its fully deployed state
semiDeploymentSpeed
  • 1
specifies the speed at which the parachute will enter its semi-deployed state
MODULE
{
 name = ModuleParachute
 semiDeployedAnimation = semiDeploySmall
 fullyDeployedAnimation = fullyDeploySmall
 invertCanopy = true
 autoCutSpeed = 0.5
 capName = cap
 canopyName = canopy
 stowedDrag = 0.22
 semiDeployedDrag = 1
 fullyDeployedDrag = 500
 minAirPressureToOpen = 0.01
 deployAltitude = 500
 deploymentSpeed = 1
 semiDeploymentSpeed = 1 
}

ModuleRCS

Specifies that this is a Reaction Control System part. Uses variable resources to control directionality of the spacecraft. Unlike engines, RCS parts are generally oriented perpendicular to all directions of a spacecraft in order to provide steering, rather than thrust. Typically, monopropellant is decompressively expelled from an RCS port to push the spacecraft in one direction. Note: ModuleRCS can use either a single resource, or a series of PROPELLANT calls.

variable example definition
thrusterTransformName
  • RCSthruster
thrusterPower
  • 10
  • 5
  • 20

This is the power that the RCS thrusters provide. To make stronger RCS, use a higher numer

resourceName -------- interchangeable with PROPELLANT calls

The name of the resource used by the RCS thruster, typically MonoPropellant

resourceFlowMode -- for resourceName only --
  • STAGE_PRIORITY_FLOW
  • STACK_PRIORITY_FLOW
  • ALL_VESSEL
  • NONE

Specifies the manner in which the resource is requested from the vessel

PROPELLANT

Introduced with the inclusion of the Vernor RCS, it is recommended to use PROPELLANT calls only when using multiple resources. It is expected that older RCS will be updated to the new convention prior to final release.

name
  • MonoPropellant
  • LiquidFuel
  • Oxidizer

name of the resource consumed

ratio
  • 1
  • 1.1
  • 0.9

ratio of the resource consumed

resourceFlowMode
  • STAGE_PRIORITY_FLOW
  • STACK_PRIORITY_FLOW
  • ALL_VESSEL
  • NONE
using the same pull method as a single resource, specifies how to pull the resource from the rest of the vessel
atmosphereCurve
  • 0 350
  • 1 250

Specifies the efficiency of the RCS thruster using 2-part keys 0 specifies the ISP in atmosphere 1 specifies the ISP at Kerbin Sea Level entries in between specify the ISP at specific percentages of Kerbin Sea Level (e.g: 0.5 = 1/2 Kerbin Atmosphere)

MODULE
{
 name = ModuleRCS
 thrusterTransformName = RCSthruster
 thrusterPower = 12
 resourceName = LiquidFuel
 resourceFlowMode = STAGE_PRIORITY_FLOW
 PROPELLANT
 {
  name = LiquidFuel
        ratio = 0.9
  DrawGauge = True
  resourceFlowMode = STAGE_PRIORITY_FLOW
 }
 PROPELLANT
 {
  name = Oxidizer
  ratio = 1.1
  resourceFlowMode = STAGE_PRIORITY_FLOW
 }
 atmosphereCurve
  {
     key = 0 260
    key = 1 140
  }
}

ModuleReactionWheel

Specifies that this part contains reaction wheels, used to stabilize the directionality of a spacecraft. Typically used for stability, rather than producing change, both are possible. If you're thinking that this does the same thing as RCS, you wouldn't be far off.

variable example definition
PitchTorque
  • 20

numerical value, denotes amount of change can be applied to pitch using reaction wheel power

YawTorque
  • 20

numerical value, denotes amount of change can be applied to yaw using reaction wheel power

RollTorque
  • 20

numerical value, denotes amount of change can be applied to roll using reaction wheel power

RESOURCE {}

The resource used by reaction wheels in order to affect the changes they can produce

name
  • ElectricCharge

name of the relevant resource, typically ElectricCharge

rate
  • 0.45

Rate of consumption, expressed in units/second at full usage.

MODULE
{
 name = ModuleReactionWheel
 
 PitchTorque = 30
 YawTorque = 30
 RollTorque = 30
 
 RESOURCE
 {
  name = ElectricCharge
  rate = 0.6
 }
}

ModuleResourceConverter

Used to create a part that convertes resources.

variable example definition
ConverterName
  • Lf+Ox

Name displayed when right-clicking the part.

StartActionName
  • Start ISRU [Lf+Ox]

Text displayed for the start action.

StopActionName
  • Stop ISRU [Lf+Ox]

Text displayed for the stop action.

AutoShutdown
  • true
  • false

Automatically shut the converter down if part is overheating?

TemperatureModifier
  • Temperature modifier defintion

Unknown. Floatpoint curve.

GeneratesHeat
  • true
  • false

If set to true the converter operation will generate heat.

DefaultShutoffTemp
  • .8

Unknown. Related to AutoShutdown. Assumed to be unrelated to Core Temp.

ThermalEfficiency
  • Thermal efficiency definition

Efficiency related to part temperature. Floatpoint curve.

UseSpecialistBonus
  • true
  • false

If set to true the converter will use specialist bonus. Efficiency = EB * [SBB + (SEF * EE)]. EE = 0-6

SpecialistEfficiencyFactor
  • 0.2

SEF. Sets the amount each specialist-level adds to the efficiency.

SpecialistBonusBase
  • 0.05

SBB. Base efficiency a converter can reach without any specialist if EB = 1.

ExperienceEffect
  • ConverterSkill

EE. NoSpecialist=0; ZeroStarSpecialist=1; OneStarSpecialist=2; FiveStarSpecialist=6

EfficiencyBonus
  • 1

EB. Final multiplier for efficiency. Tipp: start with EB = 1 and adjust if required.

INPUT_RESOURCE
  • Resource defintion

Defines the resource consumed when the converter is active. Can have multiple INPUT_RESOURCE definitions.

OUTPUT_RESOURCE
  • Resource defintion

Defines the resource produced when the converter is active. Can have multiple OUTPUT_RESOURCE definitions.

MODULE
{
 name = ModuleResourceConverter
 ConverterName = Lf+Ox
 StartActionName = Start ISRU [Lf+Ox]
 StopActionName = Stop ISRU [Lf+Ox]	 
 AutoShutdown = true
 TemperatureModifier
 {
 	key = 0 100000
 	key = 750 50000
 	key = 1000 10000
 	key = 1250 500	
 	key = 2000 50	
 	key = 4000 0
 }				
 GeneratesHeat = true
 DefaultShutoffTemp = .8
 ThermalEfficiency 
 {
 	key = 0 0 0 0
 	key = 500 0.1 0 0
 	key = 1000 1.0 0 0
 	key = 1250 0.1 0 0
 	key = 3000 0 0 0 
 }
 UseSpecialistBonus = true
 SpecialistEfficiencyFactor = 0.2
 SpecialistBonusBase = 0.05
 ExperienceEffect = ConverterSkill
 EfficiencyBonus = 1
 INPUT_RESOURCE
 {
 	ResourceName = Ore
 	Ratio = 0.5
 	FlowMode = STAGE_PRIORITY_FLOW
 }
 INPUT_RESOURCE
 {
 	ResourceName = ElectricCharge
 	Ratio = 30
 }
 OUTPUT_RESOURCE
 {
 	ResourceName = LiquidFuel
 	Ratio = 0.45
 	DumpExcess = false
 	FlowMode = STAGE_PRIORITY_FLOW
 }
 OUTPUT_RESOURCE
 {
 	ResourceName = Oxidizer
 	Ratio = 0.55
 	DumpExcess = false
 	FlowMode = STAGE_PRIORITY_FLOW
 }
}

ModuleResourceHarvester

Used to create a part that harvestes resources from the environment.

variable example definition
HarvesterType
  • 0
  • 1
  • 2
  • 3

Defines the type of harvester.

  • 0 = Planetary use
  • 1 = Oceanic use
  • 2 = Atmospheric use
  • 3 = Vacuum use?

Harvester types other then 0 require use of a deploy animation before they can be activated (tested with KSP version 1.1.3).

Efficiency
  • 1

Harvester efficiency. Seems to work differently depending on harvester type.

ResourceName
  • Ore

Resource to harvest.

ConverterName
  • Surface Harvester

Name displayed when right-clicking the part.

StartActionName
  • Start Surface Harvester

Text displayed for the start action.

StopActionName
  • Stop Surface Harvester

Text displayed for the stop action.

ToggleActionName
  • Toggle Surface Harvester

Text displayed for the toggle action.

ImpactTransform
  • ImpactTransform

Seems to be only relevant for surface harvesters. Resource is only harvested when in contact to the ground. Further details of this parameter are unknown.

ImpactRange
  • 5

Seems to be only relevant for surface harvesters. May be the distance between where the drillhead is when it is deployed and where the actual part is. Further details of this parameter are unknown.

AutoShutdown
  • true
  • false

If set to true the harvester will automatically shut off if it overheats.

GeneratesHeat
  • true
  • false

If set to true the harvester operation will generate heat.

UseSpecialistBonus
  • true
  • false

If set to true crew members can give a bonus to harvester efficiency.

SpecialistEfficiencyFactor
  • 0.2

Efficieny bonus multiplier based on the number of specialists and their skill.

SpecialistBonusBase
  • 0.05

Efficieny bonus base amount for each specialist of the given type.

Specialty
  • Engineer

Type of specialist required to get the efficiency bonus.

EfficiencyBonus
  • 1

Added efficiency for having a specialist.

INPUT_RESOURCE
  • Resource defintion

Defines the resource consumed when the harvester is active. Can have multiple INPUT_RESOURCE definitions.

TemperatureModifier
  • Temperature modifier defintion

Unknown.

ThermalEfficiency
  • Thermal efficiency definition

Efficiency related to part temperature.

MODULE
{
  name = ModuleResourceHarvester
  HarvesterType = 0
  Efficiency = 1.5
  ResourceName = Ore
  ConverterName = Surface Harvester
  StartActionName = Start Surface Harvester
  StopActionName = Stop Surface Harvester
  ToggleActionName = Toggle Surface Harvester
  ImpactTransform = ImpactTransform
  ImpactRange = 5
  AutoShutdown = true
  GeneratesHeat = true
  UseSpecialistBonus = true
  SpecialistEfficiencyFactor = 0.2
  SpecialistBonusBase = 0.05
  Specialty = Engineer
  EfficiencyBonus = 1
  INPUT_RESOURCE
  {
    ResourceName = ElectricCharge
    Ratio = 15
  }
  TemperatureModifier
  {
    key = 0 10000
    key = 250 7500
    key = 500 5000
    key = 750 500
    key = 1000 0
  }		
  ThermalEfficiency 
  {
    key = 0 0.1
    key = 250 .1
    key = 500 1
    key = 750 .1
    key = 1000 0
  }
}

ModuleResourceIntake

Used to create a part that produces a resource based on interaction with the environment.

variable example definition
resourceName
  • IntakeAir

defines the type of resource produced by this module. Any resource may be used for this purpose, including those not defined at all

checkForOxygen
  • true
  • false

An optional method that specifies this module must check to see if oxygen/atmosphere is present whenever attempting to generate the requested resource.

area
  • 0.004

area is the amount of space used for determining how much resource to produce. The larger the number, the more of the resource is produced per second.

intakeSpeed
  • 10

unknown. Assumed to be a minimum m/s measure to determine if this module operates or not.

intakeTransformName
  • Intake

unknown.

MODULE
{
  name = ModuleResourceIntake
  resourceName = IntakeAir
  checkForOxygen = true
  area = 0.006
  intakeSpeed = 10
  intakeTransformName = Intake  
}

ModuleSAS

Used as a reference to determine whether this part is activated by the SAS function of the interface. ie. when you turn on SAS, turn on this part. NOTE: [0.90] added SASServiceLevel (0-3)

variable example definition
SASServiceLevel
  • 0
  • 1
  • 2
  • 3
defines the required level of building development for each different SAS capabilities (markers on the nav ball)
MODULE
{
 name = ModuleSAS
 SASServiceLevel = 1
}

ModuleScienceContainer

A place to store the results of a science experiment.

variable example definition
reviewActionName Flavor Text for reviewing the data contained in a science container.
storeActionName Flavor text for placing data into a science container.
collectActionName Flavor text for removing data from a science container.
evaOnlyStorage
  • True
  • False

Specifies whether or not data storage is restricted to EVA activities.

storageRange
  • 0.5

Distance, expressed in meters, a Kerbal must be within in order to interact with data and this container.

allowRepeatedSubjects
  • True
  • False
Uncertain
MODULE
{
 name = ModuleScienceContainer
 
 reviewActionName = Review Stored Data
 storeActionName = Store Experiments
 evaOnlyStorage = True
 storageRange = 4.0
}

ModuleScienceExperiment

A place to conduct a science experiment.

variable example definition
experimentID
  • evaReport
  • mysteryGoo
  • surfaceSample
  • mobileMaterialsLab
  • temperatureScan
  • barometerScan
  • seismicScan
  • gravityScan
  • atmosphereAnalysis
  • asteroidSample
This refers to the Experiment IDs listed in ScienceDefs.cfg under each EXPERIMENT_DEFINITION{}
experimentActionName Flavor text

for contextual menu to describe to the player what the part does when collecting data

resetActionName Flavor text

for contextual menu to describe to the player what the part does when collecting data

reviewActionName Flavor text

for contextual menu to describe to the player what the part does when collecting data

useStaging
  • True
  • False
specifies whether this module can be activated through the normal staging system
useActionGroups
  • True
  • False
specifies whether this module can be activated by an Action Group
hideUIwhenUnavailable
  • True
  • False
specifies whether this module will show its activation buttons through the contextual menu, even if it is not available
rerunnable
  • True
  • False
specifies whether this experiment can be rerun.
xmitDataScalar
  • 0.35
Specifies the share of science data that can be recovered via the antenna. In this example 35% can be recovered.
FxModules
  • 0
The index of the module, starting from 0, playing the animation, if any, for this science instrument. The module must implement IScalarModule so must be ModuleAnimateGeneric or a descendant.
dataIsCollectable
  • True
  • False
Uncertain. Presumed to indicate whether a Kerbal on EVA can retrieve data from this experiment
collectActionName Flavor text If data is collectible, this is the flavor text for collecting that data
interactionRange
  • 0.5
The range, expressed in meters, from which a Kerbal on EVA can interact with this module (for example to reset the experiment)
usageReqMaskInternal (ExperimentUsageReqs) How the experiment can be triggered by the parent Vessel.
usageReqMaskExternal (ExperimentUsageReqs) How the experiment can be triggered by EVA Kerbals.

ExperimentUsageReqs

Name Value Notes
Never -1 Experiment can't be used at all
Always 0 Experiment can always be used
VesselControl 1 Experiment can be used if vessel is (see ExperimentUsageReqs)under control (probe or crew)
CrewInVessel 2 Experiment can only be used if vessel is crewed.
CrewInPart 4 Experiment can only be used if part contains crew.
ScientistCrew 8 Experiment can only be used if crew is scientist.
MODULE
{
 name = ModuleScienceExperiment 
 
 experimentID = atmosphereAnalysis
 
 experimentActionName = Run Atmosphere Analysis
 resetActionName = Discard Data
 reviewActionName = Review Data
 
 useStaging = False 
 useActionGroups = True
 hideUIwhenUnavailable = True 
 rerunnable = True
  
 xmitDataScalar = 0.35
  
 dataIsCollectable = True
 collectActionName = Download Data
 interactionRange = 1.2
}

ModuleScienceLab

A place to modify a science experiment prior to transmission in order to gain more research points from it.

variable example definition
containerModuleIndex
  • 0
Specifies ModuleScienceContainer location in order in cfg file. 0 is first module listing, 1 is two and so on.
dataTransmissionBoost
  • 1.5
Unknown
crewsRequired
  • 2
Minimum number of Kerbals in the part needed to operate this module
canResetConnectedModules
  • True
  • False
Unknown. Presumed to indicate whether modules attached to this part can be reset from this module
canResetNearbyModules
  • True
  • False
Presumed to indicate whether modules attached to this vessel can be reset from this module
interactRange
  • 1.2
Limit of range (in meters) that modules attached to this vessel can be reset. Uncertain.
REOURCE_PROCESS {}
name
  • ElectricCharge
names the resource required, e.g.: ElectricCharge
amount
  • 10

specified, numerical, the number of units of the specified resource expended

MODULE
{
 name = ModuleScienceLab
 
 containerModuleIndex = 0 
 dataTransmissionBoost = 1.15 
 crewsRequired = 2
 
 canResetConnectedModules = True
 canResetNearbyModules = True
 interactionRange = 5
 
 RESOURCE_PROCESS
 {
  name = ElectricCharge
  amount = 10
 }
}

ModuleSteering

Specifies that this part is steerable and provides the axis and animation information for steering the part.

variable example definition
controlAxisType
  • Forward
Unsure. May have something to do with directional control
steeringAxis
  • 0, 0, 1
specifies the 3-dimensional axis of steering control.
steeringTransformName
  • Steering
unknown
steeringLocked
  • true
  • false
specifies whether the part's steering starts locked
steeringCurve
0 16
10 9
30 2
100 1
multi-array of keys,
MODULE
{
 name = ModuleSteering
 controlAxisType = Forward
 steeringAxis = 0, 0, 1
 steeringTransformName = Steering
 steeringLocked = true
 steeringCurve
  {
     key = 0 16
  key = 10 9
    key = 30 2
  key = 100 1
  }
}

ModuleTestSubject

Used for the contract system, determines atmospheric conditions under which this part may be considered for testing. Also specifies whether the part is able to be tested using the Staging process or must be manually selected and "Perform Test" used to satisfy contract requirements.

variable example definition
environments (Deprecated. Use situationMask instead)
  • 15
  • 1

A single numerical value, between 0 (nowhere) and 15 (anywhere), that specifies the atmospheric conditions the part may be tested under. Add numbers together to specify multiple environments

  • 0 = nowhere
  • 1 = the surface of; srf
  • 2 = the ocean of; ocean
  • 3 = the surface or ocean of; srf, ocean
  • 4 = the atmosphere of; atmo
  • 5 = the surface or atmosphere of; srf, atmo
  • 6 = the ocean or atmosphere of; ocean, atmo
  • 7 = the surface, ocean or atmosphere of; srf, ocean, atmo
  • 8 = the space above; space
  • 9 = the surface or space above; srf, space
  • 10 = the ocean or space of; srf, ocean, space
  • 11 = the surface, ocean or space of; srf, ocean, space
  • 12 = the space or atmosphere of; atmo, space
  • 13 = the surface, space or atmosphere of; srf, atmo, space
  • 14 = the ocean, space, or atmosphere of; ocean, atmo, space
  • 15 = anywhere; srf, ocean, atmo, space
useStaging
  • True
  • False
specifies whether the part can be tested using the Staging Process
useEvent
  • True
  • False
specifies whether the part can be tested using the "Perform Test" action.
situationMask
  • 16
  • 63

A binary mask for defining the situation.

  • SrfLanded = 1,
  • SrfSplashed = 2,
  • FlyingLow = 4,
  • FlyingHigh = 8,
  • InSpaceLow = 16,
  • InSpaceHigh = 32
  • Hidden Flag (not sure what this does, but several engine cfgs have a 7th flag tripped, value equaling 127) = 64
CONSTRAINT

{
type = REPEATABILITY

value = ALWAYS

prestige = Trivial
}


{

type = ALTITUDEENV

test = LT

value = 1000

situationMask = 8

prestige = Trivial

}


Constraints define different attributes of a test.

type - The type of constraint. Can have values such as :

  • SPEED
  • SPEEDENV
  • ALTITUDE
  • ALTITUDEENV
  • DENSITY
  • DYNAMICPRESSURE
  • OXYGEN
  • ATMOSPHERE
  • SITUATION
  • REPEATABILITY


test - An optional parameter. Relevant when type isn't set to 'REPEATABILITY'. Can have values such as:

  • GT
  • LT
  • EQ
  • NEQ


value - Defines whether or not this test can be repeated. Can have values such as:

  • ALWAYS
  • BODYANDSITUATION
  • ONCEPERPART


prestige - Defines the prestige level for the test. Can have values such as:

  • Trivial
  • Significant
  • Exceptional


body - Defines what celestial body can be used for the test . Can have values such as:

  • _NotHome (disables every flag but Kerbin)
  • _NotSun (unclear what this does, but might disable every celestial body but Kerbol?)


situationMask - Overrides the situationMask value for this constraint only:

  • SrfLanded = 1,
  • SrfSplashed = 2,
  • FlyingLow = 4,
  • FlyingHigh = 8,
  • InSpaceLow = 16,
  • InSpaceHigh = 32
       MODULE
	{
		name = ModuleTestSubject
		useStaging = True
		useEvent = True
		situationMask = 60
		CONSTRAINT
		{
			// disable all but home
			type = SITUATION
			value = 0
			body = _NotHome
			prestige = Trivial
		}
		CONSTRAINT
		{
			// disable all but home
			type = SITUATION
			value = 0
			body = _NotHome
			prestige = Significant
		}
		CONSTRAINT
		{
			type = REPEATABILITY
			value = ALWAYS
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = REPEATABILITY
			value = BODYANDSITUATION
			prestige = Significant
		}
		CONSTRAINT
		{
			type = REPEATABILITY
			value = ONCEPERPART
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = GT
			value = 4000
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = LT
			value = 8000
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = GT
			value = 2000
			prestige = Significant
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = LT
			value = 4000
			prestige = Significant
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = GT
			value = 1000
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = ALTITUDEENV
			test = LT
			value = 2000
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = ALTITUDE
			test = GT
			value = 0 // this just registers altitude as something to care about
			situationMask = 8
		}
		CONSTRAINT
		{
			type = ALTITUDE
			test = LT
			value = 300000
			situationMask = 16
			body = _NotSun
		}
		CONSTRAINT
		{
			type = ALTITUDE
			test = LT
			value = 600000
			situationMask = 32
			body = _NotSun
		}
		CONSTRAINT
		{
			type = SPEED
			test = GT
			value = 0
			situationMask = 8
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = SPEED
			test = LT
			value = 600
			situationMask = 8
			prestige = Trivial
		}
		CONSTRAINT
		{
			type = SPEED
			test = GT
			value = 0
			situationMask = 8
			prestige = Significant
		}
		CONSTRAINT
		{
			type = SPEED
			test = LT
			value = 900
			situationMask = 8
			prestige = Significant
		}
		CONSTRAINT
		{
			type = SPEED
			test = GT
			value = 300
			situationMask = 8
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = SPEED
			test = LT
			value = 1200
			situationMask = 8
			prestige = Exceptional
		}
		CONSTRAINT
		{
			type = SPEEDENV
			test = LT
			value = 200
			prestige = Trivial
		}
	}

ModuleWheel

The better version of landingGear, with lots more options for the operation of wheels, including adding power, steering, and damage information.

variable example definition
hasMotor
  • true
  • false
specifies whether the wheel has a powered propulsion system
resourceName
  • ElectricCharge
specifies the resource(s) used by powered propulsion system
resourceConsumptionRate
  • 1.0
specifies the rate of consumption of resources for the powered propulsion system in units/second
canSteer
  • true
  • false
specifies whether this wheel is steerable
controlAxisType
  • Forward
If steerable, specifies the axis type
steeringModeType
  • AutomaticSteer
  • TankSteer
uncertain: may refer to rack-and-pinion versus Track-type steering
brakeTorque
  • 300
the dV (in m/s) of torque applied when using the breaks
brakeSpeed
  • 1.2
the dV (in m/s) that braking will slow the vehicle under optimum conditions
impactTolerance
  • 2000
dV that this part can withstand before breaking
overSpeedDamage
  • 60
uncertain. possibly reserved for future use, possible that this is the amount of dV of damage applied to this part whenever it exceeds it's rated speed
WHEEL {}
wheelName
  • wheel
Internal name of the wheel
wheelColliderName
  • wheelCollider
Internal name of the collider mesh for the wheel
suspensionTransformName
  • suspensionTraverse
Animation for suspension usage
suspensionNeutralPointName
  • suspensionNeutralPoint
Animation for the neutral point of the suspension
damagedObjectName
  • bustedwheel
If you break it, you bought, and this is what you'll call it
rotateX
  • 0
rotateY
  • 1
rotateZ
  • 0
steeringCurve {}

keys, 0 16 10 9 30 2

torqueCurve {}

keys 0 250 0 0 20 100 0 0 30 14 0 0 34 0 0 0

MODULE
{
	name = ModuleWheel
	hasMotor = true
	resourceName = ElectricCharge
        resourceConsumptionRate = 0.5
	canSteer = true
	controlAxisType = Forward
	steeringModeType = AutomaticSteer
	brakeTorque = 180
	brakeSpeed = 1.0
	impactTolerance = 65
	overSpeedDamage = 20

	WHEEL
	{
	    wheelName = wheel
	    wheelColliderName = wheelCollider
	    suspensionTransformName = suspensionTraverse
	    suspensionNeutralPointName = suspensionNeutralPoint
	    damagedObjectName = bustedwheel
	    rotateX = 0
	    rotateY = 1
	    rotateZ = 0
	}

	steeringCurve
 	{
   	 key = 0 18
	 key = 15 6
 	}

	torqueCurve
	{
	  key = 0 170 0 0 
	  key = 2.5 100 0 0
	  key = 12 0 0 0
	}


}

MultiModeEngine

Specifies that this part is an engine with multiple modes. Added in [0.90], it allows for engines that use different types of resources and provides different flight characteristics depending on which mode it is operating in. This module defines the different modes and passes them to moduleEnginesFX.

variable example definition
primaryEngineID
  • AirBreathing
  • ClosedCycle
this is passed to ModuleEnginesFX to determine the properties for this mode
secondaryEngineID
  • AirBreathing
  • ClosedCycle
this is passed to ModuleEnginesFX to determine the properties for this mode
MODULE
{
 name = MultiModeEngine
 primaryEngineID = AirBreathing
 secondaryEngineID = ClosedCycle
}


RetractableLadder

Just like the name implies, this module is attached to parts that are or contain a retractable or collapsible ladder.

variable example definition
ladderAnimationRootName
  • TelusBay
  • Telescopic ladder
name of the beginning animation for this module
ladderColliderName
  • ladderCollider
name of the collider mesh for this module
ladderRetractAnimationName
  • Retract
name of the retraction animation for this module
MODULE
{
 name = RetractableLadder
 
 ladderAnimationRootName = TelusBay
 ladderColliderName = ladderCollider
 ladderRetractAnimationName = Retract
}

MODULES FROM MODS

Defining a module is a task in and of itself and one that I'm sure has already been covered in other places. Many modules defined by mods are duplicating effects that could be created with stock modules, but for one reason or another, the mod owner has decided to create their own modules (possibly for degree of control, possibly because the stock module didn't quite do everything they needed). In any event, I've looked at some of the Mod modules, and detailed them below. By mod, they are:

Kerbal Assembly System

Kerbal Assembly System is most noted for adding the option to grab and move parts using Kerbals. It also allows for storage of certain parts in containers.

MODULE:NEEDS[KAS] for the module

KASModuleContainer

Specifies that this part can serve as a container for other parts, and how much storage space the part has. Also included is an interaction distance. Kerbals must be this close or closer to open the container. Lots of sounds.

variable example definition
maxSize
  • 5
  • 20
  • 80
specifies the size of the container relative to Kerbal Attachment System parts.
maxOpenDistance
  • 1
  • 5
Kerbals must be at least this close (in meters) in order to open the container
sndStorePath
  • KAS/Sounds/hookBayStore
sound stuff
sndOpenPath
  • KAS/Sounds/containerOpen
sound stuff for opening the container
sndClosePath
  • KAS/Sounds/containerClose
sound stuff for closing the container
bipWrongSndPath
  • KAS/Sounds/bipwrong
sound stuff
MODULE
{
 name = KASModuleContainer
 maxSize = 80
}

ModuleConnectedLivingSpace

variable example definition
passable
  • true
  • false
specifies whether Kerbals can commute to parts connected to this part
passableWhenSurfaceAttached
  • true
  • false
can be passed through even when connected to the ground?
MODULE
{
 name = ModuleConnectedLivingSpace
 passable = true
 passableWhenSurfaceAttached = true 
}

KASModulePartBay

variable example definition
BAY {}
attachNode
  • top
  • bottom
attachment placement
type
  • containerA
  • container
  • hookBay
MODULE
{
 name = KASModulePartBay
 BAY
 {
  attachNode = top
  type = containerA
  type = containerB
 }
}

KASModulePort

variable example definition
attachNode
  • top
unsure
nodeType
  • kasplug
unknown
breakForce
  • 30
unknown
nodeTransformName
  • plugNode
unknown
MODULE
{
 name = KASModulePort
 attachNode = top
 nodeType = kasplug
 breakForce = 30
 nodeTransformName = plugNode
}

KASModuleAnchor

variable example definition

This module will set a custom drag value when the part touch the ground.

groundDrag
  • 500
Drag value of the anchor when it touch the ground
bounciness
  • 0
Bounciness of the anchor
dynamicFriction
  • 0.8
Dynamic friction of the anchor when it touch the ground
staticFriction
  • 0.8
Static friction of the anchor when it touch the ground
MODULE
{
 name = KASModuleAnchor
 groundDrag = 500
 bounciness = 0
 dynamicFriction = 0.8 
 staticFriction = 0.8
}

KASModuleMagnet

This module will make the part acting like a magnet, collided part will be automatically attached. Only work when attached on a winch.

variable example definition
breakForce
  • 10
The force that needs to be applied on the magnet joint to break.
attachToEva
  • true
  • false
Disable/enable attraction of eva
minFwdDot
  • 0.998
Minimum magnet alignement needed to attach (1 is perfectly aligned)
powerDrain
  • 4
Power consumption when the magnet is used
MODULE
{
 name = KASModuleMagnet
 breakForce = 10
 attachToEva = False
 minFwdDot = 0.998
 powerDrain = 4
}

KASModuleStrut

variable example definition
nodeTransform
  • pipeNode
  • strutNode
unknown
type
  • PipeSize1
  • StrutSize1
Unkown
maxLength
  • 20
  • 8
unknown
maxAngle
  • 100
unknown
breakForce
  • 10
unknown
allowDock
  • true
  • false
unknown
allowPumpFuel
  • true
  • false
unknown
hasCollider
  • true
  • false
unknown
tubeScale
  • 0.15
unknown
jointScale
  • 0.15
unknown
textureTiling
  • 1
  • 4
unknown
tubeSrcType
  • Joined
  • Rounded
Unknown
tubeTgtType
  • Joined
  • Rounded
unknown
evaStrutPos
  • (0.05, 0.059, -0.21)
unknown
evaStrutRot
  • (190.0, 0.0, 0.0)
unknown
tubeTexPath
  • KAS/Textures/pipe
unknown
MODULE
{
 name = KASModuleStrut 
 nodeTransform = pipeNode
 type = PipeSize1 
 maxLenght = 20
 maxAngle = 100
 breakForce = 10
 allowDock = true
 allowPumpFuel = true
 hasCollider = false
 tubeScale = 0.15
 jointScale = 0.15
 textureTiling = 1
 tubeSrcType = Joined
 tubeTgtType = Joined
 evaStrutPos = (0.05, 0.059, -0.21)
 evaStrutRot = (190.0, 0.0, 0.0)
        tubeTexPath = KAS/Textures/pipe
}

KASModuleGrapplingHook

This module will make the part acting like a grappling-hook, any collided part in front of the grapple will be automatically attached if the inpact is strong enough. Only work when attached on a winch.

variable example definition
partBreakForce
  • 6
The force that needs to be applied on the grapple/part joint to break.
staticBreakForce
  • 15
The force that needs to be applied on the grapple/static joint to break.
aboveDist
  • 0.05
Distance from the attach point to the center of the part
forceNeeded
  • 4
Collision force needed to attach the grapple.
attachToPart
  • true
  • false
Disable/enable attachment on parts.
rayDir
  • (0,-1,0)
Direction of the attach raycast. Attachment will be done only with objects in that direction.
rayLenght
  • 0.8
Attach ray lenght.
MODULE
{
 name = KASModuleGrapplingHook
 partBreakForce = 6
 staticBreakForce = 15
 aboveDist = 0.05
 forceNeeded = 4
 attachToPart = true
 rayDir = (0,-1,0) 
 rayLenght = 0.8
}

KASModuleWinch

variable example definition
maxLenght
  • 50
  • 80
unknown
cableSpring
  • 1000
cableDamper
  • 0.1
cableWidth
  • 0.04
motorMaxSpeed
  • 2
motorAcceleration
  • 0.05
powerDrain
  • 0.5
  • 0.3
headTransformName
  • head
headPortNodeName
  • portNode
connectedPortNodeName
  • bottom
  • front
anchorNodeName
  • anchorNode
evaGrabHeadPos
  • (0.05, 0.01, -0.11)
evaGrabHeadDir
  • (0,0,1)
evaDropHeadPos
  • (0.05, 0.01, -0.16)
evaDropHeadRot
  • (180.0, 0.0, 0.0)
ejectEnabled
  • true
  • false
ejectForce
  • 20
lockMinDist
  • 0.12
lockMinFwdDot
  • 0.90
MODULE
{
 name = KASModuleWinch
 maxLenght = 50
 cableSpring = 1000
 cableDamper = 0.1
 cableWidth = 0.04
 motorMaxSpeed = 2
 motorAcceleration = 0.05
 powerDrain = 0.5
 headTransformName = head
 headPortNodeName = portNode
 connectedPortNodeName = bottom
 anchorNodeName = anchorNode
 evaGrabHeadPos = (0.05, 0.01, -0.11)
 evaGrabHeadDir = (0,0,1)
 evaDropHeadPos = (0.05, 0.01, -0.16)
 evaDropHeadRot = (180.0, 0.0, 0.0)
 ejectEnabled = true
 ejectForce = 20
 lockMinDist = 0.12
 lockMinFwdDot = 0.90
}


Universal Storage

Universal Storage. By the by: Excellently documented!

ModuleAnimator

Animation module.

variable example definition
animationName
  • Take 001
Name of the animation from the model.
guiEnableName
  • Wedge Locks Off
Part tooltip name to display for deployment
guiDisableName
  • Wedge Locks Off
Part tooltip name to display for retraction
actionEnableName
  • Wedge Locks Off
Action group name for deployment
actionDisableName
  • Wedge Locks On
Action group name for retraction
animationSpeed
  • 100000
Speed of the animation
oneShot
  • true
  • false
If the animation can only be played once
activeEditor
  • true
  • false
If the part toolitp is visible in the editor
activeFlight
  • true
  • false
If the part tooltip is visible in flight
activeUnfocused
  • true
  • false
If the part tooltip is visible from EVA
unfocusedRange
  • 5
EVA visible range
 MODULE
 {
  name = ModuleAnimator
  animationName = Take 001
  guiEnableName = Wedge Locks Off
  guiDisableName = Wedge Locks On
  actionEnableName = Wedge Locks Off 
  actionDisableName = Wedge Locks On 
  
  animationSpeed = 100000
  oneShot = false
  activeEditor = true
  activeFlight = false
  activeUnfocused = false
  unfocusedRange = 5
 }

Umbra Space Industries:Regolith

Note: DEPRECATED (use stock resource converter's)

REGO_ModuleResourceConverter

variable example definition
ConverterName
  • Water Electrolizer
Flavor Text
StartActioName
  • Start Water Electrolizer
Flavor Text
StopActioName
  • Stop Water Electrolizer
Flavor Text
RecipeInputs
  • ElectricCharge, 14, Water, 0.0000176697
RecipeOutputs
  • Hydrogen, 0.0219907427, True, Oxygen, 0.0109953713, False
MODULE
{
  name = REGO_ModuleResourceConverter
  ConverterName = Water Electrolizer
  StartActionName = Start Water Electrolizer
  StopActionName = Stop Water Electrolizer
  RecipeInputs = ElectricCharge, 14, Water, 0.0000176697
  RecipeOutputs = Hydrogen, 0.0219907427, True, Oxygen, 0.0109953713, False
}

Umbra Space Industries: ExpPack

USI is widely known for building an entire add-on family of interconnected and cross-supported parts and extensions. Here we detail mods added by the ExpPack.

USI_ClearIVA

No calls.

MODULE
{
 name = USI_ClearIVA
}