Guide

Staff roles

Your team is built from staff roles: a darts coach, a physio, an agent, a practice partner and so on. Roles are content, like players or sponsors: a mod can add new ones, rebalance the core ones or replace them.

Roles live in data/staff/roles.json (or any file in data/staff/roles/). Each file is a JSON array. The editor schema is the staff roles reference. Patches target staffRole:<id>.

The game supplies the people: every month the market fills with candidates for each role, with names, faces, skills, personalities and wage demands.

A role#

{
  "id": "acme.staff.nutritionist",
  "name": "Nutritionist",
  "short": "NU",
  "icon": "🥗",
  "description": "Fuel for long days on the floor.",
  "skills": ["fitness", "psychology"],
  "effects": [
    { "hook": "fatigueRecovery", "skill": "fitness", "value": 0.03 },
    { "hook": "training", "skill": "fitness", "value": 0.2, "area": "fitness" },
    { "hook": "recovery", "skill": "psychology", "value": 1 }
  ],
  "availability": { "tierMax": 4, "followersMin": 0 },
  "wages": [40, 80, 150, 250, 400]
}
FieldMeaning
idNamespaced id. Stories name a role by its id or by its last part ("nutritionist"), so keep the last part unique
nameShown on cards and in messages
short1–3 letters for badges
iconOptional emoji shown instead of short
descriptionOne line on what they do
skills1–4 skills people in this role have. The first is their speciality: it counts twice towards their star rating
effectsWhat they do: a list of hooks
availabilitytierMax: you must be in this tier or better (1 = top) to hire one. followersMin: followers needed. Default: anyone
wagesTypical weekly wage for 1★ … 5★ (five numbers). Candidates ask around this, more if ambitious
maxHow many you may employ at once. Default 1; hiring into a full one-person role replaces the incumbent
candidatesCandidates in the market each month. Default 3
from"staff" (default) or "players": candidates are real players from lower tiers of the world, with their own name and face (the core practice partner uses it)
legacycoach, mentalCoach or fitnessCoach: saves from before roles existed convert that kind of staff to this role
movesWhether people in this role come with you when you move to another country. Default true; false (the core's practice partner, a player of the circuit left) means they stay behind: the contract ends with the move and the notice is paid, a line of the move's bill
orderDisplay order, lower first. Default 100

Skills#

Each staff member has a value of 1–20 in every skill their role lists. A role can use any of these:

coaching, psychology, fitness, physio, negotiation, contacts, reach, tact, media, logistics, finance, analysis, technical, practice

Star ratings come from the skills: roughly skill ÷ 4. In the market, skills are scouted as a range until the person joins you; an agent with good contacts narrows the ranges.

Effect hooks#

An effect is { "hook", "skill", "value", "area"? }. value is the full strength at skill 20: a member with skill 10 gives half. Staff with low morale work at 85%. The whole team's total on each hook is capped, so stacking staff can't break the game.

HookValue meansTeam capWhat it touches
trainingTraining gains bonus, 0.6 = +60%. With area (scoring, doubles, bull, fitness, mental) just that area, without it all0.8 per areaWeekly training
practicePractice quality: a bonus on scoring, doubles and bull training0.3Weekly training
coachCallCheckout know-how added to the coach's call (base 60, max 100)40The aim suggested in your matches
confidenceFloorConfidence never drops below this at the week's end35Confidence
moraleFloorMorale never drops below this at the week's end35Morale
recoveryPoints of confidence and morale regained a week while under 503Confidence, morale
fatigueRecoveryFatigue removed a week (fatigue runs 0–1)0.06Fatigue
injuryRecoveryInjuries heal this much faster (0.4 = 40% faster)0.5Injuries
injuryChanceChance an injury is caught early (one step milder, a minor one never happens), and less chance playing on one makes it worse0.5Injuries
followersExtra follower growth: 0.4 = every 10 new followers bring 4 more0.5Followers
imagePublic image gained a week, up to +40 (beyond that it's down to you)1.5Image
mediaSoftenNegative effects of interview and press answers shrink by this share0.6Interviews, press conferences
travelCostShare knocked off travel and hotel costs0.45Travel costs
travelFatigueFatigue removed when you arrive at an event0.08Fatigue
weeklyCostsShare knocked off weekly living costs0.3Living costs
revealFitAny value shows your kit's hidden fit as a number (−100 … 100). Under 0.7 it's rounded1Equipment
scoutingScouting notes on your next opponent in the event lobby: 0.1 the numbers, 0.35 their finishing, 0.6 their habits, 0.85 their form1Event lobby
sponsorOffersAdded to the monthly chance of a sponsor approach (0.45 by default)0.3Sponsor offers
offerVolumeChance that a sponsor approach brings a second offer1Sponsor offers
offerValueOffers open this much higher: 0.2 = +20%0.5Sponsor offers
negotiation0–1: raises a sponsor's hidden ceiling and patience, and how well "let your agent handle it" does1Negotiations
commissionMakes the role commission-based (an agent). The value is the cut an independent agent asks at skill 20 (half of it at skill 0)0.25The agent's cut
burnoutShare faster the workload recovers each week (0.3 = 30% faster)0.6Workload
travelLoadShare knocked off the workload of every trip0.6Workload

A role with a commission effect is an agent role: its people come from agencies, work mostly on commission and can be hired for no weekly wage at all.

An effect whose skill isn't in the role's skills does nothing; the loader warns about it.

The core roles#

Role (short name)SkillsDoesNeeds
Agent (agent)negotiation, contacts, reachMore and better sponsor offers, negotiates, takes a cutTier 4, 500 followers
Darts coach (coach)coaching, analysisScoring, doubles and bull training; the coach's call
Mental performance coach (mental-coach)psychology, tactMental training, confidence and morale floors, recovery; workload recovers faster
Fitness coach (fitness-coach)fitness, physioFitness training, fatigue recovery
Physio (physio)physio, fitnessCatches injuries early, faster healing and recovery
Social media manager (social-media)reach, mediaFollower growth, image
PR & media officer (press-officer)tact, media, contactsSoftens bad press, imageTier 4
Tour & travel manager (travel-manager)logistics, financeCheaper, lighter travel; arrive fresherTier 4
Accountant (accountant)finance, negotiationLower living costs
Performance analyst (analyst)analysis, technicalScouting notes, a little doubles trainingTier 4
Kit technician (kit-tech)technicalShows your kit's fit
Practice partner (practice-partner)practice, coachingPractice quality; a real player from the lower tiers

Hiring, contracts and morale#

How the game uses your roles, so you can balance them:

  • Standing (0–100) is how known you are: your tier, followers and ranking. Candidates want a minimum standing that rises with their stars, so the best people only listen once you're a name.
  • Team size is capped: 2 places to start, more as your standing grows and with a year's prize and sponsor income over £50,000 and £250,000.
  • Offers: you choose a weekly wage and a contract length. At or above their asking wage and a length they like, they sign. Close to it, they counter. Far below, they refuse. Every counter or refusal uses up their patience, and a lowball uses it faster; out of patience, they leave the market. Hiring needs four weeks' wages in the bank.
  • Release costs a quarter of the wages left on the contract, at least four weeks' notice (never more than what's left).
  • Morale drifts toward what their pay (against the role's wages), your results and your standing merit. Ambitious staff fret if you're below their level. Very unhappy staff may resign. At the end of a contract, happy staff renew, the ambitious with a small raise.

Staff tuning#

The numbers behind hiring (the team caps, standing, team size, independent agents and release costs) are staff settings: data/staff/settings.json holds one object (an array of them works too). Every field except id is optional, and a field left out keeps the game's number. The editor schema is the staff settings reference, and the Mod Studio edits them under Career rules → Staff tuning.

{
  "id": "acme.staff-settings",
  "hookCaps": { "travelCost": 0.6, "training": 1 },
  "capacity": { "base": 3, "max": 14 },
  "noticeWeeks": 8
}
FieldDefaultMeaning
coachRolecore.staff.coachThe staff role that is your darts coach: the one a junior's family pays for, whose view firms up your potential estimate
hookCapsthe "Team cap" column aboveThe most the whole team can add on each hook, either way. Merged per hook
standing.tiers72, 55, 38, 20, 5Standing points for being in tiers 1 to 5
standing.followers4Points per tenfold followers (10 followers: 4, 100: 8…)…
standing.followersMax20…up to this many
standing.rank[{ "top": 16, "points": 8 }, { "top": 64, "points": 4 }]Points for your Order of Merit rank: the first band your rank is inside applies
qualityStanding0, 12, 30, 48, 64The standing a 1★ … 5★ candidate wants before they'll talk
capacity.base2Team places: base + standing ÷ standingPer (rounded down) + income slots, kept within [min, max]
capacity.standingPer15
capacity.income[{ "from": 50000, "slots": 1 }, { "from": 250000, "slots": 2 }]Extra places for a year's prize, sponsor and exhibition income: the highest band reached applies
capacity.min, capacity.max2, 12
agents.independentShare0.3Share of agents in the market who work for no agency
agents.independentRetainer0.5An independent agent's weekly retainer, as a share of the role's usual wage
noticeWeeks4A release costs at least this many weeks' wages (a quarter of what's left on the contract otherwise, never more than it)

Standing is rounded and kept within 0–100. Several mods can supply staff settings: they apply in load order, later fields winning (per hook for hookCaps). Reusing another mod's id replaces its record; the core record is staffSettings:core.staff-settings.

Staff settings are copied into a career's save, and a career you load picks up the installed packs' settings (saves from before them play by the game's numbers).

Staff in stories#

Stories can check and change your team (see Stories):

  • Conditions: "hasStaff": "physio" (or a list, meaning any of them), "staffQualityMin": 4, "staffQualityMax": 2. "Has an agent" is "hasStaff": "agent".
  • Actions: { "type": "staffLeaves", "role": "practice-partner" } and { "type": "staffMorale", "role": "coach", "by": 10, "relationship": 5 }.
  • Text: {staff:physio} is your physio's name ("your physio" without one). {coach} still works.
{
  "id": "acme.story.nutritionist-chips",
  "trigger": "weekTick",
  "condition": { "chance": 0.01, "hasStaff": "nutritionist" },
  "title": "{staff:nutritionist} Bans the Chips",
  "body": "{staff:nutritionist} has found the chip shop receipts.",
  "choices": [
    {
      "id": "comply",
      "label": "Fine. Salad it is",
      "effects": { "fatigue": -0.05, "morale": -2 },
      "actions": [{ "type": "staffMorale", "role": "nutritionist", "by": 5 }]
    },
    { "id": "rebel", "label": "Chips are a human right", "effects": { "morale": 3 } }
  ]
}

Philosophies#

A coaching role can carry a philosophy: a way of working that suits some players and not others. Philosophies live in data/staff/philosophies.json (or data/staff/philosophies/), one array; patches target staffPhilosophy:<id>. The core pack ships four for the darts coach (Power scorer, Finisher, Technician, Old school), two for the mental coach (Calm head, Fire in the belly) and two for the fitness coach (Endurance, Recovery first). A role with no philosophies works as before.

{
  "id": "acme.philosophy.wall-of-sound",
  "role": "core.staff.mental-coach",
  "name": "Wall of sound",
  "blurb": "Practise with the crowd turned up. Nothing on the night should be louder than the practice room.",
  "areas": { "mental": 1.1 },
  "suits": [{ "attr": "crowdHandling", "when": "below", "weight": 1 }],
  "temperament": { "volatile": 0.3, "calm": -0.2 },
  "conflicts": ["core.philosophy.calm-head"]
}
FieldMeaning
roleThe staff role it belongs to. Every member of the role has one: a candidate comes with it, and a member from an older save gets one from a hash of their id
areasScales the role's training hooks per area (1.2 = 20% more scoring practice than the role's plain figure)
suitsWhat it suits: attr (any player attribute), when above (a player strong in it) or below (one weak in it, something to build), weight. Fit = Σ weight × ±(attribute − 50) / 50 …
temperament… plus a term for the player's temperament (calm, steady, volatile), clamped to −1 … 1
conflictsPhilosophies it cannot share a corner with: two members whose philosophies name each other clash

The fit scales that member's training hooks by 1 + staff.philosophy.fitRange × fit (then the team cap as always), sets their mood (a misfit is an unhappy coach) and nudges your own morale baseline. The Team page shows the philosophy, a word for the fit (suits you, a stretch, a poor fit) and, once they have been with you revealWeeks (or at once with an analyst's scouting), the exact figure.

