\documentclass[a4paper,openany]{book}
\usepackage{bind}

\date{\today}

\begin{document}

\chapter{How to Make Monsters}

\section{Introduction}

\begin{multicols}{2}

\subsection{All about Dragons}

\begin{boxtext}

As you embark upon your first adventure, you summon your first monster with a simple backstroke.
You write down \verb"\dragon", and behold!

\end{boxtext}

\dragon[\npc{\T[4]\E}{\arabic{noAppearing} Dragons}]

Each time you conjure the dragon, it will look a little different.
The next one might look like this:

\dragon

If you find it hard to tell the difference between all the dragons, you can give them names in square brackets with the \verb"npc command", like this:

\verb"dragon[\npc{\M}{Bob the dragon}]"

Which then makes a male dragon called ``Bob'':

\dragon[\npc{\M}{Bob the Dragon}]

You can summon dozens of monsters, including \verb"humansoldier", \verb"basilisk", and \verb"\ghoul"
(see \verb"monsters.tex" for all the examples).

Placing a number after the `T' symbol, e.g. \verb"\T[5]" to change the number of rows of boxes to track stats.

\ghoul[\npc{\T[5]\D}{5 Ghouls}]

\subsection{Individual NPCs}

Individual characters can be created by using the \verb"\npc" command then the \verb"person" command, with its nine arguments:

\begin{verbatim}

\npc{\M}{Alice}

\person{0}% STRENGTH
{1}% DEXTERITY 
{-1}% SPEED
{{2}% INTELLIGENCE
{0}% WITS
{0}}% CHARISMA
{0}% DR
{1}% COMBAT
{Academics 1, Wyldcrafting 1}% SKILLS
{\longsword, adventuring equipment}% EQUIPMENT
{}

\end{verbatim}

\settoggle{debug}{true}

\npc{\M}{Alice}
\person{0}% STRENGTH
{1}% DEXTERITY 
{-1}% SPEED
{{2}% INTELLIGENCE
{0}% WITS
{0}}% CHARISMA
{0}% DR
{1}% COMBAT
{Academics 1, Wyldcrafting 1}% SKILLS
{\longsword, adventuring equipment}% EQUIPMENT
{}

\subsubsection{Bestiary}

Statblocks in a bestiary chapter (or any space for examples).
You can set an example chapter by writing \verb"\settoggle{bestiarychapter}{true}"

Then the \verb"\humansoldier" command turns from this:

\humansoldier

\ldots into this:

%\settoggle{bestiarychapter}{true}

\humansoldier

This second soldier is still partly random.

\subsection{Boxes}

You can add things for these people to say with a \verb"\begin{speechtext}" command:

\begin{speechtext}

  ``Would you tell me, please, which way I ought to go from here?''

  ``That depends a good deal on where you want to get to.''

\end{speechtext}

Then we have \verb"\begin{exampletext}" for example:

\begin{exampletext}
  This example text might show game examples, or the history of a location.

  It has an optional argument if you want to replace the line at the start.

\end{exampletext}

\begin{boxtext}
  And of course\ldots BOXTEXT!

\end{boxtext}

\subsection{Magic}

\subsubsection{Magical Items}

This is a magical item.

\begin{verbatim}

\magicitem{Noodle of Death}% NAME
  {Extinguish}% SPELL
  {Divinity (FSM)}% PATH
  {Instant}% DURATION
  {Pocket Spell}% TYPE
  {2}% Potency
  {5}% MP

\end{verbatim}

\magicitem{Noodle of Death}% NAME
  {Extinguish}% SPELL
  {Divinity (FSM)}% PATH
  {Instant}% DURATION
  {Pocket Spell}% TYPE
  {2}% Potency
  {5}% MP

\subsubsection{Spheres}

Each sphere is produced with a sphere command, so this -- \verb"\sphere{Mirrors}" -- would produce the `Mirrors' sphere.

After that, each level is produced with \verb"\spelllevel".

