diff -ru v1.5c/Charsheets/template.tex v1.5d/Charsheets/template.tex --- v1.5c/Charsheets/template.tex Mon Jan 10 02:23:26 2000 +++ v1.5d/Charsheets/template.tex Mon Aug 13 09:43:47 2001 @@ -198,7 +198,7 @@ % here and print them from Central/misc-money.tex to put in the packet by hand. % % If your game isn't using cash, you'll want to just delete this whole -% section (and the Czar should delete the bin/game.config line for it). +% section (and the Czar should delete the bin/packets.config line for it). % \begin{extractable}{Money} \extract{ \cash{100} } diff -ru v1.5c/LaTeX/Central/rules.tex v1.5d/LaTeX/Central/rules.tex --- v1.5c/LaTeX/Central/rules.tex Tue Jan 4 20:46:23 2000 +++ v1.5d/LaTeX/Central/rules.tex Mon Aug 13 01:46:41 2001 @@ -1,6 +1,5 @@ \documentclass{game} -\usepackage{sheets} - +\usepackage[inlineheaders]{sheets} \renewcommand\sheetname{Rules} \begin{document} @@ -8,23 +7,31 @@ \name{\Huge Rules for \gamename} \begin{center} -Written and GMed by {\bf LIST OF GMS} \\ +Written and GMed by \textbf{LIST OF GMS} \\ \copyright MIT Assassins' Guild and above GM team \end{center} % Delete this section! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\vspace{1cm} {\em - -This rules template assumes you're using the Standard Rules. -If you're not, well then, blow away everything from here down, of course. +\vspace{1cm} +\begin{em} -It's not difficult to write rules based on the SR from scratch, but -this template provides a convenient checklist. +\textbf{This rules template assumes you're using the Standard Rules. +If you're not, well then, blow away everything from here down.} +\vskip\baselineskip + +This is a template for game-specific rules sets based on +the Standard Rules. It's easy enough to write such rules without +it, but it can at least serve as a convenient checklist, so you +probably want to at least glance through it. + +In some areas it also includes FAQs, i.e.~things that players will +probably ask about if your rules about that area don't cover them; +consider saving time and sanity by including the information here. -Since there's very little that {\bf has} to be in a game-specific rules -set, almost everything is in the {\bf comments} of this file. GMs can +Since there's very little that \textbf{has} to be in a game-specific rules +set, almost everything is in the \textbf{comments} of this file. GMs can go through those and turn them into actual appropriate material where necessarily. Usually you'll be able to just erase most comment sections without putting in any material. @@ -34,13 +41,136 @@ to delete this section\ldots.) If you want to be able to provide a latex'able rules.tex to the players, -you'll have to not use Template features at all, of course. If you do -want to use the Standard Rules, see {\tt /mit/jemorris/Rules} for -a vanilla-latex rules template. +you'll have to not use Template features at all, of course. +See \verb$~jemorris/Rules/$ for a vanilla-latex template for SR-based rules. -} \vspace{1cm} +\vspace{1cm} +\end{em} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Delete the above section! + + +\textbf{\gamename} uses the Standard Rules. If you are not familiar with +Guild standard rules, please \emph{read that.} (They're available +at \texttt{http://web.mit.edu/jemorris/Rules} and +in \texttt{/mit/jemorris/Rules}.) Experienced SR users, see the ``Edition +History'' appendix. + +% Settle which combat system is used: +You need not read all of the Combat Systems appendix; we use only the +\emph{[MA/MD/HP; Starlight; Rock, Paper, Scissors; Phi; Cinematic]} system. +[Or ``you don't need the Combat Systems appendix, we use our own system.''] + +This document covers only material that augments or overrides the +Standard Rules. In particular, note \emph{[identify which sections +that are overridden---quite possibly none at all, in which case you +could change this paragraph to: This document covers only material that +augments the Standard Rules (we override nothing).]} + +%% You may not need to put anything for this section at all, since typical +%% things like badges or money only need mention if yours are special or +%% have mechanics, and atypical things like combat cards only need mention +%% if you're actually using them. +% +% Stuff you should have in your packet... +% Badges tell you... [if you have age or anything publically encoded] +% Money is... [if you have a physrep that's not bills or otherwise obvious] +% +%% Note that if you don't say anything, by default guns are just like +%% everything else --- ie you need an item card, but not a sticker. +% +% Guns require [item cards / stickers / both item cards and stickers / +% neither item cards nor stickers, any physrep is a gun] + +%% You only need to put something here for a long game if you have +%% mysterious tunnel systems and so on. Short games always need this. +% +%% Long game: +% [Locations] are not normal game locations; you can't go there unless +% specifically directed to, as per the SR. +% +%% Short game: +% Game takes place in [areas]; you can't go elsewhere unless specifically +% directed to. Note that you are expected to be in game areas at all times +% during the game. + +%% You probably want to include this section (you probably have no Dead Time). +% +% Game starts at 6pm Friday and ends at noon next Sunday; wrapup is at 2pm. +% There will be a Game Break from Tues 6am until Weds 6pm. +% GMs will be available from [time] to [time] every day; outside those +% hours is Dead Time. + +%% What you need to include here depends on the combat system. +% +% Typical [stats] are... --- MA/MD/HP, RPS, Phi +% Typical Hits and Blocks on a card are... --- Cinematic +% Weapon/armor effects are... --- MA/MD/HP, RPS +% Known weapon-like Phis are... --- Phi +% You heal at... --- MA/MD/HP, RPS, Cinematic +% (and at what time? noon? when you sleep? what if you pull all-nighters?) +% +% Cinematic/RPS/Phi allow coordination by default; include overrides here. + +%% You may or may not need to say anything here. +%% Guns have default effects from the SR if you don't say anything about them. +% +% Disc guns represent... [and do... if not the default] +% Dart guns represent... [and do... if not the default] +% Other attack forms... [throwing knives (probably ping-pong balls)] +% [weird attacks (probably foam pellets); if you have these, say what it is +% that characters see (maybe nothing) when players see someone holding a +% pellet (or whatever) ready, e.g. ``hand charged with mystic power''] + + +%% If ingame explosives exist, you want to say what's known about them; +%% if they don't, you might want to state their non-existence. +%% FAQs: Can anyone arm them, or does it take skill? Ditto for disarming? +%% Can you read the timer to see how long is left? Can you move an armed +%% bomb without setting it off? +%% Important: What effects do they have? You might not be able to answer +%% that publically, but it's always nicer if you can so that explosions +%% don't always require a GM. If your explosives always have item cards +%% with the effects printed on them, you might want to just say that. +% +% Explosives.... + +%% You need administrative information either here or in your Scenario. +% +% The Control Room is.... The Common Room is.... +% [Also where the Queue Room is if you have that separate (uncommon nowadays).] +% The Box is in.... +% +% Mail for the GMs should be sent to \texttt{[game]-gms@mit.edu}. +% GMs can be found online by zephyring -c ...; please don't subscribe there +% yourself, we'll answer you on personals. +% [GM cellphones/pagers and when it's ok to use them, if there are some +% and that information isn't on the playerlist.] + +%% You need something here if you have headbands besides white. +% +% [color] headbands mean [...] [etc] + +%% You only need something here if you want something other than the defaults. +% +% Phones... +% Athena... [zephyr, email, other] + +%% You only need something here if you have other public mechanics. E.g., +% +% One of your stats is psionic power... +% +% If you watch someone from within ZoC for five minutes, you may +% ask to see their Appearance A card... +% +% A door is locked if... +% +% The jail is at... Only [] can put people in... Only [] can get people out... +% You can/can't [talk to / attack / ...] people there by.... + + +\end{document} + diff -ru v1.5c/LaTeX/Lists/characters.tex v1.5d/LaTeX/Lists/characters.tex --- v1.5c/LaTeX/Lists/characters.tex Thu Nov 18 17:54:38 1999 +++ v1.5d/LaTeX/Lists/characters.tex Mon Aug 13 04:18:45 2001 @@ -5,7 +5,7 @@ %% {last; first; middle; prefix; suffix} % name %% {number; desc; ghost} % for badges %% {clump; position} % playerlist (see playerlist.tex) -%% {hp; ma; md; mdelta} % stats +%% {ma; md; hp; mdelta} % stats %% } % This associates all that information with the \Ccontrol_sequence. % Remember that your macro name (Ccontrol_sequence) must be letters only. @@ -33,7 +33,7 @@ % will be reverse-video, for GMs and Observers. And omit as many things % from the tail of the stats arguments as you want, and those % columns will be left blank (or with default). -% E.g. {hp; ma; md} (gets the default mdelta). +% E.g. {ma; md; hp} (gets default mdelta) or {ma; md} (default hp and mdelta). % Defaults: (Czar, document here what defaults you have in custom.sty) % diff -ru v1.5c/LaTeX/Styles/abilities.sty v1.5d/LaTeX/Styles/abilities.sty --- v1.5c/LaTeX/Styles/abilities.sty Tue Dec 21 02:59:36 1999 +++ v1.5d/LaTeX/Styles/abilities.sty Wed Aug 15 01:40:21 2001 @@ -46,7 +46,14 @@ \vbox to \abil@height{\hsize=\abil@width \efftext \break \vfil % now frame the effect - \fboxsep=.1in \framebox[\hsize]{\vbox{\advance\hsize by-2\fboxsep #3}}% + \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 }% diff -ru v1.5c/LaTeX/Styles/badges.sty v1.5d/LaTeX/Styles/badges.sty --- v1.5c/LaTeX/Styles/badges.sty Sun Jan 2 04:23:07 2000 +++ v1.5d/LaTeX/Styles/badges.sty Sun Aug 19 16:55:01 2001 @@ -29,48 +29,53 @@ \parindent 0pt % don't indent paragraphs \centering % keep everything centered -\baselineskip 0pt \lineskip 0pt % ignore min spacing as necessary +\lineskip 0pt \lineskiplimit 10in % no interline glue ever % For what we do here it actually seems to be easier / more straightforward % to toss in some color-frobbing postscript than to use the color package cmds. -\def\@ps#1{\special{ps:#1}} +% (Plus this way we can stick to level one postscript and maybe have the +% Guild printers be happier with it.) % -\def\rvstart{% % Reverse Video Start - \@ps{gsave 0.3 setgray}\vrule height\badgeheight width\hsize \@ps{grestore}% - \vskip-\badgeheight \smallskip \@ps{gsave 1 setgray}% +\newcommand\ps@gray[2]{\special{ps: gsave #1 setgray}#2\special{ps: grestore}} +\newcommand\graybox[3]{% + \leavevmode + \setbox\z@=\hbox{\ps@gray{#1}{#3}}% + \ps@gray{#2}{\rlap{\vrule\@height\ht\z@\@depth\dp\z@\@width\wd\z@}}% + \box\z@\relax } -\def\rvend{\@ps{grestore}} % Reverse Video End - -\newif\ifghostly +% ghosts/GMs/etc (and Not Here) are reverse video, white on very-dark-grey +\newcommand\@ReverseVideoBox{\graybox{1}{.333}} % third arg will follow % when \name is called, we'll make a badge for \me \renewcommand\doname{% - \testinfo\me{ghost}\ifinfo \ghostlytrue \else \ghostlyfalse \fi - % + \testinfo\me{ghost}% + \ifinfo\let\@FaceSide\@ReverseVideoBox \else\let\@FaceSide\hbox \fi % cards.sty will frame the badge for us \makecard{% - \vbox to 2\badgeheight{\hsize=\badgewidth % 2 sides high, one side wide - \vbox to \badgeheight{% % id side - \ifghostly\rvstart\fi - \smallskip - \head@line \break\vfil - {\Huge \me{char}}\break\vfil % character name - {\huge \me{player}}\break\vfil % player name - {\LARGE \me{number}}\break\vfil % number - {\LARGE \me{desc}}\break\vfil % description - \gamename\break\vfil - \ifghostly\rvend\fi - }% - \rotatebox[origin=c]{180}{% % Not Here side is upside-down - \vbox to \badgeheight{% - \rvstart % and is always reverse video + \vbox{\hsize=\badgewidth + \@ReverseVideoBox{% + \rotatebox[origin=c]{180}{% + \vbox to \badgeheight{% + \smallskip + \head@line\break\vfil + \hbox{\reallybig I'M NOT HERE}\break\vfil + \gamename\break\smallskip + }% end \vbox to \badgeheight + }% end \rotatebox + }% end \@ReverseVideoBox + \break + \@FaceSide{% + \vbox to \badgeheight{% + \smallskip \head@line \break\vfil - \hbox{\reallybig I'M NOT HERE}\break\vfil + {\Huge \me{char}}\break\vfil % character name + {\huge \me{player}}\break\vfil % player name + {\LARGE \me{number}}\break\vfil % number + {\LARGE \me{desc}}\break\vfil % description \gamename\break\smallskip - \rvend % done with reverse video - }% - }% - }% - }% -} + }% end \vbox to \badgeheight + }% end \@FaceSide + }% end \vbox + }% end \makecard +}% end \renewcommand\doname diff -ru v1.5c/LaTeX/Styles/cards.sty v1.5d/LaTeX/Styles/cards.sty --- v1.5c/LaTeX/Styles/cards.sty Sun Jan 2 04:23:07 2000 +++ v1.5d/LaTeX/Styles/cards.sty Sun Aug 19 17:55:15 2001 @@ -15,12 +15,20 @@ %% ``mirror'' (mirror-sided cards, same thing on each side) %% and can optionally include a dimension (specifying the margin %% to leave around each side of each card) or two dimensions -%% (to specify the horizontal and vertical margins separately); -%% margins will get the default specified below if omitted. -%% E.g. in a style file, -%% \RequirePackage[single]{cards} % single-sided, default margins -%% \RequirePackage[double,.5cm]{cards} % double-sided, .5cm all around -%% \RequirePackage[mirror,.5cm,1cm]{cards} % mirrors, .5cm horiz, 1cm vert +%% (to specify the horizontal and vertical margins separately). +%% +%% If invoked without dimensions, double- or mirror-sided cards will +%% use the \card@default@margin specified below, while single-sided +%% cards will default to zero margin. (Because printer alignment +%% isn't a concern with single-sided cards, so you usually want to +%% save scissors work via merger of neighboring cards' borders.) +%% +%% E.g. in a .sty file +%% \RequirePackage[double]{cards} % double-sided, default margins +%% \RequirePackage[single]{cards} % single-sided, no margins +%% \RequirePackage[mirror,0.5cm]{cards} % mirrors, .5cm all around +%% \RequirePackage[single,1ex,1em]{cards} % single-sided, 1ex horiz, 1em vert +%% %% In a .tex file you'd use \usepackage instead of \RequirePackage, of course. %% Commands provided: @@ -46,11 +54,12 @@ \setleftmargin{.3in} \setrightmargin{.3in} \topskip=0pt -\headsep=0pt \unitlength=1in % provide default for those using the picture environment -% default margins around each card if not set as a package option +% default margins around each card if not set as a package option; +% this value is for double- and mirror-sided cards, if single-sidedness +% is selected it will be reset to zero! % \newcommand\card@default@margin{.2cm} @@ -80,6 +89,8 @@ \special{header=simplex} % force single-sided printing \newcommand\makecard[1]{\make@card{#1}{}} \newcommand\card@skip@back{} + % no printer-alignment worries here, so save scissors work + \renewcommand\card@default@margin{0pt} } \DeclareOption{double}{ \special{header=duplex} % force double-sided printing @@ -111,6 +122,10 @@ % If either/both margins haven't been set, give them the default. \ifdim\horiz@margin<0pt\relax \horiz@margin=\card@default@margin \fi \ifdim\vert@margin<0pt\relax \vert@margin=\card@default@margin \fi +% Want extra margin at top in case there's headers; it can go away +% if they're single-sided, but *not* for zero-vert-margins on +% asymmetric double-sided since headers can interfere on *either* side. +\headsep=\card@default@margin @@ -129,13 +144,14 @@ \newbox\front@card \newbox\back@card -% current column of cards -\newbox\front@column \setbox\front@column=\vtop{} -\newbox\back@column \setbox\back@column=\vtop{} +% current column of cards; use \vtop 'cause it looks a bit nicer +% if they line up at the tops, with any empty spaces at the bottoms +\newbox\front@column \global\setbox\front@column=\vtop{} +\newbox\back@column \global\setbox\back@column=\vtop{} % current page of cards -\newbox\front@page \setbox\front@page=\hbox{} -\newbox\back@page \setbox\back@page=\hbox{} +\newbox\front@page \global\setbox\front@page=\hbox{} +\newbox\back@page \global\setbox\back@page=\hbox{} % for misc calculations \newdimen\card@ht @@ -177,27 +193,31 @@ % now put the margins in and frame it \rebox@card\front@card \rebox@card\back@card - - % it's bigger by the frame thickness on each side now - \advance\card@wd by 2\card@border - \advance\card@ht by 2\card@border + % framing may have altered the dimens (at least via the border) + \card@wd=\wd\front@card + \card@ht=\ht\front@card + \advance\card@ht by \dp\front@card % can we fit this in the current column? \card@tmp=\ht\front@column \advance\card@tmp by \dp\front@column \advance\card@tmp by \card@ht + \advance\card@tmp by \headsep % lost this space at the top + \advance\card@tmp by -\vert@margin % don't count bottommost glue \ifdim\card@tmp>\textheight \put@column \else \@keepcardtrue \fi \if@keepcard % \pageof will punt the card that would make the next page \card@tmp=\wd\front@column \ifdim\card@tmp<\card@wd \card@tmp=\card@wd \fi - \global\setbox\front@column=\vtop{\card@whitespace - \hbox to \card@tmp{\box\front@column\hfill}% - \hbox to \card@tmp{\box\front@card\hfill}% + \global\setbox\front@column=\vtop{\hsize=\card@tmp + \card@whitespace % no uncontrolled whitespace; + \unvbox\front@column % previous contents, + \hbox to \hsize{\box\front@card\hfill}% % plus front of new card }% - \global\setbox\back@column=\vtop{\card@whitespace - \hbox to \card@tmp{\hfill\box\back@column}% - \hbox to \card@tmp{\hfill\box\back@card}% + \global\setbox\back@column=\vtop{\hsize=\card@tmp + \card@whitespace % no uncontrolled whitespace; + \unvbox\back@column % previous contents, + \hbox to \hsize{\hfill\box\back@card}% % plus back of new card }% \fi } @@ -205,13 +225,13 @@ % put a frame around the card with the proper margins around that \newcommand\rebox@card[1]{% - \setbox#1=\hbox to \card@wd{\card@whitespace + \setbox#1=\hbox{\card@whitespace % no uncontrolled whitespace \hspace\horiz@margin % left margin - \vtop to \card@ht{% + \vbox{\hsize=\inner@wd \vspace\vert@margin % top margin - \framebox[\inner@wd]{% % center it in here - \hfill - \vtop to \inner@ht{\hsize=\inner@wd\vfill\box#1\vfill}% + \framebox[\hsize]{% % center it in here, both ways + \hfill + \vbox to \inner@ht{\vfill\box#1\vfill}% \hfill }% \vspace\vert@margin % bottom margin @@ -227,10 +247,12 @@ \advance\card@tmp by \wd\front@column \ifdim\card@tmp>\textwidth \put@page \else \@keepcardtrue \fi \if@keepcard - \global\setbox\front@page=\hbox{\card@whitespace - \box\front@page\box\front@column}% - \global\setbox\back@page=\hbox{\card@whitespace - \box\back@column\box\back@page}% + \global\setbox\front@page=\hbox{\card@whitespace % no uncontrolled space; + \unhbox\front@page % previous contents, + \box\front@column}% % plus front of newly finished column + \global\setbox\back@page=\hbox{\card@whitespace % no uncontrolled space; + \box\back@column % add back of newly finished column + \unhbox\back@page}% % to previous contents \fi \global\setbox\front@column=\vtop{}% \global\setbox\back@column=\vtop{}% @@ -241,10 +263,10 @@ \newcommand\put@page{% \ifdim\wd\front@page>0pt \hbox to \textwidth{\unhbox\front@page\hfill}% - \break + \vfil\pagebreak \ifx\card@skip@back\ThisMacroHadBetterNotBeDefined \hbox to \textwidth{\hfill\unhbox\back@page}% - \break + \vfil\pagebreak \fi \global\setbox\front@page=\hbox{}% \global\setbox\back@page=\hbox{}% @@ -262,7 +284,7 @@ % flush pending cards, then fill up the page with the given card \newdef\pageof[1]{% \newpage - #1% + #1\relax \loop \@keepcardfalse \putcard diff -ru v1.5c/LaTeX/Styles/charextracts.sty v1.5d/LaTeX/Styles/charextracts.sty --- v1.5c/LaTeX/Styles/charextracts.sty Sun Jan 9 03:49:18 2000 +++ v1.5d/LaTeX/Styles/charextracts.sty Thu Aug 9 06:44:50 2001 @@ -65,17 +65,17 @@ % When GMs do things in a charsheet that need to be passed along -% to extractables --- e.g. use \newpronoun or \newcommand or something +% to extractables---e.g. use \newpronoun or \newcommand or something % to create a \foobar that they stick in a memory packet, item, \name, -% whatever --- they're supposed to do it inside a \frobbies at the top -% of the charsheet, so that it can get passed along to the extractables +% whatever---they're supposed to do it inside one or more \frobbies at the +% top of the charsheet, so that it can get passed along to the extractables % so that the extracted .tex for the mempackets etc doesn't break on it. % Of course, they don't get passed to list-types, so GMs shouldn't % be *too* enthusiastic about simultaneously giving list-type macros args % and doing clever new-macro things in them. % \newcommand\frobbies@set{} -\newcommand\frobbies[1]{\add@to@macro\frobbies@set{#1}#1} +\newcommand\frobbies[1]{\add@to@macro\frobbies@set{#1^^J}#1} \@onlypreamble\frobbies @@ -336,12 +336,16 @@ \def\extract@secret{^^J\dosecretextracts^^J^^J}% initialize, will add to it \to@extract{\documentclass{game}}% \to@extract{#2^^J}% + % Repeat the charsheet's frobbies. Writing them out will double any #s, + % but we first write them out *inside* \newcommand\frobbies{...}, which + % neatly undoubles them, and then execute \frobbies to get them. + \to@extract{\newcommand\frobbies}% \begingroup - \to@extract{\note{Extracted Frobbies:}}% \tmp@str\expandafter{\frobbies@set}% - \immediate\write\extract@tex{\the\tmp@str^^J}% + \immediate\write\extract@tex{{^^J\the\tmp@str}}% \endgroup - \to@extract{\begin{document}^^J}% + \to@extract{\frobbies}% + \to@extract{^^J\begin{document}^^J}% \begingroup \tmp@str\expandafter{\me}% \immediate\write\extract@tex{\string\name{\the\tmp@str}^^J}% diff -ru v1.5c/LaTeX/Styles/custom.sty v1.5d/LaTeX/Styles/custom.sty --- v1.5c/LaTeX/Styles/custom.sty Fri Jan 14 16:15:30 2000 +++ v1.5d/LaTeX/Styles/custom.sty Wed Aug 15 03:51:36 2001 @@ -197,6 +197,7 @@ % on the result, such that it DTRT. You don't actually need to understand % any of that, but I thought I'd explain it since I use it there. You might % find it useful if you define similar conditional combos. +% See macro-glossary.html for \testinfo, \ifinfo, \testnonzero, \ifnonzero. % Assuming that you kept the ``gender'' entry that the default \useformat has, diff -ru v1.5c/LaTeX/Styles/extractable.sty v1.5d/LaTeX/Styles/extractable.sty --- v1.5c/LaTeX/Styles/extractable.sty Sun Jan 9 03:49:18 2000 +++ v1.5d/LaTeX/Styles/extractable.sty Mon Aug 13 06:40:57 2001 @@ -10,7 +10,9 @@ \RequirePackage{fullpage} \RequirePackage{fancyheadings} % -\pagestyle{fancy} +% Put off invoking the fancy headings until after the preamble is done +% with frobbing \textwidth, so that it knows how wide to make things. +\AtBeginDocument{\pagestyle{fancy}} \newdef\baselabel{\me{}}% \me defaults to saying ``Unowned'' until set by \name \lhead{\baselabel} \rhead{Page \thepage} diff -ru v1.5c/LaTeX/Styles/game.cls v1.5d/LaTeX/Styles/game.cls --- v1.5c/LaTeX/Styles/game.cls Thu Apr 6 02:24:21 2000 +++ v1.5d/LaTeX/Styles/game.cls Thu Aug 9 10:28:34 2001 @@ -32,8 +32,8 @@ \begingroup \catcode`$=13 \def$#1 {} \catcode`:=13 \def:#1 {hrs } - \xdef\cvs@date{2000/04/06 06:24:21 UTC} - \xdef\cvs@name{v1-5c } + \xdef\cvs@date{2001/08/09 14:28:34 UTC} + \xdef\cvs@name{v1-5d } \ifx\cvs@name\empty \gdef\cvs@name{dev} \fi \endgroup \ProvidesClass{game}[\cvs@date\space Assassins' Guild game template \cvs@name] @@ -453,13 +453,14 @@ \newdef\semicolon[0]{;} % \newdef [0] --> no args but requires braces \newif\if@semicolon +\def\LiteralSemicolon{;} \def\test@semicolon#1{\@semicolonfalse\dotest@semicolon#1\de@lim} \def\dotest@semicolon#1{ \def\@temp{#1} \ifx\@temp\de@lim \let\@NEXT\relax \else - \ifx\@temp\semicolon\@semicolontrue\fi + \ifx\@temp\LiteralSemicolon\@semicolontrue\fi \let\@NEXT\dotest@semicolon \fi \@NEXT diff -ru v1.5c/LaTeX/Styles/money.sty v1.5d/LaTeX/Styles/money.sty --- v1.5c/LaTeX/Styles/money.sty Thu Apr 6 02:24:22 2000 +++ v1.5d/LaTeX/Styles/money.sty Mon Aug 13 06:11:27 2001 @@ -41,21 +41,30 @@ \m@neyheight=1.1in % actual height is this plus twice \fboxsep \fboxsep=5pt % margin from frame \fboxrule=0pt % leave visible frame to cards.sty +\parindent=0pt + +\newbox\GameNameB@x \setbox\GameNameB@x=\hbox{\small\gamename} +\newbox\GameDateB@x \setbox\GameDateB@x=\hbox{\small\gamedate} +\newlength\Pic@Ht +\Pic@Ht=.95\m@neyheight +\advance\Pic@Ht by -\ht\GameNameB@x \advance\Pic@Ht by -\dp\GameNameB@x +\advance\Pic@Ht by -\ht\GameDateB@x \advance\Pic@Ht by -\dp\GameDateB@x +\newbox\PicB@x +\setbox\PicB@x=\hbox{\includegraphics[height=\Pic@Ht]{icon.eps}} \newbox\sidebox \newcommand\m@ney[2]{% \centering % center all text \setbox\sidebox=\vbox to \m@neyheight{\hsize=1in {\Huge#1}\break\vfil{\Large#2\break\ifnum#1=1\bill@one\else\bill@many\fi}}% + % *after* \sidebox is set with normal baseline spacing, kill line spacing: + \lineskiplimit=10in \lineskip=0pt \makecard{% \fbox{% \copy\sidebox - \hfill \vbox to \m@neyheight{\hsize=1.6in - \vfil\includegraphics[height=.85\m@neyheight]{icon.eps}\break - \gamename\break\vfil + \unhcopy\GameNameB@x \vfill \unhcopy\PicB@x \vfill \unhcopy\GameDateB@x }% - \hfill \copy\sidebox }% }% diff -ru v1.5c/LaTeX/Styles/sheets.sty v1.5d/LaTeX/Styles/sheets.sty --- v1.5c/LaTeX/Styles/sheets.sty Tue Jan 4 20:47:40 2000 +++ v1.5d/LaTeX/Styles/sheets.sty Mon Aug 13 11:56:04 2001 @@ -9,29 +9,60 @@ % Written/edited by David Oh, November 1, 1991. % Certain Parts Copyright (C) David Oh and the MIT Assassin's Guild 1991 % Modified for use in `One is not a Prime Number.' (1992) -% Modified again for use in 'Midnight in Moscow, Take 2'' (1994) +% Modified again for use in 'Midnight in Moscow, Take 2' (1994) % and some more by Jeremy Brown, Aug. 24 1994 % and for Moon Over Bourbon Street some more by Jeremy Brown, June, 1995 % and for Catastrophe some more by Jeremy Brown, Oct, 1996 % and for the Template (TM) by Jamie Morris, Spring 1998 and later +%%%%%%%%%%%%%%%%%%% +% Package options % +%%%%%%%%%%%%%%%%%%% +% +\newdimen\InlineHeaderIndent \InlineHeaderIndent=0pt +\DeclareOption{inlineheaders}{\InlineHeaderIndent=\parindent} +% +\ProcessOptions\relax + + +%%%%%%%%%%%%%%%%%% +% Other packages % +%%%%%%%%%%%%%%%%%% +% \RequirePackage{graphicx} % for including postscript graphics \RequirePackage{doublespace} % for setting default linespacing \setstretch{1.2} - -%%%%%%%%%%%%%%%%%%% -% Set up margins % -%%%%%%%%%%%%%%%%%%% - +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set up margins and headers % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \topmargin -0.5in \textheight +9.0in \oddsidemargin -.25in \evensidemargin \oddsidemargin \textwidth +7.0in - +% +\ifdim\InlineHeaderIndent=0pt + % leave section headers alone (non-inline) +\else + \font\HeaderFont=phvb % Helvetica-Bold + \newdimen\HeaderOutdent + \HeaderOutdent=\oddsidemargin\relax + \advance\HeaderOutdent by .667in\relax + \ifdim\HeaderOutdent>.5in\relax \HeaderOutdent=.5in\relax \fi + \newcommand\MakeInline[2]{ + \expandafter\renewcommand\csname#1\endcsname{ + \@startsection{#1}{#2} + {-\HeaderOutdent}{.5\baselineskip}{-\InlineHeaderIndent}{\HeaderFont} + } + } + \MakeInline{section}{1} + \MakeInline{subsection}{2} + \MakeInline{subsubsection}{3} +\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -117,4 +148,4 @@ %Mike's adds, edited \newdef\topquote[2]{% - \begin{quotation} \em #1 \par \leftskip=0pt plus1fill #2 \end{quotation}} + \begin{quotation} \em #1 \par \flushright #2 \end{quotation}} diff -ru v1.5c/bin/doc v1.5d/bin/doc --- v1.5c/bin/doc Thu Jan 13 00:37:59 2000 +++ v1.5d/bin/doc Mon Aug 13 10:56:34 2001 @@ -49,7 +49,7 @@ or &usage; GAME::chdir "html"; -my @html = sort grep { /\.html$/ and -r } GM::contents; +my @html = sort grep { /\.html$/ and -f } GM::contents; my $file; my $target = shift or die map { "\t$_\n" } map { /(.*)\.html$/ } @html; diff -ru v1.5c/bin/extractor v1.5d/bin/extractor --- v1.5c/bin/extractor Tue Jan 11 21:31:34 2000 +++ v1.5d/bin/extractor Mon Aug 13 14:50:13 2001 @@ -23,7 +23,7 @@ or gmX extractor *.tex In any case, note that the current version DOES NOT DEAL WITH SUITES; - it looks for *literal* occurrences of \extract, \mention, and \secret + it looks for *literal* occurrences of \\extract, \\mention, and \\secret in the charfile. Future versions may improve on this. EOI } diff -ru v1.5c/bin/gm v1.5d/bin/gm --- v1.5c/bin/gm Thu Jan 13 05:23:50 2000 +++ v1.5d/bin/gm Mon Aug 13 15:01:57 2001 @@ -70,13 +70,13 @@ # look like "Template v1-5 gm 1.8 last modified 1999/12/17". # The export will do -kv so that the dollar signs and keyword names # are stripped off, so use regexps that will work with and without them. - my $id = 'gm,v 1.45 2000/01/13 10:23:50 jemorris Exp'; + my $id = 'gm,v 1.45.2.3 2001/08/13 19:01:57 jemorris Exp'; my ($gmvers, $year, $mon, $mday, $hours, $min, $sec) = $id =~ m<\S+,v\s+(\d\S*)\s+(\d+)/(\d+)/(\d+)\s+(\d+):(\d+):(\d+)>; my ($d, $m, $y) = (localtime(timegm($sec, $min, $hours, $mday, $mon-1, $year-1900)))[3..5]; my $date = sprintf "%4d/%02d/%02d", $y+1900, $m+1, $d; - my $tag = 'v1-5c'; + my $tag = 'v1-5d'; $tag =~ s/\$\S*//g; $tag =~ s/\s//g; length $tag or $tag = "mainline"; @@ -354,18 +354,23 @@ my $bin = GM::path "bin"; chdir $bin or die "gm: unable to go into $bin to seek scripts\n"; +sub checkscript { + local $_ = shift; + -e or return "no such file"; + -f or return "not a plain file"; + -T or return "not a text file"; + -s or return "empty"; + # avoid having README and packets.config and so on look like options + # by testing for user executable bit; but not with -x, it'd DTWT in AFS. + (stat)[2] & 00100 or return "not executable"; + return undef; +} if ($script and -e $script) { - my @test = ("not a file" => -f $script, - "not a readable plain file" => -T $script && -r $script, - "not executable" => -x $script, - "empty" => -s $script, - ); - while (my $test = shift @test) { - shift @test or die "'$script' is $test\n"; - } + if (my $err = checkscript($script)) { die "$script: $err\n" } + # otherwise we'll use $script } else { - my @poss = grep { -f and -T and -r and -s and -x and -s and !/~$/ } <*>; + my @poss = grep { not /~$/ and not checkscript($_) } <*>; if ($script) { # specified but not found exactly; might be abbrev length $script > 2 or die "'$script' not in $bin (and abbrevs must be 3+ chars)\n"; @@ -600,18 +605,19 @@ # Now things that aren't normal Perl ops. -=head2 B (I..., I) +=head2 B (I..., I) -If safe, executes "C -oI>" +If safe, executes "C -oI>" where I has been split on whitespace. -Here I must be ingame and cannot involve !escapes. -If I is "C<-PI>" then "C<-o!lpr -PI>" is used instead. +Here I must be ingame. If a F<./config.ps> file is present, the operation aborts, as "E" lines there bypass C<-R> and are therefore unsafe. -If --unsafe is set, the C<-R> is not added, I may be arbitrary or -omitted, and F<./config.ps> may exist. +If --unsafe is set, the C<-R> is not added, I may be arbitrary, +and F<./config.ps> may exist. + +To print a .dvi, GM::dvips into postscript and GM::lpr the result. If C<-q> is in the dvips options list, dvips will be spawned with STDERR closed, as otherwise a dvips bug causes it to spew parts of header info. @@ -619,32 +625,20 @@ =cut $call{"dvips"} = sub { - my $out = pop; + my $out = pop or die "dvips destination file missing\n"; my @arg = map { split } @_; my $arg = join " ", @arg; + "$arg $out" =~ /\s-P/ and die "GM::dvips does not take -P; go through lpr\n"; unless ($opt{unsafe}) { unshift @arg, "-R"; - defined $out or die "dvips dest missing\n"; + $ingame->(0, $out); $out =~ /^!/ and die "illegal escape in dvips $arg -o $out\n"; - $arg =~ /\s-P/ and die "dvips -P must be in last arg: $arg\n"; -e "./config.ps" and die "dvips not safe; ./config.ps exists (@{[&$pwd]})\n"; } - if (defined $out) { - if ($out =~ /^-P(.*)/) { - my $printer = $1; - $printer !~ /[^\w-]/ or $opt{unsafe} - or die "'dvips -P$printer' has illegal printer name\n"; - $out = "!lpr -P$printer"; - } - elsif (not $opt{unsafe}) { - $ingame->(0, $out); - } - push @arg, "-o", $out; - } # -q is insufficient to get it to shut up 100%, so: $execopt{no_stderr} = grep { $_ eq "-q" } @arg; - $exec->("dvips", @arg); + $exec->("dvips", @arg, "-o", $out); }; =head2 B (I, I) @@ -739,7 +733,7 @@ } unless ($lpcprog) { $exec->("attach", "ops"); - $lpcprog = (-x "/mit/ops/bin/lpcng" ? "/mit/ops/bin/lpcng" : "lpc"); + $lpcprog = (-e "/mit/ops/bin/lpcng" ? "/mit/ops/bin/lpcng" : "lpc"); } return $exec->($lpcprog, $cmd, $printer); }; @@ -1028,7 +1022,7 @@ ########################################################################### # Ok, now do it. -chdir $ENV{PWD}; # back where we started +CORE::chdir $ENV{PWD}; # back where we started package main; # not stuck there, but good namespace to begin in require lib; # can't "use lib $bin" since $bin is runtime-determined import lib $bin; # puts $bin first in @INC diff -ru v1.5c/bin/packets v1.5d/bin/packets --- v1.5c/bin/packets Thu Jan 13 04:55:08 2000 +++ v1.5d/bin/packets Sat Aug 18 08:40:33 2001 @@ -56,7 +56,7 @@ and the single-character versions may be bundled (-abc). --help, -h print this usage message and exit --config=configfile use 'configfile' instead of bin/packets.config - --all-characters, -a do not specify [charfiles]; do all but template.tex + --all-characters, -a do not specify [charfiles]; do (almost) all present --extract, -e extract fields from charsheets --latex, -l latex tex-type extractables (must --extract first) --xdvi, -x preview results of --latex @@ -107,7 +107,7 @@ } else { # treat as character file $arg .= ".tex" unless $arg =~ /\.tex$/; - -r $arg or die "no such character file $arg in $characters_in\n"; + -f $arg or die "no such character file $arg in $characters_in\n"; $arg =~ s/\.tex$//; push @char, $arg; } @@ -120,7 +120,8 @@ if (exists $opt{"all-characters"}) { @char and die "may not give specific chars when using --all-characters\n"; - @char = sort map { s/\.tex$// && !/^template$/ ? ($_) : () } GM::contents; + @char = sort grep { !/^\./ && -f && s/\.tex$// && !/^template$/ + } GM::contents; } @char or die "no chars!\n"; @@ -134,15 +135,14 @@ # determine whether reading, writing, both, or neither should be -# ingame as opposed to /tmp -# -exists $opt{ingame} or $opt{ingame} = 0; -die "not how --ingame is used" if length $opt{ingame} > 1; -die "not valid --ingame arg" if $opt{ingame} =~ /[^rw0]/; -# -# "/" represents bin/gm-made tmp dir (usually in /tmp); "" is game dir -my $readfrom = ($opt{ingame} =~ /[w0]/) ? "/" : ""; -my $writeto = ($opt{ingame} =~ /[r0]/) ? "/" : ""; +# in game dir ("") instead of the usual tmp dir ("/") +my ($readfrom, $writeto) = qw( / / ); +if (exists $opt{ingame}) { + $opt{ingame} =~ /\A[rw]?\Z/ or die + "valid -i,--ingame args are --ingame --ingame=r --ingame=w -i -ir -iw\n"; + $opt{ingame} =~ /\Ar?\Z/ and $readfrom = ""; + $opt{ingame} =~ /\Aw?\Z/ and $writeto = ""; +} # # make sure the dirs we might need to write to exist for my $sub (qw( / Extracts DVI PS )) { @@ -216,11 +216,11 @@ print "\n"; GM::latex $file, "${char}'s $field"; } - else { - print "not present - presumed not in charsheet\n"; - # make zero-length dvi file as a placeholder - close GM::open ">$base.dvi"; - } + else { + print "not present - presumed not in charsheet\n"; + } + # if necessary, make zero-length dvi file as a placeholder + -e "$base.dvi" or close GM::open ">$base.dvi"; } } if ($readfrom ne $writeto) { @@ -529,31 +529,16 @@ } print "\n"; # check for potential printer problems - my $trouble; - do { - $trouble = 0; - for my $printer (keys %byprinter) { - my $bad = 0; - my $q = queue($printer); - if ($$q{status}) { - print "\t\t$printer status $$q{status}\n"; - $bad = 1; - } - if ($$q{jobs} > 10) { - print "\t\t$printer queue long: $$q{jobs} entries\n"; - $bad = 1; - } - unless ($bad) { - print "\t\t$printer ok\n"; - } - $trouble ||= $bad; - } - if ($trouble) { - print "\tHit return to recheck, 'c' to continue anyway, ctrl-c quits: "; - my $ans = ; - $trouble = $ans !~ /^\s*c\s*$/i; + for (my $recheck = 1; $recheck; $recheck = !~ /\A\s*y\s*\Z/i) { + for my $printer (sort keys %byprinter) { + my $filterstatus; + my $q = queue($printer, \$filterstatus); + my $busy = ($$q{jobs} > 10 ? "($$q{jobs} jobs already)" : ""); + print "\t\t$printer $$q{status} $busy\n"; + print "\t\t $filterstatus\n"; } - } while $trouble; + print "\tAre those ok? Hit 'y' to go on, 'n' to recheck, ctrl-c to quit: "; + } print "\tPrint: sending jobs to printers\n"; my $qmapfile = GM::path "Charsheets/Q-$ENV{USER}-$PID"; @@ -630,9 +615,10 @@ unless ($ip{$printer}) { ($host{$printer}) = (GM::lpc("printcap $printer") =~ /:lp=(.*)%/, "$printer-p"); - my $addr = gethostbyname $host{$printer}; - $ip{$printer} = join ".", unpack('C4', $addr); - unless ($addr) { + if (my $addr = gethostbyname $host{$printer}) { + $ip{$printer} = join ".", unpack('C4', $addr); + } + else { print "printer $printer not found; will abort\n"; return 1; } @@ -647,24 +633,21 @@ } sub queue { my $printer = shift; - - # the dotted number will get the printer's console-displayed status; - # see snmptranslate -n or -d on it - my ($status) = - (GM::snmpget("-v 1 $ip{$printer} public .1.3.6.1.4.1.11.2.4.3.1.2.0") - =~ /"(.*?)"/); - undef $status if $status =~ /^(ready to print|printing|idle)$/; - my @q = split "\n", GM::lpq("-P$printer"); + if (my $filter = shift) { ($$filter) = map { /(Filter_status: .*)/ } @q } my $x = ""; # shift off everything before jobs header line - $x = shift @q while $#q and not + $x = shift @q while @q and not ($x =~ /rank/i and $x =~ /owner/i and $x =~ /job/i and $x =~ /files/i); + + # topmost job is usually rank "active" but may be "1" momentarily first + my ($status) = split / /, (@q ? $q[0] : "active"); + $status = "" if $status =~ /^active/i or $status eq "1"; my @gmfiles = @queuemap{ map { /\b($PID-\d+.ps)\b/o } grep { /\b\Q$ENV{USER}\E\b/io } @q }; - return { "status" => $status, "jobs" => $#q, "gmfiles" => \@gmfiles }; + return { "status" => $status, "jobs" => scalar(@q), "gmfiles" => \@gmfiles }; } diff -ru v1.5c/bin/preliminary v1.5d/bin/preliminary --- v1.5c/bin/preliminary Tue Jan 11 21:31:37 2000 +++ v1.5d/bin/preliminary Mon Aug 13 11:37:02 2001 @@ -82,7 +82,8 @@ # redirects that too) and .dvi in that/DVI (ditto) my $compress = $extract{$field}{"compress"}; GAME::chdir $compress; - my @file = sort grep { -r and s/\.tex$// and not /^template$/ } GM::contents; + my @file = sort grep { !/^\./ and -f and s/\.tex$// and !/^template$/ + } GM::contents; if (@file) { print "\n"; GAME::chdir "$compress/DVI"; diff -ru v1.5c/html/cards.html v1.5d/html/cards.html --- v1.5c/html/cards.html Sat Jan 8 19:46:04 2000 +++ v1.5d/html/cards.html Mon Aug 13 09:20:56 2001 @@ -43,13 +43,16 @@ same stuff on each side and may optionally include margin dimensions. If you omit the latter, -the default margin space of .2cm will be left all around each card; if +some default margin space will be left around each card, unless they're +single-sided, in which case they'll be tightly packed. If you supply one dimension, it will be used instead; if you supply two dimensions, they will be used as the horizontal and vertical margins. -See existing styles. Use enough margin so that printer slop doesn't -make cards overlap each other; we don't recommend using less than the -default. (Athena printers have terrible front/back page -registration, different for each.)

