Newer
Older
\newtoggle{genExamples}
\settoggle{genExamples}{false}
\newtoggle{allyCharacter}
\settoggle{allyCharacter}{false}
\newtoggle{perfectArmour}
\settoggle{perfectArmour}{false}
\newcommand\showNumbers{
\par
Str: \arabic{Strength},
Dex: \arabic{Dexterity},
Spd: \arabic{Speed},
Damage: \arabic{damage},
Weight: \arabic{weight},
Encumbrance: \arabic{encumbrance},
XP Bonus: \arabic{xpbonus},
Attack total: \arabic{attackXPtotal},
Def Total: \arabic{defenceXPtotal},
MP: \arabic{mp},
Grand Total: \arabic{xp}
\par
}
% _ _
% ___| |_ __ _| |_
% / __| __/ _` | __|
% \__ \ || (_| | |_
% |___/\__\__,_|\__|
%
%
% _ _ _
% | |__ | | ___ ___| | _____
% | '_ \| |/ _ \ / __| |/ / __|
% | |_) | | (_) | (__| <\__ \
% |_.__/|_|\___/ \___|_|\_\___/
%
% 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
%
% Most of the rest of the commands deal with
% properly calculating derived stats, like the TN
% to hit the creature.
\newtoggle{examplecharacter}
\settoggle{examplecharacter}{false}
\newcommand{\ent}[1]{\textbf{#1}}
\newcommand{\test}{}
\newcommand{\skills}{}
\newcommand{\equipment}{}
\newcommand{\abilities}{}
\newcommand{\Abilities}{}
\newcommand{\addAbility}[1]{\edef\Abilities{\Abilities{}#1. }}
\newcommand{\Equipment}{}
\newcommand{\addEquipment}[1]{\edef\Equipment{\Equipment{}#1, }}
\newcommand\absNum[1]{\ifnum\value{#1}>-1+\fi\arabic{#1}}
% we calculate damage here because we can't display 1d6+6 damage - it has to turn into 2d6+2 damage.
\newcommand\conDmg[1]{%
\setcounter{numberofdice}{1}%
\setcounter{damagebonus}{\value{#1}}%
\addtocounter{damagebonus}{-4}%
\whileboolexpr{%
test {\ifnumcomp{\value{damagebonus}}{>}{3}}%
}{%
\addtocounter{numberofdice}{1}%
}%
}
\newcommand\showDam{%
\arabic{numberofdice}D6\ifnum\value{damagebonus}=0\else\absNum{damagebonus}\fi%
\newcommand\dmg[1]{\conDmg{#1}\showDam}
\newcommand\showSkills{
\foreach \s in {Projectiles,Combat,Brawl,Academics,Athletics,Caving,Crafts,Deceit,Empathy,Flight,Medicine,Performance,Larceny,Seafaring,Stealth,Tactics,Vigilance,Wyldcrafting}
{\ifnum\value{\s}>0 \s~\arabic{\s}, \fi}
}
\newcommand\traits[7]{%
\clean%
\randomize%
\body#2%
\mind#3%
#4%
\foreach \k in {#5}{%
\stepcounter{knacks}%
}%
\renewcommand\showKnacks{#5}%
\foreach \s in {Air,Earth,Fate,Fire,Water}%
{\ifnum\value{\s}>0 \addtocounter{mp}{3}\fi}%
\renewcommand\equipment{#6}%
#7%
\computeEncumbrance%
\calculateXP%
}
\newcommand\statblock[1]{
\begin{tcolorbox}[
code={\setlength\parindent{0pt}#1},
ornamented,
fontupper=\small,
halign=flush left,
left=5pt,
right=5pt,
top=0pt,
bottom=10pt,
]
\creaturestats
\begin{tabularx}{\linewidth}{lX}
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
\ent{Skills} & \showSkills \\
\ifnum\value{mp}>0%
\ent{Spheres} &
\foreach \s in {Air,Earth,Fate,Fire,Water}%
{\ifnum\value{\s}>0 \s~\arabic{\s}, \fi}
\\
\fi
\ifnum\value{knacks}>0
\ent{Knacks} & \showKnacks \\
\fi
\ifdefempty{\Abilities}{}{%
\ent{Abilities} & \Abilities \\
}
\ifdefempty{\equipment}{}{%
\ent{Equipment} &
\ifdefempty{\weaponName}{}{%
\weaponName, %
}%
\ifdefempty{\armourName}{}{%
\armourName, %
}%
\equipment.
}%
\end{tabularx}
\tcblower%%%%%%%%%%%%%%%%%%%%
\derivedstats%
\end{tcolorbox}
}
\newcommand\Animal[6]{
\statblock{
\traits{#1}%
{#2}%
{{-6}{#3}{-6}}%
{}% EQUIPMENT
{#6}% ABILITIES
}
}
\newcommand\Person[7]{
\statblock{
\traits{#1}%
{#2}%
{#3}%
{%
#4
}% SKILLS
{#5}% KNACKS
{#6}% EQUIPMENT
{#7}% ABILITIES
}
\newcommand\showBoxes{%
\ifnum\value{mp}<1%
\ifnum\value{hp}>11%
\HPboxes%
\else%
\ifnum\value{hp}>6%
\HPHPboxes%
\else%
\HPHPHPboxes%
\fi%
\fi%
\else%
\ifnum\value{sp}<1%
\HPMPboxes%
\else%
\HPMPSPboxes%
\fi%
\fi%
\newcounter{wounds}
\setcounter{wounds}{0}
\newcommand\boxStat[1]{%
\addtocounter{#1}{-\value{wounds}}%
\Repeat{\value{wounds}}{\CheckedBox}%
\Repeat{\value{#1}}{\Square}%
\newcommand\HPboxes{%
\begin{tabular}{r}%
\hiderowcolors%
HP \arabic{hp}~%
\Repeat{\value{noAppearing}}{%
\boxStat{hp} \\%
}%
\end{tabular}%
\begin{tabular}{rr}%
\hiderowcolors%
HP \arabic{hp}~%
\whileboolexpr{test {\ifnumcomp{\value{track}}{>}{0}}}{%%
\ifnumodd{\value{track}}{ & \boxStat{hp} \\}{\boxStat{hp}}%%
\addtocounter{track}{-1}%
}%
\end{tabular}%
}
\newcommand\HPHPHPboxes{%
\begin{tabular}{rrr}%
\hiderowcolors%
HP \arabic{hp}~%
\whileboolexpr{test {\ifnumcomp{\value{track}}{>}{0}}}{%%
\ifnum\value{track}>0\boxStat{hp}\fi%
\addtocounter{track}{-1}%
\ifnum\value{track}>0\boxStat{hp}\fi%
\addtocounter{track}{-1}%
}
\newcommand\HPMPboxes{
\setcounter{enc}{\value{hp}}
\addtocounter{enc}{\value{mp}}
\ifnum\value{enc}<20
\begin{tabular}{rr}
\Repeat{\value{noAppearing}}{
HP \arabic{hp}
\boxStat{hp}
&
MP \arabic{mp}
\boxStat{mp}
\\
}
\end{tabular}
\else
\begin{tabular}{r}
\Repeat{\value{noAppearing}}{
HP \arabic{hp} \boxStat{hp} \\
MP \arabic{mp} \boxStat{mp} \\
}
\end{tabular}
\fi
}
\newcommand\HPMPSPboxes{
\setcounter{enc}{\value{hp}}
\addtocounter{enc}{\value{mp}}
\addtocounter{enc}{\value{sp}}
\ifnum\value{enc}<20
\begin{tabular}{rrr}
\Repeat{\value{noAppearing}}{
HP \arabic{hp}
\boxStat{hp}
&
MP \arabic{mp}
\boxStat{mp}
&
SP \arabic{sp}
\boxStat{sp}
\\
}
\end{tabular}
\else
\ifnum\value{enc}<10
\begin{tabular}{rr}
\Repeat{\value{noAppearing}}{
HP \arabic{hp} \boxStat{hp} &
MP \arabic{mp} \boxStat{mp} \\
& SP \arabic{sp} \boxStat{sp} \\
}
\end{tabular}
\else
\begin{tabular}{r}
MP \arabic{mp} \boxStat{mp} \\
SP \arabic{sp} \boxStat{sp} \\
}
\end{tabular}
\fi
\fi
%%%%%%%%%%%%%%%%%%%% Character Generation %%%%%%%%%%%%%%%%%%%%
%
% _
% ___ ___ _ _ _ __ | |_ ___ _ __ ___
% / __/ _ \| | | | '_ \| __/ _ \ '__/ __|
%| (_| (_) | |_| | | | | || __/ | \__ \
% \___\___/ \__,_|_| |_|\__\___|_| |___/
%
%
% Attributes: str, dex, spd, int, wts, cha
% secondary str, dex and spd
\newcounter{att}
\newcounter{dr}
\newcounter{knacks}
% Extras: MP hp fp
% Derived: dicenumber, dicebonus,
\newcounter{mp}
\newcounter{sp}
\newcounter{hp}
\newcounter{fp}
\newcounter{numberofdice}
\newcounter{damagebonus}
\newcounter{xp}
\newcounter{xpbonus}
\newcounter{attackXPtotal}
\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{\knacks}[1]{\gdef\showKnacks{#1}}
\newcommand\showKnacks{}
Adrenaline~Surge (+1 Damage, once per \ifnum\value{knacks}<2 combat\else round, \arabic{knacks} uses per combat\fi)%
Berserker (+1 \glsentrytext{ap}. on round 2 of combat, +1 Damage. on round 3)%
(+1 \glsentrytext{ap}, Attack, and Damage after charging 6 steps)%
(when an opponent hits 0 \glspl{hp}, damage transfers to the next opponent)%
}
\newcommand{\dodger}{%
(+\arabic{knacks} to dodge projectiles)%
}
\newcommand{\guardian}{%
Guardian
(spend 0 AP to guard someone, and gain +1 to guarding against attacks)%
}
\newcommand{\laststand}{%
(when losing \glspl{hp}, the character gains \setcounter{enc}{2}\addtocounter{enc}{\value{knacks}}\arabic{enc} AP)%
}
\setcounter{enc}{\value{knacks}}\roundUp{enc} (reduce cost to draw longbow by \arabic{enc} AP)
}
\newcommand{\perfectsneakattack}{%
Perfect Sneak Attack
(+\arabic{knacks} Damage for sneak attacks)
}
\newcommand{\precisestrike}{%
Precise Strike
(+1 Attack when calculating \pgls{vitalShot})
\newcommand{\specialist}[1]{%
Specialist
\iftoggle{examplecharacter}{ (+2 when using any #1)}{(#1)}%
}
\newcommand{\stunningstrike}{%
Stunning Strike
(take -1 penalty, and opponent's AP reduces by half Damage)%
}
\newcommand{\snapshot}{%
(Pay 0 AP to reload arrow or draw weapon)%
}
\newcommand{\unstoppable}{%
\addtocounter{hp}{2}%
Unstoppable
(+2 \glsentryshortpl{hp}, and +\arabic{knacks} to any Medicine rolls to save them when dying)%
\newcommand{\vengeful}{%
Vengeful%
\iftoggle{examplecharacter}{ (+2 Intelligence after losing HP)}{}%
}
\newcommand{\weaponmaster}[1]{%
\newcommand{\autophage}{%
\addtocounter{knacks}{1}%
Autophage
\ifnum\value{Wits}>\value{Charisma}%
\global\settoggle{snapCaster}{true}%
\fi%
(spells use Wits and cost 1 less \glsentrytext{ap})
\newcommand{\ritualcaster}{%
\addtocounter{knacks}{1}%
Ritual Caster
(spells use Intelligence, caster may spend 1 extra \gls{mp})
}
\newcommand{\fasthealer}{%
Fast Healer
\newcommand{\combatcaster}{Combat Caster}
\newcommand\chosenEnemy[1]{Chosen Enemy (+1 against #1, -2 when trying to be friendly)}
% _ __ ___ _ __ ___ ___ _ __
%| '_ \ / _ \ '__/ __|/ _ \| '_ \
%| |_) | __/ | \__ \ (_) | | | |
%| .__/ \___|_| |___/\___/|_| |_|
%|_|
%
%
% _ _
%% ___| |__ __ _ _ __ __ _ ___| |_ ___ _ __
%% / __| '_ \ / _` | '__/ _` |/ __| __/ _ \ '__|
%%| (__| | | | (_| | | | (_| | (__| || __/ |
%% \___|_| |_|\__,_|_| \__,_|\___|\__\___|_|
%%
%% optional counters, such as mana, are cleaned
%% clear: weaponsknack1 and 2,
%%
%
\ifltxcounter{#1}{\setcounter{Strength}{\value{#1}}}{\setcounter{Strength}{#1}}%
\ifltxcounter{#2}{\setcounter{Dexterity}{\value{#2}}}{\setcounter{Dexterity}{#2}}%
\ifltxcounter{#3}{\setcounter{Speed}{\value{#3}}}{\setcounter{Speed}{#3}}%
\ifltxcounter{#1}{\setcounter{Intelligence}{\value{#1}}}{\setcounter{Intelligence}{#1}}%
\ifltxcounter{#2}{\setcounter{Wits}{\value{#2}}}{\setcounter{Wits}{#2}}%
\ifltxcounter{#3}{\setcounter{Charisma}{\value{#3}}}{\setcounter{Charisma}{#3}}%
\newtoggle{snapCaster}
\settoggle{snapCaster}{true}
\setcounter{Dexterity}{#2}
\setcounter{Speed}{#3}
\renewcommand{\skills}{#7}
\renewcommand{\equipment}{#8}
before upper={\parindent0pt},
ornamented,
fontupper=\small,
halign=flush left,
\derivedstats
\end{tcolorbox}
\vspace{2em}
\noindent
\begin{minipage}{\linewidth}
\hrulefill\hspace{-0.15em}\raisebox{-1em}{\huge\npcsymbol}
\begin{center}\textbf{\large\name}\end{center}
#9%
\hphantom{\equipment}%
\vspace{-2em}
\textbf{Mannerism:}~\mannerism
\par
\textbf{Description:}~\NPCdescription
\ifdefempty{\npcQuote}{}{\par
\textbf{Quote:}~\textit{``\npcQuote''}
\settoggle{personality}{false}}%
{}
\setcounter{Dexterity}{#2}
\setcounter{Speed}{#3}
\setcounter{Wits}{#4}
\renewcommand{\skills}{#7}
\renewcommand{\abilities}{#8}
\begin{tcolorbox}[
title={\npcsymbol\ \name},
before upper={\parindent0pt},
ornamented,
left=5pt,
right=5pt,
top=0pt,
bottom=0pt,
\begin{minipage}{\linewidth}
\hrulefill\hspace{-0.15em}\raisebox{-1em}{\huge\npcsymbol}
\begin{center}\textbf{\large\name}\end{center}
#9%
\hphantom{\abilities}%
\vspace{-2em}
\newcommand{\clean}{%
\global\togglefalse{snapCaster}%
\knacks{}%
\foreach \s in {Air,Earth,Fate,Fire,Water,Projectiles,Combat,Brawl,Academics,Alchemy,Athletics,Caving,Crafts,Deceit,Empathy,Flight,Medicine,Performance,Larceny,Seafaring,Stealth,Tactics,Vigilance,Wyldcrafting}%
\foreach \s in {encumbrance,dr,covering,weaponDamage,weaponBonus,weaponWeight,armourWeight,armourDR,armourWeight,fp,sp,heft,weight,damage,knacks,mp,xpbonus}%
{\setcounter{\s}{0}}%
\setcounter{noAppearing}{1}%
}
%% _ _ _ _ _
%% __ _| |_| |_ _ __(_) |__ _ _| |_ ___ ___
%% / _` | __| __| '__| | '_ \| | | | __/ _ \/ __|
%%| (_| | |_| |_| | | | |_) | |_| | || __/\__ \
%% \__,_|\__|\__|_| |_|_.__/ \__,_|\__\___||___/
%%
%% Print the line,
%% print the attributes.
%% print the skills
%% print the knacks
%% print the equipment
%
\newcommand{\creaturestats}{
\footnotesize
\begin{tabularx}{\textwidth}{lr@{\hskip 3em}lr@{\hskip 3em}lr}
\hiderowcolors
Strength & \arabic{Strength} & Dexterity & \arabic{Dexterity} & Speed & \arabic{Speed} \\
\ifnum\value{Intelligence}>-6 Intelligence\fi &
\ifnum\value{Intelligence}>-6 \arabic{Intelligence}\fi &
Wits & \arabic{Wits} &
\ifnum\value{Charisma}>-6 Charisma\fi &
\ifnum\value{Charisma}>-6 \arabic{Charisma}\fi
\\
\end{tabularx}
\foreach \s in {Air,Earth,Fate,Fire,Water}%
{\ifnum\value{\s}>0 \addtocounter{mp}{3}\fi}
\begin{tabular}{p{.18\textwidth}>{\raggedright\arraybackslash}p{.75\textwidth}}
\skills \\
}{}
\ifdefempty{\showKnacks}{}{
\foreach \s in {Air,Earth,Fate,Fire,Water}%
{\ifnum\value{\s}>0 \s~\arabic{\s}, \fi}
\\
\fi
\iftoggle{mind}%
{%
\ifdefempty{\equipment}{}
{
\setcounter{attackXPtotal}{\value{Charisma}}% Must store Charisma while talisman shows spells
\ent{Equipment} & \equipment, \weaponName, \armourName \\
%%
%%
%% _ _
%% ___ ___ _ __ ___ _ __ ___| |_ __ _| |_ ___
%% / __/ _ \| '_ ` _ \| '_ \/ __| __/ _` | __/ __|
%%| (_| (_) | | | | | | |_) \__ \ || (_| | |_\__ \
%% \___\___/|_| |_| |_| .__/|___/\__\__,_|\__|___/
%% |_|
%%
\newcommand\computeStats{
\setcounter{hp}{6}%
\addtocounter{hp}{\value{Strength}}%
% Stats for allies don't need to show Combat +1 as 'TN 8 to hit', they just need to show '+1'.
\ifnum\value{weaponBonus}>0\set{att}{Combat}\else\set{att}{Brawl}\fi%
\addtocounter{att}{\value{Dexterity}}%
\addtocounter{att}{\value{weaponBonus}}%
\set{toHit}{att}%
\addtocounter{toHit}{7}%
\setcounter{ap}{\value{Speed}}%
\addtocounter{ap}{3}%
\addtocounter{ap}{-\value{encumbrance}}%
\setcounter{damage}{\value{Strength}}%
\addtocounter{damage}{4}%
\addtocounter{damage}{\value{weaponDamage}}%
\iftoggle{allyCharacter}{}{%
\addtocounter{covering}{\value{toHit}}%
}%
\ifnumcomp{\value{dr}}{>}{\value{armourDR}}%
{%
\divide\value{armourDR} by 2%
\addtocounter{dr}{\value{armourDR}}%
}{%
\divide\value{dr} by 2%
\addtocounter{dr}{\value{armourDR}}%
}%
\newcommand\computeEncumbrance{%
\setcounter{maxWeight}{\value{hp}}% now to compute encumbrance
\roundUp{maxWeight}%
\ifnum\value{armourWeight}>\value{maxWeight}%
\addtocounter{encumbrance}{\value{armourWeight}}%
\addtocounter{encumbrance}{-\value{maxWeight}}%
\fi%
\ifnum\value{weaponWeight}>\value{maxWeight}%
\addtocounter{encumbrance}{\value{weaponWeight}}%
\addtocounter{encumbrance}{-\value{maxWeight}}%
\fi%
\ifnum\value{weight}>\value{maxWeight}%
\addtocounter{encumbrance}{\value{weight}}%
\addtocounter{encumbrance}{-\value{weight}}%
\fi%
\addtocounter{weight}{\value{weaponWeight}}%
\addtocounter{weight}{\value{armourWeight}}%
\ifnum\value{weight}>\value{hp}%
\addtocounter{encumbrance}{\value{weight}}%
\addtocounter{encumbrance}{-\value{hp}}%
\fi%
\addtocounter{ap}{-\value{encumbrance}}%
}
%% _ _ _
%% __| | ___ _ __ ___| |_ __ _| |_ ___
%% / _` |/ _ \ '__/ __| __/ _` | __/ __|
%%| (_| | __/ | \__ \ || (_| | |_\__ \
%% \__,_|\___|_| |___/\__\__,_|\__|___/
%%
%%
%% dice instead of Damage
%% print out att, spd, DAM, dex, dr (type), str
%%
%
\newcommand{\derivedstats}{%
\setlength\topsep{0pt}%
\setlength\parskip{0pt}%
\begin{center}
\iftoggle{verbose}{\normalsize}{\large}%
\scshape AP \ifnum\value{ap}<1 $\frac{1}{2}$ \else \arabic{ap}\fi%
\ifnumcomp{\value{heft}}{>}{1}{ (AP Cost: \arabic{heft})}{},
Att %
\iftoggle{allyCharacter}{$2D6$\absNum{att}}{\arabic{toHit}},\space%
\mbox{Dam \dmg{damage},\space}%
\ifnumcomp{\value{dr}}{>}{0}{%
\mbox{DR \arabic{dr}%
\iftoggle{perfectArmour}%
{}%
{ (\arabic{covering}!)}, }%
}{}%
\iftoggle{genExamples}{%
HP~\arabic{hp},
\ifnum\value{mp}>0%
MP \arabic{mp},
\fi%
\ifnum\value{sp}>0%
SP \arabic{sp},
\fi%
}{%
\par%
\showBoxes%
\iftoggle{allyCharacter}{}{%
\iftoggle{examplecharacter}{}{%
\outline{\glsentrytext{cr}: \showCR}%
}%
}%
\end{center}%
%
%
%% __ ______
%% \ \/ / _ \
%% \ /| |_) |
%% / \| __/
%% /_/\_\_|
%%
%%% Now to get the XP value of the creature's attack ability.
%%% = Attack (TN) * Dam + max((spd-hef),mp)^2
\setcounter{attackXPtotal}{\value{att}}%
\multiply\value{attackXPtotal} by \value{damage}%
\setcounter{gold}{\value{Speed}}%
\addtocounter{gold}{-\value{heft}}%
\ifnum\value{gold}>\value{mp}%
\setcounter{enc}{\value{gold}}%
\fi%
\multiply\value{enc} by\value{enc}%
\addtocounter{attackXPtotal}{\value{enc}}%
%%% And now the XP defence total.
%%% = (att - 7 + dr) x hp
\ifnum\value{att}>7%
\setcounter{defenceXPtotal}{\value{att}}%
\addtocounter{defenceXPtotal}{-7}%
\else%
\setcounter{defenceXPtotal}{0}%
\fi%
\addtocounter{defenceXPtotal}{\value{dr}}%
\multiply\value{defenceXPtotal} by\value{hp}\addtocounter{defenceXPtotal}{0}%
% XP = attackXPtotal + defenceXPtotal
\setcounter{xp}{\value{attackXPtotal}}%
\addtocounter{xp}{\value{defenceXPtotal}}%
\ifnumcomp{\value{xp}}{<}{73}%
{\ifnumcomp{\value{xp}}{<}{40}%
{\renewcommand\showCR{\arabic{xpbonus}}}{\renewcommand\showCR{$\frac{1}{2}$}}}%
\addtocounter{xp}{-60}%
\divide\value{xp} by 13%
\addtocounter{xp}{\value{xpbonus}}%
{
\begin{tcolorbox}[
title={\A\ Swarm: #2},
before upper={\parindent0pt},
ornamented,
fontupper=\small,
halign=flush left,
left=10pt,
right=15pt,
top=0pt,
bottom=0pt,
]
\scshape
\begin{tabularx}{.8\textwidth}{YYYY}
\hiderowcolors
\Gls{ap}: \arabic{ap} & Att: $\arabic{att} - HP$
\iftoggle{verbose}{
& Speed: \arabic{Speed}
& Wits: \arabic{Wits}
}{
& Dam: 1
}
\\
&
\iftoggle{genExamples}%
{HP: \arabic{hp}
{\showBoxes}%
& \\ %
\end{tabularx}
\ifdefempty{\Abilities}{}{%
\normalfont
\par
\par\textbf{Abilities:} \Abilities
}%
\vspace{1.4em}%
\end{tcolorbox}%
\null%
}
\ifnum\value{Brawl}<3%
\setcounter{Brawl}{2}%
\fi%
\ifnum\value{dr}>1%
\stepcounter{dr}%
\else%
\setcounter{dr}{2}%
\fi%
\newcommand{\acidSpray}{%
\setcounter{track}{4}%
\setcounter{age}{7}%
\addtocounter{age}{\value{Dexterity}}%
\conDmg{track}%
\addAbility{acid spray (\glsentrytext{tn}~\arabic{age} to dodge or \showDam~Damage)}%
\newcommand{\acidBody}[1][acidic]{%
\toggletrue{perfectArmour}%
\set{track}{Strength}%
\addtocounter{track}{3}%
\conDmg{track}%
\addAbility{#1 body (inflict \showDam~Damage each turn of grappling)}%
\setcounter{track}{\value{Strength}}%
\addtocounter{track}{6}%
\roundUp{track}%
\addAbility{regeneration (1 \glsentrytext{hp}/ round, max. \arabic{track})}%
\setcounter{track}{\value{Strength}}%
\addAbility{viscid (on a tie, the attacker must inflict Damage, but the weapon sticks into the body, \glsentrytext{tn}~\arabic{track} to pull out)}%
\addAbility{liquid (non-fire Damage removes 2~\glsentrytext{hp} but creates a 1~\glsentrytext{hp} copy)}%
\newcommand{\amphibious}{%
\addAbility{amphibious}%
\ifnum\value{weaponDamage}<1%
\stepcounter{weaponDamage}%
\setcounter{track}{4}%
\conDmg{track}%
\setcounter{enc}{\value{hp}}%
\addtocounter{enc}{\value{hp}}%
\addAbility{fiery breath (range: \arabic{enc} \glspl{step}, Dam: \showDam\ifnum\value{mp}>0\ plus 1 per \glsentrytext{mp} spent\fi)}%
% To fly, creatures should have Speed
% + Dexterity greater than Strength +
% DR.
\addtocounter{enc}{\value{Strength}}%
\setcounter{track}{\value{Speed}}%
\addtocounter{track}{\value{Air}}%
\ifnum\value{enc}>\value{track}%
(can glide, but not fly)
\ifnum\value{enc}=\value{track}%
(moves at x8 speed, must run before takeoff)%
}
\newcommand{\stench}{%
\setcounter{track}{10}%
\addtocounter{track}{-\value{Speed}}%
\addAbility{Stench (breathing in demands \roll{Strength}{Wyldcrafting} check, \glsentrytext{tn}~\arabic{track},
or take 3 \glspl{ep})}%
}
\newcommand{\crazyGas}{%
\setcounter{track}{4}%
\addtocounter{track}{\value{Strength}}%
\addAbility{Gas (receive hallucinations and \arabic{track}~\glspl{ep} per round)}%
\setcounter{track}{2}%
\addtocounter{track}{\value{Strength}}%
\addtocounter{track}{\value{Dexterity}}%
\ifnum\value{track}<2\setcounter{track}{2}\fi%
\roundUp{enc}%
\addAbility{\arabic{track}~tentacles (grapple up to \arabic{enc} opponents without going prone)}%
\conDmg{r4b}%
\addAbility{venom (grappling attack inflicts \showDam~\glsfmtlongpl{ep})}%
\setcounter{track}{8}%
\addtocounter{track}{\value{Strength}}%
\addAbility{web (\roll{Strength}{Athletics}, \glsentrytext{tn} \arabic{track} to break free for 1~\glsentrytext{ap})}%
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
\raggedright \ent{Spheres} & #1
}
\newcommand\mutation[2][1]{%
\Repeat{#1}{%
\ifcase\value{#2}\relax%
\hide{\value{r3}}%
\or%
\teeth%
\or%
\claws%
\or%
\venom%
\or%
\amphibious%
\or%
\tentacles%
\or%
\web%
\else%
\flight%
\fi%
\stepcounter{#2}%
}%