Skip to content

Adding a Job

No C# required. Job definitions are content, following the exact same reasoning ADR-0004 established for items — see Architecture/16_JOBS_FRAMEWORK.md §2.

What you'll have at the end: a new job — using the legacy roster's "Chef" as the worked example — joinable in-game with /team, editable without touching code, and hot-reloading live while the server runs.


1. Before you start

You need the S&box editor open on this project. If you're recreating a legacy job, its original values are in Legacy/05_TEAMS_JOBS_FACTIONS.md §3Assets/Jobs/README.md already has all sixteen of the legacy roster's real jobs migrated as worked examples, so check there first in case the job you want already exists.

2. Create the asset

In the S&box editor's asset browser:

  1. Navigate to Assets/Jobs/.
  2. Right-click → Create → Job. This is the .job GameResource type registered by Architecture/16_JOBS_FRAMEWORK.md.
  3. Name the file chef.jobsnake_case, matching the job's id, the same convention Guides/02_ADDING_AN_ITEM.md uses for items.

3. Fill in the inspector

Field Value Why
Display Name Chef What players see
Group Civilians One of the three fixed groups — Officials, Civilians, Underground. Not extensible; see 16_JOBS_FRAMEWORK.md §1
Gang Id 0 0 = the group's general population, not a sub-organisation
Level 1 Rank within the gang. Not read by anything yet — demotion/mutiny logic will use it later
Max Players 0 0 = unlimited. Set a real cap (e.g. 15 for Police Officer) if the job should be limited
Required Character Permission (leave empty) Set this if only characters holding a specific permission may join — most jobs need none
Is Mandatory Transit unchecked Legacy's "Master Race" flag — only ever true for a job like Citizen that every cross-group move must pass through. See 16_JOBS_FRAMEWORK.md §4
Rejoin Cooldown Minutes 0 Minutes before this job can be rejoined after leaving it. 0 = no cooldown
Sort Order 13 Explicit presentation order — pick a number in the right group's range so this job doesn't jump ahead of jobs you didn't mean to reorder. Assets/Jobs/README.md documents the ranges already in use (Officials 04, Civilians 1014, Underground 2025)
Can Manufacture Food Item categories a holder of this job may manufacture — legacy's canmake list. Leave empty for a job that can't manufacture anything

4. Save and join it

Save the asset. Like items, .job assets hot-reload — no server restart needed to see a new job registered.

Join it with /team chef (see Player/01_CHAT_AND_COMMANDS.md), or through the player menu's Character tab's Become button once Player/05_USER_INTERFACE.md's Character tab is available to you. Joining checks, in order: the job exists, you're not on a rejoin cooldown, it isn't full, the move respects mandatory-transit rules, and you hold Required Character Permission if one is set — see Architecture/16_JOBS_FRAMEWORK.md §4 for the exact order.

5. Verify it worked

  • The job appears in the asset browser and in the dev menu's job list with a Join button.
  • It loads with no error in the console — an empty Display Name or a negative Max Players/ Rejoin Cooldown Minutes fails loudly, naming this asset specifically, not silently.
  • /team chef succeeds and your character's job changes.
  • Editing a property (say, Max Players) and re-saving while the server runs updates the live job without a restart.

6. What this doesn't do yet

Several things the legacy game's jobs did are deliberately not built, named here rather than left as a silent gap — see Architecture/16_JOBS_FRAMEWORK.md §6 and Assets/Jobs/README.md for the full list:

  • Salary and payday. Can Manufacture and every other field here are enough to define a job, but nothing pays anyone yet — Economy's payday loop doesn't exist.
  • Starting loadouts and ammo grants. A job that should spawn its holder armed (Police Officer, for instance) doesn't do that yet — there's no field for it.
  • A /manufacture command. Can Manufacture is real data, consumed by nothing — the command that would actually let a job holder craft something isn't built.
  • Demotion, mutiny, and job-blacklisting — real governance features, out of scope for a content-authoring pass.

If the job you're adding needs one of these to feel complete, the data you just authored is still worth having — it's ready the moment the feature that reads it lands.