Difference between revisions of "Oolite JavaScript Reference: Ship"
(Moved scriptedMisjump from PlayerShip.) |
(Update for 1.75.) |
||
Line 8: | Line 8: | ||
== Properties == |
== Properties == |
||
=== <code>aftWeapon</code> === |
=== <code>aftWeapon</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''aftWeapon''' : EquipmentType (read-only) |
'''aftWeapon''' : EquipmentType (read-only) |
||
The currently equipped aft weapon, or <code>null</code>. |
The currently equipped aft weapon, or <code>null</code>. |
||
− | |||
− | '''Bug:''' In Oolite 1.74.0, attempting to access a weapon slot with no weapon in it will halt the script without any error message. |
||
'''See also:''' <code>[[#forwardWeapon|forwardWeapon]]</code>, <code>[[#portWeapon|portWeapon]]</code>, <code>[[#starboardWeapon|starboardWeapon]]</code> |
'''See also:''' <code>[[#forwardWeapon|forwardWeapon]]</code>, <code>[[#portWeapon|portWeapon]]</code>, <code>[[#starboardWeapon|starboardWeapon]]</code> |
||
Line 40: | Line 37: | ||
=== <code>cargoSpaceAvailable</code> === |
=== <code>cargoSpaceAvailable</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''cargoSpaceAvailable''' : Number (read-only integer) |
'''cargoSpaceAvailable''' : Number (read-only integer) |
||
− | The ship’s available cargo space, in tons |
+ | The ship’s available cargo space, in tons. |
=== <code>cargoSpaceCapacity</code> === |
=== <code>cargoSpaceCapacity</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''cargoSpaceCapacity''' : Number (read-only integer) |
'''cargoSpaceCapacity''' : Number (read-only integer) |
||
− | The ship’s cargo capacity, in tons |
+ | The ship’s cargo capacity, in tons. |
=== <code>cargoSpaceUsed</code> === |
=== <code>cargoSpaceUsed</code> === |
||
Line 54: | Line 49: | ||
=== <code>contracts</code> === |
=== <code>contracts</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''contracts''' : Array (read-only NSDictionary) |
'''contracts''' : Array (read-only NSDictionary) |
||
The ship’s contracts. (For now only available for the player). Each contract contains the entries: <code>commodity: string, quantity: integer, description: string, start: integer, destination: integer, startName: string, destinationName: string, eta: integer, etaDescription: string, fee: Integer, premium: Integer</code><br> |
The ship’s contracts. (For now only available for the player). Each contract contains the entries: <code>commodity: string, quantity: integer, description: string, start: integer, destination: integer, startName: string, destinationName: string, eta: integer, etaDescription: string, fee: Integer, premium: Integer</code><br> |
||
Line 73: | Line 67: | ||
start and destination contain system ID numbers for planets in the current galaxy chart, eta is in clock seconds, fee is the amount that the player will receive when delivering this contract, and premium was the amount the player had to pay to secure this contract. |
start and destination contain system ID numbers for planets in the current galaxy chart, eta is in clock seconds, fee is the amount that the player will receive when delivering this contract, and premium was the amount the player had to pay to secure this contract. |
||
− | === <code> |
+ | === <code>cloakAutomatic</code> === |
− | {{ |
+ | {{oolite-prop-added|1.75|beta}} |
+ | '''cloakAutomatic''' : Boolean (read/write) |
||
+ | If <code>true</code> (the default), the ship will automatically engage its cloak while attacking. Otherwise, it must be managed by a script. The corresponding ''[[shipdata.plist]]'' key is <code>cloak_automatic</code>. |
||
+ | |||
+ | === <code>cruiseSpeed</code> === |
||
+ | {{Oolite-prop-added|1.75|beta}} |
||
'''cruiseSpeed''' : Number (read-only nonnegative) |
'''cruiseSpeed''' : Number (read-only nonnegative) |
||
The ship’s “normal” <code>[[#desiredSpeed|desiredSpeed]]</code>, used in normal flight. Normally this is 80 % of <code>[[#maxSpeed|maxSpeed]]</code>, but it may be lowered when accepting a slow escort. |
The ship’s “normal” <code>[[#desiredSpeed|desiredSpeed]]</code>, used in normal flight. Normally this is 80 % of <code>[[#maxSpeed|maxSpeed]]</code>, but it may be lowered when accepting a slow escort. |
||
Line 93: | Line 87: | ||
=== <code>equipment</code> === |
=== <code>equipment</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''equipment''' : Array of [[Oolite_JavaScript_Reference:_EquipmentInfo|EquipmentInfo ]] (read-only) |
'''equipment''' : Array of [[Oolite_JavaScript_Reference:_EquipmentInfo|EquipmentInfo ]] (read-only) |
||
The equipment a ship is carrying. |
The equipment a ship is carrying. |
||
Line 106: | Line 99: | ||
=== <code>forwardWeapon</code> === |
=== <code>forwardWeapon</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''forwardWeapon''' : EquipmentType (read-only) |
'''forwardWeapon''' : EquipmentType (read-only) |
||
The currently equipped forward weapon, or <code>null</code>. |
The currently equipped forward weapon, or <code>null</code>. |
||
− | |||
− | '''Bug:''' In Oolite 1.74.0, attempting to access a weapon slot with no weapon in it will halt the script without any error message. |
||
'''See also:''' <code>[[#aftWeapon|aftWeapon]]</code>, <code>[[#portWeapon|portWeapon]]</code>, <code>[[#starboardWeapon|starboardWeapon]]</code> |
'''See also:''' <code>[[#aftWeapon|aftWeapon]]</code>, <code>[[#portWeapon|portWeapon]]</code>, <code>[[#starboardWeapon|starboardWeapon]]</code> |
||
Line 137: | Line 127: | ||
'''hasHostileTarget''' : Boolean (read-only) |
'''hasHostileTarget''' : Boolean (read-only) |
||
<code>true</code> if the ship’s AI is trying to kill something, <code>false</code> otherwise. Always <code>false</code> for the player. |
<code>true</code> if the ship’s AI is trying to kill something, <code>false</code> otherwise. Always <code>false</code> for the player. |
||
+ | |||
+ | === <code>hasHyperspaceMotor</code> === |
||
+ | {{oolite-prop-added|1.75|beta}} |
||
+ | '''hasHyperspaceMotor''' : Boolean (read-only) |
||
+ | True if the ship can make witchspace jumps. The corresponding ''[[shipdata.plist]]'' entry is <code>hyperspace_motor</code>. |
||
=== <code>hasSuspendedAI</code> === |
=== <code>hasSuspendedAI</code> === |
||
Line 153: | Line 148: | ||
=== <code>isBoulder</code> === |
=== <code>isBoulder</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''isBoulder''' : Boolean (read/write) |
'''isBoulder''' : Boolean (read/write) |
||
<code>true</code> if the ship is a boulder (i.e., has the role "boulder in its roleset) |
<code>true</code> if the ship is a boulder (i.e., has the role "boulder in its roleset) |
||
=== <code>isCargo</code> === |
=== <code>isCargo</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''isCargo''' : Boolean (read-only) |
'''isCargo''' : Boolean (read-only) |
||
<code>true</code> if the ship is cargo (i.e., has scan_class CLASS_CARGO and contains at least one unit) |
<code>true</code> if the ship is cargo (i.e., has scan_class CLASS_CARGO and contains at least one unit) |
||
Line 167: | Line 160: | ||
=== <code>isDerelict</code> === |
=== <code>isDerelict</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''isDerelict''' : Boolean (read-only) |
'''isDerelict''' : Boolean (read-only) |
||
<code>true</code> if the ship is a derelict (i.e., the pilot has ejected from the ship, or the ship was created with the ship-key: "is_hulk") |
<code>true</code> if the ship is a derelict (i.e., the pilot has ejected from the ship, or the ship was created with the ship-key: "is_hulk") |
||
Line 190: | Line 182: | ||
=== <code>isPiloted</code> === |
=== <code>isPiloted</code> === |
||
− | {{Oolite-prop- |
+ | {{Oolite-prop-added|1.75}} |
'''isPiloted''' : Boolean (read-only) |
'''isPiloted''' : Boolean (read-only) |
||
<code>true</code> if the ship has a pilot on board, <code>false</code> otherwise. Generally have ships, station and escape pods pilots and have cargo, rocks, missiles or buoys no pilots. |
<code>true</code> if the ship has a pilot on board, <code>false</code> otherwise. Generally have ships, station and escape pods pilots and have cargo, rocks, missiles or buoys no pilots. |
||
Line 207: | Line 199: | ||
=== <code>isRock</code> === |
=== <code>isRock</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''isRock''' : Boolean (read-only) |
'''isRock''' : Boolean (read-only) |
||
<code>true</code> if the ship is a rock (i.e., has scan_class: CLASS_ROCK) |
<code>true</code> if the ship is a rock (i.e., has scan_class: CLASS_ROCK) |
||
Line 224: | Line 215: | ||
=== <code>lightsActive</code> === |
=== <code>lightsActive</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''lightsActive''' : Boolean (read-write) |
'''lightsActive''' : Boolean (read-write) |
||
Setting this property to <code>true</code> turns on all the entity’s flashers, and setting it to <code>false</code> turns them off. Setting it sets the <code>lightsActive</code> property for all subentities, but subentities’ setting can also be manipulated separately. In addition to affecting flashers, the value can be used by shaders. |
Setting this property to <code>true</code> turns on all the entity’s flashers, and setting it to <code>false</code> turns them off. Setting it sets the <code>lightsActive</code> property for all subentities, but subentities’ setting can also be manipulated separately. In addition to affecting flashers, the value can be used by shaders. |
||
Line 237: | Line 227: | ||
=== <code>maxThrust</code> === |
=== <code>maxThrust</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''maxThrust''' : Number (read-only) |
'''maxThrust''' : Number (read-only) |
||
The ship’s maximum <code>[[#thrust|thrust]]</code>. This value is the one defined as <code>thrust</code> in ''[[Shipdata.plist#thrust|shipdata.plist]]''. |
The ship’s maximum <code>[[#thrust|thrust]]</code>. This value is the one defined as <code>thrust</code> in ''[[Shipdata.plist#thrust|shipdata.plist]]''. |
||
=== <code>missileCapacity</code> === |
=== <code>missileCapacity</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''missileCapacity''' : Number (read-only integer) |
'''missileCapacity''' : Number (read-only integer) |
||
The maximum number of missiles the ship can carry. |
The maximum number of missiles the ship can carry. |
||
+ | |||
+ | === <code>missileLoadTime</code> === |
||
+ | {{Oolite-prop-added|1.75|beta}} |
||
+ | '''missileLoadTime''' : Number (read-write nonnegative) |
||
+ | The minimum amount of time between two missiles. The corresponding ''[[shipdata.plist]]'' key is <code>missile_load_time</code>. |
||
=== <code>missiles</code> === |
=== <code>missiles</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''missiles''' : Array (read-only array of [[Oolite JavaScript Reference: EquipmentInfo|EquipmentInfo]]) |
'''missiles''' : Array (read-only array of [[Oolite JavaScript Reference: EquipmentInfo|EquipmentInfo]]) |
||
The ship’s loaded missiles. |
The ship’s loaded missiles. |
||
Line 264: | Line 256: | ||
=== <code>passengers</code> === |
=== <code>passengers</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''passengers''' : Array (read-only NSDictionary) |
'''passengers''' : Array (read-only NSDictionary) |
||
The ship’s passengers. (For now only available for the player). Each passengers list contains the entries: <code>name: String, start: integer, destination: integer, startName: string, destinationName: string, eta: integer, etaDescription: string, fee: Integer, premium: Integer</code><br> |
The ship’s passengers. (For now only available for the player). Each passengers list contains the entries: <code>name: String, start: integer, destination: integer, startName: string, destinationName: string, eta: integer, etaDescription: string, fee: Integer, premium: Integer</code><br> |
||
Line 281: | Line 272: | ||
=== <code>portWeapon</code> === |
=== <code>portWeapon</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''portWeapon''' : EquipmentType (read-only) |
'''portWeapon''' : EquipmentType (read-only) |
||
The currently equipped forward weapon, or <code>null</code>. Currently, this is always <code>null</code> for non-player ships. |
The currently equipped forward weapon, or <code>null</code>. Currently, this is always <code>null</code> for non-player ships. |
||
− | |||
− | '''Bug:''' In Oolite 1.74.0, attempting to access a weapon slot with no weapon in it will halt the script without any error message. |
||
'''See also:''' <code>[[#aftWeapon|aftWeapon]]</code>, <code>[[#forwardWeapon|forwardWeapon]]</code>, <code>[[#starboardWeapon|starboardWeapon]]</code> |
'''See also:''' <code>[[#aftWeapon|aftWeapon]]</code>, <code>[[#forwardWeapon|forwardWeapon]]</code>, <code>[[#starboardWeapon|starboardWeapon]]</code> |
||
Line 295: | Line 283: | ||
=== <code>primaryRole</code> === |
=== <code>primaryRole</code> === |
||
'''primaryRole''' : String (read/write, read-only for player) |
'''primaryRole''' : String (read/write, read-only for player) |
||
− | The main role of the ship; the role for which it was created. For instance, if a ship’s ''shipdata.plist'' entry specifies the roles “pirate trader(0.5) escort”, and a ship of that type is spawned to be a trader, its <code>primaryRole</code> is <code>"trader"</code>, its <code>roles</code> is <code>["escort", "pirate", "trader"]</code> and its <code> |
+ | The main role of the ship; the role for which it was created. For instance, if a ship’s ''shipdata.plist'' entry specifies the roles “pirate trader(0.5) escort”, and a ship of that type is spawned to be a trader, its <code>primaryRole</code> is <code>"trader"</code>, its <code>roles</code> is <code>["escort", "pirate", "trader"]</code> and its <code>roleWeights</code> is <code> { "escort":1, "pirate":1, "trader":0.5}</code>. |
− | '''See also:''' <code>[[#roles|roles]]</code>, <code>[[# |
+ | '''See also:''' <code>[[#roles|roles]]</code>, <code>[[#roleWeights|roleWeights]]</code> |
=== <code>reportAIMessages</code> === |
=== <code>reportAIMessages</code> === |
||
Line 303: | Line 291: | ||
Debugging facility: set to <code>true</code> to dump information about AI activity to the log. |
Debugging facility: set to <code>true</code> to dump information about AI activity to the log. |
||
− | === <code> |
+ | === <code>roleWeights</code> === |
− | Note: in test release 1.75, this property will be renamed <code>roleWeights</code>. |
||
'''roles''' : Object (read-only) |
'''roles''' : Object (read-only) |
||
The probabilities for each role in <code>[[#roles|roles]]</code>. |
The probabilities for each role in <code>[[#roles|roles]]</code>. |
||
Example: |
Example: |
||
− | this.pirateProb = ship. |
+ | this.pirateProb = ship.roleWeights["pirate"] |
'''See also:''' <code>[[#primaryRole|primaryRole]]</code>, <code>[[#roles|roles]]</code> |
'''See also:''' <code>[[#primaryRole|primaryRole]]</code>, <code>[[#roles|roles]]</code> |
||
Line 316: | Line 304: | ||
The roles of the ship. This consists of the roles specified in the ship’s ''shipdata.plist'' entry, as well as the <code>[[#primaryRole|primaryRole]]</code> if it is not among those. |
The roles of the ship. This consists of the roles specified in the ship’s ''shipdata.plist'' entry, as well as the <code>[[#primaryRole|primaryRole]]</code> if it is not among those. |
||
− | '''See also:''' <code>[[#primaryRole|primaryRole]]</code>, <code>[[# |
+ | '''See also:''' <code>[[#primaryRole|primaryRole]]</code>, <code>[[#roleWeights|roleWeights]]</code>, <code>[[#hasRole|hasRole()]]</code> |
=== <code>savedCoordinates</code> === |
=== <code>savedCoordinates</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''savedCoordinates''' : [[Oolite JavaScript Reference: Vector|Vector]] (read-write) |
'''savedCoordinates''' : [[Oolite JavaScript Reference: Vector|Vector]] (read-write) |
||
The savedCoordinates of the ship in system co-ordinates. The savedCoordinates vector is only used by AI scripting to store a coordinate that can be used by other AI commands like <code>setDestinationToCoordinates</code>. It are the same coordinates that are set by the AI command: <code>"setCoordinates: X Y Z"</code> |
The savedCoordinates of the ship in system co-ordinates. The savedCoordinates vector is only used by AI scripting to store a coordinate that can be used by other AI commands like <code>setDestinationToCoordinates</code>. It are the same coordinates that are set by the AI command: <code>"setCoordinates: X Y Z"</code> |
||
Line 344: | Line 331: | ||
=== <code>scriptedMisjump</code> === |
=== <code>scriptedMisjump</code> === |
||
− | {{oolite- |
+ | {{oolite-prop-added|1.75|beta}} |
'''scriptedMisjump''' : Boolean (read/write) |
'''scriptedMisjump''' : Boolean (read/write) |
||
When <code>true</code>, the next hyperspace jump will be a misjump. The <code>scriptedMisjump</code> flag will remain <code>true</code> during the <code>shipWillExitWitchspace()</code> event handler, and will be set to <code>false</code> after the <code>shipExitedWitchspace()</code> event. |
When <code>true</code>, the next hyperspace jump will be a misjump. The <code>scriptedMisjump</code> flag will remain <code>true</code> during the <code>shipWillExitWitchspace()</code> event handler, and will be set to <code>false</code> after the <code>shipExitedWitchspace()</code> event. |
||
Line 360: | Line 347: | ||
=== <code>starboardWeapon</code> === |
=== <code>starboardWeapon</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''starboardWeapon''' : EquipmentType (read-only) |
'''starboardWeapon''' : EquipmentType (read-only) |
||
The currently equipped forward weapon, or <code>null</code>. Currently, this is always <code>null</code> for non-player ships. |
The currently equipped forward weapon, or <code>null</code>. Currently, this is always <code>null</code> for non-player ships. |
||
− | |||
− | '''Bug:''' In Oolite 1.74.0, attempting to access a weapon slot with no weapon in it will halt the script without any error message. |
||
'''See also:''' <code>[[#aftWeapon|aftWeapon]]</code>, <code>[[#forwardWeapon|forwardWeapon]]</code>, <code>[[#portWeapon|portWeapon]]</code> |
'''See also:''' <code>[[#aftWeapon|aftWeapon]]</code>, <code>[[#forwardWeapon|forwardWeapon]]</code>, <code>[[#portWeapon|portWeapon]]</code> |
||
Line 373: | Line 357: | ||
'''See also:''' <code>[[#isFrangible|isFrangible]]</code> |
'''See also:''' <code>[[#isFrangible|isFrangible]]</code> |
||
+ | |||
+ | === <code>subEntityCapacity</code> === |
||
+ | '''subEntityCapacity''' : Number (read-only integer) |
||
+ | The original number of subentities on the ship. |
||
+ | |||
+ | '''See also:''' <code>[[#subEntities|subEntities]]</code>, <code>[[#restoreSubEntities|restoreSubEntities()]]</code> |
||
=== <code>target</code> === |
=== <code>target</code> === |
||
'''target''' : Ship (read-write) |
'''target''' : Ship (read-write) |
||
− | The ship’s primary target, i.e. the entity it will attempt to shoot at. This value is automatically co-ordinated between a ship and its subentities. |
+ | The ship’s primary target, i.e. the entity it will attempt to shoot at. This value is automatically co-ordinated between a ship and its subentities. |
− | Starting with 1.74 a current target can be deselected by setting "target = null". (Before defining null resulted in an error) |
||
=== <code>temperature</code> === |
=== <code>temperature</code> === |
||
Line 383: | Line 373: | ||
=== <code>thrust</code> === |
=== <code>thrust</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''thrust''' : Number (read/write for NPCs, read-only for player) |
'''thrust''' : Number (read/write for NPCs, read-only for player) |
||
The ship’s thrust, ranging from 0 to <code>maxThrust</code>. This value determines how fast the ship accelerates or decelerates, specified in m/s². |
The ship’s thrust, ranging from 0 to <code>maxThrust</code>. This value determines how fast the ship accelerates or decelerates, specified in m/s². |
||
Line 390: | Line 379: | ||
=== <code>thrustVector</code> === |
=== <code>thrustVector</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''thrustVector''' : Vector3D (read-only) |
'''thrustVector''' : Vector3D (read-only) |
||
The inertialess velocity generated by the engines. |
The inertialess velocity generated by the engines. |
||
Line 397: | Line 385: | ||
=== <code>trackCloseContacts</code> === |
=== <code>trackCloseContacts</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''trackCloseContacts''' : Boolean (read/write) |
'''trackCloseContacts''' : Boolean (read/write) |
||
If true, AI events are generated for near collisions. |
If true, AI events are generated for near collisions. |
||
+ | |||
+ | === <code>vectorForward</code> === |
||
+ | '''vectorForward''' : Vector3D (read-only) |
||
+ | The vector pointing forwards from the ship (in world space for ships, relative to the parent for subentities). Equivalent to <code>ship.[[Oolite JavaScript Reference: Entity#orientation|orientation]].[[Oolite JavaScript Reference: Quaternion#vectorForward|vectorForward]]</code>. |
||
+ | |||
+ | === <code>vectorRight</code> === |
||
+ | '''vectorRight''' : Vector3D (read-only) |
||
+ | The vector pointing right from the ship (in world space for ships, relative to the parent for subentities). Equivalent to <code>ship.[[Oolite JavaScript Reference: Entity#orientation|orientation]].[[Oolite JavaScript Reference: Quaternion#vectorRight|vectorRight]]</code>. |
||
+ | |||
+ | === <code>vectorUp</code> === |
||
+ | '''vectorUp''' : Vector3D (read-only) |
||
+ | The vector pointing up from the ship (in world space for ships, relative to the parent for subentities). Equivalent to <code>ship.[[Oolite JavaScript Reference: Entity#orientation|orientation]].[[Oolite JavaScript Reference: Quaternion#vectorUp|vectorUp]]</code>. |
||
=== <code>velocity</code> === |
=== <code>velocity</code> === |
||
− | {{Oolite-prop-added|1.74}} |
||
'''velocity''' : Vector3D (read/write) |
'''velocity''' : Vector3D (read/write) |
||
The ship’s velocity. |
The ship’s velocity. |
||
Line 422: | Line 420: | ||
== Methods == |
== Methods == |
||
=== <code>abandonShip</code> === |
=== <code>abandonShip</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''abandonShip'''() : Boolean |
function '''abandonShip'''() : Boolean |
||
Returns <code>true</code> when the ship has an escapepod. It will launch all escapeposd on board leaving the ship behind as a empty hulk. (scanClass = CLASS_CARGO). This command does nothing when no escape-pod is present.<br> |
Returns <code>true</code> when the ship has an escapepod. It will launch all escapeposd on board leaving the ship behind as a empty hulk. (scanClass = CLASS_CARGO). This command does nothing when no escape-pod is present.<br> |
||
Line 428: | Line 425: | ||
=== <code>awardEquipment</code> === |
=== <code>awardEquipment</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''awardEquipment'''(equipmentType : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]]) |
function '''awardEquipment'''(equipmentType : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]]) |
||
Adds the given piece of equipment to the ship. |
Adds the given piece of equipment to the ship. |
||
Line 438: | Line 434: | ||
=== <code>canAwardEquipment</code> === |
=== <code>canAwardEquipment</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''canAwardEquipment'''(equipmentType : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]]) : Boolean |
function '''canAwardEquipment'''(equipmentType : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]]) : Boolean |
||
Tests whether it is possible to add a given equipment type. This command takes the conditions for offering inside equipment.plist into account. Returns <code>true</code> if <code>[[#awardEquipment|awardEquipment()]]</code> is expected to succeed, <code>false</code> otherwise. |
Tests whether it is possible to add a given equipment type. This command takes the conditions for offering inside equipment.plist into account. Returns <code>true</code> if <code>[[#awardEquipment|awardEquipment()]]</code> is expected to succeed, <code>false</code> otherwise. |
||
Line 445: | Line 440: | ||
=== <code>commsMessage</code> === |
=== <code>commsMessage</code> === |
||
− | function '''commsMessage'''(message : String |
+ | function '''commsMessage'''(message : String [,target : Ship]) |
− | Make the ship |
+ | Make the ship broadcast the specified message. Works on buoys and subentities as well as normal ships and stations. Messages are send to a maximum of 16 ships in range and always to the player when in range. When the optional target is used, the message goes only to that ship. |
− | |||
− | === <code>commsMessage</code> === |
||
− | {{Oolite-method-future|1.75}} |
||
− | function '''commsMessage'''(message : String [,target: ship]) : Ship |
||
− | Make the ship type entity broadcast the specified message. Works on buoys and subentities as well as normal ships and stations. Messages are send to a maximum of 16 ships in range and always to the player when in range. When the optional target is used, the message goes only to that ship. |
||
=== <code>deployEscorts</code> === |
=== <code>deployEscorts</code> === |
||
Line 475: | Line 470: | ||
=== <code>equipmentStatus</code> === |
=== <code>equipmentStatus</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''equipmentStatus'''(equipmentType : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]]) : String |
function '''equipmentStatus'''(equipmentType : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]]) : String |
||
− | Tests whether the specified type of equipment is installed, and whether it is functioning. Returns one of the following strings: <code>"EQUIPMENT_OK"</code>, <code>"EQUIPMENT_DAMAGED"</code>, <code>"EQUIPMENT_UNAVAILABLE"</code> |
+ | Tests whether the specified type of equipment is installed, and whether it is functioning. Returns one of the following strings: <code>"EQUIPMENT_OK"</code>, <code>"EQUIPMENT_DAMAGED"</code>, <code>"EQUIPMENT_UNAVAILABLE"</code> or <code>"EQUIPMENT_UNKNOWN"</code>. |
− | |||
− | '''Note:''' in test release 1.74, this method will throw an exception if called with an equipment type that does not exist. To test whether an equipment type exists, use <code>[[Oolite JavaScript Reference: EquipmentInfo#infoForKey|EquipmentInfo.infoForKey()]]</code>, which will return <code>null</code> for undefined equipment. In 1.75, it will instead return <code>"EQUIPMENT_UNKNOWN"</code> when passed an unknown equipment identifier. |
||
'''See also:''' <code>[[#setEquipmentStatus|setEquipmentStatus()]]</code> |
'''See also:''' <code>[[#setEquipmentStatus|setEquipmentStatus()]]</code> |
||
Line 504: | Line 498: | ||
=== <code>fireMissile</code> === |
=== <code>fireMissile</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''fireMissile'''([missile]) : Ship |
function '''fireMissile'''([missile]) : Ship |
||
fireMissile() will try to fire the first available missile and will return the missile fired, or <code>null</code> if no missiles can be fired at this time. It can take the optional missile identifier parameter, to allow for a specific missile to be fired. Missiles cannot be fired if the ship hasn’t got a valid target, or if the previous missile was launched less than <code>missile_load_time</code> seconds before. If a missile type was specified, and not found on the ship, no missile will be fired. |
fireMissile() will try to fire the first available missile and will return the missile fired, or <code>null</code> if no missiles can be fired at this time. It can take the optional missile identifier parameter, to allow for a specific missile to be fired. Missiles cannot be fired if the ship hasn’t got a valid target, or if the previous missile was launched less than <code>missile_load_time</code> seconds before. If a missile type was specified, and not found on the ship, no missile will be fired. |
||
Line 527: | Line 520: | ||
=== <code>removeEquipment</code> === |
=== <code>removeEquipment</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''removeEquipment'''(equipmentType : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]]) |
function '''removeEquipment'''(equipmentType : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]]) |
||
Removes the given piece of equipment from the ship. |
Removes the given piece of equipment from the ship. |
||
Line 534: | Line 526: | ||
Example: |
Example: |
||
ship.removeEquipment("EQ_ECM"); |
ship.removeEquipment("EQ_ECM"); |
||
+ | |||
+ | === <code>restoreSubEntities</code> === |
||
+ | {{oolite-method-added|1.75|beta}} |
||
+ | function '''restoreSubEntities'''() : Boolean |
||
+ | Recreate all destroyed subentities of the ship. Returns <code>true</code> if any subentities were added. |
||
=== <code>selectNewMissile</code> === |
=== <code>selectNewMissile</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''selectNewMissile'''() : equipmentKey |
function '''selectNewMissile'''() : equipmentKey |
||
selectNewMissile() will automatically select a missile for a specific ship. It uses the missile_role shipdata.plist key to find out which missiles to select. As with the system populator, there's a small chance that missiles other than the missile_role specified in shipdata will be selected. |
selectNewMissile() will automatically select a missile for a specific ship. It uses the missile_role shipdata.plist key to find out which missiles to select. As with the system populator, there's a small chance that missiles other than the missile_role specified in shipdata will be selected. |
||
Line 544: | Line 540: | ||
=== <code>sendAIMessage</code> === |
=== <code>sendAIMessage</code> === |
||
− | {{Oolite-method- |
+ | {{Oolite-method-added|1.75}} |
function '''sendAIMessage'''(message : String) |
function '''sendAIMessage'''(message : String) |
||
Add a message to the ship’s AI deferred message queue. Messages in the queue are handled immediately after the next periodic <code>UPDATE</code> message. Identical messages are coalesced. |
Add a message to the ship’s AI deferred message queue. Messages in the queue are handled immediately after the next periodic <code>UPDATE</code> message. Identical messages are coalesced. |
||
Line 557: | Line 553: | ||
=== <code>setCargo</code> === |
=== <code>setCargo</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''setCargo'''(commodity : String [, count : Number]) : Boolean |
function '''setCargo'''(commodity : String [, count : Number]) : Boolean |
||
Attempts to create <code>count</code> weight units of the commodity <code>commodity</code> for a cargo barrel. (Can not be used to set cargo for ships) When more units are defined than 1 ton, the count is reduced to one ton. It returns false when the selected commodity is unknown. If <code>count</code> is not specified, one will be assumed. |
Attempts to create <code>count</code> weight units of the commodity <code>commodity</code> for a cargo barrel. (Can not be used to set cargo for ships) When more units are defined than 1 ton, the count is reduced to one ton. It returns false when the selected commodity is unknown. If <code>count</code> is not specified, one will be assumed. |
||
=== <code>setEquipmentStatus</code> === |
=== <code>setEquipmentStatus</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''setEquipmentStatus'''(equipmentType : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]], statusKey : String) |
function '''setEquipmentStatus'''(equipmentType : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]], statusKey : String) |
||
Changes the status of the given piece of equipment from the ship. The two only valid status keys are <code>"EQUIPMENT_OK"</code>, <code>"EQUIPMENT_DAMAGED"</code>. |
Changes the status of the given piece of equipment from the ship. The two only valid status keys are <code>"EQUIPMENT_OK"</code>, <code>"EQUIPMENT_DAMAGED"</code>. |
||
Line 571: | Line 565: | ||
=== <code>setMaterials</code> === |
=== <code>setMaterials</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''setMaterials'''(materialDictionary : Object [, shaderDictionary : Object]) : Boolean |
function '''setMaterials'''(materialDictionary : Object [, shaderDictionary : Object]) : Boolean |
||
Set the materials of the ship’s model. This works exactly like the <code>materials</code> dictionary in [[shipdata.plist]]. The optional <code>shaderDictionary</code> argument overrides <code>materialDictionary</code> if shaders are active. |
Set the materials of the ship’s model. This works exactly like the <code>materials</code> dictionary in [[shipdata.plist]]. The optional <code>shaderDictionary</code> argument overrides <code>materialDictionary</code> if shaders are active. |
||
Line 585: | Line 578: | ||
=== <code>setShaders</code> === |
=== <code>setShaders</code> === |
||
− | {{Oolite-method-added|1.74}} |
||
function '''setShaders'''(shaderDictionary : Object) : Boolean |
function '''setShaders'''(shaderDictionary : Object) : Boolean |
||
Set the shader materials of the ship’s model. Equivalent to <code>[[#setMaterials|setMaterials()]]</code> with the <code>materialDictionary</code> value set to the ship’s current material dictionary. |
Set the shader materials of the ship’s model. Equivalent to <code>[[#setMaterials|setMaterials()]]</code> with the <code>materialDictionary</code> value set to the ship’s current material dictionary. |
||
Line 609: | Line 601: | ||
'''See also:''' <code>[[#AI|AI]]</code>, <code>[[#setAI|setAI()]]</code>, <code>[[#exitAI|exitAI()]]</code> |
'''See also:''' <code>[[#AI|AI]]</code>, <code>[[#setAI|setAI()]]</code>, <code>[[#exitAI|exitAI()]]</code> |
||
+ | |||
+ | === <code>updateEscortFormation</code> === |
||
+ | {{oolite-method-added|1.75|beta}} |
||
+ | function '''updateEscortFormation'''() |
||
+ | Request that the game updates the target positions for the ship’s escorts by calling the ship’s script’s <code>coordinatesForEscortPosition()</code> method. |
||
[[Category:Oolite JavaScript Reference]] |
[[Category:Oolite JavaScript Reference]] |
Revision as of 14:03, 20 February 2011
Prototype: Entity
Subtypes: Station
, PlayerShip
The Ship
class is an Entity
representing a ship, station, missile, cargo pod or other flying item – anything that can be specified in shipdata.plist. A Ship
has all the properties and methods of a Entity
, and several others.
Station
s and the PlayerShip
are types of ship. Note that these more specific types have additional properties and methods.
Contents
- 1 Properties
- 1.1 aftWeapon
- 1.2 AI
- 1.3 AIState
- 1.4 beaconCode
- 1.5 bounty
- 1.6 cargoSpaceAvailable
- 1.7 cargoSpaceCapacity
- 1.8 cargoSpaceUsed
- 1.9 contracts
- 1.10 cloakAutomatic
- 1.11 cruiseSpeed
- 1.12 desiredSpeed
- 1.13 displayName
- 1.14 entityPersonality
- 1.15 equipment
- 1.16 escortGroup
- 1.17 escorts
- 1.18 forwardWeapon
- 1.19 fuel
- 1.20 group
- 1.21 hasHostileTarget
- 1.22 hasHyperspaceMotor
- 1.23 hasSuspendedAI
- 1.24 heatInsulation
- 1.25 isBeacon
- 1.26 isBoulder
- 1.27 isCargo
- 1.28 isCloaked
- 1.29 isDerelict
- 1.30 isFrangible
- 1.31 isJamming
- 1.32 isMine
- 1.33 isMissile
- 1.34 isPiloted
- 1.35 isPirate
- 1.36 isPirateVictim
- 1.37 isPolice
- 1.38 isRock
- 1.39 isThargoid
- 1.40 isTrader
- 1.41 isWeapon
- 1.42 lightsActive
- 1.43 maxSpeed
- 1.44 maxThrust
- 1.45 missileCapacity
- 1.46 missileLoadTime
- 1.47 missiles
- 1.48 name
- 1.49 passengerCapacity
- 1.50 passengerCount
- 1.51 passengers
- 1.52 portWeapon
- 1.53 potentialCollider
- 1.54 primaryRole
- 1.55 reportAIMessages
- 1.56 roleWeights
- 1.57 roles
- 1.58 savedCoordinates
- 1.59 scannerDisplayColor1
- 1.60 scannerDisplayColor2
- 1.61 scannerRange
- 1.62 script
- 1.63 scriptedMisjump
- 1.64 scriptInfo
- 1.65 speed
- 1.66 starboardWeapon
- 1.67 subEntities
- 1.68 subEntityCapacity
- 1.69 target
- 1.70 temperature
- 1.71 thrust
- 1.72 thrustVector
- 1.73 trackCloseContacts
- 1.74 vectorForward
- 1.75 vectorRight
- 1.76 vectorUp
- 1.77 velocity
- 1.78 weaponRange
- 1.79 withinStationAegis
- 2 Methods
- 2.1 abandonShip
- 2.2 awardEquipment
- 2.3 canAwardEquipment
- 2.4 commsMessage
- 2.5 deployEscorts
- 2.6 dockEscorts
- 2.7 dumpCargo
- 2.8 ejectItem
- 2.9 ejectSpecificItem
- 2.10 equipmentStatus
- 2.11 exitAI
- 2.12 exitSystem
- 2.13 explode
- 2.14 fireECM
- 2.15 fireMissile
- 2.16 hasRole
- 2.17 reactToAIMessage
- 2.18 remove
- 2.19 removeEquipment
- 2.20 restoreSubEntities
- 2.21 selectNewMissile
- 2.22 sendAIMessage
- 2.23 setAI
- 2.24 setCargo
- 2.25 setEquipmentStatus
- 2.26 setMaterials
- 2.27 setScript
- 2.28 setShaders
- 2.29 spawn
- 2.30 spawnOne
- 2.31 switchAI
- 2.32 updateEscortFormation
Properties
aftWeapon
aftWeapon : EquipmentType (read-only)
The currently equipped aft weapon, or null
.
See also: forwardWeapon
, portWeapon
, starboardWeapon
AI
AI : String (read-only)
The name of the ship’s current AI.
See also: AIState
, setAI()
, switchAI()
, exitAI()
AIState
AIState : String (read/write, read-only for player)
The ship’s AI’s current state.
See also: AI
, reactToAIMessage()
, hasSuspendedAI
beaconCode
beaconCode : String (read-only)
If the ship is a beacon, an identifying string. The first character is used for identification on the Advanced Space Compass. For non-beacons, this property is null
.
See also: isBeacon
bounty
bounty : Number (read/write integer)
The bounty on the ship. In the case of the player, it is halved at each witchspace jump.
It is actually the legal status of the ship that is shown here and not the bounty. For all ships both are the same but for anything with scan class Thargoid the legal status is only based on the ships mass and has no relation to its defined bounty.
cargoSpaceAvailable
cargoSpaceAvailable : Number (read-only integer)
The ship’s available cargo space, in tons.
cargoSpaceCapacity
cargoSpaceCapacity : Number (read-only integer)
The ship’s cargo capacity, in tons.
cargoSpaceUsed
cargoSpaceUsed : Number (read-only integer)
The ship’s current cargo, in tons. Any ship carrying less than
contracts
contracts : Array (read-only NSDictionary)
The ship’s contracts. (For now only available for the player). Each contract contains the entries: commodity: string, quantity: integer, description: string, start: integer, destination: integer, startName: string, destinationName: string, eta: integer, etaDescription: string, fee: Integer, premium: Integer
For example, the information of the first contract can be obtained by:
player.ship.contracts[0].commodity player.ship.contracts[0].quantity player.ship.contracts[0].description player.ship.contracts[0].start player.ship.contracts[0].destination player.ship.contracts[0].startName player.ship.contracts[0].destinationName player.ship.contracts[0].eta // Estimated Time of Arrival. player.ship.contracts[0].etaDescription player.ship.contracts[0].fee // The profit of the contract, paid out on successful delivery. player.ship.contracts[0].premium // The sum paid to obtain the goods and paid back on successful delivery.
start and destination contain system ID numbers for planets in the current galaxy chart, eta is in clock seconds, fee is the amount that the player will receive when delivering this contract, and premium was the amount the player had to pay to secure this contract.
cloakAutomatic
This property was added in Oolite beta release 1.75.
cloakAutomatic : Boolean (read/write)
If true
(the default), the ship will automatically engage its cloak while attacking. Otherwise, it must be managed by a script. The corresponding shipdata.plist key is cloak_automatic
.
cruiseSpeed
This property was added in Oolite beta release 1.75.
cruiseSpeed : Number (read-only nonnegative)
The ship’s “normal” desiredSpeed
, used in normal flight. Normally this is 80 % of maxSpeed
, but it may be lowered when accepting a slow escort.
desiredSpeed
desiredSpeed : Number (read/write nonnegative, read-only for player)
The speed the AI will attempt to maintain. The AI core and AI script may change this from time to time. The corresponding AI method is setSpeedFactorTo:
; a speed factor of 1.0 corresponds to a desiredSpeed
equal to maxSpeed
.
See also: cruiseSpeed
displayName
displayName : String (read/write, read-only for player)
The name of the ship as seen by the player. By default it is the same as name(name
key in shipdata.plist).
entityPersonality
entityPersonality : Number (read-only integer)
A random number in the range 0..32767 which is generated when the ship is created. Equivalent to the entityPersonalityInt
uniform binding.
equipment
equipment : Array of EquipmentInfo (read-only)
The equipment a ship is carrying.
escortGroup
escortGroup : ShipGroup
The ship’s deployed escorts.
escorts
escorts : Array (read-only array of Entitys)
The ship’s deployed escorts.
forwardWeapon
forwardWeapon : EquipmentType (read-only)
The currently equipped forward weapon, or null
.
See also: aftWeapon
, portWeapon
, starboardWeapon
fuel
fuel : Number (read/write)
The ship’s current fuel capacity, in LY. The game will limit this to the range 0..7, and round it off to the nearest tenth.
See also: PlayerShip.fuelLeakRate
group
group : ShipGroup
Contains ship’s belonging to each other. Added pirate groups are an example or a station with its launched defenders.
A group is an individual object that can be linked to several ships belonging to the same group. When a ship dies and the group object has still owners, the group stays active as object. The group is only removed from memory after the last ship that had this group as property is removed.
Adding a group to a ship does not automatic puts that ship in the group. For that to happen you need also use the addShip() command.
e.g.
this.ship.group = new ShipGroup(); this.ship.group.addShip(this.ship);
hasHostileTarget
hasHostileTarget : Boolean (read-only)
true
if the ship’s AI is trying to kill something, false
otherwise. Always false
for the player.
hasHyperspaceMotor
This property was added in Oolite beta release 1.75.
hasHyperspaceMotor : Boolean (read-only)
True if the ship can make witchspace jumps. The corresponding shipdata.plist entry is hyperspace_motor
.
hasSuspendedAI
hasSuspendedAI : Boolean (read-only)
true
if the ship has suspended AIs, false
otherwise.
heatInsulation
heatInsulation : Number (read/write)
The ship’s heat insulation factor. 1.0 is normal, higher values mean more resistance to heat.
isBeacon
isBeacon : Boolean (read-only)
true
if the ship is a beacon (i.e., can show up on the Advanced Space Compass with a character indicating its identity), false
otherwise.
See also: beaconCode
isBoulder
isBoulder : Boolean (read/write)
true
if the ship is a boulder (i.e., has the role "boulder in its roleset)
isCargo
isCargo : Boolean (read-only)
true
if the ship is cargo (i.e., has scan_class CLASS_CARGO and contains at least one unit)
isCloaked
isCloaked : Boolean (read/write)
true
if the ship has a cloaking device which is currently active false
otherwise. If the ship has a cloaking device and sufficient energy to use it, you can activate it by setting isCloaked
to true
.
isDerelict
isDerelict : Boolean (read-only)
true
if the ship is a derelict (i.e., the pilot has ejected from the ship, or the ship was created with the ship-key: "is_hulk")
isFrangible
isFrangible : Boolean (read-only)
true
if the ship is frangible (i.e., its subentities can be destroyed separately from the main ship), false
otherwise.
See also: subEntities
isJamming
isJamming : Boolean (read-only)
true
if the ship has a military scanner jammer which is currently active false
otherwise.
isMine
isMine : Boolean (read-only)
true
if the ship is a mine, false
otherwise.
isMissile
isMissile : Boolean (read-only)
true
if the ship is a missile, false
otherwise.
isPiloted
This property was added in Oolite test release 1.75.
isPiloted : Boolean (read-only)
true
if the ship has a pilot on board, false
otherwise. Generally have ships, station and escape pods pilots and have cargo, rocks, missiles or buoys no pilots.
isPirate
isPirate : Boolean (read-only)
true
if the ship is a pirate vessel, false
otherwise. Currently equivalent to primaryRole == "pirate"
.
isPirateVictim
isPirateVictim : Boolean (read-only)
true
if the ship’s primary role is listed in pirate-victim-roles.plist, false
otherwise. This is the same test used by the pirate AI to select victims.
isPolice
isPolice : Boolean (read-only)
true
if the ship is a police vessel, false
otherwise. Currently equivalent to scanClass == "CLASS_POLICE"
.
isRock
isRock : Boolean (read-only)
true
if the ship is a rock (i.e., has scan_class: CLASS_ROCK)
isThargoid
isThargoid : Boolean (read-only)
true
if the ship is a Thargoid vessel, false
otherwise. Currently equivalent to scanClass == "CLASS_THARGOID"
.
isTrader
isTrader : Boolean (read-only)
true
if the ship is a merchant vessel, false
otherwise. Currently equivalent to primaryRole == "trader" || isPlayer
. Note: isPirateVictim
may be a better choice in many cases.
isWeapon
isWeapon : Boolean (read-only)
true
if the ship is a weapon, false
otherwise. Currently equivalent to isMissile || isMine
, but new categories of weapon could be added in future.
lightsActive
lightsActive : Boolean (read-write)
Setting this property to true
turns on all the entity’s flashers, and setting it to false
turns them off. Setting it sets the lightsActive
property for all subentities, but subentities’ setting can also be manipulated separately. In addition to affecting flashers, the value can be used by shaders.
Note: lightsActive
is always true
when a ship is spawned, although individual flashers may be off because they have initially_on
set to false in their shipdata.plist declarations.
maxSpeed
maxSpeed : Number (read-only)
The ship’s maximum speed under normal power. Note that speed
may exceed this when witch fuel injectors or hyperspeed are in use.
See also: speed
maxThrust
maxThrust : Number (read-only)
The ship’s maximum thrust
. This value is the one defined as thrust
in shipdata.plist.
missileCapacity
missileCapacity : Number (read-only integer)
The maximum number of missiles the ship can carry.
missileLoadTime
This property was added in Oolite beta release 1.75.
missileLoadTime : Number (read-write nonnegative)
The minimum amount of time between two missiles. The corresponding shipdata.plist key is missile_load_time
.
missiles
missiles : Array (read-only array of EquipmentInfo)
The ship’s loaded missiles.
name
name : String (read/write, read-only for player)
The name of the ship type (name
key in shipdata.plist).
passengerCapacity
passengerCapacity : Number (read-only integer)
The ship’s maximum passenger capacity.
passengerCount
passengerCount : Number (read-only integer)
The ship’s current number of passengers.
passengers
passengers : Array (read-only NSDictionary)
The ship’s passengers. (For now only available for the player). Each passengers list contains the entries: name: String, start: integer, destination: integer, startName: string, destinationName: string, eta: integer, etaDescription: string, fee: Integer, premium: Integer
For example, the information of the first contract can be obtained by:
player.ship.passengers[0].name player.ship.passengers[0].start player.ship.passengers[0].destination player.ship.passengers[0].startName player.ship.passengers[0].destinationName player.ship.passengers[0].eta player.ship.passengers[0].etaDescription player.ship.passengers[0].fee // The final fee, paid out on successful delivery. player.ship.passengers[0].premium // The advance fee, already paid on acceptance of the contract.
start and destination contain system ID numbers for planets in the current galaxy chart, eta is in clock seconds, fee is the amount that the player will receive when delivering this passenger, and premium shows the amount the player received when the passenger boarded the ship.
portWeapon
portWeapon : EquipmentType (read-only)
The currently equipped forward weapon, or null
. Currently, this is always null
for non-player ships.
See also: aftWeapon
, forwardWeapon
, starboardWeapon
potentialCollider
potentialCollider : Entity (read-only)
The entity the ship is currently trying not to crash into, if any.
primaryRole
primaryRole : String (read/write, read-only for player)
The main role of the ship; the role for which it was created. For instance, if a ship’s shipdata.plist entry specifies the roles “pirate trader(0.5) escort”, and a ship of that type is spawned to be a trader, its primaryRole
is "trader"
, its roles
is ["escort", "pirate", "trader"]
and its roleWeights
is { "escort":1, "pirate":1, "trader":0.5}
.
See also: roles
, roleWeights
reportAIMessages
reportAIMessages : Boolean (read/write)
Debugging facility: set to true
to dump information about AI activity to the log.
roleWeights
roles : Object (read-only)
The probabilities for each role in roles
.
Example:
this.pirateProb = ship.roleWeights["pirate"]
See also: primaryRole
, roles
roles
roles : Array (read-only array of Strings)
The roles of the ship. This consists of the roles specified in the ship’s shipdata.plist entry, as well as the primaryRole
if it is not among those.
See also: primaryRole
, roleWeights
, hasRole()
savedCoordinates
savedCoordinates : Vector (read-write)
The savedCoordinates of the ship in system co-ordinates. The savedCoordinates vector is only used by AI scripting to store a coordinate that can be used by other AI commands like setDestinationToCoordinates
. It are the same coordinates that are set by the AI command: "setCoordinates: X Y Z"
scannerDisplayColor1
scannerDisplayColor1 : Colour specifier (read/write)
The first of two colours used by the ship’s scanner “lollipop”. When read, this will always be an array of four numbers in the range 0..1 (representing red, green, blue and alpha components). Any colour specifier format may be assigned to it. Assigning null
will restore the value from shipdata.plist, or the default value for the ship’s scan class.
See also: scannerDisplayColor2
scannerDisplayColor2
scannerDisplayColor2 : Colour specifier (read/write)
The second scanner colour. If both scannerDisplayColor1
and scannerDisplayColor2
are specified, the scanner lollipop will alternate between the two colours.
See also: scannerDisplayColor1
scannerRange
scannerRange : Number (read-only)
The range of the ship’s scanner.
script
script : Script (read-only)
The ship’s script.
scriptedMisjump
This property was added in Oolite beta release 1.75.
scriptedMisjump : Boolean (read/write)
When true
, the next hyperspace jump will be a misjump. The scriptedMisjump
flag will remain true
during the shipWillExitWitchspace()
event handler, and will be set to false
after the shipExitedWitchspace()
event.
scriptInfo
scriptInfo : Object (read-only)
The contents of the script_info
key in the ship’s shipdata.plist entry, if any. This may be any property list object, but the reccomended approach is to use a dictionary whose keys have a unique prefix (such as you should be using for file names, ship names etc.). A property list dictionary is converted to a JavaScript object with properties corresponding to the dictionary’s keys. All other property list types used with Oolite have directly corresponding JavaScript types.
When using numeric values in the scriptInfo, the JS engine is not able to detect the type reliably on all systems, so you always must expclicit convert its content to a number by using parseInt(scriptInfo.myKey) or parseFloat(scriptInfo.myKey).
speed
speed : Number (read-only)
The ship’s current speed.
See also: maxSpeed
starboardWeapon
starboardWeapon : EquipmentType (read-only)
The currently equipped forward weapon, or null
. Currently, this is always null
for non-player ships.
See also: aftWeapon
, forwardWeapon
, portWeapon
subEntities
subEntities : Array (read-only array of Ships)
The ships subentities, or null
if it has none. Special subentities such as flashers and exhaust plumes are not included.
See also: isFrangible
subEntityCapacity
subEntityCapacity : Number (read-only integer)
The original number of subentities on the ship.
See also: subEntities
, restoreSubEntities()
target
target : Ship (read-write)
The ship’s primary target, i.e. the entity it will attempt to shoot at. This value is automatically co-ordinated between a ship and its subentities.
temperature
temperature : Number (read/write)
The ship’s temperature, normalized such that a temperature of 1.0 is the level at which a ship starts taking heat damage.
thrust
thrust : Number (read/write for NPCs, read-only for player)
The ship’s thrust, ranging from 0 to maxThrust
. This value determines how fast the ship accelerates or decelerates, specified in m/s².
See also: thrustVector
thrustVector
thrustVector : Vector3D (read-only)
The inertialess velocity generated by the engines.
trackCloseContacts
trackCloseContacts : Boolean (read/write)
If true, AI events are generated for near collisions.
vectorForward
vectorForward : Vector3D (read-only)
The vector pointing forwards from the ship (in world space for ships, relative to the parent for subentities). Equivalent to ship.orientation.vectorForward
.
vectorRight
vectorRight : Vector3D (read-only)
The vector pointing right from the ship (in world space for ships, relative to the parent for subentities). Equivalent to ship.orientation.vectorRight
.
vectorUp
vectorUp : Vector3D (read-only)
The vector pointing up from the ship (in world space for ships, relative to the parent for subentities). Equivalent to ship.orientation.vectorUp
.
velocity
velocity : Vector3D (read/write)
The ship’s velocity.
Note: A ship’s velocity consists of two components, inertial velocity and inertialess thrust. Generally, inertial velocity is zero (so velocity
is equal to thrustVector
), but inertial impulses may be applied if a ship collides or is caught in an explosion. If inertial velocity is non-zero, the ship’s engines will work to counteract it. Changing the ship’s velocity will always apply inertial velocity, so for ships with non-zero maxThrust
the effect will be temporary.
See also: thrustVector
weaponRange
weaponRange : Number (read-only)
The maximum range of the ship’s primary weapon. For the player it is the range of the weapon that fired as last, even when the view direction changed.
Range values are: WEAPON_PLASMA_CANNON: 5000, WEAPON_PULSE_LASER: 12500, WEAPON_BEAM_LASER: 15000, WEAPON_MINING_LASER: 12500, WEAPON_THARGOID_LASER: 17500, WEAPON_MILITARY_LASER: 30000, WEAPON_NONE: 32000.
(Turrets are secondary weapons with a maximum range of 6000)
withinStationAegis
withinStationAegis : Boolean (read-only)
true
if the ship is within the aegis of the system’s main station (i.e., no more than 51 200 game metres from the station, or twice scanner range).
Methods
abandonShip
function abandonShip() : Boolean
Returns true
when the ship has an escapepod. It will launch all escapeposd on board leaving the ship behind as a empty hulk. (scanClass = CLASS_CARGO). This command does nothing when no escape-pod is present.
Pressence of an escapepod can be tested with: equipmentStatus("EQ_ESCAPE_POD") == "EQUIPMENT_OK"
awardEquipment
function awardEquipment(equipmentType : equipmentInfoExpression)
Adds the given piece of equipment to the ship.
Example:
ship.awardEquipment("EQ_ECM");
See also: canAwardEquipment()
, removeEquipment()
canAwardEquipment
function canAwardEquipment(equipmentType : equipmentInfoExpression) : Boolean
Tests whether it is possible to add a given equipment type. This command takes the conditions for offering inside equipment.plist into account. Returns true
if awardEquipment()
is expected to succeed, false
otherwise.
See also: awardEquipment()
commsMessage
function commsMessage(message : String [,target : Ship])
Make the ship broadcast the specified message. Works on buoys and subentities as well as normal ships and stations. Messages are send to a maximum of 16 ships in range and always to the player when in range. When the optional target is used, the message goes only to that ship.
deployEscorts
function deployEscorts()
Launch the ship’s escorts, if any.
dockEscorts
function dockEscorts()
Dock the ship’s deployed escorts, if any.
dumpCargo
function dumpCargo() : Ship
Ejects one item of cargo from the ship, and returns the cargo item. Returns null
if the ship has no cargo, anything has been ejected in the last 0.5 seconds, or if sent to the player while docked.
See also: dumpCargo
, ejectSpecificItem
ejectItem
function ejectItem(role : String) : Ship
Spawns a ship of role role
immediately behind the ship, with a slight backwards velocity. (Note: an equal and opposite reaction is applied to the parent ship, so doing this with large ships is rarely useful. player.ejectItem("station")
may seem funny, but don’t come running to me if you have someone’s eye out.) Returns the generated ship, or null
if no ship is generated. The scanClass of the ejected item will always be CLASS_CARGO.
See also: dumpCargo
, ejectSpecificItem
ejectSpecificItem
function ejectSpecificItem(itemKey : String) : Ship
Spawns a ship with the shipdata.plist key itemKey
immediately behind the ship, with a slight backwards velocity. The scanClass of the ejected item will always be CLASS_CARGO.
See also: dumpCargo
, ejectItem
equipmentStatus
function equipmentStatus(equipmentType : equipmentInfoExpression) : String
Tests whether the specified type of equipment is installed, and whether it is functioning. Returns one of the following strings: "EQUIPMENT_OK"
, "EQUIPMENT_DAMAGED"
, "EQUIPMENT_UNAVAILABLE"
or "EQUIPMENT_UNKNOWN"
.
See also: setEquipmentStatus()
exitAI
function exitAI()
Exit the current AI, restoring the previous one. Equivalent to the exitAI:
AI method. May not be used on player. Will generate a warning if there are no suspended AI states.
See also: AI
, setAI()
, hasSuspendedAI
exitSystem
function exitSystem([targetSystem : Number]) : Boolean
Cause the ship to jump out of the system, if possible. If targetSystem
is specified, it will attempt to jump to the specified system, otherwise a random system within range is chosen.
This method can fail for various reasons, in which case it returns false
. It always fails for the player ship.
explode
function explode()
Causes the ship to explode. Works on all ships, including the main station and the player except when docked.
See also: remove()
fireECM
function fireECM()
activates an ecm burst, identical as the AI command.
fireMissile
function fireMissile([missile]) : Ship
fireMissile() will try to fire the first available missile and will return the missile fired, or null
if no missiles can be fired at this time. It can take the optional missile identifier parameter, to allow for a specific missile to be fired. Missiles cannot be fired if the ship hasn’t got a valid target, or if the previous missile was launched less than missile_load_time
seconds before. If a missile type was specified, and not found on the ship, no missile will be fired.
hasRole
function hasRole(role : String)
Returns true
if the ship has role
among its roles, false
otherwise.
See also: roles
reactToAIMessage
function reactToAIMessage(message : String)
Immediately perform the specified handler in the ship’s current AI state.
See also: sendAIMessage()
remove
function remove([suppressDeathEvent : Boolean])
Immediately removes the ship from the universe. Works on all ships except the player, including the main station.
It generates a this.shipRemoved(suppressDeathEvent) event. By default it will also trigger a this.shipDied() event, unless suppressDeathEvent
is true.
See also: explode()
removeEquipment
function removeEquipment(equipmentType : equipmentInfoExpression)
Removes the given piece of equipment from the ship. This function can also be used to remove missiles (and mines). If more than one missile of the same type is found on board, only one of them will be removed.
Example:
ship.removeEquipment("EQ_ECM");
restoreSubEntities
This method was added in Oolite beta release 1.75.
function restoreSubEntities() : Boolean
Recreate all destroyed subentities of the ship. Returns true
if any subentities were added.
selectNewMissile
function selectNewMissile() : equipmentKey
selectNewMissile() will automatically select a missile for a specific ship. It uses the missile_role shipdata.plist key to find out which missiles to select. As with the system populator, there's a small chance that missiles other than the missile_role specified in shipdata will be selected. e.g.
this.ship.awardEquipment(this.ship.selectNewMissile())
will automatically add the 'right type' of missile to a ship, i.e. one that its captain would normally choose.
sendAIMessage
This method was added in Oolite test release 1.75.
function sendAIMessage(message : String)
Add a message to the ship’s AI deferred message queue. Messages in the queue are handled immediately after the next periodic UPDATE
message. Identical messages are coalesced.
See also: reactToAIMessage()
setAI
function setAI(AIName : String)
Set the current AI, leaving the old one suspended. Equivalent to the setAITo:
AI method. May not be used on player.
See also: AI
, switchAI()
, exitAI()
setCargo
function setCargo(commodity : String [, count : Number]) : Boolean
Attempts to create count
weight units of the commodity commodity
for a cargo barrel. (Can not be used to set cargo for ships) When more units are defined than 1 ton, the count is reduced to one ton. It returns false when the selected commodity is unknown. If count
is not specified, one will be assumed.
setEquipmentStatus
function setEquipmentStatus(equipmentType : equipmentInfoExpression, statusKey : String)
Changes the status of the given piece of equipment from the ship. The two only valid status keys are "EQUIPMENT_OK"
, "EQUIPMENT_DAMAGED"
.
Note: by design, this method will throw an exception if called with an equipment type that does not exist. To test whether an equipment type exists, use EquipmentInfo.infoForKey()
, which will return null
for undefined equipment.
See also: equipmentStatus()
setMaterials
function setMaterials(materialDictionary : Object [, shaderDictionary : Object]) : Boolean
Set the materials of the ship’s model. This works exactly like the materials
dictionary in shipdata.plist. The optional shaderDictionary
argument overrides materialDictionary
if shaders are active.
Example:
this.ship.setMaterials({"my_ship_diffuse.png": { diffuse_map: "my_ship_damaged_diffuse.png" }});
See also: setShaders()
setScript
function setScript(scriptName : String)
Set, or completely replace, the javascript code associated to a ship entity.
setShaders
function setShaders(shaderDictionary : Object) : Boolean
Set the shader materials of the ship’s model. Equivalent to setMaterials()
with the materialDictionary
value set to the ship’s current material dictionary.
See also: setMaterials()
spawn
function spawn(role : String [, count : Number]) : Array
Attempts to create count
(maximum: 64) ships of role role
close to the ship – specifically, inside the ship’s collision radius. (Since creating ships may fail, the number created may be less than count
). The created ships are returned in an array. If count
is not specified, one will be assumed.
spawn()
is intended for cases when a ship splits into multiple parts or drops parts. In particular, it has the following special behaviour:
- The spawned ships inherit most of the temperature of the parent.
- If the parent is a missile and a child has the
is_submunition
property, the child will be considered a missile, its target will be set to that of the parent and the child’s owner will be set to the parent. spawn()
does not set up escorts for the new ships, or generate witchspace effects, or do any special AI handling.
spawnOne
function spawnOne(role : String) : Ship
Convenience method which calls spawn(role)
and returns the first element of the resulting array, or null
if spawn()
fails.
switchAI
function switchAI(AIName : String)
Set the current AI, exiting the old one. Equivalent to the switchAITo:
AI method. May not be used on player.
See also: AI
, setAI()
, exitAI()
updateEscortFormation
This method was added in Oolite beta release 1.75.
function updateEscortFormation()
Request that the game updates the target positions for the ship’s escorts by calling the ship’s script’s coordinatesForEscortPosition()
method.