\usepackage[table,xcdraw]{xcolor} \usepackage{amsmath} \usepackage{fdsymbol} \usepackage{tikz} \usepackage{ifthen} \usepackage[margin=0.4in,bottom=0.35in,top=0.25in]{geometry} \usepackage[no-math]{fontspec} \usepackage{xstring} \usepackage{multirow} \usepackage{forloop} \usepackage{xparse} \usepackage{multicol} \usepackage{calc} \usepackage{titlesec} \usepackage{ragged2e} \usepackage{fancyhdr} \usepackage{enumitem} \usepackage{tabularx} \usepackage{hyperref} \usetikzlibrary {shapes.multipart,shapes.misc,shapes.symbols,calc,positioning,fit,backgrounds} \input{star-wars-icons.sty} \input{star-wars-talents.sty} \hypersetup{ colorlinks=true, linkcolor=black, urlcolor=blue, pdftitle={Star Wars}, pdfpagemode=FullScreen, } \setmainfont[Path=./fonts/, BoldFont=itcsymbol-bold.otf, ItalicFont=itcsymbol-italic.otf, BoldItalicFont=itcsymbol-bolditalic.otf]{itcsymbol.otf} \newfontfamily{\tn}[Path=./fonts/]{elektra-medium.otf} \DeclareTextFontCommand{\texttn}{\tn} \newfontfamily{\ltn}[Path=./fonts/]{elektra-light.otf} \DeclareTextFontCommand{\textltn}{\ltn} \definecolor{titlecolor}{HTML}{384d3e} \definecolor{subtitlecolor}{HTML}{4f2829} \definecolor{tablecolor1}{HTML}{b0beba} \definecolor{tablecolor2}{HTML}{FFFFFF} \definecolor{tablecolor3}{HTML}{384d3e} \definecolor{charblue}{HTML}{201040} \definecolor{charred}{HTML}{401010} \definecolor{reset}{HTML}{ffffff} \def\arraystretch{1.2} \titleformat{\section} {\fontsize{35pt}{42pt}\tn\color{titlecolor}\MakeUppercase}{}{0em}{} \titleformat{\subsection} {\fontsize{14pt}{16pt}\tn\color{subtitlecolor}\MakeUppercase}{}{0em}{} \titlespacing{\subsection}{0pt}{10pt}{0pt} \titleformat{\subsubsection} {\fontsize{10pt}{12pt}\tn\color{subtitlecolor}\MakeUppercase}{}{0em}{} \titlespacing{\subsubsection}{0pt}{10pt}{0pt} \newcounter{undeffed} \setcounter{undeffed}{0} \newcounter{x} \setlength{\parindent}{0pt} \newlength{\tmpwidth} \newlength{\namewidth} \def\specialization{} \makeatletter \NewDocumentCommand {\getnodedimen} {O{\nodewidth} O{\nodeheight} m} { \begin{pgfinterruptboundingbox} \begin{scope}[local bounding box=bb@temp] \node[inner sep=0pt, fit=(#3)] {}; \end{scope} \path ($(bb@temp.north east)-(bb@temp.south west)$); \end{pgfinterruptboundingbox} \pgfgetlastxy{#1}{#2} } \let\@var\@empty \newcommand{\append}[1]{\addtocounter{undeffed}{1}\xdef\@var{\@var #1} } % Another variant with kernel \g@addto@macro \newcommand{\appendother}[1]{\g@addto@macro{\@var}{#1}} \newcommand{\undeffed}{\@var} \newcommand{\drawforce}{% \@ifundefined{force@\specialization}{}{% \definecolor{talentcolor}{HTML}{000000} \node[forcepower] at (0.2,-2.48) {}; \node[talentname] at (0,-2.1) {\footnotesize{}\texttn{FORCE TALENT}}; } } \newcommand{\setforce}{% \protected@write\@auxout{}{% \global\string\@namedef{force@\specialization}{}% }% } \makeatother \newlength{\textlength} \pagestyle{fancy} \renewcommand{\headrulewidth}{0pt} \fancyhead{} \fancyfoot{} \fancyfoot[R]{\raisebox{18pt}{\thepage}} \def\career{} \def\careerskills{} \newcommand{\setcareer}[2]{% \def\career{#1}% \def\careerskills{#2}% } \newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{P}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}p{#1}} \tikzset{ every node/.style={anchor=north west}, talent/.style={ chamfered rectangle, chamfered rectangle corners={north east, south west, south east}, draw, thick, double, inner xsep=-2pt, inner ysep=0pt, fill=white, align=left }, talentname/.style={ chamfered rectangle, chamfered rectangle corners={north east, south east}, inner ysep=0cm, inner xsep=0.11cm, text width = 2.81cm, align=left, text=white, fill=talentcolor }, cost/.style={ chamfered rectangle, text=white, chamfered rectangle xsep=2cm, text width= 30pt, align=center, inner ysep=-1pt, fill=talentcolor, right=of \alph{talentx}\alph{talenty}.south, left=-40pt }, upgradecost/.style={ chamfered rectangle, text=white, chamfered rectangle xsep=2cm, text width= 30pt, align=center, inner ysep=-1pt, fill=talentcolor, below right=1pt and -40pt of big\alph{bupgradex}\alph{bupgradey}.south east }, forcepower/.style={ starburst, starburst points=7, random starburst=6, starburst point height=10pt, fill=talentcolor, draw=white, line width=1.5pt, minimum width=30pt, minimum height=30pt, rotate=155 }, ranked/.style={ talentname, fill=white, draw = talentcolor, thick, inner ysep=0.05cm, minimum width = 3.36cm, inner xsep = 0.05cm, chamfered rectangle xsep = 0.15cm } } \newcounter{talentx} \newcounter{talenty} \newcounter{upgradex} \newcounter{upgradey} \newcounter{bupgradex} \newcounter{bupgradey} \newcounter{tmpchar} \newcounter{tmpx} \newcounter{tmpxp} \newcounter{tmpy} \newcounter{tmpyp} \newcommand{\talentline}[2]{ \StrChar{#1}{2}[\tmpone] \StrChar{#2}{2}[\tmptwo] \ifthenelse{\equal{\tmpone}{\tmptwo}}{ \draw[line width=1.5mm] ([xshift=3.57cm,yshift=-0.7cm]#1.north west) -- ([yshift=-0.7cm]#2.north west); }{ \draw[line width=1.5mm] (#1) -- (#2); } } \newcommand{\upgradeline}[2]{ \StrChar{#1}{2}[\tmpone] \StrChar{#2}{2}[\tmptwo] \ifthenelse{\equal{\tmpone}{\tmptwo}}{ \draw[line width=1.5mm, color=talentcolor] ([xshift=3.57cm,yshift=-0.7cm]#1.north west) -- ([yshift=-0.7cm]#2.north west); }{ \draw[line width=1.5mm, color=talentcolor] (#1) -- (#2); } } \newcommand{\swtalent}[5]{% \addtocounter{talentx}{1}% \ifthenelse{\equal{\arabic{talentx}}{5}}{% \addtocounter{talenty}{1}% \setcounter{talentx}{1}% }{} \ifthenelse{\equal{#3}{true}}{% \definecolor{talentcolor}{HTML}{5f1111} }{% \definecolor{talentcolor}{HTML}{1e115f} } \node[text=white,text width = 2.6cm] at ($(\arabic{talentx}*4.5,-\arabic{talenty}*4.9) + (0.5,-0.15)$) (tmp\alph{talentx}\alph{talenty}) {\footnotesize \texttn{\uppercase{#1}}}; \getnodedimen{tmp\alph{talentx}\alph{talenty}} \node[talent] at (\arabic{talentx}*4.5,-\arabic{talenty}*4.9) (\alph{talentx}\alph{talenty}) { \settowidth{\textlength}{\footnotesize \texttn{{\uppercase{#1}}}}% \tabular{{>{\raggedright}p{3cm}}} \vspace*{7pt} \ifdim\nodeheight > 15pt \rule{0pt}{7pt} \\ \fi \ifdim\nodeheight > 28pt \rule{0pt}{7pt} \\ \fi \scriptsize #2 \\ \endtabular }; \ifthenelse{\equal{#5}{true}}{% \node[ranked] at ($(\arabic{talentx}*4.5,-\arabic{talenty}*4.9) + (0.08,-0.08)$) {% \small \hspace*{-6pt} \checkbox % \settowidth{\textlength}{\footnotesize \texttn{{\uppercase{#1}}}}% \ifdim\nodeheight > 15pt \\ \phantom{t} \fi \ifdim\nodeheight > 30pt \\ \phantom{t} \fi }; }{} \ifthenelse{\equal{#4}{true}}{% \setforce{} \node[forcepower] at ($(\arabic{talentx}*4.5,-\arabic{talenty}*4.9) + (0.3,-0.5)$) {}; }{} \node[talentname] at ($(\arabic{talentx}*4.5,-\arabic{talenty}*4.9) + (0.13,-0.14)$) {% \small \hspace*{-6pt} \checkbox % \settowidth{\textlength}{\footnotesize \texttn{{\uppercase{#1}}}}% \ifdim\nodeheight > 15pt \\ \phantom{t} \fi \ifdim\nodeheight > 30pt \\ \phantom{t} \fi }; \node[cost] {\tiny\texttn{COST \fpeval{5*\arabic{talenty}}}}; \node[text=white,text width = 2.6cm] at ($(\arabic{talentx}*4.5,-\arabic{talenty}*4.9) + (0.5,-0.19)$) (t\alph{talentx}\alph{talenty}) {\footnotesize \texttn{\uppercase{#1}}}; } \newenvironment{talenttree}[5]{% \setcounter{talentx}{0} \setcounter{talenty}{1} \def\specialization{#1} \center \def\bookandpage{#3} \tabular{p{0.75\textwidth} p{0.15\textwidth}} \texttn{\Huge{}\career{}:} \textltn{\Huge{}\specialization} & \multirow{4}{*}[0.7cm]{% \begin{tikzpicture} \drawforce \definecolor{talentcolor}{HTML}{000000} \node[ranked,minimum width = 3.33cm] at (-0.05, -1.34) {\footnotesize{}\texttn{RANKED TALENT}}; \node[talentname] at (0,-1.4) {\footnotesize{}\texttn{RANKED TALENT}}; \definecolor{talentcolor}{HTML}{5f1111} \node[talentname] at (0,-0.7) {\footnotesize{}\texttn{ACTIVE}}; \definecolor{talentcolor}{HTML}{1e115f} \node[talentname] at (0,0) {\footnotesize{}\texttn{PASSIVE}}; \end{tikzpicture} }\\ \ifthenelse{\equal{\careerskills}{}}{ \ifthenelse{\equal{#4}{}}{}{% \texttn{\footnotesize{}Gain Force Rating #4} \\ } }{ \texttn{\footnotesize{}Career Skills:} \textltn{\footnotesize{}\careerskills}\\ } \ifthenelse{\equal{#2}{}}{}{ \texttn{\footnotesize{}Additional Carreer Skills:} \textltn{\footnotesize{}#2}\\ } \ifthenelse{\equal{#5}{}}{}{% \texttn{\footnotesize{}Prerequisite: Force Rating #5} \\ } \endtabular\\ \vspace*{20pt} \ifthenelse{\equal{\careerskills}{}}{ \vspace{5pt} \ifthenelse{\equal{#4}{}}{ \vspace{10pt} }{} }{} \tikzpicture }{% \endtikzpicture \fancyfoot[C]{\raisebox{18pt}{\bookandpage}} \endcenter \newpage } \newcommand{\talentlines}[2]{ \StrDel{#1}{ }[\tmpvert] \StrDel{\tmpvert}{/}[\tmpvert] \setcounter{tmpx}{0} \setcounter{tmpy}{1} \setcounter{tmpyp}{2} \forloop{tmpchar}{1}{\value{tmpchar} < 17}{ \addtocounter{tmpx}{1}% \ifthenelse{\equal{\arabic{tmpx}}{5}}{% \addtocounter{tmpyp}{1}% \addtocounter{tmpy}{1}% \setcounter{tmpx}{1}% }{} \StrChar{\tmpvert}{\value{tmpchar}}[\tmpchar] \ifthenelse{\equal{\tmpchar}{|}}{ \talentline{\alph{tmpx}\alph{tmpy}}{\alph{tmpx}\alph{tmpyp}} }{} } \StrDel{#2}{ }[\tmphor] \StrDel{\tmphor}{/}[\tmphor] \setcounter{tmpx}{0} \setcounter{tmpxp}{1} \setcounter{tmpy}{2} \forloop{tmpchar}{1}{\value{tmpchar} < 13}{ \addtocounter{tmpx}{1}% \addtocounter{tmpxp}{1}% \ifthenelse{\equal{\arabic{tmpx}}{4}}{% \addtocounter{tmpy}{1}% \setcounter{tmpx}{1}% \setcounter{tmpxp}{2}% }{} \StrChar{\tmphor}{\value{tmpchar}}[\tmpchar] \ifthenelse{\equal{\tmpchar}{-}}{ \talentline{\alph{tmpx}\alph{tmpy}}{\alph{tmpxp}\alph{tmpy}} }{} } } \newcommand{\upgradeplaceholder}{% \addtocounter{upgradex}{1}% \ifthenelse{\equal{\arabic{upgradex}}{5}}{% \addtocounter{upgradey}{1}% \setcounter{upgradex}{1}% }{} \node[text=white,text width = 2.6cm] at ($(\arabic{upgradex}*4.5,-\arabic{upgradey}*3.8) + (0.5,-0.15)$) (tmp\alph{upgradex}\alph{upgradey}) {\footnotesize \texttn{\uppercase{ }}}; \getnodedimen{tmp\alph{upgradex}\alph{upgradey}} \node[talent,color=white] at (\arabic{upgradex}*4.5,-\arabic{upgradey}*3.8) (\alph{upgradex}\alph{upgradey}) { \settowidth{\textlength}{\footnotesize \texttn{{\uppercase{ }}}}% \tabular{p{3cm}} \rule{0pt}{13pt}\\ \endtabular }; } \newcommand{\swupgrade}[4]{% \forloop{x}{0}{\value{x} < #3}{% \upgradeplaceholder{}% }% \setlength{\tmpwidth}{(4.5cm * #3)-1.05cm} \node[text=white,text width = \tmpwidth] at ($(\arabic{bupgradex}*4.5,-\arabic{bupgradey}*3.8) + (0.5,-0.15)$) (tmpup\alph{bupgradex}\alph{bupgradey}) {\footnotesize \texttn{\uppercase{#1}}}; \getnodedimen{tmpup\alph{bupgradex}\alph{bupgradey}} \node[talent, text width = \tmpwidth, draw=talentcolor] at (\arabic{bupgradex}*4.5,-\arabic{bupgradey}*3.8) (big\alph{bupgradex}\alph{bupgradey}) { \settowidth{\textlength}{\footnotesize \texttn{{\uppercase{#1}}}}% \tabular{p{\tmpwidth{} - 0.5cm}} \rule{0pt}{13pt}\\ \ifdim\nodeheight > 15pt \rule{0pt}{8pt} \\ \fi \ifdim\nodeheight > 30pt \rule{0pt}{8pt} \\ \fi \scriptsize{} #2 \\ \endtabular }; \setlength{\namewidth}{\tmpwidth - 0.6cm} \node[talentname, text width = \namewidth] at ($(\arabic{bupgradex}*4.5,-\arabic{bupgradey}*3.8) + (0.13,-0.14)$) {% \small \hspace*{-6pt} \checkbox % \settowidth{\textlength}{\footnotesize \texttn{{\uppercase{#1}}}}% \ifdim\nodeheight > 15pt \\ \phantom{t} \fi \ifdim\nodeheight > 30pt \\ \phantom{t} \fi }; \node[text=white,text width = \namewidth] at ($(\arabic{bupgradex}*4.5,-\arabic{bupgradey}*3.8) + (0.5,-0.19)$) (t\alph{bupgradex}\alph{bupgradey}) {\footnotesize \texttn{\uppercase{#1}}}; \node[upgradecost] (c\alph{bupgradex}\alph{bupgradey}) {\tiny\texttn{COST #4}}; \addtocounter{bupgradex}{#3}% \ifthenelse{\equal{\arabic{bupgradex}}{5}}{% \addtocounter{bupgradey}{1}% \setcounter{bupgradex}{1}% }{} } \newcommand{\upgradelines}[2]{ \begin{scope}[on background layer] \StrDel{#1}{ }[\tmpvert] \StrDel{\tmpvert}{/}[\tmpvert] \setcounter{tmpx}{0} \setcounter{tmpy}{1} \setcounter{tmpyp}{2} \forloop{tmpchar}{1}{\value{tmpchar} < 17}{ \addtocounter{tmpx}{1}% \ifthenelse{\equal{\arabic{tmpx}}{5}}{% \addtocounter{tmpyp}{1}% \addtocounter{tmpy}{1}% \setcounter{tmpx}{1}% }{} \StrChar{\tmpvert}{\value{tmpchar}}[\tmpchar] \ifthenelse{\equal{\tmpchar}{|}}{ \upgradeline{\alph{tmpx}\alph{tmpy}}{\alph{tmpx}\alph{tmpyp}} }{} } \StrDel{#2}{ }[\tmphor] \StrDel{\tmphor}{/}[\tmphor] \setcounter{tmpx}{0} \setcounter{tmpxp}{1} \setcounter{tmpy}{2} \forloop{tmpchar}{1}{\value{tmpchar} < 13}{ \addtocounter{tmpx}{1}% \addtocounter{tmpxp}{1}% \ifthenelse{\equal{\arabic{tmpx}}{4}}{% \addtocounter{tmpy}{1}% \setcounter{tmpx}{1}% \setcounter{tmpxp}{2}% }{} \StrChar{\tmphor}{\value{tmpchar}}[\tmpchar] \ifthenelse{\equal{\tmpchar}{-}}{ \upgradeline{\alph{tmpx}\alph{tmpy}}{\alph{tmpxp}\alph{tmpy}} }{} } \end{scope} } \newenvironment{forcepower}[3]{% \setcounter{upgradex}{0} \setcounter{upgradey}{1} \setcounter{bupgradex}{1} \setcounter{bupgradey}{1} \definecolor{talentcolor}{HTML}{215e26} \def\powername{#1} \center \def\bookandpage{#3} \tabular{p{0.75\textwidth} p{0.15\textwidth}} \texttn{\Huge{}Force Power:} \textltn{\Huge{}\powername} & \multirow{4}{*}[0.7cm]{% \begin{tikzpicture} \node[talentname] at (0,0) {\footnotesize{}\texttn{FORCE ABILITY}}; \end{tikzpicture} }\\ \texttn{\footnotesize{}Prerequisite: Force Rating #2+} \\ \endtabular\\ \vspace*{20pt} \vspace{5pt} \vspace{10pt} \tikzpicture }{% \endtikzpicture \fancyfoot[C]{\raisebox{18pt}{\bookandpage}} \endcenter \newpage } \newcommand\charPart[2]{\noindent \begin{tikzpicture} \node[shape=chamfered rectangle, draw, inner sep=0.7mm, fill=tablecolor3,minimum height=3mm, minimum width=18mm, thick](top){}; \node[below=0.5mm of top, shape=chamfered rectangle, draw, inner sep=0.7mm, fill=tablecolor3,minimum height=3mm, minimum width=18mm, thick](second){}; \node[below=0.5mm of second, shape=chamfered rectangle, draw, inner sep=0.7mm, fill=tablecolor3,minimum height=3mm, minimum width=18mm, thick](third){}; \node[below=0.5mm of third, shape=chamfered rectangle, draw, inner sep=0.7mm, fill=tablecolor3,minimum height=6mm, minimum width=18mm, thick]{}; \node[below=-2mm of top,shape=circle, thick, draw,double, fill=white](number){\huge\tn #2}; \node[below=1.5mm of number, shape=chamfered rectangle, draw, fill=charred, inner sep=0pt, outer sep=0pt, minimum height=4mm, minimum width=16mm, thick, font=\tn\color{white}]{\tiny\uppercase{#1}}; \end{tikzpicture} } \newcommand\Characteristics[6]{ \noindent \begin{center} \charPart{BRAWN}{#1}\charPart{AGILITY}{#2}\charPart{INTELLECT}{#3}\\\vspace{3pt}\charPart{CUNNING}{#4}\charPart{WILLPOWER}{#5}\charPart{PRESENCE}{#6}% \end{center} \hfill\null} \newcommand\Derived[2]{\noindent \begin{tikzpicture} \node[chamfered rectangle, draw, thick, inner sep=0mm, chamfered rectangle corners={north west, north east, south west, south east}] (named) { \tikz\node[label={[chamfered rectangle, draw, thick, fill=charblue, inner sep=0mm, chamfered rectangle corners={north west, north east, south west, south east}, font=\tiny\tn\color{white}, minimum height=4mm, minimum width=17mm]above: \uppercase{#1}}] (inner) {\large\tn #2}; }; \end{tikzpicture} } \newcommand\DerivedSplit[3]{\noindent \begin{tikzpicture} \draw[ultra thick] (0.88,-0.2) -- (0.88,-1.11); \node[chamfered rectangle, draw, thick, inner sep=0mm, chamfered rectangle corners={north west, north east, south west, south east}] (named) { \tikz\node[label={[chamfered rectangle, draw, thick, fill=charblue, inner sep=0mm, chamfered rectangle corners={north west, north east, south west, south east}, font=\tiny\tn\color{white}, minimum height=4mm, minimum width=17mm]above:\uppercase{#1}}] (inner) {\large\tn #2\hspace{18pt}#3}; }; \end{tikzpicture} }