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}