<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% Monster environment sty file
\RequirePackage{fp}
\RequirePackage{xstring}

% Macro to print stats with autocomputed modifier
% e.g. \stat{12} prints "12 (+1)"
\newcommand{\stat}[1]{%
   \FPeval{\mod}{(#1 - 10)/2}%
   \FPifpos\mod%
   \FPeval{\mod}{clip(trunc(mod,0))}#1\ (+\mod)%
   \else%
   \FPeval{\mod}{clip(abs(trunc(mod-0.5,0)))}#1\ (\(-\)\mod)%
   \fi%
}

% Macro to print avarage dice based value
% e.g. \dice{2d6+3} prints "10 (2d6 + 3)"
\newcommand{\dice}[1]{%
	\StrSubstitute{#1}{ }{}[\DiceArg]%				strip whitespaces
	\StrCut{\DiceArg}{d}\DiceNum\DiceSides%			split string
	\StrCut{\DiceSides}{+}\DiceSides\DiceAddMod%
	\StrCut{\DiceSides}{-}\DiceSides\DiceSubMod%
	\FPeval{\DiceAvg}{(\DiceSides+1)/2*\DiceNum}%	calculate avg roll	
	\IfInteger{\DiceAddMod}{%
		\FPadd{\DiceAvg}{\DiceAvg}{\DiceAddMod}%	add value
		\def\DiceMod{ + \DiceAddMod}%
	}{%
		\IfInteger{\DiceSubMod}{%
			\FPsub{\DiceAvg}{\DiceAvg}{\DiceSubMod}%	subtract value
			\def\DiceMod{ \(-\) \DiceSubMod}%
		}{%
			\def\DiceMod{}%
		}%
	}%
	\FPtrunc{\DiceAvg}{\DiceAvg}{0}%				round down
	\FPprint{\DiceAvg\ (\DiceNum d\DiceSides\DiceMod)}
}

% Monster box made to look like the Monster Manual NPC definitions
\newtcolorbox{monsterboxnobg}[2][]{
   enhanced,
   frame hidden,
   before skip=7pt plus2pt,
   boxrule=0pt,
   breakable,
   boxsep=0.25ex,
   toptitle=3mm,
   left=2.5mm,
   right=2.15mm,
   arc=0mm,
   opacityback=0,
   colframe=titlered,
   fonttitle=\jebba@StatBlockTitleFont\color{titlered}\Large,
   fontupper=\jebba@StatBlockBodyFont,
   title=#2,
   after={\vspace{7pt plus 1pt}\noindent},
   #1
}

% new Monsterbox
\newtcolorbox{monsterbox}[2][]{
	enhanced,
	frame hidden,
	before skip=7pt plus2pt,
	boxrule=0pt,
	breakable,
	boxsep=0.25ex,
	toptitle=3mm,
	left=2.5mm,
	right=2.15mm,
	arc=0mm,
	borderline north={4pt}{0pt}{titlered},
	borderline north={2.5pt}{0.75pt}{statblockribbon},
	borderline south={4pt}{0pt}{titlered},
	borderline south={2.5pt}{0.75pt}{statblockribbon},
	colback=statblockbg,
	colbacktitle=statblockbg,
	colframe=titlered,
	fonttitle=\jebba@StatBlockTitleFont\color{titlered}\Large,
	fontupper=\jebba@StatBlockBodyFont,
	title=#2,
	after={\vspace{7pt plus 1pt}\noindent},
	#1
}


% Define Monster subsection header style
%\newcommand{\monstersection}[1]{\subsubsection*{#1}}
\newcommand{\monstersection}[1]{
	{\par
	\color{titlered}\jebba@StatBlockSubtitleFont\large #1 \vspace{3pt}
	\titleline{\color{titlered}\titlerule[0.6pt]}
	\par\medskip}
	}

\newenvironment{monsteraction}[1][\unskip]{\emph{\textbf{#1.}}}{\vspace{0.5em}}

%
% Macros for use within the monster environment
%
\newkeycommand\basics[armorclass=0, hitpoints=0, speed=0]{%
	\color{titlered}
  \textbf{\armorclassname} \commandkey{armorclass}\\
	\textbf{\hitpointsname} \commandkey{hitpoints}\\
	\textbf{\speedname} \commandkey{speed}\\
}

% Taubular enviornment for stats-block
\newkeycommand\stats[STR=\stat{10},
                        DEX=\stat{10},
                        CON=\stat{10},
                        INT=\stat{10},
                        WIS=\stat{10},
                        CHA=\stat{10}]{
    {\footnotesize
	\hspace*{-3.5pt}
	\resizebox{0.97\linewidth}{\height}{
		\begin{tabular}{cccccc}
			\rule{0pt}{3.7mm} %adds space between hline and table
      \textbf{\strstatname} &amp; \textbf{\dexstatname} &amp; \textbf{\constatname} &amp; \textbf{\intstatname} &amp; \textbf{\wisstatname} &amp; \textbf{\chastatname}\\
			\commandkey{STR} &amp; \commandkey{DEX} &amp; \commandkey{CON} &amp; \commandkey{INT} &amp; \commandkey{WIS} &amp; \commandkey{CHA}
		\end{tabular}
	}
	\\[0.4em] %adds space after table
    }
}

\newkeycommand\details[skills=,
                      damageimmunities=,
                      savingthrows=,
                      conditionimmunities=,
                      damageresistances=,
                      damagevulnerabilities=,
                      senses=---,
                      languages=---,
                      challenge=0]{%
  \ifcommandkey{savingthrows}
    {\textbf{\savesname} \commandkey{savingthrows}\\}{}
  \ifcommandkey{skills}
    {\textbf{\skillsname} \commandkey{skills}\\}{}
  \ifcommandkey{damagevulnerabilities}
    {\textbf{\dvulname} \commandkey{damagevulnerabilities}\\}{}
  \ifcommandkey{damageresistances}
    {\textbf{\dresname} \commandkey{damageresistances}\\}{}
  \ifcommandkey{damageimmunities}
    {\textbf{\dimmname} \commandkey{damageimmunities}\\}{}
  \ifcommandkey{conditionimmunities}
    {\textbf{\cimmname} \commandkey{conditionimmunities}\\}{}
  % These traits appear to always be present.
  {\textbf{\sensesname} \commandkey{senses}\\}
  {\textbf{\languagesname} \commandkey{languages}\\}
  {\textbf{\challengename} \commandkey{challenge}\\}
\color{black}
}
</pre></body></html>