home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 January
/
usenetsourcesnewsgroupsinfomagicjanuary1994.iso
/
sources
/
games
/
volume14
/
umoria4
/
part33
< prev
next >
Wrap
Internet Message Format
|
1992-08-31
|
59KB
Path: uunet!zephyr.ens.tek.com!master!saab!billr
From: billr@saab.CNA.TEK.COM (Bill Randle)
Newsgroups: comp.sources.games
Subject: v14i065: umoria4 - single player dungeon simulation (ver. 5.5), Part33/39
Message-ID: <3429@master.CNA.TEK.COM>
Date: 22 Aug 92 22:14:59 GMT
Sender: news@master.CNA.TEK.COM
Lines: 2070
Approved: billr@saab.CNA.TEK.COM
Submitted-by: grabiner@math.harvard.edu (David Grabiner)
Posting-number: Volume 14, Issue 65
Archive-name: umoria4/Part33
Supersedes: umoria3: Volume 9, Issue 55-97; Volume 10, Issue 15-17
Environment: Curses, Unix, Mac, MS-DOS, Atari-ST, Amiga, VMS
#! /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 33 (of 39)."
# Contents: doc/ERRORS ibmpc/tcio.c mac/MakeFile.hqx mac/miscrsrc.hqx
# mac/scrnmgr/ScrnMgr.r source/potions.c unix/unix.c
# Wrapped by billr@saab on Thu Aug 20 09:11:35 1992
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'doc/ERRORS' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'doc/ERRORS'\"
else
echo shar: Extracting \"'doc/ERRORS'\" \(746 characters\)
sed "s/^X//" >'doc/ERRORS' <<'END_OF_FILE'
Xmoria.ms should:
X
Xthe backslashes in the direction table don't show up in the output for
Xsome reason
X
Xexplain non obvious spells/prayers, many of the priest spells are confusing,
Xreally should have a general section on spells explaining the 'G' command,
Xhow int/wis and level affects number of spells/prayers, how area effect
Xspells work, centering before casting an area effect spell is very useful
Xand perhaps other stuff about spells/magic
X
Xexplain the special inventory/equipment mode?
X
Xexplain how misc abilities depend on level, give table of class versus
Xability showing the relative gain per level values
X
Xmention too-heavy weapons?
X
Xsays nothing about levels and EXP
Xshould mention that level 40 is the highest level that can be reached
END_OF_FILE
if test 746 -ne `wc -c <'doc/ERRORS'`; then
echo shar: \"'doc/ERRORS'\" unpacked with wrong size!
fi
# end of 'doc/ERRORS'
fi
if test -f 'ibmpc/tcio.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'ibmpc/tcio.c'\"
else
echo shar: Extracting \"'ibmpc/tcio.c'\" \(8922 characters\)
sed "s/^X//" >'ibmpc/tcio.c' <<'END_OF_FILE'
X/* ibmpc/tcio.c: terminal I/O code for Turbo C
X
X Copyright (c) 1989-92 James E. Wilson, Eric Vaitl
X
X This software may be copied and distributed for educational, research, and
X not for profit purposes provided that this copyright and statement are
X included in all such copies. */
X
X/* This I/O module doesn't need PCcurses. You may also need to make some
X changes to ms_misc.c. */
X
X#include <alloc.h> /* malloc() */
X#include <ctype.h>
X#include <dos.h>
X#include <stdlib.h> /* getenv() */
X#include <stdio.h> /* putch */
X#include <process.h> /* spawnl() */
X#include <conio.h> /* window(), gotoxy() */
X
X#ifdef __TURBOC__
X#include <string.h>
X#endif /* __TURBOC__ */
X
X#include "config.h"
X#include "constant.h"
X#include "types.h"
X#include "externs.h"
X
X#define MSG_LEN 73
X#define LINES 25
X#define COLS 80
X
Xstatic void *savescr; /* pointer to a saved screen */
X
Xvoid init_curses(void){
X if((savescr=malloc(LINES*COLS*2))==NULL){
X puts("Out of memory in init_curses()");
X exit(1);
X }
X clrscr();
X msdos_raw();
X}
X
X
Xint get_string(char *in_str,int row,int column,int slen)
X{
X register int start_col, end_col, i;
X char *p;
X int flag, aborted;
X
X aborted = FALSE;
X flag = FALSE;
X gotoxy(column+1,row+1);
X for (i = slen; i > 0; i--)
X putch(' ');
X gotoxy(column+1,row+1);
X start_col = column;
X end_col = column + slen - 1;
X if (end_col > 79)
X {
X slen = 80 - column;
X end_col = 79;
X }
X p = in_str;
X do
X {
X i = inkey();
X switch(i)
X {
X case ESCAPE:
X aborted = TRUE;
X break;
X case CTRL('J'): case CTRL('M'):
X flag = TRUE;
X break;
X case DELETE: case CTRL('H'):
X if (column > start_col)
X {
X column--;
X put_buffer(" ", row, column);
X move_cursor(row, column);
X *--p = '\0';
X }
X break;
X default:
X if (!isprint(i) || column > end_col)
X bell();
X else
X {
X gotoxy(column+1,row+1);
X putch((char) i);
X *p++ = i;
X column++;
X }
X break;
X }
X }
X while ((!flag) && (!aborted));
X if (aborted)
X return(FALSE);
X /* Remove trailing blanks */
X while (p > in_str && p[-1] == ' ')
X p--;
X *p = '\0';
X return(TRUE);
X}
X
Xvoid put_buffer(char *out_str,int row,int col){
X vtype tmp_str;
X if (col>79) col=79;
X strncpy(tmp_str,out_str,79-col);
X tmp_str[79-col]='\0';
X gotoxy(col+1,row+1);
X cputs(tmp_str);
X}
X
Xvoid put_qio(void){
X/* nothing to do */
X}
X
Xvoid restore_term(void){
X fflush(stdout);
X clear_screen();
X msdos_noraw();
X}
X
Xvoid shell_out(void){
X char *comspec;
X#ifndef __TURBOC__
X char key;
X int val;
X char *str;
X#endif /* __TURBOC__ */
X save_screen();
X clear_screen();
X puts("[Entering DOS shell, type exit to return to game.]");
X msdos_noraw();
X ignore_signals();
X if((comspec=getenv("COMSPEC")) ==NULL ||
X spawnl(P_WAIT,comspec,comspec,(char *)NULL)<0){
X puts("Sorry, there seems to be a problem with shell_out()");
X printf("comspec = %s\n",comspec);
X flush();
X puts("Hit a key to continue");
X while(!kbhit())
X ;
X }
X restore_signals();
X restore_screen();
X}
X
Xvoid save_screen(void){
X gettext(1,1,COLS,LINES,savescr);
X}
X
Xvoid restore_screen(void){
X puttext(1,1,COLS,LINES,savescr);
X}
X
Xvoid clear_screen(void){
X window(1,1,COLS,LINES);
X/*
XI think later I might want to define seperate windows, so the above line
Xis definsive code.
X*/
X clrscr();
X}
X
Xvoid clear_from(int row){
X window(1,row+1,COLS,LINES);
X clrscr();
X window(1,1,COLS,LINES);
X}
X
Xvoid flush(void){
X while(kbhit())
X getch();
X}
X
Xvoid erase_line(int row, int col){
X if(row==MSG_LINE&&msg_flag)
X msg_print(NULL);
X gotoxy(col+1,row+1);
X clreol();
X}
X
Xchar inkey(void){
X int i;
X
X command_count=0;
X while(TRUE){
X i=msdos_getch();
X if(i==EOF){
X eof_flag++;
X msg_flag=FALSE;
X if(!character_generated||character_saved) exit_game();
X disturb(1,0);
X if(eof_flag>100){
X panic_save=1;
X strcpy(died_from,"(end of input: panic saved)");
X if(!save_char()){
X strcpy(died_from,"panic: unexpected eof");
X death=TRUE;
X }
X exit_game();
X }
X return ESCAPE;
X }
X if(i!=CTRL('R'))
X return (char) i;
X msdos_raw();
X break;
X }
X return (CTRL('R'));
X}
X
Xvoid print(char ch, int row, int col){
X row -= panel_row_prt;
X col-=panel_col_prt;
X gotoxy(col+1,row+1);
X putchar((int)ch);
X}
X
Xvoid move_cursor_relative(int row, int col){
X row-=panel_row_prt;
X col-=panel_col_prt;
X gotoxy(col+1,row+1);
X}
X
Xvoid count_msg_print(char *p){
X int i;
X i=command_count;
X msg_print(p);
X command_count=i;
X}
X
Xvoid prt(char* str_buff,int row, int col){
X if (row==MSG_LINE&&msg_flag)
X msg_print(NULL);
X gotoxy(col+1,row+1);
X clreol();
X put_buffer(str_buff,row,col);
X}
X
Xvoid move_cursor(int row,int col){
X gotoxy(col+1,row+1);
X}
X
Xvoid msg_print(char* str_buff){
X register int old_len;
X char in_char;
X if(msg_flag){
X old_len=strlen(old_msg[last_msg])+1;
X if (old_len>MSG_LEN)
X old_len=MSG_LEN;
X put_buffer("-more-",MSG_LINE, old_len);
X wait_for_more=1;
X do{
X in_char=inkey();
X }while((in_char!=' ')&&(in_char!=ESCAPE)&&(in_char!='\n')&&
X (in_char!='\r'));
X wait_for_more=0;
X }
X gotoxy(1,MSG_LINE+1);
X clreol();
X if(str_buff){
X put_buffer(str_buff,MSG_LINE,0);
X command_count=0;
X if(++last_msg>=MAX_SAVE_MSG) last_msg=0;
X strncpy(old_msg[last_msg],str_buff,VTYPESIZ);
X old_msg[last_msg][VTYPESIZ-1]='\0';
X msg_flag=TRUE;
X }else
X msg_flag=FALSE;
X}
X
Xint get_check(char*prompt){
X int res;
X prt(prompt,0,0);
X if(wherex()>MSG_LEN +1) gotoxy(74,1);
X cputs(" [y/n]");
X do{
X res=inkey();
X }while(res==' ');
X erase_line(0,0);
X if(res=='Y'||res=='y')
X return(TRUE);
X else
X return(FALSE);
X}
X
Xint get_com(char *prompt,char *command){
X int res;
X if(prompt)
X prt(prompt,0,0);
X *command=inkey();
X if(*command==ESCAPE)
X res=FALSE;
X else
X res=TRUE;
X erase_line(MSG_LINE,0);
X return(res);
X}
Xvoid bell(void){
X if (! sound_beep_flag)
X return;
X
X putchar('\007');
X}
X
X/* the rest is just modified -ev- */
X
X/* definitions used by screen_map() */
X/* index into border character array */
X#define TL 0 /* top left */
X#define TR 1
X#define BL 2
X#define BR 3
X#define HE 4 /* horizontal edge */
X#define VE 5
X
X/* character set to use */
X# define CH(x) (screen_border[1][x])
X
X /* Display highest priority object in the RATIO by RATIO area */
X#define RATIO 3
X
Xvoid screen_map()
X{
X register int i, j;
X static int8u screen_border[2][6] = {
X {'+', '+', '+', '+', '-', '|'}, /* normal chars */
X {201, 187, 200, 188, 205, 186} /* graphics chars */
X};
X int8u map[MAX_WIDTH / RATIO + 1];
X int8u tmp;
X int priority[256];
X int row, orow, col, myrow, mycol = 0;
X char prntscrnbuf[80];
X
X for (i = 0; i < 256; i++)
X priority[i] = 0;
X priority['<'] = 5;
X priority['>'] = 5;
X priority['@'] = 10;
X priority[wallsym] = -5;
X priority[floorsym] = -10;
X priority['\''] = -3;
X priority[' '] = -15;
X
X save_screen();
X clear_screen();
X gotoxy(1,1);
X putch(CH(TL));
X for (i = 0; i < MAX_WIDTH / RATIO; i++)
X putch(CH(HE));
X putch(CH(TR));
X orow = -1;
X map[MAX_WIDTH / RATIO] = '\0';
X for (i = 0; i < MAX_HEIGHT; i++)
X {
X row = i / RATIO;
X if (row != orow)
X {
X if (orow >= 0)
X {
X sprintf(prntscrnbuf,"%c%s%c",CH(VE), map, CH(VE));
X gotoxy(1,orow+2);
X cputs(prntscrnbuf);
X }
X for (j = 0; j < MAX_WIDTH / RATIO; j++)
X map[j] = ' ';
X orow = row;
X }
X for (j = 0; j < MAX_WIDTH; j++)
X {
X col = j / RATIO;
X tmp = loc_symbol(i, j);
X if (priority[map[col]] < priority[tmp])
X map[col] = tmp;
X if (map[col] == '@')
X {
X mycol = col + 1; /* account for border */
X myrow = row + 1;
X }
X }
X }
X if (orow >= 0)
X {
X sprintf(prntscrnbuf,"%c%s%c",CH(VE), map, CH(VE));
X gotoxy(1,orow+2);
X cputs(prntscrnbuf);
X }
X gotoxy(1,orow+3);
X putch(CH(BL));
X for (i = 0; i < MAX_WIDTH / RATIO; i++)
X putch(CH(HE));
X putch(CH(BR));
X gotoxy(24,24);
X cputs("Hit any key to continue");
X if (mycol > 0)
X gotoxy(mycol+1, myrow+1);
X inkey();
X restore_screen();
X}
X
Xvoid pause_exit(int prt_line, int delay)
X{
X char dummy;
X
X#ifdef __TURBOC__
X /* Otherwise, TURBO C complains that delay is never used. */
X dummy = (char) delay;
X#endif
X prt("[Press any key to continue, or Q to exit.]", prt_line, 10);
X dummy = inkey();
X if (dummy == 'Q')
X {
X erase_line(prt_line, 0);
X exit_game();
X }
X erase_line(prt_line, 0);
X}
X
Xvoid pause_line(int prt_line)
X{
X prt("[Press any key to continue.]", prt_line, 23);
X (void) inkey();
X erase_line(prt_line, 0);
X}
X
END_OF_FILE
if test 8922 -ne `wc -c <'ibmpc/tcio.c'`; then
echo shar: \"'ibmpc/tcio.c'\" unpacked with wrong size!
fi
# end of 'ibmpc/tcio.c'
fi
if test -f 'mac/MakeFile.hqx' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mac/MakeFile.hqx'\"
else
echo shar: Extracting \"'mac/MakeFile.hqx'\" \(8517 characters\)
sed "s/^X//" >'mac/MakeFile.hqx' <<'END_OF_FILE'
X(This file must be converted with BinHex 4.0)
X:#%eKDf9'D@aP!&4&@&408&-J!3!!!"E0!!!"IRGE3dp`G'P[ER-J23N*,@)b)#e
Xc)(Y%C@CKG@adI5!YC#"038-J,@eLCb"[EL!YFhPY)'pZ$3e5Fh*M6h"dD@pZFb!
Xp#5eL-L!YE5!YC#"58e*$)#eN)%e"3`d0,Q-ZE`N*#F3*,Q-0#AY$I5"l3dp`G'P
X[ER0p)(Y%CA"%DA*pHd4PCQ&eE(4p,Q-J,@mJHe4KFQG%DA*pHd4PCQ&eE(4p,Q-
XZE`d*$5jbFh*M,Qm*#3R%#5jM$3Pl3hdJHe*cFQ02F(4TEfjcI5"l4'9`4'PbIAY
X%C@CKG@adI5jM)#e[)(Y8BA*R4'PbIAY%C@CKG@adI5jbFh*M,Qm0#3e2BQTPBh4
Xc)$d*#@eKBbjM,QmJYJd*#3N*E@&MBfpZCLjM,QmJYJd*#3N*E@&MD'9XF#jM,Qm
XJYJd*#3N*E@&MFf0[FQ8ZBbj[),B0#3N*#@eKBh*cFQ-ZBbj[),B0#3N*#@eKD@i
XZBbj[),B0#3N*#@0bC@&dC5jM,QmJYJd*#3N*Bh*PBA4eFQ8ZBbj[),B0#3N*#@4
XPBA4S,Q-ZEb#f$3N*#3PNCA0M,Q-ZEb#f$3N*#3PNG@jRC@pZ,Q-ZEb#f$3N*#3P
XPBA3ZBbj[),B0#3N*#@CTE'9c,Q-ZEb#f$3N*#3PRC@jPFQ&dC5jM,QmJYJd*#3N
X*D'9XF#jM,QmJYJd*#3N*E@&MD@mZBbj[),B0#3N*#@eKCfPM,Q-ZEb#f$3N*#3P
XYDA0M-5jM,QmJYJd*#3N*E@PcBc)ZBbj[),B0#3N*#@e[ER0dCA*c,Q-ZEb#f$3N
X*#3PYEh*TB6%ZBbj[),B0#3N*#@e[FQPK-LjM,QmJYJd*#3N*F'aKH@9b,Q-ZEb#
Xf$3N*#3P`Eh4TEfjc,Q-ZEb#f$3N*#3P`FQ&jCA)ZBbj[),B0#3N*#A*PBf&XE#j
XM,QmJYJd*#3N*FQjN,Q-ZEb#f$3N*#3PcBACP,Q-ZEb#f$3N*#3PcBh*[E'ac,Q-
XZEb#f$3N*#3PcCA4c,Q-ZEb#f$3N*#3PcD@GZB@ac,Q-ZEb#f$3N*#3PcF'9XE(-
XZBbj[),B0#3N*#A0dB@CQFbjM,QmJYJd*#3N*Fh4[FQ8a,Q-ZEb#f$3N*#3PcG'p
XbC6)ZBbj[),B0#3N*#A4KBQaPFbjM,QmJYJd*#3N*G(*PBA0eFQ8ZBbj[),B0#3N
X*#A9ZC'9Q,Q-ZEb#f$3N*#3PfBA*TB@*XC5jM,QmJYJd*#3N*Gf&ZC(-ZBbj[),B
X0#3N*#AGTHQ&bC#jM,Qm0#3N*#3e5Fh*MFb!p#3N*E@&MC'&dB5jbFh*M,QmJYJd
X*#3N*E@&MFR0bBbjbFh*M,QmJYJd*#3N*E@pZFh4PFR-ZFR0bBbj[),B0#3N*#A"
XXBAPPFLjbFh*M,QmJYJd*#3N*G'&LE'9c,R*cFQ-ZEb#f$3N*#3PdFQ9KFh9bC5j
XbFh*M,QmJYJd*#3N*GQ&bD@&LE'8ZFR0bBbj[$3N*#3N09'9iG(-J23N*#@jPGh-
XJYJd*#3N*Eh*TCf0YC(-ZD'a`),B0#3N*#@phDATME@4c,QKXF##f$3N*#3PbEfG
XXBfeNFbjSE(!JYJd*#3N*FRGTHQ0YC(-ZD'a`),B0#3N*#ACPFR0TEfiZD'a`),B
X0#3N*#AGPE'0[E@8ZD'a`$3N*#3N0)b"+9cSJ3e*eER4TE@8ZEb"KEQ3J3dPZG'9
XbCQ&MC5j[)'4PE'9dC@3JBA-J55"hBA-JG'pXC#"dD'&d)(4SCANJBA*P)'pLFfp
XXCA4P$8e[FQPK#3N*a-3*He*cFQ0cI3d*6'PZDb!YE@&`)#eh)#ed)#G08&08*b!
XYBb!R69"6)#Hf$3N*,A0c)$)`-$!`-#!YFh*d),B0#3Pl8R0bBh0p),B0#3NLHd0
X-D@*bBA*TCA0p)N4eEA"5CA-ZEb#f$3N*)RY-D@*bBA*TCA0p)R0dG@*c,QmJYJd
X*#5*l6'PLFQ&bD@9cI5*5G@jdD@eP,QmJYJd*#5*l6'PLFQ&bD@9cI5**ER4PFQC
XKBf8ZEb#f$3N*)RY$6'PLFQ&bD@9cI5*6G'4$6'PL,QmJYJd*#5*l3daTBR*KFQP
XPFhdL3e0"6N9-D@)ZEb#f$3N*)RY$6'PLFQ&bD@9cI5*0BA4S,QmJYJd*#5*l6'P
XLFQ&bD@9cI5*8EfpX6'PLFbj[),B0#3Nq)'eKBf4KG'%ZE@&`$3P-D@jV,NpeG#"
X0Eh*TB3d*4'9XCA4P)%aTEQXZ6h9d$3e0Eh*TB5!*#3R%a#!*HdpLDQ9MG(0p$3P
X-D@jV)#eYBA!J,AFJ,A3J*d&38%`R)#eM)#G08NP"*lB0#3NYH#"YEh*TB5jiFQ9
XQ),B0#3NYFhPY)'pZ),B0#3NYEb"0Eh*TB5#f$3N*,A*K)$de-L#f$3N*,A0R)%e
XKD@ipE@&M,'eKD@iXFQjN,(0TCfjKE(-XG@jNC@BXE@&MFR0bBb#f$3N*,A*K)%e
XKD@ip06)JYJd*#5ecCb"*6ceYB@0TEb#f$3N*,A*K)%P2268b),B0#3NYFfFJ3A"
X`6@9ZG6eYB@0SC@a`,'eKBf0[EQBXE@&MFf0[FQ8JYJd*#5ebB5""F("0C@je26-
Xb),B0#3NYFfFJ3h*PBA4P2@0bC@&dC5#f$3N*,A*K)%0bC@&dC6dc-L#f$3N*,A0
XR)%0bC@&dGA*P2@0bC@&dGA*P),B0#3NYFQ%J3h*PBA4eFQ8p-c)JYJd*#5ecCb"
X%C@&dD$eNC@&dD##f$3N*,A*K)%4PBA4S26-b),B0#3NYFfFJ4(9ZCf9[EMeNG@j
XRC@pZ),B0#3NYFQ%J4(9ZCf9[EMde-L#f$3N*,A0R)%9KG$ePBA3JYJd*#5ebB5"
X&BA3p-c)JYJd*#5ecCb"'D@aPFceQD@aPFb#f$3N*,A*K)%CTE'9c26-b),B0#3N
XYFfFJ4f9ZCA*KG'8pCf9ZCA*KG'8JYJd*#5ebB5"(C@jPFQ&dC6dc-L#f$3N*,A0
XR)%KPE(!pD'9XF##f$3N*,A*K)%KPE(!p-c)JYJd*#5ecCb"0B@GTBceYB@GTBb#
Xf$3N*,A*K)%eKCfPM26-b),B0#3NYFfFJ6@PcBc%pE@PcBc%XC'9cBbacCA4c),B
X0#3NYFQ%J6@PcBc%p06)JYJd*#5ecCb"0DA0M-MeYDA0M-L#f$3N*,A*K)%eTFf-
Xb268b),B0#3NYFfFJ6@pbD@%a2@e[FQPK-5#f$3N*,A*K)%e[FQPK-6de-L#f$3N
X*,A0R)%e[FQPK-MeYEh*TB6)JYJd*#5ebB5"0Eh*TB6)p06)JYJd*#5ecCb"3FQ&
XjCA)pF(*KH@9b),B0#3NYFQ%J8(*KH@9b26-b),B0#3NYFfFJ8'pdD@pZFce`Eh4
XTEfjc),B0#3NYFQ%J8'pdD@pZFcdc-L#f$3N*,A0R)&*PBf&XE$ebC@0KE'`JYJd
X*#5ebB5"5C@0KE'`p-c)JYJd*#5ecCb"6BACP2A0KGQ8JYJd*#5ebB5"6BACP26-
Xb),B0#3NYFfFJ8f0bEfaXFcecBh*[E'ac),B0#3NYFQ%J8f0bEfaXFcdc-L#f$3N
X*,A0R)&0`C@aXFcecF'9XE(-JYJd*#5ebB5"6F'9XE(-p06)JYJd*#5ecCb"6G'&
XQCR-pFh4KCQCc),B0#3NYFQ%J8h4KCQCc26-b),B0#3NYFfFJ8h4[FQ8pFh4[FQ8
Xa,(0dEh*P-L#f$3N*,A*K)&0dEh*P26-b),B0#3NYFfFJ9f&ZC(-pGf&ZC(-JYJd
X*#5ebB5"AB@jNFcdc-L#f$3N*,A0R)>HQ&bC$ehDATKFQ3JYJd*#5ebB5"ADAT
XKFQ3p-c)JYJd*#AY2BQTPBh4cI5#f$3N*)RY$6'PLFQ&bD@9cI5*6Bh*Z6@Gb,Qm
XJYJd*#5*l3daTBR*KFQPPFhdL4(9YF&*PFbj[),B0#3NLHd0-D@*bBA*TCA0p)N0
X5G@jdD@eP,QmJYJd*#5*l6'PLFQ&bD@9cI5**ER4PFQCKBf8ZEb#f$3N*)RY$6'P
XLFQ&bD@9cI5*6G'4$6'PL,QmJYJd*#5*l3daTBR*KFQPPFhdL3e0"6N9-D@)ZEb#
Xf$3N*)RY$6'PLFQ&bD@9cI5*0BA4S,QmJYJd*#5*l3daTBR*KFQPPFhdL3dPZG'9
XbCQ&MC5j[),B0#3Nq)'e[FQPK,QeKF!d*8f9d4QPXC5!YB5"#)%e[FQPK$3e0Eh*
XTB3N*#F6%#@e[FQPK,R)0#9*PHL"YEh*TB5jb)#eKF("PEQ3J,@mJ6@pbD@%J,A-
XJHe**EQ0XG@4PFhd0#3e0Eh*TB3N*#F6%#AY8CAKdFhd0#8C[FL"'D@aP6Q&YC5"
XTEL"l9'9iG(0p$3N*5@BJ)RY'D@aP6Q&YCAdL)$eq)#r&1LM&+DJa,`d*#3P&BfK
X[)#)MHkJaI5)0#3P&E(0P$3N*#89MD'mJ)L0l4QPXC8jKE@9p)Jd*#89ZC!d*#80
XKG'9ZBA4P)#*l4QPXC8jKE@9p)Jd*4@jN)(`J4@jdB@)J,@3J1#!YG#!`)$iJ6@p
XbD@%0#90PG%CTE'8J,@-J*de558%R)#ed)#G"8&"-*b"0Eh*TB3d*$5-J4QPXCA-
XJGbp[)#)ZD#)JC'9`C@jNC@jMD@9c)#dY$5-*E@&MBfpZCLjM$5-*E@&MD'9XF#j
XM$3eYB@-ZBbj[#3N*#F3*BfpZFh4KER3ZD#"MEfjQD@FZD#"dHA"PFbjS)'9iG'9
XbER-ZD#"YB@0bFh*M,QJ0E@&MFf0[FQ8ZBbj[#3R%#@0[ER0dB@jd,QJJBfpZCQP
XR,QJJG(P`CA-ZD#"PH(4PFQjc,QJ0E@&MFR0bBbjM,Qm*#3R%#@0[ER0dB@jd,QJ
XJBfpZCQPR,QJJG(P`CA-ZD#"PH(4PFQjc,QJJE@&MFR0bBbjS$3eYB@PZ,Q-ZE`N
X*#F3*BfpZFh4KER3ZD#"MEfjQD@FZD#"dHA"PFbjS)'9iG'9bER-ZD!eMFQ9KG'8
XZBbj[#3N*a!PMEfjcG'&ZG#jS)'0[EQCTCbjS)(4jF'9c,QJJCAKdCA*ZFbjS$@0
XbC@&dGA*P,Q-ZE`N*a!PMEfjcG'&ZG#jS)'0[EQCTCbjS)(4jF'9c,QJJCAKdCA*
XZFbjS$@4PBA4S,Q-ZE`N*#F3*BfpZFh4KER3ZD#"MEfjQD@FZD#"dHA"PFbjS)'9
XiG'9bER-ZD!eNCA0M,Q-ZE`N*#F3*BfpZFh4KER3ZD#"MEfjQD@FZD#"dHA"PFbj
XS)'9iG'9bER-ZD!eNG@jRC@pZ,Q-ZE`N*#F3*BfpZFh4KER3ZD#"MEfjQD@FZD#"
XdHA"PFbjS)'9iG'9bER-ZD!ePBA3ZBbj[#3N*#F3*BfpZFh4KER3ZD#"MEfjQD@F
XZD#"dHA"PFbjS)'9iG'9bER-ZD!eQD@aPFbjM,Qm*#3R%#@0[ER0dB@jd,QJJBfp
XZCQPR,QJJG(P`CA-ZD#"PH(4PFQjc,QJ0Cf9ZCA*KG'8ZBbj[#3R%#@0[ER0dB@j
Xd,QJJBfpZCQPR,QJJG(P`CA-ZD#"PH(4PFQjc,QJ0D'9XF#jM,Qm*#3R%#@0[ER0
XdB@jd,QJJBfpZCQPR,QJJG(P`CA-ZD#"PH(4PFQjc,QJ0E@&MD@mZBbj[#3N*a!P
XMEfjcG'&ZG#jS)'0[EQCTCbjS)(4jF'9c,QJJCAKdCA*ZFbjS$@eKCfPM,Q-ZE`N
X*#F3*BfpZFh4KER3ZD#"MEfjQD@FZD#"dHA"PFbjS)'9iG'9bER-ZD!eYDA0M-5j
XM,Qm*#3R%#@0[ER0dB@jd,QJJBfpZCQPR,QJJG(P`CA-ZD#"PH(4PFQjc,QJ0E@P
XcBc)ZBbj[#3N*a!PMEfjcG'&ZG#jS)'0[EQCTCbjS)(4jF'9c,QJJCAKdCA*ZFbj
XS$@e[ER0dCA*c,Q-ZE`N*a!PMEfjcG'&ZG#jS)'0[EQCTCbjS)(4jF'9c,QJ0E@p
XbD@%a,Q-ZE`N*#F3*BfpZFh4KER3ZD#"MEfjQD@FZD#"dHA"PFbjS)'9iG'9bER-
XZD!eYEh*TB6)ZBbj[#3N*a!PMEfjcG'&ZG#jS)'0[EQCTCbjS)(4jF'9c,QJJCAK
XdCA*ZFbjS$A"XBAPPFLjM,Qm*#3R%#@0[ER0dB@jd,QJJBfpZCQPR,QJJG(P`CA-
XZD!e`Eh4TEfjc,Q-ZE`N*#F3*BfpZFh4KER3ZD#"MEfjQD@FZD#"dHA"PFbjS)'9
XiG'9bER-ZD!e`FQ&jCA)ZBbj[#3N*a!PMEfjcG'&ZG#jS)'0[EQCTCbjS)(4jF'9
Xc,QJJCAKdCA*ZFbjS$A*PBf&XE#jM,Qm*#3R%#@0[ER0dB@jd,QJJBfpZCQPR,QJ
XJG(P`CA-ZD#"PH(4PFQjc,QJ0FQjN,Q-ZE`N*#3R%#@0[ER0dB@jd,QJJ)#!J)#!
XJ)#!JG(P`CA-ZD!ecBACP,Q-ZE`N*#F3*BfpZFh4KER3ZD#"MEfjQD@FZD#"dHA"
XPFbjS)'9iG'9bER-ZD!ecBh*[E'ac,Q-ZE`N*#F3*BfpZFh4KER3ZD#"MEfjQD@F
XZD#"dHA"PFbjS)'9iG'9bER-ZD!ecCA4c,Q-ZE`N*#F3*BfpZFh4KER3ZD#"MEfj
XQD@FZD!ecD@GZB@ac,Q-ZE`N*#F3*BfpZFh4KER3ZD#"MEfjQD@FZD#"dHA"PFbj
XS)'9iG'9bER-ZD!ecF'9XE(-ZBbj[#3N*a!PMEfjcG'&ZG#jS)'0[EQCTCbjS)(4
XjF'9c,QJJCAKdCA*ZFbjS$A0dB@CQFbjM,Qm*#3R%#@0[ER0dB@jd,QJJBfpZCQP
XR,QJJG(P`CA-ZD#"PH(4PFQjc,QJ0Fh4[FQ8a,Q-ZE`N*#F3*BfpZFh4KER3ZD#"
XMEfjQD@FZD#"dHA"PFbjS)'9iG'9bER-ZD!ecG'pbC6)ZBbj[#3N*a!PMEfjcG'&
XZG#jS)'0[EQCTCbjS)(4jF'9c,QJJCAKdCA*ZFbjS$A4KBQaPFbjM,Qm*#3R%#@0
X[ER0dB@jd,QJJBfpZCQPR,QJJG(P`CA-ZD!edFQ9KFh9bC5jM,Qm*#F3*BfpZFh4
XKER3ZD#"MEfjQD@FZD#"dHA"PFbjS$A9ZC'9Q,Q-ZE`N*#F3*BfpZFh4KER3ZD#"
XMEfjQD@FZD#"dHA"PFbjS)'9iG'9bER-ZD!efBA*TB@*XC5jM,Qm*#F3*BfpZFh4
XKER3ZD#"MEfjQD@FZD#"dHA"PFbjS$AGKEQ4c,Q-ZE`N*#F3*BfpZFh4KER3ZD#"
XMEfjQD@FZD#"dHA"PFbjS)'9iG'9bER-ZD!ehDATKFQ3ZBbj[#3N*a!PMEfjcG'&
XZG#jS)'0[EQCTCbjS)(4jF'9c,QJJCAKdCA*ZFbjS$3eYB@0NBA4K,R*cFQ-ZE`N
X*a!NJ)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)'eKBh*cFQ-
XZD!eYB@0bFh*M,R*cFQ-ZE`N*a!PMEfjcG'&ZG#jS)'0[EQCTCbjS)(4jF'9c,QJ
XJCAKdCA*ZFbjS)'eKBh*cFQ-ZD!eYEfjcG'9bFbjbFh*M,Qm*#F3*BfpZFh4KER3
XZD#"MEfjQD@FZD#"dHA"PFbjS$A"XBAPPFLjbFh*M,Qm*#F3*BfpZFh4KER3ZD#"
XMEfjQD@FZD#"dHA"PFbjS$A4KBQaPFbjbFh*M,Qm*#F3*BfpZFh4KER3ZD#"MEfj
XQD@FZD#"dHA"PFbjS$A4bC@&cGA*P,R*cFQ-ZE`N*a!PMEfjcG'&ZG#jS)'0[EQC
XTCbjS)(4jF'9c,QJ0GQ&bD@&LE'8ZFR0bBbj[#3R%#@0[ER0dB@jd,QJJBfpZCQP
XR,QJJG(P`CA-ZD!fU&J!!!3!!!!&-!!!!6!!!!$)!!!!F!%!!3!#D!F3!!3%!!!!
X!!!!!!))(3fpZCQPbE3K0B@YP4QPXC5d#!!!!9%9B9%e38b!"!!!!!%!!!!!!!!"
X849K869"6)!%!!!!!3!!!!!!!!!!!!!!!!!!!!!!!!++&Jjm!!"E0!!!"IJ#$!!!
X!!*3!"`!!!!!!M!%!!*i"4J3$6Q9h!!!!!!!!TJ%!!,J"4J3'3f&ZBf9X!!!!!!#
X0!!i!R3#kL!Y1CAFJ9fPZC'ph1J!!!!!!!"S!h`!Z!9Z!!!!!!!!!0!%!!%B"4J3
X&4@TPBh3!!!!!!!"1!3!!B!&'"!9%FQPfC3!!!!!!!!")!!P0EfjKBfm!!!!!!!!
X!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!3!2J!2!G-#F`!q!!m"d`*cSS@5q3!!&Xd
X!!"E0!!!6e`%!!!!"!!!!!8`!!!"-!!!!-J!Z#8!)&J!!!"`!-J!!69"68J!!!!S
X$lIrr!!!!!!![$)42eJ:
END_OF_FILE
if test 8517 -ne `wc -c <'mac/MakeFile.hqx'`; then
echo shar: \"'mac/MakeFile.hqx'\" unpacked with wrong size!
fi
# end of 'mac/MakeFile.hqx'
fi
if test -f 'mac/miscrsrc.hqx' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mac/miscrsrc.hqx'\"
else
echo shar: Extracting \"'mac/miscrsrc.hqx'\" \(8821 characters\)
sed "s/^X//" >'mac/miscrsrc.hqx' <<'END_OF_FILE'
X(This file must be converted with BinHex 4.0)
X:%NeKBde[FQPK,QeTFf-ZFR0bB`"bFh*M8P0&4!%!!!!!!!!!'5,RM3!!!!!"!!!
X!'0`!!"IF!!!!4J!!#'%(D'9KC'9bF`%!!!!!&3!!#'F!!!!!SkTl%`!!%NeKBde
X[FQPK,QeTFf-ZFR0bBfm#!!!!FR0bBe*6483!!(*cFQ058d9%!3!!!!$!!!!!!!!
X!!!!!!!!!!!!!!!!!T48J)`!!!!!!!"NL!!!"!!!!!!!)D!!!!!!!!!!!!!!!!!!
X!)ai!!#3!S*Q#Ck$H'l8!!!!!33!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
X!b98!%J!!!!!!!!!!!!!!!!d!!!!)B3GcEh9bBf9c!3!!!!!V!!!)D3!!!!#MURX
XR!!!!!!"5!"J"*`!!&pK8D'Pc)'Pc)&9YEh*TB5!e,M-Z-5!SEh)JD@BJH@pe)("
XbC@CPFL`J6@&M6@pbD@%J05ic,M%T,Je3E'9KFf8JFf9ZC#"MEfeYC@jdFb"KEQ3
XJBR9R)(*PF'pbG(-JG'mJ$AGTE(0[EN"PFQjTC5j#CA*VC@aPH5j&4&8J+%TTE5"
XAD@acEfiT)'pb$@*c3'0c,Q*bB@jNC@Pc,Q9NG5!S3Q9ZDQ&YD@iJ8f0SFQ9TBQ9
Xb+5i0$99cCA*c)'pQ)("bCACTEh9c)(CPFR0TEfjc)'pQ)%eKBb"0Eh*TB5"cD'p
XeE'3JC'PcBf&bC#"dD'8J$@pXC#"`FQpRFQ&Y,L!J6h4SCA*hDA0P,#"dD'8J4QP
XZC'9b)'eTCfKd)'GPG#"MEfjQGA0PC#"hD'9Z)!ejEh8JC'peBQaP,@0XD@0V)'p
XZ)'%JFf&fC@3JCf&YC5"dEb"cG'&bG#"0Eh*TB5i0$5SU+LSU+LSU+LSU+LSU+LS
XU+LSU+LSU+LSU+LSU$3e0Eh*TB5"TFb"K)'4eEQGPEfiJCAK`E'pbBA4TEfiJCf&
XYC5iJ)&4SC5"ZB@eP)'0[E@9c)'CbEfdJ$G*8D'8J6'pbC#"[CL"dD'8J8QPZCh2
X6)(4bD@a[ChNJGh*TG(4PEL"LH5"+,L"5,L"5,L!09'pXDfPPELiJ)%e[FQPK)'P
Xc)("bEfj[G@jMC@3JGfPdD#"dD'8JB@0MC@jd)'pZ)(4SC5"QDA*cG#!0FhPXE'&
XLE'8X)'8ZCbiJ68p545ePC5eKD#iJ)%C[FL"NCA4KD@ac)'pZ)(4SC5"RB@eP)'P
XdFf9XCL`J$A"XC@&cC5"bC@&N)(4SC5"0Eh*TB5"%Ef0c)'CTE'8JG'KKG#"TFb"
XNDA0dFQPLGA4PC#"KE'pZCb!0GfPdD#"0Eh*TB5i0$8e[FQPK)(GKFb"[FQPRD@j
XKE'aj)(GbDA4dC@iJCQpb)&C"@#p@69-JFhPcG'9YFbiJ)%&c)(0eBfJX)!eTG#"
XTFb"SC@&fD@aj)'4PF'9ZC'9ZG#"[EL"dD'8JDf9jBQpKFQ3JCQpb)'GKE@8JF'a
XKH5iJ)!e8D'8JE@peFf8JDA-JEQpd)(9cC@3JBA3JB@aX,#"PH'0PF(3JCQpb)(0
XdB@jNBA*N)(4SD@jRFb!0E'PVC5"YC@jeFb"KEQ3JC'PKE'pRFbiJ)&4[)'GPG#"
XK)'aTFh3JEfBJG'KP)'&fB@PXB@*XC5!0Df9jBQpKFQ3JBfpYE@&ZC(-X)'KTG#"
XdD'8Je$r9)'YPH5"hD'PXC5"`E'&jD@jR)(4SC5"RB@eP,Jd08fpYC5"[CL"dD'8
XJBfpYE@&ZC(-JBA*P)(0`C@0TCQPPC#"KFb"LC@PZCb"MEfjdFQpX)!eMD'&bB@0
XdCA*c,#"T,Q8Z)(0KGQPZCb"dD'8JCf&YC5"TFb"H@#iJ)&4[)(4jF'8JG'KPFf8
XJ$@0SBA*KBh4PFR-JD'pXC#"NEhGZ)(4SC5"MEfjdFQpX)'YPH5"KEQ3JG'KPEL"
X`FQ9cFb"dD'8J$@&`F(*[F(*TBA4P)'0SBA*KBh4PFL"VCANZ)#"*CL"jEh8JC'm
XJEQpd)'KKGQ8JB5"MEfjdFQpX)!eVCANX)(9cC5"dD'8JBfpYE@&ZC#"VCANJ+'&
X`F'aP,f0XEhCPFQaPB@BJDf9j+5"TER0dC@&N)!e[CL"dD'8JBfpZG(*[E#"VCAN
XZ)#"*CL"jEh8JF(*PCQ9b,#"jEh8JE@&j)'9ZG'9b)(4SCA0P)!eMEfeYB@jNFb"
XeFfPZCb"dGfmJDf9jFh4bEfYPFb`JBRNJCQPbFh3JG(P`D@jR)(4SC5!RALFJ$@Y
XPH5"QEfaXEhGPC#"LH5"dD'8JE'9dG'9b,Jd09'KP)'GKE@8JB@acEb"eFf9c)(4
XSC5"PFf0KF'8JDf9j)#K&8d-T)(&eDA4P)'%JBQPd,L!J$8PQ)(P[G5"NEb"ZEh3
XJD'&fC5"KEL"PFf0KF'8JDf9j)'pZ)(P[GA)JDf9jBQpKFQ3X)(P[G5!0Bf&Z)(9
XcC5"dD'8JB#"VCANJEh)JG'KP)%0XC@&b)'YPH5"[EL"dD'8JER9YCA*TBb"VCAP
X`B@3J$@PZFh4PB@3Z)#""EL"PFf0KF'8JBf&Z)'&XFfmJBRNJG(P`C@3JBA-JAPX
XX)'NZC5iJBfpZG(*[E#!0+'pb)'0[E@eKEQ3T)'aPCR3JBR*KBfYPG#i0$8CTE'8
XJ6@9ZG3dY,5dY,5dY,5d09'KP)'GKE@8JCR9XE(NJFh9`F'pbG(-JG'KP)(0dB@j
XNBA*N)%eKBfPZG'pcD#"QD@aP)'ePER8Z)#!09A0P)%jPGb"dEb"cG'&bG#"`E'&
XjD@jR)'%JEQ9h)'GKE@8X)'pb)%p`C@iJG'mJFQ9cG'&bG#"K)!e`FQ9fD@peFb"
XRB@eP,L!J)&0KGQ8J3A-JGfPXE#"KE(GKHA-JBA0V)(P[G5"QEh)JG'KP)'jKE@8
XJ$@pQ)(4SC5"QD@aP)(4[)(0KGQ8JH@peFL"MD'&bB@0dCA)JD@iZ)#"6BACP)(G
XTE'`JGA0eB@aXH5!0Ff&fC5"dD'8JCf&YC5"TEL"K)'CTE'8JGfPdD#"dD'8JFf&
XYC5"ZB@eP)'&c)(4SC5"ZB@eP)'pQ)!edD'8JBh9bFQ9ZG#"MD'&bB@0dCA)Z)#"
X*CL"jEh8JBA*P)("XBAPTEQFJB5"ZCAFJCf&YC5`JEh)J$@KKGQ8JBfKKEQGPC#"
XdD'8JEQ&YC5"[CL"jEh9b)'0SBA*KBh4PFL`J8f&fC5"hD@aX)'PZFh4PB@3J$@&
XcDb"jEh8JCQpb)(4SC5"ZB@eP)'pQ)(4SC5"cBACP)'CTE'8Z)#"8D'8J8A9TG#"
X[F(4TEfiX)!e[CL"MEh9bFf8X)'Pc)(9cC@3JG'mJCAKTG#"dD'8JCf&YC5i0$8%
XJCf&YC5"MB@iJEfjXH5"LC5"cBACPC#"KG#"dD'8JF'pTER3JGfKPFQ8JDA3JDA-
XJH@peFL!0G(9bEL"dEb"YEhCP,L!J3A3JB@aX)'pdD'9b)(4TE@9c)(4SC5"6BAC
XP)'0[E@eKEQ3JGfPXE#!0EQpd)'*P)'&fB@PXB@*XC5i0$94SC5"'D@aP)%ePER8
XJDA-JC'PcB@*XC@3JGfKTE'8JFf&fD@jR)'&ZC#"bCA0dEh*TEQFJCf&YCA-Z)!e
X8D'9bC5"TFb"ZEb"MBA9cC5"QEh)JB@aKFQdJD@BJH@pe)(0PC5"dD'Pc)'pMBh9
Xb,L!J3@CdCA)J$A4SC5"[F'9bBA4TEfiJDA-JBfpYF'aPG'9N,#"dD'9bC5"hD@a
XX)'*P)'%JF(*[EA"d)(4SBA3J$A0KHA-JdR"bCA0c)'&ZH5"VCANJG'mJBfpZG'P
XZG@A6,L!J3@CdCA)JH@pe)("bCA0c)'%JDf9j,#!0G'KP)%CTE'8J6@9ZG5"hD@a
XX)'*P)(*PC@jKBQaPC#i0$8PQ)(P[GA)JBfKKFQ&MG'9b)'4TCA-X)'pb)(P[G5"
XNC@0TC'8JG'mJFh4[F#"bG@jZD@jR)'KTE5`J$AP[G5"hD@aX)'*P)("bEfe`G'9
XN)(CTB5"K)(0dB@jNBA*N)'CTE'8JC'PKE'pR)'C[FL"dD'8J$@jKE@8JEfBJB5"
XQD@aP)'PZ)(GSD@0S)(4[)(0KGQ8JD'Pc)'ePE@pbD@9c,L!J8(*PFh0TEQFJ$@0
XKEQ0PE#"hD@aX)'&fEfPN)(0KGQPZCb"dD'8JE@9YEh*TCA-Z$3e&C'Pd)%ePER8
X0,5dY,5dY,5dY$94SC5"&C'Pd)%ePER8JDA4PEA-JBA*P)'j[G#"eFf9N)'*j)(4
XSC5"RB@eP,L!J9'KP)%9NDA3J$@ePER8JDA-JC'PcB@*XC@3JG@jXCA0c)(4SCA*
XP)'Pc)'%J4'9cDb""Bf0PFh0[FRNJEh"PELi0$90MFQ9PELp'Efjd8fPkC5"0C@j
Xe$5dY,5dY,5dY,5dY,5dY,5dY,5dY$8PQ)(P[G5"SBACP)'%JBfpXEh)JFhPcG'9
XY,#"dD'8J3fpXEh)JDA4PE5"KE'a[Gh-JH@pe)(4[)!eMD'p[Ff8JG'KP)'*KBfY
XRFQpeEQ3JB@jN)'C[FQ9RFQpeEQ3JBfpXEh*c)'pQ)(4SC5"RB@eP)!ehD@jNEhF
XZ)#"8D'8JCf&YC5"YGA0d)(9cC5"K)'0[ER0dB@jd)(GTC(4S)'C[ER3X)(0[)'p
XZE(NJ$A4SC5"0EfjKBfmJCQpZG#"TFb"cGA"`Eh*dC@3Z)#"CEh8JBf&Z,#"SEhG
XPGQ9b,#"cF'9MD@Cj)!ehD'PMD#"`EfPZG#"cDATP)(4SBA3JH@pe)(GKER3JG'm
XJGA0P,L!J9'KP)'ePER8JGfPXE#"XDA0d)!ePGQ9bH5"`EfPZG#"cDATP)'&fB@P
XXB@*XC5"[EL"jEh9b)%eKBfPZG'pcD#"QEh)JG'KP)!e0EfjKBfmJCQpZG#i0$8&
XNGQ&ZBf9N)(9cCA*c)'0KEL"MD'p[Ff8JB5"ND@CQCA*PER3JCQpZG#"LH5"eFfP
XZCb!08Q9c4@4TG#"[FL"K)(0TE@PXBA)JF(*[Ch*KE5"dEb"PC'Pd)(4SC5"69&)
XJFQ9cEh9bBf8Z$3e0Eh*TB5"0C@je$5dY,5dY,5dY,5d05'9XF#"LFQPZCh-JGA!
XJG'KTFb"ND@&XEfFZ$3e$EfeYB@jN)&0PG#"KE'a[Gh-JH@pe)(4[)'0SEfpcC5"
XLCA4hC@9Z)(4SC5"[FQPRD@jKE#!06@pbD@%JBfpYE@&ZC#"cCA3JB@jN)'&Z)'p
X`G'P[EQ&X)'0[E@eKEQ3JFf9d)(0TE@PXBA)JG'mJ$A4SC5"96NPB)'GKE@8J8Qp
XRG@8Z)#"8D'8JE@&TEL"ND@CQCA*PEQ0P)'*PG(GPC@iJG'KP)(4hEb!0DA-JG'K
XKG#"dD'8JEh*TCfPZB@`JBfpYE@&ZC#"cCA3JGA0PFb"dD'8JER9YCA*TBb"VCAP
X`B@3J$@C[FL"YEhCPE@9ZG#`JGfKPFQ9KFb"dD'8J8QpRG@8YE'PVC5"MEfeYB@j
XN)(0PG#"eFf9c)(4SC5!0e'KUDfc9)'YPHA-JCQpb,#"bCA0`C@0dDACPE(NX)'a
XPCR3JC'phEL"eF#"KEQ3JFQPRD(3Z)#!09'KP)("bEfGbB@dJGfPXE#"bC@ePE@*
XPFL"jEh9b)(0PG(4TEQFJB@jN)(9cC5"TG#"KFb"K)!eNC@CKG@ad)(4SC5"ZCAK
Xd)(4TE@8JH@pe)(0dBA*d)'%JEQ9h)'0SBA*KBh4PFLiJ)&4SC5!0BfpYE@&ZC#"
XcCA3JBf&Z)'*P)'0SEh0PEL"QEh)JG'KP)'0eFR*PER3JBfKKFQ&MG'9b)'*j)!e
XeFfPZCb"dD'8JFf9d)'p`G'P[ER-J+#Fp*bNJBfpYE@&ZC#i0$8j[G'8JG'KKG#"
XdD'8JER9YCA*TBb"VCAP`B@3X)'PQ)(P[GA)JFhPcG'9Y)'KKFb"[EQ8X)'Pc)!e
XKE(GKHA-JBACKD@aKBQaP)'C[FL"TEQ4TBf&dD@jR)'4TFQ9MG'P[ER-X)(*PCf&
XbC'aPFh-JEfBJ$A4SC5"MEfeYB@jN)(0PG#"MD'pcC@iZ)#"8D'8JBA*bEhFJDf9
XjFb"hD@aX)(G[FQXJBA-JGf9XE#i0$94PH(3J4@4TG'pb)'&XE'phFb"jEh8JG'm
XJBfK[Eh0P)(4SC5"dHA"P)'pQ)&4&@&3JCQPXC5!0Bh*PBA4PC#"LH5"0Eh*TB5`
XJG'KKG#"TFb`JDA3JB@aXEhGc)(P[G5"dEb"cF'9MD@Cj)(GSD@0S)!eKF("XD@0
XKG'P[EL"hD@aX)'*P)(9cC@3JBRNJG'KP)%CTEQ4PFL"hD'9Z)(P[G5"[F'9Z)'%
XJ$94&@&3JCQPXC5"MFQ9KG'9N)'*j)%e[FQPK,L!J@@pe)'0KEL"MD'p[Ff8J6@&
XM9h*TG'8JEh)J$8eTBh*[FfpQG#"AEh*N)'CTE'9c,L!J@@pe)'0KEL"KE(0[)(0
X`C@0TCRNJG'KP)(0TCfjKG(9bC5!0EfBJG'KP)'4PFfPbC@3JBA"`E'PMBA4TEfi
XJD@BJH@pe)("bC@CPFL"cEfePG'KTEQFJC@acC5i0$8KTCfJJ8f0[FQ9c)'4TFh"
XXBAPc)'&XE#"[CL"dD'8JFf0[FQ9c)(0dEh*PC#"TEL"dD'8J$A0MEh*PCQPXC5i
XJ)&P[G5"MB@iJBfaPBA)JG'KPFf8JFf0[FQ9c)'*j)'TeFh3JC'9XCA4TEQFJ$A4
XSC5")D@GS)&0MEh*PFb"QD@aP,L!J9'KTFb"QC@&dGA*P)'Pc)'j[G#"TEA"XC@e
XPER4PC#i0$80[EQCTCh9bBA4TEfiJ5@jQE`dY,5dY,5dY,5dY,5dY,5dY,5d06@p
XbD@%JDA-JCR9XE(NJ6A9XG'PQD@jNCA)JBfpYF'&dD@*XC5pKGf&bC5iJ)%Pd)(*
XPFA9TFQ9c)!dd06!J5b"[CL"YC@e[FRNJG@jNCA)J6A9XG'PQD@jNCA)Z)#"8D'8
XJCf&YC5"hD@aX)(*eEL"[EL!0B@jj)%eKBfPZG'pcD#"hDA4S)$%J6@9RB@*jG'8
XJEh)JE@pbC5"[CL"YC@e[FRNZ$3e0Eh*TB5"MEfePFb"hDA4S)'%JC'pMG@ePER4
XKG'P[EL"QD@aP,#"MB@aXC@3J6@pbD@%J4'pMFbiJ)!e8D'8J6@pbD@%J4'pMFb"
XQD@aP)'Pc)'&Z)'9iF'aKEQ&dD@pZ)'pQ)(4SC5"RB@eP)(0jFh4PE5iJ)!e3E'9
XKFf8JFQ9YC@eLCA)JG'mJB@ahBAPc)'4TFh4bD@*eG'8JG'KTFb"QD@aP)(GTG'J
XJG'KP)!eRB@eP,#"cD@jMC5"TG#"MEfjdB@PZFb"YG@0S)'PYF'pbG'&ZG#"TEQC
X[FQeKG'P[ELi0$8e[FQPK)(GTE'`JBh*PBA4P)(4hEb"QD@aPFb"hD'9Z)'Pd)'P
Xc)(*eELiJ)&4SC5")D@GS)!e6BfpbCA-JCQPXC5"VC@9`Fb"K)'aTFh3JEfBJG'K
XP)(0MEh*PFb"[CL"KE'`JEfBJG'KP)!e`FQ9fD@peFb"RB@ePFbiJ)%PQ)(4SDA-
XJCQPXC5"TFb"ZEh3JF(*PFf9ZG#`JB5"ZCAFJEfjP)!ehD@aX)'*P)'0bC@&dC@3
XJD@iJG'KP)'C[E'4PFL"hD'PMD#"MEfjdB@PZFb"dD'8JCf&YC5iJ)!e8D'Pc)'C
XTE'8JBf&Z)'*P)'YPF(3JC@PdD'9b)'PZ)(4SC5"QEfaNCA)JG'KKG#"MEfjdB@P
XZFb!0G'KP)'&`F'aTBf&dD@pZ,#"[FL"TEL"dD'8J8hPcG'9Y)%C[E'4PFLi0$8e
X[FQPK)'&XFfmJBh*PBA4PFb"K)'CTE'8JBf&XE'9N)040Eh*TB5"$EfjQD@I9)'P
XZ)(4SC5!08hPcG'9Y)%C[E'4PFLiJ)&4SDA-JCQPXC5"MEfjdB@PZFb"KE'`JEfB
XJG'KP)'0[EQCTCbd0GA*KG'P[EL"TEQC[)'C[FL"0Eh*TB5`JFh9MD#"KFb"dD'8
XJFfPkC5"KEQ3JE'pMBA4TEfiJEfBJ$AGTEQ4[Gh-X)(4SC5"QEfjd)(0THQ8X)(4
XSC5"MEfeYB@jN)(0PG#`JCA4M,L!J9'KTFb"QD@aP)!eYGA0d)(*PE@&TEL"TEL"
XdD'8J8hPdC@dJ4QpXC'9b,Jd09'KP)(4PH(3JC'PcF'aKH@9N)(GSC@iJ6@pbD@%
XJFh4KFR4c)(9`)'Pc)(0dEh*PC#"TEL"dD'8J$@4KG'%JCQpbDb"[CL"dD'Pc)("
XbEfGbB@dZ)#"CEh8JBf&Z)'9NDA3JDA3JGfPdD#"YEh0d)!edCAKd)'9NDA4[FR-
XJBRNJCQPbFh3JBfKKEQGTEQFJG'KP)'CTE'8JG(P`C5"[CL"dD'8J$A"bEfGbB@d
XJCR*[E5!R39"36#FJG'mJ*e4&@&3R)(GTG'JJ8Q9c4@4TG#iJ)&*PE@9YBQ9b)(4
X[)!eMD'&ZCf8JG'KP)'CTE'8JG(P`C5"LB@0V)'&RB@PZ)(GSC@iJH@pe)'&bC5"
XdD(*[G@GS,L!J3Q8J$@0KFQ9QG@`JEQpd)(4[)'4TFh4eFQ)JG'KP)'aTEQ9c)(G
XSD@0S)'*PCfPZ)(GTG'JJB5!R)bFZ$3!!!3!!!"MF!!!Ah!!!!%B!-e*)"B3!!!!
XF!$)!!&4&@&3!!!!+!J!!!#!!!!!!-e&!%deKBb"0Eh*TB5")C@a`)&4PH(5QV!:
END_OF_FILE
if test 8821 -ne `wc -c <'mac/miscrsrc.hqx'`; then
echo shar: \"'mac/miscrsrc.hqx'\" unpacked with wrong size!
fi
# end of 'mac/miscrsrc.hqx'
fi
if test -f 'mac/scrnmgr/ScrnMgr.r' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mac/scrnmgr/ScrnMgr.r'\"
else
echo shar: Extracting \"'mac/scrnmgr/ScrnMgr.r'\" \(8279 characters\)
sed "s/^X//" >'mac/scrnmgr/ScrnMgr.r' <<'END_OF_FILE'
X/* mac/scrnmgr/ScrnMgr.r: resources for scrnmgr code
X
X Copyright (c) 1989-1991 Curtis McCauley, James E. Wilson
X
X You may copy this subroutine package freely, modify it as you desire,
X and distribute it at will, as long as the copyright notice in the source
X material is not disturbed, excepting that no one may use this package or
X any part of it for commercial purposes of any kind without the express
X written consent of its author. */
X
X#include "Types.r"
X
Xtype 'INFO' {
X rect;
X integer;
X longint white, black, red, green, blue, cyan, magenta, yellow;
X longint white, black, red, green, blue, cyan, magenta, yellow;
X};
X
Xtype 'acur' {
X integer = $$Countof(cursors);
X integer = 0;
X array cursors {
X integer;
X integer = 0;
X };
X};
X
Xresource 'acur' (128, "Rotating Watch") {
X { 256, 257, 258, 259, 260, 261, 262, 263 }
X};
X
Xresource 'CURS' (256) {
X $"3F 00 3F 00 3F 00 3F 00 40 80 84 40 84 40 84 60"
X $"9C 60 80 40 80 40 40 80 3F 00 3F 00 3F 00 3F",
X $"3F 00 3F 00 3F 00 3F 00 7F 80 FF C0 FF C0 FF C0"
X $"FF C0 FF C0 FF C0 7F 80 3F 00 3F 00 3F 00 3F",
X {8, 8}
X};
X
Xresource 'CURS' (257) {
X $"3F 00 3F 00 3F 00 3F 00 40 80 80 40 81 40 82 60"
X $"9C 60 80 40 80 40 40 80 3F 00 3F 00 3F 00 3F",
X $"3F 00 3F 00 3F 00 3F 00 7F 80 FF C0 FF C0 FF C0"
X $"FF C0 FF C0 FF C0 7F 80 3F 00 3F 00 3F 00 3F",
X {8, 8}
X};
X
Xresource 'CURS' (258) {
X $"3F 00 3F 00 3F 00 3F 00 40 80 80 40 80 40 80 60"
X $"9F 60 80 40 80 40 40 80 3F 00 3F 00 3F 00 3F",
X $"3F 00 3F 00 3F 00 3F 00 7F 80 FF C0 FF C0 FF C0"
X $"FF C0 FF C0 FF C0 7F 80 3F 00 3F 00 3F 00 3F",
X {8, 8}
X};
X
Xresource 'CURS' (259) {
X $"3F 00 3F 00 3F 00 3F 00 40 80 80 40 80 40 80 60"
X $"9C 60 82 40 80 40 40 80 3F 00 3F 00 3F 00 3F",
X $"3F 00 3F 00 3F 00 3F 00 7F 80 FF C0 FF C0 FF C0"
X $"FF C0 FF C0 FF C0 7F 80 3F 00 3F 00 3F 00 3F",
X {8, 8}
X};
X
Xresource 'CURS' (260) {
X $"3F 00 3F 00 3F 00 3F 00 40 80 80 40 80 40 80 60"
X $"9C 60 84 40 84 40 40 80 3F 00 3F 00 3F 00 3F",
X $"3F 00 3F 00 3F 00 3F 00 7F 80 FF C0 FF C0 FF C0"
X $"FF C0 FF C0 FF C0 7F 80 3F 00 3F 00 3F 00 3F",
X {8, 8}
X};
X
Xresource 'CURS' (261) {
X $"3F 00 3F 00 3F 00 3F 00 40 80 80 40 80 40 80 60"
X $"9C 60 88 40 90 40 40 80 3F 00 3F 00 3F 00 3F",
X $"3F 00 3F 00 3F 00 3F 00 7F 80 FF C0 FF C0 FF C0"
X $"FF C0 FF C0 FF C0 7F 80 3F 00 3F 00 3F 00 3F",
X {8, 8}
X};
X
Xresource 'CURS' (262) {
X $"3F 00 3F 00 3F 00 3F 00 40 80 80 40 80 40 80 60"
X $"BC 60 80 40 80 40 40 80 3F 00 3F 00 3F 00 3F",
X $"3F 00 3F 00 3F 00 3F 00 7F 80 FF C0 FF C0 FF C0"
X $"FF C0 FF C0 FF C0 7F 80 3F 00 3F 00 3F 00 3F",
X {8, 8}
X};
X
Xresource 'CURS' (263) {
X $"3F 00 3F 00 3F 00 3F 00 40 80 80 40 90 40 88 60"
X $"9C 60 80 40 80 40 40 80 3F 00 3F 00 3F 00 3F",
X $"3F 00 3F 00 3F 00 3F 00 7F 80 FF C0 FF C0 FF C0"
X $"FF C0 FF C0 FF C0 7F 80 3F 00 3F 00 3F 00 3F",
X {8, 8}
X};
X
Xresource 'STR ' (128, "About Title", purgeable) {
X "About ScrnMgr\311"
X};
X
Xresource 'STR ' (129, "Font Name", purgeable) {
X "Monaco"
X};
X
Xresource 'DLOG' (128, "About", purgeable) {
X {44, 26, 162, 314},
X dBoxProc,
X invisible,
X noGoAway,
X 0x0,
X 128,
X ""
X};
X
Xresource 'DLOG' (129, "Colors", purgeable) {
X {56, 32, 228, 364},
X dBoxProc,
X invisible,
X noGoAway,
X 0x0,
X 129,
X ""
X};
X
Xresource 'DLOG' (130, "Yes or No", purgeable) {
X {40, 40, 142, 300},
X dBoxProc,
X invisible,
X noGoAway,
X 0x0,
X 130,
X ""
X};
X
Xresource 'DITL' (128, "About", purgeable) {
X { /* array DITLarray: 4 elements */
X /* [1] */
X {73, 103, 97, 191},
X Button {
X enabled,
X "OK"
X },
X /* [2] */
X {80, 158, 89, 167},
X UserItem {
X disabled
X },
X /* [3] */
X {16, 8, 32, 273},
X StaticText {
X enabled,
X "ScrnMgr: Version 1.0 22 July 1989"
X },
X /* [4] */
X {40, 8, 56, 120},
X StaticText {
X enabled,
X "Curtis McCauley"
X }
X }
X};
X
Xresource 'DITL' (129, "Colors", purgeable) {
X { /* array DITLarray: 23 elements */
X /* [1] */
X {40, 256, 60, 316},
X Button {
X enabled,
X "OK"
X },
X /* [2] */
X {88, 256, 108, 316},
X Button {
X enabled,
X "Cancel"
X },
X /* [3] */
X {32, 32, 48, 112},
X RadioButton {
X enabled,
X "White"
X },
X /* [4] */
X {48, 32, 64, 112},
X RadioButton {
X enabled,
X "Black"
X },
X /* [5] */
X {64, 32, 80, 112},
X RadioButton {
X enabled,
X "Red"
X },
X /* [6] */
X {80, 32, 96, 112},
X RadioButton {
X enabled,
X "Green"
X },
X /* [7] */
X {96, 32, 112, 112},
X RadioButton {
X enabled,
X "Blue"
X },
X /* [8] */
X {112, 32, 128, 112},
X RadioButton {
X enabled,
X "Cyan"
X },
X /* [9] */
X {128, 32, 144, 112},
X RadioButton {
X enabled,
X "Magenta"
X },
X /* [10] */
X {144, 32, 160, 112},
X RadioButton {
X enabled,
X "Yellow"
X },
X /* [11] */
X {32, 152, 48, 232},
X RadioButton {
X enabled,
X "White"
X },
X /* [12] */
X {48, 152, 64, 232},
X RadioButton {
X enabled,
X "Black"
X },
X /* [13] */
X {64, 152, 80, 232},
X RadioButton {
X enabled,
X "Red"
X },
X /* [14] */
X {80, 152, 96, 232},
X RadioButton {
X enabled,
X "Green"
X },
X /* [15] */
X {96, 152, 112, 232},
X RadioButton {
X enabled,
X "Blue"
X },
X /* [16] */
X {112, 152, 128, 232},
X RadioButton {
X enabled,
X "Cyan"
X },
X /* [17] */
X {128, 152, 144, 232},
X RadioButton {
X enabled,
X "Magenta"
X },
X /* [18] */
X {144, 152, 160, 232},
X RadioButton {
X enabled,
X "Yellow"
X },
X /* [19] */
X {16, 16, 168, 120},
X UserItem {
X disabled
X },
X /* [20] */
X {16, 136, 168, 240},
X UserItem {
X disabled
X },
X /* [21] */
X {8, 24, 24, 104},
X StaticText {
X disabled,
X "Foreground"
X },
X /* [22] */
X {8, 144, 24, 224},
X StaticText {
X disabled,
X "Background"
X },
X /* [23] */
X {48, 296, 56, 304},
X UserItem {
X disabled
X }
X }
X};
X
Xresource 'DITL' (130, "Yes or No", purgeable) {
X { /* array DITLarray: 5 elements */
X /* [1] */
X {16, 184, 36, 244},
X Button {
X enabled,
X "Yes"
X },
X /* [2] */
X {64, 184, 84, 244},
X Button {
X enabled,
X "No"
X },
X /* [3] */
X {19, 227, 33, 241},
X UserItem {
X disabled
X },
X /* [4] */
X {9, 48, 89, 168},
X StaticText {
X disabled,
X "Are you sure?"
X },
X /* [5] */
X {8, 8, 40, 40},
X Icon {
X disabled,
X 0
X }
X }
X};
X
Xresource 'MENU' (128, "Apple") {
X 128,
X textMenuProc,
X 0x7FFFFFFD,
X enabled,
X apple,
X { /* array: 2 elements */
X /* [1] */
X "About ScrnMgr\311", noIcon, "", "", plain,
X /* [2] */
X "-", noIcon, "", "", plain
X }
X};
X
Xresource 'MENU' (129, "File") {
X 129,
X textMenuProc,
X 0x7FFFFFFB,
X enabled,
X "File",
X { /* array: 4 elements */
X /* [1] */
X "Open", noIcon, "O", "", plain,
X /* [2] */
X "Close", noIcon, "W", "", plain,
X /* [3] */
X "-", noIcon, "", "", plain,
X /* [4] */
X "Quit", noIcon, "Q", "", plain
X }
X};
X
Xresource 'MENU' (130, "Edit") {
X 130,
X textMenuProc,
X 0x7FFFFFC0,
X enabled,
X "Edit",
X { /* array: 6 elements */
X /* [1] */
X "Undo", noIcon, "Z", "", plain,
X /* [2] */
X "-", noIcon, "", "", plain,
X /* [3] */
X "Cut", noIcon, "X", "", plain,
X /* [4] */
X "Copy", noIcon, "C", "", plain,
X /* [5] */
X "Paste", noIcon, "V", "", plain,
X /* [6] */
X "Clear", noIcon, "", "", plain
X }
X};
X
Xresource 'MENU' (229, "File (No Keys)") {
X 129,
X textMenuProc,
X 0x7FFFFFFB,
X enabled,
X "File",
X { /* array: 4 elements */
X /* [1] */
X "Open", noIcon, "", "", plain,
X /* [2] */
X "Close", noIcon, "", "", plain,
X /* [3] */
X "-", noIcon, "", "", plain,
X /* [4] */
X "Quit", noIcon, "", "", plain
X }
X};
X
Xresource 'MENU' (230, "Edit (No Keys)") {
X 130,
X textMenuProc,
X 0x7FFFFFC0,
X enabled,
X "Edit",
X { /* array: 6 elements */
X /* [1] */
X "Undo", noIcon, "", "", plain,
X /* [2] */
X "-", noIcon, "", "", plain,
X /* [3] */
X "Cut", noIcon, "", "", plain,
X /* [4] */
X "Copy", noIcon, "", "", plain,
X /* [5] */
X "Paste", noIcon, "", "", plain,
X /* [6] */
X "Clear", noIcon, "", "", plain
X }
X};
X
Xresource 'MENU' (131, "Screen") {
X 131,
X textMenuProc,
X 0x7FFFFFFD,
X enabled,
X "Screen",
X { /* array: 2 elements */
X /* [1] */
X "Colors\311", noIcon, "", "", plain,
X /* [2] */
X "-", noIcon, "", "", plain,
X }
X};
X
Xresource 'MENU' (132, "FontSize") {
X 132,
X textMenuProc,
X allEnabled,
X enabled,
X "FontSize",
X { /* array: 0 elements */
X }
X};
X
Xresource 'MBAR' (128, "Main Menu") {
X { /* array MenuArray: 3 elements */
X /* [1] */
X 128,
X /* [2] */
X 129,
X /* [3] */
X 130
X }
X};
X
Xresource 'MBAR' (228, "Main Menu (No Keys)") {
X { /* array MenuArray: 3 elements */
X /* [1] */
X 128,
X /* [2] */
X 229,
X /* [3] */
X 230
X }
X};
X
Xresource 'INFO' (1, "Screen Info") {
X { 50, 10, 250, 310 },
X 9,
X black,
X white
X};
END_OF_FILE
if test 8279 -ne `wc -c <'mac/scrnmgr/ScrnMgr.r'`; then
echo shar: \"'mac/scrnmgr/ScrnMgr.r'\" unpacked with wrong size!
fi
# end of 'mac/scrnmgr/ScrnMgr.r'
fi
if test -f 'source/potions.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'source/potions.c'\"
else
echo shar: Extracting \"'source/potions.c'\" \(8512 characters\)
sed "s/^X//" >'source/potions.c' <<'END_OF_FILE'
X/* source/potions.c: code for potions
X
X Copyright (c) 1989-92 James E. Wilson, Robert A. Koeneke
X
X This software may be copied and distributed for educational, research, and
X not for profit purposes provided that this copyright and statement are
X included in all such copies. */
X
X#include "config.h"
X#include "constant.h"
X#include "types.h"
X#include "externs.h"
X
X#ifdef USG
X#include <string.h>
X#else
X#include <strings.h>
X#endif
X
X/* Potions for the quaffing -RAK- */
Xvoid quaff()
X{
X int32u i, l;
X int j, k, item_val;
X int ident;
X register inven_type *i_ptr;
X register struct misc *m_ptr;
X register struct flags *f_ptr;
X#if 0
X /* used by ifdefed out learn_spell potion */
X register class_type *c_ptr;
X#endif
X
X free_turn_flag = TRUE;
X if (inven_ctr == 0)
X msg_print("But you are not carrying anything.");
X else if (!find_range(TV_POTION1, TV_POTION2, &j, &k))
X msg_print("You are not carrying any potions.");
X else if (get_item(&item_val, "Quaff which potion?", j, k, CNIL, CNIL))
X {
X i_ptr = &inventory[item_val];
X i = i_ptr->flags;
X free_turn_flag = FALSE;
X ident = FALSE;
X if (i == 0)
X {
X msg_print ("You feel less thirsty.");
X ident = TRUE;
X }
X else while (i != 0)
X {
X j = bit_pos(&i) + 1;
X if (i_ptr->tval == TV_POTION2)
X j += 32;
X /* Potions */
X switch(j)
X {
X case 1:
X if (inc_stat (A_STR))
X {
X msg_print("Wow! What bulging muscles!");
X ident = TRUE;
X }
X break;
X case 2:
X ident = TRUE;
X lose_str();
X break;
X case 3:
X if (res_stat (A_STR))
X {
X msg_print("You feel warm all over.");
X ident = TRUE;
X }
X break;
X case 4:
X if (inc_stat (A_INT))
X {
X msg_print("Aren't you brilliant!");
X ident = TRUE;
X }
X break;
X case 5:
X ident = TRUE;
X lose_int();
X break;
X case 6:
X if (res_stat (A_INT))
X {
X msg_print("You have have a warm feeling.");
X ident = TRUE;
X }
X break;
X case 7:
X if (inc_stat (A_WIS))
X {
X msg_print("You suddenly have a profound thought!");
X ident = TRUE;
X }
X break;
X case 8:
X ident = TRUE;
X lose_wis();
X break;
X case 9:
X if (res_stat (A_WIS))
X {
X msg_print("You feel your wisdom returning.");
X ident = TRUE;
X }
X break;
X case 10:
X if (inc_stat (A_CHR))
X {
X msg_print("Gee, ain't you cute!");
X ident = TRUE;
X }
X break;
X case 11:
X ident = TRUE;
X lose_chr();
X break;
X case 12:
X if (res_stat (A_CHR))
X {
X msg_print("You feel your looks returning.");
X ident = TRUE;
X }
X break;
X case 13:
X ident = hp_player(damroll(2, 7));
X break;
X case 14:
X ident = hp_player(damroll(4, 7));
X break;
X case 15:
X ident = hp_player(damroll(6, 7));
X break;
X case 16:
X ident = hp_player(1000);
X break;
X case 17:
X if (inc_stat (A_CON))
X {
X msg_print("You feel tingly for a moment.");
X ident = TRUE;
X }
X break;
X case 18:
X m_ptr = &py.misc;
X if (m_ptr->exp < MAX_EXP)
X {
X l = (m_ptr->exp / 2) + 10;
X if (l > 100000L) l = 100000L;
X m_ptr->exp += l;
X msg_print("You feel more experienced.");
X prt_experience();
X ident = TRUE;
X }
X break;
X case 19:
X f_ptr = &py.flags;
X if (!f_ptr->free_act)
X {
X /* paralysis must == 0, otherwise could not drink potion */
X msg_print("You fall asleep.");
X f_ptr->paralysis += randint(4) + 4;
X ident = TRUE;
X }
X break;
X case 20:
X f_ptr = &py.flags;
X if (f_ptr->blind == 0)
X {
X msg_print("You are covered by a veil of darkness.");
X ident = TRUE;
X }
X f_ptr->blind += randint(100) + 100;
X break;
X case 21:
X f_ptr = &py.flags;
X if (f_ptr->confused == 0)
X {
X msg_print("Hey! This is good stuff! * Hick! *");
X ident = TRUE;
X }
X f_ptr->confused += randint(20) + 12;
X break;
X case 22:
X f_ptr = &py.flags;
X if (f_ptr->poisoned == 0)
X {
X msg_print("You feel very sick.");
X ident = TRUE;
X }
X f_ptr->poisoned += randint(15) + 10;
X break;
X case 23:
X if (py.flags.fast == 0)
X ident = TRUE;
X py.flags.fast += randint(25) + 15;
X break;
X case 24:
X if (py.flags.slow == 0)
X ident = TRUE;
X py.flags.slow += randint(25) + 15;
X break;
X case 26:
X if (inc_stat (A_DEX))
X {
X msg_print("You feel more limber!");
X ident = TRUE;
X }
X break;
X case 27:
X if (res_stat (A_DEX))
X {
X msg_print("You feel less clumsy.");
X ident = TRUE;
X }
X break;
X case 28:
X if (res_stat (A_CON))
X {
X msg_print("You feel your health returning!");
X ident = TRUE;
X }
X break;
X case 29:
X ident = cure_blindness();
X break;
X case 30:
X ident = cure_confusion();
X break;
X case 31:
X ident = cure_poison();
X break;
X#if 0
X case 33:
X /* this is no longer useful, now that there is a 'G'ain magic
X spells command */
X m_ptr = &py.misc;
X c_ptr = &class[m_ptr->pclass];
X if (c_ptr->spell == MAGE)
X {
X calc_spells(A_INT);
X calc_mana(A_INT);
X }
X else if (c_ptr->spell == PRIEST)
X {
X calc_spells(A_WIS);
X calc_mana(A_WIS);
X }
X else
X {
X /* A warrior learns something about his equipment. -CJS- */
X inven_type *w_ptr;
X vtype tmp_str;
X extern char *describe_use ();
X
X for (k = 22; k < INVEN_ARRAY_SIZE; k++)
X {
X w_ptr = &inventory[k];
X if (w_ptr->tval != TV_NOTHING && enchanted (w_ptr))
X {
X (void) sprintf (tmp_str,
X "There's something about what you are %s...",
X describe_use(k));
X msg_print (tmp_str);
X add_inscribe(w_ptr, ID_MAGIK);
X ident = TRUE;
X }
X }
X }
X break;
X#endif
X case 34:
X if (py.misc.exp > 0)
X {
X int32 m, scale;
X msg_print("You feel your memories fade.");
X /* Lose between 1/5 and 2/5 of your experience */
X m = py.misc.exp / 5;
X if (py.misc.exp > MAX_SHORT)
X {
X scale = MAX_LONG / py.misc.exp;
X m += (randint((int)scale) * py.misc.exp) / (scale * 5);
X }
X else
X m += randint((int)py.misc.exp) / 5;
X lose_exp(m);
X ident = TRUE;
X }
X break;
X case 35:
X f_ptr = &py.flags;
X (void) cure_poison();
X if (f_ptr->food > 150) f_ptr->food = 150;
X f_ptr->paralysis = 4;
X msg_print("The potion makes you vomit!");
X ident = TRUE;
X break;
X case 36:
X if (py.flags.invuln == 0)
X ident = TRUE;
X py.flags.invuln += randint(10) + 10;
X break;
X case 37:
X if (py.flags.hero == 0)
X ident = TRUE;
X py.flags.hero += randint(25) + 25;
X break;
X case 38:
X if (py.flags.shero == 0)
X ident = TRUE;
X py.flags.shero += randint(25) + 25;
X break;
X case 39:
X ident = remove_fear();
X break;
X case 40:
X ident = restore_level();
X break;
X case 41:
X f_ptr = &py.flags;
X if (f_ptr->resist_heat == 0)
X ident = TRUE;
X f_ptr->resist_heat += randint(10) + 10;
X break;
X case 42:
X f_ptr = &py.flags;
X if (f_ptr->resist_cold == 0)
X ident = TRUE;
X f_ptr->resist_cold += randint(10) + 10;
X break;
X case 43:
X if (py.flags.detect_inv == 0)
X ident = TRUE;
X detect_inv2(randint(12)+12);
X break;
X case 44:
X ident = slow_poison();
X break;
X case 45:
X ident = cure_poison();
X break;
X case 46:
X m_ptr = &py.misc;
X if (m_ptr->cmana < m_ptr->mana)
X {
X m_ptr->cmana = m_ptr->mana;
X ident = TRUE;
X msg_print("Your feel your head clear.");
X prt_cmana();
X }
X break;
X case 47:
X f_ptr = &py.flags;
X if (f_ptr->tim_infra == 0)
X {
X msg_print("Your eyes begin to tingle.");
X ident = TRUE;
X }
X f_ptr->tim_infra += 100 + randint(100);
X break;
X default:
X msg_print ("Internal error in potion()");
X break;
X }
X /* End of Potions. */
X }
X if (ident)
X {
X if (!known1_p(i_ptr))
X {
X m_ptr = &py.misc;
X /* round half-way case up */
X m_ptr->exp += (i_ptr->level + (m_ptr->lev >> 1)) / m_ptr->lev;
X prt_experience();
X
X identify(&item_val);
X i_ptr = &inventory[item_val];
X }
X }
X else if (!known1_p(i_ptr))
X sample (i_ptr);
X
X add_food(i_ptr->p1);
X desc_remain(item_val);
X inven_destroy(item_val);
X }
X}
END_OF_FILE
if test 8512 -ne `wc -c <'source/potions.c'`; then
echo shar: \"'source/potions.c'\" unpacked with wrong size!
fi
# end of 'source/potions.c'
fi
if test -f 'unix/unix.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'unix/unix.c'\"
else
echo shar: Extracting \"'unix/unix.c'\" \(8383 characters\)
sed "s/^X//" >'unix/unix.c' <<'END_OF_FILE'
X/* unix/unix.c: UNIX dependent code. -CJS-
X
X Copyright (c) 1989-92 James E. Wilson, Christopher J. Stuart
X
X This software may be copied and distributed for educational, research, and
X not for profit purposes provided that this copyright and statement are
X included in all such copies. */
X
X
X/* defines NULL */
X#include <stdio.h>
X/* defines CTRL */
X#include <sys/ioctl.h>
X/* defines TRUE and FALSE */
X#include <curses.h>
X
X#include "config.h"
X#include "constant.h"
X#include "types.h"
X
X#ifdef unix
X
X#if defined(SYS_V) && defined(lint)
X/* for AIX, prevent hundreds of unnecessary lint errors, must define before
X signal.h is included */
X#define _h_IEEETRAP
Xtypedef struct { int stuff; } fpvmach;
X#endif
X
X#include <signal.h>
X
X#ifdef M_XENIX
X#include <sys/types.h>
X#include <sys/select.h>
X/* For various selects from TCP/IP. */
X#define bzero(addr,n) memset((char *)addr, 0, n)
X#endif
X
X#ifndef USG
X#include <sys/time.h>
X#include <sys/resource.h>
X#include <sys/types.h>
X#include <sys/param.h>
X#endif
X
X#ifdef USG
X#include <string.h>
X#if 0
X/* Used to include termio.h here, but this is unnecessary because it is
X included in curses.h, and some systems fail when it gets included
X twice. */
X#include <termio.h>
X#endif
X#include <fcntl.h>
X#else
X#include <strings.h>
X#if defined(atarist) && defined(__GNUC__)
X/* doesn't have <sys/wait.h> */
X#else
X#include <sys/wait.h>
X#endif
X#endif
X
X/* This must be included after fcntl.h, which has a prototype for `open'
X on some systems. Otherwise, the `open' prototype conflicts with the
X `topen' declaration. */
X#include "externs.h"
X
X#include <pwd.h>
X#include <sys/errno.h>
X
X#ifdef USG
Xstruct passwd *getpwuid();
Xstruct passwd *getpwnam();
X#endif
X
X#if defined(SYS_V) && defined(lint)
Xstruct screen { int dumb; };
X#endif
X
X/* Fooling lint. Unfortunately, c defines all the TIO constants to be long,
X and lint expects them to be int. Also, ioctl is sometimes called with just
X two arguments. The following definition keeps lint happy. It may need to be
X reset for different systems. */
X#ifdef lint
X#ifdef Pyramid
X/* Pyramid makes constants greater than 65535 into long! Gakk! -CJS- */
X/*ARGSUSED*/
X/*VARARGS2*/
Xstatic Ioctl(i, l, p) long l; char *p; { return 0; }
X#else
X/*ARGSUSED*/
X/*VARARGS2*/
Xstatic Ioctl(i, l, p) char *p; { return 0; }
X#endif
X#define ioctl Ioctl
X#endif
X
X/* Provides for a timeout on input. Does a non-blocking read, consuming the
X data if any, and then returns 1 if data was read, zero otherwise.
X
X Porting:
X
X In systems without the select call, but with a sleep for
X fractional numbers of seconds, one could sleep for the time
X and then check for input.
X
X In systems which can only sleep for whole number of seconds,
X you might sleep by writing a lot of nulls to the terminal, and
X waiting for them to drain, or you might hack a static
X accumulation of times to wait. When the accumulation reaches a
X certain point, sleep for a second. There would need to be a
X way of resetting the count, with a call made for commands like
X run or rest. */
Xint check_input(microsec)
Xint microsec;
X{
X#if defined(USG) && !defined(M_XENIX)
X int arg, result;
X#else
X struct timeval tbuf;
X int ch;
X#if defined(BSD4_3) || defined(M_XENIX)
X fd_set smask;
X#else
X int smask;
X#endif
X#endif
X
X /* Return true if a read on descriptor 1 will not block. */
X#if !defined(USG) || defined(M_XENIX)
X tbuf.tv_sec = 0;
X tbuf.tv_usec = microsec;
X#if defined(BSD4_3) || defined(M_XENIX)
X FD_ZERO(&smask);
X FD_SET(fileno(stdin), &smask);
X if (select(1, &smask, (fd_set *)0, (fd_set *)0, &tbuf) == 1)
X#else
X smask = 1; /* i.e. (1 << 0) */
X if (select(1, &smask, (int *)0, (int *)0, &tbuf) == 1)
X#endif
X {
X ch = getch();
X /* check for EOF errors here, select sometimes works even when EOF */
X if (ch == -1)
X {
X eof_flag++;
X return 0;
X }
X return 1;
X }
X else
X return 0;
X#else /* SYS V code follows */
X if (microsec != 0 && (turn & 0x7F) == 0)
X (void) sleep (1); /* mod 128, sleep one sec every 128 turns */
X /* Can't check for input, but can do non-blocking read, so... */
X /* Ugh! */
X arg = 0;
X arg = fcntl(0, F_GETFL, arg);
X arg |= O_NDELAY;
X (void) fcntl(0, F_SETFL, arg);
X
X result = getch();
X
X arg = 0;
X arg = fcntl(0, F_GETFL, arg);
X arg &= ~O_NDELAY;
X (void) fcntl(0, F_SETFL, arg);
X if (result == -1)
X return 0;
X else
X return 1;
X#endif
X}
X
X#if 0
X/* This is not used, however, this should be compared against shell_out
X in io.c */
X
X/* A command for the operating system. Standard library function
X 'system' is unsafe, as it leaves various file descriptors
X open. This also is very careful with signals and interrupts,
X and does rudimentary job control, and puts the terminal back
X in a standard mode. */
Xint system_cmd(p)
Xchar *p;
X{
X int pgrp, pid, i, mask;
X union wait w;
X extern char *getenv();
X
X mask = sigsetmask(~0); /* No interrupts. */
X restore_term(); /* Terminal in original state. */
X /* Are we in the control terminal group? */
X if (ioctl(0, TIOCGPGRP, (char *)&pgrp) < 0 || pgrp != getpgrp(0))
X pgrp = -1;
X pid = fork();
X if (pid < 0)
X {
X (void) sigsetmask(mask);
X moriaterm();
X return -1;
X }
X if (pid == 0)
X {
X (void) sigsetmask(0); /* Interrupts on. */
X /* Transfer control terminal. */
X if (pgrp >= 0)
X {
X i = getpid();
X (void) ioctl(0, TIOCSPGRP, (char *)&i);
X (void) setpgrp(i, i);
X }
X for(i = 2; i < 30; i++)
X (void) close(i); /* Close all but standard in and out.*/
X (void) dup2(1, 2); /* Make standard error as standard out. */
X if (p == 0 || *p == 0)
X {
X p = getenv("SHELL");
X if (p)
X execl(p, p, 0);
X execl("/bin/sh", "sh", 0);
X }
X else
X execl("/bin/sh", "sh", "-c", p, 0);
X _exit(1);
X }
X /* Wait for child termination. */
X for(;;)
X {
X i = wait3(&w, WUNTRACED, (struct rusage *)0);
X if (i == pid)
X {
X if (WIFSTOPPED(w))
X {
X /* Stop outselves, if child stops. */
X (void) kill(getpid(), SIGSTOP);
X /* Restore the control terminal, and restart subprocess. */
X if (pgrp >= 0)
X (void) ioctl(0, TIOCSPGRP, (char *)&pid);
X (void) killpg(pid, SIGCONT);
X }
X else
X break;
X }
X }
X /* Get the control terminal back. */
X if (pgrp >= 0)
X (void) ioctl(0, TIOCSPGRP, (char *)&pgrp);
X (void) sigsetmask(mask); /* Interrupts on. */
X moriaterm(); /* Terminal in moria mode. */
X return 0;
X}
X#endif
X
X#ifdef USG
Xunsigned short getuid();
X#else
X#ifndef SECURE
X#ifdef BSD4_3
Xuid_t getuid();
X#else /* other BSD versions */
Xint getuid();
X#endif
X#endif
X#endif
X
X/* Find a default user name from the system. */
Xvoid user_name(buf)
Xchar *buf;
X{
X extern char *getlogin();
X char pwline[256];
X register char *p;
X
X p = getlogin();
X if (p && p[0])
X (void) strcpy(buf, p);
X else
X {
X (void) getpw((int)getuid(), pwline);
X p = index(pwline, ':');
X if (p)
X *p = 0;
X (void) strcpy(buf, pwline);
X }
X if (!buf[0])
X (void) strcpy(buf, "X"); /* Gotta have some name */
X}
X
X/* expands a tilde at the beginning of a file name to a users home
X directory */
Xint tilde(file, exp)
Xchar *file, *exp;
X{
X *exp = '\0';
X if (file)
X {
X if (*file == '~')
X {
X char user[128];
X struct passwd *pw = NULL;
X int i = 0;
X
X user[0] = '\0';
X file++;
X while (*file != '/' && i < sizeof(user))
X user[i++] = *file++;
X user[i] = '\0';
X if (i == 0)
X {
X char *login = (char *) getlogin();
X
X if (login != NULL)
X (void) strcpy (user, login);
X else if ((pw = getpwuid(getuid())) == NULL)
X return 0;
X }
X if (pw == NULL && (pw = getpwnam(user)) == NULL)
X return 0;
X (void) strcpy (exp, pw->pw_dir);
X }
X (void) strcat(exp, file);
X return 1;
X }
X return 0;
X}
X
X/* undefine these so that tfopen and topen will work */
X#undef fopen
X#undef open
X
X/* open a file just as does fopen, but allow a leading ~ to specify a home
X directory */
XFILE *tfopen(file, mode)
Xchar *file;
Xchar *mode;
X{
X char buf[1024];
X extern int errno;
X
X if (tilde(file, buf))
X return (fopen(buf, mode));
X errno = ENOENT;
X return NULL;
X}
X
X/* open a file just as does open, but expand a leading ~ into a home directory
X name */
Xint topen(file, flags, mode)
Xchar *file;
Xint flags, mode;
X{
X char buf[1024];
X extern int errno;
X
X if (tilde(file, buf))
X return (open(buf, flags, mode));
X errno = ENOENT;
X return -1;
X}
X#endif
END_OF_FILE
if test 8383 -ne `wc -c <'unix/unix.c'`; then
echo shar: \"'unix/unix.c'\" unpacked with wrong size!
fi
# end of 'unix/unix.c'
fi
echo shar: End of archive 33 \(of 39\).
cp /dev/null ark33isdone
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 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 39 archives.
echo "Now run "bldfiles.sh" to build split files"
rm -f 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