Staff who act#

  • Arenas. A role's arena (performance or business) says which corner of the team it works in. Two members of one arena clash when their egos (1–20, from the id) add up to staff.clash.egoSum or their philosophies conflict, unless both get on with you better than calmAt. A clash costs both morale and a share of their effects, brings a letter and then a story (core.narrative.team-clash, condition flag: staff-clash, text variables {clashA} and {clashB}) whose choices set the flags staff-clash-choice:back-one, bang-heads or let-it-ride; the game reads the flag the next week. A role with no arena never clashes.
  • Mood with reasons. Each member's morale target now carries a misfit, a clash, the season goals missed at the last review and the rank lost since the season began (staff.leave.*). Under warnAt a letter says why; a resignation is noticeWeeks of notice at noticeEffect, and releasing someone on notice costs nothing. At the season's end an ambitious member (ambitionAt) who wanted a winner may leave (resultsChance).
  • Poaching. A slumping computer player inside staff.poach.rankMax may come for your darts coach (quality ≥ qualityMin, morale under moraleAt or ambition with your standing under theirs): a letter, a card on the Team page, and two answers. Match, and they may raise once more; let go, or say nothing by the deadline, and the coach joins them (a world story, and heat on a rivalry). The other way, a computer player's coach can be on the market (unsettledExits, marketMax, premium): hiring them takes them from the player. Real (named) players' coaches are never involved.
  • Computer players' coaches are people: the Player page shows their stars and philosophy once the world has given them one.

Texts: team.fit.*, team.mood.*, team.notice.*, team.leave.*, team.clash.*, team.poach.*, team.candidate.coach-of*, world.coach-poached.*, world.coach-hired.*. Numbers: the staff.* block in Tuning.

Old saves#

Careers started before staff roles existed keep their staff: a darts coach, mental coach or fitness coach becomes the core role with the same legacy kind, keeping their name, stars and wage, and gains skills, a personality and a one-year contract. Staff roles missing from a save are added from your installed packs when it loads.

Written for Darts Player Simulator 0.50.32. Built from the game's own schemas and its base pack.