[comp.sources.amiga] v91i116: Battle 1.1 - simulates an abstract battle, Part01/01

amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (05/18/91)

Submitted-by: RWALLACE%vax1.tcd.ie@CUNYVM.CUNY.EDU
Posting-number: Volume 91, Issue 116
Archive-name: games/battle-1.1/part01

[ includes uuencoded executable  ...tad ]

This program simulates an abstract battle between a number of players. Each
player can be controlled by either the program or a human player typing
instructions at the keyboard.

The game works like this:
Each player has a Strength value. During each game turn this increases by
1/16 of its previous value. The player also has an option to attack another
player. This causes the attacker's strength to increase by 1/8 of its
previous value and the victim's strength to decrease by 1/4 of the
attacker's. Of course the victim or other players may retaliate. A player
whose strength is reduced to zero dies. The winner is the last player left
alive and the winner's name will be displayed when all other players are
dead.

#!/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 1)."
# Contents:  battle.c battle.uu
# Wrapped by tadguy@ab20 on Fri May 17 22:16:03 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'battle.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'battle.c'\"
else
echo shar: Extracting \"'battle.c'\" \(8141 characters\)
sed "s/^X//" >'battle.c' <<'END_OF_FILE'
X/*
XBattle v1.1 by Russell Wallace 21 August 1989
XDeveloped using Aztec C 3.6a compiled with 16-bit ints.
X
XThis program simulates an abstract battle between a number of players. Each
Xplayer can be controlled by either the program or a human player typing
Xinstructions at the keyboard.
X
XThe game works like this:
XEach player has a Strength value. During each game turn this increases by
X1/16 of its previous value. The player also has an option to attack another
Xplayer. This causes the attacker's strength to increase by 1/8 of its
Xprevious value and the victim's strength to decrease by 1/4 of the
Xattacker's. Of course the victim or other players may retaliate. A player
Xwhose strength is reduced to zero dies. The winner is the last player left
Xalive and the winner's name will be displayed when all other players are
Xdead.
X
XInformation about the players is contained in a file called players.
XThis is a text file of which each line contains information about one player.
XThe information should consist of the following fields separated by
Xwhitespace and terminated by a linefeed:
X
XName
XStrength
XMorality
XIrritability
XLoyalty base
XLoyalty percent
XUnpredictability
XRate of forgetting friends
XRate of forgetting enemies
X
X(These are the fields defined in the player data structure)
X
XName is the name of the player. All other fields are long integers ranging
Xfrom about -2000000000 to 2000000000 in whole number values only.
X
XStrength is the player's starting strength.
X
XAll following fields are relevant only to computer-controlled players. To
Xdefine a player as being keyboard-controlled, simply give a negative value
Xfor strength. This will be interpreted as a positive value except that any
Xother information on the line will be ignored and during play the player's
Xactions will be controlled by keyboard input.
X
XThe lower the figure for morality the less likely the player is to make
Xunprovoked attacks on others. A zero means that attacks will be made if and
Xonly if provoked, a figure greater than one means that unprovoked attacks
Xwill be made.
X
XIrritability is a measure of how annoyed the player is likely to get at
Xother players who attack it.
X
XLoyalty base and loyalty percent are measures of how likely the player is
Xto retaliate against attacks on its friends or innocent bystanders. A
Xloyalty percent of zero indicates total apathy in this regard.
X
XUnpredictability is a measure of how random and irrational the player's
Xactions will be.
X
XRate of forgetting friends and rate of forgetting enemies are measures of
Xhow fast the player will forget friendship or enmity towards other players.
XZero values indicate that friendship and enmity are eternal unless cancelled
Xby actions on the part of the other players.
X
XIf a player is controlled from the keyboard the name of the player will be
Xdisplayed together with a : as a prompt for input. If you wish to attack
Xanother player type the name of the other player, otherwise just press
XRETURN.
X
XRecommended ways to play the game are between human players, between
Xcomputer-controlled players designed by human players (a la COREWARS) or
Xbetween a human and several computer-controlled players.
X
XThis program is in the public domain.
X*/
X
X#include <stdio.h>
X#include	<stdlib.h>
X#include	<string.h>
X#include	<math.h>
X
X#define MAXBUF	128
X
Xtypedef struct relationstruct
X{
X    struct relationstruct *next;
X    struct playerstruct *pl;
X    long opinion;
X} relation;
X
Xtypedef struct playerstruct
X{
X    struct playerstruct *next;
X    relation *rel;
X    char *name;
X    long str;
X    long moral;
X    long irritable;
X    long loyalbase;
X    long loyalpc;
X    long unpredict;
X    long forgetgood;
X    long forgetbad;
X    int keycontrol;
X} player;
X
Xchar buf[MAXBUF];
XFILE *file;
Xplayer *firstpl;
Xint numpl,c;
X
Xvoid *alloc (int bytes)
X{
X    void *p=malloc (bytes);
X    if (!p)
X    {
X	printf ("ERROR - Out of memory\n");
X	exit (20);
X    }
X    setmem (p,bytes,0);
X    return p;
X}
X
Xvoid printstatus (void)
X{
X    player *p;
X    putchar ('\n');
X    for (p=firstpl;p;p=p->next)
X	printf ("%s:\tstr=%ld\n",p->name,p->str);
X    putchar ('\n');
X}
X
Xlong readnum (void)
X{
X    int i=0;
X    do
X	c=fgetc (file);
X    while (c=='\t' || c==' ');
X    do
X    {
X	buf[i++]=c;
X	if (i>=MAXBUF)
X	{
X	    printf ("ERROR - Number too long\n");
X	    exit (20);
X	}
X	c=fgetc (file);
X    }
X    while (c=='-' || (c>='0' && c<='9') );
X    buf[i]=0;
X    return atol (buf);
X}
X
Xrandom (int n)
X{
X    srand (*((short *)0xdff006));
X    return rand ();
X}
X
Xplayer *findplayer (char *s)
X{
X    player *p;
X    for (p=firstpl;p;p=p->next)
X	if (!strcmp (s,p->name))
X	    return p;
X    return 0;
X}
X
Xvoid attack (player *source,player *dest)
X{
X    relation *r,*sourcer,*destr;
X    player *p;
X    printf ("%s attacks %s\n",source->name,dest->name);
X    source->str+=source->str >> 3;
X    dest->str-=source->str >> 2;
X    if (dest->str<=0)
X    {
X	printf ("%s dies\n",dest->name);
X	if (dest==firstpl)
X	    firstpl=dest->next;
X	else
X	{
X	    for (p=firstpl;p->next!=dest;p=p->next)
X		;
X	    p->next=dest->next;
X	}
X	for (p=firstpl;p;p=p->next)
X	{
X	    if (dest==p->rel->pl)
X		p->rel=p->rel->next;
X	    else
X	    {
X		for (r=p->rel;r->next->pl!=dest;r=r->next)
X		    ;
X		r->next=r->next->next;
X	    }
X	}
X	numpl--;
X	if (numpl==1)
X	{
X	    printf ("\n%s wins\n",firstpl->name);
X	    exit (0);
X	}
X    }
X    else
X    {
X	for (r=dest->rel;r->pl!=source;r=r->next)
X	    ;
X	r->opinion-=dest->irritable;
X	for (p=firstpl;p;p=p->next)
X	{
X	    if (p!=source && p!=dest)
X	    {
X		for (r=p->rel;r;r=r->next)
X		{
X		    if (r->pl==source)
X			sourcer=r;
X		    if (r->pl==dest)
X			destr=r;
X		}
X		sourcer->opinion-=(destr->opinion + p->loyalbase) *
X		    p->loyalpc / 100;
X	    }
X	}
X    }
X}
X
Xvoid action (player *pl)
X{
X    player *targ=0;
X    long targop=0x7fffffff;
X    long n;
X    relation *r;
X    if (pl->keycontrol)
X    {
XREDO:
X	printf ("%s: ",pl->name);
X	gets (buf);
X	if (strlen (buf))
X	{
X	    targ=findplayer (buf);
X	    if (!targ)
X	    {
X		printf ("Error - No such player\n");
X		goto REDO;
X	    }
X	    if (targ==pl)
X	    {
X		printf ("Error - You can't attack yourself\n");
X		goto REDO;
X	    }
X	    attack (pl,targ);
X	}
X    }
X    else
X    {
X	for (r=pl->rel;r;r=r->next)
X	{
X	    if (r->opinion>=0)
X	    {
X		r->opinion-=pl->forgetgood;
X		if (r->opinion<0)
X		    r->opinion=0;
X	    }
X	    else
X	    {
X		r->opinion+=pl->forgetbad;
X		if (r->opinion>0)
X		    r->opinion=0;
X	    }
X	    n=r->opinion + random (pl->unpredict + 1) - (pl->unpredict >> 1);
X	    if (n<pl->moral && n<targop)
X	    {
X		targop=n;
X		targ=r->pl;
X	    }
X	}
X	if (targ)
X	    attack (pl,targ);
X    }
X    pl->str+=pl->str >> 4;
X}
X
X
Xmain (int argc,char **argv)
X{
X    player *p=0,*q;
X    relation *r;
X    int i;
X    if (argc>1)
X    {
X	printf ("Battle v1.1 by Russell Wallace 21 August 1989\n\
XSee source code for details\n");
X	return;
X    }
X    file=fopen ("players","r");
X    if (!file)
X    {
X	printf ("ERROR - Can't open players file\n");
X	exit (20);
X    }
X    for (;;)
X    {
X	i=0;
X	do
X	    c=fgetc (file);
X	while (c==' ' || c=='\t' || c=='\n');
X	do
X	{
X	    buf[i++]=c;
X	    if (i>=MAXBUF)
X	    {
X		printf ("ERROR - Name too long\n");
X		exit (20);
X	    }
X	    c=fgetc (file);
X	}
X	while (c!=' ' && c!='\t' && c!=EOF);
X	buf[i]=0;
X	if (c==EOF)
X	    break;
X	q=alloc (sizeof (player));
X	if (!firstpl)
X	    firstpl=q;
X	if (p)
X	    p->next=q;
X	p=q;
X	p->name=alloc (i+1);
X	strcpy (p->name,buf);
X	p->str=readnum ();
X	if (p->str>0)
X	{
X	    p->moral=readnum ();
X	    p->irritable=readnum ();
X	    p->loyalbase=readnum ();
X	    p->loyalpc=readnum ();
X	    p->unpredict=readnum ();
X	    p->forgetgood=readnum ();
X	    p->forgetbad=readnum ();
X	}
X	else
X	{
X	    p->str=-p->str;
X	    p->keycontrol=1;
X	    while (c!='\n' && c!=EOF)
X		c=fgetc (file);
X	}
X	numpl++;
X    }
X    fclose (file);
X    if (numpl<2)
X    {
X	printf ("ERROR - Need at least 2 players\n");
X	exit (20);
X    }
X    for (p=firstpl;p;p=p->next)
X    {
X	r=0;
X	q=firstpl;
X	for (i=0;i<numpl;i++)
X	{
X	    if (q!=p)
X	    {
X		if (r)
X		    r=r->next=alloc (sizeof (relation));
X		else
X		    p->rel=r=alloc (sizeof (relation));
X		r->pl=q;
X	    }
X	    q=q->next;
X	}
X    }
X    do
X    {
X	printstatus ();
X	for (p=firstpl;p;p=p->next)
X	    action (p);
X    }
X    while (1);
X}
END_OF_FILE
if test 8141 -ne `wc -c <'battle.c'`; then
    echo shar: \"'battle.c'\" unpacked with wrong size!
