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).
-
sskill[string: null | real]default[] - Name→value pairs of required capability and proficiency (null or numeric); must reference resource / desk definitions.
-
ttimetimeInterval - Required — predicted duration at the stop for this option.
-
ccontingencytimeIntervaldefault0 - Buffer time applied during scheduling.
-
tttoTimetimeInterval - Duration for dependent “to” stops; defaults to t.
-
tctoContingencytimeInterval - Buffer for dependent stops; defaults to c.
-
rtrepackTimetimeIntervaldefault0 - Repack duration.
-
rcrepackContingencytimeIntervaldefault0 - Repack buffer.
-
llivery[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.
-
qqualityANY | RELIABLE | IDLE | null - Position restriction.
-
bbonusrealdefault0 - 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.
Livery
Section titled “Livery”Three things say something about livery, and they answer different questions:
| what it says | type | |
|---|---|---|
resourceParams.livery | what a resource carries | string |
customerParams.liveries | which liveries may serve that customer, and at what subsidy | [string: real] |
l above | what 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.