diff --git a/bind.sty b/bind.sty
index 16d75a964f4a91a17ae830ce976952524f34b3df..58dc84245c8e15fdf4f1dca17aee982cc9d3e833 100644
--- a/bind.sty
+++ b/bind.sty
@@ -3,6 +3,7 @@
 \input{config/rules/charts.tex}
 \RequirePackage{config/csCommands}
 \RequirePackage{config/seasons}
+\RequirePackage{config/magic}
 \RequirePackage{config/loot}
 \RequirePackage{config/arms}
 \RequirePackage{config/stats}
diff --git a/layout.sty b/layout.sty
index 41aa84410f3a80c488327bea7367d6b6eff020a8..910bb33075b7cfafdbb2e36447f0cdd1b27387e9 100644
--- a/layout.sty
+++ b/layout.sty
@@ -817,142 +817,6 @@ interior code={ \path[tcb fill interior] ([xshift=-2mm]interior.west)
 \newcolumntype{Y}{>{\centering\arraybackslash}X}
 \newcolumntype{L}{>{\raggedright\arraybackslash}X}
 
-%%%%% Magic %%%%%
-
-\newcommand\mFate{Fate\settoggle{insubstantial}{true}}
-\newcommand\mEarth{Earth}
-\newcommand\mAir{Air\settoggle{insubstantial}{true}}
-\newcommand\mFire{Fire}
-\newcommand\mWater{Water}
-
-% 1 = Name
-% 2 = Spheres
-% 3 = Action
-% 4 = Enhancements
-% 5 = Skill
-% 6 = Description
-
-
-\newcommand{\spell}[6]{
-  \settoggle{distant}{false}%
-  \settoggle{insubstantial}{false}
-  \setcounter{spelllevel}{1}%
-  \foreach \s in {#4}{%
-    \stepcounter{spelllevel}%
-  }%
-  \subsubsection[\textbf{#1}: #6. (\textit{#5})]{#1}%
-
-  (#3
-  #4
-  #2),
-  \glsentrytext{mp} Cost:~\arabic{spelllevel},
-  \setRange%
-  Range:~\spellRange,
-  \iftoggle{duplicated}{%
-    \setArea%
-    Targets:~\spellArea,%
-  }{}%
-  \underline{Skill:~#5}
-  \vspace{.5em}\afterparnoindent
-  \index[spells]{\textbf{#1}: \iftoggle{duplicated}{\spellArea targets}{Have target} #6. (Cost:~\arabic{spelllevel}, Spheres:~#2, Skill:~#5, \mbox{Range: \spellRange})}
-}
-
-
-\newcommand\spellRange{}
-
-\newcommand\setRange{%
-  \iftoggle{distant}%
-    {%
-      \ifcase\value{spelllevel}\relax%
-      \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}{6}%
-      \addtocounter{track}{-\value{spelllevel}}%
-      \ifnum\value{track}<1%
-        \renewcommand\spellRange{touch}%
-      \else%
-        \renewcommand\spellRange{\arabic{track} steps}%
-      \fi%
-    }%
-}
-
-
-%%%
-\newcommand\spellArea{}
-\newcounter{spellArea}
-
-\newcommand\setArea{%
-  \setcounter{spellArea}{\value{spelllevel}}%
-  \multiply\value{spellArea} by \value{spelllevel}%
-  \iftoggle{insubstantial}{%
-    \multiply\value{spellArea} by \value{spelllevel}%
-    \addtocounter{spellArea}{0}%
-  }{}%
-  \renewcommand\spellArea{%
-    \arabic{spellArea}, %
-  }%
-}
-
-%%%
-
-\newtoggle{insubstantial}
-  \settoggle{insubstantial}{false}
-\newtoggle{distant}
-  \settoggle{distant}{false}
-\newtoggle{duplicated}
-  \settoggle{duplicated}{false}
-
-\newcommand\detailed{Detailed}
-
-\newcommand\duplicated{%
-  \settoggle{duplicated}{true}%
-  Duplicated%
-}
-
-\newcommand\divergent{Divergent}
-
-\newcommand\distant{%
-  \settoggle{distant}{true}%
-  Distant%
-}
-
-\newcommand{\magicitem}[7]{%
-  \vspace{1em}\needspace{1em}\noindent\textbf{#1}%
-  \index{Magical Item!#1}
-
-  \noindent
-  \textit{Spells: #2, }%
-  \textit{Path: #3, }%
-  \textit{Duration: #4, }%
-  \textit{Type: #5, }%
-  \textit{Potency: +#6, }%
-  \textit{MP: #7}%
-  % Type can be 'Pocket Spell', 'Talisman', or 'Artefact'.
-  \needspace{2em}%
-}
-
-\newcommand{\manalake}[8]{
-  \subsection{#1 (Level #8)}
-
-  \textit{Spells: #2, }\textit{Path: #3, }\textit{Duration: #4, }\textit{Type: #5, }\textit{Potence: #6, }\textit{#7 MP}% Type can be 'pocket spell', 'magical item', or 'artefact'.
-  \index{Mana Lakes!#1}
-  \vspace{.3em}
-}
-
-
-% Toggles for knacks
 
 %%%%%%%%%%%%%%%%%%%% Environments %%%%%%%%%%%%%%%%%%%%
 
diff --git a/magic.sty b/magic.sty
new file mode 100644
index 0000000000000000000000000000000000000000..715916164e45830c7cc68dde76abe3c6009f052d
--- /dev/null
+++ b/magic.sty
@@ -0,0 +1,139 @@
+% 
+%  __  __             _      
+% |  \/  | __ _  __ _(_) ___ 
+% | |\/| |/ _` |/ _` | |/ __|
+% | |  | | (_| | (_| | | (__ 
+% |_|  |_|\__,_|\__, |_|\___|
+%               |___/        
+
+\newcommand\mFate{Fate\settoggle{insubstantial}{true}}
+\newcommand\mEarth{Earth}
+\newcommand\mAir{Air\settoggle{insubstantial}{true}}
+\newcommand\mFire{Fire}
+\newcommand\mWater{Water}
+
+% 1 = Name
+% 2 = Spheres
+% 3 = Action
+% 4 = Enhancements
+% 5 = Skill
+% 6 = Description
+
+
+\newcommand{\spell}[6]{
+  \settoggle{distant}{false}%
+  \settoggle{insubstantial}{false}
+  \setcounter{spelllevel}{1}%
+  \foreach \s in {#4}{%
+    \stepcounter{spelllevel}%
+  }%
+  \subsubsection[\textbf{#1}: #6. (\textit{#5})]{#1}%
+
+  (#3
+  #4
+  #2),
+  \glsentrytext{mp} Cost:~\arabic{spelllevel},
+  \setRange%
+  Range:~\spellRange,
+  \iftoggle{duplicated}{%
+    \setArea%
+    Targets:~\spellArea, %
+  }{}%
+  \underline{Skill:~#5}
+  \vspace{.5em}\afterparnoindent
+  \index[spells]{\textbf{#1}: \iftoggle{duplicated}{\spellArea~targets}{Have target} #6. (Cost:~\arabic{spelllevel}, Spheres:~#2, Skill:~#5, \mbox{Range: \spellRange})}
+}
+
+\newcommand\spellRange{}
+\newcommand\setRange{%
+  \iftoggle{distant}%
+    {%
+      \ifcase\value{spelllevel}\relax%
+      \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}{6}%
+      \addtocounter{track}{-\value{spelllevel}}%
+      \ifnum\value{track}<1%
+        \renewcommand\spellRange{touch}%
+      \else%
+        \renewcommand\spellRange{\arabic{track} steps}%
+      \fi%
+    }%
+}
+
+
+%%%
+\newcommand\spellArea{}
+\newcounter{spellArea}
+
+\newcommand\setArea{%
+  \setcounter{spellArea}{\value{spelllevel}}%
+  \multiply\value{spellArea} by \value{spelllevel}%
+  \iftoggle{insubstantial}{%
+    \multiply\value{spellArea} by \value{spelllevel}%
+    \addtocounter{spellArea}{0}%
+  }{}%
+  \renewcommand\spellArea{%
+    \arabic{spellArea}%
+  }%
+}
+
+%%%
+
+\newtoggle{insubstantial}
+  \settoggle{insubstantial}{false}
+\newtoggle{distant}
+  \settoggle{distant}{false}
+\newtoggle{duplicated}
+  \settoggle{duplicated}{false}
+
+\newcommand\detailed{Detailed}
+
+\newcommand\duplicated{%
+  \settoggle{duplicated}{true}%
+  Duplicated%
+}
+
+\newcommand\divergent{Divergent}
+
+\newcommand\distant{%
+  \settoggle{distant}{true}%
+  Distant%
+}
+
+\newcommand{\magicitem}[7]{%
+  \vspace{1em}\needspace{1em}\noindent\textbf{#1}%
+  \index{Magical Item!#1}
+
+  \noindent
+  \textit{Spells: #2, }%
+  \textit{Path: #3, }%
+  \textit{Duration: #4, }%
+  \textit{Type: #5, }%
+  \textit{Potency: +#6, }%
+  \textit{MP: #7}%
+  % Type can be 'Pocket Spell', 'Talisman', or 'Artefact'.
+  \needspace{2em}%
+}
+
+\newcommand{\manalake}[8]{
+  \subsection{#1 (Level #8)}
+
+  \textit{Spells: #2, }\textit{Path: #3, }\textit{Duration: #4, }\textit{Type: #5, }\textit{Potence: #6, }\textit{#7 MP}% Type can be 'pocket spell', 'magical item', or 'artefact'.
+  \index{Mana Lakes!#1}
+  \vspace{.3em}
+}
+
+
diff --git a/stats.sty b/stats.sty
index a19560cb160b52ee12f792aacee6be6418791978..eca6a0fa605f26a99572ec09dc65c27306f18462 100644
--- a/stats.sty
+++ b/stats.sty
@@ -64,17 +64,19 @@
 \newcommand{\dmg}[1]{%
 		\setcounter{damagebonus}{\value{#1}}%
 		\setcounter{numberofdice}{1}%
-	\whileboolexpr{test {\ifnumcomp{\value{damagebonus}}{>}{3}}}{%
-		\addtocounter{damagebonus}%
-		{-4}\addtocounter{numberofdice}{1}%
+	\whileboolexpr{%
+    test {\ifnumcomp{\value{damagebonus}}{>}{3}}%
+  }{%
+		\addtocounter{damagebonus}{-4}%
+    \addtocounter{numberofdice}{1}%
 	}%
 	{\arabic{numberofdice}D6%
 	\ifnumcomp{\value{damagebonus}}{>}{0}%
 		{+\arabic{damagebonus}}%
 		{%
 		\ifnumcomp{\value{damagebonus}}{<}{0}{%
-		\arabic{damagebonus}}%
-		{}%
+      \arabic{damagebonus}%
+    }{}%
 		}%
 	}%
 }