Newer
Older
%
% __ __ _
% | \/ | __ _ __ _(_) ___
% | |\/| |/ _` |/ _` | |/ __|
% | | | | (_| | (_| | | (__
% |_| |_|\__,_|\__, |_|\___|
% |___/
% Some spells inflict X fatigue, where X is the spell level plus 2.
\setcounter{spellCost}{1}
\newcounter{spellPlusTwo}
\setcounter{spellPlusTwo}{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\spellRange{}
\newcommand\setRange{%
\iftoggle{distant}%
{%
\renewcommand\spellRange{Error}%
\or%
\renewcommand\spellRange{Error}%
\or%
\renewcommand\spellRange{throwing distance}%
\or%
\renewcommand\spellRange{shouting distance}%
\or%
\renewcommand\spellRange{horizon}%
\else%
\renewcommand\spellRange{line of sight}%
\fi%
}%
{%
\setcounter{track}{20}%
\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{duplicated}
\settoggle{duplicated}{false}
\newtoggle{opposedSpell}
\settoggle{opposedSpell}{false}
\newcommand\calcSpell[7]{%
\renewcommand\spellName{#1}%
\setcounter{spellCost}{1}%
\setcounter{spellTargets}{1}%
\togglefalse{distant}%
\togglefalse{duplicated}%
\ifdefstring{\d}{distant}{\global\toggletrue{distant}}{}%
\ifdefstring{\d}{duplicated}{\global\toggletrue{duplicated}}{}%
\setcounter{spellPlusTwo}{\value{spellCost}}%
\addtocounter{spellPlusTwo}{2}%
\renewcommand\spellEnhancements{#2}%
\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%
}{}%
\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}%
\multiply\value{spellTargets} by \value{spellCost}%
\multiply\value{spellTargets} by \value{spellCost}%
\addtocounter{spellTargets}{0}%
\iftoggle{distant}{%
\foreach \x in {1,...,\arabic{spellCost}}%
{\multiply\value{spellTargets} by 10\addtocounter{spellTargets}{0}}%
}{}%
\index[spells]{\textbf{#1} (Cost: \arabic{spellCost}, \spellEnhancements\ \spellAction~\spellSphere) Range: \spellRange, Targets: \arabic{spellTargets}, Resisted by: \detokenize{#5}, \spellSum}
\paragraph{\spellName}
Cost: \arabic{spellCost},
\spellEnhancements,
\spellAction~
\spellSphere
Resisted by: \spellResistance,
Range: \spellRange
\ifnum\value{spellTargets}>1%
, Targets: \arabic{spellTargets}
\fi
\spellSum \
\spellNotes
}
(Cost: \arabic{spellCost},
\iftoggle{opposedSpell}{
\addtocounter{castingBonus}{7}%
Resisted by: \spellResistance, \tn[\arabic{castingBonus}]%
}{%
Roll: \absNum{castingBonus}, \gls{tn} set by \spellResistance.
})%
\iftoggle{fullSpells}{%
\fullSpell%
}{%
\shortSpell%
}%
\newcommand\showStdSpells{
\setcounter{enc}{0}
\settoggle{fullSpells}{false}
\foreach \s in {Light,Death,Life,Mind,Force,Earth,Air,Fire,Water,Fate}{
\ifnumcomp{\value{\s}}{=}{\n}{
\input{config/spells/\s\n.tex}
\stepcounter{enc}
}{}
}
\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{\spellName}%
\spellSum
\spellNotes
\iftoggle{opposedSpell}{
\addtocounter{castingBonus}{7}
Resisted by: \spellResistance\ (\tn[\arabic{castingBonus}])
}{
Roll: \absNum{castingBonus}, \gls{tn} set by \spellResistance.
}%
}%
\index{Talismans!#1}%
\setcounter{castingBonus}{\value{spellCost}}%
\newcommand\explainTalisman{%
\setcounter{treasure}{\value{track}}%
\lootMagic%
}