Guide

Calendar and entry rules

How to describe a real tour calendar: when events happen, who gets in, qualifiers, byes, staggered entry, knockout league nights, and women's or youth events. Every field on this page is optional. An event without any of them works exactly as before.

Events live in data/events.json or data/events/calendar/*.json. To change a core event, patch it by id (data/patches/*.patch.json, "target": "event:core.event.x"). Arrays such as rounds, prizes and entryRoutes are replaced whole by a patch. The editor schema is the events reference.

Dates#

FieldMeaning
month1–12
week1–5: the n-th weekday of the month (week 5 of a short month rolls into the next)
weekday0 = Sunday … 1 = Monday … 5 = Friday … 6 = Saturday. Default: Saturday
wholeWeekOptional. true: the event keeps to the real week of its Saturday, even when that week begins in the month before (see below)
daysLength. The human can't be in two events on overlapping days
followsOptional. Another event's id: this one starts followsDays days after that event's start (default 0: the same day, at the same venue), whatever its own month and week say. On the same day the two do not clash: a morning round robin and an afternoon knockout can both be entered. Without the event it follows that season (a mod removed it, or it is discontinued), it keeps to its own month, week and weekday
followsDaysOptional, 0–28 (default 0)
opensSeasonOptional. true: the event starts the day its season opens, the day after the last season's final across New Year (1 January without one), whatever month and week say (they only order it). With weekday, the first such weekday on or after that day: Trial Week is the first Monday on or after 4 January
endsInNewYearOptional, { "day": 3, "weekday"?: 0–6 }. For an event that ends its season across New Year (a world championship): its last day is day January of the next year (with weekday, the first such weekday on or after it), and it starts days − 1 days before. The season ends after it; month and week only order it
withinOptional. Another event's id: this one is played on a day of that event's own days, at its hall (the youth final on the Circuit Finals' Sunday). A player in both plays both: that day the host's matches come first, then this event; neither clashes with the other. The date still comes from follows (or month and week); dated outside the host's days, or without the host, the usual clash rules apply

Any number of events can share a week. Pro Circuit events on Monday and Tuesday and a European Tour event from Friday to Sunday are simply three templates with weekday 1, 2 and 5. A tour may hold two events on one date at different venues; each has its own field, a computer player drawn into one is not drawn into the other, and the player may enter one of them. One hall cannot hold two fields at once, so an event at a venue another event of its tour already has that day moves on a day (then two, and so on). Two events of the same tour on the same default Saturday still run Saturday and Sunday, as a weekend; a third stays on the Saturday at its own venue. An event whose template names its weekday stays on that day unless its venue is taken. The loader warns when a tour puts three or more events at one venue on one Saturday, since the third then plays on a weekday. A week is its Saturday's: week 1 is the month's first Saturday, and a weekday event sits around that Saturday (Monday to Friday before it, Sunday after). When the Monday of that week falls in the month before, the week's weekday events move a week later, Sunday too, so every event stays in its month (a "week 1, Monday" of April 2026 is 6 April); its weekdays then share days with week 2. An event with wholeWeek: true keeps to its Saturday's week instead and simply sits in the month before (a "week 1, Monday" of April 2026 on 30 March), so a Monday-to-Saturday series has a week of its own for every week; only in January, where that would be the season before, does its week move, so January's week 1 shares its weekdays with week 2 (such a series should start in January's week 2). An event over several days that you are not in and that is not on television is played out on its last day (a studio week on its finals night).

{ "id": "rw.event.pc1", "month": 2, "week": 1, "weekday": 1, "days": 1, "…": "…" }

Brackets and byes#

rounds lists one match format per round, from the first round to the final.

  • Power-of-two field: rounds = log2(fieldSize), as before (128 → 7 rounds).
  • Any other field: it's drawn into the next power of two, and the byes go to the top seeds. A 48-player field in a 64 bracket (6 rounds) gives seeds 1–16 a bye into round 2. A 96-player World Championship in a 128 bracket (7 rounds) gives 32 seeds a bye.
  • A bye isn't a match. It isn't recorded, and it doesn't count in stats or form.
  • Round names follow the field. Rounds with more places than players are "Round 1", "Round 2"…, then "Last 32", "Last 16", "Quarter-finals", "Semi-finals" and "Final". The bracket screens hide byes in these draws, so round 1 shows only the matches actually played.

Seeds come from seeds (the best N on the Order of Merit), or from routes marked seed: true (below).

Entry routes: entryRoutes#

When an event has entryRoutes, its field is filled route by route, in order. Each route skips players who are already in, and nothing goes past fieldSize. Without entryRoutes, the tour tier's built-in selection is used. A pairs event (teams.kind: "pairs") may name routes too: they fill its hat of single players (fieldSize × teams.size of them), which is then drawn into pairs. Nations and squads events pick their own players and take no routes.

KindFieldsBrings in
rankingranking, top, from?, within?, cardHolders?The best top players on a ranking who aren't in yet. from starts at that rank. within: true only looks at ranks from…from+top−1. cardHolders: true counts Tour Card holders only; cardHolders: false counts only players without one (a qualifying school's exempt list)
winnersevents (template ids), within? (season or 12months), top?Winners of those events: this season (default) or in the 12 months before this event, most recent first
qualifierevent (a qualifier template id)Everyone who came through that qualifier this season (see below)
poolpool, nations?, count, pickcount simulated qualifiers from a pool
playersidsNamed invitations
fillpool, nations?, pickTops the field up to fieldSize
formranking, pool, topThe top players in form among the best pool of a ranking (players the ranking does not list follow the listed ones, strongest first). An invitation on form: the core pack's Replay studio weeks take the best twelve among the Order of Merit's top 150

All routes also take:

  • seed: true: the players the route brings in are seeded, in route order. The first seeded route's players are seeds 1, 2, …, and the next seeded route continues the numbering.
  • label: how the route is described to the player, e.g. "Host nation qualifier".

Rankings (ranking):

  • "oom": the two-year Order of Merit (ranked events only).
  • "tour:<tourId>": that tour's own table. It covers two years if the tour's rules.orderOfMerit is rolling2y, otherwise this season. It counts all of that tour's prize money, ranked or not.
  • "season:<tourId>": this season's money on that tour.
  • "rolling:<tourId>": that tour's rules.rollingList (see Tours and the Tour Card): its and other tours' money over a rolling window of days.

Pools (pool): cardHolders, nonCardHolders, women, youth (under 24 on the start date), any. Add nations: ["GER", "AUT"] for host-nation, Nordic & Baltic or East European qualifiers.

Picks (pick): ranking (best on the Order of Merit), level (strongest), weighted (random, but stronger players are likelier: ten points of level make a player about seven times as likely). Use weighted for a qualifier where outsiders sometimes get through.

The human gets in through ranking, winners, qualifier, players and form routes. pool and fill routes stand for qualifiers the human didn't play, so they never pick the human. An event with routes is automatic: the human doesn't enter it. The calendar explains the route, for example "Qualified: Pro Circuit Order of Merit top 16", or what's missing: "Enter the Tour Card Holder Qualifier to earn a place, or needs top 16 on the Pro Circuit Order of Merit (you're #161)".

With entryRoutes, the tier's Tour Card rules don't apply, but restrict does (see below). If no route has seed: true, seeds seeds the best N of the field on the Order of Merit.

Qualifiers: qualifies#

A qualifier is an ordinary knockout that stops when count players are left. Those players are "Qualified" for the event template's event this season, and that event takes them through its { "kind": "qualifier" } route.

  • The draw is count sections of 2^rounds slots, and each section winner qualifies. So rounds = ceil(log2(fieldSize / count)): a field of 128 for 32 places plays 2 rounds, and a field of 128 for 24 places plays 3.
  • The human enters it like an open event, if they're eligible. Players already in the target event through its ranking, winners or players routes don't play the qualifier: the Pro Circuit top 16 don't play the TCHQ.
  • Qualifiers get the placing "Qualified" and prizes[0] (use 0 for none). They don't get a title. Use "ranked": false.
  • When the human comes through, the inbox says "You've qualified for …" and they're placed in the target automatically.
  • Schedule the qualifier before its target, in the same season. If the target starts first, its qualifier places are simulated from the qualifier's eligible players.
  • The target must list { "kind": "qualifier", "event": "<qualifier id>" }, and the qualifier's qualifies.event must name the target. The loader checks both.
  • A staged event, whose early rounds are played on one day and whose final on a later one (the Rising Stars Championship and its final at the Circuit Finals), is a qualifier for its final with "earlyRounds": true in qualifies. The final's winner takes the title; the early rounds give none. An edition of the early rounds played in a season with no final (in a career from before the event was staged) was the whole event, and its winner keeps the title.
  • A qualifier can feed several events at once with "events": [ids] in place of event ( a qualifying school's first-stage day feeds each of its final-stage days). Its last count players are in every one of them, and each must list the qualifier route.

Staggered entry: entryStages#

For events like the UK Open, where higher-ranked players join in later rounds:

"entryStages": [{ "top": 32, "round": 4 }, { "top": 32, "round": 3 }, { "top": 32, "round": 2 }]

The field is ordered by seed first, then by Order of Merit. The first stage's top players start in its round, the next stage's players start in its round, and so on. Everyone else starts in round 1. Staged players meet the winners of the previous round.

With stages, the bracket has 2^rounds slots, and rounds must leave room. Work back from the final: each round has twice the places not taken by its joiners. For the UK Open (160 players: 64 in round 1, then 32 joining in each of rounds 2–4), that's 9 rounds, played as 32, 32, 32 and 32 matches, then the last 32 onwards. The loader explains any stage that doesn't fit.

Who may play: restrict#

"restrict": { "gender": "f" }
"restrict": { "maxAge": 23 }
"restrict": { "tourCard": true }
"restrict": { "nations": ["GER", "AUT"], "minAge": 16 }
  • gender: "m" or "f".
  • maxAge / minAge: age on the start date. maxAge: 23 means under-24s.
  • minLevel: the lowest overall rating allowed, for everyone (the core pack's county events use 50: you play the pub league until you reach it).
  • maxLevel: the highest overall rating among the computer's players who turn up (a pub night's regulars). The human player may always enter.
  • band: an ability band. The computer's players who turn up are near the human player's rating, from half this many points below it to one and a half times this many above (the human may always enter) ("band": 8: the core pack's Junior Club Nights and Step-Up Days). Combine it with maxAge for junior events. With maxLevel as well (the core pack's Junior Starter Circuit and Academy Series) both apply: without the band a player just under the cap is the best in every field and wins most of them.
  • nations: nationality codes.
  • tourCard: true means card holders only, false means non-holders only.
  • pathwayAge: the way in under minAge. A player this old or older gets in with a win in one of the event's winners routes' events inside that route's window, or with an overall rating of at least the tuning value create.prodigyLevel. The core pack's Replay weeks are for eighteen and over, sixteen with a qualifier win.
  • maxPerYear: at most this many of the tour's events in a calendar year, counted from the entries in the tour's earlier events of the year (the Replay weeks: four). The calendar tells the human "At most 4 of this series’ weeks in a year".
  • unsigned: true means only players without a darts manufacturer's deal (the human: no darts sponsor; a computer player: no darts brand).
  • retired: true means retired players may enter as well, by the event's other rules (the core pack's Replay Heritage Week: the retired greats and the over-50s). Without it no retired player enters anything.
  • exclude: players placed in the top top of a ranking may not enter, e.g. promotion out of a series by last season's table: "exclude": [{ "ranking": "last:acme.tour.rising", "top": 8 }].

restrict replaces the tier's entry rules (Tour Card or Contender Tour status). A women's event on a tier-3 tour is then open to every woman, card holders included. The old "youth" tag still works: under-24s on any tier.

League nights: league#

A series has nights 1…nights (each its own template) and one play-off template.

  • format: "fixtures" (default): each night, every player plays one round-robin fixture. rounds has one entry. There are 2 points per win.
  • format: "knockout": each night the line-up plays a knockout. For 8 players that's quarter-finals, semi-finals and a final, so rounds has 3 entries. points gives league points by finishing position: [5, 3, 2] means winner 5, runner-up 3, each semi-finalist 2, and the rest 0. First-round pairings rotate each night. Prizes go by position, as in any knockout. A night win isn't a title.
  • The table sorts by points, then leg difference.
  • The play-offs (playoffs: true, top: 4, fieldSize: 4) draw 1 v 4 and 2 v 3.
  • Night 1 picks the line-up, which is kept for the whole series. By default that's the Order of Merit top (players − 2) plus 2 wildcards. Give night 1 entryRoutes to choose it yourself, e.g. ranking oom top 8, or top 4 plus players invitations.

The game: startScore, finish and formatBands#

  • startScore is 301, 401, 501 (the default) or 701.
  • finish is "double" (the default: the last dart must be a double, and 1 left is a bust) or "single" (any dart that leaves exactly 0 wins; 1 left is a score like any other). The computer plays a single finish with its own targeting, never aiming at a bed that would bust it if it went in, and the scoreboard's suggested routes then finish on any bed, up to 180. A single-finish match is always thrown dart by dart, even in an event resolved by quick results.
  • formatBands gives the weaker players of one event shorter games. Each band has a maxLevel, a startScore and an optional finish. A singles match plays the first band whose maxLevel holds the lower rating of its two players (the rating restrict reads), and a match no band holds plays the event's own startScore and finish. List the bands from the lowest maxLevel up. The round's length (bestOfLegs) is unchanged. A youth series might use it: rated 14 or less, 401 single finish; 20 or less, 401 double finish; above that, 501.
"startScore": 501,
"formatBands": [
  { "maxLevel": 14, "startScore": 401, "finish": "single" },
  { "maxLevel": 20, "startScore": 401 }
]

Won by two clear legs: tieBreak and decidingSet#

A round can make its race of legs a tie-break: it must be won by winBy clear legs (2 or 3), and when both players reach suddenDeathAt legs one sudden-death leg decides it. A bull-up decides who throws first in that leg. Leave out suddenDeathAt for no limit.

  • tieBreak goes on a legs round and covers the whole match. The Golden Mile Showdown plays it, with sudden death six legs past a plain finish (first-to + 2 each):
"rounds": [ { "bestOfLegs": 19, "tieBreak": { "winBy": 2, "suddenDeathAt": 12 } } ]
  • decidingSet goes on a sets round and covers only the deciding set (both players one set short). The other sets are plain. The Kingsgate World Championship plays it: from 2-2 a player must lead by two legs, and at 5-5 one leg decides.
"rounds": [ { "bestOfSets": 13, "legsPerSet": 5, "decidingSet": { "winBy": 2, "suddenDeathAt": 5 } } ]

The scoreboard and the event pages say the rule ("Best of 19 legs, win by 2 clear legs (sudden death at 12–12)"), and quick results play it too.

A draw made again after every round: draw and redrawFrom#

  • "draw": "eachRound" makes an open draw after every knockout round: the winners are drawn against each other at random, so anyone can meet anyone. The draws use a random stream of their own.
  • redrawFrom (a round number, 2 or later) starts the redraw at that round. The rounds before it keep the bracket drawn at the start. With entryStages, those early rounds pair each round's new entrants with the winners before them. Leave it out to redraw from round 2.
  • The Everyman Open uses both, with "seeds": 0. Rounds 1 to 3 are drawn at the start, and from round 4, when the top 32 come in, a fresh draw follows every round. Until a round is drawn, the lobby and the Event Centre say "Drawn at random when Round 3 is over." instead of showing its bracket.
"seeds": 0,
"draw": "eachRound",
"redrawFrom": 4,
"entryStages": [{ "top": 32, "round": 4 }, { "top": 32, "round": 3 }, { "top": 32, "round": 2 }]

A week of group stages: cascade#

A studio week where groups feed each other (the Replay Live Series): stages play in order, each made of new players and named finishing places of earlier stages, and the last stage's groups seed the knockout in rounds as an ordinary group stage would. Use it instead of groups; fieldSize is the sum of the stages' new.

"cascade": {
  "format": { "bestOfLegs": 7 },
  "stages": [
    { "id": "A", "size": 6, "new": 6 },
    { "id": "B", "size": 5, "new": 3, "from": [ { "stage": "A", "places": [2, 3] } ] },
    { "id": "C", "size": 6, "new": 3, "from": [ { "stage": "A", "places": [4, 5, 6] } ] },
    { "id": "finals", "groups": 2, "size": 3, "advance": 2,
      "from": [ { "stage": "A", "places": [1] }, { "stage": "B", "places": [1, 2, 3] }, { "stage": "C", "places": [1, 2] } ] }
  ]
},
"rounds": [ { "bestOfLegs": 9 }, { "bestOfLegs": 11 } ]
  • Every stage's matches use format. A stage has groups groups (default 1) of size; its players arrive in this order: the places it takes from earlier stages (each place from every group of that stage, in the order listed), then its new players, who are the next unused entrants in field order (the field is ordered as the entry rules rank it, so the first stage gets the best-placed invitees). With more than one group they are dealt in a snake, which keeps the first arrivals apart.
  • A place nobody finished in (a short field) is skipped; a stage still plays with whoever arrived, and a group of one walks over.
  • After the last stage, advance of each of its groups go into rounds: with two groups and two through, the winners meet the other group's runners-up in the semi-finals. rounds has as many entries as the knockout needs (two for four players).
  • Prizes by finishing place: winner, runner-up, the knockout's losers round by round, then the last stage's group exits, then everyone who went out of an earlier stage (one more place). Six places cover the example above.
  • A player who has finished a stage and whom no later stage takes is out of the event; one waiting for a later stage (Group A's winner before the finals) is not.
  • Saves keep the finished stages (their groups as played and who went on), so a week loaded mid-way carries on.
  • One stage is allowed: a group stage whose groups have days of their own and meet more than once (the Kontinent League Week: four groups of six, "meetings": 2, "dayFrom": 1, "dayTo": 2, "advance": 4). In a field of seeded routes the snake deals one player from each block of groups (a pot) into every group.
  • stages[].meetings: how many times each pair of a group plays (default 1). stages[].dayFrom/dayTo: the days of the event the stage's rounds are spread over (1 = the first day). knockoutDays: the day each knockout round is played, in round order ([3, 4, 4, 4]: the last 16 on day 3, the rest on day 4); a shorter list puts the later rounds on its last day; without it every knockout round is on the last day.

Steel or soft-tip: board#

An event can say it is played on soft-tip boards with "board": "soft", or on steel with "board": "steel" when its tour is soft-tip (a tour's own board sets the default for its events, see tours). When neither says, it is steel; old packs and saves read steel. For now the flag is shown where an event is described and kept for later rules; the match plays on today's board either way.

Tours and rankings#

A mod can add tours. Each tour with rules.orderOfMerit other than none gets its own tab on the Rankings screen: its season money, or two years' money for rolling2y. That's the same table tour:<id> routes read. Two more rankings are read by routes and by restrict.exclude: last:<id> (last season's table of the tour) and phase:<id> (the tour's money in the phase in progress, for a tour with rules.phases). A European Tour whose events feed a European Tour Order of Merit is simply a tour ("orderOfMerit": "season") whose events use that tourId. The European Championship then takes { "kind": "ranking", "ranking": "tour:rw.tour.euro", "top": 32, "seed": true }.

Examples#

European Tour event (48 players): the Pro Circuit top 16 are seeded and have byes, 24 come from a TCHQ, and the rest from simulated regional qualifiers.

{
  "id": "rw.event.et1-qualifier", "tourId": "rw.tour.qualifiers", "name": "European Tour 1 Qualifier",
  "venueId": "core.venue.pennine-exhibition-hall", "month": 2, "week": 2, "weekday": 3,
  "fieldSize": 128, "entry": "open", "ranked": false, "prizes": [0],
  "rounds": [{ "bestOfLegs": 11 }, { "bestOfLegs": 11 }, { "bestOfLegs": 11 }],
  "restrict": { "tourCard": true },
  "qualifies": { "event": "rw.event.et1", "count": 24 }
},
{
  "id": "rw.event.et1", "tourId": "rw.tour.euro", "name": "Belgian Darts Open",
  "venueId": "core.venue.scheldedome", "month": 2, "week": 2, "weekday": 5, "days": 3,
  "fieldSize": 48, "entry": "ranking", "tv": true,
  "rounds": [{ "bestOfLegs": 11 }, { "bestOfLegs": 11 }, { "bestOfLegs": 11 },
             { "bestOfLegs": 11 }, { "bestOfLegs": 13 }, { "bestOfLegs": 15 }],
  "prizes": [35000, 15000, 10000, 6000, 4000, 3000, 2000],
  "entryRoutes": [
    { "kind": "ranking", "ranking": "tour:core.tour.pro", "top": 16, "seed": true },
    { "kind": "qualifier", "event": "rw.event.et1-qualifier" },
    { "kind": "pool", "pool": "any", "nations": ["BEL"], "count": 4, "pick": "weighted", "label": "Host nation qualifier" },
    { "kind": "pool", "pool": "nonCardHolders", "count": 2, "pick": "weighted", "label": "Associate qualifier" },
    { "kind": "pool", "pool": "any", "nations": ["SWE", "DEN", "NOR", "FIN", "EST", "LAT", "LTU"], "count": 1, "pick": "weighted", "label": "Nordic & Baltic qualifier" },
    { "kind": "pool", "pool": "any", "nations": ["POL", "CZE", "HUN", "CRO"], "count": 1, "pick": "weighted", "label": "East European qualifier" },
    { "kind": "fill", "pool": "cardHolders", "pick": "weighted" }
  ]
}

The final fill route covers a regional pool that has too few players in the world. Prizes are indexed by position (0 = winner, 1 = runner-up, 2 = semi-finalist, …). A round-1 loser in a 6-round event is position 6.

UK Open (160 players, staggered):

"fieldSize": 160, "rounds": [9 formats],
"entryRoutes": [
  { "kind": "ranking", "ranking": "oom", "top": 128, "cardHolders": true },
  { "kind": "pool", "pool": "nonCardHolders", "count": 32, "pick": "weighted", "label": "Amateur qualifier" }
],
"entryStages": [{ "top": 32, "round": 4 }, { "top": 32, "round": 3 }, { "top": 32, "round": 2 }]

Elite Series event (8 players):

"fieldSize": 8, "rounds": [3 formats], "ranked": false,
"entryRoutes": [
  { "kind": "ranking", "ranking": "oom", "top": 4, "seed": true },
  { "kind": "pool", "pool": "any", "nations": ["AUS"], "count": 4, "pick": "level", "label": "Local invitation" },
  { "kind": "fill", "pool": "any", "pick": "ranking" }
]

Premier League night (one of 16) and the play-offs:

{ "id": "rw.event.pl-n1", "fieldSize": 8, "rounds": [3 formats], "prizes": [10000, 5000, 3000],
  "league": { "series": "premier-league", "night": 1, "nights": 16, "players": 8, "format": "knockout", "points": [5, 3, 2] },
  "entryRoutes": [{ "kind": "ranking", "ranking": "oom", "top": 8 }] }
{ "id": "rw.event.pl-finals", "fieldSize": 4, "rounds": [2 formats],
  "league": { "series": "premier-league", "playoffs": true, "top": 4 } }

World Championship (96 players: the OoM top 32 are seeded and have byes, then the Pro Circuit's best 32 not already in, then international qualifiers):

"fieldSize": 96, "rounds": [7 formats],
"entryRoutes": [
  { "kind": "ranking", "ranking": "oom", "top": 32, "seed": true },
  { "kind": "ranking", "ranking": "tour:core.tour.pro", "top": 32 },
  { "kind": "pool", "pool": "women", "count": 2, "pick": "ranking", "label": "Women's Tour qualifier" },
  { "kind": "pool", "pool": "nonCardHolders", "count": 30, "pick": "weighted", "label": "International qualifier" }
]

Grand Slam (groups work with routes):

"entryRoutes": [
  { "kind": "winners", "events": ["core.event.everyman-open", "core.event.midwinter-masters"], "within": "12months", "seed": true },
  { "kind": "ranking", "ranking": "oom", "top": 32 }
]

Women's Tour event (open, women only): "entry": "open", "restrict": { "gender": "f" } on a tour whose table (tour:<id>) the Women's Golden Mile Showdown then reads.

Rising Stars Championship: "restrict": { "maxAge": 23 } with ranking oom top 32 (seed) plus fill youth weighted.

What the loader checks#

A broken event is dropped with a warning on the Mods screen naming the event and the problem. The loader checks:

  • rounds fits the field: a power-of-two bracket, qualifier sections, or stages.
  • Stages fit their rounds.
  • A knockout night has log2(players) rounds (rounded up) and points.
  • Routes name existing tours, events and players.
  • A qualifier and its target point at each other.
  • restrict.minAge isn't above restrict.maxAge.

Testing a calendar#

This loads core plus your mod, prints any mod issues, then simulates whole seasons and prints the time per season. It never writes to the mod folder.

Limits worth knowing#

  • Tour Card rules are unchanged. Cards are kept inside the OoM top 64, and new ones come from Trial Week ("qschool" tag) and the top two of core.tour.challenge and core.tour.development. Keep those tour ids, patching their names, if you want those routes to cards.
  • Events without entryRoutes on tier 1 still use the built-in selection, which reads core.tour.pro and core.tour.challenge money.
  • winners routes read finishing position 0 in the listed events. Don't list qualifiers or round-robin league nights.
  • Mods apply to new careers. Saves keep the content they were created with.

Where an event is shown: stage and trophy#

Two optional fields of an event say how its matches look in 3D, whatever the event is called:

FieldValueWithout it
stage"hall" (the floor hall of booths) or a stage id of the game's stage list ("classic", "palace")A televised event plays on the default TV stage, a floor event in the hall, a pub or club event at a board in a cabinet
organisationThe id of the organisation that runs this event, when it is not its tour'sIts tour's organisation
trophyThe name of a trophy model ("world-championship", "thursday-night-invitational")The trophy whose name appears in the event's name, if any

The core pack's Trial Week and Pro Circuit events say "stage": "hall", and its World Championship and Thursday Night events name their trophies. Rename one of those events in a patch and it keeps its stage and its trophy.

Quick results#

An event with "resolve": "quick" has its computer matches resolved from the quick-result table whenever you are neither in the event nor watching it: see quick results).

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