Skip to content
Contractsv1.7.0

Requirement display

The requirement display is the plugin’s generated, player-facing rendering of what an objective actually requires. This was introduced in version 1.5.0 after the growing amount of conditions made it inconvenient to have to describe them all in the objective’s description. It is generated from the config itself, so it is always accurate and up-to-date.

It has two parts, both in the contract details panel of the menu (the HUD is untouched):

  • Condition strip: a row of small icons on the objective card, one per condition. At most 10 icons show, then a +N chip.
  • Objective details popup: click anywhere on the objective card to open it. It shows the objective’s own requirements (targets, items, amounts, and other type-specific fields) and the full conditions tree, with ALL OF / ANY OF / NOT groups indented the way they nest.
  • Items show their in-game icon and display name (e.g. rifle.ak renders as the Assault Rifle icon and name).
  • Entities show a curated display name plus a category icon (NPC, animal, mount or world object). An entity outside the curated set falls back to its raw shortname and a generic icon. Unfortunately (afaik), Rust does not expose display names for entities, so entity display names are currently hard-coded into the plugin. This may be improved in a future update.
  • Presets are never unpacked. A field containing @rifles renders as a single chip named rifles. See Presets: preset names are player-visible text, so name them well.
  • Values render in words: “Between 21:00 and 06:00”, “From at least 50m”, “Wearing any of”, and so on. Every generated label is a language message you can override or translate like any other plugin message. See Localization.
  • The description stays yours. The generated display supplements it. Use the description for flavor and intent, not field-by-field repetition.
  • hideDetails (per objective, default false): set it to true and that objective shows no condition strip, its card is not clickable, and no popup exists. Players get only your title and description. Use it when discovery is the point (riddle objectives) or when the generated rendering would spoil a surprise.
  • Preset names are copy. @rifles reads great, @preset_v2_final does not.
  • In a Sequential contract, locked objectives show the strip and popup dimmed like the rest of the card, so players can plan ahead.
  • In a Progressive contract, locked objectives are secret: “???” stays absolute. No strip, no popup, regardless of hideDetails.