Skip to content

skillOptionObject

A skill option defines how a stop can be executed and the restrictions on timing and resource requirements. Field names are terse single/double letters (the long name follows each).

{
"s": [string: null | real],
"l": [string],
"q": ANY | RELIABLE | IDLE | null,
"b": <real>,
}
s skill [string: null | real] default []
Name→value pairs of required capability and proficiency (null or numeric); must reference resource / desk definitions.
t time timeInterval
Required — predicted duration at the stop for this option.
c contingency timeInterval default 0
Buffer time applied during scheduling.
tt toTime timeInterval
Duration for dependent “to” stops; defaults to t.
tc toContingency timeInterval
Buffer for dependent stops; defaults to c.
rt repackTime timeInterval default 0
Repack duration.
rc repackContingency timeInterval default 0
Repack buffer.
l livery [string] default []
Livery names this option requires — the values resources carry in resourceParams.livery. A resource qualifies only if its livery is one of these; empty means any livery. See "Livery" below.
q quality ANY | RELIABLE | IDLE | null
Position restriction.
b bonus real default 0
Subsidy or penalty applied when this option is selected.

Selection — when multiple options qualify, Spiral prioritises the least-restrictive quality, then the highest bonus, then the earliest array position.

Three things say something about livery, and they answer different questions:

what it saystype
resourceParams.liverywhat a resource carriesstring
customerParams.liverieswhich liveries may serve that customer, and at what subsidy[string: real]
l abovewhat this option requires[string]

A resource may take the work only if its own livery satisfies both the restriction and the permission: present in l when l is non-empty, and present in the customer’s liveries when that is non-empty. Either being empty means “no restriction from this side” — so an option with no l accepts any livery the customer permits, and a customer with no liveries accepts any livery the option requires.

The customer’s map carries a subsidy per livery as well as permission, so it both gates the resource and prices it; the option’s list only gates.

When no resource satisfies the combination, Spiral raises the LIVERY illegal action. Helix ships an operator-facing message for it — This work requires the {livery} livery, which this resource does not carry. Allocate a resource in the correct livery — which a client can override per stop type through helix.warning in stopParams.