You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							155 lines
						
					
					
						
							4.6 KiB
						
					
					
				
			
		
		
	
	
							155 lines
						
					
					
						
							4.6 KiB
						
					
					
				% Monster environment sty file
 | 
						|
\RequirePackage{fp}
 | 
						|
\RequirePackage{xstring}
 | 
						|
 | 
						|
% Macro to print stats with autocomputed modifier
 | 
						|
% e.g. \stat{12} prints "12 (+1)"
 | 
						|
\newcommand{\stat}[1]{%
 | 
						|
   \FPeval{\mod}{(#1 - 10)/2}%
 | 
						|
   \FPifpos\mod%
 | 
						|
   \FPeval{\mod}{clip(trunc(mod,0))}#1\ (+\mod)%
 | 
						|
   \else%
 | 
						|
   \FPeval{\mod}{clip(abs(trunc(mod-0.5,0)))}#1\ (\(-\)\mod)%
 | 
						|
   \fi%
 | 
						|
}
 | 
						|
 | 
						|
% Macro to print avarage dice based value
 | 
						|
% e.g. \dice{2d6+3} prints "10 (2d6 + 3)"
 | 
						|
\newcommand{\dice}[1]{%
 | 
						|
	\StrSubstitute{#1}{ }{}[\DiceArg]%				strip whitespaces
 | 
						|
	\StrCut{\DiceArg}{d}\DiceNum\DiceSides%			split string
 | 
						|
	\StrCut{\DiceSides}{+}\DiceSides\DiceAddMod%
 | 
						|
	\StrCut{\DiceSides}{-}\DiceSides\DiceSubMod%
 | 
						|
	\FPeval{\DiceAvg}{(\DiceSides+1)/2*\DiceNum}%	calculate avg roll	
 | 
						|
	\IfInteger{\DiceAddMod}{%
 | 
						|
		\FPadd{\DiceAvg}{\DiceAvg}{\DiceAddMod}%	add value
 | 
						|
		\def\DiceMod{ + \DiceAddMod}%
 | 
						|
	}{%
 | 
						|
		\IfInteger{\DiceSubMod}{%
 | 
						|
			\FPsub{\DiceAvg}{\DiceAvg}{\DiceSubMod}%	subtract value
 | 
						|
			\def\DiceMod{ \(-\) \DiceSubMod}%
 | 
						|
		}{%
 | 
						|
			\def\DiceMod{}%
 | 
						|
		}%
 | 
						|
	}%
 | 
						|
	\FPtrunc{\DiceAvg}{\DiceAvg}{0}%				round down
 | 
						|
	\FPprint{\DiceAvg\ (\DiceNum d\DiceSides\DiceMod)}
 | 
						|
}
 | 
						|
 | 
						|
% Monster box made to look like the Monster Manual NPC definitions
 | 
						|
\newtcolorbox{monsterboxnobg}[2][]{
 | 
						|
   enhanced,
 | 
						|
   frame hidden,
 | 
						|
   before skip=7pt plus2pt,
 | 
						|
   boxrule=0pt,
 | 
						|
   breakable,
 | 
						|
   boxsep=0.25ex,
 | 
						|
   toptitle=3mm,
 | 
						|
   left=2.5mm,
 | 
						|
   right=2.15mm,
 | 
						|
   arc=0mm,
 | 
						|
   opacityback=0,
 | 
						|
   colframe=titlered,
 | 
						|
   fonttitle=\jebba@StatBlockTitleFont\color{titlered}\Large,
 | 
						|
   fontupper=\jebba@StatBlockBodyFont,
 | 
						|
   title=#2,
 | 
						|
   after={\vspace{7pt plus 1pt}\noindent},
 | 
						|
   #1
 | 
						|
}
 | 
						|
 | 
						|
% new Monsterbox
 | 
						|
\newtcolorbox{monsterbox}[2][]{
 | 
						|
	enhanced,
 | 
						|
	frame hidden,
 | 
						|
	before skip=7pt plus2pt,
 | 
						|
	boxrule=0pt,
 | 
						|
	breakable,
 | 
						|
	boxsep=0.25ex,
 | 
						|
	toptitle=3mm,
 | 
						|
	left=2.5mm,
 | 
						|
	right=2.15mm,
 | 
						|
	arc=0mm,
 | 
						|
	borderline north={4pt}{0pt}{titlered},
 | 
						|
	borderline north={2.5pt}{0.75pt}{statblockribbon},
 | 
						|
	borderline south={4pt}{0pt}{titlered},
 | 
						|
	borderline south={2.5pt}{0.75pt}{statblockribbon},
 | 
						|
	colback=statblockbg,
 | 
						|
	colbacktitle=statblockbg,
 | 
						|
	colframe=titlered,
 | 
						|
	fonttitle=\jebba@StatBlockTitleFont\color{titlered}\Large,
 | 
						|
	fontupper=\jebba@StatBlockBodyFont,
 | 
						|
	title=#2,
 | 
						|
	after={\vspace{7pt plus 1pt}\noindent},
 | 
						|
	#1
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
% Define Monster subsection header style
 | 
						|
%\newcommand{\monstersection}[1]{\subsubsection*{#1}}
 | 
						|
\newcommand{\monstersection}[1]{
 | 
						|
	{\par
 | 
						|
	\color{titlered}\jebba@StatBlockSubtitleFont\large #1 \vspace{3pt}
 | 
						|
	\titleline{\color{titlered}\titlerule[0.6pt]}
 | 
						|
	\par\medskip}
 | 
						|
	}
 | 
						|
 | 
						|
\newenvironment{monsteraction}[1][\unskip]{\emph{\textbf{#1.}}}{\vspace{0.5em}}
 | 
						|
 | 
						|
%
 | 
						|
% Macros for use within the monster environment
 | 
						|
%
 | 
						|
\newkeycommand\basics[armorclass=0, hitpoints=0, speed=0]{%
 | 
						|
	\color{titlered}
 | 
						|
  \textbf{\armorclassname} \commandkey{armorclass}\\
 | 
						|
	\textbf{\hitpointsname} \commandkey{hitpoints}\\
 | 
						|
	\textbf{\speedname} \commandkey{speed}\\
 | 
						|
}
 | 
						|
 | 
						|
% Taubular enviornment for stats-block
 | 
						|
\newkeycommand\stats[STR=\stat{10},
 | 
						|
                        DEX=\stat{10},
 | 
						|
                        CON=\stat{10},
 | 
						|
                        INT=\stat{10},
 | 
						|
                        WIS=\stat{10},
 | 
						|
                        CHA=\stat{10}]{
 | 
						|
    {\footnotesize
 | 
						|
	\hspace*{-3.5pt}
 | 
						|
	\resizebox{0.97\linewidth}{\height}{
 | 
						|
		\begin{tabular}{cccccc}
 | 
						|
			\rule{0pt}{3.7mm} %adds space between hline and table
 | 
						|
      \textbf{\strstatname} & \textbf{\dexstatname} & \textbf{\constatname} & \textbf{\intstatname} & \textbf{\wisstatname} & \textbf{\chastatname}\\
 | 
						|
			\commandkey{STR} & \commandkey{DEX} & \commandkey{CON} & \commandkey{INT} & \commandkey{WIS} & \commandkey{CHA}
 | 
						|
		\end{tabular}
 | 
						|
	}
 | 
						|
	\\[0.4em] %adds space after table
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
\newkeycommand\details[skills=,
 | 
						|
                      damageimmunities=,
 | 
						|
                      savingthrows=,
 | 
						|
                      conditionimmunities=,
 | 
						|
                      damageresistances=,
 | 
						|
                      damagevulnerabilities=,
 | 
						|
                      senses=---,
 | 
						|
                      languages=---,
 | 
						|
                      challenge=0]{%
 | 
						|
  \ifcommandkey{savingthrows}
 | 
						|
    {\textbf{\savesname} \commandkey{savingthrows}\\}{}
 | 
						|
  \ifcommandkey{skills}
 | 
						|
    {\textbf{\skillsname} \commandkey{skills}\\}{}
 | 
						|
  \ifcommandkey{damagevulnerabilities}
 | 
						|
    {\textbf{\dvulname} \commandkey{damagevulnerabilities}\\}{}
 | 
						|
  \ifcommandkey{damageresistances}
 | 
						|
    {\textbf{\dresname} \commandkey{damageresistances}\\}{}
 | 
						|
  \ifcommandkey{damageimmunities}
 | 
						|
    {\textbf{\dimmname} \commandkey{damageimmunities}\\}{}
 | 
						|
  \ifcommandkey{conditionimmunities}
 | 
						|
    {\textbf{\cimmname} \commandkey{conditionimmunities}\\}{}
 | 
						|
  % These traits appear to always be present.
 | 
						|
  {\textbf{\sensesname} \commandkey{senses}\\}
 | 
						|
  {\textbf{\languagesname} \commandkey{languages}\\}
 | 
						|
  {\textbf{\challengename} \commandkey{challenge}\\}
 | 
						|
\color{black}
 | 
						|
}
 |