#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  PS-headers PS-headers/PS_intro PS-headers/PS_usage
#   PS-headers/README PS-headers/back.ps PS-headers/cards.ps
#   PS-headers/cone.ps PS-headers/font.ps PS-headers/hex.ps
#   PS-headers/lucre.ps PS-headers/moons.ps PS-headers/powers.ps
#   PS-headers/pure.ps
# Wrapped by kcc@wucs1 on Sun Nov 10 16:23:24 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test ! -d 'PS-headers' ; then
    echo shar: Creating directory \"'PS-headers'\"
    mkdir 'PS-headers'
fi
if test -f 'PS-headers/PS_intro' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/PS_intro'\"
else
echo shar: Extracting \"'PS-headers/PS_intro'\" \(7065 characters\)
sed "s/^X//" >'PS-headers/PS_intro' <<'END_OF_FILE'
Just Enough PostScript to use the Cosmic Encounter Headers
X	version 1.1 (June, 1991)
Copyright (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
Distributed as freeware
X
X
This file is intended to give you enough information about PostScript
that you can use the provided routines to generate Cosmic Encounter
materials.  If you need more information, see the "PostScript Language
Reference Manual" (the Red Book) from Adobe Systems Incorporated
X(Addison-Wesley).
X
X------------------------------------------------------------
X
XFILE FORMAT
X
XEach of the PostScript files should begin with the line
X
X%!
X
Make sure the files begin with this line.  If they don't, depending
on your printing software you will either get nothing or a complete
listing of the PostScript file.
X
X------------------------------------------------------------
X
PRINTING
X
To print the files you need a PostScript printer and a way to transmit
the file to the printer without filtering.
X
On many UNIX (tm) systems, the transmission is done by "lpr"; when the
printer daemon sees the initial "%!" line, it transmits the file to the
printer without doing any filtering.
X
You can also use SendPS from a Macintosh.
X
You might have to use some other technique, but I can't help you.
X
X------------------------------------------------------------
X
BASIC POSTSCRIPT SYNTAX
X
Comments begin with a percent % and continue to the end of the line.
X
X
Names (literals) begin with a "/"; for example, /OriginalCards is a
name.  This is of use mostly with the print options; each print option
is given a value by the construct "name value def", for example
X	/OriginalCards true def
If you want to change the value assigned to this print option, you edit
the file and replace the existing value with the new one (here, you would
change true to false); do NOT change the name or the word "def".
X
X
Numbers are integers or reals, entered in the usual way: 0, -3, 2.71828.
X
X
The two boolean constants are true and false.
X
X
Strings are delimited by parentheses: (Hello, world!) ( ) (a string).
The comment character % is ignored inside a string.
X
You can break strings across lines by using a \ (backslash) at the end
of the line; the newline is NOT part of the string: (this string has \
X29 characters).
X
To use parentheses or backslash within a string, prefix with a backslash:
X(string \\ of \) \( 29 characters).
X
You can also use a backslash followed by three octal digits to get special
characters, as listed in the table at the end of this file.
X
X
Arrays are delimited by square brackets: [ 0 1 ] [ (array) (of) (strings) ].
The contents of arrays are arbitrary; the main use in the code is for an
array of strings as used in a title, for example, [ (MOBIUS) (TUBES) ].
X
X
Routines (executables) are delimited by curly brackets: { 3 4 add }.  The
only reason you need routines is for artwork in the Edicts, Flares, and
Power cards.  In all these instances, you can use an empty routine { }.
X
X------------------------------------------------------------
X
USING THE ROUTINES
X
PostScript is a postfix language, so to use the routines I have defined
you first give all the arguments and then give the routine's name.
X
XFor example, the routine Attack in cards.ps has two arguments: the number
of cards to be printed and the value to be put on each card. So to print
X5 Attack 8's you would use 
X
X	5 8 Attack
X
The arguments to each routine are documented separately.
X
In addition, several of the files (cards.ps, moons.ps, and powers.ps)
need some extra code before the first use of any routine and after the
last use.  For all three files, this is simply a matter of starting
with the line
X
X	Setup
X
then using the routines to generate whatever you want, and finishing with
X
X	Finished
X
X------------------------------------------------------------
X
TYPESETTING OF PARAGRAPHS
X
In many places, the routines do crude "typesetting".  This permits entire
paragraphs to be entered as a single PostScript string, without the need
to hand-break the paragraph into lines.  The following information about
the behavior of these routines may be useful:
X
X1) The ASCII characters from space (octal 040) through tilde (octal
X   176) are all printable.  Certain other characters are also printable;
X   the table below lists all of them.  If you somehow use an illegal
X   character, it prints as a space.
X
X2) Lines may be broken at spaces, and are always broken at carriage
X   returns (octal 015, \r).  No other characters, even whitespace such
X   as tabs and newlines, can cause a line break.  (I said it was crude.)
X
X3) Newlines (octal 012, \n) are converted into spaces before the strings
X   are sent to the typesetting routines. This is useful if, like me, you
X   sometimes forget to include the extra space and \ when you break
X   PostScript strings across lines.
X
X4) Tab (octal 011, \t) prints as a triple-width space.  This is not
X   suitable for use as tab stops, but if all you want to do is indent a
X   line slightly it is appropriate.
X
X5) When a line is broken, any spaces that start the next line are
X   stripped off before the line is printed.  The effect of this is
X   that you can safely double-space after periods, etc. without
X    worrying that the break will cause the line to look something
X   like the previous one.
X
So for example, the PostScript string
X
X(This is just\r\tan example of what\r\rcan
be done.  Note that this very very    very long sentence     is broken \
across several lines by the routine, that the spaces after "very" are \
retained, but\rthe spaces after "sentence" are trimmed off since they
start a line.)
X
might (depending on the line length) be set as
X
This is just
X   an example of what
X
can be done.  Note that this very very    very long sentence
is broken across two lines by the routine, that the spaces
after "very" are retained, but
the spaces after "sentence" are trimmed off since they start
a line.
X
X------------------------------------------------------------
X
OCTAL ESCAPES
X
The following octal sequences may be used in strings:
X
OCTAL	REPRESENTS			OCTAL	REPRESENTS
X241	upside-down exclamation		277	upside-down question mark
X242	cent				301	grave accent
X243	pounds sterling			302	acute accent
X244	fraction (/)			303	circumflex
X245	yen				304	tilde (for Spanish n~, etc.
X246	florin				305	macron (over-bar)
X247	section				306	breve accent
X250	currency mark			307	dot accent
X251	single quote (prime mark)	310	dieresis
X252	double left quote (``)		312	degree sign
X253	left guillemot (<<)		313	cedilla
X254	left single guillemot (<)	315	hungarian umlaut
X255	right single guillemot (>)	316	ogonek
X256	fi ligature			317	caron
X257	fl ligature			320	em dash
X261	en dash				341	AE ligature
X262	dagger				343	feminine (raised "a")
X263	double dagger			350	slashed L
X264	raised period			351	slashed O
X266	paragraph			352	OE ligature
X267	bullet				353	masculine (raised "o")
X270	single base quote		361	ae ligature
X271	double base quote		365	dotless "i"
X272	double right quote ('')		370	slashed l
X273	right guillemot	(>>)		371	slashed o
X274	ellipsis			372	oe ligature
X275	perthousand			373	german double "s"
X
END_OF_FILE
if test 7065 -ne `wc -c <'PS-headers/PS_intro'`; then
    echo shar: \"'PS-headers/PS_intro'\" unpacked with wrong size!
fi
# end of 'PS-headers/PS_intro'
fi
if test -f 'PS-headers/PS_usage' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/PS_usage'\"
else
echo shar: Extracting \"'PS-headers/PS_usage'\" \(30801 characters\)
sed "s/^X//" >'PS-headers/PS_usage' <<'END_OF_FILE'
Usage Guide to the Cosmic Encounter PostScript Files
X	version 1.1 (June, 1991)
Copyright (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
Distributed as freeware
X
X------------------------------------------------------------
X
This file contains for each of the PostScript files (except font.ps) a
guide to the use of the file to generate Cosmic Encounter materials.
X
X------------------------------------------------------------
X
GENERAL NOTES
X
Most of the files require that you generate some PostScript code in
order to use them.  Don't panic!  The files have been set up so that
all you have to do is select the routines that you want and provide
the correct arguments.  The file "PS_intro" tells you all that you
will need to know about PostScript syntax.
X
If your operating system supports it, a convenient way to use the
files is to generate a new file containing the code you write.  The
required header files and your code can then be concatenated and
sent to the printer.
X
This also applies to the file font.ps, which defines some fonts that
are used by several of the other headers.  font.ps must be prepended
to these other headers before they can be used.  If your system
supports it, the concatenation can be done when you send the file to
the printer.
X
XFor example, say that you wanted nine Kicker 20's (as a joke, I would
hope).  You could create a file named, say, "kickers" which contains
the following code (explained below):
X
X	Setup
X	9 20 Kicker
X	Finished
X
You could then print this (under UNIX) by the command
X
X	cat font.ps cards.ps kickers | lpr -Papple
X
The "cat" command concatenates the files font.ps, cards.ps, and kickers,
then the result of the concatenation is "piped" to the lpr command which
sends the concatenation to the "apple" printer (your printer may be
named differently). 
X
If your operating system does not support such concatenation when you
print files, you will have to concatenate them by hand, possibly with
an editor.
X
X------------------------------------------------------------
X
PRINT OPTIONS
X
There are a number of variables in the files that control the printing.
You can change the values of the variables to get different effects.
The general form is
X
X	/Variable value def
X
where the value is of the appropriate type.  Boolean variables have the
values true and false, numeric variables have numbers, etc.
X
Options fall into two broad classes -- compile-time and run-time.
X"Compile-time" variables are used when the header is read and routines
are being defined; the routines cannot then be changed.  "Run-time"
variables are used only when the routines are actually called; you can
change the values of these variables during printing, and the effects
will show up in the material being printed.
X
Beginning with version 1.1 of the files, most variables in header files
are run-time.  The only exceptions are variables that produce major
formatting changes -- for example, the SixPerPage variable in powers.ps
which determines whether three or six power cards are printed per page.
X
Variables in stand-alone files, such as lucre.ps, are compile-time.  Such
files are complete by themselves; there is thus no need for on-the-fly
modifications.
X
To change a compile-time variable, edit the header file and change the
definition.  This technique can also be used to set the initial values of
run-time variables.
X
Redefinitions of run-time variables may be intermixed with uses of the
routines.  As an example, if you wanted to print some Attack cards in
the "original" (Eon-like) format, then print some Compromise in the newer
format, you could use the sequence
X
X/OriginalCards true def
X5 10 Attack
X/OriginalCards false def
X4 Compromise
X
The behavior of the various options is described below.
X
X------------------------------------------------------------
X
BACK.PS
X
Description:
X	back.ps prints pages filled with patterns that can be used
X	for the backs of cards, Moons, and so on.
X
Preparation:
X	Concatenate font.ps on the beginning of back.ps before use.
X	Be sure the resulting file begins with the characters %!.
X
Print Options:
X	StellarNumber			RUN-TIME
X		Integer variable, used to seed the random number
X		generator before creating a background.  This variable
X		may be set to any integer value; each choice produces
X		a different, repeatable background.
X
Usage:
X	Eight page backs are provided in back.ps.  To generate a
X	background, use "N Procedure", where N is the number of copies
X	of the page to be generated and Procedure is the name of the
X	routine generating the desired background.  The following
X	routines are supplied:
X
X	StellarPage	starry sky
X	DestinyPage	starry sky with DESTINY written across it
X	MoonPage	"lunar craters"
X	DiamondPage	small black diamonds
X	QuestionPage	question marks
X	SquarePage	checkerboard
X	DiamondPage	diagonal stripes
X	HazardPage	wide grey diagonal stripes
X
X	For example, to print 6 copies of the StellarPage, you would
X	add the following line to the end of the file:
X
X6 StellarPage
X
X------------------------------------------------------------
X
CARDS.PS
X
Description:
X	cards.ps prints the Cosmic Encounter deck.  Nine cards, each
X	2.25 inches by 3.5 inches, are printed on each page.
X
Preparation:
X	Concatenate font.ps on the beginning of cards.ps before use.
X	Be sure the resulting file begins with the characters %!.
X
Print Options:
X	OriginalCards		RUN-TIME
X		Boolean variable, used to choose between "standard"
X		cards (very close to the Eon deck) and a style that
X		I developed when the question of copyright was a bit
X		hazy; the latter style differs mostly in artwork.
X		Value true produces the original cards.
X
X	DoInColor		RUN-TIME
X		Boolean variable, used to determine if the printer
X		should use color commands.  Black and white printers
X		should interpret the color commands properly; this
X		variable is provided in case they don't.  Value true
X		uses color commands.
X
X	WhiteOnBlack		RUN-TIME
X		Boolean variable, used to determine if Kickers and
X		Flares will be printed with white letters on black or
X		vice versa.  Value true produces white on black.
X	
X	GraphicIndex		RUN-TIME
X		Boolean variable, used to determine if Edicts, Flares,
X		and Prisoner Rulings will be printed with a small
X		circle or square for the index with a (user-supplied)
X		graphic in the index.  Value true attempts to print
X		the graphic.  Note: GraphicIndex is automatically
X		set to false if OriginalCards is false.
X
X	IndexByName		RUN-TIME
X		Boolean variable, used to determine if Edicts, Flares,
X		and Rulings with a graphic index will have the name
X		printed as the index if the user does not supply a
X		routine.  What this means is that if GraphicIndex is
X		true AND IndexByName is true AND the graphics routine
X		provided by the user is { }, the code will print the
X		name in the index graphic; for example, with Flares the
X		Alien name will be printed in the circle.  Note that
X		if the names are very long, they may not fit inside the
X		index graphic.
X
X	OneShotFlares		RUN-TIME
X		Boolean variable, used in the printing of Flares.  If true,
X		the string "ONE-SHOT FLARE" will be printed in small type
X		at the bottom of the Flare; if false, the string is omitted.
X
X	DestinyFilled		RUN-TIME
X		Boolean variable, used to determine if the circles on
X		Destiny cards will be filled (with either color or
X		a gray approximation, depending on the printer).  Value
X		true causes the circle to be filled.
X
X	ShowRestrictions	RUN-TIME
X		Boolean variable, used to determine if the Flare cards
X		will include small iconic representations of restrictions
X		(for example, "use only with Lucre" is represented by a
X		small bag of Lucre).  Value true causes the icons to be
X		printed.
X
X	ShowOrigin		RUN-TIME
X		Boolean variable, used to determine if the "origin" of
X		cards will be printed.  Value true causes the card
X		origin (a string) to be printed in the lower-right
X		corner of the cards.
X
X	OriginString		RUN-TIME
X		String, printed if ShowOrigin is true.  One character will
X		definitely fit on all cards; more than one may or may not,
X		depending on the card type and the other text on the cards.
X
X
Utility Routines:
X	The utility routine DefineOrigin can be used to set the origin.
X	It has one argument, the string to be used; for example
X		(m) DefineOrigin
X	or
X		() DefineOrigin
X	If the string is not empty (as in the first example), ShowOrigin
X	is automatically set to true; if it is empty, ShowOrigin is set
X	to false.
X
X	The utility routine AttackResizeFonts can be used to rescale the
X	size of the large numbers printed on the Attack cards (to permit
X	larger numbers to fit, for example).  It has one argument, the
X	scaling factor relative to the normal font size.  For example,
X		0.9 AttackResizeFonts
X	will resize the fonts to 90% of normal size; all Attack cards
X	printed after the above is called will have the smaller numbers.
X	To restore the size to normal, use
X		1 AttackResizeFonts
X
Usage:
X	Nineteen routines are provided in cards.ps, each producing a
X	different type of card.  To produce cards, add appropriate code
X	to the end of cards.ps (after concatenating font.ps).  The
X	following routines are provided:
X
X	Attack			Compromise		Kicker
X	AddKicker		Edict			Flare
X	ColorDestiny		BiColorDestiny		WildDestiny
X	ReversedColorDestiny	ReversedBiColorDestiny	ReversedWildDestiny
X	CaptureColorDestiny	CaptureBiColorDestiny	CaptureWildDestiny
X	SpecialDestiny		Hazard			Ruling
X	Hex
X
X	These routines and their arguments are discussed below.
X
X	To create a printable file, begin with the line "Setup".  Then add
X	the PostScript code to generate the cards you want (using the above
X	routines), and finally add the line "Finished".
X
X
Attack
X	Usage:  N V Attack
X		Print N (positive integer) Attack cards having value V.
X		V can be any number (including 0, negative, or reals);
X		there's only room for three characters.
X
X	Example:  To print 6 Attack 12's and 3 Attack -1's,
X
X6 12 Attack
X3 -1 Attack
X
X	Print options:
X		OriginalCards if true prints Eon-style cards; if false,
X		additional artwork depicting "flying saucers" attacking
X		a base, with the number of saucers depending on the value.
X
Compromise
X	Usage:  N Compromise
X		Print N (positive integer) Compromise cards.
X
X	Example:  To print 9 Compromise cards,
X
X9 Compromise
X
X	Print options:
X		OriginalCards if true prints Eon-style cards; if false,
X		additional artwork depicting three Aliens playing Cosmic
X		Encounter is printed.
X
Kicker
X	Usage:  N V Kicker
X		Print N (positive integer) multiplicative Kicker cards of
X		value V.  V is any number, with a three-character limit.
X
X	Example:  To print 3 Kicker 2's,
X
X3 2 Kicker
X
X	Print options:
X		OriginalCards if true prints Eon-style cards; if false,
X		the card index is replaced with "X value" (instead of
X		just value) and the card text reads "TIMES" "value"
X		"MULTIPLIES EFFECT" "OF CHALLENGE CARD".
X
X		WhiteOnBlack if true prints the Kickers in white letters
X		on a black background; if false, in black on white.
X
AddKicker
X	Usage:  N V Kicker
X		Print N (positive integer) additive Kicker cards of value
X		V.  V is any number, with a three-character limit.
X
X	Example:  To print 2 additive Kicker 5's,
X
X2 5 AddKicker
X
X	Print options:
X		OriginalCards if true prints cards that look like a
X		multiplicative kicker, except the index is "+ value";
X		if false, the card index is still "+ value" and the card
X		text reads "PLUS" "value" "ADDS TO EFFECT" "OF CHALLENGE
X		CARD".
X
X		WhiteOnBlack if true prints the Kickers in white letters
X		on a black background; if false, in black on white.
X
XEdict
X	Usage:  N Title Bold Rest Icon Edict
X		Print N (positive integer) Edicts; each Edict has the
X		title Title.  The description starts with Bold in bold
X		font, and continues with Rest in roman font.
X
X		The Title is an array of strings.
X		Bold is a single string which starts the Edict description.
X		Rest is a single string completing the description. A
X		single space is printed between Bold and Rest.
X
X		Icon is an executable routine that draws an icon in the
X		upper left corner.  This routine draws within a circle
X		of radius 13, with the origin of the drawing at the
X		circle's center.  The routine { } may be used; it draws
X		no icon.
X
X	Example: 
X
X1 [ (TIME) (PRESSURE) ] (Speed up deal.)
X[ (Players have ten seconds to complete a deal.\r\rPlay anytime during \
the deal.)
X{ 0 0 moveto 0 0 13 30 90 arc closepath fill }
XEdict
X
X
X	Note:  Do not worry if you have no idea at all what "0 0 moveto..."
X		means.  This is PostScript to draw a simple icon in the
X		Edict circle; if you don't speak PostScript, you can use
X		an empty routine { } anyplace where an executable is
X		required.
X
X	Print options:
X		OriginalCards if true prints Eon-style Edicts; if false,
X		some minor changes to positioning are made.
X
X		GraphicIndex if true draws a circle in the upper left corner
X		of the card and renders the supplied icon in the circle. If
X		false, the icon is ignored and an E is printed for the index.
X
X		IndexByName if true AND GraphicIndex is true AND the Icon
X		you provide is { }, will print the Title in the circle.
X
X
XFlare
X	Usage:  Name Power RestrictIcons Wild Super Icon Flare
X		Print one Flare, for the alien Name.
X
X		Power is an array of at most two strings, indicating the
X		power of/to description.  The PostScript strings PT, PO,
X		PV, and PW are pre-defined as (respectively) "Power to",
X		"Power of", "Power over", and "Power".
X
X		RestrictIcons is a string containing character encodings
X		of the use/timing restrictions of the alien:
X			2	Do not use in a two-player game
X			A	UOW (use only with) Asteroids
X			D	UOW Special Destiny
X			F	UOW Flares
X			H	UOW Hazards
X			K	UOW Kickers
X			L	UOW Lucre
X			M	UOW Moons
X			N	UOW Multiple powers ("N"-power game)
X			P	UOW Prisoners
X			T	UOW Technology
X
X			s	Start of game
X			8	any time (infinity)
X			a	move Asteroids
X			h	draw Hazard
X			l	collect Lucre
X			b	Buy tokens
X			t	Technology phase
X			r	Rescue/Raise token
X			f	Flip destiny
X			g	Gather tokens
X			p	Point cone
X			x	prisoner eXchange
X			q	buy cards (so sue me, I ran out of letters)
X			i	Invite allies
X			u	invite offensive allies
X			v	invite defensive allies
X			j	allies Join
X			k	play Kicker
X			c	play Challenge card
X			e	Expose cards
X			o	determine and implement Outcome
X			d	Discard cards
X			n	interphase (begin Next challenge)
X
X			-	range marker (an arrow); for example for
X				a power that can be used between the flip
X				of destiny and the revealing of cards, use
X				the sequence f-e
X	
X
X		Wild and Super are each a string giving the Flare effects.
X
X		Icon is an executable routine that draws an icon in the
X		upper left corner.  This routine draws within a circle
X		of radius 23, with the origin of the drawing at the
X		circle's center.  The routine { } may be used; it draws
X		no icon.
X
X	Example:
X 
X(AUCTIONEER) [ PT (Auction) ] (L)
X(Between challenges, you may auction a base on any planet where you have \
one. You may not prevent any player from participating in the auction. \
High bidder pays you in Lucre, then puts one of his tokens from any planet \
onto the base. Use once and discard.)
X(When you auction, take the top card of the deck and put it in your hand. \
Then select any card from your hand and auction it. If no one bids on the \
card, you may keep it or discard it.)
X{ }
XFlare
X
X	Print options:
X		OriginalCards if true prints Eon-style Flares; if false,
X		some minor changes to positioning are made.
X
X		GraphicIndex if true draws a circle in the upper left corner
X		of the card and renders the supplied icon in the circle. If
X		false, the icon is ignored and an F is printed for the index.
X
X		IndexByName if true AND GraphicIndex is true AND the Icon
X		you provide is { }, will print the Name in the circle.
X
X		WhiteOnBlack if true prints the Kickers in white letters
X		on a black background; if false, in black on white.
X
X		ShowRestrictions if true prints the restrictions as small
X		icons in the upper right corner of the Flare; if false,
X		they are omitted.
X
X		OneShotFlares if true causes the string "ONE-SHOT FLARE" to
X		be printed in small type at the bottom of the Flare.
X
X
ColorDestiny, ReversedColorDestiny, etc.
X
X	Usage:	N Color ColorDestiny
X		N Color ReversedColorDestiny
X		N Color CaptureColorDestiny
X		N Color1 Color2 BiColorDestiny
X		N Color1 Color2 ReversedBiColorDestiny
X		N Color1 Color2 CaptureBiColorDestiny
X		N WildDestiny
X		N ReversedWildDestiny
X		N CaptureWildDestiny
X
X		Print N Destiny cards for 1) a single color, 2) two colors
X		simultaneously, and 3) wild color.  Color, Color1, and
X		Color2 are strings; the mapping of color names to color
X		values is defined by the dictionary DestinyColorDict, but
X		you may use any string without problem (unrecognized colors
X		are rendered as white).  The Reversed form prints a reverse
X		cone challenge on the card; the Capture form prints a
X		capture challenge on the card.
X
X	Example:  To print three red Destiny cards, one green reverse
X		cone Destiny card, one blue/yellow bicolor prisoner destiny
X		card, and two wild destiny card:
X
X3 (red) ColorDestiny
X1 (red) ReversedColorDestiny
X1 (blue) (yellow) CaptureBiColorDestiny
X2 WildDestiny
X
X	Print options:
X		DestinyFilled if true will fill the regions on the
X		Destiny cards with color or grays; if false, will
X		leave them white.
X
X		DoInColor if true will use color commands to fill;
X		if false, will use grays.
X
SpecialDestiny
X	Usage:  N Title Description SpecialDestiny
X		Print N Special Destiny cards, each titled Title and
X		described by the Description.  Title is an array of
X		strings, Description is a string.
X
X	Example:  The Destiny Left card.
X
X1 [ (DESTINY) (LEFT) ] (Challenge the system on your left.) SpecialDestiny
X
X	Print options:
X		None.
X
Hazard
X	Usage:  N Title Description Hazard
X		Print N Hazard cards, each titled Title and described by
X		the Description.  Title is an array of strings, Description
X		is a string.  The Hazard is bordered by some artwork.
X
X	Example:  To print one "power dies" hazard.
X
X1 [ (YOUR) (ALIEN POWER) (DIES) ]
X(Replace your power with one drawn at random. In a multiple power game, \
the player to your right chooses which power is replaced.)
Hazard
X
X	Print options:
X		DoInColor if true will use color commands for the artwork;
X		if false, will use grays.
X
Ruling
X	Usage:  N Title Bold Rest Icon Ruling
X		Print N (positive integer) Prisoner Rulings; each Ruling
X		has the title Title.  The description starts with Bold in
X		bold font, and continues with Rest in roman font.
X
X		The Title is an array of strings.
X		Bold is a string which starts the Ruling description.
X		Rest is a string which finishes the description.
X
X		Icon is an executable routine that draws an icon in the
X		upper left corner.  This routine draws within a square
X		of edge 26, with the origin of the drawing at the
X		square's center.  The routine { } may be used; it draws
X		no icon.
X
X	Example:
X
X1 [ (GENERAL) (AMNESTY) ] (Free all prisoners.)
X(All prisoners in all Prisons are freed to bases, or to Warp if the owner \
has no bases.\r\rPlay at the start of your challenge.)
X{ } Ruling
X
X	Print options:
X		GraphicIndex if true draws a square in the upper left corner
X		of the card and renders the supplied icon in the square. If
X		false, the icon is ignored and an R is printed for the index.
X
X		IndexByName if true AND GraphicIndex is true AND the Icon
X		you provide is { }, will print the Title in the circle.
X
X
X
Hex
X	Usage:  Title Icon hex
X		Print one hex card, titled Title and with the Icon drawn
X		in the hexagon.  Title is an array of strings, Icon is
X		an executable.  The Icon is drawn in a black hexagon of
X		side 1.0 in the space in which the icon is rendered
X		(1.125 inches actually).
X
X	Example:  Hex card for Rings.
X
X[ (RINGS) ]
X{ 0 0.1 translate 0 0 0.32 0 360 arc 0.8 setgray fill
X  gsave 1.0 0.5 scale 1 setgray
X  1 1 4 { 0.12 mul 0.3 add 0 0 2 index 90 450 arc 0 -0.04 3 -1 roll 0.06 add
X	450 90 arcn closepath fill 0 -0.06 translate } for grestore
X  0 0 0.32 0 180 arc closepath 0.8 setgray fill }
Hex
X
X	Note:  Again, don't panic about the PostScript.  The archive
X		PS-examples has a file with PostScript for all of the
X		hex cards.
X
X	Print options:
X		None
X
X------------------------------
X
PURE.PS
X
Description:
X	pure.ps is a subset of cards.ps which prints Eon-style cards.
X	See cards.ps for full details.
X
Preparation:
X	See cards.ps.
X
Print Options:
X	The only print options are ShowOrigin and OriginString.  The
X	file otherwise produces cards which correspond to the following
X	settings of the cards.ps options:
X
X	/OriginalCards true def
X	/DoInColor false def
X	/WhiteOnBlack true def
X	/GraphicIndex true def
X	/IndexByName true def
X	/OneShotFlares false def
X	/DestinyFilled true def
X	/ShowRestrictions false def
X
Utility Routines:
X	DefineOrigin and AttackResizeFonts are available.  See cards.ps.
X
Usage:
X	The following routines from cards.ps are provided:
X
X	Attack			Compromise		Kicker
X	Edict			Flare
X
X	Usage is exactly as for cards.ps.
X
X------------------------------
X
CONE.PS
X
Description:
X	cone.ps prints a page containing the Cone, Reverse Cone, and
X	a row of small Cones suitable for Reverse Cone stickers.
X
Preparation:
X	None.
X
Print Options:
X	None.
X
Usage:
X	Ready to use.  Simply send to printer.
X
X------------------------------
X
HEX.PS
X
Description:
X	hex.ps prints pages containing planet hexes.  Each hex is
X	4.5 inches on a side; one hex is printed on each page.
X
Preparation:
X	Concatenate font.ps on the beginning of hex.ps before use.
X	Be sure the resulting file begins with the characters %!.
X
Print Options:
X	A4Paper			RUN-TIME
X		Boolean variable, used to resize the hexes slightly
X		so that they fit on A4 paper.  If true, the hexes
X		are scaled down to 95% of original size, i.e. 4.275
X		inches (10.85 cm) on an edge.
X	RingworldSegments	RUN-TIME
X		Integer variable, used to set the number of segments
X		in the Ringworld hex.  Must be a positive multiple
X		of two.
X	FanNames		RUN-TIME
X		Array of (exactly) six strings, used to label the
X		segments of the Fan in one of the Fan hexes.
X	DoStars			RUN-TIME
X		Boolean variable, use to determine if the starry
X		background will be printed.  Setting it false turns
X		off the stars and speeds print time considerably.
X		Spiral "planet wakes" vanish; Space Dust is unaffected.
X		Default value is true.
X
Usage:
X	Twenty-two hexes are provided in hex.ps.  To generate any of the
X	hexes, simply use the appropriate routine (no arguments).  Caveat:
X	Some of the hexes, particularly Rings and Spiral, take several
X	minutes (or longer, depending on your printer) to print.
X
X	The following routines are supplied:
X
X	Name		Description
X	--------------------------------------------------
X	StandardHex	(Eon) five planets, one sun
X	WarpHex		(Eon) the Warp
X	PrawHex		(Eon) the Warp and Praw
X	FanHex1		(Mayfair) three variations on the Fan; peacock fan,
X	FanHex2		 	six-way blade-like extensions,
X	FanHex3		 	and six-way Praw
X	GasGiantHex	(Eon) Gas Giant -- giant planet
X	SpaceDustHex	(Eon) Space Dust -- no planets
X	SixPactHex	(Eon) Six Pact -- six planets
X	RingsHex	(Eon) Rings -- planet with four rings
X	PulsarHex	(Eon) Pulsar -- five pulsating planets
X	SpiralHex	(Eon) Spiral -- five planets in spiral
X	BinaryHex	(Mayfair) Binary -- two suns, six planets
X	WorldShipsHex	(Mayfair) World Ships -- five rocketing planets
X	RosetteHex	(Mayfair) Rosette -- six planets
X	WarpishHex	(Cox) Warpish -- five planets orbiting a Warp
X	StationsHex	(Cox) Stations -- one planet with six space stations
X	LunacyHex1	(Cox) Lunacy -- one planet, five moons
X	LunacyHex2	(Cox) Lunacy -- two planets, six moons
X	SingularityHex	(Cox) Singularity -- five planets, trumpet device
X	IsolatedHex	(Cox) Isolated -- five planets, galactic background
X	RingworldHex	(Cox) Ringworld -- ring around a sun
X
X
XFor example, to print six standard hexes and a Warp, use
X
X	StandardHex StandardHex StandardHex
X	StandardHex StandardHex StandardHex
X	WarpHex
X
A more practical (and much faster) way to do this is to use the PostScript
X#copies variable, thus:
X
X	/#copies 6 def
X	StandardHex
X	/#copies 1 def
X	WarpHex
X
A still more practical way is to print one standard hex and then use a
photocopy machine.
X
X------------------------------------------------------------
X
LUCRE.PS
X
Description:
X	lucre.ps prints pages filled with lucre -- small labeled
X	boxes.  Several variations are available.
X
Preparation:
X	None.
X
Print Options:
X	SmallLucre		COMPILE-TIME
X		Boolean variable.  If true, Lucre is printed as squares
X		30 PostScript units (about 0.4 inches, or 1 cm) on a side,
X		with 18x24 squares per page; each square has a Lucre symbol
X		in the center.  If false, Lucre is printed as rectangles
X		30 by 90 units (0.4 by 1.2 inches, or 1 by 3 cm), with
X		6x24 rectangles per page; each has a Lucre symbol and a
X		value (1, 2, 5, 10).
X	PoundLucre		COMPILE-TIME
X		Boolean variable.  If true, the Lucre symbol is the pounds
X		sterling sign (Times font).  If false, the Lucre symbol is
X		the Ifraktur (Symbol font).  Both look vaguely L-shaped.
X
Usage:
X	Ready to use.  Simply set variables and send to printer.
X
X------------------------------------------------------------
X
MOONS.PS
X
Description:
X	moons.ps prints Moons.  Each Moon is 1 inch across; 63 Moons
X	are printed per page.  Moons are automatically numbered, and
X	include the Moon name and type (S, I, C).
X
Preparation:
X	None:
X
Print Options:
X	Mcounter		RUN-TIME
X		Integer variable indicating the number to be printed on
X		the first Moon in the sequence.  Moons are numbered
X		consecutively, starting with whatever value Mcounter is
X		assigned.
X
Usage:
X	The routine Moon prints a Moon.  Moon has two arguments:  the
X	name of the Moon, provided as an array of strings, and the type
X	of the Moon, provided as a single-character string.  The name
X	should be at most three strings long (each string is printed on
X	a separate line).  The strings Secret, Immediate, and Continuing
X	are pre-defined for use as the type.  For example, the following
X	lines each print a Moon:
X
X	[ (TITAN) ] Secret Moon
X	[ (JUPITER) (VIII) ] Immediate Moon
X	[ (LUNA) (CITY) (SEVEN) ] (Q) Moon
X
X	The type of the last Moon is "Q", whatever that might mean.
X
X	To set the Moon number to anything you wish, simply re-defined
X	Mcounter before using the Moon routine.  For example, to number
X	the above Moons 23, 24, and 76, you could use:
X
X	/Mcounter 23 def
X	[ (TITAN) ] Secret Moon
X	[ (JUPITER) (VIII) ] Immediate Moon
X	/Mcounter 76 def
X	[ (LUNA) (CITY) (SEVEN) ] (Q) Moon
X
X	The "JUPITER VIII" Moon will be numbered 24 by the automatic
X	incrementing of the counter during printing. 
X
X	To create a printable file, begin with the line "Setup".  Then add
X	the PostScript code to generate the Moons you want.  Finally add
X	the line "Finished".
X
X------------------------------------------------------------
X
POWERS.PS
X
Description:
X	powers.ps prints power cards.  Either three or six power cards
X	may be printed on each page.  Cards printed three per page are
X	3.5 inches by 8 inches, and look somewhat like the Eon cards;
X	i.e., they can be folded in half so that the front shows the
X	alien name, a brief synopsis of the power, and (if you do the
X	work) a line drawing of the alien, while the back gives the name,
X	power effect, history, and use restrictions.  Cards printed six
X	per page contain only the back half of the Eon card.  In addition,
X	the source of the card (e.g., Eon Expansion 3) and whether the
X	power is mandatory or optional (or both) is printed on the lower
X	edge of the card.
X
Preparation:
X	Concatenate font.ps on the beginning of powers.ps before use.
X	Be sure the resulting file begins with the characters %!.
X
Print Options:
X	SixPerPage		COMPILE-TIME
X		Boolean variable; if true, six cards are printed per
X		page, if false three.
X	WhiteOnBlack		RUN-TIME
X		Boolean variable; if true, cards are printed in white
X		letters on a black background, if false in black letters
X		on a white background.
X	DoStars			RUN-TIME
X		Boolean variable; if true AND WhiteOnBlack is true, the
X		card background will be filled with stars (like the Eon
X		cards); if either is false, no stars are printed.
X	ShowRestrictions	RUN-TIME
X		Boolean variable; if true, prints the use restrictions
X		as small icons on the lower edge the card (the front
X		edge if three cards are printed per page, the back
X		edge if six cards).
X
Usage:
X	The Power routine has ten arguments.  The first nine arguments
X	are strings, the last is an executable.  The arguments are:
X
X	1) Name
X		The Alien name, as a string; for example, (AMOEBA)
X
X	2) Usage
X		Whether the power is mandatory, optional, or both.
X		The strings Mandatory, Optional, and Both have been
X		pre-defined.
X
X	3) Origin
X		Where the power came from.  The strings Set0, Set1, ...
X		Set9 have been predefined as "Original Set", "Expansion 1",
X		... "Expansion 9"; the string SetW has been predefined
X		as "Washington U".
X
X	4) Synopsis
X		The brief description of the power as it appears on the
X		front of the card; for example, (UNLIMITED TOKEN MOVEMENT).
X
X	5) Tag
X		The power to/of/over/whatever that starts the description
X		of the effects; specifically, the description starts "You
X		have the ", which is followed by the Tag in bold and a
X		period.
X
X	6) Description
X		The remainder of the power description; this will continue
X		the paragraph begun by the Tag.
X
X	7) History
X		The Alien history.
X
X	8) Restrictions
X		The "do not use with" or "use only with" restrictions for
X		the power.  Do not confuse these with the icons.  If the
X		power has no restrictions, use ().
X
X	9) RestrictIcons
X		A string representing the use/timing restrictions.  The
X		encoding is the same as for the Flare card.  For example,
X		a power that could only be used with Lucre but not in a
X		two-player game would be represented by (2L) or (L2).
X		Use () for no restrictions.
X
X	10) Portrait
X		An executable which draws the Alien.  Aliens are drawn in
X		a circle of radius 100, with the origin at the circle's
X		center.  Use { } if there is no artwork.
X
X	For example:
X
X(AUCTIONEER) Mandatory SetW
X(SELLS CARDS FOR LUCRE) (power to auction)
X(Before the start of each player's turn, take the top card of the deck, \
place it face up in front of you, and auction it for Lucre. All bids must \
be at least one Lucre, and you cannot prevent any of the other players \
from participating; however, you cannot bid. The high bidder pays you and \
takes the card for his hand. If no one bids, you may take the card for \
your own hand or discard it.)
X(A resource crunch on their home worlds led to fierce competition among \
Auctioneers for the remaining materials. Those Auctioneers who controlled \
the dwindling supplies profited from the desperate struggles of their \
fellows. Contact with other races allieviated the shortages, but the \
Auctioneers remain quick to exploit the needs of others to enrich themselves.)
X(Use only in a game with Lucre!) (L)
X{ }
Power
X
X	To create a printable file, begin with the line "Setup".  Then add
X	the PostScript code to generate the powers you want.  Finally add
X	the line "Finished".
X
END_OF_FILE
if test 30801 -ne `wc -c <'PS-headers/PS_usage'`; then
    echo shar: \"'PS-headers/PS_usage'\" unpacked with wrong size!
fi
# end of 'PS-headers/PS_usage'
fi
if test -f 'PS-headers/README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/README'\"
else
echo shar: Extracting \"'PS-headers/README'\" \(4245 characters\)
sed "s/^X//" >'PS-headers/README' <<'END_OF_FILE'
Cosmic Encounter PostScript Archive
X	version 1.1 (June 1991)
Copyright (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
Distributed as freeware
X
This archive directory contains PostScript files which print materials
for Cosmic Encounter.  TO USE THESE FILES, YOU MUST HAVE A POSTSCRIPT
PRINTER (such as the Apple Laserwriter, NeXT printer, or QMS printer);
the files are of NO use to you otherwise.
X
X------------------------------------------------------------
X
USE WARNING
X
Do not ever sell anything produced with this code.  You may use it
to make materials for your personal use, but selling materials is
a violation of the Cosmic Encounter copyrights (held by Eon Games,
currently licensed to Mayfair Games).
X
X------------------------------------------------------------
X
MANIFEST
X
PS_intro	version 1.1	Brief introduction to PostScript syntax
PS_usage	version 1.1	Usage guide to the PostScript headers
README		version 1.1	This file
back.ps		version 1.1	PostScript for card backs
cards.ps	version 1.1	PostScript for cards
cone.ps		version 1.0	PostScript for Cone
font.ps		version 1.01	PostScript fonts; used with other files
hex.ps		version 1.1	PostScript for hexes
lucre.ps	version 1.0	PostScript for Lucre
moons.ps	version 1.0	PostScript for Moons
powers.ps	version 1.1	PostScript for power cards
pure.ps		version 1.0	"Purist" version of cards.ps
X
X------------------------------------------------------------
X
SEE ALSO
X
The archive "PS-examples" contains example uses of most of the files;
each example can be concatenated onto the end of the corresponding
header and the result printed.
X
The archive "CE-convert" contains a program to transform "raw text"
Power and Flare descriptions into PostScript.
X
X------------------------------------------------------------
X
PREPARATION
X
The file font.ps contains definitions of two fonts and some typesetting
routines which are used by the files back.ps, cards.ps, hex.ps, and
powers.ps.  font.ps must be concatenated onto the beginning of each
of these files before they can be used.  You can either prepend font.ps
to each file immediately, or keep it separate and concatenate the files
whenever you print.  The latter is particularly convenient in a UNIX
environment, where you can for example do
X
X	cat font.ps cards.ps card_defs.ps | lpr -Papple
X
where card_defs.ps is a file that you have generated which contains
uses of the PostScript routines, and "apple" is the name of your
LaserWriter.
X
X------------------------------------------------------------
X
KNOWN BUGS
X
X1) Certain printers do not seem to handle save/restore pairs as they
should.  This may be encountered in cards.ps and powers.ps.
X
To correct, edit these files and search for the words "save" and
X"restore" (NOT "gsave" and "grestore"); they will occur in lines
resembling
X	save /Psave exch def
and
X	Psave restore
Simply delete all such lines.  (The name "Psave" may be something
else, such as Fsave, Esave, etc.).
X
X2) Some older-model printers do not handle the font NewHelvetica
X(defined in font.ps) correctly.  If your powers are printed with the
power name, "power to/of X", and "History:" correct, but the power
description is missing or printed in "chicken scratch", this is
probably the problem.  The problem also affects the text of Flares,
XEdicts, Hazards, etc.
X
To correct, edit cards.ps and powers.ps and change all occurrences
of /NewHelvetica to /Helvetica.
X
If you make this change, the typesetting routines will not work as
described in PS_intro.  Specifically, the non-printing characters will
NOT print as spaces, and the tab will NOT print as a three-character
space; instead all these characters print as zero-width spaces (i.e.,
X(hello\tthere) prints as hellothere instead of hello   there).  The
character \r still breaks a line.
X
X3) Some printers may produce a "dictfull" error on font.ps and/or
cards.ps.  I am unable to explain this, as all the dictionaries should
be more than large enough.  If this happens to you, try increasing the
size of the dictionaries.  Find all occurences of the "dict" operator;
they will be in lines of the form
X	/DictionaryName number dict def
where "number" is an integer.  Try doubling these numbers; for example,
change
X	/AttackInfoDict 12 dict def
to
X	/AttackInfoDict 24 dict def
END_OF_FILE
if test 4245 -ne `wc -c <'PS-headers/README'`; then
    echo shar: \"'PS-headers/README'\" unpacked with wrong size!
