Skip to content
These docs reflect Contracts v0.6.0, the latest release. Older servers may differ.

Contracts

A contract is a single quest: a small bundle of one or more objectives to complete and one or more rewards paid out when it is done. Contracts are stored in the contracts_data.json data file and surfaced to players by being listed in a category.

You author contracts with the web editor. The shape below is what it reads and writes. For a hand-written, copy-pasteable example, see Create your first contract.

FieldTypeDescription
titlestring (non-empty)The name players see. Required.
descriptionstringA short blurb shown under the title. May be empty if the title says it all.
objectivesmap (1 or more)The goals to complete. See Objectives.
rewardsmap (1 or more)What the contract pays out on completion. See Rewards.
progressionTypeenum: Independent/Sequential/ProgressiveHow the objectives unlock (see below). Independent is the default.

objectives and rewards are stored as keyed maps, not arrays. Each key is a unique id you choose, and the key order is the display order. (Reordering in the editor rewrites this order.)

progressionType controls the order players tackle a contract’s objectives:

  • Independent: every objective is active at once. The default, and the right choice for most contracts.
  • Sequential: objectives must be completed in order; only the first incomplete one is active. Later objectives are visible but locked.
  • Progressive: like Sequential, but locked objectives are hidden in the menu until they unlock, so the contract reveals itself step by step.

A contract moves through these states for a given player:

  • Accepted: the player opted into an available contract; progress is now tracked.
  • Completed: every objective is met and the reward is ready to be claimed.
  • Claimed: the player collected their reward, before it is auto-claimed at the next rotation.
  • Abandoned: the player dropped the contract before finishing it. This can happen to make room for new contracts when the max active contracts limit is reached.
  • Expired: the contract’s category rotated while it was still in progress; partial progress is lost (a clock decision, distinct from abandoning).