Gameplay
Taking a mission
A porter uses a terminal and takes a mission on its Orders tab. The cargo comes up in a free cabinet beside that terminal, and only that porter can take it.
The HUD
While a porter is on a delivery or has something on their back, a HUD on the right of the screen shows:
- the delivery, with the time left before its limit (or the time taken so far when it has none)
- the distance still to go
- the weight and height of the load
- the keys that do something right now
The balance meter is at the bottom of the screen. Both make way for the terminal and the pause menu.
/porter:settings opens an editor where a player drags the two parts of the HUD to where they want them. The first time a player uses a terminal it opens by itself. The layout is kept on the player's computer, in percent of the screen, so it holds at any resolution. Config.hud names the command and says where the parts sit until a player moves them.
Balance and cargo
Every item has a size (S, M, L, XL, XXL), a weight and optional traits:
| Trait | Effect |
|---|---|
fragile |
Loses more condition when it is spilled. |
liquid |
Sloshes, and keeps the load swinging after the porter has corrected it. |
live |
Shoves the load about on its own. |
fresh |
Goes off, so orders for it are timed tighter. |
How hard a stack is to carry grows with its weight and with how high that weight sits, so heavy cargo belongs at the bottom. Slopes, turning at speed, rough ground and rain all push the porter off balance. Reaching either end of the meter is a fall, and part of the stack comes off.
Condition and rank
The server owns the condition of every item, from 0 to 100. The rank of a delivery comes from the condition of its cargo and nothing else.
| Rank | Condition from | Share of the pay |
|---|---|---|
| S | 95 | 100% |
| A | 80 | 90% |
| B | 60 | 75% |
| C | 40 | 50% |
| D | 0 | 25% |
Both columns are the defaults and can be changed in Config.cargo.ranks and Config.missions.pay_by_rank.
The board
A terminal does not offer all of its missions at once. It shows a board of Config.missions.rotation.visible of them (4 by default), the same to every porter, and puts up a new one every period_minutes (40). The terminal shows when.
- The terminals change their boards at different times, and a board is worked out from the clock, so it stays the same across a restart.
- Every board has one of the cheapest third of the terminal's missions, so there is always an easy one, plus any mission marked
always. - A mission that is on no board right now cannot be taken. One already taken carries on after its board comes down.
- Set
visibleto 0 to show every mission all the time.
One mission on each board is urgent. It is tagged URGENT and pays urgent_bonus more (+35% by default). The bonus is the porter's when they take the mission, even if the board changes on the way.
Repeated deliveries
A porter who delivers the same mission again soon earns less for it. Config.missions.repeats.pay is the share the first repeat within window_minutes (60) pays (80%), the second (60%), and every one after. The terminal shows the cut on the order, and the result screen on the pay. Only deliveries that counted are repeats, and the server forgets them when it restarts.
Failing a delivery
A delivery fails when:
- the porter cancels it, on the terminal's active order or with
/portercancelanywhere - the time limit runs out, wherever the porter is
- the cargo breaks: as soon as any package of it reaches a condition of zero, on a back or on the ground
- the porter dies during a dangerous mission
Whichever way it ends, the porter is shown the failed result screen, tagged CANCELLED, OUT OF TIME, DESTROYED or KILLED. The cargo is removed wherever it is (in the cabinet, on a porter's back or on the ground), and the delivery goes on the porter's record as failed.
Failed deliveries pay nothing and count as a condition of zero in the porter's average, so they pull the average rank down. Other resources can listen for them, see Events and Exports.
Vehicles
A porter with cargo on their back can only use the vehicles allowed in Config.vehicles. By default these are motorcycles, cycles and vans. In closed vehicles the stack is hidden while the porter is inside, in open ones it stays on their back. Damage to the body of a vehicle reaches the cargo of every porter in it.
Carrying people
A porter can carry another player or a dead NPC on a harness. A person takes the whole back: no crates while carrying, and no carrying with crates on. A conscious player has to accept first, while the downed and the dead are not asked. See Config.carry.
Outfits
/porter:outfit <name> [colour] puts on one of the porter outfits and /porter:outfit off gives back what was worn before. The colours are orange, red, blue, green, white, black and gold. Without a colour the outfit takes the cargo frame's colour, so it matches the backpack and harness.
Commands
| Command | What it does |
|---|---|
/porter:settings |
Opens the HUD editor. |
/portercancel |
Gives up the current mission. |
/porter:outfit <name> [colour] |
Puts on a porter outfit, or off to take it off. |
With Config.debug on, these are also available:
| Command | What it does |
|---|---|
/portercrates [count] [what] |
Spawns test cargo: a count, and a cargo type, a size or all. |
/portercoords |
Copies your position to the clipboard, already written for terminals.json. |
/portergoto <id> |
Puts you in front of a terminal, or at the destination of a mission. |
/porterdeadline <seconds> |
Moves the time limit of your delivery to that many seconds from now. |
/portersmash |
Breaks the top package on your back. |
/portersurface |
Prints the hash of the ground you stand on. |