mike@genpyr.UUCP (Mike Stephenson) (04/12/88)
-------------------------------cut here--------------------------------------- #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # Update.2.3.a # This archive created: Mon Apr 4 08:52:29 1988 export PATH; PATH=/bin:$PATH echo shar: extracting "'Update.2.3.a'" '(36456 characters)' if test -f 'Update.2.3.a' then echo shar: will not over-write existing file "'Update.2.3.a'" else cat << \SHAR_EOF > 'Update.2.3.a' *** ./Makefile.att.orig Mon Feb 22 08:39:58 1988 --- ./Makefile.att Thu Feb 18 16:37:42 1988 *************** *** 1,5 # Hack or Quest Makefile. ! # SCCS Id: @(#)Makefile.att 2.2 87/11/11 include $(MAKEINC)/Makepre.h --- 1,5 ----- # Hack or Quest Makefile. ! # SCCS Id: @(#)Makefile.att 2.3 88/02/12 include $(MAKEINC)/Makepre.h *************** *** 68,74 @echo "Done." makedefs: makedefs.c alloc.o config.h ! cc -o makedefs alloc.o makedefs.c RUMORFILES= rumors.base rumors.kaa rumors.mrx --- 68,74 ----- @echo "Done." makedefs: makedefs.c alloc.o config.h ! cc ${CFLAGS} -o makedefs alloc.o makedefs.c RUMORFILES= rumors.base rumors.kaa rumors.mrx *************** *** 129,134 mkdir $(GAMEDIR) $(GAMEDIR)/save touch $(GAMEDIR)/perm touch $(GAMEDIR)/record chown $(GAMEUID) $(GAMEDIR) $(GAMEDIR)/* chgrp $(GAMEGRP) $(GAMEDIR) $(GAMEDIR)/* chmod 666 $(GAMEDIR)/* --- 129,135 ----- mkdir $(GAMEDIR) $(GAMEDIR)/save touch $(GAMEDIR)/perm touch $(GAMEDIR)/record + touch $(GAMEDIR)/logfile chown $(GAMEUID) $(GAMEDIR) $(GAMEDIR)/* chgrp $(GAMEGRP) $(GAMEDIR) $(GAMEDIR)/* chmod 666 $(GAMEDIR)/* *** ./Makefile.unix.orig Mon Feb 22 08:39:58 1988 --- ./Makefile.unix Thu Mar 31 12:11:06 1988 *************** *** 1,5 # Hack or Quest Makefile. ! # SCCS Id: @(#)Makefile.unix 2.1 87/10/08 # if you are cross-compiling (eg. from Xenix into a Dos enviornment) # you will have to redefine these filenames. --- 1,5 ----- # Hack or Quest Makefile. ! # SCCS Id: @(#)Makefile.unix 2.3 88/02/12 # if you are cross-compiling (eg. from Xenix into a Dos enviornment) # you will have to redefine these filenames. *************** *** 72,78 nroff -mn Guidebook.mn > Guidebook makedefs: makedefs.c alloc.o config.h ! cc -o makedefs alloc.o makedefs.c RUMORFILES= rumors.base rumors.kaa rumors.mrx --- 72,78 ----- nroff -mn Guidebook.mn > Guidebook makedefs: makedefs.c alloc.o config.h ! cc $(CFLAGS) -o makedefs alloc.o makedefs.c RUMORFILES= rumors.base rumors.kaa rumors.mrx *************** *** 133,138 mkdir $(GAMEDIR) $(GAMEDIR)/save touch $(GAMEDIR)/perm touch $(GAMEDIR)/record chown $(GAMEUID) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/* chgrp $(GAMEGRP) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/* chmod 666 $(GAMEDIR)/* --- 133,139 ----- mkdir $(GAMEDIR) $(GAMEDIR)/save touch $(GAMEDIR)/perm touch $(GAMEDIR)/record + touch $(GAMEDIR)/logfile chown $(GAMEUID) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/* chgrp $(GAMEGRP) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/* chmod 666 $(GAMEDIR)/* *************** *** 139,144 chmod 777 $(GAMEDIR) $(GAMEDIR)/save install: $(VARAUX) $(GAME) -mkdir $(GAMEDIR) -mkdir $(GAMEDIR)/save -rm -f $(GAMEDIR)/$(GAME) --- 140,146 ----- chmod 777 $(GAMEDIR) $(GAMEDIR)/save install: $(VARAUX) $(GAME) + strip $(GAME) -mkdir $(GAMEDIR) -mkdir $(GAMEDIR)/save -rm -f $(GAMEDIR)/$(GAME) *** ./Makefile.xenix.orig Mon Feb 22 08:39:59 1988 --- ./Makefile.xenix Thu Feb 18 16:39:06 1988 *************** *** 138,143 mkdir $(GAMEDIR) $(GAMEDIR)/save touch $(GAMEDIR)/perm touch $(GAMEDIR)/record chown $(GAMEUID) $(GAMEDIR) $(GAMEDIR)/* chgrp $(GAMEGRP) $(GAMEDIR) $(GAMEDIR)/* chmod 666 $(GAMEDIR)/* --- 138,144 ----- mkdir $(GAMEDIR) $(GAMEDIR)/save touch $(GAMEDIR)/perm touch $(GAMEDIR)/record + touch $(GAMEDIR)/logfile chown $(GAMEUID) $(GAMEDIR) $(GAMEDIR)/* chgrp $(GAMEGRP) $(GAMEDIR) $(GAMEDIR)/* chmod 666 $(GAMEDIR)/* *** ./apply.c.orig Mon Feb 22 08:39:59 1988 --- ./apply.c Thu Mar 31 09:08:56 1988 *************** *** 1,4 ! /* SCCS Id: @(#)apply.c 2.1 87/09/23 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" --- 1,4 ----- ! /* SCCS Id: @(#)apply.c 2.3 88/01/21 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" *************** *** 12,17 extern char quitchars[]; extern char pl_character[]; #ifdef KAA extern boolean unweapon; #endif --- 12,20 ----- extern char quitchars[]; extern char pl_character[]; + #ifdef DGKMOD + extern void set_occupation(); + #endif #ifdef KAA extern boolean unweapon; #endif *************** *** 23,28 #ifdef RPH static use_mirror(); #endif doapply() { register struct obj *obj; --- 26,32 ----- #ifdef RPH static use_mirror(); #endif + static use_lamp(); doapply() { register struct obj *obj; *************** *** 54,59 use_mirror(obj); break; #endif #ifdef WALKIES case LEASH: use_leash(obj); --- 58,67 ----- use_mirror(obj); break; #endif + case LAMP: + case MAGIC_LAMP: + use_lamp(obj); + break; #ifdef WALKIES case LEASH: use_leash(obj); *************** *** 81,87 break; #endif case BLINDFOLD: ! if (Blindfolded) { Blindfolded = 0; if (!Blinded) Blinded = 1; /* see on next move */ else pline("You still cannot see."); --- 89,96 ----- break; #endif case BLINDFOLD: ! if (Blindfolded && obj->owornmask) { ! pline("You remove the blindfold."); Blindfolded = 0; obj->owornmask = 0; if (!Blinded) Blinded = 1; /* see on nexte */ *************** *** 83,89 case BLINDFOLD: if (Blindfolded) { Blindfolded = 0; ! if (!Blinded) Blinded = 1; /* see on next move */ else pline("You still cannot see."); } else { Blindfolded = 1; --- 92,99 ----- if (Blindfolded && obj->owornmask) { pline("You remove the blindfold."); Blindfolded = 0; ! obj->owornmask = 0; ! if (!Blinded) Blinded = 1; /* see on nexte */ else pline("You still cannot see."); } else if (!Blindfolded) { pline("You put the blindfold on."); *************** *** 85,92 Blindfolded = 0; if (!Blinded) Blinded = 1; /* see on next move */ else pline("You still cannot see."); ! } else { ! Blindfolded = 1; seeoff(0); } break; --- 95,104 ----- obj->owornmask = 0; if (!Blinded) Blinded = 1; /* see on nexte */ else pline("You still cannot see."); ! } else if (!Blindfolded) { ! pline("You put the blindfold on."); ! Blindfolded = INTRINSIC; ! obj->owornmask = W_TOOL; seeoff(0); } else pline("You are already wearing a blindfold!"); break; *************** *** 88,94 } else { Blindfolded = 1; seeoff(0); ! } break; default: pline("Sorry, I don't know how to use that."); --- 100,106 ----- Blindfolded = INTRINSIC; obj->owornmask = W_TOOL; seeoff(0); ! } else pline("You are already wearing a blindfold!"); break; case BADGE: if (Badged && obj->owornmask) { *************** *** 90,95 seeoff(0); } break; default: pline("Sorry, I don't know how to use that."); xit: --- 102,118 ----- seeoff(0); } else pline("You are already wearing a blindfold!"); break; + case BADGE: + if (Badged && obj->owornmask) { + pline("You remove the badge."); + Badged = 0; + obj->owornmask = 0; + } else if (!Badged) { + pline("You pin the badge on your chest."); + Badged = INTRINSIC; + obj->owornmask = W_TOOL; + } else pline("You are already wearing a badge!"); + break; default: pline("Sorry, I don't know how to use that."); xit: *************** *** 342,347 static use_leash(obj) struct obj *obj; { register struct monst *mtmp = fmon; while(mtmp && !mtmp->mleashed) mtmp = mtmp->nmon; --- 365,371 ----- static use_leash(obj) struct obj *obj; { register struct monst *mtmp = fmon; + extern char *lmonnam(); while(mtmp && !mtmp->mleashed) mtmp = mtmp->nmon; *************** *** 732,734 }/* use_mirror */ #endif --- 756,788 ----- }/* use_mirror */ #endif + + static + use_lamp(obj) + struct obj *obj; + { + if(obj->spe <= 0 || obj->otyp == MAGIC_LAMP ) { + pline("This lamp has no oil."); + return; + } + litroom(TRUE); + obj->spe -= 1; + } + + dorub() { + + if (!(carrying(LAMP) || carrying(MAGIC_LAMP))) { + pline("You do not have a lamp!"); + return; + } + if (!(uwep->otyp == LAMP || uwep->otyp == MAGIC_LAMP)) { + pline("You must wield the lamp to rub it!"); + return; + } + if (uwep->otyp == MAGIC_LAMP && uwep->spe > 0 && !rn2(3)) { + uwep->spe = 0; + djinni_from_bottle(); + } else if (uwep->otyp == MAGIC_LAMP && rn2(2) && !Blind) + pline("You see a puff of smoke."); + else pline("Nothing happens."); + } *** ./cmd.c.orig Mon Feb 22 08:39:59 1988 --- ./cmd.c Fri Feb 19 07:53:14 1988 *************** *** 1,4 ! /* SCCS Id: @(#)cmd.c 2.0 87/09/15 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" --- 1,4 ----- ! /* SCCS Id: @(#)cmd.c 2.3 88/01/21 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" *************** *** 10,16 doengrave(),dotele(),dohelp(),doeat(),doddrop(),do_mname(),doidtrap(), doprwep(),doprarm(),doprring(),doprgold(),dodiscovered(),dotypeinv(),dolook(), doset(),doup(), dodown(), done1(), donull(), dothrow(), doextcmd(), dodip(), ! dopray(), doextlist(); #ifdef WIZARD int wiz_wish(), wiz_identify(); #endif --- 10,21 ----- doengrave(),dotele(),dohelp(),doeat(),doddrop(),do_mname(),doidtrap(), doprwep(),doprarm(),doprring(),doprgold(),dodiscovered(),dotypeinv(),dolook(), doset(),doup(), dodown(), done1(), donull(), dothrow(), doextcmd(), dodip(), ! dopray(), doextlist(), dorub(); ! ! #ifdef THEOLOGY ! int dosacrifice (); ! #endif; ! #ifdef WIZARD int wiz_wish(), wiz_identify(), wiz_map(), wiz_detect(), wiz_attributes(); #endif *************** *** 12,18 doset(),doup(), dodown(), done1(), donull(), dothrow(), doextcmd(), dodip(), dopray(), doextlist(); #ifdef WIZARD ! int wiz_wish(), wiz_identify(); #endif #ifdef NEWCLASS int dosit(), doturn(); --- 17,23 ----- #endif; #ifdef WIZARD ! int wiz_wish(), wiz_identify(), wiz_map(), wiz_detect(), wiz_attributes(); #endif #ifdef NEWCLASS int dosit(), doturn(); *************** *** 125,130 #endif /* REDO */ struct func_tab cmdlist[]={ #ifdef WIZARD {'\011', wiz_identify}, #endif --- 130,138 ----- #endif /* REDO */ struct func_tab cmdlist[]={ + #if defined(DGKMOD) && defined(DEBUG_DOESNT_WORK) + {'\004', /* ^D */ dodebug}, /* generic debug function */ + #endif #ifdef WIZARD {'\005', /* ^E */ wiz_detect}, {'\006', /* ^F */ wiz_map}, *************** *** 126,132 struct func_tab cmdlist[]={ #ifdef WIZARD ! {'\011', wiz_identify}, #endif {'\020', doredotopl}, {'\022', doredraw}, --- 134,142 ----- {'\004', /* ^D */ dodebug}, /* generic debug function */ #endif #ifdef WIZARD ! {'\005', /* ^E */ wiz_detect}, ! {'\006', /* ^F */ wiz_map}, ! {'\011', /* ^I */ wiz_identify}, #endif {'\020', /* ^P */ doredotopl}, {'\022', /* ^R */ doredraw}, *************** *** 128,136 #ifdef WIZARD {'\011', wiz_identify}, #endif ! {'\020', doredotopl}, ! {'\022', doredraw}, ! {'\024', dotele}, #ifdef WIZARD {'\027', wiz_wish}, #endif --- 138,146 ----- {'\006', /* ^F */ wiz_map}, {'\011', /* ^I */ wiz_identify}, #endif ! {'\020', /* ^P */ doredotopl}, ! {'\022', /* ^R */ doredraw}, ! {'\024', /* ^T */ dotele}, #ifdef WIZARD {'\027', /* ^W */ wiz_wish}, {'\030', /* ^X */ wiz_attributes}, *************** *** 132,138 {'\022', doredraw}, {'\024', dotele}, #ifdef WIZARD ! {'\027', wiz_wish}, #endif #ifdef SUSPEND {'\032', dosuspend}, --- 142,149 ----- {'\022', /* ^R */ doredraw}, {'\024', /* ^T */ dotele}, #ifdef WIZARD ! {'\027', /* ^W */ wiz_wish}, ! {'\030', /* ^X */ wiz_attributes}, #endif #ifdef SUSPEND {'\032', /* ^Z */ dosuspend}, *************** *** 135,141 {'\027', wiz_wish}, #endif #ifdef SUSPEND ! {'\032', dosuspend}, #endif {'a', doapply}, {'A', doddoremarm}, --- 146,152 ----- {'\030', /* ^X */ wiz_attributes}, #endif #ifdef SUSPEND ! {'\032', /* ^Z */ dosuspend}, #endif {'a', doapply}, {'A', doddoremarm}, *************** *** 196,204 #ifdef DGKMOD {'@', dotogglepickup}, {'V', doMSCversion}, - # ifdef DEBUG_DOESNT_WORK - {'\004', dodebug}, /* generic debug function */ - # endif #endif {WEAPON_SYM, doprwep}, {ARMOR_SYM, doprarm}, --- 207,212 ----- #ifdef DGKMOD {'@', dotogglepickup}, {'V', doMSCversion}, #endif {WEAPON_SYM, doprwep}, {ARMOR_SYM, doprarm}, *************** *** 210,216 struct ext_func_tab extcmdlist[] = { #ifdef KAA ! "breathe", "breathe like a dragon", dobreathe, #endif #ifdef SPELLS "cast", "cast a spell", docast, --- 218,224 ----- struct ext_func_tab extcmdlist[] = { #ifdef KAA ! "breathe", "breathe fire like a red dragon", dobreathe, #endif #ifdef SPELLS "cast", "cast a spell", docast, *************** *** 216,221 "cast", "cast a spell", docast, #endif "dip", "dip an object into something", dodip, "pray", "pray to the gods for help", dopray, #ifdef KAA "remove", "remove a cursed item", doremove, --- 224,233 ----- "cast", "cast a spell", docast, #endif "dip", "dip an object into something", dodip, + #ifdef PRAYERS + #ifdef THEOLOGY + "sacrifice", "offer a sacrifice to the gods", dosacrifice, + #endif "pray", "pray to the gods for help", dopray, #endif #ifdef KAA *************** *** 217,222 #endif "dip", "dip an object into something", dodip, "pray", "pray to the gods for help", dopray, #ifdef KAA "remove", "remove a cursed item", doremove, #endif --- 229,235 ----- "sacrifice", "offer a sacrifice to the gods", dosacrifice, #endif "pray", "pray to the gods for help", dopray, + #endif #ifdef KAA "remove", "remove a cursed item", doremove, #endif *************** *** 221,226 "remove", "remove a cursed item", doremove, #endif #ifdef NEWCLASS "sit", "sit down", dosit, "turn", "turn undead", doturn, #endif --- 234,240 ----- "remove", "remove a cursed item", doremove, #endif #ifdef NEWCLASS + "rub", "rub a lamp", dorub, "sit", "sit down", dosit, "turn", "turn undead", doturn, #endif *************** *** 527,532 if (!objects[obj->otyp].oc_name_known || !obj->known) identify(obj); } return(0); } #endif /* WIZARD */ --- 541,720 ----- if (!objects[obj->otyp].oc_name_known || !obj->known) identify(obj); } + return(0); + } + + int wiz_map() + { + if (wizard) do_mapping(); + else pline("If you want a map, you'll have to make one yourself!"); + } + + int wiz_detect() + { + if(wizard) { + if(!findit()) return; + } else pline("Don't ask me where anything is, I only work here!"); + } + + int wiz_attributes() + { + char buf[BUFSZ]; + + if (!wizard) { + pline("Alas! You are not allowed see attributes."); + pline("Nice try though..."); + return; + } + + set_pager(0); + if(page_line("Current Attributes:") || page_line("")) goto quit; + + if (Adornment) { + (void) sprintf(buf, "You are adorned."); + if(page_line(buf)) goto quit; + } + if (Teleportation) { + (void) sprintf(buf, "You can teleport."); + if(page_line(buf)) goto quit; + } + if (Regeneration) { + (void) sprintf(buf, "You regenerate."); + if(page_line(buf)) goto quit; + } + if (Searching) { + (void) sprintf(buf, "You have searching."); + if(page_line(buf)) goto quit; + } + if (See_invisible) { + (void) sprintf(buf, "You see invisible."); + if(page_line(buf)) goto quit; + } + if (Stealth) { + (void) sprintf(buf, "You have stealth."); + if(page_line(buf)) goto quit; + } + if (Levitation) { + (void) sprintf(buf, "You are levitated."); + if(page_line(buf)) goto quit; + } + if (Poison_resistance) { + (void) sprintf(buf, "You are poison resistant."); + if(page_line(buf)) goto quit; + } + if (Aggravate_monster) { + (void) sprintf(buf, "You aggravate monsters."); + if(page_line(buf)) goto quit; + } + if (Hunger) { + (void) sprintf(buf, "You have hunger."); + if(page_line(buf)) goto quit; + } + if (Fire_resistance) { + (void) sprintf(buf, "You are fire resistant."); + if(page_line(buf)) goto quit; + } + if (Cold_resistance) { + (void) sprintf(buf, "You are cold resistant."); + if(page_line(buf)) goto quit; + } + if (Protection_from_shape_changers) { + (void) sprintf(buf, "You are protected from shape changers."); + if(page_line(buf)) goto quit; + } + if (Conflict) { + (void) sprintf(buf, "You cause conflict."); + if(page_line(buf)) goto quit; + } + if (Gain_strength) { + (void) sprintf(buf, "You have extra strength."); + if(page_line(buf)) goto quit; + } + if (Increase_damage) { + (void) sprintf(buf, "You cause extra damage."); + if(page_line(buf)) goto quit; + } + if (Protection) { + (void) sprintf(buf, "You are protected."); + if(page_line(buf)) goto quit; + } + if (Warning) { + (void) sprintf(buf, "You are warned."); + if(page_line(buf)) goto quit; + } + if (Teleport_control) { + (void) sprintf(buf, "You have teleport control."); + if(page_line(buf)) goto quit; + } + if (Polymorph) { + (void) sprintf(buf, "You are polymorphing."); + if(page_line(buf)) goto quit; + } + if (Polymorph_control) { + (void) sprintf(buf, "You have polymorph control."); + if(page_line(buf)) goto quit; + } + if (Shock_resistance) { + (void) sprintf(buf, "You are shock resistant."); + if(page_line(buf)) goto quit; + } + if (Telepat) { + (void) sprintf(buf, "You have telepathy."); + if(page_line(buf)) goto quit; + } + if (Fast) { + (void) sprintf(buf, "You are fast."); + if(page_line(buf)) goto quit; + } + if (Confusion) { + (void) sprintf(buf, "You are confused."); + if(page_line(buf)) goto quit; + } + if (Invisible) { + (void) sprintf(buf, "You are invisible."); + if(page_line(buf)) goto quit; + } + if (Glib) { + (void) sprintf(buf, "You are glib."); + if(page_line(buf)) goto quit; + } + if (Punished) { + (void) sprintf(buf, "You are punished."); + if(page_line(buf)) goto quit; + } + if (Sick) { + (void) sprintf(buf, "You are sick."); + if(page_line(buf)) goto quit; + } + if (Blinded) { + (void) sprintf(buf, "You are blinded."); + if(page_line(buf)) goto quit; + } + if (Wounded_legs) { + (void) sprintf(buf, "You have wounded legs."); + if(page_line(buf)) goto quit; + } + if (Stoned) { + (void) sprintf(buf, "You are stoned."); + if(page_line(buf)) goto quit; + } + if (Hallucination) { + (void) sprintf(buf, "You are hallucinated."); + if(page_line(buf)) goto quit; + } + if (Blindfolded) { + (void) sprintf(buf, "You are blindfolded."); + if(page_line(buf)) goto quit; + } + if (Badged) { + (void) sprintf(buf, "You are badged."); + if(page_line(buf)) goto quit; + } + + set_pager(1); + return(0); + quit: + set_pager(2); return(0); } #endif /* WIZARD */ *** ./config.h.orig Mon Feb 22 08:40:00 1988 --- ./config.h Thu Mar 31 13:16:31 1988 *************** *** 1,4 ! /* SCCS Id: @(#)config.h 2.2 87/11/11 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #ifndef CONFIG /* make sure the compiler does not see the typedefs twice */ --- 1,4 ----- ! /* SCCS Id: @(#)config.h 2.3 87/12/12 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #ifndef CONFIG /* make sure the compiler does not see the typedefs twice */ *************** *** 17,23 * rindex strrchr * Also, the code for suspend and various ioctls is only given for BSD4.2 */ ! /* #define MSDOS /* define for MS-DOS (actually defined by compiler) */ #define UNIX /* delete if no fork(), exec() available */ /* #define GENIX /* Yet Another Unix Clone */ #define BSD /* defind for 4.n BSD */ --- 17,25 ----- * rindex strrchr * Also, the code for suspend and various ioctls is only given for BSD4.2 */ ! #ifdef __MSDOS__ /* Turbo C auto-defines __MSDOS__, others MSDOS */ ! /* # define MSDOS /* define for MS-DOS (actually defined by compiler) */ ! #endif #define UNIX /* delete if no fork(), exec() available */ /* #define GENIX /* Yet Another Unix Clone */ #define BSD /* defind for 4.n BSD */ *************** *** 22,27 /* #define GENIX /* Yet Another Unix Clone */ #define BSD /* defind for 4.n BSD */ /* #define SYSV /* define for System V */ /* #define BETA /* if a beta-test copy [MRS] */ #define VERSION "2.2a" /* version number. */ --- 24,30 ----- /* #define GENIX /* Yet Another Unix Clone */ #define BSD /* defind for 4.n BSD */ /* #define SYSV /* define for System V */ + /* #define NETWORK /* if running on a networked system */ /* #define BETA /* if a beta-test copy [MRS] */ #define VERSION "2.3e" /* version number. */ *************** *** 24,30 /* #define SYSV /* define for System V */ /* #define BETA /* if a beta-test copy [MRS] */ ! #define VERSION "2.2a" /* version number. */ #define PYRAMID_BUG /* avoid a bug on the Pyramid */ /* #define APOLLO /* same for the Apollo */ --- 27,33 ----- /* #define NETWORK /* if running on a networked system */ /* #define BETA /* if a beta-test copy [MRS] */ ! #define VERSION "2.3e" /* version number. */ #define PYRAMID_BUG /* avoid a bug on the Pyramid */ /* #define APOLLO /* same for the Apollo */ *************** *** 37,47 #define signal ssignal #endif ! #define WIZARD "mike" /* the person allowed to use the -D option */ ! #define RECORD "record"/* the file containing the list of topscorers */ ! #define NEWS "news" /* the file containing the latest hack news */ ! #define HELP "help" /* the file containing a description of the commands */ ! #define SHELP "hh" /* abbreviated form of the same */ #define RUMORFILE "rumors" /* a file with fortune cookies */ #define DATAFILE "data" /* a file giving the meaning of symbols used */ #define FMASK 0660 /* file creation mask */ --- 40,54 ----- #define signal ssignal #endif ! #ifndef WIZARD /* allow for compile-time or Makefile changes */ ! # define WIZARD "mike" /* the person allowed to use the -D option */ ! #endif ! ! #define RECORD "record" /* the file containing the list of topscorers */ ! #define LOGFILE "logfile" /* larger file for debugging purposes */ ! #define NEWS "news" /* the file containing the latest hack news */ ! #define HELP "help" /* the file containing command descriptions */ ! #define SHELP "hh" /* abbreviated form of the same */ #define RUMORFILE "rumors" /* a file with fortune cookies */ #define DATAFILE "data" /* a file giving the meaning of symbols used */ #define FMASK 0660 /* file creation mask */ *************** *** 149,154 */ typedef schar xchar; typedef xchar boolean; /* 0 or 1 */ #define TRUE 1 #define FALSE 0 --- 156,162 ----- */ typedef schar xchar; typedef xchar boolean; /* 0 or 1 */ + /* #define void int /* define if no "void" data type. */ #define TRUE 1 #define FALSE 0 *************** *** 219,224 #define KJSMODS /* Various changes made by Kevin Sweet */ #define BVH /* Additions by Bruce Holloway */ #define SAC /* Soldiers, barracks by Steve Creps */ #if defined(MSDOS) && defined(GRAPHICS) #define MSDOSCOLOR --- 227,236 ----- #define KJSMODS /* Various changes made by Kevin Sweet */ #define BVH /* Additions by Bruce Holloway */ #define SAC /* Soldiers, barracks by Steve Creps */ + #define SHIRT /* Hawaiian shirt code by Steve Linhart */ + #define THEOLOGY /* Smarter gods - The Unknown Hacker */ + #define STOOGES /* Three wild and crazy guys - Bruce Mewborne */ + #define SINKS /* Kitchen sinks - Janet Walz */ #ifdef MSDOS #define TERMLIB /* enable use of termcap file c:\etc\termcap */ *************** *** 220,227 #define BVH /* Additions by Bruce Holloway */ #define SAC /* Soldiers, barracks by Steve Creps */ ! #if defined(MSDOS) && defined(GRAPHICS) ! #define MSDOSCOLOR #endif /* --- 232,243 ----- #define STOOGES /* Three wild and crazy guys - Bruce Mewborne */ #define SINKS /* Kitchen sinks - Janet Walz */ ! #ifdef MSDOS ! #define TERMLIB /* enable use of termcap file c:\etc\termcap */ ! /* or .\termcap.cnf for MSDOS (SAC) */ ! # ifdef GRAPHICS ! # define MSDOSCOLOR ! # endif #endif /* *************** *** 230,235 #define GOLD_ON_BOTL #define EXP_ON_BOTL #ifdef REDO #define DOAGAIN '\001' /* Used in tty.c and cmd.c */ --- 246,252 ----- #define GOLD_ON_BOTL #define EXP_ON_BOTL + #define SCORE_ON_BOTL /* added by Gary Erickson (erickson@ucivax) */ #ifdef REDO #define DOAGAIN '\001' /* Used in tty.c and cmd.c */ *** ./do.c.orig Mon Feb 22 08:40:01 1988 --- ./do.c Tue Mar 29 08:33:59 1988 *************** *** 1,4 ! /* SCCS Id: @(#)do.c 2.0 87/09/15 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Contains code for 'd', 'D' (drop), '>', '<' (up, down) and 't' (throw) */ --- 1,4 ----- ! /* SCCS Id: @(#)do.c 2.3 88/02/11 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Contains code for 'd', 'D' (drop), '>', '<' (up, down) and 't' (throw) */ *************** *** 47,53 free((char *) obj); return(1); } ! if(obj->owornmask & (W_ARMOR | W_RING)){ pline("You cannot drop something you are wearing."); return(0); } --- 47,53 ----- free((char *) obj); return(1); } ! if(obj->owornmask & (W_ARMOR | W_RING | W_TOOL)){ pline("You cannot drop something you are wearing."); return(0); } *************** *** 68,73 } } #endif pline("You dropped %s.", doname(obj)); dropx(obj); return(1); --- 68,85 ----- } } #endif + #ifdef SINKS + if((obj->olet == RING_SYM) && IS_SINK(levl[u.ux][u.uy].typ)) + if (u.uswallow) { + freeinv(obj); + mpickobj(u.ustuck,obj); + return(1); + } + else { + dosinkring(obj); + return(1); + } + #endif pline("You dropped %s.", doname(obj)); dropx(obj); return(1); *************** *** 401,403 Wounded_legs = 0; } } --- 413,525 ----- Wounded_legs = 0; } } + + #ifdef SINKS + trycall(obj) + register struct obj *obj; + { + if(!objects[obj->otyp].oc_name_known && + !objects[obj->otyp].oc_uname) + docall(obj); + } + + dosinkring(obj) /* obj is a ring being dropped over a kitchen sink */ + register struct obj *obj; + { + register struct obj *otmp,*otmp2; + register short eaten; + pline("You drop %s down the drain.", doname(obj)); + switch(obj->otyp) { + case RIN_ADORNMENT: { + pline("The faucets flash brightly for a moment."); + trycall(obj); + break; + } + case RIN_REGENERATION: { + pline("The sink looks as good as new."); + trycall(obj); + break; + } + case RIN_SEARCHING: + break; + case RIN_SEE_INVISIBLE: + break; + case RIN_STEALTH: { + pline("The sink seems to blend into the floor for a moment."); + trycall(obj); + break; + } + case RIN_LEVITATION: { + pline("The sink quivers upward for a moment."); + trycall(obj); + break; + } + case RIN_POISON_RESISTANCE: + break; + case RIN_AGGRAVATE_MONSTER: + break; + case RIN_HUNGER: { + eaten = 0; + for(otmp=fobj; otmp; otmp=otmp2) { + otmp2 = otmp->nobj; + if(otmp->ox == u.ux && otmp->oy == u.uy) + if(!Punished || + (otmp->otyp != HEAVY_IRON_BALL && otmp->otyp != IRON_CHAIN)) { + eaten++; + pline("Suddenly, %s vanishes from the sink!",doname(otmp)); + delobj(otmp); + } + } + if(eaten) + trycall(obj); + break; + } + case RIN_FIRE_RESISTANCE: { + pline("The hot water faucet flashes brightly for a moment."); + trycall(obj); + break; + } + case RIN_COLD_RESISTANCE: { + pline("The cold water faucet flashes brightly for a moment."); + trycall(obj); + break; + } + case RIN_PROTECTION_FROM_SHAPE_CHAN: { + pline("The sink momentarily looks nothing like a fountain."); + trycall(obj); + break; + } + case RIN_CONFLICT: + break; + case RIN_GAIN_STRENGTH: + break; + case RIN_INCREASE_DAMAGE: + break; + case RIN_PROTECTION: + break; + case RIN_WARNING: { + pline("The sink glows white for a moment."); + trycall(obj); + break; + } + case RIN_TELEPORTATION: /* fall through */ + case RIN_TELEPORT_CONTROL: { + pline("The sink momentarily vanishes."); + trycall(obj); + break; + } + case RIN_POLYMORPH: /* fall through */ + case RIN_POLYMORPH_CONTROL: { + pline("The sink momentarily looks like a fountain."); + trycall(obj); + break; + } + } + if (!rn2(20)) { + pline("The sink backs up, leaving %s.", doname(obj)); + dropx(obj); + } + else + useup(obj); + } + #endif *** ./do_name.c.orig Mon Feb 22 08:40:02 1988 --- ./do_name.c Thu Mar 31 09:08:57 1988 *************** *** 1,4 ! /* SCCS Id: @(#)do_name.c 2.1 87/11/09 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include <stdio.h> --- 1,4 ----- ! /* SCCS Id: @(#)do_name.c 2.3 88/02/11 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include <stdio.h> *************** *** 5,10 #include "hack.h" extern char plname[]; extern char *rndmonnam(); getpos(cc,force,goal) coord *cc; --- 5,11 ----- #include "hack.h" extern char plname[]; extern char *rndmonnam(); + extern void savech(); getpos(cc,force,goal) coord *cc; *************** *** 255,260 (void) strcpy(buf, shkname(mtmp)); break; } /* fall into next case */ default: (void) sprintf(buf, "the %s%s", --- 256,267 ----- (void) strcpy(buf, shkname(mtmp)); break; } + #ifdef STOOGES + if(mtmp->isstooge) { + (void) strcpy(buf, mtmp->data->mname); + break; + } + #endif /* fall into next case */ default: (void) sprintf(buf, "the %s%s", *** ./do_wear.c.orig Mon Feb 22 08:40:02 1988 --- ./do_wear.c Thu Jan 21 12:24:14 1988 *************** *** 1,4 ! /* SCCS Id: @(#)do_wear.c 2.0 87/09/15 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include <stdio.h> --- 1,4 ----- ! /* SCCS Id: @(#)do_wear.c 2.3 88/01/21 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include <stdio.h> *************** *** 13,19 doremarm() { register struct obj *otmp; ! if(!uarm && !uarmh && !uarms && !uarmg) { pline("Not wearing any armor."); return(0); } --- 13,23 ----- doremarm() { register struct obj *otmp; ! if(!uarm && !uarmh && !uarms && !uarmg ! #ifdef SHIRT ! && !uarmu ! #endif ! ) { pline("Not wearing any armor."); return(0); } *************** *** 17,22 pline("Not wearing any armor."); return(0); } otmp = (!uarmh && !uarms && !uarmg) ? uarm : (!uarms && !uarm && !uarmg) ? uarmh : (!uarmh && !uarm && !uarmg) ? uarms : --- 21,32 ----- pline("Not wearing any armor."); return(0); } + #ifdef SHIRT + otmp = (!uarmh && !uarms && !uarmg) ? (uarm ? uarm : uarmu) : + (!uarm && !uarms && !uarmg && !uarmu) ? uarmh : + (!uarm && !uarmh && !uarmg && !uarmu) ? uarms : + (!uarm && !uarmh && !uarms && !uarmu) ? uarmg : + #else otmp = (!uarmh && !uarms && !uarmg) ? uarm : (!uarms && !uarm && !uarmg) ? uarmh : (!uarmh && !uarm && !uarmg) ? uarms : *************** *** 21,26 (!uarms && !uarm && !uarmg) ? uarmh : (!uarmh && !uarm && !uarmg) ? uarms : (!uarmh && !uarm && !uarms) ? uarmg : getobj("[", "take off"); if(!otmp) return(0); if(!(otmp->owornmask & (W_ARMOR - W_ARM2))) { --- 31,37 ----- (!uarms && !uarm && !uarmg) ? uarmh : (!uarmh && !uarm && !uarmg) ? uarms : (!uarmh && !uarm && !uarms) ? uarmg : + #endif getobj("[", "take off"); if(!otmp) return(0); if(!(otmp->owornmask & (W_ARMOR - W_ARM2))) { *************** *** 94,100 nomovemsg = "You finished taking off your helmet."; break; case PAIR_OF_GLOVES: ! nomovemsg = "You finished taking off your gloves"; break; default: nomovemsg = "You finished taking off your suit."; --- 105,111 ----- nomovemsg = "You finished taking off your helmet."; break; case PAIR_OF_GLOVES: ! nomovemsg = "You finished taking off your gloves."; break; default: nomovemsg = "You finished taking off your suit."; *************** *** 144,149 err++; } else mask = W_ARMG; } else { #ifdef KAA if(cantweararm(u.usym)) { --- 155,178 ----- err++; } else mask = W_ARMG; + #ifdef SHIRT + } else if( otmp->otyp == HAWAIIAN_SHIRT ) { + # ifdef KAA + if(cantweararm(u.usym)) { + pline("You can't wear a shirt!"); + return(0); + } + # endif + if (uarm || uarmu) { + if(!uarm) /* then uarmu */ + pline("You are already wearing a shirt."); + else + pline("You can't wear that over your %s.", + uarm->otyp != ELVEN_CLOAK ? "armor" : "cloak" ); + err++; + } else + mask = W_ARMU; + #endif } else { #ifdef KAA if(cantweararm(u.usym)) { *************** *** 299,304 if(uarmh) uac -= ARM_BONUS(uarmh); if(uarms) uac -= ARM_BONUS(uarms); if(uarmg) uac -= ARM_BONUS(uarmg); if(uleft && uleft->otyp == RIN_PROTECTION) uac -= uleft->spe; if(uright && uright->otyp == RIN_PROTECTION) uac -= uright->spe; #ifdef PRAYERS --- 328,334 ----- if(uarmh) uac -= ARM_BONUS(uarmh); if(uarms) uac -= ARM_BONUS(uarms); if(uarmg) uac -= ARM_BONUS(uarmg); + if(uarmu) uac -= ARM_BONUS(uarmu); if(uleft && uleft->otyp == RIN_PROTECTION) uac -= uleft->spe; if(uright && uright->otyp == RIN_PROTECTION) uac -= uright->spe; #ifdef PRAYERS *************** *** 352,357 if(uarmh && (!otmph || !rn2(4))) otmph = uarmh; if(uarmg && (!otmph || !rn2(4))) otmph = uarmg; if(uarms && (!otmph || !rn2(4))) otmph = uarms; return(otmph); } --- 382,388 ----- if(uarmh && (!otmph || !rn2(4))) otmph = uarmh; if(uarmg && (!otmph || !rn2(4))) otmph = uarmg; if(uarms && (!otmph || !rn2(4))) otmph = uarms; + if(!uarm && uarmu && (!otmph || !rn2(4))) otmph = uarmu; return(otmph); } *************** *** 361,366 if(otmph->rustfree || otmph->otyp == CRYSTAL_PLATE_MAIL || otmph->otyp == ELVEN_CLOAK || otmph->otyp == LEATHER_ARMOR || otmph->otyp == STUDDED_LEATHER_ARMOR) { pline("Your %s not affected!", --- 392,400 ----- if(otmph->rustfree || otmph->otyp == CRYSTAL_PLATE_MAIL || otmph->otyp == ELVEN_CLOAK || + #ifdef SHIRT + otmph->otyp == HAWAIIAN_SHIRT || + #endif otmph->otyp == LEATHER_ARMOR || otmph->otyp == STUDDED_LEATHER_ARMOR) { pline("Your %s not affected!", *** ./dog.c.orig Tue Mar 29 08:56:11 1988 --- ./dog.c Tue Mar 29 08:58:11 1988 *************** *** 1,4 ! /* SCCS Id: @(#)dog.c 1.4 87/08/08 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* dog.c - version 1.0.3 */ --- 1,4 ----- ! /* SCCS Id: @(#)dog.c 2.3 88/03/29 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" *************** *** 1,6 /* SCCS Id: @(#)dog.c 1.4 87/08/08 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ - /* dog.c - version 1.0.3 */ #include "hack.h" extern struct monst *makemon(); --- 1,5 ----- /* SCCS Id: @(#)dog.c 2.3 88/03/29 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ #include "hack.h" extern struct monst *makemon(); *************** *** 31,36 strcpy(NAME(mtmp2), dogname); replmon(mtmp, mtmp2); mtmp = mtmp2; } #endif /* DOGNAME */ initedog(mtmp); --- 30,36 ----- strcpy(NAME(mtmp2), dogname); replmon(mtmp, mtmp2); mtmp = mtmp2; + dogname[0] = '\0'; /* name only first dog */ } #endif /* DOGNAME */ initedog(mtmp); SHAR_EOF if test 36456 -ne "`wc -c < 'Update.2.3.a'`" then echo shar: error transmitting "'Update.2.3.a'" '(should have been 36456 characters)' fi fi # end of overwriting check # End of shell archive exit 0 -- Mike Stephenson Mail: Genamation Inc. Phone: (416) 475-9434 351 Steelcase Rd. W Markham, Ontario. UUCP: uunet!{mnetor,utzoo}!genat!genpyr!mike Canada L3R 3W1 uunet!{mnetor,utzoo}!genat!mike