These commands handle numbering, indexing, et c.

Finally, individual spells are laid out with \verb"\spell{Fireball}{Instant}{Projectiles}{goes burr}"

The first argument gives a name, the second the type (`instant' or `continuous'), the third is the Skill casters can roll when using it, and the fourth is the spell's description.

The spell's description can be referenced from other books as a summary (if you have set \verb"\label{fireball}"), e.g. `\verb"\nameref{fireball}"' produces `\textit{Fireball -- goes burr}'.

\subsubsection{Enhancements}
A different command is used for enhancements: \verb"\enhancement{Blue}{1}{makes spells blue}".

The first argument gives a name, the second gives how many levels it adds to the spell, and the last is the spell's description.

\subsection{Pictures}

\sidepic{l1}
All images should go into the images directory.

Writing \verb"\pic{b1}" shows the image under \verb"images/b1.svg".
The file extension can be either `svg' or `jpg' (but never `jpeg').

Use \verb"\sidepic{l1}" to show that image at the side of the text.
It doesn't work well and messed up text if it doesn't have enough text around it.

\pic{b1}

For svg files to work, the document must be compiled with \verb"pdflatex -shell-escape main.tex" on the first run (the Makefile generally takes care of this).

Wider pictures should be placed with \verb"\widePic{s1}", and they will appear on the next page, at the bottom, or with \verb"\widePic[t]{s1}" to see the picture at the top of the next page.

\widePic{s1}

\subsubsection{Maps}

The map function works like \verb"\widePic", but for maps.
You can add a list of coordinates, and the names or number-labels to place on those coordinates.

\mapPic[\large]{t}{wide}{\Huge Toptown/8/8,Leftown/2/75,2/8/6}

Imagine the shield image is a map to be labelled.
We can start by putting `Toptown' at the top.

\begin{verbatim}
  \mapPic{t}{../config/images/l1}%
    {8/8/Toptown}
\end{verbatim}

If the map needs to go at the bottom, replace the first argument with a `b'.
The Cartesian coordinates are `8/8', meaning `80\% along, 80\% up'.
We can add more to the list with commas.

We can even add commands, such as \verb"\ref{basement}" to get some number associated with a basement, and automatically place that number on the map.

\begin{verbatim}
  \mapPic{t}{../config/images/l1}%
    {8/8/Toptown, 2/75/Leftown,8/6/2}
\end{verbatim}

An optional argument allows default size changes for the words, and as usual words can change their sizes individually.

\begin{verbatim}
  \mapPic[\small]{t}{../config/images/l1}{8/8/\large Toptown, 2/75/Leftown,8/6/\ref{basement}}
\end{verbatim}

\subsection{Symbols}

\begin{tabularx}{\linewidth}{Xcc}

  Meaning & Typed & Symbol \\\hline

  Nura & {\tt \textbackslash{N}} & \gls{N} \\

  Undead & {\tt \textbackslash{D}} & \gls{D} \\
  \hline
  Teams & {\tt \textbackslash{T}} & \gls{T} \\

  Animal & {\tt \textbackslash{M}} & \gls{A} \\

  Sentient & {\tt \textbackslash{E}} & \gls{E} \\

  Female & {\tt \textbackslash{F}} & \gls{F} \\

  Male & {\tt \textbackslash{M}} & \gls{M} \\

  \hline
  Gnoll & {\tt \textbackslash{Nl}} & \gls{Nl} \\

  Dwarves & {\tt \textbackslash{Dw}} & \gls{Dw} \\

  Humans & {\tt \textbackslash{Hu}} & \gls{Hu} \\

  Elves & {\tt \textbackslash{El}} & \gls{El} \\

  Gnome & {\tt \textbackslash{Gn}} & \gls{Gn} \\
  \hline
  Squash & {\tt \textbackslash{squash}} & \gls{squash} \\

  Side Quest ready & {\tt \textbackslash{sqr}} & \gls{sqr} \\

  Side Quest not ready & {\tt \textbackslash{sqn}} & \gls{sqn} \\

\end{tabularx}

\end{multicols}

\section{Creature Commands}

\begin{multicols}{2}

\subsection{Weapon Commands}

The \verb"\weapon{Name}{1}{2}" command works in 2 ways.
When defining a weapon, it adjusts the current creature's stats.
When used in a weapons chart, it shows the weapon's stats.

Stats are derives from the weapon's 3 properties: length, sharpness, and weight.

\begin{verbatim}
  \weapon{Sword}% NAME
    {2}% Attack Bonus
    {1}% Damage
\end{verbatim}

When that weapon command appears in a table, it shows the Attack, Damage, AP required, and Weight (the minimum Strength required to use it).
When when a creature wields the weapon, those stats raise the creature's stats.

  \begin{nametable}[XXXXXX]{M\^{e}l\'{e}e Weapons}

  \textbf{Name} & \textbf{Attack Bonus} & \textbf{Dam.} & \textbf{\Glsentrytext{ap} Cost} & \textbf{Weight} \\\hline

  \Dagger \\

  \greataxe \\

  \spear \\

  \end{nametable}

Alternatively, just write \verb"\sword" and the sword gets written.
Just set \verb"\toggletrue{examplecharacter}".

\subsection{Loot}

You can use the various `loot' commands to give loot to creatures or rooms,a little like A,D\&D's `treasure type C'.

So writing \verb"In this room sits \lootBig." might produce `in this room sits 12gp'.

Available commands:

\begin{itemize}

  \item
  \verb"\lootSmall" (e.g. \lootSmall)
  \item
  \verb"\lootMedium" (e.g. \lootMedium)
  \item
  \verb"\lootBig" (e.g. \lootBig)
  \item
  \verb"\lootMagic" (e.g. \lootMagic)
  \item
  \verb"\lootJewellery" (e.g. \lootJewellery)

\end{itemize}

\end{multicols}

\section{Modules \& Areas}

\subsection{Encounters}

Make encounter tables like this:

\begin{verbatim}

\begin{figure*}[t]
\begin{nametable}[c|LLLLLLLL,fontupper=\small,]{Enc}
Rolls & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\
\hline
8 & Villagers & Sulphur Winds & Lightning Storm & Earthquake & Hurricane &
  Mouthdigger 1 & Woodspy 1 & Forest Fire \\
7 & Flood & Heatwave & High Humidity & Woodspy 2 & Chitincrawler 1 &
  Chitincrawler 2 & Bear 1 & Basilisk 1 \\
6   Guards 1 & Rain & Guard 2 & Rain & Elves 1 & Woodspy 4 &
  Woodspy 2 & Chitincrawler 3 \\
5 & Noble & Traders 1 & Bandits 1 & Wolves 1 & Lightning Storm &
  Gnolls 1 & Deer & Mana Lake \\
4 & Villagers & Traders 2 & Wind & Bear 2 & Wolves 2 &
  Mouthdigger 2 & Basilisk 2 & Griffins 1 \\
3 & Trader 3 & Guards 3 & Traders 4 & Refugees & Gnomes 1 &
  Gnolls 2 & Brigands & Elves 2 \\
2 & Traders 5 & Pilgrims & Breeze & Bandits 2 & Mouthdigger 3 &
  Griffins 2 & boar & Wild Horses \\
1 & Bard & Dwarves 1 & Dwarves 2 & Griffin 3 & Bandits 3 &
  Gnomes 2 & Griffins 4 & Aurochs \\
0 & Begging Villagers & Bandits 4 & Snowfall & Hail & Wolves 3 &
  Snowstorm & Wolves 4 & Hibernating Chitincrawler 4 \\
\end{nametable}
\end{figure*}

\end{verbatim}

(Check below for the results)

\begin{multicols}{2}

\begin{figure*}[t]
\begin{nametable}[c||L|L|LLLL|L|L,fontupper=\footnotesize,]{Enc}

  & \textbf{Villages} & \textbf{Villages, Edge} & \textbf{Villages, Edge, Forest} & \textbf{Villages, Edge, Forest}  & \textbf{Villages, Edge, Forest} & \textbf{Villages, Edge, Forest} & \textbf{Edge, Forest} & \textbf{Forest} \\
\hline
\textbf{Rolls} & \textbf{1} & \textbf{2} & \textbf{3} & \textbf{4} & \textbf{5} & \textbf{6} & \textbf{7} & \textbf{8} \\
\hline
\hline
\textbf{8} & Villagers & Sulphur Winds & Lightning Storm & Earthquake & Hurricane & Mouthdigger 1 & Woodspy 1 & Forest Fire \\
\hline
\textbf{7} & Flood & Heatwave & High Humidity & Woodspy 2 & Chitincrawler 1 & Chitincrawler 2 & Bear 1 & Basilisk 1 \\
\hline
\textbf{6} & Guards 1 & Rain & Guard 2 & Rain & Elves 1 & Woodspy 4 & Woodspy 2 & Chitincrawler 3 \\
\hline
\textbf{5} & Noble & Traders 1 & Bandits 1 & Wolves 1 & Lightning Storm & Gnolls 1 & Deer & Mana Lake \\
\textbf{4} & Villagers & Traders 2 & Wind & Bear 2 & Wolves 2 & Mouthdigger 2 & Basilisk 2 & Griffins 1 \\
\textbf{3} & Trader 3 & Traders 4 & Guards 3 & Refugees & Gnomes 1 & Gnolls 2 & Brigands & Elves 2 \\
\hline
\textbf{2} & Traders 5 & Pilgrims & Breeze & Bandits 2 & Mouthdigger 3 & Griffins 2 & Boar & Wild Horses \\
\hline
\textbf{1} & Bard & Dwarves 1 & Dwarves 2 & Griffin 3 & Bandits 3 & Gnomes 2 & Griffins 4 & Aurochs \\
\hline
\textbf{0} & Begging Villagers & Bandits 4 & Snowfall & Hail & Wolves 3 & Snowstorm & Wolves 4 & Hibernating Chitincrawler 4 \\
\end{nametable}
\end{figure*}

And charts about roll successes like this:

\begin{verbatim}


  \begin{rollchart}

    Roll & Result \\\hline

    12 & Success \\

    11 & Failure \\

  \end{rollchart}

\end{verbatim}

\begin{rollchart}

  Roll & Result \\\hline

  12 & Success \\

  11 & Failure \\

\end{rollchart}


\subsection{Making Maps}

Make all maps under some subsection, then start the individual map entry like this: \verb"\mapentry[docGift]{Documentation Giftschrank}".

The first (optional) argument, will become the label.
The second is the area's title.

\mapentry[docGift]{Documentation Giftschrank}

You can refer to it with \verb"\nameref{docGift}", such as ``see room number \ref{docGift}''.

\end{multicols}

\section{Others}

\begin{multicols}{2}

Other commands are typically produced for just a single location in the book.

The functions which produce the creature boxes is a tangled mess of rotten spaghetti-logic, which is so inefficient it somehow taxes a modern computer just to add some numbers.
It's best not to think about how creatures are made.

\subsection{Rules References with a Dirty Hack}

Rules are often written as:

\begin{verbatim}

\subsection[Keeping Watch: Roll Strength +
Vigilance]{Keeping Watch}
\label{keepingWatch}

\end{verbatim}

This first argument in the square brackets is used as the subsection header when referenced, or in tables of contents.
Since the subsection is never used in a table of contents, we can misused it to contain rules, and then reference the rule.

Specifically, you can use \verb"\footnote{\nameref{keepingWatch}.}", which then produces a footnote with a summary of that rule, which will automatically update if the rule ever changes.

\end{multicols}

\end{document}