Like block, except it evaluates and returns the last expression only if one of the other expressions evaluates to an error.
LocalsList must contain at least one variable. If the first variable is not assigned within localsList, it will be set
to the error while evaluating expErr.
(error msg) -> error
(eval exp) -> result

Evaluates the expression. If it's a string, result is the value of the corresponding symbol.
If it's a quoted expression, the expression is evaluated.
If it's a list, each item is evaluated, then it's evaluated as a function call.
(exp x) -> e^x (real)
(filter list var boolean-exp) -> filtered list

Iterates var over list, evaluating boolean-exp. Returns a list containing the items for which boolean-exp is non-Nil.
(find string target) -> position of target in string (0-based)
(find source-list target ['ascending|'descending] [keyIndex]) -> position of target in source-list (0-based)

The 'ascending or 'descending argument makes the function more efficient if the list is long and sorted in the specified direction.
Specifying an integer keyIndex causes it to compare that item of each list within source-list with the target instead.

'acceptedOn Tick on which player accepted mission (or Nil)
'canBeDeclined Mission can be declined by player
'canBeDeleted Mission can be deleted by player
'debrieferID ID of the object that will debrief the player
'forceUndockAfterDebrief Force undock after showing debrief screen
'hasDebrief Mission has a debrief phase
'id Mission object ID
'isActive Is an active player mission
'isCompleted Is a completed mission (player or non-player)
'isDebriefed Player has been debriefed
'isDeclined Player has declined mission
'isFailure Mission has failed
'isIntroShown Player has been shown intro text
'isOpen Mission is available to player
'isRecorded Mission has been completed and debriefed
'isSuccess Mission has succeeded
'isUnavailable Mission is unavailable to player
'maxAppearing Max number of this type that can exist
'name The name of the mission
'nodeID ID of the mission's owner system
'ownerID ID of the mission's owner object
'priority Mission priority
'summary A summary description of the mission
'totalAccepted Count of this type accepted by player
'totalExisting Count of this type currently existing in universe
'unid Mission type UNID
(msnGetStaticData missionObj attrib) -> data
(msnGetTypeData missionObj attrib) -> data
(msnIncData missionObj attrib [increment]) -> new value
(msnRegisterForEvents missionObj obj)
(msnReward missionObj [data])
(msnSetData missionObj attrib data)
(msnSetObjRefData missionObj attrib obj)
(msnSetPlayerTarget missionObj)
(msnSetProperty obj property value) -> True/Nil

'center Fire event when target gets close to this point
'radius Within this radius (light-seconds)
'criteria Objects that will trigger. If Nil, player triggers
(sysAddTypeRecurringTimerEvent interval type event)

criteria is a string that must specify one or more of the following categories:

* Include all categories
b Include beams
G Include ONLY stargates
G:xyz; Include ONLY stargate with ID 'xyz'
k Include markers
m Include missiles
s Include ships
t Include stations (including planets)
T Include structure-scale stations
t:xyz; Same as "t +xyz;"
T:xyz; Same as "T +xyz;"
z Include the player

and may contain any number of the following options:

A Active objects only (i.e., objects that can attack)
D:xyz; Only objects with data 'xyz'
E Enemies of the source only
F Friends of the source only
H Only objects whose base = source
I:angle; Only objects that intersect line from source
J Same sovereign as source
J:unid; Sovereign unid = unid
K Killed objects only (i.e., objects that cannot attack)
L:x-y; Objects of level x to y.
M Manufactured objects only (i.e., no planets or asteroids)
N Return only the nearest object to the source
N:nn; Return only objects within nn light-seconds
O:docked; Ships that are currently docked at source
O:escort; Ships ordered to escort source
O:guard; Ships ordered to guard source
P Only objects that can be detected (perceived) by source
R Return only the farthest object from the source
R:nn; Return only objects greater than nn light-seconds away
S:sort; Sort order ('d' = distance ascending; 'D' = distance descending
V Include virtual objects
X Only objects whose target is the source
Y Only objects angry at (or enemies of) the source
Z Exclude the player
+xyz; Only objects with attribute 'xyz'
-xyz; Exclude objects with attribute 'xyz'
=n; Only objects of level n. You can also replace = with >, <, >=, or <=,
but they need to be escaped in XML.

'lastVisitOn Tick on which player last visited
'lastVisitSeconds Game seconds since player last visited
'level The level of the system
'name The name of the system
'pos Node position on map (x y)
(sysGetRandomLocation criteria [options]) -> location or Nil

options:

'objType Type (UNID) of object to place (optional)
'remove If True, remove location

'arc
Creates an arc along an orbit. Options must include the
following fields:

'orbit: This is the orbit to use. The arc will be
centered on the current orbit position (e.g., the
planet location).
'length: The length of the arc (in degrees).
'width: The width at the center of the arc (in light-
seconds).

'orbital
Creates a random environment along the orbit. Options
must include the following fields:

'orbit: This is the orbit to use.
'width: The average width of the ring, in light-
seconds.

'square
Creates a square patch. Options must include the
following fields:

center is either Nil, an object, or a vector
radius in light-seconds from center (or a function)
minSeparation is the min distance from other objects (in light-seconds)
filter defines the set of objects to be away from
(sysVectorSpeed velVector) -> %% of light speed
(sysVectorSubtract vector vector) -> vector
(tan x ['degrees]) -> z
(typAddRecurringTimerEvent unid interval event)