Guide

The organisations of the darts world

The bodies of the darts world are records of the content type organisations, in data/organisations.json or any file in data/organisations/. Each file is a JSON array. Two kinds of record carry rules of their own:

  • a regulator, which keeps the rule book: the offences a player can be charged with and what each one carries;
  • an association, the players' own body, with a membership and a yearly fee.

The other kinds (a junior body, and the bodies that run the tours: see Who runs what) are labels: what such a body does comes from its fields and from the tours, events and scenes that name it.

The core pack has one of each: the Darts Sim Regulator (core.org.dsr, DSR) and the Darts Sim Players' Guild (core.org.dspg, DSPG). A career shows both on the player's own Player page under Rules and membership: the two bodies, whether the rule book binds the player and why, the membership and its benefits, the player's record, and the rule book.

A regulator#

{
  "id": "acme.org.rules",
  "kind": "regulator",
  "name": "Acme Darts Council",
  "short": "ADC",
  "logo": "assets/orgs/acme.org.rules.webp",
  "description": "Keeps the game fair.",
  "affiliates": ["acme.org.union"],
  "boundDays": 28,
  "offences": [
    { "id": "acme.offence.chalk", "name": "Taking the chalk home", "category": "minor", "fine": 40 },
    { "id": "acme.offence.place-selling", "name": "Selling your place", "category": "serious", "fine": 10000, "suspendWeeks": 260 }
  ]
}
FieldWhat it does
idThe record's id, starting with your mod's id.
kind"regulator".
name, shortIts full name and its letters (up to 12 characters), as the page shows them.
logoAn image in your mod (see images). Without one the page shows short.
descriptionA sentence or two, shown as the name's tooltip.
affiliatesIds of organisations it works with. The loader warns about an id it cannot find.
boundDaysHow long an event entry binds a player who has no Tour Card: from the entry until this many days after the event ends. 28 when left out.
offencesThe rule book: see below.

The player is bound by the first regulator in load order: the core's, unless your mod replaces it by id.

Offences#

FieldWhat it does
idThe offence's id, starting with your mod's id. A charge names its offence by id alone, so an id must be used once across every rule book; the loader warns about one used twice, and the first one listed counts.
nameWhat the offence is, as the record and the letter show it.
descriptionA sentence on what counts, shown as a tooltip.
category"minor", "non-minor" or "serious".
warningtrue: a written warning. It takes no money unless fine is set too.
finePounds taken from the player's account when charged. 0 when left out.
suspendWeeksWeeks the player may not enter an event, counted from the day of the charge (0 to 520). 0 when left out.

Pulling out late#

A regulator can say what pulling out of an event after its cut-off costs, with a withdrawal block:

"withdrawal": {
  "offence": "acme.offence.late-withdrawal",
  "cutoffDays": 14,
  "fines": [500, 1000, 1500],
  "tours": [{ "tour": "core.tour.pro" }, { "tour": "acme.tour.majors", "factor": 2 }],
  "tvFactor": 2,
  "clearMonths": 12,
  "suspendAt": 4,
  "suspendWeeks": 4
}
FieldWhat it does
offenceThe offence of this rule book a late withdrawal is charged as. Its own fine is not used: the ladder below replaces it, and the rule book on the page shows the ladder. The loader warns when it is not in the rule book.
cutoffDaysPulling out is free until this many days before the event starts. 14 when left out.
finesThe fine for the first, second, third late withdrawal in the count. The last one repeats.
toursThe tours whose events the rules cover, each with a factor on the fines (1 when left out). Events of other tours are free to leave at any time. The loader warns about a tour it cannot find.
tvFactorA further factor at a televised event. 1 when left out.
clearMonthsMonths without a late withdrawal after which the count starts again. 12 when left out.
suspendAt, suspendWeeksThe late withdrawal in the count that also brings a suspension of suspendWeeks weeks; 0 for never.

