\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

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 it changes the number of boxes.

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

noApp \arabic{noAppearing}

\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}{3}{80}" 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}% LENGTH
    {1}% SHARPNESS
    {1}% WEIGHT
    {400}% COST
\end{verbatim}

The attack bonus comes from the weapon's length.
The damage comes from the weapon's sharpness or weight (whichever is higher).
The initiative cost to swing the weapon comes from its weight as well.
Finally, the weight is the same as the minimum Strength bonus required to wield the weapon properly.

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} & \textbf{Cost} \\\hline

  \Dagger

  \greataxe

  \spear

  \end{nametable}

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

\toggletrue{examplecharacter}
  \begin{nametable}[lYYYY]{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}


\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}