Reference

Career rule sets

Rules of the career ladder that aren't one tour's: Tour Card renewals, the Q-School top-up and who plays on the top tier; the economy; the difficulties; and what's at stake in a match. Each tour's own card awards are its rules.cardsAwarded and rules.cardYears. Every field is optional; records apply in load order, later fields winning. See Tours and the Tour Card.

Content type
careerRules
Files
data/career-rules.json
Shape
One settings object (a file may hold the object itself)
Patch target
careerRules:<id>, for example careerRules:core.career-rules
In the base game
1 record
Guide
Tours and the Tour Card

Fields#

Indented fields belong to the field above them. [] marks the items of a list. A field that is not required may be left out; the default is used.

FieldTypeRequiredDefaultNotes
ididYesNamespaced id, e.g. "core.player.rory-calder"
tourCardsobject
tourCards.holderswhole number, 1 to 2000How many Tour Card holders the game aims for: Q-School tops the list up to it (default 128).
tourCards.keepRankwhole number, 0 to 2000Expiring cards are renewed for players inside this Order of Merit rank (default 64).
tourCards.renewYearswhole number, 1 to 4Seasons a renewed card covers (default 2).
tourCards.eliteRankwhole number, 0 to 2000Card holders inside this Order of Merit rank play the tier 1 tour, the rest tier 2 (default 32).
tourCards.meritResetAfterQSchooltrue or falseWhen Q-School ends, everyone outside the top keepRank of the Order of Merit who is not in the second year of a Tour Card starts the Order of Merit again from nothing; what they win from then on counts as normal.
qschoolobject
qschool.pointslist, 1 to 16 itemsPoints by finishing position: winner, runner-up, semi-finals, quarter-finals, … (default 10, 8, 6, 4, 3, 2, 1, 0).
qschool.minCardswhole number, 0 to 500Fewest cards Q-School hands out, however full the Tour is (default 8).
qschool.maxCardswhole number, 0 to 500Most cards Q-School hands out (default 32).
qschool.cardYearswhole number, 1 to 4Seasons a Q-School card covers, this one included (default 2).
qschool.schoolslist, up to 8 items
qschool.schools[].idtext, up to 40 charactersYes
qschool.schools[].nametext, up to 60 charactersYes
qschool.schools[].firstStagelist, up to 16 items[]
qschool.schools[].finalStagelist, 1 to 16 itemsYes
qschool.schools[].dayCardswhole number, 0 to 162
qschool.meritCardswhole number, 0 to 500
qschool.meritByone of the optionsOptions: points, wins.
qschool.feenumber, at least 0
qschool.freeEntryobject
qschool.freeEntry.tourslist, 1 to 32 itemsYes
qschool.freeEntry.topwhole number, 1 to 128Yes
economyobjectMoney in and out of a career: the day job, living costs, travel, the sponsors' offers and how they negotiate, and the earnings milestones. Amounts are whole pounds. See Tours and the Tour Card.
economy.dayJobWagewhole number, 0 to 100,000,000The day job's pay a week, until you go full-time (default 280).
economy.livingCostswhole number, 0 to 100,000,000Living costs a week, before your team's cost savings (default 120).
economy.travelobjectTravel and hotels for an event: the fare and the nights away are the travel settings' (data/travel.json, by distance). Here: the most nights a bill counts, and the classes.
economy.travel.maxNightswhole number, 1 to 30Most nights an event's bill counts (default 5).
economy.travel.classesobjectThe travel classes you can pick on the Finances screen.
economy.travel.classes.budgetobject
economy.travel.classes.budget.costnumber, 0 to 10
economy.travel.classes.budget.easenumber, -0.5 to 0.9
economy.travel.classes.standardobject
economy.travel.classes.standard.costnumber, 0 to 10
economy.travel.classes.standard.easenumber, -0.5 to 0.9
economy.travel.classes.comfortobject
economy.travel.classes.comfort.costnumber, 0 to 10
economy.travel.classes.comfort.easenumber, -0.5 to 0.9
economy.seedMoneylistA new world's notional prize money over the last two years, by tier 1 to 5 (sets the first season's Order of Merit; default 320,000, 55,000, 6,000, 1,200 and 0), scaled by each player's level.
economy.taxobjectIncome tax, taken when a season ends from what it earned (prize money, sponsors, exhibitions, business income, the day job): each band's rate applies to the part of the season's income above its from, up to the next band (no bands: no tax).
economy.tax.bandslist, up to 10 items
economy.tax.bands[].fromwhole number, 0 to 100,000,000Yes
economy.tax.bands[].ratenumber, 0 to 1Yes
economy.sponsorsobjectWhat sponsors offer.
economy.sponsors.valueScalenumber, 0 to 10Share of a brand's baseValue a sponsor actually pays (default 0.25).
economy.sponsors.rankBoostobjectWhat the Order of Merit does to your worth: max(floor, top − log10(rank) × perDecade), and unranked without a ranking (default 1.5, 0.7, 0.2 and 0.2).
economy.sponsors.rankBoost.topnumber, 0 to 10
economy.sponsors.rankBoost.perDecadenumber, 0 to 10
economy.sponsors.rankBoost.floornumber, 0 to 10
economy.sponsors.rankBoost.unrankednumber, 0 to 10
economy.sponsors.offerDayswhole number, 1 to 365Days an offer stays open (default 28).
economy.sponsors.contactsobjectYour agency's contacts: their categories come forward weight times as often, and draw a rival bid rivalChance more often (default 3 and 0.15).
economy.sponsors.contacts.weightnumber, 1 to 20
economy.sponsors.contacts.rivalChancenumber, 0 to 1
economy.sponsors.minOffernumber, 0 to 1,000,000The smallest deal a sponsor bothers to offer or renew, a season (default 0, none; the core pack sets 250). Below it no approach is made, and a running deal steps aside at the season's end.
economy.negotiationobjectHow sponsors bargain when you counter an offer.
economy.negotiation.greednumber, 1 to 5A counter costing more than this times their ceiling insults them: two patience instead of one (default 1.35).
economy.negotiation.bonusRisknumber, 0 to 5Title and TV final bonuses are priced at this times their expected cost (default 1.15).
economy.negotiation.targetCostobjectEasing or dropping one target costs this share of their opening value (default 0.06 and 0.15).
economy.negotiation.targetCost.easenumber, 0 to 1
economy.negotiation.targetCost.dropnumber, 0 to 1
economy.milestoneslist, 1 to 30 itemsCareer prize money marks on the Finances screen's milestones ladder, lowest first.
difficultyobjectEach difficulty's starting player: every attribute's level, and the savings in the bank.
difficulty.easyobject
difficulty.easy.levelnumber, 20 to 99
difficulty.easy.cashwhole number, 0 to 100,000,000
difficulty.easy.childCashwhole number, 0 to 100,000,000
difficulty.normalobject
difficulty.normal.levelnumber, 20 to 99
difficulty.normal.cashwhole number, 0 to 100,000,000
difficulty.normal.childCashwhole number, 0 to 100,000,000
difficulty.hardobject
difficulty.hard.levelnumber, 20 to 99
difficulty.hard.cashwhole number, 0 to 100,000,000
difficulty.hard.childCashwhole number, 0 to 100,000,000
pathsobjectThe career paths a new career chooses between (card #351): classic (Classic Career) and unknown (Unknown Potential Career). Each sets the new player's hidden potential in place of the difficulty: top [low, high] and topChance (0-1) for the top band, floor and peak for the spread below it, quick to always learn quickest, and veteranFrom with veteranTop for an older start.
paths.classicobject
paths.classic.toppair [number, 0 to 99, number, 0 to 99]
paths.classic.topChancenumber, 0 to 1
paths.classic.floornumber, 0 to 99
paths.classic.peaknumber, 0 to 99
paths.classic.quicktrue or false
paths.classic.veteranFromwhole number, 10 to 99
paths.classic.veteranToppair [number, 0 to 99, number, 0 to 99]
paths.unknownobject
paths.unknown.toppair [number, 0 to 99, number, 0 to 99]
paths.unknown.topChancenumber, 0 to 1
paths.unknown.floornumber, 0 to 99
paths.unknown.peaknumber, 0 to 99
paths.unknown.quicktrue or false
paths.unknown.veteranFromwhole number, 10 to 99
paths.unknown.veteranToppair [number, 0 to 99, number, 0 to 99]
stakesobjectHow much a match matters to the players (0–1: nerves, the big-stage effect): base + progress × how far into the event (0.3 in a group, a league night 0.2–0.5) + major + tv + rivalry × how fierce the rivalry is, at most 1.
stakes.basenumber, 0 to 1
stakes.progressnumber, 0 to 1
stakes.majornumber, 0 to 1
stakes.tvnumber, 0 to 1
stakes.rivalrynumber, 0 to 1
stakes.groupnumber, 0 to 1The progress a group-stage match counts as.
eyesightSpreadnumber, 0 to 10A new player's eyesight varies by this much (a standard deviation, seeded per career) around 91, or 82 over 40 (default 0: exactly 92, or 82).

Example#

A record from the base game’s data/career-rules.json, shortened.

{
  "id": "core.career-rules",
  "eyesightSpread": 3,
  "tourCards": {
    "holders": 128,
    "keepRank": 64,
    "renewYears": 1,
    "eliteRank": 32,
    "meritResetAfterQSchool": true
  },
  "qschool": {
    "fee": 475,
    "freeEntry": {
      "tours": [
        "core.tour.womens",
        "core.tour.norrsken-pro",
        /* … 6 more */
      ],
      "top": 8
    },
    "points": [
      10,
      8,
      /* … 6 more */
    ],
    "minCards": 0,
    "maxCards": 128,
    "cardYears": 2,
    "meritBy": "wins",
    "schools": [
      {
        "id": "uk",
        "name": "Trial Week UK",
        "firstStage": [
          "core.event.qschool-uk-first-1",
          "core.event.qschool-uk-first-2",
          /* … 1 more */
        ],
        "finalStage": [
          "core.event.qschool-uk-final-1",
          "core.event.qschool-uk-final-2",
          /* … 2 more */
        ],
        "dayCards": 2
      },
      {
        "id": "eu",
        "name": "Trial Week Europe",
        "firstStage": [
          "core.event.qschool-eu-first-1",
          "core.event.qschool-eu-first-2",
          /* … 1 more */
        ],
        "finalStage": [
          "core.event.qschool-eu-final-1",
          "core.event.qschool-eu-final-2",
          /* … 2 more */
        ],
        "dayCards": 2
      }
    ]
  },
  "economy": {
    "dayJobWage": 280,
    "livingCosts": 120,
    "travel": {
      "maxNights": 5,
      "classes": {
        "budget": {
          "cost": 0.7,
          "ease": -0.15
        },
        "standard": {
          "cost": 1,
          "ease": 0
        },
        "comfort": {
          "cost": 1.6,
          "ease": 0.15
        }
      }
    },
    "seedMoney": [
      320000,
      55000,
      /* … 3 more */
    ],
    "tax": {
      "bands": [
        {
          "from": 20000,
          "rate": 0.2
        },
        {
          "from": 50000,
          "rate": 0.4
        },
        /* … 1 more */
      ]
    },
    "sponsors": {
      "valueScale": 0.25,
      "rankBoost": {
        "top": 1.5,
        "perDecade": 0.7,
        "floor": 0.2,
        "unranked": 0.2
      },
      "offerDays": 28,
      "contacts": {
        "weight": 3,
        "rivalChance": 0.15
      },
      "minOffer": 250
    },
    "negotiation": {
      "greed": 1.35,
      "bonusRisk": 1.15,
      "targetCost": {
        "ease": 0.06,
        "drop": 0.15
      }
    },
    "milestones": [
      1000,
      5000,
      /* … 10 more */
    ]
  },
  "difficulty": {
    "easy": {
      "level": 42,
      "cash": 2500,
      "childCash": 400
    },
    "normal": {
      "level": 36,
      "cash": 1200,
      "childCash": 200
    },
    "hard": {
      "level": 30,
      "cash": 500,
      "childCash": 60
    }
  },
  "paths": {
    "classic": {
      "top": [
        90,
        95
      ],
      "topChance": 1,
      "quick": true,
      "veteranFrom": 45,
      "veteranTop": [
        82,
        86
      ]
    },
    "unknown": {
      "top": [
        90,
        95
      ],
      "topChance": 0.125,
      "floor": 72,
      "peak": 80,
      "quick": false
    }
  },
  "stakes": {
    "base": 0.15,
    "progress": 0.45,
    "major": 0.25,
    "tv": 0.1,
    "rivalry": 0.25,
    "group": 0.3
  }
}

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