fi
# end of 'battle.c'
fi
if test -f 'battle.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'battle.uu'\"
else
echo shar: Extracting \"'battle.uu'\" \(14127 characters\)
sed "s/^X//" >'battle.uu' <<'END_OF_FILE'
Xbegin 644 battle
XM```#\P`````````#``````````(```D,````[0````$```/I```)#$[Z#=Y.`
XM5?_\2.<``"\M``A.NA]"6$\K0/_\2JW__&8``!9(>@`P3KH*?%A/2'@`%$ZZ*
XM(<A83T*G+RT`""\M__Q.N@V"3^\`#"`M__Q,WP``3EU.=4524D]2("T@3W5TE
XM(&]F(&UE;6]R>0H``$Y5__Q(YP``2'@`"DZZ"E!83RML@LK__&````H@;?_\H
XM*U#__$JM__QG```@(&W__"\H``P@;?_\+R@`"$AZ`!Y.N@GV3^\`#&#22'@`D
XM"DZZ"@Y83TS?``!.74YU)7,Z"7-T<CTE;&0*``!.5?_\2.<``$*M__PO+(+.\
XM3KH)'EA/*4""T@RL````"8+29^@,K````"""TF?>("W__%*M__Q![(+6$:R"N
XMU0@`#*T```"`__QM```62'H`7DZZ"7Q83TAX`!1.NB#(6$\O+(+.3KH(REA/_
XM*4""T@RL````+8+29[8,K````#""TFT```P,K````#F"TF^@("W__$'L@M9"K
XM,`@`2&R"UDZZ"YY83TS?``!.74YU15)23U(@+2!.=6UB97(@=&]O(&QO;F<*A
XM``!.50``2.<``#!Y`-_P!B\(3KH+YEA/3KH+Z$S?``!.74YU3E7__$CG```KS
XM;(+*__Q@```*(&W__"M0__Q*K?_\9P``*"!M__PO*``(+RT`"$ZZ$HQ03TJ`V
XM9@``#B`M__Q,WP``3EU.=6#*<`!@\DY5__!(YP``(&T`#"\H``@@;0`(+R@`F
XM"$AZ`BQ.N@A\3^\`#"!M``C1_`````PB;0`(("D`#.:`T9`@;0`,T?P````,A
XM(FT`""`I``SD@)&0(&T`#$JH``QN``$`(&T`#"\H``A(>@'O3KH(,%!/(&T`-
XM#+'L@LIF```.(&T`#"E0@LI@```N*VR"RO_P8```"B!M__`K4/_P(&W_\"!0C
XML>T`#&<```1@Z"!M``PB;?_P(I`K;(+*__!@```*(&W_\"M0__!*K?_P9P``5
XM8B!M__`@:``$(FT`#+/H``1F```6(&W_\"!H``0B;?_P(U``!&```#@@;?_PQ
XM*V@`!/_\8```"B!M__PK4/_\(&W__"!0(&@`!+'M``QG```$8.0@;?_\(%`BQ
XM;?_\(I!@D%.L@U8,K`````&#5F8``!P@;(+*+R@`"$AZ`1A.N@=04$]"ITZZW
XM'IY83V```.8@;0`,*V@`!/_\8```"B!M__PK4/_\(&W__"!H``2Q[0`(9P``=
XM!&#F(&W__%"((FT`#"`I`!21D"ML@LK_\&````H@;?_P*U#_\$JM__!G``"4&
XM(&W_\+'M``AG``"$(&W_\+'M``QG``!X(&W_\"MH``3__&````H@;?_\*U#_,
XM_$JM__QG```P(&W__"!H``2Q[0`(9@``""MM__S_^"!M__P@:``$L>T`#&8`;
XM``@K;?_\__1@PB!M__A0B")M__0@*0`((FW_\-"I`!@B;?_P(BD`'$ZZ']!R\
XM9$ZZ&7B1D&``_V!,WP``3EU.=25S(&%T=&%C:W,@)7,*`"5S(&1I97,*``HEQ
XM<R!W:6YS"@!.5?_P2.<``$*M__PK?'______^"!M``A*J``L9P``>B!M``@O[
XM*``(2'H!<DZZ!@103TAL@M9.N@626$](;(+63KH5^EA/2H!G``!*2&R"UDZZ!
XM_/I83RM`__Q*K?_\9@``#DAZ`3U.N@7*6$]@LB!M__RQ[0`(9@``#DAZ`3U.I
XMN@6R6$]@FB\M__PO+0`(3KK]"%!/8```Z"!M``@K:``$__!@```*(&W_\"M0]
XM__!*K?_P9P``M"!M__!*J``(;0``*B!M__!0B")M``@@*0`DD9`@;?_P2J@`D
XM"&P```H@;?_P0J@`"&```"8@;?_P4(@B;0`(("D`*-&0(&W_\$JH``AO```*>
XM(&W_\$*H``@@;0`((&@`(%*(+PA.NOP.6$\@;?_PT*@`""!M``@B*``@XH&0C
XM@2M`__0@;0`(("W_]+"H`!!L```>("W_]+"M__AL```2*VW_]/_X(&W_\"MH)
XM``3__&``_T!*K?_\9P``$"\M__PO+0`(3KK\'E!/(&T`"-'\````#")M``@@H
XM*0`,Z(#1D$S?``!.74YU)7,Z(`!%<G)O<B`M($YO('-U8V@@<&QA>65R"@!%,
XM<G)O<B`M(%EO=2!C86XG="!A='1A8VL@>6]U<G-E;&8*`$Y5__!(YP``0JW_&
XM_`RM`````0`(;P``%$AZ`O!.N@0X6$],WP``3EU.=4AZ`S%(>@,E3KH%9%!/I
XM*4""SDJL@LYF```62'H#&4ZZ!`Q83TAX`!1.NAM86$]"K?_P+RR"SDZZ`U980
XM3RE`@M(,K````"""TF?H#*P````)@M)GW@RL````"H+29]0@+?_P4JW_\$'L)
XM@M81K(+5"``,K0```(#_\&T``!9(>@+83KH#JEA/2'@`%$ZZ&O983R\L@LY.C
XMN@+X6$\I0(+2#*P````@@M)G```8#*P````)@M)G```,#*S_____@M)FGB`MD
XM__!![(+60C`(``RL_____X+29P`!&DAX`#!.NOBN6$\K0/_X2JR"RF8```@IX
XM;?_X@LI*K?_\9P``"B!M__P@K?_X*VW_^/_\("W_\%*`+P!.NOAX6$\@;?_\-
XM(4``"$AL@M8@;?_\+R@`"$ZZ%_Q03TZZ^2H@;?_\(4``#"!M__Q*J``,;P``K
XM6DZZ^1(@;?_\(4``$$ZZ^08@;?_\(4``%$ZZ^/H@;?_\(4``&$ZZ^.X@;?_\;
XM(4``'$ZZ^.(@;?_\(4``($ZZ^-8@;?_\(4``)$ZZ^,H@;?_\(4``*&```$@@N
XM;?_\("@`#$2`(&W__"%```P@;?_\(7P````!`"P,K`````J"TF<``!X,K/__8
XM__^"TF<``!(O+(+.3KH!L%A/*4""TF#84JR#5F``_D`O+(+.3KH4?%A/#*P`B
XM```"@U9L```62'H!94ZZ`B!83TAX`!1.NAEL6$\K;(+*__Q@```*(&W__"M0I
XM__Q*K?_\9P``?D*M__0K;(+*__A"K?_P8```!E*M__`@+?_PL*R#5FP``%@@5
XM;?_XL>W__&<``$)*K?_T9P``&DAX``Q.NO<<6$\@;?_T((`K0/_T8```&$AX5
XM``Q.NO<$6$\K0/_T(&W__"%```0@;?_T(6W_^``$(&W_^"M0__A@FF``_W9.=
XMNO="*VR"RO_\8```"B!M__PK4/_\2JW__&<```XO+?_\3KK[)EA/8.1@U&``?
XM_1I"871T;&4@=C$N,2!B>2!2=7-S96QL(%=A;&QA8V4@,C$@075G=7-T(#$Y=
XM.#D*4V5E('-O=7)C92!C;V1E(&9O<B!D971A:6QS"@!P;&%Y97)S`'(`15)26
XM3U(@+2!#86XG="!O<&5N('!L87EE<G,@9FEL90H`15)23U(@+2!.86UE('1OR
XM;R!L;VYG"@!%4E)/4B`M($YE960@870@;&5A<W0@,B!P;&%Y97)S"@!(YP`@U
XM)&\`""`*9P9*:@`,9@AP_TS?!`!.=2!2L>H`!&0*(%)2DG``$!!@Z"\*3KH`O
XMS%A/8-Y(YR`P)F\`$"1+(&R!"+'L@0QD#B!L@0A2K($(<``0$&`*2&R!"$ZZ0
XM`)Y83R0`#(#_____9Q`,@@````IG"!2"($I2BF#$#(+_____9A2URV<(""P`6
XM`8$59@AP`$S?#`1.=4(2(`M@]$CG("!![P`0)$@O"B\O`!!(;($>3KH+$"0`B
XM(`)/[P`,3-\$!$YU2.<@`"0O``@@;($>L>R!(F00(&R!'E*L@1X0@G``$`)@G
XM$'``$`(O`$AL@1Y.NA!,4$],WP`$3G5(YS`P)&\`%"`*9Q9P`#`J``PF`&<,5
XM"`,`"F8&"`,``V<(</],WPP,3G4@4K'J``1E``"F2JH`"&8(+PI.NA,@6$\P$
XM*@`,`D``H&<P0>R!""9(<``P*P`,`H```$`@#(```$`@9@@O"TZZ#U183]?\%
XM````%D'L@L"WR&76($K1_`````PP$`)`K_\P@"\J`!`O*@`($"H`#DB`2,`OS
XM`$ZZ"#XD`$_O``QN($J"9@1P`F`"<`0@2M'\````#'(`,A"`@3"`</]@`/]<:
XM)*H`""!"T>H`""5(``0@4E*2<``0$&``_T)(>/__3KH`[B\`+R\`$"\O`!!.`
XMN@`(3^\`$$YU2.<\,BQO`"`D;P`D)F\`*"@O`"PF/```!``0$DB`2,`J``R`P
XM````<F8.)#P``!``)CP```(`8"@,A0```'=F""0\```3`6`8#(4```!A9@@DH
XM/```&0%@"'``3-],/$YU4HH0$DB`#$``*V8,$"H``4B`#$``8F<,$!)(@`Q`M
XM`&)F"E**",,`!`B"``P0$DB`#$``*V8:(`((@```)``(P@`!(`,"@/__^?\F.
XM``C#``L@#F<,+P(O#DZZ!5`H`%!/2H1ME`R$````%&R,%T0`#C=#``P@"V""P
XM2.<`($'L@0@D2$IJ``QG&-7\````%D'L@L"UR&8(<`!,WP0`3G5@XD)J`!1"7
XMDD*J``1"J@`((`I@YDCG,"`D;P`0$!)(@`Q``"!G"A`22(`,0``)9@12BF#H<
XM=@`0$DB`#$``+68&=@%2BF`,$!)(@`Q``"MF`E**=`!@&'(*(`).NA:N$AI(S
XM@4C!T($D``2"````,!`22(!![(`'$#```$B`"````F;42H-G!B`"1(!@`B`"#
XM3-\$#$YU*6\`!(`"3G4B/$'&3FT@+(`"3KH68@:````P.2E`@`(@+(`"<A#B9
XMJ`*```!__TYU(&\`!$SO``,`"&`"$,%1R/_\!(```0``:O).=2I/87)#[(+*V
XM1>R"RK7)9@XR/``Z:PAT`"+"4<G__"E/@UHL>``$*4Z#7DCG@(`(+@`$`2EG&
XM$$OZ``A.KO_B8`9"I_-?3G-#^@`B3J[^:"E`@V)F#"X\``.`!TZN_Y1@!BI/_
XM3KH`&E!/3G5D;W,N;&EB<F%R>0!)^0``?_Y.=4CG`"!(YP`"(CP``0``,"R"L
XMP,'\``8L;(->3J[_.DS?0``I0(-F9AY(YP$&F\TN/``!```L;(->3J[_E$S?N
XM8(`N;(-:3G4@;(-F0F@`!"!L@V8Q?``!`!`@;(-F,7P``0`*(&R#6B`L@UJ0_
XMJ``$4(`I0(-J(&R#:B"\34%.6$CG``*3R2QL@UY.KO[:3-]``"1`2JH`K&<\'
XM+R\`#"\O``PO"DZZ`0PI?`````&#;B!L@V98B#`0`$"``#"`(&R#9M'\`````
XM"C`0`$"``#"`3^\`#&!J2.<``B!*T?P```!<+&R#7DZN_H!,WT``2.<``B!*+
XMT?P```!<+&R#7DZN_HQ,WT``*4"#<B!L@W)*J``D9R9(YP`"(&R#<B!H`"0B5
XM$"QL@V).KO^"3-]``"\L@W(O"DZZ!0Q03REL@W*#=DCG``(L;(-B3J[_RDS?7
XM0``@;(-F((!(YP`"+&R#8DZN_\1,WT``(&R#9B%```9G)$CG(`(D/````^U!V
XM^@`T(@@L;(-B3J[_XDS?0`0@;(-F(4``#"\L@W8O+(-Z3KKV5%!/+P!.NA'X@
XM6$],WP0`3G4J`$CG.#(F+P`<*"\`("9O`"0@0TJH`*QG%"!#("@`K.6`+$`@!
XM+@`0Y8`D0&`$)&R"PA`22(!(P-"$5(`I0(-^2.<``G(`("R#?BQL@UY.KO\ZA
XM3-]``"E`@X)F!DS?3!Q.=1`22(!(P"0`+P(@2E*(+P@O+(."3KH%%DAZ`4H@-
XM0M'L@X(O"$ZZ#PXO!"\++RR#@DZZ`30@;(."0C`H`"E\`````8-Z)$+5[(."D
XM4HHF2D_O`"`0$DB`2,`D``R`````(&<@#((````)9Q@,@@````QG$`R"````H
XM#6<(#((````*9@12BF#,#!(`(&UV#!(`(F8J4HH0&DB`2,`D`&<<%L(,@@``:
XM`")F$`P2`")F!%**8`9"*___8`)@VF`X$!I(@$C`)`!G+`R"````(&<D#((`;
XM```)9QP,@@````QG%`R"````#6<,#((````*9P06PF#*0AM*@F8"4XI2K(-Z=
XM8`#_4D(32.<``G(`("R#>N6`6(`L;(->3J[_.DS?0``I0(-V9@A"K(-Z8`#^A
XMT'0`)&R#@F`:(`+E@"!L@W8AB@@`+PI.N@C\U<!2BEA/4H*TK(-Z;>`@`N6`T
XM(&R#=D*P"`!@`/Z8(`!,[P,```0@""(O``Q*&&;\4X@0V5?)__P$@0`!``!JO
XM\D(@3G4O+P`(2'@#`2\O``QA!D_O``Q.=4CG/C(L;P`D*"\`*$ZZ#VPF;(-FZ
XM=`!@$'(&(`).NA'@2K,(`&<04H(P;(+`L<)NZ'8(8``!3@@$``EG7DCG(`)TZ
XM_R(O``0L;(-B3J[_K$S?0`0J`&=$2.<``B(%+&R#8DZN_Z9,WT``2.<``B(7'
XM+&R#8DZN_[A,WT``2H!F'$CG``(L;(-B3J[_?$S?0``F``R`````S68``.I(.
XMYR`")#P```/M(B\`!"QL@V).KO_B3-]`!"1`(`IF``"D"`0`"&8&=@%@``"\B
XM2.<@`B0\```#[B(O``0L;(-B3J[_XDS?0`0D0$J`9A9(YP`"+&R#8DZN_WQ,;
XMWT``)@!@``"&2.<``G`A0_H`P"QL@UY.KOW83-]``"P`9Q1(YP`"(D8L;(->8
XM3J[^8DS?0`!@,$CG,`)V`4'Z`)XD""(*+&R#8DZN_]!,WT`,2.<P`G;_=``B+
XM"BQL@V).KO^^3-]`#&`P(`0"@```!0`,@```!0!F($CG``(B"BQL@V).KO_<Z
XM3-]``'8%*4.#AG#_3-],?$YU<@8@`DZZ$&HGB@@`<@8@`DZZ$%XWA`@$"`0`X
XM"V<62.<P`G8!=``B"BQL@V).KO^^3-]`#"`"8,)D;W,N;&EB<F%R>0```$CG)
XM,"`D+P`03KH-G'(&(`).NA`8)$#5[(-F2H)M##!L@L"QPF\$2I)F$"E\````\
XM`X.&</],WP0,3G4P*@`$2,`"@`````,,@`````%F#"E\````!H.&</]@VDCGO
XM,`(F+P`D)"\`("(2+&R#8DZN_]9,WT`,)@`,@/____]F&$CG``(L;(-B3J[_L
XM?$S?0``I0(.&</]@GB`#8)I,[P,```2SR&<,<``0&+`95LC_^F8$<`!.=6,$/
XM<`%.=7#_3G5(YS`R+&\`&$CG``)P`$/Z`-8L;(->3J[]V$S?0``I0(.*9@9,!
XMWTP,3G5(YP`"(&\`("!H`"0@:``$+&R#BDZN_[),WT``)$!*@&=^2.<``D/Z0
XM`*$@:@`V+&R#BDZN_Z!,WT``)`!G4$CG(`(D/````^TB%RQL@V).KO_B3-]`&
XM!"9`2H!G,B`+Y8`F`"!#+6@`"`"D+4L`G$CG(`(D/````^U!^@!6(@@L;(-B4
XM3J[_XDS?0`0M0`"@2.<``B!*+&R#BDZN_Z9,WT``2.<``B)L@XHL;(->3J[^D
XM8DS?0`!"K(.*8`#_0&EC;VXN;&EB<F%R>0!724Y$3U<`*@!,[P,```0@""(OP
XM``Q@`A#95\G__&<,!($``0``:O!.=4(84<G__`2!``$``&KR3G5.5?WT2.<_>
XM,B9M``@L;0`0?@`D;0`,%A)F"B`'3-],_$Y=3G52B@P#`"5G0B0'(%.QZP`$H
XM9`P@4U*3$(-P`!`#8`YP`!`#+P`O"TZZ!2Y03PR`_____V<`!&12@A829@0@O
XM`F"X4HH,`P`E9L(N`G@`*WP````@__P6&G``$`-@9@C$``!@\@C$``%@[`C$X
XM``)@Y@C$``-@X%B.)"[__$J";`8(Q```1((6&F!6*WP````P__QT`&`8(`+G'
XM@'(`$@/0@=""T((D``2"````,!8:<``0`T'L@`<0,```2(`(```"9M1@'`1`)
XM`"!GH%=`9Z)?0&>D4T!GCE5`9X170&>L8+(K0O_X)#P``'W&#`,`+F9<%AH,W
XM`P`J9A18CB0N__Q*@FP&)#P``'W&%AI@,'0`8!@@`N>`<@`2`]"!T(+0@B0`0
XM!((````P%AIP`!`#0>R`!Q`P``!(@`@```)FU`R"``!]QF<(*WP````@__PJ5
XM`@P#`&AF!@C$``=@%@P#`&QF!@C$``9@"@P#`$QF!@C$``@6&BM*``QP`!`#@
XM8``!CF```QH(!``'9PI8CB!N__PPAV`8"`0`!F<*6(X@;O_\((=@"%B.(&[_"
XM_""'=`!@``&H6(XD;O_\+PI.N@,()``,A0``?<983V<&M(5O`B0%8``!AEB.+
XM%B[__T'M_?@D2!"#=`%@``%R=`A@$`!$`$AV>'008`8(Q``$=`H,`P!89@A!@
XM^@*>(`A@!D'Z`J<@""M`_?0(!``&9PA8CBPN__Q@%`@$``1G"%B.+"[__&`&@
XM6(XL+O_\"`0`!&<*2H9L!D2&",0`!4'M__@D2`R%``!]QF8">@%*AF8$2H5G1
XM'"("(`9.N@6L(&W]]!4P"``B`B`&3KH%J"P`9N1![?_XD<HD"`@$``-G;@P#^
XM`&]F%$J"9PH,$@`P9PBTA6T$*@)2A6!4#`,`>&<&#`,`6&9(2H)G1`P2`#!GY
XM/K2%;!!![?WZL<ID"!4\`#!2@F#L"`0``&8<#*T````P__QF$B`"5("PK?_X4
XM;`@J+?_X585@RA4#%3P`,%2"M(5L$$'M_?BQRF0(%3P`,%*"8.Q@3`1``"5G1
XM`/[(!$``,V<`_M@$0``+9P#^LE-`9P#^SEM`9P#^R%M`9P#^4%-`9P#^KE-`W
XM9P#^K%=`9P#^;%5`9P#^KE=`9P#^H&``_BH(!``$9R@(!``%9P85/``M8!H(B
XM!``!9P85/``K8`X(!``"9P85/``@8`)3@E*"WH((!```9@``D`RM````,/_\9
XM9D((!``$9SPP!`)``"9G-"!3L>L`!&0.(%-2DQ":<``0*O__8`YP`!`:+P`OG
XM"TZZ`9)03PR`_____V<``,A3K?_X4X)@-"!3L>L`!&00(%-2DQ"M__]P`!`MC
XM__]@$'``$"W__R\`+PM.N@%84$\,@/____]G``".4H<@+?_X4ZW_^+"";L`J=
XM`B`"4X)*@&<N(%.QZP`$9`X@4U*3$)IP`!`J__]@#G``$!HO`"\+3KH!$E!/R
XM#(#_____9TA@R@@$``!G/"0%8"P@4['K``1D#B!34I,0O``@<`!P(&`,2'@`Z
XM("\+3KH`W%!/#(#_____9Q)2AR`M__A3K?_XL()NR&``^UAP_V``^UPP,3(SY
XM-#4V-S@Y04)#1$5&`#`Q,C,T-38W.#EA8F-D968`(&\`!"`(2AAF_%-(D<`@)
XM"$YU2.<`("1O``@@"F9$0>R!""1(2FH`#&<F,"H`#`)``@AF'$AX__\O"DZZK
XM`%H,@/____]03V8(</],WP0`3G75_````!9![(+`M<AEQG``8.A(>/__+PI.+
XMN@`L4$]@VDCG`"!![($()$@O"DZZ`;Y83]7\````%D'L@L"UR&7J3-\$`$YUK
XM2.<\("1O`!@H+P`<(`IG``&0-"H`#&<``8@(`@`)9@`!@`@"``-F``%X($K1&
XM_`````PP$`)`[_TP@$JJ``AF'`R$_____V8(<`!,WP0\3G4O"DZZ`L@T*@`,Q
XM6$\(`@`.9C0@4K'J``AC'DAX``$@$I"J``0O`!`J``Y(@$C`+P!.N@1,3^\`L
XM#"2J``@@:@`0T=(E2``$#(3_____9@1V`&`"%@0@$I"J``@J`#`"`D``H&=.?
XM#(3_____9R(@4E*2$(,@2M'\````##`0",``#C"`-`!!^O\$*4B#CE*%#(3_A
XM____9PP,`P`*9P:ZJ@`0901X_V`,)5(`!'``$`-@`/]*"`(`#F<P2H5G'"\%2
XM+RH`"!`J``Y(@$C`+P!.N@1VL(5/[P`,9EX@2M'\````##`0"(``#C"`#(3_%
XM____9A(DJ@`()6H`"``$<``0`V``_OI!^OZ&*4B#CB!*T?P````,,!`(P``.;
XM,(`DJ@`((&H`$-'2)4@`!"!24I(0@W``$`-@`/[&($K1_`````PP$`C```(P!
XM@"5J``@`!"2J``AP_V``_J9.5?_V2.<X("1M``AT`"`*9P9*:@`,9@IP_TS?Q
XM!!Q.74YU""H``0`,9@HO"DZZ_:B$@%A/$"H`#DB`2,`O`$ZZ!HB$@`@J````A
XM#5A/9PHO*@`(3KH!EEA/2FH`%&=.2'H`:DAM__=.N@)0."H`%'8`4$]P`#`$I
XM<@I.N@!\!H`````P<@>2@T'M__<1@!@`2,2)_``*4H,,@P````5MU$(M__](+
XM;?_W3KH#$EA/0I)"J@`$0JH`"$)J``Q*@F<&</]@`/]8<`!@`/]25$U0`$CGW
XM2`!"A$J`:@1$@%)$2H%J!D2!"D0``6$^2D1G`D2`3-\`$DJ`3G5(YT@`0H1*:
XM@&H$1(!21$J!:@)$@6$:(`%@V"\!81(@`2(?2H!.=2\!808B'TJ`3G5(YS``N
XM2$%*068@2$$V`30`0D!(0(##(@!(0#("@L,P`4)!2$%,WP`,3G5(028!(@!")
XM04A!2$!"0'0/T(#3@;:!8@22@U)`4<K_\DS?``Q.=4CG("`D;P`,=$$0*@`.0
XM2(!(P"\`3KH!.DJ`6$]G`G0A)7P```0``!!(>`0`3KH`QB5```A83V88)7P`K
XM```!`!`@2M'\````#R5(``@T/`"`($K1_`````QP`#`0,@)(P8"!,(`E:@`(T
XM``0DJ@`(3-\$!$YU2.<`,)?+)&R#DF`0($I0B")O``RSR&<.)DHD4B`*9NQ,C
XMWPP`3G4@"V<$)I)@!"E2@Y)(YP`"("H`!%"`(DHL;(->3J[_+DS?0`!@U$CG;
XM`#`D;(.28!PF4DCG``(@*@`$4(`B2BQL@UY.KO\N3-]``"1+(`IFX$*L@Y),_
XMWPP`3G5(YR`@)"\`#$J"9@AP`$S?!`1.=4CG``)R`"`"4(`L;(->3J[_.DS?*
XM0``D0$J`9@1P`&#:0?K_EBE(@Y8DK(.2)4(`!"E*@Y(@"E"`8,!,[P,```0@P
XM"!#99OQ.=4CG("`D+P`,<@8@`DZZ!$PD0-7L@V9*@FT,,&R"P+'";P1*DF80_
XM*7P````#@X9P_TS?!`1.=4CG``)R!B`"3KH$&B!L@V8B,`@`+&R#8DZN_RA,"
XMWT``2H!G!'`!8`)P`&#.2.<P("0O`!!.N@%J<@8@`DZZ`^8D0-7L@V9*@FT,X
XM,&R"P+'";P1*DF80*7P````#@X9P_TS?!`Q.=4CG,`(@+P`D4X`F`"0O`"`B6
XM$BQL@V).KO^^3-]`#"8`#(#_____9AA(YP`"+&R#8DZN_WQ,WT``*4"#AG#_<
XM8+I(YS`"=@!T`"(2+&R#8DZN_[Y,WT`,8*)(YP`"(B\`""QL@V).KO^X3-]`M
XM`$J`9AA(YP`"+&R#8DZN_WQ,WT``*4"#AG#_3G5P`&#Z2.<P("0O`!!.N@"D4
XM<@8@`DZZ`R`D0-7L@V9*@FT,,&R"P+'";P1*DF80*7P````#@X9P_TS?!`Q.7
XM=3`J``0"0``#9@PI?`````:#AG#_8.0(*@`#``1G%DCG,`)V`70`(A(L;(-BD
XM3J[_ODS?0`Q(YS`")B\`)"0O`"`B$BQL@V).KO_03-]`#"8`#(#_____9AA(D
XMYP`"+&R#8DZN_WQ,WT``*4"#AG#_8(H@`V"&2.<@`$CG``(B/```$`!P`"QL2
XM@UY.KO[.3-]``"0`"```#&<22JR#;F8((`),WP`$3G5.N@`&<`!@\DCG,`)V5
XM!$'Z`"XD""\#+P(L;(-B3J[_Q"(`)!\F'RQL@V).KO_03-]`#$AX``%.N@`*T
XM6$].=5Y#"@!*K(.:9Q0@;(.:(&@`!$Z0(&R#FBE0@YI@YDJL@XYG!B!L@XY.:
XMD"\O``1.N@`&6$].=4CG,``F+P`,2JR#9F<R=`!@"B\"3KH!<%A/4H(P;(+`#
XML<)N[DCG``(P+(+`P?P`!B)L@V8L;(->3J[_+DS?0`!*K(.69P8@;(.63I!*N
XMK(+&9Q1(YP`"(BR"QBQL@V).KO^F3-]``$JL@YYG""!L@YX@K(.B2JR#IF<4]
XM2.<``B)L@Z8L;(->3J[^8DS?0`!*K(.J9Q1(YP`"(FR#JBQL@UY.KOYB3-]`R
XM`$JL@ZYG%$CG``(B;(.N+&R#7DZN_F),WT``2JR#LF<42.<``B)L@[(L;(->E
XM3J[^8DS?0`!(YP`&+'@`!`@N``0!*6<02_H`"$ZN_^)@!D*G\U].<RI?2JR#-
XM<F8\2JR#@F<T2.<``B`L@WXB;(."+&R#7DZN_RY,WT``2.<``B`L@WKE@%B`_
XM(FR#=BQL@UY.KO\N3-]``&`D2.<``BQL@UY.KO]\3-]``$CG``(B;(-R+&R#S
XM7DZN_H9,WT``2.<``B)L@V(L;(->3J[^8DS?0``@`RYL@UI.=4S?``Q.=4CGS
XM("`D+P`,<@8@`DZZ`$HD0-7L@V9*@FT,,&R"P+'";P1*DF80*7P````#@X9P5
XM_TS?!`1.=3`J``0"0(``9A)(YP`"(A(L;(-B3J[_W$S?0`!"DG``8-A(YW``,
XM-`'$P"8!2$/&P$A#0D/4@TA`P,%(0$)`T(),WP`.3G4``````^P````!````I
XM`0``#E@````````#\@```^H```"R`````0`@("`@("`@("`P,#`P,"`@("`@L
XM("`@("`@("`@("`@()!`0$!`0$!`0$!`0$!`0$`,#`P,#`P,#`P,0$!`0$!`H
XM0`D)"0D)"0$!`0$!`0$!`0$!`0$!`0$!`0$!0$!`0$!`"@H*"@H*`@("`@("2
XM`@("`@("`@("`@("`@)`0$!`(```````````````````````````````````\
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM``````````````````````````````````(````````!````````````````#
XM```$``$``````0``````````````````!``"``````$`````````````````-
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
X=`````!0``````````````_(```/K`````0```_(`M
X``
Xend
Xsize 10064
END_OF_FILE
if test 14127 -ne `wc -c <'battle.uu'`; then
    echo shar: \"'battle.uu'\" unpacked with wrong size!
fi
# end of 'battle.uu'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    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
-- 
Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
Mail comments to the moderator at <amiga-request@uunet.uu.net>.
Post requests for sources, and general discussion to comp.sys.amiga.misc.