fi
# end of 'PS-headers/README'
fi
if test -f 'PS-headers/back.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/back.ps'\"
else
echo shar: Extracting \"'PS-headers/back.ps'\" \(3633 characters\)
sed "s/^X//" >'PS-headers/back.ps' <<'END_OF_FILE'
X%!
X% PRINT BACKS FOR COSMIC ENCOUNTER CARDS
X%	version 1.0, May 8 1991
X%	version 1.01, June 1991 -- fixed a stupid error in INrand
X%	version 1.1, June 1991 -- all variables run-time
X%
X% Code copyrighted (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
X% Distributed as Freeware
X%
X% This file requires the file font.ps before it can be printed.
X% Concatenate font.ps onto the FRONT of this file before using.
X
X% PRINT OPTIONS
X
X/StellarNumber 0 def		% random-generator seed
X
X
X% GENERAL CONSTANTS
X
X/Width 162 def /Height 252 def
X/MoonDelta 80 def /MoonXMAX 7 def /MoonYMAX 9 def
X
X/FLrand { rand 1000000 mod 1000000.0 div } def
X/INrand { rand exch mod } def
X
X
X% INFORMATION ABOUT THE STELLAR BACKGROUND
X
X/Pattern0 16 array def
X/Pattern1 100 array def
X/Pattern2 16 array def
X
X/CreateField {
X	StellarNumber srand
X
X	0 1 15 {
X		Pattern0 exch [
X			4 INrand 4 add FLrand 6.0 mul 4.0 add
X			Width INrand Height INrand
X		] put
X	} for
X	0 1 99 {
X		Pattern1 exch [
X			1 string dup 0 10 INrand 8#240 add put
X			Width INrand Height INrand
X		] put
X	} for
X	0 1 15 {
X		Pattern2 exch [
X			1 string dup 0 12 INrand 8#252 add put
X			Width INrand Height INrand
X		] put
X	} for
X} def
X
X
X
X% INFORMATION ABOUT THE MOON BACKGROUND
X
X/MoonArray [
X	[ 0 20 8 ] [10 70 5 ] [ 15 0 3 ] [ 18 35 3 ] [ 20 30 3 ]
X	[ 24 12 4 ] [ 27 65 3 ] [ 35 3 4 ] [ 35 50 10 ] [ 45 15 6 ]
X	[ 50 75 6 ] [ 52 12 5 ] [ 58 30 4 ] [ 62 58 8 ] [ 65 4 3 ]
X	[ 68 50 4 ] [ 74 18 3 ]
X] def
X
X
X% CREATE THE STELLAR BACKGROUND
X
X/StellarField {
X	gsave
X	clippath 0 setgray fill newpath 1 setgray
X	612 Width idiv 1 add 792 Height idiv 1 add
X	{
X		dup {
X			Pattern0 {
X				aload pop gsave translate dup scale
X				0 0.3 moveto 0 0 0.3 0 360 arc fill
X				dup 360.0 exch div exch {
X					0.1 0 moveto 0 1.0 lineto
X					-0.1 0 lineto closepath fill
X					dup rotate
X				} repeat pop
X				closepath fill
X				grestore
X			} forall
X			SF setfont
X			Pattern1 { aload pop moveto show } forall
X			GF setfont
X			Pattern2 { aload pop moveto show } forall
X			Width 0 translate
X		} repeat
X		dup Width mul neg Height translate
X	} repeat pop
X	grestore
X} def
X
X/DestinyWords {
X	gsave
X	612 3 Width mul sub Width add 2.0 div
X	792 3 Height mul sub Height add 2.0 div translate
X	/Helvetica-Bold findfont 28 scalefont setfont
X	(DESTINY) stringwidth pop
X	3 { 3 {
X		gsave 50 rotate dup -2.0 div 10 sub -15 moveto
X		0 30 rlineto dup 20 add 0 rlineto 0 -30 rlineto
X		closepath 0 setgray fill 1 setgray
X		dup -2.0 div -10.5 moveto (DESTINY) show
X		grestore Width 0 translate
X	} repeat 3 Width mul neg Height translate
X	} repeat pop
X	grestore
X} def
X
X	
X/MoonField {
X	gsave 0.5 setlinewidth 0 setgray newpath
X	MoonYMAX 1 add { gsave
X		MoonXMAX 1 add {
X			MoonArray {
X				aload pop 0 360 arc
X				gsave 0.5 setgray fill grestore stroke
X			} forall
X			MoonDelta 0 translate
X		} repeat
X		grestore
X		0 MoonDelta translate
X	} repeat
X	grestore
X} def
X
X/IconField {
X	gsave
X		/CosmicFont findfont 1 index scalefont setfont
X		exch 0 get 612 2 index div 1 add cvi dup string
X		0 1 4 -1 roll 1 sub {
X			1 index exch 3 index put
X		} for exch pop 
X		792 2 index div 1 add cvi {
X			0 0 moveto dup show
X			1 index 0 exch translate
X		} repeat
X		pop pop
X	grestore
X} def
X
X/Ncopies { /#copies exch def showpage /#copies 1 def } def
X
X/StellarPage { CreateField StellarField Ncopies } def
X/DestinyPage { CreateField StellarField DestinyWords Ncopies } def
X/MoonPage { MoonField Ncopies } def
X/DiamondPage { (<) 10 IconField Ncopies } def
X/QuestionPage { (?) 12 IconField Ncopies } def
X/SquarePage { (#) 6 IconField Ncopies } def
X/DiagonalPage { (/) 8 IconField Ncopies } def
X/HazardPage { 0.5 setgray (/) 18 IconField Ncopies 0 setgray } def
X
X% END DEFINITIONS
X
X1 DestinyPage
END_OF_FILE
if test 3633 -ne `wc -c <'PS-headers/back.ps'`; then
    echo shar: \"'PS-headers/back.ps'\" unpacked with wrong size!
fi
# end of 'PS-headers/back.ps'
fi
if test -f 'PS-headers/cards.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/cards.ps'\"
else
echo shar: Extracting \"'PS-headers/cards.ps'\" \(25755 characters\)
sed "s/^X//" >'PS-headers/cards.ps' <<'END_OF_FILE'
X%!
X% PRINT ATTACK CARDS, COMPROMISE, KICKERS, EDICTS, FLARES,
X% DESTINY, HAZARD, HEX CARDS, PRISONER RULINGS
X%	version 1.0, May 8 1991
X%	version 1.0.1, May 15 1991
X%	version 1.1, Sep 1991
X%	version 1.2, Nov 1991
X%
X% Code copyrighted (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
X% Distributed as Freeware
X%
X% This file requires the file font.ps before it can be printed.
X% Concatenate font.ps onto the FRONT of this file before using.
X
X% version 1.0.1: change suggested by sandia!marms@unmvax.cs.unm.edu
X%	(Mike Arms).  The cards now print starting in the upper left
X%	corner, then proceed down the columns and across the rows.
X
X% version 1.1: Two major changes, both "transparent" to the user (your old
X%	files will still work**):
X%
X%	All print options can now be varied at print time -- i.e., you can
X%	print some cards using OriginalCards true, then make OriginalCards
X%	false (by /OriginalCards false def) and print some more.
X%
X%	The card "origin" can now be printed in the lower right corner.
X%	See the latest PS_usage for details.
X%
X%	** I just realized that I lied.  If you have modified this file
X%	to add new colors to the DestinyColorDict, you have to change
X%	that.  Each dictionary entry is now keyed by a string (as before)
X%	but the entry is an array of four values: [ red green blue gray ].
X
X% version 1.2: Added IndexByName and OneShotFlares options; added
X%	AttackResizeFonts routine and use of NoNewLine to change '\n' to ' ';
X%	arrays of strings are no longer legal in Edicts and Rulings
X
X 
X
X% PRINT OPTIONS
X
X/OriginalCards true def
X/DoInColor false def
X/WhiteOnBlack true def
X/GraphicIndex true def
X/IndexByName true def
X/OneShotFlares false def
X/DestinyFilled true def
X/ShowRestrictions false def
X/ShowOrigin false def
X/OriginString () def
X
X
X% GENERIC CONSTANTS, CONTROL ROUTINES, ETC.
X
X/Width 162 def /Height 252 def		% 2.25 inch by 3.5 inch
X/Xcenter Width 2.0 div def
X/XMAX 3 def /YMAX 3 def			% number per page
X/Xcounter 0 def /Ycounter 0 def
X/Xtrans 612 Width XMAX mul sub 2.0 div def
X/Ytrans 792 Height YMAX mul sub 2.0 div Height YMAX 1 sub mul add def
X/OneCharString (.) def
X
X% STRINGS FOR FLARES
X/PT (Power to) def /PO (Power of) def
X/PV (Power over) def /PW (Power) def
X
X/Setup {
X 	/Xcounter 0 store /Ycounter 0 store
X 	Xtrans Ytrans translate
X} def
X/Finished {
X	Xcounter Ycounter add 0 ne { showpage } if
X} def
X
X/NewCard {
X	0.2 setlinewidth
X	0 0 moveto Width 0 rlineto 0 Height rlineto Width neg 0 rlineto
X	closepath stroke
X} def
X/EndCard {
X	0 setgray
X	/Ycounter Ycounter 1 add store
X	0 Height neg translate
X	Ycounter YMAX ge {
X		/Ycounter 0 store
X		/Xcounter Xcounter 1 add store
X		Width Height YMAX mul translate
X		Xcounter XMAX ge { showpage Setup } if
X	} if
X} def
X
X
X/Center { moveto dup stringwidth pop -2.0 div 0 rmoveto show } def
X/Left { moveto show } def
X/Right { moveto dup stringwidth pop neg 0 rmoveto show } def
X/WhiteOut { gsave 1 setgray fill grestore } def
X/ReversePrint {
X	WhiteOnBlack {
X		0 0 moveto Width 0 rlineto 0 Height rlineto Width neg 0 rlineto
X		closepath gsave fill grestore
X		1 setgray stroke
X	} if
X} def
X
X
X/TypeFont /Helvetica findfont 10 scalefont def
X/TypeYpos { OriginalCards { 223 } { 230 } ifelse } def
X/ChallengeType { TypeFont setfont (CHALLENGE CARD) 147 TypeYpos Right } def
X/CenteredType { TypeFont setfont Xcenter TypeYpos Center } def
X
X/IndexFont /Helvetica findfont 30 scalefont def
X/IndexPos { 6 223 } def
X/StandardIndex { IndexFont setfont IndexPos Left } def
X
X/OriginFont /Helvetica findfont 8 scalefont def
X/OriginX Width 6 sub def /OriginY 6 def
X/Origin {
X	ShowOrigin {
X		OriginFont setfont OriginString OriginX OriginY Right
X	} if
X} def
X/DefineOrigin {
X	dup /OriginString exch store
X	length 0 ne /ShowOrigin exch store
X} def
X
X
X% ATTACK CARDS
X/AttackInfoDict 24 dict def
AttackInfoDict begin
X
X/AttackOrigFont /Helvetica-Bold findfont 34 scalefont def
X/AvalueOrigFont /Helvetica-Bold findfont 120 scalefont def
X/AvalueOrigPos 36 def
X/AttackNewFont /Helvetica-Bold findfont 26 scalefont def
X/AvalueNewFont /Helvetica-Bold findfont 104 scalefont def
X/AvalueNewPos 94 def
X/AttackString 16 string def
X
X/AttackResizeFonts {
X	dup 120 mul dup 120 exch sub 2.0 div 36 add /AvalueOrigPos exch def
X	/AvalueOrigFont exch /Helvetica-Bold findfont exch scalefont def
X	dup 104 mul dup 104 exch sub 2.0 div 94 add /AvalueNewPos exch def
X	/AvalueNewFont exch /Helvetica-Bold findfont exch scalefont def
X} def
X
X/Index { dup StandardIndex } def
X/Type { ChallengeType } def
X
X/Name { (ATTACK) Xcenter
X	OriginalCards { 171 AttackOrigFont } { 184 AttackNewFont } ifelse
X	setfont Center
X} def
X/Value { dup Xcenter
X	OriginalCards {
X		AvalueOrigPos AvalueOrigFont
X	} {
X		AvalueNewPos AvalueNewFont
X	} ifelse
X	setfont Center
X} def
X
X/Artwork {
X	gsave
X		0.5 setlinewidth
X		15 30 moveto 132 0 rlineto stroke 
X
X		gsave
X			62 25 translate
X			0 0 20 0 180 arc 1.0 0.4 scale 0 0 20 180 0 arc
X			gsave 0.5 setgray fill grestore stroke
X		grestore
X
X		[ [ 0.7 55 64 20 ] [ 0.9 84 79 15 ] [ 0.7 40 75 12 ]
X		  [ 0.9 32 50 9 ] [ 0.7 98 72 5 ] [ 0.7 127 61 0 ] ]
X		{
X			aload pop 5 index cvi lt {
X				gsave translate 1.0 0.5 scale 1.5 setlinewidth
X				0 -10 20 30 150 arc 0 10 20 210 330 arc closepath
X				gsave setgray fill grestore stroke
X				1.0 0.4 scale 2.5 setlinewidth
X				0 10 20 210 330 arc stroke
X				grestore
X			} {
X				pop pop pop
X			} ifelse
X		} forall
X
X		1 index cvi 0 gt {
X			gsave
X				116 59 translate
X				0 0 moveto -45 -21 rlineto 0 0 moveto -47 -21 rlineto
X				0 0 moveto -49 -20 rlineto 0 0 moveto -45 -23 rlineto stroke
X				-45 -21 translate 1.0 0.8 scale
X				1 1 30 {
X					2 0 moveto 18 mul 7 mod 4 add 0 rlineto stroke
X					12 rotate
X				} for
X			grestore
X		} {
X			gsave
X				62 41 translate 1.0 0.3 scale
X				0 0 5 0 360 arc WhiteOut stroke
X			grestore
X			gsave
X				58 47 translate 0.5 1.0 scale
X				0 0 5 0 360 arc WhiteOut stroke
X			grestore
X			[ [ 1 96 18 ] [ -1 120 22 ] ]  {
X				aload pop gsave translate 1 scale
X				1.5 setlinewidth 0 4 moveto 0 0 lineto -5 0 lineto stroke
X				0.75 setlinewidth -2.5 2 moveto 0 3 lineto 1 2 lineto
X				3 2 lineto -6 -3 moveto -5 0 lineto -4 -3 lineto
X				-1 -3 moveto 0 0 lineto 1 -3 lineto stroke
X				grestore
X			} forall
X			0.3 setlinewidth
X			100 20 moveto 0 3 rlineto 16 -6 rlineto 0 -3 rlineto closepath stroke
X			100 20 moveto 24 4 rlineto 16 -6 rlineto -48 -8 rlineto
X			-16 6 rlineto closepath stroke
X			110 25 1 0 360 arc fill
X		} ifelse
X	grestore
X} def
X
end
X
X
X
X% COMPROMISE CARDS
X
X/CompInfoDict 16 dict def
CompInfoDict begin
X
X/CompOrigFont /Helvetica-Bold findfont 34 scalefont def
X/CnoteOrigFont /Helvetica findfont 12 scalefont def
X/CompNewFont /Helvetica-Bold findfont 18 scalefont def
X/CnoteNewFont /Helvetica findfont 14 scalefont def
X
X/Index { (C) StandardIndex } def
X/Type { ChallengeType } def
X
X/Name { OriginalCards {
X		CompOrigFont setfont (COMP-) Xcenter 171 Center
X		(ROMISE) Xcenter 135 Center 
X	} {
X		CompNewFont setfont (COMPROMISE) Xcenter 183 Center
X	} ifelse
X} def
X/Note { OriginalCards {
X		CnoteOrigFont setfont (MAKE A DEAL, OR) Xcenter 81 Center
X		(TAKE CONSOLATION) Xcenter 63 Center
X	} {
X		CnoteNewFont setfont (Play to make a deal,) Xcenter 48 Center
X		(or to take consolation) Xcenter 30 Center
X	} ifelse
X} def
X
X/Artwork {
X	gsave
X		23 80 translate newpath 0 setgray 0.5 setlinewidth
X		gsave  35 50 translate ArtBird grestore
X		gsave  60  8 translate ArtTable grestore
X		gsave  18 30 translate ArtHexapod grestore
X		gsave 100 52 translate ArtTrinoc grestore
X	grestore
X} def
X
X/ArtBird {
X	5 22 moveto -3 20 -5 -5 -7 -15 curveto -3 -10 0 -10 0 0 curveto
X	8 0 8 8 9 9 curveto 10 10 10 18 6 22 curveto stroke
X	10 24 moveto 12 0 rlineto 2 -2 rlineto -14 0 rlineto
X	19 22 moveto -2 -2 rlineto -7 0 rlineto stroke
X	3 15 moveto 3 8 1 6 -3 5 curveto stroke
X	3 26 moveto -1 28 -5 28 -9 26 curveto
X	3 26 moveto -1 27 -7 25 -12 23 curveto stroke
X	6 22 5 0 360 arc WhiteOut stroke
X	5 24 2 0 360 arc fill
X	3 5 moveto 0 -10 rlineto 5 5 moveto 6 -4 rlineto 3 3 rlineto
X	0 4 rlineto 0 -4 rmoveto 3 3 rlineto stroke
X	gsave
X		13 0 translate
X		0 0 12 45 90 arc 0 0 8 90 45 arcn closepath
X		60 rotate 8 0 moveto 12 0 lineto 10 rotate 8 0 moveto 12 0 lineto
X		10 rotate 8 0 moveto 12 0 lineto stroke
X	grestore
X	5 -35 translate
X	gsave 1 0.3 scale 0 0 6 0 360 arc fill grestore
X	3 setlinewidth 0 0 moveto 0 30 lineto stroke
X	2 setlinewidth -12 30 moveto 24 0 rlineto stroke
X} def
X
X/ArtTable {
X	0 0 moveto 10 5 rlineto 0 2 rlineto -10 -5 rlineto
X	-10 5 rlineto 0 -2 rlineto 10 -5 rlineto closepath
X	WhiteOut stroke
X	0 0 moveto 10 -5 rlineto 0 2 rlineto -10 5 rlineto
X	-10 -5 rlineto 0 -2 rlineto 10 5 rlineto closepath 
X	WhiteOut stroke
X	2 2 moveto 0 25 rlineto -4 0 rlineto 0 -25 rlineto closepath
X	WhiteOut stroke
X
X	gsave -4 -10 translate
X		0 0 moveto 14 7 rlineto 0 2 rlineto -14 -7 rlineto closepath
X		0 0 moveto 14 7 rlineto 18 -4 rlineto -14 -7 rlineto closepath
X		14 7 moveto 18 -4 rlineto 0 2 rlineto -18 4 rlineto closepath
X		14 9 moveto 18 -4 rlineto -8 10 rlineto -18 4 rlineto closepath
X		WhiteOut stroke
X
X		gsave
X			17 2 translate 1.0 0.4 scale
X			0 0 moveto 0 0 8.5 15 50 arc closepath
X			0 0 moveto 0 0 8.5 50 80 arc closepath
X			0 0 moveto 0 0 8.5 140 190 arc closepath
X			gsave 0.5 setgray fill grestore stroke
X		grestore
X
X		0 0 moveto 18 -4 rlineto 0 2 rlineto -18 4 rlineto closepath
X		18 -4 moveto 14 7 rlineto 0 2 rlineto -14 -7 rlineto closepath
X		WhiteOut stroke
X	grestore
X
X	0 25 translate 1.0 0.3 scale
X	0 0 30 0 360 arc WhiteOut stroke
X	[ [ 0 -5 ] [ 0 14 ] [ 12 -16 ] [ -12 -16 ] ] {
X		gsave aload pop translate
X			3 -4 moveto 6 8 rlineto -6 8 rlineto -6 0 rlineto
X			-6 -8 rlineto 6 -8 rlineto closepath fill
X		grestore
X	} forall
X	[ [ 1 14 8 ] [ -1 -12 9 ] [ 1 -20 -6 ] ] {
X		gsave aload pop translate 1 scale
X			0 0 moveto 2 0 rlineto -1 15 rlineto -1 -15 rlineto
X			-3 0 rlineto 1 15 rlineto 3 0 rlineto stroke
X		grestore
X	} forall
X} def
X
X
X/ArtHexapod {
X	0 20 moveto -8 15 -8 5 0 0 curveto
X	8 5 8 15 0 20 curveto stroke
X	gsave -5 11 translate 0.4 1.0 scale 0 0 3 0 360 arc fill grestore
X	gsave -0.5 11 translate 0.6 1.0 scale 0 0 3 0 360 arc fill grestore
X	gsave 4 11 translate 0.5 1.0 scale 0 0 3 0 360 arc fill grestore
X
X	0 -25 moveto 8 0 rlineto 0 -4 rlineto 0 -25 moveto -8 0 rlineto
X	0 -4 rlineto 0 -25 moveto 5 3 rlineto 0 -4 rlineto 0 -25 moveto
X	-5 3 rlineto 0 -4 rlineto 0 -25 moveto 5 -3 rlineto 0 -4 rlineto
X	0 -25 moveto -5 -3 rlineto 0 -4 rlineto -4 -9 moveto -5 -1 rlineto
X	0 -6 rlineto 1 -3 rlineto 2 -9 moveto 4 2 rlineto 1 -5 rlineto
X	-1 -3 rlineto stroke
X
X	0 0 moveto -7 -10 -7 -15 0 -25 curveto
X	7 -15 7 -10 0 0 curveto closepath WhiteOut stroke
X
X	-3 -9 moveto -4 2 rlineto -2 5 rlineto -2 0 rlineto stroke
X	1 -9 moveto 2 -1 rlineto -1 -4 rlineto -2 -3 rlineto stroke
X	5 -9 moveto 5 -2 rlineto 2 5 rlineto -1 4 rlineto stroke
X
X	-11 1 moveto -12.5 2 -13.5 2 -15 1 curveto
X	-13.5 0 -12.5 0 -11 1 curveto -11 -5 lineto
X	-12.5 -6 -13.5 -6 -15 -5 curveto -15 1 lineto
X	stroke
X
X	gsave 1.0 0.6 scale 0 0 2 0 360 arc WhiteOut stroke grestore
X
X 	11 -10 translate 0 0 12 60 110 arc 0 0 8 110 60 arcn closepath
X	WhiteOut stroke
X 	80 rotate 8 0 moveto 12 0 lineto 10 rotate 8 0 moveto 12 0 lineto
X 	10 rotate 8 0 moveto 12 0 lineto stroke
X} def
X
X/ArtTrinoc {
X	gsave 0 -35 translate 1.0 0.3 scale
X		1 2 9 { 0 exch 0 exch 0 360 arc stroke 0 -10 translate } for
X	grestore
X	gsave -15 -10 translate
X	 	0 0 12 75 110 arc 0 0 8 110 75 arcn closepath
X 		95 rotate 8 0 moveto 12 0 lineto
X 		10 rotate 8 0 moveto 12 0 lineto stroke
X	grestore
X
X	-3 -6 moveto -9 -10  -14 -12  -17 -14 curveto
X	-4 0 rlineto 1 -1 rlineto -2 -1 rlineto 2 -0.5 rlineto -1 -2 rlineto
X	-16 -15 lineto -12 -13  -9 -14  -4 -10 curveto
X	gsave closepath 1 setgray fill grestore stroke
X
X	3 -2 moveto 3 -6 lineto 3 -9 7 -10 6 -15 curveto
X	5 -20 lineto 4 -25 9 -28 12 -34 curveto
X	3 -22  1 -22  6 -35 curveto 1 -22  -1 -22  0 -36 curveto 
X	-1 -22  -3 -22  -6 -36 curveto -3 -22  -5 -22  -11 -35 curveto 
X	-7 -22 -6 -20 -6 -18 curveto -6 -16 -2 -5 -4 -2 curveto
X	closepath WhiteOut stroke
X
X	3 -11 moveto -2 -19  -8 -19  -15 -6 curveto
X	-3 5 rlineto 1 -1 rlineto 0 2 rlineto 1 -2 rlineto 1 2 rlineto
X	-14 -5 lineto -6 -17 -2 -14 0 -10 curveto
X	gsave closepath 1 setgray fill grestore stroke
X
X	-1 2 5 0 360 arc closepath WhiteOut stroke
X	0 0 8 0 180 arc -6 0 2 180 360 arc -2 0 2 180 0 arcn
X	4 0 4 180 360 arc closepath WhiteOut stroke
X
X	[ [ 5 -6 -6 11 ] [ 2 -9 -2 15 ] [ -3 -7 3 12 ] ] {
X		gsave aload pop translate
X			0 0 moveto 4 4 4 -1 1 arcto 4 { pop } repeat
X			lineto stroke
X			0 0 2 0 360 arc WhiteOut stroke
X			-0.5 -0.3 0.7 0 360 arc fill
X		grestore
X	} forall
X
X} def
X
X
end
X
X
X
X% KICKERS
X
X/KickerInfoDict 16 dict def
KickerInfoDict begin
X
X/KickerOrigFont /Helvetica-Bold findfont 34 scalefont def
X/KickerNewFont /Helvetica-Bold findfont 26 scalefont def
X/KsymFont /Symbol findfont 28 scalefont def
X/KvalueOrigFont /Helvetica-Bold findfont 120 scalefont def
X/KvalueNewFont /Helvetica-Bold findfont 110 scalefont def
X/KnoteFont /Helvetica findfont 12 scalefont def
X/KickerString 16 string def
X
X/Type { (KICKER) CenteredType } def
X
X/Index {
X	KsymFont setfont 2 index IndexPos 3 add Left
X	0 -3 rmoveto IndexFont setfont dup show
X} def
X
X/Name { OriginalCards {
X		KickerOrigFont setfont (KICKER) Xcenter 171 Center
X	} {
X		KickerNewFont setfont 3 index Xcenter 185 Center
X	} ifelse
X} def
X
X/Value { OriginalCards {
X		KvalueOrigFont setfont dup Xcenter 72 Center
X	} {
X		KvalueOrigFont setfont dup Xcenter 78 Center
X	} ifelse
X} def
X
X/Note { 
X	KnoteFont setfont
X	OriginalCards {
X		(PLAY WITH) Xcenter 54 Center
X		(CHALLENGE CARD TO) Xcenter 36.5 Center
X		(ALTER ITS EFFECT) Xcenter 19 Center
X	} {
X		1 index Xcenter 40 Center
X		(OF CHALLENGE CARD) Xcenter 25 Center
X	} ifelse
X} def
X
X/GenericKicker {
X	KickerString cvs 5 -1 roll {
X		NewCard ReversePrint Index Origin Type Name Value Note EndCard
X	} repeat
X	4 { pop } repeat
X} def
X
end
X
X
X% EDICT CARDS and their "relatives" (rulings, etc.)
X
X/EdictInfoDict 24 dict def
XEdictInfoDict begin
X
X/EdictFont /Helvetica-Bold findfont 26 scalefont def
X/EtextFont /NewHelvetica findfont [10 0 0 12 0 0 ] makefont def
X/EboldFont /Helvetica-Bold findfont [10 0 0 12 0 0 ] makefont def
X/EindexFont /Helvetica-Bold findfont 4.8 scalefont def
X
X/LeftMargin 15 def /RightMargin Width LeftMargin sub def
X/LineLength RightMargin LeftMargin sub def
X
X/Index {
X	GraphicIndex {
X		gsave newpath 4 index exec
X		gsave clip newpath
X		0 index length 0 eq IndexByName and {
X			EindexFont setfont
X			3 index dup length 2.4 mul 3.6 sub 0 exch translate
X			{
X				dup stringwidth pop -2.0 div 0 moveto show
X				0 -4.8 translate
X			} forall
X		} {
X			0 index exec
X		} ifelse
X		grestore
X		1.2 setlinewidth stroke
X		grestore
X	} {
X		5 index StandardIndex
X	} ifelse
X} def
X
X/Type { 6 index CenteredType } def
X/Name {
X	EdictFont setfont /Eypos 190 def
X	3 index { Xcenter Eypos Center /Eypos Eypos 27 sub def } forall
X} def
X/Description {
X	/Eypos Eypos 7 sub def EboldFont setfont
X	LeftMargin Eypos moveto 2 index show ( ) show
X	EtextFont setfont
X	currentpoint pop RightMargin exch sub
X	dup 20 gt { 2 index BreakLine show } { pop 1 index } ifelse
X	/Eypos Eypos 13 sub def
X	{
X		dup length 0 eq { pop exit } if
X		LeftMargin Eypos moveto
X		LineLength exch BreakLine show
X		/Eypos Eypos 13 sub def
X	} loop
X} def
X
X/GenericEdict {
X	4 index NoNewLine pop 8 3 roll 5 -1 roll
X	{
X		NewCard Origin Index Type Name
X		save /Esave exch def
X		Description
X		Esave restore
X		EndCard
X	} repeat
X	7 { pop } repeat
X} def
X
end
X
X
X% FLARES
X/FlareInfoDict 24 dict def
XFlareInfoDict begin
X
X/FpowerFont /Helvetica-Oblique findfont 12 scalefont def
X/FnameFont /Helvetica-Bold findfont 16 scalefont def
X/FboldFont /Helvetica-Bold findfont 8 scalefont def
X/FnoteFont /NewHelvetica findfont 8 scalefont def
X/FindexFont /Helvetica-Bold findfont 30 scalefont def
X
X/LeftMargin 15 def /RightMargin Width LeftMargin sub def
X/LineLength RightMargin LeftMargin sub def
X
X/Index {
X	GraphicIndex {
X		newpath 36 216 23 0 360 arc
X		WhiteOnBlack { gsave 1 setgray fill grestore } if
X		gsave clip 36 216 translate 0.23 dup scale newpath 0 setgray
X		0 index length 0 eq IndexByName and {
X			FindexFont setfont 50 rotate
X			5 index dup stringwidth pop 0.4 mul rotate
X			{
X				OneCharString exch 0 exch put
X				OneCharString dup stringwidth pop
X				dup -0.4 mul dup rotate exch
X				-2.0 div 70 moveto exch show rotate
X			} forall
X		} {
X			0 index exec
X		} ifelse
X		grestore
X		1.0 setlinewidth stroke
X	} {
X		(F) StandardIndex
X	} ifelse
X	ShowRestrictions {
X		IF setfont 3 index Width 6 sub Height 15 sub Right
X	} if
X} def
X
X/Type {
X	TypeFont setfont (FLARE)
X	GraphicIndex { 108 225 Center } { CenteredType } ifelse
X	OneShotFlares {
X		FboldFont setfont (ONE-SHOT FLARE) Xcenter OriginY Center
X	} if
X} def
X
X/Power { 
X	FpowerFont setfont /Fypos 210 def
X	GraphicIndex { 108 } { Xcenter } ifelse
X	5 index {
X		1 index Fypos Center /Fypos Fypos 13 sub def
X	} forall
X	pop
X} def
X
X/Name { FnameFont setfont 5 index LeftMargin 175 Left /Fypos 170 def } def
X/Text { 
X	/Fypos Fypos 7 sub def
X	FboldFont setfont LeftMargin Fypos moveto show
X	FnoteFont setfont currentpoint pop RightMargin exch sub exch
X	BreakLine show
X	/Fypos Fypos 9 sub def
X	{ 
X		dup length 0 eq { pop exit } if
X		LeftMargin Fypos moveto
X		LineLength exch BreakLine show
X		/Fypos Fypos 9 sub def
X	} loop
X} def
X
end
X
X
X
X/DestinyInfoDict 32 dict def
DestinyInfoDict begin
X
X/DestinyFont /Helvetica-Bold findfont 22 scalefont def
X/DtextFont /NewHelvetica findfont 12 scalefont def
X/DtextSmallFont /NewHelvetica findfont 10 scalefont def
X
X/LeftMargin 15 def /RightMargin Width LeftMargin sub def
X/LineLength RightMargin LeftMargin sub def
X
X/DestinyColorDict 12 dict def
X	DestinyColorDict begin
X		(red) [ 1.0 0.0 0.0 0.3 ] def
X		(pink) [ 1.0 0.6 0.6 1.0 ] def
X		(orange) [ 1.0 0.6 0.0 0.8 ] def
X		(yellow) [ 1.0 1.0 0.0 1.0 ] def
X		(green) [ 0.0 1.0 0.0 0.5 ] def
X		(blue) [ 0.0 0.0 1.0 0.2 ] def
X		(cyan) [ 0.0 1.0 1.0 0.7 ] def
X		(purple) [ 0.7 0.0 1.0 0.4 ] def
X		(white) [ 1.0 1.0 1.0 1.0 ] def
X		(gray) [ 0.6 0.6 0.6 0.6 ] def
X		(black) [ 0.0 0.0 0.0 0.0 ] def
X		(brown) [ 0.35 0.2 0.0 0.2 ] def
X	end
X
X/FillDestinyColor {
X	dup DestinyColorDict exch known {
X		gsave
X			DestinyColorDict exch get aload pop
X			DoInColor { pop setrgbcolor }
X			{ setgray pop pop pop } ifelse
X			fill
X		grestore
X	} { pop } ifelse
X} def
X
X/Type { (DESTINY) CenteredType } def
X
X/NoMod 0 def /RevMod 1 def /CapMod 2 def
X
X/ModArray [
X	{ }
X	{ gsave
X		newpath 0 setgray
X		Xcenter 140 translate
X		0 0 20 0 360 arc fill
X		1.0 0.5 scale
X		-10 20 moveto 0 -30 lineto 10 20 lineto closepath
X		gsave 1 setgray fill grestore stroke
X		0 -12 10 0 360 arc gsave 1 setgray fill grestore stroke
X		0 -12 7 0 360 arc 0 setgray stroke
X		-10 20 moveto 0 -30 10 20 4 arcto 4 { pop } repeat
X		10 20 lineto closepath
X		gsave 1 setgray fill grestore stroke
X		0 20 10 0 360 arc gsave 0.7 setgray fill grestore stroke
X	grestore }
X	{ gsave
X		newpath 0 setgray
X		Xcenter 140 translate
X		-20 -20 moveto 40 0 rlineto 0 40 rlineto -40 0 rlineto
X		closepath gsave 1 setgray fill grestore stroke
X
X		2 setlinewidth -16 -16 moveto 32 0 rlineto
X		-16 16 moveto 32 0 rlineto stroke
X		1 setlinewidth -16 4 16 { -16 moveto 0 32 rlineto } for
X		stroke
X	grestore }
X] def
X
X/ChalArray [
X	(regular challenge)
X	(reverse cone challenge)
X	(capture challenge)
X] def
X
X
X/ColorCircle {
X	newpath 0 setgray
X	Xcenter 140 60 0 360 arc closepath
X	DestinyFilled { 1 index FillDestinyColor } if stroke
X	ModArray 1 index get exec
X} def
X/ColorChallenge {
X	DtextSmallFont setfont
X	(Make a) Xcenter 54 Center
X	ChalArray 1 index get Xcenter 41 Center
X	1 index stringwidth pop (in the  system) stringwidth pop add -2.0 div
X	Xcenter add 28 moveto (in the ) show 1 index show ( system) show
X} def
X
X/BiColorCircle {
X	newpath 0 setgray
X	Xcenter 140 60 90 270 arc Xcenter 110 30 -90 90 arc
X	Xcenter 170 30 270 90 arcn closepath
X	DestinyFilled { 2 index FillDestinyColor } if stroke
X	Xcenter 140 60 -90 90 arc Xcenter 170 30 90 270 arc
X	Xcenter 110 30 90 -90 arcn closepath
X	DestinyFilled { 1 index FillDestinyColor } if stroke
X	ModArray 1 index get exec
X} def
X/BiColorChallenge {
X	DtextSmallFont setfont
X	(Make a) Xcenter 54 Center
X	ChalArray 1 index get Xcenter 41 Center
X	2 index stringwidth pop 2 index stringwidth pop add
X	(in the  or  system) stringwidth pop add -2.0 div
X	Xcenter add 28 moveto (in the ) show 2 index show ( or ) show
X	1 index show ( system) show
X} def
X
X/WildCircle {
X	gsave
X		newpath Xcenter 140 translate 0 setgray
X		DestinyColorDict length 1 gt {
X			DestinyColorDict length 360.0 exch div
X			DestinyColorDict {
X				0 0 moveto 0 0 60 0 6 index arc closepath
X				pop DestinyFilled { FillDestinyColor }
X				{ pop } ifelse stroke dup rotate
X			} forall
X			pop
X		} {
X			0 0 60 0 360 arc stroke
X		} ifelse
X	grestore
X	ModArray 1 index get exec
X} def
X/WildChallenge {
X	DtextSmallFont setfont
X	(Make a) Xcenter 54 Center
X	ChalArray 1 index get Xcenter 41 Center
X	(in any system) Xcenter 26 Center
X} def
X
X/Title {
X	DestinyFont setfont /Dypos 190 def
X	1 index { Xcenter Dypos Center /Dypos Dypos 26 sub def } forall
X} def
X
X/Note {
X	DtextFont setfont /Dypos Dypos 10 sub def
X	dup {
X		dup length 0 eq { pop exit } if
X		LeftMargin Dypos moveto
X		LineLength exch BreakLine show
X		/Dypos Dypos 13 sub def
X	} loop
X} def
X
end
X
X
X
X/HazardInfoDict 12 dict def
HazardInfoDict begin
X
X/HazardFont /Helvetica findfont 16 scalefont def
X/HnoteFont /NewHelvetica findfont 8 scalefont def
X
X/LeftMargin 21 def /RightMargin Width LeftMargin sub def
X/LineLength RightMargin LeftMargin sub def
X
X/Origin {	% OVERRIDES STANDARD ORIGIN
X	ShowOrigin { TypeFont setfont OriginString 12 12 Left } if
X} def
X
X/Artwork {
X	gsave
X		0 0 moveto 0 Height lineto Width Height lineto
X		Width 0 lineto closepath clip newpath
X		DoInColor { 1.0 0.4 0.0 setrgbcolor } { 0.4 setgray } ifelse
X		Height neg 5 add 0 translate
X		15 {
X			0 0 moveto Height dup rlineto -15 0 rlineto
X			Height neg dup rlineto closepath fill
X			30 0 translate
X		} repeat
X	grestore
X	0 0 moveto 0 Height lineto Width Height lineto
X	Width 0 lineto closepath stroke
X	10 10 moveto 10 Height 10 sub lineto Width 10 sub Height 10 sub lineto
X	Width 10 sub 10 lineto closepath
X	WhiteOut stroke
X} def
X
X/Type { gsave 0 -5 translate (HAZARD) CenteredType grestore } def
X
X/Title {
X	HazardFont setfont /Hypos 190 def
X	1 index { Xcenter Hypos Center /Hypos Hypos 18 sub def } forall
X} def
X
X/Note {
X	HnoteFont setfont /Hypos Hypos 10 sub def
X	dup {
X		dup length 0 eq { pop exit } if
X		LeftMargin Hypos moveto
X		LineLength exch BreakLine show
X		/Hypos Hypos 9 sub def
X	} loop
X} def
X
end
X
X
X
X% HEX CARDS
X/HexInfoDict 8 dict def
HexInfoDict begin
X
X/HexFont /Helvetica-Bold findfont 26 scalefont def
X
X/Name {
X	HexFont setfont
X	1 index length 1 sub 15 mul 200 add /Hypos exch def
X	1 index { Xcenter Hypos Center /Hypos Hypos 27 sub def } forall
X} def
X
X/Artwork {
X	gsave
X		Xcenter Xcenter 1.1 mul translate
X		0 Xcenter moveto 6 { 60 rotate 0 Xcenter lineto } repeat
X		closepath gsave 0 setgray fill grestore clip
X		newpath Xcenter dup scale 1.0 Xcenter div setlinewidth
X		0 index exec
X	grestore
X} def
X
end
X
X
X
X/Attack {
X	AttackInfoDict begin
X	dup AttackString cvs
X	3 -1 roll { NewCard Origin Index Type Name Value
X		OriginalCards not { Artwork } if EndCard } repeat
X	pop pop
X	end
X} def
X
X/AttackResizeFonts {
X	AttackInfoDict begin AttackResizeFonts end pop
X} def
X
X/Compromise {
X	CompInfoDict begin
X	{ NewCard Origin Index Type Name Note
X		OriginalCards not { Artwork } if EndCard } repeat
X	end
X} def
X
X/Kicker {
X	KickerInfoDict begin
X	(TIMES) OriginalCards { () } { (\264) } ifelse (MULTIPLIES EFFECT)
X	4 -1 roll GenericKicker
X	end
X} def
X/AddKicker {
X	KickerInfoDict begin
X	(PLUS) (+) (ADDS TO EFFECT)
X	4 -1 roll GenericKicker
X	end
X} def
X
X/Edict {
X	EdictInfoDict begin
X	(EDICT) (E) { 20 234 translate 0 0 13 0 360 arc }
X	GenericEdict
X	end
X} def
X
X/Flare {
X	FlareInfoDict begin
X	NewCard ReversePrint
X	Index Origin Type Power Name
X	save /Fsave exch def
X	2 index NoNewLine (Wild: ) Text
X	1 index NoNewLine (Super: ) Text
X	Fsave restore
X	EndCard
X	6 { pop } repeat
X	end
X} def
X
X/ColorDestiny {
X	DestinyInfoDict begin
X	NoMod 3 -1 roll
X	{
X		NewCard Origin Type ColorCircle ColorChallenge EndCard
X	} repeat
X	pop pop
X	end
X} def
X/BiColorDestiny {
X	DestinyInfoDict begin
X	NoMod 4 -1 roll {
X		NewCard Origin Type
X		BiColorCircle BiColorChallenge EndCard
X	} repeat
X	pop pop pop
X	end
X} def
X/WildDestiny {
X	DestinyInfoDict begin
X	NoMod exch {
X		NewCard Origin Type WildCircle WildChallenge EndCard
X	} repeat
X	pop
X	end
X} def
X
X/ReversedColorDestiny {
X	DestinyInfoDict begin
X	RevMod 3 -1 roll {
X		NewCard Origin Type ColorCircle ColorChallenge EndCard
X	} repeat
X	pop pop
X	end
X} def
X/ReversedBiColorDestiny {
X	DestinyInfoDict begin
X	RevMod 4 -1 roll {
X		NewCard Origin Type BiColorCircle BiColorChallenge EndCard
X	} repeat
X	pop pop pop
X	end
X} def
X/ReversedWildDestiny {
X	DestinyInfoDict begin
X	RevMod exch {
X		NewCard Origin Type WildCircle WildChallenge EndCard
X	} repeat
X	pop
X	end
X} def
X
X/CaptureColorDestiny {
X	DestinyInfoDict begin
X	CapMod 3 -1 roll {
X		NewCard Origin Type ColorCircle ColorChallenge EndCard
X	} repeat
X	pop pop
X	end
X} def
X/CaptureBiColorDestiny {
X	DestinyInfoDict begin
X	CapMod 4 -1 roll {
X		NewCard Origin Type BiColorCircle BiColorChallenge EndCard
X	} repeat
X	pop pop pop
X	end
X} def
X/CaptureWildDestiny {
X	DestinyInfoDict begin
X	CapMod exch {
X		NewCard Origin Type WildCircle WildChallenge EndCard
X	} repeat
X	pop
X	end
X} def
X
X/SpecialDestiny {
X	DestinyInfoDict begin NoNewLine
X	3 -1 roll {
X		NewCard Origin Type Title
X		save /Dsave exch def
X		Note
X		Dsave restore
X		EndCard
X	} repeat
X	pop pop
X	end
X} def
X
X/Hazard {
X	HazardInfoDict begin
X	3 -1 roll {
X		NewCard Origin Artwork Type Title
X		save /Hsave exch def
X		Note
X		Hsave restore
X		EndCard
X	} repeat
X	pop pop
X	end
X} def
X
X/Ruling {
X	EdictInfoDict begin
X	(RULING) (R) { 20 234 translate -13 -13 moveto 26 0 rlineto
X	0 26 rlineto -26 0 rlineto closepath } GenericEdict
X	end
X} def
X
X/Hex {
X	HexInfoDict begin
X	NewCard Origin Name Artwork EndCard
X	pop pop
X	end
X} def
X
X% END DEFINITIONS
END_OF_FILE
if test 25755 -ne `wc -c <'PS-headers/cards.ps'`; then
    echo shar: \"'PS-headers/cards.ps'\" unpacked with wrong size!
fi
# end of 'PS-headers/cards.ps'
fi
if test -f 'PS-headers/cone.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/cone.ps'\"
else
echo shar: Extracting \"'PS-headers/cone.ps'\" \(3388 characters\)
sed "s/^X//" >'PS-headers/cone.ps' <<'END_OF_FILE'
X%!
X% PRINT COSMIC ENCOUNTER CONE
X%	version 1.0, May 8 1991
X%
X% Code copyrighted (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
X% Distributed as Freeware
X
X/inch { 72 mul } def
X/cm { 28.34645 mul } def
X
X/Black { 0 setgray } def
X/Shadow { 0.5 setgray } def
X/Shade { 0.75 setgray } def
X/White { 1 setgray } def
X/Yscale 40.0 72.0 div def
X/CoordToY { Yscale div } def
X/InnerRad 3.6 cm 3.0 mul 10.5 div def
X
X/Circle { % radius Circle --
X	dup 0 moveto 0 exch 0 exch 0 360 arc
X} def
X
X/ConeTriangle {
X	0 0 moveto 3.6 cm 10.5 cm CoordToY lineto
X	-3.6 cm 10.5 cm CoordToY lineto closepath
X	White fill newpath
X	0 0 moveto 0 10.5 cm CoordToY lineto
X	-3.6 cm 10.5 cm CoordToY lineto closepath
X	Shade fill newpath
X	0 0 moveto 3.6 cm 10.5 cm CoordToY lineto
X	-3.6 cm 10.5 cm CoordToY lineto closepath
X	Black stroke
X} def
X
X/Cone {
gsave
X	1.0 Yscale scale newpath
X
X	gsave % cone triangle, first pass
X	ConeTriangle
X	grestore
X
X	gsave % defensive ovals
X	0 3.0 cm CoordToY translate
X	3.2 cm Circle gsave White fill grestore gsave Black stroke grestore
X	clip newpath
X	% shadow
X		-4 cm -1 cm CoordToY moveto 0 InnerRad neg lineto
X		0 InnerRad lineto -4 cm 1 cm CoordToY lineto closepath
X		Shadow fill newpath
X	% continue circles
X	Black
X	2.5 cm Circle stroke
X	1.8 cm Circle stroke
X	grestore
X
X	gsave % redraw part of cone damaged by defensive ovals
X	InnerRad neg 3.0 cm CoordToY moveto
X	0 3.0 cm CoordToY InnerRad 200 340 arc
X	8 cm 15 cm CoordToY rlineto -8 cm 15 lineto closepath
X	clip newpath
X	ConeTriangle
X	grestore
X
X	gsave % make bottom curve of cone
X	0 3.0 cm CoordToY InnerRad 200 340 arc
X	Black stroke
X	grestore
X
X	gsave % top oval shading
X	0 10.5 cm CoordToY translate
X	gsave 3.6 cm Circle clip newpath
X		0 1 36 {
X			0 0.1 cm CoordToY neg translate
X			3.6 cm Circle
X			cvr 36.0 div 1.0 exch sub setgray fill
X		} for
X	grestore
X	3.6 cm Circle Black stroke
X	grestore
X
grestore
X} def
X
X/LittleCone { % as above, but not as much detail
gsave
X	1.0 Yscale scale newpath
X
X	gsave % cone triangle, first pass
X	ConeTriangle
X	grestore
X
X	gsave % defensive ovals
X	Black
X	0 3.0 cm CoordToY translate
X	3.2 cm Circle gsave White fill grestore stroke
X	2.1 cm Circle stroke
X	grestore
X
X	gsave % redraw part of cone damaged by defensive ovals
X	InnerRad neg 3.0 cm CoordToY moveto
X	0 3.0 cm CoordToY InnerRad 200 340 arc
X	8 cm 15 cm CoordToY rlineto -8 cm 15 lineto closepath
X	clip newpath
X	ConeTriangle
X	grestore
X
X	gsave % make bottom curve of cone
X	0 3.0 cm CoordToY InnerRad 200 340 arc
X	Black stroke
X	grestore
X
X	gsave
X	0 10.5 cm CoordToY translate
X	gsave 3.6 cm Circle clip newpath
X		0 1 4 {
X			3.6 cm Circle
X			cvr 4.0 div 1.0 exch sub setgray fill
X			0 0.9 cm CoordToY neg translate
X		} for
X	grestore
X
X	3.6 cm Circle stroke
X	grestore
X
grestore
X} def
X
X/ConePage {
X	gsave
X		90 rotate 2 inch -7.5 inch translate
X		Black
X		0 0 moveto 4 inch 0 rlineto 0 6 inch rlineto -4 inch 0 rlineto
X		closepath gsave fill grestore White stroke
X		2 inch 0.5 inch translate
X		Cone
X
X		2.5 inch -0.5 inch translate
X		{ 1 exch sub } settransfer
X		Black
X		0 0 moveto 4 inch 0 rlineto 0 6 inch rlineto -4 inch 0 rlineto
X		closepath gsave fill grestore White stroke
X		2 inch 0.5 inch translate
X		1 setlinewidth
X		Cone
X	grestore
X	gsave
X		72 72 translate 0.10 dup scale 10 setlinewidth
X		0 setgray newpath
X		9 {
X			7 cm Circle stroke
X			0 -6.5 cm translate LittleCone
X			20 cm 6.5 cm translate
X		} repeat
X	grestore
X	showpage
X} def
X
X% END DEFINITIONS
X
ConePage
END_OF_FILE
if test 3388 -ne `wc -c <'PS-headers/cone.ps'`; then
    echo shar: \"'PS-headers/cone.ps'\" unpacked with wrong size!
fi
# end of 'PS-headers/cone.ps'
fi
if test -f 'PS-headers/font.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/font.ps'\"
else
echo shar: Extracting \"'PS-headers/font.ps'\" \(17600 characters\)
sed "s/^X//" >'PS-headers/font.ps' <<'END_OF_FILE'
X%!
X% "COSMIC ENCOUNTER" FONT
X%	version 1.01, June 1991
X%
X% Code copyrighted (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
X% Distributed as Freeware
X%
X% This file must be concatenated onto the start of back.ps, cards.ps,
X% hex.ps, and powers.ps before those files can be printed.  See the
X% instructions in README.
X
X% Font 1: the "Cosmic" font has a number of useful icons.
X
X40 dict dup begin
X	/FontType 3 def
X	/FontMatrix [0.01 0 0 0.01 0 0 ] def
X	/FontBBox [ -50 -50 100 100 ] def
X	/Encoding 256 array def
X	0 1 255 { Encoding exch /.notdef put } for
X	Encoding
X		% restrictions icons
X		dup (2) 0 get /Rtwoplayer put
X		dup (A) 0 get /Rasteroid put
X		dup (D) 0 get /Rdestiny put
X		dup (F) 0 get /Rflare put
X		dup (H) 0 get /Rhazard put
X		dup (K) 0 get /Rkicker put
X		dup (L) 0 get /Rlucre put
X		dup (M) 0 get /Rmoon put
X		dup (N) 0 get /Rmultipower put
X		dup (P) 0 get /Rprisoner put
X		dup (T) 0 get /Rtechnology put
X
X		% misc. patterns
X		dup (<) 0 get /diamond put
X		dup (?) 0 get /question put
X		dup (#) 0 get /square put
X		dup (/) 0 get /hazardback put
X
X		% timing icons
X		dup (s) 0 get /startofgame put
X		dup (8) 0 get /anytime put
X		dup (a) 0 get /moveasteroids put
X		dup (h) 0 get /drawhazard put
X		dup (l) 0 get /collectlucre put
X		dup (b) 0 get /buytokens put
X		dup (t) 0 get /techphase put
X		dup (r) 0 get /rescuetoken put
X		dup (f) 0 get /flipdestiny put
X		dup (g) 0 get /gathertokens put
X		dup (p) 0 get /pointcone put
X		dup (x) 0 get /prisonerexchange put
X		dup (q) 0 get /buycards put
X		dup (i) 0 get /inviteallies put
X		dup (u) 0 get /inviteoffensiveallies put
X		dup (v) 0 get /invitedefensiveallies put
X		dup (j) 0 get /alliesjoin put
X		dup (k) 0 get /playkicker put
X		dup (c) 0 get /playchallenge put
X		dup (e) 0 get /exposecards put
X		dup (o) 0 get /determineoutcome put
X		dup (d) 0 get /discardcards put
X		dup (n) 0 get /interphase put
X		dup (-) 0 get /timingrange put
X
X		% stars and galaxies
X		dup 8#240 /star10 put dup 8#241 /star12 put
X		dup 8#242 /star15 put dup 8#243 /star20 put
X		dup 8#244 /star25 put dup 8#245 /star30 put
X		dup 8#246 /star35 put dup 8#247 /star40 put
X		dup 8#250 /star45 put dup 8#251 /star48 put
X
X		dup 8#252 /galsp1 put dup 8#253 /galsp2 put
X		dup 8#254 /galsp3 put dup 8#255 /galsp4 put
X		dup 8#256 /galel1 put dup 8#257 /galel2 put
X		dup 8#260 /galed1 put dup 8#261 /galed2 put
X		dup 8#262 /galed3 put dup 8#263 /galed4 put
X		dup 8#264 /galir1 put dup 8#265 /galir2 put
X	pop
X
X	/BuildChar {
X		exch begin Encoding exch get CharProcs exch get
X		newpath exec end
X	} def
X
X	/iconcache {
X		100 0 0 0 100 100 setcachedevice 50 50 translate
X	} def
X	/timingcache {
X		100 0 0 0 100 100 setcachedevice 50 50 translate
X		0 0 48 0 360 arc stroke
X	} def
X	/patterncache {
X		100 0 0 0 100 100 setcachedevice
X	} def
X	/star {
X		0 0 2 index 1 add neg dup dup neg dup
X		setcachedevice
X		0 0 3 -1 roll 0 360 arc closepath fill
X	} def
X	/galcache { 0 0 -50 -50 50 50 setcachedevice } def
X	/galsp {
X		galcache
X		0 50 moveto 30 50 40 20 40 0 curveto
X		40 -20 25 -30 0 -30 curveto -15 -30 -20 -10 -20 0 curveto
X		-15 -10 -12 -25 0 -25 curveto 15 -25 35 -15 35 0 curveto
X		35 20 20 45 0 50 curveto fill
X		0 -50 moveto -30 -50 -40 -20 -40 0 curveto
X		-40 20 -25 30 0 30 curveto 15 30 20 10 20 0 curveto
X		15 10 12 25 0 25 curveto -15 25 -35 15 -35 0 curveto
X		-35 -20 -20 -45 0 -50 curveto fill
X		0 0 20 0 360 arc fill
X	} def
X	/galed {
X		galcache
X		1.0 0.1 scale 0 0 45 0 360 arc fill
X		1.0 8 scale 0 0 15 0 360 arc fill
X	} def
X	/galir { 
X		galcache
X		0 30 moveto 16 20 20 16 20 0 curveto 20 -4 12 -8 8 -10 curveto
X		4 -12 0 -6 -4 -6 curveto -6 -6 -8 -10 -14 -24 curveto
X		-16 -10 -10 -4 0 4 curveto 10 14 10 20 0 30 curveto fill
X	} def
X
X
X	/CFScol {
X		0 0 moveto 4 8 lineto 14 9 14 13 7 14 curveto 12 24 lineto
X		15 30 -15 30 -12 24 curveto -7 14 lineto -14 13 -14 9 -4 8 curveto
X		closepath
X	} def
X	/CFScd {
X		-12 24 moveto -6 21 6 21 12 24 curveto
X		4 8 moveto 2 7.5 -2 7.5 -4 8 curveto
X		7 14 moveto 6 12 lineto 3 10.5 -3 10.5 -6 12 curveto -7 14 lineto
X	} def
X	/CFScat1 {
X		gsave 1.8 2.5 scale 0 -15 translate CFScol CFScd stroke grestore
X		13 24 5 0 360 arc fill 2 30 5 0 360 arc fill
X		2 18 5 0 360 arc fill
X	} def
X	/CFScat2 {
X		gsave 40 rotate 0 10 translate
X		gsave 1.5 2.0 scale 0 -12 translate CFScol CFScd stroke grestore
X		13 24 5 0 360 arc fill 2 30 5 0 360 arc fill
X		2 18 5 0 360 arc fill grestore
X		22 -24 13 0 360 arc stroke 23 -21 5 0 360 arc stroke
X	} def
X	/CFSaq {
X		5 setlinewidth 25 5 moveto 25 23 8 -90 180 arc stroke
X		25 -4 4 0 360 arc fill
X	} def
X	/CFSdeck {
X		5 10 translate
X		30 rotate [ 1 0 -0.5 1 0 0 ] concat
X		2 6 14 { dup -50 add exch moveto 0 -30 rlineto 60 0 rlineto } for
X		stroke
X		-30 20 moveto 0 -30 rlineto 60 0 rlineto 0 30 rlineto closepath
X	} def
X	/CFShand {
X		-5 0 moveto 15 3 35 2 45 6 curveto 48 3 52 -4 52 -15 curveto
X		48 -15 lineto 43 -3 lineto 36 -10 lineto 38 -12 40 -13 43 -15 curveto
X		48 -22 43 -26 37 -20 curveto 31 -14 28 -18 20 -14 curveto
X		0 -24 lineto closepath
X	} def
X	/CFShand2 {
X		-5 0 moveto 15 3 35 2 45 7 curveto 47 8 65 5 65 0 curveto
X		65 -5 54 3 43 -3 curveto 36 -10 lineto 38 -12 40 -13 43 -15 curveto
X		48 -22 43 -26 37 -20 curveto 31 -14 28 -18 20 -14 curveto
X		0 -24 lineto closepath
X	} def
X	/CFScard {
X		43 -15 moveto 48 -22 43 -26 37 -20 curveto
X		37 -40 lineto 75 -40 lineto 75 -15 lineto closepath
X	} def
X	/CFSlucre {
X		-10 5 moveto 8 2 10 6 10 8 curveto 10 10 8 12 5 12 curveto
X		0 12 0 -10 -5 -20 curveto -10 -35 -25 -32 -15 -22 curveto
X		-15 -20 0 -30 8 -30 curveto 12 -30 15 -27 17 -25 curveto
X		-10 -10 moveto 15 0 rlineto
X	} def
X	/CFStfw {
X		gsave -5 16 translate -40 rotate
X		20 -9 25 150 0 arcn 6 0 rlineto -10 -10 rlineto
X		-10 10 rlineto 6 0 rlineto 20 -9 17 0 150 arc closepath
X		24 0 moveto 5 { 60 rotate 24 0 lineto } repeat closepath
X		eofill grestore
X	} def
X
X	/CharProcs 64 dict def
X	CharProcs begin
X		/.notdef { } def
X
X		/Rtwoplayer {
X			iconcache
X			gsave -15 0 translate 2 setlinewidth 2 {
X				0 18 6 -90 270 arc 0 -20 rlineto
X				currentpoint -8 -10 rlineto moveto
X				8 -10 rlineto -7 0 moveto 7 9 rlineto
X				7 -9 rlineto stroke 30 0 translate
X			} repeat grestore
X			4 setlinewidth 45 rotate -42 0 moveto
X			0 0 42 0 360 arc stroke
X		} def
X		/Rasteroid {
X			iconcache
X			3 setlinewidth 45 0 moveto
X			[ 30 44 36 41 42 34 39 44 42 43 42 38 42 37 38 37 40 36
X			  38 43 32 32 43 37 35 37 34 38 39 34 33 40 33 40 36 ] {
X				10 rotate 0 lineto
X			} forall
X			closepath stroke
X		} def
X		/Rdestiny {
X			iconcache
X			3 setlinewidth
X			-25 -45 moveto 50 0 rlineto 0 90 rlineto
X			-50 0 rlineto closepath stroke
X			0 5 18 0 360 arc fill
X		} def
X		/Rflare {
X			iconcache
X			3 setlinewidth 0.7 1.0 scale
X			3 {
X				5 0 moveto 0 45 lineto -5 0 lineto
X				0 -45 lineto closepath gsave fill grestore
X				stroke 60 rotate
X			} repeat
X		} def
X		/Rhazard {
X			iconcache
X			3 setlinewidth
X			-35 0 moveto 70 0 rlineto 0 30 rlineto
X			-70 0 rlineto closepath
X			gsave
X				clip newpath 7 setlinewidth
X				-60 20 40 {
X					-5 moveto 40 40 rlineto
X				} for stroke
X			grestore stroke
X			-30 0 moveto 0 -35 rlineto 5 0 rlineto
X			0 35 rlineto
X			30 0 moveto 0 -35 rlineto -5 0 rlineto
X			0 35 rlineto
X			stroke
X			-25 40 8 0 360 arc fill
X		} def
X		/Rkicker {
X			iconcache
X			8 setlinewidth
X			-40 -40 moveto 40 40 lineto
X			-40 40 moveto 40 -40 lineto
X			stroke
X		} def
X		/Rlucre {
X			iconcache
X			3 setlinewidth
X			-20 45 moveto 40 0 40 -45 0 -45 curveto
X			-40 -45 -40 0 20 45 curveto closepath
X			-10 5 moveto 8 2 10 6 10 8 curveto
X			10 10 8 12 5 12 curveto
X			0 12 0 -10 -5 -20 curveto
X			-10 -35 -15 -32 -15 -26 curveto
X			-15 -24 0 -30 8 -30 curveto
X			12 -30 15 -27 17 -25 curveto
X			-10 -10 moveto 15 0 rlineto
X			stroke
X		} def
X		/Rmoon {
X			iconcache
X			3 setlinewidth 30 rotate
X			0 0 45 40 -40 arc
X			10 0 36 -45 45 arcn
X			closepath stroke
X		} def
X		/Rmultipower {
X			iconcache 3 setlinewidth
X			[ [ -20 12 ] [ 10 -32 ] ] {
X				gsave aload pop translate
X				-10 40 moveto -10 -35 rlineto
X				20 0 rlineto stroke
X				0 0 moveto -10 40 rlineto 30 0 rlineto
X				10 -40 rlineto closepath 
X				gsave stroke grestore
X				0.8 1.0 scale
X				25 18 moveto 12.5 18 12 0 360 arc closepath
X				eofill
X				grestore
X			} forall
X		} def
X		/Rprisoner {
X			iconcache
X			4 setlinewidth -40 -40 moveto 80 0 rlineto
X			-40 40 moveto 80 0 rlineto stroke
X			3 setlinewidth
X			-35 10 35 { -40 moveto 0 80 rlineto } for
X			-15 30 moveto 40 0 rlineto -40 -60 rlineto
X			40 0 rlineto stroke
X		} def
X		/Rtechnology {
X			iconcache
X			3 setlinewidth
X			[ [ 0.9 20 -15 ] [ 1.0 -20 25 ] ] {
X				gsave aload pop translate dup scale 15 rotate
X				6 {
X					0 0 20 0 30 arc 0 0 32 33 57 arc
X					60 rotate
X				} repeat closepath stroke
X				0 0 10 0 360 arc fill
X				grestore
X			} forall
X		} def
X
X		/diamond {
X			patterncache
X			0 0 moveto 25 40 lineto 50 0 lineto closepath fill
X			0 100 moveto 25 60 lineto 50 100 lineto closepath fill
X			75 10 moveto 100 50 lineto 75 90 lineto
X			50 50 lineto closepath fill
X		} def
X		/question {
X			patterncache
X			25 20 8 0 360 arc closepath fill
X			20 35 moveto 10 0 rlineto 0 25 rlineto -10 0 rlineto
X			closepath fill
X			25 75 25 -90 180 arc 25 75 15 180 -90 arcn
X			closepath fill
X			75 70 8 0 360 arc closepath fill
X			70 85 moveto 10 0 rlineto 0 15 rlineto -10 0 rlineto
X			closepath fill
X			70 0 moveto 10 0 rlineto 0 10 rlineto -10 0 rlineto
X			closepath fill
X			75 25 25 -90 180 arc 75 25 15 180 -90 arcn
X			closepath fill
X		} def
X		/square {
X			patterncache
X			0 0 moveto 50 0 lineto 50 50 lineto 0 50 lineto
X			closepath fill
X			50 50 moveto 100 50 lineto 100 100 lineto 50 100 lineto
X			closepath fill
X		} def
X		/hazardback {
X			patterncache
X			0 50 moveto 50 100 lineto 0 100 lineto closepath fill
X			0 0 moveto 100 100 lineto 100 50 lineto 50 0 lineto
X			closepath fill
X		} def
X
X		/star10 { 10 star } def
X		/star12 { 12 star } def
X		/star15 { 15 star } def
X		/star20 { 20 star } def
X		/star25 { 25 star } def
X		/star30 { 30 star } def
X		/star35 { 35 star } def
X		/star40 { 40 star } def
X		/star45 { 45 star } def
X		/star48 { 48 star } def
X
X		/galsp1 { galsp } def
X		/galsp2 { 50 rotate 1.0 0.8 scale galsp } def
X		/galsp3 { -70 rotate -0.6 0.8 scale galsp } def
X		/galsp4 { -0.6 0.5 scale 30 rotate galsp } def
X		/galel1 {
X			galcache
X			-40 rotate 1 0.4 scale 0 0 35 0 360 arc fill
X		} def
X		/galel2 {
X			galcache
X			-120 rotate 1 0.3 scale 0 0 30 0 360 arc fill
X		} def
X		/galed1 { 20 rotate galed } def
X		/galed2 { 80 rotate galed } def
X		/galed3 { 60 rotate 0.7 1.0 scale galed } def
X		/galed4 { 1400 rotate 0.6 1.0 scale galed } def
X		/galir1 { galir } def
X		/galir2 { 120 rotate 1.2 1.2 scale galir } def
X
X		/startofgame {
X			timingcache
X			40 0 moveto 6 { 60 rotate 40 0 lineto } repeat closepath
X			0 -8 translate 10 rotate
X			5 { 30 0 moveto 24 0 6 0 360 arc 40 rotate } repeat
X			eofill
X		} def
X		/anytime {
X			timingcache
X			0 0 moveto 45 -45 45 45 0 0 curveto -45 -45 -45 45 0 0 curveto
X			7 setlinewidth stroke
X		} def
X		/moveasteroids {
X			timingcache
X			20 rotate 6 {
X				0 0 40 -40 0 arc 4 0 rlineto -8 8 rlineto
X				-8 -8 rlineto 4 0 rlineto 0 0 32 0 -40 arcn
X				closepath fill 60 rotate
X			} repeat 12 0 moveto
X			[ 20 16 22 20 24 14 20 18 22 10 19 ]
X			{ 30 rotate 0 lineto } forall closepath stroke
X			closepath stroke
X		} def
X		/drawhazard {
X			timingcache CFSdeck
X			gsave clip newpath 45 rotate 
X			-40 20 40 {
X				-30 moveto 10 0 rlineto 0 70 rlineto
X				-10 0 rlineto closepath fill
X			} for
X			grestore stroke
X		} def
X		/collectlucre {
X			timingcache
X			gsave -15 30 translate 0.8 dup scale
X			CFSlucre 5 setlinewidth stroke grestore
X			gsave 180 rotate -30 25 translate CFShand2
X			stroke grestore
X		} def
X		/buytokens {
X			timingcache
X			5 5 translate CFStfw
X			8 -40 8 0 360 arc fill 0 -19 8 0 360 arc fill
X			-23 -17 translate 0.7 dup scale CFSlucre 4 setlinewidth stroke
X		} def
X		/techphase {
X			timingcache
X			40 0 moveto 5 { 60 rotate 40 0 lineto } repeat closepath
X			27 0 moveto 10 { 0 0 27 0 18 arc 0 0 20 18 36 arc 36 rotate } repeat
X			eofill
X		} def
X		/rescuetoken {
X			timingcache CFStfw
X			4 -32 8 0 360 arc fill
X		} def
X		/flipdestiny {
X			timingcache
X			CFSdeck -25 5 translate -90 rotate 1 1.7 scale
X			CFScol eofill CFScd stroke
X		} def
X		/gathertokens {
X			timingcache CFScat1
X		} def
X		/pointcone {
X			timingcache CFScat2
X		} def
X		/prisonerexchange {
X			timingcache
X			11 15 7 0 360 arc fill -12 8 7 0 360 arc fill
X			3 -9 7 0 360 arc stroke
X			-30 -30 moveto 60 0 rlineto -30 30 moveto
X			60 0 rlineto 2 setlinewidth stroke 1 setlinewidth
X			-28 8 28 { -30 moveto 0 60 rlineto } for stroke
X		} def
X		/buycards {
X			timingcache
X			gsave 0 -12 translate -30 rotate
X			12 15 moveto 0 32 rlineto -24 0 rlineto 0 -32 rlineto closepath 
X			3 { -4.34 47 moveto -4.80 48.27 lineto -8.25 47 lineto
X			-12.00 45.64 moveto -27.35 40.06 lineto -16.41 10.00 lineto
X			-2.673 15.00 lineto 20 rotate } repeat stroke
X			grestore
X			0 -18 translate 0.8 dup scale CFSlucre 5 setlinewidth stroke
X		} def
X		/inviteallies {
X			timingcache CFScat2 CFSaq
X		} def
X		/inviteoffensiveallies {
X			timingcache CFScat2 CFSaq
X			-35 -20 moveto 6 0 rlineto 0 15 rlineto 6 0 rlineto -9 9 rlineto
X			-9 -9 rlineto 6 0 rlineto closepath fill
X		} def
X		/invitedefensiveallies {
X			timingcache CFScat2 CFSaq
X			-10 -40 moveto 6 0 rlineto 0 15 rlineto 6 0 rlineto -9 9 rlineto
X			-9 -9 rlineto 6 0 rlineto closepath fill
X		} def
X		/alliesjoin {
X			timingcache CFScat2
X			-35 -20 moveto 6 0 rlineto 0 15 rlineto 6 0 rlineto -9 9 rlineto
X			-9 -9 rlineto 6 0 rlineto closepath
X			-10 -40 moveto 6 0 rlineto 0 15 rlineto 6 0 rlineto -9 9 rlineto
X			-9 -9 rlineto 6 0 rlineto closepath fill
X			-12 -3 5 0 360 arc fill 3 7 5 0 360 arc fill
X			-30 22 5 0 360 arc stroke
X		} def
X		/playkicker {
X			timingcache
X			gsave -40 0 translate 30 rotate
X			CFShand stroke CFScard fill
X			grestore
X			5 -40 moveto -20 20 rlineto 5 -20 moveto -20 -20 rlineto
X			5 setlinewidth stroke
X		} def
X		/playchallenge {
X			timingcache
X			gsave -40 0 translate 30 rotate
X			CFShand stroke CFScard fill
X			grestore
X		} def
X		/exposecards {
X			timingcache
X			gsave 140 rotate -38 18 translate
X			CFShand CFScard stroke
X			44 -28 moveto 64 -33 lineto 65 -20 lineto 4 setlinewidth stroke
X			grestore
X		} def
X		/determineoutcome {
X			timingcache
X			22 -13 16 0 360 arc stroke 25 -9 4 0 360 arc fill
X			29 -20 4 0 360 arc fill 18 -17 4 0 360 arc stroke
X			gsave
X				-16 -20 translate 30 rotate 18 0 moveto
X				5 { 60 rotate 18 0 lineto } repeat closepath
X				8 3 moveto 4 3 4 0 360 arc
X				-3 -3 moveto -7 -3 4 0 360 arc
X				eofill
X			grestore
X			12 8 moveto 0 30 rlineto -20 0 rlineto
X			0 -30 rlineto closepath -8 29 moveto -8 8 rlineto
X			-13 -13 rlineto 20 -20 rlineto 4 4 rlineto stroke
X			2 setlinewidth -18 24 4 90 350 arc
X			2 14 moveto 6 17 rlineto -10 0 rlineto stroke
X		} def
X		/discardcards {
X			timingcache CFSdeck stroke
X			20 5 moveto -8 5 8 60 420 arc 4 setlinewidth stroke
X		} def
X		/interphase {
X			timingcache
X			2 {
X			gsave
X				gsave 0 30 translate 0 14 moveto
X				4 { 144 rotate 0 14 lineto } repeat closepath fill
X				grestore
X				40 rotate
X				0 0 32 270 360 arc 6 0 rlineto -10 10 rlineto -10 -10 rlineto
X				6 0 rlineto 0 0 24 360 270 arcn closepath fill
X				grestore 180 rotate
X			} repeat
X		} def
X		/timingrange {
X			70 0 0 25 70 75 setcachedevice
X			5 58 moveto 40 0 rlineto 0 12 rlineto
X			20 -20 rlineto -20 -20 rlineto 0 12 rlineto -40 0 rlineto
X			closepath fill
X		} def
X	end
end
X/CosmicFont exch definefont pop
X
X/SF /CosmicFont findfont 2 scalefont def
X/GF /CosmicFont findfont 8 scalefont def
X/IF /CosmicFont findfont 12 scalefont def
X
X
X
X% Font 2.  The "New Helvetica" font is the same as the Helvetica font,
X% except all non-printable characters print as spaces, and the tab
X% prints as a three-character wide space.
X% Possible future enhancement: add some characters from the Symbol font.
X
X12 dict dup begin
X	/BaseFont /Helvetica findfont 1 scalefont def
X	/FontMatrix [ 1 0 0 1 0 0 ] def /FontType 3 def
X	/FontBBox BaseFont /FontBBox get aload pop 4 array astore def
X	/Encoding 256 array def /CharData 256 dict def /CharStr (.) def
X
X	/BuildChar {
X		exch begin dup Encoding exch get CharData exch get
X		dup type /arraytype eq {
X			aload pop setcachedevice BaseFont setfont
X			CharStr 0 3 -1 roll put 0 0 moveto CharStr show
X		} { 0 setcharwidth pop } ifelse
X		end
X	} def
X
X
X
X	gsave nulldevice BaseFont setfont newpath BaseFont /Encoding get
X
X	0 1 255 {
X		1 index 1 index get dup /.notdef eq { pop /space } {
X		CharStr 0 3 index put
X		dup /space eq { CharStr stringwidth pop } {
X			[ CharStr stringwidth 0 0 moveto CharStr false charpath
X			flattenpath pathbbox newpath ] } ifelse
X			CharData 2 index 2 index put pop
X		} ifelse Encoding 3 1 roll put
X	} for pop
X	grestore
X
X	Encoding 9 /tab put CharData /tab CharData /space get 3.0 mul put
end
X/NewHelvetica exch definefont pop
X
X
X/CutLine {
X	dup 0 eq {
X		pop ( ) search { exch pop } { () exch } ifelse
X	} {
X		3 { 1 index } repeat length 1 index sub getinterval
X		3 1 roll 0 exch getinterval
X	} ifelse
X	{ ( ) anchorsearch not { exit } if pop } loop
X} def
X
X/NoNewLine {
X	dup length 1 sub 0 1 3 -1 roll {
X		1 index 1 index get 10 eq { 1 index exch 32 put } { pop } ifelse
X	} for
X} def
X
X/BreakLine {
X	dup 3 1 roll 0 3 1 roll
X	{
X		( ) search
X		{
X			(\r) search {
X				5 1 roll 4 { pop } repeat
X				dup 3 1 roll stringwidth pop sub
X				0 ge { length add 1 add } { pop } ifelse
X				CutLine exit
X			} if
X			exch pop exch 4 1 roll
X			dup 3 1 roll
X			stringwidth pop sub ( ) stringwidth pop sub
X			dup 0 ge {
X				3 1 roll length add 1 add 3 1 roll exch
X			} {
X				pop pop exch pop CutLine exit
X			} ifelse
X		} {
X			stringwidth pop sub
X			0 ge { pop () exch exit } { CutLine exit } ifelse
X		} ifelse
X	} loop
X} def
X
X% END DEFINITIONS
END_OF_FILE
if test 17600 -ne `wc -c <'PS-headers/font.ps'`; then
    echo shar: \"'PS-headers/font.ps'\" unpacked with wrong size!
fi
# end of 'PS-headers/font.ps'
fi
if test -f 'PS-headers/hex.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/hex.ps'\"
else
echo shar: Extracting \"'PS-headers/hex.ps'\" \(22744 characters\)
sed "s/^X//" >'PS-headers/hex.ps' <<'END_OF_FILE'
X%!
X% PRINT COSMIC ENCOUNTER HEXES
X%
X%	version 1.0, May 8 1991
X%	version 1.01, May 15 1991
X%	version 1.02, June 1991
X%	version 1.1, Sep 1991
X%
X% Code copyrighted (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
X% Distributed as Freeware
X%
X% This file requires the file font.ps before it can be printed.
X% Concatenate font.ps onto the FRONT of this file before using.
X
X% version 1.01: Adding variant SingularityHex[12], with different labels.
X% version 1.02: Adding variant BinaryHex[12], with different number of
X%		planets.  Hope Mayfair settles on a final version... 
X% version 1.1:  Ensured all the print options are run-time.  Also made
X%		only ONE BinaryHex corresponding to Mayfair's, and only
X%		ONE SingularityHex -- the "official" version. Added DoStars
X%		print option.
X
X% PRINT OPTIONS
X
X/A4Paper false def
X/RingworldSegments 20 def
X/FanNames [ (RED) (ORANGE) (YELLOW) (GREEN) (BLUE) (VIOLET) ] def
X/DoStars true def
X
X
X% GENERAL CONSTANTS AND ROUTINES
X
X/inch { 72 mul } def
X/FLrand { rand 100000 mod 100000.0 div } def
X/INrand { rand exch mod } def
X
X/HexOutline { % size HexOutline --
X	dup 2.0 div dup 3.0 sqrt mul	% HexEdge HE2 Hsqrt3o2
X	1 index 1 index neg moveto 2 index 0 lineto
X	1 index 1 index lineto 1 index neg 1 index lineto
X	2 index neg 0 lineto 1 index neg 1 index neg lineto
X	closepath pop pop pop
X} def
X
X/SetupPage {
X	90 rotate 5.5 inch -4.25 inch translate
X	A4Paper { 0.95 dup scale } if
X	4.5 inch HexOutline
X	gsave 0 setgray fill grestore clip newpath
X} def
X
X
X
X
X/StarsDict 15 dict def
StarsDict begin
X/DotArray [
X	(\240)(\240)(\241)(\241)(\242)(\242)(\242)(\243)
X	(\243)(\244)(\244)(\245)(\246)(\247)(\250)(\251)
X] def
X/GalArray [
X	(\252)(\252)(\253)(\253)(\254)(\254)(\255)(\256)
X	(\257)(\260)(\260)(\261)(\262)(\263)(\264)(\265)
X] def
X
X/Cluster { % radius tolerance Cluster xpos ypos
X	FLrand mul add FLrand mul dup FLrand 360 mul dup 3 1 roll
X	cos mul 3 1 roll sin mul
X} def
X/Hollow { % minrad maxrad Hollow xpos ypos
X	exch dup 3 1 roll sub FLrand mul add dup FLrand 360 mul dup 3 1 roll
X	cos mul 3 1 roll sin mul
X} def
X/Milky { % xdim ydim Milky xpos ypos
X	FLrand 0.5 sub 2.0 mul mul exch
X	FLrand 0.5 sub 2.0 mul mul dup 3 1 roll
X	FLrand 40 mul add sin 0.5 mul 1.0 add mul
X} def
X
X/SpangleDots { % proc numdots SpangleDots --
X	SF setfont 1 setgray
X	{ dup exec moveto DotArray 16 INrand get show } repeat
X	pop
X} def
X
X/SpangleGalaxies { % proc numdots SpangleGalaxies --
X	GF setfont 1 setgray
X	{ dup exec moveto GalArray 16 INrand get show } repeat
X	pop
X} def
X
X
X
X/PointedStar { % npoints size xcenter ycenter PointedStar --
X	gsave translate dup scale
X	1 setgray
X	0 0.3 moveto 0 0 0.3 0 360 arc fill
X	dup {
X		dup 360.0 exch div FLrand 0.1 mul 0.05 sub 1.0 add mul rotate
X		0.1 0 moveto 0 1.0 lineto -0.1 0 lineto closepath
X		fill newpath
X	} repeat
X	pop
X	grestore
X} def
X
X
X/SpangleStars { % proc numstars SpangleStars --
X	{
X		dup exec 4 INrand 4 add
X		6.0 FLrand 3.0 mul add FLrand 3.0 mul add
X		FLrand 5 mul 2 lt { FLrand 3.0 mul add } if
X		4 2 roll PointedStar
X	} repeat
X	pop
X} def
X
X/StandardField {
X	gsave
X	360 INrand rotate 1 setgray
X	gsave -50 125 translate { 75 25 Cluster } 400 SpangleDots grestore
X	gsave 50 -85 translate { 50 20 Cluster } 200 SpangleDots grestore
X	gsave 50 0 translate -60 rotate { 330 40 Milky } 500 SpangleDots grestore
X	{ 300 20 Cluster } 500 SpangleDots { 150 320 Hollow } 300 SpangleDots
X	{ 100 320 Hollow } 6 SpangleGalaxies
X	{ 300 20 Cluster } 6 SpangleStars { 150 280 Hollow } 12 SpangleStars
X	grestore
X} def
X
X/GalaxyField {
X	gsave
X	360 INrand rotate 1 setgray
X	gsave -190 -120 translate { 20 10 Cluster } 8 SpangleGalaxies grestore
X	gsave 170 160 translate { 25 10 Cluster } 6 SpangleGalaxies grestore
X	gsave 140 -180 translate { 25 10 Cluster } 10 SpangleGalaxies grestore
X	{ 40 300 Hollow } 25 SpangleGalaxies
X	grestore
X} def
X
X/NonDenseField {
X	gsave
X	1 setgray
X	{ 300 20 Cluster } 500 SpangleDots { 150 320 Hollow } 300 SpangleDots
X	grestore
X} def
X
X/SpiralArc { % K thetafinal thetastart SpiralArc --
X	gsave
X	SF setfont
X	{
X		1 index 1 index gt { exit } if
X		dup sqrt 3 index mul dup 0 moveto
X		DotArray 8 INrand 8 add get show
X		0.01 add -160.0 exch div
X		FLrand 0.2 mul 1.0 add mul
X		dup rotate add
X	} loop
X	pop pop pop
X	grestore
X} def
X
X/SpiralWash { % thetafinal thetastart SpiralWash --
X	gsave
X		dup rotate dup sqrt 1 index 15 sub
X		0 index 4 index add 2.0 div 1 index 5 index sub 5.0 div 
X
X		3 index 9.5 mul 4 index 13.2 mul 5 index 16.9 mul
X		% tf ts vt tsrad tmed delta inner middle outer
X
X		2 index 12 3 index { 
X			7 index div 9 index 5 index FLrand mul add
X			9 index SpiralArc
X		} for
X		0 index -12 3 index {
X			7 index div 9 index 5 index FLrand mul add
X			9 index SpiralArc
X		} for
X
X		2 index 6 add 12 3 index { 
X			7 index div 5 index 5 index FLrand -0.5 add mul add
X			9 index	SpiralArc
X		} for
X		0 index 6 sub -12 3 index {
X			7 index div 5 index 5 index FLrand -0.5 add mul add
X			9 index SpiralArc
X		} for
X
X		2 index 3 add 6 3 index { 
X			7 index div 6 index 5 index FLrand mul sub
X			9 index	SpiralArc
X		} for
X		0 index 3 sub -6 3 index {
X			7 index div 6 index 5 index FLrand mul sub
X			9 index SpiralArc
X		} for
X		9 { pop } repeat
X	grestore
X} def
end % StarsDict
X
X
X/PlanetsDict 30 dict def 
PlanetsDict begin
X
X/Sun {
X	gsave newpath
X	1 setgray 0.025 setlinewidth
X	12 {
X		[1.0 0.75 0.5 0.5 0.75] {
X			0.3 0 moveto 0 lineto 6 rotate
X		} forall stroke
X	} repeat
X	0 0 0.33 0 360 arc fill
X	grestore
X} def
X
X/GiantSun {
X	gsave newpath
X	0.9 setgray 0.0125 setlinewidth
X	30 {
X		[1.1 0.95 0.9 0.95] {
X			0.85 0 moveto 0 lineto 3 rotate
X		} forall stroke
X	} repeat
X	0 0 0.85 0 360 arc fill
X	grestore
X} def
X
X
X/GibbousPlanet {
X	gsave 
X	1.0 0 moveto 0 0 1.0 0 360 arc
X	clip newpath
X	0.4 12 {
X		0 1.0 moveto 0 0 1.0 0 360 arc
X		dup setgray fill 0.054 add
X		-0.045 0 translate
X	} repeat pop
X	grestore
X} def
X
X/FullPlanet {
X	gsave 
X	0.6 9 {
X		dup 2.0 div 1.3 exch sub	% intensity radius
X		dup 0 exch moveto 0 exch 0 exch 0 360 arc
X		dup setgray fill 0.05 add
X	} repeat pop
X	grestore
X} def
X
X/CrescentMoon {
X	gsave
X		0 setgray 0 0 1.0 0 360 arc fill
X		1.0 -0.1 0.6 {
X			setgray 0 0 1.0 0 180 arc closepath fill
X			1.0 0.9 scale
X		} for
X		0 setgray 0 0 1.0 0 180 arc closepath fill
X	grestore
X} def
X
X
X/CosTh 65 cos def /SinTh 65 sin def
X/GasGiantArray [
X	[ 0.7 -0.99  ] [ 0.65 -0.95 ]  [ 0.6 -0.9 ] [ 0.75 -0.8 ]
X	[ 0.65 -0.6 ] [ 0.6 -0.45 ] [ 0.7 -0.35 ] [ 0.75 -0.2 ]
X	[ 0.7 0.2 ] [ 0.6 0.35 ] [ 0.65 0.45 ] [ 0.75 0.6 ]
X	[ 0.7 0.8 ] [ 0.6 0.9 ] [ 0.65 0.95 ] [ 0.7 0.99 ]
X] def
X
X/GasGiantPlanet {
X	gsave
X	1.0 0 moveto 0 0 1.0 0 360 arc clip newpath
X	1.0 0 moveto 0 0 1.0 0 360 arc 0.8 setgray fill
X	GasGiantArray {
X		aload pop
X		gsave
X		dup SinTh neg gt {
X			dup SinTh mul 0 exch translate
X			1.0 CosTh scale
X			newpath exch setgray 0 exch 0 exch
X			dup SinTh lt {
X				dup dup mul 1.0 exch sub sqrt exch
X				dup CosTh mul exch
X				dup mul SinTh dup mul exch sub sqrt
X				atan dup 180 gt { 360 sub } if
X				dup 180 exch sub exch 360 add
X				arc
X				1.0 0 rlineto 0 2.0 CosTh div rlineto
X				-3.0 0 rlineto 0 -2.0 CosTh div rlineto
X				closepath
X			} {
X				dup mul 1.0 exch sub sqrt 0 360 arc
X			} ifelse
X			fill
X		} if
X		grestore
X	} forall
X	grestore
X} def
X
X/Ring { % innerrad step outerrad Ring --
X	{ dup 0 moveto 0 exch 0 exch 0 360 arc stroke 0 -0.02 translate } for
X} def
X
X/RingedPlanet {
X	gsave
X		0 0.9 translate
X		/CosTh 50 cos def /SinTh 50 sin def GasGiantPlanet
X		gsave
X			0 3 moveto 0 0 1.0 90 180 arc 0 0 1.0 0 90 arc
X			0 3 lineto 3 3 lineto 3 -3 lineto -3 -3 lineto
X			-3 3 lineto closepath clip newpath
X			1.0 CosTh scale 0.012 setlinewidth 1 setgray
X			0 -0.05 translate 1.20 0.02 1.50 Ring
X			0 -0.05 translate 1.70 0.02 2.00 Ring
X			0 -0.05 translate 2.20 0.02 2.50 Ring
X			0 -0.05 translate 2.70 0.02 3.00 Ring
X		grestore
X		/Helvetica-Bold findfont [ 0.6 0 0 0.45 0 0 ] makefont setfont
X		0.2 setgray
X		0 -0.6 moveto (10) dup stringwidth pop -2.0 div 0 rmoveto show
X		0.5 -1.1 moveto (8) dup stringwidth pop -2.0 div 0 rmoveto show
X		1.0 -1.5 moveto (6) dup stringwidth pop -2.0 div 0 rmoveto show
X		1.5 -1.9 moveto (4) dup stringwidth pop -2.0 div 0 rmoveto show
X		2.0 -2.3 moveto (2) dup stringwidth pop -2.0 div 0 rmoveto show
X	grestore
X} def
X
X/PulsarPlanet {
X	gsave 0.6 dup scale FullPlanet grestore
X	gsave
X		0.025 setlinewidth
X		0.9 setgray
X		120 { 0.7 0 moveto 0.1 0 rlineto stroke 3 rotate } repeat
X		0.7 setgray
X		120 { 0.92 0 moveto 0.08 0 rlineto stroke 3 rotate } repeat
X	grestore
X} def
X
X/SpiralPlanet { % string theta SpiralPlanet --
X	gsave
X		dup dup rotate
X		sqrt dup 13.2 mul 0 translate
X		gsave 3.75 mul dup scale FullPlanet grestore
X		neg rotate
X		/Helvetica-Bold findfont 50 scalefont setfont 0 setgray
X		dup stringwidth pop -2.0 div -18 moveto show
X	grestore
X} def
X
X/SpaceStation {
gsave
X	newpath 0.025 setlinewidth 1 setgray
X	gsave
X		-0.6 -0.1 translate
X		6 {
X			0.2 0 moveto 0.1 0.2 rlineto -0.2 0 rlineto
X			0.1 -0.2 rlineto -0.2 0 rlineto 0.1 0.2 rlineto
X			stroke 0.2 0 translate
X		} repeat
X	grestore
X	gsave
X		3 {
X			-0.05 0.1 moveto 0 0.3 rlineto stroke
X			-0.35 -0.1 moveto 0 -0.2 rlineto stroke
X			0.05 0 translate
X		} repeat
X	grestore
X	gsave
X		-0.3 0.4 translate
X		0 0 moveto 0.4 0 rlineto 0.3 0.4 rlineto
X		-0.4 0 rlineto closepath 0.4 setgray fill
X		1 setgray
X		gsave
X			5 {
X				0 0 moveto 0.3 0.4 rlineto stroke
X				0.1 0 translate
X			} repeat
X		grestore
X		gsave
X			5 {
X				0 0 moveto 0.4 0 rlineto stroke
X				0.075 0.1 translate
X			} repeat
X		grestore
X	grestore
X	gsave 
X		-0.3 -0.5 0.3 0 360 arc 0.6 setgray fill
X		-0.4 -0.4 0.1 0 360 arc
X		gsave 1.0 setgray fill grestore 0 setgray stroke
X	grestore
X	gsave
X		0.2 -0.3 translate
X		0 0 moveto 0.15 0 rlineto 0 0.2 rlineto -0.15 0 rlineto
X		closepath 0.8 setgray fill
X	grestore
X	gsave
X		0.725 -0.35 translate
X		1 0.4 scale
X		0 0 0.125 180 360 arc 0 1.4 rlineto
X		0 1.4 0.125 0 180 arc closepath
X		gsave
X			0.8 setgray fill
X			0 setgray
X			1.4 -0.35 0.34 {
X				0 exch 0.125 180 360 arc stroke
X			} for
X		grestore 1 setgray stroke
X	grestore
X	gsave
X		-0.8 0 translate
X		0 0 moveto 0.25 0 rlineto stroke
X		45 rotate
X		4 {
X			0 0 moveto 0.15 0 0.04 180 540 arc
X			gsave 0.9 setgray fill grestore stroke
X			90 rotate
X		} repeat
X	grestore
X
grestore
X} def
X
X/Engine {
X	0.1 0 moveto 0.06 0.02 -0.06 0.02 -0.1 0 curveto
X	-0.1 -0.4 lineto -0.06 -0.42 0.06 -0.42 0.1 -0.4 curveto
X	closepath gsave 0.7 setgray fill grestore 1 setgray stroke
X	0 -0.44 moveto 0.10 -0.44 0.10 -0.58 0 -0.80 curveto
X	-0.10 -0.58 -0.10 -0.44 0 -0.44 curveto closepath 1 setgray fill
X	0 -0.47 moveto 0.05 -0.47 0.05 -0.54 0 -0.58 curveto
X	-0.05 -0.54 -0.05 -0.47 0 -0.47 curveto closepath 0.7 setgray fill
X} def
X
X/WorldShip {
X	gsave
X		[ 0.03 ] 0 setdash 0.7 setgray 0.03 setlinewidth
X		-0.95 0.1 0.95 {
X			dup dup abs 1.0 sub moveto
X			abs dup mul 1.8 sub 0 exch rlineto
X		} for stroke
X	grestore
X	0.02 setlinewidth
X	gsave -0.4 -0.8 translate Engine grestore
X	gsave 0.2 -0.9 translate Engine grestore
X	gsave -50 rotate GibbousPlanet grestore
X	gsave -0.15 -0.85 translate Engine grestore
X	gsave 0.35 -0.8 translate Engine grestore
X} def
X
X/RingworldArcsize 360 RingworldSegments div def
X
X/Ringworld {
X	1.0 0.7 scale newpath 0.005 setlinewidth
X	1 setgray
X	0
X	RingworldArcsize 2 mul
X	180 RingworldArcsize sub {
X		dup RingworldArcsize add 0 0.1 1 4 index 4 index arc
X		0 -0.1 1 5 -2 roll exch arcn closepath fill
X	} for
X	0.4 setgray
X	RingworldArcsize
X	RingworldArcsize 2 mul
X	180 RingworldArcsize sub {
X		dup RingworldArcsize add 0 0.1 1 4 index 4 index arc
X		0 -0.1 1 5 -2 roll exch arcn closepath fill
X	} for
X	0.2 setgray
X	0 0.1 1 180 360 arc 0 -0.1 1 360 180 arcn closepath fill
X
X	gsave
X		1 setgray [0.02] 0 setdash 0 0.1 translate
X		180 RingworldArcsize 360 {
X			dup cos exch sin moveto 0 -0.2 rlineto
X		} for stroke
X	grestore
X
X	1 setgray
X	-1 1 1 { 0 exch 0.045 mul 0.4 0 360 arc } for stroke
X	0.9 setgray
X	RingworldArcsize
X	RingworldArcsize 2 mul
X	180 RingworldArcsize sub {
X		dup RingworldArcsize add 0 0.06 0.4 4 index 4 index arc
X		0 -0.06 0.4 5 -2 roll exch arcn closepath fill
X	} for
X
X	0.1 setgray
X	180 RingworldSegments 4 mod 0 eq { RingworldArcsize add } if
X	RingworldArcsize 2 mul
X	360 RingworldArcsize sub {
X		dup RingworldArcsize add 0 0.06 0.4 4 index 4 index arc
X		0 -0.06 0.4 5 -2 roll exch arcn closepath fill
X	} for
X} def
X
end % PlanetsDict
X
X
X/SingularityDict 5 dict def
SingularityDict begin
X/SingZ { dup 0.3 add exch -5.0 exch div } def
X/SingArray1 [
X	0.550 0.361 0.237 0.189 0.151 0.129 0.111 0.099 0.088 0.080 0.072 0.067
X	0.062 0.058 0.054 0.051 0.048 0.045 0.043 0.041 0.039 0.037 0.035
X] def
X/SingArray2 [
X	9.0 8.5 8.0 7.5 7.0 6.5 6.0 5.5 5.0 4.5
X	4.0 3.5 3.0 2.5 2.0 1.6 1.2 1.0 0.8 0.7
X] def
X
X
X/Singularity {
X	gsave
X		1 0.2 scale 0 setgray
X		SingArray1 dup 0 get SingZ exch pop 0 exch moveto
X		dup length 1 sub 0 exch 1 exch {
X			1 index exch get SingZ lineto
X		} for
X		dup length 1 sub -1 0 {
X			1 index exch get SingZ exch neg exch lineto
X		} for pop
X		closepath fill
X		1 setgray SingArray1
X		dup length 3 sub 0 exch 2 exch {
X			1 index 1 index get SingZ
X			3 index 3 index 1 add get SingZ
X			5 index 5 index 2 add get SingZ
X			0 5 index 7 index 180 360 arc stroke
X			[ [1.0 0.0] [-1.0 0.0] [-0.5 -0.866] [0.5 -0.866] ] {
X				aload pop
X					% array index r0 z0 r1 z1 r2 z2 C S
X				7 index 2 index mul 8 index 2 index mul 8 index add moveto
X				5 index 2 index mul 6 index 2 index mul 6 index add lineto
X				3 index 2 index mul 4 index 2 index mul 4 index add lineto
X				stroke pop pop
X			} forall
X			7 { pop } repeat
X		} for
X		dup length 1 sub get
X		SingZ 0 exch 3 -1 roll 180 360 arc stroke
X		gsave
X		SingArray2
X		dup length 3 sub 0 exch 2 exch {
X			1 index 1 index get SingZ
X			3 index 3 index 1 add get SingZ
X			5 index 5 index 2 add get SingZ
X			0 5 index 7 index 0 360 arc
X			6 index 0 eq { gsave 0 setgray fill grestore } if
X			gsave stroke grestore
X			clip newpath
X			[ [1.0 0.0] [0.5 0.866] [-0.5 0.866]
X			  [-1.0 0.0] [-0.5 -0.866] [0.5 -0.866] ] {
X				aload pop
X				7 index 2 index mul 8 index 2 index mul 8 index add moveto
X				5 index 2 index mul 6 index 2 index mul 6 index add lineto
X				3 index 2 index mul 4 index 2 index mul 4 index add lineto
X				stroke pop pop
X			} forall
X			7 { pop } repeat
X		} for pop
X		grestore
X
X		/Helvetica-Bold findfont [1.5 0 0 7.5 0 0] makefont setfont
X		0.9 setgray
X		SingArray1
X		[ [ ( 0) 1 ] [ ( 1) 3 ] [ ( 2) 7 ] [ ( 3) 11 ]
X		  [ ( 4) 15 ] [ ( 5+) 19 ] ] {
X			aload pop 2 index exch get
X			SingZ 3.5 sub moveto show
X		} forall pop
X	grestore
X} def
X
end % SingularityDict
X
X
X/WarpDict 10 dict def
WarpDict begin
X
X/Warp {
X	gsave
X	0.0 0.05 0.95 { dup 4.0 div 1.25 exch sub HexOutline setgray fill } for
X 	1 HexOutline 0 setgray fill
X	grestore
X} def
X
X/Praw {
X	gsave
X	0.95 -0.05 0.0 { dup 4.0 div 1.00 add HexOutline setgray fill } for
X	1 HexOutline 1 setgray fill
X	grestore
X} def
X
X/FanOutline {
X	FanMul div dup 2.0 div dup 3.0 sqrt mul	% HexEdge HE2 Hsqrt3o2
X	2 index 0 moveto 1 index 1 index lineto 1 index neg 1 index lineto
X	2 index neg 0 lineto 0 3 index FanMul neg mul lineto
X	closepath pop pop pop
X} def
X
X/FanBlade {
X	gsave 0 exch translate
X	0.95 -0.05 0.0 { dup 4.0 div 1.00 add FanOutline setgray fill } for
X	1 FanOutline 1 setgray fill
X	grestore
X} def
X
X/Fan1 {
X	gsave
X	30 -2.5 mul rotate /FanMul 4.5 def
X	/Helvetica findfont 0.05 scalefont setfont
X	FanNames {
X		1.2375 FanBlade
X		gsave
X			0 setgray 0 1.4 translate 180 rotate 
X			dup stringwidth pop -2.0 div 0 moveto show
X		grestore
X		30 rotate
X	} forall
X	grestore
X} def
X
X/Fan2 {
X	gsave /FanMul 3.0 sqrt def
X	6 { gsave 2.475 FanBlade grestore 60 rotate } repeat
X	grestore
X} def
X
end % WarpDict
X
X
X% DEFINITIONS OF HEXES
X
X% Standard hex, sun with five planets
X
X/StandardHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	PlanetsDict begin
X		gsave
X			0 -100 translate
X			gsave 40 dup scale Sun grestore
X			gsave
X				20 rotate 225 0 translate 45 dup scale
X				GibbousPlanet
X			grestore
X			gsave
X				50 rotate 200 0 translate 45 dup scale
X				GibbousPlanet
X			grestore
X			gsave
X				90 rotate 175 0 translate 45 dup scale
X				GibbousPlanet
X			grestore
X			gsave
X				130 rotate 200 0 translate 45 dup scale
X				GibbousPlanet
X			grestore
X			gsave
X				160 rotate 225 0 translate 45 dup scale
X				GibbousPlanet
X			grestore
X		grestore
X	end
X	showpage
X} def
X
X
X% Warp-related hexes
X
X/WarpHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	WarpDict begin 160 dup scale Warp end
X	showpage
X} def
X
X/PrawHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	WarpDict begin
X		gsave
X			30 rotate
X			gsave 85 -115 translate 100 dup scale Praw grestore
X			gsave -65 75 translate 140 dup scale Warp grestore
X		grestore
X	end
X	showpage
X} def
X
X/FanHex1 {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	WarpDict begin
X		gsave
X			30 rotate
X			gsave
X				0 -120 translate 30 rotate
X				140 dup scale Warp
X			grestore
X			gsave
X				0 20 translate 160 dup scale
X				Fan1
X			grestore
X		grestore
X	end
X	showpage
X} def
X
X/FanHex2 {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	WarpDict begin
X		gsave 105 dup scale 30 rotate Warp grestore
X		gsave 85 dup scale Fan2 grestore
X	end
X	showpage
X} def
X
X/FanHex3 {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	WarpDict begin
X		gsave
X			6 {
X				gsave 0 193 translate 60 dup scale Praw grestore
X				60 rotate
X			} repeat
X		grestore
X		gsave 120 dup scale Warp grestore
X	end
X	showpage
X} def
X
X
X% EON six planet hexes
X
X/GasGiantHex {
X	SetupPage
X	DoStars { StarsDict begin
X			1 setgray
X			{ 240 320 Hollow } 500 SpangleDots
X			{ 242 285 Hollow } 6 SpangleStars
X		end
X	} if
X	PlanetsDict begin
X		/CosTh 65 cos def /SinTh 65 sin def
X		10 rotate 240.0 dup scale
X		GasGiantPlanet
X	end
X	showpage
X} def
X
X/SpaceDustHex {
X	SetupPage
X	StarsDict begin
X		NonDenseField NonDenseField
X		{ 50 280 Hollow } 6 SpangleGalaxies
X		0.5 dup scale
X		{ 600 40 Cluster } 12 SpangleStars
X		{ 300 560 Hollow } 24 SpangleStars
X	end
X	showpage
X} def
X
X/SixPactHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X
X	PlanetsDict begin
X		gsave
X		6 {
X			gsave 200 0 translate 54 dup scale GibbousPlanet grestore
X			60 rotate
X		} repeat
X		grestore
X	end
X	showpage
X} def
X
X/RingsHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	PlanetsDict begin
X		gsave 20 rotate 90 dup scale RingedPlanet grestore	
X	end
X	showpage
X} def
X
X/PulsarHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	PlanetsDict begin
X		gsave
X			0 -160 translate
X			2 setlinewidth 0 setlinejoin 1 setgray
X
X			15 -10 moveto 80 0 rlineto 0 20 rlineto
X			-80 0 rlineto closepath
X			gsave fill grestore stroke
X
X 			-15 -10 moveto 0 20 rlineto -30 0 rlineto 0 30 rlineto
X	 		-20 0 rlineto 0 -30 rlineto -30 0 rlineto
X 			0 -20 rlineto 30 0 rlineto 0 -30 rlineto
X 			20 0 rlineto 0 30 rlineto closepath
X 			gsave fill grestore stroke
X		grestore
X		gsave 180 -70 translate 60 dup scale PulsarPlanet grestore
X		gsave 90 60 translate 60 dup scale PulsarPlanet grestore
X		gsave 0 190 translate 60 dup scale PulsarPlanet grestore
X		gsave -90 60 translate 60 dup scale PulsarPlanet grestore
X		gsave -180 -70 translate 60 dup scale PulsarPlanet grestore
X	end
X	showpage
X
X} def
X
X/SpiralHex {
X	SetupPage
X	DoStars { StarsDict begin NonDenseField end } if
X	1 setgray
X	gsave
X		-50 40 translate
X		DoStars { 
X			StarsDict begin
X				 5  60 SpiralWash
X				 80 120 SpiralWash
X				140 180 SpiralWash
X				210 270 SpiralWash
X				300 360 SpiralWash
X				20 10 28 2 PointedStar
X			end
X		} if
X		PlanetsDict begin
X			(5)  60 SpiralPlanet
X			(4) 120 SpiralPlanet
X			(3) 180 SpiralPlanet
X			(2) 270 SpiralPlanet
X			(1) 360 SpiralPlanet
X		end
X	grestore
X	showpage
X} def
X
X
X% MAYFAIR three planet hexes
X
X/BinaryHex {
X	SetupPage
X	DoStars { StarsDict begin NonDenseField end } if
X	PlanetsDict begin
X		20 rotate
X		2 {
X			gsave 120 0 translate
X			gsave 30 dup scale Sun grestore
X			-100 rotate 45 dup scale
X			3 {
X				gsave 2.5 0 translate GibbousPlanet grestore
X				100 rotate
X			} repeat
X			grestore
X			180 rotate
X		} repeat
X	end
X	showpage
X} def
X
X/WorldShipsHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	PlanetsDict begin
X		gsave 50 dup scale 20 rotate
X		[ [ 1.0 4 0 ] [ 1.2 2 3.5 ] [ 0.9 -2.6 1.8 ]
X		  [ 1.2 -3.3 -1.2 ] [ 0.9 1 -2.5 ] ] {
X			gsave aload pop translate dup scale WorldShip grestore
X		} forall
X		grestore
X	end
X	showpage
X} def
X
X/RosetteHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X
X	PlanetsDict begin
X		gsave 180 -90 translate 30 dup scale Sun grestore
X		gsave -60 30 translate 45 dup scale 140 rotate
X		0 1 5 {
X			gsave
X				3.3 0 translate -60 mul rotate GibbousPlanet
X			grestore
X			60 rotate
X		} for
X		grestore
X	end
X	showpage
X} def
X
X
X% COX six planet hexes
X
X/WarpishHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	WarpDict begin
X		gsave 130 dup scale Warp grestore
X	end
X	PlanetsDict begin
X		gsave
X			20 rotate 48 dup scale
X			5 {
X				gsave
X					4.5 0 translate 180 rotate
X					GibbousPlanet
X				grestore
X				72 rotate
X			} repeat
X		grestore
X	end
X	showpage
X} def
X
X/StationsHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	PlanetsDict begin
X		gsave
X			30.0 dup scale 0.05 setlinewidth
X			6 {
X				0 0 moveto 8 0 lineto stroke
X				gsave
X					8 0 translate -120 rotate SpaceStation
X				grestore
X				60 rotate
X			} repeat
X		grestore
X		gsave 70.0 dup scale FullPlanet grestore
X	end
X	showpage
X} def
X
X
X/LunacyHex1 {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	PlanetsDict begin
X		gsave 60 dup scale FullPlanet grestore
X		72 72 360 {
X			gsave
X				dup rotate 200 0 translate neg rotate
X				18 dup scale CrescentMoon
X			grestore
X		} for
X	end
X	showpage
X} def
X
X/LunacyHex2 {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	PlanetsDict begin
X		gsave
X			50 dup scale
X			1.6 0 translate FullPlanet
X			-3.2 0 translate FullPlanet
X		grestore
X		24 dup scale
X		0 60 300 {
X			gsave
X				dup rotate 9 0 translate
X				neg rotate CrescentMoon
X			grestore
X		} for
X	end
X	showpage
X} def
X
X/SingularityHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	SingularityDict begin
X		gsave
X			0 228 translate 20 dup scale 0.06 setlinewidth
X			Singularity
X		grestore
X	end
X	PlanetsDict begin
X		gsave 130 90 translate 50 dup scale FullPlanet grestore
X		gsave -130 90 translate 50 dup scale FullPlanet grestore
X		gsave 220 -40 translate 50 dup scale FullPlanet grestore
X		gsave -220 -40 translate 50 dup scale FullPlanet grestore
X		gsave -110 -170 translate 50 dup scale FullPlanet grestore
X	end
X	showpage
X} def
X
X/IsolatedHex {
X	SetupPage
X	StarsDict begin GalaxyField end
X	PlanetsDict begin
X		gsave 40 dup scale Sun grestore
X		45 dup scale 15 rotate 5 {
X			gsave 3.75 0 translate GibbousPlanet grestore
X			72 rotate
X		} repeat
X	end
X	showpage
X} def
X
X/RingworldHex {
X	SetupPage
X	DoStars { StarsDict begin StandardField end } if
X	PlanetsDict begin
X		gsave 35 dup scale Sun grestore
X		gsave 250 dup scale Ringworld grestore
X	end
X	showpage
X} def
X
X% END DEFINITIONS
X
SingularityHex
END_OF_FILE
if test 22744 -ne `wc -c <'PS-headers/hex.ps'`; then
    echo shar: \"'PS-headers/hex.ps'\" unpacked with wrong size!
