Playmat

Capsule machines

Capsules are Career's gachapon. A player spends a capsule token on a machine and gets a random cosmetic they don't own yet. A machine of 50 takes exactly 50 tokens and never gives a duplicate.

How it works

  • Machines come in waves. The shop (Career → Capsules) shows the newest wave first, and how many capsules each machine has left for the player.
  • A machine is ten sets of five. Finishing a set gives its sleeve. Finishing the machine gives its reward and a title.
  • Wave 1 is Full Art: card styles, whole-card paintings of staples with no frame and no text. Players wear one per card name from the locker's Card styles tab. The table sees them unless someone picks Only mine or None under Settings → Display. Holding Alt shows the printed card.
  • Unopened capsules are safe. The server records a pull the moment it happens, so closing the page mid-animation only leaves the capsules waiting to be opened.

Tokens

Tokens come from the first win of the day, each weekly goal step, every fifth level and an achievement's gold and mythic tiers. Players can also buy them for coins: 120 each, in bundles of 1, 5 and 10. They have no cap and don't expire.

The numbers are the capsules block in Mage.Server/src/main/resources/career/rewards.json. At these numbers a regular player (six games a day) earns about 47 tokens in the first month, roughly one machine every four to five weeks before spending coins. A casual player finishes one within a season. ProgressionBalanceTest prints the sheet with -Dxmage.progressionReport=true.

Add a machine

  1. Write career/machines/<id>.json like full-art.json. Each set needs an id, English and Spanish names, a capsule colour, a style line for the painter, and five items. Item ids are <set>-<slug>, each naming a real single-faced card, and no card appears twice.
  2. Add it to career/machines/index.json with the next wave number.
  3. Pick two to four real Magic paintings per set that show the look you want, and list them in art/style-refs.json as <set code>/<collector number>. They guide the medium and finish only. They're downloaded into a git-ignored folder and never ship.
  4. Paint it, from Mage.Web.Client, with WAVESPEED_API_KEY set:
node art/machine-specs.mjs <id>
node art/wavespeed.mjs style-<set>

The first command writes one spec per set. The second draws the set's five cards and its sleeve with Nano Banana, one picture each, at about $0.05 a picture. The set's first card goes in as a reference for the rest, so the set stays consistent. Run it once per set, look at the results, and redraw any picture with --only <id> --force.

  1. Paint its cabinet: node art/cabinet.mjs <id> draws the machine (in its cabinet colours, with an empty globe), its crank wheel and a capsule on magenta. Cut the ones you like with python3 art/cabinet_cut.py, then add the globe, crank, slot and chute positions to CABINETS in cabinetArt.ts. A machine without a painted cabinet still works: the shop draws a plain one.
  2. Run CareerCapsulesTest. It fails on a missing picture, a card that doesn't exist, a repeated card or a reward that isn't in the cosmetics catalog.

Machine content ships with the server build, so a new machine reaches players with the next update. Machines hold card styles for now; another kind of item would need the client to learn how to show it.

The full reference, including where everything is stored, is the Capsule machines section of the deployment guide.