Vladar's Blog

The Forbidden Temple of Pflarr

Just in time for Halloween, a short adventure module I wrote while working on Retrotype v0.2. Not only does it showcase the functions of the Retrotype LaTeX package, but it has also helped me detect and fix some stealthy bugs.

The module is set in Mystara after the events of B10: Night's Dark Terror1 in the Hutaaka Valley. Nevertheless, with some adjustments, it can be run in any campaign.

Hidden deep in the mountains of Hutaaka Valley, the ancient temple of Pflarr stood centuries undisturbed. Now, something dark has awakened there. Crawling through its dusty halls the evil force tries to escape outside.

The Forbidden Temple of Pflarr

You can download the module here:

The rest of the post will demonstrate some of the tricks that were employed in designing the layout of the document.

Tabs instead of Tables

The retrotable environment is still in its early stage of development, but since we are working with a monospaced font, we can use the tabular commands instead. Not the most elegant solution, but gets the job done.

\ulf\textbf{~d20\tab Ruin Inhabitants\tabn{2}~~Treasure}\\
~1-5\tab	Deserted\\
~6-8\tab	Harmless mammals\\
\tabn{2}	or reptiles\\
~9-10\tab	3d6 \hyperlink{stirge}{stirges}\tabn{4}~~L\\
~~11\tab	2d4 \hyperlink{hellhound}{hellhounds}\tabn{3}~~C\\
12-13\tab	1 \hyperlink{swarm}{insect swarm}\\
~~14\tab	1d4 \hyperlink{lion}{mountain lions}\tabn{2}~~U\\
15-16\tab	1d4 \hyperlink{lizard}{footpad lizards}\\
\ulf17-20\tab	1d6 \hyperlink{ghoul}{ghouls (Traldar)}\tabn{2}~~R\\

tabs-table

Statblocks

The same approach may be used with the monster stat blocks by redefining the default tab position with the \setCustomTabPositions command.

\newcommand{\setAnimalTabPositions}{%
	\setCustomTabPositions{%
		4,	4,	11,	16,	15,	6,	4,	5,	4,	5}%
%	AC	HD	MV	AT	Dmg	Sv	ML	Int	AL	XP	THAC0
}

\newcommand{\headerAnimal}{%
	\textbf{AC\tab HD\tab MV\tab \#AT \tab Damage\tab Save\tab ML\tab Int\tab AL\tab XP\tab THAC0}\\%
}
\setAnimalTabPositions{}

\hypertarget{hellhound}{}
\paragraph{Hellhound}
\rightbox[\aparskip]{(EX51/RC184)}
\headerAnimal
4\tab 3**\tab 120'(40')\tab d6 roll:\tab 1 target:\tab F3\tab 9\tab 12\tab C\tab 65\tab 17
\\\tabn{3}\textit{1-2:} 1 breath\tab 3d6 (Save vs. Breath for half)
\\\tabn{3}\textit{3-6:} 1 bite\tabn{1}1d6

Reddish-brown doglike monster as big as a small pony.
\begin{itemize}[leftmargin=*,label=\itshape\textbullet]
\item
Immune to normal fire.
\item
Can \textbf{detect invisible} at 75\% chance per round, range 60'.
\end{itemize}

statblock

Footnotes

Hand-made footnotes can be easily created in a figure environment so it always is at the bottom of the current page, detached from the main content. Note that if you are using custom text coloring, you need to declare it again with the \color command.

\begin{figure}[b]
\color{darkgray}
\uln[8]

\textsuperscript{1} Golden stars are set into the chests of the statues. Physical destruction of a statue lowers the value of each star to 1d8 × 10\% of its full cost.
\end{figure}

footnotes

Maps

The most interesting challenge was creating ASCII-art maps for the module. The default Retrotype font (TT20202) doesn't have enough special glyphs for that, so I settled on the Truetypewriter PolyglOTT.3 Since we are working in XeLaTeX, you can just switch the document font with a \setmonofont command.


📝 NOTE: Maps presented below differ from the ones in the adventure — they were modified to remove most of the spoilers.


Wilderness Map

Using the \BVerbatimInput command of the fancyvrb4 package you can load a plain text file containing the map. Note the baselinestretch=0 parameter for reducing the vertical space between the lines.

\noindent
\begin{minipage}{\textwidth}
	\setmonofont{TruetypewriterPolyglOTT}
	\fvset{fontsize=\footnotesize, baselinestretch=0}
	\hspace*{-7pt}
	\BVerbatimInput{img/hutaaka.txt}
\end{minipage}

map-hutaaka

As you can see, each hex takes 5 lines and 9 columns of text, giving enough space for any symbols and descriptions.

   _____   
  /     \  
 /  one  \ 
 \  mile / 
  \_____/  

Dungeon Map

Dungeon maps are even easier to make since we can use the box-drawing characters5 The purpose of the \renewcommand{\FancyVerbFormatLine}[1]{\vspace*{-0.5ex}#1} line is to "compress" each line of text horizontally to make square rooms actually square (or close enough).

\noindent
\begin{minipage}{\textwidth}
	\setmonofont{TruetypewriterPolyglOTT}
	\fvset{fontsize=\small, baselinestretch=0}
	\renewcommand{\FancyVerbFormatLine}[1]{\vspace*{-0.5ex}#1}
	{\hfill
	\BVerbatimInput{img/temple.txt}
	\hfill}
\end{minipage}

map-temple


Discuss this post on Reddit

  1. https://www.dmsguild.com/product/17119/B10-Nights-Dark-Terror-Basic?affiliate_id=850783

  2. https://copypaste.wtf/TT2020/docs/download.html

  3. https://online-fonts.com/fonts/truetypewriter-polyglott

  4. https://ctan.org/pkg/fancyvrb

  5. https://en.wikipedia.org/wiki/Box-drawing_characters

#adventure #dnd #gamedev #latex #mapping #mystara #osr #retrotype #software #ttrpg