+See existing styles. For non-single-sided cards remember that you need +front and back to align correctly on the printed page, and that Athena +printers may have poor front/back page registration, so use enough margin +that printer slop doesn't make cards overlap. We don't recommend using +less than the default. (For single-sided cards alignment isn't an issue, +which is why those default to tight packing.)

  • Define a macro in mycard.sty which:
      diff -ru v1.5c/html/dotfiles.html v1.5d/html/dotfiles.html --- v1.5c/html/dotfiles.html Wed Jan 12 03:45:48 2000 +++ v1.5d/html/dotfiles.html Thu Aug 9 05:25:36 2001 @@ -43,8 +43,6 @@ (Each alias should be on a single line; to have it on multiple lines in your dotfile, you could backslash each internal newline.)
      -alias dvips '\dvips -R'
      -
       alias dogame 'setenv TEXINPUTS .:$GAME/LaTeX//: ;
                     setenv DVIPSHEADERS $GAME/LaTeX/Postscript: ;
                     cd $GAME' 
      @@ -100,11 +98,6 @@
       get the ones in newtex.  Either way you'll get latex2e, but with newtex
       all sorts of spiffy latex packagest that aren't in the default athena 
       places are automatically available. 

      - -

      Permanently giving dvips the -R option causes it to run securely; -otherwise .dvi files can make it execute arbitrary shell commands. -(Xdvi runs securely by default; it's inconsistent and annoying that -dvips doesn't.)

      The sample aliases have a GM working on both Buffy (which put its Template tree in a "Template" dir on its top level) and Terror (which diff -ru v1.5c/html/intro.html v1.5d/html/intro.html --- v1.5c/html/intro.html Thu Apr 6 03:01:11 2000 +++ v1.5d/html/intro.html Sat Aug 18 09:42:53 2001 @@ -6,12 +6,20 @@

      Introduction (All GMs)

      -

      This is the Assassin Game Template v1-5c +

      This is the Assassin Game Template v1-5d (version info here). In order for a team to use this package successfully, you should declare one person to be Production Czar, and put them in charge of understanding this documentation in depth. The html docs will note if they're Czar-specific; most are for all GMs.

      + + +

      + Warranty: the Template is free software; you didn't pay us anything, + and neither did anyone else. As such, it comes with this firm guarantee: + If it breaks, you get to keep both pieces. +

      +

      Getting started

      diff -ru v1.5c/html/list-extractable.html v1.5d/html/list-extractable.html --- v1.5c/html/list-extractable.html Sat Jan 8 19:23:50 2000 +++ v1.5d/html/list-extractable.html Mon Aug 13 01:58:19 2001 @@ -61,7 +61,7 @@ bluesheet.sty and greensheet.sty; we'll start with
       \ProvidesPackage{pinksheet}  % let latex check that this is the desired package
      -\RequirePackage{sheets}      % base this on the "sheets" package
      +\RequirePackage{sheets}      % base this on the "sheets" package (w no options)
       \renewcommand\sheetname{Pinksheet}  % gets printed on sheet header
       
      Because the sheets.sty package already sets up a nice format for sheets, @@ -86,6 +86,10 @@ the bottom right corner of the name should show up. (It'll be blank when there isn't a char name to put there.)

      +

      You can use \RequirePackage[inlineheaders]{sheets} +to get "inline" (aka "run-in") headers for \section, +\subsection, and \subsubsection. The default +LaTeX/Central/rules.tex does this.

    • Create a directory where your things will live. If your new extractable is named "Foo Bar", the perl scripts will by default look diff -ru v1.5c/html/macro-glossary.html v1.5d/html/macro-glossary.html --- v1.5c/html/macro-glossary.html Sun Jan 9 03:49:23 2000 +++ v1.5d/html/macro-glossary.html Mon Aug 13 09:02:39 2001 @@ -139,11 +139,6 @@ \me to \name's argument. For instance, sheets.sty uses it to do the pretty header.

      -

      \doublesidecards{x margin}{y margin} (Production Czar) -
      Defined in cards.sty. Use it in a cards style file - to make them double-sided with these margins around - each card. See cards.html.

      -

      \eachchar (Production Czar)
      Defined in game.cls; available everywhere. For each \newchar'd character macro in characters.tex, in @@ -325,8 +320,10 @@
      Defined in cards.sty, available in style files using that. Create the card whose sides are made by the "front side" and "back side" code. Note this is only the form if you used - \doublesidecards; if you used \singlesidecards (single-sided) - or \mirrorsidecards (mirror sides) it's \makecard{front}. See + \RequirePackage[double]{cards} (or \usepackage, and/or with + margins specified); if you used [single]{cards} (single-sided) + or [mirror]{cards} (mirror sides) it's just \makecard{front}. + See cards.html and cards.sty comments.

      \me{info} @@ -378,12 +375,6 @@ See \extract, \secret. See charsheets.

      -

      \mirrorsidecards{x margin}{y margin} (Production Czar) -
      Defined in cards.sty. Use it in a cards style file - to make them mirror-sided (same thing on both sides) - with these margins around each card. - See cards.html.

      -

      \name{entry}
      Define \me to be the same as "entry"; "entry" is typically \C(something) for character sheets, @@ -492,14 +483,16 @@

      \pageof{card}
      Defined in cards.sty; available in cards files. - Makes a full new page of the given card. - See cards.html.

      + Makes a full new page of the given card. Cf. \putcard. See + printing-misc.html + and the LaTeX/Central/misc-(various).tex comments and examples. +

      \player\C(something){data}
      Defined in game.cls; used only in LaTeX/Lists/players.tex by GMs to define player information for character macros already made by GMs in LaTeX/Lists/characters.tex by \newchar. - (See \newchar.) The format of 'data' is defiend in + (See \newchar.) The format of 'data' is defined in custom.sty and documented in players.tex; the Czar may well fiddle with it, in which case they should document their changes in players.tex and @@ -516,7 +509,9 @@

      \putcard
      Defined in cards.sty; available in cards files. - Make another copy of the last card made.

      + Make another copy of the last card made. Cf. \pageof. See + printing-misc.html + and the LaTeX/Central/misc-(various).tex comments.

      \renewdef\mymacro[number of arguments]{macro text}
      \renewdef is to \newdef as \renewcommand is to \newcommand. @@ -572,12 +567,6 @@ defined as goes into the header. sheets.sty makes it "Miscellaneous Sheet"; you'll want to \renewcommand it to something appropriate for new .sty files.

      - -

      \singlesidecards{x margin}{y margins} (Production Czar) -
      Defined in cards.sty. Use it in a cards style file - to make them single-sided with these margins - around each card. - See cards.html.

      \sign{name}{room}{description}{mechanic}
      Defined in signs.sty, used by GMs in LaTeX/Central/signs.tex diff -ru v1.5c/html/printing-packets.html v1.5d/html/printing-packets.html --- v1.5c/html/printing-packets.html Tue Jan 11 21:31:44 2000 +++ v1.5d/html/printing-packets.html Wed Aug 15 03:27:59 2001 @@ -37,10 +37,11 @@ which will look in packets.config to see what the list-type extractables are, go into the DVI subdir for each (subject to .structure). For each foo.tex it -sees above it, it will latex it and/or xdvi DVI/foo.dvi. (Skipping -template.tex files.) This lets you -ensure that you have up-to-date DVI/foo.dvi for each list-type foo. -Those are where packets' bluesheets etc will be printed from.

      +sees above it, it will latex it and/or xdvi DVI/foo.dvi. (Skipping dotfiles +(which aren't latex-able and are probably emacs lockfiles or something) and +"template.tex".) +This lets you ensure that you have up-to-date DVI/foo.dvi for each list-type +foo. Those are where packets' bluesheets etc will be printed from.

      (Q: Why the Czar?
      A: Not because preliminary is complex, but because if multiple @@ -181,8 +182,9 @@ use a different set of printers than everyone else.

      --all-characters, -a -
      Instead of specifying the charfiles list, do all the .tex - in Charsheets/ except template.tex. +
      Instead of specifying the charfiles list, do all the .tex files + in Charsheets/, punting "template.tex" (Template sample file) and + dotfiles (can't be latex'd anyway; likely emacs lockfiles or something).
      --extract, -e
      Extract from the charsheets all information about their tex-type and @@ -253,14 +255,14 @@ meanwhile, you can look at it.
    -
    --ingame, -i [=mode] +
    --ingame[=mode], -i[mode]
    Highly optional.
    • --ingame, -i by itself causes all actions to both read from and write to the $GAME/Charsheets/* subdirs (where other GMs can look at them and where they won't vanish at logout) instead of the gmX-provided temp dir. -
    • --ingame=w, -i=w, -iw will read from the temp dir +
    • --ingame=w, -iw will read from the temp dir for its first action (unless that's --extract, which has to read from $GAME/Charsheets), but will write from that to the ingame dirs, from which subsquent actions will read. @@ -269,17 +271,16 @@ the temp dirs; -iw -xdg would read the temp .dvi, show it to you (-x), dvips it (-d) to the ingame Charsheets/PS, and gv that (-g) from there. -
    • --ingame=r, -i=r, -ir is the inverse of "w"; +
    • --ingame=r, -ir is the inverse of "w"; it will read from the ingame dirs for its first action (which only makes a difference if that's not --extract), write the results to the temp dir, then stay entirely in the temp for subsequent actions. That is, if you did -eli, you can -d -ir to get from the ingame dvi to temp-dir ps.
    - Because -i can take an argument, be careful bundling it; - "-alxi" and "-alxi=w" are ok, or even - "-alxiw", but "-ialx" is - "-i=a -l -x" which is wrong. + Since -i can take an argument, we recommend not bundling it; + "-alxi" works, as does "-alxiw", + but "-ialx" is "-ia -l -x" which is wrong.
    --only
    As explained previously; do only the extractable fields given, diff -ru v1.5c/html/tex-extractable.html v1.5d/html/tex-extractable.html --- v1.5c/html/tex-extractable.html Sat Jan 8 19:46:04 2000 +++ v1.5d/html/tex-extractable.html Mon Aug 13 09:16:36 2001 @@ -107,8 +107,7 @@
     \ProvidesPackage{seduction}   % let latex to check that this is desired package
     \RequirePackage{extractable}  % early line in any tex-type style package
    -\RequirePackage{cards}        % base style of any card package
    -\singlesidecards{.2cm}{.2cm}  % single-sided cards, .2cm margins all around
    +\RequirePackage[single]{cards} % single-sided flavor of base cards package
     \newdef\seduction[3]{\makecard{%   % make the card
       #1 #2                         % attack type and rating
       \includegraphics[width=1cm]{#3} % gratuitous picture
    diff -ru v1.5c/html/version.html v1.5d/html/version.html
    --- v1.5c/html/version.html	Sat May 27 17:38:48 2000
    +++ v1.5d/html/version.html	Sun Aug 19 18:01:48 2001
    @@ -4,8 +4,8 @@
     
     
     
    -

    Version 1.5c

    -

    released 05/27/2000

    +

    Version 1.5d

    +

    released 08/19/2001

    This file is intended to let you know how the Template you just grabbed for your game has changed since the last time you wrote a game with it. @@ -18,13 +18,13 @@ information may tend to change as you incorporate patches.

    Revisions are listed in chronological order. Each is given in three -sections: USER is material of interest to all Template users. CZAR -isn't of interest to most users but the Czar should read it. -Everything beyond what even the Czar should know is marked HACKER, for -the benefit of those who do really serious fiddling. Note that all -three will often give a very short description of an area of change -and point you towards appropriate documentation. Also, really teensy -tweaks, especially to docs, might not be listed anywhere.

    +sections: USER is material of interest to all Template users. +CZAR isn't of interest to most users but the Czar should read +it. Everything beyond what even the Czar should know is marked +HACKER, for the benefit of those who do really serious +fiddling. Note that all three will often give a very short description of an +area of change and point you towards appropriate documentation. Also, really +teensy tweaks, especially to docs, might not be listed anywhere.

    Since we may have discovered issues (and maybe patched them) more recently than your copy, that information is kept @@ -45,7 +45,7 @@

    1.1

    released 10/31/1998

    -USER: +

    1.1 USER

    -CZAR: +

    1.1 CZAR

    • We ask that you tell template-dev@mit.edu @@ -150,7 +150,7 @@
    -HACKER: +

    1.1 HACKER

    • bin scripts: the parsing of -only and -except has moved from parseconfigs.pl to prep and printup (the only ones that used it).
      @@ -184,7 +184,7 @@

      1.2

      released 1/29/1999

      -USER: +

      1.2 USER

      • The setenv we recommend you put in your @@ -212,7 +212,7 @@
      -CZAR: +

      1.2 CZAR

      • You define statcards a bit differently; see @@ -229,7 +229,7 @@
      -HACKER: +

      1.2 HACKER

      • We do some "intercepting" of .sty files to work around some newtex @@ -252,7 +252,7 @@

        1.3

        released 3/4/1999

        -USER: +

        1.3 USER

        • The material in LaTeX/Examples has moved into LaTeX/Central/misc-*.tex. @@ -318,7 +318,7 @@
        -CZAR: +

        1.3 CZAR

        • LaTeX/Mech has moved to LaTeX/Styles. @@ -347,7 +347,7 @@
        -HACKER: +

        1.3 HACKER

        • The implementations of \eval@char and \@die, and the scope of \<, @@ -360,7 +360,7 @@

          1.4

          released 6/24/1999

          -USER: +

          1.4 USER

          • All tex-type extractables are defined in terms of an intermediate @@ -410,7 +410,7 @@
          -CZAR: +

          1.4 CZAR

          • Important! game.sty now contains only TeX magic that @@ -440,7 +440,7 @@
          -HACKER: +

          1.4 HACKER

          • \newdef and \renewdef are supplied by the newdef.sty file. @@ -455,14 +455,12 @@
            -

            1.5, 1.5a, 1.5b, 1.5c

            -

            released 01/28/2000, - patch `a' 03/27/2000, - patch `b' 04/06/2000, - patch `c' 05/27/2000 -

            +

            1.5

            +

            released 01/28/2000, followed by patch releases (below)

            -USER: + + +

            1.5 USER

            • Everything is based on latex2e (the new Athena default), @@ -549,19 +547,9 @@ you probably want to do them on white paper (as game items) and put memory packets on green/blue paper (as not-ingame). -
            • The "a" patch to 1.5 just fixed a stupid docs bug in Lists/abilities.tex. - -
            • The "b" patch to 1.5 fixed a namespace collision with internal LaTeX -macros that caused floats (figures and tables (but not tabulars)) -to crash and burn. - -
            • The "c" patch to 1.5 fixed the default (commented out) ingestible -macro definitions for charsheets to not leave the third argument -hanging around. -
            -CZAR: +

            1.5 CZAR

            • You may wish to see the latex2e class and package writers' guide in @@ -584,9 +572,9 @@
            • The prep/printup configuration files bin/game.config and paper.config have replaced by the single (and shorter) packets.config file. - See printing-packets.html; - most scripts that read packets.config take an optional --config argument - to use a different one, so that GMs can use different sets of + See printing-packets.html; most + scripts that read packets.config take an optional --config + argument to use a different one, so that GMs can use different sets of printers and so on. Note that the game.config "paths" information of what directories are where, which teams rarely if ever changed, is not in packets.config; instead all paths have defaults and you @@ -652,7 +640,7 @@
            -HACKER: +

            1.5 HACKER

            • There are oodles of docs on latex2e and new packages in /mit/newtex. @@ -664,8 +652,8 @@ marked as Secret). Relevant code in character.sty, charextracts.sty, extractable.sty, bin/packets. -
            • The "interceptors" are all gone. ((a) gave up hope that the problem -code would be changed; (b) with latex2e we now have workarounds for all +
            • The "interceptors" are all gone. ((1) gave up hope that the problem +code would be changed; (2) with latex2e we now have workarounds for all the problems.)
            • Some (though not all) ps tricks have been replaced by use of @@ -692,6 +680,150 @@ respects \space@tossed as \? already has. See code.
            • game.cls defines \name so that its redefinition of \me is global. + +
            + +
            + +

            1.5a (patch release)

            +

            released 03/27/2000

            + +

            1.5a USER

            +
              +
            • Just fixed a stupid docs bug in Lists/abilities.tex. +
            + +
            + +

            1.5b (patch release)

            +

            released 04/06/2000

            + +

            1.5b USER

            +
              +
            • Fixed a namespace collision with internal LaTeX macros that caused floats + (figures and tables (but not tabulars)) to crash and burn. +
            + +
            + +

            1.5c (patch release)

            +

            released 05/27/2000

            + +

            1.5c USER

            +
              +
            • Fixed the default (commented out) ingestible macro definitions for + charsheets to not leave the third argument hanging around. +
            + +
            + +

            1.5d (patch release)

            +

            released 08/19/2001

            + +

            1.5d USER

            +
              + +
            • Dropped the recommended aliasing of dvips -R from + dotfiles.html.
              + (While it disables shell escapes as desired, it also loses the ability + to print foo.dvi directly with +
              dvips -Pprintername foo instead of +
              dvips foo -o ; lpr -Pprintername foo.ps.) + +
            • Fixed bin/packets' failure to cope with TeX's failure to produce a .dvi + from .tex files that don't typeset anything, which lead to erroneous + errors for empty extractable lists. + +
            • Fixed an ambiguity in bin/gm so that Perl no longer emits a (harmless + but annoying) warning about CORE::chdir resolution. + +
            • Caused a badge's Not Here and identity sides to join at the top instead + of at the bottom, so when you tape it to your chest your face doesn't + flop upside-down. + +
            • Fixed a game.cls bug that made the spaces after the semicolons in calls + to \newchar (or \player) in LaTeX/Lists/characters.tex (players.tex) + non-optional. + +
            • Brought LaTeX/Central/rules.tex + up to speed on the improvements there've been in the Standard Rules' own, + vanilla-latex rules template. + +
            • Put \gamedate on money, so that if it's stashed by a PC in one run + and found during another it's at least potentially noticeable + as being from the wrong run. + +
            • The bin/{doc,packets,preliminary} scripts fixed their "what stuff in + this directory is relevant to me?" file tests to not be thrown off + by AFS, and to ignore subdirectories. + +
            • The gm script fixed its "which things in bin/ are actually scripts?" + check to not be fvcked by AFS. This merits updating your copy of gm. + +
            • The "packets" script (under -a / --all-characters) and "preliminary" + script (always) now ignore dotfiles (.*tex); these can't be latex'd + anyway (try it) and are almost certainly emacs lockfiles or some such. + +
            • \topquote evaded a TeX implementation bug that caused leading Ls + in the second (attribution) argument to be eaten. + +
            • Ability cards regained the inner frame around the "effect" text (which + apparently had dropped out at some point without anybody noticing). + +
            • printing-packets.html + has dropped the erroneous "-i=w" form of --ingame, -i usage; + also, the packets script error for invalid usages now summarizes + the valid ones. + +
            • The "packets" script advanced an error check to avoid a Perl warning + when packets.config specifies nonexistent printers. + +
            • The "packets" script's printer-status checking was changed to reflect + changes in printer behavior (from firmware upgrade, not lprng). + It now uses lpq-based information only and always gets a + judgement call from the user on printer conditions. + +
            • The warranty was added. + +
            + +

            1.5d CZAR

            +
              + +
            • Fixed \frobbies (see top of + Charsheets/template.tex) + to correctly propagate argument-taking macro defns from charsheets + to tex-type extractables. + +
            • Added "inlineheaders" option to sheets.sty, and used it by default in + LaTeX/Central/rules.tex. + See list-extractable.html about + using it in bluesheets and so on. + +
            • Single-sided cards now default to tight packing (i.e. no margins) + since front/back alignment of the printed page isn't an issue for them. + (Double- and mirror-sided still have nonzero default margins.) + See cards.html and + cards.sty comments. + +
            + +

            1.5d HACKER

            +
              + +
            • Dropped bin/gm's GM::dvips -P usage as being incompatible with -R + (see under USER above), redundant with having GM::lpr, and not used + by any Template scripts. + +
            • The postscript graying in badges.sty is more like that done in color.sty + (but doesn't use that, to avoid unnecessary level-two postscript). + +
            • Had extractable.sty defer \pagestyle invocation so as to have it + see the right (final) \textwidth. + +
            • Fixed card.sty's dimension calculations to allow for the borders + correctly, and made the built-up boxing structures cleaner and + more robust (constant nesting level).