diff --git a/docs.tex b/docs.tex
index 92eb0b92633f9bb48ac7f8aaa09bd53eb636c4b5..28afbbe75461de627dacff85c4f000919c25d475 100644
--- a/docs.tex
+++ b/docs.tex
@@ -3,6 +3,7 @@
 
 \date{\today}
 
+\settoggle{debug}{true}
 
 \begin{document}
 
@@ -61,6 +62,8 @@ Individual characters can be created by using the \verb"\npc" command then the \
 
 \end{verbatim}
 
+\settoggle{debug}{true}
+
 \npc{\M}{Alice}
 \person{0}% STRENGTH
 {1}% DEXTERITY 
diff --git a/layout.sty b/layout.sty
index df4b1f122013b0420741376ea6b570e06e9ce039..4c67696ec53dc8b4428f07e78d5cb6975535e2e2 100644
--- a/layout.sty
+++ b/layout.sty
@@ -364,10 +364,10 @@ bookmarks=true]%
       \fi
       };
     \node at ([xshift=-5pt,yshift=35pt] south west)
-      {\ifnum\value{attb}>7
-        \addtocounter{attb}{-4}
-        \multiply\value{attb} by 2
-        \includesvg[angle=340,width=\theattb pt]{config/images/s1}
+      {\ifnum\value{att}>7
+        \addtocounter{att}{-4}
+        \multiply\value{att} by 2
+        \includesvg[angle=340,width=\theatt pt]{config/images/s1}
         \hspace{-30pt}
       \fi
     };
diff --git a/monsters.sty b/monsters.sty
index 3f916f20cdf94ce8ba9720b113a7deaa9dc1d63a..be73fda68b07d7912b75640afa256ca39410f790 100644
--- a/monsters.sty
+++ b/monsters.sty
@@ -469,8 +469,8 @@ Academics~1, \ifodd\value{page} Crafts~\arabic{r2}, \else \fi Deceit~1, \ifodd\v
 {-1}% WITS
 {0}}% CHARISMA
 {0}% DR
-{\ifodd\value{r3} 0\else 1\fi}% AGGRESSION
-{Empathy~1, \ifodd\thechapter Deceit~\arabic{r2}\fi}% SKILLS
+{\ifnum\value{r12}=7 1\else 1\fi}% AGGRESSION
+{\arabic{r12} Empathy~1, \ifodd\thechapter Deceit~\arabic{r2}\fi}% SKILLS
 {\ifodd\thepage \Dagger, \lootSmall\else None\fi}% EQUIPMENT
 {}
 }
diff --git a/stats.sty b/stats.sty
index 35f711e37a8ad7b4b504cb2508a52e963df420a2..e1d173d425f0f890f481eaff25bddf41dd982897 100644
--- a/stats.sty
+++ b/stats.sty
@@ -107,8 +107,7 @@
 \newcounter{strb}
 \newcounter{dexb}
 \newcounter{spdb}
-\newcounter{attb}
-% 
+ 
 % Extras: MP hp fp
 % Derived: dicenumber, dicebonus,
 \newcounter{mp}
@@ -157,6 +156,7 @@
 \newcommand{\necromancy}{\addtocounter{mp}{3}Necromancy}
 \newcommand{\polymorph}{\addtocounter{mp}{3}Polymorph}
 \newcommand{\saurecanta}{\addtocounter{mp}{3}Saurecanta}
+
 \newcommand{\lockedmana}[1]{\setcounter{mpb}{-#1}}
 \newcommand{\armourtype}{N}
 
@@ -167,7 +167,7 @@
 %%%%%%%%%%%%%%%%%%%%% Knacks
 %
 \newcommand{\adrenalinesurge}{Adrenaline Surge\addtocounter{strb}{1}\addtocounter{knacks}{1}}
-\newcommand{\brawler}{Brawler\addtocounter{attb}{2}\addtocounter{knacks}{1}}
+\newcommand{\brawler}{Brawler\addtocounter{dexb}{2}\addtocounter{knacks}{1}}
 \newcommand{\berserker}{Berserker\addtocounter{spdb}{1}\addtocounter{strb}{1}\addtocounter{knacks}{1}}
 \newcommand{\disarm}{Disarm\addtocounter{knacks}{1}\addtocounter{xpbonus}{1}}
 \newcommand{\guardian}{Guardian\addtocounter{knacks}{1}}
@@ -177,7 +177,7 @@
 \newcommand{\perfectsneakattack}{Perfect Sneak Attack\addtocounter{knacks}{1}\addtocounter{strb}{\value{knacks}}\addtocounter{strb}{2}}
 \newcommand{\precisestrike}{Precise Strike\addtocounter{knacks}{1}}
 \newcommand{\stunningstrike}{Stunning Strike\addtocounter{knacks}{1}\addtocounter{xpbonus}{1}}
-\newcommand{\charge}{\addtocounter{knacks}{1}\setcounter{track}{\value{knacks}}\addtocounter{track}{1}\divide\value{track} by 2\addtocounter{attb}{\value{track}}\addtocounter{strb}{\value{track}}\addtocounter{spdb}{\value{track}}Extreme Charge}
+\newcommand{\charge}{\addtocounter{knacks}{1}\setcounter{track}{\value{knacks}}\addtocounter{track}{1}\divide\value{track} by 2\addtocounter{dexb}{\value{track}}\addtocounter{strb}{\value{track}}\addtocounter{spdb}{\value{track}}Extreme Charge}
 \newcommand{\snapshot}{Snap Shot\addtocounter{knacks}{1}\addtocounter{strb}{2}}
 \newcommand{\dodger}{Dodger\addtocounter{knacks}{1}}
 \newcommand{\mightydraw}{Mighty Draw\addtocounter{knacks}{1}}
@@ -249,7 +249,7 @@
 		]
 
 	\creaturestats
-  \vspace{-1em}
+
 	\derivedstats
 	\end{tcolorbox}
 
@@ -264,7 +264,6 @@
 
     \settoggle{personality}{false}}%
 	{}
