From: cohrs Date: Sun, 20 Jan 2002 21:05:29 +0000 (+0000) Subject: starting the game without a pet X-Git-Tag: MOVE2GIT~3413 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7a634884b4292a79eb740a21857a10252255b867;p=nethack starting the game without a pet Incorporate a slightly cleaned up version of 's patch to enable a "pettype:none" startup option that allows one to start the game without a pet. --- diff --git a/dat/opthelp b/dat/opthelp index c7000da68..c287b1107 100644 --- a/dat/opthelp +++ b/dat/opthelp @@ -184,7 +184,7 @@ name the name of your character [obtained by asking the system or objects like dungeon, but for object symbols default: ])[="(%!?+/$*`0_. pettype your preferred type of pet (cat or dog), if your character - class uses both types [RANDOM] + class uses both types; or none for no pet [RANDOM] race Your starting race (e.g., race:Human, race:Elf). [RANDOM] role Your starting role (e.g., role:Barbarian, role:Valk). Although you can specify just the first letter(s), it will diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index d2c2f8f59..5548abf59 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -1907,7 +1907,8 @@ If true, always display your current inventory in a window. This only makes sense for windowing system interfaces that implement this feature. .lp pettype Specify the type of your initial pet, if you are playing a character class -that uses multiple types of pets. Possible values are ``cat'' and ``dog''. +that uses multiple types of pets; or choose to have no initial pet at all. +Possible values are ``cat'', ``dog'' and ``none''. Cannot be set with the `O' command. .lp pickup_burden When you pick up an item that would exceed this encumbrance diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 90cd70e09..3406d3fce 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -2349,8 +2349,8 @@ makes sense for windowing system interfaces that implement this feature. %.lp \item[\ib{pettype}] Specify the type of your initial pet, if you are playing a character class -that uses multiple types of pets. Possible values are ``{\tt cat}'' -and ``{\tt dog}''. +that uses multiple types of pets; or choose to have no initial pet at all. +Possible values are ``{\tt cat}'', ``{\tt dog}'' and ``{\tt none}''. Cannot be set with the `{\tt O}' command. %.Ip \item[\ib{pickup\_burden}] diff --git a/doc/fixes33.2 b/doc/fixes33.2 index d6bf5da2a..d8815dea2 100644 --- a/doc/fixes33.2 +++ b/doc/fixes33.2 @@ -495,6 +495,7 @@ add new Gnomish Mines levels from Kelly Bailey's patch jousting by players wielding a lance while riding when reading spellbooks, don't "continue studying" wrong book if original one gets destroyed after previous reading attempt has been interrupted +can start game without a pet via pettype:none (Dylan O'Donnell) Platform- and/or Interface-Specific New Features diff --git a/src/decl.c b/src/decl.c index bdda5ec8f..4fdefdf46 100644 --- a/src/decl.c +++ b/src/decl.c @@ -195,7 +195,7 @@ NEARDATA struct obj zeroobj = DUMMY; NEARDATA char dogname[PL_PSIZ] = DUMMY; NEARDATA char catname[PL_PSIZ] = DUMMY; NEARDATA char horsename[PL_PSIZ] = DUMMY; -char preferred_pet; /* '\0', 'c', 'd' */ +char preferred_pet; /* '\0', 'c', 'd', 'n' (none) */ /* monsters that went down/up together with @ */ NEARDATA struct monst *mydogs = (struct monst *)0; /* monsters that are moving to another dungeon level */ diff --git a/src/dog.c b/src/dog.c index d5266c477..55f7b6b64 100644 --- a/src/dog.c +++ b/src/dog.c @@ -119,6 +119,8 @@ makedog() int pettype; static int petname_used = 0; + if (preferred_pet == 'n') return((struct monst *) 0); + pettype = pet_type(); if (pettype == PM_LITTLE_DOG) petname = dogname; diff --git a/src/options.c b/src/options.c index 5b7a72fda..865b1a7ec 100644 --- a/src/options.c +++ b/src/options.c @@ -1058,11 +1058,15 @@ boolean tinitial, tfrom_file; case 'F': preferred_pet = 'c'; break; + case 'n': /* no pet */ + case 'N': + preferred_pet = 'n'; + break; default: pline("Unrecognized pet type '%s'", op); break; } - } else if (negated) preferred_pet = 0; + } else if (negated) preferred_pet = 'n'; return; } @@ -2262,7 +2266,8 @@ char *buf; #endif else if (!strcmp(optname, "pettype")) Sprintf(buf, "%s", (preferred_pet == 'c') ? "cat" : - (preferred_pet == 'd') ? "dog" : "random" ); + (preferred_pet == 'd') ? "dog" : + (preferred_pet == 'n') ? "none" : "random"); else if (!strcmp(optname, "pickup_burden")) Sprintf(buf, "%s", burdentype[flags.pickup_burden] ); else if (!strcmp(optname, "pickup_types")) {