#!/afs/athena/contrib/perl/perl

require "ctime.pl";

($cname,$pname) = ("Jonathan the centaur","bert");

($base_str,$base_dex,$base_con,$base_body,$base_int,$base_ego,
 $base_pre,$base_com) = (10) x 8;

($p_str,$p_dex,$p_con,$p_body,$p_int,$p_ego,$p_pre,$p_com) =
    ("1","3","2","2","1","2","1","1/2");

($hsize,$vsize,$hmarg,$vmarg,$hspc,$vspc) = (7.5*72,10*72,.5*72,.5*72,5,2);
($col,$namebeg,$charbeg,$defbeg,$basebeg,$costbeg,$maxbeg,$ptsbeg) = 
    ($hsize/3,40,30,50,85,115,145,165);

&header("$cname (Midsummer Knights -- modified HERO system)");
&frame;
&names;
&stats;
&trailer;

sub header {			# (title)
    print "%!PS-Adobe-2.0\n%%Creator: $0\n%%Title: @_[0]\n";
    print "%%CreationDate: ",&ctime($),"\n";
    print "/setup {$hmarg $vmarg translate} def\n";
    print "/col $col def\n";
    print <<"END_DEFS";
/flw {1 setlinewidth} bind def
/zlw {.3 setlinewidth} bind def
/setXY {/gY exch def /gX exch def} bind def
/setM  {/gM exch def} bind def
/movrXY {gX add gY moveto} def
/movMXY {gM movrXY} def
/linefill {gX add gY moveto gX add gY lineto} def
/pal8 /Palatino-Roman findfont 8 scalefont def
/palb8 /Palatino-Bold findfont 8 scalefont def
/sf {setfont} bind def
/cshow {dup stringwidth pop -.5 mul 0 rmoveto show} bind def
/feed {gY exch sub /gY exch def} def
/nl8 {/gY gY 8 sub def} def
/divider {gX gY 6 sub moveto col 0 rlineto stroke 16 feed} def

%%EndProlog
%%Page: 1 1

END_DEFS
}

sub trailer {			# ()
    print <<"END_END_END";

%%Trailer:
showpage
END_END_END
}

sub frame {			# ()
    print "setup 2 setlinewidth\n% frame\n";
    print "0 0 moveto $hsize 0 lineto\n";
    print "$hsize $vsize lineto 0 $vsize lineto closepath stroke flw\n";
    print "$col 0 moveto $col $vsize lineto\n";
    print 2*$col," 0 moveto ",2*$col," $vsize lineto stroke\n";
    print "$hspc setM 0 ",$vsize-$vspc," setXY\n\n";
}

sub names {			# ()
    print "% names\nzlw pal8 sf nl8 movMXY (Name:) show\n";
    if ($cname) {print "$namebeg movrXY ($cname) palb8 sf show pal8 sf\n";}
    else        {print "$namebeg $col gM sub linefill stroke\n";}
    print "nl8 movMXY (Player:) show\n";
    if ($pname) {print "$namebeg movrXY ($pname) palb8 sf show pal8 sf\n";}
    else        {print "$namebeg $col gM sub linefill stroke\n";}
    print "flw divider\n\n";
}

sub stats {			# ()
    print "% stats\nzlw movMXY (Val) show\n";
    print "$charbeg movrXY (Char) show\n";
    print "$basebeg movrXY (Base) cshow\n";
    print "$costbeg movrXY (Cost) cshow\n";
    print "$maxbeg movrXY (Max) cshow\n";
    print "$ptsbeg movrXY (Pts) cshow\n";
    print "2 feed gM $col gM sub linefill stroke nl8\n";
    print "$charbeg movrXY (STR) show\n";    
    print "$basebeg movrXY ($base_str) cshow\n";
    print "$costbeg movrXY (x$p_str) cshow\n";
}
