#! /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 archive 1 (of 2)."
# Contents:  Makefile README albedo.h makefile.dos pspage.c
# Wrapped by hgb@catalina on Thu Jan 23 13:11:35 1997
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(439 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X#
X#	mkchar - an Albedo Q & D character generation program
X#
X#       Comment out the BSD line if you're on System V
X#       Comment out the SYSV line if you're using Berkely Unix.
X#       Comment out both lines if you're using Microsoft C with MS-DOS.
X#
XSYSTEM = -DSYSV 
X#SYSTEM = -DBSD
X
XCFLAGS= -g $(INC) 
X#
XOBJS=	mkchar.o pspage.o
X
Xmkchar:	$(OBJS)
X	cc -o mkchar $(CFLAGS) $(OBJS)
X#
X%.o:	%.c albedo.h
X	cc -o $@ -c $(CFLAGS) $(SYSTEM) $<
X 
END_OF_FILE
if test 439 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(6438 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
X
X	README - Albedo character generator program. (mkchar)
X
X
XVersion 1.3.0	January 23, 1997
X
Xmkchar was written to assist the GM in creating fully designed NPCs for
XAlbedo: The Roleplaying Game. It serves as a aid for the rulebooks, not a
Xreplacement. It is not to be sold for profit nor reproduced without the
Xcredits or copyrights. 
X
XShould you find an improvement, I'd like to hear about it. I will try to
Xmaintain a FTP site for updated versions of the mkchar program.
X
XIt was written after I got tired of lifting NPC from the small number of
Xprinted material out for Albedo. I also dreaded the job of creating PC's
Xfor Confurence 6. At Origins, I assisted the players in creating their
Xown characters but it took an hour, a six page worksheet and a lot of
Xquestions. Being the type of GM that loves a party with 14 - 20 NPC's,
Xeach with their own loves, hates, and agendas, I had to do something
Xdifferent. mkchar was the first step.
X
XThe calling sequence is as follows:
X
X	mkchar [-Admin| -Starship| -Ground] [Species] [Career] [ Number] where
X
X	Admin, Starship or Ground specify that you want to generate characters
X	whose careers are either in Administrative fields, Starship related,
X	or Ground Forces related.
X
X	Species may be any of the common animal species listed in the
X	Rulebook. The first letter may be capitalized.
X
X	Career may be any of the careers listed in the Rules Book. It may
X	be one word - Administration or more - Combat Vehicle Gunner. Either
X	Species or Career may come first in the line; characters will be
X	created following the specification until another Species or Career
X	is entered.
X
X	Number is the number of characters that should be generated.
X
XAny field that is not specified is generated randomly. If none of the fields
Xis specified, the program prints a short usage message.
X
X	e.g.
X
X	mkchar -Starship Raccoon 1	-	produces a single character
X						that is probably a pilot.
X	mkchar 100			-	produces a 100 random NPCs.
X
X	mkchar Rabbit 30		-	creates a platoon of ILR
X						rabbits.
X
X	mkchar Fox Wolf Rabbit 3 Hawk	-	creates a fox character, a
X						wolf, 3 rabbits, and a hawk.
X
X	mkchar Starship Pilot 3		-	creates a room of pilots.
X
X	mkchar Heavy Weapons Rabbit	- 	creates a rabbit with a big
X						gun.
X
X	mkchar Sheep Combat Vehicle Driver Rat 2
X					-	creates tank drivers, one 
X						sheep and two rat.
X	mkchar Diplomancy Rabbit Merchant Pilot
X					-	creates a Rabbit ambassador
X						and a pilot of some other
X						species.
X
XOutput is scaled to produce two characters per page on a roughly 66 line
Xpage. I use up to 10 point font to print them out. Adjusting the printing
Xout section to produce the type of character sheet useful to you is left
Xas an exercise for the reader.
X
XThe program creates characters in the same manner that a player generates
Xa character. First, a species is specified or generated. The table of
Xspecies adjustments is consulted and a set of numbers for each of the
Xstats is generated. The cost of the stats is computed and compared against
Xthe minimum and maximum Points Available. Stats falling within the range
Xare stored in a character structure, along with the computed stats.
X
XNext, the character's background, and background skills are decided. Each
Xskill is marked in a structure, which keeps track of the skills already
Xselected. A career is chosen and the primary and secondary skills are
Xmarked in the structure. Higher Knowledge Careers roll again to select
Xone of the Knowledge subset of skills.
X
XThe 20 odd points used to round out a character are then spent. Skills are
Xchosen from a small pool of skills related to the career as well as the
Xvarious Expertises. Each time a skill is marked, the cost is computed 
Xand compared against the points remaining. Should a skill cost too much,
Xanother skill must be chosen. The SPI is updated and the character is
Xprinted out - with some formating.
X
XThis is a program in progress and by no means the final version. More
Xcontrol over the final character might be good. Ties and Antipathies
Xmight be created as well. 
X
XThere is no way to specify that Core and Inclination Dispositions should
Xnot be Disorders for EDF characters. Nor do EDF characters get Coolness
XUnder Fire automatically. 
X
XBurden and Encumberance levels should be computed and added to the list.
XIdeally, the output could be passed through a filter and printed as a 
Xcharacter sheet. Some thought could be made about equipment available..
X
XA Windows or GUI interface to create one's own character would be a nice
Xextension.
X
XVersion 1.1.3	December 20, 1995
X
XSystems Engineering is now broken into its specialities - Chemical, Fusion
XDrive, etc.
X
XA file called 'albedo.cha' is created for the first character - this can
Xbe printed out seperately. As this program is being used to create PCs
Xas well as NPCs, this hack lets the player print his character out.
X
XOriginally, the characteristics rolls were drawn from the average of six
Xrolls; this was meant to create a more average character. This has been
Xdropped as too many NPCs looked almost identical - outside of their species.
X
XCurrently, PC is defined; this means that none of the Disorders will be
Xgenerated for characters.
X
XSpacing is a problem; users need to edit the amount of spacing they'd like
Xbetween characters by defining SPACING or SPACING1 or none. Currently, the
Xprogram prints no spaces or newpages between characters.
X
XMany of these problems could be solved by splitting the functionality of
Xthe program between a NPC creating and PC creating versions. A config.h
Xfile would help too.
X
XVersion 1.2.0	December 24, 1995
X
XThe career of the NPC can now be set on the parameter line. 'Bargining' has
Xbeen correctly spelled as 'Bargaining.' 
X
XVersion 1.2.1	August 23, 1996
X
XThanks to Ola Egren of corps@ts.umu.se who added code to generate HTML code
Xfor the output as well as cleaning up the code for specifying whether a PC
Xor NPC should be created.
X
XVersion 1.3.0	January 23, 1997
X
XI've added code to write out a PostScript file of the first character generated.
XThis stop-gap method saves the generated character in a format that can be
Xprinted and given out to players - as well as saved in a paper file of 
Xcharacters and NPCs. The filename is 'albedo.ps'.
X
XUnder Ola Egren's modifications, creating a PC is not the default; the -PC
Xflag must be used to create PC's. Actually, this program should be heavily
Xmodified to allow one to create either random or specific characters.
X
X
X
END_OF_FILE
if test 6438 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'albedo.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'albedo.h'\"
else
echo shar: Extracting \"'albedo.h'\" \(20726 characters\)
sed "s/^X//" >'albedo.h' <<'END_OF_FILE'
X/* albedo.h
X
X	This file is used the with Albedo mkchar character generator. 
X
X	You may use the mkchar program and modify the source code
X	for your own purposes given that the following conditions
X	are met:
X
X	1.) this notice must remain in the source code
X	2.) you may not sell the program or source code
X
X	I would appreciate any new versions you make based on this code.
X
X	Albedo and its associated tables are Copyright 1993, Steve Gallacci
X	and Paul Kidd, Thoughts & Images. This program is offered with the
X	understanding that it will be used to assist in the Albedo RolePlaying
X	Game.
X
X	Version 1.0	 4-Jan-95	hgb@catalina.opt-sci.arizona.edu
X	Version 1.1.1	14-Feb-95	Added Damage Modifiers and Str Modifiers
X	Version 1.1.2	20-Dec-95	Modified character gen dice, added
X					single file output.
X	Version 1.1.3	20-Dec-95	Broke out Systems Engineering
X	Version 1.2.0	24-Dec-95	Added Careers Selection.
X	Version 1.2.1	20-Aug-96	PC, HTML coding added by corps@ts.um.se
X*/
X#define A	1
X#define B	2
X#define C	3
X#define D	4
X#define E	5
X#define F	6
X#define G	7
X
X/*
X	These limit which sets of stats will be accepted. For more consistent
X	characters, define MIN_POINTS higher. For more powerful characters,
X	define MAX_POINTS higher.
X*/
X
X#define MAX_POINTS	43
X#define MIN_POINTS	37
X
X/*
X	These are the extra experience points that characters get to finish
X	their skills. 20 is usual for beginning characters. 40 or 60 for
X	really experienced characters.
X*/
X#define EXTRA_POINTS	20
X/*
X	These cover the definations of the skills - both as to Type and 
X	Controlling Attribute.
X*/
X#define SOCIAL		0
X#define WEAPON		1
X#define TOOL_USE	2
X#define TAC_STRAT	3
X#define EXPERTISE	4
X#define KNOWLEDGE	5
X#define MOVE_PERCEP	6
X
X#define STR		0
X#define STA		1
X#define MDEX		2
X#define CRD		3
X#define REA		4
X#define INTU		5
X#define STAB		6
X#define DRIV		7
X#define SELF		8
X#define INTU_MDEX	9
X#define INTU_CRD	10
X#define INTU_REA	11
X#define INTU_DRIV	12
X#define STR_CRD		13
X#define REA_MDEX	14
X#define REA_DRIV	15
X
X#define S_LEN		30
X
Xtypedef struct spe_type {
X	char spe_name[20];
X	char spe_str;
X	char spe_sta;
X	char spe_mdex;
X	char spe_crd;
X	char spe_rea;
X	char spe_int;
X	char spe_driv;
X	char spe_stab;
X	char spe_frame[10];
X	} Spe_Type;
X
Xtypedef struct character {
X	char c_species[20];
X	int c_str;
X	int c_sta;
X	int c_mdex;
X	int c_crd;
X	int c_rea;
X	int c_int;
X	int c_driv;
X	int c_stab;
X	char c_frame[10];
X	char disposition_core[20];
X	char disposition_incl[20];
X	int recoil_number;
X	int max_fatigue;
X	int cur_fatigue;
X	int dam_mods;
X	int str_mods;
X	int actions_turn;
X	double SPI;
X	int Mil;
X	char background[15];
X	char career[S_LEN];
X	char init_dice[6];
X	int self_im_low;
X	int self_im_high;
X	int self_im_cur;
X	} Character;
X
XCharacter	MyChar;
X
X/*	Name	       str sta mdex crd rea int driv stab */
X
XSpe_Type Species[] = {
X{ "Crow",	A, D, E, F, D, D, D, D, "Small"},	/* Minor Avians */
X{ "Duck",	A, D, E, F, D, D, D, D, "Small"},
X{ "Raven",	A, D, E, F, D, D, D, D, "Small"},
X{ "Parrot",	A, D, E, F, D, D, D, D, "Small"},
X{ "Penguin",	A, D, E, F, D, D, D, D, "Small"},
X{ "Eagle",	B, D, D, E, D, D, D, D, "Light"},	/* Major Avians */
X{ "Hawk",	B, D, D, E, D, D, D, D, "Light"},
X{ "Heron",	B, D, D, E, D, D, D, D, "Light"},
X{ "Ostrich",	D, D, D, D, D, D, D, D, "Average"},	/* Ratites */
X{ "Emu",	D, D, D, D, D, D, D, D, "Average"},
X{ "Small Dog",	B, D, D, D, D, D, D, D, "Light"},	/* Canines */
X{ "Coyote",	B, D, D, D, D, D, D, D, "Light"},	/* Canines */
X{ "Dog",	C, D, D, E, D, D, D, D, "Average"},
X{ "Large Dog",	D, D, D, E, D, D, D, D, "Average"},
X{ "Wolf",	E, D, D, C, D, D, D, D, "Solid"},
X{ "Fox",	B, D, D, E, D, D, D, D, "Light"},
X{ "Fennec",	B, D, D, E, D, D, D, D, "Light"},
X{ "Cat",	B, D, D, E, D, D, D, D, "Light"},	/* Felines */
X{ "Cougar",	D, C, D, E, D, D, D, D, "Average"},
X{ "Leopard",	D, C, D, E, D, D, D, D, "Average"},
X{ "Puma",	D, C, D, E, D, D, D, D, "Average"},
X{ "Jaguar",	D, C, D, E, D, D, D, D, "Average"},
X{ "Lynx",	D, C, D, E, D, D, D, D, "Average"},
X{ "Lion",	E, C, D, D, D, D, D, D, "Solid"},
X{ "Tiger",	E, C, D, D, D, D, D, D, "Solid"},
X{ "Platypus",	B, D, D, E, D, D, D, E, "Small"},	/* Marsupials */
X{ "Possum",	B, C, D, F, D, D, D, C, "Light"},
X{ "Kangaroo",	D, D, D, D, D, D, D, D, "Average"},
X{ "Ferret",	B, D, D, E, D, D, D, B, "Light"},	/* Musteldae */
X{ "Otter",	B, D, D, E, D, D, D, B, "Light"},
X{ "Stoat",	B, D, D, E, D, D, D, E, "Light"},
X{ "Skunk",	C, D, B, C, D, D, D, E, "Light"},
X{ "Weasel",	B, D, D, E, D, D, D, E, "Light"},
X{ "Mouse",	A, D, E, F, D, D, D, D, "Small"},	/* Rodents */
X{ "Rat",	A, D, E, F, D, D, D, D, "Small"},
X{ "Gopher",	A, D, E, F, D, D, D, D, "Small"},
X{ "Hedgehog",	A, D, E, F, D, D, D, D, "Small"},
X{ "Chipmunk",	B, D, D, E, D, D, D, D, "Light"},
X{ "Squirrel",	B, D, D, E, D, D, D, D, "Light"},
X{ "Rabbit",	B, D, D, E, D, D, D, D, "Light"},
X{ "Camel",	E, E, C, C, D, D, D, G, "Solid"},	/* Ungulates */
X{ "Cow",	E, E, C, C, D, D, D, G, "Solid"},
X{ "Horse",	E, E, C, C, D, D, D, G, "Solid"},
X{ "Goat",	D, D, C, D, D, D, D, B, "Average"},
X{ "Deer",	D, D, C, D, D, D, D, B, "Average"},
X{ "Sheep",	D, D, C, D, D, D, D, B, "Average"},
X{ "Pig",	D, D, C, D, D, D, D, B, "Average"},
X{ "Rhino",	G, D, C, D, D, D, D, B, "Huge"},
X{ "Raccoon",	C, D, D, E, D, D, D, C, "Average"},	/* Ursoids */
X{ "Bear",	G, C, D, B, D, D, D, G, "Huge"},
X{ "",		A, A, A, A, A, A, A, A, ""}};		/* EOF */
X
Xint CharCosts[8][7] = {
X	{	1,	2,	3,	5,	7,	10,	15},
X/* A */	{	3,	3,	4,	4,	5,	6,	7},
X/* B */	{	5,	6,	7,	8,	9,	10,	11},
X/* C */	{	6,	7,	8,	9,	10,	11,	12},
X/* D */	{	7,	8,	9,	10,	11,	12,	13},
X/* E */	{	8,	9,	10,	11,	12,	13,	14},
X/* F */	{	9,	10,	11,	12,	13,	14,	15},
X/* G */	{	11,	12,	13,	14,	15,	16,	17}};		
X
Xtypedef struct ran_spe {
X	char	ran_species[20];
X	int	next_percent;
X} Ran_Spe;
X
XRan_Spe RandSpe[] = {
X{ "Bear", 5}, { "Beaver", 7}, { "Camel", 8}, { "Cat", 18}, { "Cow",19},
X{ "Crow", 20}, { "Raven", 21}, { "Small Dog", 27},{ "Coyote", 29},
X{ "Large Dog", 37}, { "Duck", 39}, { "Eagle", 40}, { "Emu", 41},
X{ "Ferret", 42}, { "Fox", 47}, { "Goat", 48}, { "Gopher", 49},
X{ "Hedgehog", 50}, { "Heron", 51}, { "Horse",55}, { "Lion", 56},
X{ "Mouse", 65}, { "Otter", 68}, { "Ostrich", 69},
X{ "Parrot", 70}, { "Hawk", 71}, { "Penguin", 72}, { "Leopard", 73}, { "Pig",74},
X{ "Possum", 76}, { "Rabbit", 82},{ "Raccoon", 84}, { "Rat", 89}, { "Rhino", 90},
X{ "Sheep", 92}, { "Stoat", 93}, { "Squirrel", 94}, { "Tiger", 95}, { "Wolf",98},
X{ "Jaguar", 99}, { "Lynx", 100}, { " ", 1000 }};
X
X/*
X	Dispositions
X*/
Xchar Disposition[40][20] = 
X	{ "Cautious", "Polite", "Exacting", "Generous", "Talkative",
X	  "Kind", "Responsible", "Modest", "Straightforward", "Friendly",
X	  "Reckless", "Vulgar", "Vague", "Greedy", "Laconic (Reserved)",
X	  "Cruel", "Irresponsible", "Conceited", "Devious", "Cynical",
X	  "Paranoid", "Sycophantic", "Perfectionist", "Wasteful", "Hysterical",
X	  "Saintly", "Fanatical", "Antisocial", "Callous", "Amorous",
X	  "Manic", "Obscene", "Apathetic", "Miserly", "Mute", "Diabolical",
X	  "Amoral", "Messianic", "Treacherous", "Psychopathic" };
X/*
X	Skills
X*/
Xtypedef struct skill_list  {
X	char skill_name[S_LEN];	/* Name of the skill */
X	int skill_type;		/* Social, Weapon, etc. */
X	int skill_attr;		/* On which characteristics is it based? */
X	int skill_chosen;	/* 0 - Not, 1 - Skill, 2 - Adept, 3 - Master */
X	int skill_value;	/* Actual skill value */
X} Skill_list;
X
Xint NoSkills;
Xint NoEngineeringSkills;
X
XSkill_list Skills[] = {
X	{ "Administration", KNOWLEDGE, REA_DRIV, 0, 0 },
X	{ "Aerodyne Weapons", WEAPON, REA_MDEX, 0, 0 },
X	{ "Aerospace Pilot", TOOL_USE, MDEX, 0, 0 },
X	{ "Art", SOCIAL, INTU_MDEX, 0, 0},
X	{ "Assess Personality", EXPERTISE, INTU, 0, 0 },
X	{ "Auto G.L. Gunnery", WEAPON, MDEX, 0, 0 },
X	{ "Bargaining", EXPERTISE, DRIV, 0, 0 },
X	{ "Biology", KNOWLEDGE, REA, 0, 0 },
X	{ "Botany", KNOWLEDGE, REA, 0, 0 },
X	{ "Brokerage", KNOWLEDGE, INTU_REA, 0, 0 },
X	{ "Chemical Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Climbing", MOVE_PERCEP, STR_CRD, 0, 0 },
X	{ "Computer Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Computer Operations", KNOWLEDGE, REA, 0, 0 },
X	{ "Coolness under Fire", MOVE_PERCEP, CRD, 0, 0 },
X	{ "Current Affairs", SOCIAL, REA, 0, 0},
X	{ "Dancing", SOCIAL, CRD, 0, 0 },
X	{ "Debate", EXPERTISE, REA, 0, 0 },
X	{ "Demolitions", TOOL_USE, REA_MDEX, 0, 0 },
X	{ "Detect Lie", EXPERTISE, INTU, 0, 0 },
X	{ "Ecological Science", KNOWLEDGE, REA, 0, 0 },
X	{ "Electronic Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Electronics", KNOWLEDGE, REA_MDEX, 0, 0 },
X	{ "Fine Arts Appreciation", KNOWLEDGE, INTU_REA, 0, 0 },
X	{ "First Aid", KNOWLEDGE, INTU_REA, 0, 0 },
X	{ "Forgery", KNOWLEDGE, INTU_REA, 0, 0 },
X	{ "Fusion Drive Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Gambling", EXPERTISE, REA, 0, 0 },
X	{ "Geology", KNOWLEDGE, REA, 0, 0 },
X	{ "Handguns", WEAPON, MDEX, 0, 0 },
X	{ "Higher Mathematics", KNOWLEDGE, REA, 0, 0 },
X	{ "Jump Drive Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Jump Drive", KNOWLEDGE, INTU_REA, 0, 0 },
X	{ "Law", KNOWLEDGE, INTU_REA, 0, 0 },
X	{ "Leadership", SOCIAL, SELF, 0, 0 },
X	{ "Literacy", SOCIAL, INTU_REA, 0, 0 },
X	{ "Longarms", WEAPON, MDEX, 0, 0 },
X	{ "Longarms/Grenade L.", WEAPON, MDEX, 0, 0 },
X	{ "Lrg Ground Vehicle Driver", TOOL_USE, MDEX, 0, 0 },
X	{ "Mechanical Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Mechanical Repair", KNOWLEDGE, INTU_MDEX, 0, 0 },
X	{ "Medicine", KNOWLEDGE, REA, 0, 0 },
X	{ "Melee (Armed)", WEAPON, CRD, 0, 0 },
X	{ "Melee (Unarmed)", WEAPON, STR_CRD, 0, 0 },
X	{ "Mineral Appraisal", KNOWLEDGE, REA, 0, 0 },
X	{ "Mingle", EXPERTISE, INTU, 0, 0 },
X	{ "Musician", SOCIAL, INTU_MDEX, 0, 0 },
X	{ "Naval Deployment", TAC_STRAT, REA, 0, 0 },
X	{ "Navigation", KNOWLEDGE, INTU, 0, 0 },
X	{ "Philosophy", KNOWLEDGE, INTU_REA, 0, 0 },
X	{ "Physics", KNOWLEDGE, REA, 0, 0 },
X	{ "Political Science", KNOWLEDGE, REA, 0, 0 },
X	{ "Public Speaking", EXPERTISE, DRIV, 0, 0 },
X	{ "Repartee", EXPERTISE, REA, 0, 0 },
X	{ "Research", KNOWLEDGE, INTU_REA, 0, 0 },
X	{ "Salesman", KNOWLEDGE, INTU_DRIV, 0, 0 },
X	{ "Scrounge", EXPERTISE, INTU, 0, 0 },
X	{ "Sm Ground Vehicle Driver", TOOL_USE, MDEX, 0, 0 },
X	{ "Small Unit Tactics: Air", TAC_STRAT, INTU_REA, 0, 0 },	
X	{ "Small Unit Tactics: Ground", TAC_STRAT, INTU_REA, 0, 0 },
X	{ "Sneaking", MOVE_PERCEP, INTU_CRD, 0, 0 },
X	{ "Snitch/Listen", EXPERTISE, INTU, 0, 0 },
X	{ "Socio-History", KNOWLEDGE, REA, 0, 0 },
X	{ "Spin Yarn", EXPERTISE, REA, 0, 0 },
X	{ "Spot", EXPERTISE, INTU, 0, 0 },
X	{ "Starship Navigation", KNOWLEDGE, REA, 0, 0 },
X	{ "Starship Pilot", TOOL_USE, REA, 0, 0 },
X	{ "Starship Weapons", TAC_STRAT, INTU_REA, 0, 0 },
X	{ "Strategic Deployment", TAC_STRAT, INTU_REA, 0, 0 },
X	{ "Streetwise", KNOWLEDGE, INTU, 0, 0 },
X	{ "Structural Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Surgery", KNOWLEDGE, REA_MDEX, 0, 0 },
X	{ "Swimming", MOVE_PERCEP, STR, 0, 0 },
X	{ "Systems Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Throw", EXPERTISE, CRD, 0, 0 },
X	{ "Turreted Gunnery", WEAPON, MDEX, 0, 0 },
X	{ "Zero-G Movement", MOVE_PERCEP, CRD, 0, 0 },
X	{ "", EXPERTISE, SELF, 0, 0 }};
X/*
X	Special choice for Systems Engineering Specialities
X*/
XSkill_list EngineeringSkills[] = {
X	{ "Systems Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Chemical Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Computer Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Electronic Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Fusion Drive Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Jump Drive Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Mechanical Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "Structural Engineering", KNOWLEDGE, REA, 0, 0 },
X	{ "", EXPERTISE, SELF, 0, 0 }};
X
X/*
X	Career list and lists of additional skills
X*/
X
X#define ADMIN		1		/* Types of additional skills */
X#define RESEARCH	2
X#define MIL_SPACE	3
X#define MIL_GROUND	4
X#define TECH		5
X#define OTHER		6
X
Xint CareerType;
Xint NoCareers;
X
Xtypedef struct careers {
X	char C_name[S_LEN];		/* Name of career */
X	char C_1st_match[S_LEN];	/* First name part (matching) */
X	char C_2nd_match[S_LEN];	/* Second name part (matching) */
X	char C_3rd_match[S_LEN];	/* Third name part (matching) */
X	char C_pskill[S_LEN];		/* Primary Skill (Adept) */
X	char C_1skill[S_LEN];		/* 1st Secondary Skill */
X	char C_2skill[S_LEN];		/* 2nd Secondary Skill */
X	int Other_list;			/* Number of list for other skills */
X	double minSPI;			/* Minimum SPI for this career */
X	} Career_List;
X
XCareer_List Careers[] = {
X{ "Administration",
X	"Administration", "", "",
X	"Administration", "Bargaining", "Computer Operations", ADMIN, 0.0},
X{ "Advanced Education",
X	"Advanced", "Education", "",
X	"Knowledge", "Knowledge", "Knowledge", RESEARCH, 0.0},
X{ "Aerospace Crew",
X	"Aerospace", "Crew", "",
X	"Computer Operations", "Zero-G Movement", "Electronics",MIL_SPACE, 0.0},
X{ "Business Sales",
X	"Business", "Sales", "",
X	"Salesman", "Bargaining", "Brokerage", OTHER, 0.0},
X{ "Diplomancy", 
X	"Diplomancy", "", "",
X	"Current Affairs", "Law", "Mingle", ADMIN, 3.0},
X{ "Martial Arts",
X	"Martial", "Arts", "",
X	"Melee (Unarmed)", "Handguns", "Melee (Armed)", MIL_GROUND, 0.0},
X{ "Merchant Pilot",
X	"Merchant", "Pilot", "",
X	"Starship Pilot",
X	"Aerospace Pilot", "Starship Navigation", MIL_SPACE, 3.0},
X{ "Merchant Pilot",
X	"Merchant", "Pilot", "",
X	"Starship Pilot",
X	"Aerospace Pilot", "Starship Navigation", MIL_SPACE, 3.0},
X{ "Merchant Supercargo", 
X	"Merchant", "Supercargo", "",
X	"Administration", "Bargaining", "Streetwise", OTHER, 0.0},
X{ "Political Studies",
X	"Political", "Studies", "",
X	"Political Science", "Research", "Socio-History", RESEARCH, 0.0},
X{ "Aerospace Gunner/Obs",
X	"Aerospace", "Gunner/Obs", "",
X	"Aerodyne Weapons", "Mechanical Repair", "Spot", MIL_SPACE, 0.0},
X{ "Aerospace Pilot",
X	"Aerospace", "Pilot", "",
X	"Aerospace Pilot", "Aerodyne Weapons", "Navigation", MIL_SPACE, 0.0},
X{ "Combat Vehicle Driver",
X	"Combat", "Vehicle", "Driver",
X	"Lrg Ground Vehicle Driver",
X	"Mechanical Repair", "Navigation", MIL_GROUND, 0.0},
X{ "Combat Vehicle Gunner",
X	"Combat", "Vehicle", "Gunner",
X	"Turreted Gunnery", "Computer Operations", "Spot", MIL_GROUND, 0.0},
X{ "Combat Weapons",
X	"Combat", "Weapons", "",
X	"Longarms", "Coolness under Fire", "Handguns", MIL_GROUND, 0.0},
X{ "Combat Weapons",
X	"Combat", "Weapons", "",
X	"Longarms", "Coolness under Fire", "Handguns", MIL_GROUND, 0.0},
X{ "Combat Weapons",
X	"Combat", "Weapons", "",
X	"Longarms", "Coolness under Fire", "Handguns", MIL_GROUND, 0.0},
X{ "Command",
X	"Command",  "", "",
X	"Administration", "Leadership", "Assess Personality", ADMIN, 3.0},
X{ "Command",
X	"Command",  "", "",
X	"Administration", "Leadership", "Coolness under Fire", ADMIN, 3.0},
X{ "Engineering",
X	"Engineering",  "", "",
X	"Systems Engineering", "Higher Mathematics", "Physics", TECH, 0.0},
X{ "Field Craft",
X	"Field", "Craft", "",
X	"Sneaking", "Climbing", "Spot", MIL_GROUND, 0.0},
X{ "Field Medic",
X	"Field", "Medic", "",
X	"First Aid", "Coolness under Fire", "Medicine", MIL_GROUND, 0.0},
X{ "Heavy Weapons",
X	"Heavy", "Weapons", "",
X	"Longarms", "Auto G.L. Gunnery", "Throw", MIL_GROUND, 0.0},
X{ "Heavy Weapons",
X	"Heavy", "Weapons", "",
X	"Longarms", "Auto G.L. Gunnery", "Throw", MIL_GROUND, 0.0},
X{ "Interrogation",
X	"Interrogation", "", "",
X	"Detect Lie", "Assess Personality", "Bargaining", ADMIN, 0.0},
X{ "Starship Gunner",
X	"Starship", "Gunner", "",
X	"Starship Weapons",
X	"Naval Deployment", "Small Unit Tactics: Air", MIL_GROUND, 0.0},
X{ "Starship Gunner",
X	"Starship", "Gunner", "",
X	"Starship Weapons",
X	"Naval Deployment", "Small Unit Tactics: Air", MIL_GROUND, 0.0},
X{ "Starship Navigator",
X	"Starship", "Navigator", "",
X	"Jump Drive",
X	"Computer Operations", "Starship Navigation", MIL_SPACE, 0.0},
X{ "Starship Navigator",
X	"Starship", "Navigator", "",
X	"Jump Drive",
X	"Computer Operations", "Starship Navigation", MIL_SPACE, 0.0},
X{ "Starship Pilot",
X	"Starship", "Pilot", "",
X	"Starship Pilot",
X	"Starship Navigation", "Starship Weapons", MIL_SPACE, 3.5},
X{ "Starship Pilot",
X	"Starship", "Pilot", "",
X	"Starship Pilot",
X	"Starship Navigation", "Starship Weapons", MIL_SPACE, 3.5},
X{ "Vehicle Mechanic",
X	"Vehicle", "Mechanic", "",
X	"Mechanical Repair", "Electronics", "Computer Operations", TECH, 0.0},
X{ "Engineering Asst.",
X	"Engineering", "Asst.", "",
X	"Mechanical Repair", "Electronics", "Computer Operations", TECH, 0.0},
X{ "Engineering Asst.",
X	"Engineering", "Asst.", "",
X	"Systems Engineering", "Electronics", "Computer Operations", TECH, 0.0},
X{ "", "", "", "", "", "", "", ADMIN, 9.0 }};
X
X#define ADMIN_CHOICE	37
X
Xchar Admin[ADMIN_CHOICE][S_LEN] = {
X"Art", "Current Affairs", "Dancing", "Leadership", "Literacy", "Musician",
X"Melee (Unarmed)", "Handguns", "Sm Ground Vehicle Driver", "Administration",
X"Computer Operations", "Fine Arts Appreciation", "Forgery", "Higher Mathematics",
X"Law", "Philosophy", "Physics", "Political Science", "Research", "Salesman",
X"Socio-History", "Streetwise", "Naval Deployment",
X"Strategic Deployment", "Assess Personality", "Bargaining", "Debate",
X"Detect Lie", "Gambling", "Mingle", "Public Speaking", "Repartee", "Scrounge",
X"Snitch/Listen", "Spin Yarn", "Spot", "Throw"};
X
X#define RESEARCH_CHOICE	56
X
Xchar Research[RESEARCH_CHOICE][S_LEN] = {
X"Art", "Current Affairs", "Dancing", "Literacy", "Musician", "Sneaking",
X"Swimming", "Zero-G Movement", "Melee (Armed)", "Melee (Unarmed)", "Handguns",
X"Sm Ground Vehicle Driver", "Lrg Ground Vehicle Driver", "Starship Pilot",
X"Administration", "Biology", "Botany", "Brokerage", "Computer Operations",
X"Ecological Science", "Electronics", "Fine Arts Appreciation", "First Aid",
X"Geology", "Higher Mathematics", "Jump Drive", "Law", "Mechanical Repair",
X"Medicine", "Mineral Appraisal", "Navigation", "Philosophy", "Physics",
X"Political Science", "Research", "Salesman", "Starship Navigation",
X"Socio-History", "Streetwise", "Surgery", "Systems Engineering",
X"Naval Deployment", "Strategic Deployment", "Assess Personality",
X"Bargaining", "Debate", "Detect Lie", "Gambling", "Mingle", "Public Speaking",
X"Repartee", "Scrounge", "Snitch/Listen", "Spin Yarn", "Spot", "Throw"};
X
X#define MIL_SPACE_CHOICE	45
X
Xchar Mil_Space[MIL_SPACE_CHOICE][S_LEN] = {
X"Leadership", "Climbing", "Coolness under Fire", "Sneaking", "Zero-G Movement",
X"Turreted Gunnery", "Melee (Armed)", "Melee (Unarmed)", "Handguns",
X"Longarms/Grenade L.", "Longarms", "Aerospace Pilot", "Demolitions",
X"Starship Pilot", "Computer Operations", "Electronics", "First Aid",
X"Forgery", "Higher Mathematics", "Jump Drive", "Mechanical Repair", "Medicine",
X"Navigation", "Physics", "Research", "Starship Navigation", "Socio-History",
X"Systems Engineering", "Starship Weapons", "Naval Deployment",
X"Small Unit Tactics: Air", "Strategic Deployment", "Assess Personality",
X"Bargaining", "Debate", "Detect Lie", "Gambling", "Mingle", "Public Speaking",
X"Repartee", "Scrounge", "Snitch/Listen", "Spin Yarn", "Spot", "Throw"};
X
X#define MIL_GROUND_CHOICE	40
X
Xchar Mil_Ground[MIL_GROUND_CHOICE][S_LEN] = {
X"Leadership", "Climbing", "Coolness under Fire", "Sneaking", "Swimming",
X"Aerodyne Weapons", "Auto G.L. Gunnery", "Turreted Gunnery", "Melee (Armed)",
X"Melee (Unarmed)", "Handguns", "Longarms/Grenade L.", "Longarms",
X"Aerospace Pilot", "Demolitions", "Sm Ground Vehicle Driver",
X"Lrg Ground Vehicle Driver", "Computer Operations", "Electronics", "First Aid",
X"Forgery", "Higher Mathematics", "Mechanical Repair", "Mineral Appraisal",
X"Navigation", "Streetwise", "Small Unit Tactics: Ground", "Assess Personality",
X"Bargaining", "Debate", "Detect Lie", "Gambling", "Mingle", "Public Speaking",
X"Repartee", "Scrounge", "Snitch/Listen", "Spin Yarn", "Spot", "Throw"};
X
X#define TECH_CHOICE 37
X
Xchar Tech[TECH_CHOICE][S_LEN] = {
X"Climbing", "Coolness under Fire", "Sneaking", "Swimming", "Aerodyne Weapons",
X"Melee (Armed)", "Melee (Unarmed)", "Handguns", "Longarms", "Demolitions",
X"Sm Ground Vehicle Driver", "Lrg Ground Vehicle Driver", "Brokerage",
X"Computer Operations", "Electronics", "Forgery", "Higher Mathematics",
X"Mechanical Repair", "Mineral Appraisal", "Navigation", "Physics", "Research",
X"Streetwise", "Systems Engineering", "Assess Personality", "Bargaining",
X"Debate", "Detect Lie", "Gambling", "Mingle", "Public Speaking", "Repartee",
X"Scrounge", "Snitch/Listen", "Spin Yarn", "Spot", "Throw"};
X
X#define OTHER_CHOICE	45
X
Xchar Other[OTHER_CHOICE][S_LEN] = {
X"Art", "Current Affairs", "Dancing", "Literacy", "Musician", "Climbing",
X"Sneaking", "Swimming", "Zero-G Movement", "Melee (Armed)", "Melee (Unarmed)",
X"Handguns", "Longarms", "Aerospace Pilot", "Sm Ground Vehicle Driver",
X"Starship Pilot", "Administration", "Brokerage", "Computer Operations",
X"Electronics", "Fine Arts Appreciation", "Forgery", "Higher Mathematics",
X"Law", "Mechanical Repair", "Mineral Appraisal", "Navigation", "Philosophy",
X"Physics", "Political Science", "Salesman", "Streetwise", "Assess Personality",
X"Bargaining", "Debate", "Detect Lie", "Gambling", "Mingle", "Public Speaking",
X"Repartee", "Scrounge", "Snitch/Listen", "Spin Yarn", "Spot", "Throw" };
END_OF_FILE
if test 20726 -ne `wc -c <'albedo.h'`; then
    echo shar: \"'albedo.h'\" unpacked with wrong size!
fi
# end of 'albedo.h'
fi
if test -f 'makefile.dos' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'makefile.dos'\"
else
echo shar: Extracting \"'makefile.dos'\" \(183 characters\)
sed "s/^X//" >'makefile.dos' <<'END_OF_FILE'
X#
X#	mkchar - an Albedo character generation program
X#
XCFLAGS = -AL -DMSC 
X#
XOBJS=	mkchar.obj pspage.obj
X
Xmkchar:	mkchar.exe
X
Xmkchar.exe:	$(OBJS)
X	cl -o mkchar.exe $(CFLAGS) $(OBJS)
X#
END_OF_FILE
if test 183 -ne `wc -c <'makefile.dos'`; then
    echo shar: \"'makefile.dos'\" unpacked with wrong size!
fi
# end of 'makefile.dos'
fi
if test -f 'pspage.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'pspage.c'\"
else
echo shar: Extracting \"'pspage.c'\" \(15789 characters\)
sed "s/^X//" >'pspage.c' <<'END_OF_FILE'
X/*	pspage.c
X
X	Takes a structure and a list of skills and creates a Postscript Page
X	for printing.
X
X	This file is used the with Albedo mkchar character generator. 
X
X	You may use the mkchar program and modify the source code
X	for your own purposes given that the following conditions
X	are met:
X
X	1.) this notice must remain in the source code
X	2.) you may not sell the program or source code
X
X	I would appreciate any new versions you make based on this code.
X
X	Albedo and its associated tables are Copyright 1993, Steve Gallacci
X	and Paul Kidd, Thoughts & Images. This program is offered with the
X	understanding that it will be used to assist in the Albedo RolePlaying
X	Game.
X
X	Version 1.0	20-Jan-97	Original, Hubert Bartels
X*/
X#define S_LEN		30
X#define EXPERTISE	 4
X
Xtypedef struct character {
X	char c_species[20];
X	int c_str;
X	int c_sta;
X	int c_mdex;
X	int c_crd;
X	int c_rea;
X	int c_int;
X	int c_driv;
X	int c_stab;
X	char c_frame[10];
X	char disposition_core[20];
X	char disposition_incl[20];
X	int recoil_number;
X	int max_fatigue;
X	int cur_fatigue;
X	int dam_mods;
X	int str_mods;
X	int actions_turn;
X	double SPI;
X	int Mil;
X	char background[15];
X	char career[S_LEN];
X	char init_dice[6];
X	int self_im_low;
X	int self_im_high;
X	int self_im_cur;
X	} Character;
X/*
X	Skills
X*/
Xtypedef struct skill_list  {
X	char skill_name[S_LEN];	/* Name of the skill */
X	int skill_type;		/* Social, Weapon, etc. */
X	int skill_attr;		/* On which characteristics is it based? */
X	int skill_chosen;	/* 0 - Not, 1 - Skill, 2 - Adept, 3 - Master */
X	int skill_value;	/* Actual skill value */
X} Skill_list;
X/*
X	Important externals needed for printing
X*/
Xextern Character	MyChar;
Xextern Skill_list	Skills[];
X/*
X	Includes that might be useful
X*/
X#include <stdio.h>
X
Xpspage( filename )
Xchar *filename;
X{
X	FILE *fp, *fopen();
X	char buf[41];
X	int i, x, y;
X	double max_ftiles;
X
X	fp = fopen( filename, "w");
X	if( fp == NULL) {
X		fprintf( stderr, "Failed to open < %s > for PS code\n",
X			filename);
X		return( 0);
X	}
X	fprintf( fp, "%%!-PS-Adobe-1.0\n");
X	fprintf( fp, "%%%%Creator: Hubert Bartels\n");
X	fprintf( fp, "%%%%Title: Albedo Character Sheet\n");
X	fprintf( fp, "%%%%For: %s, %s, %s, %s\n",
X		MyChar.c_species, MyChar.career, MyChar.disposition_core,
X		MyChar.disposition_incl);
X	fprintf( fp, "%%%%CreationDate: Mon Jan 20 11:33:03 1997\n");
X	fprintf( fp, "%%%%Pages: 1\n");
X	fprintf( fp, "%%%%DocumentFonts: Times-Roman Helvetica");
X	fprintf( fp, " Helvetica-Bold Helvetica-Oblique\n");
X	fprintf( fp, "%%%%BoundingBox 0 0 612 792\n");
X	fprintf( fp, "%%%%EndComments\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "%%---- Define fonts\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "/h16font /Helvetica findfont 16 scalefont def\n");
X	fprintf( fp, "/h14font /Helvetica findfont 14 scalefont def\n");
X	fprintf( fp, "/h12font /Helvetica findfont 12 scalefont def\n");
X	fprintf( fp, "/h10font /Helvetica findfont 10 scalefont def\n");
X	fprintf( fp, "/h8font /Helvetica findfont 8 scalefont def\n");
X	fprintf( fp, "/h12bfont /Helvetica-Bold findfont 12 scalefont def\n");
X	fprintf( fp,"/h12ifont /Helvetica-Oblique findfont 12 scalefont def\n");
X	fprintf( fp, "/h16bfont /Helvetica-Bold findfont 16 scalefont def\n");
X	fprintf( fp, "/12font /Times-Roman findfont 12 scalefont def\n");
X	fprintf( fp, "/10font /Times-Roman findfont 10 scalefont def\n");
X	fprintf( fp, "/sfont /Times-Roman findfont 6 scalefont def\n");
X	fprintf( fp, "/hbigfont /Helvetica-Bold findfont");
X	fprintf( fp, " [60 0 0 20 0 0] makefont def\n");
X	fprintf( fp, "\n%%---- Define procedures\n\n");
X	fprintf( fp, "/box         %% height width => ---\n");
X	fprintf( fp, "{ newpath 0 0 moveto\n");
X	fprintf( fp, "  dup 0 rlineto\n");
X	fprintf( fp, "  exch 0 exch rlineto\n");
X	fprintf( fp, "  -1 mul 0 rlineto\n");
X	fprintf( fp, "  closepath stroke} def\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "/shadowbox\n");
X	fprintf( fp, "{ newpath 0 0 moveto\n");
X	fprintf( fp, "  2 -2 rlineto\n");
X	fprintf( fp, "  dup 0 rlineto\n");
X	fprintf( fp, "  exch dup 0 exch rlineto\n");
X	fprintf( fp, "  -2 2 rlineto\n");
X	fprintf( fp, "  dup neg 0 exch rlineto\n");
X	fprintf( fp, "  closepath fill\n");
X	fprintf( fp, "  exch box } def\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "/fake\n");
X	fprintf( fp, "{ newpath 0 0 moveto\n");
X	fprintf( fp, "  2 -2 rlineto\n");
X	fprintf( fp, "  -2 0 rlineto\n");
X	fprintf( fp, "  0 -2 rlineto\n");
X	fprintf( fp, "  -2 2 rlineto\n");
X	fprintf( fp, "  2 0 rlineto\n");
X	fprintf( fp, "  closepath fill } def\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "/sfake\n");
X	fprintf( fp, "{ newpath 0 0 moveto\n");
X	fprintf( fp, "  2 -2 rlineto\n");
X	fprintf( fp, "  -2 0 rlineto\n");
X	fprintf( fp, "  closepath fill } def\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "%%%%EndProlog\n");
X	fprintf( fp, "%%%%Page: 0 1\n");
X	fprintf( fp, "\n");
X	fprintf( fp, ".1 setlinewidth\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "%%---- Title area\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "hbigfont setfont\n");
X	fprintf( fp, "35 730 translate\n");
X	fprintf( fp, "0 14 moveto (ALBEDO) show\n");
X	fprintf( fp, "h12font setfont\n");
X	fprintf( fp, "125 0 moveto (The Role-Playing Game) show\n");
X	fprintf( fp, "\n%%---- Phases of Action area\n\n");
X/*
X*/
X	fprintf( fp, "338 10 translate\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "30 17 moveto (Acts on Phases : ) show\n");
X	fprintf( fp, "30 0 moveto (Initiative Dice : ) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "95 17 moveto (");
X	switch( MyChar.actions_turn) {
X		case 1:		fprintf(fp, "4"); break;
X		case 2:		fprintf(fp, "3, 5"); break;
X		case 3:		fprintf(fp, "2, 4, 6"); break;
X		case 4:		fprintf(fp, "1, 3, 5, 6"); break;
X		case 5:		fprintf(fp, "1, 2, 4, 5, 6"); break;
X	}
X	fprintf( fp, ") show\n");
X	fprintf( fp, "95 0 moveto (%s) show\n", MyChar.init_dice);
X/*
X*/
X	fprintf( fp, "\n%%----Species and Career Box\n\n");
X	fprintf( fp, "-338 -50 translate\n");
X	fprintf( fp, "30 514 shadowbox\n");
X	fprintf( fp, "258 0 moveto 0 30 rlineto stroke\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 21 moveto (Species) show\n");
X	fprintf( fp, "262 21 moveto (Career) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "4 5 moveto (%s) show\n", MyChar.c_species);
X	fprintf( fp, "262 5 moveto (%s) show\n", MyChar.career);
X/*
X*/
X	fprintf( fp, "\n%%---- Frame and Injury Mods\n\n");
X	fprintf( fp, "344 -34 translate\n");
X	fprintf( fp, "30 170 shadowbox\n");
X	fprintf( fp, "90 0 moveto 0 30 rlineto stroke\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "5 21 moveto (Frame) show\n");
X	fprintf( fp, "95 21 moveto (Injury Modifier) show\n");
X	fprintf( fp, "h16font setfont\n");
X	fprintf( fp, "4 5 moveto (%s) show\n", MyChar.c_frame);
X	fprintf( fp, "115 5 moveto (%+d) show\n", MyChar.dam_mods);
X/*
X*/
X	fprintf( fp, "\n%%---- Player Name Box\n\n");
X	fprintf( fp, "-172 0 translate\n");
X	fprintf( fp, "30 170 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 21 moveto (Player Name) show\n");
X	fprintf( fp, "h16font setfont\n");
X	fprintf( fp, "4 5 moveto ( ) show\n");
X/*
X*/
X	fprintf( fp, "\n%%----Character Name Box\n\n");
X	fprintf( fp, "-172 0 translate\n");
X	fprintf( fp, "30 170 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 21 moveto (Character Name) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "4 5 moveto ( ) show\n");
X/*
X*/
X	fprintf( fp, "\n%%---- Background Box\n\n");
X	fprintf( fp, "0 -34 translate\n");
X	fprintf( fp, "30 170 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 21  moveto (Background) show\n");
X	fprintf( fp, "h16font setfont\n");
X	fprintf( fp, "4 4 moveto (%s) show\n", MyChar.background);
X/*
X*/
X	fprintf( fp, "\n%%---- Basic Stats boxes, one column\n\n");
X	fprintf( fp, "0 -32 translate\n");
X	fprintf( fp, "20 95 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13 moveto (Strength) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "72 4 moveto (%2d) show\n\n", MyChar.c_str);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 95 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13 moveto (Stamina) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "72 4 moveto (%2d) show\n\n", MyChar.c_sta);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 95 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13 moveto (Manual Dexterity) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "72 4 moveto (%2d) show\n\n", MyChar.c_mdex);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 95 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13 moveto (Coordination) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "72 4 moveto (%2d) show\n\n", MyChar.c_crd);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 95 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13 moveto (Reason) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "72 4 moveto (%2d) show\n\n", MyChar.c_rea);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 95 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13 moveto (Intuition) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "72 4 moveto (%2d) show\n\n", MyChar.c_int);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 95 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13 moveto (Drive) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "72 4 moveto (%2d) show\n\n", MyChar.c_driv);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 95 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13 moveto (Stability) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "72 4 moveto (%2d) show\n\n", MyChar.c_stab);
X/*
X*/
X	fprintf( fp, "%%---- Secondary Characteristics\n\n");
X	fprintf( fp, "97 176 translate\n\n");
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 53 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13  moveto (Recoil) show\n");
X	fprintf( fp, "4 5 moveto ( x 1/3 =) show\n");
X	fprintf( fp, "h16font setfont\n");
X	fprintf( fp, "40 4 moveto (%d) show\n\n", MyChar.recoil_number);
X	fprintf( fp, "55 0 translate\n");
X	fprintf( fp, "20 73 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13  moveto (Melee) show\n");
X	fprintf( fp, "4 5  moveto (Dam. Mod.) show\n");
X	fprintf( fp, "h16font setfont\n");
X	fprintf( fp, "50 4 moveto (%+d) show\n\n", MyChar.str_mods);
X	fprintf( fp, "-55 -22 translate\n");
X	fprintf( fp, "20 128 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13  moveto (Maximum Fatigue Points) show\n");
X	fprintf( fp, "4 5  moveto ( x 3 =) show\n");
X	fprintf( fp, "h16font setfont\n");
X	fprintf( fp, "108 4 moveto (%d) show\n\n", MyChar.max_fatigue);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 128 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13  moveto (Current Fatigue Points) show\n\n");
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 128 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13  moveto (Actions per Turn) show\n");
X	fprintf( fp, "4 5  moveto ( x 1/3 =) show\n");
X	fprintf( fp, "h16font setfont\n");
X	fprintf( fp, "108 4 moveto (%2d) show\n\n", MyChar.actions_turn);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 128 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13  moveto (S.P.I.) show\n");
X	fprintf( fp, "4 5  moveto ((Reas+Intu+Drv)/10 =) show\n");
X	fprintf( fp, "h16font setfont\n");
X	fprintf( fp, "98 4 moveto (%3.1f) show\n\n", MyChar.SPI);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 128 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13  moveto (Self Image - Low Range) show\n");
X	fprintf( fp, "4 5 moveto ( Drv x 1/2 =) show\n");
X	fprintf( fp, "h16font setfont\n");
X	fprintf( fp, "108 4 moveto (%2d) show\n\n", MyChar.self_im_low);
X	fprintf( fp, "0 -22 translate\n");
X	fprintf( fp, "20 128 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13  moveto (Self Image - High Range) show\n");
X	fprintf( fp, "4 5  moveto ( Drv x 1.5 =) show\n");
X	fprintf( fp, "h16font setfont\n");
X	fprintf( fp, "108 4 moveto (%2d) show\n\n", MyChar.self_im_high);
X	fprintf( fp, "-0 -22 translate\n");
X	fprintf( fp, "20 128 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 13  moveto (Current Self Image) show\n\n");
X	fprintf( fp, "-97 -56 translate\n\n");
X/*
X*/
X	fprintf( fp, "%%---- Picture Window\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "266 0 translate\n");
X	fprintf( fp, "272 248 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 264 moveto (Picture) show\n");
X	fprintf( fp, "-266 0 translate\n");
X	fprintf( fp, "\n%%---- Skills box, 2 columns.\n\n");
X	fprintf( fp, "0 -287 translate\n");
X	fprintf( fp, "273 350 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 260 moveto (Skills and Areas of Expertise) show\n");
X	fprintf( fp, "245 -14 5 { 5 exch moveto 160 0 rlineto stroke } for\n");
X	fprintf( fp,"245 -14 5 { 180 exch moveto 160 0 rlineto stroke } for\n");
X	fprintf( fp, "10font setfont\n");
X/* */
X	for( i = 0, x = 5, y = 246; Skills[i].skill_name[0] != '\0'; i++ ) {
X	  switch( Skills[i].skill_chosen) {
X	  case 0:
X		if( Skills[i].skill_type == EXPERTISE) {
X			sprintf(buf,"%s %d", Skills[i].skill_name,
X				Skills[i].skill_value);
X			Skills[i].skill_chosen = 10;
X		}
X		break;
X	  case 1:
X		sprintf(buf,"%s %d", Skills[i].skill_name,
X			Skills[i].skill_value);
X		break;
X	  case 2:
X		sprintf(buf,"%s (Adept) %d", Skills[i].skill_name,
X			Skills[i].skill_value);
X		break;
X	  case 3:
X		sprintf(buf,"%s (Master) %d", Skills[i].skill_name,
X			Skills[i].skill_value);
X		break;
X	  }
X	  if( Skills[i].skill_chosen != 0) {
X		fprintf( fp, "%d %d moveto (%s) show\n", x, y, buf);
X		if( x == 5) {
X			x = 180;
X		} else {
X			x = 5; 
X			if( (y = y - 14) < 5) break;
X		}
X		if( Skills[i].skill_chosen == 10)
X			Skills[i].skill_chosen = 0;
X	  }
X	}
X/*
X*/
X	fprintf( fp, "\n");
X	fprintf( fp, "%%---- Possessions box\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "354 64 translate\n");
X	fprintf( fp, "209 160 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 196 moveto (Possessions) show\n");
X	fprintf( fp, "182 -14 5 { 10 exch moveto 140 0 rlineto stroke } for\n");
X	fprintf( fp, "\n");
X	fprintf( fp, "%%---- Disposition box\n");
X	fprintf( fp, "0 -32 translate\n");
X	fprintf( fp, "30 160 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 21 moveto (Core Disposition) show\n");
X	fprintf( fp, "h14font setfont\n");
X	fprintf( fp, "4 4 moveto (%s) show\n\n", MyChar.disposition_core);
X	fprintf( fp, "0 -32 translate\n");
X	fprintf( fp, "30 160 shadowbox\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "4 21 moveto (Inclination) show\n");
X	fprintf( fp, "h14font setfont\n");
X	fprintf( fp, "4 4 moveto (%s) show\n\n", MyChar.disposition_incl);
X/*
X*/
X	fprintf( fp, "%%---- Fatigue Levels\n\n");
X	fprintf( fp, "-354 -36 translate\n");
X	fprintf( fp, "30 514 shadowbox\n");
X	fprintf( fp, "252 0 moveto 0 30 rlineto stroke\n");
X	fprintf( fp, "354 0 moveto 0 30 rlineto stroke\n");
X	fprintf( fp, "h8font setfont\n");
X	fprintf( fp, "254 21 moveto (Fatigue Penalty) show\n");
X	fprintf( fp, "358 21 moveto (Current Fatigue) show\n");
X	fprintf( fp, "4 21 moveto (Fatigue Levels : ) show\n");
X	fprintf( fp, "h16bfont setfont\n");
X	fprintf( fp, "5 5 moveto (");
X	max_ftiles = (double) (MyChar.max_fatigue)/6.0;
X	for( i = 6; i >= 1; i--) {
X		fprintf(fp, "%d", (int) (max_ftiles * (double) i));
X		if( i != 1) fprintf(fp, ", ");
X	}
X	fprintf( fp, ") show\n\n");
X	fprintf( fp, "0 -10 translate\n");
X	fprintf( fp, "sfont setfont\n");
X	fprintf( fp, "0 0 moveto (V1.0 Character sheet");
X	fprintf( fp, " designed Jan 20, 1997 by Hubert Bartels) show\n");
X	fprintf( fp, "%%---- End of page\n");
X	fprintf( fp, "showpage\n");
X	fprintf( fp, "%%%%Trailer\n");
X	fclose( fp);
X}
END_OF_FILE
if test 15789 -ne `wc -c <'pspage.c'`; then
    echo shar: \"'pspage.c'\" unpacked with wrong size!
fi
# end of 'pspage.c'
fi
echo shar: End of archive 1 \(of 2\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked both archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
