Guide

Equipment, kit and signature development

What you throw with, wear and carry matters. Every item fills a slot, builds familiarity the more you use it, wears a little, and works with (or against) the rest of your setup. Late in a career you can commission your own signature darts, flights or shirt.

Design#

Slots: what each kind of item does#

Each slot has one clear job and moves specific levers in the match engine. There's no single "kit effect %".

SlotIdWhat it does in a match or week
Darts (barrel)dartsThe big one: treble grouping (scoring), doubles and bull (doubles) and consistency, plus hidden personal fit
PointspointsFewer bounce-outs (bounce), a little doubles bite
FlightsflightsFlight stability (consistency), a little treble grouping; their shape sets the setup's balance
StemsstemsStability and a little doubles; their length sets the balance
Grip aidgripWax or chalk: fatigue and hot stage lights loosen your throw less (grip)
Playing shirtshirtComfort (stamina) and sponsor visibility (followers)
FootwearfootwearA stable stance: fatigue builds more slowly in long matches (stamina), a little consistency
EyeweareyewearEffective eyesight points, only up to a ceiling: players with sharp eyes gain nothing
Lucky charmcharmcomposure under pressure. Grows with time, and stories if you lose it
Practice boardboardWeekly training gains, and faster familiarity with new kit (practice)
Practice techtechA scoring app or tracker: faster familiarity (practice), a little training, and fit readings (insight)
Travel casecaseLighter travel load (travel), and your kit is less likely to be damaged or lost on the road (protect)

Levers, as the engine applies them (all small: a whole elite setup is a few per cent):

StatUnitEngine lever
scoring% tighterSpread on trebles and singles
doubles% tighterSpread on doubles and the bull
consistency% steadierDay-to-day form swing and in-match streakiness
bounce% fewerBounce-out chance off the wires
stamina% slowerIn-match fatigue build-up
grip% lessHow much fatigue loosens your throw (doubled under TV lights)
eyesightpointsEyesight on the oche, never above the setting's ceiling (default 92)
composurepointsComposure on the oche
training%Weekly training gains
practice%Familiarity grows faster
insight0–1Reads fit like a (weaker) kit technician
travel%Travel load lighter
protect%Chance of kit damage or loss on the road reduced
followers%Follower growth from events

A good, matched and familiar setup is worth roughly +0.5 to +2 on your average. A poor, clashing or brand-new one costs about as much.

Fit (hidden, personal)#

Everyone has a natural dart weight, grip, barrel shape and length, and a preferred flight shape. How well each part suits you is hidden. You get a feel for it once you're familiar with it ("Feels like part of your hand" … "Feels wrong"). A kit technician gives the exact reading; a practice tracker (insight) gives a rough one. Good fit adds up to about 2% on darts; bad fit takes as much away.

Reading fit#

Fit stays hidden, but a swap is a call you can read, not a dice roll. None of this changes how a dart flies: it only tells you about it.

  • Fit is two parts. The spec against your preferences (weight, grip, length, barrel shape; a flight's shape), and a personal quirk no spec sheet shows (half of a barrel's fit, 70% of a flight's, nearly all of a stem's). Only throwing an item shows its quirk.
  • The read. Every item in a slot with a fit you don't know yet gets a read on paper in the pro shop: how its spec compares with what you use now ("3g lighter than you're used to") and whether that should suit how you throw ("closer to what suits your tempo", "it may grab on release"). The reader is the best of your kit technician (technical skill), darts coach (analysis, at 70%), performance analyst (analysis, at 60%), a tracker's insight, or your own eye (0.2). The clearer the reader, the more lines they call; the rest say they can't tell. A read is never wrong, only vague.
  • The estimate. A band on a scale from wrong to part of your hand, with a verdict (Should suit you, Promising, Probably fine, Could go either way, Doubtful, Unlikely to suit you) and how sure it is (A rough guess … Sure). No numbers. Before you've thrown it, the band covers the unknown quirk and whatever the reader might have misjudged; as you get to know the item (familiarity from new to a feel, and trial sessions) it closes in on the truth, which is always inside it.
  • Trial sessions. Throw an item in practice: a demo on the shop's oche (4% of the price, at least £5) or free with your own. One a week per item, three at most. Each brings notes on the spec (clearer each time) and, from the second, the feel. Trials take you at most 60% of the way: match darts do the rest.
  • Settling in. While equipped kit beds in, Your setup shows the estimate and which way it's been going week by week (Growing on you, Holding steady, Not clicking yet). Once it's familiar enough for a feel, darts and flights get a verdict in the inbox from whoever reads your kit, once.
  • The numbers. Each spell with a dart setup (darts, points, stems and flights) keeps its matches: average, treble rate, checkout %, and the T20 grouping from logged darts. Your setup and Analytics compare this setup with the last. A difference only counts when it's bigger than chance would give over that many matches (about two standard errors); under 3 matches it's too early to tell, and under 8 a real difference is marked as an early sign. When both spells reach 8 matches, the numbers get an inbox message.
  • The setup, explained. The readout names the parts each synergy or clash turns on (and marks them on the dart), lists synergies one change away (every condition holds bar one, on a single slot, or the balance) with a button to that slot in the shop, and says what would even out an off-balance dart.

