--- 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