Skip to main content

Demilich, the MTG skeleton wizard

Project description

Demilich - the MTG skeleton wizard

A tool for quickly scaffolding a custom MTG set.

For designers of custom Magic: the Gathering sets, the designers of canon Magic suggest starting from a design skeleton. This is a set of "slots" which have some standard creatures, keywords, and spells to make the limited game work, at least at a base level. I've found that the act of mechanically filling out a design skeleton (15 commons per color, 14 uncommons per color, plus artifacts and signposts) is draining. In fact, I've never successfully completed a design skeleton by hand.

Enter demilich. Demilich encodes the suggested distributions of things and generates a randomized set of initial slots. This takes the drudgery and thinking out of the process and makes it a simple, mechanical starting point. From there, you can start assigning your own mechanics and creative to your new set!

Installation

The fastest way to simply generate a basic skeleton is to run demilich using pipx.

  1. Install pipx
  2. Run demilich: pipx run demilich play-booster > skeleton.csv

If you intend to use more of its features (like generating a skeleton programmatically), you can also install the package.

# first make a virtualenv however you normally do
% python -m venv env
% . env/bin/activate
# then install demilich
% pip install demilich

Basic use

% demilich play-booster > skeleton.csv

Then open skeleton.csv in the editor of your choice.

Custom skeleton

You can use demilich with your custom skeleton definition. I recommend you copy pb2024.toml to use as a starting point. Once you have your my-custom-skeleton.toml ready to go, run:

% demilich custom-skeleton my-custom-skeleton.toml

Output formats

By default, demilich generates a CSV. You can ask for a pretty-printed table instead with the --format option.

% demilich play-booster --format=table
# or
% demilich custom-skeleton my-custom-skeleton.toml --format=table

Choosing fields

CSV mode includes all fields by default. Table mode omits the "instruction" field by default. But you have full control about which fields appear and in what order.

% demilich play-booster --format=table --fields=id,name,stats,text

This will generate a 4-column output (regardless of format) which only includes ID, name, stats, and card text fields.

The valid fields are:

  • id
  • instruction
  • name
  • cost
  • typeline
  • stats
  • text

Limiting to certain chunks of the skeleton

By default, demilich will generate every skeleton chunk in the definition file. But for a particular run, you may want to only generate a subset of rarities and/or a subset of frames. There are options for this:

# produce only the white commons
% demilich play-booster --rarities C --frames W

# produce artifact uncommons and rares
% demilich play-booster --rarities UR --frames A

# produce blue and black rares
% demilich play-booster --rarities R --frames UB

# produce red and green commons and uncommons
% demilich play-booster --rarities CU --frames RG

When you specify both --rarities and --frames, you'll get output which includes every combination. There isn't a way to ask for "blue commons and red uncommons"; just split that into two separate invocations (demilich play-booster --rarities C --frames U and demilich play-booster --rarities U --frames R).

Programmatically building a skeleton

The API for SkeletonGenerator is documented in docstrings so you can generate skeletons programmatically. See the examples in examples/ for ideas on how to do it.

Each SkeletonGenerator is only responsible for a single section of a full skeleton. It keeps a fixed rarity and frame code, which simplifies the implementation quite a bit. If you need something much fancier, like redistributing keywords that didn't make it into one rarity into another rarity, you can probably achieve that using the programmatic interface.

Fan content policy

demilich is unofficial Fan Content permitted under the Fan Content Policy. Not approved/endorsed by Wizards. Portions of the materials used are property of Wizards of the Coast. ©Wizards of the Coast LLC.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

demilich-1.2.1.tar.gz (23.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

demilich-1.2.1-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

Details for the file demilich-1.2.1.tar.gz.

File metadata

  • Download URL: demilich-1.2.1.tar.gz
  • Upload date:
  • Size: 23.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.7 Darwin/24.2.0

File hashes

Hashes for demilich-1.2.1.tar.gz
Algorithm Hash digest
SHA256 198227e234c0dd771f70a32f952af20142ab9573a36942371b828c2a4e35a344
MD5 d0f709b889a6a921ccbc65fd55447faf
BLAKE2b-256 e7822785a21d11a9f9b07e14997c0f94847871264e9a3cd76419f8247c9b9b1b

See more details on using hashes here.

File details

Details for the file demilich-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: demilich-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 24.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.7 Darwin/24.2.0

File hashes

Hashes for demilich-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 83828933a3ad10db17b4c11662bd4fb02ecfc00a8f9ec4b702780bd6e792ba0e
MD5 6bff779850f25d404cf233e048a9469d
BLAKE2b-256 43dcb5bf200bf0f265cc036d77fec0e01066b6424ff326ec310179bafb6e7dd3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page