Newer
Older
%
% __ __ _
% | \/ | __ _ __ _(_) ___
% | |\/| |/ _` |/ _` | |/ __|
% | | | | (_| | (_| | | (__
% |_| |_|\__,_|\__, |_|\___|
% |___/
\makeindex[name=talismans,title={Talisman Summaries},columns=2]
% Some spells inflict X fatigue, where X is the spell level plus 2.
\newcounter{spellPlusOne}
\setcounter{spellPlusOne}{1}
\newcounter{spellPlusTwo}
\setcounter{spellPlusTwo}{1}
\newcounter{spellPlusThree}
\setcounter{spellPlusThree}{1}
\newcounter{castingBonus}
\setcounter{castingBonus}{1}
\newcommand\spellName{}
\newcommand\spellEnhancements{}
\newcommand\spellAction{}
\newcommand\spellSphere{}
\newcommand\spellResistance{}
\newcommand\spellSum{}
\newcommand\spellNotes{}
\newcounter{spellTargets}
\setcounter{spellTargets}{1}
\newcommand\showOnset{%
\ifcase\value{spellCost}\relax%
Error%
\or%
Error%
\or%
\gls{interval}%
\or%
day%
\or%
week%
\or%
season%
\else%
\gls{cycle}%
\fi%
}
\newcommand\setSpellDamage{%
\iftoggle{Divergent}{%
\ifnum\value{encnum}=2
\conDmg{spellPlusTwo}%
\else%
\conDmg{spellPlusOne}%
\fi%
}{%
\ifnum\value{encnum}=1
\conDmg{spellPlusTwo}%
\else%
\conDmg{spellPlusOne}%
\fi%
}%
}
\newcommand\setLongRange[1][spellCost]{%
\renewcommand\spellRange{20 \glspl{step}}%
\renewcommand\spellRange{greeting distance}%
\renewcommand\spellRange{yelling distance}%
\renewcommand\spellRange{an arrow's reach}%
\renewcommand\spellRange{walking distance}%
\renewcommand\spellRange{the horizon}%
}
\newcommand\spellRange{}
\newcommand\setRange{%
\iftoggle{Distant}%
{%
\setLongRange%
\Repeat{\arabic{spellCost}}{\addtocounter{track}{-4}}%
\ifnum\value{track}<1%
\renewcommand\spellRange{touch}%
\else%
\renewcommand\spellRange{\arabic{track}~steps}%
\fi%
}%
}
%%%
\newtoggle{fullSpells}
\settoggle{fullSpells}{true}
\newtoggle{talisman}
\settoggle{talisman}{false}
\newtoggle{insubstantial}
\settoggle{insubstantial}{false}
\newtoggle{Distant}
\settoggle{Distant}{false}
\newtoggle{Divergent}
\settoggle{Divergent}{false}
\newtoggle{Duplicated}
\settoggle{Duplicated}{false}
\newtoggle{opposedSpell}
\settoggle{opposedSpell}{false}
\newcommand\setTargetsIfDuplicated{%
\setcounter{spellTargets}{1}%
\iftoggle{Duplicated}{%
\foreach \i in {1,...,\arabic{spellCost}}%
{\multiply\value{spellTargets} by \value{spellCost}\addtocounter{spellTargets}{0}}%
}{}%
}
\newcommand\calcSpell[7]{%
\renewcommand\spellName{#1}%
\setcounter{spellCost}{1}%
\ifdefstring{\d}{Devious}{\global\toggletrue{Devious}}{}%
\ifdefstring{\d}{Distant}{\global\toggletrue{Distant}}{}%
\ifdefstring{\d}{Divergent}{\global\toggletrue{Divergent}}{}%
\ifdefstring{\d}{Duplicated}{\global\toggletrue{Duplicated}}{}%
\stepcounter{spellCost}%
}%
\setcounter{spellPlusOne}{\value{spellCost}}%
\addtocounter{spellPlusOne}{1}%
\setcounter{spellPlusTwo}{\value{spellCost}}%
\addtocounter{spellPlusTwo}{2}%
\setcounter{spellPlusThree}{\value{spellCost}}%
\addtocounter{spellPlusThree}{3}%
\ifstrequal{#2}{}{\renewcommand\spellEnhancements{}}{\renewcommand\spellEnhancements{#2,\space}}%
\renewcommand\spellAction{#3}%
\renewcommand\spellSphere{#4}%
% What bonus does the caster receive? Some spells will display the caster's current Bonus, so we must calculate it. We start by setting it sky-high, then for each element in {Earth,Fire}, et c. we check if this is lower than the current castingBonus, if (if so), lower the bonus.
\setcounter{castingBonus}{10}%
\foreach \e in {#4}{%
\ifnum\value{\e}<\value{castingBonus}%
\setcounter{castingBonus}{\value{\e}}%
\fi%
% This encnum just counts how many elemental spheres were used.
% If we're using more than one element, and the spell is not Divergent, it means that the spell is using a high sphere, which changes the standard bonus from +2 to +1.
\setSpellDamage
\iftoggle{snapCaster}{%
\addtocounter{castingBonus}{\value{Wits}}%
}{%
\addtocounter{castingBonus}{\value{Charisma}}%
}%
\renewcommand\spellResistance{#5}%
\ifdefmacro{#5}{\toggletrue{opposedSpell}}{\togglefalse{opposedSpell}}%
\renewcommand\spellSum{#6}%
\renewcommand\spellNotes{#7}%
\index[talismans]{\textbf{#1} (\spellEnhancements\ \spellAction~\spellSphere) Range:~\spellRange, \ifnumcomp{\value{spellTargets}}{>}{1}{Area:~\arabic{spellTargets}, }{} \iftoggle{Devious}{Onset:~1~\showOnset, }{} Resisted by: \detokenize{#5}, Bonus:~\arabic{spellCost}. \spellSum|adfclosedflourishleft~p.~}%
\index[spells]{\textbf{#1} {\sffamily (\spellEnhancements \spellAction~\spellSphere)} \textit{Cost:~\arabic{spellCost}, Range:~\spellRange, \ifnumcomp{\value{spellTargets}}{>}{1}{Area:~\arabic{spellTargets}, }{} \iftoggle{Devious}{Onset:~1~\showOnset, }{} Resisted by: \detokenize{#5}.} \spellSum|adfclosedflourishleft~p.~}%
\begin{tabularx}{\linewidth}{m{.28\linewidth}X}
\raggedright
\textbf{\titleFont\large\spellName}
\iftoggle{examplecharacter}{}{\par\footnotesize\hint{\spellEnhancements\ \spellAction}}
\textbf{\scshape Requirements:}
\spellSphere~\arabic{spellCost}
\textbf{\scshape Resisted~by:}
\spellResistance
\textbf{\scshape Area:}
\iftoggle{Devious}{%
\par
\textbf{\scshape Onset Time:}
1~\showOnset%
}{}
Spend \arabic{spellCost}~\glsentrytext{mp},
\iftoggle{opposedSpell}{%
\addtocounter{castingBonus}{7}%
\ifnum\value{spellTargets}>1\glspl{pc} resist \else target \gls{pc} resists\fi\ with \spellResistance~(\tn[\arabic{castingBonus}])%
}{%
\name\ rolls with \absNum{castingBonus} (\gls{tn} set by \spellResistance)%
}. %
\textbf{Area:}~\arabic{spellTargets},
\iftoggle{fullSpells}{%
\fullSpell%
}{%
\shortSpell%
}%
\ifnum\value{noAppearing}>1\renewcommand\name{caster}\fi% We don't want to display "3 elves rolls with +3 to do X"
\textcolor{\pageSideColor}{\glsentrysymbol{alchemy}} \textbf{Spells} \textcolor{\pageSideColor}{\glsentrysymbol{alchemy}}
\settoggle{fullSpells}{false}
\foreach \s in {Light,Death,Life,Mind,Force,Earth,Air,Fire,Water,Fate}{
\ifnumcomp{\value{\s}}{=}{\n}{
\ifnum\value{enc}<3
\input{config/spells/\s\n.tex}
\fi
}{}
}
\textcolor{\pageSideColor}{\hrulefill\raisebox{-3pt}{\npcsymbol}}
\settoggle{fullSpells}{true}%
\foreach \s in {#1}{%
\input{config/spells/\s.tex}%
}%
\iftoggle{creatureBox}{%
\spellName\ talisman%
\setcounter{track}{\value{treasure}}%
}{%
\paragraph{\adforn{25}~\spellName~\adforn{53}}%
\par
\noindent
{\it(\iftoggle{opposedSpell}{%
\addtocounter{castingBonus}{7}%
Resisted by: \spellResistance\ (\tn[\arabic{castingBonus}]), %
}{%
Roll: \absNum{castingBonus}, \gls{tn} set by \spellResistance, %
Range: \spellRange%
\ifnum\value{spellTargets}>1%
, Area of Effect:~\arabic{spellTargets}
\else%
\fi)}
\setcounter{Charisma}{\value{attackXPtotal}}% Return Charisma to old value
\newcommand\explainTalisman{%
\setcounter{treasure}{\value{track}}%
\lootMagic%
}
\foreach \s in {Air, Fire, Earth, Water, Fate}%
{\setcounter{\s}{0}}
\setcounter{Intelligence}{#4}
\setcounter{Wits}{#5}
\setcounter{Charisma}{#6}
#9
\ifglsentryexists{#2}{
\paragraph{\adforn{54}~\Glsfmttext{#2}~\adforn{26}\hspace{1em}}
\label{#2}%
\renewcommand\name{\gls{#2}}
}{
\paragraph{\adforn{54}~#2~\adforn{26}\hspace{1em}}
\label{#2}
\textbf{Mission:} & \emph{#7!} \\
\textbf{Base Spell:} & #8 \\
\textbf{Mind:} &
Intelligence \arabic{Intelligence}, Wits \arabic{Wits}, Charisma \arabic{Charisma}
\\
\textbf{Spheres:} &
\foreach \s in {Air, Fire, Earth, Water, Fate}%
\glsentrysymbol{alchemy}-\boxStat{mp}