home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Source Code 1994 March
/
Source_Code_CD-ROM_Walnut_Creek_March_1994.iso
/
compsrcs
/
games
/
vmsnet
/
maxewr2
/
part03
< prev
next >
Wrap
Internet Message Format
|
1993-07-13
|
98KB
Path: uunet!elroy.jpl.nasa.gov!ames!koriel!lll-winken.llnl.gov!fnnews.fnal.gov!fnnews!SNYDER
From: SNYDER@d0sb10.fnal.gov
Newsgroups: vmsnet.sources.games
Subject: Mazewar for VMS (3/5) (repost)
Date: 14 Jul 1993 06:03:35 GMT
Organization: SUNY Stony Brook High Energy Physics
Lines: 2383
Message-ID: <SNYDER.93Jul14000335@d0sb10.fnal.gov>
NNTP-Posting-Host: d0sb10.fnal.gov
Xref: uunet vmsnet.sources.games:752
-+-+-+-+-+-+-+-+ START OF PART 3 -+-+-+-+-+-+-+-+
Vt`6020MazeWar`6020gam
XVes`6020are`6020being
XXplayed,`6020and`6020prints`6020out`6020useful`6020information`6020about`6020t
Vhem.
XXIt's`6020useful`6020for`6020discovering`6020what`6020games`6020might`6020be
V`6020interesting
XV`6020to`6020connect`6020to
XXon`6020a`6020distant`6020network.
XX.SH`6020"SEE`6020ALSO"
XXmazewar(6)
X$`20call`20unpack`20MAZEFIND.6;1`20136260481`20""
X$!
X$`20create`20'f'
XX/*`6020$Header:`6020mazefind.c,v`60201.5`602088/09/07`602011:23:42`6020kent
V`6020Exp`6020$`6020*/
XV
XX
XX/*`6020
XX`6020*`6020mazefind.c`6020-`6020find`6020ongoing`6020mazewar`6020games
XX`6020*`6020
XX`6020*`6020Author:`6009Christopher`6020A.`6020Kent
XX`6020*`6020`6009`6009Western`6020Research`6020Laboratory
XX`6020*`6020`6009`6009Digital`6020Equipment`6020Corporation
XX`6020*`6020Date:`6009Thu`6020Dec`6020`60204`60201986
XX`6020*/
XX
XX/***********************************************************
XXCopyright`60201986`6020by`6020Digital`6020Equipment`6020Corporation,`6020Mayn
Vard,`6020Massac
XVhusetts,
XX
XX`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020
V`6020`6020`6020`6020`6020`6020`6020`6020`6020All
XV`6020Rights`6020Reserved
XX
XXPermission`6020to`6020use,`6020copy,`6020modify,`6020and`6020distribute`6020t
Vhis`6020software
XV`6020and`6020its`6020
XXdocumentation`6020for`6020any`6020purpose`6020and`6020without`6020fee`6020is
V`6020hereby`6020gran
XVted,`6020
XXprovided`6020that`6020the`6020above`6020copyright`6020notice`6020appear`6020i
Vn`6020all`6020copie
XVs`6020and`6020that
XXboth`6020that`6020copyright`6020notice`6020and`6020this`6020permission`6020no
Vtice`6020appear
XV`6020in`6020
XXsupporting`6020documentation,`6020and`6020that`6020the`6020names`6020of`6020D
Vigital`6020not
XV`6020be
XXused`6020in`6020advertising`6020or`6020publicity`6020pertaining`6020to`6020di
Vsstribution`6020o
XVf`6020the
XXsoftware`6020without`6020specific,`6020written`6020prior`6020permission.`6020
V`6020
XX
XXDIGITAL`6020DISCLAIMS`6020ALL`6020WARRANTIES`6020WITH`6020REGARD`6020TO`6020T
VHIS`6020SOFTWARE,
XV`6020INCLUDING
XXALL`6020IMPLIED`6020WARRANTIES`6020OF`6020MERCHANTABILITY`6020AND`6020FITNESS
V,`6020IN`6020NO
XV`6020EVENT`6020SHALL
XXDIGITAL`6020BE`6020LIABLE`6020FOR`6020ANY`6020SPECIAL,`6020INDIRECT`6020OR
V`6020CONSEQUENTIAL
XV`6020DAMAGES`6020OR
XXANY`6020DAMAGES`6020WHATSOEVER`6020RESULTING`6020FROM`6020LOSS`6020OF`6020USE
V,`6020DATA`6020OR
XV`6020PROFITS,
XXWHETHER`6020IN`6020AN`6020ACTION`6020OF`6020CONTRACT,`6020NEGLIGENCE`6020OR
V`6020OTHER`6020TORTIO
XVUS`6020ACTION,
XXARISING`6020OUT`6020OF`6020OR`6020IN`6020CONNECTION`6020WITH`6020THE`6020USE
V`6020OR`6020PERFORMANC
XVE`6020OF`6020THIS
XXSOFTWARE.
XX
XX******************************************************************/
XX
XX/*
XX`6020*`6020$Log:`6009mazefind.c,v`6020$
XX`6020*`6020Revision`60201.5`6020`602088/09/07`6020`602011:23:42`6020`6020kent
V
XX`6020*`6020
XX`6020*`6020
XX`6020*`6020Revision`60201.4`6020`602088/08/25`6020`602009:57:53`6020`6020kent
V
XX`6020*`6020
XX`6020*`6020
XX`6020*`6020Revision`60201.3`6020`602088/06/15`6020`602016:36:20`6020`6020kent
V
XX`6020*`6020
XX`6020*`6020
XX`6020*`6020Revision`60201.2`6020`602087/03/31`6020`602014:42:26`6020`6020kent
V
XX`6020*`6020Portability`6020considerations,`6020especially`6020byteswapping
V`6020to/from`6020t
XVhe`6020net.
XX`6020*`6020
XX`6020*`6020Revision`60201.1`6020`602086/12/04`6020`602017:19:31`6020`6020kent
V
XX`6020*`6020Initial`6020revision
XX`6020*`6020
XX`6020*/
XX
XXstatic`6020char`6020rcs_ident`605B`605D`6020=`6020"$Header:`6020mazefind.c,v
V`60201.5`602088/09/0
XV7`602011:23:42`6020kent`6020Exp`6020$";
XX
XX#include`6020<sys/types.h>
XX#include`6020<sys/socket.h>
XX#include`6020<sys/time.h>
XX
XX#include`6020<netinet/in.h>
XX
XX#include`6020<errno.h>
XX#include`6020<netdb.h>
XX#include`6020<stdio.h>
XX#ifdef`6020VMS
XX#include`6020<string.h>
XX#else
XX#include`6020<strings.h>
XX#endif
XX
XX#include`6020"mazewar.h"
XX
XXstruct`6020answer`6020`607B
XX`6009Sockaddr`6009source;
XX`6009int`6009`6009srclen;
XX`6009RatPacket`6009packet;
XX`607D;
XX
XXBoolean`6009FoundOne`6020=`6020FALSE;
XX
XX/*`6020
XX`6020*`6020Broadcast`6020to`6020check`6020out`6020all`6020the`6020games`6020o
Vn`6020the`6020net.`6020Th
XVis`6020is`6020basically
XX`6020*`6020findDuke()`6020from`6020init.c.
XX`6020*/
XX
XXmain()
XX`607B
XX`6009register`6020int`6009i;
XX`6009int`6009`6009cnt`6020=`60200;
XX`6009Sockaddr`6009rmtAddr;
XX`6009struct`6009timeval`6009timeout;
XX`6009RatPacket`6009*b`6020=`6020(RatPacket`6020*)`6020malloc(sizeof(RatPacket
V));
XX`6009struct`6020answer`6009answer;
XX`6009int`6009`6009fd;
XX`6009fd_set`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020fds;
XX`6009int`6009`6009ret,`6020cc;
XX`6009int`6009`6009mazePort;
XX`6009struct`6020servent`6009*mazeService;
XX`6009char`6009`6009buf`605B128`605D;
XX`6009Boolean`6009`6009duke(),`6020freeSlot();
XX`6009u_long`6009`6009inet_makeaddr();
XX`6009Sockaddr`6009*resolveHost();
XX
XX`6009fd`6020=`6020socket(AF_INET,`6020SOCK_DGRAM,`60200);
XX`6009if`6020(fd`6020<`60200)
XX`6009`6009MFError("can't`6020get`6020socket");
XX#ifdef`6009SO_BROADCAST
XX#ifdef`6009BSD_43
XX`6009`607B
XX`6009int`6009one`6020=`60201;
XX
XX`6009if`6020(setsockopt(fd,`6020SOL_SOCKET,`6020SO_BROADCAST,`6020`6026one,
V`6020sizeof`6020one
XV)`6020<`60200)
XX`6009`6009MFError("can't`6020get`6020broadcast`6020permission");
XX`6009`607D
XX#else`6009BSD_43
XX`6009if`6020(setsockopt(fd,`6020SOL_SOCKET,`6020SO_BROADCAST,`6020NULL,`60200
V)`6020<`60200)
XX`6009`6009MFError("can't`6020get`6020broadcast`6020permission");
XX#endif`6009BSD_43
XX#endif`6009SO_BROADCAST
XX
XX`6009mazeService`6020=`6020getservbyname(MAZESERVICE,`6020"udp");
XX`6009if`6020(mazeService`6020!=`6020(struct`6020servent`6020*)`6020NULL)
XX`6009`6009mazePort`6020=`6020mazeService->s_port;
XX`6009else
XX`6009`6009mazePort`6020=`6020htons(MAZEPORT);
XX
XX`6009gethostname(buf,`6020sizeof(buf));
XX`6009bcopy((char`6020*)resolveHost(buf),`6020(char`6020*)`6020`6026rmtAddr,
V`6020sizeof(rmtAd
XVdr));
XX`6009rmtAddr.sin_addr.s_addr`6020=`6020inet_makeaddr(inet_netof(rmtAddr.sin_a
Vddr),
XX`6009`6009`6009`6009`6009BROAD_ADDR);`6009/*`6020from`6020Makefile`6020*/
XX`6009rmtAddr.sin_port`6020=`6020mazePort;
XX
XX`6009setupSurvey(b);
XX`6009ConvertOutgoing(b);
XX`6009if`6020(sendto(fd,`6020(char`6020*)`6020b,`6020sizeof(*b),`60200,`6020
V`6026rmtAddr,`6020sizeo
XVf(rmtAddr))`6020<`60200)
XX`6009`6009MFError("survey");
XX
XX`6009while`6020(1)`6020`607B
XX`6009`6020`6020`6020`6020`6020`6020`6020`6020FD_ZERO`6020(`6026fds);
XX`6009`6009FD_SET`6020(fd,`6020`6026fds);
XX`6009`6009timeout.tv_sec`6020=`60205;
XX`6009`6009timeout.tv_usec`6020=`60200;
XX`6009`6009ret`6020=`6020select(FD_SETSIZE,`6020`6026fds,`6020NULL,`6020NULL,
V`6020`6026timeout);
XX`6009`6009if`6020(ret`6020<`60200)
XX`6009`6009`6009MFError("select");
XX`6009`6009if`6020(ret`6020==`60200)
XX`6009`6009`6009break;
XX`6009`6009answer.srclen`6020=`6020sizeof(Sockaddr);
XX`6009`6009cc`6020=`6020recvfrom(fd,`6020`6026answer.packet,`6020sizeof(RatPac
Vket),
XX`6009`6009`60090,`6020`6026answer.source,`6020`6026answer.srclen);
XX`6009`6009if`6020(cc`6020<`60200)
XX`6009`6009`6009MFError("recv");
XX`6009`6009ConvertIncoming(`6026answer.packet);
XX`6009`6009if`6020(answer.packet.type`6020!=`6020RAT_STATUS)
XX`6009`6009`6009continue;
XX`6009`6009if`6020(!duke(`6026answer))`6020`607B
XX`6009`6009`6009RatStatus`6009rs;
XX
XX`6009`6009`6009rs`6020=`6020(RatStatus)`6020`6026answer.packet.body;
XX`6009`6009`6009setupSurvey(b);
XX`6009`6009`6009ConvertOutgoing(b);
XX`6009`6009`6009if`6020(rs->rats`605Brs->dukeRat`605D.addr.sin_port`6020==`602
V0mazePort)
XX`6009`6009`6009`6009continue;`6009/*`6020will`6020answer`6020himself`6020*/
XX`6009`6009`6009`6009
XX`6009`6009`6009if`6020(sendto(fd,`6020b,`6020sizeof(*b),`60200,
XX`6009`6009`6009`6009`6020`6020`6020`6026rs->rats`605Brs->dukeRat`605D.addr,
XX`6009`6009`6009`6009`6020`6020`6020sizeof(rs->rats`605Brs->dukeRat`605D.addr)
V)`6020<`60200)
XX`6009`6009`6009`6009MFError("resend");
XX`6009`6009`6009continue;
XX`6009`6009`607D`6020else
XX`6009`6009`6009printAnswer(`6026answer);
XX`6009`607D
XX`6009if`6020(FoundOne`6020==`6020FALSE)
XX`6009`6009printf("No`6020one's`6020playing`6020now`605Cn");
XX`6009exit(0);
XX`607D
XX
XXMFError(s)
XXchar`6020*s;
XX`607B
XX`6009fprintf(stderr,`6020"mazefind:`6020%s`605Cn",`6020s);
XX`6009perror("mazefind");
XX`6009exit(-1);
XX`607D
XX
XX/*`6020
XX`6020*`6020Fill`6020in`6020the`6020RAT_SURVEY`6020packet.
XX`6020*/
XX
XXsetupSurvey(b)
XXRatPacket`6020*b;
XX`607B
XX`6009RatNew`6009ratSurvey;
XX
XX`6009b->type`6020=`6020RAT_SURVEY;
XX`6009ratSurvey`6020=`6020(RatNew)`6020`6026b->body;
XX`6009ratSurvey->pass`6020=`6020RAT_PASSWORD;
XX`607D
XX
XX/*`6020
XX`6020*`6020Check`6020if`6020this`6020guy's`6020the`6020duke`6020of`6020his
V`6020game.
XX`6020*/
XX
XXBoolean
XXduke(a)
XXstruct`6020answer`6009*a;
XX`607B
XX`6009RatStatus`6009test;
XX
XX`6009test`6020=`6020(RatStatus)`6020`6026a->packet.body;
XX`6009return`6020!bcmp((char`6020*)`6020`6026test->rats`605Btest->dukeRat`605D
V.addr.sin_addr,
XV
XX`6009`6009`6009(char`6020*)`6020`6026a->source.sin_addr,`6020sizeof(struct
V`6020in_addr));
XX`607D
XX
XX/*`6020
XX`6020*`6020Decode`6020an`6020answer`6020packet.
XX`6020*/
XX
XXprintAnswer(a)
XXstruct`6020answer`6009*a;
XX`607B
XX`6009RatStatus`6009status;
XX`6009RatId`6009`6009ratId;
XX`6009RatInfo`6009`6009rat;
XX`6009struct`6020hostent`6009*host;
XX
XX`6009status`6020=`6020(RatStatus)`6020`6026a->packet.body;
XX`6009
XX`6009if`6020(FoundOne`6020==`6020FALSE)`6020`607B
XX`6009`6009FoundOne`6020=`6020TRUE;
XX`6009`6009printf("Current`6020game(s):`605Cn");
XX`6009`6009printf("`605Ct%-20s`605Ct%s`605Ct`605Cthost`605Cn",`6020"Name",`602
V0"score");
XX`6009`607D`6020else
XX`6009`6009printf("`605Cn");
XX`6009for(ratId`6020=`60200;`6020ratId`6020<`6020MAXRATS;`6020ratId++)`6020
V`607B
XX`6009`6009rat`6020=`6020(RatInfo)`6020`6026status->rats`605BratId`605D;
XX`6009`6009if`6020(rat->playing`6020==`6020FALSE)
XX`6009`6009`6009continue;
XX
XX`6009`6009if`6020(ratId`6020==`6020status->dukeRat)
XX`6009`6009`6009printf("duke");
XX`6009`6009printf("`605Ct");
XX
XX`6009`6009printf("%-20s`605Ct%d`605Ct`605Ct",`6020rat->name,`6020rat->score);
V
XX
XX`6009`6009host`6020=`6020gethostbyaddr(`6026rat->addr.sin_addr,
XX`6009`6009`6009`6009sizeof(struct`6020in_addr),`6020AF_INET);
XX`6009`6009if`6020(host`6020!=`6020NULL)
XX`6009`6009`6009printf("%s`605Cn",`6020host->h_name);
XX`6009`6009else
XX`6009`6009`6009printf("%s`605Cn",`6020inet_ntoa(rat->addr.sin_addr));
XX`6009`607D
XX`607D
XX
XX/*
XX`6020*`6020Resolve`6020the`6020specified`6020host`6020name`6020into`6020an
V`6020internet`6020addres
XVs.`6020`6020The`6020"name"`6020may
XX`6020*`6020be`6020either`6020a`6020character`6020string`6020name,`6020or`6020
Van`6020address`6020in
XV`6020the`6020form`6020a.b.c.d`6020where
XX`6020*`6020the`6020pieces`6020are`6020octal,`6020decimal,`6020or`6020hex`6020
Vnumbers.`6020`6020Retur
XVns`6020a`6020pointer`6020to`6020a
XX`6020*`6020sockaddr_in`6020struct`6020(note`6020this`6020structure`6020is`602
V0statically`6020all
XVocated`6020and`6020must
XX`6020*`6020be`6020copied),`6020or`6020NULL`6020if`6020the`6020name`6020is`602
V0unknown.
XX`6020*/
XX
XXSockaddr`6020*
XXresolveHost(name)
XXregister`6020char`6020*name;
XX`607B
XX`6009register`6020struct`6020hostent`6020*fhost;
XX`6009struct`6020in_addr`6020fadd;
XX`6009static`6020Sockaddr`6020sa;
XX
XX`6009if`6020((fhost`6020=`6020gethostbyname(name))`6020!=`6020NULL)`6020`607B
V
XX`6009`6009sa.sin_family`6020=`6020fhost->h_addrtype;
XX`6009`6009sa.sin_port`6020=`60200;
XX`6009`6009bcopy(fhost->h_addr,`6020`6026sa.sin_addr,`6020fhost->h_length);
XX`6009`607D`6020else`6020`607B
XX`6009`6009fadd.s_addr`6020=`6020inet_addr(name);
XX`6009`6009if`6020(fadd.s_addr`6020!=`6020-1)`6020`607B
XX`6009`6009`6009sa.sin_family`6020=`6020AF_INET;`6009/*`6020grot`6020*/
XX`6009`6009`6009sa.sin_port`6020=`60200;
XX`6009`6009`6009sa.sin_addr.s_addr`6020=`6020fadd.s_addr;
XX`6009`6009`607D`6020else
XX`6009`6009`6009return(NULL);
XX`6009`607D
XX`6009return(`6026sa);
XX`607D
XX
XX/*`6020
XX`6020*`6020Convert`6020the`6020contents`6020of`6020a`6020packet`6020to`6020ne
Vtwork`6020order`6020bef
XVore`6020sending.
XX`6020*/
XX
XXConvertOutgoing(p)
XXRatPacket`6020*p;
XX`607B
XX`6009char`6009`6009buf`605B64`605D;
XX`6009RatId`6009`6009ratId;
XX`6009RatLocation`6009ratLoc;
XX`6009RatKill`6009`6009ratKill;
XX`6009RatDead`6009`6009ratDead;
XX`6009RatStatus`6009ratStatus;
XX`6009RatNew`6009`6009ratNew;
XX`6009RatGone`6009`6009ratGone;
XX`6009RatQuery`6009ratQuery;
XX`6009RatAlive`6009ratAlive;
XX`6009RatMove`6009`6009ratMove;
XX
XX`6009switch(p->type)`6020`607B
XX`6009case`6020RAT_LOCATION:
XX`6009`6009ratLoc`6020=`6020(RatLocation)`6020`6026p->body;
XX`6009`6009ratLoc->ratId`6020=`6020htonl(ratLoc->ratId);
XX`6009`6009ratLoc->xLoc`6020=`6020`6020htons(ratLoc->xLoc);
XX`6009`6009ratLoc->yLoc`6020=`6020`6020htons(ratLoc->yLoc);
XX`6009`6009ratLoc->dir`6020=`6020`6020`6020htons(ratLoc->dir);
XX`6009`6009ratLoc->score`6020=`6020htonl(ratLoc->score);
XX`6009`6009break;
XX
XX`6009case`6020RAT_KILL:
XX`6009`6009ratKill`6020=`6020(RatKill)`6020`6026p->body;
XX`6009`6009ratKill->ratId`6020=`6020htonl(ratKill->ratId);
XX`6009`6009ratKill->xLoc`6020`6020=`6020htons(ratKill->xLoc);
XX`6009`6009ratKill->yLoc`6020`6020=`6020htons(ratKill->yLoc);
XX`6009`6009ratKill->dir`6020`6020`6020=`6020htons(ratKill->dir);
XX`6009`6009break;
XX
XX`6009case`6020RAT_DEAD:
XX`6009`6009ratDead`6020=`6020(RatDead)`6020`6026p->body;
XX`6009`6009ratDead->ratId`6020=`6020htonl(ratDead->ratId);
XX`6009`6009ratDead->killedBy`6020=`6020htonl(ratDead->killedBy);
XX`6009`6009break;
XX
XX`6009case`6020RAT_STATUS:
XX`6009`6009ratStatus`6020=`6020(RatStatus)`6020`6026p->body;
XX`6009`6009ratStatus->dukeRat`6020=`6020htonl(ratStatus->dukeRat);
XX`6009`6009for`6020(ratId`6020=`60200;`6020ratId`6020<`6020MAXRATS;`6020ratId+
V+)`6020`607B
XX`6009`6009`6009RatInfo`6009ratInfo;
XX
XX`6009`6009`6009ratInfo`6020=`6020`6026ratStatus->rats`605BratId`605D;
XX`6009`6009`6009ratInfo->playing`6020=`6020htons(ratInfo->playing);
XX`6009`6009`6009ratInfo->xLoc`6020=`6020htons(ratInfo->xLoc);
XX`6009`6009`6009ratInfo->yLoc`6020=`6020htons(ratInfo->yLoc);
XX`6009`6009`6009ratInfo->dir`6020=`6020htons(ratInfo->dir);
XX`6009`6009`6009ratInfo->score`6020=`6020htonl(ratInfo->score);
XX`6009`6009`6009ratInfo->addr.sin_family`6020=
XX`6009`6009`6009`6009ntohs(ratInfo->addr.sin_family);
XX`6009`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009`607D
XX`6009`6009break;
XX
XX`6009case`6020RAT_NEW:
XX`6009`6009ratNew`6020=`6020(RatNew)`6020`6026p->body;
XX`6009`6009ratNew->pass`6020=`6020htons(ratNew->pass);
XX`6009`6009ratNew->xLoc`6020=`6020htons(ratNew->xLoc);
XX`6009`6009ratNew->yLoc`6020=`6020htons(ratNew->yLoc);
XX`6009`6009ratNew->dir`6020`6020=`6020htons(ratNew->dir);
XX`6009`6009ratNew->addr.sin_family`6020=
XX`6009`6009`6009htons(ratNew->addr.sin_family);
XX`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009break;
XX
XX`6009case`6020RAT_GOING:
XX`6009`6009ratGone`6020=`6020(RatGone)`6020`6026p->body;
XX`6009`6009ratGone->ratId`6020=`6020htonl(ratGone->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_QUERY:
XX`6009`6009ratQuery`6020=`6020(RatQuery)`6020`6026p->body;
XX`6009`6009ratQuery->ratId`6020=`6020htonl(ratQuery->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_ALIVE:
XX`6009`6009ratAlive`6020=`6020(RatAlive)`6020`6026p->body;
XX`6009`6009ratAlive->ratId`6020=`6020htonl(ratAlive->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_SURVEY:
XX`6009`6009ratNew`6020=`6020(RatNew)`6020`6026p->body;
XX`6009`6009ratNew->pass`6020=`6020htons(ratNew->pass);
XX`6009`6009ratNew->xLoc`6020=`6020htons(ratNew->xLoc);
XX`6009`6009ratNew->yLoc`6020=`6020htons(ratNew->yLoc);
XX`6009`6009ratNew->dir`6020`6020=`6020htons(ratNew->dir);
XX`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009break;
XX
XX`6009case`6020RAT_MOVE:
XX`6009`6009ratMove`6020=`6020(RatMove)`6020`6026p->body;
XX`6009`6009ratMove->ratId`6020=`6020htonl(ratMove->ratId);
XX`6009`6009break;
XX
XX`6009default:
XX`6009`6009sprintf(buf,`6020"ConvertOutgoing`6020bad`6020type`6020%d`6020(%d)"
V,
XX`6009`6009`6009p->type,`6020htons(p->type));
XX`6009`6009MFError(buf);
XX`6009`607D
XX`6009p->type`6020=`6020htonl(p->type);
XX`607D
XX
XX/*`6020
XX`6020*`6020Convert`6020the`6020contents`6020of`6020a`6020packet`6020to`6020ho
Vst`6020order`6020after
XV`6020ConvertIncoming.
XX`6020*/
XX
XXConvertIncoming(p)
XXRatPacket`6020*p;
XX`607B
XX`6009char`6009`6009buf`605B64`605D;
XX`6009RatId`6009`6009ratId;
XX`6009RatLocation`6009ratLoc;
XX`6009RatKill`6009`6009ratKill;
XX`6009RatDead`6009`6009ratDead;
XX`6009RatStatus`6009ratStatus;
XX`6009RatNew`6009`6009ratNew;
XX`6009RatGone`6009`6009ratGone;
XX`6009RatQuery`6009ratQuery;
XX`6009RatAlive`6009ratAlive;
XX`6009RatMove`6009`6009ratMove;
XX
XX`6009p->type`6020=`6020ntohl(p->type);
XX`6009switch(p->type)`6020`607B
XX`6009case`6020RAT_LOCATION:
XX`6009`6009ratLoc`6020=`6020(RatLocation)`6020`6026p->body;
XX`6009`6009ratLoc->ratId`6020=`6020ntohl(ratLoc->ratId);
XX`6009`6009ratLoc->xLoc`6020=`6020`6020ntohs(ratLoc->xLoc);
XX`6009`6009ratLoc->yLoc`6020=`6020`6020ntohs(ratLoc->yLoc);
XX`6009`6009ratLoc->dir`6020=`6020`6020`6020ntohs(ratLoc->dir);
XX`6009`6009ratLoc->score`6020=`6020ntohl(ratLoc->score);
XX`6009`6009break;
XX
XX`6009case`6020RAT_KILL:
XX`6009`6009ratKill`6020=`6020(RatKill)`6020`6026p->body;
XX`6009`6009ratKill->ratId`6020=`6020ntohl(ratKill->ratId);
XX`6009`6009ratKill->xLoc`6020`6020=`6020ntohs(ratKill->xLoc);
XX`6009`6009ratKill->yLoc`6020`6020=`6020ntohs(ratKill->yLoc);
XX`6009`6009ratKill->dir`6020`6020`6020=`6020ntohs(ratKill->dir);
XX`6009`6009break;
XX
XX`6009case`6020RAT_DEAD:
XX`6009`6009ratDead`6020=`6020(RatDead)`6020`6026p->body;
XX`6009`6009ratDead->ratId`6020=`6020ntohl(ratDead->ratId);
XX`6009`6009ratDead->killedBy`6020=`6020ntohl(ratDead->killedBy);
XX`6009`6009break;
XX
XX`6009case`6020RAT_STATUS:
XX`6009`6009ratStatus`6020=`6020(RatStatus)`6020`6026p->body;
XX`6009`6009ratStatus->dukeRat`6020=`6020ntohl(ratStatus->dukeRat);
XX`6009`6009for`6020(ratId`6020=`60200;`6020ratId`6020<`6020MAXRATS;`6020ratId+
V+)`6020`607B
XX`6009`6009`6009RatInfo`6009ratInfo;
XX
XX`6009`6009`6009ratInfo`6020=`6020`6026ratStatus->rats`605BratId`605D;
XX`6009`6009`6009ratInfo->playing`6020=`6020ntohs(ratInfo->playing);
XX`6009`6009`6009ratInfo->xLoc`6020=`6020ntohs(ratInfo->xLoc);
XX`6009`6009`6009ratInfo->yLoc`6020=`6020ntohs(ratInfo->yLoc);
XX`6009`6009`6009ratInfo->dir`6020=`6020ntohs(ratInfo->dir);
XX`6009`6009`6009ratInfo->score`6020=`6020ntohl(ratInfo->score);
XX`6009`6009`6009ratInfo->addr.sin_family`6020=
XX`6009`6009`6009`6009ntohs(ratInfo->addr.sin_family);
XX`6009`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009`607D
XX`6009`6009break;
XX
XX`6009case`6020RAT_NEW:
XX`6009`6009ratNew`6020=`6020(RatNew)`6020`6026p->body;
XX`6009`6009ratNew->pass`6020=`6020ntohs(ratNew->pass);
XX`6009`6009ratNew->xLoc`6020=`6020ntohs(ratNew->xLoc);
XX`6009`6009ratNew->yLoc`6020=`6020ntohs(ratNew->yLoc);
XX`6009`6009ratNew->dir`6020`6020=`6020ntohs(ratNew->dir);
XX`6009`6009ratNew->addr.sin_family`6020=
XX`6009`6009`6009ntohs(ratNew->addr.sin_family);
XX`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009break;
XX
XX`6009case`6020RAT_GOING:
XX`6009`6009ratGone`6020=`6020(RatGone)`6020`6026p->body;
XX`6009`6009ratGone->ratId`6020=`6020ntohl(ratGone->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_QUERY:
XX`6009`6009ratQuery`6020=`6020(RatQuery)`6020`6026p->body;
XX`6009`6009ratQuery->ratId`6020=`6020ntohl(ratQuery->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_ALIVE:
XX`6009`6009ratAlive`6020=`6020(RatAlive)`6020`6026p->body;
XX`6009`6009ratAlive->ratId`6020=`6020ntohl(ratAlive->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_SURVEY:
XX`6009`6009ratNew`6020=`6020(RatNew)`6020`6026p->body;
XX`6009`6009ratNew->pass`6020=`6020ntohs(ratNew->pass);
XX`6009`6009ratNew->xLoc`6020=`6020ntohs(ratNew->xLoc);
XX`6009`6009ratNew->yLoc`6020=`6020ntohs(ratNew->yLoc);
XX`6009`6009ratNew->dir`6020`6020=`6020ntohs(ratNew->dir);
XX`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009break;
XX
XX`6009case`6020RAT_MOVE:
XX`6009`6009ratMove`6020=`6020(RatMove)`6020`6026p->body;
XX`6009`6009ratMove->ratId`6020=`6020ntohl(ratMove->ratId);
XX`6009`6009break;
XX
XX`6009default:
XX`6009`6009sprintf(buf,`6020"ConvertIncoming`6020bad`6020type`6020%d`6020(%d)"
V,
XX`6009`6009`6009p->type,`6020ntohs(p->type));
XX`6009`6009MFError(buf);
XX`6009`607D
XX`607D
XX
X$`20call`20unpack`20MAZEFIND.C;4`20805713132`20""
X$!
X$`20create`20'f'
XX
XX
XX
XXMAZEFIND(6)`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020
V`6020`6020`6020`6020`6020`6020`6020`6020`6020
XV`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020
V`6020`6020`6020`6020`6020`6020MAZEFIND(6)
XX
XX
XXN`6008NA`6008AM`6008ME`6008E
XX`6020`6020`6020`6020`6020mazefind`6020-`6020discover`6020current`6020MazeWar
V`6020games
XX
XXS`6008SY`6008YN`6008NT`6008TA`6008AX`6008X
XX`6020`6020`6020`6020`6020/`6008/u`6008us`6008sr`6008r/`6008/g`6008ga`6008am
V`6008me`6008es`6008s/`6008/m`6008ma
XV`6008az`6008ze`6008ef`6008fi`6008in`6008nd`6008d
XX
XXD`6008DE`6008ES`6008SC`6008CR`6008RI`6008IP`6008PT`6008TI`6008IO`6008ON`6008N
V
XX`6020`6020`6020`6020`6020_`6008M_`6008a_`6008z_`6008e_`6008f_`6008i_`6008n_
V`6008d`6020`6020broadcasts`6020`6020a
XV`6020`6020query`6020`6020on`6020`6020the`6020net`6020to`6020discover`6020what
V
XX`6020`6020`6020`6020`6020MazeWar`6020games`6020are`6020being`6020played,`6020
Vand`6020prints`6020out
XV`6020useful`6020infor-
XX`6020`6020`6020`6020`6020mation`6020`6020about`6020`6020them.`6020`6020It's
V`6020useful`6020for`6020discove
XVring`6020what`6020games
XX`6020`6020`6020`6020`6020might`6020be`6020interesting`6020to`6020connect`6020
Vto`6020on`6020a`6020distant
XV`6020network.
XX
XXS`6008SE`6008EE`6008E`6020A`6008AL`6008LS`6008SO`6008O
XX`6020`6020`6020`6020`6020mazewar(6)
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
XX
X+-+-+-+-+-+-+-+-`20`20END`20`20OF`20PART`203`20+-+-+-+-+-+-+-+-
$ call unpack [.MAZEWAR]MAZEWAR.3;1 1143515845 ""
$!
$ create 'f'
X-+-+-+-+-+-+-+-+`20START`20OF`20PART`204`20-+-+-+-+-+-+-+-+
XX`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020
V`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020
XV`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020
V`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020
XV`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`60201
XX
XX
X$`20call`20unpack`20MAZEFIND.DOC;1`201478691461`20""
X$!
X$`20create`20'f'
XX`60B0`60000`6000D`6000`6060`6000`6000`6000`6000`60000205`6002`6001`6000`6000
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`6000
XV`6000`6000`6000`60A8`6000`6000`6001`601A`60CD`6080D`6000`6000`6000`6000`6000
V`6014`6000`6000h`60DF`60FE`607Fl`600A`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`600E`6000`6000
V`6000`6000`6000`6000`6000`6003`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6003`6000`6000`6000`6000`6000`6000`6000
V`6008MAZEFIND`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6004V1.
XV0`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`60A0(`601A`60CD`6080
V`60C4`6096`6000`600505-13`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6010`6000`6004`6000`6001`6000`6000`6000`608A
V`6000`6000`6000`6003`6000`6000`6000`6010`6000`6005
XV`6000`6005`6000`6000`6000`6080`6000`6000`6000`6007`6000`6000`6000`6010`6000
V`6002`6000`600A`6000`6000`6000`600A`6004`6000`6000
XV`600C`6000`6000`6000`600C`6000`6014`6000`60EC`60FF?`6000`608C`6000`6000`60FD#
V`6000`6011`6000`6000`6000`6000`6000!`6000`6000
XV`6003`6000`6000`6000`6000`6001`6000`6000`6001`600EDECW$XTSHR_001'`60007`6000
V`6000`6000`6000`6000+`6000`6000`6004`6000
XV`6000`6000`6000`6003`6000`6000d`6012DECW$DWTLIBSHR_001`6020`6000`6004`6000
V`6000`6000`6000`6000!`6000`6000`6003`6000
XV`6000`6000`6000`6003`6000`6000`6004`600BVAXCRTL_001`601F`6000`60C3`6000`6000
V`6000`6000`6000!`6000`6000`6003`6000`6000
XV`6000`6000`600E`6000`6000`6001`600ALIBRTL_001`601F`6000O`6001`6000`6000`6000
V`6000!`6000`6000`6003`6000`6000`6000`6000
XV`600C`6080`6000`6081`600AMTHRTL_001.`6000`601F`6000`6000`6000`6000`6000!`6000
V`6004`6003`6000`6000`6000`6000`600D`6000
XV`6000`600C`6019DECW$TRANSPORT_COMMON_001%`6000`60A3`6002`6000`6000`6000`6000!
V`6000`6000`6003`6000`6000`6000
XV`6000`6004`6000`6000d`6010DECW$XLIBSHR_001`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XX0`6000`6003`6000`6000`6000`6000`6000!`6000`6000`6003`6000`6000`6000`6000`6005
V`6000`6000`6001`601BMULTINET_SOCKET_LIB
XVRARY_001`6000`6000`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60F
VF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
XV`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF`60FF
V`60FF
XX$Header:`6020mazefind.c,v`60201.5`602088/09/07`602011:23:42`6020kent`6020Exp
V`6020$`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000
XX`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XX`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XX`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XXcan't`6020get`6020socket`6000can't`6020get`6020broadcast`6020permission`6000u
Vdp`6000mazewar
XV`6000survey`6000select`6000recv`6000resend`6000No`6020one's`6020playing`6020n
Vow`600A`6000`607C`6000
XV`6016`60FF`60F0`6009`6000`6000`609E`60CE`6084`60FD`605E`60FB`6000`60EF4`6009
V`6000`6000<`608F`6088`6001`607E`60FB`6001`60FF`60D4
XV`6009`6000`6000`60D0PU`60D4`607E`60DD`6002`60DD`6002`60FB`6003`60FF`6020`600A
V`6000`6000`60D0PT`6018`6009`609F`60CF`605B`60FF
XV`60FB`6001`60CF<`6002`60D0`6001`60CD`608C`60FD`60DD`6004`609F`60CD`608C`60FD
V`60DD`6020<`608F`60FF`60FF`607E`60DDT`60FB`6005
XV`60FF`60F3`6009`6000`6000`60D5P`6018`6009`609F`60CFD`60FF`60FB`6001`60CF`6014
V`6002`609F`60CFZ`60FF`609F`60CFZ`60FF`60FB`6002
XV`60FF`60D3`6009`6000`6000`60D5P`6013`6006`60D0`60A0`6008V`6011`600F<`608FW
V`6004`607E`60FB`6001`60FF`60B9`6009`6000`6000`60D0PV
XV`609A`608F`6080`607E`609E`60CD`6090`60FDR`60DDR`60FB`6002`60FF`60A0`6009`6000
V`6000`60DD`6010`60C3`6014`605DS`60DDS`60DDR`60FB
XV`6001`60CF-`6003`60DDP`60FB`6003`60FF`6084`6009`6000`6000`60D2`6000`607E`60DD
V`60AD`60F0`60FB`6001`60FFs`6009`6000`6000`60DDP
XV`60FB`6002`60FFf`6009`6000`6000`60D0P`60AD`60F0`60B0V`60AD`60EE`60DDU`60FB
V`6001`60CF`60C9`6001`60DDU`60FB`6001`60CF`6086`6003
XV`60DD`6010`60DDS`60D4`607E<`608F`6088`6001`607E`60DDU`60DDT`60FB`6006`60FF6
V`6009`6000`6000`60D5P`6018`6009`609F`60CF`60CE
XV`60FE`60FB`6001`60CFs`6001`609A`608F@`607E`609F`60CD`6010`60FE`60FB`6002`60FF
V`6016`6009`6000`6000`60D0TP`6018`6004`60C1T`600FP
XVx`608F`60FCPP`609C`601BPR`60CA`608F`6000`6000`6000`60F8R`60D0TP`6018`6004`60C
V1T`600FPx`608F`60FCPP`609C`601BPQ`60CA
XV`608F`6000`6000`6000`60F8Q`60D0TP`6018`6004`60C1T`600FP`609C`601CPP`60CA`608F
V`60E0`60FF`60FF`60FFPxP`6001P`60C9A`60CD
XV`6010`60FEPB`60CD`6010`60FE`60D0`6005`60CD`6084`60FD`60D4`60CD`6088`60FD`609F
V`60CD`6084`60FD`60D4`607E`60D4`607E`609F`60CD`6010
XV`60FE<`608F`6000`6002`607E`60FB`6005`60FF`609D`6008`6000`6000`60D0PR`6018`600
V9`609F`60CFC`60FE
XX`60FB`6001`60CF`60E1`6000`60D5R`6012`60031`60A7`6000`60D0`6010`60CD`6060`60FE
V`609F`60CD`6060`60FE`609F`60CDP`60FE`60D4`607E<
XV`608F`6088`6001`607E`609F`60CDd`60FE`60DDT`60FB`6006`60FFc`6008`6000`6000`60D
V5P`6018`6009`609F`60CF`6015`60FE`60FB`6001`60CF
XV`60AC`6000`609F`60CDd`60FE`60FB`6001`60CF`60A7`6004`60D1`60CDd`60FE`6004`6013
V`60031`6026`60FF`609F`60CDP`60FE`60FB`6001`60CF
XV`60D0`6000`60B5P`6012M`609E`60CDh`60FER`60DDU`60FB`6001`60CF`60AC`6000`60DDU
V`60FB`6001`60CFi`6002`60C5b0Q`60C1QRP<`60A0
XV`6006P`60D1PV`6012`60031`60F2`60FE`60DD`6010`609FA`60A2`6004`60D4`607E<`608F
V`6088`6001`607E`60DDU`60DDT`60FB`6006`60FF`6003
XV`6008`6000`6000`60D5P`6019`60031`60D3`60FE`609F`60CF`60AB`60FD1`60C7`60FE`609
VF`60CDP`60FE`60FB`6001`60CF`60E8`60001`60C0`60FE
XV`60B5`60EF`6093`60F5`60FF`60FF`6012`600B`609F`60CF`6097`60FD`60FB`6001`60FF
V`6096`6007`6000`6000`60D4`607E`60FB`6001`60FF`6089
XV`6007`6000`6000mazefind:`6020%s`600A`6000mazefind`6000`6000`6000`60C2`6004
V`605E`60DD`60AC`6004`609F`60AF`60DE`60DD
XV`60FF`60CD`6007`6000`6000`60FB`6003`60FFV`6007`6000`6000`609F`60AF`60DC`60FB
V`6001`60FFH`6007`6000`6000`60D2`6000`607E`60FB`6001
XV`60FFF`6007`6000`6000`6000`6000`60C2`6004`605E`60D0`60AC`6004P`60D0`6009`6060
V`60B0`608F`60885`60A0`6014`6004`6000`6000`6000
XV`60C2`6004`605E`60D0`60AC`6004P`60C1P`6018Q`60DD`6004`609F`60A0`6004`60C5a0P
V`609F@`60A1`6008`60FB`6003`60FFE`6007`6000`6000
XV`60D5P`6012`6004`60D0`6001P`6004`60D4P`6004Current`6020game(s):`600A`6000scor
Ve`6000Name`6000`6009%-20s`6009%
XVs`6009`6009host`600A`6000`600A`6000duke`6000`6009`6000%-20s`6009%d`6009`6009
V`6000%s`600A`6000<`6000`60C2`6004`605E
XV`60C1`60AC`6004`6018T`60B5`60EF`60A4`60F4`60FF`60FF`6012"`60B0`6001`60EF`609B
V`60F4`60FF`60FF`609F`60AF`609E`609E`60FF`60A2`6006
XV`6000`6000R`60FB`6001b`609F`60AF`60A3`609F`60AF`60A6`609F`60AF`60A8`60FB`6003
Vb`6011`600A`609F`60AF`60B1`60FB`6001`60FF`6086
XV`6006`6000`6000`60D4S`609E`60FF`607E`6006`6000`6000U`60C5S0P`609E@`60A4`6004R
V`60B5`60A2`6014`6013V`60D1Sd`6012`600A`609F
XV`60AF`608D`60FB`6001`60FF`6060`6006`6000`6000`609F`60AF`6088`60FB
XX`6001e`60DD`60A2`6010`609F`60A2`601C`609F`60CF`607D`60FF`60FB`6003e`60DD`6002
V`60DD`6004`609F`60A2`6004`60FB`6003`60FFk`6006
XV`6000`6000`60D5P`6013`600B`60DD`6060`609F`60CFm`60FF`60FB`6002e`6011`6017`60D
VD`60A2`6004`60FB`6001`60FFN`6006`6000`6000`60DDP
XV`609F`60CFX`60FF`60FB`6002`60FF`6019`6006`6000`6000`60F3`6007S`6098`6004`6004
V`6000`60C2`6004`605E`60D0`60AC`6004R`60DDR`60FB
XV`6001`60FF`6026`6006`6000`6000`60D5P`6013#`60B0`60A0`6008`60EF`60D6`60F3`60FF
V`60FF`60B4`60EF`60D2`60F3`60FF`60FF`60DD`60A0`600C
XV`609F`60EF`60CB`60F3`60FF`60FF`60DD`60B0`6010`60FB`6003`60FF)`6006`6000`6000
V`6011+`60DDR`60FB`6001`60FF`60F2`6005`6000`6000
XV`60D1P`608F`60FF`60FF`60FF`60FF`6013`6016`60B0`6002`60EF`60A2`60F3`60FF`60FF
V`60B4`60EF`609E`60F3`60FF`60FF`60D0P`60EF`6099`60F3
XV`60FF`60FF`6011`6003`60D4P`6004`609E`60EF`608A`60F3`60FF`60FFP`6004ConvertOut
Vgoing`6020bad`6020type`6020%d`6020(
XV%d)`6000`6000`607C`6000`609E`60AE`60BC`605E`60D0`60AC`6004U`60CFe`6001`6009
V`6017`6000_`6000`609A`6000`60BA`6000*`6001`60A1
XV`6001`60A1`6001`60A1`6001l`6001`60A1`60011`609C`6001`60C1U`6004R`60DDb`609E
V`60FFq`6005`6000`6000T`60FB`6001d`60D0Pb2`60A5
XV`600C`607E`609E`60FF`6098`6005`6000`6000S`60FB`6001c`60B0P`60A5`600C2`60A5
V`600E`607E`60FB`6001c`60B0P`60A5`600E2`60A5`6010
XV`607E`60FB`6001c`60B0P`60A5`6010`60DD`60A2`6004`60FB`6001d`60D0P`60A2`60041y
V`6001`60C1U`6004R`60DDb`60FB`6001`60FF(`6005
XV`6000`6000`60D0Pb2`60A2`6004`607E`609E`60FFS`6005`6000`6000S`60FB`6001c`60B0P
V`60A2`60042`60A5`600A`607E`60FB`6001c`60B0P
XV`60A5`600A2`60A5`600C`607E`60FB`6001c`60B0P`60A5`600C1>`6001`60C1U`6004R`60DD
Vb`609E`60FF`60EE`6004`6000`6000S`60FB`6001c
XV`60D0Pb`60DD`60A2`6004`60FB`6001c`60D0P`60A2`60041`601E`6001`60C1U`6004V`60DD
Vf`60FB`6001`60FF`60CD`6004`6000`6000`60D0Pf
XV`60D4S`609E`60FF`60FA`6004`6000`6000T`60C5S0R`609EB`60A6`6004R2`60A2`6014`607
VE`60FB`6001d`60B0P`60A2`60142`60A2`6016`607E
XV`60FB`6001d`60B0P`60A2`60162`60A2`6018`607E`60FB`6001d`60B0P`60A2`60182`60A2
V`601A`607E`60FB`6001d`60B0P`60A2`601A`60DD`60A2
XV`6010`60FB`6001`60FF`6082`6004`6000`6000`60D0P`60A2`60102b`607E`60FB`6001`60F
VF
XXp`6004`6000`6000`60B0Pb`60F3`6007S`60AC1`60AE`6000`60C1U`6004S2`60A5`6014`607
VE`609E`60FF`6094`6004`6000`6000R`60FB`6001b
XV`60B0P`60A5`60142`60A5`6016`607E`60FB`6001b`60B0P`60A5`60162`60A5`6018`607E
V`60FB`6001b`60B0P`60A5`60182`60A5`601A`607E`60FB
XV`6001b`60B0P`60A5`601A2c`607E`60FB`6001b`60B0Pc`6011l2`60A5`6014`607E`609E
V`60FFV`6004`6000`6000R`60FB`6001b`60B0P`60A5
XV`60142`60A5`6016`607E`60FB`6001b`60B0P`60A5`60162`60A5`6018`607E`60FB`6001b
V`60B0P`60A5`60182`60A5`601A`607E`60FB`6001b`60B0P
XV`60A5`601A`60117`60C1U`6004R`60DDb`60FB`6001`60FF`60E6`6003`6000`6000`60D0Pb
V`6011%`60DDe`60FB`6001`60FF`6010`6004`6000`6000
XV`60DDP`60DDe`609F`60CF`600C`60FE`609E`60AD`60BCR`60DDR`60FB`6004`60FF`6097
V`6003`6000`6000`60DDR`60FB`6001`60CF*`60FC`60DDe
XV`60FB`6001`60FF`60B3`6003`6000`6000`60D0Pe`6004ConvertIncoming`6020bad`6020ty
Vpe`6020%d`6020(%d)`6000<`6000
XV`609E`60AE`60BC`605E`60D0`60AC`6004U`60DDe`60FB`6001`60FFs`6003`6000`6000`60D
V0Pe`60CFe`6001`6009`6017`6000`605D`6000`6096
XV`6000`60B4`6000`601E`6001`6093`6001`6093`6001`6093`6001_`6001`6093`60011`608D
V`6001`60C1U`6004R`60DDb`609E`60FFI`6003`6000
XV`6000T`60FB`6001d`60D0Pb2`60A5`600C`607E`609E`60FF<`6003`6000`6000S`60FB`6001
Vc`60B0P`60A5`600C2`60A5`600E`607E`60FB`6001c
XV`60B0P`60A5`600E2`60A5`6010`607E`60FB`6001c`60B0P`60A5`6010`60DD`60A2`6004
V`60FB`6001d`60D0P`60A2`6004`6004`60C1U`6004R`60DDb
XV`60FB`6001`60FF`6002`6003`6000`6000`60D0Pb2`60A2`6004`607E`609E`60FF`60F9`600
V2`6000`6000S`60FB`6001c`60B0P`60A2`60042`60A5
XV`600A`607E`60FB`6001c`60B0P`60A5`600A2`60A5`600C`607E`60FB`6001c`60B0P`60A5
V`600C`6004`60C1U`6004R`60DDb`609E`60FF`60CA`6002
XV`6000`6000S`60FB`6001c`60D0Pb`60DD`60A2`6004`60FB`6001c`60D0P`60A2`6004`6004
V`60C1U`6004S`60DDc`60FB`6001`60FF`60AB`6002
XV`6000`6000`60D0Pc`60D4T`609E`60FF`60A4`6002`6000`6000U`60C5T0R`609EB`60A3`600
V4R2`60A2`6014`607E`60FB`6001e`60B0P`60A2
XV`60142`60A2`6016`607E`60FB`6001e`60B0P`60A2`60162`60A2`6018`607E`60FB`6001e
V`60B0P`60A2`60182`60A2`601A`607E`60FB
XX`6001e`60B0P`60A2`601A`60DD`60A2`6010`60FB`6001`60FF`6060`6002`6000`6000`60D0
VP`60A2`60102b`607E`60FB`6001e`60B0Pb`60F3`6007T
XV`60B0`6004`60C1U`6004S2`60A5`6014`607E`609E`60FFD`6002`6000`6000R`60FB`6001b
V`60B0P`60A5`60142`60A5`6016`607E`60FB`6001b
XV`60B0P`60A5`60162`60A5`6018`607E`60FB`6001b`60B0P`60A5`60182`60A5`601A`607E
V`60FB`6001b`60B0P`60A5`601A2c`607E`60FB`6001b
XV`60B0Pc`60042`60A5`6014`607E`609E`60FF`6007`6002`6000`6000R`60FB`6001b`60B0P
V`60A5`60142`60A5`6016`607E`60FB`6001b`60B0P
XV`60A5`60162`60A5`6018`607E`60FB`6001b`60B0P`60A5`60182`60A5`601A`607E`60FB
V`6001b`60B0P`60A5`601A`6004`60C1U`6004R`60DDb
XV`60FB`6001`60FF`60CC`6001`6000`6000`60D0Pb`6004`60DDe`60FB`6001`60FF`60C3`600
V1`6000`6000`60DDP`60DDe`609F`60CF`6010`60FE`609E
XV`60AD`60BCR`60DDR`60FB`6004`60FF`6086`6001`6000`6000`60DDR`60FB`6001`60CF`601
V9`60FA`6004`6000`6000`6004`6000`60C2`6004`605E
XV`609E`60EF`6015`60F6`60FF`60FFR`60D1R`608F`60F4`6008`6000`6000`601E`6014`60D5
Vb`6013`6004`60FB`6000`60B2`6000`60C0`6004R`60D1R
XV`608F`60F4`6008`6000`6000`601F`60EC`609E`60EF`60F1`60F5`60FF`60FFP`60D1P`608F
V`60F0`6008`6000`6000`6013$`609E`60EF`60E5`60F5
XV`60FF`60FFR`60D1R`608F`60F8`6008`6000`6000`601E`6014`60D5b`6013`6004`60FB`600
V0`60B2`6000`60C0`6004R`60D1R`608F`60F8`6008`6000
XV`6000`601F`60EC`6004`6004`6000`60C2`600C`605E`609E`60EF`60C7`60F5`60FF`60FFP
V`60D1P`608F`6000`6009`6000`6000`6013$`609E`60EF
XV`60BB`60F5`60FF`60FFR`60D1R`608F`6008`6009`6000`6000`601E`6014`60D5b`6013`600
V4`60FB`6000`60B2`6000`60C0`6004R`60D1R`608F`6008
XV`6009`6000`6000`601F`60EC`609E`60EF`6093`60F5`60FF`60FFR`60D1R`608F`6004`6009
V`6000`6000`601E`6014`60D5b`6013`6004`60FB`6000
XV`60B2`6000`60C0`6004R`60D1R`608F`6004`6009`6000`6000`601F`60EC`609F`60CFA`60F
VF`60FB`6001`60FF`60B2`6000`6000`6000`60D0`60AD
XV`600CP`60D0`60A0`600CP`60D0`60A0`600CP`60D0`608F`60AB`6013`6000`6000`60A0`601
V0`6004`60DDP`60FB`6001`60FF`60A4`6000`6000`6000
XV`6000`6000`60C2`6004`605E`60D5`60EFy`60EE`60FF`60FF`6012`600C`60D0`6001`60EFp
V`60EE`60FF`60FF`60FB`6000`60CFa`60FF`6004`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000
XX`6000`6000`6000`6000`6000`6000`6000`6000@`6000`6000`6000@`6000`6000`6000`6014
V`6003`6000`6000`60C8`6000`6000`6000`60D4`6000`6000
XV`6000`6009`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6008`6000`6000
V`6000`6003`6000`6000`6000d`6006`6000`6000D`6001`6000
XV`60004`6004`6000`6000`607C`6000`6000`6000`60CC`6001`6000`6000`6004`6001`6000
V`6000`60FC`6003`6000`6000`600A`6000`6000`6000`6014
XV`6000`6000`6000`6008`6000`6000`6000`6018`6002`6000`6000`6020`6002`6000`6000
V`60B0`6001`6000`6000`60C0`6001`6000`6000`60B0`6000
XV`6000`6000`60E8`6001`6000`6000`60A0`6000`6000`6000`6080`6001`6000`60008`6000
V`6000`6000`6060`6003`6000`6000`6090`6001`6000`6000P
XV`6000`6000`6000`60D0`6001`6000`6000`60D8`6001`6000`6000`6088`6001`6000`6000
V`6098`6001`6000`6000`60B8`6001`6000`6000h`6001`6000
XV`6000X`6000`6000`6000h`6000`6000`6000`6000`6000`6000`6000,`600A`6000`6000`600
V1`6000`6000`6000`6000`6012`6000`6000`6002`6000
XV`600D`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000@`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`600ADE
VCW$XTSHR`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`600EDECW$DWTLIBS
XVHR`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6007VAX
XVCRTL`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6006LIBRTL`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000
XX`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6006MTHRTL`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6015DECW$TRANSPORT_COMMON`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`600CDECW$XLIBSHR`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6017MULTINET_SOCKET_LIBRAR
VY`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6001`6000`6000`6000`6003`6000
V`6000`6000`60C4`6012`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000
XX`600F`60BC`6000`6007`6000`6000`6000`6008MAZEFINDA`609B`6010`6001=`6000`6001
V`6000`6000`6012`60D2`60BE`607E`60C4`6096`6000
XV`6019`6000`6000`6000`60A6`6001`6002)SB12:`605BSCRATCH.SNYDER.MAZEWAR`605DMAZE
VFIND.C;4`6000`600C`609B
XV`6002`6001`6000`6003`6001`6000`6000`6000`600A`60F7`6001`6015`60BE`6000`6000
V`600A`6000`6000`600Egcc2_compiled.`6006`60BF
XV`6000l`6000`6000`6000`600B`60BE`6000l`600A`6000`6000`6004main`6009`60B9`6009V
V`6000`6010l`600A`6000`6000`6002`60B9`6000`6002
XV`60B9`60EC`6004`60B9`6002`6003`6000`6004`60B9`6002`600B`60F1`6002`60B9`60F0
V`6002`60B9`60FE`6006`60BF`6000z`6002`6000`6000`600E
XV`60BE`6000`60E6`600C`6000`6000`6007MFError`6004`60B9`6002`6003`60F7`6004`60B9
V`6002`6001`60FB`6002`60B9`60E6`6002`60B9`60F7
XV`6004`60B9`6002`6006`6000`6002`60B9`60F1`6002`60B9`60FC`6004`60B9`6002`6001
V`60FA`6004`60B9`6002`6001`60F1`6002`60B9`60EE`6006
XV`60BF`6000,`6000`6000`6000`6012`60BE`6000H`600E`6000`6000`600BresolveHost`600
V2`60B9`60E8`6004`60B9`6002`6001`60E6`6004
XV`60B9`6002`6001`60FC`6006`60BF`6000`608E`6000`6000`6000`6012`60BE`6000`6012
V`600D`6000`6000`600BsetupSurvey`6002`60B9`60F9
XV`6006`60BF`6000`6014`6000`6000`6000`6016`60BE`6000`60D6`600E`6000`6000`600FCo
VnvertOutgoing`6002`60B9`60F9`6002`60B9
XV`60E6`6004`60B9`6002`6002`60F7`6002`60B9`60F1`6002`60B9`60AC`6002`60B9`60FB
V`6002`60B9`60FC`6002`60B9`60E5`6002`60B9`60FE`6002
XV`60B9`60F7`6004`60B9`6002`6001`60F9`6002`60B9`60FB`6004`60B9`6002`6001`60E4
V`6002`60B9`60FC`6002`60B9`60F7`6006`60BF`6000`6014
XV`6002`6000`6000`6016`60BE`6000`60EA`6010`6000`6000`600FConvertIncoming`6002
V`60B9`60F7`6004`60B9`6002`6001`60F6`6006
XV`60BF`6000`60E6`6001`6000`6000`600B`60BE`6000`6026`600D`6000`6000`6004duke
V`6002`60B9`60F3`6004`60B9`6002`6001`6000`6002`60B9
XV`60FB`6002`60B9`60F9`6002`60B9`60F9`6004`60B9`6002`6002`60EC`6004`60B9`6002
V`6002`60E1`6002`60B9`60FC`6002`60B9`60FD`6002`60B9
XV`6000`6006`60BF`6000r`6000`6000`6000`6012`60BE`6000`6098`600D`6000`6000`600Bp
VrintAnswer`6002`60B9`60F7`6002`60B9`60FD
XV`6002`60B9`60F8`6002`60B9`60F5`6002`60B9
XX`60F7`6004`60B9`6002`6003`60E9`6002`60B9`60FB`6002`60B9`60ED`6002`60B9`60F6
V`6002`60B9`60F6`6004`60B9`6002`6007`6000`6002`60B9
XV`60F7`6004`60B9`6002`6001`6000`6004`60B9`6002`6001`60FD`6002`60B9`60FA`6004
V`60B9`6002`6008`60FE`6002`60B9`60F7`6004`60B9`6002
XV`6001`6000`6002`60B9`60FC`6004`60B9`6002`6001`60E1`6004`60B9`6002`6007`60BA
V`6002`60B9`60FB`6004`60B9`6002`6004`6000`6004`60B9
XV`6002`6001`60FB`6002`60B9`60F8`6002`60B9`60F9`6002`60B9`60F3`6002`60B9`60F4
V`6002`60B9`60FE`6002`60B9`60F6`6002`60B9`60F7`6002
XV`60B9`60F7`6004`60B9`6002`6002`60FB`6002`60B9`60FB`6002`60B9`60F6`6004`60B9
V`6002`6001`60FA`6004`60B9`6002`6001`60F3`6004`60B9
XV`6002`6001`60F2`6002`60B9`60FC`6004`60B9`6002`6001`60F5`6002`60B9`60E9`6006
V`60B9`6015`6000`6000`6000`6000`6009`60B9`6009`60EA
XV`6000`6010C`600E`6000`6000`6002`60B9`6000`6004`60B9`6002`6011`60FC`6004`60B9
V`6002`600C`60FF`6002`60B9`60F7`6004`60B9`6002`6003
XV`6000`6002`60B9`60F3`6002`60B9`60F8`6002`60B9`60FA`6002`60B9`60ED`6002`60B9
V`60FE`6002`60B9`60F7`6002`60B9`60F7`6002`60B9`60F9
XV`6002`60B9`60FA`6002`60B9`60F9`6002`60B9`60FE`6002`60B9`60FD`6002`60B9`6000
V`6002`60B9`60F8`6004`60B9`6002`6007`60DE`6002`60B9
XV`60F6`6004`60B9`6002`600B`6000`6002`60B9`60E5`6002`60B9`6000`6002`60B9`60FC
V`6002`60B9`60F1`6002`60B9`60EE`6002`60B9`60F5`6002
XV`60B9`60F5`6002`60B9`60F6`6004`60B9`6002`6002`60FD`6002`60B9`60FC`6002`60B9
V`60F4`6002`60B9`60EE`6002`60B9`60F5`6002`60B9`60F5
XV`6004`60B9`6002`6002`60FD`6002`60B9`60FC`6002`60B9`60F1`6002`60B9`60F6`6004
V`60B9`6002`6002`60FD`6002`60B9`60FC`6002`60B9`60F4
XV`6002`60B9`60F7`6004`60B9`6002`6001`6000`6002`60B9`60F7`6002`60B9`60F5`6002
V`60B9`60F5`6002`60B9`60F5`6002`60B9`60F5`6002`60B9
XV`60F2`6004`60B9`6002`6002`60F3`6006`60B9`6015`6000`6000`6000`6000`6009`60B9
V`6009L`6001`6010`6007`6010`6000`6000`6002`60B9`6000
XV`6004`60B9`6002`600C`60FC`6004`60B9`6002`6002`60FD`6002`60B9`60FC`6002`60B9
V`60EE`6002`60B9`60F5`6002`60B9`60F5`6002`60B9`60F5
XV`6004`60B9`6002`6002`60F7`6004`60B9`6002`6012`60FE`6002`60B9`60EE`6002`60B9
V`60F5`6002`60B9`60F5`6004`60B9`6002`6001`60F5`6004
XV`60B9`6002`6002`60FE`6002`60B9`60FC`6002`60B9`60F4`6004`60B9`6002`6002`60FE
V`6004`60B9`6002`6001`60E2`6002`60B9`60F9`6002`60B9
XV`6000`6002`60B9`60F4`6004`60B9`6002`6007`60DE`6002`60B9`60F6`6004`60B9`6002
V`600B`6000`6002`60B9`60F4`6002`60B9`60E5`6002`60B9
XV`6000`6002`60B9`60FC`6002`60B9`60F1`6002`60B9`60EE`6002`60B9`60F5`6002`60B9
V`60F5`6002`60B9`60F6`6004`60B9`6002`6002`60FF`6002
XV`60B9`60FC`6002`60B9`60F4`6002`60B9`60EE`6002`60B9`60F5`6002`60B9`60F5`6004
V`60B9`6002`6002`60FF`6002`60B9`60FC`6002`60B9`60F1
XV`6002`60B9`60F6`6004`60B9`6002`6002`60FF`6002`60B9
XX`60FC`6002`60B9`60F4`6002`60B9`60F7`6004`60B9`6002`6001`6000`6002`60B9`60F7
V`6002`60B9`60F5`6002`60B9`60F5`6002`60B9`60F5`6002
XV`60B9`60F5`6002`60B9`60F2`6004`60B9`6002`6002`60F7`6006`60B9`6015`6000`6000
V`6000`6000`6009`60B9`6009`60BA`6001`6010`601D`6012
XV`6000`6000`6002`60B9`6000`6004`60B9`6002`600C`60FC`6004`60B9`6002`6002`60FF
V`6002`60B9`60FC`6002`60B9`60EE`6002`60B9`60F5`6002
XV`60B9`60F5`6002`60B9`60F5`6004`60B9`6002`6002`60F7`6004`60B9`6002`6012`60FF
V`6002`60B9`60EE`6002`60B9`60F5`6002`60B9`60F5`6004
XV`60B9`6002`6001`60F5`6004`60B9`6002`6002`60FF`6002`60B9`60FC`6002`60B9`60F4
V`6004`60B9`6002`6002`60FF`6004`60B9`6002`6001`60E2
XV`6002`60B9`60F9`6002`60B9`6000`6006`60B9`60158`6005`6000`6000`6006`60BF`6000
V`60B0`6000`6000`6000`6001`60BD`600E`60BC`6000`6007
XV`6000`6000`6000`6007L__MAINF`609B`6010`6001B`6000`6001`6000`6000`60AE`607C
V`60D6`6086h`6096`6000I`6000`6000`60008`6001
XV`6005.SB12:`605BSCRATCH.SNYDER.GNU.GCC-2_3_3`605DLIBGCC2.C;1`6000`600C`609B
V`6002`6001`6000`6003
XV`6001`6000`6000`6000`600A?`6006`6015`60BE`6000`60D0`6012`6000`6000`600Egcc2_c
Vompiled.`6006`60BF`6000`605E`6000`6000
XV`6000`6018`60BE`6000`60D0`6012`6000`6000`6011__do_global_dtors`6009`60B9`6009
V`60FF`6005`6010`60D0`6012`6000`6000`6002
XV`60B9`6000`6004`60B9`6002`6001`60FB`6004`60B9`6002`6011`60A8`6006`60BF`6000
V`605E`6000`6000`6000`6018`60BE`6000.`6013`6000`6000
XV`6011__do_global_ctors`6004`60B9`6002`6011`60FF`6002`60B9`60FB`6006`60B9`6002
V`6001`6001`6081`6000`6006`60BF`6000`6086
XV`6000`6000`6000`600D`60BE`6000`60B4`6013`6000`6000`6006__main`6004`60B9`6002
V`600D`6000`6004`60B9`6002`6001`60FB`6002`60B9
XV`6000`6004`60B9`6002`6001`60F8`6002`60B9`60F9`6004`60B9`6002`6001`60FB`6006
V`60B9`6015`601C`6000`6000`6000`6006`60BF`6000`601C
XV`6000`6000`6000`6001`60BD`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
V`6000`6000`6000`6000`6000`6000`6000`6000`6000`6000
XV`6000`6000`6000`6000`6000`6000`6000`6000`6000
X$`20call`20unpack`20MAZEFIND.EXE;1`20-
X`20982558271`20"FORMAT`20FIX;SIZE`20512;CARRIAGE_CONTROL`20NONE"
X$!
X$`20create`20'f'
XX.TH`6020MAZEWAR`60206
XX.SH`6020NAME
XXMazeWar`6020`605C-`6020distributed`6020rats`6020in`6020a`6020maze
XX.SH`6020SYNTAX
XX.B`6020/usr/games/mw
XX`605B
XX.I`6020
XXwindow`6020system`6020options
XX`605D
XX.SH`6020DESCRIPTION
XXThis`6020program`6020implements`6020the`6020age-old`6020game`6020of`6020MazeW
Var.
XXMazeWar`6020first`6020appeared`6020at`6020MIT`6020in`6020the`6020early`602019
V70s,`6020using`6020IM
XVLAC`6020displays`6020and
XXthe`6020ArpaNet`6020network.
XXLegend`6020has`6020it`6020that,`6020at`6020one`6020point`6020during`6020that
V`6020period,`6020MazeW
XVar`6020was`6020banned
XXby`6020DARPA`6020from`6020the`6020ArpaNet`6020because`6020half`6020of`6020all
V`6020the`6020packets
XV`6020in`6020a`6020given
XXmonth`6020were`6020MazeWar`6020packets`6020flying`6020between`6020Stanford
V`6020and`6020MIT.
XX.PP
XXMazeWar`6020appeared`6020again`6020at`6020the`6020Xerox`6020Palo`6020Alto`602
V0Research`6020Cente
XVr`6020in`6020the`6020late
XX1970's`6020on`6020the`6020Alto,`6020the`6020first`6020personal`6020computer.
XXThis`6020version`6020has`6020subsequently`6020been`6020ported`6020to`6020many
V
XXpersonal`6020machines,`6020and`6020forms`6020the`6020basis`6020for`6020this
V`6020Unix`6020version
XV.
XX.PP
XX.I`6020Mw
XXattempts`6020to`6020be`6020as`6020faithful`6020to`6020the`6020original`6020Al
Vto`6020version`6020as
XV`6020possible.`6020
XXThe`6020shape`6020and`6020pictures`6020of`6020the`6020maze`6020are`6020as`602
V0in`6020the`6020origina
XVl,`6020and`6020there`6020are
XXno`6020embellishments`6020such`6020as`6020teleport`6020traps`6020or`6020robot
V`6020amanuenses.
XX.SH`6020PLAY
XXYou,`6020the`6020player,`6020are`6020a`6020rat`6020in`6020a`6020maze,`6020and
V`6020the`6020objective
XV`6020is`6020to`6020
XXfind`6020your`6020opponents`6020and`6020shoot`6020them`6020before`6020they
V`6020shoot`6020you.
XX.PP
XXEach`6020of`6020the`6020(up`6020to`6020eight)`6020players`6020in`6020a`6020ga
Vme`6020may`6020be`6020on
XV`6020a`6020different`6020host.`6020
XXUpon`6020startup,`6020you`6020are`6020asked`6020for`6020the`6020name`6020by
V`6020which`6020you`6020wi
XVsh`6020to`6020be`6020known`6020for
XXthe`6020duration`6020of`6020the`6020game,`6020and`6020the`6020name`6020of`602
V0the`6020`6060`6060Duke
XV`6020host''.
XXIf`6020you`6020type`6020a`6020bare`6020carriage`6020return`6020to`6020this
V`6020query,`6020
XX.I`6020mw
XXwill`6020find`6020a`6020game`6020by`6020broadcasting`6020on`6020the`6020local
V`6020network,`6020and
XV`6020join`6020any`6020game
XXit`6020finds.`6020
XXIf`6020you`6020wish`6020to`6020join`6020a`6020specific`6020game,`6020or`6020a
V`6020game`6020on`6020anot
XVher`6020network,`6020or`6020your
XXnetwork`6020doesn't`6020support`6020broadcasting,
XXtype`6020in`6020the`6020name`6020of`6020one`6020of`6020the`6020hosts`6020invo
Vlved`6020in`6020that
XV`6020game.
XXThe`6020program
XX.I`6020mazefind
XXwill`6020aid`6020you`6020in`6020finding`6020out`6020what`6020games`6020are
V`6020currently`6020being
XV`6020played.
XX.PP
XXOnce`6020in`6020a`6020game,`6020you`6020are`6020presented`6020with`6020the
V`6020game`6020window.
XXThis`6020window`6020is`6020made`6020up`6020of`6020three`6020sections.
XXThe`6020upper`6020section`6020is`6020a`6020perspective`6020view`6020of`6020yo
Vur`6020view`6020forwa
XVrd.`6020
XXBy`6020pressing
XXthe`6020left`6020or`6020right`6020mouse`6020buttons,`6020you`6020may`6020peek
V`6020to`6020the`6020lef
XVt`6020or`6020right`6020around
XXcorners.
XX.PP
XXThe`6020middle`6020section`6020of`6020the`6020window`6020is`6020a`6020top`602
V0view`6020of`6020the
XV`6020maze,`6020showing`6020your
XXcurrent`6020position`6020and`6020heading`6020in`6020the`6020maze.`6020
XXYou`6020move`6020around`6020the`6020maze`6020by`6020using`6020the`6020followi
Vng`6020keys:
XX.sp
XX.ta`6020.6i
XX.nf
XXA`6009About`6020face;`6020flip`6020end`605C-for`605C-end
XXS`6009Turn`602090`6020degrees`6020left
XXD`6009Move`6020forward`6020one`6020cell
XXF`6009Turn`602090`6020degrees`6020right
XX<space>`6009Move`6020backward`6020one`6020cell
XXQ`6009Quit
XX.fi
XX.sp
XXFor`6020left`605C-handers,`6020there`6020are`6020equivalents`6020on`6020the
V`6020numeric`6020keyp
XVad.`6020
XXOn`6020the`6020DEC`6020LK201`6020keyboard,`6020the`6020`60604',`6020`60605',
V`6020`60606',`6020`6060,',
XV`6020and`6020right`6020cursor`6020arrow
XXkeys`6020perform`6020the`6020equivalent`6020operations.
XX.PP
XXThe`6020lower`6020section`6020of`6020the`6020window`6020shows`6020the`6020nam
Ves`6020and`6020scores
XV`6020of`6020the`6020other
XXplayers`6020in`6020the`6020game.
XXWhen`6020you`6020sight`6020another`6020rat,`6020that`6020rat's`6020score`6020
Vline`6020is`6020highl
XVighted.
XXShoot`6020by`6020pressing`6020the`6020middle`6020mouse`6020button.
XXWhen`6020you`6020are`6020shot`6020at,`6020the`6020mouse`6020cursor`6020change
Vs`6020from`6020a`6020ra
XVt`6020to`6020a`6020dead`6020rat,
XXand`6020you`6020have`6020one`6020second`6020to`6020move`6020out`6020of`6020th
Ve`6020way`6020of`6020the
XV`6020shot`6020or`6020shoot`6020back
XXor`6020both.
XXA`6020shot`6020costs`6020one`6020point;`6020getting`6020hit`6020costs`6020fiv
Ve`6020points;`6020hit
XVting`6020someone
XXadds`6020ten`6020points.
XXWhen`6020you`6020are`6020hit,`6020the`6020screen`6020flashes`6020and`6020you
V`6020are`6020transport
XVed`6020to`6020another
XXsection`6020of`6020the`6020maze.
XX.PP
XXIf`6020your`6020window`6020system`6020supports`6020it,`6020when`6020you`6020i
Vconify`6020the`6020ga
XVme`6020window,`6020it
XXwill`6020let`6020you`6020know`6020when`6020someone`6020joins`6020the`6020game
V`6020or`6020shoots
XV`6020at`6020you`6020(by
XXflashing,`6020in`6020most`6020cases).
XXThis`6020way,`6020you`6020can`6020be`6020notified`6020whenever`6020someone
V`6020else`6020is`6020int
XVerested`6020in
XXwasting`6020some`6020time,`6020by`6020always`6020leaving`6020a`6020game`6020a
Vround.
XX.SH`6020"SEE`6020ALSO"
XXmazefind(6)
XX.SH`6020AUTHOR
XXChristopher`6020A.`6020Kent
X$`20call`20unpack`20MAZEWAR.6;1`2033627330`20""
X$!
X$`20create`20'f'
XX/*`6020$Header:`6020mazewar.c,v`60201.13`602088/08/25`602009:57:53`6020kent
V`6020Exp`6020$`6020*/
XV
XX
XX/*`6020
XX`6020*`6020mazewar.c`6020-`6020Rats`6020in`6020a`6020maze
XX`6020*`6020
XX`6020*`6020Author:`6009Christopher`6020A.`6020Kent
XX`6020*`6020`6009`6009Western`6020Research`6020Laboratory
XX`6020*`6020`6009`6009Digital`6020Equipment`6020Corporation
XX`6020*`6020Date:`6009Wed`6020Sep`602024`60201986
XX`6020*/
XX
XX/***********************************************************
XXCopyright`60201986`6020by`6020Digital`6020Equipment`6020Corporation,`6020Mayn
Vard,`6020Massac
XVhusetts,
XX
XX`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020`6020
V`6020`6020`6020`6020`6020`6020`6020`6020`6020All
XV`6020Rights`6020Reserved
XX
XXPermission`6020to`6020use,`6020copy,`6020modify,`6020and`6020distribute`6020t
Vhis`6020software
XV`6020and`6020its`6020
XXdocumentation`6020for`6020any`6020purpose`6020and`6020without`6020fee`6020is
V`6020hereby`6020gran
XVted,`6020
XXprovided`6020that`6020the`6020above`6020copyright`6020notice`6020appear`6020i
Vn`6020all`6020copie
XVs`6020and`6020that
XXboth`6020that`6020copyright`6020notice`6020and`6020this`6020permission`6020no
Vtice`6020appear
XV`6020in`6020
XXsupporting`6020documentation,`6020and`6020that`6020the`6020names`6020of`6020D
Vigital`6020not
XV`6020be
XXused`6020in`6020advertising`6020or`6020publicity`6020pertaining`6020to`6020di
Vsstribution`6020o
XVf`6020the
XXsoftware`6020without`6020specific,`6020written`6020prior`6020permission.`6020
V`6020
XX
XXDIGITAL`6020DISCLAIMS`6020ALL`6020WARRANTIES`6020WITH`6020REGARD`6020TO`6020T
VHIS`6020SOFTWARE,
XV`6020INCLUDING
XXALL`6020IMPLIED`6020WARRANTIES`6020OF`6020MERCHANTABILITY`6020AND`6020FITNESS
V,`6020IN`6020NO
XV`6020EVENT`6020SHALL
XXDIGITAL`6020BE`6020LIABLE`6020FOR`6020ANY`6020SPECIAL,`6020INDIRECT`6020OR
V`6020CONSEQUENTIAL
XV`6020DAMAGES`6020OR
XXANY`6020DAMAGES`6020WHATSOEVER`6020RESULTING`6020FROM`6020LOSS`6020OF`6020USE
V,`6020DATA`6020OR
XV`6020PROFITS,
XXWHETHER`6020IN`6020AN`6020ACTION`6020OF`6020CONTRACT,`6020NEGLIGENCE`6020OR
V`6020OTHER`6020TORTIO
XVUS`6020ACTION,
XXARISING`6020OUT`6020OF`6020OR`6020IN`6020CONNECTION`6020WITH`6020THE`6020USE
V`6020OR`6020PERFORMANC
XVE`6020OF`6020THIS
XXSOFTWARE.
XX
XX******************************************************************/
XX
XX/*`6020
XX`6020*`6020This`6020is`6020an`6020adaptation`6020of`6020the`6020Mazewar`6020p
Vrogram`6020built`6020at
XV`6020Xerox`6020PARC`6020in
XX`6020*`6020Mesa`6020for`6020Altos`6020by`6020Jim`6020Guyton`6020and`6020other
Vs`6020in`6020the`6020late
XV`60201970s`6020and`6020beyond.
XX`6020*`6020Unlike`6020other`6020programs`6020that`6020have`6020appeared`6020f
Vrom`6020time`6020to
XV`6020time,`6020this
XX`6020*`6020one`6020attempts`6020to`6020remain`6020faithful`6020to`6020the`602
V0original`6020spirit
XV`6020of`6020the`6020game,
XX`6020*`6020with`6020no`6020fancy`6020additions`6020(like`6020seeing`6020your
V`6020opponents`6020or
XV`6020teleport
XX`6020*`6020traps).`6020I`6020hope`6020you`6020enjoy`6020it.
XX`6020*/
XX
XX/*
XX`6020*`6020$Log:`6009mazewar.c,v`6020$
XX`6020*`6020Revision`60201.13`6020`602088/08/25`6020`602009:57:53`6020`6020ken
Vt
XX`6020*`6020Copyright.
XX`6020*`6020
XX`6020*`6020Revision`60201.12`6020`602088/02/11`6020`602018:00:39`6020`6020ken
Vt
XX`6020*`6020Changes`6020so`6020the`6020value`6020of`6020M.theSocket`6020doesn'
Vt`6020change`6020(thi
XVs`6020makes`6020the
XX`6020*`6020window`6020system`6020code`6020simpler).
XX`6020*`6020
XX`6020*`6020Revision`60201.11`6020`602088/02/11`6020`602017:52:41`6020`6020ken
Vt
XX`6020*`6020Move`6020some`6020code`6020out`6020of`6020the`6020play`6020loop
V`6020so`6020it`6020can`6020be
XV`6020called`6020by`6020an`6020"external"`6020
XX`6020*`6020play`6020loop`6020(such`6020as`6020is`6020needed`6020for`6020the
V`6020X11`6020toolkit).
XX`6020*`6020
XX`6020*`6020Revision`60201.10`6020`602087/03/31`6020`602015:47:34`6020`6020ken
Vt
XX`6020*`6020Handle`6020duplicated`6020RAT_NEW`6020packets`6020while`6020joinin
Vg`6020the`6020game.
XV`6020If`6020the`6020
XX`6020*`6020guy`6020is`6020already`6020in`6020the`6020game,`6020just`6020send
V`6020him`6020a`6020status
XV`6020packet;`6020previously,
XX`6020*`6020he'd`6020get`6020added`6020to`6020the`6020game`6020again!
XX`6020*`6020
XX`6020*`6020Revision`60201.9`6020`602087/03/31`6020`602014:37:37`6020`6020kent
V
XX`6020*`6020Portability`6020considerations,`6020especially`6020byteswapping
V`6020to/from`6020t
XVhe`6020net.
XX`6020*`6020
XX`6020*`6020Revision`60201.8`6020`602086/12/04`6020`602017:44:53`6020`6020kent
V
XX`6020*`6020Notify`6020user`6020also`6020if`6020shot;`6020make`6020sure`6020no
Vn-dukes`6020get`6020not
XVified`6020on`6020game`6020joins.
XX`6020*`6020
XX`6020*`6020Revision`60201.7`6020`602086/12/03`6020`602018:13:10`6020`6020kent
V
XX`6020*`6020Cleaned`6020up`6020the`6020shot`6020handling`6020code`6020a`6020bi
Vt.`6020Was`6020waiting
XV`6020two`6020seconds
XX`6020*`6020instead`6020of`6020one,`6020and`6020would`6020only`6020handle`6020
Vone`6020shot`6020off
XV`6020the`6020queue
XX`6020*`6020every`6020time`6020around`6020the`6020loop,`6020instead`6020of`602
V0all`6020applicable.
XX`6020*`6020
XX`6020*`6020Also`6020cleaned`6020up`6020a`6020race`6020in`6020the`6020port`602
V0moving`6020code`6020for
XV`6020when`6020the`6020mover`6020and
XX`6020*`6020the`6020quitter`6020were`6020on`6020the`6020same`6020machine.
XX`6020*`6020
XX`6020*`6020Revision`60201.6`6020`602086/12/03`6020`602013:31:10`6020`6020kent
V
XX`6020*`6020
XX`6020*`6020
XX`6020*`6020Revision`60201.5`6020`602086/12/03`6020`602010:15:03`6020`6020kent
V
XX`6020*`6020Only`6020send`6020location`6020when`6020moving,`6020not`6020every
V`6020time`6020screen
XV`6020needs`6020updating.
XX`6020*`6020
XX`6020*`6020Revision`60201.4`6020`602086/12/03`6020`602010:00:19`6020`6020kent
V
XX`6020*`6020Changes`6020to`6020allow`6020multiple`6020players`6020per`6020mach
Vine.
XX`6020*`6020
XX`6020*`6020Revision`60201.3`6020`602086/12/01`6020`602023:44:42`6020`6020kent
V
XX`6020*`6020Housecleaning`6020and`6020documentation`6020pass.
XX`6020*`6020
XX`6020*`6020Revision`60201.2`6020`602086/12/01`6020`602014:47:04`6020`6020kent
V
XX`6020*`6020Changes`6020for`6020a`6020realistic`6020implementation`6020of`6020
Vshooting.
XX`6020*`6020
XX`6020*`6020Revision`60201.1`6020`602086/11/26`6020`602016:57:53`6020`6020kent
V
XX`6020*`6020Initial`6020revision
XX`6020*`6020
XX`6020*/
XX
XX#ifndef`6009lint
XXstatic`6020char`6020rcs_ident`605B`605D`6020=`6020"$Header:`6020mazewar.c,v
V`60201.13`602088/08/2
XV5`602009:57:53`6020kent`6020Exp`6020$";
XX#endif
XX
XX#include`6020<sys/types.h>
XX#include`6020<sys/socket.h>
XX#include`6020<sys/time.h>
XX
XX#include`6020<netinet/in.h>
XX
XX#include`6020<signal.h>
XX#include`6020<stdio.h>
XX#ifdef`6020VMS
XX#include`6020<string.h>
XX#else
XX#include`6020<strings.h>
XX#endif
XX
XX#include`6020"mazewar.h"
XX
XXstatic`6020int`6009`6009i1`6020=`60200;`6009`6009/*`6020random`6020number`602
V0hackery`6020*/
XXstatic`6020int`6009`6009i2`6020=`602024;
XX
XXstatic`6020Boolean`6009`6009updateView;`6009/*`6020true`6020if`6020update`602
V0needed`6020*/
XXstatic`6020Boolean`6009`6009sendLocation;`6009/*`6020true`6020if`6020must`602
V0send`6020out`6020loc
XVation`6020*/
XX
XXstatic`6020MazeTypePtr`6009mp`6020=`6020M.maze;`6009/*`6020easy`6020access
V`6020to`6020Maze`6020*/
XX
XXstatic`6020RatHealth`6009ratHealth;`6009/*`6020keep`6020track`6020of`6020othe
Vr`6020players`6020*
XV/
XX
XXstatic`6020ratDoctor`6020();
XX
XXmain(argc,`6020argv)
XXchar`6020**argv;
XX`607B
XX`6009int`6009quit();
XX
XX`6009signal(SIGHUP,`6020quit);
XX`6009signal(SIGINT,`6020quit);
XX`6009signal(SIGTERM,`6020quit);
XX`6009MazeInit(argc,`6020argv);
XX`6009play();
XX`607D
XX
XXplay()
XX`607B
XX`6009MWEvent`6009`6009event;
XX`6009RatPacket`6009incoming;
XX`6009Boolean`6009`6009KBEventPending();
XX
XX`6009event.eventDetail`6020=`6020`6026incoming;
XX
XX`6009while`6020(1)`6020`607B
XX`6009`6009NextEvent(`6026event);
XX`6009`6009if`6020(!M.peeking)
XX`6009`6009`6009switch(event.eventType)`6020`607B
XX`6009`6009`6009case`6020EVENT_A:
XX`6009`6009`6009`6009aboutFace();
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_S:
XX`6009`6009`6009`6009leftTurn();
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_D:
XX`6009`6009`6009`6009forward();
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_F:
XX`6009`6009`6009`6009rightTurn();
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_BAR:
XX`6009`6009`6009`6009backward();
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_I:
XX`6009`6009`6009`6009makeInvincible(TRUE);
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_K:
XX`6009`6009`6009`6009makeInvincible(FALSE);
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_O:
XX`6009`6009`6009`6009makeOmniscient(TRUE);
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_L:
XX`6009`6009`6009`6009makeOmniscient(FALSE);
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_LEFT_D:
XX`6009`6009`6009`6009peekLeft();
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_MIDDLE_D:
XX`6009`6009`6009`6009shoot();
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_RIGHT_D:
XX`6009`6009`6009`6009peekRight();
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_NETWORK:
XX`6009`6009`6009`6009readRats(`6026event);
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_INT:
XX`6009`6009`6009`6009quit();
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009`607D
XX`6009`6009else
XX`6009`6009`6009switch`6020(event.eventType)`6020`607B
XX`6009`6009`6009case`6020EVENT_RIGHT_U:
XX`6009`6009`6009case`6020EVENT_LEFT_U:
XX`6009`6009`6009`6009peekStop();
XX`6009`6009`6009`6009break;
XX
XX`6009`6009`6009case`6020EVENT_NETWORK:
XX`6009`6009`6009`6009readRats(`6026event);
XX`6009`6009`6009`6009break;
XX`6009`6009`6009`607D
XX`6009`6009`6009
XX`6009`6009ratDoctor();`6009`6009/*`6020clean`6020house`6020*/
XX
XX`6009`6009DoRatKillQ();
XX`6009`6009
XX`6009`6009DoViewUpdate();
XX`6009`6009
XX`6009`6009SendLocation();
XX`6009`607D
XX`607D
XX
XXstatic`6009Direction`6009_aboutFace`605BNDIRECTION`605D`6020=`607BSOUTH,`6020
VNORTH,`6020WEST,
XV`6020EAST`607D;
XXstatic`6009Direction`6009_leftTurn`605BNDIRECTION`605D`6020=`6009`607BWEST,
V`6020EAST,`6020NORTH,
XV`6020SOUTH`607D;
XXstatic`6009Direction`6009_rightTurn`605BNDIRECTION`605D`6020=`607BEAST,`6020W
VEST,`6020SOUTH,
XV`6020NORTH`607D;
XX
XXaboutFace()
XX`607B
XX`6009M.dir`6020=`6020_aboutFace`605BM.dir`605D;
XX`6009updateView`6020=`6020TRUE;
XX`6009sendLocation`6020=`6020TRUE;
XX`607D
XX
XXleftTurn()
XX`607B
XX`6009M.dir`6020=`6020_leftTurn`605BM.dir`605D;
XX`6009updateView`6020=`6020TRUE;
XX`6009sendLocation`6020=`6020TRUE;
XX`607D
XX
XXrightTurn()
XX`607B
XX`6009M.dir`6020=`6020_rightTurn`605BM.dir`605D;
XX`6009updateView`6020=`6020TRUE;
XX`6009sendLocation`6020=`6020TRUE;
XX`607D
XX
XX/*`6020remember`6020...`6020"North"`6020is`6020to`6020the`6020right`6020...
V`6020positive`6020X`6020m
XVotion`6020*/
XX
XXforward()
XX`607B
XX`6009register`6020int`6009tx`6020=`6020M.xloc;
XX`6009register`6020int`6009ty`6020=`6020M.yloc;
XX
XX`6009switch(M.dir)`6020`607B
XX`6009case`6020NORTH:`6009if`6020(!mp`605Btx+1`605D.y`605Bty`605D)`6009tx++;
V`6020break;
XX`6009case`6020SOUTH:`6009if`6020(!mp`605Btx-1`605D.y`605Bty`605D)`6009tx--;
V`6020break;
XX`6009case`6020EAST:`6009if`6020(!mp`605Btx`605D.y`605Bty+1`605D)`6009ty++;
V`6020break;
XX`6009case`6020WEST:`6009if`6020(!mp`605Btx`605D.y`605Bty-1`605D)`6009ty--;
V`6020break;
XX`6009default:
XX`6009`6009MWError("bad`6020direction`6020in`6020Forward");
XX`6009`607D
XX`6009if`6020((M.xloc`6020!=`6020tx)`6020`607C`607C`6020(M.yloc`6020!=`6020ty)
V)`6020`607B
XX`6009`6009M.xloc`6020=`6020tx;`6020M.yloc`6020=`6020ty;
XX`6009`6009updateView`6020=`6020TRUE;
XX`6009`6009sendLocation`6020=`6020TRUE;
XX`6009`607D
XX`607D
XX
XXbackward()
XX`607B
XX`6009register`6020int`6009tx`6020=`6020M.xloc;
XX`6009register`6020int`6009ty`6020=`6020M.yloc;
XX
XX`6009switch(M.dir)`6020`607B
XX`6009case`6020NORTH:`6009if`6020(!mp`605Btx-1`605D.y`605Bty`605D)`6009tx--;
V`6020break;
XX`6009case`6020SOUTH:`6009if`6020(!mp`605Btx+1`605D.y`605Bty`605D)`6009tx++;
V`6020break;
XX`6009case`6020EAST:`6009if`6020(!mp`605Btx`605D.y`605Bty-1`605D)`6009ty--;
V`6020break;
XX`6009case`6020WEST:`6009if`6020(!mp`605Btx`605D.y`605Bty+1`605D)`6009ty++;
V`6020break;
XX`6009default:
XX`6009`6009MWError("bad`6020direction`6020in`6020Backward");
XX`6009`607D
XX`6009if`6020((M.xloc`6020!=`6020tx)`6020`607C`607C`6020(M.yloc`6020!=`6020ty)
V)`6020`607B
XX`6009`6009M.xloc`6020=`6020tx;`6020M.yloc`6020=`6020ty;
XX`6009`6009updateView`6020=`6020TRUE;
XX`6009`6009sendLocation`6020=`6020TRUE;
XX`6009`607D
XX`607D
XX
XXmakeInvincible(neverDie)
XXBoolean`6020neverDie;
XX`607B
XX`6009M.invincible`6020=`6020neverDie;
XX`6009ShowPosition(M.xloc,`6020M.yloc,`6020M.invincible,`6020M.dir);
XX`607D
XX
XXmakeOmniscient(allSeeing)
XXBoolean`6020allSeeing;
XX`607B
XX`6009M.omniscient`6020=`6020allSeeing;
XX`6009ShowAllPositions();
XX`607D
XX
XXpeekLeft()
XX`607B
XX`6009M.xPeek`6020=`6020M.xloc;
XX`6009M.yPeek`6020=`6020M.yloc;
XX`6009M.dirPeek`6020=`6020M.dir;
XX
XX`6009switch(M.dir)`6020`607B
XX`6009case`6020NORTH:`6009if`6020(!mp`605BM.xloc+1`605D.y`605BM.yloc`605D)`602
V0`607B
XX`6009`6009`6009`6009M.xPeek`6020=`6020M.xloc`6020+`60201;
XX`6009`6009`6009`6009M.dirPeek`6020=`6020WEST;
XX`6009`6009`6009`607D
XX`6009`6009`6009break;
XX
XX`6009case`6020SOUTH:`6009if`6020(!mp`605BM.xloc-1`605D.y`605BM.yloc`605D)`602
V0`607B
XX`6009`6009`6009`6009M.xPeek`6020=`6020M.xloc`6020-`60201;
XX`6009`6009`6009`6009M.dirPeek`6020=`6020EAST;
XX`6009`6009`6009`607D
XX`6009`6009`6009break;
XX
XX`6009case`6020EAST:`6009if`6020(!mp`605BM.xloc`605D.y`605BM.yloc+1`605D)`6020
V`607B
XX`6009`6009`6009`6009M.yPeek`6020=`6020M.yloc`6020+`60201;
XX`6009`6009`6009`6009M.dirPeek`6020=`6020NORTH;
XX`6009`6009`6009`607D
XX`6009`6009`6009break;
XX
XX`6009case`6020WEST:`6009if`6020(!mp`605BM.xloc`605D.y`605BM.yloc-1`605D)`6020
V`607B
XX`6009`6009`6009`6009M.yPeek`6020=`6020M.yloc`6020-`60201;
XX`6009`6009`6009`6009M.dirPeek`6020=`6020SOUTH;
XX`6009`6009`6009`607D
XX`6009`6009`6009break;
XX
XX`6009default:
XX`6009`6009`6009MWError("bad`6020direction`6020in`6020PeekLeft");
XX`6009`607D
XX
XX`6009/*`6020if`6020any`6020change,`6020display`6020the`6020new`6020view`6020w
Vithout`6020moving!
XV`6020*/
XX
XX`6009if`6020((M.xPeek`6020!=`6020M.xloc)`6020`607C`607C`6020(M.yPeek`6020!=
V`6020M.yloc))`6020`607B
XX`6009`6009M.peeking`6020=`6020TRUE;
XX`6009`6009updateView`6020=`6020TRUE;
XX`6009`607D
XX`607D
XX
XXpeekRight()
XX`607B
XX`6009M.xPeek`6020=`6020M.xloc;
XX`6009M.yPeek`6020=`6020M.yloc;
XX`6009M.dirPeek`6020=`6020M.dir;
XX
XX`6009switch(M.dir)`6020`607B
XX`6009case`6020NORTH:`6009if`6020(!mp`605BM.xloc+1`605D.y`605BM.yloc`605D)`602
V0`607B
XX`6009`6009`6009`6009M.xPeek`6020=`6020M.xloc`6020+`60201;
XX`6009`6009`6009`6009M.dirPeek`6020=`6020EAST;
XX`6009`6009`6009`607D
XX`6009`6009`6009break;
XX
X+-+-+-+-+-+-+-+-`20`20END`20`20OF`20PART`204`20+-+-+-+-+-+-+-+-
$ call unpack [.MAZEWAR]MAZEWAR.4;1 872626429 ""
$!
$ create 'f'
X-+-+-+-+-+-+-+-+`20START`20OF`20PART`205`20-+-+-+-+-+-+-+-+
XX`6009case`6020SOUTH:`6009if`6020(!mp`605BM.xloc-1`605D.y`605BM.yloc`605D)`602
V0`607B
XX`6009`6009`6009`6009M.xPeek`6020=`6020M.xloc`6020-`60201;
XX`6009`6009`6009`6009M.dirPeek`6020=`6020WEST;
XX`6009`6009`6009`607D
XX`6009`6009`6009break;
XX
XX`6009case`6020EAST:`6009if`6020(!mp`605BM.xloc`605D.y`605BM.yloc+1`605D)`6020
V`607B
XX`6009`6009`6009`6009M.yPeek`6020=`6020M.yloc`6020+`60201;
XX`6009`6009`6009`6009M.dirPeek`6020=`6020SOUTH;
XX`6009`6009`6009`607D
XX`6009`6009`6009break;
XX
XX`6009case`6020WEST:`6009if`6020(!mp`605BM.xloc`605D.y`605BM.yloc-1`605D)`6020
V`607B
XX`6009`6009`6009`6009M.yPeek`6020=`6020M.yloc`6020-`60201;
XX`6009`6009`6009`6009M.dirPeek`6020=`6020NORTH;
XX`6009`6009`6009`607D
XX`6009`6009`6009break;
XX
XX`6009default:
XX`6009`6009`6009MWError("bad`6020direction`6020in`6020PeekRight");
XX`6009`607D
XX
XX`6009/*`6020if`6020any`6020change,`6020display`6020the`6020new`6020view`6020w
Vithout`6020moving!
XV`6020*/
XX
XX`6009if`6020((M.xPeek`6020!=`6020M.xloc)`6020`607C`607C`6020(M.yPeek`6020!=
V`6020M.yloc))`6020`607B
XX`6009`6009M.peeking`6020=`6020TRUE;
XX`6009`6009updateView`6020=`6020TRUE;
XX`6009`607D
XX`607D
XX
XXpeekStop()
XX`607B
XX`6009M.peeking`6020=`6020FALSE;
XX`6009updateView`6020=`6020TRUE;
XX`607D
XX
XXDoViewUpdate()
XX`607B
XX`6009if`6020(updateView)`6020`607B`6009/*`6020paint`6020the`6020screen`6020*/
V
XX`6009`6009ShowPosition(M.xloc,`6020M.yloc,`6020M.invincible,`6020M.dir);
XX`6009`6009if`6020(M.peeking)
XX`6009`6009`6009ShowView(M.xPeek,`6020M.yPeek,`6020M.dirPeek);
XX`6009`6009else
XX`6009`6009`6009ShowView(M.xloc,`6020M.yloc,`6020M.dir);
XX`6009`6009updateView`6020=`6020FALSE;
XX`6009`607D
XX`607D
XX
XXshoot()
XX`607B
XX`6009M.score--;
XX`6009M.ratcb.rats`605BM.myRatId`605D.score--;
XX`6009UpdateScoreCard(M.myRatId);
XX`6009sendKill();
XX`607D
XX
XX/*`6020
XX`6020*`6020add`6020the`6020shot`6020to`6020the`6020shot`6020queue.`6020It'll
V`6020be`6020processed
XV`6020later.
XX`6020*/
XX
XXholdBreath(ratKill)
XXRatKill`6009ratKill;
XX`607B
XX`6009RatKillQ_t`6009rkp;
XX`6009struct`6020timeval`6009now;
XX`6009
XX`6009DeadRatCursor();
XX`6009gettimeofday(`6026now,`6020NULL);
XX
XX`6009if`6020(RatKillQ`6020==`6020NULL)`6020`607B
XX`6009`6009RatKillQ`6020=`6020(RatKillQ_t)`6020malloc(sizeof(AqRatKillQ));
XX`6009`6009rkp`6020=`6020RatKillQ;
XX`6009`607D`6020else`6020`607B
XX`6009`6009for`6020(rkp`6020=`6020RatKillQ;`6020rkp->nextOne`6020!=`6020NULL;
V`6020rkp`6020=`6020rkp->
XVnextOne)
XX`6009`6009`6009;
XX`6009`6009rkp->nextOne`6020=`6020(RatKillQ_t)`6020malloc(sizeof(AqRatKillQ));
V
XX`6009`6009rkp`6020=`6020rkp->nextOne;
XX`6009`607D
XX
XX`6009bcopy((char`6020*)ratKill,`6020(char`6020*)`6026rkp->thisOne,`6020sizeof
V(AqRatKill));
XV
XX`6009rkp->nextOne`6020=`6020NULL;
XX`6009rkp->shotHits`6020=`6020now;
XX`6009rkp->shotHits.tv_sec++;
XX`607D
XX
XX/*`6020
XX`6020*`6020finally`6020see`6020if`6020the`6020shot`6020hit`6020home.
XX`6020*/
XX
XXhandleKill(tx,`6020ty,`6020td,`6020ratId)
XXLoc`6009tx,`6020ty;
XXDirection`6020td;
XXRatId`6009ratId;
XX`607B
XX`6009while`6020(!M.maze`605Btx`605D.y`605Bty`605D)`6020`607B
XX`6009`6009switch`6020(td)`6020`607B
XX`6009`6009case`6020NORTH:`6009tx++;`6020break;
XX`6009`6009case`6020SOUTH:`6009tx--;`6020break;
XX`6009`6009case`6020EAST:`6009ty++;`6020break;
XX`6009`6009case`6020WEST:`6009ty--;`6020break;
XX`6009`6009`607D
XX`6009`6009if`6020((M.xloc`6020==`6020tx)`6020`6026`6026`6020(M.yloc`6020==
V`6020ty))`6020`607B`6009/*`6020Oh
XV`6020oh...`6020*/
XX`6009`6009`6009sendDead(ratId);
XX`6009`6009`6009NewPosition();`6009/*`6020avoid`6020multiple`6020hits`6020*/
XX`6009`6009`6009FlashScreen();
XX`6009`6009`6009M.score`6020-=`60205;`6009/*`6020minus`60205`6020points`6020fo
Vr`6020getting`6020killed
XV`6020*/
XX`6009`6009`6009M.ratcb.rats`605BM.myRatId`605D.score`6020=`6020M.score;
XX`6009`6009`6009UpdateScoreCard(M.myRatId);
XX`6009`6009`6009NotifyPlayer();
XX`6009`6009`6009updateView`6020=`6020TRUE;
XX`6009`6009`6009sendLocation`6020=`6020TRUE;
XX`6009`6009`607D
XX`6009`607D
XX`6009RatCursor();
XX`607D
XX
XX/*
XX`6020*`6020Process`6020the`6020pending`6020shots,`6020if`6020any.
XX`6020*/
XX
XXDoRatKillQ()
XX`607B
XX`6009struct`6020timeval`6009now;
XX`6009RatKillQ_t`6009rkp`6020=`6020RatKillQ;
XX`6009RatKill`6009`6009ratKill;
XX
XX`6009if`6020(RatKillQ`6020!=`6020NULL)`6020`607B
XX`6009`6009gettimeofday(`6026now,`6020NULL);
XX`6009`6009while`6020(rkp`6020!=`6020NULL)`6020`607B
XX`6009`6009`6009if`6020(now.tv_sec`6020>=`6020rkp->shotHits.tv_sec)`6020`607B
XX`6009`6009`6009`6009if`6020(now.tv_usec`6020>=
XX`6009`6009`6009`6009`6020`6020`6020`6020rkp->shotHits.tv_usec)`6020`607B
XX`6009`6009`6009`6009`6009ratKill`6020=`6020`6026RatKillQ->thisOne;
XX`6009`6009`6009`6009`6009handleKill(ratKill->xLoc,
XX`6009`6009`6009`6009`6009`6009`6020`6020`6020ratKill->yLoc,
XX`6009`6009`6009`6009`6009`6009`6020`6020`6020ratKill->dir,
XX`6009`6009`6009`6009`6009`6009`6020`6020`6020ratKill->ratId);
XX`6009`6009`6009`6009`6009RatKillQ`6020=`6020RatKillQ->nextOne;
XX`6009`6009`6009`6009`6009free((char`6020*)`6020rkp);
XX`6009`6009`6009`6009`6009rkp`6020=`6020RatKillQ;
XX`6009`6009`6009`6009`607D`6020else
XX`6009`6009`6009`6009`6009break;
XX`6009`6009`6009`607D`6020else
XX`6009`6009`6009`6009break;
XX`6009`6009`607D
XX`6009`6009if`6020(RatKillQ`6020==`6020NULL)
XX`6009`6009`6009RatCursor();
XX`6009`607D
XX`607D
XX`6009`6009
XX/*`6020
XX`6020*`6020Convert`6020the`6020contents`6020of`6020a`6020packet`6020to`6020ne
Vtwork`6020order`6020bef
XVore`6020sending.
XX`6020*/
XX
XXConvertOutgoing(p)
XXRatPacket`6020*p;
XX`607B
XX`6009char`6009`6009buf`605B64`605D;
XX`6009RatId`6009`6009ratId;
XX`6009RatLocation`6009ratLoc;
XX`6009RatKill`6009`6009ratKill;
XX`6009RatDead`6009`6009ratDead;
XX`6009RatStatus`6009ratStatus;
XX`6009RatNew`6009`6009ratNew;
XX`6009RatGone`6009`6009ratGone;
XX`6009RatQuery`6009ratQuery;
XX`6009RatAlive`6009ratAlive;
XX`6009RatMove`6009`6009ratMove;
XX
XX`6009switch(p->type)`6020`607B
XX`6009case`6020RAT_LOCATION:
XX`6009`6009ratLoc`6020=`6020(RatLocation)`6020`6026p->body;
XX`6009`6009ratLoc->ratId`6020=`6020htonl(ratLoc->ratId);
XX`6009`6009ratLoc->xLoc`6020=`6020`6020htons(ratLoc->xLoc);
XX`6009`6009ratLoc->yLoc`6020=`6020`6020htons(ratLoc->yLoc);
XX`6009`6009ratLoc->dir`6020=`6020`6020`6020htons(ratLoc->dir);
XX`6009`6009ratLoc->score`6020=`6020htonl(ratLoc->score);
XX`6009`6009break;
XX
XX`6009case`6020RAT_KILL:
XX`6009`6009ratKill`6020=`6020(RatKill)`6020`6026p->body;
XX`6009`6009ratKill->ratId`6020=`6020htonl(ratKill->ratId);
XX`6009`6009ratKill->xLoc`6020`6020=`6020htons(ratKill->xLoc);
XX`6009`6009ratKill->yLoc`6020`6020=`6020htons(ratKill->yLoc);
XX`6009`6009ratKill->dir`6020`6020`6020=`6020htons(ratKill->dir);
XX`6009`6009break;
XX
XX`6009case`6020RAT_DEAD:
XX`6009`6009ratDead`6020=`6020(RatDead)`6020`6026p->body;
XX`6009`6009ratDead->ratId`6020=`6020htonl(ratDead->ratId);
XX`6009`6009ratDead->killedBy`6020=`6020htonl(ratDead->killedBy);
XX`6009`6009break;
XX
XX`6009case`6020RAT_STATUS:
XX`6009`6009ratStatus`6020=`6020(RatStatus)`6020`6026p->body;
XX`6009`6009ratStatus->dukeRat`6020=`6020htonl(ratStatus->dukeRat);
XX`6009`6009for`6020(ratId`6020=`60200;`6020ratId`6020<`6020MAXRATS;`6020ratId+
V+)`6020`607B
XX`6009`6009`6009RatInfo`6009ratInfo;
XX
XX`6009`6009`6009ratInfo`6020=`6020`6026ratStatus->rats`605BratId`605D;
XX`6009`6009`6009ratInfo->playing`6020=`6020htons(ratInfo->playing);
XX`6009`6009`6009ratInfo->xLoc`6020=`6020htons(ratInfo->xLoc);
XX`6009`6009`6009ratInfo->yLoc`6020=`6020htons(ratInfo->yLoc);
XX`6009`6009`6009ratInfo->dir`6020=`6020htons(ratInfo->dir);
XX`6009`6009`6009ratInfo->score`6020=`6020htonl(ratInfo->score);
XX`6009`6009`6009ratInfo->addr.sin_family`6020=
XX`6009`6009`6009`6009ntohs(ratInfo->addr.sin_family);
XX`6009`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009`607D
XX`6009`6009break;
XX
XX`6009case`6020RAT_NEW:
XX`6009`6009ratNew`6020=`6020(RatNew)`6020`6026p->body;
XX`6009`6009ratNew->pass`6020=`6020htons(ratNew->pass);
XX`6009`6009ratNew->xLoc`6020=`6020htons(ratNew->xLoc);
XX`6009`6009ratNew->yLoc`6020=`6020htons(ratNew->yLoc);
XX`6009`6009ratNew->dir`6020`6020=`6020htons(ratNew->dir);
XX`6009`6009ratNew->addr.sin_family`6020=
XX`6009`6009`6009htons(ratNew->addr.sin_family);
XX`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009break;
XX
XX`6009case`6020RAT_GOING:
XX`6009`6009ratGone`6020=`6020(RatGone)`6020`6026p->body;
XX`6009`6009ratGone->ratId`6020=`6020htonl(ratGone->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_QUERY:
XX`6009`6009ratQuery`6020=`6020(RatQuery)`6020`6026p->body;
XX`6009`6009ratQuery->ratId`6020=`6020htonl(ratQuery->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_ALIVE:
XX`6009`6009ratAlive`6020=`6020(RatAlive)`6020`6026p->body;
XX`6009`6009ratAlive->ratId`6020=`6020htonl(ratAlive->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_SURVEY:
XX`6009`6009ratNew`6020=`6020(RatNew)`6020`6026p->body;
XX`6009`6009ratNew->pass`6020=`6020htons(ratNew->pass);
XX`6009`6009ratNew->xLoc`6020=`6020htons(ratNew->xLoc);
XX`6009`6009ratNew->yLoc`6020=`6020htons(ratNew->yLoc);
XX`6009`6009ratNew->dir`6020`6020=`6020htons(ratNew->dir);
XX`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009break;
XX
XX`6009case`6020RAT_MOVE:
XX`6009`6009ratMove`6020=`6020(RatMove)`6020`6026p->body;
XX`6009`6009ratMove->ratId`6020=`6020htonl(ratMove->ratId);
XX`6009`6009break;
XX
XX`6009default:
XX`6009`6009sprintf(buf,`6020"ConvertOutgoing`6020bad`6020type`6020%d`6020(%d)"
V,
XX`6009`6009`6009p->type,`6020htons(p->type));
XX`6009`6009MWError(buf);
XX`6009`607D
XX`6009p->type`6020=`6020htonl(p->type);
XX`607D
XX
XX/*`6020
XX`6020*`6020Convert`6020the`6020contents`6020of`6020a`6020packet`6020to`6020ho
Vst`6020order`6020after
XV`6020ConvertIncoming.
XX`6020*/
XX
XXConvertIncoming(p)
XXRatPacket`6020*p;
XX`607B
XX`6009char`6009`6009buf`605B64`605D;
XX`6009RatId`6009`6009ratId;
XX`6009RatLocation`6009ratLoc;
XX`6009RatKill`6009`6009ratKill;
XX`6009RatDead`6009`6009ratDead;
XX`6009RatStatus`6009ratStatus;
XX`6009RatNew`6009`6009ratNew;
XX`6009RatGone`6009`6009ratGone;
XX`6009RatQuery`6009ratQuery;
XX`6009RatAlive`6009ratAlive;
XX`6009RatMove`6009`6009ratMove;
XX
XX`6009p->type`6020=`6020ntohl(p->type);
XX`6009switch(p->type)`6020`607B
XX`6009case`6020RAT_LOCATION:
XX`6009`6009ratLoc`6020=`6020(RatLocation)`6020`6026p->body;
XX`6009`6009ratLoc->ratId`6020=`6020ntohl(ratLoc->ratId);
XX`6009`6009ratLoc->xLoc`6020=`6020`6020ntohs(ratLoc->xLoc);
XX`6009`6009ratLoc->yLoc`6020=`6020`6020ntohs(ratLoc->yLoc);
XX`6009`6009ratLoc->dir`6020=`6020`6020`6020ntohs(ratLoc->dir);
XX`6009`6009ratLoc->score`6020=`6020ntohl(ratLoc->score);
XX`6009`6009break;
XX
XX`6009case`6020RAT_KILL:
XX`6009`6009ratKill`6020=`6020(RatKill)`6020`6026p->body;
XX`6009`6009ratKill->ratId`6020=`6020ntohl(ratKill->ratId);
XX`6009`6009ratKill->xLoc`6020`6020=`6020ntohs(ratKill->xLoc);
XX`6009`6009ratKill->yLoc`6020`6020=`6020ntohs(ratKill->yLoc);
XX`6009`6009ratKill->dir`6020`6020`6020=`6020ntohs(ratKill->dir);
XX`6009`6009break;
XX
XX`6009case`6020RAT_DEAD:
XX`6009`6009ratDead`6020=`6020(RatDead)`6020`6026p->body;
XX`6009`6009ratDead->ratId`6020=`6020ntohl(ratDead->ratId);
XX`6009`6009ratDead->killedBy`6020=`6020ntohl(ratDead->killedBy);
XX`6009`6009break;
XX
XX`6009case`6020RAT_STATUS:
XX`6009`6009ratStatus`6020=`6020(RatStatus)`6020`6026p->body;
XX`6009`6009ratStatus->dukeRat`6020=`6020ntohl(ratStatus->dukeRat);
XX`6009`6009for`6020(ratId`6020=`60200;`6020ratId`6020<`6020MAXRATS;`6020ratId+
V+)`6020`607B
XX`6009`6009`6009RatInfo`6009ratInfo;
XX
XX`6009`6009`6009ratInfo`6020=`6020`6026ratStatus->rats`605BratId`605D;
XX`6009`6009`6009ratInfo->playing`6020=`6020ntohs(ratInfo->playing);
XX`6009`6009`6009ratInfo->xLoc`6020=`6020ntohs(ratInfo->xLoc);
XX`6009`6009`6009ratInfo->yLoc`6020=`6020ntohs(ratInfo->yLoc);
XX`6009`6009`6009ratInfo->dir`6020=`6020ntohs(ratInfo->dir);
XX`6009`6009`6009ratInfo->score`6020=`6020ntohl(ratInfo->score);
XX`6009`6009`6009ratInfo->addr.sin_family`6020=
XX`6009`6009`6009`6009ntohs(ratInfo->addr.sin_family);
XX`6009`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009`607D
XX`6009`6009break;
XX
XX`6009case`6020RAT_NEW:
XX`6009`6009ratNew`6020=`6020(RatNew)`6020`6026p->body;
XX`6009`6009ratNew->pass`6020=`6020ntohs(ratNew->pass);
XX`6009`6009ratNew->xLoc`6020=`6020ntohs(ratNew->xLoc);
XX`6009`6009ratNew->yLoc`6020=`6020ntohs(ratNew->yLoc);
XX`6009`6009ratNew->dir`6020`6020=`6020ntohs(ratNew->dir);
XX`6009`6009ratNew->addr.sin_family`6020=
XX`6009`6009`6009ntohs(ratNew->addr.sin_family);
XX`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009break;
XX
XX`6009case`6020RAT_GOING:
XX`6009`6009ratGone`6020=`6020(RatGone)`6020`6026p->body;
XX`6009`6009ratGone->ratId`6020=`6020ntohl(ratGone->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_QUERY:
XX`6009`6009ratQuery`6020=`6020(RatQuery)`6020`6026p->body;
XX`6009`6009ratQuery->ratId`6020=`6020ntohl(ratQuery->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_ALIVE:
XX`6009`6009ratAlive`6020=`6020(RatAlive)`6020`6026p->body;
XX`6009`6009ratAlive->ratId`6020=`6020ntohl(ratAlive->ratId);
XX`6009`6009break;
XX
XX`6009case`6020RAT_SURVEY:
XX`6009`6009ratNew`6020=`6020(RatNew)`6020`6026p->body;
XX`6009`6009ratNew->pass`6020=`6020ntohs(ratNew->pass);
XX`6009`6009ratNew->xLoc`6020=`6020ntohs(ratNew->xLoc);
XX`6009`6009ratNew->yLoc`6020=`6020ntohs(ratNew->yLoc);
XX`6009`6009ratNew->dir`6020`6020=`6020ntohs(ratNew->dir);
XX`6009`6009/*`6020don't`6020touch`6020address`6020or`6020name`6020*/
XX`6009`6009break;
XX
XX`6009case`6020RAT_MOVE:
XX`6009`6009ratMove`6020=`6020(RatMove)`6020`6026p->body;
XX`6009`6009ratMove->ratId`6020=`6020ntohl(ratMove->ratId);
XX`6009`6009break;
XX
XX`6009default:
XX`6009`6009sprintf(buf,`6020"ConvertIncoming`6020bad`6020type`6020%d`6020(%d)"
V,
XX`6009`6009`6009p->type,`6020ntohs(p->type));
XX`6009`6009MWError(buf);
XX`6009`607D
XX`607D
XX
XX#ifdef`6009PACKET_TRACE
XXstatic`6020char`6009*packTypes`605B`605D`6020=`6020`607B
XX`6009"RAT_LOCATION",
XX`6009"RAT_KILL",
XX`6009"RAT_DEAD",
XX`6009"RAT_STATUS",
XX`6009"RAT_NEW",
XX`6009"RAT_GOING",
XX`6009"RAT_QUERY",
XX`6009"RAT_ALIVE",
XX`6009"RAT_SURVEY",
XX`6009"RAT_MOVE",
XX`60090
XX`607D;
XX#endif`6009PACKET_TRACE
XX
XXreadRats(evp)
XXMWEvent`6020*evp;
XX`607B
XX`6009register`6020RatLocation`6009ratLoc;
XX`6009register`6020RatLook`6009ratLook;
XX`6009register`6020RatAlive`6009ratAlive;
XX`6009RatPacket`6009*pack`6020=`6020evp->eventDetail;
XX`6009RatInfo`6009`6009ratInfo;
XX`6009Boolean`6009`6009oldVisible;
XX`6009RatId`6009`6009ratId;
XX`6009RatStatus`6009status;
XX`6009RatNew`6009`6009ratNew;
XX`6009RatGone`6009`6009ratGone;
XX`6009RatKill`6009`6009ratKill;
XX`6009RatDead`6009`6009ratDead;
XX`6009RatQuery`6009ratQuery;
XX`6009RatMove`6009`6009ratMove;
XX`6009Sockaddr`6009nullAddr;
XX`6009char`6009`6009buf`605B32`605D;
XX`6009int`6009`6009newSocket;
XX
XX#ifdef`6009PACKET_TRACE
XX`6009printf("received`6020%s`6020(%d)`605Cn",
XX`6009`6009packTypes`605Bpack->type`6020-`60201`605D,`6020pack->type);
XX#endif`6009PACKET_TRACE
XX
XX`6009switch(pack->type)`6020`607B
XX`6009case`6020RAT_LOCATION:`6009`6009/*`6020someone`6020moved`6020*/
XX`6009`6009ratLoc`6020=`6020(RatLocation)`6020`6026pack->body;
XX`6009`6009ratLook`6020=`6020`6026R2d2`605BratLoc->ratId`605D;
XX`6009`6009if`6020((oldVisible`6020=`6020ratLook->visible)`6020==`6020TRUE)
XX`6009`6009`6009XORToken(ratLoc->ratId);
XX`6009`6009ratInfo`6020=`6020`6026M.ratcb.rats`605BratLoc->ratId`605D;
XX`6009`6009ratInfo->xLoc`6020=`6020ratLoc->xLoc;
XX`6009`6009ratInfo->yLoc`6020=`6020ratLoc->yLoc;
XX`6009`6009ratInfo->dir`6020`6020=`6020ratLoc->dir;
XX`6009`6009DisplayOthersPosition(ratLoc->ratId,`6020ratLoc->xLoc,
XX`6009`6009`6009`6009`6020`6020`6020`6020`6020`6020ratLoc->yLoc,`6020ratLoc->d
Vir);
XX`6009`6009TokenVisible(ratLoc->ratId);
XX`6009`6009if`6020(ratLook->visible`6020==`6020TRUE)
+-+-+-+-+-+-+-+- END OF PART 3 +-+-+-+-+-+-+-+-