Guide
Tours and the Tour Card
A career climbs five tiers, each with its own tour: the county circuit, the Prospects Tour, the Contender Tour, the Pro Circuit and the Elite Series. The Tour Card is the ladder between them. This page covers tours, their events, and the rules for winning, keeping and losing a card.
Tours#
Tours live in data/tours.json (or any file in data/tours/). Each file is a JSON array. The editor schema is the tours reference, and the Mod Studio edits them under Calendar → Tours. Patches target tour:<id>.
{
"id": "acme.tour.super-league",
"tier": 3,
"name": "Super League",
"shortName": "Super League",
"tierLabel": "Super League",
"colour": "#5b8def",
"logo": "assets/super-league.webp",
"description": "Weekend opens for the nearly-there.",
"rules": { "cardsAwarded": 4, "cardYears": 2, "orderOfMerit": "season" }
}| Field | Meaning |
|---|---|
id | Namespaced id |
tier | 1 (Elite Series) to 5 (county circuit). Who may enter a tour's events follows its tier (see Who plays where) |
name | Full name ("Contender Tour") |
shortName | Up to 16 characters, for tabs and badges |
tierLabel | Optional. What a player at this tier is called on badges |
role | Optional. What the tour is in the ladder, for the rules that need one tour in particular: "pro", "feeder" or "junior" (see Tour roles) |
colour | #rrggbb: the tour's colour on screens and the match stage |
logo | Optional image in your mod |
description | Optional |
board | Optional: "steel" or "soft" (soft-tip boards), the boards the tour's events are played on unless an event says otherwise. Steel when left out. The match itself plays as before for now. |
organisation | Optional. The id of the organisation that runs the tour (see organisations); its membership discount applies to the tour's entry fees |
rung | Optional. The tour's own rung on another pack's scene, so your mod joins a core scene's ladder without replacing the scene record: { "scene": "core.scene.eng", "role": "youth", "entry": "residents", "of": ["WAL", "SCO", "NIR"] }. The fields are a scene rung's (see scenes) plus scene, the scene's id. The rung goes after the scene's own rungs; a tour the scene already lists keeps the scene's rung. The loader warns when the scene is not there |
rules | See below |
rules field | Default | Meaning |
|---|---|---|
cardsAwarded | 0 | Tour Cards handed out at the end of each season to the top of this tour's season money (players who don't already have one) |
cardYears | 2 | Seasons a card won on this tour covers, from the next season: 2 means the next two |
orderOfMerit | season | The tour's own table on the Rankings screen (and for tour:<id> entry routes): season (this season's money), rolling2y (two years' money) or none (no table) |
requiresTourCard | false | Descriptive only: who may enter follows the tier |
countsTowards | none | Another tour's id: this tour's prize money also counts in that tour's season table (a series feeding its body's Order of Merit). The tour keeps its own table too |
replyToInvitations | false | The player's place in this tour's invited events (those with entryRoutes) comes as an invitation in the inbox, to accept or decline, invitations.sendDays before the event; they are not in until they accept, and an unanswered invitation lapses after invitations.replyDays (or the day before the event). The world's players are picked as before. The core pack's Replay Live Series uses it |
phases | none | The months a new phase of the season starts: [7] is January to June, then July to December. phase:<id> rankings read the phase in progress, and Tour Cards (below) are handed out at the end of each phase |
rollingList | none | A list kept beside the tour's own: { "name", "shortName"?, "adds"?: [tour ids], "windowDays": 365, "seeds": false }. It counts the prize money won in this tour's events and in those of the adds tours over the last windowDays days, counted back from today (not the calendar year). Routes read it as rolling:<this tour>, the Rankings screen shows it after the tour's lists, and with seeds: true it seeds the tour's own events instead of the Order of Merit. The core pack's Pro Circuit keeps the DSO Tour Order of Merit: Pro Circuit and Continental Series money over 365 days |
cards | none | Tour Cards this tour gives into another tour's events, at the end of each phase (or the season). See Tour Cards into another tour |
Cards are awarded from this season's money on the tour, whatever orderOfMerit says. Tours hand out their cards in tier order, lowest tier number first, so a player at the top of two tours takes the first one's card and the next player down gets the second's.
Tour Cards into another tour#
A tour can give its best players a card into another tour's events, as a junior body's top series gives places on a junior tour. Each entry of rules.cards:
{ "key": "elite", "name": "Youth Elite Tour Card", "top": 4, "months": 12, "into": "core.tour.junior", "benefit": "place", "free": true }| Field | Meaning |
|---|---|
key | The card's key within its tour |
name | The card's name on screens |
top | How many: the top of the tour's table for the phase just ended (the whole season without phases) |
months | How long it lasts from the end of that phase (default 12) |
into | The tour whose events it gets the holder into |
benefit | "place" (default): a place in every open event of that tour, whatever its standard (minLevel, maxLevel, band); "seed": the same, seeded at the top |
free | true: the card pays the holder's entry fee |
Nothing is stored in the save: the holders are worked out from the prize history, which keeps two seasons.
A tour can give more than one card, into different tours. A qualifying school is a tour of its own whose phase ends when the school does: the core pack's Junior Series Qualifying School (core.tour.junior-school, phases: [2]) plays two January days, and its table gives its top 8 a card into core.tour.junior. A series' champion can hold two cards under one name: a seed in the Junior Series, and a free place at the school (into: core.tour.junior-school, free: true).
The core tours#
| id | tier | Name | cardsAwarded | orderOfMerit |
|---|---|---|---|---|
core.tour.world | 1 | Elite Series | 0 | rolling2y |
core.tour.pro | 2 | Pro Circuit | 0 | rolling2y |
core.tour.challenge | 3 | Contender Tour | 2 | season |
core.tour.womens | 3 | Women's Tour | 0 | season |
core.tour.development | 4 | Prospects Tour | 2 | season |
core.tour.county | 5 | County & Open Circuit | 0 | none |
The Women's Tour shares tier 3 with the Contender Tour. Its events are open to women only ("restrict": { "gender": "f" }), and its table feeds the Women's Golden Mile Showdown and two World Championship places. When a tier has more than one tour, a player's tier is named after the first of them in the file.
To give the Contender Tour a third card: { "target": "tour:core.tour.challenge", "patch": { "rules": { "cardsAwarded": 3 } } }.
Events#
A tour's events are event templates in data/events.json or data/events/calendar/*.json: when they're played, the field, the formats, the prize money and who gets in. Each names its tour (tourId) and venue (venueId). The essentials:
| Field | Meaning |
|---|---|
month, week, days | When it's played (see Calendar) |
fieldSize, rounds | Players, and a match format per round from the first to the final |
entry | open, tourCard, invitation or ranking (with seeds) |
prizes | Prize money by finishing position: winner, runner-up, semi-finalist… |
entryFee | What you pay to enter |
ranked | Counts towards the Order of Merit (default true) |
tv, major | Televised; a major |
tags | Special meanings: qschool, worldChampionship, playersFinals, youth, county, local (a night for the regulars: a day trip, and the circuit's travelling players stay away), dayTrip (there and back in a day: the fare, no night away), homeClub (a night at your own club: no travel cost) |
online | true for an event played online, from home: no travel to pay and no trip on the workload, wherever the player lives, so the entry fee is its only cost; the players of its venue's country are no likelier to enter than anyone else. Its venue is the promoter's base, for the screens. Leave it out for a studio event, which travels as usual |
Qualifiers, entry routes, byes, staggered entry, group stages, league nights, team events and women's or youth events are all in Calendar and entry rules.
The Tour Card#
The game's career rules decide how cards are kept and how many Trial Week gives out. They're settings: data/career-rules.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 career rule sets reference; the Mod Studio edits them under Career rules → Tour Cards & economy.
{
"id": "acme.career-rules",
"tourCards": { "keepRank": 80, "holders": 144 },
"qschool": { "maxCards": 24 }
}| Field | Default | Meaning |
|---|---|---|
tourCards.holders | 128 | How many card holders the game aims for: Trial Week hands out enough cards to get back to it |
tourCards.keepRank | 64 | A card expiring this season is renewed if you finish inside this Order of Merit rank, and lost otherwise |
tourCards.renewYears | 2 | Seasons a renewed card covers |
tourCards.eliteRank | 32 | Card holders inside this Order of Merit rank play the tier 1 tour next season; the rest play tier 2 |
qschool.points | 10, 8, 6, 4, 3, 2, 1, 0 | Trial Week points by finishing position in each Trial Week event: winner, runner-up, semi-finals, quarter-finals, last 16… |
qschool.minCards | 8 | The fewest cards Trial Week hands out while places are free (never more than the free places; the core pack sets 0) |
qschool.maxCards | 32 | The most (the core pack sets 128, the tour's size, so Trial Week fills every free place) |
qschool.cardYears | 2 | Seasons a Trial Week card covers, the Trial Week season included |
qschool.schools | none | the schools, each { "id", "name", "firstStage": [event ids], "finalStage": [event ids], "dayCards": 2 } (see below) |
Several mods can supply career rules: they apply in load order, later fields winning. Reusing another mod's id replaces its record. Patches target careerRules:<id> (the core record is core.career-rules).
The season, card by card#
- Trial Week (January): everyone who plays a day tagged
qschoolhas Contender Tour status for the year. The cards are given once the last such day is done: exactly the places free on the tour (holdersless the players whose card runs this season), within [minCards, maxCards] but never more than the free places, so the tour never goes over its size. Retirements and cards lost at the season's end free places; there is no fixed count:- **Without
schools**, everyqschoolday awards points by finishing position, and the players without a card with the most points take the cards. - **With
schools** (; the core pack has Trial Week UK and Trial Week Europe), each school has its own days:- First stage. A school's first-stage days give no cards. Each sends its last
countplayers through to every final-stage day (qualifies.events, see calendar). A player who is through plays no more first-stage days. - Final-stage days. Each day's top
dayCardsplaces (2: the two finalists) win a card while places are free, and those players play no more days. - The rest of the free places are shared between the schools by how many players each had, then go down each school's order of merit (
points) over its final-stage days only. A pack'sqschool.meritCardscan cap them. - One school a season. A player in one school's days may not enter another's.
- Every school day still carries the
qschooltag.
- First stage. A school's first-stage days give no cards. Each sends its last
- **Without
- Season's end: cards expiring this season are renewed inside
keepRankand lost outside it. Then each tour withcardsAwardedgives cards to the top of its season money, lowest tier first, while places are free on the tour. - New season: card holders are split between tier 1 (inside
eliteRank) and tier 2; everyone else goes by level and age to tiers 3–5.
The season review's targets follow these numbers ("Finish in the top 64 to keep your Tour Card", "Or finish in the top 2 of the Contender Tour").
Who plays where#
Who may enter a tour's events follows its tier, unless the event says otherwise with restrict or entryRoutes (see Calendar):
| Tier | Who |
|---|---|
| 1 | Card holders; the biggest (128+) fields also take players with Contender Tour money |
| 2 | Card holders |
| 3 | Players without a card who have Contender Tour status (from Trial Week; computer players of tier 3 and above) |
| 4 | Anyone |
| 5 | Players without a card |
The big fields' qualifiers are drawn from the money of the tour with the role "feeder" (the core Contender Tour, core.tour.challenge).
Tour roles#
Four rules need one tour in particular. A tour says it is that tour with role; mark your own tour and the rule moves to it.
role | The rule | Without one |
|---|---|---|
"pro" | Its prize money seeds the 128-player fields, is the weekly ranking beside the Order of Merit, and a new career's seeded history is on it | core.tour.pro |
"feeder" | Its prize money decides which players without a card are called up to the big fields | core.tour.challenge |
"junior" | The under-18s' season: its goal ("Finish in the top 16…") and its place in the season review | core.tour.junior |
"veterans" | The over-45s' tour. Its rules' minAge is the age from which a career is a veteran's: the welcome letter, the first news and the creator's page name it, the season goal is its table (goals.veteransRank), the autoplayer plays its weekends before an open event of the same tier, and stories may say {veteransTour}. A tour with no minAge makes nobody a veteran | core.tour.seniors |
If several tours claim a role, the first in load order has it. The core pack marks its own four; to move a role, patch role off the core tour ("role": null) and set it on yours.
The economy#
The same data/career-rules.json record holds the money of a career under economy: the day job, living costs, what travel and hotels cost, what sponsors offer and how they bargain, and the earnings milestones. Every field is optional; a field left out keeps the game's number, and records merge field by field in load order (a list, like milestones, is replaced whole). Amounts are whole pounds: the game shows them in the player's currency (see Localisation).
{
"id": "acme.economy",
"economy": {
"dayJobWage": 350,
"livingCosts": 150,
"travel": { "maxNights": 4, "classes": { "comfort": { "cost": 1.4 } } },
"sponsors": { "valueScale": 0.3, "offerDays": 35 },
"negotiation": { "greed": 1.5 }
}
}| Field | Default | Meaning |
|---|---|---|
dayJobWage | 280 | The day job's pay a week, until you go full-time |
livingCosts | 120 | Living costs a week, before your team's cost savings (the weeklyCosts staff hook) |
travel.maxNights | 5 | Most days an event's bill counts (every event counts at least one). The fare and the cost of a night go by distance: see Travel fares |
travel.classes.<class>.cost | budget 0.7, standard 1, comfort 1.6 | The travel classes on the Finances screen: the bill is multiplied by cost |
travel.classes.<class>.ease | −0.15, 0, 0.15 | …and this share of a trip's travel load comes off (negative adds some; see Travel load) |
seedMoney | 320,000, 55,000, 6,000, 1,200, 0 | A new world's notional prize money over two years, by tier 1 to 5, scaled by each player's level: the first season's Order of Merit |
sponsors.valueScale | 0.25 | Share of a sponsor's baseValue it actually pays |
sponsors.rankBoost | top 1.5, perDecade 0.7, floor 0.2, unranked 0.2 | What your Order of Merit rank does to an offer: max(floor, top − log10(rank) × perDecade); unranked without a rank |
sponsors.offerDays | 28 | Days an offer stays open |
sponsors.contacts.weight | 3 | Your agency's contacts put their categories forward this many times as often |
sponsors.contacts.rivalChance | 0.15 | …and draw a rival bid this much more often |
negotiation.greed | 1.35 | A counter costing more than this times the sponsor's ceiling insults them: it costs two patience instead of one |
negotiation.bonusRisk | 1.15 | Title and TV-final bonuses are priced at this times their expected cost |
negotiation.targetCost.ease, .drop | 0.06, 0.15 | Easing or dropping one target costs the sponsor this share of their opening value |
milestones | 1,000 … 10,000,000 | Career prize money marks on the Finances screen's milestones ladder, lowest first |
A sponsor's offer is also multiplied by the player's nation's market (see Nations), and "home" for travel prices is anywhere in your nation's region (the core's is the UK).
Difficulties#
difficulty sets what each difficulty starts you with: every attribute's level (before the playing style and age adjust it) and the savings in the bank (cash, or childCash for a career that starts at school, younger than the tuning value create.juniorFullAge).
| Difficulty | level | cash | childCash |
|---|---|---|---|
easy | 60 | 2,500 | 400 |
normal | 54 | 1,200 | 200 |
hard | 48 | 500 | 60 |
{ "id": "acme.hard-times", "difficulty": { "hard": { "cash": 0 }, "normal": { "cash": 800 } } }Career paths#
paths sets the two career paths a new career chooses between in the creator: classic (Classic Career) and unknown (Unknown Potential Career). A path sets the new player's hidden potential in place of the difficulty, which then sets only the start level and the savings. Careers made without a path (by tools, or before paths existed) keep the older formula.
| Field | Meaning |
|---|---|
top | the top band, [low, high] |
topChance | the chance (0 to 1) a career lands in the top band; 1 means always |
floor, peak | below the top band: the lowest a ceiling can be, and where most land (a triangular spread up to top's low end) |
quick | true: the player always learns at the top of create.developmentRange |
veteranFrom, veteranTop | from this starting age the ceiling is at least the veteranTop band |
On both paths the ceiling falls by the tuning value create.potentialTaper for each year past 21, and it never goes over 95. The draws come from the career's own stream (its seed plus :path-potential), so a path changes nothing else a career rolls.
| Path | top | topChance | floor | peak | quick | veteranFrom | veteranTop |
|---|---|---|---|---|---|---|---|
classic | 90 to 95 | 1 | yes | 45 | 82 to 86 | ||
unknown | 90 to 95 | 0.125 | 72 | 80 | no |
{ "id": "acme.long-shots", "paths": { "unknown": { "topChance": 0.05, "floor": 60 } } }What's at stake in a match#
stakes sets how much a match matters to the players (0 to 1: nerves and the big-stage effect in the match engine): base + progress × how far into the event (the final is 1; a group-stage match counts as group, a league night 0.2 to 0.5) + major at a major + tv on TV + rivalry × how fierce a rivalry is, at most 1.
| Field | Default |
|---|---|
base | 0.15 |
progress | 0.45 |
major | 0.25 |
tv | 0.1 |
rivalry | 0.25 |
group | 0.3 |
Saves#
A career keeps the tours and career rules it was created with. Career rules (the economy included) follow the installed packs when a career is loaded (saves from before them play by the game's numbers, which the core pack's data/career-rules.json holds). The difficulty's starting savings and seedMoney only matter when a career starts.
The example-rules mod gives the Contender Tour a third card, keeps cards inside the top 72 and caps Trial Week at 24 cards.