Guide

Tuning

The game's balance numbers that are not part of a larger settings file (career rules, world, population, load, medical, training) are tuning values: one number each, by key, in data/tuning.json.

{
  "id": "my-mod.tuning",
  "values": {
    "goals.maxGoals": 4,
    "overdraft.maxLimit": 50000
  }
}
  • Give only the values you want to change. Several mods can ship a tuning file: they apply in load order, later values winning key by key.
  • Values are numbers, or for a few keys a list of numbers. A whole-number value (an age, a count of days) is rounded.
  • Unlike most content, tuning is read from the installed packs, not from the copy a career took when it started: a change reaches careers already under way the next time the game loads its mods.
  • A key the game doesn't know is ignored.

The core pack's data/tuning.json has every value. What they mean:

Awards#

KeyCore valueMeaning
awards.defaultMinDarts1500Darts a player needs for an average award when the criterion doesn't say.
season.newcomerMinMoney10000Prize money a newcomer needs in their first season to be up for Best Newcomer.
rankings.windowDays730Days that prize money counts in the Order of Merit and the other two-year tables after it is won. Seeded money and money in older saves has no date and leaves a month at a time over its year.

Development#

KeyCore valueMeaning
development.ceilingSpan6Points below a tier's ceiling over which growth fades to nothing.
development.potentialCeiling.from74 off the Pro Tour (tiers 3 to 5) a player's tier ceiling rises for each point of potential over this.
development.potentialCeiling.perPoint1.1The rise a point of potential: a potential-90 prospect's Challenge Tour mark is 17.6 higher (79 less his spread of up to 12, plus 17.6), so the best prospects outgrow the tier and can win a Tour Card. 0 turns it off.

Followers (how fast they grow)#

KeyCore valueMeaning
followers.followerSoftCap1000000Where a tier-1 star's growth has slowed right down: gains land at 1/2 here, much less beyond.
followers.followerCeiling4000000Nobody gets past this, however much they win.
followers.reachByTier1, 0.85, 0.6, 0.3, 0.2How much of any follower gain of yours reaches people, by your tier (tier 1 first). A pub player's story is seen by few.
followers.youthAges12, 16, 18Ages under which a youth factor applies (the first one you are under counts).
followers.youthFactors0.15, 0.35, 0.7The factor for each of those ages: a child's following is a family's and a club's.
followers.lumpShare0.25One gain (a story, a result, an interview) is never more than this share of the following you have.
followers.lumpFloor40...but may always be this many, so a new account can grow.

Reading equipment#

