<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://backup.witchspacewiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kanthoney</id>
	<title>Elite Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://backup.witchspacewiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kanthoney"/>
	<link rel="alternate" type="text/html" href="http://backup.witchspacewiki.org/index.php/Special:Contributions/Kanthoney"/>
	<updated>2026-04-16T07:14:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>http://backup.witchspacewiki.org/index.php?title=Oolite_JavaScript_Reference:_PlayerShip&amp;diff=52173</id>
		<title>Oolite JavaScript Reference: PlayerShip</title>
		<link rel="alternate" type="text/html" href="http://backup.witchspacewiki.org/index.php?title=Oolite_JavaScript_Reference:_PlayerShip&amp;diff=52173"/>
		<updated>2016-04-29T10:28:01Z</updated>

		<summary type="html">&lt;p&gt;Kanthoney: /* hyperspaceSpinTime */ Add infoSystem property&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;'''Prototype:''' &amp;lt;code&amp;gt;[[Oolite JavaScript Reference: Ship|Ship]]&amp;lt;/code&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;'''Subtypes:''' none&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The '''&amp;lt;code&amp;gt;PlayerShip&amp;lt;/code&amp;gt;''' class is an &amp;lt;code&amp;gt;[[Oolite JavaScript Reference: Entity|Entity]]&amp;lt;/code&amp;gt; representing the player’s ship. The &amp;lt;code&amp;gt;PlayerShip&amp;lt;/code&amp;gt; has all the properties and methods of a &amp;lt;code&amp;gt; [[Oolite JavaScript Reference: Ship|Ship]]&amp;lt;/code&amp;gt;, and several others. There is always exactly one PlayerShip object in existence, which can be accessed through &amp;lt;code&amp;gt;[[Oolite JavaScript Reference: Global#player|player]].ship&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Like any entity, the player ship can become [[Oolite JavaScript Reference: Entity#Stale References|invalid]] – specifically, when the player dies or ejects. Unlike other entities, the player ship can become valid again (after ejecting and being rescued). This is a technicality and it’s not guaranteed to work this way in future.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;aftShield&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''aftShield''' : Number (read/write, nonnegative)&lt;br /&gt;
The current aft shield level, ranging from 0 to &amp;lt;code&amp;gt;[[#maxAftShield|maxAftShield]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''See also''': &amp;lt;code&amp;gt;[[#aftShieldRechargeRate|aftShieldRechargeRate]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#forwardShield|forwardShield]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#maxAftShield|maxAftShield]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;aftShieldRechargeRate&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''aftShieldRechargeRate''' : Number (read-only in 1.80 and earlier, read/write in 1.81 and later, nonnegative)&lt;br /&gt;
The rate at which the aft shield recharges (assuming enough energy is available). This is affected by equipment – currently, the Military Shield Enhancement. In 1.80 and earlier always the same as &amp;lt;code&amp;gt;[[#forwardShieldRechargeRate|forwardShieldRechargeRate]]&amp;lt;/code&amp;gt;, but this is not the case from 1.81.&lt;br /&gt;
&lt;br /&gt;
'''See also''': &amp;lt;code&amp;gt;[[#aftShield|aftShield]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#forwardShieldRechargeRate|forwardShieldRechargeRate]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#maxAftShield|maxAftShield]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;cargoSpaceAvailable&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''cargoSpaceAvailable''' : Number (read-only integer)&lt;br /&gt;
The ship’s available cargo space, in tons.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;cargoSpaceUsed&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''cargoSpaceUsed''' : Number (read-only integer)&lt;br /&gt;
The ship’s current cargo, in tons.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;compassMode&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''compassMode''' : String (read-only)&lt;br /&gt;
Returns the current compass mode, which can be any one of the following:&lt;br /&gt;
* COMPASS_MODE_BASIC&lt;br /&gt;
* COMPASS_MODE_PLANET&lt;br /&gt;
* COMPASS_MODE_STATION&lt;br /&gt;
* COMPASS_MODE_SUN&lt;br /&gt;
* COMPASS_MODE_TARGET&lt;br /&gt;
* COMPASS_MODE_BEACONS&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;compassTarget&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''compassTarget''' : Entity(read-only)&lt;br /&gt;
Points at the entity currently targeted by the compass.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;crosshairs&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-prop-added|1.77}}&lt;br /&gt;
 '''crosshairs''' : String (read/write)&lt;br /&gt;
The name of the [[Crosshairs.plist|crosshairs.plist]] defining the ship’s weapon crosshairs. HUDs can define crosshairs separately. This value will be &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; if the HUD built-in crosshairs are in use, and setting it to &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; will revert to the default HUD crosshairs.&lt;br /&gt;
&lt;br /&gt;
If the HUD is changed, the old value of this property will be discarded, and the HUD's default crosshairs will be used.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;currentWeapon&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-prop-added|1.77}}&lt;br /&gt;
 '''currentWeapon''' : EquipmentInfo (read/write)&lt;br /&gt;
A shortcut property to whichever of [[Oolite_JavaScript_Reference:_Ship#aftWeapon|aftWeapon]], [[Oolite_JavaScript_Reference:_Ship#forwardWeapon|forwardWeapon]], [[Oolite_JavaScript_Reference:_Ship#portWeapon|portWeapon]] or [[Oolite_JavaScript_Reference:_Ship#starboardWeapon|starboardWeapon]] is the currently active player weapon.&lt;br /&gt;
&lt;br /&gt;
If the player is on a screen with no active weapon (e.g. docked, or viewing the status screens) then this will always be null, and attempting to write to it will give an error.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;cursorCoordinates&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''cursorCoordinates''' : Vector3D (read-only)&lt;br /&gt;
'''Discouraged in favour of &amp;lt;code&amp;gt;[[#cursorCoordinatesInLY|cursorCoordinatesInLY]]&amp;lt;/code&amp;gt;.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The current x and y cursor coordinates on the long range screen in the internal coordinate system. The &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; coordinate is always 0.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;cursorCoordinatesInLY&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''cursorCoordinatesInLY''' : Vector3D (read-only)&lt;br /&gt;
The current x and y cursor coordinates on the long range screen, in light years. The &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; coordinate is always 0.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;docked&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''docked''' : Boolean (read-only)&lt;br /&gt;
True if the player is docked with a station or carrier.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;dockedStation&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''dockedStation''' : [[Oolite JavaScript Reference: Station|Station]] (read-only)&lt;br /&gt;
The station with which the player is currently docked.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;forwardShield&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''forwardShield''' : Number (read/write, nonnegative)&lt;br /&gt;
The current forward shield level, ranging from 0 to &amp;lt;code&amp;gt;[[#maxForwardShield|maxForwardShield]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''See also''': &amp;lt;code&amp;gt;[[#aftShield|aftShield]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#forwardShieldRechargeRate|forwardShieldRechargeRate]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#maxForwardShield|maxForwardShield]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;forwardShieldRechargeRate&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''forwardShieldRechargeRate''' : Number (read-only in 1.80 and earlier, read/write in 1.81 and later, nonnegative)&lt;br /&gt;
The rate at which the forward shield recharges (assuming enough energy is available). This is affected by equipment – currently, the Military Shield Enhancement. In 1.80 and earlier always the same as &amp;lt;code&amp;gt;[[#aftShieldRechargeRate|aftShieldRechargeRate]]&amp;lt;/code&amp;gt;, but this is no longer the case in 1.81&lt;br /&gt;
&lt;br /&gt;
'''See also''': &amp;lt;code&amp;gt;[[#aftShieldRechargeRate|aftShieldRechargeRate]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#forwardShield|forwardShield]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#maxForwardShield|maxForwardShield]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;fuelLeakRate&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''fuelLeakRate''' : Number (read/write)&lt;br /&gt;
The rate at which the player is losing fuel, in tenths of a LY per second. May not be negative. Reset to 0 when fuel is empty.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;galacticHyperspaceBehaviour&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''galacticHyperspaceBehaviour''' : String (read/write)&lt;br /&gt;
A string indicating what the effect of a galactic hyperspace jump will be. The available options are:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;BEHAVIOUR_STANDARD&amp;quot;&amp;lt;/code&amp;gt;: the player arrives in the closest system to the starting point that is part of the main group of stars. Small groups (as seen in [[Oolite planet list/Galaxy 6|galaxy 6]], among others) can’t be reached.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;BEHAVIOUR_ALL_SYSTEMS_REACHABLE&amp;quot;&amp;lt;/code&amp;gt;: The player arrives at the closest system to the starting point, even if it is in a small group. '''Important:''' this can leave the player stranded, unless there are missions providing the possibility of escape!&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;BEHAVIOUR_FIXED_COORDINATES&amp;quot;&amp;lt;/code&amp;gt;: The player arrives at the system closest to &amp;lt;code&amp;gt;[[#galacticHyperspaceFixedCoordsInLY|galacticHyperspaceFixedCoordsInLY]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''See also:''' &amp;lt;code&amp;gt;[[#galacticHyperspaceFixedCoordsInLY|galacticHyperspaceFixedCoordsInLY]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;galacticHyperspaceFixedCoords&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''galacticHyperspaceFixedCoords''' : [[Oolite JavaScript Reference: Vector3D|Vector3D]] (read/write)&lt;br /&gt;
'''Discouraged in favour of &amp;lt;code&amp;gt;[[#galacticHyperspaceFixedCoordsInLY|galacticHyperspaceFixedCoordsInLY]]&amp;lt;/code&amp;gt;.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Like &amp;lt;code&amp;gt;[[#galacticHyperspaceFixedCoordsInLY|galacticHyperspaceFixedCoordsInLY]]&amp;lt;/code&amp;gt;, but in the internal coordinate system.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;galacticHyperspaceFixedCoordsInLY&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''galacticHyperspaceFixedCoordsInLY''' : [[Oolite JavaScript Reference: Vector3D|Vector3D]] (read/write)&lt;br /&gt;
The destination coordinates when &amp;lt;code&amp;gt;[[#galacticHyperspaceBehaviour|galacticHyperspaceBehaviour]]&amp;lt;/code&amp;gt; mode is &amp;lt;code&amp;gt;&amp;quot;GALACTIC_HYPERSPACE_BEHAVIOUR_FIXED_COORDINATES&amp;quot;&amp;lt;/code&amp;gt;. The coordinate system corresponds to &amp;lt;code&amp;gt;[[#galaxyCoordinatesInLY|galaxyCoordinatesInLY]]&amp;lt;/code&amp;gt;. Currently, when assigning a value its &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; coordinates will be rounded to integer internal coordinates, and the &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; coordinate will be rejected.&lt;br /&gt;
&lt;br /&gt;
'''See also:''' &amp;lt;code&amp;gt;[[#galacticHyperspaceBehaviour|galacticHyperspaceBehaviour]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;galaxyCoordinates&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''galaxyCoordinates''' : Vector3D (read-only)&lt;br /&gt;
'''Discouraged in favour of &amp;lt;code&amp;gt;[[#galaxyCoordinatesInLY|galaxyCoordinatesInLY]]&amp;lt;/code&amp;gt;.'''&amp;lt;br /&amp;gt;&lt;br /&gt;
The player’s location in galactic space, in the internal coordinate system. The &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; coordinate is always 0.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;galaxyCoordinatesInLY&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''galaxyCoordinatesInLY''' : Vector3D (read-only)&lt;br /&gt;
The player’s location in galactic space, in light years (measured from the top left of the map). The &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; coordinate is always 0.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;hud&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''hud''' : String (read/write)&lt;br /&gt;
The name of the [[hud.plist|HUD plists]] defining the ship’s head up display.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;hudAllowsBigGui&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-prop-added|1.83}}&lt;br /&gt;
&lt;br /&gt;
 '''hudAllowsBigGui''' : Boolean (read-only)&lt;br /&gt;
Whether the HUD allows a &amp;quot;big GUI&amp;quot; or not. Most useful for determining whether mission screens will have 21 or 27 lines.&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;hudHidden&amp;lt;/code&amp;gt; is true this will also be true, even if the HUD which is hidden would not normally allow a big GUI.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;hudHidden&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''hudHidden''' : Boolean (read/write)&lt;br /&gt;
Whether the HUD should be visible.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;hyperspaceSpinTime&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-prop-added|1.77}}&lt;br /&gt;
 '''hyperspaceSpinTime''' : Number (read-only, read/write in 1.81)&lt;br /&gt;
The length of the ship's hyperspace countdown.&lt;br /&gt;
&lt;br /&gt;
Setting this to a negative value disables the drive entirely.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;infoSystem&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
{{oolite-prop-added|1.83}}&lt;br /&gt;
 '''infoSystem''' : Number (read/write)&lt;br /&gt;
The ID of the system shown in the system (F7) screen.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;injectorsEngaged&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Oolite-prop-added|1.81}}&lt;br /&gt;
 '''injectorsEngaged''' : Boolean(read-only)&lt;br /&gt;
Is the player ship currently using fuel injection.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;manifest&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''manifest''' : [[Oolite JavaScript Reference: Manifest|Manifest]] (read/write)&lt;br /&gt;
The manifest contains all the cargo the player carries. It can be addressed as a property of playerShip as well as a class [[Oolite JavaScript Reference: Manifest|Manifest]] of its own.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;maxAftShield&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''maxAftShield''' : Number (read-only in 1.80 and earlier, read/write in 1.81 and later, nonnegative)&lt;br /&gt;
The highest possible value of &amp;lt;code&amp;gt;[[#aftShield|aftShield]]&amp;lt;/code&amp;gt;. This is affected by equipment – currently the Shield Boosters and Military Shield Enhancement. In 1.80 and earlier always the same as &amp;lt;code&amp;gt;[[#maxForwardShield|maxForwardShield]]&amp;lt;/code&amp;gt;, but this is not necessarily true from 1.81.&lt;br /&gt;
&lt;br /&gt;
'''See also''': &amp;lt;code&amp;gt;[[#aftShield|aftShield]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#aftShieldRechargeRate|aftShieldRechargeRate]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#maxForwardShield|maxForwardShield]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;maxForwardShield&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''maxAftShield''' : Number (read-only in 1.80 and earlier, read/write in 1.81 and later, nonnegative)&lt;br /&gt;
The highest possible value of &amp;lt;code&amp;gt;[[#forwardShield|forwardShield]]&amp;lt;/code&amp;gt;. This is affected by equipment – currently the Shield Boosters and Military Shield Enhancement. In 1.80 and earlier always the same as &amp;lt;code&amp;gt;[[#maxAftShield|maxAftShield]]&amp;lt;/code&amp;gt;, but this is not necessarily true from 1.81.&lt;br /&gt;
&lt;br /&gt;
'''See also''': &amp;lt;code&amp;gt;[[#forwardShield|forwardShield]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#forwardShieldRechargeRate|forwardShieldRechargeRate]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[[#maxAftShield|maxAftShield]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;missilesOnline&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Oolite-prop-added|1.77}}&lt;br /&gt;
 '''missilesOnline''' : Boolean (read-only)&lt;br /&gt;
True if the ship's targeting system is currently in missile targeting mode, false if it is currently in identification mode.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;multiFunctionDisplayList&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Oolite-prop-added|1.81}}&lt;br /&gt;
 '''multiFunctionDisplayList''' : Array (read-only, strings)&lt;br /&gt;
The IDs of the currently active multi-function displays&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
 [null, &amp;quot;myoxp_mfd1&amp;quot;] // My OXP MFD1 in the second display, first display blank&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;multiFunctionDisplays&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Oolite-prop-added|1.79}}&lt;br /&gt;
 '''multiFunctionDisplays''' : Number (read-only, integer)&lt;br /&gt;
The number of multi-function displays available on the current HUD.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Oolite-prop-added|1.77}}&lt;br /&gt;
 '''price''' : Number (read-only, positive integer in decicredits)&lt;br /&gt;
The value the player's ship would have, including equipment, if in a perfect servicing state. The ship can be exchanged at a shipyard for 75% of this value if it really is in perfect servicing state.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;renovationCost&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Oolite-prop-added|1.79}}&lt;br /&gt;
 '''renovationCost''' : Number (read-only, positive integer in decicredits)&lt;br /&gt;
The current price in decicredits to service the ship. Depending on the [[#serviceLevel|serviceLevel]] it may not be possible to actually purchase renovation at this time.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;renovationMultiplier&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Oolite-prop-added|1.79}}&lt;br /&gt;
 '''renovationMultiplier''' : Number (read-only, positive)&lt;br /&gt;
The multiplier applied to the base cost of renovation (&amp;lt;code&amp;gt;renovationCost&amp;lt;/code&amp;gt; already includes this multiplier) to allow for some ships being more difficult to maintain than others. The default is 1.0 - other values are set in [[Shipyard.plist#renovation_multiplier|shipyard.plist]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;reticleTargetSensitive&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''reticleTargetSensitive''' : Boolean (read/write)&lt;br /&gt;
If true, and Scanner Targeting Enhancement is installed, the selected target reticle will light up in red when the target is in the player’s sights. This is equivalent to the &amp;lt;code&amp;gt;reticle_target_sensitive&amp;lt;/code&amp;gt; key in [[hud.plist|HUD plists]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;routeMode&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-prop-added|1.81}}&lt;br /&gt;
 '''routeMode''' : String (read-only)&lt;br /&gt;
Gives the current mode of the [[Advanced Navigational Array]]. Three possible values&lt;br /&gt;
* &amp;quot;OPTIMIZED_BY_NONE&amp;quot;: off, or not fitted&lt;br /&gt;
* &amp;quot;OPTIMIZED_BY_JUMPS&amp;quot;: shortest route&lt;br /&gt;
* &amp;quot;OPTIMIZED_BY_TIME&amp;quot;: quickest route&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;scannerNonLinear&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''scannerNonLinear''' : Boolean (read/write)&lt;br /&gt;
If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the scanner is operating in non-linear mode. This property will be reset to the HUD default if the HUD is changed.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;scannerUltraZoom&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''scannerUltraZoom''' : Boolean (read/write)&lt;br /&gt;
If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the scanner has 1x, 2x, 4x, 8x and 16x zoom modes, rather than the conventional 1x, 2x, 3x, 4x and 5x. This property will be reset to the HUD default if the HUD is changed.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;scoopOverride&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''scoopOverride''' : Boolean (read/write)&lt;br /&gt;
If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, and the player has a fuel scoop, the fuel scoop effect will run even if not close to a sun or scooping cargo.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;serviceLevel&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Oolite-prop-added|1.77}}&lt;br /&gt;
 '''serviceLevel''' : Number (read/write, positive integer in range 75-100)&lt;br /&gt;
The level of servicing the player's ship has. Renovation will be offered in shipyards at 85 or below, and malfunctions are more likely at lower values. This affects the sales price of the ship.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;specialCargo&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''specialCargo''' : String (read-only)&lt;br /&gt;
The special cargo the player is carrying, if any; otherwise &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''See also''': &amp;lt;code&amp;gt;[[#useSpecialCargo|useSpecialCargo]]()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;targetSystem&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''targetSystem''' : Integer (read-only, sometimes read/write in 1.77)&lt;br /&gt;
The ID of the selected hyperspace target system. In 1.77, it can be written to if the player's ship is docked.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;torusEngaged&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Oolite-prop-added|1.81}}&lt;br /&gt;
 '''torusEngaged''' : Boolean(read-only)&lt;br /&gt;
Is the player ship currently using torus drive&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;viewDirection&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''viewDirection''' : String (read-only)&lt;br /&gt;
Returns the view direction as string: &amp;lt;code&amp;gt;&amp;quot;VIEW_FORWARD&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;VIEW_AFT&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;VIEW_PORT&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;VIEW_STARBOARD&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;VIEW_CUSTOM&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;VIEW_GUI_DISPLAY&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;viewPosition*&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{Oolite-prop-added|1.79}}&lt;br /&gt;
 '''viewPositionAft''' : Vector (read-only)&lt;br /&gt;
 '''viewPositionForward''' : Vector (read-only)&lt;br /&gt;
 '''viewPositionPort''' : Vector (read-only)&lt;br /&gt;
 '''viewPositionStarboard''' : Vector (read-only)&lt;br /&gt;
The ship's 4 point-of-view positions in XYZ relative to the model. The corresponding ''[[shipdata.plist]]'' keys start with &amp;lt;code&amp;gt;view_position_&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;weaponsOnline&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 '''weaponsOnline''' : Boolean (read-only)&lt;br /&gt;
Returns the weapon safety status. Player can toggle the status with the underscore-key.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
=== &amp;lt;code&amp;gt;addParcel&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.77}}&lt;br /&gt;
 function '''addParcel'''(name : String, start : Number, destination : Number, arrivalTime : Number, fee : Number [, advance: Number [, risk: Number]]) : Boolean&lt;br /&gt;
Add a parcel contract to the ship. &amp;lt;code&amp;gt;arrivalTime&amp;lt;/code&amp;gt; is the arrival time in seconds and must be greater than the current time. &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;destination&amp;lt;/code&amp;gt; are the ID numbers of the start and end systems.&lt;br /&gt;
&lt;br /&gt;
Returns	&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; when there is already a parcel with that name or the arrival time is invalid.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;advance&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;risk&amp;lt;/code&amp;gt; parameters were added in Oolite 1.79. &amp;lt;code&amp;gt;advance&amp;lt;/code&amp;gt; is purely advisory and describes any up-front payment given for the parcel. &amp;lt;code&amp;gt;risk&amp;lt;/code&amp;gt; can be 0, 1 or 2 - the higher the number, the more likely that assassins are likely to try to kill the player while they carry this parcel.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;addPassenger&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 function '''addPassenger'''(name : String, start : Number, destination : Number, arrivalTime : Number, fee : Number [, advance: Number [, risk: Number]]) : Boolean&lt;br /&gt;
Add a passenger contract to the ship. &amp;lt;code&amp;gt;arrivalTime&amp;lt;/code&amp;gt; is the arrival time in seconds and must be greater than the current time. &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;destination&amp;lt;/code&amp;gt; are the ID numbers of the start and end systems.&lt;br /&gt;
&lt;br /&gt;
Returns	&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; when there is no room for the passenger, there is already a passenger with that name or the arrival time is invalid.&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
  player.ship.addPassenger(&amp;quot;cmdr Jameson&amp;quot;, 34, 67, clock.seconds+3*24*3600, 1500);&lt;br /&gt;
&lt;br /&gt;
If successful - and in galaxy chart 1 - the player will have cmdr Jameson as a passenger, his documents will show that he boarded the ship at Inus, to go to Cemave, within exactly 3 days, and the player will be given 1500 credits if he gets there on time (early or late arrival will affect the amount paid).&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' Normally a passenger will pay the captain a small advance upon boarding. Using this method, no initial payment is made. In versions after 1.77, an optional parameter can be added to describe what the advance ''was'', without actually making it.&lt;br /&gt;
&lt;br /&gt;
The risk parameter was added in Oolite 1.79. &amp;lt;code&amp;gt;risk&amp;lt;/code&amp;gt; can be 0, 1 or 2 - the higher the number, the more likely that assassins are likely to try to kill the player while they carry this passenger.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;awardContract&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 function '''awardContract'''(quantity : Number, commodity : String, start : Number, destination : Number, arrivalTime : Number, fee : Number [, premium : Number]) : Boolean&lt;br /&gt;
Add a cargo contract to the ship. &amp;lt;code&amp;gt;arrivalTime&amp;lt;/code&amp;gt; is the arrival time in seconds and must be greater than the current time. &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;destination&amp;lt;/code&amp;gt; are the ID numbers of the start and end systems.&lt;br /&gt;
&lt;br /&gt;
Returns	&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; when there is no room for the cargo, the arrival time is invalid.&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 player.ship.awardContract(12, &amp;quot;Food&amp;quot;, 34, 67, clock.seconds+7*24*3600, 5000)&lt;br /&gt;
&lt;br /&gt;
If successful - and in galaxy chart 1 - the player will have 12 more food containers on board, the manifest will show that the cargo was picked up at Inus, to be delivered at Cemave, within exactly 7 days, and the player will be given 5000 credits if the cargo is delivered on time (early or late delivery will affect the amount paid).&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' Normally to get a contract, the player will have to pay a deposit similar in value to the cargo. Using this method, no deposit payment is made. In versions after 1.77, an optional parameter can be added to describe what the deposit payment ''was'', without actually making it.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;awardEquipmentToCurrentPylon&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 function '''awardEquipmentToCurrentPylon'''(item : [[Oolite JavaScript Reference: EquipmentInfo#Equipment Expressions|equipmentInfoExpression]]) : Boolean&lt;br /&gt;
Replace the missile or mine currently being launched with the specified item (which must be an external store). This will only have an effect if called while a missile or mine is being launched. Effectively this means that this method must be used within the &amp;lt;code&amp;gt;shipFiredMissile()&amp;lt;/code&amp;gt; handler or in the ENTER message of the GLOBAL state of an missileAI.plist.&lt;br /&gt;
&lt;br /&gt;
'''Bug:''' In Oolite 1.74.0, if &amp;lt;code&amp;gt;awardEquipmentToCurrentPylon()&amp;lt;/code&amp;gt; fails the script will be halted without any error message. In future versions, it will simply return &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''See also:''' &amp;lt;code&amp;gt;[[Oolite JavaScript Reference: Ship#awardEquipment|Ship.awardEquipment()]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;beginHyperspaceCountdown&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.77}}&lt;br /&gt;
 function beginHyperspaceCountdown( [ length : Number ] ) : Boolean&lt;br /&gt;
This function begins the witchspace sequence for the player ship. It returns true if the sequence is started successfully, and false otherwise (no destination selected, insufficient fuel, out of range, etc.). Optionally, the length of the countdown can be varied. Values between 5 and 60 seconds are accepted. If this parameter is omitted the default sequence length for this class of ship will be used.&lt;br /&gt;
&lt;br /&gt;
'''See also:''' &amp;lt;code&amp;gt;[[#cancelHyperspaceCountdown|cancelHyperspaceCountdown]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;cancelHyperspaceCountdown&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.77}}&lt;br /&gt;
 function cancelHyperspaceCountdown() : Boolean&lt;br /&gt;
This function cancels the witchspace sequence for the player ship. It returns true if there was an ongoing sequence to cancel, and false otherwise.&lt;br /&gt;
&lt;br /&gt;
'''See also:''' &amp;lt;code&amp;gt;[[#beginHyperspaceCountdown|beginHyperspaceCountdown]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;disengageAutopilot&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 function disengageAutopilot()&lt;br /&gt;
Disenable autopilot.&lt;br /&gt;
&lt;br /&gt;
'''See also:''' &amp;lt;code&amp;gt;[[#engageAutopilotToStation|engageAutopilotToStation()]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;engageAutopilotToStation&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 function engageAutopilotToStation(station : [[Oolite JavaScript Reference: Station|Station]]) : Boolean&lt;br /&gt;
Engage autopilot, set to dock with the specified station.&lt;br /&gt;
&lt;br /&gt;
'''See also:''' &amp;lt;code&amp;gt;[[#disengageAutopilot|disengageAutopilot()]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;hideHUDSelector&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.79}}&lt;br /&gt;
 function hideHUDSelector(selector : String)&lt;br /&gt;
Hide all dials using the specified selector on the HUD display. For example&lt;br /&gt;
&lt;br /&gt;
 player.ship.hideHUDSelector(&amp;quot;drawScanner:&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
'''See also:''' &amp;lt;code&amp;gt;[[#showHUDSelector|showHUDSelector()]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;launch&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 function '''launch'''()&lt;br /&gt;
Launches the player’s ship if it is currently docked.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;removeAllCargo&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 function '''removeAllCargo'''()&lt;br /&gt;
Removes all cargo from the ship’s cargo bay that are measured in tons. Does not affect Gold, Platinum or Gemstones. Can only be used while docked.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;removeContract&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 function '''removeContract'''(commodity : String, destination : Number)&lt;br /&gt;
Remove the cargo contract matching that commodity and destination.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;removeParcel&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.77}}&lt;br /&gt;
 function '''removeParcel'''(name : String)&lt;br /&gt;
Remove a named parcel.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;removePassenger&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 function '''removePassenger'''(name : String)&lt;br /&gt;
Remove a named passenger.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;resetCustomView&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.77}}&lt;br /&gt;
 function '''resetCustomView'''()&lt;br /&gt;
Resets the custom view back to the last-used setting defined in [[shipdata.plist]]&lt;br /&gt;
&lt;br /&gt;
This function gives an error if used when the custom view camera is not selected.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;resetScannerZoom&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.79}}&lt;br /&gt;
 function '''resetScannerZoom'''()&lt;br /&gt;
Resets the scanner zoom back to 1:1&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;setCustomView&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.77}}&lt;br /&gt;
 function '''setCustomView'''(Vector : position, Quaternion : orientation [,WeaponDirection weapon])&lt;br /&gt;
Set the position and orientation of the custom view camera to those specified. As with the custom views specified through [[shipdata.plist]], these are relative to the player's ship's position, and the coordinate frame defined by the ship's forward, right and up Vectors.&lt;br /&gt;
&lt;br /&gt;
The optional weapon parameter can be &amp;quot;FORWARD&amp;quot;, &amp;quot;AFT&amp;quot;, &amp;quot;PORT&amp;quot; or &amp;quot;STARBOARD&amp;quot; and sets the active weapon accordingly. If omitted, the active weapon for the previous custom view will be preserved.&lt;br /&gt;
&lt;br /&gt;
This function gives an error if used when the custom view camera is not selected. Setting the custom view does not affect the custom views defined in [[shipdata.plist]], which will be switched back to the next time 'v' is pressed, or when [[#resetCustomView|resetCustomView]] is called.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;setCustomHUDDial&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.81}}&lt;br /&gt;
 function '''setCustomHUDDial'''(key : String, value : Value)&lt;br /&gt;
Sets the custom HUD dial [[hud.plist#data_source|data source]] 'key' to the specified value. Different types of custom HUD dial will expect different types of values; a value of an incorrect type will be converted if possible.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;setMultiFunctionDisplay&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.79}}&lt;br /&gt;
 function '''setMultiFunctionDisplay'''(index : Number, key : String) : Boolean&lt;br /&gt;
Sets the multi-function display with the specified number to display the given multi-function display &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; set earlier with [[#setMultiFunctionText|setMultiFunctionText()]]. Multi-function displays are numbered from 0 to [[#multiFunctionDisplays|multiFunctionDisplays]]-1. If the index given is outside this range, the first unused multi-function display will be used, or the function will return &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; if all are currently in use.&lt;br /&gt;
Example:&lt;br /&gt;
 // picks first unused one&lt;br /&gt;
 player.ship.setMultiFunctionDisplay(player.ship.multiFunctionDisplays, &amp;quot;myOxp_mfd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
As the player can cycle the contents of their displays between the various active keys themselves using keyboard controls, it is advisable not to call this function to override a specific display except in emergencies, as this is likely to annoy the player.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;setMultiFunctionText&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.79}}&lt;br /&gt;
 function '''setMultiFunctionText'''(key : String [, contents : String [, reflow : Boolean]])&lt;br /&gt;
Set the text for the multi-function display with the specified &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; to be &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt;. The limit on space for a multi-function display is ten lines of text, each 15 blocks wide. &lt;br /&gt;
&lt;br /&gt;
If you specify the optional &amp;lt;code&amp;gt;reflow&amp;lt;/code&amp;gt; parameter, then the text given will automatically be fitted into the available space, with any extra discarded. Otherwise, line-breaks will not be added automatically, so you must enter them into &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; yourself. If any individual line is more than 15 blocks long, the text will be compressed to fit it into the available space. This looks bad and is best avoided.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;showHUDSelector&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.79}}&lt;br /&gt;
 function showHUDSelector(selector : String)&lt;br /&gt;
Show all dials using the specified selector on the HUD display if they were previously hidden. For example&lt;br /&gt;
&lt;br /&gt;
 player.ship.showHUDSelector(&amp;quot;drawScanner:&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
'''See also:''' &amp;lt;code&amp;gt;[[#hideHUDSelector|hideHUDSelector()]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;takeInternalDamage&amp;lt;/code&amp;gt; ===&lt;br /&gt;
{{oolite-method-added|1.77}}&lt;br /&gt;
 function '''takeInternalDamage'''()&lt;br /&gt;
Causes the player ship to potentially take &amp;quot;internal damage&amp;quot;. Internal damage can also be caused by hits on the hull and some witchdrive malfunctions, and this function uses the same algorithm to determine the damage taken, which can be:&lt;br /&gt;
* damage to cargo&lt;br /&gt;
* damage to equipment (according to the damage_probability)&lt;br /&gt;
* reduction in [[#serviceLevel|service level]]&lt;br /&gt;
* no damage&lt;br /&gt;
The function will return 'false' if &amp;quot;no damage&amp;quot; was selected, and 'true' otherwise. The relative probabilities of the three options vary depending on the size of the player ship, its cargo capacity, cargo carried and installed equipment.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;useSpecialCargo&amp;lt;/code&amp;gt; ===&lt;br /&gt;
 function '''useSpecialCargo'''(description : String)&lt;br /&gt;
Fills the cargo bay with the cargo described, effectively disabling the use of the cargo bay until the cargo is removed.&lt;br /&gt;
&lt;br /&gt;
'''See also''': &amp;lt;code&amp;gt;[[#specialCargo|specialCargo]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Oolite JavaScript Reference]]&lt;/div&gt;</summary>
		<author><name>Kanthoney</name></author>
		
	</entry>
	<entry>
		<id>http://backup.witchspacewiki.org/index.php?title=Oolite_JavaScript_Reference:_World_script_event_handlers&amp;diff=52172</id>
		<title>Oolite JavaScript Reference: World script event handlers</title>
		<link rel="alternate" type="text/html" href="http://backup.witchspacewiki.org/index.php?title=Oolite_JavaScript_Reference:_World_script_event_handlers&amp;diff=52172"/>
		<updated>2016-04-29T10:23:06Z</updated>

		<summary type="html">&lt;p&gt;Kanthoney: /* guiScreenWillChange */ Add infoSystemChanged handler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a list of event handlers which can be implemented inside world scripts [[Scripting Oolite with JavaScript|JavaScript scripts for Oolite]]. Additionally, ship script handlers called on the player's ship will cause an equivalent world script event.&lt;br /&gt;
&lt;br /&gt;
Most event handlers can be used both in world scripts and in ship scripts. Generally speaking, handlers starting with &amp;quot;ship&amp;quot; can be used for both scripts and those starting with &amp;quot;player&amp;quot; are meant only for the player (= can only be used in a world script). Exceptions on this rule are mentioned with the individual handlers below. &lt;br /&gt;
&lt;br /&gt;
World scripts can be either found inside Config\script.js, or be distinctly named .js files inside the Scripts directory - in the latter case, the worldScript.plist will list the active world scripts.&lt;br /&gt;
&lt;br /&gt;
World scripts are always active.&lt;br /&gt;
&lt;br /&gt;
The list of event handlers will change from version to version (usually additions of extra handlers). For this reason, any variables or functions you create as &amp;lt;code&amp;gt;this.variable&amp;lt;/code&amp;gt; should have a name beginning with '_' or '$' - e.g. &amp;lt;code&amp;gt;this._variable&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;this.$variable&amp;lt;/code&amp;gt; - to avoid potential conflicts with future event handlers (which will never start with '_' or '$').&lt;br /&gt;
&lt;br /&gt;
=== Game State ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;gamePaused&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{oolite-method-added|1.81}}&lt;br /&gt;
&lt;br /&gt;
This event is called when the game is paused. This is mainly useful for pausing sound playback which should not continue while the game is paused.&lt;br /&gt;
&lt;br /&gt;
 this.gamePaused = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;gameResumed&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{oolite-method-added|1.81}}&lt;br /&gt;
&lt;br /&gt;
This event is called when the game is resumed from pause. This is mainly useful for resuming sound playback paused in a &amp;lt;code&amp;gt;gamePaused&amp;lt;/code&amp;gt; handler.&lt;br /&gt;
&lt;br /&gt;
 this.gameResumed = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerWillSaveGame&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerWillSaveGame&amp;lt;/code&amp;gt; handler is called whenever the player saves a game. The transferred message is one of the following strings: 'standardSave', 'autoSave' or 'quickSave'&lt;br /&gt;
&lt;br /&gt;
 this.playerWillSaveGame = function(message : String)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Using this event is useful for storing temporary variables in missionVariables, just before the game gets saved. missionVariables are slow in use compared to normal JS variables, therefor their use should be minimised for efficient code. The main benefit of using missionVariables is that they are saved in a saved game.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;startUp&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;startUp&amp;lt;/code&amp;gt; handler is called after all OXPs have been loaded. This also means that it is called every time the player loads a game, begins a new game or presses space after dying. It can be used to do one-off initialisation such as copying mission variables into &amp;lt;code&amp;gt;this.*&amp;lt;/code&amp;gt; properties for efficiency or setting up data arrays to be used by the script in other handlers. (world script only)&lt;br /&gt;
&lt;br /&gt;
 this.startUp = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note that from Oolite 1.79 onwards the player will be in the main station while this function is run, but may be moved from there to another station soon after.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;startUpComplete&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{oolite-method-added|1.79}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;startUpComplete&amp;lt;/code&amp;gt; handler is run at game startup after the initial population of the system has been complete, and after the player has been moved to the station recorded in their save game. The order of world events at game start is therefore:&lt;br /&gt;
* &amp;lt;code&amp;gt;startUp&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;systemWillPopulate&amp;lt;/code&amp;gt; (or an alternative handler specified by the system info)&lt;br /&gt;
* &amp;lt;code&amp;gt;startUpComplete&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Docking ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipWillDockWithStation&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipWillDockWithStation&amp;lt;/code&amp;gt; handler is called at the beginning of the docking tunnel effect.&lt;br /&gt;
&lt;br /&gt;
 this.shipWillDockWithStation = function(station)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
At this moment &amp;quot;ship.dockedStation == null&amp;quot;, &amp;quot;ship.docked == true&amp;quot;, &amp;quot;ship.status == STATUS_DOCKING&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipDockedWithStation&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipDockedWithStation&amp;lt;/code&amp;gt; handler is called at the end of the docking tunnel effect.&lt;br /&gt;
&lt;br /&gt;
 this.shipDockedWithStation = function(station)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
At this moment &amp;quot;ship.dockedStation == the station&amp;quot;, &amp;quot;ship.docked == true&amp;quot;, &amp;quot;ship.status == STATUS_DOCKED&amp;quot; and &amp;quot;gui_screen&amp;quot; is either GUI_SCREEN_STATUS or GUI_SCREEN_REPORT. However, any identical handler from an other oxp could have changed those values. Never count on it but double check when important.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipWillLaunchFromStation&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipWillLaunchFromStation&amp;lt;/code&amp;gt; handler is called at the beginning of the launch tunnel effect.&lt;br /&gt;
&lt;br /&gt;
 this.shipWillLaunchFromStation = function(station)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
At this moment &amp;quot;ship.dockedStation == the station&amp;quot;, &amp;quot;ship.docked == false&amp;quot;, &amp;quot;ship.status == STATUS_LAUNCHING&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipLaunchedFromStation&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipLaunchedFromStation&amp;lt;/code&amp;gt; handler is called at the end of the launch tunnel effect.&lt;br /&gt;
&lt;br /&gt;
 this.shipLaunchedFromStation = function(station)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
At this moment &amp;quot;ship.dockedStation == null&amp;quot;, &amp;quot;ship.docked == false&amp;quot;, &amp;quot;ship.status == STATUS_IN_FLIGHT&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerStartedAutoPilot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerStartedAutoPilot&amp;lt;/code&amp;gt; handler is called when the player starts autopilot docking. It is not called for the instantaneous dock command.&lt;br /&gt;
&lt;br /&gt;
 this.playerStartedAutoPilot = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerCancelledAutoPilot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerCancelledAutoPilot&amp;lt;/code&amp;gt; handler is called when the player cancels autopilot docking.&lt;br /&gt;
&lt;br /&gt;
 this.playerCancelledAutoPilot = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerDockingClearanceExpired&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{oolite-method-added|1.83}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerDockingClearanceExpired&amp;lt;/code&amp;gt; handler is called when the player exceeds the two minute window without requesting an extension&lt;br /&gt;
&lt;br /&gt;
 this.playerDockingClearanceExpired = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerDockingRefused&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerDockingRefused&amp;lt;/code&amp;gt; handler is called when a station refuses to provide autopilot docking instructions.&lt;br /&gt;
&lt;br /&gt;
 this.playerDockingRefused = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerRequestedDockingClearance&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerRequestedDockingClearance&amp;lt;/code&amp;gt; handler is called when a station answers on a docking request of the player by targeting the station and pressing L (shift-l).&lt;br /&gt;
&lt;br /&gt;
 this.playerRequestedDockingClearance = function(message)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Message is a string and can take the values: &amp;quot;DOCKING_CLEARANCE_GRANTED&amp;quot;, &amp;quot;DOCKING_CLEARANCE_DENIED_TRAFFIC_OUTBOUND&amp;quot;, &amp;quot;DOCKING_CLEARANCE_DENIED_TRAFFIC_INBOUND&amp;quot;,  &amp;quot;DOCKING_CLEARANCE_DENIED_SHIP_FUGITIVE&amp;quot;, &amp;quot;DOCKING_CLEARANCE_NOT_REQUIRED&amp;quot;, &amp;quot;DOCKING_CLEARANCE_EXTENDED&amp;quot; or &amp;quot;DOCKING_CLEARANCE_CANCELLED&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerRescuedEscapePod&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{oolite-method-added|1.81}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerRescuedEscapePod&amp;lt;/code&amp;gt; handler is called when the player rescues an escape pod which does not have scripted content (all consequences of scripted content escape pods are assumed to be dealt with by the specified script instead). It has three parameters:&lt;br /&gt;
# the rescue fee, in decicredits&lt;br /&gt;
# the fee reason, which can be &amp;quot;insurance&amp;quot;, &amp;quot;bounty&amp;quot; or &amp;quot;slave&amp;quot; (in the latter case, the fee will always be zero)&lt;br /&gt;
# a dictionary like those in the &amp;lt;code&amp;gt;ship.crew&amp;lt;/code&amp;gt; property describing the pod occupant&lt;br /&gt;
&lt;br /&gt;
 this.playerRescuedEscapePod = function(fee, reason, occupant)&lt;br /&gt;
 {&lt;br /&gt;
     // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This method is called after the escape pod has been processed, but slightly before the arrival report screen giving the results of the processing is displayed to the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerCompletedContract&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{oolite-method-added|1.81}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerCompletedContract&amp;lt;/code&amp;gt; handler is called when a passenger, parcel or cargo contract ends, either successfully or by defaulting on it. It is not called when all contracts are cancelled on a galactic jump. It has four parameters:&lt;br /&gt;
# The type of contract, which can be &amp;quot;cargo&amp;quot;, &amp;quot;parcel&amp;quot; or &amp;quot;passenger&amp;quot;&lt;br /&gt;
# The result of the contract, which can be &amp;quot;success&amp;quot;, &amp;quot;late&amp;quot;, &amp;quot;failed&amp;quot;, or for cargo contracts only &amp;quot;short&amp;quot;&lt;br /&gt;
# The fee paid for the contract in decicredits&lt;br /&gt;
# The contract information dictionary&lt;br /&gt;
Note that the fee actually paid for the contract will often ''not'' match the originally agreed fee in the contract information dictionary, as penalties for late delivery or bonuses for good service are included in the fee parameter.&lt;br /&gt;
&lt;br /&gt;
 this.playerCompletedContract = function(type, result, fee, contract)&lt;br /&gt;
 {&lt;br /&gt;
     // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This method is called after the contract has been processed, but slightly before the arrival report screen giving the results of the processing is displayed to the player.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerEnteredContract&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{oolite-method-added|1.81}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerEnteredContract&amp;lt;/code&amp;gt; handler is called when a passenger, parcel or cargo contract starts, just after the items have been transferred to the player ship. It has two parameters:&lt;br /&gt;
# The type of contract, which can be &amp;quot;cargo&amp;quot;, &amp;quot;parcel&amp;quot; or &amp;quot;passenger&amp;quot;&lt;br /&gt;
# The contract information dictionary&lt;br /&gt;
&lt;br /&gt;
 this.playerEnteredContract = function(type, contract)&lt;br /&gt;
 {&lt;br /&gt;
     // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Witchspace Jumps ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerStartedJumpCountdown&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerStartedJumpCountdown&amp;lt;/code&amp;gt; handler is called when the user starts a witchspace or galactic witchspace jump countdown. The &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; parameter is a string specifying which type of jump is occuring; currently, the possible values are “standard” and “galactic”. Other values may be added in future. The &amp;lt;code&amp;gt;seconds&amp;lt;/code&amp;gt; parameter is a number specifying the number of seconds the countdown is running for.&lt;br /&gt;
&lt;br /&gt;
 this.playerStartedJumpCountdown = function(type, seconds)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerCancelledJumpCountdown&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerCancelledJumpCountdown&amp;lt;/code&amp;gt; handler is called when the user cancels a witchspace or galactic witchspace jump countdown.&lt;br /&gt;
&lt;br /&gt;
 this.playerCancelledJumpCountdown = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerJumpFailed&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerJumpFailed&amp;lt;/code&amp;gt; handler is called at the end of a witchspace or galactic witchspace countdown, if the jump is not possible. The &amp;lt;code&amp;gt;reason&amp;lt;/code&amp;gt; parameter is a string specifying why the jump failed. The current values are:&lt;br /&gt;
* '''&amp;quot;insufficient fuel&amp;quot;''' - the ship no longer has enough fuel to make the jump (e.g. injector use or fuel leak).&lt;br /&gt;
* '''&amp;quot;blocked&amp;quot;''' - a heavy ship is near the player (specifically &amp;lt;code&amp;gt;object mass&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;object distance&amp;lt;/code&amp;gt;&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; &amp;gt;= 10.0, and &amp;lt;code&amp;gt;object distance&amp;lt;/code&amp;gt; &amp;lt;= scanner range).&lt;br /&gt;
* '''&amp;quot;malfunction&amp;quot;''' - the jump malfunctioned in a way that leaves the player ship in the current system.&lt;br /&gt;
* '''&amp;quot;malfunction&amp;quot;''' - the Galactic Hyperdrive is damaged or removed during a galactic jump countdown.&lt;br /&gt;
&lt;br /&gt;
Also theoretically possible but unlikely in current Oolite:&lt;br /&gt;
* '''&amp;quot;too far&amp;quot;''' - the jump destination is outside the 7LY range (but wasn't when the countdown started).&lt;br /&gt;
* '''&amp;quot;no target&amp;quot;''' - the jump destination is the current location (but wasn't when the countdown started).&lt;br /&gt;
&lt;br /&gt;
 this.playerJumpFailed = function(reason)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipWillEnterWitchspace&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipWillEnterWitchspace&amp;lt;/code&amp;gt; handler is called immediately before a witchspace jump, while the player is still in the starting system. The &amp;lt;code&amp;gt;cause&amp;lt;/code&amp;gt; parameter is a string specifying what sort of jump is occuring; currently, the possible values are “standard jump”, “galactic jump” and “wormhole”. Other values may be added in future.&lt;br /&gt;
&lt;br /&gt;
 // 1.80 or earlier&lt;br /&gt;
 this.shipWillEnterWitchspace = function(cause)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
In 1.81 or later the handler gains a second parameter, describing the jump destination. For standard and wormhole jumps, this will be the system ID of the destination system. For galactic jumps, this will be the galaxy ID of the destination galaxy. (As [[Oolite JavaScript Reference: PlayerShip#galacticHyperspaceBehaviour|player.ship.galacticHyperspaceBehaviour]] may be changed during &amp;lt;code&amp;gt;shipWillEnterWitchspace&amp;lt;/code&amp;gt;, it is not possible to predict in advance of a galactic jump being made what the resulting system ID in the destination galaxy will be)&lt;br /&gt;
&lt;br /&gt;
 // 1.81 or later&lt;br /&gt;
 this.shipWillEnterWitchspace = function(cause, destination)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipWillExitWitchspace&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipWillExitWitchspace&amp;lt;/code&amp;gt; handler is called as a witchspace jump concludes. When it is called, the player is (from a program perspective) in the destination system, but the tunnel effect has not yet been shown. Use this event to set up elements which need to be present in-system after the player exits witchspace.&lt;br /&gt;
&lt;br /&gt;
 this.shipWillExitWitchspace = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipExitedWitchspace&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipExitedWitchspace&amp;lt;/code&amp;gt; handler is called after a witchspace jump has concluded and the tunnel effect has been shown.&lt;br /&gt;
&lt;br /&gt;
 this.shipExitedWitchspace = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerEnteredNewGalaxy&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerEnteredNewGalaxy&amp;lt;/code&amp;gt; handler is called just before shipWillExitWitchspace.&lt;br /&gt;
&lt;br /&gt;
the sequence of events for a player jumping to a different galaxy is as follows:&lt;br /&gt;
&lt;br /&gt;
shipWillEnterWitchspace (world event)&amp;lt;br&amp;gt;&lt;br /&gt;
playerWillEnterWitchspace (NPC ship event)&amp;lt;br&amp;gt;&lt;br /&gt;
playerEnteredNewGalaxy (world event)&amp;lt;br&amp;gt;&lt;br /&gt;
shipWillExitWitchspace (world event)&amp;lt;br&amp;gt;&lt;br /&gt;
shipExitedWitchspace (world event)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 this.playerEnteredNewGalaxy = function(galaxyNumber)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Enter/Exit Aegis ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipEnteredStationAegis&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipEnteredStationAegis&amp;lt;/code&amp;gt; handler is called when the player enters the aegis of the main-station (2x scanner range from main-station). Other stations than the main-station don't give aegis messages.&lt;br /&gt;
&lt;br /&gt;
 this.shipEnteredStationAegis = function(station)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipExitedStationAegis&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipExitedStationAegis&amp;lt;/code&amp;gt; handler is called when the player leaves the aegis of the main-station (2x scanner range from main-station).&lt;br /&gt;
&lt;br /&gt;
 this.shipExitedStationAegis = function(station)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipEnteredPlanetaryVicinity&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipEnteredPlanetaryVicinity&amp;lt;/code&amp;gt; handler is called when the player enters the planet aegis (3x planet radius).&lt;br /&gt;
&lt;br /&gt;
 this.shipEnteredPlanetaryVicinity = function(planet)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipExitedPlanetaryVicinity&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipExitedPlanetaryVicinity&amp;lt;/code&amp;gt; handler is called when the player leaves the planet aegis (3x planet radius).&lt;br /&gt;
&lt;br /&gt;
 this.shipExitedPlanetaryVicinity = function(planet)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipApproachingPlanetSurface&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipApproachingPlanetSurface&amp;lt;/code&amp;gt; handler is called when the player is very close to the planet (crosses a border ± 500 meter above the surface).&lt;br /&gt;
&lt;br /&gt;
 this.shipApproachingPlanetSurface = function(planet)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipLeavingPlanetSurface&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipLeavingPlanetSurface&amp;lt;/code&amp;gt; handler is called when the player leaves the planet (crosses a border ± 500 meter above the surface).&lt;br /&gt;
&lt;br /&gt;
 this.shipLeavingPlanetSurface = function(planet)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Combat ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;alertConditionChanged&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;alertConditionChanged&amp;lt;/code&amp;gt; handler is called when the player’s alert status (&amp;lt;code&amp;gt;[[Oolite JavaScript Reference: Player#alertCondition|player.alertCondition]]&amp;lt;/code&amp;gt;) changes. Only the player and stations have an alert condition. (world script and station scripts)&lt;br /&gt;
&lt;br /&gt;
 this.alertConditionChanged = function(newCondition, oldCondition)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerTargetedMissile&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerTargetedMissile&amp;lt;/code&amp;gt; handler is called when the player targets the nearest missile by pressing T (shift-t) on the keybord.&lt;br /&gt;
&lt;br /&gt;
 this.playerTargetedMissile = function(missile)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipAttackedOther&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipAttackedOther&amp;lt;/code&amp;gt; handler is called when the player hits another with a laser shot. &amp;lt;code&amp;gt;other&amp;lt;/code&amp;gt; is the identity of the ship being hit.&lt;br /&gt;
&lt;br /&gt;
 this.shipAttackedOther = function(other)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipAttackedWithMissile&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipAttackedWithMissile&amp;lt;/code&amp;gt; handler is called when a missile is fired. &amp;lt;code&amp;gt;missile&amp;lt;/code&amp;gt; contains the missile entity and &amp;lt;code&amp;gt;whom&amp;lt;/code&amp;gt; the identity of the ship that launched the missile.&lt;br /&gt;
&lt;br /&gt;
 this.shipAttackedWithMissile = function(missile, whom)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipBeingAttacked&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipBeingAttacked&amp;lt;/code&amp;gt; handler is called when a laser shot  hits. &amp;lt;code&amp;gt;whom&amp;lt;/code&amp;gt; the identity of the ship that attacked.&lt;br /&gt;
&lt;br /&gt;
 this.shipBeingAttacked = function(whom)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipBeingAttackedByCloaked&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipBeingAttackedByCloaked&amp;lt;/code&amp;gt; handler is called when a laser shot from a cloaked ship hits. Guess what, there is no parameter because he is cloaked!&lt;br /&gt;
&lt;br /&gt;
 this.shipBeingAttackedByCloaked = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipKilledOther&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipKilledOther&amp;lt;/code&amp;gt; handler is called when a ship kills an other ship. &amp;lt;code&amp;gt;whom&amp;lt;/code&amp;gt; the identity of the ship that was killed. &amp;lt;code&amp;gt;damageType&amp;lt;/code&amp;gt; is the type of damage. (Handler added in test version 1.75) &lt;br /&gt;
&lt;br /&gt;
 this.shipKilledOther = function(whom,damageType)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipTargetDestroyed&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipTargetDestroyed&amp;lt;/code&amp;gt; handler is called when the target gets destroyed by the player. &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; contains the destroyed target entity. This command is always preceded by the &amp;lt;code&amp;gt;shipTargetLost&amp;lt;/code&amp;gt; handler.&lt;br /&gt;
&lt;br /&gt;
 this.shipTargetDestroyed = function(target)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipDied&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipDied&amp;lt;/code&amp;gt; handler is called when the ship or player dies. Expect a &amp;lt;code&amp;gt;reset()&amp;lt;/code&amp;gt; shortly when it is the player ship.&lt;br /&gt;
&lt;br /&gt;
 this.shipDied = function(whom, why)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
'''whom''' contains the entity that caused the kill. '''why''' is the cause written as string and is one of: &amp;quot;removed&amp;quot;, &amp;quot;hit a planet&amp;quot;, &amp;quot;energy damage&amp;quot;, &amp;quot;scrape damage&amp;quot;, &amp;quot;heat damage&amp;quot;, &amp;quot;cascade weapon&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
(&amp;quot;cascade weapon&amp;quot; is new in 1.74 and  &amp;quot;removed&amp;quot; / &amp;quot;energy damage&amp;quot; were accidentally switched in 1.73)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipFiredMissile&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipFiredMissile&amp;lt;/code&amp;gt; handler is called when a missile is fired. &amp;lt;code&amp;gt;missile&amp;lt;/code&amp;gt; contains the missile entity and &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; the identity of the target. The handler is send to the ship that launched the missile.&lt;br /&gt;
&lt;br /&gt;
 this.shipFiredMissile = function(missile, target)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipTargetLost&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipTargetLost&amp;lt;/code&amp;gt; handler is called when the target gets lost. &amp;lt;code&amp;gt;target&amp;lt;/code&amp;gt; contains the lost target entity.&lt;br /&gt;
&lt;br /&gt;
 this.shipTargetLost = function(target)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipTargetCloaked&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipTargetCloaked&amp;lt;/code&amp;gt; handler is called when the target cloakes.&lt;br /&gt;
&lt;br /&gt;
 this.shipTargetCloaked = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Equipment and Cargo ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;equipmentAdded&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{Oolite-method-added|1.81}}&lt;br /&gt;
The &amp;lt;code&amp;gt;equipmentAdded&amp;lt;/code&amp;gt; handler is called whenever the player ship gains an item of equipment. This includes &amp;quot;gaining&amp;quot; of &amp;lt;code&amp;gt;EQ_SOMETHING_DAMAGED&amp;lt;/code&amp;gt; when an &amp;lt;code&amp;gt;EQ_SOMETHING&amp;lt;/code&amp;gt; is damaged. This event will fire regardless of the reason for the equipment being added to the ship.&lt;br /&gt;
&lt;br /&gt;
 this.equipmentAdded = function(equipmentKey)&lt;br /&gt;
 {&lt;br /&gt;
       // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This is often more convenient than monitoring both &amp;lt;code&amp;gt;equipmentRepaired&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;playerBoughtEquipment&amp;lt;/code&amp;gt;, and will also detect equipment addition by script.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;equipmentDamaged&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;equipmentDamaged&amp;lt;/code&amp;gt; handler is called when equipment gets damaged. (world script only)&lt;br /&gt;
&lt;br /&gt;
 this.equipmentDamaged = function(equipment)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;equipmentRemoved&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{Oolite-method-added|1.81}}&lt;br /&gt;
The &amp;lt;code&amp;gt;equipmentRemoved&amp;lt;/code&amp;gt; handler is called whenever the player ship loses an item of equipment. This includes &amp;quot;losing&amp;quot; of &amp;lt;code&amp;gt;EQ_SOMETHING_DAMAGED&amp;lt;/code&amp;gt; when an &amp;lt;code&amp;gt;EQ_SOMETHING&amp;lt;/code&amp;gt; is repaired. This event will fire regardless of the reason for the equipment being removed from the ship.&lt;br /&gt;
&lt;br /&gt;
 this.equipmentRemoved = function(equipmentKey)&lt;br /&gt;
 {&lt;br /&gt;
       // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;equipmentRepaired&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{Oolite-method-added|1.77}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;equipmentRepaired&amp;lt;/code&amp;gt; handler is called when equipment gets repaired. (world script only)&lt;br /&gt;
&lt;br /&gt;
 this.equipmentRepaired = function(equipment)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerBoughtCargo&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{Oolite-method-added|1.77}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerBoughtCargo&amp;lt;/code&amp;gt; handler is called when cargo is bought at the market screen. &amp;lt;code&amp;gt;commodity&amp;lt;/code&amp;gt; contains the non-localised name for the cargo. You can get the localised name using &amp;lt;code&amp;gt;expandDescription(&amp;quot;[commodity-name &amp;quot;+commodity+&amp;quot;]&amp;quot;);&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; is price per unit in tenths of a credit.&lt;br /&gt;
&lt;br /&gt;
 this.playerBoughtCargo = function(commodity, units, price)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerBoughtEquipment&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerBoughtEquipment&amp;lt;/code&amp;gt; handler is called when equipment is bought at the outfit screen.&lt;br /&gt;
&lt;br /&gt;
 this.playerBoughtEquipment = function(equipment)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerBoughtNewShip&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerBoughtNewShip&amp;lt;/code&amp;gt; handler is called when a new ship is bought. May be needed to re-evaluate the old equipment as buying a new ship does not trigger equipment removal.&lt;br /&gt;
&lt;br /&gt;
 this.playerBoughtNewShip = function(ship, price)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The 'price' parameter is added from 1.81 onwards. It is the cost of the ship (not counting any trade-in value of the player's old ship) in credits, or zero for changes using [[Oolite JavaScript Reference: Player#replaceShip|player.replaceShip]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;playerSoldCargo&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{Oolite-method-added|1.77}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;playerSoldCargo&amp;lt;/code&amp;gt; handler is called when cargo is sold at the market screen. &amp;lt;code&amp;gt;commodity&amp;lt;/code&amp;gt; contains the non-localised name for the cargo. You can get the localised name using &amp;lt;code&amp;gt;expandDescription(&amp;quot;[commodity-name &amp;quot;+commodity+&amp;quot;]&amp;quot;);&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; is price per unit in tenths of a credit.&lt;br /&gt;
&lt;br /&gt;
 this.playerSoldCargo = function(commodity, units, price)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipScoopedFuel&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{Oolite-method-added|1.77}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipScoopedFuel&amp;lt;/code&amp;gt; handler is called whenever the player's ship transfers 0.1LY of fuel from the scoops to the tank.&lt;br /&gt;
&lt;br /&gt;
 this.shipScoopedFuel = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipScoopedOther&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipScoopedOther&amp;lt;/code&amp;gt; handler is called when a ship scoops cargo. The scooped item is transferred as argument.&amp;lt;br&amp;gt;If the cargo is scripted cargo, but not otherwise, then the scooped cargo itself gets the handler &amp;lt;code&amp;gt;shipWasScooped&amp;lt;/code&amp;gt; with the scooper as argument.&lt;br /&gt;
&lt;br /&gt;
 this.shipScoopedOther = function(whom)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;compassTargetChanged&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;compassTargetChanged&amp;lt;/code&amp;gt; handler is called when a new target is selected. Mode can be any of the following:&lt;br /&gt;
&lt;br /&gt;
 COMPASS_MODE_BASIC&lt;br /&gt;
 COMPASS_MODE_PLANET&lt;br /&gt;
 COMPASS_MODE_STATION&lt;br /&gt;
 COMPASS_MODE_SUN&lt;br /&gt;
 COMPASS_MODE_TARGET&lt;br /&gt;
 COMPASS_MODE_BEACONS&lt;br /&gt;
&lt;br /&gt;
script example &lt;br /&gt;
&lt;br /&gt;
 this.compassTargetChanged = function(whom, mode)&lt;br /&gt;
 {&lt;br /&gt;
      log(' Now targeting ' + whom);&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;dayChanged&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{oolite-method-added|1.77}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;dayChanged&amp;lt;/code&amp;gt; handler is called each time a new day starts. At very low frame rates while the clock is updating, it is possible for this handler to be called twice in the same frame. Therefore, clock.days will not be correct for one of the calls. Use the day number passed to the function instead.&lt;br /&gt;
&lt;br /&gt;
 this.dayChanged = function(newday)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;guiScreenChanged&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;guiScreenChanged&amp;lt;/code&amp;gt; handler is called when the guiScreen changes. &amp;quot;from&amp;quot; is the screen it is changing from and &amp;quot;to&amp;quot; is the screen were it initially switched to. Note that the screen can have changed again in the meantime by the action of other oxps. Therefor, it will generally better to test for the global &amp;lt;code&amp;gt;guiScreen&amp;lt;/code&amp;gt; to see which page is really on display instead of using the &amp;quot;to&amp;quot; parameter. (world script only)&amp;lt;br&amp;gt;&lt;br /&gt;
This handler will not fire for every screen the player can switch to, but only when switching to any of the following screens: &lt;br /&gt;
&lt;br /&gt;
1.76: &amp;lt;code&amp;gt;GUI_SCREEN_MAIN, GUI_SCREEN_STATUS, GUI_SCREEN_MANIFEST, GUI_SCREEN_SYSTEM_DATA, GUI_SCREEN_OPTIONS, GUI_SCREEN_EQUIP_SHIP, GUI_SCREEN_SHIPYARD, GUI_SCREEN_SHORT_RANGE_CHART, GUI_SCREEN_LONG_RANGE_CHART, GUI_SCREEN_MARKET, GUI_SCREEN_CONTRACTS, GUI_SCREEN_REPORT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.77: adds &amp;lt;code&amp;gt;GUI_SCREEN_INTERFACES&amp;lt;/code&amp;gt; and removes &amp;lt;code&amp;gt;GUI_SCREEN_CONTRACTS&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 this.guiScreenChanged = function(to, from)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;guiScreenWillChange&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;guiScreenWillChange&amp;lt;/code&amp;gt; handler is called when the guiScreen is about to change.  It only fires for the screens: &amp;lt;code&amp;gt;GUI_SCREEN_EQUIP_SHIP, GUI_SCREEN_MANIFEST, GUI_SCREEN_MARKET, GUI_SCREEN_SHIPYARD&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GUI_SCREEN_SYSTEM_DATA&amp;lt;/code&amp;gt; (in 1.77, also &amp;lt;code&amp;gt;GUI_SCREEN_STATUS&amp;lt;/code&amp;gt;). On these screens a script could change the content of the page to be displayed. (world script only)&lt;br /&gt;
&lt;br /&gt;
 this.guiScreenWillChange = function(to, from)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;infoSystemChanged&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;infoSystemChanged&amp;lt;/code&amp;gt; handler is called when the system displayed in F7 is changed, e.g. by moving the small blue cursor along the planned route in the chart.  Available in 1.83.&lt;br /&gt;
&lt;br /&gt;
 this.infoSystemChanged = function(to, from)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;missionChoiceWasReset&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;missionChoiceWasReset&amp;lt;/code&amp;gt; handler is called when the mission choice is set to null via script (either using the legacy script method resetMissionChice, or using mission.choice = null; in javascript)&lt;br /&gt;
&lt;br /&gt;
 this.missionChoiceWasReset= function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;missionScreenEnded&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;missionScreenEnded&amp;lt;/code&amp;gt; handler is called when the missionscreen ends. Note that an other script may have put up a new missionscreen in the meantime. (world script only)&lt;br /&gt;
&lt;br /&gt;
 this.missionScreenEnded = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;missionScreenOpportunity&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;missionScreenOpportunity&amp;lt;/code&amp;gt; handler is called if there are no mission / report screens active, and the player is docked to a station. It gets fired at game startup, upon docking, and after a docking report or previous mission screen has ended.  (world script only)&lt;br /&gt;
&lt;br /&gt;
 this.missionScreenOpportunity= function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This handler works a bit different as other handlers. It fires for every installed oxp, until an oxp creates a mission screen during this handler. Than it stops. When the mission screen ends and there is no callback function that created a new mission screen, than the missionScreenOpportunity is send again to all installed oxps, starting with the oxp that used the mission screen as last one. All this means that when this handler fires, it is safe to show a mission screen and no further test are needed.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;reportScreenEnded&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;reportScreenEnded&amp;lt;/code&amp;gt; handler is called when the last arrival-report  screen ends. This is a screen that should not be written by a missionscreen. The code should wait until this eventhandler fires. Note that an other script may have put up a new missionscreen in the meantime. (world script only)&lt;br /&gt;
&lt;br /&gt;
 this.reportScreenEnded = function()&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipCollided&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipCollided&amp;lt;/code&amp;gt; handler is send after a collision with otherShip.&lt;br /&gt;
&lt;br /&gt;
 this.shipCollided = function(otherShip)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipSpawned&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipSpawned&amp;lt;/code&amp;gt; handler is called after an NPC ship has been added to the system. After a witchspace jump it means that first all ships are added to the system, then all the relevant shipSpawned events are triggered.&amp;lt;br&amp;gt;&lt;br /&gt;
This handler for the woldScript is new since Oolite 1.74. After the event is sent to the shipScript, it is now also send to the worldScript with the added entity as argument.&lt;br /&gt;
&lt;br /&gt;
 this.shipSpawned = function(ship)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;shipLaunchedEscapePod&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;shipLaunchedEscapePod&amp;lt;/code&amp;gt; handler is called when the player bails out. This will be followed by a &amp;lt;code&amp;gt;shipWillDockWithStation()&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;shipDockedWithStation()&amp;lt;/code&amp;gt; pair after a few seconds.&lt;br /&gt;
&lt;br /&gt;
 this.shipLaunchedEscapePod = function(escapepod)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;systemInformationChanged&amp;lt;/code&amp;gt; ====&lt;br /&gt;
{{oolite-method-added|1.79}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;systemInformationChanged&amp;lt;/code&amp;gt; handler is called when system information is modified. It is passed the galaxy and system ID which were changed, and the key and new value in the SystemInfo object.&lt;br /&gt;
&lt;br /&gt;
To avoid problems with recursion, attempting to change the value of any system information property from within this function will fail and log an error. Also note that changes which take place while Oolite is not running (from OXP planetinfo.plist files) will not cause this handler to be called when the game is reloaded.&lt;br /&gt;
&lt;br /&gt;
 this.systemInformationChanged = function(galaxy,system,key,newValue)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;viewDirectionChanged&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;viewDirectionChanged&amp;lt;/code&amp;gt; handler is called when the player view changes, with a string to indicate which view the player is facing. Amongst its possible values are &amp;quot;VIEW_FORWARD&amp;quot;, &amp;quot;VIEW_AFT&amp;quot;, &amp;quot;VIEW_PORT&amp;quot;, &amp;quot;VIEW_STARBOARD&amp;quot;,&lt;br /&gt;
&amp;quot;VIEW_CUSTOM&amp;quot;,&lt;br /&gt;
&amp;quot;VIEW_GUI_DISPLAY&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 this.viewDirectionChanged = function(viewString)&lt;br /&gt;
 {&lt;br /&gt;
   if (viewString == &amp;quot;VIEW_PORT&amp;quot;)&lt;br /&gt;
   {&lt;br /&gt;
      // Your code here&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== System population ===&lt;br /&gt;
&lt;br /&gt;
In Oolite 1.79 and later, functions are called to populate and repopulate the system. These functions do not have fixed names, as they depend on the system, but otherwise act like normal worldscript functions. [[Oolite System Populator|The populator page]] has more documentation on these functions.&lt;br /&gt;
&lt;br /&gt;
=== Defunct ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;equipmentDestroyed&amp;lt;/code&amp;gt; ====&lt;br /&gt;
''Handler no longer exists in current stable version 1.80''&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;equipmentDestroyed&amp;lt;/code&amp;gt; handler is called when equipment gets destroyed completely beyond repair. (in strict mode, 1.77 or earlier only)  (world script only)&lt;br /&gt;
&lt;br /&gt;
 this.equipmentDestroyed = function(equipment)&lt;br /&gt;
 {&lt;br /&gt;
      // Your code here&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;tickle&amp;lt;/code&amp;gt; (removed in 1.77) ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;tickle&amp;lt;/code&amp;gt; handler is called periodically-ish, whenever the old [[property list|plist]] scripts are updated. &amp;lt;code&amp;gt;tickle()&amp;lt;/code&amp;gt; is deprecated. In new code, use appropriate event handlers or [[Oolite JavaScript Reference: Timer|timers]] instead.&lt;br /&gt;
&lt;br /&gt;
=== Missing Events ===&lt;br /&gt;
&lt;br /&gt;
All the initially planned events have been implemented in 1.74.&lt;br /&gt;
&lt;br /&gt;
If there are other events you would like to be able to respond to, please write a request [http://www.aegidian.org/bb/viewtopic.php?t=3296 on the forum].&lt;br /&gt;
&lt;br /&gt;
'''See also:''' [[Oolite JavaScript Reference: Ship script event handlers|ship script event handlers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Oolite JavaScript Reference]]&lt;/div&gt;</summary>
		<author><name>Kanthoney</name></author>
		
	</entry>
	<entry>
		<id>http://backup.witchspacewiki.org/index.php?title=Shaders_in_Oolite:_uniforms&amp;diff=51975</id>
		<title>Shaders in Oolite: uniforms</title>
		<link rel="alternate" type="text/html" href="http://backup.witchspacewiki.org/index.php?title=Shaders_in_Oolite:_uniforms&amp;diff=51975"/>
		<updated>2016-02-24T17:03:04Z</updated>

		<summary type="html">&lt;p&gt;Kanthoney: /* Entity */ Add fogUniform&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&amp;lt;small&amp;gt;The information presented on this page applies to Oolite test release 1.69 and later.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''uniform''' in a [[Shaders in Oolite|shader]] is a variable whose value is specified by the host application – in this case, [[Oolite]]. Oolite allows arbitrary uniforms to be specified for shaders applied to ships, and these may either take constant values specified in ''shipdata.plist'', or be “bound” to an attribute of the ship. This allows shader authors to access numerous properties of a game entity without having to ask for them and wait for an updated version of Oolite. ('''Note:''' in the case of subentities, bound properties are fetched from the parent ship.)&lt;br /&gt;
&lt;br /&gt;
=== Basic syntax ===&lt;br /&gt;
Uniforms are specified in the ''materials'' or ''shaders'' dictionary of a ship’s ''shipdata.plist'' entry:&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;&amp;quot;ahruman_shady_cobra_example&amp;quot; =&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;    like_ship = &amp;quot;cobra3-player&amp;quot;;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;    shaders =&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;    {&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;        &amp;quot;cobra3_redux.png&amp;quot; =&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;        {&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;            textures = ( &amp;quot;cobra3_redux.png&amp;quot; );&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;            fragment_shader = &amp;quot;ahruman_shady_cobra_example.fragment&amp;quot;;&amp;lt;/font&amp;gt;&lt;br /&gt;
             uniforms =&lt;br /&gt;
             {&lt;br /&gt;
                 shininess =&lt;br /&gt;
                 {&lt;br /&gt;
                     type = float;&lt;br /&gt;
                     value = 42.0;&lt;br /&gt;
                 };&lt;br /&gt;
                 withinAegis = &amp;quot;withinStationAegis&amp;quot;;&lt;br /&gt;
                 compassMode = &amp;quot;compassMode&amp;quot;;&lt;br /&gt;
             }&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;        }&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;    }&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;#AAAAAA&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&lt;br /&gt;
This contrived example declares three uniforms, ''shininess'', ''withinAegis'' and ''compassMode''. ''shininess'' is a constant &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt;; it is always 42. ''withinAegis'' is bound to the ship’s ''withinStationAegis'' property. (See below for information on available properties.) This is a boolean, that is, a number whose value is either 0 (meaning no) or 1 (meaning yes). ''compassMode'' is a binding to the ''compassMode'' property. To use the uniforms within a shader (either a vertex shader or a fragment shader), they are declared as follows:&lt;br /&gt;
 uniform float shininess;&lt;br /&gt;
 uniform int withinAegis;&lt;br /&gt;
 uniform int compassMode;&lt;br /&gt;
 ...&lt;br /&gt;
 void main(void)&lt;br /&gt;
 {&lt;br /&gt;
     if (withinAegis)&lt;br /&gt;
     {&lt;br /&gt;
          // Do aegis-specific effect here&lt;br /&gt;
     }&lt;br /&gt;
     ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Uniform property types ===&lt;br /&gt;
Every bindable property has a '''type'''. The simplest types, ''int'' and ''float'', correspond directly to the same types in GLSL. Both represent numbers, with the difference that a ''float'' can represent fractional values and very large values, but always has the same level of precision (about six digits), while ''int''s can represent any integer (non-fractional value) in a limited range. A ''bool'' is an integer whose value can be only 0 (meaning no or false) or 1 (meaning yes or true). ('''Note:''' the GLSL specification is deliberately vague on the ranges of the number types. It also points out that most hardware will actually use floating-point calculations for ''int'' variables, which implies that integer calculations will incur rounding overhead.)&lt;br /&gt;
&lt;br /&gt;
The ''vector'' type is translated to a GLSL ''vec4'', whose ''x'', ''y'' and ''z'' components correspond to those of the Oolite vector, and whose ''w'' component is always 1.0.&lt;br /&gt;
&lt;br /&gt;
The ''quaternion'' type can be translated to a ''mat4x4'' representing a rotation matrix, or to a ''vec4'' whose ''x'', ''y'', ''z'' and ''w'' components correspond to those of the Oolite quaternion.&lt;br /&gt;
&lt;br /&gt;
The ''matrix'' type is translated into a GLSL ''mat4x4''.&lt;br /&gt;
&lt;br /&gt;
The ''colour'' type is translated into a GLSL ''vec4'' type, whose ''r'', ''g'', ''b'' and ''a'' components correspond to those of the Oolite colour object.&lt;br /&gt;
&lt;br /&gt;
==== Conversions ====&lt;br /&gt;
Several types of binding can be modified by conversion options, specified in the '''uniforms''' dictionary, for example:&lt;br /&gt;
 haveFuel =&lt;br /&gt;
 {&lt;br /&gt;
     binding = &amp;quot;fuel&amp;quot;;&lt;br /&gt;
     clamped = true;&lt;br /&gt;
 };&lt;br /&gt;
The '''clamped''' conversion option, when applied to a property of type ''float'', causes the value to be clamped to the range [0, 1]. When applied to an ''int'' property, any value other than 0 (including negative values) is converted to 1. The default value is ''false''.&lt;br /&gt;
&lt;br /&gt;
The '''normalized''' option causes vector properties to be normalized, that is, scaled so they have the same direction but length 1. The default value is ''false''.&lt;br /&gt;
&lt;br /&gt;
The '''asMatrix''' option causes quaternion properties to be converted to rotation matrix, rather than having their components packed into a ''vec4''. The default value is ''true''.&lt;br /&gt;
&lt;br /&gt;
=== Bindable property reference ===&lt;br /&gt;
The following sections list entity properties which can be used in a uniform binding, regardless of apparent usefullness. Note, however, that '''some of these names may change before the next stable release'''.&lt;br /&gt;
&lt;br /&gt;
==== Entity ====&lt;br /&gt;
The following properties are available for all entities:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Bindable entity properties&lt;br /&gt;
! Name !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ''position'' || vector || The location of the entity in system co-ordinates.&lt;br /&gt;
|-&lt;br /&gt;
| ''orientation'' || quaternion || The orientation of the entity.&lt;br /&gt;
|-&lt;br /&gt;
| ''relativePosition'' || vector || The location of the entity, relative to the player.&lt;br /&gt;
|-&lt;br /&gt;
| ''viewpointOffset'' || vector || The location of the current camera, in entity co-ordinates. Although this is defined for all entities, it is only meaningful for the player ship.&lt;br /&gt;
|-&lt;br /&gt;
| ''collisionRadius'' || float || Together with the ''position'', specifies a sphere completely containing the collidable volume of the entity.&lt;br /&gt;
|-&lt;br /&gt;
| ''mass'' || float || The mass of the entity.&lt;br /&gt;
|-&lt;br /&gt;
| ''energy'' || float || The current energy level of the entity.&lt;br /&gt;
|-&lt;br /&gt;
| ''maxEnergy'' || float || The current maximum energy level of the entity.&lt;br /&gt;
|-&lt;br /&gt;
| ''universalTime'' || float || The [[Time scales in Oolite#game real time|game real time]] clock. The value is the same for all entities and updates once per frame.&lt;br /&gt;
|-&lt;br /&gt;
| ''spawnTime'' || float || The [[Time scales in Oolite#game real time|game real time]] at which the entity came into existance.&lt;br /&gt;
|-&lt;br /&gt;
| ''timeElapsedSinceSpawn'' || float || The number of seconds (in the [[Time scales in Oolite#game real time|game real time]] scale) since the entity came into existance – the difference between ''universalTime'' and ''spawnTime''.&lt;br /&gt;
|-&lt;br /&gt;
| ''throwingSparks'' || bool || Whether the entity is generating sparks (for instance, a ship about to explode).&lt;br /&gt;
|-&lt;br /&gt;
| ''fogUniform'' (version 1.83) || vector || Atmosphere colour rgba for applying fog effect. Alpha channel is zero for no fogging to 1 for full fogging.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Ship ====&lt;br /&gt;
Ships (i.e., anything set up in ''shipdata.plist'', regardless of function) have all the properties of [[#Entity|entities]], and several others:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Bindable ship properties&lt;br /&gt;
! Name !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ''isBeacon'' || bool || True if the entity is a beacon.&lt;br /&gt;
|-&lt;br /&gt;
| ''isFrangible'' || bool || True if the entity is frangible, i.e. subentities can be shot off.&lt;br /&gt;
|-&lt;br /&gt;
| ''isCloaked'' || bool || True if the entity is cloaked. [b]Note:[/b] a cloaked ship will only be drawn approximately once per ten frames, regardless of shaders.&lt;br /&gt;
|-&lt;br /&gt;
| ''isJammingScanning'' || bool || True if the ship has an active military jammer.&lt;br /&gt;
|-&lt;br /&gt;
| ''hasMilitaryScannerFilter'' || bool || True if the ship has a military scanner filter.&lt;br /&gt;
|-&lt;br /&gt;
| ''messageTime'' || float || Time before a radio message may be sent, in seconds. (This is set to 6.0 seconds when an NPC ship sends a message, and decreases over time.)&lt;br /&gt;
|-&lt;br /&gt;
| ''groupID'' || int || Unique identifier for the escort group the ship belongs to.&lt;br /&gt;
|-&lt;br /&gt;
| ''escortCount'' || int || The number of active escorts the ship has.&lt;br /&gt;
|-&lt;br /&gt;
| ''hasHostileTarget'' || bool || True if the ship has a target and the ship’s current AI behaviour is one of hostile intent.&lt;br /&gt;
|-&lt;br /&gt;
| ''weaponRange'' || float || Maximum range (in metres) of the ship’s main weapon. [b]Note:[/b] since subentities’ shaders get the parent ship’s properties, this may not work as expected.&lt;br /&gt;
|-&lt;br /&gt;
| ''scannerRange'' || float || The distance (in metres) in which the ship will scan for enemies.&lt;br /&gt;
|-&lt;br /&gt;
| ''withinStationAegis'' || bool || True if the ship is within the aegis of the system’s main station.&lt;br /&gt;
|-&lt;br /&gt;
| ''fuel'' || int || Ship’s fuel level, in tenths of a light year.&lt;br /&gt;
|-&lt;br /&gt;
| ''flightPitch'' || float || Current pitch rate.&lt;br /&gt;
|-&lt;br /&gt;
| ''flightRoll'' || float || Current roll rate.&lt;br /&gt;
|-&lt;br /&gt;
| ''flightYaw'' || float || Current yaw rate. Currently always 0 for NPC ships.&lt;br /&gt;
|-&lt;br /&gt;
| ''flightSpeed'' || float || Ship’s current speed.&lt;br /&gt;
|-&lt;br /&gt;
| ''maxFlightSpeed'' || float || Ship’s speed at full throttle. Something of a misnomer – actual speed may be higher using afterburners or hyperspeed.&lt;br /&gt;
|-&lt;br /&gt;
| ''speedFactor'' || float || ''flightSpeed'' divided by ''maxFlightSpeed''. May be greater than 1.0 (unless [[#Conversions|clamped]] is used).&lt;br /&gt;
|-&lt;br /&gt;
| ''damage'' || int || ''energy'' expressed as a percentage of ''maxEnergy''.&lt;br /&gt;
|-&lt;br /&gt;
| ''laserHeatLevel'' || float || The temperature level of the current weapon.&lt;br /&gt;
|-&lt;br /&gt;
| ''hullHeatLevel'' || float || The temperature level of the hull, due to proximity to stars, atmospheric drag or combat hits. When it reaches 1.0, the ship starts taking damage rapidly.&lt;br /&gt;
|-&lt;br /&gt;
| ''entityPersonality'' || float || A randomly-generated value in the range 0.0 to 1.0 that stays with the entity for its lifetime. Useful for adding random variations.&lt;br /&gt;
|-&lt;br /&gt;
| ''entityPersonalityInt'' || float || Same as ''entity_personality'', scaled to the range 0 to 32767.&lt;br /&gt;
|-&lt;br /&gt;
| ''numberOfScannedShips'' || int || The number of ships within scanner range (but no more than 16).&lt;br /&gt;
|-&lt;br /&gt;
| ''destination'' || vector || The location, in system co-ordinates, that the AI is trying to fly to. This may not always be meaningful depending on AI state.&lt;br /&gt;
|-&lt;br /&gt;
| ''rangeToDestination'' || float || The distance in metres between ''position'' and ''destination''.&lt;br /&gt;
|-&lt;br /&gt;
| ''rangeToPrimaryTarget'' || float || The distance in metres to the AI’s target (i.e., the ship it is trying to shoot). 0 if no target.&lt;br /&gt;
|-&lt;br /&gt;
| ''laserColor'' || colour || The colour of the ship’s laser.&lt;br /&gt;
|-&lt;br /&gt;
| ''isHulk'' || bool || True if the ship has been abandoned.&lt;br /&gt;
|-&lt;br /&gt;
| ''lightsActive'' || bool || True if flashers are turned on, false otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| ''alertCondition''&amp;lt;br&amp;gt;(1.77 or later) || int || Current alert condition – 0 for docked, 2 for yellow, 3 for red.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Player ship ====&lt;br /&gt;
The player ship has all the properties of [[#Entity|entities]] and [[#Ship|ships]], and several others:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Bindable player ship properties&lt;br /&gt;
! Name !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ''massLocked'' || bool || True if the ship is too close to a large object to be able to make a witchspace jump.&lt;br /&gt;
|-&lt;br /&gt;
| ''atHyperspeed'' || bool || True if the ship is at hyperspeed.&lt;br /&gt;
|-&lt;br /&gt;
| ''velocityVector'' || vector || The ship’s velocity.&lt;br /&gt;
|-&lt;br /&gt;
| ''dialForwardShield'' || float || The forward shield level, ranging from 0.0 to 1.0.&lt;br /&gt;
|-&lt;br /&gt;
| ''dialAftShield'' || float || The aft shield level, ranging from 0.0 to 1.0.&lt;br /&gt;
|-&lt;br /&gt;
| ''dialMissileStatus'' || int || State of selected missile – 0 for safe/no missile, 1 for active, 2 for locked.&lt;br /&gt;
|-&lt;br /&gt;
| ''dialFuelScoopStatus'' || int || State of cargo scoop – 0 for no scoop installed, 1 for full hold, 2 for idle with space in hold, 3 for actively scooping.&lt;br /&gt;
|-&lt;br /&gt;
| ''compassMode'' || int || State of advanced space compass – 0 for no advanced space compass installed, 1 for planet mode, 2 for station mode, 3 for sun mode, 4 for target mode, 5 for any beacon. More may be added in future.&lt;br /&gt;
|-&lt;br /&gt;
| ''activeMissile'' || int || Which missile slot is currently selected, from 0 to ''dialMaxMissiles'' - 1.&lt;br /&gt;
|-&lt;br /&gt;
| ''dialMaxMissiles'' || int || The number of missile slots on the ship.&lt;br /&gt;
|-&lt;br /&gt;
| ''dialIdentEngaged'' || bool || True if ident (targeting) mode is active.&lt;br /&gt;
|-&lt;br /&gt;
| ''alertCondition'' || int || Current alert condition – 0 for docked, 1 for green, 2 for yellow, 3 for red.&lt;br /&gt;
|-&lt;br /&gt;
| ''trumbleCount'' || int || Number of trumbles with which the player’s ship is infected.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Additionally, all [[Methods#Querying states|state query scripting methods]] ending with ''_number'' may be used for the player.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Oolite]]&lt;br /&gt;
[[Category:Oolite scripting]]&lt;/div&gt;</summary>
		<author><name>Kanthoney</name></author>
		
	</entry>
	<entry>
		<id>http://backup.witchspacewiki.org/index.php?title=Hidden_Settings_in_Oolite&amp;diff=47436</id>
		<title>Hidden Settings in Oolite</title>
		<link rel="alternate" type="text/html" href="http://backup.witchspacewiki.org/index.php?title=Hidden_Settings_in_Oolite&amp;diff=47436"/>
		<updated>2015-05-12T20:49:26Z</updated>

		<summary type="html">&lt;p&gt;Kanthoney: Document fix for git issue 136.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Oolite]] has a number of settings that are potentially interesting for advanced users – mostly those working on [[OXP]]s – or for those who are experiencing graphical problems. This article focuses on settings stored on disk; for other tools that can be used while the game is running, see [[Debugging Facilities in Oolite]]. All changes described below should be made when the game is not running.&lt;br /&gt;
&lt;br /&gt;
All of these settings were introduced at some point after Oolite 1.65, and as such only apply to test releases at the moment.&lt;br /&gt;
&lt;br /&gt;
== Startup Parameters ==&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
In Windows you can add a parameter to Oolite's shortcut (so that instead of pointing at C:\Oolite\oolite.app\oolite.exe it'll point at C:\Oolite\oolite.app\oolite.exe ''parameter''). [[:File:Oolite_Windows_Shortcut_Parameters.jpg|See here for an example.]]&lt;br /&gt;
&lt;br /&gt;
=== Available parameters ===&lt;br /&gt;
The parameters are:&lt;br /&gt;
&lt;br /&gt;
* -nosplash&lt;br /&gt;
This removes the splash screen that appears when loading, and is useful to fix some graphical issues with certain graphics cards.&lt;br /&gt;
* -splash&lt;br /&gt;
This forces Oolite to always display the splash screen. If you try to use both -splash and -nosplash, -nosplash &amp;quot;wins&amp;quot;.&lt;br /&gt;
* -fullscreen&lt;br /&gt;
This forces Oolite to start in fullscreen mode, not windowed.&lt;br /&gt;
* -noshaders&lt;br /&gt;
This forces shaders to be disabled when loading. This may be useful on some older graphics cards (e.g. the Intel GMA series) which report shader support to Oolite but don't do it particularly well.&lt;br /&gt;
* -load path_to_savegame&lt;br /&gt;
This forces Oolite to load the specified saved game. Use the full path, eg: -load c:\oolite\oolite.app\oolite-saves\Jameson.oolite-save&lt;br /&gt;
* -verify-oxp path_to_oxp&lt;br /&gt;
Rather than starting Oolite, perform some basic syntax checks on the OXP at the specified path. This is only available in the OXP developer builds of Oolite.&lt;br /&gt;
&lt;br /&gt;
== Changing settings ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
For Oolite under Mac OS X, there are several ways to modify these settings.&lt;br /&gt;
* Most of them can be set with the [http://secrets.blacktree.com/ Secrets preference pane] for Mac OS X 10.5. (download the tool by selecting the &amp;quot;prefPane&amp;quot; option on the top right, click the downloaded prefPane to install it, choose Oolite in the list on the left)&lt;br /&gt;
* If you have Xcode tools installed, they can be edited with Property List Editor. The preferences file can be found at ~/Library/Preferences/org.aegidian.oolite.plist. (This is human-readable in Mac OS X 10.3.9 and earlier, but binary in 10.4 and later.)&lt;br /&gt;
* On all systems, the &amp;lt;code&amp;gt;defaults&amp;lt;/code&amp;gt; command line tool can be used. To set a boolean value, use: &amp;lt;code&amp;gt;defaults write org.aegidian.oolite '''key''' -bool YES&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;). For numerical values, use &amp;lt;code&amp;gt;defaults write org.aegidian.oolite '''key''' 42&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Windows, Linux and other platforms ===&lt;br /&gt;
For platforms other than Mac OS X, you must edit a text file called .GNUstepDefaults. This file is created when you change a preference in Oolite, then quit.&lt;br /&gt;
&lt;br /&gt;
Under Windows, this file is found at &amp;lt;code&amp;gt;&amp;lt;Oolite installation directory&amp;gt;\oolite.app\GNUstep\Defaults\.GNUstepDefaults&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Under Linux and other platforms, the file is at &amp;lt;code&amp;gt;~/GNUstep/Defaults/.GNUstepDefaults&amp;lt;/code&amp;gt;. Since its name starts with a full stop, it is hidden by default. If you’re using Gnome/Nautilus or KDE/Konqueror, you can show it by selecting Show Hidden Files from the View menu. In any event, it should be accessible from the command line.&lt;br /&gt;
&lt;br /&gt;
The .GNUstepDefaults file is a kind of [[property list]], but uses a slightly different syntax than usual; you may see values like &amp;lt;code&amp;gt;&amp;lt;*I300&amp;gt;&amp;lt;/code&amp;gt;. However, when you edit it by hand it’s safe to write numbers in plain form, and booleans are written as &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;. All Oolite settings are in the dictionary named “oolite”.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
=== Graphics ===&lt;br /&gt;
'''Key:''' max-texture-size&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' integer&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' Determined by graphics card and driver, typically 4096.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Minimum:''' 64&amp;lt;br /&amp;gt;&lt;br /&gt;
Limit the size (side length) of textures; textures larger than this size will be scaled down. The value should be a power of two; if it isn’t, it will be rounded '''up''' to the next power of two. '''Note:''' if reduced detail mode is enabled, textures with a side length larger than 512 pixels will be scaled down to half their size regardless of this setting. (This is done independently on each side; for instance, a 1024×2048 pixel texture will be scaled down to 512×1024 pixels, while a 512×1024 pixel texture will be scaled to 512×512 pixels.)&lt;br /&gt;
&lt;br /&gt;
'''Key:''' polygon-sprite-dump-svg&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.74&amp;lt;br /&amp;gt;&lt;br /&gt;
Test release 1.74 uses a more sophisticated mechanism for drawing missile and mine icons, which involves turning each one into two sets of triangles. This setting causes the generated triangle data to be written to SVG files in the logs folder.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' sky-render-inset-coords&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, the outermost edges of stars and nebula parts will be cut off. This is intended to help with a rendering problem where boxes are drawn around stars and nebula parts on certain systems with defective graphics drivers.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' splash-screen&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.73.4&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;, Oolite will not show the splash screen while loading. This works around a problem which causes some Windows systems with NVIDIA graphics accelerators to fall back to software rendering. No effect on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' texture-anisotropy-scale&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' real&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' 0.5&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Range:''' 0–1&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.73/1.72.3 (implementation was previously broken)&amp;lt;br /&amp;gt;&lt;br /&gt;
Anisotropic filtering is a technique that improves the clarity of textures seen at a shallow angle, but has a significant performance cost. This setting changes the amount of anisotropic filtering applied, with 0 meaning none and 1 meaning as much as supported by your graphics hardware and drivers.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' use-texture-lod-bias&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.73&amp;lt;br /&amp;gt;&lt;br /&gt;
Texture LOD bias is an extension used to control the tradeoff between blurriness and graphical artefacts in textures. On certain ATi hardware under Windows, the use of texture LOD bias causes graphical problems, notably untextured stars and nebulae.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' dump-synthesized-shaders&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.77&amp;lt;br /&amp;gt;&lt;br /&gt;
Dumps the synthesized shaders that will be introduced in 1.77 in a folder beside the normal log.&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
'''Key:''' logging-echo-to-stderr&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, log messages are written to the standard error output as well as the log file.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' logging-show-function&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, log messages will be prefixed with the function or method in which they occurred. This is of limited use.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' logging-show-file-and-line&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, log messages will be prefixed with the source code location where they occurred. This is potentially convenient for developers.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' logging-show-time&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, log messages will be prefixed with the time on which they occurred. The time string is of the format hh:mm:ss.mil. This is potentially convenient for developers.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' logging-show-class&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt; (but disabled when running the OXP verifier)&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, log messages will be prefixed with their log message class, an identifier that can be used to enable or disable messages by editing ''[[logcontrol.plist]]''.&lt;br /&gt;
&lt;br /&gt;
=== OXP verifier ===&lt;br /&gt;
All keys in this section are only relevant for the OXP Developer builds of Oolite.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' enforce-oxp-standards&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' integer&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Available:''' Oolite 1.81 onwards&lt;br /&gt;
This sets the level of run time checking of OXP standards.&lt;br /&gt;
&lt;br /&gt;
* '''0''': Off (always the case in standard builds, regardless of this setting)&lt;br /&gt;
* '''1''': Warn (logs if deprecated or other common errors are found, default in OXP Developer builds)&lt;br /&gt;
* '''2''': Enforce (as 1, and it where possible will disable deprecated content)&lt;br /&gt;
* '''3''': Quit (as 1, and after reporting the error will immediately exit Oolite&lt;br /&gt;
&lt;br /&gt;
Setting a higher level than the default may be useful for some styles of OXP development, though is unlikely to be suitable for playing the game.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' oxp-verifier-dump-debug-graphviz&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, a [http://www.graphviz.org/ Graphviz] dot file named ''OXPVerifierStageDependencies.dot'' will be generated (in the &amp;lt;code&amp;gt;../Oolite/Oolite.app/Logs/&amp;lt;/code&amp;gt; folder) when the OXP verifier is run. This is used to analyze and debug the OXP verifier and is of little interest to end-users, unless they like technical-looking graphs. (If you do like technical-looking graphs, see '''[[#Miscellaneous|universe-dump-debug-graphviz]]''' below.)&lt;br /&gt;
&lt;br /&gt;
'''Key:''' oxp-verifier-open-log&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Platform:''' Mac OS X only.&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, the log file will be opened after the OXP verifier is run.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' plist-schema-verifier-dump-structure&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, OXP verifier logs will be filled with meaningless gobbledegook. (The [[property list|plist]] schema verifier is a tool used to verify the structure of property lists, currently used only for ''[[shipdata.plist]]'' entries. This setting causes detailed information to be logged for every property list element inspected by the verifier. It is unlikely to be useful except for debugging the verifier.)&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
'''Key:''' always-flush-cache&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.73&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, the data cache will be rebuilt each time Oolite runs. This is roughly equivalent to placing a brick on your shift key.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' debug-show-extra-menu-items&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Mac-specific: if set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, a few extra menu items appear in the Debug menu when the [[Debug OXP]] is installed (specifically, ''Graphics Reset'', ''Clear Texture Cache'', ''Reset and Clear'' and ''Clear All Caches'').&lt;br /&gt;
&lt;br /&gt;
'''Key:''' disable-operation-queue-work-manager&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.74&amp;lt;br /&amp;gt;&lt;br /&gt;
Test release 1.74 introduces a new way of managing certain operations, primarily texture loading, under Mac OS X 10.5 and later, which should also automatically be used with GNUstep 0.20 and later. In the event that this causes problems, it can be disabled with this preference.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' dump-stack-for-errors&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.75&amp;lt;br /&amp;gt;&lt;br /&gt;
(Test releases only) If this preference is set, additional debugging information is logged when a script encounters an error. If the [[Debug OXP]] is active, this is ignored in favour of the setting &amp;lt;code&amp;gt;debugConsole.dumpStackForErrors&amp;lt;/code&amp;gt; (which defaults to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''Key:''' dump-stack-for-warnings&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.75&amp;lt;br /&amp;gt;&lt;br /&gt;
(Test releases only) If this preference is set, additional debugging information is logged when a script encounters an warning. If the [[Debug OXP]] is active, this is ignored in favour of the setting &amp;lt;code&amp;gt;debugConsole.dumpStackForWarnings&amp;lt;/code&amp;gt; (which defaults to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''Key:''' escape-pod-activation-immediate&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.75&amp;lt;br /&amp;gt;&lt;br /&gt;
If true, the escape pod is activated by a single key press. If false, two key presses are needed (except in strict mode).&lt;br /&gt;
&lt;br /&gt;
'''Key:''' generate-ai-graphviz&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.74&amp;lt;br /&amp;gt;&lt;br /&gt;
When enabled, each time an AI is loaded (uncached), a [http://www.graphviz.org/ Graphviz] dot file is generated showing the AI’s states and the transitions between them. For an example, see [http://jens.ayton.se/oolite/ai-graphs/hardMissileAI.plist.pdf hardMissileAI.plist.pdf].&lt;br /&gt;
&lt;br /&gt;
'''Key:''' groolite-disable&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.74&amp;lt;br /&amp;gt;&lt;br /&gt;
Completely disables Growl integration (Mac OS X only).&lt;br /&gt;
&lt;br /&gt;
'''Key:''' mouse-control-in-windowed-mode&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Introduced:''' 1.74&amp;lt;br /&amp;gt;&lt;br /&gt;
Enables the player to use mouse control in windowed Oolite.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' universe-dump-debug-graphviz&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
If set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt;, various [http://www.graphviz.org/ Graphviz] dot files will be generated (in the &amp;lt;code&amp;gt;../Oolite/Oolite.app/Logs/&amp;lt;/code&amp;gt; folder) when Oolite starts. At the moment, this means ''SystemDescription.dot'', which is used to analyze the '''system_description''' table in ''[[descriptions.plist]]''. This is primarily useful to those writing localization OXPs.&lt;br /&gt;
&lt;br /&gt;
'''Key:''' issue_136_fix&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Type:''' boolean&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Default:''' &amp;lt;code&amp;gt;NO&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
This is a workaround for a graphical glitch on Macs with a retina display which affects the short range chart - see the issue at [https://github.com/OoliteProject/oolite/issues/136 github].  Set to &amp;lt;code&amp;gt;YES&amp;lt;/code&amp;gt; to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Oolite]]&lt;/div&gt;</summary>
		<author><name>Kanthoney</name></author>
		
	</entry>
</feed>