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 examplecareerRules: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.
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
id | id | Yes | Namespaced id, e.g. "core.player.rory-calder" | |
tourCards | object | |||
tourCards.holders | whole number, 1 to 2000 | How many Tour Card holders the game aims for: Q-School tops the list up to it (default 128). | ||
tourCards.keepRank | whole number, 0 to 2000 | Expiring cards are renewed for players inside this Order of Merit rank (default 64). | ||
tourCards.renewYears | whole number, 1 to 4 | Seasons a renewed card covers (default 2). | ||
tourCards.eliteRank | whole number, 0 to 2000 | Card holders inside this Order of Merit rank play the tier 1 tour, the rest tier 2 (default 32). | ||
tourCards.meritResetAfterQSchool | true or false | When 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. | ||
qschool | object | |||
qschool.points | list, 1 to 16 items | Points by finishing position: winner, runner-up, semi-finals, quarter-finals, … (default 10, 8, 6, 4, 3, 2, 1, 0). | ||
qschool.minCards | whole number, 0 to 500 | Fewest cards Q-School hands out, however full the Tour is (default 8). | ||
qschool.maxCards | whole number, 0 to 500 | Most cards Q-School hands out (default 32). | ||
qschool.cardYears | whole number, 1 to 4 | Seasons a Q-School card covers, this one included (default 2). | ||
qschool.schools | list, up to 8 items | |||
qschool.schools[].id | text, up to 40 characters | Yes | ||
qschool.schools[].name | text, up to 60 characters | Yes | ||
qschool.schools[].firstStage | list, up to 16 items | [] | ||
qschool.schools[].finalStage | list, 1 to 16 items | Yes | ||
qschool.schools[].dayCards | whole number, 0 to 16 | 2 | ||
qschool.meritCards | whole number, 0 to 500 | |||
qschool.meritBy | one of the options | Options: points, wins. | ||
qschool.fee | number, at least 0 | |||
qschool.freeEntry | object | |||
qschool.freeEntry.tours | list, 1 to 32 items | Yes | ||
qschool.freeEntry.top | whole number, 1 to 128 | Yes | ||
economy | object | Money 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.dayJobWage | whole number, 0 to 100,000,000 | The day job's pay a week, until you go full-time (default 280). | ||
economy.livingCosts | whole number, 0 to 100,000,000 | Living costs a week, before your team's cost savings (default 120). | ||
economy.travel | object | Travel 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.maxNights | whole number, 1 to 30 | Most nights an event's bill counts (default 5). | ||
economy.travel.classes | object | The travel classes you can pick on the Finances screen. | ||
economy.travel.classes.budget | object | |||
economy.travel.classes.budget.cost | number, 0 to 10 | |||
economy.travel.classes.budget.ease | number, -0.5 to 0.9 | |||
economy.travel.classes.standard | object | |||
economy.travel.classes.standard.cost | number, 0 to 10 | |||
economy.travel.classes.standard.ease | number, -0.5 to 0.9 | |||
economy.travel.classes.comfort | object | |||
economy.travel.classes.comfort.cost | number, 0 to 10 | |||
economy.travel.classes.comfort.ease | number, -0.5 to 0.9 | |||
economy.seedMoney | list | A 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.tax | object | Income 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.bands | list, up to 10 items | |||
economy.tax.bands[].from | whole number, 0 to 100,000,000 | Yes | ||
economy.tax.bands[].rate | number, 0 to 1 | Yes | ||
economy.sponsors | object | What sponsors offer. | ||
economy.sponsors.valueScale | number, 0 to 10 | Share of a brand's baseValue a sponsor actually pays (default 0.25). | ||
economy.sponsors.rankBoost | object | What 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.top | number, 0 to 10 | |||
economy.sponsors.rankBoost.perDecade | number, 0 to 10 | |||
economy.sponsors.rankBoost.floor | number, 0 to 10 | |||
economy.sponsors.rankBoost.unranked | number, 0 to 10 | |||
economy.sponsors.offerDays | whole number, 1 to 365 | Days an offer stays open (default 28). | ||
economy.sponsors.contacts | object | Your 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.weight | number, 1 to 20 | |||
economy.sponsors.contacts.rivalChance | number, 0 to 1 | |||
economy.sponsors.minOffer | number, 0 to 1,000,000 | The 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.negotiation | object | How sponsors bargain when you counter an offer. | ||
economy.negotiation.greed | number, 1 to 5 | A counter costing more than this times their ceiling insults them: two patience instead of one (default 1.35). | ||
economy.negotiation.bonusRisk | number, 0 to 5 | Title and TV final bonuses are priced at this times their expected cost (default 1.15). | ||
economy.negotiation.targetCost | object | Easing or dropping one target costs this share of their opening value (default 0.06 and 0.15). | ||
economy.negotiation.targetCost.ease | number, 0 to 1 | |||
economy.negotiation.targetCost.drop | number, 0 to 1 | |||
economy.milestones | list, 1 to 30 items | Career prize money marks on the Finances screen's milestones ladder, lowest first. | ||
difficulty | object | Each difficulty's starting player: every attribute's level, and the savings in the bank. | ||
difficulty.easy | object | |||
difficulty.easy.level | number, 20 to 99 | |||
difficulty.easy.cash | whole number, 0 to 100,000,000 | |||
difficulty.easy.childCash | whole number, 0 to 100,000,000 | |||
difficulty.normal | object | |||
difficulty.normal.level | number, 20 to 99 | |||
difficulty.normal.cash | whole number, 0 to 100,000,000 | |||
difficulty.normal.childCash | whole number, 0 to 100,000,000 | |||
difficulty.hard | object | |||
difficulty.hard.level | number, 20 to 99 | |||
difficulty.hard.cash | whole number, 0 to 100,000,000 | |||
difficulty.hard.childCash | whole number, 0 to 100,000,000 | |||
paths | object | The 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.classic | object | |||
paths.classic.top | pair [number, 0 to 99, number, 0 to 99] | |||
paths.classic.topChance | number, 0 to 1 | |||
paths.classic.floor | number, 0 to 99 | |||
paths.classic.peak | number, 0 to 99 | |||
paths.classic.quick | true or false | |||
paths.classic.veteranFrom | whole number, 10 to 99 | |||
paths.classic.veteranTop | pair [number, 0 to 99, number, 0 to 99] | |||
paths.unknown | object | |||
paths.unknown.top | pair [number, 0 to 99, number, 0 to 99] | |||
paths.unknown.topChance | number, 0 to 1 | |||
paths.unknown.floor | number, 0 to 99 | |||
paths.unknown.peak | number, 0 to 99 | |||
paths.unknown.quick | true or false | |||
paths.unknown.veteranFrom | whole number, 10 to 99 | |||
paths.unknown.veteranTop | pair [number, 0 to 99, number, 0 to 99] | |||
stakes | object | How 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.base | number, 0 to 1 | |||
stakes.progress | number, 0 to 1 | |||
stakes.major | number, 0 to 1 | |||
stakes.tv | number, 0 to 1 | |||
stakes.rivalry | number, 0 to 1 | |||
stakes.group | number, 0 to 1 | The progress a group-stage match counts as. | ||
eyesightSpread | number, 0 to 10 | A 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
}
}