Old saves: kit you already had a feel for gets no verdict message, and the spells start from the next match.

Balance and compatibility#

Balance comes from the barrel (weight, and a torpedo's front loading) against the tail (flight area × stem length):

  • Balanced: a synergy (steadier, slightly tighter).
  • Slightly nose- or tail-heavy: no effect.
  • Unstable: a heavy front-loaded barrel on short stems and slim flights dips on landing. A light barrel with big flights on long stems floats. Either costs consistency and grouping.

Rules are content (data/kit/rules.json) with clear reasons, in three kinds:

  • Block: they can't go together. Movable points need a movable-point barrel; integrated flights take no stem. Equipping one takes the other off.
  • Clash: works, but badly. Examples: aggressive knurling plus grip wax, a heavy barrel on nylon stems, long points on a stubby barrel.
  • Synergy: works well together. Examples: a matched brand set (darts, flights and stems from one brand), your sponsor's shirt or darts on show, a signature set, board plus tracker.

The setup panel lists every active rule with its reason. The shop warns before you buy something that would clash with what you're using.

Integrated flights#

Integrated flights are flights moulded in one piece of plastic with their own shaft, which screws straight into the barrel. They are ordinary items in the flights slot marked stats.integrated: true, with the shaft's length in stats.length (19 short, 26 in-between, 33 medium, 41 long) and a shape.

  • They replace the stem. The core block rule core.kitrule.integrated-no-stem (integrated flights plus anything in stems) takes the stem off when you fit them. Fitting a stem while they're on takes them off in turn, and your most familiar ordinary flights go back on. Your setup shows the Stems slot as Moulded into your flights.
  • Balance. Their shaft counts as the stem (its length against the neutral stem length), and the one-piece tail adds balance.integratedTail (0.08) to the tail. For the rules, integrated flights stand in for the stems too: a matched set needs only darts and flights of one brand, and "Sits short" reads the shaft's length.
  • Effects. The flight can't turn or slip on its shaft: the core synergy One piece adds a little consistency and a few % fewer bounce-outs (fewer darts glancing off a flight in a tight group). Locked in (a balanced setup) adds a little more; Rigid and off-balance (an unstable one) costs a little.
  • Wear and familiarity. They wear out like flights, but slowly: give them a life of 26–40 weeks (film flights last 14). They bed in like any flights.
  • Art. Leave out asset: the shop draws a product shot of three of them with the 3D model, in the item's look.primary (and secondary and pattern, if it has a print). Give them look: { "primary": "#rrggbb", "metal": false }.
  • Signature darts can ship with them: in the designer's Flights & stem tab, pick Integrated flights and a shaft length. The launched set comes with its own integrated flights (a signature part).

A save that somehow has a stem and integrated flights both fitted keeps the flights and takes the stem off when it loads (any block that holds is resolved this way: the later slot comes off).

Familiarity#

Every owned item has a familiarity from 0 to 100%:

  • New item: starts at 15% (sponsor kit the same, signature items at 55% because you tested the prototypes).
  • Equipped: grows every week towards 100%, fastest at first. It grows faster the more you practise, the more matches you play (each one counts) and with a board or tracker (practice). Darts take about six weeks to feel right; flights three; stems and points two; a lucky charm grows luckier over months.
  • Unfamiliar kit has a dip in grouping (new darts about 3.5% at first), and its own effects are only partly there (40% → 100% of the item's potential).
  • Unused: fades slowly, but never below a muscle-memory floor once you've really known it.

So swapping darts the week before a major is a real decision.

Wear and care (light)#

  • Flights wear out over a few months, points over a year or so, and a barrel's grip over years. Worn kit loses some of its effect and has a small penalty (worn points bounce out more).
  • Replace flights and points: a fresh set of the same kind keeps your familiarity. Re-grip darts for a fee.
  • A kit technician slows wear (new kitCare hook) and services worn kit automatically, at cost.
  • Rarely, kit is damaged or lost on the road (stories). A good travel case makes it rarer.

Items and availability#

About 150 items from the fictional brands (the darts, apparel and board sponsors, plus a few independents), in tiers from budget to elite:

  • Shop range: items you meet the requirements for.
  • Locked: shown with what unlocks them (tour tier, reputation or followers).
  • Sponsor issue: never in the shop. Your brand sponsor sends them.
  • Limited editions: drop into the shop now and then for a few weeks. They come with a news story and some fuss on the social feed, then they're gone.

Signature development (the workshop)#

Commission your own signature darts, flights or stage shirt: darts at a large cost over months, flights and shirts quicker and cheaper. Each maker card in the Workshop has a Design darts, Design flights or Design a shirt button for what it makes (a modded slot with no designer of its own gets a simple brief: a name and a finish).

  1. Choose a manufacturer. Each has a quality (1–5), a cost multiplier, a lead time, reliability (the chance of delays) and a royalty share. The top workshops only take on established players.
  2. Brief. Design it. Darts: weight, barrel profile, grip, length, finish and name. Flights: shape, material and print. Shirt: the whole shirt, in the shirt designer.

Darts are drawn in the 3D designer: a product-shot render of the dart (the match's model) that changes as you go, with views of the whole dart, the barrel's grip and the flights, and a compare mode against your current darts. The brief sits beside it in tabs (Barrel, Grip, Finish, Flights & stem, Name), the same height as the stage, with the quote pinned at the bottom; changing tab moves the camera to the part you're working on. What affects play: weight, length, the grip's bite and the barrel shape (they set fit; front-loaded plays as a torpedo, slim parallel as a straight), and the tungsten grade (80–97%: a slimmer barrel for the weight groups tighter, +0.04 treble grouping per point over 90%, and costs more; 95% needs a workshop of quality 3, 97% quality 4). Heavier for the length, or less tungsten, draws a fatter barrel. Cosmetic: the cut (ringed, micro-grip, shark fin, knurled) and where it goes, the coating (bare tungsten, black or gold titanium, colour PVD, two-tone; cuts show the bare metal through a coating), accent rings, an engraving on a smooth stretch, and the flights, stem and point the set ships with (the flight print can go on whatever flights you fit). The set can ship with a separate flight and stem, or with integrated flights (a shaft length to choose): then it launches with its own set of them, a part that plays like any integrated flights.

Flights are drawn in the flight designer: the same 3D stage, close up on the flights or the whole dart on your current barrel, with a compare mode against your current flights. Its tabs: Shape (standard, slim, kite, pear, fantail, vortex; separate flights or integrated, with the moulded shaft's length), Material (standard 100 micron, thick 150 micron, rip-stop nylon, moulded), Print (a base and second colour, a print: plain, stripes, chevrons, sash, target, split band or rings, a printed name or word, on one side of each vane or both) and Name. What affects play: the shape (it sets fit and the balance's drag), the material (how long they last, how steady they fly) and integrated (fewer glance-offs; it takes the stem's place). Tougher materials and integrated flights cost more; nylon needs a 3-star workshop, moulded and integrated flights a 4-star one. The material and integrated were bought with the quote, so they're fixed after it; the shape and print can change between rounds.

Shirts are designed in the full shirt designer inside the workshop (Colours, Pattern, Cut & trim, Lettering, Name & fabric), with the workshop's extras: its fabric tech (a wicking weave, cooling mesh panels from a 3-star studio, a cool-knit stage fabric from a 5-star one: stamina, and a little late-match grip), exclusive patterns a good enough studio prints (a shirt pattern with workshop: 4 needs a 4-star studio; the shirt designer never offers them), your signature embroidered on the chest, and a signature range in the shops that pays royalties like signature darts. The stage shows the front and back renders. The fabric tech is fixed after the quote; everything else can change between samples.

  1. Stages (content: kitSettings.development.stages): design brief, prototypes, testing and feedback, refined prototypes (as many rounds as the maker offers), tooling and production, then launch. Each stage takes weeks and costs its share, paid when it starts. A stage you can't afford waits.
  2. Testing. For a shirt, the studio sends samples: the sample on the stage, with their notes ("the pattern's a touch busy under TV lights", "your name reads from the back of the hall"), to tweak and go again. For flights, prototype flights in 3D with the workshop's notes on the shape, the material and the print. For darts, you throw the prototypes. The report tells you how they feel ("a touch heavy", "a touch front-heavy for you"): accurate with a top workshop or a kit technician, vaguer otherwise. You adjust the targets or sign off. This is how you discover your hidden preferences. Each round is kept, so you can compare prototype 1 and 2 in 3D; the design can change between rounds, the tungsten can't (it was bought with the quote).
  3. Delays and stories: a batch fails inspection, the tooling breaks, a leak on social media.
  4. Launch. A bespoke item tuned to you, and better than anything in the shop if the testing went well. News and a social media fuss, and a launch reveal (darts and flights turn out of the dark under a light sweep; a shirt turns and flips front to back). Merchandise royalties paid monthly: they scale with your followers, peak at launch and settle down after. Signature flights carry their design (flightDesign) into Your setup and the match. A signature shirt is an owned shirt with its design: it's in Your shirts (a fixed design: it can't be reprinted in the shirt designer), in the shop as your range, and wearing it recolours your avatar.

Darts cost about £15,000 at an average workshop (the best take twice that), flights about £1,500 and a shirt about £4,500. Darts take four to seven months; flights about half as long and shirts about two thirds (development.pace), with at most two rounds of testing (development.rounds).

Flight and shirt projects started before their designers keep going: when the save loads they get a design from the finish they were commissioned in (its colours and print, the brief's shape; a shirt blank's design with your name on the back).

Old saves#

Your equipped and owned items carry over. Equipped kit starts at 95% familiarity (70% if it went in during the last few weeks), and locker items at 40%. New items, slots, rules and makers arrive from the installed packs. Kit lives in career_state, so there's no schema migration. When a save loads, any parts that a block rule says can't go together are sorted out: the later slot in the setup comes off (a stem beside integrated flights, fixed points on a movable-point barrel).

The shirt designer#

Design your own playing shirt in Equipment → Shirt designer, with a live front and back render on a studio backdrop. The form sits beside the shirts in tabs (Colours, Pattern, Cut & trim, Lettering, Name & fabric), the same height as the stage, with the price and the Print button pinned at the bottom:

  • colours for the body, sleeves, collar, cuffs and trim (a swatch, or any colour)
  • a sublimated pattern (brush strokes, shards, flames, camo, smoke, grunge, contours, lightning, dartboard segments, flights, halftone, stripes, pinstripe, hoops, chequer, sash, chevron, sleeve stripes...) with its own colour, strength and size, on the body only or on the sleeves too
  • a collar (crew, polo, button placket, V-neck), side panels and piping in the trim colour, and a monogram crest
  • your name (or nickname) and a number on the back, in a lettering style
  • your country's flag on the sleeve (optional)
  • a fabric

The shirt is drawn by the layered shirt renderer: a photographed blank white shirt (a cut) is tinted region by region (body, sleeves, cuffs, collar, placket, side panels), the pattern is printed into the body, and the logos, crest, flag, name and number go on as prints. Then the shirt's own shading goes over everything, so folds, seams and the knit show through any colour, and the prints bend a little with the folds. See Shirt cuts and patterns.

Your active sponsors' logos go on automatically: your biggest deal on the chest, the next two on the sleeves and the fourth on the back. Each logo on show adds follower growth (designer.placements).

Printing costs designer.printCost plus the fabric's price. The shirt becomes an owned item with the fabric's tier and effects. Reprinting with the same fabric costs only the printing. Keep as many designs as you like and wear whichever you want. Wearing a designed shirt recolours your avatar (and so the walk-on). The hub view exposes the design as me.shirt: the design, its resolved look (colours, pattern, cut, collar, lettering, crest, panels) and the sponsor placements. Designed shirt items also carry look. In the renderer, renderShirt(look, 'front' | 'back', size, logos) draws it to a canvas, and renderShirtUrl / renderShirtDataUrl give a cached image for cards, avatars or the match view.

A brand that only sells kit. A brandId names a sponsor record. Give that record "offers": false and it is a brand in the shop only: it never offers a sponsorship and no computer player takes it as a brand.

Shop shirts are built with the designer too. A shirt item can carry a design (see Designed shirts); the shop, the item detail, Your setup and the kit strip then draw it with the same renderer instead of showing its picture, and wearing it recolours your avatar. A shop shirt carries its own brand on the chest (the brandId sponsor's logo, or its name as a wordmark), never your sponsors, and no logo at all when it has no brand. Once you own one, Customise a copy opens it in the designer as a new design of your own: same colours, pattern and cut, with your name, crest and flag, printed on a fabric of your choice with your sponsors on it.

Designs saved before the layered renderer keep working: old pattern ids are mapped through each pattern's aliases (swirl became brush strokes, panels became plain with side panels), and the collar and cuffs default to the trim colour, as they were drawn before.

Modding reference#

Kit content is seven content types. Each has an editor schema in schema/:

TypeFilesSchema
equipmentdata/equipment.json, data/equipment/*.jsonthe kit items reference
kitSlotsdata/kit/slots.json, data/kit/slots/the kit slots reference
kitRulesdata/kit/rules.json, data/kit/rules/the kit rules reference
kitMakersdata/kit/makers.json, data/kit/makers/the workshops reference
kitSettingsdata/kit/settings.json (settings)the kit settings reference
shirtCutsdata/kit/shirt-bases.json, data/kit/shirt-bases/the shirt cuts reference
shirtPatternsdata/kit/shirt-patterns.json, data/kit/shirt-patterns/the shirt patterns reference

List them in your mod.json provides. Records merge by id, and JSON merge patches work as for every other type. Existing saves pick up the installed packs' catalogue, slots, rules, workshops and settings when they're loaded (items you own that a pack no longer has are kept).

Items (equipment)#

{
  "id": "acme.equipment.meteor-23",
  "kind": "darts",
  "name": "Meteor 23g",
  "brandId": "acme.sponsor.meteor",
  "price": 150,
  "tier": "pro",
  "description": "A front-loaded torpedo with a laser grip.",
  "stats": { "weight": 23, "profile": "torpedo", "grip": 0.7, "length": 50, "system": "fixed" },
  "effects": { "scoring": 1.2, "doubles": 1.0, "consistency": 3 },
  "availability": { "tierMax": 3 },
  "asset": "assets/equipment/meteor.webp"
}
  • **kind**: a slot (kitSlots.slot).
  • **stats**: what rules and balance read. The fields are weight, grip (0–1), length (mm), profile (straight, torpedo, bomb, scallop), shape (flights: standard, slim, kite, pear, fantail, vortex), material, texture (points), system (fixed or movable points), spin (stems), integrated (flights moulded onto their own shaft, whose length is length: see Integrated flights) and finish.
  • **effects**: what it does at full familiarity (see the stat table above).
  • **tier**: budget, club, pro, elite or signature. It's worked out from the price when left out.
  • **availability**:
    • tierMax, reputationMin, followersMin: requirements. Items you don't meet show as locked, with the reason.
    • sponsorOnly: sent by the brand, never sold.
    • limited: drops into the shop now and then for shop.limitedWeeks, once a career.
    • signature: a signature blank, whose art and finish a workshop item takes.
  • **life**: weeks of use before it's worn out (the slot's default otherwise).
  • **look**: dart parts' colours for the 3D render (flights' print colours and pattern, a stem's or point's colour, a barrel's coating).
  • **design**: shirts only, see below.
  • **dartDesign, flightDesign**: darts and flights, see below.

Designed shirts (design)#

A shirt with a design is drawn by the shirt renderer everywhere it shows; asset stays as the fallback (an older game, or a pack without shirt cuts). The fields are those of a design you save in the shirt designer, minus the personal ones (name, fabric, flag, sponsors):

{
  "id": "acme.equipment.meteor-stage-shirt",
  "kind": "shirt",
  "name": "Meteor Stage Shirt",
  "brandId": "acme.sponsor.meteor",
  "price": 60,
  "effects": { "followers": 4, "stamina": 2 },
  "design": {
    "base": "#0f1115",
    "trim": "#39d353",
    "sleeve": "#0f1115",
    "pattern": "core.shirt-pattern.shards",
    "patternColour": "#39d353",
    "patternOpacity": 0.6,
    "patternScale": 1,
    "patternSleeves": true,
    "collar": "polo",
    "collarColour": "#39d353",
    "cuffColour": "#0f1115",
    "sidePanels": false,
    "piping": true,
    "crest": true,
    "crestText": "M",
    "font": "sport",
    "backName": "METEOR",
    "number": "23"
  },
  "asset": "assets/equipment/meteor-stage-shirt.webp"
}
  • **base, trim (required): body and trim colours. sleeve defaults to the body; collarColour, cuffColour and patternColour** default to the trim.
  • **pattern**: a shirtPatterns id or alias (default plain). An unknown one is a warning and draws plain. **patternOpacity (0–1) and patternScale (0.5–2) default to the pattern's own; patternSleeves** prints it on the sleeves too.
  • **collar**: a designer collar id (core: crew, polo, button, vneck); it picks the cut.
  • **sidePanels, piping**: in the trim colour.
  • **crest (default off) with crestText**: up to three letters in the chest crest (the item's, not the player's).
  • **autograph** (up to 32 characters): a signature embroidered across the chest, opposite the crest (signature-range shirts carry the player's name).
  • **mesh**: cooling mesh side panels, drawn as a fine perforated mesh.
  • **font, backName (up to 14 characters) and number** (up to two digits): lettering on the back.

Only shirts can have a design (on other kit it's ignored with a warning). Signature shirts made from a designed blank take its design.

Designed darts (dartDesign)#

Darts can carry a dartDesign, drawn exactly by the 3D renders (Your setup, the match, the workshop). Signature darts get one from the 3D designer; a mod's shop darts can have one too. Every field is required: profile (straight, torpedo, bomb, scallop, front, pencil), tungsten (80–97), cut (ring, micro, shark, knurl), zones (full, front, centre, rear, split), finish (tungsten, black, gold, pvd, twotone), colour and colour2, bands (up to three { at: 0–1, colour }), engraving (up to 14 characters), flight ({ shape, colour, colour2, pattern, text, onYours }), stem ({ material: nylon | aluminium | carbon | titanium, colour, length, integrated? }: with integrated: true the set ships with integrated flights, moulded in the flight's colour on a shaft of length 19, 26, 33 or 41 mm) and point ({ style: grooved | smooth, length, colour }). Play still comes from the item's stats and effects.

Every shop dart in the core pack has one (tools/darts/shop_designs.py writes them), and its picture is a render of that design: the developer screen dartShopShots photographs each designed dart as a cut-out (tools/editor/states/dartshop.txt) and tools/darts/shop_webp.py writes the 512 × 512 asset. Give the silhouette one that plays as the item's stats.profile (front plays as a torpedo, pencil as a straight). The shop's 3D stage shows the barrel with the parts you have fitted; a player with nothing fitted sees the design's own flights, stem and point.

Designed flights (flightDesign)#

Flights can carry a flightDesign, drawn exactly by the 3D renders (Your setup, the match, the workshop and the shop's product shots). Signature flights get one from the flight designer. Every field is required: shape (standard, slim, kite, pear, fantail, vortex), integrated (moulded onto their own shaft), shaft (the moulded shaft's length: 19, 26, 33 or 41 mm), material (standard, thick, nylon, moulded; integrated flights are moulded), colour and colour2, pattern (solid, stripe, chevron, sash, target, split, ring), text (up to 12 characters along the vanes) and sides (one or both: a one-sided print leaves the backs of the vanes plain). An optional logo (an image in your mod, like assets/flights/acme.webp) is printed on the vanes in place of the text; the text is printed instead if the image cannot be read, so keep a short one. A square or round logo with a clear background prints best. Play still comes from the item's stats (shape, integrated, length) and effects; give an integrated one stats.integrated and stats.length to match.

"flightDesign": {
  "shape": "kite",
  "integrated": false,
  "shaft": 33,
  "material": "thick",
  "colour": "#15171c",
  "colour2": "#f4c152",
  "pattern": "target",
  "text": "ACORN",
  "sides": "both"
}

look.pattern takes the same prints (sash and target are a wide diagonal sash and a dartboard target).

The darts slot has personal fit (weight, grip, profile, length), and so do flights (shape). Other slots with a fit have a personal quirk.

Slots (kitSlots)#

{ "id": "acme.slot.hat", "slot": "hat", "name": "Hats", "single": "Hat", "description": "…", "group": "body", "impact": "support", "order": 95 }

Optional fields:

  • **familiarity: { weeks, dip }**: how fast it beds in, and the % dip in grouping when brand new. Leave it out for kit that works at once.
  • **fit**: the % grouping at a perfect fit.
  • **wear: { weeks, worn, service, cost }**: its life, the penalty when worn out, replace or regrip, and the service cost as a share of the price.

A new slot works with generic effects. The dart diagram only draws darts, points, stems and flights.

Rules (kitRules)#

{
  "id": "acme.kitrule.meteor-set",
  "name": "Meteor set",
  "kind": "synergy",
  "text": "Meteor darts with Meteor flights: tuned together.",
  "when": [
    { "slot": "darts", "field": "brand", "op": "eq", "value": "acme.sponsor.meteor" },
    { "slot": "flights", "field": "brand", "op": "eq", "value": "acme.sponsor.meteor" }
  ],
  "effects": { "consistency": 1.5 }
}
  • **kind**: synergy, clash, or block (can't be used together: equipping one takes the other off; effects are ignored).
  • **when**: every condition must hold. A condition is one of:
    • { slot, field, op, value }: field is a stat, or brand, item or tier; op is eq, ne, in, notIn, gte, lte, gt or lt. An empty slot never matches.
    • { slot, equipped }
    • { sameBrand: [slots] }
    • { balance: "balanced" | "noseHeavy" | "tailHeavy" | "unstable" }
    • { sponsored: slot }: made by one of your sponsors.
    • { signature: slot }: your own signature item.

Workshops (kitMakers)#

FieldMeaning
slotsWhich signature items it makes (they need a development.slots cost)
quality1–5: the finished item's effects, and how clear the prototype feedback is
costA multiplier on the slot's base cost
leadWeeksWeeks per prototype batch
reliabilityThe chance each stage runs on time
roundsHow many test rounds it offers
royaltyA multiplier on merchandise royalties
requirestierMax, followersMin, reputationMin
logoOptional square mark on its card (else its initials): see Images

Settings (kitSettings)#

One object with an id. Every field is optional, and later records win per field:

  • **familiarity**: start, signature, decay, floor, match, practiceHours, legacyEquipped, legacyOwned.
  • **balance**: front (per profile), area (per flight shape), weight, stem, integratedTail (what an integrated flight's one-piece tail adds), the balanced and unstable thresholds, and balancedEffects, noseHeavyEffects, tailHeavyEffects.
  • **eyesightCeiling**.
  • **wear**: match (a match's share of a week), worn (the worn-out threshold).
  • **shop**: limitedChance (a month), limitedWeeks.
  • **development**:
    • slots: the base cost per slot.
    • stages: { id, name, kind: design | prototype | test | production | launch, weeks, lead, cost, text }. Testing loops back to the last prototype stage for another round.
    • royalty (per follower a month), hypeBoost, hypeMonths.
    • pace: per slot, the stages' weeks × this (core: { "flights": 0.5, "shirt": 0.7 }).
    • rounds: per slot, at most this many test rounds whatever the maker offers (core: { "flights": 2, "shirt": 2 }).
    • terms: per slot, a stage kind's name and text for that slot, e.g. { "shirt": { "prototype": { "name": "Samples", "text": "Sample shirts are cut, printed and stitched." } } }.
  • **designer**:
    • printCost, and placements (follower % for a chest, sleeve and back logo).
    • patterns: the old pattern list ({ id, name, style, scale }). It is only used when no pack provides shirtPatterns; add new patterns there instead.
    • collars: { id, name, style: crew | polo | button | vneck, cut? }. cut picks a shirt cut by id; without it, the first cut that lists the collar's style is used.
    • fonts: { id, name, family, weight, italic }, where family is a CSS font stack.
    • fabrics: { id, name, tier, price, effects, description }.
    • These lists merge by id: a mod can add a pattern or restyle a fabric without repeating the rest.
{
  "id": "acme.kit",
  "designer": {
    "fabrics": [
      {
        "id": "acme-retro",
        "name": "Retro cotton",
        "tier": "club",
        "price": 60,
        "effects": { "stamina": 1, "followers": 1 }
      }
    ]
  }
}

Shirt cuts and patterns (shirtCuts, shirtPatterns)#

Cuts are the shirts the designer draws on. Each has a front and a back image: a square PNG or WebP of a blank, bright white shirt on a transparent background, lit evenly, with its folds and seams. The whiter and more even the fabric, the truer the colours come out (the renderer treats the fabric's typical brightness as "no shading"). Over each image you trace the regions as SVG paths, in the image's pixel space (size, 1024 for core):

  • regions: sleeveL, sleeveR, cuffL, cuffR, collar, inner (the inside of the shirt seen through the neck), placket, sideL, sideR. Every region is clipped to the shirt's own outline (the image's alpha), so a path only has to be exact where it meets another region, usually along a seam. It can run off the shirt everywhere else. The body is whatever no region covers. collar uses the even-odd rule, so a second sub-path cuts a hole in it.
  • print: where things go, as { x, y, w, h, rotate } boxes (centre, size, degrees): chest (the main sponsor), crest, sleeveL, sleeveR (sleeve sponsors), flag, back (back sponsor), name, number, and placket for a cut drawn with the button collar but no placket of its own.
  • collars: the collar styles this cut draws (crew, polo, button, vneck).
{
  "id": "acme.shirt-cut.raglan",
  "name": "Raglan",
  "collars": ["crew"],
  "frontImage": "assets/shirts/raglan-front.webp",
  "backImage": "assets/shirts/raglan-back.webp",
  "size": 1024,
  "front": {
    "regions": {
      "sleeveL": "M0 0 L300 0 L270 440 L0 470Z",
      "sleeveR": "M1024 0 L724 0 L754 440 L1024 470Z"
    },
    "print": { "chest": { "x": 512, "y": 310, "w": 380, "h": 176 } }
  },
  "back": {
    "regions": {},
    "print": {
      "name": { "x": 512, "y": 290, "w": 380, "h": 64 },
      "number": { "x": 512, "y": 505, "w": 320, "h": 240 }
    }
  }
}

A cut can reuse another's image (core's V-neck uses the crew back). To make one, draw the cut's front and back images, then trace the seams on the result.

Patterns are printed into the body (and, if set, the sleeves) in the design's pattern colour and strength. A pattern is either:

  • a texture: a square image whose alpha is the ink (opaque = full pattern colour). It's tiled across the shirt at scale, mirrored on the back. Black-on-white art can be turned into one with gen-art's texture post step.
  • a procedural style the renderer draws: stripes, pinstripe, hoops, gradient, chequer, sash, chevron, halftone, dartboard, flights, argyle, shockwave, sleeveStripes (sleeves only).
  • neither: plain.

Also scale (0.25–4), opacity (the default strength), sleeves (on the sleeves by default), aliases (old pattern ids that now mean this pattern, so saved designs keep working) and workshop (1–5: a workshop exclusive, only on a signature shirt from a shirt maker of at least that quality, and never offered in the shirt designer; core has argyle at 3 and shockwave at 4).

{
  "id": "acme.shirt-pattern.tartan",
  "name": "Tartan",
  "texture": "assets/patterns/tartan.webp",
  "opacity": 0.6,
  "sleeves": true
}

Stories, the feed and cards#

  • Story conditions:
    • hasKit: something equipped in that slot.
    • kitNewMax: your darts' familiarity at most this.
    • developing: a signature item in the workshop.
    • hasSignature.
    • kitProtectMax: your travel case's protection at most this.
  • Story actions:
    • { "type": "kit", "slot", "wear", "familiarity", "lose" }
    • { "type": "workshop", "delay", "cost", "quality" }
  • Social triggers: kitChange (new darts in your hand), kitRelease (a limited edition drops) and signatureLaunch, with the placeholders {item} and {brand}.
  • Card trigger: signature (your signature item launches), with {item} in the title and subtitle.

The core pack's kit stories are in data/events/narrative/kit.json: lost luggage, crushed kit, a lost or lucky charm, new darts before a big week, and workshop leaks, tooling trouble and better tungsten.

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