After the cut-off the entry fee is not refunded and the fine is charged, unless the player has a current injury (the doctor's note): then the fee comes back and there is no fine. The calendar's withdraw dialog shows the cut-off, the fee and the fine before the player confirms. A missed registration is a story's withdraw action with "refund": false (see stories): out of the event, the fee kept, no charge.

Conduct on the oche#

A regulator's referees can act on conduct during a match, with a conduct block. At every leg end each player may overstep; the referee then takes the next step of the ladder for that player in that match.

"conduct": {
  "tours": ["acme.tour.pro"],
  "perLeg": 0.0005,
  "escalation": [1, 300, 300, 230],
  "composurePivot": 50,
  "composurePower": 2,
  "lostLeg": 1.5,
  "perLegBehind": 0.15,
  "hostile": 1,
  "tv": 1.25,
  "ladder": ["warning", "warning", "dockLeg", "forfeit"],
  "offences": [
    { "id": "acme.conduct.gesture", "name": "an obscene gesture", "weight": 2 }
  ]
}
FieldMeaning
toursThe tours whose events the referee acts at. Other events (pub nights, exhibitions) have no ladder.
perLegThe chance per leg end that a player of middling composure, in a quiet moment, oversteps.
escalationA factor on that chance by the steps the player already has in the match (the first: none yet). The last repeats. A player already warned is far likelier to go on.
composurePivot, composurePowerThe composure at which the chance is as given, and how steeply composure moves it: below the pivot it rises, above it falls.
lostLegA factor when the player has just lost the leg.
perLegBehindAdded to 1 for each leg the player is behind.
hostileAdded to 1 at full crowd hostility, softened by the player's crowd handling.
tvA factor on a televised stage.
ladderThe steps: warning, dockLeg (the leg is awarded to the opponent) or forfeit (the match is lost). The last step repeats.
offencesWhat a player does, as the referee's words and the news name it, with how often (weight).

The core's figures make a warning about one covered match in 300, a docked leg about one in 3,000 and a forfeit rarer than one in 20,000. The Player page's rule book shows the ladder, what the referee acts on and the tours.

Changing the referee in a mod. A mod's record with the core regulator's id (core.org.dsr) replaces it whole, so copy the core's record (offences and all) and change what you need. To see the referee act on screen, set perLeg to 1, composurePower to 0 and tours to ["*"], which means every tour: a new career starts on its country's local tours (pub nights, the Welsh, Scottish or Irish local circuits), which the core's referee does not cover. A career keeps the data it started with, so start a new career with the mod enabled; an existing save does not see the change. The draws come from a stream of their own, so a block added or changed does not move a single dart. A docked leg or a forfeit in the player's match, or in any televised match, is news; the match screen shows the referee's call and the commentary has the moments conductWarning, legDocked and matchForfeited (see commentary).

Charges, hearings and appeals#

A regulator with a discipline block runs every charge as a case. Without it a charge is settled on the day: the fine is taken and any suspension starts at once.

"discipline": {
  "replyDays": 14,
  "commissionerDays": 7,
  "commissionerMaxFine": 1000,
  "hearingDays": 21,
  "admitted": 0.75,
  "contested": 1.25,
  "ignored": 1.5,
  "recordFactor": 0.25,
  "recordMonths": 12,
  "suspendedMonths": 12,
  "payDays": 14,
  "lateRise": 0.5,
  "appealDays": 14,
  "appealSecurity": 800,
  "appealHearingDays": 28,
  "appealChance": 0.3,
  "associationHelp": 0.1,
  "conductOffence": "acme.offence.conduct",
  "othersAdmit": 0.6,
  "categories": [
    { "category": "minor", "commissioner": true, "clearChance": 0.25, "suspendable": true },
    { "category": "non-minor", "clearChance": 0.2, "costs": 750, "followers": 0.02, "news": true, "suspendable": true },
    { "category": "serious", "interim": true, "clearChance": 0.15, "costs": 2500, "followers": 0.08, "news": true }
  ]
}

How a case runs:

  1. The charge. A letter names the offence and the rule book's sanction, and asks the player to admit or contest it within replyDays. No reply by then counts as ignoring it, and the case goes ahead.
  2. Who decides. For a grade marked commissioner, when the offence brings no suspension, the commissioner decides commissionerDays after the reply, and fines no more than commissionerMaxFine. Every other case goes to a hearing hearingDays after the reply. A grade marked interim suspends the player from the charge until then.
  3. The outcome. A contested case is dismissed with the grade's clearChance. The rule book's fine and weeks are multiplied by admitted, contested or ignored, and by 1 + recordFactor for each offence proved within recordMonths. A hearing adds the grade's costs unless the charge was admitted. A first offence, admitted, of a suspendable grade is held as a suspended sanction for suspendedMonths: the next offence proved in that time brings it in on top of its own. A guilty outcome costs the grade's share of followers and, for a news grade, is news.
  4. Paying. The fine and costs fall due payDays after the outcome and are taken then. If the money is not there, the amount rises by lateRise and the player is suspended until it is paid, which happens as soon as the account allows.
  5. Appeal. Within appealDays the player may appeal with appealSecurity. It is heard appealHearingDays later and succeeds with appealChance. A successful appeal quashes the sanction and returns the security and anything paid; a failed one keeps the security.

A member of an association whose regulator is this one gets associationHelp added to the chance of clearing a case and of winning an appeal. A late withdrawal (above) is a fixed penalty: admitting it does not reduce the ladder's fine, and the record does not raise it. When a referee docks a leg or ends a match (conduct), the player is charged with conductOffence; a computer player is charged too, and the news reports the charge and, at the hearing, the outcome (admitted with the chance othersAdmit, otherwise contested).

The random draws come from a stream of their own for each case, so adding or changing the block moves no other result.

Integrity. A story can bring a charge with the charge action (see stories): at once, or with a chance and some weeks later, as when an offer for your place in an event was taken or kept quiet. The core's story "A Quiet Word in the Car Park" (events/narrative/money.json) is the example. A grade marked sponsors ends every sponsor deal still running on a guilty outcome. sellingOffence names the offence a computer player caught selling places in events is found guilty of, and othersCaught is the chance each week that one with a Tour Card, in othersCaughtTierMin or below, is caught: news, and the card is taken, so a tour place opens. A story's catchOther action does the same after a tip-off.

Agents#

A regulator's agents block sets its rules on managers and agents:

"agents": { "registeredOnly": true, "offence": "acme.offence.unregistered-agent", "exclusive": true, "approachWeeks": 13,
            "independentRegistered": 0.7, "unregisteredDiscount": 0.35 }
  • Registered agents only. An agency's registered (in staff/agencies.json, default true) says whether its agents are; an independent agent is registered at the share independentRegistered. An unregistered agent's commission and retainer are unregisteredDiscount lower, the Team page says why, and signing one while the rule book binds you is the offence, charged again each season you keep them.
  • Exclusive contract. While the agent's contract has more than approachWeeks to run, no other agent can be signed; in those last weeks a bigger agency may approach you.

Visas#

Visas are travel data, in data/travel.json under visas:

"visas": {
  "tripFree": [["ENG", "SCO", "WAL", "NIR", "IRL", "NED", "GER"]],
  "liveFree": [["ENG", "SCO", "WAL", "NIR", "IRL"], ["NED", "GER"]],
  "trip": { "fee": 90, "weeks": 3, "validWeeks": 26 },
  "residence": { "fee": 900, "weeks": 10 },
  "overrides": [ { "to": ["AUS"], "trip": { "fee": 30, "weeks": 1, "validWeeks": 52 } } ],
  "delayChance": 0.1, "delayWeeks": [1, 4], "tourCardWeeks": 1, "agentWeeks": 1
}
  • Playing abroad. The player needs a trip visa for an event in a country unless their nationality and the venue's country share a tripFree group, they live there, or they hold a residence permit for it. An event cannot be entered without one held or expected by its start; the calendar offers to apply. One still not ready on the day keeps the player out, the entry fee refunded.
  • Representing a country. An event where players represent their country (a team event whose teams.kind is nations, or unset) needs no visa: the governing body sees to it.
  • Living abroad. A move to a country outside the player's liveFree groups needs a residence permit first. A permit covers every country in a liveFree group with its own (one for England covers Scotland, Wales and Ireland). A career that starts out living abroad holds its permit from the first day.
  • Waits. weeks, less tourCardWeeks with a Tour Card and agentWeeks with a registered agent; now and then late by delayWeeks (at delayChance).
  • Only the human player needs visas. The computer's players travel as they always have; no world field changes.

Everyday duties#

A regulator's duties block covers the dress code and the media:

"duties": {
  "dress": { "tours": ["*"], "tvOnly": true, "banned": ["acme.equipment.trainers"], "offence": "acme.offence.dress-code", "warnDays": 7 },
  "media": { "offence": "acme.offence.media-duty", "followers": 0.01 }
}
  • Dress code. Banned kit (equipment ids) worn at an event the code covers (its tours, and only televised events when tvOnly is set) is charged when the event starts. A letter warns the player warnDays before an entered event, and the Regulator page shows the rule and any banned kit on.
  • Media. An interview after a televised match can be skipped; its Skip button names the fine. A skipped interview is charged when the next event starts, and costs the share of followers in followers.

Social media and marking a match are stories in the core pack ("Thumbs Hovering" in events/narrative/media.json, "Your Turn on the Scoreboard" in career.json), using the charge story action.

Adding offences. A mod that only adds offences does not need to replace the core's regulator. Give it a regulator record of its own with just those offences: the rule book is every regulator's offences in load order, and the core's body is still the one named on the page.

A charge takes its fine under the ledger category "Fines", writes a letter to the inbox, and stays on the player's record in the save.

An association#

{
  "id": "acme.org.union",
  "kind": "association",
  "name": "Acme Players' Union",
  "short": "APU",
  "logo": "assets/orgs/acme.org.union.webp",
  "regulator": "acme.org.rules",
  "membership": { "who": "tourCard", "fee": 300 },
  "benefits": ["Someone beside you at a hearing.", "Help with contracts."]
}
FieldWhat it does
kind"association".
regulatorThe regulator it deals with. The loader warns when that is not a regulator.
membership.whoWho belongs: "tourCard", every Tour Card holder.
membership.feeThe yearly fee in pounds. It is taken once a season, in the first week the player holds a card, under the ledger category "Players' association". A welcome letter comes the first time.
benefitsSentences listed on the page under what the association does for the player.

The players' association is the first association in load order that has a membership. The loader warns about an association without one.

A junior body#

"kind": "juniorBody": a body that runs junior events, such as the core pack's National Junior Darts Association. It has a name, initials, a logo and a description, and no rule book: the regulator's rules do not reach its events unless the regulator lists its tours. Its tours name it with their organisation field (see tours). Its membership may be { "who": "optional", "fee": 25, "discount": 0.2 }: a membership the player chooses to buy, for a share off the entry fees of its tours' events (the Join and the discount come with the second part of).

Who runs what#

. Every body of the darts world is an organisation, whatever it does:

kindWhat it isIn the core pack
tourBodyA body that runs a professional tour, or a regional circuit of onethe Darts Sim Organisation (DSO) and its circuits: DSO Kontinent, the Frontier Darts Corporation, Southern Cross Dart Players, Long Cloud Dart Players, DSO Nordic & Baltic, DSO Asia
federationThe world federation of national bodiesAllied Darts Nations (ADN)
nationalBodyA country's own body, or a body under oneeach scene's body (the Albion Darts Association, the Caledonia Darts Association ...), the Isles Darts Association (IDA, the UK's member of the ADN, which owns the County & Open Circuit) and Shires Inter-County Darts (SICD, the county league)
promoterAn independent promoterReplay Live (the Replay Live Series)
juniorBodyA body that runs junior eventsthe National Junior Darts Association

The kind is a label for screens: nothing in the game depends on it. A body of any kind may have these fields as well as id, kind, name, short, logo and description:

FieldWhat it is
colourOptional #rrggbb, its colour on screens
foundedOptional, the year it was founded
countryOptional, the nation code of the country it is based in
parentOptional, the id of the organisation it is a member of: a national body under its federation, a regional circuit under its tour body. The loader warns about a parent that does not exist, or one that leads back to the body

Who runs a tour, an event or a scene. A tour names the body that runs it with organisation (see tours). An event may name another (organisation on the event: the core pack's county league matches are the SICD's, inside the IDA's County & Open Circuit). A scene names its governing body with organisation (see scenes); body stays the name the scene's screens show. The loader warns about an organisation that names no organisation; the record is still used, without an owner.

Every organisation has a logo (the core pack's are square WebP in assets/orgs/, 512 px with a 128 px copy named <id>@128.webp).

On screens. A career has two views of them: organisations, every body with what it runs this season, and organisation (with an id), one body's page: its parent and member bodies, its tours, this season's events with their fees (and the member's fee), and the player's membership where one can be held.

Words#

The page's own words are in the game's language files (player.regulator.*); the letters and ledger memos are texts in the core pack (core/data/texts/regulator.json, ids core.text.regulator.*), which a mod or a translation can replace.

A career under way#

A career keeps its own copy of these records from the day it starts, as it does for the rest of the data. A save made before the game had them is given the installed packs' records when it is opened.

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