KeyCore valueMeaning
kit-read.feelAt0.45Where a familiar item's fit becomes a feel (feelOf).
kit-read.trialsMax3Trial sessions per item, and how much each one teaches you.
kit-read.trialKnow0.2How much each trial session teaches you about an item.
kit-read.knownWidth0.1Half-width of the band once you know an item.
kit-read.specBlur0.3How far a reader can misjudge the spec with no clarity at all.
kit-read.avgSpread6Match averages vary about this much from night to night (before there's enough to measure).
kit-read.compareMin3Matches with a setup before its numbers mean anything, and before they mean much.
kit-read.compareFirm8Matches with a setup before its numbers mean much.

The league#

KeyCore valueMeaning
league.leaguePointsPerWin2League points for a win.
league.leagueWildcards2Wildcard places in the league.
league.wildcardPoolRank32Wildcards come from inside this Order of Merit rank when enough are there.
county.superLeagueLegs24The legs a player's Super League average (the average their level throws) counts for on the county's selection table, average:<tour>, beside the legs they play for the county this league year (singles in the league, matches at the county's own events). Every player is on the table; the more county legs they play, the more those decide their place.
county.transferFromMonth7The first month of the county close season. A player who has played for their county this season may ask to move from this month, and the move counts from the next season; before any county game in a season a move counts at once.

Stories#

KeyCore valueMeaning
narrative.groupCooldownWeeks52Weeks before another story of the same group can fire, when the story does not set groupCooldownWeeks.
narrative.minWeeklyCooldown26Floor on how often any one weekly story can come round again.

Negotiation#

KeyCore valueMeaning
negotiation.maxSeasons3The longest deal that can be negotiated, in seasons.
negotiation.lengthCost0.05Each season longer or shorter than they want, as a share of the opening value.

Records#

KeyCore valueMeaning
engine-record-book.recordMinLegs8Legs a match needs before its average can be a record, in the record book and in a player's personal bests. Real lists quote long, televised matches; a best-of-five would give 125 and more. (Before the setting existed: 5.)

Top players' floor days#

The computer's highest earners do not play every floor day of the pro tour (the tour with the role pro; a floor day is an event of it that is not a major, televised, a qualifier, a league night or a team event). One of them sits a day out only for a reason: they play abroad a few days before or after it, or a major they are in starts soon. While they are still chasing the tour's finals (the event tagged playersFinals) they enter everything. Their places go to reserves: the best players of the feeder tour without a card.

KeyCore valueMeaning
floor-rest.topRank16Order of Merit rank down to which a computer player picks their floor days. 0 turns the rule off: everybody enters everything.
floor-rest.travelDays8An event in another country that ended this many days or fewer before the floor day, or starts this many or fewer after it, is a trip: the player sits the floor day out.
floor-rest.majorDays14A major the player is in that starts this many days or fewer after the floor day is close: they sit the floor day out.
floor-rest.safeMargin1.25Safe for the finals: your money on the tour is this many times what the last qualifying place is heading for (its money now, at the same pace over the floor days still to come). Below that you are chasing and enter every day.

Training#

KeyCore valueMeaning
training.rate0.03Training pace: the base gain per effective hour.
training.span50Gains are at full speed this many points or more below an attribute's ceiling, then taper.
training.curve0.5How sharply gains taper near the ceiling.
training.balanceFree8An attribute this far above your overall level still trains at full pace…
training.balanceSpan6…and over this many more points its pace falls to the floor.
training.balanceFloor0.02The slowest pace of an attribute far above your overall level, as a share of full pace.

Shot-making#

KeyCore valueMeaning
shot-making.goMax8The most that going for it can weigh (a certain finish by the opponent would be infinite).
shot-making.goFlair0.3How much flair adds to going for the big finish.
shot-making.goAggressive0.5How much an aggressive player adds to going for it.
shot-making.goSafe0.5How much a cautious player takes off going for it.

The throw#

KeyCore valueMeaning
throw.wireZone0.4Wire proximity (mm) inside which a dart can bounce out.
throw.bounceChance0.003The chance a dart that lands within the wire zone bounces out.
throw.clashChance0.014The chance a dart that lands within throw.clashMm of a dart already in the board (earlier in the same visit) deflects out. Most real bounce-outs are these, so the first dart of a visit rarely bounces out and the third most often. The points' bounce lever multiplies it as it does the wire chance.
throw.clashMm6The distance (mm) from a dart in the board inside which a dart can clash with it.
throw.pressureSpread1How much a dart's spread grows under pressure (a televised match, high stakes, a hostile crowd, a deciding leg, a dart at a double to win): spread × (1 + pressure × this × (throw.pressureComposure − Composure/100) × confidence × tempo).
throw.pressureComposure0.96The Composure (as a fraction) at which pressure neither widens nor tightens the spread: a player below it throws wider under pressure, one above it tighter. Owner's choice of 2026-10-10 (, "gentle"): with 1 and 0.96, five points of Composure are worth about what five points of Finishing are. Before that the pair was 0.22 and 1.2, and Composure made almost no difference.
throw.nineDartNerves1.75On for a nine-darter: spread grows by this × (1.25 − Composure/100) on the second visit while it's still perfect and on the 141 that finishes it. The arena holds its breath; without it grouped visits make nine-darters far too common.

The match on screen#

KeyCore valueMeaning
camera.humanOverShoulder0Whether the TV director cuts to the shot over your own shoulder when you step up to throw (held until you press THROW). 0 keeps the board camera on the board for your visits; the opponent's visits always get the shot. 1 switches it back on.
camera.phoneYaw0 how far round to the right (degrees) the phone's board camera looks from in its standard shot. 0 looks straight on, so a dart that went in straight looks straight; the desktop camera keeps its own angle.
board.dartPitchMin, board.dartPitchMax2, 6 how far flights-high (degrees) a dart sits in the board, picked between the two for each dart.
board.dartLeanMin, board.dartLeanMax-2, 2 how far a dart leans sideways in the board (degrees, + to the right), picked between the two.
board.dartFanMax8 the most a dart landing by another may sit flights-high (degrees) to keep its flight clear of the seated ones.
walkon.holdMaxMs12000The TV walk-on waits on its "Round" opener until the 3D stage has built both players and the arena, so the tunnel opener and the walk down the walkway play; this is the longest it waits (ms) before it goes on regardless. 0 for no wait.
shirt.cloth0Whether the darts shirts on the 3D stage are simulated cloth (the sleeves' ends and the hem free to swing and settle; the arms and the trousers' top drawn under the shirt) instead of the skinned shirt. 0 keeps today's shirt; a mod can switch it on, and the player's graphics option "Cloth shirts" (Settings, display.clothShirts, off by default;) turns it on over a 0 here. Simulated cloth runs on every character wearing it, so it costs frame time.
shirt.compositorReleaseMs10000 how long the shirt compositor (the designers' previews, the shop's shirt pictures, the stage's designed shirt) waits after its last drawing, with no shirt designer open, before it lets go of its renderer and decoded base images (about 46 MB), in milliseconds. The next drawing makes them again, so nothing looks different; a shorter time saves memory sooner and costs a re-read of the images more often. A designer closing starts the wait again. Below 0 never lets go (only the stage closing does).
stage.juniorHeadScale0.12 how much larger than modelled the head of a match stage's standard model (a computer junior, or the human without a created character) is drawn for the youngest child, as a share of its size; an older child gets its create.youthByAge share of it. The body itself stands at the age's share of the grown height (create.heightByAge), the throw's hand path shrinking with the arm so the dart still leaves the hand.
stage.leftoversDelayMs20000How long after the last 3D stage closed the game lets go of what it cached for the stage (the players' decoded textures, the shirt designs' flat shots, the shirt compositor's renderer; some 250 MB), in milliseconds. A stage opening in that time keeps them: between an event's rounds the next match's stage comes up within seconds. 0 releases at once.
app.backgroundSaveMs3000 when the game goes to the background (a phone's home button, another app), it writes the open career at once, whatever the autosave setting, since the phone may end a game in the background without a word. This is how long it waits for that write, in milliseconds; a long job still running keeps the write queued behind it.
stage.rasterBudgetMb128 how many megabytes of float pictures the stage may hold at once while it draws its pictures (boards, screens, signs: each is drawn at 16 bytes a pixel, 64 MB for a 2048 px one). The game's memory keeps the size of its highest point for the rest of the session, so a lower figure makes the game smaller after a stage is built, at the cost of a slightly longer build; a picture larger than the whole figure is drawn alone. The pictures are the same whatever the figure. 0 or below: no limit (four pictures at once). On a device with less memory than stage.lowMemoryMb, the smaller of this and stage.rasterBudgetMbLowMemory.
stage.lowMemoryMb6000The device memory, in megabytes, below which the stage draws its pictures with stage.rasterWorkersLowMemory workers and a budget of stage.rasterBudgetMbLowMemory (a 4 GB iPhone, where iOS stops an app at about 2 GB, was stopped while a match loaded). At or above it nothing changes. 0 or below: never.
stage.pictureCacheMb96 how many megabytes of finished stage pictures (the board's number ring and surround, the event's screens and signs) the game keeps after a stage closes, so the next match, highlights or practice board shows them without drawing them again (about 0.7 s and a 128 MB peak on a PC for a whole board). A picture is only reused when everything that draws it is the same, so it looks the same; an event's own logo or backdrop makes new ones. When a new picture would pass the figure, the ones used longest ago go. 0 or below: none are kept. On a device with less memory than stage.lowMemoryMb, stage.pictureCacheMbLowMemory instead.
stage.pictureCacheMbLowMemory0stage.pictureCacheMb on a device under stage.lowMemoryMb. 0 or below: none are kept there.
stage.rasterBudgetMbLowMemory48stage.rasterBudgetMb on a device under stage.lowMemoryMb (the smaller of the two applies). 0 or below: the usual budget.
stage.rasterWorkersLowMemory2How many pictures the stage draws at once on a device under stage.lowMemoryMb (elsewhere one per processor, at most four). 0 or below: the usual number.
stage.rasterBudgetMbPhone48stage.rasterBudgetMb in the phone game, whatever the phone's memory (the smaller of the two applies; under stage.lowMemoryMb the smallest of the three). A phone's managed heap keeps the room every burst of drawing took, and the pictures drawn in the lobby for the match ahead grew it by 400 MB on a 12 GB phone. 0 or below: the usual budget.
stage.rasterWorkersPhone2How many pictures the phone game draws at once, whatever the phone's memory (never more than the usual number). 0 or below: the usual number.
stage.boardTexturePxPhone1024The most pixels a side of the board's pictures (the face, the number ring, the surround, the wall) has in the phone game, whatever the quality setting. A 2048 px face is 64 MB of floats to draw and 21 MB on the graphics card; the phone shows the board at a fraction of that. 0 or below: the quality's size.
walkon.prebuild01: while you are in the lobby of a televised match the game builds the match's 3D stage and both players ahead, so the walk-on starts at once when you press Play; the lobby then stops for about five seconds in all while it builds and holds about 2.4 GB more. 0 (the core pack since 2026-10-10,): the lobby builds nothing, and the walk-on waits on its opener (the round card) until the stage is ready, at most walkon.holdMaxMs.
housing.enabled11: where you live is paid for by the month from the housing and loans data (rent on an agreement, bills, mortgages, loan payments), and the Finances page has its Home & loans tab. 0: a career pays the career rules' flat weekly living cost, nothing by the month, and the tab is not shown.
calendar.duesSoonDays21The calendar says beside an event's Enter button when the month's home and loan payments fall before the event, with the bank after the entry, the travel and them. Only when those payments are due within this many days. 0: never.
calendar.projectedWeeks4The calendar says how many players a country's event is expected to draw ("about 34 of 48 expected") when that is not its written size, for events that start within this many weeks. Each asks the game to draw the field once a day, so a wide window slows the calendar. 0: never.
move.computer.paybackSeasons2 nobody has to live where the tour is. Once a season, at the new year, a computer player holding a Tour Card works out what the season's card tour events (tours with requiresTourCard) would have cost to get to from each country they are in, against from home. They move when the saving over this many seasons covers the move and the saving is at least move.computer.minShare of the bill. 0: nobody moves.
move.computer.settle1500What a move costs a computer player beyond its fare by the travel rules.
move.computer.minShare0.6The least share of the season's bill a move must save. A move is a new life, made for a big saving: from the core's figures a card holder in Australia or the United States saves 78 to 85% by living in England, one in Germany 52%, one in the Netherlands or Ireland 17 to 31%, so only the far ones move.
move.computer.chance0.25The chance a season that a computer card holder for whom a move pays makes it: not everyone who could does.
move.letter.minSaving1000The human holding a Tour Card gets a letter at the new year when the season's card tour events would have cost at least this much less from another country. It names the country and the saving; the player decides. 0: no letter.
move.minWeeksBetween52After a move to another country, how many weeks pass before the player may move again (the confirm of a move names the day). 0: no wait. A Tour Card won while living abroad sets the wait aside for the move it offers.

Junior careers: where a child starts#

KeyCore valueMeaning
create.juniorFullAge16The age from which a career is an adult's: the creator's junior rung and texts, no facial hair below it. a career started as a child starts below the difficulty's level; the potential is not lowered (it is measured from the adult start).
legacy.retireMinAge18The Legacy page offers a farewell season or retiring from this age; a younger player cannot announce or retire, and a news item marks the birthday.
letters.childAge14 below this age a letter is written in its text's .child form when the pack has one (a rival at the junior events, a backer looked over with the family, the doctor's word after an injury). A text with no .child form reads as it always has.
create.juniorYoungest10The youngest age a career can start at, and the age the first entry of create.juniorLevelByAge is for.
create.juniorLevelByAge[13, 19, 22, 26, 36, 36] the starting level of a career started as a child, one entry an age from the youngest (ten, eleven, twelve, thirteen, fourteen, fifteen); an age past the table's end starts at the difficulty's level, as an adult does. The core table puts a child in the lower third of the computer's players born the same year (at ten the year's median is 15 to 18, at twelve 25, at thirteen 28), and never above the difficulty's own level: from fourteen the world's juniors of a year are its future professionals and their lower third is above a new adult's start, so a child of fourteen or fifteen starts where an adult does. An entry above the difficulty's level is clamped to it.
create.juniorLevelAt36The difficulty level the table above is written for (normal's). A career on another difficulty scales the table by its level over this one: easy (42) starts a ten-year-old at 15, hard (30) at 11.
create.potentialHeadroom60 a new career's hidden potential is its starting level plus this many points (up to age 21), with a seeded spread of up to 5 either way. The core's 60 lets most careers that start young earn a Tour Card (measured: 17 of 18 starting at 16, 3 of 18 starting at 25, within eight to ten seasons); it was 40 in the code before. Potential is set at creation, so a career already under way keeps what it had.
create.potentialTaper0.8 the headroom shrinks by this much for each year a new career starts past 21 (no cliff), so a late starter has less room to grow.
create.developmentRange[35, 74] how fast a new career learns (Development, 0 to 99; 50 is normal speed) is drawn from its seed within this range, as eyesight is: the core's runs from Steady (35) to Quick (74), so no new career is Slow or Rapid. Age works on growth separately, through the training's age factor. A career made before keeps the rate it had.
create.heightByAge.m[0.775, 0.805, 0.84, 0.875, 0.92, 0.955, 0.98, 0.99, 1] how tall a boy stands as a share of his grown height, one entry an age from create.juniorYoungest (ten to eighteen); past the table's end he is grown. A look's height slider is the height when grown, so the random looks and seeded looks keep their values; the figure in the creator, the summary line and the career record show the height at the age. The core rows follow UK growth charts (a boy of ten stands about 138 cm, of twelve 150, of fourteen 164, of sixteen 174).
create.heightByAge.f[0.84, 0.875, 0.92, 0.955, 0.975, 0.99, 1]The same for a girl, ten to sixteen (138 cm at ten, 151 at twelve, 160 at fourteen); girls reach their grown height earlier.
create.youthByAge.m[1, 0.9, 0.78, 0.65, 0.5, 0.35, 0.2, 0.08, 0] how much of a child's shape a boy still has, one entry an age from create.juniorYoungest (ten to eighteen): 1 is the youngest child's shape, 0 grown. The created character's head, face and build move from the look's grown values towards the child offsets in the character catalogue (growth: a larger head and eyes, a shorter neck, a smaller nose, chin and jaw, fuller cheeks, narrower shoulders, a lighter build) by this share; the match stage's standard models get a head larger by this share of stage.juniorHeadScale. The look itself keeps its grown values.
create.youthByAge.f[1, 0.85, 0.68, 0.5, 0.32, 0.15, 0]The same for a girl, ten to sixteen.
create.youthLegs0.08 how much shorter the youngest child's thigh bones are drawn, as a share of their length (an older child gets its create.youthByAge share of it). The created character's legs are scaled on the skeleton after every DNA pass, and the whole figure is lifted back to the height the age table gives, so the torso and head come out larger for the body, as a child's are.
create.youthArmOut5 how many degrees further out from the body the youngest child's arms hang in the creator's idle (an older child its create.youthByAge share), a child's looser stance.
create.youthHeadScale0.1 how much larger the youngest child's head bone is drawn (an older child its create.youthByAge share), on top of the catalogue's growth DNA offsets; the hair and face follow the bone.
create.youthBustAge14 a girl younger than this is drawn with no bust (the breast DNA at zero), whatever the look's chest slider says; from this age the catalogue's growth offset fades in with create.youthByAge.
create.youthLegShare0.47The legs' share of standing height, used for that lift: the figure is scaled by 1 / (1 − share × shortening).

Currencies#

How money can be shown (Settings > Language > Currency). The game keeps its books in pounds; these are display only and reach careers under way. Read from the core pack's file at start-up (a mod's tuning record does not change them). Each currency's name is the text settings.currency.name.<code in lower case>.

KeyCore valueMeaning
money.currencies["GBP", "EUR", …, "ZAR"] the currencies on offer, in the settings' order. Pounds are always first. A code without a rate is left out.
money.rate.<CODE>money.rate.EUR 1.15Units of the currency per £1, a fixed rough mid-market rate; converted amounts are rounded the way a tour prints them.
money.display.<CODE>"narrowSymbol""symbol" (A$, HK$, CN¥: a sign that can't be mistaken for another country's) or "narrowSymbol" (€, kr, zł).
money.sign.<CODE>money.sign.PLN ["PLN", "zł"]The symbol and narrow sign for a currency the language's own tables don't have. A language that has one keeps its own.

Nations#

KeyCore valueMeaning
nations.defaultMarket0.9A sponsor market for a nation that doesn't set one.
nations.depth.levelPerPoint0.06A made player's level shift a point of his nation's depth from nations.depth.mid (60): +2.4 at depth 100, −2.4 at 20 (Nations).
scenes.homeCountryEntry1 1: a country's residents-only events (its Host Nation Qualifiers, local and national tours) also take players whose nationality it is, wherever they live; 0: only those who live there. A player a scene made (its locals, young players and club juniors, until it brings them through) goes by where they live either way.
studio.newCountry.backgroundYouth0The Mod Studio's "New country": the population.backgroundYouth it writes on the scene it makes…
studio.readOnlyTypes["quickResults"]Content types the Mod Studio shows and does not edit, because a tool makes their records.
studio.eventRun.max52The most copies the Mod Studio's "Copy to dates" makes from one event in one go.
studio.newCountry.clubVenues, studio.newCountry.clubNightspubs and clubs; club nights, pub takeovers, charity nightsThe Mod Studio's "New country": which of the made venues become exhibition places for club nights (venue kind:place kind pairs) and which kinds of night they host…
studio.newCountry.bigVenues, studio.newCountry.bigNightshalls; the five big nights…and the same for the nights a well-known player is offered.
studio.newCountry.backgroundLocals16…its population.backgroundLocals: the local adults who fill the events the country stages while it is in the background…
studio.newCountry.backgroundJuniors10…and its population.backgroundJuniors. A scene that names neither tops its young players up every year in the background (see Scenes).

The generated world#

KeyCore valueMeaning
population.juniorLevelFloor6No generated junior starts below this level (a ten-year-old who has just picked the darts up).
scenes.broughtThrough.ages[16, 23] the ages (on 1 January) of the young players a scene with population.pros brings through, or makes when it has none.
scenes.broughtThrough.headroom[6, 18] a player brought through has a potential of the scene's ceiling (or their level if higher) plus a draw from this range, no higher than 98.
population.maxHeadroom22Most headroom potentialFor gives (teenagers); potentialHeadroom scales against it. Kept modest so the starting world's youngsters grow into it without inflating every tier.

Mod scripts#

KeyCore valueMeaning
scripts.maxStepsPerCall20000000Statements one script call (a hook, or the load) may run before it is stopped as stuck and the script switched off for the career (Scripts). Steps, not time: the same on every machine.

Exhibition bookings#

KeyCore valueMeaning
bookings.leadMin10Offers are for nights this many days ahead, at least…
bookings.hoursLostBase3Practice hours an exhibition night costs before travel.
bookings.hoursLostPerTravelDay4Practice hours each travel day of a night costs.
bookings.journeyDays.home0Travel days added to a night at home.
bookings.journeyDays.area0…in a neighbouring country.
bookings.journeyDays.continent1…elsewhere on the continent.
bookings.journeyDays.longHaul3…on another continent.
bookings.leadMax45…and at most.
bookings.offerDays21Offers stay open this long (and never past a few days before the night).
bookings.pairsShareMax0.1Pairs nights are at most this share of the exhibition offers; a pairs night drawn over it gives its slot to another night.
bookings.pairsGapDays28No pairs night is offered within this many days of a pairs night already booked, either side.
bookings.pairsWindowOffers20The hard count: among any this many exhibition offers in a row, pairs nights are at most bookings.pairsShareMax of them, rounded down (2 in 20); 0 turns the count off.
bookings.placeShare.country80With an agent: the share of a night's offers held in the country you live in…
bookings.placeShare.circuit15…in another country of its circuit…
bookings.placeShare.elsewhere5…and anywhere else. Counted among those the night has a place in; on your own only the home circuit rings.
bookings.minAge16private refreshOffers(force = false): void. rng('bookings', today). the age from which exhibition nights are offered.

Sponsors and stories#

KeyCore valueMeaning
depth.rivalChance0.12chance a second brand in the same category bids too.
depth.brandMinFollowers10000A following this big gives you standing: sponsors that are not grassroots start to approach you.
depth.brandMaxRank128...or an Order of Merit place this high.
depth.brandMinRating, depth.brandMinMatches, depth.brandMinWinRate50, 12, 0.4...or results: this rating, with this share of at least this many matches won this season.
depth.grassrootsChance0.5Without standing, the monthly chance of an approach is multiplied by this, and only grassroots sponsors call (whatever their tier range).
depth.grassrootsMinMatches5Without standing, nobody calls before you have played this many matches in the season.
depth.happeningDays28how long a negotiation happening stays news for stories.
depth.storyWindowDays14how long a story waits for your answer.
depth.juniorSponsorValue0.3 the share of an adult's sponsor money a deal is worth while you are at school.
depth.storyStake500The money in a choice from which a story counts as a real decision.

Reputation and followers#

KeyCore valueMeaning
fame.settle0.02A week takes this share of the reputation above your level.
fame.gainFade15Results add less the further above your level you are: nothing extra is lost within 0, a fifth is all that lands this far over.
fame.gainFloor0.15The least of a result's reputation that lands, however far above your level you are.
fame.peakShare0.5Your level is never below this share of the best you've held.
fame.followerDrift0.004A week takes this share of the followers above your tier's level (tiers 2–5).
fame.idleWeeks8After this many weeks without playing, a week takes this share of all your followers.
fame.idleDrift0.002The share of all your followers a week takes once you have been idle that long.
fame.cardRanks128The last card holder's ranking (tier 2's range runs from the top 32 down to here).

Junior careers: the family's backing#

KeyCore valueMeaning
family-backing.adultAge18The backing ends on this birthday.
family-backing.schoolLeavingAge16Until this birthday you are at school.
family-backing.budgetEasy3600A season's budget at school, by difficulty; half of it from sixteen.
family-backing.budgetNormal2600A season's family budget at school on Normal.
family-backing.budgetHard1800A season's family budget at school on Hard.
family-backing.pocketMoney10Pocket money a week at school.
family-backing.boardShare0.5The share of living costs paid as board at home from sixteen.

Season goals#

KeyCore valueMeaning
goals.maxGoals3At most this many goals a season.
goals.reward2Morale and confidence gained for each goal met at the season's end.
goals.juniorRank16The Junior Series rank the junior season goal asks for.
goals.veteransRank16 the rank on the veterans tour (the tour with role "veterans") a veteran's season goal asks for, while they hold no Tour Card.
goals.metMotivation4 motivation gained for each goal met at the season's end.
goals.missedMotivation6Motivation lost for each goal missed.
goals.missedMorale1.5Morale lost for each goal missed.
goals.missedImage2Image (how sponsors and the public see you) lost for each goal missed.
goals.missedStaffMorale4Your coach's morale lost for each goal missed.
goals.metStaffMorale2Your coach's morale gained for each goal met.

Morale#

Morale (the human's, 5–99) changes play along two linear ramps, so every point counts a little: the low ramp runs from morale.lowAt down to morale.lowAt − morale.lowSpan (0 to full effect), the high ramp from morale.highAt up to morale.highAt + morale.highSpan. Computer players are not affected. The Training page and the hub say what the week's morale does.

KeyCore valueMeaning
morale.lowAt40Morale under which the low ramp starts.
morale.lowSpan25Points below lowAt over which it reaches full effect (15).
morale.highAt70Morale over which the high ramp starts.
morale.highSpan25Points above highAt over which it reaches full effect (95).
morale.trainingLow−0.15Training gains × (1 + this) at the low ramp's end: −15%.
morale.trainingHigh0.05Training gains × (1 + this) at the high ramp's end: +5% (halved 3 Nov, owner's balance ruling on).
morale.injuryLow0.3The everyday injury causes (wear, training hours; not the workload's) × (1 + this) at the low ramp's end.
morale.injuryHigh0.1Those causes × (1 − this) at the high ramp's end.
morale.composureLowAt25Morale under which composure on the oche starts to suffer (through the kit's composure shift, like the workload bands).
morale.composureLow−3Composure points at the bottom of that ramp.
morale.composureHighAt85Morale over which composure gains.
morale.composureHigh2Composure points at the top of that ramp.
morale.composureSpan12Points over which each composure ramp reaches full effect.
morale.baseline62The morale the human settles back to each week at motivation 50 (computer players use the training settings' drift.morale.target).
morale.baselinePerMotivation0.15Added to the baseline per point of motivation over 50 (taken away under).
morale.volatilePull1.6A "volatile" temperament's weekly pull towards the baseline, as a multiple of drift.morale.pull.

Motivation#

The human's motivation (5–99) is seeded from the save's seed and the player (motivation.start ± motivation.startSpread, no random draw) and each week moves motivation.pull of the way towards a target built from their situation. It scales the professionalism factor of every training week by 1 + motivation.trainingRange × (motivation − 50) / 50, and sets the morale baseline above. The Training page and the hub give the reasons.

KeyCore valueMeaning
motivation.start58A new career's motivation, before the seeded spread.
motivation.startSpread12The seeded spread either side of start.
motivation.pull0.05The share of the gap to the target closed each week.
motivation.base50The target with nothing else going on.
motivation.young8Added while younger than motivation.youngUntil.
motivation.youngUntil24
motivation.veteranFrom36From this age motivation.veteranPerYear a year comes off the target, up to motivation.veteranMax.
motivation.veteranPerYear1.5
motivation.veteranMax12
motivation.rival6Added with a rival of at least rivalry.rivalAt intensity.
motivation.newTour8Added through the season after your tier rose or a Tour Card was won.
motivation.droughtFrom1Seasons without a title before the drought counts.
motivation.droughtPerSeason4Taken off per season of drought past droughtFrom, up to motivation.droughtMax.
motivation.droughtMax14
motivation.richFrom250000Cash from which money in the bank dulls the hunger...
motivation.richSpan750000...over this much more cash, up to motivation.richMax off the target.
motivation.richMax12
motivation.streakFrom3A run of this many wins (losses) in a row adds (takes) motivation.streak.
motivation.streak4
motivation.title5Added at once for each title won.
motivation.tourCard8Added at once at the season review for a Tour Card won for next season.
motivation.lostCard6Taken at once at the season review for a Tour Card lost.
motivation.trainingRange0.15Training effort at motivation 0 is 1 − this (the penalty, below 50).
motivation.trainingRangeHigh0.075Training effort at motivation 100 is 1 + this (the boost, above 50; half the penalty's range since).
motivation.lowAt40The texts call motivation "flat" under this...
motivation.highAt72...and "driven" over this.

Equipment#

KeyCore valueMeaning
kit.ownEye0.2How clearly you read kit yourself, with no one to help.
kit.trialShare0.04A trial session on the shop's oche costs this share of the price.
kit.verdictFit0.5Slots whose fit gets a verdict message once you know it (the big ones).
kit.sparesMax20the most spares of one item the case holds.

Workload#

KeyCore valueMeaning
load.holidayDays4Days of a week a holiday must cover for the week to count as a week off.
lobby.orderOfMeritTiers2 before a match, the event lobby shows each player's rank on a table. A ranked event of a tour of this tier or above (1 is the top; the core pack's Elite Series, Continental Series and Pro Circuit) shows the Order of Merit; any other event shows its own tour's table (the Contender Tour's, the Women's Tour's), named by the tour's short name, when the tour keeps one.

Sponsors#

KeyCore valueMeaning
sponsors.averageBands[50, 60, 70, 75, 80]Three-dart averages from which a sponsor deal is worth at least…
sponsors.averageValues[100, 200, 300, 400, 500]…this much a season (the same place in the list).
sponsors.averageMinMatches5Matches this season before its average counts; fewer, last season's.
sponsors.proFloor1000The least a deal is worth a season with a Tour Card.
sponsors.rankBands[64, 32, 16, 8]Order of Merit places inside which a deal is worth at least…
sponsors.rankValues[2500, 5000, 10000, 20000]…this much a season.
sponsors.premiumRankMax8A player this high on the Order of Merit…
sponsors.premiumTvEvents4…who has played this many televised events this season…
sponsors.premiumChance0.3…has this chance, for each offer, of a premium deal…
sponsors.premiumMin1.5…worth between this…
sponsors.premiumMax3…and this many times the floor (its own random stream).

The floors are before a deal's own spread of 15% either way; deals already signed keep their value.

Media#

KeyCore valueMeaning
media.minAge16Youngest age for interviews and press conferences, and so for the regulator's media duty.
media.dutyLetterAfterMisses2Televised interviews missed in a row (an interview given starts the count again) that bring the regulator's warning letter on the media duty. Misses up to and including that one are not fined; a miss after the warning is. At least 1.

Medical#

KeyCore valueMeaning
medical.decisionDays14How long an injury decision waits before what's in place stands (like a story).

The overdraft#

KeyCore valueMeaning
overdraft.incomeShare0.25The limit is this share of the last year's income…
overdraft.minLimit1000…and never below or above these.
overdraft.maxLimit25000The overdraft limit is never above this.
overdraft.letterAt0.6The bank writes once you have used this share of the limit.

The press#

KeyCore valueMeaning
press.callbackDays150a settled claim stays fresh enough to be thrown back this long.
press.beatClaimDays365a "next time we meet" claim lapses after a year.
press.upsetRatingGap3An upset (news, posts, the "not many gave you a chance" interview) also needs the beaten player rated at least this much above the winner.

Ageing#

KeyCore valueMeaning
session.potentialFadesFrom37The age from which your potential comes down each winter, and from which it comes down faster.
session.potentialFallsFrom45The age from which potential comes down faster each winter.
session.potentialFade0.5Points of potential lost each winter from the first age.
session.potentialFall1.0Points of potential lost each winter from the second age.
session.overPotentialSettle0.25The most an overall rating above your potential settles back at each weekly step, in points off each rating skill (13 a year).

Your team#

KeyCore valueMeaning
team.imageCeiling40Image the team can build on its own; beyond that it's down to you.
team.approachGapDays180No agent approaches more often than this.
team.approachStanding20Standing at which agents start to take an interest.

Staff who act#

Coaching philosophies (staffPhilosophies, see Staff roles) suit some players and not others; two strong characters in one corner of the team clash; unhappy staff warn you, then give notice; a slumping top player may come for your coach, and you may hire a computer player's coach.

KeyCore valueMeaning
staff.philosophy.fitRange0.25A coach's training hooks scale by 1 + fitRange × fit (fit −1 … 1), on top of the philosophy's areas.
staff.philosophy.misfitMorale8The coach's morale target falls by this × how far under 0 their fit is.
staff.philosophy.fitMorale2Your own morale baseline moves by this × fit, per coach with a philosophy.
staff.philosophy.suitAt, clashAt0.25, −0.25The fit words: suits you at or above the first, a poor fit at or below the second, a stretch between.
staff.philosophy.revealWeeks6Weeks on the books before the exact fit shows (an analyst's scouting hook shows it at once).
staff.clash.egoSum30Two members of one arena clash when their egos (1–20 each, from the id) add up to this or more.
staff.clash.morale8Both clashing members' morale targets fall by this while the clash runs (not the one you backed).
staff.clash.hookLoss0.1Share of their effects lost while the clash runs.
staff.clash.settleWeeks26Banging heads together settles a clash for this long.
staff.clash.settleRelationship−5What banging heads costs you with each of them.
staff.clash.calmAt75A pair who both get on with you better than this never clash.
staff.clash.backMorale, backRelationship6, −5Backing one: their morale lift, and the other's relationship knock.
staff.leave.goalMissed−4Each season goal missed at the last review pulls every member's morale target down by this all season.
staff.leave.rankDropSpan, rankDrop24, −6Places lost on the Order of Merit since the season began, up to the span, pull the target down to this.
staff.leave.warnAt35Morale under this brings a warning letter with the reasons (once per spell).
staff.leave.noticeEffect0.5A member working their notice (the existing noticeWeeks) works at this share.
staff.leave.ambitionAt14Ambition from which a member wants a winner.
staff.leave.resultsChance0.35At the season's end, an ambitious member with two goals missed or the rank span lost leaves with this × ambition / 20.
staff.poach.rankMax32A slumping computer player ranked inside this may come for your coach.
staff.poach.qualityMin3Only a coach of at least these stars draws an approach.
staff.poach.moraleAt55An approach needs the coach's morale under this, or ambition ≥ ambitionAt with your standing under the player's.
staff.poach.chance0.5The approach's chance when the conditions hold (stream staff-poach).
staff.poach.raise0.3The first offer: the coach's wage × (1 + raise).
staff.poach.answerWeeks2Weeks you have to answer; silence lets the coach go.
staff.poach.secondChance, secondRaise0.5, 0.2After you match, the player may raise once more (a second draw keyed by the day): wage × (1 + secondRaise). Never a third.
staff.poach.matchedMorale, matchedRelationship10, 5What a coach you fought for feels.
staff.poach.unsettledExits4A computer player whose last this many tier 1–2 results were early exits (or who announced retiring) has a coach on the market.
staff.poach.marketMax2At most this many world coaches in a month's market (nearest in standing first).
staff.poach.premium0.2A world coach asks the role's fair wage × (1 + premium).
world.form.coachLostWeeks, coachLostComposure8, −2The modifier on a computer player whose coach you hired.
rivalry.poachHeat0.1Heat added to a rivalry when a rival takes, or loses, a coach.

The throw model and the generated players#

KeyCore valueMeaning
throw.visitCorrelationMin0.2How much the three darts of a visit share one error, for a player with Tempo Control of 50 or less. Higher means grouped visits (and 180s) are more common.
throw.visitCorrelationMax0.5The same for a player with Tempo Control of 100; in between it rises evenly.
strategy.scoringZone200Above this score the computer players just score on their preferred treble. Read when a player's strategy tables are built, so a change shows after a restart.
strategy.routes.doubleCost1, 0.45, 0.7, 0.3, 0.6, 0.4, 0.6, 0.1, 0.55, 0.2, 0.55, 0.25, 0.55, 0.35, 0.55, 0, 0.5, 0.2, 0.5, 0How little players like finishing on each double, D1 to D20 (0: the doubles they practise most). A dart pays the cost of the double it plays for: the one it finishes on, or the best double of the shortest finish it leaves.
strategy.routes.bullCost0.45The same for finishing on the bull.
strategy.routes.favouriteDouble0.4What a player's favourite double takes off its cost: a nudge, not a rule.
strategy.routes.finishShare0.5The share of the cost paid for a double in front of the player (34 is the double 17, not a single 2 and the double 16).
strategy.routes.nextVisit0.5The share paid for the double a dart leaves for next visit, when this visit cannot finish.
strategy.routes.weight0.01, 0.04Visits per unit of cost, for Checkout Knowledge 0 and 100 (evenly between). The strategy table still decides routes that are not close; this settles the close ones. Read once per player per match.
population.gameTier5Level46, 9, 24, 66The level range of the lowest tier's generated players (the pub level): mean, spread, lowest, highest.
population.favouriteDoubles16, 16, 20, 20, 8, 10, 12, 18, 4, 14The doubles a generated player's favourite is drawn from (a number listed twice is twice as likely).
season.newcomerFavouriteDoubles16, 20, 8, 10, 12, 18The same for each winter's newcomers.

Invitations#

KeyDefaultWhat it does
invitations.sendDays14How many days before an invited event (on a tour with replyToInvitations) the player's invitation comes
invitations.replyDays7How many days the player has to reply; never past the day before the event

Your rivalries#

Only your hottest few rivalries count, only a meaningful meeting feeds one, and after a few meetings only a balanced head-to-head keeps it growing. Rivalries between computer players are not changed by these.

KeyDefaultWhat it does
rivalry.cap5How many of your rivalries count at once: the hottest. The rest keep their heat but are not listed, and a newcomer must overtake the coolest
rivalry.listAt0.2The heat (0 to 1) at which a rivalry is listed
rivalry.rivalAt0.3The heat at which the opponent is your rival on both profiles and the inbox tells you
rivalry.closeMargin1A match won by this many legs (or sets) or fewer is close
rivalry.lateRounds4A knockout round this many or fewer from the final (4: the last 16) is big; so is a major or a match on television
rivalry.gainClose0.12Heat a close meeting adds
rivalry.gainBig0.06Heat a big meeting that was not close adds (a one-sided meeting that is neither close nor big adds nothing)
rivalry.tvFactor1.5Times the heat of a meeting on television
rivalry.closeLossExtra0.05More heat when you lose a close meeting
rivalry.balanceAfter3From this many meetings the head-to-head must be balanced for the rivalry to grow
rivalry.balanceShare0.25Balanced: each of you has won at least this share of your meetings

Rivalries with memory#

The game keeps a record of every meeting with each opponent (meetings, wins, the last result, what was said). A rival (heat at rivalry.rivalAt or more) who beats you and leads the record taunts you on the feed; one who loses to you and trails digs in. The record gives each player a pressure term of their own for the next meeting, on top of the shared stakes (which carry the rivalry's heat as before); the human's media pressure is the human's own term and no longer presses the opponent. The opponent's profile shows the record with the reasons.

KeyDefaultWhat it does
rivalry.edgeLead1Wins ahead in the record at which the edge is yours (or theirs): the rivalEdge story condition, a rival's taunt and dig-in
rivalry.pressure.media0.5Your own pressure term: times your media pressure (0 to 0.3)
rivalry.pressure.revenge0.05Pressure on whichever of you lost the last meeting of a rivalry (heat at rivalry.listAt or more)
rivalry.pressure.taunted0.04Pressure on you while a rival's taunt is live
rivalry.pressure.claim0.05Pressure on you while you have an open "I'll beat them" interview claim against the opponent
rivalry.pressure.digIn0.05Pressure taken off a rival while their dig-in is live (they trail you and lost the last meeting)
rivalry.talkDays365Days a taunt or a dig-in stays live (the next meeting always settles it)
rivalry.talkLines3How many wordings the pack has for a taunt and for a dig-in (depth.rival-talk.taunt.N, depth.rival-talk.dig-in.N)

The next generation#

Waves on the intake, national programmes, your academy's graduates, hype and the changing of the guard; what each does is in Population.

KeyCore valueMeaning
nextgen.generations.period, gemAmp, headroomAmp8, 0.5, 0.15The wave's period in seasons and its amplitudes on the gem chance and the ordinary headroom (0: off).
nextgen.generations.guardTop, guardShift32, 2How many of the top are measured, and the median birth-year shift in one season that makes news.
nextgen.programmes.bandMin, seasonsToOpen, seasonsToClose3, 2, 3The nation band a programme needs, the seasons at it before one opens, the seasons below it before one closes.
nextgen.programmes.share, headroom, professionalism, growth, untilAge0.5, 4, 6, 0.12, 23What a programme claims of its nation's newcomers and gives them.
nextgen.academy.minAge15The youngest an academy graduate leaves at (within the intake's ages).
nextgen.academy.headroom, campusHeadroom3, 5A graduate's extra potential (the campus's with two or more graduates a winter).
nextgen.academy.imagePerGraduate, followersPerMilestone1, 300Image a season for each graduate on tour; followers for each credit.
nextgen.hype.maxAge, cardAge23, 20Under which age hype lives, and the card age that gains it.
nextgen.hype.card, upset, bigUpset, title, majorFinal, rising25, 12, 20, 30, 40, 15The gains.
nextgen.hype.upsetRank, bigUpsetRank16, 8The beaten player's rank for an upset and a big one.
nextgen.hype.decay, decayPlayed, cap, bands3, 1, 100, [25, 50, 75]The weekly decay (a playing week's), the cap, the band thresholds.
nextgen.hype.quietBelow25Under this hype a playing week decays at the full decay: only a new result keeps low talk alive.
nextgen.hype.pressure, crowd, sponsor, news, rivalry0.06, 0.05, 1, 0.5, 0.5The effects, each × hype/100 (the rivalry's a flat multiplier).
nextgen.hype.bustFrom, bustTo, bustWeeks, bustProfessional, showboatGain50, 25, 20, 0.5, 1.3The bust rule and the trait multipliers (1 without's traits).

AI players' careers#

What a computer player's season was scales their winter development (training.offseason.facts.*, a multiplier on the growth term, clamped to [min, max]; a player with no facts gets 1), the reasons beyond age that make a veteran stop (population.retirement.*), the timed form modifiers that hot streaks, slumps, dartitis, a new coach and new darts put on a player (world.form.*, world.darts.familiarity*), and how each AI player's style on the oche is picked (ai.style.*).

KeyCore valueMeaning
training.offseason.facts.playedFull[40, 30, 20, 12, 8]Matches in a season that count as a full one, tier 1 first.
training.offseason.facts.playedGain0.35Share of the growth an idle season loses (a full one loses nothing).
training.offseason.facts.minMatches8Matches needed before the win rate says anything.
training.offseason.facts.expectedWinRate[0.55, 0.5, 0.5, 0.5, 0.5]The win rate that is neither good nor bad, tier 1 first.
training.offseason.facts.resultsSpan0.25How far from the expected rate counts as the whole of resultsGain.
training.offseason.facts.resultsGain0.25The most results add to (or take from) the growth.
training.offseason.facts.titleMax3Titles counted at most.
training.offseason.facts.titleGain0.05Growth added per title.
training.offseason.facts.coachGain0.2Growth added the winter after a new coach came.
training.offseason.facts.injuryLossPerWeek0.02Growth lost per week out injured (dartitis counts).
training.offseason.facts.injuryLossMax0.4The most injuries can take.
training.offseason.facts.injuryDeclinePerWeek0.01Extra age decline per week out.
training.offseason.facts.ambitionGain0.15Growth added at ambition 100, taken at 0.
training.offseason.facts.min / max0.4 / 1.6The clamp on the whole factor.
population.retirement.cardLost0.08Chance added when the Tour Card is lost, from ten years past cardLostAge; a quarter of it below it.
population.retirement.cardLostAge28See above.
population.retirement.cardLostRank64At the autumn announcement, a card holder ranked past this counts as losing it.
population.retirement.injuryPerWeek0.004Chance added per week out this season, from injuryAge.
population.retirement.injuryAge33See above.
population.retirement.droughtSeasons4Seasons since the last tier 1-2 title that count as a drought.
population.retirement.droughtAge35The age from which a drought counts.
population.retirement.drought0.06Chance added by a drought.
world.form.hotWeeks / hotForm / hotComposure4 / 0.1 / 3A hot streak: weeks, form added each week, composure on the oche.
world.form.slumpWeeks / slumpForm / slumpComposure6 / -0.08 / -4A slump.
world.form.dartitisWeeks / dartitisExtraWeeks12 / 8Dartitis lasts the first plus up to the second (drawn on the world-form stream).
world.form.dartitisForm / dartitisComposure-0.05 / -10Dartitis each week.
world.form.coachWeeks / coachComposure / coachConfidence8 / 2 / 6A new coach: weeks of settling, composure, and the one-off confidence.
world.darts.familiarityWeeks6Weeks to get used to new darts.
world.darts.familiarityForm / familiarityComposure-0.06 / -2The cost at the start, fading to nothing over the weeks (the flat darts.dip of world.json is no longer applied).
ai.style.personalityWeight0.5How much a showman or fiery media manner (or a calm temperament) leans the style.
ai.style.noise0.3Seeded noise per style, so like players differ.
ai.style.steadyBase0.15The Steady style's own score (the middle; wins ties).
ai.style.span8Attribute points above the player's own level that count as one whole style lean (showman: crowd handling; grinder: consistency and concentration; front-runner: scoring over finishing).
ai.style.chaseLegs2Legs behind in the set from which a chasing style attacks the finish.

AI personalities and kit#

Conduct traits (traits in data/population.json, see population) scale the chances the world draws against; every followed computer player throws a real set of darts; feuds run between two computer players. The multipliers themselves sit on each trait's effects in the population data.

KeyCore valueMeaning
ai.traits.perPlayer2Traits a player can carry at most.
ai.traits.minScore0.75The score a trait needs to count (about 88% of players carry one, half carry two).
ai.traits.noise0.3Seeded noise added to each score, so like players differ.
ai.kit.scale0.5How much of the human's kit effect a computer player's set carries: every lever is 1 + (lever − 1) × scale (0 is neutral for everyone; the population's mean stays at 1 either way, a few percent between players at 0.5).
ai.kit.loyaltyStart40Brand loyalty (0 to 100) when a player takes a brand.
ai.kit.loyaltyPerSeason8Loyalty added per full year with the brand (× the trait's loyalty effect; a signature range is 100).
ai.kit.loyaltyHold0.6A brand switch's chance is × 1 − loyalty / 100 × hold.
world.feud.heat0.6The rivalry heat a feud needs.
world.feud.chance0.3The chance a meeting at the heat starts one, × the two players' feud effects (two hotheads: certain; one and a professional: 0.3); stream world-feud.
world.feud.pressure0.05Pressure on the player trailing the pair's record (the hothead when level), on both at the grudge stage.
world.feud.boost1.3The grudge match story's weight boost.
world.feud.fine2000The fine named on the hothead's timeline after the bust-up (a line, no money moves).
world.feud.coolWeeks40Weeks without a meeting after which a feud cools.
world.feud.maxPerPlayer2The most live feuds one player carries; a pair with a player at the cap starts no new one.
world.feud.coolHeat0.35The rivalry heat under which a feud cools.

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