All orders have a priority of 0-4.
hostile, etc.) are priority 0.
wait, are priority 1.
flyare priority 2.
sailcommand is priority 4.
The order scheduler will first try to start all priority 1 orders. Only when no more priority 1 orders are ready to start will a priority 2 order be started.
In other words, the order scheduler will not start an order at a higher priority when an order may be started at a lower priority.
Orders at the same priority are resolved in location order. If two
units in a location are both waiting to start a
move order, the first
unit in the location will go first.
The above description of order priorities may seem complicated, but the
intent is to let players ignore same-day synchronization issues in most
cases. Rather that needing
wait to guarantee that
move, the lower priority of
give makes this happen
For example, consider three units stacked together, top, mid and bot:
top: move ec69 yew mid: unstack recruit bot: recruit
These should be executed in the following order:
mid: unstack # unstack is prio-1 top: move ec69 # move is prio-2 mid: recruit # recruit is prio-3 [top and bot arrive at ec69] top: yew # yew is prio-3 bot: recruit # recruit is prio-3
unstack happened first since it's a priority 1 command. The
move went second. When top and bot finished moving, there were
only priority three commands left, so they ran in location order.
 A zero time command is an order which always takes zero time. This does not include an order which may sometimes take zero time. For instance,
unstack is always a zero time order. However,
recruit is not, even though
recruit may terminate immediately under some conditions.