-  \settoggle{debug}{false}
   \settoggle{examplecharacter}{false}
   \settoggle{creatureBox}{false}
 
@@ -316,6 +315,9 @@
 
 \newcommand{\clean}{
 	\setcounter{fp}{5}
+	\setcounter{strb}{0}
+	\setcounter{dexb}{0}
+	\setcounter{spdb}{0}
 	\setcounter{sp}{0}
 	\setcounter{heft}{1}
 	\setcounter{damage}{0}
@@ -353,10 +355,6 @@
 	\begin{footnotesize}
 }
 
-\setcounter{strb}{0}
-\setcounter{spdb}{0}
-\setcounter{dexb}{0}
-
 \begin{tabularx}{\textwidth}{lr|lr|lr}
 
 % the tcolorbox has coloured rows (xcolor package)
@@ -376,10 +374,6 @@
 	\ent{Skills} & \ifnumcomp{\value{att}}{=}{0}{}{\iftoggle{mind}{Combat \arabic{att}, }{Aggression \arabic{att}, }} \skills \\
 	\iftoggle{mind}{\ent{Equipment} & \equipment \\}{\ent{Abilities} & \abilities \\}
 
-	\addtocounter{dexb}{\value{dex}}
-	\addtocounter{spdb}{\value{spd}}
-	\setcounter{attb}{\value{att}}
-
 	\mods
 
 \end{tabularx}
@@ -387,10 +381,6 @@
 	\weaponknackone
 	\weaponknacktwo
 
