home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!news.tek.com!master!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v16i085: nethack31 - display oriented dungeons & dragons (Ver. 3.1), Part77/108
- Message-ID: <4448@master.CNA.TEK.COM>
- Date: 5 Feb 93 19:20:08 GMT
- Sender: news@master.CNA.TEK.COM
- Lines: 1730
- Approved: billr@saab.CNA.TEK.COM
- Xref: uunet comp.sources.games:1636
-
- Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
- Posting-number: Volume 16, Issue 85
- Archive-name: nethack31/Part77
- Supersedes: nethack3p9: Volume 10, Issue 46-102
- Environment: Amiga, Atari, Mac, MS-DOS, OS2, Unix, VMS, X11
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 77 (of 108)."
- # Contents: src/sp_lev.c1 sys/amiga/wbwin.uu
- # Wrapped by billr@saab on Wed Jan 27 16:09:17 1993
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'src/sp_lev.c1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/sp_lev.c1'\"
- else
- echo shar: Extracting \"'src/sp_lev.c1'\" \(26410 characters\)
- sed "s/^X//" >'src/sp_lev.c1' <<'END_OF_FILE'
- X/* SCCS Id: @(#)sp_lev.c 3.1 92/11/14 */
- X/* Copyright (c) 1989 by Jean-Christophe Collet */
- X/* NetHack may be freely redistributed. See license for details. */
- X
- X/*
- X * This file contains the various functions that are related to the special
- X * levels.
- X * It contains also the special level loader.
- X *
- X */
- X
- X#include "hack.h"
- X/*#define DEBUG /* uncomment to enable code debugging */
- X
- X#ifdef DEBUG
- X# ifdef WIZARD
- X#define debugpline if (wizard) pline
- X# else
- X#define debugpline pline
- X# endif
- X#endif
- X
- X#include "sp_lev.h"
- X#include "rect.h"
- X
- Xextern void FDECL(mkmap, (lev_init *));
- X
- Xstatic void FDECL(get_room_loc, (schar *, schar *, struct mkroom *));
- Xstatic void FDECL(get_free_room_loc, (schar *, schar *, struct mkroom *));
- Xstatic void FDECL(create_trap, (trap *, struct mkroom *));
- Xstatic void FDECL(create_monster, (monster *, struct mkroom *));
- Xstatic void FDECL(create_object, (object *, struct mkroom *));
- Xstatic void FDECL(create_stairs, (stair *, struct mkroom *));
- Xstatic void FDECL(create_altar, (altar *, struct mkroom *));
- Xstatic void FDECL(create_gold, (gold *, struct mkroom *));
- Xstatic void FDECL(create_feature, (int,int,struct mkroom *,int));
- Xstatic boolean FDECL(search_door, (struct mkroom *, xchar *, xchar *,
- X XCHAR_P, int));
- Xstatic void NDECL(fix_stair_rooms);
- Xstatic void FDECL(create_corridor, (corridor *));
- X
- Xstatic boolean FDECL(create_subroom, (struct mkroom *, XCHAR_P, XCHAR_P,
- X XCHAR_P, XCHAR_P, XCHAR_P, XCHAR_P));
- X
- X#if defined(MICRO) && !defined(AMIGA)
- X# define RDMODE "rb"
- X#else
- X# define RDMODE "r"
- X#endif
- X
- X#define LEFT 1
- X#define H_LEFT 2
- X#define CENTER 3
- X#define H_RIGHT 4
- X#define RIGHT 5
- X
- X#define TOP 1
- X#define BOTTOM 5
- X
- X#define sq(x) ((x)*(x))
- X
- X#define XLIM 4
- X#define YLIM 3
- X
- X#define Fread (void)fread
- X#define New(type) (type *) alloc(sizeof(type))
- X#define NewTab(type, size) (type **) alloc(sizeof(type *) * size)
- X#define Free(ptr) if(ptr) free((genericptr_t) (ptr))
- X
- Xstatic walk NEARDATA walklist[50];
- Xextern int min_rx, max_rx, min_ry, max_ry; /* from mkmap.c */
- X
- Xstatic char Map[COLNO][ROWNO];
- Xstatic char robjects[10], rloc_x[10], rloc_y[10], rmonst[10];
- Xstatic aligntyp ralign[3] = { AM_CHAOTIC, AM_NEUTRAL, AM_LAWFUL };
- Xstatic xchar NEARDATA xstart, NEARDATA ystart;
- Xstatic char NEARDATA xsize, NEARDATA ysize;
- X
- Xstatic void FDECL(make_walls_nondiggable, (XCHAR_P,XCHAR_P,XCHAR_P,XCHAR_P));
- Xstatic int NDECL(rnddoor);
- Xstatic int NDECL(rndtrap);
- Xstatic void FDECL(get_location, (schar *,schar *,int));
- Xstatic void FDECL(sp_lev_shuffle, (char *,char *,int));
- Xstatic void FDECL(light_region, (region *));
- Xstatic void FDECL(load_common_data, (FILE *,int));
- Xstatic boolean FDECL(load_rooms, (FILE *));
- Xstatic void FDECL(maze1xy, (coord *));
- Xstatic boolean FDECL(load_maze, (FILE *));
- Xstatic void FDECL(create_door, (room_door *, struct mkroom *));
- Xstatic void FDECL(free_rooms,(room **, int));
- Xstatic void FDECL(build_room, (room *, room*));
- X
- Xchar *lev_message = 0;
- Xlev_region *lregions = 0;
- Xint num_lregions = 0;
- Xlev_init init_lev;
- X
- X/*
- X * Make walls of the area (x1, y1, x2, y2) non diggable
- X */
- X
- Xstatic void
- Xmake_walls_nondiggable(x1,y1,x2,y2)
- Xxchar x1, y1, x2, y2;
- X{
- X register xchar x, y;
- X
- X for(y = y1; y <= y2; y++)
- X for(x = x1; x <= x2; x++)
- X if(IS_STWALL(levl[x][y].typ))
- X levl[x][y].diggable |= W_NONDIGGABLE;
- X}
- X
- X/*
- X * Choose randomly the state (nodoor, open, closed or locked) for a door
- X */
- X
- Xstatic int
- Xrnddoor()
- X{
- X int i;
- X
- X i = 1 << rn2(5);
- X i >>= 1;
- X return i;
- X}
- X
- X/*
- X * Select a random trap
- X */
- X
- Xstatic int
- Xrndtrap()
- X{
- X int rtrap, no_tdoor = !Can_dig_down(&u.uz);
- X do {
- X rtrap = rnd(TRAPNUM-1);
- X } while (rtrap == MAGIC_PORTAL || (no_tdoor && rtrap == TRAPDOOR));
- X return(rtrap);
- X}
- X
- X/*
- X * Coordinates in special level files are handled specially:
- X *
- X * if x or y is -11, we generate a random coordinate.
- X * if x or y is between -1 and -10, we read one from the corresponding
- X * register (x0, x1, ... x9).
- X * if x or y is nonnegative, we convert it from relative to the local map
- X * to global coordinates.
- X * The "humidity" flag is used to insure that engravings aren't
- X * created underwater, or eels on dry land.
- X */
- X#define DRY 0x1
- X#define WET 0x2
- X
- Xstatic boolean FDECL(is_ok_location, (SCHAR_P, SCHAR_P, int));
- X
- Xstatic void
- Xget_location(x, y, humidity)
- Xschar *x, *y;
- Xint humidity;
- X{
- X int cpt = 0;
- X
- X if (*x >= 0) { /* normal locations */
- X *x += xstart;
- X *y += ystart;
- X } else if (*x > -11) { /* special locations */
- X *y = ystart + rloc_y[ - *y - 1];
- X *x = xstart + rloc_x[ - *x - 1];
- X } else { /* random location */
- X do {
- X *x = xstart + rn2((int)xsize);
- X *y = ystart + rn2((int)ysize);
- X if (is_ok_location(*x,*y,humidity)) break;
- X } while (++cpt < 100);
- X if (cpt >= 100) {
- X register int xx, yy;
- X /* last try */
- X for (xx = 0; xx < xsize; xx++)
- X for (yy = 0; yy < ysize; yy++) {
- X *x = xstart + xx;
- X *y = ystart + yy;
- X if (is_ok_location(*x,*y,humidity)) goto found_it;
- X }
- X panic("get_location: can't find a place!");
- X }
- X }
- Xfound_it:;
- X
- X if (*x <= 0 || *x >= COLNO || *y < 0 || *y >= ROWNO) {
- X impossible("get_location: (%d,%d) out of bounds", *x, *y);
- X *x = x_maze_max; *y = y_maze_max;
- X }
- X}
- X
- Xstatic boolean
- Xis_ok_location(x, y, humidity)
- Xregister schar x, y;
- Xregister int humidity;
- X{
- X register int typ;
- X register boolean okplace = FALSE;
- X
- X if (humidity & DRY) {
- X typ = levl[x][y].typ;
- X okplace = (typ == ROOM || typ == AIR ||
- X typ == CLOUD || typ == CORR);
- X }
- X if (humidity & WET) {
- X if (is_pool(x,y) || is_lava(x,y))
- X okplace = TRUE;
- X }
- X return okplace;
- X}
- X
- X/*
- X * Shuffle the registers for locations, objects or monsters
- X */
- X
- Xstatic void
- Xsp_lev_shuffle(list1, list2, n)
- Xchar list1[], list2[];
- Xint n;
- X{
- X register int i, j;
- X register char k;
- X
- X for (i = n - 1; i > 0; i--) {
- X if ((j = rn2(i + 1)) == i) continue;
- X k = list1[j];
- X list1[j] = list1[i];
- X list1[i] = k;
- X if (list2) {
- X k = list2[j];
- X list2[j] = list2[i];
- X list2[i] = k;
- X }
- X }
- X}
- X
- X/*
- X * Get a relative position inside a room.
- X * negative values for x or y means RANDOM!
- X */
- X
- Xstatic void
- Xget_room_loc(x,y, croom)
- Xschar *x, *y;
- Xstruct mkroom *croom;
- X{
- X coord c;
- X
- X if (*x <0 && *y <0) {
- X if (somexy(croom, &c)) {
- X *x = c.x;
- X *y = c.y;
- X } else
- X panic("get_room_loc : can't find a place!");
- X } else {
- X if (*x < 0)
- X *x = rn2(croom->hx - croom->lx + 1);
- X if (*y < 0)
- X *y = rn2(croom->hy - croom->ly + 1);
- X *x += croom->lx;
- X *y += croom->ly;
- X }
- X}
- X
- X/*
- X * Get a relative position inside a room.
- X * negative values for x or y means RANDOM!
- X */
- X
- Xstatic void
- Xget_free_room_loc(x,y, croom)
- Xschar *x, *y;
- Xstruct mkroom *croom;
- X{
- X schar try_x, try_y;
- X register int trycnt = 0;
- X
- X do {
- X try_x = *x, try_y = *y;
- X get_room_loc(&try_x, &try_y, croom);
- X } while (levl[try_x][try_y].typ != ROOM && ++trycnt <= 100);
- X
- X if (trycnt > 100)
- X panic("get_free_room_loc: can't find a place!");
- X *x = try_x, *y = try_y;
- X}
- X
- Xboolean
- Xcheck_room(lowx, ddx, lowy, ddy, vault)
- Xxchar *lowx, *ddx, *lowy, *ddy;
- Xboolean vault;
- X{
- X register int x,y,hix = *lowx + *ddx, hiy = *lowy + *ddy;
- X register struct rm *lev;
- X int xlim, ylim, ymax;
- X
- X xlim = XLIM + (vault ? 1 : 0);
- X ylim = YLIM + (vault ? 1 : 0);
- X
- X if (*lowx < 3) *lowx = 3;
- X if (*lowy < 2) *lowy = 2;
- X if (hix > COLNO-3) hix = COLNO-3;
- X if (hiy > ROWNO-3) hiy = ROWNO-3;
- Xchk:
- X if (hix <= *lowx || hiy <= *lowy) return FALSE;
- X
- X /* check area around room (and make room smaller if necessary) */
- X for (x = *lowx - xlim; x<= hix + xlim; x++) {
- X if(x <= 0 || x >= COLNO) continue;
- X y = *lowy - ylim; ymax = hiy + ylim;
- X if(y < 0) y = 0;
- X if(ymax >= ROWNO) ymax = (ROWNO-1);
- X lev = &levl[x][y];
- X for (; y <= ymax; y++) {
- X if (lev++->typ) {
- X#ifdef DEBUG
- X if(!vault)
- X debugpline("strange area [%d,%d] in check_room.",x,y);
- X#endif
- X if (!rn2(3)) return FALSE;
- X if (x < *lowx)
- X *lowx = x + xlim + 1;
- X else
- X hix = x - xlim - 1;
- X if (y < *lowy)
- X *lowy = y + ylim + 1;
- X else
- X hiy = y - ylim - 1;
- X goto chk;
- X }
- X }
- X }
- X *ddx = hix - *lowx;
- X *ddy = hiy - *lowy;
- X return TRUE;
- X}
- X
- X/*
- X * Create a new room.
- X * This is still very incomplete...
- X */
- X
- Xboolean
- Xcreate_room(x,y,w,h,xal,yal,rtype,rlit)
- Xxchar x,y;
- Xxchar w,h;
- Xxchar xal,yal;
- Xxchar rtype, rlit;
- X{
- X xchar xabs, yabs;
- X int wtmp, htmp, xaltmp, yaltmp, xtmp, ytmp;
- X NhRect *r1 = 0, r2;
- X int trycnt = 0;
- X boolean vault = FALSE;
- X int xlim = XLIM, ylim = YLIM;
- X
- X if (rtype == -1) /* Is the type random ? */
- X rtype = OROOM;
- X
- X if (rtype == VAULT) {
- X vault = TRUE;
- X xlim++;
- X ylim++;
- X }
- X
- X /* on low levels the room is lit (usually) */
- X /* some other rooms may require lighting */
- X
- X /* is light state random ? */
- X if (rlit == -1)
- X rlit = (rnd(1+abs(depth(&u.uz))) < 11 && rn2(77)) ? TRUE : FALSE;
- X
- X /*
- X * Here we will try to create a room. If some parameters are
- X * random we are willing to make several try before we give
- X * it up.
- X */
- X do {
- X xchar xborder, yborder;
- X wtmp = w; htmp = h;
- X xtmp = x; ytmp = y;
- X xaltmp = xal; yaltmp = yal;
- X
- X /* First case : a totaly random room */
- X
- X if((xtmp < 0 && ytmp <0 && wtmp < 0 && xaltmp < 0 &&
- X yaltmp < 0) || vault) {
- X xchar hx, hy, lx, ly, dx, dy;
- X r1 = rnd_rect(); /* Get a random rectangle */
- X
- X if (!r1) { /* No more free rectangles ! */
- X#ifdef DEBUG
- X debugpline("No more rects...");
- X#endif
- X return FALSE;
- X }
- X hx = r1->hx;
- X hy = r1->hy;
- X lx = r1->lx;
- X ly = r1->ly;
- X if (vault)
- X dx = dy = 1;
- X else {
- X dx = 2 + rn2((hx-lx > 28) ? 12 : 8);
- X dy = 2 + rn2(4);
- X if(dx*dy > 50)
- X dy = 50/dx;
- X }
- X xborder = (lx > 0 && hx < COLNO -1) ? 2*xlim : xlim+1;
- X yborder = (ly > 0 && hy < ROWNO -1) ? 2*ylim : ylim+1;
- X if(hx-lx < dx + 3 + xborder ||
- X hy-ly < dy + 3 + yborder) {
- X r1 = 0;
- X continue;
- X }
- X xabs = lx + (lx > 0 ? xlim : 3)
- X + rn2(hx - (lx>0?lx : 3) - dx - xborder + 1);
- X yabs = ly + (ly > 0 ? ylim : 2)
- X + rn2(hy - (ly>0?ly : 2) - dy - yborder + 1);
- X if (ly == 0 && hy >= (ROWNO-1) &&
- X (!nroom || !rn2(nroom)) && (yabs+dy > ROWNO/2)) {
- X yabs = rn1(3, 2);
- X if(nroom < 4 && dy>1) dy--;
- X }
- X if (!check_room(&xabs, &dx, &yabs, &dy, vault)) {
- X r1 = 0;
- X continue;
- X }
- X wtmp = dx+1;
- X htmp = dy+1;
- X r2.lx = xabs-1; r2.ly = yabs-1;
- X r2.hx = xabs + wtmp;
- X r2.hy = yabs + htmp;
- X } else { /* Only some parameters are random */
- X int rndpos = 0;
- X if (xtmp < 0 && ytmp < 0) { /* Position is RANDOM */
- X xtmp = rnd(5);
- X ytmp = rnd(5);
- X rndpos = 1;
- X }
- X if (wtmp < 0 || htmp < 0) { /* Size is RANDOM */
- X wtmp = rn1(15, 3);
- X htmp = rn1(8, 2);
- X }
- X if (xaltmp == -1) /* Horizontal alignment is RANDOM */
- X xaltmp = rnd(3);
- X if (yaltmp == -1) /* Vertical alignment is RANDOM */
- X yaltmp = rnd(3);
- X
- X /* Try to generate real (absolute) coordinates here! */
- X
- X xabs = (((xtmp-1) * COLNO) / 5) + 1;
- X yabs = (((ytmp-1) * ROWNO) / 5) + 1;
- X switch (xaltmp) {
- X case LEFT:
- X break;
- X case RIGHT:
- X xabs += (COLNO / 5) - wtmp;
- X break;
- X case CENTER:
- X xabs += ((COLNO / 5) - wtmp) / 2;
- X break;
- X }
- X switch (yaltmp) {
- X case TOP:
- X break;
- X case BOTTOM:
- X yabs += (ROWNO / 5) - htmp;
- X break;
- X case CENTER:
- X yabs += ((ROWNO / 5) - htmp) / 2;
- X break;
- X }
- X
- X if (xabs + wtmp - 1 > COLNO - 2)
- X xabs = COLNO - wtmp - 3;
- X
- X if (xabs < 2)
- X xabs = 2;
- X
- X if (yabs + htmp - 1> ROWNO - 2)
- X yabs = ROWNO - htmp - 3;
- X
- X if (yabs < 2)
- X yabs = 2;
- X /* Try to find a rectangle that fit our room ! */
- X
- X r2.lx = xabs-1; r2.ly = yabs-1;
- X r2.hx = xabs + wtmp + rndpos;
- X r2.hy = yabs + htmp + rndpos;
- X r1 = get_rect(&r2);
- X }
- X } while (++trycnt <= 100 && !r1);
- X if (!r1) { /* creation of room failed ? */
- X return FALSE;
- X }
- X split_rects(r1, &r2);
- X
- X if (!vault) {
- X smeq[nroom] = nroom;
- X add_room(xabs, yabs, xabs+wtmp-1, yabs+htmp-1,
- X rlit, rtype, FALSE);
- X } else {
- X rooms[nroom].lx = xabs;
- X rooms[nroom].ly = yabs;
- X }
- X return TRUE;
- X}
- X
- X/*
- X * Create a subroom in room proom at pos x,y with width w & height h.
- X * x & y are relative to the parent room.
- X */
- X
- Xstatic boolean
- Xcreate_subroom(proom, x, y, w, h, rtype, rlit)
- Xstruct mkroom *proom;
- Xxchar x,y;
- Xxchar w,h;
- Xxchar rtype, rlit;
- X{
- X xchar width, height;
- X
- X width = proom->hx - proom->lx + 1;
- X height = proom->hy - proom->ly + 1;
- X
- X /* There is a minimum size for the parent room */
- X if (width < 4 || height < 4)
- X return FALSE;
- X
- X /* Check for random position, size, etc... */
- X
- X if (w == -1)
- X w = rnd(width - 3);
- X if (h == -1)
- X h = rnd(height - 3);
- X if (x == -1)
- X x = rnd(width - w - 1) - 1;
- X if (y == -1)
- X y = rnd(height - h - 1) - 1;
- X if (x == 1)
- X x = 0;
- X if (y == 1)
- X y = 0;
- X if ((x + w + 1) == width)
- X x++;
- X if ((y + h + 1) == height)
- X y++;
- X if (rtype == -1)
- X rtype = OROOM;
- X if (rlit == -1)
- X rlit = (rnd(1+abs(depth(&u.uz))) < 11 && rn2(77)) ? TRUE : FALSE;
- X add_subroom(proom, proom->lx + x, proom->ly + y,
- X proom->lx + x + w - 1, proom->ly + y + h - 1,
- X rlit, rtype, FALSE);
- X return TRUE;
- X}
- X
- X/*
- X * Create a new door in a room.
- X * It's placed on a wall (north, south, east or west).
- X */
- X
- Xstatic void
- Xcreate_door(dd, broom)
- Xroom_door *dd;
- Xstruct mkroom *broom;
- X{
- X int x, y;
- X int trycnt = 0;
- X
- X if (dd->secret == -1)
- X dd->secret = rn2(2);
- X
- X if (dd->mask == -1) {
- X /* is it a locked door, closed, or a doorway? */
- X if (!dd->secret) {
- X if(!rn2(3)) {
- X if(!rn2(5))
- X dd->mask = D_ISOPEN;
- X else if(!rn2(6))
- X dd->mask = D_LOCKED;
- X else
- X dd->mask = D_CLOSED;
- X if (dd->mask != D_ISOPEN && !rn2(25))
- X dd->mask |= D_TRAPPED;
- X } else
- X dd->mask = D_NODOOR;
- X } else {
- X if(!rn2(5)) dd->mask = D_LOCKED;
- X else dd->mask = D_CLOSED;
- X
- X if(!rn2(20)) dd->mask |= D_TRAPPED;
- X }
- X }
- X
- X do {
- X register int dwall, dpos;
- X
- X dwall = dd->wall;
- X if (dwall == -1) /* The wall is RANDOM */
- X dwall = 1 << rn2(4);
- X
- X dpos = dd->pos;
- X if (dpos == -1) /* The position is RANDOM */
- X dpos = rn2((dwall == W_WEST || dwall == W_EAST) ?
- X (broom->hy - broom->ly) : (broom->hx - broom->lx));
- X
- X /* Convert wall and pos into an absolute coordinate! */
- X
- X switch (dwall) {
- X case W_NORTH:
- X y = broom->ly - 1;
- X x = broom->lx + dpos;
- X break;
- X case W_SOUTH:
- X y = broom->hy + 1;
- X x = broom->lx + dpos;
- X break;
- X case W_WEST:
- X x = broom->lx - 1;
- X y = broom->ly + dpos;
- X break;
- X case W_EAST:
- X x = broom->hx + 1;
- X y = broom->ly + dpos;
- X break;
- X default:
- X x = y = 0;
- X panic("create_door: No wall for door!");
- X break;
- X }
- X if (okdoor(x,y))
- X break;
- X } while (++trycnt <= 100);
- X if (trycnt > 100) {
- X impossible("create_door: Can't find a proper place!");
- X return;
- X }
- X add_door(x,y,broom);
- X levl[x][y].typ = (dd->secret ? SDOOR : DOOR);
- X levl[x][y].doormask = dd->mask;
- X}
- X
- X/*
- X * Create a secret door in croom on any one of the specified walls.
- X */
- Xvoid
- Xcreate_secret_door(croom, walls)
- X struct mkroom *croom;
- X xchar walls; /* any of W_NORTH | W_SOUTH | W_EAST | W_WEST (or W_ANY) */
- X{
- X xchar sx, sy; /* location of the secret door */
- X int count;
- X
- X for(count = 0; count < 100; count++) {
- X sx = rn1(croom->hx - croom->lx + 1, croom->lx);
- X sy = rn1(croom->hy - croom->ly + 1, croom->ly);
- X
- X switch(rn2(4)) {
- X case 0: /* top */
- X if(!(walls & W_NORTH)) continue;
- X sy = croom->ly-1; break;
- X case 1: /* bottom */
- X if(!(walls & W_SOUTH)) continue;
- X sy = croom->hy+1; break;
- X case 2: /* left */
- X if(!(walls & W_EAST)) continue;
- X sx = croom->lx-1; break;
- X case 3: /* right */
- X if(!(walls & W_WEST)) continue;
- X sx = croom->hx+1; break;
- X }
- X
- X if(okdoor(sx,sy)) {
- X levl[sx][sy].typ = SDOOR;
- X levl[sx][sy].doormask = D_CLOSED;
- X add_door(sx,sy,croom);
- X return;
- X }
- X }
- X
- X impossible("couldn't create secret door on any walls 0x%x", walls);
- X}
- X
- X/*
- X * Create a trap in a room.
- X */
- X
- Xstatic void
- Xcreate_trap(t,croom)
- Xtrap *t;
- Xstruct mkroom *croom;
- X{
- X schar x,y;
- X coord tm;
- X
- X x = t->x;
- X y = t->y;
- X if (croom)
- X get_free_room_loc(&x, &y, croom);
- X else
- X get_location(&x, &y, DRY);
- X
- X tm.x = x;
- X tm.y = y;
- X
- X mktrap(t->type, 1, (struct mkroom*) 0, &tm);
- X}
- X
- X/*
- X * Create a monster in a room.
- X */
- X
- Xstatic void
- Xcreate_monster(m,croom)
- Xmonster *m;
- Xstruct mkroom *croom;
- X{
- X struct monst *mtmp;
- X schar x,y;
- X char class;
- X aligntyp amask;
- X struct permonst *pm;
- X
- X if (m->class >= 0) {
- X class = (char) def_char_to_monclass((char)m->class);
- X if (class == MAXMCLASSES) goto bad_class;
- X } else if (m->class > -11) {
- X class = (char) def_char_to_monclass(rmonst[- m->class - 1]);
- X if (class == MAXMCLASSES) {
- Xbad_class:
- X panic("create_monster: unknown monster class '%c'", m->class);
- X }
- X } else
- X class = 0;
- X
- X amask = (m->align <= -11) ? induced_align(80) :
- X (m->align < 0 ? ralign[-m->align-1] : m->align);
- X
- X if (!class)
- X pm = (struct permonst *) 0;
- X else if (m->id != -1) {
- X#ifdef MULDGN
- X if(pl_character[0] == 'E' && m->id == PM_EARENDIL)
- X m->id += flags.female;
- X#endif
- X pm = &mons[m->id];
- X } else {
- X pm = mkclass(class,G_NOGEN);
- X /* if we can't get class for a specific monster type,
- X it means, that it's extinct, genocided, or unique,
- X and shouldn't be created. */
- X if (!pm) return;
- X }
- X
- X x = m->x;
- X y = m->y;
- X if (croom)
- X get_room_loc(&x, &y, croom);
- X else {
- X if (!pm || !is_swimmer(pm))
- X get_location(&x, &y, DRY);
- X else if (pm->mlet == S_EEL)
- X get_location(&x, &y, WET);
- X else
- X get_location(&x, &y, DRY|WET);
- X }
- X
- X
- X if(m->align != -12)
- X mtmp = mk_roamer(pm, Amask2align(amask), x, y, m->peaceful);
- X else if(PM_ARCHEOLOGIST <= m->id && m->id <= PM_WIZARD)
- X mtmp = mk_mplayer(pm, x, y, FALSE);
- X else mtmp = makemon(pm, x, y);
- X
- X if (mtmp) {
- X /* handle specific attributes for some special monsters */
- X if (m->name) mtmp = christen_monst(mtmp, m->name);
- X
- X /*
- X * This is currently hardwired for mimics only. It should
- X * eventually be expanded.
- X */
- X if (m->appear_as && mtmp->data->mlet == S_MIMIC) {
- X int i;
- X
- X switch (m->appear) {
- X case M_AP_NOTHING:
- X impossible(
- X "create_monster: mon has an appearance, \"%s\", but no type",
- X m->appear_as);
- X break;
- X
- X case M_AP_FURNITURE:
- X for (i = 0; i < MAXPCHARS; i++)
- X if (!strcmp(defsyms[i].explanation, m->appear_as))
- X break;
- X if (i == MAXPCHARS) {
- X impossible(
- X "create_monster: can't find feature \"%s\"",
- X m->appear_as);
- X } else {
- X mtmp->m_ap_type = M_AP_FURNITURE;
- X mtmp->mappearance = i;
- X }
- X break;
- X
- X case M_AP_OBJECT:
- X for (i = 0; i < NROFOBJECTS; i++)
- X if (!strcmp(OBJ_NAME(objects[i]), m->appear_as))
- X break;
- X if (i == NROFOBJECTS) {
- X impossible(
- X "create_monster: can't find object \"%s\"",
- X m->appear_as);
- X } else {
- X mtmp->m_ap_type = M_AP_OBJECT;
- X mtmp->mappearance = i;
- X }
- X break;
- X
- X case M_AP_MONSTER:
- X /* note: mimics don't appear as monsters! */
- X /* (but chameleons can :-) */
- X default:
- X impossible(
- X "create_monster: unimplemented mon appear type [%d,\"%s\"]",
- X m->appear, m->appear_as);
- X break;
- X }
- X if (does_block(x, y, &levl[x][y]))
- X block_point(x, y);
- X }
- X
- X if (m->peaceful >= 0) {
- X mtmp->mpeaceful = m->peaceful;
- X /* changed mpeaceful again; have to reset malign */
- X set_malign(mtmp);
- X }
- X if (m->asleep >= 0) mtmp->msleep = m->asleep;
- X }
- X}
- X
- X/*
- X * Create an object in a room.
- X */
- X
- Xstatic void
- Xcreate_object(o,croom)
- Xobject *o;
- Xstruct mkroom *croom;
- X{
- X struct obj *otmp;
- X schar x,y;
- X char c;
- X
- X x = o->x; y = o->y;
- X if (croom)
- X get_room_loc(&x, &y, croom);
- X else
- X get_location(&x, &y, DRY);
- X
- X if (o->class >= 0)
- X c = o->class;
- X else if (o->class > -11)
- X c = robjects[ -(o->class+1)];
- X else
- X c = 0;
- X
- X if (!c)
- X otmp = mkobj_at(RANDOM_CLASS, x, y, TRUE);
- X else if (o->id != -1)
- X otmp = mksobj_at(o->id, x, y, TRUE);
- X else {
- X /*
- X * The special levels are compiled with the default "text" object
- X * class characters. We must convert them to the internal format.
- X */
- X char oclass = (char) def_char_to_objclass(c);
- X
- X if (oclass == MAXOCLASSES)
- X panic("create_object: unexpected object class '%c'",c);
- X otmp = mkobj_at(oclass, x, y, TRUE);
- X }
- X
- X if (o->spe != -127) /* That means NOT RANDOM! */
- X otmp->spe = o->spe;
- X
- X switch (o->curse_state) {
- X case 1: bless(otmp); break; /* BLESSED */
- X case 2: unbless(otmp); uncurse(otmp); break; /* uncursed */
- X case 3: curse(otmp); break; /* CURSED */
- X default: break; /* Otherwise it's random and we're happy
- X * with what mkobj gave us! */
- X }
- X
- X /* corpsenm is "empty" if -1, random if -2, otherwise specific */
- X if (o->corpsenm == -2) otmp->corpsenm = rndmonnum();
- X else if (o->corpsenm != -1) otmp->corpsenm = o->corpsenm;
- X
- X if (o->name) { /* Give a name to that object */
- X /* Note: oname() is safe since otmp is first in chains */
- X otmp = oname(otmp, o->name, 0);
- X fobj = otmp;
- X level.objects[x][y] = otmp;
- X }
- X stackobj(otmp);
- X}
- X
- X/*
- X * Create stairs in a room.
- X *
- X */
- X
- Xstatic void
- Xcreate_stairs(s,croom)
- Xstair *s;
- Xstruct mkroom *croom;
- X{
- X schar x,y;
- X
- X x = s->x; y = s->y;
- X get_free_room_loc(&x, &y, croom);
- X mkstairs(x,y,(char)s->up, croom);
- X}
- X
- X/*
- X * Create an altar in a room.
- X */
- X
- Xstatic void
- Xcreate_altar(a, croom)
- X altar *a;
- X struct mkroom *croom;
- X{
- X schar sproom,x,y;
- X aligntyp amask;
- X boolean croom_is_temple = TRUE;
- X
- X x = a->x; y = a->y;
- X
- X if (croom) {
- X get_free_room_loc(&x, &y, croom);
- X if (croom->rtype != TEMPLE)
- X croom_is_temple = FALSE;
- X } else {
- X get_location(&x, &y, DRY);
- X if (sproom = (schar) *in_rooms(x, y, TEMPLE))
- X croom = &rooms[sproom - ROOMOFFSET];
- X else
- X croom_is_temple = FALSE;
- X }
- X
- X a->x = x;
- X a->y = y;
- X
- X /* Is the alignment random ?
- X * If so, it's an 80% chance that the altar will be co-aligned.
- X *
- X * The alignment is encoded as amask values instead of alignment
- X * values to avoid conflicting with the rest of the encoding,
- X * shared by many other parts of the special level code.
- X */
- X
- X amask = (a->align == -11) ? induced_align(80) :
- X (a->align < 0 ? ralign[-a->align-1] : a->align);
- X
- X levl[x][y].typ = ALTAR;
- X levl[x][y].altarmask = amask;
- X
- X if (a->shrine == -11) a->shrine = rn2(1); /* handle random case */
- X
- X if (!croom_is_temple || !a->shrine) return;
- X
- X if (a->shrine) { /* Is it a shrine or sanctum? */
- X priestini(&u.uz, croom, x, y, (a->shrine > 1));
- X levl[x][y].altarmask |= AM_SHRINE;
- X level.flags.has_temple = TRUE;
- X }
- X}
- X
- X/*
- X * Create a gold pile in a room.
- X */
- X
- Xstatic void
- Xcreate_gold(g,croom)
- Xgold *g;
- Xstruct mkroom *croom;
- X{
- X schar x,y;
- X
- X x = g->x; y= g->y;
- X if (croom)
- X get_room_loc(&x, &y, croom);
- X else
- X get_location(&x, &y, DRY);
- X
- X if (g->amount == -1)
- X g->amount = rnd(200);
- X mkgold((long) g->amount, x, y);
- X}
- X
- X/*
- X * Create a feature (e.g a fountain) in a room.
- X */
- X
- Xstatic void
- Xcreate_feature(fx, fy, croom, typ)
- Xint fx, fy;
- Xstruct mkroom *croom;
- Xint typ;
- X{
- X schar x,y;
- X int trycnt = 0;
- X
- X x = fx; y = fy;
- X if (croom) {
- X if (x < 0 && y < 0)
- X do {
- X x = -1; y = -1;
- X get_room_loc(&x, &y, croom);
- X } while (++trycnt <= 200 && occupied(x,y));
- X else
- X get_room_loc(&x, &y, croom);
- X if(trycnt > 200)
- X return;
- X } else {
- X get_location(&x, &y, DRY);
- X }
- X levl[x][y].typ = typ;
- X}
- X
- X/*
- X * Search for a door in a room on a specified wall.
- X */
- X
- Xstatic boolean
- Xsearch_door(croom,x,y,wall,cnt)
- Xstruct mkroom *croom;
- Xxchar *x, *y;
- Xxchar wall;
- Xint cnt;
- X{
- X int dx, dy;
- X int xx,yy;
- X
- X switch(wall) {
- X case W_NORTH:
- X dy = 0; dx = 1;
- X xx = croom->lx;
- X yy = croom->hy + 1;
- X break;
- X case W_SOUTH:
- X dy = 0; dx = 1;
- X xx = croom->lx;
- X yy = croom->ly - 1;
- X break;
- X case W_EAST:
- X dy = 1; dx = 0;
- X xx = croom->hx + 1;
- X yy = croom->ly;
- X break;
- X case W_WEST:
- X dy = 1; dx = 0;
- X xx = croom->lx - 1;
- X yy = croom->ly;
- X break;
- X default:
- X dx = dy = xx = yy = 0;
- X panic("search_door: Bad wall!");
- X break;
- X }
- X while (xx <= croom->hx+1 && yy <= croom->hy+1) {
- X if (IS_DOOR(levl[xx][yy].typ) || levl[xx][yy].typ == SDOOR) {
- X *x = xx;
- X *y = yy;
- X if (cnt-- <= 0)
- X return TRUE;
- X }
- X xx += dx;
- X yy += dy;
- X }
- X return FALSE;
- X}
- X
- X/*
- X * Dig a corridor between two points.
- X */
- X
- Xboolean
- Xdig_corridor(org,dest,nxcor,ftyp,btyp)
- Xcoord org, dest;
- Xboolean nxcor;
- Xschar ftyp, btyp;
- X{
- X register int dx=0, dy=0, dix, diy, cct;
- X register struct rm *crm;
- X register int tx, ty, xx, yy;
- X
- X xx = org.x; yy = org.y;
- X tx = dest.x; ty = dest.y;
- X if (xx <= 0 || yy <= 0 || tx <= 0 || ty <= 0 ||
- X xx > COLNO-1 || tx > COLNO-1 ||
- X yy > ROWNO-1 || ty > ROWNO-1) {
- X#ifdef DEBUG
- X debugpline("dig_corridor: bad coords : (%d,%d) (%d,%d).",
- X xx,yy,tx,ty);
- X#endif
- X return FALSE;
- X }
- X if (tx > xx) dx = 1;
- X else if (ty > yy) dy = 1;
- X else if (tx < xx) dx = -1;
- X else dy = -1;
- X
- X xx -= dx;
- X yy -= dy;
- X cct = 0;
- X while(xx != tx || yy != ty) {
- X /* loop: dig corridor at [xx,yy] and find new [xx,yy] */
- X if(cct++ > 500 || (nxcor && !rn2(35)))
- X return FALSE;
- X
- X xx += dx;
- X yy += dy;
- X
- X if(xx >= COLNO-1 || xx <= 0 || yy <= 0 || yy >= ROWNO-1)
- X return FALSE; /* impossible */
- X
- X crm = &levl[xx][yy];
- X if(crm->typ == btyp) {
- X if(ftyp != CORR || rn2(100)) {
- X crm->typ = ftyp;
- X if(nxcor && !rn2(50))
- X (void) mksobj_at(BOULDER, xx, yy, TRUE);
- X } else {
- X crm->typ = SCORR;
- X }
- X } else
- X if(crm->typ != ftyp && crm->typ != SCORR) {
- X /* strange ... */
- X return FALSE;
- X }
- X
- X /* find next corridor position */
- X dix = abs(xx-tx);
- X diy = abs(yy-ty);
- X
- X /* do we have to change direction ? */
- X if(dy && dix > diy) {
- X register int ddx = (xx > tx) ? -1 : 1;
- X
- X crm = &levl[xx+ddx][yy];
- X if(crm->typ == btyp || crm->typ == ftyp || crm->typ == SCORR) {
- X dx = ddx;
- X dy = 0;
- X continue;
- X }
- X } else if(dx && diy > dix) {
- X register int ddy = (yy > ty) ? -1 : 1;
- X
- X crm = &levl[xx][yy+ddy];
- X if(crm->typ == btyp || crm->typ == ftyp || crm->typ == SCORR) {
- X dy = ddy;
- X dx = 0;
- X continue;
- X }
- X }
- X
- X /* continue straight on? */
- X crm = &levl[xx+dx][yy+dy];
- X if(crm->typ == btyp || crm->typ == ftyp || crm->typ == SCORR)
- X continue;
- X
- X /* no, what must we do now?? */
- X if(dx) {
- X dx = 0;
- X dy = (ty < yy) ? -1 : 1;
- X } else {
- X dy = 0;
- X dx = (tx < xx) ? -1 : 1;
- X }
- X crm = &levl[xx+dx][yy+dy];
- X if(crm->typ == btyp || crm->typ == ftyp || crm->typ == SCORR)
- X continue;
- X dy = -dy;
- X dx = -dx;
- X }
- X return TRUE;
- X}
- X
- END_OF_FILE
- if test 26410 -ne `wc -c <'src/sp_lev.c1'`; then
- echo shar: \"'src/sp_lev.c1'\" unpacked with wrong size!
- fi
- # end of 'src/sp_lev.c1'
- fi
- if test -f 'sys/amiga/wbwin.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'sys/amiga/wbwin.uu'\"
- else
- echo shar: Extracting \"'sys/amiga/wbwin.uu'\" \(28885 characters\)
- sed "s/^X//" >'sys/amiga/wbwin.uu' <<'END_OF_FILE'
- Xbegin 777 wbwin.pw
- XM4&]W97)7:6YD;W=S('8R+C5C(*DQ.3@W+"`Q.3@X(&)Y($E.3U9!5%)/3DE#
- XM4RP@24Y#+B`@("`@("`@("`@("`@("`@("`@("`@```"K`````E``8#_````
- XM`0`````!``````AW8G=I;BYC```X_&@``````H``R``"``*````/```````X
- XMUP````````````````(````73F5T2&%C:R!7;W)K0F5N8V@@5C,N,0`````!
- XM``````$`````#)"0D```(/#P\`!@L`````P``A`_``"'>@"J`%#_____`#D&
- XMF`````````````````````````````(`)51(```````!```"`"(`(@(U`)0`
- XM!0`%_____P```!Y396QE8W0@4V%V960@1V%M92!O<B!.97<@1V%M90``.04X
- XM``7_^?_F``8`*("#``,`.0(@`````````````````#D$F``$`#D$N/____\#
- XM```%`#D$?````````````AP```(<``<````'```````````"$P`"````````
- XM``````````````$#__________\````*`"@`BP`EC&@`)9FP`";0@``I)T``
- XM*,^(`"C1N`````=38W)O;&P``````0`````!``````I'04130U)/3$P`````
- XM`0`````!````````!0`,_^8`"@`C``,``0`TP>```````#D%D```````````
- XM``4`.06P_____P$```4`.05T```````````"'````AP`"P````L``````#3!
- XMX/__``L"```"`"C4:``````````(``````(V```#``$```8``0``````*-<@
- XM``````````,@(``````(`",``0`HWZ``*.?``"CK6``H\E``*/E(`"DU>```
- XM``A-97-S86=E``````$``````0`````#+3$``````0`````!```TE*@!$```
- XM````!P```#D&N``Y,;`````(4')O:F5C=```-,A``#39,!!(`#D&V``````0
- XM```Y![```````0(#`0```````````,@`"```````````````!4AE;'``````
- XM`0``-P[@`#=04!!!`#D*4``````0```Y"G@``````0(#`0`````````(`,@`
- XM"```````````````!D%B;W5T``````$``#BZV``XO.@04P`Y"I@`````$```
- XM.0K```````$"`P$`````````(`"X``@```````````````M4;W`@4V-O<F5S
- XM``````$``#B_6``XR/`0```Y"N``````$```.0L(``````$"`P$`````````
- XM&`"X``@```````````````A296-O=F5R``````$``#D+Z``XU8@0```Y"R@`
- XM````$```.0P(``````$"`P$`````````&`"X``@``````````````!)%9&ET
- XM($1E9F%U;'0@1V%M90`````!```Y#\@`.-=@$```.0[0`````!```#D/Z```
- XM```!`@,!`````````!@`^``(```````````````3161I="!#;VYF:6=U<F%T
- XM:6]N``````$``#CJ>``XZY`040`Y$`@`````$`````````````$"`P$`````
- XM````(`#(``@```````````````51=6ET``````$``#D+4`$0`$8````'````
- XM.3'0``````````5'86UE```Y#,``.1`P$$D`.3'P`````!```#DR&``````!
- XM`@,!````````````"``(```````````````%26YF;P`````!```Y,F``.3)X
- XM$$,`.3(X`````!```#DRB``````!`@,!``````````@`F``(````````````
- XM```/0VAA;F=E($-O;6UE;G0``````0``.3+0`#DS$!!/`#DRJ``````0```Y
- XM,R```````0(#`0`````````0`)@`"```````````````#%-E="!/<'1I;VYS
- XM``````$``#DS:``Y,X`0```Y,T``````$```.3.0``````$"`P$`````````
- XM&`"8``@```````````````U#;W!Y($]P=&EO;G,``````0``.3/8`#DSZ!!$
- XM`#DSL``````0```Y,_@``````0(#`0`````````@`)@`"```````````````
- XM"$1I<V-A<F0``````0``.31``#DT4!!2`#DT&``````0`````````````0(#
- XM`0`````````H`)@`"```````````````!U)E;F%M90`````!```"$`X`(`)`
- XM``4`!?____\``````#F0.````````````````````````P`Y2Q````````=1
- XM=65S=%\```,`K@`\`2H`/``%``7_____````&DYE=$AA8VL@5V]R:T)E;F-H
- XM(%)E<75E<W0``#F..``,`"L`5P`+`````P`!`#F-;```````.8V8````````
- XM```````YC;C_____`@``!0`YC7P```````````!8````6``,````#```````
- XM`````P`!```@``(``````#EK@``````````$665S``````H````!`#EN>``Y
- XMC>``.8WP`#F.```YCA@`.8XH````!%EE<P`````!``````$`````#$=!1%%5
- XM15-46453``````$``````0``.8]0`,<`*P!7``L````#``$`.8YD```````Y
- XMCI`````````````$`#F.P/____\"```%`#F.=````````````%@```!8``P`
- XM```,```````````#``$``",``@``````.8ZP``````````-.;P`````*````
- XM`0`YCN@`.8[X`#F/"``YCQ@`.8\P`#F/0`````-.;P`````!``````$`````
- XM"T=!1%%515-43D\``````0`````!````````#``0`1(`%0`#``,``0`YCWP`
- XM``````````````````````4`.8^H_____P,```4`.8^,```````````!$P``
- XM`1,`%@```!8```````````````@``P```#F/T``YC^@`.8_X`#F0"``YD!@`
- XM.9`H````"4)O<F1E<G,R``````$``````0`````#+3$``````0`````!``$`
- XM`0``.P`5```````YD%@`````````%U-U<F4@>6]U('=A;G0@=&\@455)5#\`
- XM``(0#@`EAD``!0`%_____P``````/*@8```````````````````````C`#DU
- XMD```````"4]P=&EO;G-?```!`#0`.@(:`(<`!0`%_____P````U%9&ET($]P
- XM=&EO;G,``#F5:``)``T`,@`*```!`P`!`#F4;```````.928````````````
- XM```YE+C_____`P``!0`YE'P````````````S````,P`+````"P``````````
- XM`0`!```%``(``````#DT8``````````&0V]L;W(`````"@```0$`.9!X`#F4
- XMX``YE/``.94``#F52``YE5@````!``````$``````0`````*1T%$3T-/3$]2
- XM``````$``````0``.9:0`$$`#0`^``H```$#``$`.964```````YE<``````
- XM`````````#F5\/____\#```%`#F5I````````````#\````_``L````+````
- XM```````!``$```,``@``````.97@``````````A#;VYF:7)M``````H```$!
- XM`#F6&``YEB@`.98X`#F62``YEG``.9:``````0`````!``````$`````#$=!
- XM1$]#3TY&25)-``````$``````0``.9>P`(4`#0!$``H```$#``$`.9:\````
- XM```YEN@``````````````#F7(/____\#```%`#F6S````````````$4```!%
- XM``L````+```````````!``$```(``@``````.9<(``````````E$:7-C;&]S
- XM90`````*```!`0`YET@`.9=8`#F7:``YEW@`.9>0`#F7H`````$``````0``
- XM```!``````U'041/1$E30TQ/4T4``````0`````!```YF,@`PP`;`#4`"@``
- XM`0,``0`YE]P``````#F8"```````````````.9@X_____P,```4`.9?L````
- XM````````-@```#8`"P````L```````````$``0```@`"```````YF"@`````
- XM````!T9I>&EN=@`````*```!`0`YF&``.9AP`#F8@``YF)``.9BH`#F8N```
- XM``$``````0`````!``````M'041/1DE824Y6``````$``````0``.9G@`(P`
- XM&P`Q``H```$#``$`.9CT```````YF2```````````````#F94/____\#```%
- XM`#F9!````````````#(````R``L````+```````````!``$```0``@``````
- XM.9E```````````9&;'5S:``````*```!`0`YF7@`.9F(`#F9F``YF:@`.9G`
- XM`#F9T`````$``````0`````!``````I'041/1DQ54T@``````0`````!```\
- XMAF@`8``;`"4`"@```0,``0`YF@P``````#F:.```````````````.9IH____
- XM_P,```4`.9H<````````````)@```"8`"P````L```````````$``0```P`"
- XM```````YFE@`````````!4AE;'``````"@```0$`.9J0`#F:H``YFK``.9K`
- XM`#R&2``\AE@````!``````$``````0`````)1T%$3TA%3%```````0`````!
- XM```\AX``4``I`#T`"@```0,``0`\AI0``````#R&P```````````````/(;P
- XM_____P,```4`/(:D````````````/@```#X`"P````L```````````$``0``
- XM`@`"```````\AN``````````"$EG;FEN='(`````"@```0$`/(<8`#R'*``\
- XMAS@`/(=(`#R'8``\AW`````!``````$``````0`````,1T%$3TE'3DE.5%(`
- XM`````0`````!```\B)@`-0`;`"4`"@```0,``0`\AZP``````#R'V```````
- XM````````/(@(_____P,```4`/(>\````````````)@```"8`"P````L`````
- XM``````$``0```P`"```````\A_@`````````!4YE=W,`````"@```0$`/(@P
- XM`#R(0``\B%``/(A@`#R(>``\B(@````!``````$``````0`````)1T%$3TY%
- XM5U,``````0`````!```\B;@`E``I`%4`"@"``0,``0`\B,0``````#R(\```
- XM````````````/(DH_____P,```4`/(C4````````````5@```%8`"P````L`
- XM``````````$``0```P`"```````\B1``````````"TYU;6)E<B!0860`````
- XM"@```0$`/(E0`#R)8``\B7``/(F``#R)F``\B:@````!``````$``````0``
- XM```.1T%$3TY534)%4E!!1``````!``````$``#R*T`%=`!L`)``*```!`P`!
- XM`#R)Y```````/(H0```````````````\BD#_____`P``!0`\B?0`````````
- XM```E````)0`+````"P```````````0`!```#``(``````#R*,``````````%
- XM3G5L;``````*```!`0`\BF@`/(IX`#R*B``\BI@`/(JP`#R*P`````$`````
- XM`0`````!``````E'041/3E5,3``````!``````$``#R+Z``)`"D`00`*`(`!
- XM`P`!`#R*_```````/(LH```````````````\BUC_____`P``!0`\BPP`````
- XM``````!"````0@`+````"P```````````0`!```%``(``````#R+2```````
- XM```(4&EC:R!5<``````*```!`0`\BX``/(N0`#R+H``\B[``/(O(`#R+V```
- XM``$``````0`````!``````M'041/4$E#2U50``````$``````0``/(T(`,X`
- XM#0!O``H```$#``$`/(P4```````\C$```````````````#R,>/____\#```%
- XM`#R,)````````````'````!P``L````+```````````!``$```,``@``````
- XM/(Q@``````````Y297-T($]N(%-P86-E``````H```$!`#R,H``\C+``/(S`
- XM`#R,T``\C.@`/(SX`````0`````!``````$`````$$=!1$]215-43TY34$%#
- XM10`````!``````$``#R.(`%#``T`-@`*```!`P`!`#R--```````/(U@````
- XM```````````\C9#_____`P``!0`\C40````````````W````-P`+````"P``
- XM`````````0`!```$``(``````#R-@``````````'4VEL96YT``````H```$!
- XM`#R-N``\C<@`/(W8`#R-Z``\C@``/(X0`````0`````!``````$`````"T=!
- XM1$]324Q%3E0``````0`````!```\CT``[P`I`$4`"@"``0,``0`\CDP`````
- XM`#R.>```````````````/(ZP_____P,```4`/(Y<````````````1@```$8`
- XM"P````L```````````$``0```@`"```````\CI@`````````"5-A9F4@4&5T
- XM``````H```$!`#R.V``\CN@`/([X`#R/"``\CR``/(\P`````0`````!````
- XM``$`````#$=!1$]3049%4$54``````$``````0``/)!@`3H`*0!.``H```$#
- XM``$`/(]L```````\CY@``````````````#R/T/____\#```%`#R/?```````
- XM`````$\```!/``L````+```````````!``$```,``@``````/(^X````````
- XM``I3;W)T(%!A8VL`````"@```0$`/(_X`#R0"``\D!@`/)`H`#R00``\D%``
- XM```!``````$``````0`````-1T%$3U-/4E1004-+``````$``````0``/)%X
- XM`>(`*0`O``H`@`$#``$`/)",```````\D+@``````````````#R0Z/____\#
- XM```%`#R0G````````````#`````P``L````+```````````!``$```,``@``
- XM````/)#8``````````93;W5N9``````*```!`0`\D1``/)$@`#R1,``\D4``
- XM/)%8`#R1:`````$``````0`````!``````I'041/4T]53D0``````0`````!
- XM```\DI@!C@`I`$T`"@```0,``0`\D:0``````#R1T```````````````/)((
- XM_____P,```4`/)&T````````````3@```$X`"P````L```````````$``0``
- XM`P`"```````\D?``````````"E-T86YD($]U=``````*```!`0`\DC``/))`
- XM`#R24``\DF``/))X`#R2B`````$``````0`````!``````U'041/4U1!3D1/
- XM550``````0`````!```\D[``"0`;`"8`"@```0,``0`\DL0``````#R2\```
- XM````````````/),@_____P,```4`/)+4````````````)P```"<`"P````L`
- XM``````````$``0```@`"```````\DQ``````````!51I;64`````"@```0$`
- XM/)-(`#R36``\DV@`/)-X`#R3D``\DZ`````!``````$``````0`````)1T%$
- XM3U1)344``````0`````!```\E-`!?P`-`%4`"@```0,``0`\D]P``````#R4
- XM"```````````````/)1`_____P,```4`/)/L````````````5@```%8`"P``
- XM``L```````````$``0```@`"```````\E"@`````````"U1O;6(@4W1O;F4`
- XM````"@```0$`/)1H`#R4>``\E(@`/)28`#R4L``\E,`````!``````$`````
- XM`0`````.1T%$3U1/34)35$].10`````!``````$``#R5Z`&'`!L`/``*```!
- XM`P`!`#R4_```````/)4H```````````````\E5C_____`P``!0`\E0P`````
- XM```````]````/0`+````"P```````````0`!```"``(``````#R52```````
- XM```(5F5R8F]S90`````*```!`0`\E8``/)60`#R5H``\E;``/)7(`#R5V```
- XM``$``````0`````!``````Q'041/5D520D]310`````!``````$``#R76`#3
- XM`$4`U@`)```"`P`$`#R6%``````````````````\EI`````\EL#_____`P``
- XM!0`\EB0```````````#7````UP`*````"@``````````````1@`@("`@("`@
- XM("`@("`@(````&1E=G,Z<'<R+6-O;F9I9W5R871I;VX`4V5L96-T('1H92!G
- XM861G970@=&\@;6]V92X`5`````$*```"`0`\EN@`/)<``#R7$``\ER``/)<X
- XM`#R72`````I086-K3W)D97(``````0`````!``````Y'041/4$%#2T]21$52
- XM``````$``````0``/)C``-,`4@#6``D```(#``0`/)>$````````````````
- XM`#R8`````#R8,/____\#```%`#R7E````````````-<```#7``H````*````
- XM``````````!&```@("`@("`@("`@("`@````9&5V<SIP=S(M8V]N9FEG=7)A
- XM=&EO;@!396QE8W0@=&AE(&=A9&=E="!T;R!M;W9E+@!4`````0H```(!`#R8
- XM6``\F&@`/)AX`#R8B``\F*``/)BP````"$-A=$YA;64``````0`````!````
- XM``Q'041/0T%43D%-10`````!``````$``#R:*`#3`%\`U@`)```"`P`$`#R8
- XM[``````````````````\F6@````\F9C_____`P``!0`\F/P```````````#7
- XM````UP`*````"@``````````````1@`@("`@("`@("`@("`@(````&1E=G,Z
- XM<'<R+6-O;F9I9W5R871I;VX`4V5L96-T('1H92!G861G970@=&\@;6]V92X`
- XM5`````$*```"`0`\F<``/)G0`#R9X``\F?``/)H(`#R:&`````A$;V=.86UE
- XM``````$``````0`````,1T%$3T1/1TY!344``````0`````!```\FY``TP!L
- XM`-8`"0```@,`!``\FE0`````````````````/)K0````/)L`_____P,```4`
- XM/)ID````````````UP```-<`"@````H``````````````$8`("`@("`@("`@
- XM("`@("````!D979S.G!W,BUC;VYF:6=U<F%T:6]N`%-E;&5C="!T:&4@9V%D
- XM9V5T('1O(&UO=F4N`%0````!"@```@$`/)LH`#R;.``\FT@`/)M8`#R;<``\
- XMFX`````&1G)U:70``````0`````!``````I'041/1E)5250``````0`````!
- XM```\G*@!VP`-`#8`"@```0,``0`\F[P``````#R;Z```````````````/)P8
- XM_____P,```4`/)O,````````````-P```#<`"P````L```````````$``0``
- XM`P`"```````\G`@`````````!T9E;6%L90`````*```!`0`\G$``/)Q0`#R<
- XM8``\G'``/)R(`#R<F`````$``````0`````!``````M'041/1D5-04Q%````
- XM``$``````0``/)X0`-,`>0#6``D```(#``0`/)S4`````````````````#R=
- XM4````#R=@/____\#```%`#R<Y````````````-<```#7``H````*````````
- XM``````!&`"`@("`@("`@("`@("`@````9&5V<SIP=S(M8V]N9FEG=7)A=&EO
- XM;@!396QE8W0@=&AE(&=A9&=E="!T;R!M;W9E+@!4`````0H```(!`#R=J``\
- XMG;@`/)W(`#R=V``\G?``/)X`````"$]B:F5C=',``````0`````!``````Q'
- XM041/3T)*14-44P`````!``````$``#R?,`'*`!L`1P`*```!`P`!`#R>/```
- XM````/)YH```````````````\GJ#_____`P``!0`\GDP```````````!(````
- XM2``+````"P```````````0`!```#``(``````#R>B``````````)07-K(%-A
- XM=F4`````"@```0$`/)[(`#R>V``\GN@`/)[X`#R?$``\GR`````!``````$`
- XM`````0`````,1T%$3T%32U-!5D4``````0`````!```\H$@!V@!X`#<`"@``
- XM``,``0`\GUP``````#R?B```````````````/)^X_____P$```4`/)]L````
- XM````````.````#@`"P````L```````````$``0```P`"```````\GZ@`````
- XM````!T-!3D-%3``````*`````0`\G^``/)_P`#R@```\H!``/*`H`#R@.```
- XM``$``````0`````!``````M'041/0T%.0T5,``````$``````0``/*%@``H`
- XM>``W``H````#``$`/*!T```````\H*```````````````#R@T/____\!```%
- XM`#R@A````````````#@````X``L````+```````````!``$```L``@``````
- XM/*#```````````5/2T%9``````H````!`#R@^``\H0@`/*$8`#RA*``\H4``
- XM/*%0`````0`````!``````$`````"4=!1$]/2T%9``````$``````0``/**`
- XM``D`-P!R``H`@`$#``$`/*&,```````\H;@``````````````#RA\/____\#
- XM```%`#RAG````````````',```!S``L````+```````````!``$```4``@``
- XM````/*'8``````````Y(:6=H;&EG:'0@4&5T``````H```$!`#RB&``\HB@`
- XM/*(X`#RB2``\HF``/*)P`````0`````!``````$`````#D=!1$](24Q)5$50
- XM150``````0`````!```\HY@`\``W`#L`"@```0,``0`\HJP``````#RBV```
- XM````````````/*,(_____P,```4`/**\````````````/````#P`"P````L`
- XM``````````$``0``!0`"```````\HO@`````````!TQE9V%C>0`````*`(`!
- XM`0`\HS``/*-``#RC4``\HV``/*-X`#RCB`````$``````0`````!``````M'
- XM041/3$5'04-9``````$``````0``/*2X`((`-P!H``H```$#``$`/*/$````
- XM```\H_```````````````#RD*/____\#```%`#RCU````````````&D```!I
- XM``L````+```````````!``$```4``@``````/*00``````````U,:70@0V]R
- XM<FED;W(`````"@```0$`/*10`#RD8``\I'``/*2``#RDF``\I*@````!````
- XM``$``````0`````01T%$3TQ)5$-/4E))1$]2``````$``````0``/*78`3(`
- XM-P!_``H```$#``$`/*3D```````\I1```````````````#RE2/____\#```%
- XM`#RD]````````````(````"```L````+```````````!``$```4``@``````
- XM/*4P`````````!!3:&]W($5X<&5R:65N8V4`````"@```0$`/*5P`#RE@``\
- XMI9``/*6@`#REN``\I<@````!``````$``````0`````,1T%$3U-(3U=%6%``
- XM`````0`````!```\IO@!MP`W`%H`"@```0,``0`\I@0``````#RF,```````
- XM````````/*9H_____P,```4`/*84````````````6P```%L`"P````L`````
- XM``````$``0``!0`"```````\IE``````````"U-H;W<@4V-O<F4`````"@``
- XM`0$`/*:0`#RFH``\IK``/*;``#RFV``\IN@````!``````$``````0`````.
- XM1T%$3U-(3U=30T]210`````!``````$```````#]`!L`6@`*```!`P`!`#RG
- XM)```````/*=0```````````````\IXC_____`P``!0`\IS0```````````!;
- XM````6P`+````"P```````````0`!```%``(``````#RG<``````````+0VAE
- XM8VMP;VEN=``````*`(`!`0`\I[``/*?``#RGT``\I^``/*?X`#RH"`````$`
- XM`````0`````!``````U'041/0TA+4$])3E0``````0`````!``,``0``=@!&
- XM```````\J#@`/*A0````#%!A8VL@3W)D97(Z``,``0``A@!3```````\J'``
- XM/*B(````"D-A="!.86UE.@`#``$``(8`8```````/*BH`#RHP`````I$;V<@
- XM3F%M93H``P`!``">`&T``````#RHX``\J/`````'1G)U:70Z``,``0``C@!Z
- XM```````\J1``````````"4]B:F5C=',Z```"$`X`)`)```4`!?____\`````
- XM`#R\0```````````````````````"``\K<````````9#;VYF7P```0!^`#P!
- XMD@!R``4`!?____\````8161I="!'86UE($-O;F9I9W5R871I;VX``#RQ"`!1
- XM`!P!-P`)`````P`$`#ROC``````````````````\KL@````\L(C_____`P``
- XM!0`\KYP```````````$X```!.``*````"@``````````````R``@("`@("`@
- XM("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@`````````````/__`P$"
- XM````````+*S4`"VL6```````*U3,``````<X`"IO<````$(`*G`(`,D`#P!H
- XM``@`4@``````*F_B`````````````/__`P$"````````+*S4`"VZ"```````
- XM*U3,``````CH`"ION````$(`*G!0`,D`%P!H``@`4@``````*G`J````````
- XM`````/__`P$"```````!"@````$`/*[X`#RPL``\L,``/+#0`#RPZ``\L/@`
- XM```+4W1R2&%C:V1I<@`````!``````$`````#D=!1%-44DA!0TM$25(`````
- XM`0`````!```\LO``40`J`3<`"0````,`!``\L30`````````````````/+(P
- XM````/+)@_____P,```4`/+%$```````````!.````3@`"@````H`````````
- XM`````,@`("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(```
- XM``````````#__P,!`@```````"RLU``MK%@``````"M4S``````'.``J;W``
- XM``!"`"IP"`#)``\`:``(`%(``````"IOX@````````````#__P,!`@``````
- XM`"RLU``MN@@``````"M4S``````(Z``J;[@```!"`"IP4`#)`!<`:``(`%(`
- XM`````"IP*@````````````#__P,!`@```````0H````!`#RRB``\LI@`/+*H
- XM`#RRN``\LM``/++@````"%-T<E!E;G,``````0`````!``````M'04135%)0
- XM14Y3``````$``````0``/+38`%$`#@$V``D````#``0`/+,<````````````
- XM`````#RT&````#RT2/____\#```%`#RS+````````````3<```$W``H````*
- XM``````````````#(`"`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
- XM("`@("``````````````__\#`0(````````LK-0`+:Q8```````K5,P`````
- XM!S@`*F]P````0@`J<`@`R0`/`&@`"`!2```````J;^(`````````````__\#
- XM`0(````````LK-0`+;H(```````K5,P`````".@`*F^X````0@`J<%``R0`7
- XM`&@`"`!2```````J<"H`````````````__\#`0(```````$*`````0`\M'``
- XM/+2``#RTD``\M*``/+2X`#RTR`````A3=')0871H``````$``````0`````+
- XM1T%$4U124$%42``````!``````$``#RVR`!1`#@!-P`)`````P`$`#RU!```
- XM```````````````\M@`````\MC#_____`P``!0`\M10```````````$X```!
- XM.``*````"@``````````````R``@("`@("`@("`@("`@("`@("`@("`@("`@
- XM("`@("`@("`@("`@`````````````/__`P$"````````+*S4`"VL6```````
- XM*U3,``````<X`"IO<````$(`*G`(`,D`#P!H``@`4@``````*F_B````````
- XM`````/__`P$"````````+*S4`"VZ"```````*U3,``````CH`"ION````$(`
- XM*G!0`,D`%P!H``@`4@``````*G`J`````````````/__`P$"```````!"@``
- XM``$`/+98`#RV<``\MH``/+:0`#RVJ``\MK@````*4W1R3&5V96QS``````$`
- XM`````0`````-1T%$4U123$5614Q3``````$``````0``/+BP`%$`1@$W``D`
- XM```#``0`/+;T`````````````````#RW\````#RX(/____\#```%`#RW!```
- XM`````````3@```$X``H````*``````````````#(`"`@("`@("`@("`@("`@
- XM("`@("`@("`@("`@("`@("`@("`@("``````````````__\#`0(````````L
- XMK-0`+:Q8```````K5,P`````!S@`*F]P````0@`J<`@`R0`/`&@`"`!2````
- XM```J;^(`````````````__\#`0(````````LK-0`+;H(```````K5,P`````
- XM".@`*F^X````0@`J<%``R0`7`&@`"`!2```````J<"H`````````````__\#
- XM`0(```````$*`````0`\N$@`/+A8`#RX:``\N'@`/+B0`#RXH`````A3=')3
- XM879E``````$``````0`````+1T%$4U124T%610`````!``````$``#RZ$`"7
- XM`&0`\0`)```"`P`$`#RXW``````````````````\N4@````\N7C_____`0``
- XM!0`\N.P```````````#R````\@`*````"@``````````````,DYE=&AA8VLZ
- XM3F5T2&%C:RYC;F8`("`@("`@("`@(``````&=@`Y'_@`.,)N```````````!
- XM"@```@$`/+F@`#RYN``\N<@`/+G8`#RY\``\N@`````+0V]N9FEG3F%M90``
- XM```!``````$`````#$=!1$-/3D9.04U%``````$``````0``/+LH``D`50`S
- XM``H````#``$`/+H\```````\NF@``````````````#RZF/____\"```%`#RZ
- XM3````````````#0````T``L````+```````````!``$```H``@``````/+J(
- XM``````````5,;V%D``````H````!`#RZP``\NM``/+K@`#RZ\``\NP@`/+L8
- XM`````0`````!``````$`````#$=!1$-/3D9,3T%$``````$``````0``````
- XM`$D`50`S``H````#``$`/+M4```````\NX```````````````#R[L/____\"
- XM```%`#R[9````````````#0````T``L````+```````````!``$```H``@``
- XM````/+N@``````````53879E``````H!```!`#R[V``\N^@`/+OX`#R\"``\
- XMO"``/+PP`````0`````!``````$`````#$=!1$-/3D93059%``````$`````
- XM`0`#``$``"4`$```````/+Q@`#R\<`````90871H.@`#``$``!``'@``````
- XM/+R0`#R\J`````E(86-K9&ER.@`#``$``"4`+```````/+S(`#R\V`````90
- XM96YS.@`#``$``!<`.@``````/+SX`#R]"`````A,979E;',Z``,``0``"0!(
- XM```````\O2@`/+U`````"E-A=F4@1&ER.@`!``$```H`90``````/+U@````
- XM`````!)#;VYF:6<@1FEL92!.86UE.@```A`.`"0"0``%``7_____````````
- XM``````````````````````````(`/*Y8```````%4W1R7P```0`W`#P"#@`?
- XM``4`!?____\````14W1R:6YG(%)E<75E<W1E<@``/,58`$T`#P&V``H```(#
- XM``0`/,*D`````````````````#S$,````#S`B/____\#```%`#S"M```````
- XM`````;<```&W``L````+``````````````!D`"`@("`@("`@("`@("`@("`@
- XM("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
- XM("`@("`@("`@(#@`````>*H`*>)`````0@`IXM@`U``/`!@``````0H```(!
- XM`#R]@``\PT``/,-0`#S$8``\Q'``/,2`````!U-T<FEN9P`````!``````$`
- XM`````RTQ``````$``````0````````D`#P`X``H````#``$`/,6$```````\
- XMQ)```````````````#S%L/____\#```%`#S%E````````````#D````Y``L`
- XM```+```````````#``$```0``@``````/,2P``````````=#86YC96P`````
- XM"@````$`/,3``#S%V``\Q>@`/,7X`#S&$``\QB`````!``````$``````0``
- XM```-1T%$4U120T%.0T5,``````$``````0```A`.`"0"0``%``7_____````
- XM```\UI@```````````````````````D`.99@```````&26YF;U\```$`*``\
- XM`BL`7``%``7_____````$4=A;64@26YF;W)M871I;VX``#S#F`!3`"X!S@`*
- XM``,``P`!`#RN)``````````````````````````\O_#_____`P``!0`\KC0`
- XM``````````'/```!SP`+````"P``````````````"``#````/*DH`#RL0``\
- XMK:@`/*]0`#S`&``\P@@````(0V]M;65N=``````!``````$``````RTQ````
- XM``$``````0``/,B8`)0`#P#$``L``P`#``$`/,/$`````````````````#'E
- XML````#S"&/____\#```%`#S#U````````````,4```#%``P````,````````
- XM```````(``,````\PD``/,/P`#S$T``\Q.``/,3P`#S%``````=0;&%Y97(`
- XM`````0`````!``````,M,0`````!``````$``#S+>`"4`!X`Q``+``,``P`!
- XM`#S(Q``````````````````````````\QFC_____`P``!0`\R-0`````````
- XM``#%````Q0`,````#```````````````"``#````/,4H`#S%.``\R2@`/,DX
- XM`#S)2``\R5@````&0VQA<W,``````0`````!``````,M,0`````!``````$`
- XM`#S1,`!S`$P!K0`)`````P`$`#S+I``````````````````\R6@````\R]#_
- XM____`P``!0`\R[0```````````&N```!K@`*````"@``````````````R``@
- XM("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
- XM("`@("`@("`@("`@("`@("``(P`0`3P`40``````````````````````+EZ@
- XM````0@`N=$@````8`-@`"`!6```````N="(`````0P``````__\#`0(`````
- XM```O%OP`+R?Z```````O@O0````ABC@`+G/X````0@`N=@@````@`-@`"`!2
- XM```````N=&H````````````````!"@````$`/,F8`#S+^``\S`@`/,P8`#S,
- XM,``\S$`````*5&]O;%1Y<&5S``````$``````0`````-1T%$5$]/3%194$53
- XM``````$``````0``/-'``&$`2@`-``8````#``$`/-%<````````````````
- XM`````````#S/*/____\#```%`#S1;`````````````X````.``<````'````
- XM```````````*`````0`\S%``/,]0`#S/8``\T8@`/-&@`#S1L`````=4;V]L
- XM57```````0`````!``````I'04143T],55```````0`````!```\TP``80!1
- XM``T`!@````,``0`\T>P`````````````````````````/-(8_____P,```4`
- XM/-'\````````````#@````X`!P````<```````````````H````!`#S2D``\
- XMTJ@`/-*X`#S2R``\TN``/-+P````"51O;VQ$;W=N``````$``````0`````,
- XM1T%$5$]/3$1/5TX``````0`````!```\U&@!80`/`,``&@````,``0`\TRP`
- XM`````#S36```````````````/-/H_____P(```4`/-,\````````````P0``
- XM`,$`&P```!L```````````$``0``$``)```````\TW@`````````%45D:70@
- XM1V%M92!$969I;FET:6]N`````!(````!`#S3F``\U!``/-0@`#S4,``\U$@`
- XM/-18````"$5D:71$968``````0`````!``````E'041%1$1%1@`````!````
- XM``$``#S5@`!S`#T`40`*`````P`!`#S4E```````/-3````````````````\
- XMU/#_____`P``!0`\U*0```````````!2````4@`+````"P```````````P`!
- XM```=``$``````#S4X``````````$061D``````H````!`#S5&``\U2@`/-4X
- XM`#S52``\U6``/-5P`````0`````!``````$`````"T=!1$%$1%1/3TP`````
- XM`0`````!````````T``]`%$`"@````,``0`\U:P``````#S5V```````````
- XM````/-8(_____P,```4`/-6\````````````4@```%(`"P````L`````````
- XM``,``0``$@`!```````\U?@`````````!T1E;&5T90`````*`````0`\UC``
- XM/-9``#S64``\UF``/-9X`#S6B`````$``````0`````!``````M'041$14Q4
- XM3T],``````$``````0`#``$```T`,0``````/-:X`#S6T`````E#;VUM96YT
- XM.@`#``$``"T`$P``````/-;P`#S7"`````U0;&%Y97(@3F%M93H``P`!```-
- XM`"(``````#S7*``\UT@````10VAA<F%C=&5R($-L87-S.@`#``$```T`3```
- XM````/-=H``````````M4;V]L5'EP97,Z```"$`X`(`)```4`!?____\`````
- XM`#S="````````````````````````0`\O[````````=(96QP,5\```$`A@`\
- XM`8$`,P`%``7_____````&$AE;'`@9F]R($=A;64@4V5L96-T:6]N````````
- XM#``B`"\`#`````,``0`\VGP``````#S<>`````````````4`/-R8_____P$`
- XM``4`/-J,````````````,````#``#0````T```````````$``0``!P`"````
- XM```\P:``````````!4]K87D`````$@````$`/,5(`#S7@``\W,``/-S0`#S<
- XMZ``\W/@````!``````$``````0`````,1T%$2$5,4$]+05D``````0`````!
- XM``,``0``"0`-```````\W2@`/.$(````+D-L:6-K(&]N($YE=T=A;64@1V%D
- XM9V5T(&]R(&$@4V%V960@1V%M92!T=VEC90`#``$```H`%@``````/.$H````
- XM`````"]T;R!S=&%R="!A(&YE=R!G86UE(&]R('1O(')E<W5M92!A('-A=F5D
- XM(&=A;64N```"$`X`(`)```4`!?____\``````#S0<```````````````````
- XM`````0`\OY@```````=(96QP,E\```$`B``\`70`.@`%``7_____````&TAE
- XM;'`@9F]R($=A;64@36%N:7!U;&%T:6]N````````$0`J`"\`"@````,``0`\
- XMV<0``````#S,P`````````````0`/,^`_____P$```4`/-G4````````````
- XM,````#``"P````L```````````$``0``!P`"```````\PX``````````!4]K
- XM87D`````$@````$`/,M``#S,8``\S@@`/,^H`#S.*``\S\`````!``````$`
- XM`````0`````,1T%$2$5,4$]+05D``````0`````!``,``0``#P`-```````\
- XMTD``/-#0````*U5S92!-96YU(&)U='1O;B!T;R!S96QE8W0@;W!E<F%T:6]N
- XM(&]N('1H90`#``$```\`%@``````/-L0`#S3N````"QS96QE8W1E9"!G86UE
- XM+"!O<B!D;W5B;&4@8VQI8VL@;VX@82!G86UE('1O``,``0``#P`?```````\
- XMW8@`````````%W)E<W5M92!T:&4@<V%V960@9V%M92X```(0#@`@`D``!0`%
- XM_____P``````/.TH```````````````````````!`#S1(```````!T%B;W5T
- XM7P```0!9`#P!OP!3``4`!?____\````<06)O=70@=&AE($YE=$AA8VL@5V]R
- XM:T)E;F-H````````HP!$`&T`"@````,``0`\[MP``````#SJR```````````
- XM``4`/.P(_____P$```4`/.[L````````````;@```&X`"P````L`````````
- XM``$``0``*``"```````\XK@`````````!4]K87D`````$@````$`/.JH`#SL
- XM8``\['``/.RP`#SLR``\[-@````!``````$``````0`````,1T%$2$5,4$]+
- XM05D``````0`````!``,``0``"``-```````\[C@`/.V0````)E1H92!.971(
- XM86-K(%=O<FM"96YC:"!W87,@9&5S:6=N960@8GD``@`!``$V``T``````#SL
- XMZ``\[>@````+2V5N($QO<F)E<@`#``$``8P`#0``````/.U(`#SN:`````1A
- XM;F0``@`!```(`!8``````#SO(``\[S@````/1W)E9V<@5V]N9&5R;'D``P`!
- XM``!X`!8``````#SM<``\[U@````"+@`#``$``(<`%@``````/.]X`#SOJ```
- XM`"=4:&4@<')O9W)A;6UI;F<@=V%S('-T87)T960@8GD@2V5N(&%N9``#``$`
- XM``@`'P``````/._(`#SOZ````!5F:6YI<VAE9"!B>2!'<F5G9RXN+@`"``$`
- XM`!0`+P``````//`(`#SP6````#-(86-K5T(@:7,@8V]P>7)I9VAT($=R96=G
- XM(%=O;F1E<FQY(&%N9"!+96X@3&]R8F5R+``"``$```H`.```````//)X````
- XM`````#8Q.3DR('-E92!.971(86-K(&QI8V5N<V4@9F]R(&1E=&%I;',@86YD
- XM(&QI;6ET871I;VYS(0```A`.`&`"8``%``7_____````````````````````
- XM``````````````,`/-#P```````'2&5L<#-?```!`$P`"P'N`+T`!0`%____
- XM_P```"!(96QP(&9O<B!.971H86-K(%=O<FM"96YC:"!6,RXQ```_1*@`#`"M
- XM`"\`"@````,``0`_1'P``````#SC4`````````````,`/.3`_____P(```4`
- XM/T2,````````````,````#``"P````L```````````$``0``"``"```````\
- XMT1``````````!4925T0`````$@````,`/-)X`#S3J``\W!@`/.<(`#S=>``\
- XMWD`````!``````$``````0`````,1T%$2$5,4$925T0``````0`````!```_
- XM10`!L@"M`"\`"@````,``0`_1-0``````#SH2`````````````0`/.DP____
- XM_P(```4`/T3D````````````,````#``"P````L```````````$``0``"``"
- XM```````\WM@`````````!4)+5T0`````$@````,`/-]@`#S@6``\XS``//(H
- XM`#SC<``\Y.@````!``````$``````0`````,1T%$2$5,4$)+5T0``````0``
- XM```!````````P@"P`"$`"``#``,``0`\\D``````````````````````__\`
- XM/TM0_____P,```4`/T4\````````````(@```"(`"0````D``````#SR0/]`
- XM__D!```"`#SG(``````````(``````'I```````)``,``0`\\,``//)8`#SR
- XM:``_15@`/TMX`#]+B`````$``````0`````!``````,M,0`````!``````$`
- XM``(0#@`D@T``!0`%_____P`_6V@`/W@@```````````````````````'`#RM
- XM"```````!D1E9G-?```!`*0`/`%``$8`!0`%_____P```!U%9&ET($1E9F%U
- XM;'0@1V%M92!$969I;FET:6]N```_7W``A``.`+,`"0````,`!``\VX0`````
- XM````````````/,R(````/,_0_____P,```4`/-N4````````````M````+0`
- XM"@````H``````````````#)#=71.2&%C:P`@("`@("`H`"W\,``MTB@`B``L
- XM`)(`2@```````````````````````````1(````!`#RM&``\KS@`/,-@`#S0
- XM4``\PW``/,Y(````"U!L87EE<DYA;64``````0`````!``````Q'041#2$%2
- XM3D%-10`````!``````$``#]?R`"$`"@`LP`*``,``P`!`#]?G```````/-O8
- XM````````````!``\W@#_____`P``!0`_7ZP```````````"T````M``+````
- XM"P```````````0`!```!``(``````#S;^``````````-07)C:&5O;&]G:7-T
- XM``````@``P```#S>*``\WG@`/-Z(`#S>P``\WN@`/-\@````"U!L87EE<E1Y
- XM<&4``````0`````!``````,M,0`````!``````$``#]@(``,`#<`,0`*````
- XM`P`!`#]?]```````/-\P````````````!0`_5(C_____`0``!0`_8`0`````
- XM```````R````,@`+````"P```````````0`!```(``(``````#S?4```````
- XM```%3&]A9``````*`````0`\\1``//%@`#SR&``_1\@`//,P`#SSV`````$`
- XM`````0`````!``````M'041$149,3T%$``````$``````0``/V&(`0P`-P`K
- XM``H````#``$`/V!,```````_5D`````````````&`#]76/____\!```%`#]@
- XM7````````````"P````L``L````+```````````!``$```4``@``````//00
- XM``````````53879E``````H````!`#STH``\]-``//4``#]8,``\]H@`/T=(
- XM`````0`````!``````$`````"T=!1$1%1E-!5D4``````0`````!```_8>``
- XM;P`W`&P`"@````,``0`_8;0``````#]8R`````````````<`/UF(_____P$`
- XM``4`/V'$````````````;0```&T`"P````L```````````$``0``!@`"````
- XM```_61``````````#45D:70@3W!T:6]N<P`````*`````0`_1V@`/T>(`#]'
- XMJ``_6=@`/TO0`#]00`````$``````0`````!``````U'041%1$]05$E/3E,`
- XM`````0`````!````````A``;`+,`"0````,`!``_8@P`````````````````
- XM/UPP````/UIX_____P,```4`/V(<````````````M````+0`"@````H`````
- XM`````````#)#=71.2&%C:P`@("`@("`H`"W\,``MTB@`B``L`)(`2@``````
- XM`````````````````````1(````!`#]:R``_62@`/UGP`#];&``_6N``/ULP
- XM````#$1E9F%U;'1.86UE``````$``````0`````+1T%$3U541DE,10`````!
- XM``````$``#]<8`$0`$8````'````/UVX``````````I#:&%R86-T97(``#];
- XM^``_8'@\/P`_8P``````$```/V,H```?_@$"`P$`$P````````";``@`````
- XM``````````=286YD;VT``````0``/V(X`#]C<#1!`#]C2``````0```_8X``
- XM`!_]`0(#`0`3```````(`',`"```````````````#4%R8VAE;VQO9VES=```
- XM```!```_8\@`/V/@-$(`/V.@`````!```#]C\```'_L!`@,!`!,``````!``
- XMFP`(```````````````*0F%R8F%R:6%N``````$``#]ND``_;J@T0P`_;F@`
- XM````$```/VZX```?]P$"`P$`$P``````&`";``@```````````````E#879E
- XM($UA;@`````!```_;P``/V\0-$4`/V[8`````!```#]O(```'^\!`@,!`!,`
- XM`````"``FP`(```````````````$16QF``````$``#]O:``_<A`T2``_;T``
- XM````$```/W(@```?WP$"`P$`$P``````*`";``@```````````````=(96%L
- XM97(``````0``/W)H`#]R>#1+`#]R0``````0```_<H@``!^_`0(#`0`3````
- XM```P`)L`"```````````````!TMN:6=H=``````!```_<M``/W+@-%``/W*H
- XM`````!```#]R\```'W\!`@,!`!,``````#@`FP`(```````````````'4')I
- XM97-T``````$``#]S$``_=4`T4@`_=1@`````$```/W50```>_P$"`P$`$P``
- XM````0`";``@```````````````92;V=U90`````!```_=9@`/W6H-%,`/W5P
- XM`````!```#]UN```'?\!`@,!`!,``````$@`FP`(```````````````(4V%M
- XM=7)A:0`````!```_=@``/W80-%0`/W78`````!```#]VB```&_\!`@,!`!,`
- XM`````%``FP`(```````````````(5&]U<FES=``````!```_=P@`/W8@-%8`
- XM/W;@`````!```#]W(```%_\!`@,!`!,``````%@`FP`(```````````````)
- XM5F%L:WER:64``````0``/W=H`#]X$#17`#]W0``````0``````````__`0(#
- XM`0`3``````!@`)L`"```````````````!U=I>F%R9``````!``$``0``#P`/
- XM```````_>$``/WA8````#U!L87EE<B=S($YA;64Z``$``0``+P`J```````_
- XM>'@`/WB0````"T-H87)A8W1E<CH``0`!```?`!P``````#]XL``````````-
- XM3W5T4'5T($9I;&4Z```"$`X`)`)@``4`!?____\``````#]0&```````````
- XM````````````!``\PE````````52<W1?```"`+$`/`$G`#D`!0`%_____P``
- XM`!-296-O=F5R(%!A<F%M971E<G,``#^`T`!E``\`N@`)```"`P`$`#]^3```
- XM```````````````_4&`````_19#_____`P``!0`_?EP```````````"[````
- XMNP`*````"@`````````````!+```````!``;``!H*``./\_XA`!$``````*`
- XM`,C__P``)0```A!'````````````.0?4````````````*``>_____P`!``D`
- XM```!``(``P`(``0`!0`'``D`!@,``0`!F@`!```````Y""`````````````'
- XM````.)FF``$`.)HF``(`.)GF``,`.)DF``0`.)IF``4`.)JF``8`.)EF````
- XM```!```````!```````!```````!```````!`````````````0``````````
- XM``$```````$```````$```````$```````$``````````````````0``````
- XM`0```````0!I``0!MP"^``$```````(00``XF#H`````````````````````
- XM``4``````0H```(!`#SA8``\Y*``/.3X`#]%X``\YK``/.CP````"%)E<W1$
- XM:7(``````0`````!``````M'041215-41$E2``````$``````0``/X2P`&4`
- XM'`"Z``D```(#``0`/X#\`````````````````#^!*````#]'X/____\#```%
- XM`#^!#````````````+L```"[``H````*``````````````$L```````$`!L`
- XM`&@H``X_S_B$`$0``````H``R/__```E```"$$<````````````Y!]0`````
- XM```````H`![_____``$`"0````$``@`#``@`!``%``<`"0`&`P`!``&:``$`
- XM`````#D((`````````````<````XF:8``0`XFB8``@`XF>8``P`XF28`!``X
- XMFF8`!0`XFJ8`!@`XF68```````$```````$```````$```````$```````$`
- XM```````````!`````````````0```````0```````0```````0```````0``
- XM```````````````!```````!```````!`&D`!`&W`+X``0```````A!``#B8
- XM.@``````````````````````!0`````!"@```@$`/.D0`#SQ^``\^/``/T@P
- XM`#SYX``\^[@````(4F5S=$]L9``````!``````$`````"T=!1%)%4U1/3$0`
- XM`````0`````!```_A0@`"@`J`#D`"@````,``0`_A-P``````#]*&```````
- XM``````4`/TQX_____P,```4`/X3L````````````.@```#H`"P````L`````
- XM``````$`````#``!```````_1S@`````````!4]K87D`````"@````$`/TP0
- XM`#](2``_23``/TS(`#])4``_3#@````)4F5S=$]K87D``````0`````!````
- XM``Q'041215-43TM!60`````!``````$```````#F`"H`.0`*`````P`!`#^%
- XM-```````/TT8````````````!@`_36C_____`P``!0`_A40````````````Z
- XM````.@`+````"P```````````0`````%``$``````#],X``````````'0V%N
- XM8V5L``````H````!`#]/>``_3<@`/TWH`#]/R``_3R``/T]`````"U)E<W1#
- XM86YC96P``````0`````!``````M'041215-40T%.``````$``````0`!````
- XM``X`#P``````/U(0`#]22`````M$:7)E8W1O<GDZ``$`````$@`=```````_
- X44G@`````````"D]L9"!&:6QE.@!$
- X`
- Xend
- END_OF_FILE
- if test 28885 -ne `wc -c <'sys/amiga/wbwin.uu'`; then
- echo shar: \"'sys/amiga/wbwin.uu'\" unpacked with wrong size!
- fi
- # end of 'sys/amiga/wbwin.uu'
- fi
- echo shar: End of archive 77 \(of 108\).
- cp /dev/null ark77isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \
- 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \
- 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \
- 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 \
- 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 \
- 101 102 103 104 105 106 107 108 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 108 archives.
- echo "Now execute 'rebuild.sh'"
- rm -f ark10[0-8]isdone ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-