This contains programs for reading YAML and JSON files representing Mini Six (M1, M2) characters and calculating their cost as starting characters, as well as for producing output in reStructuredText (for typesetting or converting to HTML) and roff (for typesetting using a program such as groff). In addition to checking if the characters have been built using the proper number of dice for attributes, skills, and perks, it gives something of a way to compare characters for level of threat.
Mini Six is an OpenD6 (O1, O2, O3) derived tabletop roleplaying game.
The primary programs are all written in CHICKEN Scheme:
sm6
- read YAML or JSON and calculate cost as a starting character.sm6fmt
- alternate version that uses the CHICKEN Schemefmt
egg for ouput.sm6rst
- read YAML or JSON and output formatted character stats in reStructuredText for inclusion into other documents, converting to HTML, or typesetting.sm6troff-ms
- read YAML or JSON and output formatted character stats in roff format for thems
macros, for inclusion into other documents or typesetting.
There are several implementations of the character cost calculating
program in other programming languages which I wrote as an exercise in
comparing how they dealt with JSON and/or YAML. None of them are as
complete as the Scheme versions. The OCaml version, om6.ml
, was
never completed.
A typical Mini Six character expressed in YAML looks like this:
- Name: Bersaba Kitto Archetype: elegant sorcerer Quote: What should I change into? Description: Tall, willowy, elegant, and abstracted. Player: Lily Bond Might: [3D, [Sword, 5D]] Agility: [3D, [Dodge, 5D], [Sling, 4D]] Wit: [4D, [Magic, 6D]] Charm: [2D] Static: [[Dodge, 15], [Block, 9], ['Parry (Sword)', 15], [Soak, 9(15))]] Perks: [[Sorcerer, 3D]] Gear: - Sword (+2D+2) - Chainmail (+6) - Elegant clothes - Knife (+1D) - Sling (+2D+1, 40/130/400), 48 lead sling bullets Spells: - Fly - Hasten - See Magic Aura - Shape Change Hero_Points: 2 Notes: | Notes ~~~~~ • One of your spells is a game breaker, I think. • Your sling is stored coiled up in an elegantly decorated pouch that also holds 3 pounds of lead sling bullets. • Your chainmail has multicolored links that make up a pattern.
The character cost information from that character looks like:
Name: Bersaba Kitto - elegant sorcerer Tall, willowy, elegant, and abstracted. Player: Lily Bond Might: 3D ( 9 points) Sword: 5D +2D+0 ( 6 points) Agility: 3D ( 9 points) Dodge: 5D +2D+0 ( 6 points) Sling: 4D +1D+0 ( 3 points) Wit: 4D ( 12 points) Magic: 6D +2D+0 ( 6 points) Charm: 2D ( 6 points) Perks: Sorcerer: 3D ( 9 points) total stat: 12D+0 ( 36 points) total stat increase: 0D+0 ( 0 points) total skill: 7D+0 ( 21 points) total skill increase: 0D+0 ( 0 points) total perk: 3D+0 ( 9 points) total (skill + perk): 10D+0 ( 30 points) total: 22D+0 ( 66 points)
The reStructuredText output from that looks like:
Bersaba Kitto - elegant sorcerer (Lily Bond)
--------------------------------------------
*“What should I change into?”*
Tall, willowy, elegant, and abstracted.
| **Might 3D** — Sword 5D
| **Agility 3D** — Dodge 5D, Sling 4D
| **Wit 4D** — Magic 6D
| **Charm 2D**
| **Perks:** Sorcerer
| **Spells:** Fly, Hasten, See Magic Aura, Shape Change
| **Gear:** Sword (+2D+2), Chainmail (+6), Elegant clothes, Knife (+1D), Sling (+2D+1, 40/130/400), 48 lead sling bullets
| **Static:** Dodge 15; Block 9; Parry (Sword) 15; Soak 9(15))
| **Hero Points:** 2
| **WL:** S:1–3 □ W:4–8 □ SW:4–8 □ I:9–12 □ MW:13–15 □
Notes
~~~~~
• One of your spells is a game breaker, I think.
• Your sling is stored coiled up in an elegantly decorated pouch
that also holds 3 pounds of lead sling bullets.
• Your chainmail has multicolored links that make up a pattern.
The command
sm6troff-ms -s -2 -H test-files/Bersaba-Kitto.yaml | groff -k -Tpdf -ms
produces PDF output that looks like this:
These programs can also be used for Mini Six derived or related RPGs such as the Breachworld RPG.