randonly occurring Discworld novels
Give 'novel' a 1 in 1000 chance of being created in place of each random spellbook (except for hero's initial inventory and NPC priests' monster inventory and divine reward for prayer--those all force regular spellbooks; statue contents aren't among the exceptions--those books can now be novels). Shop inventory (where first book or scroll shop created is guaranteed one novel) hasn't been touched. If there is any other special spellbook handling somewhere, I've overlooked it.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.63 $ $NHDT-Date: 1578834315 2020/01/12 13:05:15 $
|
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.64 $ $NHDT-Date: 1578855619 2020/01/12 19:00:19 $
|
||||||
|
|
||||||
General Fixes and Modified Features
|
General Fixes and Modified Features
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
@@ -106,6 +106,10 @@ applying a spellbook hints about read charges left
|
|||||||
wizard mode wishing for level topology can now create hidden doors (ask for
|
wizard mode wishing for level topology can now create hidden doors (ask for
|
||||||
"secret door" when at a door or wall location) and hidden corridor
|
"secret door" when at a door or wall location) and hidden corridor
|
||||||
spots ("secret corridor" at a corridor location)
|
spots ("secret corridor" at a corridor location)
|
||||||
|
tiny chance for randomly created spellbooks to be Discworld novels instead
|
||||||
|
of having only one in the first book or scroll shop created (won't
|
||||||
|
occur in hero's initial inventory or NPC priest inventory or be
|
||||||
|
bestowed as a prayer boon; might occur inside statues)
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific New Features
|
Platform- and/or Interface-Specific New Features
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 mkobj.c $NHDT-Date: 1571531889 2019/10/20 00:38:09 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.157 $ */
|
/* NetHack 3.6 mkobj.c $NHDT-Date: 1578855620 2020/01/12 19:00:20 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.173 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Derek S. Ray, 2015. */
|
/*-Copyright (c) Derek S. Ray, 2015. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -1054,6 +1054,7 @@ boolean artif;
|
|||||||
case STATUE:
|
case STATUE:
|
||||||
/* possibly overridden by mkcorpstat() */
|
/* possibly overridden by mkcorpstat() */
|
||||||
otmp->corpsenm = rndmonnum();
|
otmp->corpsenm = rndmonnum();
|
||||||
|
/* note: might produce a novel rather than a spellbook */
|
||||||
if (!verysmall(&mons[otmp->corpsenm])
|
if (!verysmall(&mons[otmp->corpsenm])
|
||||||
&& rn2(level_difficulty() / 2 + 10) > 10)
|
&& rn2(level_difficulty() / 2 + 10) > 10)
|
||||||
(void) add_to_container(otmp, mkobj(SPBOOK_CLASS, FALSE));
|
(void) add_to_container(otmp, mkobj(SPBOOK_CLASS, FALSE));
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 objects.c $NHDT-Date: 1577184069 2019/12/24 10:41:09 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.59 $ */
|
/* NetHack 3.6 objects.c $NHDT-Date: 1578855624 2020/01/12 19:00:24 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.61 $ */
|
||||||
/* Copyright (c) Mike Threepoint, 1989. */
|
/* Copyright (c) Mike Threepoint, 1989. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -918,7 +918,7 @@ SPELL("fireball", "ragged",
|
|||||||
SPELL("cone of cold", "dog eared",
|
SPELL("cone of cold", "dog eared",
|
||||||
P_ATTACK_SPELL, 10, 7, 4, 1, RAY, HI_PAPER),
|
P_ATTACK_SPELL, 10, 7, 4, 1, RAY, HI_PAPER),
|
||||||
SPELL("sleep", "mottled",
|
SPELL("sleep", "mottled",
|
||||||
P_ENCHANTMENT_SPELL, 50, 1, 1, 1, RAY, HI_PAPER),
|
P_ENCHANTMENT_SPELL, 49, 1, 1, 1, RAY, HI_PAPER),
|
||||||
SPELL("finger of death", "stained",
|
SPELL("finger of death", "stained",
|
||||||
P_ATTACK_SPELL, 5, 10, 7, 1, RAY, HI_PAPER),
|
P_ATTACK_SPELL, 5, 10, 7, 1, RAY, HI_PAPER),
|
||||||
SPELL("light", "cloth",
|
SPELL("light", "cloth",
|
||||||
@@ -1003,7 +1003,7 @@ SPELL("blank paper", "plain", P_NONE, 18, 0, 0, 0, 0, HI_PAPER),
|
|||||||
/* tribute book for 3.6 */
|
/* tribute book for 3.6 */
|
||||||
OBJECT(OBJ("novel", "paperback"),
|
OBJECT(OBJ("novel", "paperback"),
|
||||||
BITS(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, PAPER),
|
BITS(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, PAPER),
|
||||||
0, SPBOOK_CLASS, 0, 0, 0, 20, 0, 0, 0, 1, 20, CLR_BRIGHT_BLUE),
|
0, SPBOOK_CLASS, 1, 0, 0, 20, 0, 0, 0, 1, 20, CLR_BRIGHT_BLUE),
|
||||||
/* a special, one of a kind, spellbook */
|
/* a special, one of a kind, spellbook */
|
||||||
OBJECT(OBJ("Book of the Dead", "papyrus"),
|
OBJECT(OBJ("Book of the Dead", "papyrus"),
|
||||||
BITS(0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, P_NONE, PAPER),
|
BITS(0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, P_NONE, PAPER),
|
||||||
|
|||||||
13
src/pray.c
13
src/pray.c
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 pray.c $NHDT-Date: 1575830189 2019/12/08 18:36:29 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.134 $ */
|
/* NetHack 3.6 pray.c $NHDT-Date: 1578855625 2020/01/12 19:00:25 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.137 $ */
|
||||||
/* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
|
/* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -1181,10 +1181,13 @@ aligntyp g_align;
|
|||||||
struct obj *otmp;
|
struct obj *otmp;
|
||||||
int sp_no, trycnt = u.ulevel + 1;
|
int sp_no, trycnt = u.ulevel + 1;
|
||||||
|
|
||||||
/* not yet known spells given preference over already known ones
|
/* not yet known spells given preference over already known ones;
|
||||||
*/
|
also, try to grant a spell for which there is a skill slot;
|
||||||
/* Also, try to grant a spell for which there is a skill slot */
|
make sure that it's a spellbook and not a novel */
|
||||||
otmp = mkobj(SPBOOK_CLASS, TRUE);
|
/* otmp = mkobj(SPBOOK_CLASS, TRUE); --might yield NOVEL */
|
||||||
|
otmp = mksobj(rnd_class(g.bases[SPBOOK_CLASS],
|
||||||
|
SPE_BLANK_PAPER),
|
||||||
|
TRUE, FALSE);
|
||||||
while (--trycnt > 0) {
|
while (--trycnt > 0) {
|
||||||
if (otmp->otyp != SPE_BLANK_PAPER) {
|
if (otmp->otyp != SPE_BLANK_PAPER) {
|
||||||
for (sp_no = 0; sp_no < MAXSPELL; sp_no++)
|
for (sp_no = 0; sp_no < MAXSPELL; sp_no++)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 priest.c $NHDT-Date: 1545131519 2018/12/18 11:11:59 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.45 $ */
|
/* NetHack 3.6 priest.c $NHDT-Date: 1578855626 2020/01/12 19:00:26 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.56 $ */
|
||||||
/* Copyright (c) Izchak Miller, Steve Linhart, 1989. */
|
/* Copyright (c) Izchak Miller, Steve Linhart, 1989. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -258,7 +258,10 @@ boolean sanctum; /* is it the seat of the high priest? */
|
|||||||
}
|
}
|
||||||
/* 2 to 4 spellbooks */
|
/* 2 to 4 spellbooks */
|
||||||
for (cnt = rn1(3, 2); cnt > 0; --cnt) {
|
for (cnt = rn1(3, 2); cnt > 0; --cnt) {
|
||||||
(void) mpickobj(priest, mkobj(SPBOOK_CLASS, FALSE));
|
/* avoid novel (used to be mkobj(SPBOOK_CLASS, FALSE) here) */
|
||||||
|
(void) mpickobj(priest, mksobj(rnd_class(g.bases[SPBOOK_CLASS],
|
||||||
|
SPE_BLANK_PAPER),
|
||||||
|
TRUE, FALSE));
|
||||||
}
|
}
|
||||||
/* robe [via makemon()] */
|
/* robe [via makemon()] */
|
||||||
if (rn2(2) && (otmp = which_armor(priest, W_ARMC)) != 0) {
|
if (rn2(2) && (otmp = which_armor(priest, W_ARMC)) != 0) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 u_init.c $NHDT-Date: 1575245094 2019/12/02 00:04:54 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.60 $ */
|
/* NetHack 3.6 u_init.c $NHDT-Date: 1578855627 2020/01/12 19:00:27 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.67 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2017. */
|
/*-Copyright (c) Robert Patrick Rankin, 2017. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -1016,7 +1016,8 @@ register struct trobj *trop;
|
|||||||
spells in restricted skill categories */
|
spells in restricted skill categories */
|
||||||
|| (obj->oclass == SPBOOK_CLASS
|
|| (obj->oclass == SPBOOK_CLASS
|
||||||
&& (objects[otyp].oc_level > 3
|
&& (objects[otyp].oc_level > 3
|
||||||
|| restricted_spell_discipline(otyp)))) {
|
|| restricted_spell_discipline(otyp)))
|
||||||
|
|| otyp == SPE_NOVEL) {
|
||||||
dealloc_obj(obj);
|
dealloc_obj(obj);
|
||||||
obj = mkobj(trop->trclass, FALSE);
|
obj = mkobj(trop->trclass, FALSE);
|
||||||
otyp = obj->otyp;
|
otyp = obj->otyp;
|
||||||
|
|||||||
Reference in New Issue
Block a user