\ProvidesPackage{config/layout}

\RequirePackage[table]{xcolor}
\RequirePackage[copies]{contour}
\RequirePackage{imakeidx}% for spell summaries
\RequirePackage{xr-hyper}
\RequirePackage[
pdfstartpage=1,
hidelinks=true,
bookmarks=true]%
{hyperref}

\RequirePackage[
  nostyles,
  acronyms,
  prefix,
  automake,
  indexonlyfirst,
  numberedsection=autolabel,
  section=section,
  stylemods={mcols,topic,tree},
  style=mcoltree,
  autoseeindex=false,
  symbols,
]{glossaries-extra}

\RequirePackage{epsdice} % for dice
\RequirePackage[T1]{fontenc} % 
\RequirePackage{txfonts} % 
\RequirePackage{starfont} % for creature symbols
\RequirePackage{wasysym} % for sq checkboxes
\RequirePackage{appendix}
\RequirePackage{geometry} % changes page borders
  \geometry{margin=50pt}
\RequirePackage{svg}
\RequirePackage{alltt}
  \svgsetup{width=\textwidth}
\RequirePackage{tabularx}
\RequirePackage{wrapfig}
\RequirePackage{float}
\RequirePackage{qrcode}
\RequirePackage{epigraph} % part quotes
\RequirePackage{microtype} % more precise word-placement
\RequirePackage{makeidx}
\RequirePackage[english]{babel}
\RequirePackage{multicol}
  \raggedcolumns
  \setlength\columnsep{18pt}
\RequirePackage{graphicx}
\RequirePackage{etoolbox}
\RequirePackage[explicit]{titlesec}
\RequirePackage{titletoc}
\RequirePackage{fancyhdr}
\RequirePackage{adforn}% for fancy headrules
\RequirePackage{needspace}
\RequirePackage{tikz}
  \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{shapes.geometric, intersections}% for pentacle intersections in map
  \usetikzlibrary{patterns}% for the pattern 'gridspecks'
\RequirePackage{colortbl}
\RequirePackage[poster]{tcolorbox}
\tcbuselibrary{breakable,raster,vignette}
\tcbuselibrary{skins} % used for wiggly-border boxes
  \pgfdeclarepatternformonly{gridspecks}{\pgfqpoint{-1pt}{-1pt}}{\pgfqpoint{1pt}{1pt}}{\pgfqpoint{26pt}{26pt}}
  {%
    \pgfpathcircle{\pgfqpoint{0pt}{0pt}}{.5pt}%
    \pgfusepath{fill}%
  }%


%%%%% 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.
}


%%%%% Add fancy page chapter sides %%%%%

\newcounter{chapshift}
\addtocounter{chapshift}{-1}

\renewcommand\headrule{%
  \vspace{-6pt}%
  \textcolor{\pageSideColor}{\hrulefill}%
  \raisebox{-2.1pt}%
    {\textcolor{\pageSideColor}{\quad\adfdoubleflourishleft\npcsymbol\adfdoubleflourishright\quad}}%
  \textcolor{\pageSideColor}{\hrulefill}%
}

%% Redefine plain page style, and use it for every page.