fi
# end of 'PS-headers/hex.ps'
fi
if test -f 'PS-headers/lucre.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/lucre.ps'\"
else
echo shar: Extracting \"'PS-headers/lucre.ps'\" \(2161 characters\)
sed "s/^X//" >'PS-headers/lucre.ps' <<'END_OF_FILE'
X%!
X% PRINT COSMIC ENCOUNTER LUCRE
X%
X%	version 1.0, May 8 1991
X%
X% Code copyrighted (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
X% Distributed as Freeware
X
X% PRINT OPTIONS
X
X/SmallLucre false def
X/PoundLucre false def
X
X% CONSTANTS AND ROUTINES
X
X/BigXsize 90 def /BigYsize 30 def
X/BigXMAX 540 BigXsize idiv def /BigYMAX 720 BigYsize idiv def
X/BigWidth BigXMAX BigXsize mul def
X/BigHeight BigYMAX BigYsize mul def
X
X/SmallXsize 30 def /SmallYsize 30 def
X/SmallXMAX 540 SmallXsize idiv def /SmallYMAX 720 SmallYsize idiv def
X/SmallWidth SmallXMAX SmallXsize mul def
X/SmallHeight SmallYMAX SmallYsize mul def
X
X
PoundLucre {
X	/LucreFont /Times-Roman findfont 24 scalefont def
X} {
X	/LucreFont /Symbol findfont 24 scalefont def
X} ifelse
X
X/LucreRow {
X	5 string cvs
X	dup length 2 add string
X	dup 3 -1 roll 2 exch putinterval
X	dup 0 PoundLucre { (\243 ) } { (\301 ) } ifelse putinterval
X
X	exch dup LucreRowCount gt { pop LucreRowCount } if
X	{
X		gsave
X			dup stringwidth pop
X			BigXsize exch sub 2.0 div 5 translate
X			BigXMAX { 0 0 moveto dup show BigXsize 0 translate } repeat
X		grestore
X		0 BigYsize translate /LucreRowCount LucreRowCount 1 sub def
X	} repeat
X	pop
X} def
X
X/BigLucrePage {
X	36 36 translate
X	gsave
X		BigXMAX 1 add {
X			0 0 moveto 0 BigHeight rlineto BigXsize 0 translate
X		} repeat
X		stroke
X	grestore
X	gsave
X		BigYMAX 1 add {
X			0 0 moveto BigWidth 0 rlineto 0 BigYsize translate
X		} repeat
X		stroke
X	grestore
X
X	LucreFont setfont
X	/LucreRowCount BigYMAX def
X	13  1 LucreRow
X	 7  2 LucreRow
X	 3  5 LucreRow
X	 1 10 LucreRow
X	showpage
X} def
X
X/SmallLucrePage {
X	36 36 translate
X	gsave
X		SmallXMAX 1 add {
X			0 0 moveto 0 SmallHeight rlineto SmallXsize 0 translate
X		} repeat
X		stroke
X	grestore
X	gsave
X		SmallYMAX 1 add {
X			0 0 moveto SmallWidth 0 rlineto 0 SmallYsize translate
X		} repeat
X		stroke
X	grestore
X
X	LucreFont setfont
X	PoundLucre { (\243 ) } { (\301 ) } ifelse
X
X	dup stringwidth pop SmallXsize exch sub 2.0 div 4 add 5 translate
X	SmallYMAX {
X		gsave
X			SmallXMAX { 0 0 moveto dup show SmallXsize 0 translate } repeat
X		grestore
X		0 SmallYsize translate
X	} repeat
X	pop
X	showpage
X} def
X
X% END DEFINITIONS
X
SmallLucre { SmallLucrePage } { BigLucrePage } ifelse
END_OF_FILE
if test 2161 -ne `wc -c <'PS-headers/lucre.ps'`; then
    echo shar: \"'PS-headers/lucre.ps'\" unpacked with wrong size!
fi
# end of 'PS-headers/lucre.ps'
fi
if test -f 'PS-headers/moons.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/moons.ps'\"
else
echo shar: Extracting \"'PS-headers/moons.ps'\" \(1294 characters\)
sed "s/^X//" >'PS-headers/moons.ps' <<'END_OF_FILE'
X%!
X% PRINT COSMIC ENCOUNTER MOONS
X%
X%	version 1.0, May 8 1991
X%
X% Code copyrighted (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
X% Distributed as Freeware
X
X% PRINT OPTIONS
X
X/Mcounter 1 def
X
X% ROUTINES AND CONSTANTS
X
X/MoonFont /Helvetica findfont 10 scalefont def
X/NumberFont /Helvetica-Bold findfont 16 scalefont def
X
X/MoonRad 36 def /MoonDelta 80 def
X/XMAX 7 def /YMAX 9 def
X
X/NumString 5 string def
X
X/Secret (S) def
X/Immediate (I) def
X/Continuing (C) def
X
X/Center { moveto dup stringwidth pop -2.0 div 0 rmoveto show } def
X
X/Setup {
X 	/Xcounter 0 def /Ycounter 0 def
X 	21 MoonRad add 36 MoonRad add translate
X} def
X
X/Finished {
X	Xcounter Ycounter add 0 ne { showpage } if
X} def
X
X
X/Moon { % name-array type-string Moon --
X	2.0 setlinewidth newpath 0 0 MoonRad 0 360 arc stroke
X	MoonFont setfont
X
X	exch dup  % type-string name-array name-array
X	length 7.0 mul 10.0 sub /Ypos exch def
X	{ 0 Ypos Center /Ypos Ypos 14 sub def } forall
X
X	NumberFont setfont
X	0 MoonRad neg 5 add Center
X	Mcounter NumString cvs 0 MoonRad 16 sub Center
X
X	/Mcounter Mcounter 1 add def
X
X	0 MoonDelta translate
X	/Ycounter Ycounter 1 add def
X	Ycounter YMAX ge {
X		/Ycounter 0 def
X		/Xcounter Xcounter 1 add def
X		MoonDelta MoonDelta YMAX mul neg translate
X		Xcounter XMAX ge { showpage Setup } if
X	} if
X
X} def
X
X% END DEFINITIONS
END_OF_FILE
if test 1294 -ne `wc -c <'PS-headers/moons.ps'`; then
    echo shar: \"'PS-headers/moons.ps'\" unpacked with wrong size!
fi
# end of 'PS-headers/moons.ps'
fi
if test -f 'PS-headers/powers.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/powers.ps'\"
else
echo shar: Extracting \"'PS-headers/powers.ps'\" \(7179 characters\)
sed "s/^X//" >'PS-headers/powers.ps' <<'END_OF_FILE'
X%!
X% PRINT COSMIC ENCOUNTER POWER CARDS
X%	version 1.0, May 8 1991
X%	version 1.01, May 15 1991
X%	version 1.1, Oct 1991
X%
X% Code copyrighted (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
X% Distributed as Freeware
X%
X% This file requires the file font.ps before it can be printed.
X% Concatenate font.ps onto the FRONT of this file before using.
X
X% version 1.01: Modified so that if an empty string is supplied as the
X%	history, the line "History:" is not printed.  Also fixed up a
X%	problem where sometimes text was obliterated by black-fill.
X
X% version 1.1: All print options except SixPerPage now run-time.  Added
X%	use of NoNewLine to convert '\n' to ' '.
X
X
X% PRINT OPTIONS
X
X/SixPerPage false def
X/WhiteOnBlack true def
X/DoStars true def
X/ShowRestrictions false def
X
X
X% GENERAL CONSTANTS AND ROUTINES
X
X/Setup {
X	StringsDict begin PowersDict begin
X	/DoStars DoStars WhiteOnBlack and store
X	/Counter 0 def
X	90 rotate 18 -594 translate
X} def
X
X/Finished {
X	Counter 0 ne { showpage } if end end
X} def
X
X
X% DICTIONARY USED FOR PREDEFINED USER STRINGS 
X/StringsDict 128 dict def
StringsDict begin
X
X/Optional (Optional) def
X/Mandatory (Mandatory) def
X/Both (Mandatory/Optional) def
X
X/Set0 (Original Set) def
X/Set1 (Expansion 1) def /Set2 (Expansion 2) def /Set3 (Expansion 3) def
X/Set4 (Expansion 4) def /Set5 (Expansion 5) def /Set6 (Expansion 6) def
X/Set7 (Expansion 7) def /Set8 (Expansion 8) def /Set9 (Expansion 9) def
X
X/SetW (Washington U) def
X
X% The following are for backwards compatibility
X/OptPower Optional def /MandPower Mandatory def /BothPower Both def
X/OrigSet Set0 def /ExpSet1 Set1 def /ExpSet2 Set2 def /ExpSet3 Set3 def
X/ExpSet4 Set4 def /ExpSet5 Set5 def /ExpSet6 Set6 def /ExpSet7 Set7 def
X/ExpSet8 Set8 def /ExpSet9 Set9 def
X
end
X
X
X% DICTIONARY USED FOR INFO ABOUT POWER CARDS
X/PowersDict 64 dict def
PowersDict begin
X
SixPerPage {
X	/Xsize 252 def /Ysize 288 def
X} {
X	/Xsize 252 def /Ysize 576 def
X} ifelse
X/Xcenter Xsize 2.0 div def /Ycenter Ysize 2.0 div def
X
X/LeftMargin 14 def
X/RightMargin Xsize LeftMargin sub def
X/LineLength RightMargin LeftMargin sub def
X
X/BlackLeftMargin LeftMargin 2 div def
X/BlackRightMargin Xsize BlackLeftMargin sub def
X/BlackLineLength BlackRightMargin BlackLeftMargin sub def
X
X/FrontNameFont /Helvetica-Bold findfont 24 scalefont def
X/SFrontNameFont { FrontNameFont setfont /FontHeight 24 def } def
X/FrontPowerFont /Helvetica-Bold findfont 10 scalefont def
X/SFrontPowerFont { FrontPowerFont setfont /FontHeight 10 def } def
X/FrontExtraFont /Helvetica-Bold findfont 9 scalefont def
X/SFrontExtraFont { FrontExtraFont setfont /FontHeight 9 def } def
SixPerPage {
X	/BackNameFont /Helvetica-Bold findfont 20 scalefont def
X	/SBackNameFont { BackNameFont setfont /FontHeight 20 def } def
X} {
X	/BackNameFont /Helvetica-Bold findfont 14 scalefont def
X	/SBackNameFont { BackNameFont setfont /FontHeight 14 def } def
X} ifelse
X/BackTextFont /NewHelvetica findfont 8 scalefont def
X/SBackTextFont { BackTextFont setfont /FontHeight 8 def } def
X/BackBoldFont /Helvetica-Bold findfont 8 scalefont def
X/SBackBoldFont { BackBoldFont setfont /FontHeight 8 def } def
X/BackWarnFont /Helvetica-Bold findfont 9 scalefont def
X/SBackWarnFont { BackWarnFont setfont /FontHeight 9 def } def
X
X/SIconFont { IF setfont /FontHeight 12 def } def
X
X/ParagraphHeight {
X	0 exch {
X		dup length 0 eq { pop exit } if
X		LineLength exch BreakLine pop
X		exch 1 add exch
X	} loop
X} def
X
X/FillBlack {
X	gsave
X		-4 FontHeight -0.25 mul 2 sub rmoveto
X		0 FontHeight 1.25 mul 4 add rlineto
X		dup stringwidth pop 8 add 0 rlineto
X		0 FontHeight -1.25 mul 4 sub rlineto
X		closepath 0 setgray fill
X	grestore
X} def
X
X/Line { LeftMargin Ypos moveto show } def
X/Center {
X	moveto dup stringwidth pop -2.0 div 0 rmoveto
X	DoStars { FillBlack } if
X	show
X} def
X/Left {
X	moveto
X	DoStars { FillBlack } if
X	show
X} def
X/Right {
X	moveto dup stringwidth pop neg 0 rmoveto
X	DoStars { FillBlack } if
X	show
X} def
X
X/Power {
X	SixPerPage {
X		Counter 3 eq { Xsize -3 mul Ysize translate } if
X		Counter 6 eq { showpage end end Setup } if
X	} {
X		Counter 3 eq { showpage end end Setup } if
X	} ifelse
X	/Counter Counter 1 add def
X
X	0 setgray 0 0 moveto Xsize 0 rlineto 0 Ysize rlineto
X	Xsize neg 0 rlineto closepath
X	WhiteOnBlack {
X		gsave fill grestore 1 setgray
X		DoStars { StarsDict begin SpangleStars end } if
X	} if
X	0.4 setlinewidth stroke
X
X	2 1 4 { index NoNewLine pop } for
X
X	SixPerPage not {
X		0 Ycenter moveto Xsize 0 rlineto stroke
X	
X		% front of the card
X		gsave
X		Xcenter Ycenter translate 180 rotate
X		SFrontNameFont 9 index 0 -32 Center
X		SFrontPowerFont 6 index 0 -54 Center
X		SFrontExtraFont
X		8 index 10 Xcenter sub 10 Ycenter sub Left
X		7 index Xcenter 10 sub 10 Ycenter sub Right
X		1 index length 0 gt ShowRestrictions and {
X			SIconFont
X			1 index 0 6 Ycenter sub Center
X		} if
X	
X		newpath
X		gsave
X			0 ShowRestrictions { -166 } { -172 } ifelse translate
X			0 0 100 0 360 arc
X			gsave WhiteOnBlack { fill } if grestore
X			gsave
X				clip newpath 0 setgray 1 setlinewidth
X				0 index exec
X			grestore
X			0 setgray 1.5 setlinewidth stroke
X		grestore
X		grestore
X	} if
X
X	% back of the card -- power to/of/Two
X	SBackNameFont
X	
X	9 index Xcenter SixPerPage { 262 } { 266 } ifelse Center
X
X	/Ypos 244 def
X
X	save /Psave exch def
X	DoStars {
X		gsave
X		SBackTextFont
X		4 index ParagraphHeight 1 add 9 mul 5 add
X		4 index dup length 0 ne {
X			ParagraphHeight 9 mul 10 add add
X		} {
X			pop
X		} ifelse 
X		SBackWarnFont
X		3 index dup length 0 ne {
X			ParagraphHeight 9 mul 10 add add
X		} {
X			pop
X		} ifelse 
X		dup Ypos exch sub 10 add BlackLeftMargin exch moveto
X		BlackLineLength 0 rlineto 0 exch rlineto
X		BlackLineLength neg 0 rlineto closepath
X		0 setgray fill 
X		grestore
X	} if
X
X	% restrictions
X	SixPerPage {
X		SFrontExtraFont
X		8 index 10 10 Left
X		7 index Xsize 10 sub 10 Right
X		1 index length 0 gt ShowRestrictions and {
X			SIconFont
X			1 index Xcenter 6 Center
X		} if
X	} if
X
X	% power text
X	SBackTextFont
X	(You have the ) Line
X	SBackBoldFont 5 index show
X	SBackTextFont (. ) show
X
X	4 index currentpoint pop RightMargin exch sub exch
X	BreakLine show
X	/Ypos Ypos 9 sub def
X	{
X		dup length 0 eq { pop exit } if
X		LineLength exch BreakLine Line
X		/Ypos Ypos 9 sub def
X	} loop
X
X
X	% history text
X	3 index length 0 ne {
X		/Ypos Ypos 10 sub def
X		SBackBoldFont (History) Line
X		SBackTextFont (: ) show
X		3 index currentpoint pop RightMargin exch sub exch
X		BreakLine show
X		/Ypos Ypos 9 sub def
X		{
X			dup length 0 eq { pop exit } if
X			LineLength exch BreakLine Line
X			/Ypos Ypos 9 sub def
X		} loop
X	} if
X
X	% warning
X	2 index length 0 ne {
X		/Ypos Ypos 10 sub def
X		SBackWarnFont
X		2 index {
X			dup length 0 eq { pop exit } if
X			LeftMargin Ypos moveto
X			LineLength exch BreakLine show
X			/Ypos Ypos 10 sub def
X		} loop
X	} if
X
X	Psave restore
X	10 { pop } repeat	
X	Xsize 0 translate
X} def
X
end
X
X
X% STARS
X
X/StarsDict 6 dict def
StarsDict begin
X
X/INrand { rand exch mod } def
X/FLrand { rand 100000 mod 100000.0 div } def
X
X/DotArray [
X	(\240)(\240)(\241)(\241)(\242)(\242)(\242)(\243)
X	(\243)(\244)(\244)(\245)(\246)(\247)(\250)(\251)
X] def
X
X/SpangleStars {
X	SF setfont 
X	SixPerPage { 375 } { 750 } ifelse {
X		FLrand Xsize mul FLrand Ysize mul moveto
X		DotArray 16 INrand get show
X	} repeat
X} def
X
end
X
X% END DEFINITIONS
END_OF_FILE
if test 7179 -ne `wc -c <'PS-headers/powers.ps'`; then
    echo shar: \"'PS-headers/powers.ps'\" unpacked with wrong size!
fi
# end of 'PS-headers/powers.ps'
fi
if test -f 'PS-headers/pure.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'PS-headers/pure.ps'\"
else
echo shar: Extracting \"'PS-headers/pure.ps'\" \(7783 characters\)
sed "s/^X//" >'PS-headers/pure.ps' <<'END_OF_FILE'
X%!
X% PRINT EON-STYLE COSMIC ENCOUNTER ATTACK CARDS, COMPROMISE, KICKERS,
X% EDICTS, AND FLARES
X%	version 1.0 Oct 1991
X%
X% Code copyrighted (C) 1991, Ken Cox, kcc@wucs1.wustl.edu
X% Distributed as Freeware
X%
X% This file requires the file font.ps before it can be printed.
X% Concatenate font.ps onto the FRONT of this file before using.
X% 
X% This is simply a pruning of cards.ps to produce a much smaller file
X% that produces strictly Eon-style cards in black-and-white.  The only
X% remaining print option is the card origin.
X
X
X/ShowOrigin false def
X/OriginString () def
X
X
X% GENERIC CONSTANTS, CONTROL ROUTINES, ETC.
X
X/Width 162 def /Height 252 def		% 2.25 inch by 3.5 inch
X/Xcenter Width 2.0 div def
X/XMAX 3 def /YMAX 3 def			% number per page
X/Xcounter 0 def /Ycounter 0 def
X/Xtrans 612 Width XMAX mul sub 2.0 div def
X/Ytrans 792 Height YMAX mul sub 2.0 div Height YMAX 1 sub mul add def
X/OneCharString (.) def
X
X% STRINGS FOR FLARES
X/PT (Power to) def /PO (Power of) def
X/PV (Power over) def /PW (Power) def
X
X/Setup {
X 	/Xcounter 0 store /Ycounter 0 store
X 	Xtrans Ytrans translate
X} def
X/Finished {
X	Xcounter Ycounter add 0 ne { showpage } if
X} def
X
X/NewCard {
X	0.2 setlinewidth
X	0 0 moveto Width 0 rlineto 0 Height rlineto Width neg 0 rlineto
X	closepath stroke
X} def
X/EndCard {
X	0 setgray /Ycounter Ycounter 1 add store 0 Height neg translate
X	Ycounter YMAX ge {
X		/Ycounter 0 store /Xcounter Xcounter 1 add store
X		Width Height YMAX mul translate
X		Xcounter XMAX ge { showpage Setup } if
X	} if
X} def
X
X
X/Center { moveto dup stringwidth pop -2.0 div 0 rmoveto show } def
X/Left { moveto show } def
X/Right { moveto dup stringwidth pop neg 0 rmoveto show } def
X/WhiteOut { gsave 1 setgray fill grestore } def
X/ReversePrint {
X	0 0 moveto Width 0 rlineto 0 Height rlineto Width neg 0 rlineto
X	closepath gsave fill grestore 1 setgray stroke
X} def
X
X
X/TypeFont /Helvetica findfont 10 scalefont def
X/ChallengeType { TypeFont setfont (CHALLENGE CARD) 147 223 Right } def
X/CenteredType { TypeFont setfont Xcenter 223 Center } def
X
X/IndexFont /Helvetica findfont 30 scalefont def
X/IndexPos { 6 223 } def
X/StandardIndex { IndexFont setfont IndexPos Left } def
X
X/OriginFont /Helvetica findfont 8 scalefont def
X/OriginX Width 6 sub def /OriginY 6 def
X/Origin {
X	ShowOrigin {
X		OriginFont setfont OriginString OriginX OriginY Right
X	} if
X} def
X/DefineOrigin {
X	dup /OriginString exch store
X	length 0 ne /ShowOrigin exch store
X} def
X
X
X% ATTACK CARDS
X/AttackInfoDict 12 dict def
AttackInfoDict begin
X
X/AttackFont /Helvetica-Bold findfont 34 scalefont def
X/AvalueFont /Helvetica-Bold findfont 120 scalefont def
X/AvaluePos 36 def
X/AttackString 16 string def
X
X/Index { dup StandardIndex } def
X/Type { ChallengeType } def
X/Name { AttackFont setfont (ATTACK) Xcenter 171 Center } def
X/Value { AvalueFont setfont dup Xcenter AvaluePos Center } def
X
X/AttackResizeFonts {
X	dup 120 mul dup 120 exch sub 2.0 div 36 add /AvaluePos exch def
X	/AvalueFont exch /Helvetica-Bold findfont exch scalefont def
X} def
X
end
X
X
X
X% COMPROMISE CARDS
X
X/CompInfoDict 16 dict def
CompInfoDict begin
X
X/CompFont /Helvetica-Bold findfont 34 scalefont def
X/CnoteFont /Helvetica findfont 12 scalefont def
X
X/Index { (C) StandardIndex } def
X/Type { ChallengeType } def
X/Name { 
X	CompFont setfont (COMP-) Xcenter 171 Center
X	(ROMISE) Xcenter 135 Center 
X} def
X/Note {
X	CnoteFont setfont (MAKE A DEAL, OR) Xcenter 81 Center
X	(TAKE CONSOLATION) Xcenter 63 Center
X} def
X
end
X
X
X
X% KICKERS
X
X/KickerInfoDict 16 dict def
KickerInfoDict begin
X
X/KickerFont /Helvetica-Bold findfont 34 scalefont def
X/KsymFont /Symbol findfont 28 scalefont def
X/KvalueFont /Helvetica-Bold findfont 120 scalefont def
X/KnoteFont /Helvetica findfont 12 scalefont def
X/KickerString 16 string def
X
X/Type { (KICKER) CenteredType } def
X/Index { dup StandardIndex } def
X/Name { KickerFont setfont (KICKER) Xcenter 171 Center } def
X/Value { KvalueFont setfont dup Xcenter 72 Center } def
X/Note { 
X	KnoteFont setfont
X	(PLAY WITH) Xcenter 54 Center
X	(CHALLENGE CARD TO) Xcenter 36.5 Center
X	(ALTER ITS EFFECT) Xcenter 19 Center
X} def
X
end
X
X
X
X/EdictInfoDict 24 dict def
XEdictInfoDict begin
X
X/EdictFont /Helvetica-Bold findfont 26 scalefont def
X/EtextFont /NewHelvetica findfont [10 0 0 12 0 0 ] makefont def
X/EboldFont /Helvetica-Bold findfont [10 0 0 12 0 0 ] makefont def
X/EindexFont /Helvetica-Bold findfont 4.8 scalefont def
X
X/LeftMargin 15 def /RightMargin Width LeftMargin sub def
X/LineLength RightMargin LeftMargin sub def
X
X/Index {
X	gsave newpath 20 234 translate 0 0 13 0 360 arc
X	gsave clip newpath
X	0 index length 0 eq {
X		EindexFont setfont
X		3 index dup length 2.4 mul 3.6 sub 0 exch translate
X		{
X			dup stringwidth pop -2.0 div 0 moveto show
X			0 -4.8 translate
X		} forall
X	} {
X		0 index exec
X	} ifelse
X	grestore
X	1.2 setlinewidth stroke
X	grestore
X} def
X
X/Type { (EDICT) CenteredType } def
X/Name {
X	EdictFont setfont /Eypos 190 def
X	3 index { Xcenter Eypos Center /Eypos Eypos 27 sub def } forall
X} def
X/Description {
X	/Eypos Eypos 7 sub def EboldFont setfont
X	LeftMargin Eypos moveto 2 index show ( ) show
X	EtextFont setfont
X	1 index type /arraytype eq {
X		1 index {
X			show /Eypos Eypos 13 sub def
X			LeftMargin Eypos moveto
X		} forall
X	} { 
X		currentpoint pop RightMargin exch sub
X		dup 20 gt { 2 index BreakLine show } { pop 1 index } ifelse
X		/Eypos Eypos 13 sub def
X		{
X			dup length 0 eq { pop exit } if
X			LeftMargin Eypos moveto
X			LineLength exch BreakLine show
X			/Eypos Eypos 13 sub def
X		} loop
X	} ifelse
X} def
X
X
end
X
X
X% FLARES
X/FlareInfoDict 24 dict def
XFlareInfoDict begin
X
X/FpowerFont /Helvetica-Oblique findfont 12 scalefont def
X/FnameFont /Helvetica-Bold findfont 16 scalefont def
X/FboldFont /Helvetica-Bold findfont 8 scalefont def
X/FnoteFont /NewHelvetica findfont 8 scalefont def
X/FindexFont /Helvetica-Bold findfont 30 scalefont def
X
X/LeftMargin 15 def /RightMargin Width LeftMargin sub def
X/LineLength RightMargin LeftMargin sub def
X
X/Index {
X	newpath 36 216 23 0 360 arc
X	gsave 1 setgray fill grestore
X	gsave clip 36 216 translate 0.23 dup scale newpath 0 setgray
X	0 index length 0 eq {
X		FindexFont setfont 50 rotate
X		5 index dup stringwidth pop 0.4 mul rotate
X		{
X			OneCharString exch 0 exch put
X			OneCharString dup stringwidth pop
X			dup -0.4 mul dup rotate exch
X			-2.0 div 70 moveto exch show rotate
X		} forall
X	} {
X		0 index exec
X	} ifelse
X	grestore
X	1.0 setlinewidth stroke
X} def
X
X/Type {
X	TypeFont setfont (FLARE)
X	108 225 Center
X} def
X
X/Power { 
X	FpowerFont setfont /Fypos 210 def
X	108 5 index {
X		1 index Fypos Center /Fypos Fypos 13 sub def
X	} forall
X	pop
X} def
X
X/Name { FnameFont setfont 5 index LeftMargin 175 Left /Fypos 170 def } def
X/Text { 
X	/Fypos Fypos 7 sub def
X	FboldFont setfont LeftMargin Fypos moveto show
X	FnoteFont setfont currentpoint pop RightMargin exch sub exch
X	BreakLine show
X	/Fypos Fypos 9 sub def
X	{ 
X		dup length 0 eq { pop exit } if
X		LeftMargin Fypos moveto
X		LineLength exch BreakLine show
X		/Fypos Fypos 9 sub def
X	} loop
X} def
X
end
X
X
X
X
X/Attack {
X	AttackInfoDict begin
X	AttackString cvs
X	exch { NewCard Origin Index Type Name Value EndCard } repeat
X	pop
X	end
X} def
X
X/AttackResizeFonts {
X	AttackInfoDict begin AttackResizeFonts end pop
X} def
X
X/Compromise {
X	CompInfoDict begin
X	{ NewCard Origin Index Type Name Note EndCard } repeat
X	end
X} def
X
X/Kicker {
X	KickerInfoDict begin
X	KickerString cvs
X	exch { NewCard ReversePrint Index Origin Type Name Value Note EndCard } repeat
X	pop
X	end
X} def
X
X
X/Edict {
X	EdictInfoDict begin
X	5 -1 roll
X	{
X		NewCard Origin Index Type Name
X		save /Esave exch def
X		Description
X		Esave restore
X		EndCard
X	} repeat
X	4 { pop } repeat
X	end
X} def
X
X/Flare {
X	FlareInfoDict begin
X	NewCard ReversePrint
X	Index Origin Type Power Name
X	save /Fsave exch def
X	2 index (Wild: ) Text
X	1 index (Super: ) Text
X	Fsave restore
X	EndCard
X	6 { pop } repeat
X	end
X} def
X
X
X% END DEFINITIONS
END_OF_FILE
if test 7783 -ne `wc -c <'PS-headers/pure.ps'`; then
    echo shar: \"'PS-headers/pure.ps'\" unpacked with wrong size!
fi
# end of 'PS-headers/pure.ps'
fi
echo shar: End of shell archive.
exit 0

