Difference between revisions of "Module"
Joshuadery (talk | contribs) (→ModuleSAS) |
(→ModuleScienceExperiment) |
||
(43 intermediate revisions by 19 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{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. | 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 | + | | 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 |
− | ! explanation | ||
|- | |- | ||
| | | | ||
Line 155: | Line 158: | ||
=== FXModuleConstrainPosition === | === 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 | ||
Line 163: | Line 166: | ||
* true | * true | ||
* false | * false | ||
− | || | + | || Should targetNames rotation be applied to moversName? |
|- | |- | ||
| matchPosition || | | matchPosition || | ||
* true | * true | ||
* false | * false | ||
− | || | + | || Should targetName's position be applied to moversName? |
|- | |- | ||
| CONSTRAINFX || {} || unknown | | CONSTRAINFX || {} || unknown | ||
Line 175: | Line 178: | ||
* Steering | * Steering | ||
* steering | * steering | ||
− | || | + | || gameObject to copy targetName's world position/rotation of. |
|- | |- | ||
| moversName || | | moversName || | ||
* wheelCollider | * wheelCollider | ||
* steering | * steering | ||
− | || | + | || gameObject to apply targetName's world position/rotation to. |
|} | |} | ||
Line 201: | Line 204: | ||
=== FXModuleLookAtConstraint === | === 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 | ||
Line 210: | Line 213: | ||
| targetName || | | targetName || | ||
* susp2-1 | * susp2-1 | ||
− | || | + | || gameObject to target rotatorsName at. |
|- | |- | ||
| rotatorsName || | | rotatorsName || | ||
* susp2-2 | * susp2-2 | ||
− | || | + | || gameObject to rotate so that it looks at targetName |
|} | |} | ||
Line 411: | Line 414: | ||
* false | * false | ||
|| specifies whether the part can be manually animated | || 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 | ||
+ | |- | ||
|} | |} | ||
Line 467: | Line 496: | ||
| | | | ||
− | === | + | === ModuleCargoBay === |
− | + | Allows a [[cargo bay]] to shield its contents from airflow and heat. | |
{|class="wikitable" | {|class="wikitable" | ||
! variable !! example !! definition | ! variable !! example !! definition | ||
|- | |- | ||
− | | | + | | DeployModuleIndex || |
* 0 | * 0 | ||
* 1 | * 1 | ||
* 2 | * 2 | ||
− | || Specifies the | + | || 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]). |
|- | |- | ||
− | | RESOURCE || | + | | closedPosition || |
− | {|class="wikitable" | + | * 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. | ||
+ | |} | ||
+ | |||
+ | || | ||
+ | <pre> | ||
+ | MODULE | ||
+ | { | ||
+ | name = ModuleCargoBay | ||
+ | DeployModuleIndex = 1 | ||
+ | closedPosition = 1 | ||
+ | lookupRadius = 1 | ||
+ | |||
+ | nodeOuterForeID = top | ||
+ | nodeOuterAftID = bottom | ||
+ | nodeInnerForeID = top2 | ||
+ | nodeInnerAftID = bottom2 | ||
+ | } | ||
+ | </pre> | ||
+ | |- | ||
+ | | | ||
+ | |||
+ | === ModuleCommand === | ||
+ | Applies Command to vessels | ||
+ | {|class="wikitable" | ||
+ | ! variable !! example !! definition | ||
+ | |- | ||
+ | | minimumCrew || | ||
+ | * 0 | ||
+ | * 1 | ||
+ | * 2 | ||
+ | || Specifies the minimum number of crew needed to operate this module. | ||
+ | |- | ||
+ | | RESOURCE || | ||
+ | {|class="wikitable" | ||
|- | |- | ||
| name || ElectricCharge || This is the name of that resource | | name || ElectricCharge || This is the name of that resource | ||
Line 533: | Line 618: | ||
{|class="wikitable" | {|class="wikitable" | ||
! variable !! example !! definition | ! variable !! example !! definition | ||
+ | |- | ||
+ | | antennaType || | ||
+ | * DIRECT | ||
+ | * RELAY | ||
+ | || whether the antenna is capable of acting as a relay | ||
|- | |- | ||
| packetInterval || | | packetInterval || | ||
Line 568: | Line 658: | ||
{ | { | ||
name = ModuleDataTransmitter | name = ModuleDataTransmitter | ||
− | + | ||
+ | antennaType = DIRECT | ||
packetInterval = 0.18 | packetInterval = 0.18 | ||
packetSize = 2 | packetSize = 2 | ||
Line 631: | Line 722: | ||
* true | * true | ||
* false | * false | ||
− | || | + | || Indicates whether the animation will turn the panel towards the sun. |
|- | |- | ||
| raycastTransformName || | | raycastTransformName || | ||
* suncatcher | * suncatcher | ||
− | || | + | || Specifies the GameObject in Unity with Z+ forward facing the sun that will act as the solar panel. |
|- | |- | ||
| pivotName || | | pivotName || | ||
* suncatcher | * suncatcher | ||
− | || | + | || Specifies the object in Unity which will act as the rotation point for the solar panel sun tracking function. |
|- | |- | ||
| isBreakable || | | isBreakable || | ||
Line 688: | Line 779: | ||
| referenceAttachNode || | | referenceAttachNode || | ||
* top | * top | ||
− | * bottom | + | * bottom |
+ | * dockingNode | ||
|| | || | ||
− | Specifies the node on the part that is used for the docking port, generally top or bottom | + | 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 || | | deployAnimationController || | ||
Line 702: | Line 794: | ||
* size0 | * 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. | || 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 || | | controlTransformName || | ||
* controlNode | * controlNode | ||
|| apparently only used for docking nodes that have related animations, see dockingPortInline | || 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 | ||
+ | |- | ||
|} | |} | ||
Line 715: | Line 868: | ||
referenceAttachNode = top | referenceAttachNode = top | ||
nodeType = size2 | nodeType = size2 | ||
+ | undockEjectionForce = 0.25 | ||
+ | minDistanceToReEngage = 3.5 | ||
+ | acquireForce = 3.5 | ||
+ | acquireTorque = 3.5 | ||
+ | acquireRange = 3.0 | ||
+ | captureRange = 1.5 | ||
+ | snapRotation = false | ||
} | } | ||
</pre> | </pre> | ||
Line 727: | Line 887: | ||
| thrustVectorTransformName || | | thrustVectorTransformName || | ||
* thrustTransform | * 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 || | | throttleLocked || | ||
Line 741: | Line 901: | ||
| ignitionThreshold || | | ignitionThreshold || | ||
* 0.1 | * 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 || | | minThrust || | ||
Line 814: | Line 974: | ||
Translates directly to ISP. In order to make a more efficient engine, set the second number of this array higher. | Translates directly to ISP. In order to make a more efficient engine, set the second number of this array higher. | ||
|- | |- | ||
− | | velocityCurve || | + | | 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. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
Line 864: | Line 1,009: | ||
| | | | ||
=== ModuleEnginesFX === | === ModuleEnginesFX === | ||
− | An | + | 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 | ||
Line 878: | Line 1,023: | ||
|| | || | ||
* running_closed | * running_closed | ||
− | || | + | || effect used for when the engine is running |
|- | |- | ||
| thrustVectorTransformName | | thrustVectorTransformName | ||
Line 885: | Line 1,030: | ||
* obj_gimbal | * 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 || | | exhaustDamage || | ||
Line 903: | Line 1,048: | ||
* 0.1 | * 0.1 | ||
* 0.05 | * 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 | | minThrust | ||
Line 1,625: | Line 1,770: | ||
| | | | ||
− | === | + | === ModuleResourceConverter === |
− | Used to create a part that | + | Used to create a part that convertes resources. |
{|class="wikitable" | {|class="wikitable" | ||
|- | |- | ||
! variable !! example !! definition | ! 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 | * true | ||
* false | * 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 | * 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 = | + | 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 | ||
+ | } | ||
} | } | ||
</pre> | </pre> | ||
+ | | | ||
|- | |- | ||
| | | | ||
− | === | + | === 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). | ||
|- | |- | ||
− | | | + | | 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 | + | || |
+ | Unknown. | ||
|- | |- | ||
− | | | + | | ThermalEfficiency || |
− | * | + | * Thermal efficiency definition |
− | + | || | |
− | || | + | Efficiency related to part temperature. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
− | + | | | |
− | |||
<pre> | <pre> | ||
MODULE | 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 | ||
+ | } | ||
+ | } | ||
</pre> | </pre> | ||
+ | | | ||
|- | |- | ||
| | | | ||
− | === | + | === 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 | ||
|- | |- | ||
+ | | 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. |
− | | | + | |} |
− | | | + | | |
− | + | <pre> | |
− | + | MODULE | |
− | + | { | |
− | + | name = ModuleResourceIntake | |
− | + | resourceName = IntakeAir | |
− | + | checkForOxygen = true | |
− | | | + | area = 0.006 |
+ | intakeSpeed = 10 | ||
+ | intakeTransformName = Intake | ||
+ | } | ||
+ | </pre> | ||
+ | | | ||
|- | |- | ||
− | | | + | | |
+ | |||
+ | === 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) | ||
+ | {|class="wikitable" | ||
+ | ! 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) | ||
|- | |- | ||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
|| | || | ||
Line 1,874: | Line 2,143: | ||
MODULE | MODULE | ||
{ | { | ||
− | name = | + | name = ModuleSAS |
− | + | SASServiceLevel = 1 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</pre> | </pre> | ||
Line 1,894: | Line 2,150: | ||
| | | | ||
− | === | + | === ModuleScienceContainer === |
+ | A place to store the results of a science experiment. | ||
{|class="wikitable" | {|class="wikitable" | ||
! variable !! example !! definition | ! 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. | ||
|- | |- | ||
− | | 0 || | + | | 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 | |
− | |||
− | |||
− | || | ||
|} | |} | ||
− | |||
|| | || | ||
<pre> | <pre> | ||
MODULE | MODULE | ||
{ | { | ||
− | name = | + | name = ModuleScienceContainer |
− | + | ||
− | + | reviewActionName = Review Stored Data | |
− | + | storeActionName = Store Experiments | |
− | + | evaOnlyStorage = True | |
− | + | storageRange = 4.0 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</pre> | </pre> | ||
Line 1,951: | Line 2,194: | ||
| | | | ||
− | === | + | === ModuleScienceExperiment === |
− | + | A place to conduct a science experiment. | |
{|class="wikitable" | {|class="wikitable" | ||
+ | ! 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 || | | useStaging || | ||
* True | * True | ||
− | * False | + | * False |
− | || specifies whether | + | || specifies whether this module can be activated through the normal staging system |
|- | |- | ||
− | | | + | | useActionGroups || |
* True | * True | ||
− | * False | + | * False |
− | || specifies whether | + | || 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 | + | || 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 | ||
+ | {|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> | ||
+ | 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 | ||
+ | } | ||
+ | </pre> | ||
|- | |- | ||
− | | | + | | |
− | + | ||
− | | | + | === ModuleScienceLab === |
+ | A place to modify a science experiment prior to transmission in order to gain more research points from it. | ||
+ | {|class="wikitable" | ||
+ | ! variable !! example !! definition | ||
|- | |- | ||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | containerModuleIndex || |
− | * 0 | + | * 0 |
− | || | + | || Specifies ModuleScienceContainer location in order in cfg file. 0 is first module listing, 1 is two and so on. |
|- | |- | ||
− | | | + | | dataTransmissionBoost || |
− | * 1 | + | * 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> | <pre> | ||
MODULE | MODULE | ||
{ | { | ||
− | + | name = ModuleScienceLab | |
− | + | ||
− | + | containerModuleIndex = 0 | |
− | + | dataTransmissionBoost = 1.15 | |
− | + | crewsRequired = 2 | |
− | + | ||
− | + | canResetConnectedModules = True | |
− | + | canResetNearbyModules = True | |
− | + | interactionRange = 5 | |
− | + | ||
− | + | RESOURCE_PROCESS | |
+ | { | ||
+ | name = ElectricCharge | ||
+ | amount = 10 | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |- | ||
+ | | | ||
− | + | === ModuleSteering === | |
− | + | Specifies that this part is steerable and provides the axis and animation information for steering the part. | |
− | + | {|class="wikitable" | |
− | + | ! 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> | <pre> | ||
MODULE | MODULE | ||
{ | { | ||
− | name = | + | 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> | </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" | {|class="wikitable" | ||
+ | |- | ||
! variable !! example !! definition | ! 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 /> | |
− | for the | + | * 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" | {|class="wikitable" | ||
! variable !! example !! definition | ! variable !! example !! definition | ||
|- | |- | ||
− | | | + | | hasMotor || |
− | * | + | * true |
− | * | + | * false |
− | + | || specifies whether the wheel has a powered propulsion system | |
− | || specifies the | ||
|- | |- | ||
− | | | + | | 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 | ||
+ | { | ||
+ | key = 0 170 0 0 | ||
+ | key = 2.5 100 0 0 | ||
+ | key = 12 0 0 0 | ||
+ | } | ||
+ | |||
+ | |||
+ | }</pre> | ||
+ | |- | ||
+ | | | ||
+ | |||
+ | === 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" | ||
+ | ==== USI_ClearIVA ==== | ||
+ | No calls. | ||
+ | |} | ||
+ | || | ||
+ | <pre> | ||
+ | MODULE | ||
+ | { | ||
+ | name = USI_ClearIVA | ||
+ | } | ||
+ | </pre> | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | [[Category:Documentation]][[Category:Modding]] |
Latest revision as of 05:48, 5 July 2021
Contents
- 1 STOCK MODULES
- 1.1 CModuleFuelLine
- 1.2 CModuleLinkedMesh
- 1.3 CModuleStrut
- 1.4 FlagDecal
- 1.5 FXModuleAnimateThrottle
- 1.6 FXModuleConstrainPosition
- 1.7 FXModuleLookAtConstraint
- 1.8 KerbalSeat
- 1.9 LaunchClamp
- 1.10 ModuleAlternator
- 1.11 ModuleAnchoredDecoupler
- 1.12 ModuleAnimateGeneric
- 1.13 ModuleAnimateHeat
- 1.14 ModuleAsteroid
- 1.15 ModuleCargoBay
- 1.16 ModuleCommand
- 1.17 ModuleControlSurface
- 1.18 ModuleDataTransmitter
- 1.19 ModuleDecouple
- 1.20 ModuleDeployableSolarPanel
- 1.21 ModuleDockingNode
- 1.22 ModuleEngines
- 1.23 ModuleEnginesFX
- 1.24 ModuleEnviroSensor
- 1.25 ModuleGenerator
- 1.26 ModuleGimbal
- 1.27 ModuleGrappleNode
- 1.28 ModuleJettison
- 1.29 ModuleLandingGear
- 1.30 ModuleLandingLeg
- 1.31 ModuleLight
- 1.32 ModuleParachute
- 1.33 ModuleRCS
- 1.34 ModuleReactionWheel
- 1.35 ModuleResourceConverter
- 1.36 ModuleResourceHarvester
- 1.37 ModuleResourceIntake
- 1.38 ModuleSAS
- 1.39 ModuleScienceContainer
- 1.40 ModuleScienceExperiment
- 1.41 ModuleScienceLab
- 1.42 ModuleSteering
- 1.43 ModuleTestSubject
- 1.44 ModuleWheel
- 1.45 MultiModeEngine
- 1.46 RetractableLadder
- 2 MODULES FROM MODS
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CModuleFuelLineNo 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 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CModuleLinkedMeshThis 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).
|
MODULE { name = CModuleLinkedMesh lineObjName = obj_line targetAnchorName = obj_targetAnchor anchorCapName = obj_anchorCap targetCapName = obj_targetCap } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CModuleStrutThis module is new in 0.90 and is used by strutConnector, presumably to indicate that it is a structural support part.
|
MODULE { name = CModuleStrut linearStrength = 150 angularStrength = 150 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FlagDecalParts 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.
|
MODULE { name = FlagDecal textureQuadName = flagTransform } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FXModuleAnimateThrottleAnimation 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.
|
MODULE { name = FXModuleAnimateThrottle animationName = colorAnimation dependOnEngineState = True responseSpeed = 0.5 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FXModuleConstrainPositionCopies 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.
|
MODULE { name = FXModuleConstrainPosition matchRotation = true matchPosition = false CONSTRAINFX { targetName = steering moversName = lateral } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FXModuleLookAtConstraintMakes 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.
|
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 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
KerbalSeatThis module makes the part have an EXTERIOR seat.
|
MODULE { name = KerbalSeat seatPivotName = seatPivot ejectDirection = 0, 1, 0.2 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LaunchClampThis module enables the part to hold a vessel in suspension on the launch pad.
|
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 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleAlternatorSpecifies that this part produced a resource, based on the percentage of thrust produced by the engine.
|
MODULE { name = ModuleAlternator RESOURCE { name = ElectricCharge rate = 5.0 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleAnchoredDecouplerThis 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.
|
MODULE { name = ModuleAnchoredDecoupler anchorName = anchor ejectionForce = 450 explosiveNodeID = srf } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleAnimateGenericGeneric 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.
|
MODULE { name = ModuleAnimateGeneric animationName = dish isOneShot = false startEventGUIName = Extend endEventGUIName = Retract actionGUIName = Toggle Antenna } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleAnimateHeatThis module specifies that heating animation will be applied to this part.
|
MODULE { name = ModuleAnimateHeat ThermalAnim = HeatAnimatioEmissiveLiquidEngine3 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleAsteroidBecause 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 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleCargoBayAllows a cargo bay to shield its contents from airflow and heat.
|
MODULE { name = ModuleCargoBay DeployModuleIndex = 1 closedPosition = 1 lookupRadius = 1 nodeOuterForeID = top nodeOuterAftID = bottom nodeInnerForeID = top2 nodeInnerAftID = bottom2 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleCommandApplies Command to vessels
|
MODULE { name = ModuleCommand minimumCrew = 1 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleControlSurfaceThis 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.
|
MODULE { name = ModuleControlSurface dragCoeff = 0.5 deflectionLiftCoeff = 0.7 ctrlSurfaceRange = 20 ctrlSurfaceArea = 0.95 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleDataTransmitterThis 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.
|
MODULE { name = ModuleDataTransmitter antennaType = DIRECT packetInterval = 0.18 packetSize = 2 packetResourceCost = 20.0 requiredResource = ElectricCharge DeployFxModules = 0 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleDecoupleModuleDecouple 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.
|
MODULE { name = ModuleDecouple ejectionForce = 250 explosiveNodeID = srf } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleDeployableSolarPanelSolar 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.
|
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 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleDockingNodeA module for docking ports
|
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 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleEnginesEverything about your engine, all in one module!
|
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 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleEnginesFXAn updated and more customizable version of ModuleEngines. Required for and allows implementation of multi-modal engines and engines with custom exhaust FX.
|
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 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleEnviroSensorEnvironmental sensor definitions. Specifies that this part is one of these types of sensors.
|
MODULE { name = ModuleEnviroSensor sensorType = ACC } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleGeneratorGenerators 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.
|
MODULE { name = ModuleGenerator isAlwaysActive = true OUTPUT_RESOURCE { name = ElectricCharge rate = 0.75 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleGimbalGimballing 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.
|
MODULE { name = ModuleGimbal gimbalTransformName = thrustTransform gimbalRange = 0.5 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleGrappleNodeAdded 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).
|
MODULE { name = ModuleGrappleNode nodeTransformName = ArticulatedCap deployAnimationController = 1 nodeType = size1 captureRange = 0.05 captureMinFwdDot = 0.866 captureMaxRvel = 1 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleJettisonspecifies that pieces of this craft are able to be jettisoned, what they are and how to jettison them
|
MODULE { name = ModuleJettison jettisonName = fairing bottomNodeName = bottom isFairing = True jettisonedObjectMass = 0.1 jettisonForce = 5 jettisonDirection = 0 0 1 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleLandingGearSpecifies that the part is a landing gear, implying a wheel, and the traits of that wheel. Hopefully being deprecated in favor of moduleWheel below.
|
MODULE { name = ModuleLandingGear BrakeTorque = 12 BrakeSpeed = 3 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleLandingLegSpecifies that this part is a landing leg and describes compression and resistance factors for the part.
|
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 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleLightSpecifies that this part is a light source, and how that light is produced and directed.
|
MODULE { name = ModuleLight lightName = spotlight useAnimationDim = true lightBrightenSpeed = 2.5 lightDimSpeed = 2.5 animationName = LightAnimation resourceAmount = 0.02 useResources = true } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleParachutespecifies that this part is a parachute and describes the operational parameters for parachute operations. Includes default settings for opening height and deployment atmospheric conditions.
|
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 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleRCSSpecifies 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.
|
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 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleReactionWheelSpecifies 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.
|
MODULE { name = ModuleReactionWheel PitchTorque = 30 YawTorque = 30 RollTorque = 30 RESOURCE { name = ElectricCharge rate = 0.6 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleResourceConverterUsed to create a part that convertes resources.
|
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 } } |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleResourceHarvesterUsed to create a part that harvestes resources from the environment.
|
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 } } |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleResourceIntakeUsed to create a part that produces a resource based on interaction with the environment.
|
MODULE { name = ModuleResourceIntake resourceName = IntakeAir checkForOxygen = true area = 0.006 intakeSpeed = 10 intakeTransformName = Intake } |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleSASUsed 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)
|
MODULE { name = ModuleSAS SASServiceLevel = 1 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleScienceContainerA place to store the results of a science experiment.
|
MODULE { name = ModuleScienceContainer reviewActionName = Review Stored Data storeActionName = Store Experiments evaOnlyStorage = True storageRange = 4.0 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleScienceExperimentA place to conduct a science experiment.
ExperimentUsageReqs
|
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 } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleScienceLabA place to modify a science experiment prior to transmission in order to gain more research points from it.
|
MODULE { name = ModuleScienceLab containerModuleIndex = 0 dataTransmissionBoost = 1.15 crewsRequired = 2 canResetConnectedModules = True canResetNearbyModules = True interactionRange = 5 RESOURCE_PROCESS { name = ElectricCharge amount = 10 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleSteeringSpecifies that this part is steerable and provides the axis and animation information for steering the part.
|
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 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleTestSubjectUsed 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.
|
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 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ModuleWheelThe better version of landingGear, with lots more options for the operation of wheels, including adding power, steering, and damage information.
|
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 } } | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MultiModeEngineSpecifies 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.
|
MODULE { name = MultiModeEngine primaryEngineID = AirBreathing secondaryEngineID = ClosedCycle }
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RetractableLadderJust like the name implies, this module is attached to parts that are or contain a retractable or collapsible ladder.
|
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
|
MODULE { name = KASModuleContainer maxSize = 80 } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MODULE { name = ModuleConnectedLivingSpace passable = true passableWhenSurfaceAttached = true } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MODULE { name = KASModulePartBay BAY { attachNode = top type = containerA type = containerB } } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MODULE { name = KASModulePort attachNode = top nodeType = kasplug breakForce = 30 nodeTransformName = plugNode } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MODULE { name = KASModuleAnchor groundDrag = 500 bounciness = 0 dynamicFriction = 0.8 staticFriction = 0.8 } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MODULE { name = KASModuleMagnet breakForce = 10 attachToEva = False minFwdDot = 0.998 powerDrain = 4 } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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 } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MODULE { name = KASModuleGrapplingHook partBreakForce = 6 staticBreakForce = 15 aboveDist = 0.05 forceNeeded = 4 attachToPart = true rayDir = (0,-1,0) rayLenght = 0.8 } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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!
|
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 } | ||||||||||||||||||||||||||||||||||||
|
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.
|
MODULE { name = USI_ClearIVA } |