Reference
World settings
The living world: other players' careers (sponsors, darts, youngsters, retirements, rivalries, form) and how much of it makes the news. Every field is optional; a field left out keeps the game's default. Several mods can supply one: they apply in load order, later fields winning. Chances are per tracked player per month unless they say otherwise. See The living world.
- Content type
world- Files
data/world.json- Shape
- One settings object (a file may hold the object itself)
- Patch target
world:<id>, for exampleworld:core.world- In the base game
- 1 record
- Guide
- The living world
Fields#
Indented fields belong to the field above them. [] marks the items of a list. A field that is not required may be left out; the default is used.
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
id | id | Yes | Namespaced id, e.g. "core.player.rory-calder" | |
enabled | true or false | false switches the living world off: no AI moves, no world stories. | ||
tracked | object | Who the world follows closely: tiers up to tierMax, and the top rank on the Order of Merit. | ||
tracked.tierMax | whole number, 0 to 5 | |||
tracked.rank | whole number, 0 to 1000 | |||
news | object | |||
news.perWeek | whole number, 0 to 20 | World stories published in a normal week (the strongest candidates). | ||
news.maxPerWeek | whole number, 0 to 30 | Most a week, counting must-run stories. | ||
news.mustRun | number, 0 to 100 | A story this important always runs (up to maxPerWeek). | ||
news.minWeight | number, 0 to 100 | Stories weaker than this never run (they still go on the player's timeline). | ||
news.socialChance | number, 0 to 1 | Chance a published story also gets a social post. | ||
news.link | object | Weight multipliers for stories about players linked to you. | ||
news.link.rival | number, 0 to 10 | |||
news.link.nation | number, 0 to 10 | |||
news.link.tier | number, 0 to 10 | |||
news.weights | map (key: value) | Importance of each story kind (see WORLD_STORY_KINDS), 0 = never news. | ||
sponsors | object | |||
sponsors.signChance | number, 0 to 1 | No main sponsor: chance to sign one. | ||
sponsors.dropChance | number, 0 to 1 | Their level has fallen below the sponsor's: chance they part ways. | ||
sponsors.upgradeChance | number, 0 to 1 | A bigger brand fits them now and they're winning: chance of a move. | ||
sponsors.renewChance | number, 0 to 1 | A deal running out at the end of the season: chance it's renewed. | ||
sponsors.newsRank | whole number, 0 to 1000 | Moves by players ranked up to this make the news (others: timeline only). | ||
darts | object | |||
darts.switchChance | number, 0 to 1 | Their darts brand no longer fits their level: chance they switch. | ||
darts.slumpChance | number, 0 to 1 | In a slump: chance they change darts (and dip in form while they settle). | ||
darts.signatureRank | whole number, 0 to 1000 | Ranked this high without a signature range: a brand may launch one. | ||
darts.signatureChance | number, 0 to 1 | |||
darts.dip | number, 0 to 0.5 | Form lost while getting used to new darts. | ||
darts.newsRank | whole number, 0 to 1000 | |||
youth | object | |||
youth.maxAge | whole number, 14 to 30 | Oldest age counted as a youngster. | ||
youth.features | whole number, 0 to 10 | "One to watch" features a season. | ||
youth.minGain | number, 0 to 20 | Least off-season rating gain for a feature. | ||
retirement | object | |||
retirement.announceMonth | whole number, 0 to 12 | Month when veterans announce they'll retire at the season's end (1–12; 0 = never announce). | ||
retirement.newsRank | whole number, 0 to 1000 | Retirements of players ranked up to this make the news (named players always do). | ||
retirement.comebackChance | number, 0 to 1 | Per season, for a recently retired player still good enough: chance of a comeback. | ||
retirement.comebackMaxAge | whole number, 20 to 80 | |||
rivalry | object | |||
rivalry.seedFinal | number, 0 to 1 | Rivalry heat added when two tracked players meet in a final. | ||
rivalry.seedClose | number, 0 to 1 | …or in a close televised knockout match (quarter-finals on). | ||
rivalry.aiGrowth | number, 0 to 2 | Scales how fast rivalries between computer players grow at each meeting. | ||
rivalry.bornHeat | number, 0 to 1 | Heat at which a rivalry is born (and news). | ||
rivalry.newsHeat | number, 0 to 1 | Heat at which a meeting in a big match is a "grudge match" story. | ||
form | object | |||
form.window | whole number, 2 to 12 | Recent events looked at for streaks. | ||
form.hotTitles | whole number, 1 to 10 | Titles within the window for a hot streak. | ||
form.slumpExits | whole number, 2 to 20 | Early exits in a row for a slump. | ||
form.cooldownWeeks | whole number, 1 to 52 | Weeks before the same player can have another form story. | ||
form.dartitisChance | number, 0 to 1 | Slumping veteran (generated players only): chance of dartitis whispers. | ||
form.coachChance | number, 0 to 1 | Slumping (generated players only): chance of a coaching change. | ||
form.injuryChance | number, 0 to 0.2 | Per tracked generated player per week: chance of an injury. | ||
agencies | object | |||
agencies.signChance | number, 0 to 1 | |||
agencies.switchChance | number, 0 to 1 | |||
agencies.newsRank | whole number, 0 to 1000 | |||
faces | object | How generated players' library faces are picked: a face's score loses ageWeight a year of age gap, agePenaltyWeight more a year beyond agePenaltyAfter, and wearWeight for each player already wearing it; refreshAgeGap (0 = never) gives a player a new face at the season's turn once they've aged that many years past theirs (defaults 0.35, 0, 0, 50 and 0). | ||
faces.ageWeight | number, 0 to 100 | |||
faces.agePenaltyAfter | number, 0 to 80 | |||
faces.agePenaltyWeight | number, 0 to 100 | |||
faces.wearWeight | number, 0 to 1000 | |||
faces.refreshAgeGap | whole number, 0 to 80 |
Example#
A record from the base game’s data/world.json, shortened.
{
"id": "core.world",
"enabled": true,
"tracked": {
"tierMax": 2,
"rank": 64
},
"news": {
"perWeek": 2,
"maxPerWeek": 3,
"mustRun": 9,
"minWeight": 3,
"socialChance": 0.45,
"link": {
"rival": 2,
"nation": 1.35,
"tier": 1.2
},
"weights": {
"sponsorSigned": 3,
"sponsorSplit": 3.5,
"sponsorSwitch": 4.5,
"dartsSwitch": 4,
"dartsChange": 2.5,
"signatureRange": 5,
"oneToWatch": 5,
"firstTitle": 5,
"youngCard": 4,
"youngMajor": 9,
"retiring": 6,
"retired": 7,
"farewell": 6,
"comeback": 8,
/* … 13 more fields */
}
},
"sponsors": {
"signChance": 0.03,
"dropChance": 0.12,
"upgradeChance": 0.03,
"renewChance": 0.7,
"newsRank": 48
},
"darts": {
"switchChance": 0.04,
"slumpChance": 0.35,
"signatureRank": 8,
"signatureChance": 0.08,
"dip": 0.12,
"newsRank": 48
},
"youth": {
"maxAge": 23,
"features": 3,
"minGain": 2
},
"retirement": {
"announceMonth": 9,
"newsRank": 100,
"comebackChance": 0.03,
"comebackMaxAge": 55
},
"rivalry": {
"seedFinal": 0.06,
"seedClose": 0.035,
"aiGrowth": 0.3,
"bornHeat": 0.35,
"newsHeat": 0.45
},
"form": {
"window": 5,
"hotTitles": 2,
"slumpExits": 6,
"cooldownWeeks": 12,
"dartitisChance": 0.12,
"coachChance": 0.3,
"injuryChance": 0.0015
},
"agencies": {
"signChance": 0.015,
"switchChance": 0.004,
"newsRank": 16
},
"faces": {
"ageWeight": 0.6,
"agePenaltyAfter": 8,
"agePenaltyWeight": 6,
"wearWeight": 12,
"refreshAgeGap": 15
}
}