This record describes API changes in 1.9 Alpha 3.
Parallax Options
In API 47 we add various options to control the z-position of a station (also know as the parallax level). Objects with a positive z-position appear to be above the main plane, while a negative z-position makes the object appear below the plane.
There are two principal ways to define the z-position: (1) and explicit z-position value (in light-seconds), or (2) an orbital inclination, which tilts the orbit into the z-dimension.
Inclination
You may specify an orbit inclination in any <Orbitals>, <Siblings>, or <OrbitalDistribution> directive:
...
<Orbitals distance="100" inclination="45" rotation="90">
...
</Orbitals>
...
The above defines a 100 light-second radius orbit with an inclination of 45 degrees. The rotation== parameter controls the angle on the XY plane where the orbit tilts.
<ZAdjust>
The <ZAdjust> directive can be used inside of a <SystemType> to define either a z-position or an orbital inclination to its child elements:
...
<ZAdjust inclination="90" rotation="alignedRandom">
<Lookup ...>
</ZAdjust>
...
The above <ZAdjust> sets the orbital inclination of its children (the <Orbitals> directive) to 90 degrees and a random rotation. An object on that orbit will be above or below the plane. This is mostly used for look up tables.
You can also adjust the z-position directly:
...
<ZAdjust zOffset="50">
<Lookup ...>
</ZAdjust>
...
This will create an orbit centered 50 light-seconds above the plane.
Note: The player cannot interact with out-of-plane objects, so you should not place activate stations. However, when creating a asteroid belt with an existing table, the table itself defines locations (labels) to place station on. You can use the option, excludeLocations="true" in the <ZAdjust> directive to make sure that locations are always on the main plane.
SystemType
We've made the following minor changes to system type definitions:
<Label ...>has been renamed to<Location ...>.<RandomLocation ...>addsnoWarnings="true"to suppress warnings about not enough locations.<RandomLocation ...>addsexclusionRadius="..."to choose a location that is at least the given distance away from other encounters. This can also be used to override the exclusion radius of a child<Station...>element.- In a
<Station>element you may useshowMapLabel="true"orshowMapLabel="false"to override the default behavior (see StationType below). <Lookup>directives now supportnoMapLabel=,showOrbit=, andshowMapLabel=options that are inherited by whatever stations are created in the lookup.- When creating a location (label) you may specify
required="true"to indicate that the location should not be deleted even if it overlaps with another location.
StationType
Hull Types
Prior to API 47 stations could specify multiHull="true", which made the station resistant to non-WMD weapons. In API 47 we generalize this to the concept of a "hull type":
<StationType ...>
...
<Hull
hullType="multiHull"
...
/>
</StationType>
The following hull types are supported:
- singleHull: This is a normal, single hull station. The station takes full damage.
- multiHull: Damage taken is proportional to the WMD-level of the weapon.
- asteroidHull: Damage taken is proportional to the higher of WMD-level or mining-level.
- undergroundHull: Damage taken is proportional to mining-level.
Map Labels
Starting in API 47 we show map labels on certain worlds. If a world has a name, we show it on the map if the world is 1,000 km or larger. You may override this on a <StationType> with showMapLabel="true" or showMapLabel="false".
ItemType
- In API 47 you can specify a weapon's range instead of its lifetime. Use
range="x", where x is a range in light-seconds. The engine will compute the appropriate lifetime value to reach the range at the shot's average speed. Do not specify both a lifetime and a range. - Added
'interactionproperty for weapone. - Added
stdInteractionproperty for weapons, which returns the default (auto-calculated) interaction for a weapon, regardless of what the specified interaction is. - Added
stdHPproperty for weapons, which returns the default hit points for the shot.
TLisp
Nilvalues are ignored when creating structs. For example,{ a:'foo b:nil }evaluates to{ a:'foo }.(typGetProperty theType 'known)now returns the aggregated known state, for item types that have multiple unknown types. If all the unknown types are known to the player, then we returnTrue. Otherwise we returnNil. Similarly,(typSetProperty theType 'known True|Nil)will set all unknown types to the given state.- Added
(unvGetProperty 'difficulty)property, which returns the game's difficulty level as chosen by the player at create-time. Valid values are:story,normal,challenge, andpermadeath. - Added
(typGetProperty stationType 'primaryWeapon)to return the station's primary weapon (the highest level installed weapon). We also support'primaryWeaponLevel, which returns the level of that weapon. - Added
'encounteredByNodeproperty for station types. - Added
'encounteredTotalproperty for station types.