<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\ProvidesPackage{config/stats}
%%%%%%%%%%%%%%%%%%%% Introduction

\newtoggle{bestiarychapter}
\settoggle{bestiarychapter}{false}

%      _        _   
%  ___| |_ __ _| |_ 
% / __| __/ _` | __|
% \__ \ || (_| | |_ 
% |___/\__\__,_|\__|
%                   
% 
%  _     _            _        
% | |__ | | ___   ___| | _____ 
% | '_ \| |/ _ \ / __| |/ / __|
% | |_) | | (_) | (__|   &lt;\__ \
% |_.__/|_|\___/ \___|_|\_\___/
%                              
%
% This file makes stat blocks for monsters.
% 
% The writer feeds in something like this:
% 
% \npc{\M}{Patrick the Pyromanacer}
% 
% \person{0}% STRENGTH
% {0}% DEXTERITY 
% {0}% SPEED
% {{0}% INTELLIGENCE
% {0}% WITS
% {0}}% CHARISMA
% {0}% DR
% {0}% COMBAT
% {}% SKILLS
% {Nothing}% EQUIPMENT
% {}
% 
% The \person command takes various stats, and
% inside that 'SKILLS' variable (variable no. 8),
% we can add additional things, like
% \knacks{\adrenalinesurge}, or
% \Path{Blood}{\invocation{2}}, which gives your
% wizzard 'invocation 2'.
% 
% Most of the rest of the commands deal with
% properly calculating derived stats, like the TN
% to hit the creature.


\newtoggle{mind}
\newtoggle{bling}
\newtoggle{examplecharacter}
\settoggle{examplecharacter}{false}
\newtoggle{debug}\settoggle{debug}{false}
\newcommand{\ent}[1]{\textbf{#1}}
\newcommand{\test}{}
\newcommand{\skills}{}
\newcommand{\equipment}{}
\newcommand{\mods}{}
\newcommand{\printknacks}{}
\newcommand{\weaponknackone}{}
\newcommand{\weaponknacktwo}{}

% we calculate damage here because we can't display 1d6+6 damage - it has to turn into 2d6+2 damage.
\newcommand{\calculatedamage}[1]{%
		\setcounter{damagebonus}{#1}%
		\setcounter{numberofdice}{1}%
	\whileboolexpr{test {\ifnumcomp{\value{damagebonus}}{&gt;}{3}}}{%
		\addtocounter{damagebonus}%
		{-4}\addtocounter{numberofdice}{1}%
	}%
	{$\arabic{numberofdice}D6%
	\ifnumcomp{\value{damagebonus}}{&gt;}{0}%
		{+\arabic{damagebonus}$}%
		{%
		\ifnumcomp{\value{damagebonus}}{&lt;}{0}{%
		\arabic{damagebonus}$}%
		{$}%
		}%
	}%
}


%%%%%%%%%%%%%%%%%%%% Character Generation %%%%%%%%%%%%%%%%%%%%
%
%                       _                
%  ___ ___  _   _ _ __ | |_ ___ _ __ ___ 
% / __/ _ \| | | | '_ \| __/ _ \ '__/ __|
%| (_| (_) | |_| | | | | ||  __/ |  \__ \
% \___\___/ \__,_|_| |_|\__\___|_|  |___/
%                                        
%
% Attributes: str, dex, spd, int, wts, cha
% secondary str, dex and spd
\newcounter{str}
\newcounter{dex}
\newcounter{spd}
\newcounter{int}
\newcounter{wts}
\newcounter{cha}
\newcounter{att}
\newcounter{dam}
\newcounter{dr}
\newcounter{knacks}


\newcounter{strb}
\newcounter{dexb}
\newcounter{spdb}
\newcounter{attb}
\newcounter{damb}
% 
% Extras: MP hp fp
% Derived: dicenumber, dicebonus,
\newcounter{mp}
\newcounter{mpb}
\newcounter{sp}
\newcounter{hp}
\newcounter{fp}
\newcounter{numberofdice}
\newcounter{damagebonus}
\newcounter{xp}
\newcounter{xpbonus}
\newcounter{attackXPtotal}
\newcounter{defenceXPtotal} %rem

\newcounter{initiative}
\newcounter{weight}
\newcounter{damage}
\newcounter{shieldBonus}
\newcounter{shieldWeight}
\newcounter{shieldInit}
\newcounter{cost}
\newcounter{heft}% used to see how many AP points to swing a weapon
\newcounter{encumbrance}
  \setcounter{encumbrance}{0}


%                                                _
%   ___ ___  _ __ ___  _ __ ___   __ _ _ __   __| |___
%  / __/ _ \| '_ ` _ \| '_ ` _ \ / _` | '_ \ / _` / __|
% | (_| (_) | | | | | | | | | | | (_| | | | | (_| \__ \
%  \___\___/|_| |_| |_|_| |_| |_|\__,_|_| |_|\__,_|___/
% 



% magic
\newcommand{\magicPath}{}
\newcommand{\mana}[1]{\setcounter{mp}{#1}}
\newcommand{\aldaron}{\addtocounter{mp}{3}Aldaron}
\newcommand{\conjuration}{\addtocounter{mp}{3}Conjuration}
\newcommand{\enchantment}{\addtocounter{mp}{3}Enchantment}
\newcommand{\fate}{\addtocounter{mp}{3}Fate}
\newcommand{\force}{\addtocounter{mp}{3}Force}
\newcommand{\invocation}{\addtocounter{mp}{3}Invocation}
\newcommand{\illusion}{\addtocounter{mp}{3}Illusion}
\newcommand{\necromancy}{\addtocounter{mp}{3}Necromancy}
\newcommand{\polymorph}{\addtocounter{mp}{3}Polymorph}
\newcommand{\saurecanta}{\addtocounter{mp}{3}Saurecanta}
\newcommand{\lockedmana}[1]{\setcounter{mpb}{-#1}}
\newcommand{\armourtype}{N}

\newcommand{\knacks}[1]{ \\
	\ent{Knacks:} &amp; #1 
}

%%%%%%%%%%%%%%%%%%%%% Knacks
%
\newcommand{\adrenalinesurge}{Adrenaline Surge\addtocounter{strb}{1}\addtocounter{knacks}{1}}
\newcommand{\disarm}{Disarm\addtocounter{knacks}{1}\addtocounter{xpbonus}{1}}
\newcommand{\guardian}{Guardian\addtocounter{knacks}{1}}
\newcommand{\specialist}[1]{Specialist (#1)\addtocounter{knacks}{1}}
\newcommand{\backtothewall}{Back to the Wall\addtocounter{knacks}{1}}
\newcommand{\laststand}{Last Stand\addtocounter{knacks}{1}}
\newcommand{\perfectsneakattack}{Perfect Sneak Attack\addtocounter{knacks}{1}\addtocounter{strb}{\value{knacks}}\addtocounter{strb}{2}}
\newcommand{\precisestrike}{Precise Strike\addtocounter{knacks}{1}}
\newcommand{\stunningstrike}{Stunning Strike\addtocounter{knacks}{1}\addtocounter{xpbonus}{1}}
\newcommand{\charge}{\addtocounter{knacks}{1}\setcounter{track}{\value{knacks}}\addtocounter{track}{1}\divide\value{track} by 2\addtocounter{attb}{\value{track}}\addtocounter{strb}{\value{track}}\addtocounter{spdb}{\value{track}}Extreme Charge}
\newcommand{\snapshot}{Snap Shot\addtocounter{knacks}{1}\addtocounter{strb}{2}}
\newcommand{\dodger}{Dodger\addtocounter{knacks}{1}}
\newcommand{\mightydraw}{Mighty Draw\addtocounter{knacks}{1}}
\newcommand{\finishingblow}{Finishing Blow\addtocounter{knacks}{1}}
\newcommand{\unstoppable}{Unstoppable\addtocounter{hp}{2}\addtocounter{knacks}{1}}
\newcommand{\vengeful}{Vengeful\addtocounter{knacks}{1}}
\newcommand{\snapcaster}{Snap Caster\addtocounter{knacks}{1}}
\newcommand{\extremefocus}{Extreme Focus\addtocounter{knacks}{1}}
\newcommand{\alchemist}{Alchemist\addtocounter{knacks}{1}\renewcommand{\magicPath}{Alchemist}}
\newcommand{\bloodCaster}{Blood Caster\addtocounter{knacks}{1}\renewcommand{\magicPath}{Blood}}
\newcommand{\divineCaster}{Divine Caster\addtocounter{knacks}{1}\renewcommand{\magicPath}{Divinity}}
\newcommand{\nuraCaster}{Nura Caster\addtocounter{knacks}{1}\renewcommand{\magicPath}{Nura}}
\newcommand{\runeCaster}{Rune Caster\addtocounter{knacks}{1}\renewcommand{\magicPath}{Runes}}
\newcommand{\songCaster}{Song Caster\addtocounter{knacks}{1}\renewcommand{\magicPath}{Song}}
\newcommand{\combatcaster}{Combat Caster\addtocounter{knacks}{1}}

% 
% _ __   ___ _ __ ___  ___  _ __  
%| '_ \ / _ \ '__/ __|/ _ \| '_ \ 
%| |_) |  __/ |  \__ \ (_) | | | |
%| .__/ \___|_|  |___/\___/|_| |_|
%|_|                              
% 
%
%       _                          _            
%%  ___| |__   __ _ _ __ __ _  ___| |_ ___ _ __ 
%% / __| '_ \ / _` | '__/ _` |/ __| __/ _ \ '__|
%%| (__| | | | (_| | | | (_| | (__| ||  __/ |   
%% \___|_| |_|\__,_|_|  \__,_|\___|\__\___|_|   
%%                                              
%%  optional counters, such as mana, are cleaned
%%  clear: weaponsknack1 and 2, 
%% 
%
\newcommand{\mind}[3]{
\setcounter{int}{#1}\setcounter{wts}{#2}\setcounter{cha}{#3}
}
%

%%%%%%%%%%% Person
%
\newcommand{\person}[9]{
  \settoggle{bling}{true}
	\settoggle{mind}{true}
	\setcounter{str}{#1}
	\setcounter{dex}{#2}
	\setcounter{spd}{#3}
	\mind#4
	\setcounter{dr}{#5}
	\setcounter{att}{#6}
	\renewcommand{\skills}{#7}
	\renewcommand{\equipment}{#8}
	\renewcommand{\mods}{#9}

	\clean

	\renewcommand{\armourtype}{P}
	\gdef\armourtype{P}

	\begin{tcolorbox}[
    title={\name},
		before upper={\parindent0pt},
		halign=flush left,
		left=10pt,
		right=15pt,
    top=0pt,
		]

	\creaturestats
  \vspace{-1em}
	\derivedstats
	\end{tcolorbox}

	\iftoggle{personality}{

    \textbf{Archetype:} \archetype, 
    \textbf{Personality:} \personality

    \textbf{Mannerism:} \mannerism

    \vspace{1em}

    \settoggle{personality}{false}}%
	{}
  \settoggle{debug}{false}
  \settoggle{examplecharacter}{false}
  \settoggle{bling}{false}

}

\newcommand{\animal}[9]{
  \settoggle{bling}{true}
	\settoggle{mind}{false}
	\setcounter{str}{#1}
	\setcounter{dex}{#2}
	\setcounter{spd}{#3}
	\setcounter{wts}{#4}
	\setcounter{dr}{#5}
	\setcounter{att}{#6}
  \setcounter{encumbrance}{0}
	\renewcommand{\skills}{#7}
	\renewcommand{\abilities}{#8}
	\renewcommand{\mods}{#9}

	\clean

	\renewcommand{\armourtype}{C}

	\begin{tcolorbox}[title={\name},
		before upper={\parindent0pt},
		halign=flush left,
		left=10pt,
		right=15pt,
		]

	\iftoggle{personality}{

	\textbf{Personality:} \personality

	\textbf{Mannerism:} \mannerism

	\vspace{1em}

	\settoggle{personality}{false}}%
	{}
	\creaturestats

	\derivedstats

	\end{tcolorbox}
  \settoggle{bling}{false}

}

\newcommand{\clean}{
	\setcounter{fp}{5}
	\setcounter{sp}{0}
	\setcounter{heft}{1}
	\setcounter{damage}{0}
	\setcounter{knacks}{0}
	\renewcommand{\armourtype}{N}
	\renewcommand{\weaponknackone}{}
	\renewcommand{\weaponknacktwo}{}
	\setcounter{mp}{0}
	\setcounter{mpb}{0}
	\setcounter{xpbonus}{0}
	\settoggle{team}{false}

}

%%       _   _        _ _           _            
%%  __ _| |_| |_ _ __(_) |__  _   _| |_ ___  ___ 
%% / _` | __| __| '__| | '_ \| | | | __/ _ \/ __|
%%| (_| | |_| |_| |  | | |_) | |_| | ||  __/\__ \
%% \__,_|\__|\__|_|  |_|_.__/ \__,_|\__\___||___/
%% 
%% Print the line,
%% print the attributes.
%% print the skills
%% print the knacks
%% print the equipment
%
\newcommand{\creaturestats}{

% Reference versions (which always are non-verbose) don't
% have the space for full-sized stats.

\iftoggle{verbose}{
	\begin{small}%
}{%
	\begin{footnotesize}
}

\setcounter{strb}{0}
\setcounter{spdb}{0}
\setcounter{dexb}{0}

\begin{tabularx}{\textwidth}{lr|lr|lr}

% the tcolorbox has coloured rows (xcolor package)
% but that doesn't work with creature stats, so we suppress it here
\hiderowcolors

	\iftoggle{verbose}{Strength}{STR} &amp; \arabic{str} &amp; \iftoggle{verbose}{Dexterity}{DEX} &amp; \arabic{dex} &amp; \iftoggle{verbose}{Speed}{SPD} &amp; \arabic{spd} \\
\iftoggle{mind}{
	\iftoggle{verbose}{Intelligence}{INT} &amp; \arabic{int}  &amp; \iftoggle{verbose}{Wits}{WTS} &amp; \arabic{wts} &amp; \iftoggle{verbose}{Charisma}{CHA} &amp; \arabic{cha}  \\}{%
	&amp;&amp; \iftoggle{verbose}{Wits}{WTS} &amp; \arabic{wts} \\
	}
	\setcounter{hp}{\value{str}}
\end{tabularx}

\begin{tabularx}{\linewidth}{lX}

	\ent{Skills} &amp; \ifnumcomp{\value{att}}{=}{0}{}{\iftoggle{mind}{Combat \arabic{att}, }{Aggression \arabic{att}, }} \skills \\
	\iftoggle{mind}{\ent{Equipment} &amp; \equipment \\}{\ent{Abilities} &amp; \abilities \\}

	\addtocounter{strb}{\value{str}}
	\addtocounter{dexb}{\value{dex}}
	\addtocounter{spdb}{\value{spd}}
	\setcounter{damb}{\value{dam}}
	\setcounter{attb}{\value{att}}

	\mods

\end{tabularx}

	\weaponknackone
	\weaponknacktwo

\iftoggle{examplecharacter}{}{
	\addtocounter{att}{7}
	\addtocounter{attb}{7}
}

\iftoggle{verbose}{%
	\end{small}%
}{%
	\end{footnotesize}%
}%
}

%%     _               _        _
%%  __| | ___ _ __ ___| |_ __ _| |_ ___ 
%% / _` |/ _ \ '__/ __| __/ _` | __/ __|
%%| (_| |  __/ |  \__ \ || (_| | |_\__ \
%% \__,_|\___|_|  |___/\__\__,_|\__|___/
%% 
%% 
%% dice instead of Damage
%% print out att, spd, DAM, dex, dr (type), str
%%
%
\newcommand{\derivedstats}{
	\iftoggle{debug}{str is \arabic{str}, strb is \arabic{strb}.}{}
	\hrulefill
	\hrulefill

\addtocounter{att}{\value{dex}}
\addtocounter{attb}{\value{dexb}}
\addtocounter{spd}{3}
\addtocounter{spdb}{3}
\ifnum\value{weight}&gt;\value{str}% now to compute encumbrance
  \addtocounter{spd}{\value{weight}}
  \addtocounter{spdb}{\value{weight}}
  \addtocounter{spd}{-\value{str}}
  \addtocounter{spdb}{-\value{str}}
\fi
\noindent Attack \arabic{att}\ifnumcomp{\value{att}}{=}{\value{attb}}{}{ (\arabic{attb})},
	AP \arabic{spd}\ifnumcomp{\value{spd}}{=}{\value{spdb}}{}{ (\arabic{spdb})}\ifnumcomp{\value{heft}}{&gt;}{1}{: \arabic{heft}}{},
  \addtocounter{damage}{\value{str}}
	\mbox{Damage \calculatedamage{\value{damage}}\ifnumcomp{\value{str}}{=}{\value{strb}}{}{\addtocounter{damage}{\value{strb}}\addtocounter{damage}{-\value{str}} (\calculatedamage{\value{damage}})},} 
	\ifnumcomp{\value{dr}}{&gt;}{0}{DR \arabic{dr}~\armourtype, }{}%
	\ifnum\value{mp}&gt;0%
		\addtocounter{mp}{\value{wts}}%
		\mbox{
		\ifnum\value{mpb}=0%
			\arabic{mp}~MP%
		\else%
			\addtocounter{mpb}{\value{mp}}%
			\arabic{mpb} / \arabic{mp} MP%
		\fi
		\iftoggle{bestiarychapter}%
			{, }%
			{ \Repeat{\value{mp}}{\ding{111}}, }%
		}
	\fi
	\addtocounter{hp}{6}
	\mbox{\arabic{hp} HP \iftoggle{bestiarychapter}{}{%
	\ \Repeat{\value{hp}}{\ding{111}}%
		}%
	}%
	\ifnumcomp{\value{sp}}{&gt;}{0}%
		{, \mbox{%
			\arabic{sp} SP %
			\iftoggle{bestiarychapter}{}{\Repeat{\value{sp}}{\ding{111}}}%
		}%
		}%
	{}%
\iftoggle{examplecharacter}{\addtocounter{fp}{\value{cha}}, \arabic{fp} FP}{}




	\iftoggle{examplecharacter}{}{
		\calculateXP
	}
	}
%
%
%% __  ______  
%% \ \/ /  _ \ 
%%  \  /| |_) |
%%  /  \|  __/ 
%% /_/\_\_|    
%%  
\newcommand{\calculateXP}{%
%% Sanitize: init+5, dam+5, 
	\addtocounter{spdb}{5}
	\addtocounter{strb}{5}
	\addtocounter{dex}{5}
	\addtocounter{dr}{2}


% Sanitize: dex+5, dr+1,  
% attackXPtotal= strb x spdb x damb
\vspace{.1cm}

	\setcounter{attackXPtotal}{\value{attb}}

	\multiply\value{attackXPtotal} by \value{spdb}

	
	\multiply\value{attackXPtotal} by \value{strb}

	\iftoggle{debug}{Attack total: \arabic{attackXPtotal}}{}
 
% defenceXPtotal= dex x dr x hp
	\setcounter{defenceXPtotal}{\value{dex}}
	\multiply\value{defenceXPtotal} by \value{dr}
	\multiply\value{defenceXPtotal} by \value{hp}

% XP = attackXPtotal + defenceXPtotal
	\setcounter{xp}{\value{attackXPtotal}}
	\addtocounter{xp}{\value{defenceXPtotal}}
	\addtocounter{xp}{-350}
	\multiply\value{mp} by 100
	\addtocounter{xp}{\value{mp}}
\ifnumcomp{\value{xp}}{&lt;}{120}{\ifnumcomp{\value{xp}}{&gt;}{100}{$1/2$ XP}{$1/3$}}{%
	\divide\value{xp} by 120%
	\addtocounter{xp}{\value{xpbonus}}%
\arabic{xp} XP}%
% if {mind} print fate points.
%
\iftoggle{examplecharacter}{%
}{
	\iftoggle{mind}%
		{\addtocounter{fp}{\value{cha}} \arabic{fp} FP %
		\iftoggle{bestiarychapter}%
			{}%
			{\Repeat{\value{fp}}{\ding{111}}}
}{}
	\vspace{.1cm}
	\hrule
}

	\vspace{.1cm}

}
%
%%%%%%%%%%%%%%%%%%%% Creature Abilities

\newcommand{\abilities}[1]{ \\
	\ent{Abilities:} &amp; #1 
	}

\newcommand{\claws}{
	Claws (grapple inflicts standard damage)%
}

\newcommand{\quadraped}{%
	Quadraped (double movement)%
}

\newcommand{\teeth}{%
	Teeth (grapple inflicts standard damage)%
}

	\newcommand{\web}{
		\setcounter{track}{6}\addtocounter{track}{\value{str}}
		Web (Strength + Athletics, TN \arabic{track} to break free as a movement action)
		}


%%%%%%%%%%%%%%%%%%%%% Magic Path
\newcommand{\Path}[1]{ \\
	\raggedright \ent{Spheres:} &amp; #1
	}
</pre></body></html>