\ProvidesPackage{abilities}

\RequirePackage{extractable}
\RequirePackage[double,.25cm]{cards}

\newcommand\transfer{Non-Transferable}
\newcommand\abiltext{Ability Card}
\newcommand\efftext{Ability Effect}

\newdimen\abil@width
\newdimen\abil@height

% We use an \fbox for each side to get margins (but no frame --- the
% cards style will automatically frame it), within which is a
% \vbox to stack things vertically.  The vbox is height \abil@height 
% and width \abil@width and is separated from the invisible frame on all 
% sides by a margin (\fboxsep).
%
\fboxrule=0pt           % invisible frame (cards.sty will make visible one)
\fboxsep=.25in          % margin between text and frame
\abil@width=3.0in       % total width this  + twice \fboxsep
\abil@height=2.5in      % total height this + twice \fboxsep

% center all text
\centering

% On the front, we have the first the charname (\me{}) and ``Ability Card.''
% Then after ``an appropriate amount of vertical space'' (\vfil) we
% have argument #1, the ability title, followed by vertical space.
% Then we have arg #2, the ability text, followed by double the space,
% and finally the gamename and ``Non-Transferable.''

% The back has ``Ability Effect'' at the top, gamename and ``Non-Transferable''
% at the bottom, and the visible ability effect (arg #3) boxed between.

\newdef\ability[3]{\makecard
  {\fbox{%
     \vbox to \abil@height{\hsize=\abil@width
       \me{}\hfill \abiltext \break \vfil
       #1\break \vfil
       #2\break \vfil \vfil
       \gamename \hfill \transfer
     }%
  }}%
  {\fbox{%
     \vbox to \abil@height{\hsize=\abil@width
       \efftext \break \vfil
       % now frame the effect
       \fboxsep=.1in \fboxrule=.5pt
       \framebox[\hsize]{%
         \vbox{%
           \advance\hsize by -2\fboxsep\relax
           \advance\hsize by -2\fboxrule\relax
           #3\relax
         }%
       }%
       \break \vfil
       \gamename \hfill \transfer
     }%
  }}%
}%

\input Lists/abilities.tex
