Newer
Older
\newtoggle{genExamples}
\settoggle{genExamples}{false}
\newtoggle{allyCharacter}
\settoggle{allyCharacter}{false}
\newtoggle{perfectArmour}
\settoggle{perfectArmour}{false}
\newtoggle{weaponMaster}
\settoggle{weaponMaster}{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
Armour DR: \arabic{armourDR}
Armour Weight: \arabic{armourWeight}
\setcounter{enc}{\value{noAppearing}}%
\addtocounter{enc}{4}%
\needspace{\value{enc}\baselineskip}%
\ifdefempty{\NPCdescription}{\vfill\null}{%
\textbf{Description:}~\NPCdescription.
\textbf{Wants:}~\npcGoal.
% _ _
% ___| |_ __ _| |_
% / __| __/ _` | __|
% \__ \ || (_| | |_
% |___/\__\__,_|\__|
%
%
% _ _ _
% | |__ | | ___ ___| | _____
% | '_ \| |/ _ \ / __| |/ / __|
% | |_) | | (_) | (__| <\__ \
% |_.__/|_|\___/ \___|_|\_\___/
%
\newtoggle{examplecharacter}
\settoggle{examplecharacter}{false}
\newcommand{\ent}[1]{\textbf{#1}}
\newcommand{\equipment}{}
\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}%
\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}
\foreach \s in {Projectiles,Melee,Brawl,Academics,Athletics,Caving,Crafts,Cultivation,Deceit,Empathy,Flight,Medicine,Performance,Larceny,Seafaring,Stealth,Survival,Vigilance}
{\ifnum\value{\s}>0 \s~\arabic{\s}, \fi}
}
\newcommand\traits[7]{%
\clean%
\randomize%
\body#2%
\mind#3%
#4%
\foreach \k in {#5}{%
\stepcounter{knacks}%
}%
\setcounter{knacksPlusTwo}{\value{knacks}}%
\addtocounter{knacksPlusTwo}{2}%
\edef\Knacks{#5}%
\foreach \s in {Air,Earth,Fate,Fire,Water}%
{\ifnum\value{\s}>0 \addtocounter{mp}{3}\fi}%
\renewcommand\equipment{#6}%
#7%
\computeEncumbrance%
}
\newcommand\statblock[1]{
\begin{tcolorbox}[
before={\vspace{.5em}\begin{minipage}{\linewidth}},
after={\afterStatBlock\end{minipage}},
fontupper=\small,
halign=flush left,
]
\creaturestats
\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
\fi
\ifdefempty{\Abilities}{}{%
\ent{Abilities} & \Abilities \\
}
\ifdefempty{\equipment}{}{%
\ent{Equipment} &
\ifdefempty{\weaponName}{}{%
\weaponName, %
}%
\ifdefempty{\armourName}{}{%
\armourName, %
}%
\equipment.
}%
\end{tabularx}
\tcblower%%%%%%%%%%%%%%%%%%%%
\end{tcolorbox}
}
\newcommand\Animal[6]{
\statblock{
\traits{#1}%
{#2}%
{{-6}{#3}{-6}}%
\newcommand\Person[7]{
\statblock{
\traits{#1}%
{#2}%
{#3}%
{%
#4
}% SKILLS
{#5}% KNACKS
{#6}% EQUIPMENT
{#7}% ABILITIES
}
\ifnum\value{noAppearing}=1\fpStat\qquad\fi%
{\centering\Repeat{\value{noAppearing}}{\hpStat\quad\mpStat\qquad}}%
{\centering\Repeat{\value{noAppearing}}{\hpStat\quad}}%
\newcounter{wounds}
\setcounter{wounds}{0}
\newcounter{freeHP}
\setcounter{freeHP}{0}
\Repeat{\value{#1}}{\Square}%
\newcommand\boxDelimiter{%
\ifnum\value{track}>4%
\textperiodcentered\setcounter{track}{0}%
\fi%
\stepcounter{track}%
}
\setcounter{track}{0}%
\Repeat{\value{weight}}{\boxDelimiter\glsentrysymbol{weight}}%
\Repeat{\value{freeHP}}{\boxDelimiter\glsentrysymbol{hp}}%
\Repeat{\value{wounds}}{\boxDelimiter\text{$\vcenter{\hbox{\scalebox{1.1}{\otimes}}}$}}%
\Repeat{\value{mp}}{\boxDelimiter\glsentrysymbol{mp}}%
\setcounter{track}{0}%
\Repeat{\value{fp}}{\boxDelimiter\glsentrysymbol{fp}}%
%%%%%%%%%%%%%%%%%%%% Character Generation %%%%%%%%%%%%%%%%%%%%
%
% _
% ___ ___ _ _ _ __ | |_ ___ _ __ ___
% / __/ _ \| | | | '_ \| __/ _ \ '__/ __|
%| (_| (_) | |_| | | | | || __/ | \__ \
% \___\___/ \__,_|_| |_|\__\___|_| |___/
%
%
% Attributes: str, dex, spd, int, wts, cha
% secondary str, dex and spd
\newcounter{att}
% Extras: MP hp fp
% Derived: dicenumber, dicebonus,
\newcounter{mp}
\newcounter{hp}
\newcounter{fp}
\newcounter{numberofdice}
\newcounter{damagebonus}
\newcounter{xp}
\newcounter{xpbonus}
\newcounter{attackXPtotal}
\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}
% _
% ___ ___ _ __ ___ _ __ ___ __ _ _ __ __| |___
% / __/ _ \| '_ ` _ \| '_ ` _ \ / _` | '_ \ / _` / __|
% | (_| (_) | | | | | | | | | | | (_| | | | | (_| \__ \
% \___\___/|_| |_| |_|_| |_| |_|\__,_|_| |_|\__,_|___/
%
%%%%%%%%%%%%%%%%%%%%% Knacks
%
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)%
Fast Charge (+1 to Attack and Damage after spending %
\ifnum\value{Athletics}>0 %
1~\glsentrytext{ap} to move%
\else%
2~\glsfmtplural{ap} to move%
\fi)%
Cutting Swing (reduce an opponent to 0~\glsfmtplural{hp}, and the same \glsentrytext{natural} to attack applies to another within range)%
Dodger (+\arabic{knacks} to dodge projectiles)%
Guardian (spend 0~\glsfmtplural{ap} to guard someone, and take all attacks targetted at them with a +1 Bonus)%
(when losing \glsfmtplural{hp}, the character gains \arabic{knacksPlusTwo}~\glsfmtplural{ap})%
Mighty Draw \setcounter{encnum}{\value{knacks}}%
\divide\value{encnum}by 2%
(reduce cost to draw longbow by%
\ifnum\value{encnum}=0\stepcounter{encnum}\fi \arabic{encnum}~\glsfmtplural{ap})%
Perfect Sneak Attack (+\arabic{knacks} Damage for sneak attacks)%
Precise Strike (+1 Attack when calculating \pgls{vitalShot})%
Stunning Strike (hit an opponent with fewer \glsfmtplural{ap}, and take a -1 Penalty to attack; opponent's \glsfmtplural{ap} reduces by \arabic{knacks})%
Snap Draw (Pay 0 \glsfmtplural{ap} to reload bow or draw weapon)%
(+2 \glsentryshortpl{hp}%
\ifnum\value{Intelligence}>-5, and +\arabic{knacks} to any Medicine rolls to save them when dying%
\fi)%
Vengeful (+2~\iftoggle{snapCaster}{Wits}{Charisma} after losing~\glsfmtplural{hp})%
\newcommand{\weaponmaster}{%
Weapon Master (+1 to \weaponName\ attacks)%
Autophage (cast with \glsfmtplural{ep} instead of \glsfmtplural{mp})%
\ifnum\value{Wits}>\value{Charisma}%
\global\settoggle{snapCaster}{true}%
\fi%
Snap Caster (spells use Wits and cost 1~\glsentrytext{ap} less)%
\newcommand{\ritualcaster}{%
\addtocounter{knacks}{1}%
Ritual Caster (spells use Intelligence, caster may spend 1 extra \glsentrytext{mp})%
Fast Healer (resting heals one more \glsentrytext{ep} or~\glsentrytext{mp})%
\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}
\newcommand{\clean}{%
\global\togglefalse{snapCaster}%
\global\togglefalse{weaponMaster}%
\foreach \s in {Air,Earth,Fate,Fire,Water,Projectiles,Melee,Brawl,Academics,Alchemy,Athletics,Caving,Crafts,Cultivation,Deceit,Empathy,Flight,Medicine,Performance,Larceny,Seafaring,Stealth,Survival,Vigilance}%
\foreach \s in {encumbrance,dr,covering,weaponDamage,weaponBonus,weaponWeight,armourDR,armourWeight,fp,heft,weight,damage,knacks,mp,spentMP,xpbonus,xp}%
{\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}
%%
%%
%% _ _
%% ___ ___ _ __ ___ _ __ ___| |_ __ _| |_ ___
%% / __/ _ \| '_ ` _ \| '_ \/ __| __/ _` | __/ __|
%%| (_| (_) | | | | | | |_) \__ \ || (_| | |_\__ \
%% \___\___/|_| |_| |_| .__/|___/\__\__,_|\__|___/
%% |_|
%%
\newcommand\computeStats{
\setcounter{hp}{6}%
\addtocounter{hp}{\value{Strength}}%
% Stats for allies don't need to show Melee +1 as 'TN 8 to hit', they just need to show '+1'.
\ifnum\value{weaponBonus}>0%
\set{att}{Melee}%
\iftoggle{weaponMaster}{\stepcounter{att}}{}%
\else%
\set{att}{Brawl}%
\fi%
\ifnum\value{att}<0\setcounter{att}{0}\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}}%
\setcounter{freeHP}{0}%
\else%
\setcounter{freeHP}{\value{hp}}%
\addtocounter{freeHP}{-\value{weight}}%
\fi%
\addtocounter{ap}{-\value{encumbrance}}%
\addtocounter{weight}{-\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%
}{}
\iftoggle{genExamples}{%
\ifnum\value{Intelligence}>-1%
\ifnum\value{weight}>0%
\Glsentrytext{weight}~held~\arabic{weight},%
\fi%
\fi%
}{}
{\hfil\small\textcolor{\pageSideColor}{\calculateXP}}%
%
%
%% __ ______
%% \ \/ / _ \
%% \ /| |_) |
%% / \| __/
%% /_/\_\_|
%%
%%% Now to get the XP value of the creature's attack ability.
%%% = Attack (TN) * Dam + max((spd-hef),mp)^2
\iftoggle{allyCharacter}{}{%
\iftoggle{examplecharacter}{}{%
\setcounter{attackXPtotal}{\value{toHit}}%
\multiply\value{attackXPtotal} by \value{damage}%
\multiply\value{attackXPtotal} by \value{ap}%
\divide\value{attackXPtotal} by 50%
\addtocounter{attackXPtotal}{-\value{heft}}%
\ifnum\value{mp}>0%
\ifnum\value{attackXPtotal}<\value{mp}%
\setcounter{attackXPtotal}{\value{mp}}%
\else%
\setcounter{enc}{\value{mp}}%
\divide\value{enc} by 2%
\addtocounter{attackXPtotal}{\value{enc}}%
\fi%
\fi%
\setcounter{defenceXPtotal}{\value{hp}}%
\multiply\value{defenceXPtotal} by \value{dr}%
\divide\value{defenceXPtotal} by 10%
\addtocounter{xp}{\value{attackXPtotal}}%
\addtocounter{xp}{\value{defenceXPtotal}}%
\ifnum\value{xp}<0\setcounter{xp}{0}\fi%
before upper={\parindent0pt},
ornamented,
fontupper=\small,
\scshape
\begin{tabularx}{.8\textwidth}{YYYY}
\hiderowcolors
\iftoggle{verbose}{
& Speed: \arabic{Speed}
& Wits: \arabic{Wits}
}{
& Dam: 1
}
\\
HP:~\iftoggle{genExamples}%
{\arabic{hp}}%
{\hpStat}%
\ifdefempty{\Abilities}{}{%
\normalfont
\par\textbf{Abilities:} \Abilities
}%
{\hfil\small\textcolor{\pageSideColor}{\calculateXP}}%
\ifnum\value{Brawl}<3%
\setcounter{Brawl}{2}%
\fi%
\ifnum\value{dr}>1%
\stepcounter{dr}%
\else%
\setcounter{dr}{2}%
\fi%
\setcounter{weaponWeight}{0}% Stop EP showing.
\setcounter{armourWeight}{0}
\newcommand{\acidSpray}{%
\setcounter{track}{4}%
\setcounter{age}{7}%
\addtocounter{age}{\value{Dexterity}}%
\addAbility{Acid spray (\glsentrytext{tn}~\arabic{age} to dodge or \showDam~Damage)}%
\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)}%
\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} \glsfmtplural{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}{Survival} check, \glsentrytext{tn}~\arabic{track},
or take 3~\glsfmtplural{ep})}%
}
\newcommand{\crazyGas}{%
\setcounter{track}{4}%
\addtocounter{track}{\value{Strength}}%
\addAbility{Gas (receive hallucinations and \arabic{track}~\glsfmtplural{ep} per round)}%
\newcommand{\quadruped}{%
\addAbility{Quadruped (double movement)}%
\newcommand{\hexapod}{%
\addAbility{Hexapod (double movement)}%
\newcommand{\octopod}{%
\addAbility{Octopod (double movement)}%
\setcounter{track}{2}%
\addtocounter{track}{\value{Strength}}%
\addtocounter{track}{\value{Dexterity}}%
\ifnum\value{track}<2\setcounter{track}{2}\fi%
\addAbility{\arabic{track}~tentacles (grapple up to \arabic{enc} opponents without going prone)}%
\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})}%
\ifnum\value{Strength}>0%
\addtocounter{weight}{\value{Strength}}%
\fi%
\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}%
}%
%%%%%%%%%%%%%%%%%%%% Human Names
\newcounter{humanNameNo}
\setcounter{humanNameNo}{\value{r12}}
\newcounter{humanNameSuffNo}
\setcounter{humanNameSuffNo}{\value{r4}}
\newcommand\humanNamePrefix{%
\randomfour%
\addtocounter{humanNameNo}{\value{r4}}%
\ifnum\value{humanNameNo}>20\addtocounter{humanNameNo}{-20}\fi%
\expandafter\expandafter\ifcase\value{humanNameNo}\relax%
\or%
Grit%
\or%
Rank%
\or%
Scour%
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
\or%
Steer%
\or%
Mush%
\or%
Stoat%
\or%
Court%
\or%
Glum%
\or%
Flic%
\or%
Dug%
\or%
Nark%
\or%
Nettle%
\or%
Slate%
\or%
Gourse%
\or%
Cinder%
\or%
Soot%
\or%
Moc%
\or%
Keel%
\else%
Gout%
\fi%
}
\newcommand\humanNameSuffix{%
\randomthreeB%
\addtocounter{humanNameSuffNo}{\value{r3b}}%
\ifnum\value{humanNameSuffNo}>21\addtocounter{humanNameSuffNo}{-21}\fi%
\ifcase\value{humanNameSuffNo}\relax%
\or%
itch%
\or%
vore%
\or%
snag%
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
\or%
peel%
\or%
groat%
\or%
fen%
\or%
nash%
\or%
nail%
\or%
rash%
\or%
flay%
\or%
boak%
\or%
broil%
\or%
pike%
\or%
filch%
\or%
snatch%
\or%
flea%
\or%
fray%
\or%
rag%
\else%
blathe%
\fi%
}
\newcommand\composeHumanName{%
\humanNamePrefix\humanNameSuffix%
}