-\iftoggle{examplecharacter}{}{
-	\addtocounter{att}{7}
-	\addtocounter{attb}{7}
-}
 
 \iftoggle{verbose}{%
 	\end{small}%
@@ -411,24 +401,29 @@
 %%
 %
 \newcommand{\derivedstats}{
+  \hrulefill
   \setlength\topsep{0pt}
   \setlength\parskip{0pt}
-	\iftoggle{debug}{str is \arabic{str}, strb is \arabic{strb}.}{}
-	\hrulefill
+	\iftoggle{debug}{str: \arabic{str}, strb: \arabic{strb}, dex: \arabic{dex}, dexb: \arabic{dexb}, spd: \arabic{spd}, spdb: \arabic{spdb},att: \arabic{att}, damage: \arabic{damage}, Attack total: \arabic{attackXPtotal}, Def Total: \arabic{defenceXPtotal}}{}
+	
 
+\iftoggle{examplecharacter}%
+  {}%
+  {\addtocounter{att}{7}}
 \addtocounter{att}{\value{dex}}
-\addtocounter{attb}{\value{dexb}}
 \addtocounter{spd}{3}
-\addtocounter{spdb}{3}
 \ifnum\value{weight}>\value{str}% now to compute encumbrance
-  \addtocounter{spd}{\value{weight}}
-  \addtocounter{spdb}{\value{weight}}
-  \addtocounter{spd}{-\value{str}}
-  \addtocounter{spdb}{-\value{str}}
+  \addtocounter{str}{5}% we can't have negative values affecting results
+  \addtocounter{weight}{5}
+  \addtocounter{spd}{-\value{weight}}
+  \addtocounter{spd}{\value{str}}
+  \addtocounter{str}{-5}% now we return str and weight to the original values
+  \addtocounter{weight}{-5}
 \fi
 \begin{center}
-  \scshape Att \arabic{att}\ifnumcomp{\value{att}}{=}{\value{attb}}{}{ (\arabic{attb})},
-  AP \arabic{spd}\ifnumcomp{\value{spd}}{=}{\value{spdb}}{}{ (\arabic{spdb})}\ifnumcomp{\value{heft}}{>}{1}{: \arabic{heft}}{},
+  \scshape Att \arabic{att}\ifnumcomp{\value{dexb}}{>}{0}{\addtocounter{att}{\value{dexb}} (\arabic{att})}{},
+  AP \arabic{spd}\ifnumcomp{\value{spdb}}{>}{0}%
+  {\addtocounter{spd}{\value{spdb}} (\arabic{spd})}{}\ifnumcomp{\value{heft}}{>}{1}{: \arabic{heft}}{},
   \addtocounter{damage}{\value{str}}
   \mbox{Dam \calculatedamage{\value{damage}}%
   \ifnumcomp{\value{strb}}{>}{0}%
@@ -478,52 +473,55 @@
 %% /_/\_\_|    
 %%  
 \newcommand{\calculateXP}{
-  %% Sanitize: init+5, dam+5, 
-    \addtocounter{spdb}{5}
-    \addtocounter{strb}{5}
-    \addtocounter{dex}{5}
-    \addtocounter{dr}{2}
-  % Sanitize: dex+5, dr+1,  
-  % attackXPtotal= strb x spdb x damb
   \vspace{.1cm}
-
-    \setcounter{attackXPtotal}{\value{attb}}
-
-    \multiply\value{attackXPtotal} by \value{spdb}
-
-    
-    \multiply\value{attackXPtotal} by \value{strb}
-
-    \iftoggle{debug}{Attack total: \arabic{attackXPtotal}}{}
+  % Sanitize numbers to avoid zeros, and ensure bonuses don't change things drastically.
+  \addtocounter{damage}{3}
+  \addtocounter{dr}{3}
+  % spd already received a +3 bonus to make it AP
+
+  \setcounter{attackXPtotal}{\value{damage}}
+
+  \multiply\value{attackXPtotal} by \value{spd}
+  \addtocounter{spd}{-\value{heft}}
+  \ifnum\value{spd}>0
+    \multiply\value{attackXPtotal} by \value{spd}
+  \fi
    
-  % defenceXPtotal= dex x dr x hp
-    \setcounter{defenceXPtotal}{\value{dex}}
+    \setcounter{defenceXPtotal}{\value{hp}}
     \multiply\value{defenceXPtotal} by \value{dr}
-    \multiply\value{defenceXPtotal} by \value{hp}
 
   % XP = attackXPtotal + defenceXPtotal
     \setcounter{xp}{\value{attackXPtotal}}
     \addtocounter{xp}{\value{defenceXPtotal}}
-    \addtocounter{xp}{-350}
-    \multiply\value{mp} by 100
+    \addtocounter{att}{-4}
+    \multiply\value{xp} by \value{att}
+    \addtocounter{xp}{-100}
+    % MP time
+    \addtocounter{mp}{\value{wts}}
+    \divide\value{mp} by 3
     \addtocounter{xp}{\value{mp}}
-  \ifnumcomp{\value{xp}}{<}{120}%
-    {\ifnumcomp{\value{xp}}{>}{100}%
-      {$1/2$ XP}{$1/3$ XP}}%
-      {
-        \divide\value{xp} by 120%
-        \addtocounter{xp}{\value{xpbonus}}%
-        \arabic{xp} XP
-      }%
-  % if {mind} print fate points.
-  %
+
+	\iftoggle{debug}{str: \arabic{str}, strb: \arabic{strb}, dex: \arabic{dex}, dexb: \arabic{dexb}, spd: \arabic{spd}, spdb: \arabic{spdb}, att: \arabic{att}, damage: \arabic{damage}, Attack total: \arabic{attackXPtotal}, Def Total: \arabic{defenceXPtotal}, mp: \arabic{mp} Grand Total: \arabic{xp}}{\hrulefill}
+    
   \iftoggle{examplecharacter}{}
-    {\iftoggle{mind}%
-     {\addtocounter{fp}{\value{cha}}%
-       \ignorespaces, \arabic{fp}~FP %
-       \iftoggle{bestiarychapter}%
-         {}%
-         {\Repeat{\value{fp}}{\ding{111}}}%
+  {
+    \ifnumcomp{\value{xp}}{<}{120}%
+      {\ifnumcomp{\value{xp}}{>}{90}%
+        {$1/2$ XP}{}}%
+        {
+          \divide\value{xp} by 160%
+          \addtocounter{xp}{\value{xpbonus}}%
+          \arabic{xp} XP%
+        }%
+    % if {mind} print fate points.
+    %
+    \iftoggle{mind}%
+      {\addtocounter{fp}{\value{cha}}%
+        \ifnum\value{fp}>2\ignorespaces, \arabic{fp}~FP %
+        \iftoggle{bestiarychapter}%
+          {}%
+          {\Repeat{\value{fp}}{\ding{111}}}%
+        \fi
     }{}%
   }
 }
diff --git a/test.tex b/test.tex
index 95b1d23daccacf5a6d3c4bd8c86e6e1d7c2d9bbf..094cc75a4b60cfd68394d979200d437e7040d160 100644
--- a/test.tex
+++ b/test.tex
@@ -4,6 +4,8 @@
 
 \date{\today}
 
+\settoggle{debug}{true}
+
 \begin{document}
 
 \chapter{Random Stuff}