Guide

Exhibitions and bookings

Exhibitions are paid nights out on the circuit: club nights, pub takeovers, holiday parks, sportsman's dinners, charity nights, legends tours, trips abroad and cruises. Promoters book the player (through their agent, or directly for the odd local club), and the player earns an appearance fee, followers and public image, and pays in fatigue and practice time. Exhibitions never count towards rankings, the Order of Merit, match history, season stats or records.

Formats are content: a mod can add new ones, rebalance the core ones or replace them. They live in data/exhibitions.json or any file in data/exhibitions/. Each file is a JSON array. The editor schema is the exhibition formats reference. Patches target exhibition:<id>.

A format#

{
  "id": "acme.exhibition.pier-party",
  "name": "Arrows at the Pier: {town}",
  "kind": "holidayPark",
  "description": "Four pros, one pier theatre and a sell-out crowd of holidaymakers.",
  "locations": [
    { "town": "Llandudno", "venueKind": "pierTheatre", "country": "WAL" },
    { "town": "Southport", "venueKind": "pierTheatre", "venue": "The Pavilion" }
  ],
  "format": "knockout",
  "bestOfLegs": 7,
  "pros": 3,
  "proTiers": [1, 3],
  "standingMin": 45,
  "needsAgent": true,
  "fees": [
    { "standingMin": 0, "range": [900, 1800] },
    { "standingMin": 60, "range": [2000, 4500] }
  ],
  "fatigue": 0.07,
  "followers": [120, 320],
  "image": 2,
  "travelDays": 1,
  "when": "weekend",
  "months": [5, 6, 7, 8, 9]
}
FieldMeaning
idNamespaced id
nameShown on the offer. {town} becomes the location's town. Keep names fictional: no real promoters, venues or brands
kindclubNight, pubTakeover, holidayPark, sportsmansDinner, charity, legendsTour, overseas, pairsChallenge, cruise or corporate. Stories can ask about it (below)
descriptionOne or two lines, shown in a tooltip and on the night
locations1–80 places it's held. Each has a real town, a venueKind (below), a country (3-letter code, default ENG) and an optional fictional venue name. One is picked for each offer
formatHow the night is played (below)
matcheslocals and pairs: how many matches you play. Default 4
bestOfLegsLegs per match, odd. Default 3
prosOther pros on the bill: 3 for a knockout, 1 for a challenge or a pairs partner, 0–7 for locals. Default 0
proTiers[best, worst] tiers the other pros come from. Default [1, 3]
proAgeMinOnly pros at least this old (a legends tour)
localLevel[min, max] level of the local amateurs (the game's 0–100 scale; pub players are about 45–60). Default [45, 60]
standingMinYour standing (0–100, see staff) before promoters offer it. Default 0
tierMaxYou must be in this tier or better (1 = top). Default 5
needsAgentOnly offered through an agent. Default false
fees1–10 fee bands: { "standingMin": 40, "range": [500, 1200] } is £500–£1,200 from standing 40 up. The highest band you reach applies (the lowest one below all of them)
fatigueFatigue the night adds, 0–0.5 (on top of 0.025 a travel day). Default 0.06
followers[min, max] new followers (a bit more for a good showing). Default [20, 80]
imagePublic image change, −10…10. Default 1
travelDaysDays away. 0 = home the same night. The booking keeps you busy for max(1, travelDays) days, and each day costs 4 hours of practice on top of the night's 3. Default 0
whenmidweek (Tue–Thu), weekend (Fri–Sun) or any (not Monday). Default any
monthsOnly offered for nights in these months (a summer season, Christmas)
weightHow often it's offered relative to other formats. Default 1; 0 = never
colourOptional #rrggbb

Venue kinds: workingMensClub, socialClub, pub, holidayPark, hotelBallroom, pierTheatre, cruiseShip, leisureCentre, theatre, sportsClub.

Formats:

formatThe night
localsYou play matches short matches against local amateurs. Any other pros on the bill do the same
knockoutA four-player knockout with three other pros: the other semi-final, yours, then the final
challengeOne match against another pro, best of bestOfLegs
pairsYou and another pro take on matches pairs of locals (the match screen plays it as a pairs match)

The loader rejects a format with an unknown kind, venue kind or format, an even bestOfLegs, a fee range back to front, or no locations. It drops (with a warning) a format whose pros doesn't fit its format, and warns when a needsAgent format can never be offered because no staff role has a commission effect.

Places: a country's clubs and pubs#

A format's own locations are where the game's nights were first written for. To give another country its nights you do not copy the formats: you add an exhibition places record, in data/exhibitionPlaces.json (a list) or any file under data/exhibitionPlaces/.

[
  {
    "id": "mymod.places.ned.clubs",
    "country": "NED",
    "feeFactor": 1.15,
    "kinds": ["clubNight", "pubTakeover", "charity"],
    "formats": ["core.exhibition.big-night-out"],
    "places": [
      { "town": "Zwolle", "venueKind": "sportsClub", "venue": "De Gouden Pijl" },
      { "town": "Deventer", "venueKind": "pub" }
    ]
  }
]
FieldMeaning
idThe usual id: lowercase, starting with your mod's id
countryThe country every place in the record is in (3-letter code). Required: there is no default
feeFactorWhat a night pays here against the format's own fee bands: 1 (the default) is the same, 1.15 is 15% more. 0.25 to 4. The result is rounded to the nearest 25
kindsThese places host every format of these kinds
formats…and these formats, by id. Name something in kinds or formats, or the places host nothing (a warning)
places1 to 80 places: a town, a venueKind and an optional venue name
  • A night's places are its own locations and then the places of every record that names its kind or its id. A country may have several records (its pubs for club nights, its theatres for legends tours).
  • A night that belongs somewhere. A format with "ownPlacesOnly": true (the core's regional tours and its seaside and pier shows: "Highland Fling", "Arrows at the Pier") takes nothing from a record that names its kind, so it is never held in a country it was not written for, and it is offered only to a player who lives on the home circuit of one of its places (a player living in the Netherlands is not booked for a tour of the Highlands; nights abroad are the overseas kinds). Name it in formats if you do want it at your places. Set it on your own country's nights that only make sense at home.
  • Towns are real, venue names are invented. A pub night in a real town is fine; never use a real venue's, promoter's or brand's name.
  • Which kinds to give a country. On your own only formats without needsAgent are offered, and only at places on the home circuit of where you live, so clubNight, pubTakeover and charity places are what make the phone ring for a player living there. The Bookings page says so when no such night has a place near the player. overseas nights are about being away from home: leave them out of a country's own places.
  • The other pros. A night that needs other professionals still has to find them at its proTiers; nights played against locals need none.
  • Saves. A career keeps the places it began with and is given any record it does not have yet, so installing a country's places reaches careers already under way.

The loader warns about a record that hosts nothing, a formats id that is not installed, a kind no installed format has, and a country with no nation record. A record without a country is refused.

Offers and bookings#

  • Offers arrive once a month. On your own there's about a 40% chance of one, only from formats without needsAgent, and only from places on the home circuit of the country you live in (the UK and Ireland share one; any other country is its own). With an agent there are usually one or two, from any place: the agent looks in the country you live in first, then its circuit, then elsewhere (the tuning values bookings.placeShare.*, 80, 15 and 5 in the core, counted among those the night has a place in), and their offerValue raises the fee. An agency with the exhibitions speciality brings another offer most months, tilts towards the bigger nights (higher standingMin) and adds 12% to fees.
  • The date is 10–45 days ahead, on the format's days and months, never on a day you're entered in (or likely to be in automatically) an event, never on another booking, and for a weekend night only when the whole weekend (Friday to Sunday) is free.
  • The other pros are real players from the world (the Real World Pack's pros when it's installed), from proTiers (and proAgeMin), favouring players from the venue's region.
  • Accept, decline or negotiate. Negotiating uses the sponsor negotiation rules on the fee alone: the promoter has a hidden ceiling and some patience; ask too much and they walk. An agent can handle it: they settle a good way towards the ceiling and book it. An offer lapses after three weeks, or three days before the night.
  • Clashes. A booking can't overlap an event you're in automatically, or another booking. If it overlaps an event you entered, you're asked to choose: booking it withdraws you from the event (entry fee refunded). Entering an event on a booked night calls the booking off. If you later end up in an automatic event on the night, or a story has you sitting out, the booking is called off in the week it falls, with no penalty. Cancelling a booking yourself costs 2 image.
  • Commission. A booking made while you have an agent carries their cut; it's paid on the night if they're still with you. Bookings count in the agent's record on the Team screen.

On the night#

The week stops for the night, like an event: play your matches on the match screen or simulate them. The context is casual (no TV, little pressure, a friendly crowd). Local amateurs are made for the night from the country's name pool. Other pros' matches are simulated.

Afterwards:

  • The fee goes to Finances as Exhibitions, the agent's cut as Agent commission.
  • Followers (the format's range, a bit more for winning most of your matches) and image (+1 more for winning a knockout).
  • Fatigue (the format's plus travel), and fewer practice hours that week: 3, plus 4 for each travel day.
  • A result report in the inbox, and a story may follow (below).
  • Nothing is written to rankings, the Order of Merit, match history, head-to-heads, season stats, streaks or records. The Bookings screen keeps its own tally of nights, matches won and money earned.

Stories#

  • "trigger": "exhibitionEnd" fires after a night. won is true when you won most of your matches (a knockout: when you won the night).
  • "exhibitionKind": ["holidayPark", "cruise"]: the night was one of these kinds.
  • "hasBooking": true: you have an exhibition booked in the next 4 weeks (any trigger).
  • Text: {exhibition} (the night's name) and {town}. After a night they're that night's; otherwise your next booking's. {venue} and {city} are the night's venue name (if it has one) and town.
{
  "id": "acme.story.pier-karaoke",
  "trigger": "exhibitionEnd",
  "condition": { "exhibitionKind": ["holidayPark"], "chance": 0.3 },
  "title": "Karaoke in {town}",
  "body": "The darts at {exhibition} is over, and the entertainment team hand you a microphone.",
  "choices": [
    { "id": "sing", "label": "Give it everything", "effects": { "morale": 4, "image": 2 } },
    { "id": "no", "label": "Hand it to a volunteer" }
  ]
}

Testing#

The season summary includes an exhibitions: line: nights played, matches won, money after commission and the nights' names.

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