\fancypagestyle{plain}{
  \fancyhf{}% clear all header and footer fields
  \fancyfoot[LE]{\titleFont{\large\thepage\if@mainmatter\randomfourB\hspace{1em}\textcolor{\pageSideColor}{\Repeat{\value{r4b}}{\flourish\hspace{-.2em}}}\fi}}
  \fancyfoot[RO]{\titleFont{\randomfour\large\if@mainmatter\textcolor{\pageSideColor}{\Repeat{\value{r4}}{\flourish\hspace{-.2em}}}\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}}

\newtoggle{countedPage}
\toggletrue{countedPage}

\AddToHook{shipout/background}{%
  \iftoggle{countedPage}{
    \if@mainmatter
      \ifnum\value{chapter}<14
        \pgfmathsetmacro{\BGvadjust}{ -2 * (\value{chapter} - 1)}
      \else
        \pgfmathsetmacro{\BGvadjust}{ -1 * (\value{chapter} - 1)}
      \fi
      \ifodd\value{page}
        \def\BGpageanchor{current page.north east}
        \def\BGanchor{north west}
        \def\BGmark{\textcolor{\pageOppositeColor}{\rightmark}}
        \def\BGrotate{-90}
      \else
        \def\BGpageanchor{current page.north west}
        \def\BGanchor{north east}
        \def\BGmark{\textcolor{\pageOppositeColor}{\leftmark}}
        \def\BGrotate{90}
      \fi\typeout{Underfed goblins (badness \thepage0000)}
      \begin{tikzpicture}[overlay,remember picture]
        \path 
          ++(\BGpageanchor)
          +(0cm, \BGvadjust cm)
          node[
            text centered,
            inner sep=4pt,
            text height=4ex,
            text depth=2.5ex,
            text width=14em,
            text=white,
            fill=\pageSideColor,
            anchor=\BGanchor,
            rotate=\BGrotate,
            font=\titleFont,
          ] {\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[nospace]{varioref}

%%%%%%%%%% Allow for external referencing

\newcommand*{\externalReferent}[1]{
  \newtoggle{#1}
    \IfFileExists{../rubbish/#1.aux}{
      \externaldocument{../rubbish/#1}%
      \@addtofilelist{../rubbish/#1.aux}%
      \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}\flourish} \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]{%
\iftoggle{#1}{\footnote{See the book of \textit{\MakeUppercase#2}, \autopageref{#3} --- \nameref{#3}.}}%
{}%
}

\newcounter{pagebak}

\newcommand\handout[1]{
  \cleardoublepage
  \togglefalse{countedPage}
  \setcounter{pagebak}{\thepage}
  \pagestyle{empty}
  \randomtwo
  \randomthreeC
  \settoggle{examplecharacter}{true}
  \input{#1.tex}
  \settoggle{examplecharacter}{false}
  \cleardoublepage
  \ifodd\thepage
  \else
    \clearpage
  \fi
  \toggletrue{countedPage}
  \pagestyle{plain}
  \setcounter{page}{\value{pagebak}}
  \renewcommand{\npcsymbol}{\adfast{\value{r4}}}
}


%%%%%%%%%% 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{%
    {
      \begin{multicols}{2}
        \@starttoc{toc}
      \end{multicols}
    }
}

\newcommand\titleFont{\scshape}

\newcommand{\chapnumfont}{%
  \Huge%
  \titleFont%
}

% change bullet points

\renewcommand{\labelitemi}{%
  \textcolor{\pageSideColor}{%
  \large\ifodd\the\c@page%
    \adfdownhalfleafright%
  \else%
    \adfdownhalfleafleft%
  \fi%
  }
}

\renewcommand{\labelitemii}{\textcolor{\pageSideColor}{\adfdownhalfleafleft}}
\renewcommand{\labelenumi}{\large\titleFont\arabic{enumi}--}
\renewcommand{\labelenumii}{\titleFont\Roman{enumii}}

%%%%%%%%%% Encounter Numbers

\newcounter{encnum}
\setcounter{encnum}{1}
\newcommand{\sqarea}{town}

%%%%% Image Commands %%%%%

\newcommand{\pic}[1]{
  \noindent%
  \IfFileExists{images/#1.svg}{%
    \noindent\includesvg[width=\linewidth]{images/#1}
  }{%
    \includegraphics[width=\linewidth]{images/#1.jpg}
  }
  \label{#1}
}

\newcommand{\sidepic}[3][5]{
  \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}
  \label{#2}
}

\newcommand{\widePic}[2][b]{
  \begin{figure*}[#1!]
    \setcounter{enc}{0}
      \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{#2}};
      \csComments
      \begin{scope}[
          x={(image.south east)},
          y={(image.north west)}
      ]
        \mapLabels
      \end{scope}
      \end{tikzpicture}
  \end{figure*}
  \renewcommand\csComments{}
  \renewcommand\mapLabels{}
}

\newcommand\mapNotes[2][\large]{
  \renewcommand\mapLabels{
    \foreach \mNum/\mX/\mY in {#2}{
      \node [black, font=#1\scshape] at (0.\mX,0.\mY) {\outline[14]{\mNum}};
    }
  }
}

\newcommand\callout[5][4]{
  \node[text=\pageOppositeColor, overlay, rectangle callout, callout relative pointer={(#3)}, fill=\pageSideColor,] (\arabic{enc}) at (#2) [text width=#1em]{{\large\scshape#4}{ #5}};
}

\newcommand\mapFeature[3][0]{
  \node at (#2) {\rotatebox{#1}{\Large\outline{#3}}};
}


\newcommand\mapLegend[4]{
  \node [black, font=\bfseries] at (0.#2,0.#3) {#4 #1};
}

\newcommand\mapCircle[5][0]{
  \setcounter{track}{#4}
  \addtocounter{track}{3}
  \addtocounter{track}{#1}
  \begin{scope}[
          x={(image.south east)},
          y={(image.north west)}
        ]
    \draw[fill=white] (0.#2,0.#3) circle (#4em);
    \clip[draw] (0.#2,0.#3) circle (#4em) node {\includesvg[width=\arabic{track}em]{images/#5}};
  \end{scope}
}

\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}{
            \mapLegend{\outline[14]{\titleFont\mNum}}{\mX}{\mY}{#1}
          }
      \end{scope}
  \end{tikzpicture}
  \end{figure*}
}

\newcommand\smolMapPic[3][\Huge]{
  \noindent
  \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}
}

%%% \tn shows a tie number.

\newcounter{tn}
\setcounter{tn}{7}
\newcommand\tn[1][\arabic{tn}]{%
  \gls{tn}~#1%
}

\newcommand\roll[2]{%
  \setcounter{tn}{7}%
  \addtocounter{tn}{\value{#1}}%
  \ifltxcounter{#2}{\addtocounter{tn}{\value{#2}}}{}%
  #1~+~#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][]{%
  #1%
  \setcounter{diceNo}{#2}%
  \ifnum\value{diceNo}=12%
    \epsdice[black]{6}%
    \epsdice{6}%
  \else%
    \ifnum\value{diceNo}>0%
      \whileboolexpr{%
        test {\ifnumcomp{\value{diceNo}}{>}{6}}%
        }{%
          \addtocounter{diceNo}{-5}%
          \epsdice{5}%
        }%
      \epsdice[black]{\value{diceNo}}%
    \else%
      \arabic{diceNo}%
    \fi%
  \fi%
}

\newcommand\twoDice[1]{%
  \setcounter{diceNo}{#1}%
  \ifnum\value{diceNo}<2%
    \setcounter{diceNo}{2}%
  \fi%
  \ifcase\value{diceNo}%
    diceError 0%
  \or%
    diceError 1%
  \or%
    \epsdice{1}~\epsdice[black]{1}%
  \or%
    \epsdice{1}~\epsdice[black]{2}%
  \or%
    \epsdice{1}~\epsdice[black]{3}%
  \or%
    \epsdice{1}~\epsdice[black]{4}%
  \or%
    \epsdice{1}~\epsdice[black]{5}%
  \or%
    \epsdice{1}~\epsdice[black]{6}%
  \or%
    \epsdice{2}~\epsdice[black]{6}%
  \or%
    \epsdice{3}~\epsdice[black]{6}%
  \or%
    \epsdice{4}~\epsdice[black]{6}%
  \or%
    \epsdice{5}~\epsdice[black]{6}%
  \or%
    \epsdice{6}~\epsdice[black]{6}%
  \else
    diceError%
  \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}}
  }

\newcounter{dlist}
\newenvironment{dlist}%
  {\raggedright\begin{list}{\Large\dicef{\value{dlist}}}{\usecounter{dlist}}}%
  {\end{list}\null}%

\newenvironment{dlistDouble}%
  {\raggedright%
  \begin{list}%
  {\ifnum\value{dlist}=1%
    \stepcounter{dlist}%
  \fi%
  \makebox[0pt][c]{\raisebox{-1em}{\qquad\textcolor{\pageSideColor}{\arabic{dlist}}}}%
  \Large\twoDice{\value{dlist}}}%
  {\usecounter{dlist}}}%
  {\end{list}\null}%

\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=2pt},
         ornamented frame outer/.style={color=black,
                                        line width=3pt}}

\tcbsubskin{ornamented}{empty}{
  skin first=ornamented,  skin last=ornamented,
  title engine=standard,
  colbacktitle=white,
  colframe={\pageSideColor},
  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} {
      \fill[color=\pageOppositeColor]
        ([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];
  }
}

% 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,
  fontupper={\normalsize},
  coltitle=black,
  }
}

% 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,
  left=3pt,
  right=3pt,
  code={\rowcolors{2}{}{gray!10}},
  before upper={\parindent15pt},
  fonttitle=\bfseries\scshape,
  coltitle=black,
  attach boxed title to top center={
    yshift=-0.25mm-\tcboxedtitleheight/2,
    yshifttext=-2mm-\tcboxedtitleheight/2
    },
  boxed title style={
    frame code={
      \path[draw=black, 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[draw=black, 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,
  before={\vspace{.5em}\noindent},
  fonttitle={\scshape #1},
  before upper={\parindent15pt\noindent},
  after upper={\iftoggle{verbose}{}{\par What do you do?}},
}

\newcommand{\sidebox}[2][23]{
    \needspace{4em}
    \begin{wrapfigure}{R}{.#1\textwidth} 
    #2
    \end{wrapfigure}%
}

%%%%% Header Formatting %%%%%

% Chapter Heading Color

\colorlet{chapnumcol}{black!100}

\newcommand{\headingtype}{Chapter}

\newcommand\outline[2][7]{\contour[#1]{black}{\textcolor{white}{#2}}}
\contourlength{0.1em}

%%%%% Section Formatting %%%%%

\newcommand{\frontpage}[2][\expandafter\MakeUppercase \jobname]{
  \frontmatter
  \pagenumbering{gobble}
  \begin{titlepage}
    \centering
    \includesvg[width=.2\textwidth]{config/logo}
    \par
    \vspace{-2em}
    {\Huge\scshape\outline{#1}\par}
    \vspace{2em}
    {\large\scshape \underline{#2}\par}
    \tableofcontents
    \bigLine
    \flushright
    \vfill\null
    {\footnotesize \textcolor{\pageSideColor}{Printed \today, or \showCycle~\Roman{fenestraDay}}\par}
  \end{titlepage}
  \cleardoublepage
  \frontmatter
}

\newcommand\startappendix{
  \backmatter
  \appendix
  \renewcommand{\headingtype}{APPENDIX}
  \renewcommand\showChapter{\Alph{chapter}}
  \cleardoublepage
  \chapter{Appendix}
  \renewcommand{\npcsymbol}{\quad\scshape Appendix\quad}
}

\newcommand\shiftColours{
  \ifnum\value{pageDarkness}<80
    \addtocounter{pageDarkness}{7}
    \ifnum\value{pageDarkness}>30
      \setcounter{pageAlt}{0}
    \fi
  \else
    \addtocounter{pageDarkness}{-60}
    \setcounter{pageAlt}{100}
  \fi
}

\newcounter{adf}
\setcounter{adf}{0}

\newcommand\flourish{%
  \ifnum\value{adf}>16%
    \addtocounter{adf}{-16}%
  \fi%
  \ifcase\value{adf}%
  \adforn{32}%
  \or%
  \adforn{27}%
  \or%
  \adforn{3}%
  \or%
  \adforn{25}%
  \or%
  \adforn{5}%
  \or%
  \adforn{34}%
  \or%
  \adforn{68}%
  \or%
  \adforn{9}%
  \or%
  \adforn{73}%
  \or%
  \adforn{11}%
  \or%
  \adforn{44}%
  \or%
  \adforn{6}%
  \or%
  \adforn{40}%
  \or%
  \adforn{63}%
  \or%
  \adforn{67}%
  \or%
  \adforn{52}%
  \else%
  \adforn{55}%
  \fi%
  \stepcounter{adf}%
}

\newcommand\showChapter{\Roman{chapter}}

\titleformat{\chapter}[display]
{\bfseries
\titleFont
}
{%
  \shiftColours
  \hspace*{-1.5em}
  \begin{tikzpicture}
    \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}{\showChapter}};
  \end{tikzpicture}
}
{0pt}
{\Huge#1}


\titleformat{\section}%
  {\needspace{16em}%
  \textcolor{\pageSideColor}{\large\raisebox{-4pt}{\Large\hspace{-0.2em}\flourish}\titlerule}%
  \center%
  \huge%
  \titleFont
  }%
  {\Roman{section}}%
  {1em}%
  {#1}%
  [\textcolor{\pageSideColor}{\large\titlerule\raisebox{-4pt}{\Large\hspace{-0.2em}\flourish}}%
  \setcounter{list}{0}]%

\renewcommand*{\thesection}{\arabic{section}}

\titleformat{\subsection}
  {\titleFont%
  \needspace{4\baselineskip}%
  \LARGE}%
  {\thesubsection}%
  {1em}%
  {\center#1}%
  [\textcolor{\pageSideColor}{\titlerule}]

\titleformat{\subsubsection}[wrap]
{\needspace{3em}\filright%
\titleFont%
\large\centering}
{}{.5em}{#1}

\titlespacing{\subsubsection}
{9pc}{1.5ex plus .1ex minus .2ex}{1pc}

%%%%% Character Sheet Tracker

    \newcounter{track}
    \setcounter{track}{18}
    \newcommand{\tracker}{%
    \center\noindent%
      \iftoggle{examplecharacter}{%
        \iftoggle{genExamples}{}{%
          \ifnum\value{track}=\value{ap}%
            $\Rightarrow$ %
          \fi%
        }}{}%
        \arabic{track}%
        \addtocounter{track}{-1}%
        \vspace{.54cm}

    }

\newcommand\bigLine{%
  \textcolor{\pageSideColor}{\ifodd\value{page}\else\raisebox{-3pt}{\Large\hspace{0.1em}\flourish}\fi\hrulefill\ifodd\value{page}\raisebox{-3pt}{\Large\hspace{-0.1em}\flourish}\fi}%
  \par%
}

%%%%% NPC Names

\newcommand{\name}{}
\newcommand{\NPCdescription}{}
\newcommand{\currentQuote}{}
\newcommand\npcQuote[1]{\global\renewcommand\currentQuote{#1}}
\newcommand{\mannerism}{}
\newcommand{\npcGoal}{}
\newcommand{\npcsymbol}{\adfast{\value{r4}}}
\newcommand{\npc}[2]{%
  \global\def\name{#2}%
  \renewcommand{\npcsymbol}{#1}%
}

\newcommand{\NPC}[5]{%
  \global\def\name{#2}%
  \renewcommand{\npcsymbol}{#1}%
  \settoggle{personality}{true}%
  \renewcommand{\NPCdescription}{#3}%
  \renewcommand{\mannerism}{#4}%
  \renewcommand{\npcGoal}{#5}%
}

%%%%%%%%%%%%%%%%%%%% 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}
\newcounter{r2c}
  \setcounter{r2c}{2}
\newcounter{r2d}
  \setcounter{r2d}{1}
\newcounter{r3}
\setcounter{r3}{\month}
  \divide\value{r3} by 4
\newcounter{r3b}
  \setcounter{r3b}{\value{r4}}
  \addtocounter{r3b}{-1}
\newcounter{r3c}
  \setcounter{r3c}{1}
\newcounter{r4b}
  \setcounter{r4b}{\day}
  \divide\value{r4b} by 7
  \stepcounter{r4b}

\newcounter{rn4tn1}
  \setcounter{rn4tn1}{-3}
\newcounter{rn1t0}
  \setcounter{rn1t0}{-1}
\newcounter{r0t1}
  \setcounter{r0t1}{0}
\newcounter{r2t3}
  \setcounter{r2t3}{2}
\newcounter{r2t4}
  \setcounter{r2t4}{2}
\newcounter{r3t4}
  \setcounter{r3t4}{3}
\newcounter{rn1t2}
  \setcounter{rn1t2}{0}
\newcounter{rn3t3}
  \setcounter{rn3t3}{3}
\newcounter{r4t5}
  \setcounter{r4t5}{4}
\newcounter{r4t6}
  \setcounter{r4t6}{4}

\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}

\newcommand{\randomtwo}{%
  \ifnum\value{r2}>1%
    \setcounter{r2}{1}%
  \else%
    \stepcounter{r2}%
  \fi%
  \setcounter{enc}{\value{r2}}%
}

\newcommand{\randomtwoB}{%
  \ifodd\value{r3}%
    \setcounter{r2b}{1}%
  \else%
    \setcounter{r2b}{2}%
  \fi%
}

\newcommand{\randomtwoC}{%
  \ifnum\value{r2c}>1%
    \setcounter{r2c}{1}%
  \else%
    \stepcounter{r2c}%
  \fi%
}

\newcommand{\randomtwoD}{%
  \ifnum\value{r2d}>1%
  \setcounter{r2d}{1}\else%
  \stepcounter{r2d}%
  \fi%
}

\newcommand{\randomthree}{%
  \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}%
  \fi%
  \ifodd\value{r3}%
    \stepcounter{r3b}%
  \fi%
}

\newcommand{\randomthreeC}{%
  \setcounter{r3c}{1}%
  \ifodd\value{r12}%
    \stepcounter{r3c}%
  \fi%
  \ifodd\value{r3}%
    \stepcounter{r3c}%
  \fi%
}

\newcommand{\randomfour}{%
  \ifnum\value{r4}>3%
    \setcounter{r4}{0}%
  \else%
    \ifnum\value{r4}<1%
      \setcounter{r4}{2}%
    \fi%
  \fi%
  \stepcounter{r4}%
  \setcounter{track}{\value{r4}}%
}

\newcommand{\randomfourB}{%
  \randomthreeB%
  \setcounter{r4b}{\value{r3b}}%
  \stepcounter{r4b}%
}

\newcommand{\randomdozen}{%
  \randomfourB%
  \setcounter{r12}{0}%
  \addtocounter{r12}{\value{r4b}}%
  \addtocounter{r12}{\value{r3c}}%
  \addtocounter{r12}{\value{r3}}%
  \addtocounter{r12}{\value{r4}}%
}

\newcommand\randomize{%
  \stepcounter{r2}%
  \stepcounter{r3}%
  \stepcounter{r4}%
  \stepcounter{r2t3}%
  \stepcounter{r3t4}%
  \stepcounter{r4t5}%
  \stepcounter{r4t6}%
  \stepcounter{r0t1}%
  \stepcounter{rn1t0}
  \setcounter{rn4tn1}{\value{r4b}}
  \addtocounter{rn4tn1}{-5}
  \setcounter{rn3t3}{\value{r3b}}%
  \setcounter{r12}{\value{r3c}}%
  \multiply\value{r12} by 3%
  \addtocounter{r12}{\value{r2b}}%
  \ifodd\value{r3}%
    \stepcounter{r2b}%
    \stepcounter{r3b}%
    \stepcounter{r2t4}
  \else%
    \multiply\value{rn3t3} by -1%
    \addtocounter{rn3t3}{0}%
    \stepcounter{rn1t2}
    \stepcounter{r2c}%
    \stepcounter{r3c}%
    \stepcounter{r4b}%
  \fi%
  \foreach\c in {r2,r2b,r2c}%
    {\ifnum\value{\c}>2\setcounter{\c}{1}\fi}%
  \foreach\c in {r3,r3b,r3c}%
    {\ifnum\value{\c}>3\setcounter{\c}{1}\fi}%
  \foreach\c in {r4,r4b}%
    {\ifnum\value{\c}>4\setcounter{\c}{1}\fi}%
  \ifnum\value{r0t1}>1\setcounter{r0t1}{0}\fi%
  \ifnum\value{rn1t0}>0\setcounter{rn1t0}{-1}\fi%
  \ifnum\value{rn1t2}>2\setcounter{rn1t2}{-1}\fi%
  \ifnum\value{r2t3}>3\setcounter{r2t3}{2}\fi%
  \ifnum\value{r2t4}>4\setcounter{r2t4}{2}\fi%
  \ifnum\value{r3t4}>4\setcounter{r3t4}{3}\fi%
  \ifnum\value{r4t5}>5\setcounter{r4t5}{4}\fi%
  \ifnum\value{r4t6}>6\setcounter{r4t6}{4}\fi%
}

\newcommand\set[2]{%
  \ifltxcounter{#2}{\setcounter{#1}{\value{#2}}}{\setcounter{#1}{#2}}%
}

\newcounter{stackedNo}
\newcommand\stack[2]{%
  \ifltxcounter{#1}{\setcounter{stackedNo}{\value{#1}}}{\setcounter{stackedNo}{#1}}%
  \ifltxcounter{#2}{\setcounter{diceNo2}{\value{#2}}}{\setcounter{diceNo2}{#2}}%
  \ifnum\value{stackedNo}>\value{diceNo2}%
    \roundUp{diceNo2}%
    \addtocounter{stackedNo}{\value{diceNo2}}%
  \else%
    \roundUp{stackedNo}%
    \addtocounter{stackedNo}{\value{diceNo2}}%
  \fi%
}

%%%%%%%%%%%%%%%%%%%% LAYOUT %%%%%%%%%%%%%%%%%%%%
\makeindex

\indexsetup{
  noclearpage,
  level=\section,
}

\raggedbottom

% Make floats hug the text.
\setlength\intextsep{0em}

%\renewcommand\tabularxcolumn[1]{m{#1}}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcolumntype{L}{>{\normalfont\raggedright\arraybackslash}X}
\arrayrulecolor{\pageSideColor}
\setlength\arrayrulewidth{2.2pt}
\renewcommand{\arraystretch}{1.1}


%%%%%%%%%%%%%%%%%%%% Environments %%%%%%%%%%%%%%%%%%%%

\newenvironment{speechtext}%
  {%
    \it
    \begin{quotation}%
    \noindent%
  }%
  {
    \end{quotation}
  }

\newcommand*\@NoIndentAfter{%
    \@ifnextchar\par{%
        \def\par{%
            \everypar{\setbox\z@\lastbox\everypar{}}%
            \@restorepar%
        }%
    }{}%
}
\newrobustcmd*{\NoIndentAfterThis}{\@NoIndentAfter\par\par}

\AfterEndEnvironment{enumerate}{\NoIndentAfterThis}
\AfterEndEnvironment{itemize}{\NoIndentAfterThis}
\AfterEndEnvironment{description}{\NoIndentAfterThis}
\AfterEndEnvironment{dlist}{\NoIndentAfterThis}
\AfterEndEnvironment{list}{\NoIndentAfterThis}
\AfterEndEnvironment{boxtext}{\NoIndentAfterThis}
\AfterEndEnvironment{speechtext}{\NoIndentAfterThis}
\AfterEndEnvironment{exampletext}{\NoIndentAfterThis}
\AfterEndEnvironment{nametable}{\NoIndentAfterThis}
\AfterEndEnvironment{boxtable}{\NoIndentAfterThis}
\AfterEndEnvironment{tcolorbox}{\NoIndentAfterThis}
\AfterEndEnvironment{multicols}{\NoIndentAfterThis}

\newenvironment{exampletext}
  {
    \parindent2em%
    \needspace{2em}
    \vspace{1em}%
    \it%
  }
  {%
    \par
    \nobreak\bigLine\par
    \null
  }

\newcommand\sideBySide[2]{
  \end{multicols}
  \vspace{-1em}
  \begin{tcolorbox}[
  ornamented,
  sidebyside,
  before lower={\parindent15pt},
  ]
  {\it#1}
  \tcblower
  {#2}
  \end{tcolorbox}
  \begin{multicols}{2}
}

\newcommand\boxPair[3][b]{
  \begin{figure*}[#1!]
    \ifstrequal{#1}{b}{%
      \bigLine
    }{}
    \begin{multicols}{2}
    #2
    \vfill\null
    \columnbreak
    #3
    \end{multicols}
    \ifstrequal{#1}{t}{%
      \bigLine
    }{}
  \end{figure*}
}

\newenvironment{boxtable}[1][cL]
  {
    \vspace{0.5em}
    \rowcolors{2}{}{gray!10}\needspace{2em}
    \par\noindent
    \scshape
    \tabularx{\linewidth}{#1}
    \hline
  }%
  {
    \hline
    \endtabularx
    \vspace{0.5em}
  }


\newenvironment{nametable}[2][cL]
  {
    \rowcolors{2}{}{gray!10}\needspace{3em}
    \begin{center}\npcsymbol~\titleFont\textbf{#2}~\npcsymbol\end{center}
    \par\noindent
    \tabularx{\linewidth}{#1}
    \hline
  }%
  {
    \hline
    \endtabularx
    \vspace{1em}
  }

\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]{%
  \subsubsection[#2]{The #2\\\hint{Cost: #1}}%
  \index{#2 (Story)}%
}

\newcommand{\startingCondition}[1]{
  \ifnum\value{list}<95
    \item
    #1
  \fi
}

\newcommand{\mapentry}[2][]{
  \needspace{2em}
  \refstepcounter{list}
  \subsubsection[#2]{%
    \arabic{list}: \ifdefmacro{#2}{#2}{\MakeUppercase#2}%
  }
  \label{#1}%
}

%%%%% Side Quests

\newcommand\declareSQareas[1]{
  \foreach \area in {sq,#1}%
    {\startcontents[\area]
    \stopcontents[\area]}
}

% the first side quest gets a ticked box in the toc.
% the rest get an empty box, so the GM can tick it once it's ready.

\newtoggle{firstsq}
\settoggle{firstsq}{true}

\newcommand{\sqtoc}{\printcontents[\sqarea]{l}{2}{\section*{Summaries}\setcounter{tocdepth}{3}}}

% Change the to depth from 2 to 3 in order to output a miniature table of contents on all side quests
\newcommand{\sqminitoc}{%
  \printcontents[sq]{t}{3}{\setcounter{tocdepth}{3}}%
}

\newcounter{sqNo}
\newcounter{sqNoSpare}
\newcommand{\sqName}{}

\newcommand{\sidequest}[2][]{
  \vspace{1em}
  \par
  \stopcontents[sq]
  \foreach \area in {#1}%
    {\resumecontents[\area]}
  \renewcommand{\sqName}{#2}
  \needspace{5em}
  \subsection[\it #2]{#2}
  \settoggle{firstsq}{true}
  \setcounter{sqNo}{0}
  \foreach \area in {#1}%
    {\stopcontents[\area]}
  \startcontents[sq]
  \sqminitoc%
  \bigLine
  \vspace{1em}
}

\newcommand{\sqpart}[3]{
  \vspace{1em}
  \refstepcounter{sqNo}
  \resumecontents[#1]
  \subsubsection[%
    \setcounter{sqNoSpare}{\expandafter\thesqNo}%
    \bfseries#2 -- \mdseries#3]%
    {\large{\scshape\thesqNo)}~\large#2\ \hint{#1}}
  \settoggle{firstsq}{false}
  \stopcontents[#1]%
}

% Floating SQ ToCs
\titlecontents{tsubsubsection}
              [3em]
              {%
                \contentspush{\scshape\large\arabic{sqNoSpare}~---~}%
                \thecontentslabel%
              }%
              {}%
              {}%
              {.}%

% Summary SQ Docs
\titlecontents*{fsubsection}%
  [20pt]
  {%
    \vspace{1em}\textcolor{\pageSideColor}{\adforn{54}}%
    \quad\large%
    \setcounter{sqNo}{0}%
  }%
  {}%
  {}%
  {\quad\textcolor{\pageSideColor}{\titlerule*[1pc]{---}}}%
  []%
  []

\titlecontents{fsubsubsection}
              [5em]
              {%
                \vspace{.3em}%
                \contentspush{%
                \ifnum\thesqNoSpare=1%
                  \sqr\else\sqn%
                \fi\quad%
                Part~\thesqNoSpare:\quad%
                  \raggedright%
                }%
                \thecontentslabel%
              }%
              {}%
              {}%
              { \enspace\titlerule*[1pc]{.}\bfseries\large\contentspage }%
              []%

%\titlecontents*{lsubsection}[0pt]
%{\adforn{10}~\large\raggedright}{}{}
%{}[][]

\newcommand\printAllSideQuests[1]{
  \foreach \x in {#1}{
    \section*{\x}
    \label{sq:\x}
    \printcontents[\x]{f}{2}{\setcounter{tocdepth}{3}}
  }
  \vspace{2em}
}

\newcommand\hint[1]{%
  \iftoggle{examplecharacter}{}%
  {\textcolor{\pageSideColor}{\small(\textbf{#1})}}
}

%%%%%%%%%%%%%%%%%%%% Rules to Reference %%%%%%%%%%%%%%%%%%%%

\newcommand\makeRule[5]{
  \subsubsection[#2: \roll{#3}{#4}, \glsentrytext{tn} #5]{#2}
  \label{#1}%
  \index{#2}%
  \textit{\roll{#3}{#4}, \glsentrytext{tn}~#5.}%
}

\newcommand\makeAutoRule[3]{
  \subsubsection[#2: #3]{#2}
  \index{#2}%
  \label{#1}%
}