Newer
Older
\RequirePackage[
acronyms,
prefix,
symbols,
stylemods=mcols,
style=mcoltree,
]{glossaries-extra}
\setabbreviationstyle[acronym]{short-sc-long-desc}
\RequirePackage{starfont} % for creature symbols
\RequirePackage{wasysym} % for sq checkboxes
\RequirePackage{tabularx}
\RequirePackage{wrapfig}
\RequirePackage{float}
\RequirePackage{epigraph} % part quotes
\RequirePackage{microtype} % more precise word-placement
\RequirePackage{makeidx}
\RequirePackage[english]{babel}
\RequirePackage{multicol}
\RequirePackage{graphicx}
\RequirePackage{etoolbox}
\RequirePackage{titlesec,titletoc}
\RequirePackage{fancyhdr}
\RequirePackage{adforn}% for fancy headrules
\usetikzlibrary{calc,mindmap,trees}% calc for fancy borders
\usetikzlibrary{intersections}% for very fancy borders with intersecting lines
\usetikzlibrary{decorations.text}% for text along circle paths in cs
\usetikzlibrary{shapes.callouts}% for labels on the cs
\usetikzlibrary{patterns}% for the pattern 'gridspecks'
\RequirePackage{colortbl}
\RequirePackage[poster]{tcolorbox}
\pgfdeclarepatternformonly{gridspecks}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{1pt}{1pt}}{\pgfqpoint{26pt}{26pt}}
{%
\pgfpathcircle{\pgfqpoint{0pt}{0pt}}{.5pt}%
\pgfusepath{fill}%
}%
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
%%%%% Common Commands %%%%%
% make repeating function
\newcommand{\Repeat}[1]{%
\expandafter\@Repeat\expandafter{\the\numexpr #1\relax}%
}
\def\@Repeat#1{%
\ifnum#1>0
\expandafter\@@Repeat\expandafter{\the\numexpr #1-1\expandafter\relax\expandafter}%
\else
\expandafter\@gobble
\fi
}
\def\@@Repeat#1#2{%
\@Repeat{#1}{#2}#2%
}
% This allows us to compare two strings. What other wonders will LaTeX bring in the future? Perhaps subtraction syntax one day.
\ExplSyntaxOn
\NewExpandableDocumentCommand{\ifStrSame}{mmmm}
{
\str_if_eq:eeTF { #1 } { #2 } { #3 } { #4 }
}
\ExplSyntaxOff
% This function divides a number by two, and rounds it up.
\newcommand\roundUp[1]{%
\ifodd\value{#1}%
\stepcounter{#1}%
\fi%
\divide\value{#1} by 2%
\addtocounter{#1}{0}% Think this line's pointless? Try removing it and seeing what happens - I dare you.
}
\newcounter{chapshift}
\addtocounter{chapshift}{-1}
\vspace{-6pt}%
\textcolor{\pageSideColor}{\hrulefill}%
\raisebox{-2.1pt}%
{\textcolor{\pageSideColor}{\quad\adfdoubleflourishleft\npcsymbol\adfdoubleflourishright\quad}}%
%% Redefine plain page style, and use it for every page.
\fancypagestyle{plain}{
\fancyhf{}% clear all header and footer fields
\fancyfoot[LE]{\textgoth{\large\thepage\if@mainmatter\hspace{1em}\textcolor{\pageSideColor}{\adfflatleafleft}\fi}}
\fancyfoot[RO]{\textgoth{\large\if@mainmatter\textcolor{\pageSideColor}{\adfflatleafright}\hspace{1em}\fi\thepage}}
}
\pagestyle{plain}
%\fancyfoot{}
\newcounter{pageDarkness}
\setcounter{pageDarkness}{20}
\newcounter{pageAlt}
\setcounter{pageAlt}{100}
\newcommand\pageSideColor{black!\arabic{pageDarkness}!white}
\newcommand\pageOppositeColor{black!\arabic{pageAlt}}
\AddToHook{shipout/background}{%
\if@mainmatter
\pgfmathsetmacro{\BGvadjust}{ -2 * (\value{chapter} - 1)}
\def\BGpageanchor{current page.north east}
\def\BGanchor{north west}
\def\BGmark{\textcolor{\pageOppositeColor}{\rightmark}}
\def\BGpageanchor{current page.north west}
\def\BGanchor{north east}
\def\BGmark{\textcolor{\pageOppositeColor}{\leftmark}}
\fi\typeout{Underfed goblins (badness \thepage0000)}
\begin{tikzpicture}[overlay,remember picture]
\path
++(\BGpageanchor)
+(0cm, \BGvadjust cm)
node[
text centered,
inner sep=4pt,
text width=4ex,
text height=4ex,
text depth=3ex,
text width=14em,
text=white,
fill=\pageSideColor,
anchor=\BGanchor,
rotate=\BGrotate,
font=\scshape\bfseries,
] {\BGmark};
\end{tikzpicture}%
\fi
}%
% redefinition of \chaptermark to contain only the number and title (no 'Chapter 1: Pogs', just '1: Pogs')
\renewcommand\chaptermark[1]{\markboth{\thechapter.~#1}{}}
\newcommand\flwr{\textcolor{\pageSideColor}{\ifodd\thepage\adfflowerright\else\adfflowerleft\fi}}
\newcommand\failStar{\textcolor{\pageSideColor}{\Fortune}}
\RequirePackage{xr-hyper}
\RequirePackage[
pdfstartpage=1,
hidelinks=true,
bookmarks=true]%
{hyperref}
%%%%%%%%%% Allow for external referencing
\newcommand*{\externalReferent}[1]{
\IfFileExists{../#1/#1.aux}{
\@addtofilelist{../#1/#1.tex}
\@addtofilelist{../#1/#1.aux}%
\externaldocument{../#1/#1}%
\settoggle{#1}{true}
}%
{\typeout{No file #1.}
\settoggle{#1}{false}
}
\renewcommand{\footnoterule}{\vspace{-0.5em}\noindent\textcolor{\pageSideColor}{\raisebox{2.9pt}{\line(1,0){100}}\hspace{-2pt}\adforn{63}} \vspace{.5em} }
% Argument 1: The target git directory (e.g. 'core')
% Argument 2: What to call that directory (e.g. 'the core rules')
% Argument 3: Which label you're referring to
\newcommand\exRef[3]{%
\ignorespaces\iftoggle{#1}{\footnote{\textit{\MakeUppercase#2}, \autopageref{#3}.
%%%%%%%%%% Section Headers %%%%%%%%%%
%%% Allow quotes under part headers
\let\old@endpart\@endpart
\renewcommand\@endpart[1][]{%
\begin{quote}#1\end{quote}%
\old@endpart}
%%%%%%%%%% Give higher penalty to ~
% The ~ character usually functions as a space with a high penalty for line breaks.
% This stops the line breaks altogether, so we can write 'Athletics 3', without a line-break between the Skill and the number.
\DeclareRobustCommand{\nobreakspace}{%
\leavevmode\nobreak\ }
\catcode `\~=13
\def~{\nobreakspace{}}
%%%%% Make table of contents two column
\renewcommand\tableofcontents{%
\renewcommand{\labelitemi}{\textcolor{\pageSideColor}{\ifodd\the\c@page\adfdownhalfleafright\else\adfdownhalfleafleft\fi}}
\renewcommand{\labelitemii}{\textcolor{\pageSideColor}{\adfdownhalfleafleft}}
%%%%%%%%%% Encounter Numbers
\newcounter{encnum}
\setcounter{encnum}{1}
\newcommand{\sqarea}{town}
\noindent%
\IfFileExists{images/#1.svg}{%
\noindent\includesvg[width=\linewidth]{images/#1}
}{%
\includegraphics[width=\linewidth]{images/#1.jpg}
}
\needspace{4cm}
\begin{wrapfigure}{R}{.#1\linewidth}
\noindent%
\IfFileExists{images/#2.svg}{%
\includesvg[width=\linewidth]{images/#2}
}{
\includegraphics[width=\linewidth]{images/#2.jpg}
}
#3
\end{wrapfigure}
\newcommand{\widePic}[2][b]{
\begin{figure*}[#1!]
\IfFileExists{images/#2.svg}{
\includesvg[width=\textwidth]{images/#2}
\tcbincludegraphics[
blankest,
before upper={\parindent0pt},
boxrule=0mm,
finish fading vignette={size=0.02\textwidth},
]{images/#2.jpg}
\node [black, font=\bfseries] at (0.#2,0.#3) {#4 #1};
\newcommand\mapPic[4][\Huge]{
\begin{figure*}[#2!]
\begin{tikzpicture}[every shadow/.style={
shadow blur invert,
shadow xshift=-1pt,
shadow yshift=-3pt
}]
\node[anchor=south west,inner sep=0] (image) at (0,0) {\pic{#3}};
\begin{scope}[
x={(image.south east)},
y={(image.north west)}
]
\foreach \mNum/\mX/\mY in {#4}{
}
\end{scope}
\end{tikzpicture}
\end{figure*}
}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) {\pic{#2}};
\begin{scope}[
x={(image.south east)},
y={(image.north west)}
]
\foreach \mNum/\mX/\mY in {#3}{
\mapLegend{\outline{\mNum}}{\mX}{\mY}{#1}
}
\end{scope}
\end{tikzpicture}
\label{#2}
}
\newcounter{tn}
\setcounter{tn}{7}
\newcommand\tn[1][\arabic{tn}]{%
\newcommand\roll[2]{%
\setcounter{tn}{7}%
\addtocounter{tn}{\value{#1}}%
\ifltxcounter{#2}{\addtocounter{tn}{\value{#2}}}{}%
%%% The dice-face (\dicef) command shows an actual die, or multiple
%%% dice, equal to a number. The optional argument lets it show
%%% as \large or similar.
\newcounter{diceNo}
\newcommand\dicef[2][]{%
\ifnum\value{diceNo}=12%
\epsdice[black]{6}%
\epsdice{6}%
\ifnum\value{diceNo}>0%
\whileboolexpr{%
test {\ifnumcomp{\value{diceNo}}{>}{6}}%
}{%
\addtocounter{diceNo}{-5}%
\epsdice{5}%
}%
\epsdice[black]{\value{diceNo}}%
\else%
\arabic{diceNo}%
\fi%
\newcounter{diceNo2}
\newcommand\rollDice[1]{%
\setcounter{track}{#1}%
\setcounter{diceNo}{1}%
\setcounter{diceNo2}{1}%
\ifnum\value{track}>7%
\setcounter{diceNo2}{6}%
\fi%
\addtocounter{track}{-\value{diceNo2}}%
\setcounter{diceNo}{\value{track}}%
\epsdice[black]{\arabic{diceNo}} \epsdice{\arabic{diceNo2}}
}
{\raggedright\begin{list}{\Large\dicef{\value{dlist}}}{\usecounter{dlist}}}%
\newcounter{blingNo}
\setcounter{blingNo}{0}
% Define the 'ornamentedbox' environment
% Wiggly Borders
\tikzset{
use path for main/.code={%
\tikz@addmode{%
\expandafter\pgfsyssoftpath@setcurrentpath\csname tikz@intersect@path@name@#1\endcsname
}%
},
use path for actions/.code={%
\expandafter\def\expandafter\tikz@preactions\expandafter{\tikz@preactions\expandafter\let\expandafter\tikz@actions@path\csname tikz@intersect@path@name@#1\endcsname}%
},
use path/.style={%
use path for main=#1,
use path for actions=#1,
}
}
\tikzset{ornamented frame inner/.style={color=\pageSideColor,
line width=3pt}}
\tcbsubskin{ornamented}{empty}{
skin first=ornamented, skin last=ornamented,
title engine=standard,
colbacktitle=white,
frame code={
% Account for the line widths in order not to draw beyond the bounding
% box---except for a few very small details for which this is intentional.
\coordinate (north west) at ([shift={(1.5pt,-1.5pt)}]frame.north west);
\coordinate (north east) at ([shift={(-1.5pt,-1.5pt)}]frame.north east);
\coordinate (south east) at ([shift={(-1.5pt,1.5pt)}]frame.south east);
\coordinate (south west) at ([shift={(1.5pt,1.5pt)}]frame.south west);
%
\foreach \xoffset/\point in {34pt/north west, -34pt/north east,
34pt/south west, -34pt/south east} {
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
([xshift=\xoffset]\point) circle[radius=2.5pt];
}
%
\path[name path=ornament 1]
([yshift=-4pt]north west)
[rounded corners=0.5pt] -- ++(23pt,0)
[rounded corners=2pt] -- ++(3pt,-4pt)
-- ([shift={(-26pt,-8pt)}]north east)
[rounded corners=0.5pt] -- ++(3pt,4pt)
[rounded corners=4pt] -- ([yshift=-4pt]north east)
-- ([yshift=4pt]south east)
[rounded corners=0.5pt] -- ++(-23pt,0)
[rounded corners=2pt] -- ++(-3pt,4pt)
-- ([shift={(26pt,8pt)}]south west)
[rounded corners=0.5pt] -- ++(-3pt,-4pt)
[rounded corners=4pt] -- ([yshift=4pt]south west)
-- cycle;
%
\path[rounded corners=0.5pt, name path=ornament 2]
([yshift=-20pt]north west)
-- ++(-4pt,3pt)
-- ++(0,4pt)
to[out=0, in=-90] ([shift={(8pt,0pt)}]north west)
-- ([shift={(34pt,0pt)}]north west)
-- ([shift={(-8pt,0pt)}]north east)
to[out=-90, in=180] ([shift={(4pt,-13pt)}]north east)
-- ++(0,-4pt)
-- ++(-4pt,-3pt)
-- ([yshift=20pt]south east)
-- ++(4pt,-3pt)
-- ++(0,-4pt)
to[out=180, in=90] ([shift={(-8pt,0pt)}]south east)
-- ([shift={(8pt,0pt)}]south west)
to[out=90, in=0] ([shift={(-4pt,13pt)}]south west)
-- ++(0,4pt)
-- ++(4pt,3pt)
-- cycle;
%
\draw[ornamented frame outer, use path=ornament 1];
\draw[ornamented frame outer, use path=ornament 2];
\draw[ornamented frame inner, use path=ornament 1];
\draw[ornamented frame inner, use path=ornament 2];
%
\node at ([xshift=-25pt,yshift=\thedr+5pt] south east)
{\ifnum\value{dr}>2
\addtocounter{dr}{7}\multiply\value{dr} by 2\includesvg[width=\thedr pt]{config/images/l1}
\hspace{-30pt}
\fi
};
\node at ([xshift=-20pt,yshift=-\themp] north east)
{\ifnum\value{mp}>1
\addtocounter{mp}{2}
\multiply\value{mp} by 2
\includesvg[angle=270,width=\themp pt]{config/images/b1}
\hspace{-20pt}
\fi
};
\node at ([xshift=-5pt,yshift=35pt] south west)
{\ifnum\value{att}>7
\addtocounter{att}{-4}
\multiply\value{att} by 2
\includesvg[angle=340,width=\theatt pt]{config/images/s1}
\hspace{-30pt}
\fi
};
}{}
}
}
% These parameters---especially those related to geometry---are better located
% here in a style than in the subskin definition (see the Subskins section of
% the tcolorbox manual).
\tcbset{ornamented/.style={skin=ornamented,
toptitle=14.5pt,
top=15pt,
bottom=9.5pt,
}
% Convenient style to use with a tcolorbox preceded by text (or anything),
% when one wants to prevent any page break before the tcolorbox.
\tcbset{skip and no break/.style={
before={\par\nopagebreak\vspace{2ex}\noindent}}
}
% Style suitable for an “on line” (in the middle of a paragraph)
% 'ornamentedbox'.
\tcbset{my on line/.style={
capture=hbox, tcbox raise base, top=14pt, bottom=14pt,
before={\kern 5pt}, after={\kern 5pt}}
}
%%%%% TColorBox Basic Setup %%%%%
\tcbset{enhanced,
before upper={\parindent15pt},
fonttitle=\bfseries,coltitle=black,attach boxed title to top center=
{yshift=-0.25mm-\tcboxedtitleheight/2,yshifttext=-2mm-\tcboxedtitleheight/2},
boxed title style={boxrule=-0.5mm,
frame code={ \path[tcb fill frame] ([xshift=-4mm]frame.west)
-- (frame.north west) -- (frame.north east) -- ([xshift=4mm]frame.east)
-- (frame.south east) -- (frame.south west) -- cycle; },
interior code={ \path[tcb fill interior] ([xshift=-2mm]interior.west)
-- (interior.north west) -- (interior.north east)
-- ([xshift=2mm]interior.east) -- (interior.south east) -- (interior.south west)
-- cycle;}
}
}
\newtcolorbox{boxtext}[1][]{
colback=white,
fonttitle={\scshape #1},
before upper={\afterparnoindent},
after={\afterparnoindent},
\begin{wrapfigure}{R}{.#1\textwidth}
#2
\end{wrapfigure}%
\newcommand{\headingtype}{CHAPTER}
\newcommand\outline[2][7]{\contour[#1]{black}{\textcolor{white}{#2}}}
\contourlength{0.1em}
\newcommand{\frontpage}[2][\expandafter\MakeUppercase \jobname]{
\includesvg[width=.2\textwidth]{config/logo}
\par
\vspace{-2em}
\flushright
\vspace{2em}
{\footnotesize \textcolor{gray}{\today}\par}
\vspace{3em}
\appendix
\appendixpage
\renewcommand{\headingtype}{APPENDIX}
\titleformat{\chapter}[display]
{\bfseries}
{\begin{tikzpicture}
\node[minimum width=\textwidth, text=black!25, fill=black!25, inner sep=1, outer sep=0, anchor=south] (rectinit) {\huge CHAPTER};
\node[minimum width=.8\textwidth, text=white, inner sep=1, outer sep=0, anchor=south west, text width=.8\textwidth, align=right] at (rectinit.south west) (chapname) {\huge APPENDIX~~};
\node[minimum width=.2\textwidth, inner sep=0, outer sep=0, anchor=south west, text width=.2\textwidth, align=left] at (chapname.south east) {\chapnumfont\textcolor{chapnumcol}{\thechapter}};
\end{tikzpicture}}
{0pt}
{\Huge}
}
\ifnum\value{pageDarkness}<80
\addtocounter{pageDarkness}{7}
\ifnum\value{pageDarkness}>30
\setcounter{pageAlt}{0}
\fi
\addtocounter{pageDarkness}{-60}
\setcounter{pageAlt}{100}
\node[minimum width=\linewidth+3em, text=\pageOppositeColor, fill=\pageSideColor, inner sep=1, outer sep=0, anchor=south] (rectinit) {\Huge \headingtype};
\node[minimum width=.75\textwidth, text=white, inner sep=3, outer sep=0, anchor=south west, text width=.75\textwidth, align=right] at (rectinit.south west) (chapname) {};
\node[minimum width=.25\textwidth, inner sep=-5, outer sep=0, anchor=south west, text width=.25\textwidth, align=left] at (chapname.south east) {\chapnumfont\textcolor{chapnumcol}{\Roman{chapter}}};
\end{tikzpicture}}
{0pt}
{\Huge}
\textcolor{\pageSideColor}{\titlerule}%
[\textcolor{\pageSideColor}{\titlerule}]%
\renewcommand*{\thesection}{\arabic{section}}
{\needspace{12em}
\titleFont
\center
\large}%
{\thesubsection}%
{1em}%
{}%
[\textcolor{\pageSideColor}{\titlerule}%
\vspace{1ex}%
\setcounter{list}{0}]
{}{.5em}{}
\titlespacing{\subsubsection}
\newcommand{\tracker}{\center\noindent\iftoggle{examplecharacter}{\iftoggle{genExamples}{}{\ifnum\value{track}=\value{Speed}$\Rightarrow$ \fi}}{}\arabic{track}\addtocounter{track}{-1}\vspace{.54cm}
\textcolor{\pageSideColor}{\ifodd\value{page}\raisebox{-3pt}{\Large\hspace{0.1em}\adfflatleafsolidright}\fi\hrulefill\ifodd\value{page}\else\raisebox{-3pt}{\Large\hspace{-0.1em}\adfflatleafsolidleft}\fi}%
\newcommand{\npc}[2]{\settoggle{personality}{false}\renewcommand{\name}{#2}\renewcommand{\npcsymbol}{#1}}
\newcommand{\NPC}[5]{\renewcommand{\name}{#2}
\renewcommand{\npcsymbol}{#1}
\settoggle{personality}{true}
}
%%%%%%%%%%%%%%%%%%%% TOGGLES %%%%%%%%%%%%%%%%%%%%
\newtoggle{verbose}
\settoggle{verbose}{true}
\newtoggle{personality}
\settoggle{personality}{false}
\setcounter{tocdepth}{1}
\setcounter{secnumdepth}{1}
%%%%%%%%%%%%%%%%%%%% RANDOM NUMBERS %%%%%%%%%%%%%%%%%%%%
\newcounter{r4}
\setcounter{r4}{\day}
\addtocounter{r4}{1}
\whileboolexpr{
test {\ifnumcomp{\value{r4}}{>}{4}}
}
{\addtocounter{r4}{-3}}
\newcounter{r2}
\setcounter{r2}{\value{r4}}
\newcounter{r2b}
\setcounter{r2b}{\value{r2}}
\addtocounter{r2b}{-1}
\setcounter{r2c}{2}
\newcounter{r2d}
\setcounter{r2d}{1}
\setcounter{r3b}{\value{r4}}
\addtocounter{r3b}{-1}
\newcounter{r12}
\setcounter{r12}{\month}
\newcounter{enc}
\newcounter{list}
\newcounter{age}
\setcounter{age}{1}
\newcounter{gold}
\setcounter{gold}{\day}
\setcounter{enc}{0}
\newcounter{noAppearing}
\setcounter{noAppearing}{1}
\ifnum\value{r2}>1%
\setcounter{r2}{1}%
\else%
\stepcounter{r2}%
\fi%
\setcounter{enc}{\value{r2}}%
\setcounter{r2b}{1}%
\else%
\setcounter{r2b}{2}%
\fi%
\ifnum\value{r2c}>1%
\setcounter{r2c}{1}\else%
\newcommand{\randomtwoD}{%
\ifnum\value{r2d}>1%
\setcounter{r2d}{1}\else%
\stepcounter{r2d}%
\fi%
}
\ifnum\value{r3}>2%
\setcounter{r3}{1}%
\fi%
\ifnum\value{r3}<1%
\setcounter{r3}{2}%
\fi%
\stepcounter{r3}%
\setcounter{age}{\value{r3}}%
}
\newcommand{\randomthreeB}{%
\ifnum\value{r3b}>2%
\setcounter{r3b}{1}%
\else%
\setcounter{r3c}{1}
\else%
\stepcounter{r3c}%
\fi%
}
\newcommand{\randomfour}{%
\else%
\ifnum\value{r4}<1%
\setcounter{r4}{1}%
\fi%
\fi%
\stepcounter{r4}%
\setcounter{track}{\value{r4}}%
}
\newcommand{\randomfourB}{%
\fi%
}
\newcommand{\randomdozen}{%
\randomfourB%
\setcounter{r12}{0}%
\addtocounter{r12}{\value{r4b}}%
\addtocounter{r12}{\value{r3c}}%
\addtocounter{r12}{\value{r3}}%
\addtocounter{r12}{\value{r4}}%
}
%%%%%%%%%%%%%%%%%%%% LAYOUT %%%%%%%%%%%%%%%%%%%%
\makeindex
\newif\ifafterpar
\newcommand\afterparnoindent{%
\afterpartrue
\everypar{%
\ifafterpar
\afterparfalse
{\setbox\z@\lastbox}%
\else
\everypar{}%
\fi}}
% Make floats hug the text.
\setlength\intextsep{0em}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
%%%%%%%%%%%%%%%%%%%% Environments %%%%%%%%%%%%%%%%%%%%
\newenvironment{speechtext}%
{\it
\begin{quotation}\noindent}%
{\end{quotation}}
\newenvironment{exampletext}
{\needspace{2em}%
\newcommand\sideBySide[2]{
\end{multicols}
\vspace{-1em}
\begin{tcolorbox}[sidebyside,bicolor,colback=white,colbacklower=black!5!white]
\tcblower
{\it #2}
\end{tcolorbox}
\begin{multicols}{2}
#2
\vfill\null
\columnbreak
#3
\end{multicols}
\rowcolors{2}{}{gray!10}\needspace{2em}
\par\noindent
\newenvironment{nametable}[2][cL]
{
\rowcolors{2}{}{gray!10}\needspace{3em}
\par\noindent
\tabularx{\linewidth}{#1}
\hline
}%
{
\hline
\endtabularx
\newtcolorbox{wideTable}[2][cX]{
tabularx=#1,
float*=h!,
ornamented,
adjusted title=#2,
bottom=1em,
top=-1pt,
left=3pt,
right=6pt,
code={\rowcolors{2}{}{gray!10}\needspace{1em}}
}
%%%%%%%%%%%%%%%%%%% COMMANDS %%%%%%%%%%%%%%%%%%%%
\newcommand{\story}[2]{%
\textbf{Cost:} #1
\\
\afterparnoindent
\newcommand{\best}[2][\A]{
\subsubsection[#2]{#1 #2}
\newcommand{\startingCondition}[1]{
\ifnum\value{list}<95
\item
#1
\fi
}
\arabic{list}: \ifdefmacro{#2}{#2}{\MakeUppercase#2}%