Core concepts
Everything players interact with in Contracts is built from a handful of concepts. This page defines each one and shows how they nest. The pages that follow document every type in detail.
You author all of this with the web editor. The shapes below are what it reads and writes.
Glossary
Section titled “Glossary”Contract
Section titled “Contract”A single quest. A contract carries one or more objectives to complete and one or more rewards paid out when it is done and claimed. Unclaimed rewards are automatically granted at the next category rotation.
Objective
Section titled “Objective”One goal inside a contract: kill an animal, craft an item, hack a crate. Each objective tracks progress, and what “one unit” means depends on its type (one kill, versus the amount of an item gathered). See Objectives.
Condition
Section titled “Condition”An optional rule attached to an objective that restricts when progress counts, for example “only at night”, or “only with a specific weapon”. Conditions are a powerful way to add variety and nuance to objectives, and they can be layered in different combinations to create interesting scenarios of different difficulty. The same objective with no condition can be a lot harder when you add conditions.
Reward
Section titled “Reward”What a contract pays out on completion.
Category
Section titled “Category”A group of contracts that rotates on its own timer that you define in seconds (e.g: hourly, daily, weekly, or for the whole wipe, when disabled). You define which contracts belong to which categories and the category rotation keeps track of which contracts are currently active for a rotation.
Preset
Section titled “Preset”A named, reusable list of Rust item or entity shortnames (or any string really). Many objective and condition fields accept a preset reference written as @presetName in place of a literal list. Define a list once (say, all the scientist types into one @scientists preset) and reference it from every contract that needs it. At runtime, the plugin swaps preset references for the actual lists of strings, so the contract authoring experience is easier and more efficient. You can even reference presets inside other presets! (Preset-ception!)
How they nest
Section titled “How they nest”Category (rotates a pool of contracts on a timer)└─ Contract ├─ Objective | └─ Condition (optional) └─ Reward
Preset (referenced as @name from objective/condition item & entity lists)A category draws from a set of contracts. Each contract holds its objectives and rewards. Objectives may carry conditions. Presets sit to the side: they are shared lists that contracts point at rather than things a contract contains.